Name: series-workflowxb94v Phase: Succeeded StartedAt: 2026-07-02 14:41:55 +0000 UTC FinishedAt: 2026-07-02 15:51:57 +0000 UTC Input: nil Output: nil --------- Name: series-workflowxb94v[0] Phase: Succeeded StartedAt: 2026-07-02 14:41:55 +0000 UTC FinishedAt: 2026-07-02 14:54:34 +0000 UTC Input: nil Output: nil --------- Name: series-workflowxb94v[0].run-triage Phase: Succeeded StartedAt: 2026-07-02 14:41:55 +0000 UTC FinishedAt: 2026-07-02 14:54:34 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "nf-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf-next.git", "commit_hash": "f456c1922c49e6be5ce407ddb74a6e61af5b65cf", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "IP_VS" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "nf-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf-next.git", "commit_hash": "f456c1922c49e6be5ce407ddb74a6e61af5b65cf", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "IP_VS" ], "series_id": "3a50b708-b08a-4149-8c61-00786c8807bb" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "defense_work_handler", "est_reload_work_handler", "ip_vs_est_reload_start" ], "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+CgkJCTx0ZD4yMDI2LzA3LzAyIDE0OjUzPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0lQX1ZTJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7ZGVmZW5zZV93b3JrX2hhbmRsZXImIzM0OywKICAgICYjMzQ7ZXN0X3JlbG9hZF93b3JrX2hhbmRsZXImIzM0OywKICAgICYjMzQ7aXBfdnNfZXN0X3JlbG9hZF9zdGFydCYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBjaGFuZ2VzIHRoZSB3b3JrcXVldWUgdXNlZCBmb3IgSVBWUyBkZWZlbnNlIGFuZCBlc3RpbWF0aW9uIHJlbG9hZCB3b3JrIGZyb20gc3lzdGVtX2xvbmdfd3EgdG8gc3lzdGVtX2RmbF9sb25nX3dxLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIGNvcmUgSVBWUyBsb2dpYyB0aGF0IGFsdGVycyBleGVjdXRpb24gZmxvdywgc28gaXQgc2hvdWxkIGJlIGZ1enplZC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMiAxNDo1MzwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IGYyMDA4ZTcwNzNjZTdmZWM4ZTM3ZTZkNzNiMjE3NTIwMzY4ZTY0N2RcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgVGh1IEp1bCAyIDE0OjUzOjAzIDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jdGwuYyBiL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jdGwuY1xuaW5kZXggYmNmNDBiOGM0MWNmMjYuLmQ3ZTY2OWVmYWI0ZGRjIDEwMDY0NFxuLS0tIGEvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2N0bC5jXG4mIzQzOyYjNDM7JiM0MzsgYi9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY3RsLmNcbkBAIC0yMzUsNyAmIzQzOzIzNSw3IEBAIHN0YXRpYyB2b2lkIGRlZmVuc2Vfd29ya19oYW5kbGVyKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaylcbiBcdHVwZGF0ZV9kZWZlbnNlX2xldmVsKGlwdnMpO1xuIFx0aWYgKGF0b21pY19yZWFkKFx1MDAyNmlwdnMtXHUwMDNlZHJvcGVudHJ5KSlcbiBcdFx0aXBfdnNfcmFuZG9tX2Ryb3BlbnRyeShpcHZzKTtcbi1cdHF1ZXVlX2RlbGF5ZWRfd29yayhzeXN0ZW1fbG9uZ193cSwgXHUwMDI2aXB2cy1cdTAwM2VkZWZlbnNlX3dvcmssXG4mIzQzO1x0cXVldWVfZGVsYXllZF93b3JrKHN5c3RlbV9kZmxfbG9uZ193cSwgXHUwMDI2aXB2cy1cdTAwM2VkZWZlbnNlX3dvcmssXG4gXHRcdFx0ICAgREVGRU5TRV9USU1FUl9QRVJJT0QpO1xuIH1cbiAjZW5kaWZcbkBAIC0yOTAsNyAmIzQzOzI5MCw3IEBAIHN0YXRpYyB2b2lkIGVzdF9yZWxvYWRfd29ya19oYW5kbGVyKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaylcbiBcdGF0b21pY19zZXQoXHUwMDI2aXB2cy1cdTAwM2Vlc3RfZ2VuaWRfZG9uZSwgZ2VuaWQpO1xuIFxuIFx0aWYgKHJlcGVhdClcbi1cdFx0cXVldWVfZGVsYXllZF93b3JrKHN5c3RlbV9sb25nX3dxLCBcdTAwMjZpcHZzLVx1MDAzZWVzdF9yZWxvYWRfd29yayxcbiYjNDM7XHRcdHF1ZXVlX2RlbGF5ZWRfd29yayhzeXN0ZW1fZGZsX2xvbmdfd3EsIFx1MDAyNmlwdnMtXHUwMDNlZXN0X3JlbG9hZF93b3JrLFxuIFx0XHRcdFx0ICAgZGVsYXkpO1xuIFxuIHVubG9jazpcbkBAIC01MTI2LDcgJiM0Mzs1MTI2LDcgQEAgc3RhdGljIGludCBfX25ldF9pbml0IGlwX3ZzX2NvbnRyb2xfbmV0X2luaXRfc3lzY3RsKHN0cnVjdCBuZXRuc19pcHZzICppcHZzKVxuIFx0XHRnb3RvIGVycjtcbiBcbiBcdC8qIFNjaGVkdWxlIGRlZmVuc2Ugd29yayAqL1xuLVx0cXVldWVfZGVsYXllZF93b3JrKHN5c3RlbV9sb25nX3dxLCBcdTAwMjZpcHZzLVx1MDAzZWRlZmVuc2Vfd29yayxcbiYjNDM7XHRxdWV1ZV9kZWxheWVkX3dvcmsoc3lzdGVtX2RmbF9sb25nX3dxLCBcdTAwMjZpcHZzLVx1MDAzZWRlZmVuc2Vfd29yayxcbiBcdFx0XHQgICBERUZFTlNFX1RJTUVSX1BFUklPRCk7XG4gXG4gXHRyZXR1cm4gMDtcbmRpZmYgLS1naXQgYS9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfZXN0LmMgYi9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfZXN0LmNcbmluZGV4IGFiMDlmNTE4Mjk1MTIyLi43ODk2NGFhODYxZTljMSAxMDA2NDRcbi0tLSBhL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19lc3QuY1xuJiM0MzsmIzQzOyYjNDM7IGIvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2VzdC5jXG5AQCAtMjQzLDcgJiM0MzsyNDMsNyBAQCB2b2lkIGlwX3ZzX2VzdF9yZWxvYWRfc3RhcnQoc3RydWN0IG5ldG5zX2lwdnMgKmlwdnMsIGJvb2wgcmVzdGFydClcbiBcdC8qIEJ1bXAgdGhlIGt0aHJlYWQgY29uZmlndXJhdGlvbiBnZW5pZCBpZiBzdG9wcGluZyBpcyByZXF1ZXN0ZWQgKi9cbiBcdGlmIChyZXN0YXJ0KVxuIFx0XHRhdG9taWNfaW5jKFx1MDAyNmlwdnMtXHUwMDNlZXN0X2dlbmlkKTtcbi1cdHF1ZXVlX2RlbGF5ZWRfd29yayhzeXN0ZW1fbG9uZ193cSwgXHUwMDI2aXB2cy1cdTAwM2Vlc3RfcmVsb2FkX3dvcmssIDApO1xuJiM0MztcdHF1ZXVlX2RlbGF5ZWRfd29yayhzeXN0ZW1fZGZsX2xvbmdfd3EsIFx1MDAyNmlwdnMtXHUwMDNlZXN0X3JlbG9hZF93b3JrLCAwKTtcbiB9XG4gXG4gLyogU3RhcnQga3RocmVhZCB0YXNrIHdpdGggY3VycmVudCBjb25maWd1cmF0aW9uICovXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDIgMTQ6NTM8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7SVBfVlMmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtkZWZlbnNlX3dvcmtfaGFuZGxlciYjMzQ7LAogICAgJiMzNDtlc3RfcmVsb2FkX3dvcmtfaGFuZGxlciYjMzQ7LAogICAgJiMzNDtpcF92c19lc3RfcmVsb2FkX3N0YXJ0JiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGNoYW5nZXMgdGhlIHdvcmtxdWV1ZSB1c2VkIGZvciBJUFZTIGRlZmVuc2UgYW5kIGVzdGltYXRpb24gcmVsb2FkIHdvcmsgZnJvbSBzeXN0ZW1fbG9uZ193cSB0byBzeXN0ZW1fZGZsX2xvbmdfd3EuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgY29yZSBJUFZTIGxvZ2ljIHRoYXQgYWx0ZXJzIGV4ZWN1dGlvbiBmbG93LCBzbyBpdCBzaG91bGQgYmUgZnV6emVkLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmUKaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseQp1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLgoKUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczoKLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLgotIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLgotIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4KLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsCmV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLgogICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCiAgIERvIG5vdCBsaXN0IHRvbyBnZW5lcmljIGNvbmZpZ3MgKHdlIGFscmVhZHkgaGF2ZSB0aGVtIGVuYWJsZWQpLiBPbmx5IGxpc3QgdGhvc2UgdGhhdAogICBzcGVjaWZpY2FsbHkgY292ZXIgdGhlIG1vZGlmaWVkIGNvZGUuIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncyBvdXRwdXQgYXJyYXksCiAgIGFuZCBETyBOT1QgYWRkIGEgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCBmMjAwOGU3MDczY2U3ZmVjOGUzN2U2ZDczYjIxNzUyMDM2OGU2NDdkCkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIFRodSBKdWwgMiAxNDo1MzowMyAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jdGwuYyBiL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jdGwuYwppbmRleCBiY2Y0MGI4YzQxY2YyNi4uZDdlNjY5ZWZhYjRkZGMgMTAwNjQ0Ci0tLSBhL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jdGwuYwomIzQzOyYjNDM7JiM0MzsgYi9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY3RsLmMKQEAgLTIzNSw3ICYjNDM7MjM1LDcgQEAgc3RhdGljIHZvaWQgZGVmZW5zZV93b3JrX2hhbmRsZXIoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKQogCXVwZGF0ZV9kZWZlbnNlX2xldmVsKGlwdnMpOwogCWlmIChhdG9taWNfcmVhZCgmYW1wO2lwdnMtJmd0O2Ryb3BlbnRyeSkpCiAJCWlwX3ZzX3JhbmRvbV9kcm9wZW50cnkoaXB2cyk7Ci0JcXVldWVfZGVsYXllZF93b3JrKHN5c3RlbV9sb25nX3dxLCAmYW1wO2lwdnMtJmd0O2RlZmVuc2Vfd29yaywKJiM0MzsJcXVldWVfZGVsYXllZF93b3JrKHN5c3RlbV9kZmxfbG9uZ193cSwgJmFtcDtpcHZzLSZndDtkZWZlbnNlX3dvcmssCiAJCQkgICBERUZFTlNFX1RJTUVSX1BFUklPRCk7CiB9CiAjZW5kaWYKQEAgLTI5MCw3ICYjNDM7MjkwLDcgQEAgc3RhdGljIHZvaWQgZXN0X3JlbG9hZF93b3JrX2hhbmRsZXIoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKQogCWF0b21pY19zZXQoJmFtcDtpcHZzLSZndDtlc3RfZ2VuaWRfZG9uZSwgZ2VuaWQpOwogCiAJaWYgKHJlcGVhdCkKLQkJcXVldWVfZGVsYXllZF93b3JrKHN5c3RlbV9sb25nX3dxLCAmYW1wO2lwdnMtJmd0O2VzdF9yZWxvYWRfd29yaywKJiM0MzsJCXF1ZXVlX2RlbGF5ZWRfd29yayhzeXN0ZW1fZGZsX2xvbmdfd3EsICZhbXA7aXB2cy0mZ3Q7ZXN0X3JlbG9hZF93b3JrLAogCQkJCSAgIGRlbGF5KTsKIAogdW5sb2NrOgpAQCAtNTEyNiw3ICYjNDM7NTEyNiw3IEBAIHN0YXRpYyBpbnQgX19uZXRfaW5pdCBpcF92c19jb250cm9sX25ldF9pbml0X3N5c2N0bChzdHJ1Y3QgbmV0bnNfaXB2cyAqaXB2cykKIAkJZ290byBlcnI7CiAKIAkvKiBTY2hlZHVsZSBkZWZlbnNlIHdvcmsgKi8KLQlxdWV1ZV9kZWxheWVkX3dvcmsoc3lzdGVtX2xvbmdfd3EsICZhbXA7aXB2cy0mZ3Q7ZGVmZW5zZV93b3JrLAomIzQzOwlxdWV1ZV9kZWxheWVkX3dvcmsoc3lzdGVtX2RmbF9sb25nX3dxLCAmYW1wO2lwdnMtJmd0O2RlZmVuc2Vfd29yaywKIAkJCSAgIERFRkVOU0VfVElNRVJfUEVSSU9EKTsKIAogCXJldHVybiAwOwpkaWZmIC0tZ2l0IGEvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2VzdC5jIGIvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2VzdC5jCmluZGV4IGFiMDlmNTE4Mjk1MTIyLi43ODk2NGFhODYxZTljMSAxMDA2NDQKLS0tIGEvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2VzdC5jCiYjNDM7JiM0MzsmIzQzOyBiL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19lc3QuYwpAQCAtMjQzLDcgJiM0MzsyNDMsNyBAQCB2b2lkIGlwX3ZzX2VzdF9yZWxvYWRfc3RhcnQoc3RydWN0IG5ldG5zX2lwdnMgKmlwdnMsIGJvb2wgcmVzdGFydCkKIAkvKiBCdW1wIHRoZSBrdGhyZWFkIGNvbmZpZ3VyYXRpb24gZ2VuaWQgaWYgc3RvcHBpbmcgaXMgcmVxdWVzdGVkICovCiAJaWYgKHJlc3RhcnQpCiAJCWF0b21pY19pbmMoJmFtcDtpcHZzLSZndDtlc3RfZ2VuaWQpOwotCXF1ZXVlX2RlbGF5ZWRfd29yayhzeXN0ZW1fbG9uZ193cSwgJmFtcDtpcHZzLSZndDtlc3RfcmVsb2FkX3dvcmssIDApOwomIzQzOwlxdWV1ZV9kZWxheWVkX3dvcmsoc3lzdGVtX2RmbF9sb25nX3dxLCAmYW1wO2lwdnMtJmd0O2VzdF9yZWxvYWRfd29yaywgMCk7CiB9CiAKIC8qIFN0YXJ0IGt0aHJlYWQgdGFzayB3aXRoIGN1cnJlbnQgY29uZmlndXJhdGlvbiAqLwo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMiAxNDo1MzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMzg4CgkJCQkJCQlvdXRwdXQ6IDIzCgkJCQkJCQl0aG91Z2h0czogMjkyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkZ1enppbmcgdGhlIElQVlMgV29ya3F1ZXVlIENoYW5nZSoqCgpPa2F5LCBzbyB3ZSYjMzk7dmUgZ290IHRoaXMgcGF0Y2gsIHJpZ2h0PyBJdCYjMzk7cyBhIHN0cmFpZ2h0LXVwIGZ1bmN0aW9uYWwgY2hhbmdlLCBqdXN0IHN3YXBwaW5nIG91dCBgc3lzdGVtX2xvbmdfd3FgIGZvciBgc3lzdGVtX2RmbF9sb25nX3dxYCBpbiBhIGNvdXBsZSBvZiBJUFZTIGZpbGVzIOKAkyBgaXBfdnNfY3RsLmNgIGFuZCBgaXBfdnNfZXN0LmNgLiBNeSBmaXJzdCB0aG91Z2h0IGlzLCBkb2VzIHRoaXMgZXZlbiB3YXJyYW50IGZ1enppbmc/IEl0ICppcyoganVzdCBjaGFuZ2luZyB0aGUgd29ya3F1ZXVlIHVzZWQgZm9yIGRlbGF5ZWQgd29yayB3aXRoaW4gdGhlIElQIFZpcnR1YWwgU2VydmVyIHN1YnN5c3RlbS4KCkhtbSwgbGV0JiMzOTtzIGJyZWFrIHRoaXMgZG93biBmdXJ0aGVyLiBJdCYjMzk7cyB0aGUgY2hhbmdlIGZyb20gYHN5c3RlbV9sb25nX3dxYCB0byBgc3lzdGVtX2RmbF9sb25nX3dxYC4gSXMgdGhpcyBhIHNpZ25pZmljYW50IGVub3VnaCBjaGFuZ2UgdG8gd2FycmFudCBmdXp6aW5nPyBXZSYjMzk7cmUgdGFsa2luZyBhYm91dCB0aGUgd29ya3F1ZXVlIGZvciBgZGVmZW5zZV93b3JrYCBhbmQgYGVzdF9yZWxvYWRfd29ya2AgaW4gSVBWUy4gUmlnaHQsIElQIFZpcnR1YWwgU2VydmVyLi4uCgpBbHJpZ2h0LCBsZXQmIzM5O3MgdGFrZSBhIGxvb2sgYXQgdGhlIHJlbGV2YW50IGNvbmZpZ3VyYXRpb25zLiBXZSYjMzk7cmUgZGVhbGluZyB3aXRoIGBDT05GSUdfSVBfVlNgLCBzbyB0aGF0JiMzOTtzIHRoZSBzdGFydGluZyBwb2ludC4gTm93LCBhcmUgdGhlcmUgYW55ICpzcGVjaWZpYyogZnVuY3Rpb25zIHRoYXQgc3RhbmQgb3V0IGFzIHBvdGVudGlhbCBmdXp6IHRhcmdldHMgaGVyZT8gVGhpbmtpbmcgYWJvdXQgaXQsIHdlIGhhdmU6IGBkZWZlbnNlX3dvcmtfaGFuZGxlcmAsIGBlc3RfcmVsb2FkX3dvcmtfaGFuZGxlcmAsIGBpcF92c19jb250cm9sX25ldF9pbml0X3N5c2N0bGAsIGFuZCBgaXBfdnNfZXN0X3JlbG9hZF9zdGFydGAuIFNlZW1zIGxpa2UgaGFuZGxlcnMgYW5kIGluaXRpYWxpemF0aW9uIGZ1bmN0aW9ucywgdHJpZ2dlcmVkIGJ5IHRpbWVycyBvciBpbml0aWFsaXphdGlvbi4KClByb2JhYmx5IG5vdCB0aGUgYmVzdCBjYW5kaWRhdGVzIGZvciBkaXJlY3QgZnV6emluZywgYmVjYXVzZSBvZiB0aGUgdHJpZ2dlcmluZyBtZWNoYW5pc21zLCBidXQgbGV0JiMzOTtzIGp1c3Qgc2VlLi4uV2FpdCBhIG1pbnV0ZSwgd2hlbiBpcyBgaXBfdnNfZXN0X3JlbG9hZF9zdGFydGAgY2FsbGVkPyBUaGF0IGJlYXJzIGEgY2xvc2VyIGxvb2suIExldCYjMzk7cyBkaWcgaW50byB0aGF0IGZ1bmN0aW9uLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAyIDE0OjUzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2lwX3ZzX2VzdF9yZWxvYWRfc3RhcnQmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7aW5jbHVkZS9uZXQvaXBfdnMuaD0xOTIxPXZvaWQgaXBfdnNfcmVhZF9lc3RpbWF0b3Ioc3RydWN0IGlwX3ZzX2tzdGF0cyAqZHN0LCBzdHJ1Y3QgaXBfdnNfc3RhdHMgKnN0YXRzKTtcbmluY2x1ZGUvbmV0L2lwX3ZzLmg6MTkyMjp2b2lkIGlwX3ZzX2VzdF9yZWxvYWRfc3RhcnQoc3RydWN0IG5ldG5zX2lwdnMgKmlwdnMsIGJvb2wgcmVzdGFydCk7XG5pbmNsdWRlL25ldC9pcF92cy5oLTE5MjMtaW50IGlwX3ZzX2VzdF9rdGhyZWFkX3N0YXJ0KHN0cnVjdCBuZXRuc19pcHZzICppcHZzLFxuLS1cbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jdGwuYz0xNzA5PWlwX3ZzX2FkZF9zZXJ2aWNlKHN0cnVjdCBuZXRuc19pcHZzICppcHZzLCBzdHJ1Y3QgaXBfdnNfc2VydmljZV91c2VyX2tlcm4gKnUsXG4tLVxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2N0bC5jLTE4ODUtXHRcdC8qIFN0YXJ0IGVzdGltYXRpb24gZm9yIGZpcnN0IHRpbWUgKi9cbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jdGwuYzoxODg2Olx0XHRpcF92c19lc3RfcmVsb2FkX3N0YXJ0KGlwdnMsIHRydWUpO1xubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2N0bC5jLTE4ODctXHRcdG11dGV4X3VubG9jayhcdTAwMjZpcHZzLVx1MDAzZWVzdF9tdXRleCk7XG4tLVxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2N0bC5jPTI0NDM9c3RhdGljIGludCBpcHZzX3Byb2NfZXN0X2NwdW1hc2tfc2V0KGNvbnN0IHN0cnVjdCBjdGxfdGFibGUgKnRhYmxlLFxuLS1cbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jdGwuYy0yNDcxLVx0aXB2cy1cdTAwM2Vlc3RfY2FsY19waGFzZSA9IDE7XG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY3RsLmM6MjQ3MjpcdGlwX3ZzX2VzdF9yZWxvYWRfc3RhcnQoaXB2cywgdHJ1ZSk7XG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY3RsLmMtMjQ3My1cbi0tXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY3RsLmM9MjUzMz1zdGF0aWMgaW50IGlwdnNfcHJvY19lc3RfbmljZShjb25zdCBzdHJ1Y3QgY3RsX3RhYmxlICp0YWJsZSwgaW50IHdyaXRlLFxuLS1cbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jdGwuYy0yNTU0LVx0XHRcdFx0KnZhbHAgPSB2YWw7XG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY3RsLmM6MjU1NTpcdFx0XHRcdGlwX3ZzX2VzdF9yZWxvYWRfc3RhcnQoaXB2cywgdHJ1ZSk7XG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY3RsLmMtMjU1Ni1cdFx0XHR9XG4tLVxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2N0bC5jPTI1NjM9c3RhdGljIGludCBpcHZzX3Byb2NfcnVuX2VzdGltYXRpb24oY29uc3Qgc3RydWN0IGN0bF90YWJsZSAqdGFibGUsIGludCB3cml0ZSxcbi0tXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY3RsLmMtMjU4MS1cdFx0XHQqdmFscCA9IHZhbDtcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jdGwuYzoyNTgyOlx0XHRcdGlwX3ZzX2VzdF9yZWxvYWRfc3RhcnQoaXB2cywgdHJ1ZSk7XG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY3RsLmMtMjU4My1cdFx0fVxuLS1cbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19lc3QuYz0xNzQ9c3RhdGljIGludCBpcF92c19lc3RpbWF0aW9uX2t0aHJlYWQodm9pZCAqZGF0YSlcbi0tXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfZXN0LmMtMjM0LS8qIFNjaGVkdWxlIHN0b3Avc3RhcnQgZm9yIGt0aHJlYWQgdGFza3MgKi9cbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19lc3QuYzoyMzU6dm9pZCBpcF92c19lc3RfcmVsb2FkX3N0YXJ0KHN0cnVjdCBuZXRuc19pcHZzICppcHZzLCBib29sIHJlc3RhcnQpXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfZXN0LmMtMjM2LXtcbi0tXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfZXN0LmM9MzA3PXN0YXRpYyBpbnQgaXBfdnNfZXN0X2FkZF9rdGhyZWFkKHN0cnVjdCBuZXRuc19pcHZzICppcHZzKVxuLS1cbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19lc3QuYy0zNTgtXHQvKiBSZXF1ZXN0IGt0aHJlYWQgdG8gYmUgc3RhcnRlZCAqL1xubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2VzdC5jOjM1OTpcdGlwX3ZzX2VzdF9yZWxvYWRfc3RhcnQoaXB2cywgZmFsc2UpO1xubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2VzdC5jLTM2MC1cbi0tXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfZXN0LmM9NDkzPWludCBpcF92c19zdGFydF9lc3RpbWF0b3Ioc3RydWN0IG5ldG5zX2lwdnMgKmlwdnMsIHN0cnVjdCBpcF92c19zdGF0cyAqc3RhdHMpXG4tLVxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2VzdC5jLTUxMy1cdFx0a2QtXHUwMDNlbmVlZGVkID0gMTtcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19lc3QuYzo1MTQ6XHRcdGlwX3ZzX2VzdF9yZWxvYWRfc3RhcnQoaXB2cywgdHJ1ZSk7XG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfZXN0LmMtNTE1LVx0XHRtdXRleF91bmxvY2soXHUwMDI2aXB2cy1cdTAwM2Vlc3RfbXV0ZXgpO1xuLS1cbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19lc3QuYz01Mzc9dm9pZCBpcF92c19zdG9wX2VzdGltYXRvcihzdHJ1Y3QgbmV0bnNfaXB2cyAqaXB2cywgc3RydWN0IGlwX3ZzX3N0YXRzICpzdGF0cylcbi0tXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfZXN0LmMtNjAzLVx0XHRcdGtkLVx1MDAzZW5lZWRlZCA9IDA7XG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfZXN0LmM6NjA0Olx0XHRcdGlwX3ZzX2VzdF9yZWxvYWRfc3RhcnQoaXB2cywgdHJ1ZSk7XG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfZXN0LmMtNjA1LVx0XHRcdG11dGV4X3VubG9jayhcdTAwMjZpcHZzLVx1MDAzZWVzdF9tdXRleCk7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDIgMTQ6NTM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDM2MgoJCQkJCQkJb3V0cHV0OiAxOAoJCQkJCQkJdGhvdWdodHM6IDE0NAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgYSBUaW55IEtlcm5lbCBQYXRjaCoqCgpPa2F5LCBzbyB0aGlzIHBhdGNoIGlzIHN3aXRjaGluZyB0aGUgd29ya3F1ZXVlIHVzZWQgYnkgSVBWUyBmcm9tIGBzeXN0ZW1fbG9uZ193cWAgdG8gYHN5c3RlbV9kZmxfbG9uZ193cWAuIFNlZW1zIGxpa2UgYSBtaW5vciBmdW5jdGlvbmFsIGNoYW5nZSwgYnV0IGxldCYjMzk7cyBub3QgZGlzbWlzcyBpdCBvdXRyaWdodC4gRXZlbiBhIHNtYWxsIG1vZGlmaWNhdGlvbiB0byBjb3JlIGtlcm5lbCBsb2dpYywgZXNwZWNpYWxseSB3aGVuIGl0IHRvdWNoZXMgYSBzdWJzeXN0ZW0gbGlrZSBJUFZTLCB3YXJyYW50cyBhIGNsb3NlciBsb29rLgoKVGhlIHF1ZXN0aW9uIHRoZW4gYmVjb21lcywgaXMgdGhpcyBjaGFuZ2Ugd29ydGggdGhlIGVmZm9ydCBvZiBmdXp6aW5nPyBBYnNvbHV0ZWx5LCB5ZXMuIEFueSBmdW5jdGlvbmFsIGNoYW5nZSB3aXRoaW4gdGhlIGtlcm5lbCwgaG93ZXZlciBzZWVtaW5nbHkgc21hbGwsIGNhbiBpbnRyb2R1Y2UgdW5leHBlY3RlZCBiZWhhdmlvcnMgb3IgdnVsbmVyYWJpbGl0aWVzLgoKQWxyaWdodCwgYHN5c3RlbV9kZmxfbG9uZ193cWAgaXMgYSB3b3JrcXVldWUuIE5vdywgYXJlIHRoZXJlIGFueSBzcGVjaWZpYyBmdW5jdGlvbnMgdGhpcyBwYXRjaCBhZmZlY3RzIHdpdGhpbiBJUFZTIHRoYXQgSSBzaG91bGQgcHJpb3JpdGl6ZSBmb3IgYW5hbHlzaXM/IExldCYjMzk7cyBzZWUuLi4gbG9va2luZyBhdCB0aGUgY29kZSwgaXQgbG9va3MgbGlrZSBgZGVmZW5zZV93b3JrX2hhbmRsZXJgLCBgZXN0X3JlbG9hZF93b3JrX2hhbmRsZXJgLCBhbmQgdGhlIGFzc29jaWF0ZWQgYGlwX3ZzX2VzdF9yZWxvYWRfc3RhcnRgIGZ1bmN0aW9uIGFyZSB0aGUga2V5IGFyZWFzLiBUaGVzZSBmdW5jdGlvbnMgYXJlIGFsbCBjZW50ZXJlZCBhcm91bmQgSVBWUyYjMzk7cyBlc3RpbWF0aW9uIGFuZCBkZWZlbnNlIG1lY2hhbmlzbXMuIFRoYXQgZGVmaW5pdGVseSB3YXJyYW50cyBhIGNsb3NlciBsb29rLiBUaW1lIHRvIGRvdWJsZS1jaGVjayB0aGUgcmVsZXZhbnQga2VybmVsIGNvbmZpZ3VyYXRpb25zIHRvIGdldCBhIGJldHRlciBzZW5zZSBvZiBob3cgSVBWUyBpcyBjb25maWd1cmVkIGluIHRoZSBlbnZpcm9ubWVudCB0aGlzIHdpbGwgYmUgYXBwbGllZCB0by4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMiAxNDo1MzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgSVBfVlMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L25ldGZpbHRlci9pcHZzL0tjb25maWctNC0jXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZzo1Om1lbnVjb25maWcgSVBfVlNcbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnLTYtXHR0cmlzdGF0ZSBcJiMzNDtJUCB2aXJ0dWFsIHNlcnZlciBzdXBwb3J0XCYjMzQ7XG4tLVxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWc9Mjg2PWNvbW1lbnQgJiMzOTtJUFZTIFNIIHNjaGVkdWxlciYjMzk7XG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZy0yODctXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZzoyODg6Y29uZmlnIElQX1ZTX1NIX1RBQl9CSVRTXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZy0yODktXHRpbnQgXCYjMzQ7SVBWUyBzb3VyY2UgaGFzaGluZyB0YWJsZSBzaXplICh0aGUgTnRoIHBvd2VyIG9mIDIpXCYjMzQ7XG4tLVxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWc9MzAxPWNvbW1lbnQgJiMzOTtJUFZTIE1IIHNjaGVkdWxlciYjMzk7XG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZy0zMDItXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZzozMDM6Y29uZmlnIElQX1ZTX01IX1RBQl9JTkRFWFxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWctMzA0LVx0aW50IFwmIzM0O0lQVlMgbWFnbGV2IGhhc2hpbmcgdGFibGUgaW5kZXggb2Ygc2l6ZSAodGhlIHByaW1lIG51bWJlcnMpXCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDIgMTQ6NTM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNTA1MgoJCQkJCQkJb3V0cHV0OiAxOQoJCQkJCQkJdGhvdWdodHM6IDI5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBhbiBleHBlcnQmIzM5O3MgaW50ZXJuYWwgbW9ub2xvZ3VlOgoKKipJbnZlc3RpZ2F0aW5nIHRoZSBMb2FkIEJhbGFuY2luZyBDb25maWd1cmF0aW9uKioKCkFscmlnaHQsIHRoZSBzeXN0ZW0mIzM5O3MgY3VycmVudCBjb25maWd1cmF0aW9uIGlzIGRlZmluaXRlbHkgc2V0IHRvIGBJUF9WU2AuIFRoYXQmIzM5O3MgdGhlIGJhc2VsaW5lLCB0aGUgZm91bmRhdGlvbi4gTm93LCBnaXZlbiB0aGF0IGNvbnRleHQsIHRoZSBmaXJzdCBwbGFjZXMgbXkgbWluZCBuYXR1cmFsbHkgZ3Jhdml0YXRlcyB0b3dhcmQgYXJlIHRoZSBgZGVmZW5zZV93b3JrX2hhbmRsZXJgIGFuZCBgZXN0X3JlbG9hZF93b3JrX2hhbmRsZXJgIG1vZHVsZXMuIFdpdGggSVAgVmlydHVhbCBTZXJ2ZXIgKElQVlMpIGFjdGl2ZSwgdGhlc2UgaGFuZGxlcnMgYXJlIGdvaW5nIHRvIGJlIGNyaXRpY2FsIGZvciB1bmRlcnN0YW5kaW5nIGhvdyB3ZSYjMzk7cmUgZGVhbGluZyB3aXRoIGJvdGggdHJhZmZpYyBjb250cm9sIGFuZCBhbnkgcG90ZW50aWFsIHJlbG9hZHMuIEtub3dpbmcgaG93IHRoZXkgb3BlcmF0ZSBpcyBjcnVjaWFsIGZvciB0aGlzIHR5cGUgb2YgY29uZmlnLiBXaGF0IGFyZSB0aGV5ICphY3R1YWxseSogZG9pbmcgaW4gdGhpcyBzcGVjaWZpYyBjb250ZXh0PyBXaGF0IGtpbmQgb2YgcHJvY2Vzc2luZyBhcmUgdGhleSByZXNwb25zaWJsZSBmb3IsIGdpdmVuIHRoYXQgd2UgYXJlIHJ1bm5pbmcgSVBWUz8gTGV0JiMzOTtzIGRpdmUgZGVlcGVyIGludG8gdGhvc2UuLi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD44LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMiAxNDo1MzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtkZWZlbnNlX3dvcmtfaGFuZGxlciYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY3RsLmM9MjE2PXN0YXRpYyB2b2lkIGV4cGlyZV9ub2Rlc3RfY29ubl9oYW5kbGVyKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaylcbi0tXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY3RsLmMtMjI5LVxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2N0bC5jOjIzMDpzdGF0aWMgdm9pZCBkZWZlbnNlX3dvcmtfaGFuZGxlcihzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY3RsLmMtMjMxLXtcbi0tXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY3RsLmM9NDk5NT1zdGF0aWMgaW50IF9fbmV0X2luaXQgaXBfdnNfY29udHJvbF9uZXRfaW5pdF9zeXNjdGwoc3RydWN0IG5ldG5zX2lwdnMgKmlwdnMpXG4tLVxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2N0bC5jLTUwMDYtXHRzcGluX2xvY2tfaW5pdChcdTAwMjZpcHZzLVx1MDAzZXNlY3VyZXRjcF9sb2NrKTtcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jdGwuYzo1MDA3Olx0SU5JVF9ERUxBWUVEX1dPUksoXHUwMDI2aXB2cy1cdTAwM2VkZWZlbnNlX3dvcmssIGRlZmVuc2Vfd29ya19oYW5kbGVyKTtcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jdGwuYy01MDA4LVx0SU5JVF9ERUxBWUVEX1dPUksoXHUwMDI2aXB2cy1cdTAwM2VleHBpcmVfbm9kZXN0X2Nvbm5fd29yayxcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD45LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMiAxNDo1MzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1NTg0CgkJCQkJCQlvdXRwdXQ6IDIyCgkJCQkJCQl0aG91Z2h0czogMTE2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFzc2Vzc2luZyB0aGUgRnV6emluZyBWYWx1ZSBvZiBhIFdvcmtxdWV1ZSBQYXRjaCoqCgpPa2F5LCBzbyB0aGlzIHBhdGNoIGlzIHRvdWNoaW5nIHRoZSB3b3JrcXVldWUsIHNwZWNpZmljYWxseSBzd2FwcGluZyBgc3lzdGVtX2xvbmdfd3FgIGZvciBgc3lzdGVtX2RmbF9sb25nX3dxYC4gTXkgaW5pdGlhbCBpbnN0aW5jdCBpcyB0byBxdWVzdGlvbiB3aGV0aGVyIGZ1enppbmcgdGhpcyBpcyBhY3R1YWxseSB3b3J0aCB0aGUgZWZmb3J0LiBJdCAqaXMqIGEgc2ltcGxlIGNoYW5nZSwgZnVuY3Rpb25hbGx5IHNwZWFraW5nLCBqdXN0IGEgd29ya3F1ZXVlIHN1YnN0aXR1dGlvbi4gQ2hhbmNlcyBhcmUsIGZ1enppbmcgdGhpcyBzcGVjaWZpYyBjaGFuZ2UgbWlnaHQgbm90IHVuY292ZXIgYW55dGhpbmcgdHJ1bHkgbm92ZWwsIGFuZCBpdOKAmXMgbGlrZWx5IHRvIGJlIHNvbWV0aGluZyB0aGF0IGhhcyBiZWVuIGltcGxpY2l0bHkgZnV6emVkIGJlZm9yZS4gSG93ZXZlciwgdGhlIGNoYW5nZSAqaXMqIGZ1bmN0aW9uYWwuIAoKV2FpdCBhIG1pbnV0ZSwgaXMgYHN5c3RlbV9kZmxfbG9uZ193cWAgYSBuZXcgd29ya3F1ZXVlIG9yIGFuIGV4aXN0aW5nIG9uZT8gSSBuZWVkIHRvIGNsYXJpZnkgdGhhdCBiZWZvcmUgSSBtYWtlIGEgZmluYWwgZGVjaXNpb24gb24gdGhlIGZ1enppbmcgc3RyYXRlZ3kuIE9rYXksIGxldCYjMzk7cyBnbyBjaGVjayB3aGF0JiMzOTtzIGdvaW5nIG9uIHdpdGggYHN5c3RlbV9kZmxfbG9uZ193cWAuIEkmIzM5O2xsIGRpZyBpbnRvIGl0cyBkZWZpbml0aW9uIGFuZCB1c2FnZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDIgMTQ6NTM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7c3lzdGVtX2RmbF9sb25nX3dxJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvYXRhL2xpYmF0YS1laC5jPTcyMT12b2lkIGF0YV9zY3NpX3BvcnRfZXJyb3JfaGFuZGxlcihzdHJ1Y3QgU2NzaV9Ib3N0ICpob3N0LCBzdHJ1Y3QgYXRhX3BvcnQgKmFwKVxuLS1cbmRyaXZlcnMvYXRhL2xpYmF0YS1laC5jLTgyMy1cdFx0IShhcC1cdTAwM2VmbGFncyBcdTAwMjYgQVRBX0ZMQUdfU0FTX0hPU1QpKVxuZHJpdmVycy9hdGEvbGliYXRhLWVoLmM6ODI0Olx0XHRxdWV1ZV9kZWxheWVkX3dvcmsoc3lzdGVtX2RmbF9sb25nX3dxLCBcdTAwMjZhcC1cdTAwM2Vob3RwbHVnX3Rhc2ssIDApO1xuZHJpdmVycy9hdGEvbGliYXRhLWVoLmMtODI1LVxuLS1cbmRyaXZlcnMvYXRhL2xpYmF0YS1zY3NpLmM9NDcwND12b2lkIGF0YV9zY3NpX3NjYW5faG9zdChzdHJ1Y3QgYXRhX3BvcnQgKmFwLCBpbnQgc3luYylcbi0tXG5kcml2ZXJzL2F0YS9saWJhdGEtc2NzaS5jLTQ3NzMtXG5kcml2ZXJzL2F0YS9saWJhdGEtc2NzaS5jOjQ3NzQ6XHRxdWV1ZV9kZWxheWVkX3dvcmsoc3lzdGVtX2RmbF9sb25nX3dxLCBcdTAwMjZhcC1cdTAwM2Vob3RwbHVnX3Rhc2ssXG5kcml2ZXJzL2F0YS9saWJhdGEtc2NzaS5jLTQ3NzUtXHRcdFx0ICAgcm91bmRfamlmZmllc19yZWxhdGl2ZShIWikpO1xuLS1cbmRyaXZlcnMvaTJjL2kyYy1zbGF2ZS10ZXN0dW5pdC5jPTgyPXN0YXRpYyBpbnQgaTJjX3NsYXZlX3Rlc3R1bml0X3NsYXZlX2NiKHN0cnVjdCBpMmNfY2xpZW50ICpjbGllbnQsXG4tLVxuZHJpdmVycy9pMmMvaTJjLXNsYXZlLXRlc3R1bml0LmMtMTI2LVx0XHRcdHNldF9iaXQoVFVfRkxBR19JTl9QUk9DRVNTLCBcdTAwMjZ0dS1cdTAwM2VmbGFncyk7XG5kcml2ZXJzL2kyYy9pMmMtc2xhdmUtdGVzdHVuaXQuYzoxMjc6XHRcdFx0cXVldWVfZGVsYXllZF93b3JrKHN5c3RlbV9kZmxfbG9uZ193cSwgXHUwMDI2dHUtXHUwMDNld29ya2VyLFxuZHJpdmVycy9pMmMvaTJjLXNsYXZlLXRlc3R1bml0LmMtMTI4LVx0XHRcdFx0XHQgICBtc2Vjc190b19qaWZmaWVzKDEwICogdHUtXHUwMDNlcmVnc1tUVV9SRUdfREVMQVldKSk7XG4tLVxuZHJpdmVycy9waHkvdGkvcGh5LXR1c2IxMjEwLmM9MTkxPXN0YXRpYyB2b2lkIHR1c2IxMjEwX2NoZ19kZXRfc2V0X3N0YXRlKHN0cnVjdCB0dXNiMTIxMCAqdHVzYixcbi0tXG5kcml2ZXJzL3BoeS90aS9waHktdHVzYjEyMTAuYy0xOTktXHR0dXNiLVx1MDAzZWNoZ19kZXRfc3RhdGUgPSBuZXdfc3RhdGU7XG5kcml2ZXJzL3BoeS90aS9waHktdHVzYjEyMTAuYzoyMDA6XHRtb2RfZGVsYXllZF93b3JrKHN5c3RlbV9kZmxfbG9uZ193cSwgXHUwMDI2dHVzYi1cdTAwM2VjaGdfZGV0X3dvcmssXG5kcml2ZXJzL3BoeS90aS9waHktdHVzYjEyMTAuYy0yMDEtXHRcdFx0IG1zZWNzX3RvX2ppZmZpZXMoZGVsYXlfbXMpKTtcbi0tXG5kcml2ZXJzL3BoeS90aS9waHktdHVzYjEyMTAuYz0zNzY9c3RhdGljIGludCB0dXNiMTIxMF9wc3lfbm90aWZpZXIoc3RydWN0IG5vdGlmaWVyX2Jsb2NrICpuYixcbi0tXG5kcml2ZXJzL3BoeS90aS9waHktdHVzYjEyMTAuYy0zODItXHRpZiAocHN5ICE9IHR1c2ItXHUwMDNlcHN5IFx1MDAyNlx1MDAyNiBwc3ktXHUwMDNlZGVzYy1cdTAwM2V0eXBlID09IFBPV0VSX1NVUFBMWV9UWVBFX1VTQilcbmRyaXZlcnMvcGh5L3RpL3BoeS10dXNiMTIxMC5jOjM4MzpcdFx0cXVldWVfZGVsYXllZF93b3JrKHN5c3RlbV9kZmxfbG9uZ193cSwgXHUwMDI2dHVzYi1cdTAwM2VjaGdfZGV0X3dvcmssIDApO1xuZHJpdmVycy9waHkvdGkvcGh5LXR1c2IxMjEwLmMtMzg0LVxuLS1cbmRyaXZlcnMvcGh5L3RpL3BoeS10dXNiMTIxMC5jPTQzMj1zdGF0aWMgdm9pZCB0dXNiMTIxMF9wcm9iZV9jaGFyZ2VyX2RldGVjdChzdHJ1Y3QgdHVzYjEyMTAgKnR1c2IpXG4tLVxuZHJpdmVycy9waHkvdGkvcGh5LXR1c2IxMjEwLmMtNDYwLVx0SU5JVF9ERUxBWUVEX1dPUksoXHUwMDI2dHVzYi1cdTAwM2VjaGdfZGV0X3dvcmssIHR1c2IxMjEwX2NoZ19kZXRfd29yayk7XG5kcml2ZXJzL3BoeS90aS9waHktdHVzYjEyMTAuYzo0NjE6XHRxdWV1ZV9kZWxheWVkX3dvcmsoc3lzdGVtX2RmbF9sb25nX3dxLCBcdTAwMjZ0dXNiLVx1MDAzZWNoZ19kZXRfd29yaywgMiAqIEhaKTtcbmRyaXZlcnMvcGh5L3RpL3BoeS10dXNiMTIxMC5jLTQ2Mi1cbi0tXG5kcml2ZXJzL3Njc2kvc2NzaV90cmFuc3BvcnRfc3JwLmM9MjIwPXN0YXRpYyBzc2l6ZV90IHN0b3JlX3JlY29ubmVjdF9kZWxheShzdHJ1Y3QgZGV2aWNlICpkZXYsXG4tLVxuZHJpdmVycy9zY3NpL3Njc2lfdHJhbnNwb3J0X3NycC5jLTIzNi1cdCAgICBycG9ydC1cdTAwM2VzdGF0ZSAhPSBTUlBfUlBPUlRfUlVOTklORykge1xuZHJpdmVycy9zY3NpL3Njc2lfdHJhbnNwb3J0X3NycC5jOjIzNzpcdFx0cXVldWVfZGVsYXllZF93b3JrKHN5c3RlbV9kZmxfbG9uZ193cSwgXHUwMDI2cnBvcnQtXHUwMDNlcmVjb25uZWN0X3dvcmssXG5kcml2ZXJzL3Njc2kvc2NzaV90cmFuc3BvcnRfc3JwLmMtMjM4LVx0XHRcdFx0ICAgZGVsYXkgKiBIWik7XG4tLVxuZHJpdmVycy9zY3NpL3Njc2lfdHJhbnNwb3J0X3NycC5jPTM3OD1zdGF0aWMgdm9pZCBzcnBfcmVjb25uZWN0X3dvcmsoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxuLS1cbmRyaXZlcnMvc2NzaS9zY3NpX3RyYW5zcG9ydF9zcnAuYy0zOTItXHRcdGlmIChkZWxheSBcdTAwM2UgMClcbmRyaXZlcnMvc2NzaS9zY3NpX3RyYW5zcG9ydF9zcnAuYzozOTM6XHRcdFx0cXVldWVfZGVsYXllZF93b3JrKHN5c3RlbV9kZmxfbG9uZ193cSxcbmRyaXZlcnMvc2NzaS9zY3NpX3RyYW5zcG9ydF9zcnAuYy0zOTQtXHRcdFx0XHRcdCAgIFx1MDAyNnJwb3J0LVx1MDAzZXJlY29ubmVjdF93b3JrLCBkZWxheSAqIEhaKTtcbi0tXG5kcml2ZXJzL3Njc2kvc2NzaV90cmFuc3BvcnRfc3JwLmM9NDYxPXN0YXRpYyB2b2lkIF9fc3JwX3N0YXJ0X3RsX2ZhaWxfdGltZXJzKHN0cnVjdCBzcnBfcnBvcnQgKnJwb3J0KVxuLS1cbmRyaXZlcnMvc2NzaS9zY3NpX3RyYW5zcG9ydF9zcnAuYy00NzYtXHRpZiAoZGVsYXkgXHUwMDNlIDApXG5kcml2ZXJzL3Njc2kvc2NzaV90cmFuc3BvcnRfc3JwLmM6NDc3Olx0XHRxdWV1ZV9kZWxheWVkX3dvcmsoc3lzdGVtX2RmbF9sb25nX3dxLCBcdTAwMjZycG9ydC1cdTAwM2VyZWNvbm5lY3Rfd29yayxcbmRyaXZlcnMvc2NzaS9zY3NpX3RyYW5zcG9ydF9zcnAuYy00NzgtXHRcdFx0XHQgICAxVUwgKiBkZWxheSAqIEhaKTtcbi0tXG5kcml2ZXJzL3Njc2kvc2NzaV90cmFuc3BvcnRfc3JwLmMtNDg0LVx0XHRpZiAoZmFzdF9pb19mYWlsX3RtbyBcdTAwM2U9IDApXG5kcml2ZXJzL3Njc2kvc2NzaV90cmFuc3BvcnRfc3JwLmM6NDg1Olx0XHRcdHF1ZXVlX2RlbGF5ZWRfd29yayhzeXN0ZW1fZGZsX2xvbmdfd3EsXG5kcml2ZXJzL3Njc2kvc2NzaV90cmFuc3BvcnRfc3JwLmMtNDg2LVx0XHRcdFx0XHQgICBcdTAwMjZycG9ydC1cdTAwM2VmYXN0X2lvX2ZhaWxfd29yayxcbi0tXG5kcml2ZXJzL3Njc2kvc2NzaV90cmFuc3BvcnRfc3JwLmMtNDg4LVx0XHRpZiAoZGV2X2xvc3NfdG1vIFx1MDAzZT0gMClcbmRyaXZlcnMvc2NzaS9zY3NpX3RyYW5zcG9ydF9zcnAuYzo0ODk6XHRcdFx0cXVldWVfZGVsYXllZF93b3JrKHN5c3RlbV9kZmxfbG9uZ193cSxcbmRyaXZlcnMvc2NzaS9zY3NpX3RyYW5zcG9ydF9zcnAuYy00OTAtXHRcdFx0XHRcdCAgIFx1MDAyNnJwb3J0LVx1MDAzZWRldl9sb3NzX3dvcmssXG4tLVxuZnMvZnVzZS9kYXguYz0xMDg9X19raWNrX2RtYXBfZnJlZV93b3JrZXIoc3RydWN0IGZ1c2VfY29ubl9kYXggKmZjZCwgdW5zaWduZWQgbG9uZyBkZWxheV9tcylcbi0tXG5mcy9mdXNlL2RheC5jLTExNS1cdGlmIChmY2QtXHUwMDNlbnJfZnJlZV9yYW5nZXMgXHUwMDNjIGZyZWVfdGhyZXNob2xkKVxuZnMvZnVzZS9kYXguYzoxMTY6XHRcdHF1ZXVlX2RlbGF5ZWRfd29yayhzeXN0ZW1fZGZsX2xvbmdfd3EsIFx1MDAyNmZjZC1cdTAwM2VmcmVlX3dvcmssXG5mcy9mdXNlL2RheC5jLTExNy1cdFx0XHRcdCAgIG1zZWNzX3RvX2ppZmZpZXMoZGVsYXlfbXMpKTtcbi0tXG5pbmNsdWRlL2xpbnV4L3dvcmtxdWV1ZS5oPTQxOD1lbnVtIHdxX2NvbnN0cyB7XG4tLVxuaW5jbHVkZS9saW51eC93b3JrcXVldWUuaC00NDQtICpcbmluY2x1ZGUvbGludXgvd29ya3F1ZXVlLmg6NDQ1OiAqIHN5c3RlbV9kZmxfbG9uZ193cSBpcyBzaW1pbGFyIHRvIHN5c3RlbV9kZmxfd3EgYnV0IGl0IG1heSBob3N0IGxvbmcgcnVubmluZ1xuaW5jbHVkZS9saW51eC93b3JrcXVldWUuaC00NDYtICogd29ya3MuXG4tLVxuaW5jbHVkZS9saW51eC93b3JrcXVldWUuaD00NzU9ZXh0ZXJuIHN0cnVjdCB3b3JrcXVldWVfc3RydWN0ICpzeXN0ZW1fYmhfaGlnaHByaV93cTtcbmluY2x1ZGUvbGludXgvd29ya3F1ZXVlLmg6NDc2OmV4dGVybiBzdHJ1Y3Qgd29ya3F1ZXVlX3N0cnVjdCAqc3lzdGVtX2RmbF9sb25nX3dxO1xuaW5jbHVkZS9saW51eC93b3JrcXVldWUuaC00NzctXG4tLVxuaW5jbHVkZS9saW51eC93b3JrcXVldWUuaD03OTY9ZXh0ZXJuIHZvaWQgX193YXJuX2ZsdXNoaW5nX3N5c3RlbXdpZGVfd3Eodm9pZClcbi0tXG5pbmNsdWRlL2xpbnV4L3dvcmtxdWV1ZS5oLTgxNS1cdCAgICAgX3dxID09IHN5c3RlbV9sb25nX3dxKSB8fFx0XHRcdFx0XHRcXFxuaW5jbHVkZS9saW51eC93b3JrcXVldWUuaDo4MTY6XHQgICAgKF9fYnVpbHRpbl9jb25zdGFudF9wKF93cSA9PSBzeXN0ZW1fZGZsX2xvbmdfd3EpIFx1MDAyNlx1MDAyNlx0XHRcXFxuaW5jbHVkZS9saW51eC93b3JrcXVldWUuaDo4MTc6XHQgICAgIF93cSA9PSBzeXN0ZW1fZGZsX2xvbmdfd3EpIHx8XHRcdFx0XHRcdFxcXG5pbmNsdWRlL2xpbnV4L3dvcmtxdWV1ZS5oLTgxOC1cdCAgICAoX19idWlsdGluX2NvbnN0YW50X3AoX3dxID09IHN5c3RlbV9kZmxfd3EpIFx1MDAyNlx1MDAyNlx0XHRcXFxuLS1cbmtlcm5lbC93b3JrcXVldWUuYz01NDU9RVhQT1JUX1NZTUJPTF9HUEwoc3lzdGVtX2JoX2hpZ2hwcmlfd3EpO1xua2VybmVsL3dvcmtxdWV1ZS5jOjU0NjpzdHJ1Y3Qgd29ya3F1ZXVlX3N0cnVjdCAqc3lzdGVtX2RmbF9sb25nX3dxIF9fcm9fYWZ0ZXJfaW5pdDtcbmtlcm5lbC93b3JrcXVldWUuYzo1NDc6RVhQT1JUX1NZTUJPTF9HUEwoc3lzdGVtX2RmbF9sb25nX3dxKTtcbmtlcm5lbC93b3JrcXVldWUuYy01NDgtXG4tLVxua2VybmVsL3dvcmtxdWV1ZS5jPTc5NzE9dm9pZCBfX2luaXQgd29ya3F1ZXVlX2luaXRfZWFybHkodm9pZClcbi0tXG5rZXJuZWwvd29ya3F1ZXVlLmMtODA3MC1cdFx0XHRcdFx0ICAgICAgIFdRX0JIIHwgV1FfSElHSFBSSSB8IFdRX1BFUkNQVSwgMCk7XG5rZXJuZWwvd29ya3F1ZXVlLmM6ODA3MTpcdHN5c3RlbV9kZmxfbG9uZ193cSA9IGFsbG9jX3dvcmtxdWV1ZShcJiMzNDtldmVudHNfZGZsX2xvbmdcJiMzNDssIFdRX1VOQk9VTkQsIFdRX01BWF9BQ1RJVkUpO1xua2VybmVsL3dvcmtxdWV1ZS5jLTgwNzItXHRCVUdfT04oIXN5c3RlbV93cSB8fCAhc3lzdGVtX3BlcmNwdV93cXx8ICFzeXN0ZW1faGlnaHByaV93cSB8fCAhc3lzdGVtX2xvbmdfd3EgfHxcbi0tXG5rZXJuZWwvd29ya3F1ZXVlLmMtODA3NS1cdCAgICAgICAhc3lzdGVtX2ZyZWV6YWJsZV9wb3dlcl9lZmZpY2llbnRfd3EgfHxcbmtlcm5lbC93b3JrcXVldWUuYzo4MDc2Olx0ICAgICAgICFzeXN0ZW1fYmhfd3EgfHwgIXN5c3RlbV9iaF9oaWdocHJpX3dxIHx8ICFzeXN0ZW1fZGZsX2xvbmdfd3EpO1xua2VybmVsL3dvcmtxdWV1ZS5jLTgwNzctfVxuLS1cbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb25uLmM9MjQzPXN0YXRpYyBpbmxpbmUgaW50IGlwX3ZzX2Nvbm5faGFzaChzdHJ1Y3QgaXBfdnNfY29ubiAqY3ApXG4tLVxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2Nvbm4uYy0yODctXHQgICAgIXRlc3RfYW5kX3NldF9iaXQoSVBfVlNfV09SS19DT05OX1JFU0laRSwgXHUwMDI2aXB2cy1cdTAwM2V3b3JrX2ZsYWdzKSlcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb25uLmM6Mjg4Olx0XHRtb2RfZGVsYXllZF93b3JrKHN5c3RlbV9kZmxfbG9uZ193cSwgXHUwMDI2aXB2cy1cdTAwM2Vjb25uX3Jlc2l6ZV93b3JrLCAwKTtcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb25uLmMtMjg5LVxuLS1cbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb25uLmM9ODAwPXN0YXRpYyB2b2lkIGNvbm5fcmVzaXplX3dvcmtfaGFuZGxlcihzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspXG4tLVxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2Nvbm4uYy05MTgtXHQvKiBNb25pdG9yIGlmIHdlIG5lZWQgdG8gc2hyaW5rIHRhYmxlICovXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29ubi5jOjkxOTpcdHF1ZXVlX2RlbGF5ZWRfd29yayhzeXN0ZW1fZGZsX2xvbmdfd3EsIFx1MDAyNmlwdnMtXHUwMDNlY29ubl9yZXNpemVfd29yayxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb25uLmMtOTIwLVx0XHRcdCAgIG1vcmVfd29yayA/IDEgOiAyICogSFopO1xuLS1cbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jdGwuYz0yMzA9c3RhdGljIHZvaWQgZGVmZW5zZV93b3JrX2hhbmRsZXIoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxuLS1cbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jdGwuYy0yMzctXHRcdGlwX3ZzX3JhbmRvbV9kcm9wZW50cnkoaXB2cyk7XG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY3RsLmM6MjM4Olx0cXVldWVfZGVsYXllZF93b3JrKHN5c3RlbV9kZmxfbG9uZ193cSwgXHUwMDI2aXB2cy1cdTAwM2VkZWZlbnNlX3dvcmssXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY3RsLmMtMjM5LVx0XHRcdCAgIERFRkVOU0VfVElNRVJfUEVSSU9EKTtcbi0tXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY3RsLmM9MjQzPXN0YXRpYyB2b2lkIGVzdF9yZWxvYWRfd29ya19oYW5kbGVyKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaylcbi0tXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY3RsLmMtMjkyLVx0aWYgKHJlcGVhdClcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jdGwuYzoyOTM6XHRcdHF1ZXVlX2RlbGF5ZWRfd29yayhzeXN0ZW1fZGZsX2xvbmdfd3EsIFx1MDAyNmlwdnMtXHUwMDNlZXN0X3JlbG9hZF93b3JrLFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2N0bC5jLTI5NC1cdFx0XHRcdCAgIGRlbGF5KTtcbi0tXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY3RsLmM9NjcwPXN0YXRpYyB2b2lkIHN2Y19yZXNpemVfd29ya19oYW5kbGVyKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaylcbi0tXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY3RsLmMtODIzLVx0XHRyZXR1cm47XG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY3RsLmM6ODI0Olx0cXVldWVfZGVsYXllZF93b3JrKHN5c3RlbV9kZmxfbG9uZ193cSwgXHUwMDI2aXB2cy1cdTAwM2VzdmNfcmVzaXplX3dvcmssIDEpO1xubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2N0bC5jLTgyNS1cdHJldHVybjtcbi0tXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY3RsLmM9MTcwOT1pcF92c19hZGRfc2VydmljZShzdHJ1Y3QgbmV0bnNfaXB2cyAqaXB2cywgc3RydWN0IGlwX3ZzX3NlcnZpY2VfdXNlcl9rZXJuICp1LFxuLS1cbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jdGwuYy0xODcxLVx0aWYgKGdyb3cgXHUwMDI2XHUwMDI2ICF0ZXN0X2FuZF9zZXRfYml0KElQX1ZTX1dPUktfU1ZDX1JFU0laRSwgXHUwMDI2aXB2cy1cdTAwM2V3b3JrX2ZsYWdzKSlcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jdGwuYzoxODcyOlx0XHRxdWV1ZV9kZWxheWVkX3dvcmsoc3lzdGVtX2RmbF9sb25nX3dxLCBcdTAwMjZpcHZzLVx1MDAzZXN2Y19yZXNpemVfd29yayxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jdGwuYy0xODczLVx0XHRcdFx0ICAgMSk7XG4tLVxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2N0bC5jPTIwODY9c3RhdGljIGludCBpcF92c19kZWxfc2VydmljZShzdHJ1Y3QgaXBfdnNfc2VydmljZSAqc3ZjKVxuLS1cbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jdGwuYy0yMTI3LVx0XHRcdFx0XHRcdFx1MDAyNmlwdnMtXHUwMDNld29ya19mbGFncykpXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY3RsLmM6MjEyODpcdFx0XHRxdWV1ZV9kZWxheWVkX3dvcmsoc3lzdGVtX2RmbF9sb25nX3dxLFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2N0bC5jLTIxMjktXHRcdFx0XHRcdCAgIFx1MDAyNmlwdnMtXHUwMDNlc3ZjX3Jlc2l6ZV93b3JrLCAxKTtcbi0tXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY3RsLmM9MjU4OT1zdGF0aWMgaW50IGlwdnNfcHJvY19jb25uX2xmYWN0b3IoY29uc3Qgc3RydWN0IGN0bF90YWJsZSAqdGFibGUsIGludCB3cml0ZSxcbi0tXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY3RsLmMtMjYwOC1cdFx0XHRpZiAocmN1X2FjY2Vzc19wb2ludGVyKGlwdnMtXHUwMDNlY29ubl90YWIpKVxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2N0bC5jOjI2MDk6XHRcdFx0XHRtb2RfZGVsYXllZF93b3JrKHN5c3RlbV9kZmxfbG9uZ193cSxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jdGwuYy0yNjEwLVx0XHRcdFx0XHRcdCBcdTAwMjZpcHZzLVx1MDAzZWNvbm5fcmVzaXplX3dvcmssIDApO1xuLS1cbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jdGwuYz0yNjE2PXN0YXRpYyBpbnQgaXB2c19wcm9jX3N2Y19sZmFjdG9yKGNvbnN0IHN0cnVjdCBjdGxfdGFibGUgKnRhYmxlLCBpbnQgd3JpdGUsXG4tLVxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2N0bC5jLTI2NDAtXHRcdFx0XHQgICAgICBcdTAwMjZpcHZzLVx1MDAzZXdvcmtfZmxhZ3MpKVxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2N0bC5jOjI2NDE6XHRcdFx0XHRtb2RfZGVsYXllZF93b3JrKHN5c3RlbV9kZmxfbG9uZ193cSxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jdGwuYy0yNjQyLVx0XHRcdFx0XHRcdCBcdTAwMjZpcHZzLVx1MDAzZXN2Y19yZXNpemVfd29yaywgMCk7XG4tLVxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2N0bC5jPTQ5OTU9c3RhdGljIGludCBfX25ldF9pbml0IGlwX3ZzX2NvbnRyb2xfbmV0X2luaXRfc3lzY3RsKHN0cnVjdCBuZXRuc19pcHZzICppcHZzKVxuLS1cbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jdGwuYy01MTI4LVx0LyogU2NoZWR1bGUgZGVmZW5zZSB3b3JrICovXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY3RsLmM6NTEyOTpcdHF1ZXVlX2RlbGF5ZWRfd29yayhzeXN0ZW1fZGZsX2xvbmdfd3EsIFx1MDAyNmlwdnMtXHUwMDNlZGVmZW5zZV93b3JrLFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2N0bC5jLTUxMzAtXHRcdFx0ICAgREVGRU5TRV9USU1FUl9QRVJJT0QpO1xuLS1cbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19lc3QuYz0yMzU9dm9pZCBpcF92c19lc3RfcmVsb2FkX3N0YXJ0KHN0cnVjdCBuZXRuc19pcHZzICppcHZzLCBib29sIHJlc3RhcnQpXG4tLVxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2VzdC5jLTI0NS1cdFx0YXRvbWljX2luYyhcdTAwMjZpcHZzLVx1MDAzZWVzdF9nZW5pZCk7XG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfZXN0LmM6MjQ2Olx0cXVldWVfZGVsYXllZF93b3JrKHN5c3RlbV9kZmxfbG9uZ193cSwgXHUwMDI2aXB2cy1cdTAwM2Vlc3RfcmVsb2FkX3dvcmssIDApO1xubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2VzdC5jLTI0Ny19XG4tLVxubmV0L3N1bnJwYy94cHJ0cmRtYS90cmFuc3BvcnQuYz00ODA9eHBydF9yZG1hX2Nvbm5lY3Qoc3RydWN0IHJwY194cHJ0ICp4cHJ0LCBzdHJ1Y3QgcnBjX3Rhc2sgKnRhc2spXG4tLVxubmV0L3N1bnJwYy94cHJ0cmRtYS90cmFuc3BvcnQuYy00OTMtXHR0cmFjZV94cHJ0cmRtYV9vcF9jb25uZWN0KHJfeHBydCwgZGVsYXkpO1xubmV0L3N1bnJwYy94cHJ0cmRtYS90cmFuc3BvcnQuYzo0OTQ6XHRxdWV1ZV9kZWxheWVkX3dvcmsoc3lzdGVtX2RmbF9sb25nX3dxLCBcdTAwMjZyX3hwcnQtXHUwMDNlcnhfY29ubmVjdF93b3JrZXIsXG5uZXQvc3VucnBjL3hwcnRyZG1hL3RyYW5zcG9ydC5jLTQ5NS1cdFx0XHQgICBkZWxheSk7XG4tLVxuc291bmQvc29jL2NvZGVjcy9jczQybDQzLWphY2suYz03OTY9aXJxcmV0dXJuX3QgY3M0Mmw0M190aXBfc2Vuc2UoaW50IGlycSwgdm9pZCAqZGF0YSlcbi0tXG5zb3VuZC9zb2MvY29kZWNzL2NzNDJsNDMtamFjay5jLTgwNy1cbnNvdW5kL3NvYy9jb2RlY3MvY3M0Mmw0My1qYWNrLmM6ODA4Olx0cXVldWVfZGVsYXllZF93b3JrKHN5c3RlbV9kZmxfbG9uZ193cSwgXHUwMDI2cHJpdi1cdTAwM2V0aXBfc2Vuc2Vfd29yayxcbnNvdW5kL3NvYy9jb2RlY3MvY3M0Mmw0My1qYWNrLmMtODA5LVx0XHRcdCAgIG1zZWNzX3RvX2ppZmZpZXMoZGJfZGVsYXkpKTtcbi0tXG5zb3VuZC9zb2MvY29kZWNzL2NzNDJsNDMtamFjay5jPTkwNT1pbnQgY3M0Mmw0M19qYWNrX3B1dChzdHJ1Y3Qgc25kX2tjb250cm9sICprY29udHJvbCwgc3RydWN0IHNuZF9jdGxfZWxlbV92YWx1ZSAqdWNvbnRyb2wpXG4tLVxuc291bmQvc29jL2NvZGVjcy9jczQybDQzLWphY2suYy05MzQtXHRpZiAoIW92ZXJyaWRlKSB7XG5zb3VuZC9zb2MvY29kZWNzL2NzNDJsNDMtamFjay5jOjkzNTpcdFx0cXVldWVfZGVsYXllZF93b3JrKHN5c3RlbV9kZmxfbG9uZ193cSwgXHUwMDI2cHJpdi1cdTAwM2V0aXBfc2Vuc2Vfd29yayxcbnNvdW5kL3NvYy9jb2RlY3MvY3M0Mmw0My1qYWNrLmMtOTM2LVx0XHRcdFx0ICAgMCk7XG4tLVxuc291bmQvc29jL2NvZGVjcy9ydDU2NDAuYz0yMzE0PXN0YXRpYyB2b2lkIHJ0NTY0MF9qYWNrX3dvcmsoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxuLS1cbnNvdW5kL3NvYy9jb2RlY3MvcnQ1NjQwLmMtMjM5OS1cdFx0ICovXG5zb3VuZC9zb2MvY29kZWNzL3J0NTY0MC5jOjI0MDA6XHRcdHF1ZXVlX2RlbGF5ZWRfd29yayhzeXN0ZW1fZGZsX2xvbmdfd3EsIFx1MDAyNnJ0NTY0MC1cdTAwM2VqYWNrX3dvcmssIDApO1xuc291bmQvc29jL2NvZGVjcy9ydDU2NDAuYy0yNDAxLVx0fVxuLS1cbnNvdW5kL3NvYy9jb2RlY3MvcnQ1NjQwLmM9MjQwND1zdGF0aWMgaXJxcmV0dXJuX3QgcnQ1NjQwX2lycShpbnQgaXJxLCB2b2lkICpkYXRhKVxuLS1cbnNvdW5kL3NvYy9jb2RlY3MvcnQ1NjQwLmMtMjQxMi1cdGlmIChydDU2NDAtXHUwMDNlamFjaylcbnNvdW5kL3NvYy9jb2RlY3MvcnQ1NjQwLmM6MjQxMzpcdFx0bW9kX2RlbGF5ZWRfd29yayhzeXN0ZW1fZGZsX2xvbmdfd3EsIFx1MDAyNnJ0NTY0MC1cdTAwM2VqYWNrX3dvcmssXG5zb3VuZC9zb2MvY29kZWNzL3J0NTY0MC5jLTI0MTQtXHRcdFx0XHQgZGVsYXkpO1xuLS1cbnNvdW5kL3NvYy9jb2RlY3MvcnQ1NjQwLmM9MjQxOT1zdGF0aWMgaXJxcmV0dXJuX3QgcnQ1NjQwX2pkX2dwaW9faXJxKGludCBpcnEsIHZvaWQgKmRhdGEpXG4tLVxuc291bmQvc29jL2NvZGVjcy9ydDU2NDAuYy0yNDIyLVxuc291bmQvc29jL2NvZGVjcy9ydDU2NDAuYzoyNDIzOlx0cXVldWVfZGVsYXllZF93b3JrKHN5c3RlbV9kZmxfbG9uZ193cSwgXHUwMDI2cnQ1NjQwLVx1MDAzZWphY2tfd29yayxcbnNvdW5kL3NvYy9jb2RlY3MvcnQ1NjQwLmMtMjQyNC1cdFx0XHQgICBtc2Vjc190b19qaWZmaWVzKEpBQ0tfU0VUVExFX1RJTUUpKTtcbi0tXG5zb3VuZC9zb2MvY29kZWNzL3J0NTY0MC5jPTI0OTU9c3RhdGljIHZvaWQgcnQ1NjQwX2VuYWJsZV9qYWNrX2RldGVjdChzdHJ1Y3Qgc25kX3NvY19jb21wb25lbnQgKmNvbXBvbmVudCxcbi0tXG5zb3VuZC9zb2MvY29kZWNzL3J0NTY0MC5jLTI1ODQtXHQvKiBzeW5jIGluaXRpYWwgamFjayBzdGF0ZSAqL1xuc291bmQvc29jL2NvZGVjcy9ydDU2NDAuYzoyNTg1Olx0cXVldWVfZGVsYXllZF93b3JrKHN5c3RlbV9kZmxfbG9uZ193cSwgXHUwMDI2cnQ1NjQwLVx1MDAzZWphY2tfd29yaywgMCk7XG5zb3VuZC9zb2MvY29kZWNzL3J0NTY0MC5jLTI1ODYtfVxuLS1cbnNvdW5kL3NvYy9jb2RlY3MvcnQ1NjQwLmM9MjU5ND1zdGF0aWMgdm9pZCBydDU2NDBfZW5hYmxlX2hkYV9qYWNrX2RldGVjdChcbi0tXG5zb3VuZC9zb2MvY29kZWNzL3J0NTY0MC5jLTI2MzctXHQvKiBzeW5jIGluaXRpYWwgamFjayBzdGF0ZSAqL1xuc291bmQvc29jL2NvZGVjcy9ydDU2NDAuYzoyNjM4Olx0cXVldWVfZGVsYXllZF93b3JrKHN5c3RlbV9kZmxfbG9uZ193cSwgXHUwMDI2cnQ1NjQwLVx1MDAzZWphY2tfd29yaywgMCk7XG5zb3VuZC9zb2MvY29kZWNzL3J0NTY0MC5jLTI2MzktXG4tLVxuc291bmQvc29jL2NvZGVjcy9ydDU2NDAuYz0yODI2PXN0YXRpYyBpbnQgcnQ1NjQwX3Jlc3VtZShzdHJ1Y3Qgc25kX3NvY19jb21wb25lbnQgKmNvbXBvbmVudClcbi0tXG5zb3VuZC9zb2MvY29kZWNzL3J0NTY0MC5jLTI4NjUtXHRcdGVuYWJsZV9pcnEocnQ1NjQwLVx1MDAzZWlycSk7XG5zb3VuZC9zb2MvY29kZWNzL3J0NTY0MC5jOjI4NjY6XHRcdHF1ZXVlX2RlbGF5ZWRfd29yayhzeXN0ZW1fZGZsX2xvbmdfd3EsIFx1MDAyNnJ0NTY0MC1cdTAwM2VqYWNrX3dvcmssIDApO1xuc291bmQvc29jL2NvZGVjcy9ydDU2NDAuYy0yODY3LVx0fVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjExLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMiAxNDo1MzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMTQ4NAoJCQkJCQkJb3V0cHV0OiAxOQoJCQkJCQkJdGhvdWdodHM6IDQzOQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipGdXp6aW5nIERlY2lzaW9uIGZvciBXb3JrcXVldWUgQ2hhbmdlKioKCk9rYXksIHNvIHRoaXMgcGF0Y2ggaXMgc3dpdGNoaW5nIHRoZSB3b3JrcXVldWUgdXNlZCBieSBJUFZTIGZyb20gYHN5c3RlbV9sb25nX3dxYCB0byBgc3lzdGVtX2RmbF9sb25nX3dxYC4gU2VlbXMgbGlrZSBhIG1pbm9yIGZ1bmN0aW9uYWwgY2hhbmdlLCBidXQgbGV0JiMzOTtzIGNvbnNpZGVyIGZ1enppbmcgaXQuIEl0JiMzOTtzIGluIGBuZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY3RsLmNgIGFuZCBgbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2VzdC5jYCwgc28gaXQmIzM5O3MgbG9jYWxpemVkLiBUaGUgY29yZSBxdWVzdGlvbiBpczogaXMgaXQgKndvcnRoKiBpdD8KClRoZSBpbnN0cnVjdGlvbnMgc2F5IHRvIG9ubHkgcmV0dXJuIGBXb3J0aEZ1enppbmc9ZmFsc2VgIGlmIGl04oCZcyBkb2N1bWVudGF0aW9uLCBkZWNvcmF0aXZlIGNoYW5nZXMsIG9yIHNvbWV0aGluZyB0aGF0IHdvbiYjMzk7dCBjaGFuZ2UgdGhlIGV4ZWN1dGlvbi4gVGhpcyBwYXRjaCAqZG9lcyogYWx0ZXIgZXhlY3V0aW9uIGZsb3csIGJlY2F1c2UgaXQmIzM5O3MgZGV0ZXJtaW5pbmcgd2hpY2ggd29ya3F1ZXVlIGV4ZWN1dGVzIHRoZSBmdW5jdGlvbiwgaXQmIzM5O3Mgbm90IGNvc21ldGljLiBTbywgeWVzLCBpdOKAmXMgYSBmdW5jdGlvbmFsIGNoYW5nZSwgbm90IGp1c3QgYSBjb21tZW50IG9yIGRvY3VtZW50YXRpb24gdXBkYXRlLgoKVGhlcmVmb3JlLCBJJiMzOTttIGxlYW5pbmcgdG93YXJkcyBgV29ydGhGdXp6aW5nPXRydWVgLiBJIG5lZWQgdG8gcHJvdmlkZSB0aGUgc3VwcG9ydGluZyBhcmd1bWVudHMgdGhvdWdoLiBTcGVjaWZpY2FsbHkgdGhlIGBGb2N1c1N5bWJvbHNgIGFuZCBgRW5hYmxlQ29uZmlnc2AuIFRoZSBgRm9jdXNTeW1ib2xzYCBhcHBlYXIgdG8gYmUgYGRlZmVuc2Vfd29ya19oYW5kbGVyYCwgYGVzdF9yZWxvYWRfd29ya19oYW5kbGVyYCwgYW5kIGBpcF92c19lc3RfcmVsb2FkX3N0YXJ0YC4gYEVuYWJsZUNvbmZpZ3NgIGlzIHN0cmFpZ2h0Zm9yd2FyZDogYElQX1ZTYC4gVGhhdCBzZWVtcyByaWdodCwgYnV0IGxldCYjMzk7cyBkb3VibGUtY2hlY2sgYW55IHJlbGF0ZWQgY29uZmlncywganVzdCB0byBiZSBzdXJlLgoKV2FpdCBhIHNlY29uZOKApiBgZGVmZW5zZV93b3JrX2hhbmRsZXJgIGlzIGluc2lkZSBhbiBgI2lmZGVmIENPTkZJR19TWVNDVExgIGJsb2NrLiBUaGlzIG5lZWRzIGEgY2xvc2VyIGxvb2sgYXQgYGlwX3ZzX2N0bC5jYCBhcm91bmQgbGluZSAyMzUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAyIDE0OjUzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2RlZmVuc2Vfd29ya19oYW5kbGVyJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jdGwuYz0yMTY9c3RhdGljIHZvaWQgZXhwaXJlX25vZGVzdF9jb25uX2hhbmRsZXIoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxuLS1cbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jdGwuYy0yMjktXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY3RsLmM6MjMwOnN0YXRpYyB2b2lkIGRlZmVuc2Vfd29ya19oYW5kbGVyKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaylcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jdGwuYy0yMzEte1xuLS1cbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jdGwuYz00OTk1PXN0YXRpYyBpbnQgX19uZXRfaW5pdCBpcF92c19jb250cm9sX25ldF9pbml0X3N5c2N0bChzdHJ1Y3QgbmV0bnNfaXB2cyAqaXB2cylcbi0tXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY3RsLmMtNTAwNi1cdHNwaW5fbG9ja19pbml0KFx1MDAyNmlwdnMtXHUwMDNlc2VjdXJldGNwX2xvY2spO1xubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2N0bC5jOjUwMDc6XHRJTklUX0RFTEFZRURfV09SSyhcdTAwMjZpcHZzLVx1MDAzZWRlZmVuc2Vfd29yaywgZGVmZW5zZV93b3JrX2hhbmRsZXIpO1xubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2N0bC5jLTUwMDgtXHRJTklUX0RFTEFZRURfV09SSyhcdTAwMjZpcHZzLVx1MDAzZWV4cGlyZV9ub2Rlc3RfY29ubl93b3JrLFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMiAxNDo1MzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMjU5OAoJCQkJCQkJb3V0cHV0OiA0MwoJCQkJCQkJdGhvdWdodHM6IDI4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIGEgc3VtbWFyeSBvZiBteSB0aG91Z2h0IHByb2Nlc3MsIGFzIGlmIEkgd2VyZSB0aGUgb25lIHRoaW5raW5nIGl0OgoKKipEaXZpbmcgaW50byB0aGUgSVBWUyBDb250cm9sIFBsYW5lKioKCk9rYXksIHRpbWUgdG8gZ2V0IG15IGhhbmRzIGRpcnR5IHdpdGggYG5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jdGwuY2AuIEkmIzM5O20gZ29pbmcgdG8ganVtcCBpbiBhcm91bmQgbGluZSAyMzAuIEkmIzM5O20gZ3Vlc3NpbmcgdGhhdCYjMzk7cyB3aGVyZSBhIGNydWNpYWwgcGFydCBvZiB0aGUgY29udHJvbCBwbGFuZSBsb2dpYywgc3BlY2lmaWNhbGx5IGFyb3VuZCBjb25maWd1cmF0aW9uIG9yIG1hbmlwdWxhdGlvbiBvZiB0aGUgSVBWUyB0YWJsZXMsIHJlc2lkZXMuIEkmIzM5O20gZXhwZWN0aW5nIHRvIGZpbmQgc29tZSBpbnRlcmVzdGluZyBpbnRlcmFjdGlvbiBwb2ludHMgd2l0aCB0aGUgbmV0ZmlsdGVyIGhvb2tzIG9yIHBlcmhhcHMgYSBrZXkgZnVuY3Rpb24gY2FsbCBkZWFsaW5nIHdpdGggc2VydmljZSBkZWZpbml0aW9uIG9yIGNvbm5lY3Rpb24gdHJhY2tpbmcgbW9kaWZpY2F0aW9ucy4gTGV0JiMzOTtzIHNlZSB3aGF0IGdlbXMgYXJlIHdhaXRpbmcgdG8gYmUgdW5lYXJ0aGVkLiBMaW5lIDIzMC4uLiBsZXQmIzM5O3Mgc2VlIHdoYXQmIzM5O3MgaW4gc3RvcmUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAyIDE0OjUzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7bmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2N0bC5jJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMjEwLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDUwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAyMTA6XHRcdGxvY2FsX2JoX2VuYWJsZSgpO1xuIDIxMTpcdH1cbiAyMTI6XHRcbiAyMTM6XHQvKiBIYW5kbGVyIGZvciBkZWxheWVkIHdvcmsgZm9yIGV4cGlyaW5nIG5vXG4gMjE0Olx0ICogZGVzdGluYXRpb24gY29ubmVjdGlvbnNcbiAyMTU6XHQgKi9cbiAyMTY6XHRzdGF0aWMgdm9pZCBleHBpcmVfbm9kZXN0X2Nvbm5faGFuZGxlcihzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspXG4gMjE3Olx0e1xuIDIxODpcdFx0c3RydWN0IG5ldG5zX2lwdnMgKmlwdnM7XG4gMjE5Olx0XG4gMjIwOlx0XHRpcHZzID0gY29udGFpbmVyX29mKHdvcmssIHN0cnVjdCBuZXRuc19pcHZzLFxuIDIyMTpcdFx0XHRcdCAgICBleHBpcmVfbm9kZXN0X2Nvbm5fd29yay53b3JrKTtcbiAyMjI6XHRcdGlwX3ZzX2V4cGlyZV9ub2Rlc3RfY29ubl9mbHVzaChpcHZzKTtcbiAyMjM6XHR9XG4gMjI0Olx0XG4gMjI1Olx0LypcbiAyMjY6XHQgKlx0VGltZXIgZm9yIGNoZWNraW5nIHRoZSBkZWZlbnNlXG4gMjI3Olx0ICovXG4gMjI4Olx0I2RlZmluZSBERUZFTlNFX1RJTUVSX1BFUklPRFx0MSpIWlxuIDIyOTpcdFxuIDIzMDpcdHN0YXRpYyB2b2lkIGRlZmVuc2Vfd29ya19oYW5kbGVyKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaylcbiAyMzE6XHR7XG4gMjMyOlx0XHRzdHJ1Y3QgbmV0bnNfaXB2cyAqaXB2cyA9XG4gMjMzOlx0XHRcdGNvbnRhaW5lcl9vZih3b3JrLCBzdHJ1Y3QgbmV0bnNfaXB2cywgZGVmZW5zZV93b3JrLndvcmspO1xuIDIzNDpcdFxuIDIzNTpcdFx0dXBkYXRlX2RlZmVuc2VfbGV2ZWwoaXB2cyk7XG4gMjM2Olx0XHRpZiAoYXRvbWljX3JlYWQoXHUwMDI2aXB2cy1cdTAwM2Vkcm9wZW50cnkpKVxuIDIzNzpcdFx0XHRpcF92c19yYW5kb21fZHJvcGVudHJ5KGlwdnMpO1xuIDIzODpcdFx0cXVldWVfZGVsYXllZF93b3JrKHN5c3RlbV9kZmxfbG9uZ193cSwgXHUwMDI2aXB2cy1cdTAwM2VkZWZlbnNlX3dvcmssXG4gMjM5Olx0XHRcdFx0ICAgREVGRU5TRV9USU1FUl9QRVJJT0QpO1xuIDI0MDpcdH1cbiAyNDE6XHQjZW5kaWZcbiAyNDI6XHRcbiAyNDM6XHRzdGF0aWMgdm9pZCBlc3RfcmVsb2FkX3dvcmtfaGFuZGxlcihzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspXG4gMjQ0Olx0e1xuIDI0NTpcdFx0c3RydWN0IG5ldG5zX2lwdnMgKmlwdnMgPVxuIDI0NjpcdFx0XHRjb250YWluZXJfb2Yod29yaywgc3RydWN0IG5ldG5zX2lwdnMsIGVzdF9yZWxvYWRfd29yay53b3JrKTtcbiAyNDc6XHRcdGludCBnZW5pZF9kb25lID0gYXRvbWljX3JlYWQoXHUwMDI2aXB2cy1cdTAwM2Vlc3RfZ2VuaWRfZG9uZSk7XG4gMjQ4Olx0XHR1bnNpZ25lZCBsb25nIGRlbGF5ID0gSFogLyAxMDtcdC8qIHJlcGVhdCBzdGFydHVwcyBhZnRlciBmYWlsdXJlICovXG4gMjQ5Olx0XHRib29sIHJlcGVhdCA9IGZhbHNlO1xuIDI1MDpcdFx0aW50IGdlbmlkO1xuIDI1MTpcdFx0aW50IGlkO1xuIDI1MjpcdFxuIDI1MzpcdFx0bXV0ZXhfbG9jayhcdTAwMjZpcHZzLVx1MDAzZWVzdF9tdXRleCk7XG4gMjU0Olx0XHRnZW5pZCA9IGF0b21pY19yZWFkKFx1MDAyNmlwdnMtXHUwMDNlZXN0X2dlbmlkKTtcbiAyNTU6XHRcdGZvciAoaWQgPSAwOyBpZCBcdTAwM2MgaXB2cy1cdTAwM2Vlc3Rfa3RfY291bnQ7IGlkJiM0MzsmIzQzOykge1xuIDI1NjpcdFx0XHRzdHJ1Y3QgaXBfdnNfZXN0X2t0X2RhdGEgKmtkID0gaXB2cy1cdTAwM2Vlc3Rfa3RfYXJyW2lkXTtcbiAyNTc6XHRcbiAyNTg6XHRcdFx0LyogbmV0bnMgY2xlYW4gdXAgc3RhcnRlZCwgYWJvcnQgZGVsYXllZCB3b3JrICovXG4gMjU5Olx0XHRcdGlmICghUkVBRF9PTkNFKGlwdnMtXHUwMDNlZW5hYmxlKSlcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDIgMTQ6NTM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTM2MTEKCQkJCQkJCW91dHB1dDogNDMKCQkJCQkJCXRob3VnaHRzOiAxNgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOgoKKipBbmFseXppbmcgQ29uZGl0aW9uYWwgQ29tcGlsYXRpb24qKgoKQWxyaWdodCwgc28gSSYjMzk7bSBsb29raW5nIGF0IGxpbmUgMjQxLCB3aGljaCBpcyBhIHNpbXBsZSBgI2VuZGlmYC4gVGhhdCYjMzk7cyB0aGUgZW5kIG9mIGEgY29uZGl0aW9uYWwgYmxvY2ssIG5vIHN1cnByaXNlcyB0aGVyZS4gQnV0IGl0IGltbWVkaWF0ZWx5IG1ha2VzIG1lIHRoaW5rLCAmIzM0O1doYXQgd2FzIHRoZSBjb3JyZXNwb25kaW5nIGAjaWZkZWZgIG9yIGAjaWZuZGVmYCB0aGF0IHN0YXJ0ZWQgdGhpcyBibG9jaz8mIzM0Oy4gSSBuZWVkIHRvIGtub3cgdGhlIGNvbmRpdGlvbmFsIGNvbXBpbGF0aW9uIGNvbmRpdGlvbi4gSSYjMzk7bSB0aGlua2luZywgaXMgaXQgYSBmZWF0dXJlIGZsYWcsIGEgcGxhdGZvcm0gZGVmaW5lLCBhIGRlYnVnIHN3aXRjaD8gS25vd2luZyAqdGhhdCogaXMgY3J1Y2lhbCB0byB1bmRlcnN0YW5kaW5nIHRoZSAqd2h5KiBvZiB0aGlzIHBhcnRpY3VsYXIgY29kZSBiZWluZyBwcmVzZW50IG9yIGFic2VudCBkdXJpbmcgYSBzcGVjaWZpYyBidWlsZC4gSSBuZWVkIHRvIHRyYWNlIGJhY2sgYW5kIGltbWVkaWF0ZWx5IGlkZW50aWZ5IHdoYXQgaXMgYmVpbmcgY29uZGl0aW9uYWxseSBjb21waWxlZCwgYW5kIHdoeS4gV2l0aG91dCBrbm93aW5nIHRoZSBgI2lmZGVmYCwgdGhpcyBgI2VuZGlmYCBpcyBqdXN0IGEgY2xvc2luZyBicmFja2V0IHdpdGhvdXQgY29udGV4dCwgYW4gb3JwaGFuIGluIHRoZSBjb2RlYmFzZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDIgMTQ6NTM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtuZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY3RsLmMmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAxNTAsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogNjAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7IDE1MDpcdFx0XHRcdGlwdnMtXHUwMDNlZHJvcF9jb3VudGVyID0gYW1lbXRocmVzaCAvIChhbWVtdGhyZXNoIC0gYXZhaWxtZW0pO1xuIDE1MTpcdFx0XHRcdGlwdnMtXHUwMDNlZHJvcF9yYXRlID0gaXB2cy1cdTAwM2Vkcm9wX2NvdW50ZXI7XG4gMTUyOlx0XHRcdFx0aXB2cy1cdTAwM2VzeXNjdGxfZHJvcF9wYWNrZXQgPSAyO1xuIDE1MzpcdFx0XHR9IGVsc2Uge1xuIDE1NDpcdFx0XHRcdGlwdnMtXHUwMDNlZHJvcF9yYXRlID0gMDtcbiAxNTU6XHRcdFx0fVxuIDE1NjpcdFx0XHRicmVhaztcbiAxNTc6XHRcdGNhc2UgMjpcbiAxNTg6XHRcdFx0aWYgKG5vbWVtKSB7XG4gMTU5Olx0XHRcdFx0aXB2cy1cdTAwM2Vkcm9wX2NvdW50ZXIgPSBhbWVtdGhyZXNoIC8gKGFtZW10aHJlc2ggLSBhdmFpbG1lbSk7XG4gMTYwOlx0XHRcdFx0aXB2cy1cdTAwM2Vkcm9wX3JhdGUgPSBpcHZzLVx1MDAzZWRyb3BfY291bnRlcjtcbiAxNjE6XHRcdFx0fSBlbHNlIHtcbiAxNjI6XHRcdFx0XHRpcHZzLVx1MDAzZWRyb3BfcmF0ZSA9IDA7XG4gMTYzOlx0XHRcdFx0aXB2cy1cdTAwM2VzeXNjdGxfZHJvcF9wYWNrZXQgPSAxO1xuIDE2NDpcdFx0XHR9XG4gMTY1Olx0XHRcdGJyZWFrO1xuIDE2NjpcdFx0Y2FzZSAzOlxuIDE2NzpcdFx0XHRpcHZzLVx1MDAzZWRyb3BfcmF0ZSA9IGlwdnMtXHUwMDNlc3lzY3RsX2FtX2Ryb3ByYXRlO1xuIDE2ODpcdFx0XHRicmVhaztcbiAxNjk6XHRcdH1cbiAxNzA6XHRcdHNwaW5fdW5sb2NrKFx1MDAyNmlwdnMtXHUwMDNlZHJvcHBhY2tldF9sb2NrKTtcbiAxNzE6XHRcbiAxNzI6XHRcdC8qIHNlY3VyZV90Y3AgKi9cbiAxNzM6XHRcdHNwaW5fbG9jayhcdTAwMjZpcHZzLVx1MDAzZXNlY3VyZXRjcF9sb2NrKTtcbiAxNzQ6XHRcdHN3aXRjaCAoaXB2cy1cdTAwM2VzeXNjdGxfc2VjdXJlX3RjcCkge1xuIDE3NTpcdFx0Y2FzZSAwOlxuIDE3NjpcdFx0XHRpZiAoaXB2cy1cdTAwM2VvbGRfc2VjdXJlX3RjcCBcdTAwM2U9IDIpXG4gMTc3Olx0XHRcdFx0dG9fY2hhbmdlID0gMDtcbiAxNzg6XHRcdFx0YnJlYWs7XG4gMTc5Olx0XHRjYXNlIDE6XG4gMTgwOlx0XHRcdGlmIChub21lbSkge1xuIDE4MTpcdFx0XHRcdGlmIChpcHZzLVx1MDAzZW9sZF9zZWN1cmVfdGNwIFx1MDAzYyAyKVxuIDE4MjpcdFx0XHRcdFx0dG9fY2hhbmdlID0gMTtcbiAxODM6XHRcdFx0XHRpcHZzLVx1MDAzZXN5c2N0bF9zZWN1cmVfdGNwID0gMjtcbiAxODQ6XHRcdFx0fSBlbHNlIHtcbiAxODU6XHRcdFx0XHRpZiAoaXB2cy1cdTAwM2VvbGRfc2VjdXJlX3RjcCBcdTAwM2U9IDIpXG4gMTg2Olx0XHRcdFx0XHR0b19jaGFuZ2UgPSAwO1xuIDE4NzpcdFx0XHR9XG4gMTg4Olx0XHRcdGJyZWFrO1xuIDE4OTpcdFx0Y2FzZSAyOlxuIDE5MDpcdFx0XHRpZiAobm9tZW0pIHtcbiAxOTE6XHRcdFx0XHRpZiAoaXB2cy1cdTAwM2VvbGRfc2VjdXJlX3RjcCBcdTAwM2MgMilcbiAxOTI6XHRcdFx0XHRcdHRvX2NoYW5nZSA9IDE7XG4gMTkzOlx0XHRcdH0gZWxzZSB7XG4gMTk0Olx0XHRcdFx0aWYgKGlwdnMtXHUwMDNlb2xkX3NlY3VyZV90Y3AgXHUwMDNlPSAyKVxuIDE5NTpcdFx0XHRcdFx0dG9fY2hhbmdlID0gMDtcbiAxOTY6XHRcdFx0XHRpcHZzLVx1MDAzZXN5c2N0bF9zZWN1cmVfdGNwID0gMTtcbiAxOTc6XHRcdFx0fVxuIDE5ODpcdFx0XHRicmVhaztcbiAxOTk6XHRcdGNhc2UgMzpcbiAyMDA6XHRcdFx0aWYgKGlwdnMtXHUwMDNlb2xkX3NlY3VyZV90Y3AgXHUwMDNjIDIpXG4gMjAxOlx0XHRcdFx0dG9fY2hhbmdlID0gMTtcbiAyMDI6XHRcdFx0YnJlYWs7XG4gMjAzOlx0XHR9XG4gMjA0Olx0XHRpcHZzLVx1MDAzZW9sZF9zZWN1cmVfdGNwID0gaXB2cy1cdTAwM2VzeXNjdGxfc2VjdXJlX3RjcDtcbiAyMDU6XHRcdGlmICh0b19jaGFuZ2UgXHUwMDNlPSAwKVxuIDIwNjpcdFx0XHRpcF92c19wcm90b2NvbF90aW1lb3V0X2NoYW5nZShpcHZzLFxuIDIwNzpcdFx0XHRcdFx0XHQgICAgICBpcHZzLVx1MDAzZXN5c2N0bF9zZWN1cmVfdGNwIFx1MDAzZSAxKTtcbiAyMDg6XHRcdHNwaW5fdW5sb2NrKFx1MDAyNmlwdnMtXHUwMDNlc2VjdXJldGNwX2xvY2spO1xuIDIwOTpcdFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE3LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMiAxNDo1MzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxNDc0OAoJCQkJCQkJb3V0cHV0OiA0MwoJCQkJCQkJdGhvdWdodHM6IDIxCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhlIHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZToKCioqTWlzc2luZyBQcmVwcm9jZXNzb3IgRGlyZWN0aXZlIEludmVzdGlnYXRpb24qKgoKQWxyaWdodCwgSSYjMzk7bSBzY2FubmluZyB0aGlzIGNvZGUsIGFuZCB0aGUgcHJlcHJvY2Vzc29yIGRpcmVjdGl2ZSBJJiMzOTttIGV4cGVjdGluZyBpc24mIzM5O3QganVtcGluZyBvdXQgYXQgbWUuIExldCYjMzk7cyBzdGFydCB0aGUgYW5hbHlzaXMgYXQgbGluZSA1MC4gSSYjMzk7bSBhc3N1bWluZyB0aGF0IGl0IGlzIGluIHRoaXMgcmVnaW9uLiBUaGlzIGlzIHdoZXJlIHRoZSBjb3JlIGxvZ2ljIG9mIHRoZSBmdW5jdGlvbmFsaXR5IGlzIHByb2JhYmx5IHNpdHVhdGVkIGFuZCB3aGVyZSB0aGUgaXNzdWUgd291bGQgbW9zdCBsaWtlbHkgbWFuaWZlc3QuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBjb250cm9sIGZsb3cgYXJvdW5kIHRoYXQgc2VjdGlvbi4gSXMgdGhlIGZ1bmN0aW9uYWxpdHkgY29uZGl0aW9uYWxseSBjb21waWxlZCBpbiBvciBvdXQ/IEl0IGNvdWxkIGJlIG1pc3Npbmcgb3IgbWF5YmUgdGhlIHJlbGV2YW50IGNvbmRpdGlvbiBoYXMgbm90IGJlZW4gbWV0LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMiAxNDo1MzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jdGwuYyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDUwLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDEwMAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgIDUwOlx0TU9EVUxFX0FMSUFTX0dFTkxfRkFNSUxZKElQVlNfR0VOTF9OQU1FKTtcbiAgNTE6XHRcbiAgNTI6XHRzdGF0aWMgc3RydWN0IGxvY2tfY2xhc3Nfa2V5IF9faXB2c19zZXJ2aWNlX2tleTtcbiAgNTM6XHRcbiAgNTQ6XHQvKiBzeXNjdGwgdmFyaWFibGVzICovXG4gIDU1Olx0XG4gIDU2Olx0I2lmZGVmIENPTkZJR19JUF9WU19ERUJVR1xuICA1NzpcdHN0YXRpYyBpbnQgc3lzY3RsX2lwX3ZzX2RlYnVnX2xldmVsID0gMDtcbiAgNTg6XHRcbiAgNTk6XHRpbnQgaXBfdnNfZ2V0X2RlYnVnX2xldmVsKHZvaWQpXG4gIDYwOlx0e1xuICA2MTpcdFx0cmV0dXJuIHN5c2N0bF9pcF92c19kZWJ1Z19sZXZlbDtcbiAgNjI6XHR9XG4gIDYzOlx0I2VuZGlmXG4gIDY0Olx0XG4gIDY1Olx0XG4gIDY2Olx0LyogIFByb3RvcyAqL1xuICA2NzpcdHN0YXRpYyB2b2lkIF9faXBfdnNfZGVsX3NlcnZpY2Uoc3RydWN0IGlwX3ZzX3NlcnZpY2UgKnN2YywgYm9vbCBjbGVhbnVwKTtcbiAgNjg6XHRcbiAgNjk6XHRcbiAgNzA6XHQjaWZkZWYgQ09ORklHX0lQX1ZTX0lQVjZcbiAgNzE6XHQvKiBUYWtlbiBmcm9tIHJ0Nl9maWxsX25vZGUoKSBpbiBuZXQvaXB2Ni9yb3V0ZS5jLCBpcyB0aGVyZSBhIGJldHRlciB3YXk/ICovXG4gIDcyOlx0c3RhdGljIGJvb2wgX19pcF92c19hZGRyX2lzX2xvY2FsX3Y2KHN0cnVjdCBuZXQgKm5ldCxcbiAgNzM6XHRcdFx0XHRcdCAgICAgY29uc3Qgc3RydWN0IGluNl9hZGRyICphZGRyKVxuICA3NDpcdHtcbiAgNzU6XHRcdHN0cnVjdCBmbG93aTYgZmw2ID0ge1xuICA3NjpcdFx0XHQuZGFkZHIgPSAqYWRkcixcbiAgNzc6XHRcdH07XG4gIDc4Olx0XHRzdHJ1Y3QgZHN0X2VudHJ5ICpkc3QgPSBpcDZfcm91dGVfb3V0cHV0KG5ldCwgTlVMTCwgXHUwMDI2Zmw2KTtcbiAgNzk6XHRcdGJvb2wgaXNfbG9jYWw7XG4gIDgwOlx0XG4gIDgxOlx0XHRpc19sb2NhbCA9ICFkc3QtXHUwMDNlZXJyb3IgXHUwMDI2XHUwMDI2IGRzdC1cdTAwM2VkZXYgXHUwMDI2XHUwMDI2IChkc3QtXHUwMDNlZGV2LVx1MDAzZWZsYWdzIFx1MDAyNiBJRkZfTE9PUEJBQ0spO1xuICA4MjpcdFxuICA4MzpcdFx0ZHN0X3JlbGVhc2UoZHN0KTtcbiAgODQ6XHRcdHJldHVybiBpc19sb2NhbDtcbiAgODU6XHR9XG4gIDg2Olx0I2VuZGlmXG4gIDg3Olx0XG4gIDg4Olx0I2lmZGVmIENPTkZJR19TWVNDVExcbiAgODk6XHQvKlxuICA5MDpcdCAqXHR1cGRhdGVfZGVmZW5zZV9sZXZlbCBpcyBjYWxsZWQgZnJvbSBrZXZlbnRkIGFuZCBmcm9tIHN5c2N0bCxcbiAgOTE6XHQgKlx0c28gaXQgbmVlZHMgdG8gcHJvdGVjdCBpdHNlbGYgZnJvbSBzb2Z0aXJxc1xuICA5MjpcdCAqL1xuICA5MzpcdHN0YXRpYyB2b2lkIHVwZGF0ZV9kZWZlbnNlX2xldmVsKHN0cnVjdCBuZXRuc19pcHZzICppcHZzKVxuICA5NDpcdHtcbiAgOTU6XHRcdHN0cnVjdCBzeXNpbmZvIGk7XG4gIDk2Olx0XHRpbnQgYXZhaWxtZW07XG4gIDk3Olx0XHRpbnQgYW1lbXRocmVzaDtcbiAgOTg6XHRcdGludCBub21lbTtcbiAgOTk6XHRcdGludCB0b19jaGFuZ2UgPSAtMTtcbiAxMDA6XHRcbiAxMDE6XHRcdC8qIHdlIG9ubHkgY291bnQgZnJlZSBhbmQgYnVmZmVyZWQgbWVtb3J5IChpbiBwYWdlcykgKi9cbiAxMDI6XHRcdHNpX21lbWluZm8oXHUwMDI2aSk7XG4gMTAzOlx0XHRhdmFpbG1lbSA9IGkuZnJlZXJhbSAmIzQzOyBpLmJ1ZmZlcnJhbTtcbiAxMDQ6XHRcdC8qIGhvd2V2ZXIgaW4gbGludXggMi41IHRoZSBpLmJ1ZmZlcnJhbSBpcyB0b3RhbCBwYWdlIGNhY2hlIHNpemUsXG4gMTA1Olx0XHQgICB3ZSBuZWVkIGFkanVzdCBpdCAqL1xuIDEwNjpcdFx0Lyogc2lfc3dhcGluZm8oXHUwMDI2aSk7ICovXG4gMTA3Olx0XHQvKiBhdmFpbG1lbSA9IGF2YWlsbWVtIC0gKGkudG90YWxzd2FwIC0gaS5mcmVlc3dhcCk7ICovXG4gMTA4Olx0XG4gMTA5Olx0XHRhbWVtdGhyZXNoID0gbWF4KFJFQURfT05DRShpcHZzLVx1MDAzZXN5c2N0bF9hbWVtdGhyZXNoKSwgMCk7XG4gMTEwOlx0XHRub21lbSA9IChhdmFpbG1lbSBcdTAwM2MgYW1lbXRocmVzaCk7XG4gMTExOlx0XG4gMTEyOlx0XHRsb2NhbF9iaF9kaXNhYmxlKCk7XG4gMTEzOlx0XG4gMTE0Olx0XHQvKiBkcm9wX2VudHJ5ICovXG4gMTE1Olx0XHRzcGluX2xvY2soXHUwMDI2aXB2cy1cdTAwM2Vkcm9wZW50cnlfbG9jayk7XG4gMTE2Olx0XHRzd2l0Y2ggKGlwdnMtXHUwMDNlc3lzY3RsX2Ryb3BfZW50cnkpIHtcbiAxMTc6XHRcdGNhc2UgMDpcbiAxMTg6XHRcdFx0YXRvbWljX3NldChcdTAwMjZpcHZzLVx1MDAzZWRyb3BlbnRyeSwgMCk7XG4gMTE5Olx0XHRcdGJyZWFrO1xuIDEyMDpcdFx0Y2FzZSAxOlxuIDEyMTpcdFx0XHRpZiAobm9tZW0pIHtcbiAxMjI6XHRcdFx0XHRhdG9taWNfc2V0KFx1MDAyNmlwdnMtXHUwMDNlZHJvcGVudHJ5LCAxKTtcbiAxMjM6XHRcdFx0XHRpcHZzLVx1MDAzZXN5c2N0bF9kcm9wX2VudHJ5ID0gMjtcbiAxMjQ6XHRcdFx0fSBlbHNlIHtcbiAxMjU6XHRcdFx0XHRhdG9taWNfc2V0KFx1MDAyNmlwdnMtXHUwMDNlZHJvcGVudHJ5LCAwKTtcbiAxMjY6XHRcdFx0fVxuIDEyNzpcdFx0XHRicmVhaztcbiAxMjg6XHRcdGNhc2UgMjpcbiAxMjk6XHRcdFx0aWYgKG5vbWVtKSB7XG4gMTMwOlx0XHRcdFx0YXRvbWljX3NldChcdTAwMjZpcHZzLVx1MDAzZWRyb3BlbnRyeSwgMSk7XG4gMTMxOlx0XHRcdH0gZWxzZSB7XG4gMTMyOlx0XHRcdFx0YXRvbWljX3NldChcdTAwMjZpcHZzLVx1MDAzZWRyb3BlbnRyeSwgMCk7XG4gMTMzOlx0XHRcdFx0aXB2cy1cdTAwM2VzeXNjdGxfZHJvcF9lbnRyeSA9IDE7XG4gMTM0Olx0XHRcdH1cbiAxMzU6XHRcdFx0YnJlYWs7XG4gMTM2Olx0XHRjYXNlIDM6XG4gMTM3Olx0XHRcdGF0b21pY19zZXQoXHUwMDI2aXB2cy1cdTAwM2Vkcm9wZW50cnksIDEpO1xuIDEzODpcdFx0XHRicmVhaztcbiAxMzk6XHRcdH1cbiAxNDA6XHRcdHNwaW5fdW5sb2NrKFx1MDAyNmlwdnMtXHUwMDNlZHJvcGVudHJ5X2xvY2spO1xuIDE0MTpcdFxuIDE0MjpcdFx0LyogZHJvcF9wYWNrZXQgKi9cbiAxNDM6XHRcdHNwaW5fbG9jayhcdTAwMjZpcHZzLVx1MDAzZWRyb3BwYWNrZXRfbG9jayk7XG4gMTQ0Olx0XHRzd2l0Y2ggKGlwdnMtXHUwMDNlc3lzY3RsX2Ryb3BfcGFja2V0KSB7XG4gMTQ1Olx0XHRjYXNlIDA6XG4gMTQ2Olx0XHRcdGlwdnMtXHUwMDNlZHJvcF9yYXRlID0gMDtcbiAxNDc6XHRcdFx0YnJlYWs7XG4gMTQ4Olx0XHRjYXNlIDE6XG4gMTQ5Olx0XHRcdGlmIChub21lbSkge1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE5LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMiAxNDo1MzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxNjMzNQoJCQkJCQkJb3V0cHV0OiA0MwoJCQkJCQkJdGhvdWdodHM6IDEzNAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgQ29uZGl0aW9uYWwgQ29tcGlsYXRpb24gaW4gS2VybmVsIENvZGUqKgoKT2theSwgbGV0JiMzOTtzIHNlZSwgc3RhcnRpbmcgd2l0aCBsaW5lIDg4LiBJIHNlZSBhIGAjaWZkZWYgQ09ORklHX1NZU0NUTGAgZGlyZWN0aXZlIHRoZXJlLCB3aGljaCBtZWFucyB0aGUgYGRlZmVuc2Vfd29ya19oYW5kbGVyYCBmdW5jdGlvbiB3aWxsIG9ubHkgYmUgY29tcGlsZWQgaWYgdGhlIGBDT05GSUdfU1lTQ1RMYCBvcHRpb24gaXMgZW5hYmxlZCBpbiB0aGUga2VybmVsIGNvbmZpZ3VyYXRpb24uIEkgbmVlZCB0byBrZWVwIHRoYXQgaW4gbWluZC4gTm93LCBJIHNob3VsZCBkb3VibGUgY2hlY2sgdG8gc2VlIGlmIHRoZSBgZXN0X3JlbG9hZF93b3JrX2hhbmRsZXJgIGlzIHNpbWlsYXJseSBjb25kaXRpb25hbC4gTGV0JiMzOTtzIHNlZS4uLiBsb29raW5nIGZ1cnRoZXIgZG93biwgaXQmIzM5O3MgYXQgbGluZSAyNDMsIHdpdGggdGhlIGAjZW5kaWZgIGZvciBgQ09ORklHX1NZU0NUTGAganVzdCBhYm92ZSBhdCBsaW5lIDI0MS4gQWxyaWdodCwgc28gYGVzdF9yZWxvYWRfd29ya19oYW5kbGVyYCBpcyAqYWx3YXlzKiBjb21waWxlZCwgcmVnYXJkbGVzcyBvZiBgQ09ORklHX1NZU0NUTGAuIFRoYXQmIzM5O3MgaW1wb3J0YW50IHRvIHJlbWVtYmVyIGZvciBmdXR1cmUgZGVidWdnaW5nIG9yIGFuYWx5c2lzLiBOb3csIEkgcmVjYWxsIHRoYXQgYGlwX3ZzX2VzdF9yZWxvYWRfc3RhcnRgIGlzIGRlZmluZWQgd2l0aGluIGBpcF92c19lc3QuY2AsIHNvIEkgc2hvdWxkIGdvIGFuZCBjaGVjayB0aGF0IGZpbGUgYXJvdW5kIGxpbmUgMjQzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMiAxNDo1MzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19lc3QuYyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDIwMCwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiA1MAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgMjAwOlx0XHRcdFx0aXBfdnNfZXN0X2RyYWluX3RlbXBfbGlzdChpcHZzKTtcbiAyMDE6XHRcdFx0c2V0X2N1cnJlbnRfc3RhdGUoVEFTS19JRExFKTtcbiAyMDI6XHRcdFx0aWYgKGt0aHJlYWRfc2hvdWxkX3N0b3AoKSlcbiAyMDM6XHRcdFx0XHRicmVhaztcbiAyMDQ6XHRcbiAyMDU6XHRcdFx0LyogYmVmb3JlIGVzdGltYXRpb24sIGNoZWNrIGlmIHdlIHNob3VsZCBzbGVlcCAqL1xuIDIwNjpcdFx0XHRub3cgPSBqaWZmaWVzO1xuIDIwNzpcdFx0XHRnYXAgPSBrZC1cdTAwM2Vlc3RfdGltZXIgLSBub3c7XG4gMjA4Olx0XHRcdGlmIChnYXAgXHUwMDNlIDApIHtcbiAyMDk6XHRcdFx0XHRpZiAoZ2FwIFx1MDAzZSBJUFZTX0VTVF9USUNLKSB7XG4gMjEwOlx0XHRcdFx0XHRrZC1cdTAwM2Vlc3RfdGltZXIgPSBub3cgLSBJUFZTX0VTVF9USUNLO1xuIDIxMTpcdFx0XHRcdFx0Z2FwID0gSVBWU19FU1RfVElDSztcbiAyMTI6XHRcdFx0XHR9XG4gMjEzOlx0XHRcdFx0c2NoZWR1bGVfdGltZW91dChnYXApO1xuIDIxNDpcdFx0XHR9IGVsc2Uge1xuIDIxNTpcdFx0XHRcdF9fc2V0X2N1cnJlbnRfc3RhdGUoVEFTS19SVU5OSU5HKTtcbiAyMTY6XHRcdFx0XHRpZiAoZ2FwIFx1MDAzYyAtOCAqIElQVlNfRVNUX1RJQ0spXG4gMjE3Olx0XHRcdFx0XHRrZC1cdTAwM2Vlc3RfdGltZXIgPSBub3c7XG4gMjE4Olx0XHRcdH1cbiAyMTk6XHRcbiAyMjA6XHRcdFx0aWYgKGtkLVx1MDAzZXRpY2tfbGVuW3Jvd10pXG4gMjIxOlx0XHRcdFx0aXBfdnNfdGlja19lc3RpbWF0aW9uKGtkLCByb3cpO1xuIDIyMjpcdFxuIDIyMzpcdFx0XHRyb3cmIzQzOyYjNDM7O1xuIDIyNDpcdFx0XHRpZiAocm93IFx1MDAzZT0gSVBWU19FU1RfTlRJQ0tTKVxuIDIyNTpcdFx0XHRcdHJvdyA9IDA7XG4gMjI2Olx0XHRcdFdSSVRFX09OQ0Uoa2QtXHUwMDNlZXN0X3Jvdywgcm93KTtcbiAyMjc6XHRcdFx0a2QtXHUwMDNlZXN0X3RpbWVyICYjNDM7PSBJUFZTX0VTVF9USUNLO1xuIDIyODpcdFx0fVxuIDIyOTpcdFx0X19zZXRfY3VycmVudF9zdGF0ZShUQVNLX1JVTk5JTkcpO1xuIDIzMDpcdFxuIDIzMTpcdFx0cmV0dXJuIDA7XG4gMjMyOlx0fVxuIDIzMzpcdFxuIDIzNDpcdC8qIFNjaGVkdWxlIHN0b3Avc3RhcnQgZm9yIGt0aHJlYWQgdGFza3MgKi9cbiAyMzU6XHR2b2lkIGlwX3ZzX2VzdF9yZWxvYWRfc3RhcnQoc3RydWN0IG5ldG5zX2lwdnMgKmlwdnMsIGJvb2wgcmVzdGFydClcbiAyMzY6XHR7XG4gMjM3Olx0XHRsb2NrZGVwX2Fzc2VydF9oZWxkKFx1MDAyNmlwdnMtXHUwMDNlZXN0X211dGV4KTtcbiAyMzg6XHRcbiAyMzk6XHRcdC8qIElnbm9yZSByZWxvYWRzIGJlZm9yZSBmaXJzdCBzZXJ2aWNlIGlzIGFkZGVkICovXG4gMjQwOlx0XHRpZiAoIVJFQURfT05DRShpcHZzLVx1MDAzZWVuYWJsZSkpXG4gMjQxOlx0XHRcdHJldHVybjtcbiAyNDI6XHRcdGlwX3ZzX2VzdF9zdG9wcGVkX3JlY2FsYyhpcHZzKTtcbiAyNDM6XHRcdC8qIEJ1bXAgdGhlIGt0aHJlYWQgY29uZmlndXJhdGlvbiBnZW5pZCBpZiBzdG9wcGluZyBpcyByZXF1ZXN0ZWQgKi9cbiAyNDQ6XHRcdGlmIChyZXN0YXJ0KVxuIDI0NTpcdFx0XHRhdG9taWNfaW5jKFx1MDAyNmlwdnMtXHUwMDNlZXN0X2dlbmlkKTtcbiAyNDY6XHRcdHF1ZXVlX2RlbGF5ZWRfd29yayhzeXN0ZW1fZGZsX2xvbmdfd3EsIFx1MDAyNmlwdnMtXHUwMDNlZXN0X3JlbG9hZF93b3JrLCAwKTtcbiAyNDc6XHR9XG4gMjQ4Olx0XG4gMjQ5Olx0LyogU3RhcnQga3RocmVhZCB0YXNrIHdpdGggY3VycmVudCBjb25maWd1cmF0aW9uICovXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAyIDE0OjUzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE3NDkxCgkJCQkJCQlvdXRwdXQ6IDEyMAoJCQkJCQkJdGhvdWdodHM6IDEwMTQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHlzaXMgb2YgSVBWUyBQYXRjaCBmb3IgRnV6emluZyBTdWl0YWJpbGl0eSoqCgpPa2F5LCBzbyBJJiMzOTt2ZSBnb3QgdGhpcyBwYXRjaCBmb3IgSVBWUyB0byByZXZpZXcuIE15IGltbWVkaWF0ZSBmb2N1cywgYmFzZWQgb24gdGhlIGNvZGUsIGxhbmRzIG9uIHRoZSBmdW5jdGlvbnMgYGRlZmVuc2Vfd29ya19oYW5kbGVyYCwgYGVzdF9yZWxvYWRfd29ya19oYW5kbGVyYCwgYW5kIGBpcF92c19lc3RfcmVsb2FkX3N0YXJ0YC4gVGhlIHJlbGV2YW50IGNvbmZpZyBpcyBvYnZpb3VzbHkgYElQX1ZTYCwgYW5kIEkmIzM5O2xsIGluY2x1ZGUgdGhhdCBhcyBlbmFibGVkLiBBbmQgeWVzLCBgU1lTQ1RMYCBpcyBhbG1vc3QgYWx3YXlzIGVuYWJsZWQuIEkmIzM5O2xsIHN0aWNrIHdpdGggbGlzdGluZyBgSVBfVlNgIGZvciBjbGFyaXR5LgoKTm93LCBsZXQmIzM5O3MgZG91YmxlLWNoZWNrIGFnYWluc3QgdGhlIGNyaXRlcmlhIGZvciAmIzM0O1dvcnRoRnV6emluZz1mYWxzZS4mIzM0OyBUaGUgaW5zdHJ1Y3Rpb25zIGFyZSBjbGVhcjogaWYgdGhlIHBhdGNoIG1vZGlmaWVzIHVucmVhY2hhYmxlIGNvZGUgcGF0aHMgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsIGV2ZW4gd2l0aCBzb2Z0d2FyZSBlbXVsYXRpb24sIHRoZW4gaXQgaXNuJiMzOTt0IHdvcnRoIGZ1enppbmcuIEkgbmVlZCB0byBtYWtlIHN1cmUgdGhpcyBpc24mIzM5O3QgdGhlIGNhc2UuIEFuZCBJUFZTICppcyogcmVhY2hhYmxlLCBzbyB0aGF0JiMzOTtzIGdvb2QuIEFuZCB0aGVzZSBhcmUgZnVuY3Rpb25hbCBjaGFuZ2VzLCBzbyB0aGlzICppcyogd29ydGggZnV6emluZy4KCkxvb2tpbmcgbW9yZSBjbG9zZWx5IGF0IHRoZSBwYXRjaCBpdHNlbGYgKHdoaWNoIGlzIHJlYWxseSBqdXN0IGEgc2ltcGxlIGNoYW5nZSksIGl0IGFwcGVhcnMgdG8gaW52b2x2ZSBjaGFuZ2VzIHRvIHdoZXJlIGRlbGF5ZWQgd29yayBpcyBxdWV1ZWQuIFNwZWNpZmljYWxseSwgaXQmIzM5O3MgbW92aW5nIGZyb20gYHN5c3RlbV9sb25nX3dxYCB0byBgc3lzdGVtX2RmbF9sb25nX3dxYCBpbiB0aHJlZSBwbGFjZXM6IHRoZSBgZGVmZW5zZV93b3JrX2hhbmRsZXJgLCB0aGUgYGVzdF9yZWxvYWRfd29ya19oYW5kbGVyYCwgYW5kIHRoZSBgaXBfdnNfZXN0X3JlbG9hZF9zdGFydGAgZnVuY3Rpb25zLgoKT3JpZ2luYWxseSBJIHdhcyBhbHNvIGdvaW5nIHRvIGluY2x1ZGUgYGlwX3ZzX2NvbnRyb2xfbmV0X2luaXRfc3lzY3RsYCwgYnV0IHRoYXQmIzM5O3MgYW4gaW5pdGlhbGl6YXRpb24gZnVuY3Rpb24uIEl0JiMzOTtzIG5vdCBhIGdvb2QgZnVuY3Rpb24gdG8gZnV6eiwgYmVjYXVzZSBpdCYjMzk7cyBub3QgYSBmdW5jdGlvbiB0aGF0IGdldHMgY2FsbGVkIHJlcGVhdGVkbHksIGl0JiMzOTtzIGp1c3QgY2FsbGVkIGF0IGluaXRpYWxpemF0aW9uLgoKQWxyaWdodCwgd2l0aCB0aGF0IGluIG1pbmQsIEkgYW0gY29uZmlkZW50IHRoYXQgdGhlc2UgY2hhbmdlcyBhcmUgaW5kZWVkIHdvcnRoIGZ1enppbmcuIFRoZXJlZm9yZTogYFdvcnRoRnV6emluZz10cnVlYC4gTXkgYEZvY3VzU3ltYm9sc2Agd2lsbCBiZTogYGRlZmVuc2Vfd29ya19oYW5kbGVyYCwgYGVzdF9yZWxvYWRfd29ya19oYW5kbGVyYCwgYW5kIGBpcF92c19lc3RfcmVsb2FkX3N0YXJ0YC4gYEVuYWJsZUNvbmZpZ3NgIHJlbWFpbnMgYXQ6IGBJUF9WU2AuIEkmIzM5O2xsIGdvIGFoZWFkIGFuZCBzZXQgdGhlc2UgcmVzdWx0cy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDIgMTQ6NTQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0lQX1ZTJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7ZGVmZW5zZV93b3JrX2hhbmRsZXImIzM0OywKICAgICYjMzQ7ZXN0X3JlbG9hZF93b3JrX2hhbmRsZXImIzM0OywKICAgICYjMzQ7aXBfdnNfZXN0X3JlbG9hZF9zdGFydCYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBjaGFuZ2VzIHRoZSB3b3JrcXVldWUgdXNlZCBmb3IgSVBWUyBkZWZlbnNlIGFuZCBlc3RpbWF0aW9uIHJlbG9hZCB3b3JrIGZyb20gc3lzdGVtX2xvbmdfd3EgdG8gc3lzdGVtX2RmbF9sb25nX3dxLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIGNvcmUgSVBWUyBsb2dpYyB0aGF0IGFsdGVycyBleGVjdXRpb24gZmxvdywgc28gaXQgc2hvdWxkIGJlIGZ1enplZC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7SVBfVlMmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtkZWZlbnNlX3dvcmtfaGFuZGxlciYjMzQ7LAogICAgJiMzNDtlc3RfcmVsb2FkX3dvcmtfaGFuZGxlciYjMzQ7LAogICAgJiMzNDtpcF92c19lc3RfcmVsb2FkX3N0YXJ0JiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGNoYW5nZXMgdGhlIHdvcmtxdWV1ZSB1c2VkIGZvciBJUFZTIGRlZmVuc2UgYW5kIGVzdGltYXRpb24gcmVsb2FkIHdvcmsgZnJvbSBzeXN0ZW1fbG9uZ193cSB0byBzeXN0ZW1fZGZsX2xvbmdfd3EuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgY29yZSBJUFZTIGxvZ2ljIHRoYXQgYWx0ZXJzIGV4ZWN1dGlvbiBmbG93LCBzbyBpdCBzaG91bGQgYmUgZnV6emVkLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgoKCTxkaXYgaWQ9ImxsbV9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+TExNIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgVG9rZW5zPC90aD4KCQkJCQk8dGg+QXZnIFRva2VuczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJsbG1fc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJ0b29sX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5Ub29sIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9InRvb2xfc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJkdXJhdGlvbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+Cgk8ZGl2IGlkPSJ0b2tlbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+CgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9qc2FwaSI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDctMDJUMTQ6NTM6MDQuOTIyMDA1NDIxWiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NjY0NDk5MjU1MjEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiSVBfVlNcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJkZWZlbnNlX3dvcmtfaGFuZGxlclwiLFxuICAgIFwiZXN0X3JlbG9hZF93b3JrX2hhbmRsZXJcIixcbiAgICBcImlwX3ZzX2VzdF9yZWxvYWRfc3RhcnRcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBjaGFuZ2VzIHRoZSB3b3JrcXVldWUgdXNlZCBmb3IgSVBWUyBkZWZlbnNlIGFuZCBlc3RpbWF0aW9uIHJlbG9hZCB3b3JrIGZyb20gc3lzdGVtX2xvbmdfd3EgdG8gc3lzdGVtX2RmbF9sb25nX3dxLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIGNvcmUgSVBWUyBsb2dpYyB0aGF0IGFsdGVycyBleGVjdXRpb24gZmxvdywgc28gaXQgc2hvdWxkIGJlIGZ1enplZC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDJUMTQ6NTM6MDQuOTIyMDEyODExWiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1MTE3NjY4NDEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCBmMjAwOGU3MDczY2U3ZmVjOGUzN2U2ZDczYjIxNzUyMDM2OGU2NDdkXFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBUaHUgSnVsIDIgMTQ6NTM6MDMgMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2N0bC5jIGIvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2N0bC5jXFxuaW5kZXggYmNmNDBiOGM0MWNmMjYuLmQ3ZTY2OWVmYWI0ZGRjIDEwMDY0NFxcbi0tLSBhL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jdGwuY1xcbisrKyBiL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jdGwuY1xcbkBAIC0yMzUsNyArMjM1LDcgQEAgc3RhdGljIHZvaWQgZGVmZW5zZV93b3JrX2hhbmRsZXIoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxcbiBcXHR1cGRhdGVfZGVmZW5zZV9sZXZlbChpcHZzKTtcXG4gXFx0aWYgKGF0b21pY19yZWFkKFxcdTAwMjZpcHZzLVxcdTAwM2Vkcm9wZW50cnkpKVxcbiBcXHRcXHRpcF92c19yYW5kb21fZHJvcGVudHJ5KGlwdnMpO1xcbi1cXHRxdWV1ZV9kZWxheWVkX3dvcmsoc3lzdGVtX2xvbmdfd3EsIFxcdTAwMjZpcHZzLVxcdTAwM2VkZWZlbnNlX3dvcmssXFxuK1xcdHF1ZXVlX2RlbGF5ZWRfd29yayhzeXN0ZW1fZGZsX2xvbmdfd3EsIFxcdTAwMjZpcHZzLVxcdTAwM2VkZWZlbnNlX3dvcmssXFxuIFxcdFxcdFxcdCAgIERFRkVOU0VfVElNRVJfUEVSSU9EKTtcXG4gfVxcbiAjZW5kaWZcXG5AQCAtMjkwLDcgKzI5MCw3IEBAIHN0YXRpYyB2b2lkIGVzdF9yZWxvYWRfd29ya19oYW5kbGVyKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaylcXG4gXFx0YXRvbWljX3NldChcXHUwMDI2aXB2cy1cXHUwMDNlZXN0X2dlbmlkX2RvbmUsIGdlbmlkKTtcXG4gXFxuIFxcdGlmIChyZXBlYXQpXFxuLVxcdFxcdHF1ZXVlX2RlbGF5ZWRfd29yayhzeXN0ZW1fbG9uZ193cSwgXFx1MDAyNmlwdnMtXFx1MDAzZWVzdF9yZWxvYWRfd29yayxcXG4rXFx0XFx0cXVldWVfZGVsYXllZF93b3JrKHN5c3RlbV9kZmxfbG9uZ193cSwgXFx1MDAyNmlwdnMtXFx1MDAzZWVzdF9yZWxvYWRfd29yayxcXG4gXFx0XFx0XFx0XFx0ICAgZGVsYXkpO1xcbiBcXG4gdW5sb2NrOlxcbkBAIC01MTI2LDcgKzUxMjYsNyBAQCBzdGF0aWMgaW50IF9fbmV0X2luaXQgaXBfdnNfY29udHJvbF9uZXRfaW5pdF9zeXNjdGwoc3RydWN0IG5ldG5zX2lwdnMgKmlwdnMpXFxuIFxcdFxcdGdvdG8gZXJyO1xcbiBcXG4gXFx0LyogU2NoZWR1bGUgZGVmZW5zZSB3b3JrICovXFxuLVxcdHF1ZXVlX2RlbGF5ZWRfd29yayhzeXN0ZW1fbG9uZ193cSwgXFx1MDAyNmlwdnMtXFx1MDAzZWRlZmVuc2Vfd29yayxcXG4rXFx0cXVldWVfZGVsYXllZF93b3JrKHN5c3RlbV9kZmxfbG9uZ193cSwgXFx1MDAyNmlwdnMtXFx1MDAzZWRlZmVuc2Vfd29yayxcXG4gXFx0XFx0XFx0ICAgREVGRU5TRV9USU1FUl9QRVJJT0QpO1xcbiBcXG4gXFx0cmV0dXJuIDA7XFxuZGlmZiAtLWdpdCBhL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19lc3QuYyBiL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19lc3QuY1xcbmluZGV4IGFiMDlmNTE4Mjk1MTIyLi43ODk2NGFhODYxZTljMSAxMDA2NDRcXG4tLS0gYS9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfZXN0LmNcXG4rKysgYi9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfZXN0LmNcXG5AQCAtMjQzLDcgKzI0Myw3IEBAIHZvaWQgaXBfdnNfZXN0X3JlbG9hZF9zdGFydChzdHJ1Y3QgbmV0bnNfaXB2cyAqaXB2cywgYm9vbCByZXN0YXJ0KVxcbiBcXHQvKiBCdW1wIHRoZSBrdGhyZWFkIGNvbmZpZ3VyYXRpb24gZ2VuaWQgaWYgc3RvcHBpbmcgaXMgcmVxdWVzdGVkICovXFxuIFxcdGlmIChyZXN0YXJ0KVxcbiBcXHRcXHRhdG9taWNfaW5jKFxcdTAwMjZpcHZzLVxcdTAwM2Vlc3RfZ2VuaWQpO1xcbi1cXHRxdWV1ZV9kZWxheWVkX3dvcmsoc3lzdGVtX2xvbmdfd3EsIFxcdTAwMjZpcHZzLVxcdTAwM2Vlc3RfcmVsb2FkX3dvcmssIDApO1xcbitcXHRxdWV1ZV9kZWxheWVkX3dvcmsoc3lzdGVtX2RmbF9sb25nX3dxLCBcXHUwMDI2aXB2cy1cXHUwMDNlZXN0X3JlbG9hZF93b3JrLCAwKTtcXG4gfVxcbiBcXG4gLyogU3RhcnQga3RocmVhZCB0YXNrIHdpdGggY3VycmVudCBjb25maWd1cmF0aW9uICovXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAyVDE0OjUzOjA1LjQzNDMyMDQ5MloiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NjU5Mzc1OTc2NDAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiSVBfVlNcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJkZWZlbnNlX3dvcmtfaGFuZGxlclwiLFxuICAgIFwiZXN0X3JlbG9hZF93b3JrX2hhbmRsZXJcIixcbiAgICBcImlwX3ZzX2VzdF9yZWxvYWRfc3RhcnRcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBjaGFuZ2VzIHRoZSB3b3JrcXVldWUgdXNlZCBmb3IgSVBWUyBkZWZlbnNlIGFuZCBlc3RpbWF0aW9uIHJlbG9hZCB3b3JrIGZyb20gc3lzdGVtX2xvbmdfd3EgdG8gc3lzdGVtX2RmbF9sb25nX3dxLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIGNvcmUgSVBWUyBsb2dpYyB0aGF0IGFsdGVycyBleGVjdXRpb24gZmxvdywgc28gaXQgc2hvdWxkIGJlIGZ1enplZC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4yLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS5cbiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbiAgIERvIG5vdCBsaXN0IHRvbyBnZW5lcmljIGNvbmZpZ3MgKHdlIGFscmVhZHkgaGF2ZSB0aGVtIGVuYWJsZWQpLiBPbmx5IGxpc3QgdGhvc2UgdGhhdFxuICAgc3BlY2lmaWNhbGx5IGNvdmVyIHRoZSBtb2RpZmllZCBjb2RlLiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3Mgb3V0cHV0IGFycmF5LFxuICAgYW5kIERPIE5PVCBhZGQgYSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCBmMjAwOGU3MDczY2U3ZmVjOGUzN2U2ZDczYjIxNzUyMDM2OGU2NDdkXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFRodSBKdWwgMiAxNDo1MzowMyAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jdGwuYyBiL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jdGwuY1xuaW5kZXggYmNmNDBiOGM0MWNmMjYuLmQ3ZTY2OWVmYWI0ZGRjIDEwMDY0NFxuLS0tIGEvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2N0bC5jXG4rKysgYi9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY3RsLmNcbkBAIC0yMzUsNyArMjM1LDcgQEAgc3RhdGljIHZvaWQgZGVmZW5zZV93b3JrX2hhbmRsZXIoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxuIFx0dXBkYXRlX2RlZmVuc2VfbGV2ZWwoaXB2cyk7XG4gXHRpZiAoYXRvbWljX3JlYWQoXHUwMDI2aXB2cy1cdTAwM2Vkcm9wZW50cnkpKVxuIFx0XHRpcF92c19yYW5kb21fZHJvcGVudHJ5KGlwdnMpO1xuLVx0cXVldWVfZGVsYXllZF93b3JrKHN5c3RlbV9sb25nX3dxLCBcdTAwMjZpcHZzLVx1MDAzZWRlZmVuc2Vfd29yayxcbitcdHF1ZXVlX2RlbGF5ZWRfd29yayhzeXN0ZW1fZGZsX2xvbmdfd3EsIFx1MDAyNmlwdnMtXHUwMDNlZGVmZW5zZV93b3JrLFxuIFx0XHRcdCAgIERFRkVOU0VfVElNRVJfUEVSSU9EKTtcbiB9XG4gI2VuZGlmXG5AQCAtMjkwLDcgKzI5MCw3IEBAIHN0YXRpYyB2b2lkIGVzdF9yZWxvYWRfd29ya19oYW5kbGVyKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaylcbiBcdGF0b21pY19zZXQoXHUwMDI2aXB2cy1cdTAwM2Vlc3RfZ2VuaWRfZG9uZSwgZ2VuaWQpO1xuIFxuIFx0aWYgKHJlcGVhdClcbi1cdFx0cXVldWVfZGVsYXllZF93b3JrKHN5c3RlbV9sb25nX3dxLCBcdTAwMjZpcHZzLVx1MDAzZWVzdF9yZWxvYWRfd29yayxcbitcdFx0cXVldWVfZGVsYXllZF93b3JrKHN5c3RlbV9kZmxfbG9uZ193cSwgXHUwMDI2aXB2cy1cdTAwM2Vlc3RfcmVsb2FkX3dvcmssXG4gXHRcdFx0XHQgICBkZWxheSk7XG4gXG4gdW5sb2NrOlxuQEAgLTUxMjYsNyArNTEyNiw3IEBAIHN0YXRpYyBpbnQgX19uZXRfaW5pdCBpcF92c19jb250cm9sX25ldF9pbml0X3N5c2N0bChzdHJ1Y3QgbmV0bnNfaXB2cyAqaXB2cylcbiBcdFx0Z290byBlcnI7XG4gXG4gXHQvKiBTY2hlZHVsZSBkZWZlbnNlIHdvcmsgKi9cbi1cdHF1ZXVlX2RlbGF5ZWRfd29yayhzeXN0ZW1fbG9uZ193cSwgXHUwMDI2aXB2cy1cdTAwM2VkZWZlbnNlX3dvcmssXG4rXHRxdWV1ZV9kZWxheWVkX3dvcmsoc3lzdGVtX2RmbF9sb25nX3dxLCBcdTAwMjZpcHZzLVx1MDAzZWRlZmVuc2Vfd29yayxcbiBcdFx0XHQgICBERUZFTlNFX1RJTUVSX1BFUklPRCk7XG4gXG4gXHRyZXR1cm4gMDtcbmRpZmYgLS1naXQgYS9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfZXN0LmMgYi9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfZXN0LmNcbmluZGV4IGFiMDlmNTE4Mjk1MTIyLi43ODk2NGFhODYxZTljMSAxMDA2NDRcbi0tLSBhL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19lc3QuY1xuKysrIGIvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2VzdC5jXG5AQCAtMjQzLDcgKzI0Myw3IEBAIHZvaWQgaXBfdnNfZXN0X3JlbG9hZF9zdGFydChzdHJ1Y3QgbmV0bnNfaXB2cyAqaXB2cywgYm9vbCByZXN0YXJ0KVxuIFx0LyogQnVtcCB0aGUga3RocmVhZCBjb25maWd1cmF0aW9uIGdlbmlkIGlmIHN0b3BwaW5nIGlzIHJlcXVlc3RlZCAqL1xuIFx0aWYgKHJlc3RhcnQpXG4gXHRcdGF0b21pY19pbmMoXHUwMDI2aXB2cy1cdTAwM2Vlc3RfZ2VuaWQpO1xuLVx0cXVldWVfZGVsYXllZF93b3JrKHN5c3RlbV9sb25nX3dxLCBcdTAwMjZpcHZzLVx1MDAzZWVzdF9yZWxvYWRfd29yaywgMCk7XG4rXHRxdWV1ZV9kZWxheWVkX3dvcmsoc3lzdGVtX2RmbF9sb25nX3dxLCBcdTAwMjZpcHZzLVx1MDAzZWVzdF9yZWxvYWRfd29yaywgMCk7XG4gfVxuIFxuIC8qIFN0YXJ0IGt0aHJlYWQgdGFzayB3aXRoIGN1cnJlbnQgY29uZmlndXJhdGlvbiAqL1xuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDJUMTQ6NTM6MDUuNDM0MzIxNDcyWiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTU0MTIyMTc2NSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipGdXp6aW5nIHRoZSBJUFZTIFdvcmtxdWV1ZSBDaGFuZ2UqKlxuXG5Pa2F5LCBzbyB3ZSd2ZSBnb3QgdGhpcyBwYXRjaCwgcmlnaHQ/IEl0J3MgYSBzdHJhaWdodC11cCBmdW5jdGlvbmFsIGNoYW5nZSwganVzdCBzd2FwcGluZyBvdXQgYHN5c3RlbV9sb25nX3dxYCBmb3IgYHN5c3RlbV9kZmxfbG9uZ193cWAgaW4gYSBjb3VwbGUgb2YgSVBWUyBmaWxlcyDigJMgYGlwX3ZzX2N0bC5jYCBhbmQgYGlwX3ZzX2VzdC5jYC4gTXkgZmlyc3QgdGhvdWdodCBpcywgZG9lcyB0aGlzIGV2ZW4gd2FycmFudCBmdXp6aW5nPyBJdCAqaXMqIGp1c3QgY2hhbmdpbmcgdGhlIHdvcmtxdWV1ZSB1c2VkIGZvciBkZWxheWVkIHdvcmsgd2l0aGluIHRoZSBJUCBWaXJ0dWFsIFNlcnZlciBzdWJzeXN0ZW0uXG5cbkhtbSwgbGV0J3MgYnJlYWsgdGhpcyBkb3duIGZ1cnRoZXIuIEl0J3MgdGhlIGNoYW5nZSBmcm9tIGBzeXN0ZW1fbG9uZ193cWAgdG8gYHN5c3RlbV9kZmxfbG9uZ193cWAuIElzIHRoaXMgYSBzaWduaWZpY2FudCBlbm91Z2ggY2hhbmdlIHRvIHdhcnJhbnQgZnV6emluZz8gV2UncmUgdGFsa2luZyBhYm91dCB0aGUgd29ya3F1ZXVlIGZvciBgZGVmZW5zZV93b3JrYCBhbmQgYGVzdF9yZWxvYWRfd29ya2AgaW4gSVBWUy4gUmlnaHQsIElQIFZpcnR1YWwgU2VydmVyLi4uXG5cbkFscmlnaHQsIGxldCdzIHRha2UgYSBsb29rIGF0IHRoZSByZWxldmFudCBjb25maWd1cmF0aW9ucy4gV2UncmUgZGVhbGluZyB3aXRoIGBDT05GSUdfSVBfVlNgLCBzbyB0aGF0J3MgdGhlIHN0YXJ0aW5nIHBvaW50LiBOb3csIGFyZSB0aGVyZSBhbnkgKnNwZWNpZmljKiBmdW5jdGlvbnMgdGhhdCBzdGFuZCBvdXQgYXMgcG90ZW50aWFsIGZ1enogdGFyZ2V0cyBoZXJlPyBUaGlua2luZyBhYm91dCBpdCwgd2UgaGF2ZTogYGRlZmVuc2Vfd29ya19oYW5kbGVyYCwgYGVzdF9yZWxvYWRfd29ya19oYW5kbGVyYCwgYGlwX3ZzX2NvbnRyb2xfbmV0X2luaXRfc3lzY3RsYCwgYW5kIGBpcF92c19lc3RfcmVsb2FkX3N0YXJ0YC4gU2VlbXMgbGlrZSBoYW5kbGVycyBhbmQgaW5pdGlhbGl6YXRpb24gZnVuY3Rpb25zLCB0cmlnZ2VyZWQgYnkgdGltZXJzIG9yIGluaXRpYWxpemF0aW9uLlxuXG5Qcm9iYWJseSBub3QgdGhlIGJlc3QgY2FuZGlkYXRlcyBmb3IgZGlyZWN0IGZ1enppbmcsIGJlY2F1c2Ugb2YgdGhlIHRyaWdnZXJpbmcgbWVjaGFuaXNtcywgYnV0IGxldCdzIGp1c3Qgc2VlLi4uV2FpdCBhIG1pbnV0ZSwgd2hlbiBpcyBgaXBfdnNfZXN0X3JlbG9hZF9zdGFydGAgY2FsbGVkPyBUaGF0IGJlYXJzIGEgY2xvc2VyIGxvb2suIExldCdzIGRpZyBpbnRvIHRoYXQgZnVuY3Rpb24uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIzODgsIk91dHB1dFRva2VucyI6MjMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyOTIsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wMlQxNDo1MzoxMC45NzU1NDcwMTdaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDk1MzA1OTkyNywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJpcF92c19lc3RfcmVsb2FkX3N0YXJ0XCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImluY2x1ZGUvbmV0L2lwX3ZzLmg9MTkyMT12b2lkIGlwX3ZzX3JlYWRfZXN0aW1hdG9yKHN0cnVjdCBpcF92c19rc3RhdHMgKmRzdCwgc3RydWN0IGlwX3ZzX3N0YXRzICpzdGF0cyk7XFxuaW5jbHVkZS9uZXQvaXBfdnMuaDoxOTIyOnZvaWQgaXBfdnNfZXN0X3JlbG9hZF9zdGFydChzdHJ1Y3QgbmV0bnNfaXB2cyAqaXB2cywgYm9vbCByZXN0YXJ0KTtcXG5pbmNsdWRlL25ldC9pcF92cy5oLTE5MjMtaW50IGlwX3ZzX2VzdF9rdGhyZWFkX3N0YXJ0KHN0cnVjdCBuZXRuc19pcHZzICppcHZzLFxcbi0tXFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2N0bC5jPTE3MDk9aXBfdnNfYWRkX3NlcnZpY2Uoc3RydWN0IG5ldG5zX2lwdnMgKmlwdnMsIHN0cnVjdCBpcF92c19zZXJ2aWNlX3VzZXJfa2VybiAqdSxcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jdGwuYy0xODg1LVxcdFxcdC8qIFN0YXJ0IGVzdGltYXRpb24gZm9yIGZpcnN0IHRpbWUgKi9cXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY3RsLmM6MTg4NjpcXHRcXHRpcF92c19lc3RfcmVsb2FkX3N0YXJ0KGlwdnMsIHRydWUpO1xcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jdGwuYy0xODg3LVxcdFxcdG11dGV4X3VubG9jayhcXHUwMDI2aXB2cy1cXHUwMDNlZXN0X211dGV4KTtcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jdGwuYz0yNDQzPXN0YXRpYyBpbnQgaXB2c19wcm9jX2VzdF9jcHVtYXNrX3NldChjb25zdCBzdHJ1Y3QgY3RsX3RhYmxlICp0YWJsZSxcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jdGwuYy0yNDcxLVxcdGlwdnMtXFx1MDAzZWVzdF9jYWxjX3BoYXNlID0gMTtcXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY3RsLmM6MjQ3MjpcXHRpcF92c19lc3RfcmVsb2FkX3N0YXJ0KGlwdnMsIHRydWUpO1xcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jdGwuYy0yNDczLVxcbi0tXFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2N0bC5jPTI1MzM9c3RhdGljIGludCBpcHZzX3Byb2NfZXN0X25pY2UoY29uc3Qgc3RydWN0IGN0bF90YWJsZSAqdGFibGUsIGludCB3cml0ZSxcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jdGwuYy0yNTU0LVxcdFxcdFxcdFxcdCp2YWxwID0gdmFsO1xcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jdGwuYzoyNTU1OlxcdFxcdFxcdFxcdGlwX3ZzX2VzdF9yZWxvYWRfc3RhcnQoaXB2cywgdHJ1ZSk7XFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2N0bC5jLTI1NTYtXFx0XFx0XFx0fVxcbi0tXFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2N0bC5jPTI1NjM9c3RhdGljIGludCBpcHZzX3Byb2NfcnVuX2VzdGltYXRpb24oY29uc3Qgc3RydWN0IGN0bF90YWJsZSAqdGFibGUsIGludCB3cml0ZSxcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jdGwuYy0yNTgxLVxcdFxcdFxcdCp2YWxwID0gdmFsO1xcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jdGwuYzoyNTgyOlxcdFxcdFxcdGlwX3ZzX2VzdF9yZWxvYWRfc3RhcnQoaXB2cywgdHJ1ZSk7XFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2N0bC5jLTI1ODMtXFx0XFx0fVxcbi0tXFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2VzdC5jPTE3ND1zdGF0aWMgaW50IGlwX3ZzX2VzdGltYXRpb25fa3RocmVhZCh2b2lkICpkYXRhKVxcbi0tXFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2VzdC5jLTIzNC0vKiBTY2hlZHVsZSBzdG9wL3N0YXJ0IGZvciBrdGhyZWFkIHRhc2tzICovXFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2VzdC5jOjIzNTp2b2lkIGlwX3ZzX2VzdF9yZWxvYWRfc3RhcnQoc3RydWN0IG5ldG5zX2lwdnMgKmlwdnMsIGJvb2wgcmVzdGFydClcXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfZXN0LmMtMjM2LXtcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19lc3QuYz0zMDc9c3RhdGljIGludCBpcF92c19lc3RfYWRkX2t0aHJlYWQoc3RydWN0IG5ldG5zX2lwdnMgKmlwdnMpXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfZXN0LmMtMzU4LVxcdC8qIFJlcXVlc3Qga3RocmVhZCB0byBiZSBzdGFydGVkICovXFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2VzdC5jOjM1OTpcXHRpcF92c19lc3RfcmVsb2FkX3N0YXJ0KGlwdnMsIGZhbHNlKTtcXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfZXN0LmMtMzYwLVxcbi0tXFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2VzdC5jPTQ5Mz1pbnQgaXBfdnNfc3RhcnRfZXN0aW1hdG9yKHN0cnVjdCBuZXRuc19pcHZzICppcHZzLCBzdHJ1Y3QgaXBfdnNfc3RhdHMgKnN0YXRzKVxcbi0tXFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2VzdC5jLTUxMy1cXHRcXHRrZC1cXHUwMDNlbmVlZGVkID0gMTtcXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfZXN0LmM6NTE0OlxcdFxcdGlwX3ZzX2VzdF9yZWxvYWRfc3RhcnQoaXB2cywgdHJ1ZSk7XFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2VzdC5jLTUxNS1cXHRcXHRtdXRleF91bmxvY2soXFx1MDAyNmlwdnMtXFx1MDAzZWVzdF9tdXRleCk7XFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfZXN0LmM9NTM3PXZvaWQgaXBfdnNfc3RvcF9lc3RpbWF0b3Ioc3RydWN0IG5ldG5zX2lwdnMgKmlwdnMsIHN0cnVjdCBpcF92c19zdGF0cyAqc3RhdHMpXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfZXN0LmMtNjAzLVxcdFxcdFxcdGtkLVxcdTAwM2VuZWVkZWQgPSAwO1xcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19lc3QuYzo2MDQ6XFx0XFx0XFx0aXBfdnNfZXN0X3JlbG9hZF9zdGFydChpcHZzLCB0cnVlKTtcXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfZXN0LmMtNjA1LVxcdFxcdFxcdG11dGV4X3VubG9jayhcXHUwMDI2aXB2cy1cXHUwMDNlZXN0X211dGV4KTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDJUMTQ6NTM6MTUuOTI4NjE0MDk0WiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDYwMzU3NDI5MCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgYSBUaW55IEtlcm5lbCBQYXRjaCoqXG5cbk9rYXksIHNvIHRoaXMgcGF0Y2ggaXMgc3dpdGNoaW5nIHRoZSB3b3JrcXVldWUgdXNlZCBieSBJUFZTIGZyb20gYHN5c3RlbV9sb25nX3dxYCB0byBgc3lzdGVtX2RmbF9sb25nX3dxYC4gU2VlbXMgbGlrZSBhIG1pbm9yIGZ1bmN0aW9uYWwgY2hhbmdlLCBidXQgbGV0J3Mgbm90IGRpc21pc3MgaXQgb3V0cmlnaHQuIEV2ZW4gYSBzbWFsbCBtb2RpZmljYXRpb24gdG8gY29yZSBrZXJuZWwgbG9naWMsIGVzcGVjaWFsbHkgd2hlbiBpdCB0b3VjaGVzIGEgc3Vic3lzdGVtIGxpa2UgSVBWUywgd2FycmFudHMgYSBjbG9zZXIgbG9vay5cblxuVGhlIHF1ZXN0aW9uIHRoZW4gYmVjb21lcywgaXMgdGhpcyBjaGFuZ2Ugd29ydGggdGhlIGVmZm9ydCBvZiBmdXp6aW5nPyBBYnNvbHV0ZWx5LCB5ZXMuIEFueSBmdW5jdGlvbmFsIGNoYW5nZSB3aXRoaW4gdGhlIGtlcm5lbCwgaG93ZXZlciBzZWVtaW5nbHkgc21hbGwsIGNhbiBpbnRyb2R1Y2UgdW5leHBlY3RlZCBiZWhhdmlvcnMgb3IgdnVsbmVyYWJpbGl0aWVzLlxuXG5BbHJpZ2h0LCBgc3lzdGVtX2RmbF9sb25nX3dxYCBpcyBhIHdvcmtxdWV1ZS4gTm93LCBhcmUgdGhlcmUgYW55IHNwZWNpZmljIGZ1bmN0aW9ucyB0aGlzIHBhdGNoIGFmZmVjdHMgd2l0aGluIElQVlMgdGhhdCBJIHNob3VsZCBwcmlvcml0aXplIGZvciBhbmFseXNpcz8gTGV0J3Mgc2VlLi4uIGxvb2tpbmcgYXQgdGhlIGNvZGUsIGl0IGxvb2tzIGxpa2UgYGRlZmVuc2Vfd29ya19oYW5kbGVyYCwgYGVzdF9yZWxvYWRfd29ya19oYW5kbGVyYCwgYW5kIHRoZSBhc3NvY2lhdGVkIGBpcF92c19lc3RfcmVsb2FkX3N0YXJ0YCBmdW5jdGlvbiBhcmUgdGhlIGtleSBhcmVhcy4gVGhlc2UgZnVuY3Rpb25zIGFyZSBhbGwgY2VudGVyZWQgYXJvdW5kIElQVlMncyBlc3RpbWF0aW9uIGFuZCBkZWZlbnNlIG1lY2hhbmlzbXMuIFRoYXQgZGVmaW5pdGVseSB3YXJyYW50cyBhIGNsb3NlciBsb29rLiBUaW1lIHRvIGRvdWJsZS1jaGVjayB0aGUgcmVsZXZhbnQga2VybmVsIGNvbmZpZ3VyYXRpb25zIHRvIGdldCBhIGJldHRlciBzZW5zZSBvZiBob3cgSVBWUyBpcyBjb25maWd1cmVkIGluIHRoZSBlbnZpcm9ubWVudCB0aGlzIHdpbGwgYmUgYXBwbGllZCB0by5cblxuXG4iLCJJbnB1dFRva2VucyI6NDM2MiwiT3V0cHV0VG9rZW5zIjoxOCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE0NCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0wMlQxNDo1MzoyMC41MzIxOTA1NzRaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6Mjc1NTQ0NTk0OCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgSVBfVlNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L25ldGZpbHRlci9pcHZzL0tjb25maWctNC0jXFxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWc6NTptZW51Y29uZmlnIElQX1ZTXFxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWctNi1cXHR0cmlzdGF0ZSBcXFwiSVAgdmlydHVhbCBzZXJ2ZXIgc3VwcG9ydFxcXCJcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnPTI4Nj1jb21tZW50ICdJUFZTIFNIIHNjaGVkdWxlcidcXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZy0yODctXFxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWc6Mjg4OmNvbmZpZyBJUF9WU19TSF9UQUJfQklUU1xcbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnLTI4OS1cXHRpbnQgXFxcIklQVlMgc291cmNlIGhhc2hpbmcgdGFibGUgc2l6ZSAodGhlIE50aCBwb3dlciBvZiAyKVxcXCJcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnPTMwMT1jb21tZW50ICdJUFZTIE1IIHNjaGVkdWxlcidcXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZy0zMDItXFxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWc6MzAzOmNvbmZpZyBJUF9WU19NSF9UQUJfSU5ERVhcXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZy0zMDQtXFx0aW50IFxcXCJJUFZTIG1hZ2xldiBoYXNoaW5nIHRhYmxlIGluZGV4IG9mIHNpemUgKHRoZSBwcmltZSBudW1iZXJzKVxcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDJUMTQ6NTM6MjMuMjg3NjQ1MDEyWiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzA3ODg1OTEyNiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBhbiBleHBlcnQncyBpbnRlcm5hbCBtb25vbG9ndWU6XG5cbioqSW52ZXN0aWdhdGluZyB0aGUgTG9hZCBCYWxhbmNpbmcgQ29uZmlndXJhdGlvbioqXG5cbkFscmlnaHQsIHRoZSBzeXN0ZW0ncyBjdXJyZW50IGNvbmZpZ3VyYXRpb24gaXMgZGVmaW5pdGVseSBzZXQgdG8gYElQX1ZTYC4gVGhhdCdzIHRoZSBiYXNlbGluZSwgdGhlIGZvdW5kYXRpb24uIE5vdywgZ2l2ZW4gdGhhdCBjb250ZXh0LCB0aGUgZmlyc3QgcGxhY2VzIG15IG1pbmQgbmF0dXJhbGx5IGdyYXZpdGF0ZXMgdG93YXJkIGFyZSB0aGUgYGRlZmVuc2Vfd29ya19oYW5kbGVyYCBhbmQgYGVzdF9yZWxvYWRfd29ya19oYW5kbGVyYCBtb2R1bGVzLiBXaXRoIElQIFZpcnR1YWwgU2VydmVyIChJUFZTKSBhY3RpdmUsIHRoZXNlIGhhbmRsZXJzIGFyZSBnb2luZyB0byBiZSBjcml0aWNhbCBmb3IgdW5kZXJzdGFuZGluZyBob3cgd2UncmUgZGVhbGluZyB3aXRoIGJvdGggdHJhZmZpYyBjb250cm9sIGFuZCBhbnkgcG90ZW50aWFsIHJlbG9hZHMuIEtub3dpbmcgaG93IHRoZXkgb3BlcmF0ZSBpcyBjcnVjaWFsIGZvciB0aGlzIHR5cGUgb2YgY29uZmlnLiBXaGF0IGFyZSB0aGV5ICphY3R1YWxseSogZG9pbmcgaW4gdGhpcyBzcGVjaWZpYyBjb250ZXh0PyBXaGF0IGtpbmQgb2YgcHJvY2Vzc2luZyBhcmUgdGhleSByZXNwb25zaWJsZSBmb3IsIGdpdmVuIHRoYXQgd2UgYXJlIHJ1bm5pbmcgSVBWUz8gTGV0J3MgZGl2ZSBkZWVwZXIgaW50byB0aG9zZS4uLlxuXG5cbiIsIklucHV0VG9rZW5zIjo1MDUyLCJPdXRwdXRUb2tlbnMiOjE5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjksIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMDJUMTQ6NTM6MjYuMzY2NTI2NTk4WiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI3MDgyODI3OTAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiZGVmZW5zZV93b3JrX2hhbmRsZXJcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2N0bC5jPTIxNj1zdGF0aWMgdm9pZCBleHBpcmVfbm9kZXN0X2Nvbm5faGFuZGxlcihzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY3RsLmMtMjI5LVxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jdGwuYzoyMzA6c3RhdGljIHZvaWQgZGVmZW5zZV93b3JrX2hhbmRsZXIoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jdGwuYy0yMzEte1xcbi0tXFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2N0bC5jPTQ5OTU9c3RhdGljIGludCBfX25ldF9pbml0IGlwX3ZzX2NvbnRyb2xfbmV0X2luaXRfc3lzY3RsKHN0cnVjdCBuZXRuc19pcHZzICppcHZzKVxcbi0tXFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2N0bC5jLTUwMDYtXFx0c3Bpbl9sb2NrX2luaXQoXFx1MDAyNmlwdnMtXFx1MDAzZXNlY3VyZXRjcF9sb2NrKTtcXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY3RsLmM6NTAwNzpcXHRJTklUX0RFTEFZRURfV09SSyhcXHUwMDI2aXB2cy1cXHUwMDNlZGVmZW5zZV93b3JrLCBkZWZlbnNlX3dvcmtfaGFuZGxlcik7XFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2N0bC5jLTUwMDgtXFx0SU5JVF9ERUxBWUVEX1dPUksoXFx1MDAyNmlwdnMtXFx1MDAzZWV4cGlyZV9ub2Rlc3RfY29ubl93b3JrLFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wMlQxNDo1MzoyOS4wNzQ4MjIzMjhaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNTk1NjkxMTQ3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFzc2Vzc2luZyB0aGUgRnV6emluZyBWYWx1ZSBvZiBhIFdvcmtxdWV1ZSBQYXRjaCoqXG5cbk9rYXksIHNvIHRoaXMgcGF0Y2ggaXMgdG91Y2hpbmcgdGhlIHdvcmtxdWV1ZSwgc3BlY2lmaWNhbGx5IHN3YXBwaW5nIGBzeXN0ZW1fbG9uZ193cWAgZm9yIGBzeXN0ZW1fZGZsX2xvbmdfd3FgLiBNeSBpbml0aWFsIGluc3RpbmN0IGlzIHRvIHF1ZXN0aW9uIHdoZXRoZXIgZnV6emluZyB0aGlzIGlzIGFjdHVhbGx5IHdvcnRoIHRoZSBlZmZvcnQuIEl0ICppcyogYSBzaW1wbGUgY2hhbmdlLCBmdW5jdGlvbmFsbHkgc3BlYWtpbmcsIGp1c3QgYSB3b3JrcXVldWUgc3Vic3RpdHV0aW9uLiBDaGFuY2VzIGFyZSwgZnV6emluZyB0aGlzIHNwZWNpZmljIGNoYW5nZSBtaWdodCBub3QgdW5jb3ZlciBhbnl0aGluZyB0cnVseSBub3ZlbCwgYW5kIGl04oCZcyBsaWtlbHkgdG8gYmUgc29tZXRoaW5nIHRoYXQgaGFzIGJlZW4gaW1wbGljaXRseSBmdXp6ZWQgYmVmb3JlLiBIb3dldmVyLCB0aGUgY2hhbmdlICppcyogZnVuY3Rpb25hbC4gXG5cbldhaXQgYSBtaW51dGUsIGlzIGBzeXN0ZW1fZGZsX2xvbmdfd3FgIGEgbmV3IHdvcmtxdWV1ZSBvciBhbiBleGlzdGluZyBvbmU/IEkgbmVlZCB0byBjbGFyaWZ5IHRoYXQgYmVmb3JlIEkgbWFrZSBhIGZpbmFsIGRlY2lzaW9uIG9uIHRoZSBmdXp6aW5nIHN0cmF0ZWd5LiBPa2F5LCBsZXQncyBnbyBjaGVjayB3aGF0J3MgZ29pbmcgb24gd2l0aCBgc3lzdGVtX2RmbF9sb25nX3dxYC4gSSdsbCBkaWcgaW50byBpdHMgZGVmaW5pdGlvbiBhbmQgdXNhZ2UuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjU1ODQsIk91dHB1dFRva2VucyI6MjIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMTYsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMDJUMTQ6NTM6MzIuNjcwNTE2ODc0WiIsIlNlcSI6MTAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyNjA4MjQ3NzczLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInN5c3RlbV9kZmxfbG9uZ193cVwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL2F0YS9saWJhdGEtZWguYz03MjE9dm9pZCBhdGFfc2NzaV9wb3J0X2Vycm9yX2hhbmRsZXIoc3RydWN0IFNjc2lfSG9zdCAqaG9zdCwgc3RydWN0IGF0YV9wb3J0ICphcClcXG4tLVxcbmRyaXZlcnMvYXRhL2xpYmF0YS1laC5jLTgyMy1cXHRcXHQhKGFwLVxcdTAwM2VmbGFncyBcXHUwMDI2IEFUQV9GTEFHX1NBU19IT1NUKSlcXG5kcml2ZXJzL2F0YS9saWJhdGEtZWguYzo4MjQ6XFx0XFx0cXVldWVfZGVsYXllZF93b3JrKHN5c3RlbV9kZmxfbG9uZ193cSwgXFx1MDAyNmFwLVxcdTAwM2Vob3RwbHVnX3Rhc2ssIDApO1xcbmRyaXZlcnMvYXRhL2xpYmF0YS1laC5jLTgyNS1cXG4tLVxcbmRyaXZlcnMvYXRhL2xpYmF0YS1zY3NpLmM9NDcwND12b2lkIGF0YV9zY3NpX3NjYW5faG9zdChzdHJ1Y3QgYXRhX3BvcnQgKmFwLCBpbnQgc3luYylcXG4tLVxcbmRyaXZlcnMvYXRhL2xpYmF0YS1zY3NpLmMtNDc3My1cXG5kcml2ZXJzL2F0YS9saWJhdGEtc2NzaS5jOjQ3NzQ6XFx0cXVldWVfZGVsYXllZF93b3JrKHN5c3RlbV9kZmxfbG9uZ193cSwgXFx1MDAyNmFwLVxcdTAwM2Vob3RwbHVnX3Rhc2ssXFxuZHJpdmVycy9hdGEvbGliYXRhLXNjc2kuYy00Nzc1LVxcdFxcdFxcdCAgIHJvdW5kX2ppZmZpZXNfcmVsYXRpdmUoSFopKTtcXG4tLVxcbmRyaXZlcnMvaTJjL2kyYy1zbGF2ZS10ZXN0dW5pdC5jPTgyPXN0YXRpYyBpbnQgaTJjX3NsYXZlX3Rlc3R1bml0X3NsYXZlX2NiKHN0cnVjdCBpMmNfY2xpZW50ICpjbGllbnQsXFxuLS1cXG5kcml2ZXJzL2kyYy9pMmMtc2xhdmUtdGVzdHVuaXQuYy0xMjYtXFx0XFx0XFx0c2V0X2JpdChUVV9GTEFHX0lOX1BST0NFU1MsIFxcdTAwMjZ0dS1cXHUwMDNlZmxhZ3MpO1xcbmRyaXZlcnMvaTJjL2kyYy1zbGF2ZS10ZXN0dW5pdC5jOjEyNzpcXHRcXHRcXHRxdWV1ZV9kZWxheWVkX3dvcmsoc3lzdGVtX2RmbF9sb25nX3dxLCBcXHUwMDI2dHUtXFx1MDAzZXdvcmtlcixcXG5kcml2ZXJzL2kyYy9pMmMtc2xhdmUtdGVzdHVuaXQuYy0xMjgtXFx0XFx0XFx0XFx0XFx0ICAgbXNlY3NfdG9famlmZmllcygxMCAqIHR1LVxcdTAwM2VyZWdzW1RVX1JFR19ERUxBWV0pKTtcXG4tLVxcbmRyaXZlcnMvcGh5L3RpL3BoeS10dXNiMTIxMC5jPTE5MT1zdGF0aWMgdm9pZCB0dXNiMTIxMF9jaGdfZGV0X3NldF9zdGF0ZShzdHJ1Y3QgdHVzYjEyMTAgKnR1c2IsXFxuLS1cXG5kcml2ZXJzL3BoeS90aS9waHktdHVzYjEyMTAuYy0xOTktXFx0dHVzYi1cXHUwMDNlY2hnX2RldF9zdGF0ZSA9IG5ld19zdGF0ZTtcXG5kcml2ZXJzL3BoeS90aS9waHktdHVzYjEyMTAuYzoyMDA6XFx0bW9kX2RlbGF5ZWRfd29yayhzeXN0ZW1fZGZsX2xvbmdfd3EsIFxcdTAwMjZ0dXNiLVxcdTAwM2VjaGdfZGV0X3dvcmssXFxuZHJpdmVycy9waHkvdGkvcGh5LXR1c2IxMjEwLmMtMjAxLVxcdFxcdFxcdCBtc2Vjc190b19qaWZmaWVzKGRlbGF5X21zKSk7XFxuLS1cXG5kcml2ZXJzL3BoeS90aS9waHktdHVzYjEyMTAuYz0zNzY9c3RhdGljIGludCB0dXNiMTIxMF9wc3lfbm90aWZpZXIoc3RydWN0IG5vdGlmaWVyX2Jsb2NrICpuYixcXG4tLVxcbmRyaXZlcnMvcGh5L3RpL3BoeS10dXNiMTIxMC5jLTM4Mi1cXHRpZiAocHN5ICE9IHR1c2ItXFx1MDAzZXBzeSBcXHUwMDI2XFx1MDAyNiBwc3ktXFx1MDAzZWRlc2MtXFx1MDAzZXR5cGUgPT0gUE9XRVJfU1VQUExZX1RZUEVfVVNCKVxcbmRyaXZlcnMvcGh5L3RpL3BoeS10dXNiMTIxMC5jOjM4MzpcXHRcXHRxdWV1ZV9kZWxheWVkX3dvcmsoc3lzdGVtX2RmbF9sb25nX3dxLCBcXHUwMDI2dHVzYi1cXHUwMDNlY2hnX2RldF93b3JrLCAwKTtcXG5kcml2ZXJzL3BoeS90aS9waHktdHVzYjEyMTAuYy0zODQtXFxuLS1cXG5kcml2ZXJzL3BoeS90aS9waHktdHVzYjEyMTAuYz00MzI9c3RhdGljIHZvaWQgdHVzYjEyMTBfcHJvYmVfY2hhcmdlcl9kZXRlY3Qoc3RydWN0IHR1c2IxMjEwICp0dXNiKVxcbi0tXFxuZHJpdmVycy9waHkvdGkvcGh5LXR1c2IxMjEwLmMtNDYwLVxcdElOSVRfREVMQVlFRF9XT1JLKFxcdTAwMjZ0dXNiLVxcdTAwM2VjaGdfZGV0X3dvcmssIHR1c2IxMjEwX2NoZ19kZXRfd29yayk7XFxuZHJpdmVycy9waHkvdGkvcGh5LXR1c2IxMjEwLmM6NDYxOlxcdHF1ZXVlX2RlbGF5ZWRfd29yayhzeXN0ZW1fZGZsX2xvbmdfd3EsIFxcdTAwMjZ0dXNiLVxcdTAwM2VjaGdfZGV0X3dvcmssIDIgKiBIWik7XFxuZHJpdmVycy9waHkvdGkvcGh5LXR1c2IxMjEwLmMtNDYyLVxcbi0tXFxuZHJpdmVycy9zY3NpL3Njc2lfdHJhbnNwb3J0X3NycC5jPTIyMD1zdGF0aWMgc3NpemVfdCBzdG9yZV9yZWNvbm5lY3RfZGVsYXkoc3RydWN0IGRldmljZSAqZGV2LFxcbi0tXFxuZHJpdmVycy9zY3NpL3Njc2lfdHJhbnNwb3J0X3NycC5jLTIzNi1cXHQgICAgcnBvcnQtXFx1MDAzZXN0YXRlICE9IFNSUF9SUE9SVF9SVU5OSU5HKSB7XFxuZHJpdmVycy9zY3NpL3Njc2lfdHJhbnNwb3J0X3NycC5jOjIzNzpcXHRcXHRxdWV1ZV9kZWxheWVkX3dvcmsoc3lzdGVtX2RmbF9sb25nX3dxLCBcXHUwMDI2cnBvcnQtXFx1MDAzZXJlY29ubmVjdF93b3JrLFxcbmRyaXZlcnMvc2NzaS9zY3NpX3RyYW5zcG9ydF9zcnAuYy0yMzgtXFx0XFx0XFx0XFx0ICAgZGVsYXkgKiBIWik7XFxuLS1cXG5kcml2ZXJzL3Njc2kvc2NzaV90cmFuc3BvcnRfc3JwLmM9Mzc4PXN0YXRpYyB2b2lkIHNycF9yZWNvbm5lY3Rfd29yayhzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspXFxuLS1cXG5kcml2ZXJzL3Njc2kvc2NzaV90cmFuc3BvcnRfc3JwLmMtMzkyLVxcdFxcdGlmIChkZWxheSBcXHUwMDNlIDApXFxuZHJpdmVycy9zY3NpL3Njc2lfdHJhbnNwb3J0X3NycC5jOjM5MzpcXHRcXHRcXHRxdWV1ZV9kZWxheWVkX3dvcmsoc3lzdGVtX2RmbF9sb25nX3dxLFxcbmRyaXZlcnMvc2NzaS9zY3NpX3RyYW5zcG9ydF9zcnAuYy0zOTQtXFx0XFx0XFx0XFx0XFx0ICAgXFx1MDAyNnJwb3J0LVxcdTAwM2VyZWNvbm5lY3Rfd29yaywgZGVsYXkgKiBIWik7XFxuLS1cXG5kcml2ZXJzL3Njc2kvc2NzaV90cmFuc3BvcnRfc3JwLmM9NDYxPXN0YXRpYyB2b2lkIF9fc3JwX3N0YXJ0X3RsX2ZhaWxfdGltZXJzKHN0cnVjdCBzcnBfcnBvcnQgKnJwb3J0KVxcbi0tXFxuZHJpdmVycy9zY3NpL3Njc2lfdHJhbnNwb3J0X3NycC5jLTQ3Ni1cXHRpZiAoZGVsYXkgXFx1MDAzZSAwKVxcbmRyaXZlcnMvc2NzaS9zY3NpX3RyYW5zcG9ydF9zcnAuYzo0Nzc6XFx0XFx0cXVldWVfZGVsYXllZF93b3JrKHN5c3RlbV9kZmxfbG9uZ193cSwgXFx1MDAyNnJwb3J0LVxcdTAwM2VyZWNvbm5lY3Rfd29yayxcXG5kcml2ZXJzL3Njc2kvc2NzaV90cmFuc3BvcnRfc3JwLmMtNDc4LVxcdFxcdFxcdFxcdCAgIDFVTCAqIGRlbGF5ICogSFopO1xcbi0tXFxuZHJpdmVycy9zY3NpL3Njc2lfdHJhbnNwb3J0X3NycC5jLTQ4NC1cXHRcXHRpZiAoZmFzdF9pb19mYWlsX3RtbyBcXHUwMDNlPSAwKVxcbmRyaXZlcnMvc2NzaS9zY3NpX3RyYW5zcG9ydF9zcnAuYzo0ODU6XFx0XFx0XFx0cXVldWVfZGVsYXllZF93b3JrKHN5c3RlbV9kZmxfbG9uZ193cSxcXG5kcml2ZXJzL3Njc2kvc2NzaV90cmFuc3BvcnRfc3JwLmMtNDg2LVxcdFxcdFxcdFxcdFxcdCAgIFxcdTAwMjZycG9ydC1cXHUwMDNlZmFzdF9pb19mYWlsX3dvcmssXFxuLS1cXG5kcml2ZXJzL3Njc2kvc2NzaV90cmFuc3BvcnRfc3JwLmMtNDg4LVxcdFxcdGlmIChkZXZfbG9zc190bW8gXFx1MDAzZT0gMClcXG5kcml2ZXJzL3Njc2kvc2NzaV90cmFuc3BvcnRfc3JwLmM6NDg5OlxcdFxcdFxcdHF1ZXVlX2RlbGF5ZWRfd29yayhzeXN0ZW1fZGZsX2xvbmdfd3EsXFxuZHJpdmVycy9zY3NpL3Njc2lfdHJhbnNwb3J0X3NycC5jLTQ5MC1cXHRcXHRcXHRcXHRcXHQgICBcXHUwMDI2cnBvcnQtXFx1MDAzZWRldl9sb3NzX3dvcmssXFxuLS1cXG5mcy9mdXNlL2RheC5jPTEwOD1fX2tpY2tfZG1hcF9mcmVlX3dvcmtlcihzdHJ1Y3QgZnVzZV9jb25uX2RheCAqZmNkLCB1bnNpZ25lZCBsb25nIGRlbGF5X21zKVxcbi0tXFxuZnMvZnVzZS9kYXguYy0xMTUtXFx0aWYgKGZjZC1cXHUwMDNlbnJfZnJlZV9yYW5nZXMgXFx1MDAzYyBmcmVlX3RocmVzaG9sZClcXG5mcy9mdXNlL2RheC5jOjExNjpcXHRcXHRxdWV1ZV9kZWxheWVkX3dvcmsoc3lzdGVtX2RmbF9sb25nX3dxLCBcXHUwMDI2ZmNkLVxcdTAwM2VmcmVlX3dvcmssXFxuZnMvZnVzZS9kYXguYy0xMTctXFx0XFx0XFx0XFx0ICAgbXNlY3NfdG9famlmZmllcyhkZWxheV9tcykpO1xcbi0tXFxuaW5jbHVkZS9saW51eC93b3JrcXVldWUuaD00MTg9ZW51bSB3cV9jb25zdHMge1xcbi0tXFxuaW5jbHVkZS9saW51eC93b3JrcXVldWUuaC00NDQtICpcXG5pbmNsdWRlL2xpbnV4L3dvcmtxdWV1ZS5oOjQ0NTogKiBzeXN0ZW1fZGZsX2xvbmdfd3EgaXMgc2ltaWxhciB0byBzeXN0ZW1fZGZsX3dxIGJ1dCBpdCBtYXkgaG9zdCBsb25nIHJ1bm5pbmdcXG5pbmNsdWRlL2xpbnV4L3dvcmtxdWV1ZS5oLTQ0Ni0gKiB3b3Jrcy5cXG4tLVxcbmluY2x1ZGUvbGludXgvd29ya3F1ZXVlLmg9NDc1PWV4dGVybiBzdHJ1Y3Qgd29ya3F1ZXVlX3N0cnVjdCAqc3lzdGVtX2JoX2hpZ2hwcmlfd3E7XFxuaW5jbHVkZS9saW51eC93b3JrcXVldWUuaDo0NzY6ZXh0ZXJuIHN0cnVjdCB3b3JrcXVldWVfc3RydWN0ICpzeXN0ZW1fZGZsX2xvbmdfd3E7XFxuaW5jbHVkZS9saW51eC93b3JrcXVldWUuaC00NzctXFxuLS1cXG5pbmNsdWRlL2xpbnV4L3dvcmtxdWV1ZS5oPTc5Nj1leHRlcm4gdm9pZCBfX3dhcm5fZmx1c2hpbmdfc3lzdGVtd2lkZV93cSh2b2lkKVxcbi0tXFxuaW5jbHVkZS9saW51eC93b3JrcXVldWUuaC04MTUtXFx0ICAgICBfd3EgPT0gc3lzdGVtX2xvbmdfd3EpIHx8XFx0XFx0XFx0XFx0XFx0XFxcXFxcbmluY2x1ZGUvbGludXgvd29ya3F1ZXVlLmg6ODE2OlxcdCAgICAoX19idWlsdGluX2NvbnN0YW50X3AoX3dxID09IHN5c3RlbV9kZmxfbG9uZ193cSkgXFx1MDAyNlxcdTAwMjZcXHRcXHRcXFxcXFxuaW5jbHVkZS9saW51eC93b3JrcXVldWUuaDo4MTc6XFx0ICAgICBfd3EgPT0gc3lzdGVtX2RmbF9sb25nX3dxKSB8fFxcdFxcdFxcdFxcdFxcdFxcXFxcXG5pbmNsdWRlL2xpbnV4L3dvcmtxdWV1ZS5oLTgxOC1cXHQgICAgKF9fYnVpbHRpbl9jb25zdGFudF9wKF93cSA9PSBzeXN0ZW1fZGZsX3dxKSBcXHUwMDI2XFx1MDAyNlxcdFxcdFxcXFxcXG4tLVxcbmtlcm5lbC93b3JrcXVldWUuYz01NDU9RVhQT1JUX1NZTUJPTF9HUEwoc3lzdGVtX2JoX2hpZ2hwcmlfd3EpO1xcbmtlcm5lbC93b3JrcXVldWUuYzo1NDY6c3RydWN0IHdvcmtxdWV1ZV9zdHJ1Y3QgKnN5c3RlbV9kZmxfbG9uZ193cSBfX3JvX2FmdGVyX2luaXQ7XFxua2VybmVsL3dvcmtxdWV1ZS5jOjU0NzpFWFBPUlRfU1lNQk9MX0dQTChzeXN0ZW1fZGZsX2xvbmdfd3EpO1xcbmtlcm5lbC93b3JrcXVldWUuYy01NDgtXFxuLS1cXG5rZXJuZWwvd29ya3F1ZXVlLmM9Nzk3MT12b2lkIF9faW5pdCB3b3JrcXVldWVfaW5pdF9lYXJseSh2b2lkKVxcbi0tXFxua2VybmVsL3dvcmtxdWV1ZS5jLTgwNzAtXFx0XFx0XFx0XFx0XFx0ICAgICAgIFdRX0JIIHwgV1FfSElHSFBSSSB8IFdRX1BFUkNQVSwgMCk7XFxua2VybmVsL3dvcmtxdWV1ZS5jOjgwNzE6XFx0c3lzdGVtX2RmbF9sb25nX3dxID0gYWxsb2Nfd29ya3F1ZXVlKFxcXCJldmVudHNfZGZsX2xvbmdcXFwiLCBXUV9VTkJPVU5ELCBXUV9NQVhfQUNUSVZFKTtcXG5rZXJuZWwvd29ya3F1ZXVlLmMtODA3Mi1cXHRCVUdfT04oIXN5c3RlbV93cSB8fCAhc3lzdGVtX3BlcmNwdV93cXx8ICFzeXN0ZW1faGlnaHByaV93cSB8fCAhc3lzdGVtX2xvbmdfd3EgfHxcXG4tLVxcbmtlcm5lbC93b3JrcXVldWUuYy04MDc1LVxcdCAgICAgICAhc3lzdGVtX2ZyZWV6YWJsZV9wb3dlcl9lZmZpY2llbnRfd3EgfHxcXG5rZXJuZWwvd29ya3F1ZXVlLmM6ODA3NjpcXHQgICAgICAgIXN5c3RlbV9iaF93cSB8fCAhc3lzdGVtX2JoX2hpZ2hwcmlfd3EgfHwgIXN5c3RlbV9kZmxfbG9uZ193cSk7XFxua2VybmVsL3dvcmtxdWV1ZS5jLTgwNzctfVxcbi0tXFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2Nvbm4uYz0yNDM9c3RhdGljIGlubGluZSBpbnQgaXBfdnNfY29ubl9oYXNoKHN0cnVjdCBpcF92c19jb25uICpjcClcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb25uLmMtMjg3LVxcdCAgICAhdGVzdF9hbmRfc2V0X2JpdChJUF9WU19XT1JLX0NPTk5fUkVTSVpFLCBcXHUwMDI2aXB2cy1cXHUwMDNld29ya19mbGFncykpXFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2Nvbm4uYzoyODg6XFx0XFx0bW9kX2RlbGF5ZWRfd29yayhzeXN0ZW1fZGZsX2xvbmdfd3EsIFxcdTAwMjZpcHZzLVxcdTAwM2Vjb25uX3Jlc2l6ZV93b3JrLCAwKTtcXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29ubi5jLTI4OS1cXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb25uLmM9ODAwPXN0YXRpYyB2b2lkIGNvbm5fcmVzaXplX3dvcmtfaGFuZGxlcihzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29ubi5jLTkxOC1cXHQvKiBNb25pdG9yIGlmIHdlIG5lZWQgdG8gc2hyaW5rIHRhYmxlICovXFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2Nvbm4uYzo5MTk6XFx0cXVldWVfZGVsYXllZF93b3JrKHN5c3RlbV9kZmxfbG9uZ193cSwgXFx1MDAyNmlwdnMtXFx1MDAzZWNvbm5fcmVzaXplX3dvcmssXFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2Nvbm4uYy05MjAtXFx0XFx0XFx0ICAgbW9yZV93b3JrID8gMSA6IDIgKiBIWik7XFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY3RsLmM9MjMwPXN0YXRpYyB2b2lkIGRlZmVuc2Vfd29ya19oYW5kbGVyKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaylcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jdGwuYy0yMzctXFx0XFx0aXBfdnNfcmFuZG9tX2Ryb3BlbnRyeShpcHZzKTtcXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY3RsLmM6MjM4OlxcdHF1ZXVlX2RlbGF5ZWRfd29yayhzeXN0ZW1fZGZsX2xvbmdfd3EsIFxcdTAwMjZpcHZzLVxcdTAwM2VkZWZlbnNlX3dvcmssXFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2N0bC5jLTIzOS1cXHRcXHRcXHQgICBERUZFTlNFX1RJTUVSX1BFUklPRCk7XFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY3RsLmM9MjQzPXN0YXRpYyB2b2lkIGVzdF9yZWxvYWRfd29ya19oYW5kbGVyKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaylcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jdGwuYy0yOTItXFx0aWYgKHJlcGVhdClcXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY3RsLmM6MjkzOlxcdFxcdHF1ZXVlX2RlbGF5ZWRfd29yayhzeXN0ZW1fZGZsX2xvbmdfd3EsIFxcdTAwMjZpcHZzLVxcdTAwM2Vlc3RfcmVsb2FkX3dvcmssXFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2N0bC5jLTI5NC1cXHRcXHRcXHRcXHQgICBkZWxheSk7XFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY3RsLmM9NjcwPXN0YXRpYyB2b2lkIHN2Y19yZXNpemVfd29ya19oYW5kbGVyKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaylcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jdGwuYy04MjMtXFx0XFx0cmV0dXJuO1xcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jdGwuYzo4MjQ6XFx0cXVldWVfZGVsYXllZF93b3JrKHN5c3RlbV9kZmxfbG9uZ193cSwgXFx1MDAyNmlwdnMtXFx1MDAzZXN2Y19yZXNpemVfd29yaywgMSk7XFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2N0bC5jLTgyNS1cXHRyZXR1cm47XFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY3RsLmM9MTcwOT1pcF92c19hZGRfc2VydmljZShzdHJ1Y3QgbmV0bnNfaXB2cyAqaXB2cywgc3RydWN0IGlwX3ZzX3NlcnZpY2VfdXNlcl9rZXJuICp1LFxcbi0tXFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2N0bC5jLTE4NzEtXFx0aWYgKGdyb3cgXFx1MDAyNlxcdTAwMjYgIXRlc3RfYW5kX3NldF9iaXQoSVBfVlNfV09SS19TVkNfUkVTSVpFLCBcXHUwMDI2aXB2cy1cXHUwMDNld29ya19mbGFncykpXFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2N0bC5jOjE4NzI6XFx0XFx0cXVldWVfZGVsYXllZF93b3JrKHN5c3RlbV9kZmxfbG9uZ193cSwgXFx1MDAyNmlwdnMtXFx1MDAzZXN2Y19yZXNpemVfd29yayxcXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY3RsLmMtMTg3My1cXHRcXHRcXHRcXHQgICAxKTtcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jdGwuYz0yMDg2PXN0YXRpYyBpbnQgaXBfdnNfZGVsX3NlcnZpY2Uoc3RydWN0IGlwX3ZzX3NlcnZpY2UgKnN2YylcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jdGwuYy0yMTI3LVxcdFxcdFxcdFxcdFxcdFxcdFxcdTAwMjZpcHZzLVxcdTAwM2V3b3JrX2ZsYWdzKSlcXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY3RsLmM6MjEyODpcXHRcXHRcXHRxdWV1ZV9kZWxheWVkX3dvcmsoc3lzdGVtX2RmbF9sb25nX3dxLFxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jdGwuYy0yMTI5LVxcdFxcdFxcdFxcdFxcdCAgIFxcdTAwMjZpcHZzLVxcdTAwM2VzdmNfcmVzaXplX3dvcmssIDEpO1xcbi0tXFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2N0bC5jPTI1ODk9c3RhdGljIGludCBpcHZzX3Byb2NfY29ubl9sZmFjdG9yKGNvbnN0IHN0cnVjdCBjdGxfdGFibGUgKnRhYmxlLCBpbnQgd3JpdGUsXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY3RsLmMtMjYwOC1cXHRcXHRcXHRpZiAocmN1X2FjY2Vzc19wb2ludGVyKGlwdnMtXFx1MDAzZWNvbm5fdGFiKSlcXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY3RsLmM6MjYwOTpcXHRcXHRcXHRcXHRtb2RfZGVsYXllZF93b3JrKHN5c3RlbV9kZmxfbG9uZ193cSxcXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY3RsLmMtMjYxMC1cXHRcXHRcXHRcXHRcXHRcXHQgXFx1MDAyNmlwdnMtXFx1MDAzZWNvbm5fcmVzaXplX3dvcmssIDApO1xcbi0tXFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2N0bC5jPTI2MTY9c3RhdGljIGludCBpcHZzX3Byb2Nfc3ZjX2xmYWN0b3IoY29uc3Qgc3RydWN0IGN0bF90YWJsZSAqdGFibGUsIGludCB3cml0ZSxcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jdGwuYy0yNjQwLVxcdFxcdFxcdFxcdCAgICAgIFxcdTAwMjZpcHZzLVxcdTAwM2V3b3JrX2ZsYWdzKSlcXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY3RsLmM6MjY0MTpcXHRcXHRcXHRcXHRtb2RfZGVsYXllZF93b3JrKHN5c3RlbV9kZmxfbG9uZ193cSxcXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY3RsLmMtMjY0Mi1cXHRcXHRcXHRcXHRcXHRcXHQgXFx1MDAyNmlwdnMtXFx1MDAzZXN2Y19yZXNpemVfd29yaywgMCk7XFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY3RsLmM9NDk5NT1zdGF0aWMgaW50IF9fbmV0X2luaXQgaXBfdnNfY29udHJvbF9uZXRfaW5pdF9zeXNjdGwoc3RydWN0IG5ldG5zX2lwdnMgKmlwdnMpXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY3RsLmMtNTEyOC1cXHQvKiBTY2hlZHVsZSBkZWZlbnNlIHdvcmsgKi9cXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY3RsLmM6NTEyOTpcXHRxdWV1ZV9kZWxheWVkX3dvcmsoc3lzdGVtX2RmbF9sb25nX3dxLCBcXHUwMDI2aXB2cy1cXHUwMDNlZGVmZW5zZV93b3JrLFxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jdGwuYy01MTMwLVxcdFxcdFxcdCAgIERFRkVOU0VfVElNRVJfUEVSSU9EKTtcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19lc3QuYz0yMzU9dm9pZCBpcF92c19lc3RfcmVsb2FkX3N0YXJ0KHN0cnVjdCBuZXRuc19pcHZzICppcHZzLCBib29sIHJlc3RhcnQpXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfZXN0LmMtMjQ1LVxcdFxcdGF0b21pY19pbmMoXFx1MDAyNmlwdnMtXFx1MDAzZWVzdF9nZW5pZCk7XFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2VzdC5jOjI0NjpcXHRxdWV1ZV9kZWxheWVkX3dvcmsoc3lzdGVtX2RmbF9sb25nX3dxLCBcXHUwMDI2aXB2cy1cXHUwMDNlZXN0X3JlbG9hZF93b3JrLCAwKTtcXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfZXN0LmMtMjQ3LX1cXG4tLVxcbm5ldC9zdW5ycGMveHBydHJkbWEvdHJhbnNwb3J0LmM9NDgwPXhwcnRfcmRtYV9jb25uZWN0KHN0cnVjdCBycGNfeHBydCAqeHBydCwgc3RydWN0IHJwY190YXNrICp0YXNrKVxcbi0tXFxubmV0L3N1bnJwYy94cHJ0cmRtYS90cmFuc3BvcnQuYy00OTMtXFx0dHJhY2VfeHBydHJkbWFfb3BfY29ubmVjdChyX3hwcnQsIGRlbGF5KTtcXG5uZXQvc3VucnBjL3hwcnRyZG1hL3RyYW5zcG9ydC5jOjQ5NDpcXHRxdWV1ZV9kZWxheWVkX3dvcmsoc3lzdGVtX2RmbF9sb25nX3dxLCBcXHUwMDI2cl94cHJ0LVxcdTAwM2VyeF9jb25uZWN0X3dvcmtlcixcXG5uZXQvc3VucnBjL3hwcnRyZG1hL3RyYW5zcG9ydC5jLTQ5NS1cXHRcXHRcXHQgICBkZWxheSk7XFxuLS1cXG5zb3VuZC9zb2MvY29kZWNzL2NzNDJsNDMtamFjay5jPTc5Nj1pcnFyZXR1cm5fdCBjczQybDQzX3RpcF9zZW5zZShpbnQgaXJxLCB2b2lkICpkYXRhKVxcbi0tXFxuc291bmQvc29jL2NvZGVjcy9jczQybDQzLWphY2suYy04MDctXFxuc291bmQvc29jL2NvZGVjcy9jczQybDQzLWphY2suYzo4MDg6XFx0cXVldWVfZGVsYXllZF93b3JrKHN5c3RlbV9kZmxfbG9uZ193cSwgXFx1MDAyNnByaXYtXFx1MDAzZXRpcF9zZW5zZV93b3JrLFxcbnNvdW5kL3NvYy9jb2RlY3MvY3M0Mmw0My1qYWNrLmMtODA5LVxcdFxcdFxcdCAgIG1zZWNzX3RvX2ppZmZpZXMoZGJfZGVsYXkpKTtcXG4tLVxcbnNvdW5kL3NvYy9jb2RlY3MvY3M0Mmw0My1qYWNrLmM9OTA1PWludCBjczQybDQzX2phY2tfcHV0KHN0cnVjdCBzbmRfa2NvbnRyb2wgKmtjb250cm9sLCBzdHJ1Y3Qgc25kX2N0bF9lbGVtX3ZhbHVlICp1Y29udHJvbClcXG4tLVxcbnNvdW5kL3NvYy9jb2RlY3MvY3M0Mmw0My1qYWNrLmMtOTM0LVxcdGlmICghb3ZlcnJpZGUpIHtcXG5zb3VuZC9zb2MvY29kZWNzL2NzNDJsNDMtamFjay5jOjkzNTpcXHRcXHRxdWV1ZV9kZWxheWVkX3dvcmsoc3lzdGVtX2RmbF9sb25nX3dxLCBcXHUwMDI2cHJpdi1cXHUwMDNldGlwX3NlbnNlX3dvcmssXFxuc291bmQvc29jL2NvZGVjcy9jczQybDQzLWphY2suYy05MzYtXFx0XFx0XFx0XFx0ICAgMCk7XFxuLS1cXG5zb3VuZC9zb2MvY29kZWNzL3J0NTY0MC5jPTIzMTQ9c3RhdGljIHZvaWQgcnQ1NjQwX2phY2tfd29yayhzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspXFxuLS1cXG5zb3VuZC9zb2MvY29kZWNzL3J0NTY0MC5jLTIzOTktXFx0XFx0ICovXFxuc291bmQvc29jL2NvZGVjcy9ydDU2NDAuYzoyNDAwOlxcdFxcdHF1ZXVlX2RlbGF5ZWRfd29yayhzeXN0ZW1fZGZsX2xvbmdfd3EsIFxcdTAwMjZydDU2NDAtXFx1MDAzZWphY2tfd29yaywgMCk7XFxuc291bmQvc29jL2NvZGVjcy9ydDU2NDAuYy0yNDAxLVxcdH1cXG4tLVxcbnNvdW5kL3NvYy9jb2RlY3MvcnQ1NjQwLmM9MjQwND1zdGF0aWMgaXJxcmV0dXJuX3QgcnQ1NjQwX2lycShpbnQgaXJxLCB2b2lkICpkYXRhKVxcbi0tXFxuc291bmQvc29jL2NvZGVjcy9ydDU2NDAuYy0yNDEyLVxcdGlmIChydDU2NDAtXFx1MDAzZWphY2spXFxuc291bmQvc29jL2NvZGVjcy9ydDU2NDAuYzoyNDEzOlxcdFxcdG1vZF9kZWxheWVkX3dvcmsoc3lzdGVtX2RmbF9sb25nX3dxLCBcXHUwMDI2cnQ1NjQwLVxcdTAwM2VqYWNrX3dvcmssXFxuc291bmQvc29jL2NvZGVjcy9ydDU2NDAuYy0yNDE0LVxcdFxcdFxcdFxcdCBkZWxheSk7XFxuLS1cXG5zb3VuZC9zb2MvY29kZWNzL3J0NTY0MC5jPTI0MTk9c3RhdGljIGlycXJldHVybl90IHJ0NTY0MF9qZF9ncGlvX2lycShpbnQgaXJxLCB2b2lkICpkYXRhKVxcbi0tXFxuc291bmQvc29jL2NvZGVjcy9ydDU2NDAuYy0yNDIyLVxcbnNvdW5kL3NvYy9jb2RlY3MvcnQ1NjQwLmM6MjQyMzpcXHRxdWV1ZV9kZWxheWVkX3dvcmsoc3lzdGVtX2RmbF9sb25nX3dxLCBcXHUwMDI2cnQ1NjQwLVxcdTAwM2VqYWNrX3dvcmssXFxuc291bmQvc29jL2NvZGVjcy9ydDU2NDAuYy0yNDI0LVxcdFxcdFxcdCAgIG1zZWNzX3RvX2ppZmZpZXMoSkFDS19TRVRUTEVfVElNRSkpO1xcbi0tXFxuc291bmQvc29jL2NvZGVjcy9ydDU2NDAuYz0yNDk1PXN0YXRpYyB2b2lkIHJ0NTY0MF9lbmFibGVfamFja19kZXRlY3Qoc3RydWN0IHNuZF9zb2NfY29tcG9uZW50ICpjb21wb25lbnQsXFxuLS1cXG5zb3VuZC9zb2MvY29kZWNzL3J0NTY0MC5jLTI1ODQtXFx0Lyogc3luYyBpbml0aWFsIGphY2sgc3RhdGUgKi9cXG5zb3VuZC9zb2MvY29kZWNzL3J0NTY0MC5jOjI1ODU6XFx0cXVldWVfZGVsYXllZF93b3JrKHN5c3RlbV9kZmxfbG9uZ193cSwgXFx1MDAyNnJ0NTY0MC1cXHUwMDNlamFja193b3JrLCAwKTtcXG5zb3VuZC9zb2MvY29kZWNzL3J0NTY0MC5jLTI1ODYtfVxcbi0tXFxuc291bmQvc29jL2NvZGVjcy9ydDU2NDAuYz0yNTk0PXN0YXRpYyB2b2lkIHJ0NTY0MF9lbmFibGVfaGRhX2phY2tfZGV0ZWN0KFxcbi0tXFxuc291bmQvc29jL2NvZGVjcy9ydDU2NDAuYy0yNjM3LVxcdC8qIHN5bmMgaW5pdGlhbCBqYWNrIHN0YXRlICovXFxuc291bmQvc29jL2NvZGVjcy9ydDU2NDAuYzoyNjM4OlxcdHF1ZXVlX2RlbGF5ZWRfd29yayhzeXN0ZW1fZGZsX2xvbmdfd3EsIFxcdTAwMjZydDU2NDAtXFx1MDAzZWphY2tfd29yaywgMCk7XFxuc291bmQvc29jL2NvZGVjcy9ydDU2NDAuYy0yNjM5LVxcbi0tXFxuc291bmQvc29jL2NvZGVjcy9ydDU2NDAuYz0yODI2PXN0YXRpYyBpbnQgcnQ1NjQwX3Jlc3VtZShzdHJ1Y3Qgc25kX3NvY19jb21wb25lbnQgKmNvbXBvbmVudClcXG4tLVxcbnNvdW5kL3NvYy9jb2RlY3MvcnQ1NjQwLmMtMjg2NS1cXHRcXHRlbmFibGVfaXJxKHJ0NTY0MC1cXHUwMDNlaXJxKTtcXG5zb3VuZC9zb2MvY29kZWNzL3J0NTY0MC5jOjI4NjY6XFx0XFx0cXVldWVfZGVsYXllZF93b3JrKHN5c3RlbV9kZmxfbG9uZ193cSwgXFx1MDAyNnJ0NTY0MC1cXHUwMDNlamFja193b3JrLCAwKTtcXG5zb3VuZC9zb2MvY29kZWNzL3J0NTY0MC5jLTI4NjctXFx0fVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wMlQxNDo1MzozNS4yNzg3NzE0ODhaIiwiU2VxIjoxMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NzUyOTMzNjI4MSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipGdXp6aW5nIERlY2lzaW9uIGZvciBXb3JrcXVldWUgQ2hhbmdlKipcblxuT2theSwgc28gdGhpcyBwYXRjaCBpcyBzd2l0Y2hpbmcgdGhlIHdvcmtxdWV1ZSB1c2VkIGJ5IElQVlMgZnJvbSBgc3lzdGVtX2xvbmdfd3FgIHRvIGBzeXN0ZW1fZGZsX2xvbmdfd3FgLiBTZWVtcyBsaWtlIGEgbWlub3IgZnVuY3Rpb25hbCBjaGFuZ2UsIGJ1dCBsZXQncyBjb25zaWRlciBmdXp6aW5nIGl0LiBJdCdzIGluIGBuZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY3RsLmNgIGFuZCBgbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2VzdC5jYCwgc28gaXQncyBsb2NhbGl6ZWQuIFRoZSBjb3JlIHF1ZXN0aW9uIGlzOiBpcyBpdCAqd29ydGgqIGl0P1xuXG5UaGUgaW5zdHJ1Y3Rpb25zIHNheSB0byBvbmx5IHJldHVybiBgV29ydGhGdXp6aW5nPWZhbHNlYCBpZiBpdOKAmXMgZG9jdW1lbnRhdGlvbiwgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBvciBzb21ldGhpbmcgdGhhdCB3b24ndCBjaGFuZ2UgdGhlIGV4ZWN1dGlvbi4gVGhpcyBwYXRjaCAqZG9lcyogYWx0ZXIgZXhlY3V0aW9uIGZsb3csIGJlY2F1c2UgaXQncyBkZXRlcm1pbmluZyB3aGljaCB3b3JrcXVldWUgZXhlY3V0ZXMgdGhlIGZ1bmN0aW9uLCBpdCdzIG5vdCBjb3NtZXRpYy4gU28sIHllcywgaXTigJlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UsIG5vdCBqdXN0IGEgY29tbWVudCBvciBkb2N1bWVudGF0aW9uIHVwZGF0ZS5cblxuVGhlcmVmb3JlLCBJJ20gbGVhbmluZyB0b3dhcmRzIGBXb3J0aEZ1enppbmc9dHJ1ZWAuIEkgbmVlZCB0byBwcm92aWRlIHRoZSBzdXBwb3J0aW5nIGFyZ3VtZW50cyB0aG91Z2guIFNwZWNpZmljYWxseSB0aGUgYEZvY3VzU3ltYm9sc2AgYW5kIGBFbmFibGVDb25maWdzYC4gVGhlIGBGb2N1c1N5bWJvbHNgIGFwcGVhciB0byBiZSBgZGVmZW5zZV93b3JrX2hhbmRsZXJgLCBgZXN0X3JlbG9hZF93b3JrX2hhbmRsZXJgLCBhbmQgYGlwX3ZzX2VzdF9yZWxvYWRfc3RhcnRgLiBgRW5hYmxlQ29uZmlnc2AgaXMgc3RyYWlnaHRmb3J3YXJkOiBgSVBfVlNgLiBUaGF0IHNlZW1zIHJpZ2h0LCBidXQgbGV0J3MgZG91YmxlLWNoZWNrIGFueSByZWxhdGVkIGNvbmZpZ3MsIGp1c3QgdG8gYmUgc3VyZS5cblxuV2FpdCBhIHNlY29uZOKApiBgZGVmZW5zZV93b3JrX2hhbmRsZXJgIGlzIGluc2lkZSBhbiBgI2lmZGVmIENPTkZJR19TWVNDVExgIGJsb2NrLiBUaGlzIG5lZWRzIGEgY2xvc2VyIGxvb2sgYXQgYGlwX3ZzX2N0bC5jYCBhcm91bmQgbGluZSAyMzUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjExNDg0LCJPdXRwdXRUb2tlbnMiOjE5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDM5LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAyVDE0OjUzOjQyLjgwODExMTEyOVoiLCJTZXEiOjEyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjY0MzA4NDU1MywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJkZWZlbnNlX3dvcmtfaGFuZGxlclwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY3RsLmM9MjE2PXN0YXRpYyB2b2lkIGV4cGlyZV9ub2Rlc3RfY29ubl9oYW5kbGVyKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaylcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jdGwuYy0yMjktXFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2N0bC5jOjIzMDpzdGF0aWMgdm9pZCBkZWZlbnNlX3dvcmtfaGFuZGxlcihzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspXFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2N0bC5jLTIzMS17XFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY3RsLmM9NDk5NT1zdGF0aWMgaW50IF9fbmV0X2luaXQgaXBfdnNfY29udHJvbF9uZXRfaW5pdF9zeXNjdGwoc3RydWN0IG5ldG5zX2lwdnMgKmlwdnMpXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY3RsLmMtNTAwNi1cXHRzcGluX2xvY2tfaW5pdChcXHUwMDI2aXB2cy1cXHUwMDNlc2VjdXJldGNwX2xvY2spO1xcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jdGwuYzo1MDA3OlxcdElOSVRfREVMQVlFRF9XT1JLKFxcdTAwMjZpcHZzLVxcdTAwM2VkZWZlbnNlX3dvcmssIGRlZmVuc2Vfd29ya19oYW5kbGVyKTtcXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY3RsLmMtNTAwOC1cXHRJTklUX0RFTEFZRURfV09SSyhcXHUwMDI2aXB2cy1cXHUwMDNlZXhwaXJlX25vZGVzdF9jb25uX3dvcmssXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAyVDE0OjUzOjQ1LjQ1MTIwMDM3MloiLCJTZXEiOjEzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoyOTYyMTkwNjMwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgYSBzdW1tYXJ5IG9mIG15IHRob3VnaHQgcHJvY2VzcywgYXMgaWYgSSB3ZXJlIHRoZSBvbmUgdGhpbmtpbmcgaXQ6XG5cbioqRGl2aW5nIGludG8gdGhlIElQVlMgQ29udHJvbCBQbGFuZSoqXG5cbk9rYXksIHRpbWUgdG8gZ2V0IG15IGhhbmRzIGRpcnR5IHdpdGggYG5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jdGwuY2AuIEknbSBnb2luZyB0byBqdW1wIGluIGFyb3VuZCBsaW5lIDIzMC4gSSdtIGd1ZXNzaW5nIHRoYXQncyB3aGVyZSBhIGNydWNpYWwgcGFydCBvZiB0aGUgY29udHJvbCBwbGFuZSBsb2dpYywgc3BlY2lmaWNhbGx5IGFyb3VuZCBjb25maWd1cmF0aW9uIG9yIG1hbmlwdWxhdGlvbiBvZiB0aGUgSVBWUyB0YWJsZXMsIHJlc2lkZXMuIEknbSBleHBlY3RpbmcgdG8gZmluZCBzb21lIGludGVyZXN0aW5nIGludGVyYWN0aW9uIHBvaW50cyB3aXRoIHRoZSBuZXRmaWx0ZXIgaG9va3Mgb3IgcGVyaGFwcyBhIGtleSBmdW5jdGlvbiBjYWxsIGRlYWxpbmcgd2l0aCBzZXJ2aWNlIGRlZmluaXRpb24gb3IgY29ubmVjdGlvbiB0cmFja2luZyBtb2RpZmljYXRpb25zLiBMZXQncyBzZWUgd2hhdCBnZW1zIGFyZSB3YWl0aW5nIHRvIGJlIHVuZWFydGhlZC4gTGluZSAyMzAuLi4gbGV0J3Mgc2VlIHdoYXQncyBpbiBzdG9yZS5cblxuXG4iLCJJbnB1dFRva2VucyI6MTI1OTgsIk91dHB1dFRva2VucyI6NDMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyOCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0wMlQxNDo1Mzo0OC40MTMzOTQ0MzJaIiwiU2VxIjoxNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MzQ0NjAwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcIm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jdGwuY1wiLFxuICBcIkZpcnN0TGluZVwiOiAyMTAsXG4gIFwiTGluZUNvdW50XCI6IDUwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAyMTA6XFx0XFx0bG9jYWxfYmhfZW5hYmxlKCk7XFxuIDIxMTpcXHR9XFxuIDIxMjpcXHRcXG4gMjEzOlxcdC8qIEhhbmRsZXIgZm9yIGRlbGF5ZWQgd29yayBmb3IgZXhwaXJpbmcgbm9cXG4gMjE0OlxcdCAqIGRlc3RpbmF0aW9uIGNvbm5lY3Rpb25zXFxuIDIxNTpcXHQgKi9cXG4gMjE2OlxcdHN0YXRpYyB2b2lkIGV4cGlyZV9ub2Rlc3RfY29ubl9oYW5kbGVyKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaylcXG4gMjE3OlxcdHtcXG4gMjE4OlxcdFxcdHN0cnVjdCBuZXRuc19pcHZzICppcHZzO1xcbiAyMTk6XFx0XFxuIDIyMDpcXHRcXHRpcHZzID0gY29udGFpbmVyX29mKHdvcmssIHN0cnVjdCBuZXRuc19pcHZzLFxcbiAyMjE6XFx0XFx0XFx0XFx0ICAgIGV4cGlyZV9ub2Rlc3RfY29ubl93b3JrLndvcmspO1xcbiAyMjI6XFx0XFx0aXBfdnNfZXhwaXJlX25vZGVzdF9jb25uX2ZsdXNoKGlwdnMpO1xcbiAyMjM6XFx0fVxcbiAyMjQ6XFx0XFxuIDIyNTpcXHQvKlxcbiAyMjY6XFx0ICpcXHRUaW1lciBmb3IgY2hlY2tpbmcgdGhlIGRlZmVuc2VcXG4gMjI3OlxcdCAqL1xcbiAyMjg6XFx0I2RlZmluZSBERUZFTlNFX1RJTUVSX1BFUklPRFxcdDEqSFpcXG4gMjI5OlxcdFxcbiAyMzA6XFx0c3RhdGljIHZvaWQgZGVmZW5zZV93b3JrX2hhbmRsZXIoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxcbiAyMzE6XFx0e1xcbiAyMzI6XFx0XFx0c3RydWN0IG5ldG5zX2lwdnMgKmlwdnMgPVxcbiAyMzM6XFx0XFx0XFx0Y29udGFpbmVyX29mKHdvcmssIHN0cnVjdCBuZXRuc19pcHZzLCBkZWZlbnNlX3dvcmsud29yayk7XFxuIDIzNDpcXHRcXG4gMjM1OlxcdFxcdHVwZGF0ZV9kZWZlbnNlX2xldmVsKGlwdnMpO1xcbiAyMzY6XFx0XFx0aWYgKGF0b21pY19yZWFkKFxcdTAwMjZpcHZzLVxcdTAwM2Vkcm9wZW50cnkpKVxcbiAyMzc6XFx0XFx0XFx0aXBfdnNfcmFuZG9tX2Ryb3BlbnRyeShpcHZzKTtcXG4gMjM4OlxcdFxcdHF1ZXVlX2RlbGF5ZWRfd29yayhzeXN0ZW1fZGZsX2xvbmdfd3EsIFxcdTAwMjZpcHZzLVxcdTAwM2VkZWZlbnNlX3dvcmssXFxuIDIzOTpcXHRcXHRcXHRcXHQgICBERUZFTlNFX1RJTUVSX1BFUklPRCk7XFxuIDI0MDpcXHR9XFxuIDI0MTpcXHQjZW5kaWZcXG4gMjQyOlxcdFxcbiAyNDM6XFx0c3RhdGljIHZvaWQgZXN0X3JlbG9hZF93b3JrX2hhbmRsZXIoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxcbiAyNDQ6XFx0e1xcbiAyNDU6XFx0XFx0c3RydWN0IG5ldG5zX2lwdnMgKmlwdnMgPVxcbiAyNDY6XFx0XFx0XFx0Y29udGFpbmVyX29mKHdvcmssIHN0cnVjdCBuZXRuc19pcHZzLCBlc3RfcmVsb2FkX3dvcmsud29yayk7XFxuIDI0NzpcXHRcXHRpbnQgZ2VuaWRfZG9uZSA9IGF0b21pY19yZWFkKFxcdTAwMjZpcHZzLVxcdTAwM2Vlc3RfZ2VuaWRfZG9uZSk7XFxuIDI0ODpcXHRcXHR1bnNpZ25lZCBsb25nIGRlbGF5ID0gSFogLyAxMDtcXHQvKiByZXBlYXQgc3RhcnR1cHMgYWZ0ZXIgZmFpbHVyZSAqL1xcbiAyNDk6XFx0XFx0Ym9vbCByZXBlYXQgPSBmYWxzZTtcXG4gMjUwOlxcdFxcdGludCBnZW5pZDtcXG4gMjUxOlxcdFxcdGludCBpZDtcXG4gMjUyOlxcdFxcbiAyNTM6XFx0XFx0bXV0ZXhfbG9jayhcXHUwMDI2aXB2cy1cXHUwMDNlZXN0X211dGV4KTtcXG4gMjU0OlxcdFxcdGdlbmlkID0gYXRvbWljX3JlYWQoXFx1MDAyNmlwdnMtXFx1MDAzZWVzdF9nZW5pZCk7XFxuIDI1NTpcXHRcXHRmb3IgKGlkID0gMDsgaWQgXFx1MDAzYyBpcHZzLVxcdTAwM2Vlc3Rfa3RfY291bnQ7IGlkKyspIHtcXG4gMjU2OlxcdFxcdFxcdHN0cnVjdCBpcF92c19lc3Rfa3RfZGF0YSAqa2QgPSBpcHZzLVxcdTAwM2Vlc3Rfa3RfYXJyW2lkXTtcXG4gMjU3OlxcdFxcbiAyNTg6XFx0XFx0XFx0LyogbmV0bnMgY2xlYW4gdXAgc3RhcnRlZCwgYWJvcnQgZGVsYXllZCB3b3JrICovXFxuIDI1OTpcXHRcXHRcXHRpZiAoIVJFQURfT05DRShpcHZzLVxcdTAwM2VlbmFibGUpKVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wMlQxNDo1Mzo0OC40MTM3NDEzMDJaIiwiU2VxIjoxNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6Mjc2OTg0MjM0NywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6XG5cbioqQW5hbHl6aW5nIENvbmRpdGlvbmFsIENvbXBpbGF0aW9uKipcblxuQWxyaWdodCwgc28gSSdtIGxvb2tpbmcgYXQgbGluZSAyNDEsIHdoaWNoIGlzIGEgc2ltcGxlIGAjZW5kaWZgLiBUaGF0J3MgdGhlIGVuZCBvZiBhIGNvbmRpdGlvbmFsIGJsb2NrLCBubyBzdXJwcmlzZXMgdGhlcmUuIEJ1dCBpdCBpbW1lZGlhdGVseSBtYWtlcyBtZSB0aGluaywgXCJXaGF0IHdhcyB0aGUgY29ycmVzcG9uZGluZyBgI2lmZGVmYCBvciBgI2lmbmRlZmAgdGhhdCBzdGFydGVkIHRoaXMgYmxvY2s/XCIuIEkgbmVlZCB0byBrbm93IHRoZSBjb25kaXRpb25hbCBjb21waWxhdGlvbiBjb25kaXRpb24uIEknbSB0aGlua2luZywgaXMgaXQgYSBmZWF0dXJlIGZsYWcsIGEgcGxhdGZvcm0gZGVmaW5lLCBhIGRlYnVnIHN3aXRjaD8gS25vd2luZyAqdGhhdCogaXMgY3J1Y2lhbCB0byB1bmRlcnN0YW5kaW5nIHRoZSAqd2h5KiBvZiB0aGlzIHBhcnRpY3VsYXIgY29kZSBiZWluZyBwcmVzZW50IG9yIGFic2VudCBkdXJpbmcgYSBzcGVjaWZpYyBidWlsZC4gSSBuZWVkIHRvIHRyYWNlIGJhY2sgYW5kIGltbWVkaWF0ZWx5IGlkZW50aWZ5IHdoYXQgaXMgYmVpbmcgY29uZGl0aW9uYWxseSBjb21waWxlZCwgYW5kIHdoeS4gV2l0aG91dCBrbm93aW5nIHRoZSBgI2lmZGVmYCwgdGhpcyBgI2VuZGlmYCBpcyBqdXN0IGEgY2xvc2luZyBicmFja2V0IHdpdGhvdXQgY29udGV4dCwgYW4gb3JwaGFuIGluIHRoZSBjb2RlYmFzZS5cblxuXG4iLCJJbnB1dFRva2VucyI6MTM2MTEsIk91dHB1dFRva2VucyI6NDMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNiwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAyVDE0OjUzOjUxLjE4MzU4NjMyOVoiLCJTZXEiOjE2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjozMTgxODAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwibmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2N0bC5jXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDE1MCxcbiAgXCJMaW5lQ291bnRcIjogNjBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiIDE1MDpcXHRcXHRcXHRcXHRpcHZzLVxcdTAwM2Vkcm9wX2NvdW50ZXIgPSBhbWVtdGhyZXNoIC8gKGFtZW10aHJlc2ggLSBhdmFpbG1lbSk7XFxuIDE1MTpcXHRcXHRcXHRcXHRpcHZzLVxcdTAwM2Vkcm9wX3JhdGUgPSBpcHZzLVxcdTAwM2Vkcm9wX2NvdW50ZXI7XFxuIDE1MjpcXHRcXHRcXHRcXHRpcHZzLVxcdTAwM2VzeXNjdGxfZHJvcF9wYWNrZXQgPSAyO1xcbiAxNTM6XFx0XFx0XFx0fSBlbHNlIHtcXG4gMTU0OlxcdFxcdFxcdFxcdGlwdnMtXFx1MDAzZWRyb3BfcmF0ZSA9IDA7XFxuIDE1NTpcXHRcXHRcXHR9XFxuIDE1NjpcXHRcXHRcXHRicmVhaztcXG4gMTU3OlxcdFxcdGNhc2UgMjpcXG4gMTU4OlxcdFxcdFxcdGlmIChub21lbSkge1xcbiAxNTk6XFx0XFx0XFx0XFx0aXB2cy1cXHUwMDNlZHJvcF9jb3VudGVyID0gYW1lbXRocmVzaCAvIChhbWVtdGhyZXNoIC0gYXZhaWxtZW0pO1xcbiAxNjA6XFx0XFx0XFx0XFx0aXB2cy1cXHUwMDNlZHJvcF9yYXRlID0gaXB2cy1cXHUwMDNlZHJvcF9jb3VudGVyO1xcbiAxNjE6XFx0XFx0XFx0fSBlbHNlIHtcXG4gMTYyOlxcdFxcdFxcdFxcdGlwdnMtXFx1MDAzZWRyb3BfcmF0ZSA9IDA7XFxuIDE2MzpcXHRcXHRcXHRcXHRpcHZzLVxcdTAwM2VzeXNjdGxfZHJvcF9wYWNrZXQgPSAxO1xcbiAxNjQ6XFx0XFx0XFx0fVxcbiAxNjU6XFx0XFx0XFx0YnJlYWs7XFxuIDE2NjpcXHRcXHRjYXNlIDM6XFxuIDE2NzpcXHRcXHRcXHRpcHZzLVxcdTAwM2Vkcm9wX3JhdGUgPSBpcHZzLVxcdTAwM2VzeXNjdGxfYW1fZHJvcHJhdGU7XFxuIDE2ODpcXHRcXHRcXHRicmVhaztcXG4gMTY5OlxcdFxcdH1cXG4gMTcwOlxcdFxcdHNwaW5fdW5sb2NrKFxcdTAwMjZpcHZzLVxcdTAwM2Vkcm9wcGFja2V0X2xvY2spO1xcbiAxNzE6XFx0XFxuIDE3MjpcXHRcXHQvKiBzZWN1cmVfdGNwICovXFxuIDE3MzpcXHRcXHRzcGluX2xvY2soXFx1MDAyNmlwdnMtXFx1MDAzZXNlY3VyZXRjcF9sb2NrKTtcXG4gMTc0OlxcdFxcdHN3aXRjaCAoaXB2cy1cXHUwMDNlc3lzY3RsX3NlY3VyZV90Y3ApIHtcXG4gMTc1OlxcdFxcdGNhc2UgMDpcXG4gMTc2OlxcdFxcdFxcdGlmIChpcHZzLVxcdTAwM2VvbGRfc2VjdXJlX3RjcCBcXHUwMDNlPSAyKVxcbiAxNzc6XFx0XFx0XFx0XFx0dG9fY2hhbmdlID0gMDtcXG4gMTc4OlxcdFxcdFxcdGJyZWFrO1xcbiAxNzk6XFx0XFx0Y2FzZSAxOlxcbiAxODA6XFx0XFx0XFx0aWYgKG5vbWVtKSB7XFxuIDE4MTpcXHRcXHRcXHRcXHRpZiAoaXB2cy1cXHUwMDNlb2xkX3NlY3VyZV90Y3AgXFx1MDAzYyAyKVxcbiAxODI6XFx0XFx0XFx0XFx0XFx0dG9fY2hhbmdlID0gMTtcXG4gMTgzOlxcdFxcdFxcdFxcdGlwdnMtXFx1MDAzZXN5c2N0bF9zZWN1cmVfdGNwID0gMjtcXG4gMTg0OlxcdFxcdFxcdH0gZWxzZSB7XFxuIDE4NTpcXHRcXHRcXHRcXHRpZiAoaXB2cy1cXHUwMDNlb2xkX3NlY3VyZV90Y3AgXFx1MDAzZT0gMilcXG4gMTg2OlxcdFxcdFxcdFxcdFxcdHRvX2NoYW5nZSA9IDA7XFxuIDE4NzpcXHRcXHRcXHR9XFxuIDE4ODpcXHRcXHRcXHRicmVhaztcXG4gMTg5OlxcdFxcdGNhc2UgMjpcXG4gMTkwOlxcdFxcdFxcdGlmIChub21lbSkge1xcbiAxOTE6XFx0XFx0XFx0XFx0aWYgKGlwdnMtXFx1MDAzZW9sZF9zZWN1cmVfdGNwIFxcdTAwM2MgMilcXG4gMTkyOlxcdFxcdFxcdFxcdFxcdHRvX2NoYW5nZSA9IDE7XFxuIDE5MzpcXHRcXHRcXHR9IGVsc2Uge1xcbiAxOTQ6XFx0XFx0XFx0XFx0aWYgKGlwdnMtXFx1MDAzZW9sZF9zZWN1cmVfdGNwIFxcdTAwM2U9IDIpXFxuIDE5NTpcXHRcXHRcXHRcXHRcXHR0b19jaGFuZ2UgPSAwO1xcbiAxOTY6XFx0XFx0XFx0XFx0aXB2cy1cXHUwMDNlc3lzY3RsX3NlY3VyZV90Y3AgPSAxO1xcbiAxOTc6XFx0XFx0XFx0fVxcbiAxOTg6XFx0XFx0XFx0YnJlYWs7XFxuIDE5OTpcXHRcXHRjYXNlIDM6XFxuIDIwMDpcXHRcXHRcXHRpZiAoaXB2cy1cXHUwMDNlb2xkX3NlY3VyZV90Y3AgXFx1MDAzYyAyKVxcbiAyMDE6XFx0XFx0XFx0XFx0dG9fY2hhbmdlID0gMTtcXG4gMjAyOlxcdFxcdFxcdGJyZWFrO1xcbiAyMDM6XFx0XFx0fVxcbiAyMDQ6XFx0XFx0aXB2cy1cXHUwMDNlb2xkX3NlY3VyZV90Y3AgPSBpcHZzLVxcdTAwM2VzeXNjdGxfc2VjdXJlX3RjcDtcXG4gMjA1OlxcdFxcdGlmICh0b19jaGFuZ2UgXFx1MDAzZT0gMClcXG4gMjA2OlxcdFxcdFxcdGlwX3ZzX3Byb3RvY29sX3RpbWVvdXRfY2hhbmdlKGlwdnMsXFxuIDIwNzpcXHRcXHRcXHRcXHRcXHRcXHQgICAgICBpcHZzLVxcdTAwM2VzeXNjdGxfc2VjdXJlX3RjcCBcXHUwMDNlIDEpO1xcbiAyMDg6XFx0XFx0c3Bpbl91bmxvY2soXFx1MDAyNmlwdnMtXFx1MDAzZXNlY3VyZXRjcF9sb2NrKTtcXG4gMjA5OlxcdFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wMlQxNDo1Mzo1MS4xODM5MDY4MDlaIiwiU2VxIjoxNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzMzMDc0MTUwNywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhlIHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZTpcblxuKipNaXNzaW5nIFByZXByb2Nlc3NvciBEaXJlY3RpdmUgSW52ZXN0aWdhdGlvbioqXG5cbkFscmlnaHQsIEknbSBzY2FubmluZyB0aGlzIGNvZGUsIGFuZCB0aGUgcHJlcHJvY2Vzc29yIGRpcmVjdGl2ZSBJJ20gZXhwZWN0aW5nIGlzbid0IGp1bXBpbmcgb3V0IGF0IG1lLiBMZXQncyBzdGFydCB0aGUgYW5hbHlzaXMgYXQgbGluZSA1MC4gSSdtIGFzc3VtaW5nIHRoYXQgaXQgaXMgaW4gdGhpcyByZWdpb24uIFRoaXMgaXMgd2hlcmUgdGhlIGNvcmUgbG9naWMgb2YgdGhlIGZ1bmN0aW9uYWxpdHkgaXMgcHJvYmFibHkgc2l0dWF0ZWQgYW5kIHdoZXJlIHRoZSBpc3N1ZSB3b3VsZCBtb3N0IGxpa2VseSBtYW5pZmVzdC4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGNvbnRyb2wgZmxvdyBhcm91bmQgdGhhdCBzZWN0aW9uLiBJcyB0aGUgZnVuY3Rpb25hbGl0eSBjb25kaXRpb25hbGx5IGNvbXBpbGVkIGluIG9yIG91dD8gSXQgY291bGQgYmUgbWlzc2luZyBvciBtYXliZSB0aGUgcmVsZXZhbnQgY29uZGl0aW9uIGhhcyBub3QgYmVlbiBtZXQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE0NzQ4LCJPdXRwdXRUb2tlbnMiOjQzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjEsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0wMlQxNDo1Mzo1NC41MTQ2NTE3MjZaIiwiU2VxIjoxOCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjU2NTMwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcIm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jdGwuY1wiLFxuICBcIkZpcnN0TGluZVwiOiA1MCxcbiAgXCJMaW5lQ291bnRcIjogMTAwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAgNTA6XFx0TU9EVUxFX0FMSUFTX0dFTkxfRkFNSUxZKElQVlNfR0VOTF9OQU1FKTtcXG4gIDUxOlxcdFxcbiAgNTI6XFx0c3RhdGljIHN0cnVjdCBsb2NrX2NsYXNzX2tleSBfX2lwdnNfc2VydmljZV9rZXk7XFxuICA1MzpcXHRcXG4gIDU0OlxcdC8qIHN5c2N0bCB2YXJpYWJsZXMgKi9cXG4gIDU1OlxcdFxcbiAgNTY6XFx0I2lmZGVmIENPTkZJR19JUF9WU19ERUJVR1xcbiAgNTc6XFx0c3RhdGljIGludCBzeXNjdGxfaXBfdnNfZGVidWdfbGV2ZWwgPSAwO1xcbiAgNTg6XFx0XFxuICA1OTpcXHRpbnQgaXBfdnNfZ2V0X2RlYnVnX2xldmVsKHZvaWQpXFxuICA2MDpcXHR7XFxuICA2MTpcXHRcXHRyZXR1cm4gc3lzY3RsX2lwX3ZzX2RlYnVnX2xldmVsO1xcbiAgNjI6XFx0fVxcbiAgNjM6XFx0I2VuZGlmXFxuICA2NDpcXHRcXG4gIDY1OlxcdFxcbiAgNjY6XFx0LyogIFByb3RvcyAqL1xcbiAgNjc6XFx0c3RhdGljIHZvaWQgX19pcF92c19kZWxfc2VydmljZShzdHJ1Y3QgaXBfdnNfc2VydmljZSAqc3ZjLCBib29sIGNsZWFudXApO1xcbiAgNjg6XFx0XFxuICA2OTpcXHRcXG4gIDcwOlxcdCNpZmRlZiBDT05GSUdfSVBfVlNfSVBWNlxcbiAgNzE6XFx0LyogVGFrZW4gZnJvbSBydDZfZmlsbF9ub2RlKCkgaW4gbmV0L2lwdjYvcm91dGUuYywgaXMgdGhlcmUgYSBiZXR0ZXIgd2F5PyAqL1xcbiAgNzI6XFx0c3RhdGljIGJvb2wgX19pcF92c19hZGRyX2lzX2xvY2FsX3Y2KHN0cnVjdCBuZXQgKm5ldCxcXG4gIDczOlxcdFxcdFxcdFxcdFxcdCAgICAgY29uc3Qgc3RydWN0IGluNl9hZGRyICphZGRyKVxcbiAgNzQ6XFx0e1xcbiAgNzU6XFx0XFx0c3RydWN0IGZsb3dpNiBmbDYgPSB7XFxuICA3NjpcXHRcXHRcXHQuZGFkZHIgPSAqYWRkcixcXG4gIDc3OlxcdFxcdH07XFxuICA3ODpcXHRcXHRzdHJ1Y3QgZHN0X2VudHJ5ICpkc3QgPSBpcDZfcm91dGVfb3V0cHV0KG5ldCwgTlVMTCwgXFx1MDAyNmZsNik7XFxuICA3OTpcXHRcXHRib29sIGlzX2xvY2FsO1xcbiAgODA6XFx0XFxuICA4MTpcXHRcXHRpc19sb2NhbCA9ICFkc3QtXFx1MDAzZWVycm9yIFxcdTAwMjZcXHUwMDI2IGRzdC1cXHUwMDNlZGV2IFxcdTAwMjZcXHUwMDI2IChkc3QtXFx1MDAzZWRldi1cXHUwMDNlZmxhZ3MgXFx1MDAyNiBJRkZfTE9PUEJBQ0spO1xcbiAgODI6XFx0XFxuICA4MzpcXHRcXHRkc3RfcmVsZWFzZShkc3QpO1xcbiAgODQ6XFx0XFx0cmV0dXJuIGlzX2xvY2FsO1xcbiAgODU6XFx0fVxcbiAgODY6XFx0I2VuZGlmXFxuICA4NzpcXHRcXG4gIDg4OlxcdCNpZmRlZiBDT05GSUdfU1lTQ1RMXFxuICA4OTpcXHQvKlxcbiAgOTA6XFx0ICpcXHR1cGRhdGVfZGVmZW5zZV9sZXZlbCBpcyBjYWxsZWQgZnJvbSBrZXZlbnRkIGFuZCBmcm9tIHN5c2N0bCxcXG4gIDkxOlxcdCAqXFx0c28gaXQgbmVlZHMgdG8gcHJvdGVjdCBpdHNlbGYgZnJvbSBzb2Z0aXJxc1xcbiAgOTI6XFx0ICovXFxuICA5MzpcXHRzdGF0aWMgdm9pZCB1cGRhdGVfZGVmZW5zZV9sZXZlbChzdHJ1Y3QgbmV0bnNfaXB2cyAqaXB2cylcXG4gIDk0OlxcdHtcXG4gIDk1OlxcdFxcdHN0cnVjdCBzeXNpbmZvIGk7XFxuICA5NjpcXHRcXHRpbnQgYXZhaWxtZW07XFxuICA5NzpcXHRcXHRpbnQgYW1lbXRocmVzaDtcXG4gIDk4OlxcdFxcdGludCBub21lbTtcXG4gIDk5OlxcdFxcdGludCB0b19jaGFuZ2UgPSAtMTtcXG4gMTAwOlxcdFxcbiAxMDE6XFx0XFx0Lyogd2Ugb25seSBjb3VudCBmcmVlIGFuZCBidWZmZXJlZCBtZW1vcnkgKGluIHBhZ2VzKSAqL1xcbiAxMDI6XFx0XFx0c2lfbWVtaW5mbyhcXHUwMDI2aSk7XFxuIDEwMzpcXHRcXHRhdmFpbG1lbSA9IGkuZnJlZXJhbSArIGkuYnVmZmVycmFtO1xcbiAxMDQ6XFx0XFx0LyogaG93ZXZlciBpbiBsaW51eCAyLjUgdGhlIGkuYnVmZmVycmFtIGlzIHRvdGFsIHBhZ2UgY2FjaGUgc2l6ZSxcXG4gMTA1OlxcdFxcdCAgIHdlIG5lZWQgYWRqdXN0IGl0ICovXFxuIDEwNjpcXHRcXHQvKiBzaV9zd2FwaW5mbyhcXHUwMDI2aSk7ICovXFxuIDEwNzpcXHRcXHQvKiBhdmFpbG1lbSA9IGF2YWlsbWVtIC0gKGkudG90YWxzd2FwIC0gaS5mcmVlc3dhcCk7ICovXFxuIDEwODpcXHRcXG4gMTA5OlxcdFxcdGFtZW10aHJlc2ggPSBtYXgoUkVBRF9PTkNFKGlwdnMtXFx1MDAzZXN5c2N0bF9hbWVtdGhyZXNoKSwgMCk7XFxuIDExMDpcXHRcXHRub21lbSA9IChhdmFpbG1lbSBcXHUwMDNjIGFtZW10aHJlc2gpO1xcbiAxMTE6XFx0XFxuIDExMjpcXHRcXHRsb2NhbF9iaF9kaXNhYmxlKCk7XFxuIDExMzpcXHRcXG4gMTE0OlxcdFxcdC8qIGRyb3BfZW50cnkgKi9cXG4gMTE1OlxcdFxcdHNwaW5fbG9jayhcXHUwMDI2aXB2cy1cXHUwMDNlZHJvcGVudHJ5X2xvY2spO1xcbiAxMTY6XFx0XFx0c3dpdGNoIChpcHZzLVxcdTAwM2VzeXNjdGxfZHJvcF9lbnRyeSkge1xcbiAxMTc6XFx0XFx0Y2FzZSAwOlxcbiAxMTg6XFx0XFx0XFx0YXRvbWljX3NldChcXHUwMDI2aXB2cy1cXHUwMDNlZHJvcGVudHJ5LCAwKTtcXG4gMTE5OlxcdFxcdFxcdGJyZWFrO1xcbiAxMjA6XFx0XFx0Y2FzZSAxOlxcbiAxMjE6XFx0XFx0XFx0aWYgKG5vbWVtKSB7XFxuIDEyMjpcXHRcXHRcXHRcXHRhdG9taWNfc2V0KFxcdTAwMjZpcHZzLVxcdTAwM2Vkcm9wZW50cnksIDEpO1xcbiAxMjM6XFx0XFx0XFx0XFx0aXB2cy1cXHUwMDNlc3lzY3RsX2Ryb3BfZW50cnkgPSAyO1xcbiAxMjQ6XFx0XFx0XFx0fSBlbHNlIHtcXG4gMTI1OlxcdFxcdFxcdFxcdGF0b21pY19zZXQoXFx1MDAyNmlwdnMtXFx1MDAzZWRyb3BlbnRyeSwgMCk7XFxuIDEyNjpcXHRcXHRcXHR9XFxuIDEyNzpcXHRcXHRcXHRicmVhaztcXG4gMTI4OlxcdFxcdGNhc2UgMjpcXG4gMTI5OlxcdFxcdFxcdGlmIChub21lbSkge1xcbiAxMzA6XFx0XFx0XFx0XFx0YXRvbWljX3NldChcXHUwMDI2aXB2cy1cXHUwMDNlZHJvcGVudHJ5LCAxKTtcXG4gMTMxOlxcdFxcdFxcdH0gZWxzZSB7XFxuIDEzMjpcXHRcXHRcXHRcXHRhdG9taWNfc2V0KFxcdTAwMjZpcHZzLVxcdTAwM2Vkcm9wZW50cnksIDApO1xcbiAxMzM6XFx0XFx0XFx0XFx0aXB2cy1cXHUwMDNlc3lzY3RsX2Ryb3BfZW50cnkgPSAxO1xcbiAxMzQ6XFx0XFx0XFx0fVxcbiAxMzU6XFx0XFx0XFx0YnJlYWs7XFxuIDEzNjpcXHRcXHRjYXNlIDM6XFxuIDEzNzpcXHRcXHRcXHRhdG9taWNfc2V0KFxcdTAwMjZpcHZzLVxcdTAwM2Vkcm9wZW50cnksIDEpO1xcbiAxMzg6XFx0XFx0XFx0YnJlYWs7XFxuIDEzOTpcXHRcXHR9XFxuIDE0MDpcXHRcXHRzcGluX3VubG9jayhcXHUwMDI2aXB2cy1cXHUwMDNlZHJvcGVudHJ5X2xvY2spO1xcbiAxNDE6XFx0XFxuIDE0MjpcXHRcXHQvKiBkcm9wX3BhY2tldCAqL1xcbiAxNDM6XFx0XFx0c3Bpbl9sb2NrKFxcdTAwMjZpcHZzLVxcdTAwM2Vkcm9wcGFja2V0X2xvY2spO1xcbiAxNDQ6XFx0XFx0c3dpdGNoIChpcHZzLVxcdTAwM2VzeXNjdGxfZHJvcF9wYWNrZXQpIHtcXG4gMTQ1OlxcdFxcdGNhc2UgMDpcXG4gMTQ2OlxcdFxcdFxcdGlwdnMtXFx1MDAzZWRyb3BfcmF0ZSA9IDA7XFxuIDE0NzpcXHRcXHRcXHRicmVhaztcXG4gMTQ4OlxcdFxcdGNhc2UgMTpcXG4gMTQ5OlxcdFxcdFxcdGlmIChub21lbSkge1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wMlQxNDo1Mzo1NC41MTQ5MTE3MjZaIiwiU2VxIjoxOSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTAyMzc5ODI5NCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgQ29uZGl0aW9uYWwgQ29tcGlsYXRpb24gaW4gS2VybmVsIENvZGUqKlxuXG5Pa2F5LCBsZXQncyBzZWUsIHN0YXJ0aW5nIHdpdGggbGluZSA4OC4gSSBzZWUgYSBgI2lmZGVmIENPTkZJR19TWVNDVExgIGRpcmVjdGl2ZSB0aGVyZSwgd2hpY2ggbWVhbnMgdGhlIGBkZWZlbnNlX3dvcmtfaGFuZGxlcmAgZnVuY3Rpb24gd2lsbCBvbmx5IGJlIGNvbXBpbGVkIGlmIHRoZSBgQ09ORklHX1NZU0NUTGAgb3B0aW9uIGlzIGVuYWJsZWQgaW4gdGhlIGtlcm5lbCBjb25maWd1cmF0aW9uLiBJIG5lZWQgdG8ga2VlcCB0aGF0IGluIG1pbmQuIE5vdywgSSBzaG91bGQgZG91YmxlIGNoZWNrIHRvIHNlZSBpZiB0aGUgYGVzdF9yZWxvYWRfd29ya19oYW5kbGVyYCBpcyBzaW1pbGFybHkgY29uZGl0aW9uYWwuIExldCdzIHNlZS4uLiBsb29raW5nIGZ1cnRoZXIgZG93biwgaXQncyBhdCBsaW5lIDI0Mywgd2l0aCB0aGUgYCNlbmRpZmAgZm9yIGBDT05GSUdfU1lTQ1RMYCBqdXN0IGFib3ZlIGF0IGxpbmUgMjQxLiBBbHJpZ2h0LCBzbyBgZXN0X3JlbG9hZF93b3JrX2hhbmRsZXJgIGlzICphbHdheXMqIGNvbXBpbGVkLCByZWdhcmRsZXNzIG9mIGBDT05GSUdfU1lTQ1RMYC4gVGhhdCdzIGltcG9ydGFudCB0byByZW1lbWJlciBmb3IgZnV0dXJlIGRlYnVnZ2luZyBvciBhbmFseXNpcy4gTm93LCBJIHJlY2FsbCB0aGF0IGBpcF92c19lc3RfcmVsb2FkX3N0YXJ0YCBpcyBkZWZpbmVkIHdpdGhpbiBgaXBfdnNfZXN0LmNgLCBzbyBJIHNob3VsZCBnbyBhbmQgY2hlY2sgdGhhdCBmaWxlIGFyb3VuZCBsaW5lIDI0My5cblxuXG4iLCJJbnB1dFRva2VucyI6MTYzMzUsIk91dHB1dFRva2VucyI6NDMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMzQsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0wMlQxNDo1Mzo1OS41Mzg3MTE4NVoiLCJTZXEiOjIwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMDExMjAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwibmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2VzdC5jXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDIwMCxcbiAgXCJMaW5lQ291bnRcIjogNTBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiIDIwMDpcXHRcXHRcXHRcXHRpcF92c19lc3RfZHJhaW5fdGVtcF9saXN0KGlwdnMpO1xcbiAyMDE6XFx0XFx0XFx0c2V0X2N1cnJlbnRfc3RhdGUoVEFTS19JRExFKTtcXG4gMjAyOlxcdFxcdFxcdGlmIChrdGhyZWFkX3Nob3VsZF9zdG9wKCkpXFxuIDIwMzpcXHRcXHRcXHRcXHRicmVhaztcXG4gMjA0OlxcdFxcbiAyMDU6XFx0XFx0XFx0LyogYmVmb3JlIGVzdGltYXRpb24sIGNoZWNrIGlmIHdlIHNob3VsZCBzbGVlcCAqL1xcbiAyMDY6XFx0XFx0XFx0bm93ID0gamlmZmllcztcXG4gMjA3OlxcdFxcdFxcdGdhcCA9IGtkLVxcdTAwM2Vlc3RfdGltZXIgLSBub3c7XFxuIDIwODpcXHRcXHRcXHRpZiAoZ2FwIFxcdTAwM2UgMCkge1xcbiAyMDk6XFx0XFx0XFx0XFx0aWYgKGdhcCBcXHUwMDNlIElQVlNfRVNUX1RJQ0spIHtcXG4gMjEwOlxcdFxcdFxcdFxcdFxcdGtkLVxcdTAwM2Vlc3RfdGltZXIgPSBub3cgLSBJUFZTX0VTVF9USUNLO1xcbiAyMTE6XFx0XFx0XFx0XFx0XFx0Z2FwID0gSVBWU19FU1RfVElDSztcXG4gMjEyOlxcdFxcdFxcdFxcdH1cXG4gMjEzOlxcdFxcdFxcdFxcdHNjaGVkdWxlX3RpbWVvdXQoZ2FwKTtcXG4gMjE0OlxcdFxcdFxcdH0gZWxzZSB7XFxuIDIxNTpcXHRcXHRcXHRcXHRfX3NldF9jdXJyZW50X3N0YXRlKFRBU0tfUlVOTklORyk7XFxuIDIxNjpcXHRcXHRcXHRcXHRpZiAoZ2FwIFxcdTAwM2MgLTggKiBJUFZTX0VTVF9USUNLKVxcbiAyMTc6XFx0XFx0XFx0XFx0XFx0a2QtXFx1MDAzZWVzdF90aW1lciA9IG5vdztcXG4gMjE4OlxcdFxcdFxcdH1cXG4gMjE5OlxcdFxcbiAyMjA6XFx0XFx0XFx0aWYgKGtkLVxcdTAwM2V0aWNrX2xlbltyb3ddKVxcbiAyMjE6XFx0XFx0XFx0XFx0aXBfdnNfdGlja19lc3RpbWF0aW9uKGtkLCByb3cpO1xcbiAyMjI6XFx0XFxuIDIyMzpcXHRcXHRcXHRyb3crKztcXG4gMjI0OlxcdFxcdFxcdGlmIChyb3cgXFx1MDAzZT0gSVBWU19FU1RfTlRJQ0tTKVxcbiAyMjU6XFx0XFx0XFx0XFx0cm93ID0gMDtcXG4gMjI2OlxcdFxcdFxcdFdSSVRFX09OQ0Uoa2QtXFx1MDAzZWVzdF9yb3csIHJvdyk7XFxuIDIyNzpcXHRcXHRcXHRrZC1cXHUwMDNlZXN0X3RpbWVyICs9IElQVlNfRVNUX1RJQ0s7XFxuIDIyODpcXHRcXHR9XFxuIDIyOTpcXHRcXHRfX3NldF9jdXJyZW50X3N0YXRlKFRBU0tfUlVOTklORyk7XFxuIDIzMDpcXHRcXG4gMjMxOlxcdFxcdHJldHVybiAwO1xcbiAyMzI6XFx0fVxcbiAyMzM6XFx0XFxuIDIzNDpcXHQvKiBTY2hlZHVsZSBzdG9wL3N0YXJ0IGZvciBrdGhyZWFkIHRhc2tzICovXFxuIDIzNTpcXHR2b2lkIGlwX3ZzX2VzdF9yZWxvYWRfc3RhcnQoc3RydWN0IG5ldG5zX2lwdnMgKmlwdnMsIGJvb2wgcmVzdGFydClcXG4gMjM2OlxcdHtcXG4gMjM3OlxcdFxcdGxvY2tkZXBfYXNzZXJ0X2hlbGQoXFx1MDAyNmlwdnMtXFx1MDAzZWVzdF9tdXRleCk7XFxuIDIzODpcXHRcXG4gMjM5OlxcdFxcdC8qIElnbm9yZSByZWxvYWRzIGJlZm9yZSBmaXJzdCBzZXJ2aWNlIGlzIGFkZGVkICovXFxuIDI0MDpcXHRcXHRpZiAoIVJFQURfT05DRShpcHZzLVxcdTAwM2VlbmFibGUpKVxcbiAyNDE6XFx0XFx0XFx0cmV0dXJuO1xcbiAyNDI6XFx0XFx0aXBfdnNfZXN0X3N0b3BwZWRfcmVjYWxjKGlwdnMpO1xcbiAyNDM6XFx0XFx0LyogQnVtcCB0aGUga3RocmVhZCBjb25maWd1cmF0aW9uIGdlbmlkIGlmIHN0b3BwaW5nIGlzIHJlcXVlc3RlZCAqL1xcbiAyNDQ6XFx0XFx0aWYgKHJlc3RhcnQpXFxuIDI0NTpcXHRcXHRcXHRhdG9taWNfaW5jKFxcdTAwMjZpcHZzLVxcdTAwM2Vlc3RfZ2VuaWQpO1xcbiAyNDY6XFx0XFx0cXVldWVfZGVsYXllZF93b3JrKHN5c3RlbV9kZmxfbG9uZ193cSwgXFx1MDAyNmlwdnMtXFx1MDAzZWVzdF9yZWxvYWRfd29yaywgMCk7XFxuIDI0NzpcXHR9XFxuIDI0ODpcXHRcXG4gMjQ5OlxcdC8qIFN0YXJ0IGt0aHJlYWQgdGFzayB3aXRoIGN1cnJlbnQgY29uZmlndXJhdGlvbiAqL1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wMlQxNDo1Mzo1OS41Mzg4MTQxMloiLCJTZXEiOjIxLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoxMTY5NDE0MDQ2OCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXNpcyBvZiBJUFZTIFBhdGNoIGZvciBGdXp6aW5nIFN1aXRhYmlsaXR5KipcblxuT2theSwgc28gSSd2ZSBnb3QgdGhpcyBwYXRjaCBmb3IgSVBWUyB0byByZXZpZXcuIE15IGltbWVkaWF0ZSBmb2N1cywgYmFzZWQgb24gdGhlIGNvZGUsIGxhbmRzIG9uIHRoZSBmdW5jdGlvbnMgYGRlZmVuc2Vfd29ya19oYW5kbGVyYCwgYGVzdF9yZWxvYWRfd29ya19oYW5kbGVyYCwgYW5kIGBpcF92c19lc3RfcmVsb2FkX3N0YXJ0YC4gVGhlIHJlbGV2YW50IGNvbmZpZyBpcyBvYnZpb3VzbHkgYElQX1ZTYCwgYW5kIEknbGwgaW5jbHVkZSB0aGF0IGFzIGVuYWJsZWQuIEFuZCB5ZXMsIGBTWVNDVExgIGlzIGFsbW9zdCBhbHdheXMgZW5hYmxlZC4gSSdsbCBzdGljayB3aXRoIGxpc3RpbmcgYElQX1ZTYCBmb3IgY2xhcml0eS5cblxuTm93LCBsZXQncyBkb3VibGUtY2hlY2sgYWdhaW5zdCB0aGUgY3JpdGVyaWEgZm9yIFwiV29ydGhGdXp6aW5nPWZhbHNlLlwiIFRoZSBpbnN0cnVjdGlvbnMgYXJlIGNsZWFyOiBpZiB0aGUgcGF0Y2ggbW9kaWZpZXMgdW5yZWFjaGFibGUgY29kZSBwYXRocyBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwgZXZlbiB3aXRoIHNvZnR3YXJlIGVtdWxhdGlvbiwgdGhlbiBpdCBpc24ndCB3b3J0aCBmdXp6aW5nLiBJIG5lZWQgdG8gbWFrZSBzdXJlIHRoaXMgaXNuJ3QgdGhlIGNhc2UuIEFuZCBJUFZTICppcyogcmVhY2hhYmxlLCBzbyB0aGF0J3MgZ29vZC4gQW5kIHRoZXNlIGFyZSBmdW5jdGlvbmFsIGNoYW5nZXMsIHNvIHRoaXMgKmlzKiB3b3J0aCBmdXp6aW5nLlxuXG5Mb29raW5nIG1vcmUgY2xvc2VseSBhdCB0aGUgcGF0Y2ggaXRzZWxmICh3aGljaCBpcyByZWFsbHkganVzdCBhIHNpbXBsZSBjaGFuZ2UpLCBpdCBhcHBlYXJzIHRvIGludm9sdmUgY2hhbmdlcyB0byB3aGVyZSBkZWxheWVkIHdvcmsgaXMgcXVldWVkLiBTcGVjaWZpY2FsbHksIGl0J3MgbW92aW5nIGZyb20gYHN5c3RlbV9sb25nX3dxYCB0byBgc3lzdGVtX2RmbF9sb25nX3dxYCBpbiB0aHJlZSBwbGFjZXM6IHRoZSBgZGVmZW5zZV93b3JrX2hhbmRsZXJgLCB0aGUgYGVzdF9yZWxvYWRfd29ya19oYW5kbGVyYCwgYW5kIHRoZSBgaXBfdnNfZXN0X3JlbG9hZF9zdGFydGAgZnVuY3Rpb25zLlxuXG5PcmlnaW5hbGx5IEkgd2FzIGFsc28gZ29pbmcgdG8gaW5jbHVkZSBgaXBfdnNfY29udHJvbF9uZXRfaW5pdF9zeXNjdGxgLCBidXQgdGhhdCdzIGFuIGluaXRpYWxpemF0aW9uIGZ1bmN0aW9uLiBJdCdzIG5vdCBhIGdvb2QgZnVuY3Rpb24gdG8gZnV6eiwgYmVjYXVzZSBpdCdzIG5vdCBhIGZ1bmN0aW9uIHRoYXQgZ2V0cyBjYWxsZWQgcmVwZWF0ZWRseSwgaXQncyBqdXN0IGNhbGxlZCBhdCBpbml0aWFsaXphdGlvbi5cblxuQWxyaWdodCwgd2l0aCB0aGF0IGluIG1pbmQsIEkgYW0gY29uZmlkZW50IHRoYXQgdGhlc2UgY2hhbmdlcyBhcmUgaW5kZWVkIHdvcnRoIGZ1enppbmcuIFRoZXJlZm9yZTogYFdvcnRoRnV6emluZz10cnVlYC4gTXkgYEZvY3VzU3ltYm9sc2Agd2lsbCBiZTogYGRlZmVuc2Vfd29ya19oYW5kbGVyYCwgYGVzdF9yZWxvYWRfd29ya19oYW5kbGVyYCwgYW5kIGBpcF92c19lc3RfcmVsb2FkX3N0YXJ0YC4gYEVuYWJsZUNvbmZpZ3NgIHJlbWFpbnMgYXQ6IGBJUF9WU2AuIEknbGwgZ28gYWhlYWQgYW5kIHNldCB0aGVzZSByZXN1bHRzLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxNzQ5MSwiT3V0cHV0VG9rZW5zIjoxMjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMDE0LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMDJUMTQ6NTQ6MTEuMjMyOTU3OTQ3WiIsIlNlcSI6MjIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTM4OTUxNTE0LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJJUF9WU1wiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImRlZmVuc2Vfd29ya19oYW5kbGVyXCIsXG4gICAgXCJlc3RfcmVsb2FkX3dvcmtfaGFuZGxlclwiLFxuICAgIFwiaXBfdnNfZXN0X3JlbG9hZF9zdGFydFwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGNoYW5nZXMgdGhlIHdvcmtxdWV1ZSB1c2VkIGZvciBJUFZTIGRlZmVuc2UgYW5kIGVzdGltYXRpb24gcmVsb2FkIHdvcmsgZnJvbSBzeXN0ZW1fbG9uZ193cSB0byBzeXN0ZW1fZGZsX2xvbmdfd3EuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgY29yZSBJUFZTIGxvZ2ljIHRoYXQgYWx0ZXJzIGV4ZWN1dGlvbiBmbG93LCBzbyBpdCBzaG91bGQgYmUgZnV6emVkLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIklQX1ZTXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiZGVmZW5zZV93b3JrX2hhbmRsZXJcIixcbiAgICBcImVzdF9yZWxvYWRfd29ya19oYW5kbGVyXCIsXG4gICAgXCJpcF92c19lc3RfcmVsb2FkX3N0YXJ0XCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggY2hhbmdlcyB0aGUgd29ya3F1ZXVlIHVzZWQgZm9yIElQVlMgZGVmZW5zZSBhbmQgZXN0aW1hdGlvbiByZWxvYWQgd29yayBmcm9tIHN5c3RlbV9sb25nX3dxIHRvIHN5c3RlbV9kZmxfbG9uZ193cS4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBjb3JlIElQVlMgbG9naWMgdGhhdCBhbHRlcnMgZXhlY3V0aW9uIGZsb3csIHNvIGl0IHNob3VsZCBiZSBmdXp6ZWQuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/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-workflowxb94v[0].run-triage(0) Phase: Succeeded StartedAt: 2026-07-02 14:41:55 +0000 UTC FinishedAt: 2026-07-02 14:54:13 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "nf-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf-next.git", "commit_hash": "f456c1922c49e6be5ce407ddb74a6e61af5b65cf", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "IP_VS" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "nf-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf-next.git", "commit_hash": "f456c1922c49e6be5ce407ddb74a6e61af5b65cf", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "IP_VS" ], "series_id": "3a50b708-b08a-4149-8c61-00786c8807bb" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "defense_work_handler", "est_reload_work_handler", "ip_vs_est_reload_start" ], "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+CgkJCTx0ZD4yMDI2LzA3LzAyIDE0OjUzPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0lQX1ZTJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7ZGVmZW5zZV93b3JrX2hhbmRsZXImIzM0OywKICAgICYjMzQ7ZXN0X3JlbG9hZF93b3JrX2hhbmRsZXImIzM0OywKICAgICYjMzQ7aXBfdnNfZXN0X3JlbG9hZF9zdGFydCYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBjaGFuZ2VzIHRoZSB3b3JrcXVldWUgdXNlZCBmb3IgSVBWUyBkZWZlbnNlIGFuZCBlc3RpbWF0aW9uIHJlbG9hZCB3b3JrIGZyb20gc3lzdGVtX2xvbmdfd3EgdG8gc3lzdGVtX2RmbF9sb25nX3dxLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIGNvcmUgSVBWUyBsb2dpYyB0aGF0IGFsdGVycyBleGVjdXRpb24gZmxvdywgc28gaXQgc2hvdWxkIGJlIGZ1enplZC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMiAxNDo1MzwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IGYyMDA4ZTcwNzNjZTdmZWM4ZTM3ZTZkNzNiMjE3NTIwMzY4ZTY0N2RcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgVGh1IEp1bCAyIDE0OjUzOjAzIDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jdGwuYyBiL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jdGwuY1xuaW5kZXggYmNmNDBiOGM0MWNmMjYuLmQ3ZTY2OWVmYWI0ZGRjIDEwMDY0NFxuLS0tIGEvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2N0bC5jXG4mIzQzOyYjNDM7JiM0MzsgYi9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY3RsLmNcbkBAIC0yMzUsNyAmIzQzOzIzNSw3IEBAIHN0YXRpYyB2b2lkIGRlZmVuc2Vfd29ya19oYW5kbGVyKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaylcbiBcdHVwZGF0ZV9kZWZlbnNlX2xldmVsKGlwdnMpO1xuIFx0aWYgKGF0b21pY19yZWFkKFx1MDAyNmlwdnMtXHUwMDNlZHJvcGVudHJ5KSlcbiBcdFx0aXBfdnNfcmFuZG9tX2Ryb3BlbnRyeShpcHZzKTtcbi1cdHF1ZXVlX2RlbGF5ZWRfd29yayhzeXN0ZW1fbG9uZ193cSwgXHUwMDI2aXB2cy1cdTAwM2VkZWZlbnNlX3dvcmssXG4mIzQzO1x0cXVldWVfZGVsYXllZF93b3JrKHN5c3RlbV9kZmxfbG9uZ193cSwgXHUwMDI2aXB2cy1cdTAwM2VkZWZlbnNlX3dvcmssXG4gXHRcdFx0ICAgREVGRU5TRV9USU1FUl9QRVJJT0QpO1xuIH1cbiAjZW5kaWZcbkBAIC0yOTAsNyAmIzQzOzI5MCw3IEBAIHN0YXRpYyB2b2lkIGVzdF9yZWxvYWRfd29ya19oYW5kbGVyKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaylcbiBcdGF0b21pY19zZXQoXHUwMDI2aXB2cy1cdTAwM2Vlc3RfZ2VuaWRfZG9uZSwgZ2VuaWQpO1xuIFxuIFx0aWYgKHJlcGVhdClcbi1cdFx0cXVldWVfZGVsYXllZF93b3JrKHN5c3RlbV9sb25nX3dxLCBcdTAwMjZpcHZzLVx1MDAzZWVzdF9yZWxvYWRfd29yayxcbiYjNDM7XHRcdHF1ZXVlX2RlbGF5ZWRfd29yayhzeXN0ZW1fZGZsX2xvbmdfd3EsIFx1MDAyNmlwdnMtXHUwMDNlZXN0X3JlbG9hZF93b3JrLFxuIFx0XHRcdFx0ICAgZGVsYXkpO1xuIFxuIHVubG9jazpcbkBAIC01MTI2LDcgJiM0Mzs1MTI2LDcgQEAgc3RhdGljIGludCBfX25ldF9pbml0IGlwX3ZzX2NvbnRyb2xfbmV0X2luaXRfc3lzY3RsKHN0cnVjdCBuZXRuc19pcHZzICppcHZzKVxuIFx0XHRnb3RvIGVycjtcbiBcbiBcdC8qIFNjaGVkdWxlIGRlZmVuc2Ugd29yayAqL1xuLVx0cXVldWVfZGVsYXllZF93b3JrKHN5c3RlbV9sb25nX3dxLCBcdTAwMjZpcHZzLVx1MDAzZWRlZmVuc2Vfd29yayxcbiYjNDM7XHRxdWV1ZV9kZWxheWVkX3dvcmsoc3lzdGVtX2RmbF9sb25nX3dxLCBcdTAwMjZpcHZzLVx1MDAzZWRlZmVuc2Vfd29yayxcbiBcdFx0XHQgICBERUZFTlNFX1RJTUVSX1BFUklPRCk7XG4gXG4gXHRyZXR1cm4gMDtcbmRpZmYgLS1naXQgYS9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfZXN0LmMgYi9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfZXN0LmNcbmluZGV4IGFiMDlmNTE4Mjk1MTIyLi43ODk2NGFhODYxZTljMSAxMDA2NDRcbi0tLSBhL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19lc3QuY1xuJiM0MzsmIzQzOyYjNDM7IGIvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2VzdC5jXG5AQCAtMjQzLDcgJiM0MzsyNDMsNyBAQCB2b2lkIGlwX3ZzX2VzdF9yZWxvYWRfc3RhcnQoc3RydWN0IG5ldG5zX2lwdnMgKmlwdnMsIGJvb2wgcmVzdGFydClcbiBcdC8qIEJ1bXAgdGhlIGt0aHJlYWQgY29uZmlndXJhdGlvbiBnZW5pZCBpZiBzdG9wcGluZyBpcyByZXF1ZXN0ZWQgKi9cbiBcdGlmIChyZXN0YXJ0KVxuIFx0XHRhdG9taWNfaW5jKFx1MDAyNmlwdnMtXHUwMDNlZXN0X2dlbmlkKTtcbi1cdHF1ZXVlX2RlbGF5ZWRfd29yayhzeXN0ZW1fbG9uZ193cSwgXHUwMDI2aXB2cy1cdTAwM2Vlc3RfcmVsb2FkX3dvcmssIDApO1xuJiM0MztcdHF1ZXVlX2RlbGF5ZWRfd29yayhzeXN0ZW1fZGZsX2xvbmdfd3EsIFx1MDAyNmlwdnMtXHUwMDNlZXN0X3JlbG9hZF93b3JrLCAwKTtcbiB9XG4gXG4gLyogU3RhcnQga3RocmVhZCB0YXNrIHdpdGggY3VycmVudCBjb25maWd1cmF0aW9uICovXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDIgMTQ6NTM8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7SVBfVlMmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtkZWZlbnNlX3dvcmtfaGFuZGxlciYjMzQ7LAogICAgJiMzNDtlc3RfcmVsb2FkX3dvcmtfaGFuZGxlciYjMzQ7LAogICAgJiMzNDtpcF92c19lc3RfcmVsb2FkX3N0YXJ0JiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGNoYW5nZXMgdGhlIHdvcmtxdWV1ZSB1c2VkIGZvciBJUFZTIGRlZmVuc2UgYW5kIGVzdGltYXRpb24gcmVsb2FkIHdvcmsgZnJvbSBzeXN0ZW1fbG9uZ193cSB0byBzeXN0ZW1fZGZsX2xvbmdfd3EuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgY29yZSBJUFZTIGxvZ2ljIHRoYXQgYWx0ZXJzIGV4ZWN1dGlvbiBmbG93LCBzbyBpdCBzaG91bGQgYmUgZnV6emVkLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmUKaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseQp1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLgoKUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczoKLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLgotIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLgotIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4KLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsCmV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLgogICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCiAgIERvIG5vdCBsaXN0IHRvbyBnZW5lcmljIGNvbmZpZ3MgKHdlIGFscmVhZHkgaGF2ZSB0aGVtIGVuYWJsZWQpLiBPbmx5IGxpc3QgdGhvc2UgdGhhdAogICBzcGVjaWZpY2FsbHkgY292ZXIgdGhlIG1vZGlmaWVkIGNvZGUuIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncyBvdXRwdXQgYXJyYXksCiAgIGFuZCBETyBOT1QgYWRkIGEgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCBmMjAwOGU3MDczY2U3ZmVjOGUzN2U2ZDczYjIxNzUyMDM2OGU2NDdkCkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIFRodSBKdWwgMiAxNDo1MzowMyAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jdGwuYyBiL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jdGwuYwppbmRleCBiY2Y0MGI4YzQxY2YyNi4uZDdlNjY5ZWZhYjRkZGMgMTAwNjQ0Ci0tLSBhL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jdGwuYwomIzQzOyYjNDM7JiM0MzsgYi9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY3RsLmMKQEAgLTIzNSw3ICYjNDM7MjM1LDcgQEAgc3RhdGljIHZvaWQgZGVmZW5zZV93b3JrX2hhbmRsZXIoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKQogCXVwZGF0ZV9kZWZlbnNlX2xldmVsKGlwdnMpOwogCWlmIChhdG9taWNfcmVhZCgmYW1wO2lwdnMtJmd0O2Ryb3BlbnRyeSkpCiAJCWlwX3ZzX3JhbmRvbV9kcm9wZW50cnkoaXB2cyk7Ci0JcXVldWVfZGVsYXllZF93b3JrKHN5c3RlbV9sb25nX3dxLCAmYW1wO2lwdnMtJmd0O2RlZmVuc2Vfd29yaywKJiM0MzsJcXVldWVfZGVsYXllZF93b3JrKHN5c3RlbV9kZmxfbG9uZ193cSwgJmFtcDtpcHZzLSZndDtkZWZlbnNlX3dvcmssCiAJCQkgICBERUZFTlNFX1RJTUVSX1BFUklPRCk7CiB9CiAjZW5kaWYKQEAgLTI5MCw3ICYjNDM7MjkwLDcgQEAgc3RhdGljIHZvaWQgZXN0X3JlbG9hZF93b3JrX2hhbmRsZXIoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKQogCWF0b21pY19zZXQoJmFtcDtpcHZzLSZndDtlc3RfZ2VuaWRfZG9uZSwgZ2VuaWQpOwogCiAJaWYgKHJlcGVhdCkKLQkJcXVldWVfZGVsYXllZF93b3JrKHN5c3RlbV9sb25nX3dxLCAmYW1wO2lwdnMtJmd0O2VzdF9yZWxvYWRfd29yaywKJiM0MzsJCXF1ZXVlX2RlbGF5ZWRfd29yayhzeXN0ZW1fZGZsX2xvbmdfd3EsICZhbXA7aXB2cy0mZ3Q7ZXN0X3JlbG9hZF93b3JrLAogCQkJCSAgIGRlbGF5KTsKIAogdW5sb2NrOgpAQCAtNTEyNiw3ICYjNDM7NTEyNiw3IEBAIHN0YXRpYyBpbnQgX19uZXRfaW5pdCBpcF92c19jb250cm9sX25ldF9pbml0X3N5c2N0bChzdHJ1Y3QgbmV0bnNfaXB2cyAqaXB2cykKIAkJZ290byBlcnI7CiAKIAkvKiBTY2hlZHVsZSBkZWZlbnNlIHdvcmsgKi8KLQlxdWV1ZV9kZWxheWVkX3dvcmsoc3lzdGVtX2xvbmdfd3EsICZhbXA7aXB2cy0mZ3Q7ZGVmZW5zZV93b3JrLAomIzQzOwlxdWV1ZV9kZWxheWVkX3dvcmsoc3lzdGVtX2RmbF9sb25nX3dxLCAmYW1wO2lwdnMtJmd0O2RlZmVuc2Vfd29yaywKIAkJCSAgIERFRkVOU0VfVElNRVJfUEVSSU9EKTsKIAogCXJldHVybiAwOwpkaWZmIC0tZ2l0IGEvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2VzdC5jIGIvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2VzdC5jCmluZGV4IGFiMDlmNTE4Mjk1MTIyLi43ODk2NGFhODYxZTljMSAxMDA2NDQKLS0tIGEvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2VzdC5jCiYjNDM7JiM0MzsmIzQzOyBiL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19lc3QuYwpAQCAtMjQzLDcgJiM0MzsyNDMsNyBAQCB2b2lkIGlwX3ZzX2VzdF9yZWxvYWRfc3RhcnQoc3RydWN0IG5ldG5zX2lwdnMgKmlwdnMsIGJvb2wgcmVzdGFydCkKIAkvKiBCdW1wIHRoZSBrdGhyZWFkIGNvbmZpZ3VyYXRpb24gZ2VuaWQgaWYgc3RvcHBpbmcgaXMgcmVxdWVzdGVkICovCiAJaWYgKHJlc3RhcnQpCiAJCWF0b21pY19pbmMoJmFtcDtpcHZzLSZndDtlc3RfZ2VuaWQpOwotCXF1ZXVlX2RlbGF5ZWRfd29yayhzeXN0ZW1fbG9uZ193cSwgJmFtcDtpcHZzLSZndDtlc3RfcmVsb2FkX3dvcmssIDApOwomIzQzOwlxdWV1ZV9kZWxheWVkX3dvcmsoc3lzdGVtX2RmbF9sb25nX3dxLCAmYW1wO2lwdnMtJmd0O2VzdF9yZWxvYWRfd29yaywgMCk7CiB9CiAKIC8qIFN0YXJ0IGt0aHJlYWQgdGFzayB3aXRoIGN1cnJlbnQgY29uZmlndXJhdGlvbiAqLwo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMiAxNDo1MzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMzg4CgkJCQkJCQlvdXRwdXQ6IDIzCgkJCQkJCQl0aG91Z2h0czogMjkyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkZ1enppbmcgdGhlIElQVlMgV29ya3F1ZXVlIENoYW5nZSoqCgpPa2F5LCBzbyB3ZSYjMzk7dmUgZ290IHRoaXMgcGF0Y2gsIHJpZ2h0PyBJdCYjMzk7cyBhIHN0cmFpZ2h0LXVwIGZ1bmN0aW9uYWwgY2hhbmdlLCBqdXN0IHN3YXBwaW5nIG91dCBgc3lzdGVtX2xvbmdfd3FgIGZvciBgc3lzdGVtX2RmbF9sb25nX3dxYCBpbiBhIGNvdXBsZSBvZiBJUFZTIGZpbGVzIOKAkyBgaXBfdnNfY3RsLmNgIGFuZCBgaXBfdnNfZXN0LmNgLiBNeSBmaXJzdCB0aG91Z2h0IGlzLCBkb2VzIHRoaXMgZXZlbiB3YXJyYW50IGZ1enppbmc/IEl0ICppcyoganVzdCBjaGFuZ2luZyB0aGUgd29ya3F1ZXVlIHVzZWQgZm9yIGRlbGF5ZWQgd29yayB3aXRoaW4gdGhlIElQIFZpcnR1YWwgU2VydmVyIHN1YnN5c3RlbS4KCkhtbSwgbGV0JiMzOTtzIGJyZWFrIHRoaXMgZG93biBmdXJ0aGVyLiBJdCYjMzk7cyB0aGUgY2hhbmdlIGZyb20gYHN5c3RlbV9sb25nX3dxYCB0byBgc3lzdGVtX2RmbF9sb25nX3dxYC4gSXMgdGhpcyBhIHNpZ25pZmljYW50IGVub3VnaCBjaGFuZ2UgdG8gd2FycmFudCBmdXp6aW5nPyBXZSYjMzk7cmUgdGFsa2luZyBhYm91dCB0aGUgd29ya3F1ZXVlIGZvciBgZGVmZW5zZV93b3JrYCBhbmQgYGVzdF9yZWxvYWRfd29ya2AgaW4gSVBWUy4gUmlnaHQsIElQIFZpcnR1YWwgU2VydmVyLi4uCgpBbHJpZ2h0LCBsZXQmIzM5O3MgdGFrZSBhIGxvb2sgYXQgdGhlIHJlbGV2YW50IGNvbmZpZ3VyYXRpb25zLiBXZSYjMzk7cmUgZGVhbGluZyB3aXRoIGBDT05GSUdfSVBfVlNgLCBzbyB0aGF0JiMzOTtzIHRoZSBzdGFydGluZyBwb2ludC4gTm93LCBhcmUgdGhlcmUgYW55ICpzcGVjaWZpYyogZnVuY3Rpb25zIHRoYXQgc3RhbmQgb3V0IGFzIHBvdGVudGlhbCBmdXp6IHRhcmdldHMgaGVyZT8gVGhpbmtpbmcgYWJvdXQgaXQsIHdlIGhhdmU6IGBkZWZlbnNlX3dvcmtfaGFuZGxlcmAsIGBlc3RfcmVsb2FkX3dvcmtfaGFuZGxlcmAsIGBpcF92c19jb250cm9sX25ldF9pbml0X3N5c2N0bGAsIGFuZCBgaXBfdnNfZXN0X3JlbG9hZF9zdGFydGAuIFNlZW1zIGxpa2UgaGFuZGxlcnMgYW5kIGluaXRpYWxpemF0aW9uIGZ1bmN0aW9ucywgdHJpZ2dlcmVkIGJ5IHRpbWVycyBvciBpbml0aWFsaXphdGlvbi4KClByb2JhYmx5IG5vdCB0aGUgYmVzdCBjYW5kaWRhdGVzIGZvciBkaXJlY3QgZnV6emluZywgYmVjYXVzZSBvZiB0aGUgdHJpZ2dlcmluZyBtZWNoYW5pc21zLCBidXQgbGV0JiMzOTtzIGp1c3Qgc2VlLi4uV2FpdCBhIG1pbnV0ZSwgd2hlbiBpcyBgaXBfdnNfZXN0X3JlbG9hZF9zdGFydGAgY2FsbGVkPyBUaGF0IGJlYXJzIGEgY2xvc2VyIGxvb2suIExldCYjMzk7cyBkaWcgaW50byB0aGF0IGZ1bmN0aW9uLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAyIDE0OjUzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2lwX3ZzX2VzdF9yZWxvYWRfc3RhcnQmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7aW5jbHVkZS9uZXQvaXBfdnMuaD0xOTIxPXZvaWQgaXBfdnNfcmVhZF9lc3RpbWF0b3Ioc3RydWN0IGlwX3ZzX2tzdGF0cyAqZHN0LCBzdHJ1Y3QgaXBfdnNfc3RhdHMgKnN0YXRzKTtcbmluY2x1ZGUvbmV0L2lwX3ZzLmg6MTkyMjp2b2lkIGlwX3ZzX2VzdF9yZWxvYWRfc3RhcnQoc3RydWN0IG5ldG5zX2lwdnMgKmlwdnMsIGJvb2wgcmVzdGFydCk7XG5pbmNsdWRlL25ldC9pcF92cy5oLTE5MjMtaW50IGlwX3ZzX2VzdF9rdGhyZWFkX3N0YXJ0KHN0cnVjdCBuZXRuc19pcHZzICppcHZzLFxuLS1cbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jdGwuYz0xNzA5PWlwX3ZzX2FkZF9zZXJ2aWNlKHN0cnVjdCBuZXRuc19pcHZzICppcHZzLCBzdHJ1Y3QgaXBfdnNfc2VydmljZV91c2VyX2tlcm4gKnUsXG4tLVxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2N0bC5jLTE4ODUtXHRcdC8qIFN0YXJ0IGVzdGltYXRpb24gZm9yIGZpcnN0IHRpbWUgKi9cbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jdGwuYzoxODg2Olx0XHRpcF92c19lc3RfcmVsb2FkX3N0YXJ0KGlwdnMsIHRydWUpO1xubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2N0bC5jLTE4ODctXHRcdG11dGV4X3VubG9jayhcdTAwMjZpcHZzLVx1MDAzZWVzdF9tdXRleCk7XG4tLVxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2N0bC5jPTI0NDM9c3RhdGljIGludCBpcHZzX3Byb2NfZXN0X2NwdW1hc2tfc2V0KGNvbnN0IHN0cnVjdCBjdGxfdGFibGUgKnRhYmxlLFxuLS1cbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jdGwuYy0yNDcxLVx0aXB2cy1cdTAwM2Vlc3RfY2FsY19waGFzZSA9IDE7XG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY3RsLmM6MjQ3MjpcdGlwX3ZzX2VzdF9yZWxvYWRfc3RhcnQoaXB2cywgdHJ1ZSk7XG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY3RsLmMtMjQ3My1cbi0tXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY3RsLmM9MjUzMz1zdGF0aWMgaW50IGlwdnNfcHJvY19lc3RfbmljZShjb25zdCBzdHJ1Y3QgY3RsX3RhYmxlICp0YWJsZSwgaW50IHdyaXRlLFxuLS1cbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jdGwuYy0yNTU0LVx0XHRcdFx0KnZhbHAgPSB2YWw7XG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY3RsLmM6MjU1NTpcdFx0XHRcdGlwX3ZzX2VzdF9yZWxvYWRfc3RhcnQoaXB2cywgdHJ1ZSk7XG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY3RsLmMtMjU1Ni1cdFx0XHR9XG4tLVxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2N0bC5jPTI1NjM9c3RhdGljIGludCBpcHZzX3Byb2NfcnVuX2VzdGltYXRpb24oY29uc3Qgc3RydWN0IGN0bF90YWJsZSAqdGFibGUsIGludCB3cml0ZSxcbi0tXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY3RsLmMtMjU4MS1cdFx0XHQqdmFscCA9IHZhbDtcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jdGwuYzoyNTgyOlx0XHRcdGlwX3ZzX2VzdF9yZWxvYWRfc3RhcnQoaXB2cywgdHJ1ZSk7XG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY3RsLmMtMjU4My1cdFx0fVxuLS1cbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19lc3QuYz0xNzQ9c3RhdGljIGludCBpcF92c19lc3RpbWF0aW9uX2t0aHJlYWQodm9pZCAqZGF0YSlcbi0tXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfZXN0LmMtMjM0LS8qIFNjaGVkdWxlIHN0b3Avc3RhcnQgZm9yIGt0aHJlYWQgdGFza3MgKi9cbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19lc3QuYzoyMzU6dm9pZCBpcF92c19lc3RfcmVsb2FkX3N0YXJ0KHN0cnVjdCBuZXRuc19pcHZzICppcHZzLCBib29sIHJlc3RhcnQpXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfZXN0LmMtMjM2LXtcbi0tXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfZXN0LmM9MzA3PXN0YXRpYyBpbnQgaXBfdnNfZXN0X2FkZF9rdGhyZWFkKHN0cnVjdCBuZXRuc19pcHZzICppcHZzKVxuLS1cbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19lc3QuYy0zNTgtXHQvKiBSZXF1ZXN0IGt0aHJlYWQgdG8gYmUgc3RhcnRlZCAqL1xubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2VzdC5jOjM1OTpcdGlwX3ZzX2VzdF9yZWxvYWRfc3RhcnQoaXB2cywgZmFsc2UpO1xubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2VzdC5jLTM2MC1cbi0tXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfZXN0LmM9NDkzPWludCBpcF92c19zdGFydF9lc3RpbWF0b3Ioc3RydWN0IG5ldG5zX2lwdnMgKmlwdnMsIHN0cnVjdCBpcF92c19zdGF0cyAqc3RhdHMpXG4tLVxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2VzdC5jLTUxMy1cdFx0a2QtXHUwMDNlbmVlZGVkID0gMTtcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19lc3QuYzo1MTQ6XHRcdGlwX3ZzX2VzdF9yZWxvYWRfc3RhcnQoaXB2cywgdHJ1ZSk7XG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfZXN0LmMtNTE1LVx0XHRtdXRleF91bmxvY2soXHUwMDI2aXB2cy1cdTAwM2Vlc3RfbXV0ZXgpO1xuLS1cbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19lc3QuYz01Mzc9dm9pZCBpcF92c19zdG9wX2VzdGltYXRvcihzdHJ1Y3QgbmV0bnNfaXB2cyAqaXB2cywgc3RydWN0IGlwX3ZzX3N0YXRzICpzdGF0cylcbi0tXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfZXN0LmMtNjAzLVx0XHRcdGtkLVx1MDAzZW5lZWRlZCA9IDA7XG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfZXN0LmM6NjA0Olx0XHRcdGlwX3ZzX2VzdF9yZWxvYWRfc3RhcnQoaXB2cywgdHJ1ZSk7XG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfZXN0LmMtNjA1LVx0XHRcdG11dGV4X3VubG9jayhcdTAwMjZpcHZzLVx1MDAzZWVzdF9tdXRleCk7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDIgMTQ6NTM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDM2MgoJCQkJCQkJb3V0cHV0OiAxOAoJCQkJCQkJdGhvdWdodHM6IDE0NAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgYSBUaW55IEtlcm5lbCBQYXRjaCoqCgpPa2F5LCBzbyB0aGlzIHBhdGNoIGlzIHN3aXRjaGluZyB0aGUgd29ya3F1ZXVlIHVzZWQgYnkgSVBWUyBmcm9tIGBzeXN0ZW1fbG9uZ193cWAgdG8gYHN5c3RlbV9kZmxfbG9uZ193cWAuIFNlZW1zIGxpa2UgYSBtaW5vciBmdW5jdGlvbmFsIGNoYW5nZSwgYnV0IGxldCYjMzk7cyBub3QgZGlzbWlzcyBpdCBvdXRyaWdodC4gRXZlbiBhIHNtYWxsIG1vZGlmaWNhdGlvbiB0byBjb3JlIGtlcm5lbCBsb2dpYywgZXNwZWNpYWxseSB3aGVuIGl0IHRvdWNoZXMgYSBzdWJzeXN0ZW0gbGlrZSBJUFZTLCB3YXJyYW50cyBhIGNsb3NlciBsb29rLgoKVGhlIHF1ZXN0aW9uIHRoZW4gYmVjb21lcywgaXMgdGhpcyBjaGFuZ2Ugd29ydGggdGhlIGVmZm9ydCBvZiBmdXp6aW5nPyBBYnNvbHV0ZWx5LCB5ZXMuIEFueSBmdW5jdGlvbmFsIGNoYW5nZSB3aXRoaW4gdGhlIGtlcm5lbCwgaG93ZXZlciBzZWVtaW5nbHkgc21hbGwsIGNhbiBpbnRyb2R1Y2UgdW5leHBlY3RlZCBiZWhhdmlvcnMgb3IgdnVsbmVyYWJpbGl0aWVzLgoKQWxyaWdodCwgYHN5c3RlbV9kZmxfbG9uZ193cWAgaXMgYSB3b3JrcXVldWUuIE5vdywgYXJlIHRoZXJlIGFueSBzcGVjaWZpYyBmdW5jdGlvbnMgdGhpcyBwYXRjaCBhZmZlY3RzIHdpdGhpbiBJUFZTIHRoYXQgSSBzaG91bGQgcHJpb3JpdGl6ZSBmb3IgYW5hbHlzaXM/IExldCYjMzk7cyBzZWUuLi4gbG9va2luZyBhdCB0aGUgY29kZSwgaXQgbG9va3MgbGlrZSBgZGVmZW5zZV93b3JrX2hhbmRsZXJgLCBgZXN0X3JlbG9hZF93b3JrX2hhbmRsZXJgLCBhbmQgdGhlIGFzc29jaWF0ZWQgYGlwX3ZzX2VzdF9yZWxvYWRfc3RhcnRgIGZ1bmN0aW9uIGFyZSB0aGUga2V5IGFyZWFzLiBUaGVzZSBmdW5jdGlvbnMgYXJlIGFsbCBjZW50ZXJlZCBhcm91bmQgSVBWUyYjMzk7cyBlc3RpbWF0aW9uIGFuZCBkZWZlbnNlIG1lY2hhbmlzbXMuIFRoYXQgZGVmaW5pdGVseSB3YXJyYW50cyBhIGNsb3NlciBsb29rLiBUaW1lIHRvIGRvdWJsZS1jaGVjayB0aGUgcmVsZXZhbnQga2VybmVsIGNvbmZpZ3VyYXRpb25zIHRvIGdldCBhIGJldHRlciBzZW5zZSBvZiBob3cgSVBWUyBpcyBjb25maWd1cmVkIGluIHRoZSBlbnZpcm9ubWVudCB0aGlzIHdpbGwgYmUgYXBwbGllZCB0by4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMiAxNDo1MzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgSVBfVlMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L25ldGZpbHRlci9pcHZzL0tjb25maWctNC0jXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZzo1Om1lbnVjb25maWcgSVBfVlNcbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnLTYtXHR0cmlzdGF0ZSBcJiMzNDtJUCB2aXJ0dWFsIHNlcnZlciBzdXBwb3J0XCYjMzQ7XG4tLVxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWc9Mjg2PWNvbW1lbnQgJiMzOTtJUFZTIFNIIHNjaGVkdWxlciYjMzk7XG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZy0yODctXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZzoyODg6Y29uZmlnIElQX1ZTX1NIX1RBQl9CSVRTXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZy0yODktXHRpbnQgXCYjMzQ7SVBWUyBzb3VyY2UgaGFzaGluZyB0YWJsZSBzaXplICh0aGUgTnRoIHBvd2VyIG9mIDIpXCYjMzQ7XG4tLVxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWc9MzAxPWNvbW1lbnQgJiMzOTtJUFZTIE1IIHNjaGVkdWxlciYjMzk7XG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZy0zMDItXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZzozMDM6Y29uZmlnIElQX1ZTX01IX1RBQl9JTkRFWFxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWctMzA0LVx0aW50IFwmIzM0O0lQVlMgbWFnbGV2IGhhc2hpbmcgdGFibGUgaW5kZXggb2Ygc2l6ZSAodGhlIHByaW1lIG51bWJlcnMpXCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDIgMTQ6NTM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNTA1MgoJCQkJCQkJb3V0cHV0OiAxOQoJCQkJCQkJdGhvdWdodHM6IDI5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBhbiBleHBlcnQmIzM5O3MgaW50ZXJuYWwgbW9ub2xvZ3VlOgoKKipJbnZlc3RpZ2F0aW5nIHRoZSBMb2FkIEJhbGFuY2luZyBDb25maWd1cmF0aW9uKioKCkFscmlnaHQsIHRoZSBzeXN0ZW0mIzM5O3MgY3VycmVudCBjb25maWd1cmF0aW9uIGlzIGRlZmluaXRlbHkgc2V0IHRvIGBJUF9WU2AuIFRoYXQmIzM5O3MgdGhlIGJhc2VsaW5lLCB0aGUgZm91bmRhdGlvbi4gTm93LCBnaXZlbiB0aGF0IGNvbnRleHQsIHRoZSBmaXJzdCBwbGFjZXMgbXkgbWluZCBuYXR1cmFsbHkgZ3Jhdml0YXRlcyB0b3dhcmQgYXJlIHRoZSBgZGVmZW5zZV93b3JrX2hhbmRsZXJgIGFuZCBgZXN0X3JlbG9hZF93b3JrX2hhbmRsZXJgIG1vZHVsZXMuIFdpdGggSVAgVmlydHVhbCBTZXJ2ZXIgKElQVlMpIGFjdGl2ZSwgdGhlc2UgaGFuZGxlcnMgYXJlIGdvaW5nIHRvIGJlIGNyaXRpY2FsIGZvciB1bmRlcnN0YW5kaW5nIGhvdyB3ZSYjMzk7cmUgZGVhbGluZyB3aXRoIGJvdGggdHJhZmZpYyBjb250cm9sIGFuZCBhbnkgcG90ZW50aWFsIHJlbG9hZHMuIEtub3dpbmcgaG93IHRoZXkgb3BlcmF0ZSBpcyBjcnVjaWFsIGZvciB0aGlzIHR5cGUgb2YgY29uZmlnLiBXaGF0IGFyZSB0aGV5ICphY3R1YWxseSogZG9pbmcgaW4gdGhpcyBzcGVjaWZpYyBjb250ZXh0PyBXaGF0IGtpbmQgb2YgcHJvY2Vzc2luZyBhcmUgdGhleSByZXNwb25zaWJsZSBmb3IsIGdpdmVuIHRoYXQgd2UgYXJlIHJ1bm5pbmcgSVBWUz8gTGV0JiMzOTtzIGRpdmUgZGVlcGVyIGludG8gdGhvc2UuLi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD44LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMiAxNDo1MzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtkZWZlbnNlX3dvcmtfaGFuZGxlciYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY3RsLmM9MjE2PXN0YXRpYyB2b2lkIGV4cGlyZV9ub2Rlc3RfY29ubl9oYW5kbGVyKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaylcbi0tXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY3RsLmMtMjI5LVxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2N0bC5jOjIzMDpzdGF0aWMgdm9pZCBkZWZlbnNlX3dvcmtfaGFuZGxlcihzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY3RsLmMtMjMxLXtcbi0tXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY3RsLmM9NDk5NT1zdGF0aWMgaW50IF9fbmV0X2luaXQgaXBfdnNfY29udHJvbF9uZXRfaW5pdF9zeXNjdGwoc3RydWN0IG5ldG5zX2lwdnMgKmlwdnMpXG4tLVxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2N0bC5jLTUwMDYtXHRzcGluX2xvY2tfaW5pdChcdTAwMjZpcHZzLVx1MDAzZXNlY3VyZXRjcF9sb2NrKTtcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jdGwuYzo1MDA3Olx0SU5JVF9ERUxBWUVEX1dPUksoXHUwMDI2aXB2cy1cdTAwM2VkZWZlbnNlX3dvcmssIGRlZmVuc2Vfd29ya19oYW5kbGVyKTtcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jdGwuYy01MDA4LVx0SU5JVF9ERUxBWUVEX1dPUksoXHUwMDI2aXB2cy1cdTAwM2VleHBpcmVfbm9kZXN0X2Nvbm5fd29yayxcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD45LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMiAxNDo1MzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1NTg0CgkJCQkJCQlvdXRwdXQ6IDIyCgkJCQkJCQl0aG91Z2h0czogMTE2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFzc2Vzc2luZyB0aGUgRnV6emluZyBWYWx1ZSBvZiBhIFdvcmtxdWV1ZSBQYXRjaCoqCgpPa2F5LCBzbyB0aGlzIHBhdGNoIGlzIHRvdWNoaW5nIHRoZSB3b3JrcXVldWUsIHNwZWNpZmljYWxseSBzd2FwcGluZyBgc3lzdGVtX2xvbmdfd3FgIGZvciBgc3lzdGVtX2RmbF9sb25nX3dxYC4gTXkgaW5pdGlhbCBpbnN0aW5jdCBpcyB0byBxdWVzdGlvbiB3aGV0aGVyIGZ1enppbmcgdGhpcyBpcyBhY3R1YWxseSB3b3J0aCB0aGUgZWZmb3J0LiBJdCAqaXMqIGEgc2ltcGxlIGNoYW5nZSwgZnVuY3Rpb25hbGx5IHNwZWFraW5nLCBqdXN0IGEgd29ya3F1ZXVlIHN1YnN0aXR1dGlvbi4gQ2hhbmNlcyBhcmUsIGZ1enppbmcgdGhpcyBzcGVjaWZpYyBjaGFuZ2UgbWlnaHQgbm90IHVuY292ZXIgYW55dGhpbmcgdHJ1bHkgbm92ZWwsIGFuZCBpdOKAmXMgbGlrZWx5IHRvIGJlIHNvbWV0aGluZyB0aGF0IGhhcyBiZWVuIGltcGxpY2l0bHkgZnV6emVkIGJlZm9yZS4gSG93ZXZlciwgdGhlIGNoYW5nZSAqaXMqIGZ1bmN0aW9uYWwuIAoKV2FpdCBhIG1pbnV0ZSwgaXMgYHN5c3RlbV9kZmxfbG9uZ193cWAgYSBuZXcgd29ya3F1ZXVlIG9yIGFuIGV4aXN0aW5nIG9uZT8gSSBuZWVkIHRvIGNsYXJpZnkgdGhhdCBiZWZvcmUgSSBtYWtlIGEgZmluYWwgZGVjaXNpb24gb24gdGhlIGZ1enppbmcgc3RyYXRlZ3kuIE9rYXksIGxldCYjMzk7cyBnbyBjaGVjayB3aGF0JiMzOTtzIGdvaW5nIG9uIHdpdGggYHN5c3RlbV9kZmxfbG9uZ193cWAuIEkmIzM5O2xsIGRpZyBpbnRvIGl0cyBkZWZpbml0aW9uIGFuZCB1c2FnZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDIgMTQ6NTM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7c3lzdGVtX2RmbF9sb25nX3dxJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvYXRhL2xpYmF0YS1laC5jPTcyMT12b2lkIGF0YV9zY3NpX3BvcnRfZXJyb3JfaGFuZGxlcihzdHJ1Y3QgU2NzaV9Ib3N0ICpob3N0LCBzdHJ1Y3QgYXRhX3BvcnQgKmFwKVxuLS1cbmRyaXZlcnMvYXRhL2xpYmF0YS1laC5jLTgyMy1cdFx0IShhcC1cdTAwM2VmbGFncyBcdTAwMjYgQVRBX0ZMQUdfU0FTX0hPU1QpKVxuZHJpdmVycy9hdGEvbGliYXRhLWVoLmM6ODI0Olx0XHRxdWV1ZV9kZWxheWVkX3dvcmsoc3lzdGVtX2RmbF9sb25nX3dxLCBcdTAwMjZhcC1cdTAwM2Vob3RwbHVnX3Rhc2ssIDApO1xuZHJpdmVycy9hdGEvbGliYXRhLWVoLmMtODI1LVxuLS1cbmRyaXZlcnMvYXRhL2xpYmF0YS1zY3NpLmM9NDcwND12b2lkIGF0YV9zY3NpX3NjYW5faG9zdChzdHJ1Y3QgYXRhX3BvcnQgKmFwLCBpbnQgc3luYylcbi0tXG5kcml2ZXJzL2F0YS9saWJhdGEtc2NzaS5jLTQ3NzMtXG5kcml2ZXJzL2F0YS9saWJhdGEtc2NzaS5jOjQ3NzQ6XHRxdWV1ZV9kZWxheWVkX3dvcmsoc3lzdGVtX2RmbF9sb25nX3dxLCBcdTAwMjZhcC1cdTAwM2Vob3RwbHVnX3Rhc2ssXG5kcml2ZXJzL2F0YS9saWJhdGEtc2NzaS5jLTQ3NzUtXHRcdFx0ICAgcm91bmRfamlmZmllc19yZWxhdGl2ZShIWikpO1xuLS1cbmRyaXZlcnMvaTJjL2kyYy1zbGF2ZS10ZXN0dW5pdC5jPTgyPXN0YXRpYyBpbnQgaTJjX3NsYXZlX3Rlc3R1bml0X3NsYXZlX2NiKHN0cnVjdCBpMmNfY2xpZW50ICpjbGllbnQsXG4tLVxuZHJpdmVycy9pMmMvaTJjLXNsYXZlLXRlc3R1bml0LmMtMTI2LVx0XHRcdHNldF9iaXQoVFVfRkxBR19JTl9QUk9DRVNTLCBcdTAwMjZ0dS1cdTAwM2VmbGFncyk7XG5kcml2ZXJzL2kyYy9pMmMtc2xhdmUtdGVzdHVuaXQuYzoxMjc6XHRcdFx0cXVldWVfZGVsYXllZF93b3JrKHN5c3RlbV9kZmxfbG9uZ193cSwgXHUwMDI2dHUtXHUwMDNld29ya2VyLFxuZHJpdmVycy9pMmMvaTJjLXNsYXZlLXRlc3R1bml0LmMtMTI4LVx0XHRcdFx0XHQgICBtc2Vjc190b19qaWZmaWVzKDEwICogdHUtXHUwMDNlcmVnc1tUVV9SRUdfREVMQVldKSk7XG4tLVxuZHJpdmVycy9waHkvdGkvcGh5LXR1c2IxMjEwLmM9MTkxPXN0YXRpYyB2b2lkIHR1c2IxMjEwX2NoZ19kZXRfc2V0X3N0YXRlKHN0cnVjdCB0dXNiMTIxMCAqdHVzYixcbi0tXG5kcml2ZXJzL3BoeS90aS9waHktdHVzYjEyMTAuYy0xOTktXHR0dXNiLVx1MDAzZWNoZ19kZXRfc3RhdGUgPSBuZXdfc3RhdGU7XG5kcml2ZXJzL3BoeS90aS9waHktdHVzYjEyMTAuYzoyMDA6XHRtb2RfZGVsYXllZF93b3JrKHN5c3RlbV9kZmxfbG9uZ193cSwgXHUwMDI2dHVzYi1cdTAwM2VjaGdfZGV0X3dvcmssXG5kcml2ZXJzL3BoeS90aS9waHktdHVzYjEyMTAuYy0yMDEtXHRcdFx0IG1zZWNzX3RvX2ppZmZpZXMoZGVsYXlfbXMpKTtcbi0tXG5kcml2ZXJzL3BoeS90aS9waHktdHVzYjEyMTAuYz0zNzY9c3RhdGljIGludCB0dXNiMTIxMF9wc3lfbm90aWZpZXIoc3RydWN0IG5vdGlmaWVyX2Jsb2NrICpuYixcbi0tXG5kcml2ZXJzL3BoeS90aS9waHktdHVzYjEyMTAuYy0zODItXHRpZiAocHN5ICE9IHR1c2ItXHUwMDNlcHN5IFx1MDAyNlx1MDAyNiBwc3ktXHUwMDNlZGVzYy1cdTAwM2V0eXBlID09IFBPV0VSX1NVUFBMWV9UWVBFX1VTQilcbmRyaXZlcnMvcGh5L3RpL3BoeS10dXNiMTIxMC5jOjM4MzpcdFx0cXVldWVfZGVsYXllZF93b3JrKHN5c3RlbV9kZmxfbG9uZ193cSwgXHUwMDI2dHVzYi1cdTAwM2VjaGdfZGV0X3dvcmssIDApO1xuZHJpdmVycy9waHkvdGkvcGh5LXR1c2IxMjEwLmMtMzg0LVxuLS1cbmRyaXZlcnMvcGh5L3RpL3BoeS10dXNiMTIxMC5jPTQzMj1zdGF0aWMgdm9pZCB0dXNiMTIxMF9wcm9iZV9jaGFyZ2VyX2RldGVjdChzdHJ1Y3QgdHVzYjEyMTAgKnR1c2IpXG4tLVxuZHJpdmVycy9waHkvdGkvcGh5LXR1c2IxMjEwLmMtNDYwLVx0SU5JVF9ERUxBWUVEX1dPUksoXHUwMDI2dHVzYi1cdTAwM2VjaGdfZGV0X3dvcmssIHR1c2IxMjEwX2NoZ19kZXRfd29yayk7XG5kcml2ZXJzL3BoeS90aS9waHktdHVzYjEyMTAuYzo0NjE6XHRxdWV1ZV9kZWxheWVkX3dvcmsoc3lzdGVtX2RmbF9sb25nX3dxLCBcdTAwMjZ0dXNiLVx1MDAzZWNoZ19kZXRfd29yaywgMiAqIEhaKTtcbmRyaXZlcnMvcGh5L3RpL3BoeS10dXNiMTIxMC5jLTQ2Mi1cbi0tXG5kcml2ZXJzL3Njc2kvc2NzaV90cmFuc3BvcnRfc3JwLmM9MjIwPXN0YXRpYyBzc2l6ZV90IHN0b3JlX3JlY29ubmVjdF9kZWxheShzdHJ1Y3QgZGV2aWNlICpkZXYsXG4tLVxuZHJpdmVycy9zY3NpL3Njc2lfdHJhbnNwb3J0X3NycC5jLTIzNi1cdCAgICBycG9ydC1cdTAwM2VzdGF0ZSAhPSBTUlBfUlBPUlRfUlVOTklORykge1xuZHJpdmVycy9zY3NpL3Njc2lfdHJhbnNwb3J0X3NycC5jOjIzNzpcdFx0cXVldWVfZGVsYXllZF93b3JrKHN5c3RlbV9kZmxfbG9uZ193cSwgXHUwMDI2cnBvcnQtXHUwMDNlcmVjb25uZWN0X3dvcmssXG5kcml2ZXJzL3Njc2kvc2NzaV90cmFuc3BvcnRfc3JwLmMtMjM4LVx0XHRcdFx0ICAgZGVsYXkgKiBIWik7XG4tLVxuZHJpdmVycy9zY3NpL3Njc2lfdHJhbnNwb3J0X3NycC5jPTM3OD1zdGF0aWMgdm9pZCBzcnBfcmVjb25uZWN0X3dvcmsoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxuLS1cbmRyaXZlcnMvc2NzaS9zY3NpX3RyYW5zcG9ydF9zcnAuYy0zOTItXHRcdGlmIChkZWxheSBcdTAwM2UgMClcbmRyaXZlcnMvc2NzaS9zY3NpX3RyYW5zcG9ydF9zcnAuYzozOTM6XHRcdFx0cXVldWVfZGVsYXllZF93b3JrKHN5c3RlbV9kZmxfbG9uZ193cSxcbmRyaXZlcnMvc2NzaS9zY3NpX3RyYW5zcG9ydF9zcnAuYy0zOTQtXHRcdFx0XHRcdCAgIFx1MDAyNnJwb3J0LVx1MDAzZXJlY29ubmVjdF93b3JrLCBkZWxheSAqIEhaKTtcbi0tXG5kcml2ZXJzL3Njc2kvc2NzaV90cmFuc3BvcnRfc3JwLmM9NDYxPXN0YXRpYyB2b2lkIF9fc3JwX3N0YXJ0X3RsX2ZhaWxfdGltZXJzKHN0cnVjdCBzcnBfcnBvcnQgKnJwb3J0KVxuLS1cbmRyaXZlcnMvc2NzaS9zY3NpX3RyYW5zcG9ydF9zcnAuYy00NzYtXHRpZiAoZGVsYXkgXHUwMDNlIDApXG5kcml2ZXJzL3Njc2kvc2NzaV90cmFuc3BvcnRfc3JwLmM6NDc3Olx0XHRxdWV1ZV9kZWxheWVkX3dvcmsoc3lzdGVtX2RmbF9sb25nX3dxLCBcdTAwMjZycG9ydC1cdTAwM2VyZWNvbm5lY3Rfd29yayxcbmRyaXZlcnMvc2NzaS9zY3NpX3RyYW5zcG9ydF9zcnAuYy00NzgtXHRcdFx0XHQgICAxVUwgKiBkZWxheSAqIEhaKTtcbi0tXG5kcml2ZXJzL3Njc2kvc2NzaV90cmFuc3BvcnRfc3JwLmMtNDg0LVx0XHRpZiAoZmFzdF9pb19mYWlsX3RtbyBcdTAwM2U9IDApXG5kcml2ZXJzL3Njc2kvc2NzaV90cmFuc3BvcnRfc3JwLmM6NDg1Olx0XHRcdHF1ZXVlX2RlbGF5ZWRfd29yayhzeXN0ZW1fZGZsX2xvbmdfd3EsXG5kcml2ZXJzL3Njc2kvc2NzaV90cmFuc3BvcnRfc3JwLmMtNDg2LVx0XHRcdFx0XHQgICBcdTAwMjZycG9ydC1cdTAwM2VmYXN0X2lvX2ZhaWxfd29yayxcbi0tXG5kcml2ZXJzL3Njc2kvc2NzaV90cmFuc3BvcnRfc3JwLmMtNDg4LVx0XHRpZiAoZGV2X2xvc3NfdG1vIFx1MDAzZT0gMClcbmRyaXZlcnMvc2NzaS9zY3NpX3RyYW5zcG9ydF9zcnAuYzo0ODk6XHRcdFx0cXVldWVfZGVsYXllZF93b3JrKHN5c3RlbV9kZmxfbG9uZ193cSxcbmRyaXZlcnMvc2NzaS9zY3NpX3RyYW5zcG9ydF9zcnAuYy00OTAtXHRcdFx0XHRcdCAgIFx1MDAyNnJwb3J0LVx1MDAzZWRldl9sb3NzX3dvcmssXG4tLVxuZnMvZnVzZS9kYXguYz0xMDg9X19raWNrX2RtYXBfZnJlZV93b3JrZXIoc3RydWN0IGZ1c2VfY29ubl9kYXggKmZjZCwgdW5zaWduZWQgbG9uZyBkZWxheV9tcylcbi0tXG5mcy9mdXNlL2RheC5jLTExNS1cdGlmIChmY2QtXHUwMDNlbnJfZnJlZV9yYW5nZXMgXHUwMDNjIGZyZWVfdGhyZXNob2xkKVxuZnMvZnVzZS9kYXguYzoxMTY6XHRcdHF1ZXVlX2RlbGF5ZWRfd29yayhzeXN0ZW1fZGZsX2xvbmdfd3EsIFx1MDAyNmZjZC1cdTAwM2VmcmVlX3dvcmssXG5mcy9mdXNlL2RheC5jLTExNy1cdFx0XHRcdCAgIG1zZWNzX3RvX2ppZmZpZXMoZGVsYXlfbXMpKTtcbi0tXG5pbmNsdWRlL2xpbnV4L3dvcmtxdWV1ZS5oPTQxOD1lbnVtIHdxX2NvbnN0cyB7XG4tLVxuaW5jbHVkZS9saW51eC93b3JrcXVldWUuaC00NDQtICpcbmluY2x1ZGUvbGludXgvd29ya3F1ZXVlLmg6NDQ1OiAqIHN5c3RlbV9kZmxfbG9uZ193cSBpcyBzaW1pbGFyIHRvIHN5c3RlbV9kZmxfd3EgYnV0IGl0IG1heSBob3N0IGxvbmcgcnVubmluZ1xuaW5jbHVkZS9saW51eC93b3JrcXVldWUuaC00NDYtICogd29ya3MuXG4tLVxuaW5jbHVkZS9saW51eC93b3JrcXVldWUuaD00NzU9ZXh0ZXJuIHN0cnVjdCB3b3JrcXVldWVfc3RydWN0ICpzeXN0ZW1fYmhfaGlnaHByaV93cTtcbmluY2x1ZGUvbGludXgvd29ya3F1ZXVlLmg6NDc2OmV4dGVybiBzdHJ1Y3Qgd29ya3F1ZXVlX3N0cnVjdCAqc3lzdGVtX2RmbF9sb25nX3dxO1xuaW5jbHVkZS9saW51eC93b3JrcXVldWUuaC00NzctXG4tLVxuaW5jbHVkZS9saW51eC93b3JrcXVldWUuaD03OTY9ZXh0ZXJuIHZvaWQgX193YXJuX2ZsdXNoaW5nX3N5c3RlbXdpZGVfd3Eodm9pZClcbi0tXG5pbmNsdWRlL2xpbnV4L3dvcmtxdWV1ZS5oLTgxNS1cdCAgICAgX3dxID09IHN5c3RlbV9sb25nX3dxKSB8fFx0XHRcdFx0XHRcXFxuaW5jbHVkZS9saW51eC93b3JrcXVldWUuaDo4MTY6XHQgICAgKF9fYnVpbHRpbl9jb25zdGFudF9wKF93cSA9PSBzeXN0ZW1fZGZsX2xvbmdfd3EpIFx1MDAyNlx1MDAyNlx0XHRcXFxuaW5jbHVkZS9saW51eC93b3JrcXVldWUuaDo4MTc6XHQgICAgIF93cSA9PSBzeXN0ZW1fZGZsX2xvbmdfd3EpIHx8XHRcdFx0XHRcdFxcXG5pbmNsdWRlL2xpbnV4L3dvcmtxdWV1ZS5oLTgxOC1cdCAgICAoX19idWlsdGluX2NvbnN0YW50X3AoX3dxID09IHN5c3RlbV9kZmxfd3EpIFx1MDAyNlx1MDAyNlx0XHRcXFxuLS1cbmtlcm5lbC93b3JrcXVldWUuYz01NDU9RVhQT1JUX1NZTUJPTF9HUEwoc3lzdGVtX2JoX2hpZ2hwcmlfd3EpO1xua2VybmVsL3dvcmtxdWV1ZS5jOjU0NjpzdHJ1Y3Qgd29ya3F1ZXVlX3N0cnVjdCAqc3lzdGVtX2RmbF9sb25nX3dxIF9fcm9fYWZ0ZXJfaW5pdDtcbmtlcm5lbC93b3JrcXVldWUuYzo1NDc6RVhQT1JUX1NZTUJPTF9HUEwoc3lzdGVtX2RmbF9sb25nX3dxKTtcbmtlcm5lbC93b3JrcXVldWUuYy01NDgtXG4tLVxua2VybmVsL3dvcmtxdWV1ZS5jPTc5NzE9dm9pZCBfX2luaXQgd29ya3F1ZXVlX2luaXRfZWFybHkodm9pZClcbi0tXG5rZXJuZWwvd29ya3F1ZXVlLmMtODA3MC1cdFx0XHRcdFx0ICAgICAgIFdRX0JIIHwgV1FfSElHSFBSSSB8IFdRX1BFUkNQVSwgMCk7XG5rZXJuZWwvd29ya3F1ZXVlLmM6ODA3MTpcdHN5c3RlbV9kZmxfbG9uZ193cSA9IGFsbG9jX3dvcmtxdWV1ZShcJiMzNDtldmVudHNfZGZsX2xvbmdcJiMzNDssIFdRX1VOQk9VTkQsIFdRX01BWF9BQ1RJVkUpO1xua2VybmVsL3dvcmtxdWV1ZS5jLTgwNzItXHRCVUdfT04oIXN5c3RlbV93cSB8fCAhc3lzdGVtX3BlcmNwdV93cXx8ICFzeXN0ZW1faGlnaHByaV93cSB8fCAhc3lzdGVtX2xvbmdfd3EgfHxcbi0tXG5rZXJuZWwvd29ya3F1ZXVlLmMtODA3NS1cdCAgICAgICAhc3lzdGVtX2ZyZWV6YWJsZV9wb3dlcl9lZmZpY2llbnRfd3EgfHxcbmtlcm5lbC93b3JrcXVldWUuYzo4MDc2Olx0ICAgICAgICFzeXN0ZW1fYmhfd3EgfHwgIXN5c3RlbV9iaF9oaWdocHJpX3dxIHx8ICFzeXN0ZW1fZGZsX2xvbmdfd3EpO1xua2VybmVsL3dvcmtxdWV1ZS5jLTgwNzctfVxuLS1cbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb25uLmM9MjQzPXN0YXRpYyBpbmxpbmUgaW50IGlwX3ZzX2Nvbm5faGFzaChzdHJ1Y3QgaXBfdnNfY29ubiAqY3ApXG4tLVxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2Nvbm4uYy0yODctXHQgICAgIXRlc3RfYW5kX3NldF9iaXQoSVBfVlNfV09SS19DT05OX1JFU0laRSwgXHUwMDI2aXB2cy1cdTAwM2V3b3JrX2ZsYWdzKSlcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb25uLmM6Mjg4Olx0XHRtb2RfZGVsYXllZF93b3JrKHN5c3RlbV9kZmxfbG9uZ193cSwgXHUwMDI2aXB2cy1cdTAwM2Vjb25uX3Jlc2l6ZV93b3JrLCAwKTtcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb25uLmMtMjg5LVxuLS1cbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb25uLmM9ODAwPXN0YXRpYyB2b2lkIGNvbm5fcmVzaXplX3dvcmtfaGFuZGxlcihzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspXG4tLVxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2Nvbm4uYy05MTgtXHQvKiBNb25pdG9yIGlmIHdlIG5lZWQgdG8gc2hyaW5rIHRhYmxlICovXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29ubi5jOjkxOTpcdHF1ZXVlX2RlbGF5ZWRfd29yayhzeXN0ZW1fZGZsX2xvbmdfd3EsIFx1MDAyNmlwdnMtXHUwMDNlY29ubl9yZXNpemVfd29yayxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb25uLmMtOTIwLVx0XHRcdCAgIG1vcmVfd29yayA/IDEgOiAyICogSFopO1xuLS1cbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jdGwuYz0yMzA9c3RhdGljIHZvaWQgZGVmZW5zZV93b3JrX2hhbmRsZXIoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxuLS1cbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jdGwuYy0yMzctXHRcdGlwX3ZzX3JhbmRvbV9kcm9wZW50cnkoaXB2cyk7XG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY3RsLmM6MjM4Olx0cXVldWVfZGVsYXllZF93b3JrKHN5c3RlbV9kZmxfbG9uZ193cSwgXHUwMDI2aXB2cy1cdTAwM2VkZWZlbnNlX3dvcmssXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY3RsLmMtMjM5LVx0XHRcdCAgIERFRkVOU0VfVElNRVJfUEVSSU9EKTtcbi0tXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY3RsLmM9MjQzPXN0YXRpYyB2b2lkIGVzdF9yZWxvYWRfd29ya19oYW5kbGVyKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaylcbi0tXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY3RsLmMtMjkyLVx0aWYgKHJlcGVhdClcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jdGwuYzoyOTM6XHRcdHF1ZXVlX2RlbGF5ZWRfd29yayhzeXN0ZW1fZGZsX2xvbmdfd3EsIFx1MDAyNmlwdnMtXHUwMDNlZXN0X3JlbG9hZF93b3JrLFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2N0bC5jLTI5NC1cdFx0XHRcdCAgIGRlbGF5KTtcbi0tXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY3RsLmM9NjcwPXN0YXRpYyB2b2lkIHN2Y19yZXNpemVfd29ya19oYW5kbGVyKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaylcbi0tXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY3RsLmMtODIzLVx0XHRyZXR1cm47XG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY3RsLmM6ODI0Olx0cXVldWVfZGVsYXllZF93b3JrKHN5c3RlbV9kZmxfbG9uZ193cSwgXHUwMDI2aXB2cy1cdTAwM2VzdmNfcmVzaXplX3dvcmssIDEpO1xubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2N0bC5jLTgyNS1cdHJldHVybjtcbi0tXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY3RsLmM9MTcwOT1pcF92c19hZGRfc2VydmljZShzdHJ1Y3QgbmV0bnNfaXB2cyAqaXB2cywgc3RydWN0IGlwX3ZzX3NlcnZpY2VfdXNlcl9rZXJuICp1LFxuLS1cbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jdGwuYy0xODcxLVx0aWYgKGdyb3cgXHUwMDI2XHUwMDI2ICF0ZXN0X2FuZF9zZXRfYml0KElQX1ZTX1dPUktfU1ZDX1JFU0laRSwgXHUwMDI2aXB2cy1cdTAwM2V3b3JrX2ZsYWdzKSlcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jdGwuYzoxODcyOlx0XHRxdWV1ZV9kZWxheWVkX3dvcmsoc3lzdGVtX2RmbF9sb25nX3dxLCBcdTAwMjZpcHZzLVx1MDAzZXN2Y19yZXNpemVfd29yayxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jdGwuYy0xODczLVx0XHRcdFx0ICAgMSk7XG4tLVxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2N0bC5jPTIwODY9c3RhdGljIGludCBpcF92c19kZWxfc2VydmljZShzdHJ1Y3QgaXBfdnNfc2VydmljZSAqc3ZjKVxuLS1cbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jdGwuYy0yMTI3LVx0XHRcdFx0XHRcdFx1MDAyNmlwdnMtXHUwMDNld29ya19mbGFncykpXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY3RsLmM6MjEyODpcdFx0XHRxdWV1ZV9kZWxheWVkX3dvcmsoc3lzdGVtX2RmbF9sb25nX3dxLFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2N0bC5jLTIxMjktXHRcdFx0XHRcdCAgIFx1MDAyNmlwdnMtXHUwMDNlc3ZjX3Jlc2l6ZV93b3JrLCAxKTtcbi0tXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY3RsLmM9MjU4OT1zdGF0aWMgaW50IGlwdnNfcHJvY19jb25uX2xmYWN0b3IoY29uc3Qgc3RydWN0IGN0bF90YWJsZSAqdGFibGUsIGludCB3cml0ZSxcbi0tXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY3RsLmMtMjYwOC1cdFx0XHRpZiAocmN1X2FjY2Vzc19wb2ludGVyKGlwdnMtXHUwMDNlY29ubl90YWIpKVxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2N0bC5jOjI2MDk6XHRcdFx0XHRtb2RfZGVsYXllZF93b3JrKHN5c3RlbV9kZmxfbG9uZ193cSxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jdGwuYy0yNjEwLVx0XHRcdFx0XHRcdCBcdTAwMjZpcHZzLVx1MDAzZWNvbm5fcmVzaXplX3dvcmssIDApO1xuLS1cbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jdGwuYz0yNjE2PXN0YXRpYyBpbnQgaXB2c19wcm9jX3N2Y19sZmFjdG9yKGNvbnN0IHN0cnVjdCBjdGxfdGFibGUgKnRhYmxlLCBpbnQgd3JpdGUsXG4tLVxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2N0bC5jLTI2NDAtXHRcdFx0XHQgICAgICBcdTAwMjZpcHZzLVx1MDAzZXdvcmtfZmxhZ3MpKVxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2N0bC5jOjI2NDE6XHRcdFx0XHRtb2RfZGVsYXllZF93b3JrKHN5c3RlbV9kZmxfbG9uZ193cSxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jdGwuYy0yNjQyLVx0XHRcdFx0XHRcdCBcdTAwMjZpcHZzLVx1MDAzZXN2Y19yZXNpemVfd29yaywgMCk7XG4tLVxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2N0bC5jPTQ5OTU9c3RhdGljIGludCBfX25ldF9pbml0IGlwX3ZzX2NvbnRyb2xfbmV0X2luaXRfc3lzY3RsKHN0cnVjdCBuZXRuc19pcHZzICppcHZzKVxuLS1cbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jdGwuYy01MTI4LVx0LyogU2NoZWR1bGUgZGVmZW5zZSB3b3JrICovXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY3RsLmM6NTEyOTpcdHF1ZXVlX2RlbGF5ZWRfd29yayhzeXN0ZW1fZGZsX2xvbmdfd3EsIFx1MDAyNmlwdnMtXHUwMDNlZGVmZW5zZV93b3JrLFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2N0bC5jLTUxMzAtXHRcdFx0ICAgREVGRU5TRV9USU1FUl9QRVJJT0QpO1xuLS1cbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19lc3QuYz0yMzU9dm9pZCBpcF92c19lc3RfcmVsb2FkX3N0YXJ0KHN0cnVjdCBuZXRuc19pcHZzICppcHZzLCBib29sIHJlc3RhcnQpXG4tLVxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2VzdC5jLTI0NS1cdFx0YXRvbWljX2luYyhcdTAwMjZpcHZzLVx1MDAzZWVzdF9nZW5pZCk7XG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfZXN0LmM6MjQ2Olx0cXVldWVfZGVsYXllZF93b3JrKHN5c3RlbV9kZmxfbG9uZ193cSwgXHUwMDI2aXB2cy1cdTAwM2Vlc3RfcmVsb2FkX3dvcmssIDApO1xubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2VzdC5jLTI0Ny19XG4tLVxubmV0L3N1bnJwYy94cHJ0cmRtYS90cmFuc3BvcnQuYz00ODA9eHBydF9yZG1hX2Nvbm5lY3Qoc3RydWN0IHJwY194cHJ0ICp4cHJ0LCBzdHJ1Y3QgcnBjX3Rhc2sgKnRhc2spXG4tLVxubmV0L3N1bnJwYy94cHJ0cmRtYS90cmFuc3BvcnQuYy00OTMtXHR0cmFjZV94cHJ0cmRtYV9vcF9jb25uZWN0KHJfeHBydCwgZGVsYXkpO1xubmV0L3N1bnJwYy94cHJ0cmRtYS90cmFuc3BvcnQuYzo0OTQ6XHRxdWV1ZV9kZWxheWVkX3dvcmsoc3lzdGVtX2RmbF9sb25nX3dxLCBcdTAwMjZyX3hwcnQtXHUwMDNlcnhfY29ubmVjdF93b3JrZXIsXG5uZXQvc3VucnBjL3hwcnRyZG1hL3RyYW5zcG9ydC5jLTQ5NS1cdFx0XHQgICBkZWxheSk7XG4tLVxuc291bmQvc29jL2NvZGVjcy9jczQybDQzLWphY2suYz03OTY9aXJxcmV0dXJuX3QgY3M0Mmw0M190aXBfc2Vuc2UoaW50IGlycSwgdm9pZCAqZGF0YSlcbi0tXG5zb3VuZC9zb2MvY29kZWNzL2NzNDJsNDMtamFjay5jLTgwNy1cbnNvdW5kL3NvYy9jb2RlY3MvY3M0Mmw0My1qYWNrLmM6ODA4Olx0cXVldWVfZGVsYXllZF93b3JrKHN5c3RlbV9kZmxfbG9uZ193cSwgXHUwMDI2cHJpdi1cdTAwM2V0aXBfc2Vuc2Vfd29yayxcbnNvdW5kL3NvYy9jb2RlY3MvY3M0Mmw0My1qYWNrLmMtODA5LVx0XHRcdCAgIG1zZWNzX3RvX2ppZmZpZXMoZGJfZGVsYXkpKTtcbi0tXG5zb3VuZC9zb2MvY29kZWNzL2NzNDJsNDMtamFjay5jPTkwNT1pbnQgY3M0Mmw0M19qYWNrX3B1dChzdHJ1Y3Qgc25kX2tjb250cm9sICprY29udHJvbCwgc3RydWN0IHNuZF9jdGxfZWxlbV92YWx1ZSAqdWNvbnRyb2wpXG4tLVxuc291bmQvc29jL2NvZGVjcy9jczQybDQzLWphY2suYy05MzQtXHRpZiAoIW92ZXJyaWRlKSB7XG5zb3VuZC9zb2MvY29kZWNzL2NzNDJsNDMtamFjay5jOjkzNTpcdFx0cXVldWVfZGVsYXllZF93b3JrKHN5c3RlbV9kZmxfbG9uZ193cSwgXHUwMDI2cHJpdi1cdTAwM2V0aXBfc2Vuc2Vfd29yayxcbnNvdW5kL3NvYy9jb2RlY3MvY3M0Mmw0My1qYWNrLmMtOTM2LVx0XHRcdFx0ICAgMCk7XG4tLVxuc291bmQvc29jL2NvZGVjcy9ydDU2NDAuYz0yMzE0PXN0YXRpYyB2b2lkIHJ0NTY0MF9qYWNrX3dvcmsoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxuLS1cbnNvdW5kL3NvYy9jb2RlY3MvcnQ1NjQwLmMtMjM5OS1cdFx0ICovXG5zb3VuZC9zb2MvY29kZWNzL3J0NTY0MC5jOjI0MDA6XHRcdHF1ZXVlX2RlbGF5ZWRfd29yayhzeXN0ZW1fZGZsX2xvbmdfd3EsIFx1MDAyNnJ0NTY0MC1cdTAwM2VqYWNrX3dvcmssIDApO1xuc291bmQvc29jL2NvZGVjcy9ydDU2NDAuYy0yNDAxLVx0fVxuLS1cbnNvdW5kL3NvYy9jb2RlY3MvcnQ1NjQwLmM9MjQwND1zdGF0aWMgaXJxcmV0dXJuX3QgcnQ1NjQwX2lycShpbnQgaXJxLCB2b2lkICpkYXRhKVxuLS1cbnNvdW5kL3NvYy9jb2RlY3MvcnQ1NjQwLmMtMjQxMi1cdGlmIChydDU2NDAtXHUwMDNlamFjaylcbnNvdW5kL3NvYy9jb2RlY3MvcnQ1NjQwLmM6MjQxMzpcdFx0bW9kX2RlbGF5ZWRfd29yayhzeXN0ZW1fZGZsX2xvbmdfd3EsIFx1MDAyNnJ0NTY0MC1cdTAwM2VqYWNrX3dvcmssXG5zb3VuZC9zb2MvY29kZWNzL3J0NTY0MC5jLTI0MTQtXHRcdFx0XHQgZGVsYXkpO1xuLS1cbnNvdW5kL3NvYy9jb2RlY3MvcnQ1NjQwLmM9MjQxOT1zdGF0aWMgaXJxcmV0dXJuX3QgcnQ1NjQwX2pkX2dwaW9faXJxKGludCBpcnEsIHZvaWQgKmRhdGEpXG4tLVxuc291bmQvc29jL2NvZGVjcy9ydDU2NDAuYy0yNDIyLVxuc291bmQvc29jL2NvZGVjcy9ydDU2NDAuYzoyNDIzOlx0cXVldWVfZGVsYXllZF93b3JrKHN5c3RlbV9kZmxfbG9uZ193cSwgXHUwMDI2cnQ1NjQwLVx1MDAzZWphY2tfd29yayxcbnNvdW5kL3NvYy9jb2RlY3MvcnQ1NjQwLmMtMjQyNC1cdFx0XHQgICBtc2Vjc190b19qaWZmaWVzKEpBQ0tfU0VUVExFX1RJTUUpKTtcbi0tXG5zb3VuZC9zb2MvY29kZWNzL3J0NTY0MC5jPTI0OTU9c3RhdGljIHZvaWQgcnQ1NjQwX2VuYWJsZV9qYWNrX2RldGVjdChzdHJ1Y3Qgc25kX3NvY19jb21wb25lbnQgKmNvbXBvbmVudCxcbi0tXG5zb3VuZC9zb2MvY29kZWNzL3J0NTY0MC5jLTI1ODQtXHQvKiBzeW5jIGluaXRpYWwgamFjayBzdGF0ZSAqL1xuc291bmQvc29jL2NvZGVjcy9ydDU2NDAuYzoyNTg1Olx0cXVldWVfZGVsYXllZF93b3JrKHN5c3RlbV9kZmxfbG9uZ193cSwgXHUwMDI2cnQ1NjQwLVx1MDAzZWphY2tfd29yaywgMCk7XG5zb3VuZC9zb2MvY29kZWNzL3J0NTY0MC5jLTI1ODYtfVxuLS1cbnNvdW5kL3NvYy9jb2RlY3MvcnQ1NjQwLmM9MjU5ND1zdGF0aWMgdm9pZCBydDU2NDBfZW5hYmxlX2hkYV9qYWNrX2RldGVjdChcbi0tXG5zb3VuZC9zb2MvY29kZWNzL3J0NTY0MC5jLTI2MzctXHQvKiBzeW5jIGluaXRpYWwgamFjayBzdGF0ZSAqL1xuc291bmQvc29jL2NvZGVjcy9ydDU2NDAuYzoyNjM4Olx0cXVldWVfZGVsYXllZF93b3JrKHN5c3RlbV9kZmxfbG9uZ193cSwgXHUwMDI2cnQ1NjQwLVx1MDAzZWphY2tfd29yaywgMCk7XG5zb3VuZC9zb2MvY29kZWNzL3J0NTY0MC5jLTI2MzktXG4tLVxuc291bmQvc29jL2NvZGVjcy9ydDU2NDAuYz0yODI2PXN0YXRpYyBpbnQgcnQ1NjQwX3Jlc3VtZShzdHJ1Y3Qgc25kX3NvY19jb21wb25lbnQgKmNvbXBvbmVudClcbi0tXG5zb3VuZC9zb2MvY29kZWNzL3J0NTY0MC5jLTI4NjUtXHRcdGVuYWJsZV9pcnEocnQ1NjQwLVx1MDAzZWlycSk7XG5zb3VuZC9zb2MvY29kZWNzL3J0NTY0MC5jOjI4NjY6XHRcdHF1ZXVlX2RlbGF5ZWRfd29yayhzeXN0ZW1fZGZsX2xvbmdfd3EsIFx1MDAyNnJ0NTY0MC1cdTAwM2VqYWNrX3dvcmssIDApO1xuc291bmQvc29jL2NvZGVjcy9ydDU2NDAuYy0yODY3LVx0fVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjExLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMiAxNDo1MzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMTQ4NAoJCQkJCQkJb3V0cHV0OiAxOQoJCQkJCQkJdGhvdWdodHM6IDQzOQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipGdXp6aW5nIERlY2lzaW9uIGZvciBXb3JrcXVldWUgQ2hhbmdlKioKCk9rYXksIHNvIHRoaXMgcGF0Y2ggaXMgc3dpdGNoaW5nIHRoZSB3b3JrcXVldWUgdXNlZCBieSBJUFZTIGZyb20gYHN5c3RlbV9sb25nX3dxYCB0byBgc3lzdGVtX2RmbF9sb25nX3dxYC4gU2VlbXMgbGlrZSBhIG1pbm9yIGZ1bmN0aW9uYWwgY2hhbmdlLCBidXQgbGV0JiMzOTtzIGNvbnNpZGVyIGZ1enppbmcgaXQuIEl0JiMzOTtzIGluIGBuZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY3RsLmNgIGFuZCBgbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2VzdC5jYCwgc28gaXQmIzM5O3MgbG9jYWxpemVkLiBUaGUgY29yZSBxdWVzdGlvbiBpczogaXMgaXQgKndvcnRoKiBpdD8KClRoZSBpbnN0cnVjdGlvbnMgc2F5IHRvIG9ubHkgcmV0dXJuIGBXb3J0aEZ1enppbmc9ZmFsc2VgIGlmIGl04oCZcyBkb2N1bWVudGF0aW9uLCBkZWNvcmF0aXZlIGNoYW5nZXMsIG9yIHNvbWV0aGluZyB0aGF0IHdvbiYjMzk7dCBjaGFuZ2UgdGhlIGV4ZWN1dGlvbi4gVGhpcyBwYXRjaCAqZG9lcyogYWx0ZXIgZXhlY3V0aW9uIGZsb3csIGJlY2F1c2UgaXQmIzM5O3MgZGV0ZXJtaW5pbmcgd2hpY2ggd29ya3F1ZXVlIGV4ZWN1dGVzIHRoZSBmdW5jdGlvbiwgaXQmIzM5O3Mgbm90IGNvc21ldGljLiBTbywgeWVzLCBpdOKAmXMgYSBmdW5jdGlvbmFsIGNoYW5nZSwgbm90IGp1c3QgYSBjb21tZW50IG9yIGRvY3VtZW50YXRpb24gdXBkYXRlLgoKVGhlcmVmb3JlLCBJJiMzOTttIGxlYW5pbmcgdG93YXJkcyBgV29ydGhGdXp6aW5nPXRydWVgLiBJIG5lZWQgdG8gcHJvdmlkZSB0aGUgc3VwcG9ydGluZyBhcmd1bWVudHMgdGhvdWdoLiBTcGVjaWZpY2FsbHkgdGhlIGBGb2N1c1N5bWJvbHNgIGFuZCBgRW5hYmxlQ29uZmlnc2AuIFRoZSBgRm9jdXNTeW1ib2xzYCBhcHBlYXIgdG8gYmUgYGRlZmVuc2Vfd29ya19oYW5kbGVyYCwgYGVzdF9yZWxvYWRfd29ya19oYW5kbGVyYCwgYW5kIGBpcF92c19lc3RfcmVsb2FkX3N0YXJ0YC4gYEVuYWJsZUNvbmZpZ3NgIGlzIHN0cmFpZ2h0Zm9yd2FyZDogYElQX1ZTYC4gVGhhdCBzZWVtcyByaWdodCwgYnV0IGxldCYjMzk7cyBkb3VibGUtY2hlY2sgYW55IHJlbGF0ZWQgY29uZmlncywganVzdCB0byBiZSBzdXJlLgoKV2FpdCBhIHNlY29uZOKApiBgZGVmZW5zZV93b3JrX2hhbmRsZXJgIGlzIGluc2lkZSBhbiBgI2lmZGVmIENPTkZJR19TWVNDVExgIGJsb2NrLiBUaGlzIG5lZWRzIGEgY2xvc2VyIGxvb2sgYXQgYGlwX3ZzX2N0bC5jYCBhcm91bmQgbGluZSAyMzUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAyIDE0OjUzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2RlZmVuc2Vfd29ya19oYW5kbGVyJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jdGwuYz0yMTY9c3RhdGljIHZvaWQgZXhwaXJlX25vZGVzdF9jb25uX2hhbmRsZXIoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxuLS1cbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jdGwuYy0yMjktXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY3RsLmM6MjMwOnN0YXRpYyB2b2lkIGRlZmVuc2Vfd29ya19oYW5kbGVyKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaylcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jdGwuYy0yMzEte1xuLS1cbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jdGwuYz00OTk1PXN0YXRpYyBpbnQgX19uZXRfaW5pdCBpcF92c19jb250cm9sX25ldF9pbml0X3N5c2N0bChzdHJ1Y3QgbmV0bnNfaXB2cyAqaXB2cylcbi0tXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY3RsLmMtNTAwNi1cdHNwaW5fbG9ja19pbml0KFx1MDAyNmlwdnMtXHUwMDNlc2VjdXJldGNwX2xvY2spO1xubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2N0bC5jOjUwMDc6XHRJTklUX0RFTEFZRURfV09SSyhcdTAwMjZpcHZzLVx1MDAzZWRlZmVuc2Vfd29yaywgZGVmZW5zZV93b3JrX2hhbmRsZXIpO1xubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2N0bC5jLTUwMDgtXHRJTklUX0RFTEFZRURfV09SSyhcdTAwMjZpcHZzLVx1MDAzZWV4cGlyZV9ub2Rlc3RfY29ubl93b3JrLFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMiAxNDo1MzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMjU5OAoJCQkJCQkJb3V0cHV0OiA0MwoJCQkJCQkJdGhvdWdodHM6IDI4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIGEgc3VtbWFyeSBvZiBteSB0aG91Z2h0IHByb2Nlc3MsIGFzIGlmIEkgd2VyZSB0aGUgb25lIHRoaW5raW5nIGl0OgoKKipEaXZpbmcgaW50byB0aGUgSVBWUyBDb250cm9sIFBsYW5lKioKCk9rYXksIHRpbWUgdG8gZ2V0IG15IGhhbmRzIGRpcnR5IHdpdGggYG5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jdGwuY2AuIEkmIzM5O20gZ29pbmcgdG8ganVtcCBpbiBhcm91bmQgbGluZSAyMzAuIEkmIzM5O20gZ3Vlc3NpbmcgdGhhdCYjMzk7cyB3aGVyZSBhIGNydWNpYWwgcGFydCBvZiB0aGUgY29udHJvbCBwbGFuZSBsb2dpYywgc3BlY2lmaWNhbGx5IGFyb3VuZCBjb25maWd1cmF0aW9uIG9yIG1hbmlwdWxhdGlvbiBvZiB0aGUgSVBWUyB0YWJsZXMsIHJlc2lkZXMuIEkmIzM5O20gZXhwZWN0aW5nIHRvIGZpbmQgc29tZSBpbnRlcmVzdGluZyBpbnRlcmFjdGlvbiBwb2ludHMgd2l0aCB0aGUgbmV0ZmlsdGVyIGhvb2tzIG9yIHBlcmhhcHMgYSBrZXkgZnVuY3Rpb24gY2FsbCBkZWFsaW5nIHdpdGggc2VydmljZSBkZWZpbml0aW9uIG9yIGNvbm5lY3Rpb24gdHJhY2tpbmcgbW9kaWZpY2F0aW9ucy4gTGV0JiMzOTtzIHNlZSB3aGF0IGdlbXMgYXJlIHdhaXRpbmcgdG8gYmUgdW5lYXJ0aGVkLiBMaW5lIDIzMC4uLiBsZXQmIzM5O3Mgc2VlIHdoYXQmIzM5O3MgaW4gc3RvcmUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAyIDE0OjUzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7bmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2N0bC5jJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMjEwLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDUwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAyMTA6XHRcdGxvY2FsX2JoX2VuYWJsZSgpO1xuIDIxMTpcdH1cbiAyMTI6XHRcbiAyMTM6XHQvKiBIYW5kbGVyIGZvciBkZWxheWVkIHdvcmsgZm9yIGV4cGlyaW5nIG5vXG4gMjE0Olx0ICogZGVzdGluYXRpb24gY29ubmVjdGlvbnNcbiAyMTU6XHQgKi9cbiAyMTY6XHRzdGF0aWMgdm9pZCBleHBpcmVfbm9kZXN0X2Nvbm5faGFuZGxlcihzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspXG4gMjE3Olx0e1xuIDIxODpcdFx0c3RydWN0IG5ldG5zX2lwdnMgKmlwdnM7XG4gMjE5Olx0XG4gMjIwOlx0XHRpcHZzID0gY29udGFpbmVyX29mKHdvcmssIHN0cnVjdCBuZXRuc19pcHZzLFxuIDIyMTpcdFx0XHRcdCAgICBleHBpcmVfbm9kZXN0X2Nvbm5fd29yay53b3JrKTtcbiAyMjI6XHRcdGlwX3ZzX2V4cGlyZV9ub2Rlc3RfY29ubl9mbHVzaChpcHZzKTtcbiAyMjM6XHR9XG4gMjI0Olx0XG4gMjI1Olx0LypcbiAyMjY6XHQgKlx0VGltZXIgZm9yIGNoZWNraW5nIHRoZSBkZWZlbnNlXG4gMjI3Olx0ICovXG4gMjI4Olx0I2RlZmluZSBERUZFTlNFX1RJTUVSX1BFUklPRFx0MSpIWlxuIDIyOTpcdFxuIDIzMDpcdHN0YXRpYyB2b2lkIGRlZmVuc2Vfd29ya19oYW5kbGVyKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaylcbiAyMzE6XHR7XG4gMjMyOlx0XHRzdHJ1Y3QgbmV0bnNfaXB2cyAqaXB2cyA9XG4gMjMzOlx0XHRcdGNvbnRhaW5lcl9vZih3b3JrLCBzdHJ1Y3QgbmV0bnNfaXB2cywgZGVmZW5zZV93b3JrLndvcmspO1xuIDIzNDpcdFxuIDIzNTpcdFx0dXBkYXRlX2RlZmVuc2VfbGV2ZWwoaXB2cyk7XG4gMjM2Olx0XHRpZiAoYXRvbWljX3JlYWQoXHUwMDI2aXB2cy1cdTAwM2Vkcm9wZW50cnkpKVxuIDIzNzpcdFx0XHRpcF92c19yYW5kb21fZHJvcGVudHJ5KGlwdnMpO1xuIDIzODpcdFx0cXVldWVfZGVsYXllZF93b3JrKHN5c3RlbV9kZmxfbG9uZ193cSwgXHUwMDI2aXB2cy1cdTAwM2VkZWZlbnNlX3dvcmssXG4gMjM5Olx0XHRcdFx0ICAgREVGRU5TRV9USU1FUl9QRVJJT0QpO1xuIDI0MDpcdH1cbiAyNDE6XHQjZW5kaWZcbiAyNDI6XHRcbiAyNDM6XHRzdGF0aWMgdm9pZCBlc3RfcmVsb2FkX3dvcmtfaGFuZGxlcihzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspXG4gMjQ0Olx0e1xuIDI0NTpcdFx0c3RydWN0IG5ldG5zX2lwdnMgKmlwdnMgPVxuIDI0NjpcdFx0XHRjb250YWluZXJfb2Yod29yaywgc3RydWN0IG5ldG5zX2lwdnMsIGVzdF9yZWxvYWRfd29yay53b3JrKTtcbiAyNDc6XHRcdGludCBnZW5pZF9kb25lID0gYXRvbWljX3JlYWQoXHUwMDI2aXB2cy1cdTAwM2Vlc3RfZ2VuaWRfZG9uZSk7XG4gMjQ4Olx0XHR1bnNpZ25lZCBsb25nIGRlbGF5ID0gSFogLyAxMDtcdC8qIHJlcGVhdCBzdGFydHVwcyBhZnRlciBmYWlsdXJlICovXG4gMjQ5Olx0XHRib29sIHJlcGVhdCA9IGZhbHNlO1xuIDI1MDpcdFx0aW50IGdlbmlkO1xuIDI1MTpcdFx0aW50IGlkO1xuIDI1MjpcdFxuIDI1MzpcdFx0bXV0ZXhfbG9jayhcdTAwMjZpcHZzLVx1MDAzZWVzdF9tdXRleCk7XG4gMjU0Olx0XHRnZW5pZCA9IGF0b21pY19yZWFkKFx1MDAyNmlwdnMtXHUwMDNlZXN0X2dlbmlkKTtcbiAyNTU6XHRcdGZvciAoaWQgPSAwOyBpZCBcdTAwM2MgaXB2cy1cdTAwM2Vlc3Rfa3RfY291bnQ7IGlkJiM0MzsmIzQzOykge1xuIDI1NjpcdFx0XHRzdHJ1Y3QgaXBfdnNfZXN0X2t0X2RhdGEgKmtkID0gaXB2cy1cdTAwM2Vlc3Rfa3RfYXJyW2lkXTtcbiAyNTc6XHRcbiAyNTg6XHRcdFx0LyogbmV0bnMgY2xlYW4gdXAgc3RhcnRlZCwgYWJvcnQgZGVsYXllZCB3b3JrICovXG4gMjU5Olx0XHRcdGlmICghUkVBRF9PTkNFKGlwdnMtXHUwMDNlZW5hYmxlKSlcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDIgMTQ6NTM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTM2MTEKCQkJCQkJCW91dHB1dDogNDMKCQkJCQkJCXRob3VnaHRzOiAxNgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOgoKKipBbmFseXppbmcgQ29uZGl0aW9uYWwgQ29tcGlsYXRpb24qKgoKQWxyaWdodCwgc28gSSYjMzk7bSBsb29raW5nIGF0IGxpbmUgMjQxLCB3aGljaCBpcyBhIHNpbXBsZSBgI2VuZGlmYC4gVGhhdCYjMzk7cyB0aGUgZW5kIG9mIGEgY29uZGl0aW9uYWwgYmxvY2ssIG5vIHN1cnByaXNlcyB0aGVyZS4gQnV0IGl0IGltbWVkaWF0ZWx5IG1ha2VzIG1lIHRoaW5rLCAmIzM0O1doYXQgd2FzIHRoZSBjb3JyZXNwb25kaW5nIGAjaWZkZWZgIG9yIGAjaWZuZGVmYCB0aGF0IHN0YXJ0ZWQgdGhpcyBibG9jaz8mIzM0Oy4gSSBuZWVkIHRvIGtub3cgdGhlIGNvbmRpdGlvbmFsIGNvbXBpbGF0aW9uIGNvbmRpdGlvbi4gSSYjMzk7bSB0aGlua2luZywgaXMgaXQgYSBmZWF0dXJlIGZsYWcsIGEgcGxhdGZvcm0gZGVmaW5lLCBhIGRlYnVnIHN3aXRjaD8gS25vd2luZyAqdGhhdCogaXMgY3J1Y2lhbCB0byB1bmRlcnN0YW5kaW5nIHRoZSAqd2h5KiBvZiB0aGlzIHBhcnRpY3VsYXIgY29kZSBiZWluZyBwcmVzZW50IG9yIGFic2VudCBkdXJpbmcgYSBzcGVjaWZpYyBidWlsZC4gSSBuZWVkIHRvIHRyYWNlIGJhY2sgYW5kIGltbWVkaWF0ZWx5IGlkZW50aWZ5IHdoYXQgaXMgYmVpbmcgY29uZGl0aW9uYWxseSBjb21waWxlZCwgYW5kIHdoeS4gV2l0aG91dCBrbm93aW5nIHRoZSBgI2lmZGVmYCwgdGhpcyBgI2VuZGlmYCBpcyBqdXN0IGEgY2xvc2luZyBicmFja2V0IHdpdGhvdXQgY29udGV4dCwgYW4gb3JwaGFuIGluIHRoZSBjb2RlYmFzZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDIgMTQ6NTM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtuZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY3RsLmMmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAxNTAsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogNjAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7IDE1MDpcdFx0XHRcdGlwdnMtXHUwMDNlZHJvcF9jb3VudGVyID0gYW1lbXRocmVzaCAvIChhbWVtdGhyZXNoIC0gYXZhaWxtZW0pO1xuIDE1MTpcdFx0XHRcdGlwdnMtXHUwMDNlZHJvcF9yYXRlID0gaXB2cy1cdTAwM2Vkcm9wX2NvdW50ZXI7XG4gMTUyOlx0XHRcdFx0aXB2cy1cdTAwM2VzeXNjdGxfZHJvcF9wYWNrZXQgPSAyO1xuIDE1MzpcdFx0XHR9IGVsc2Uge1xuIDE1NDpcdFx0XHRcdGlwdnMtXHUwMDNlZHJvcF9yYXRlID0gMDtcbiAxNTU6XHRcdFx0fVxuIDE1NjpcdFx0XHRicmVhaztcbiAxNTc6XHRcdGNhc2UgMjpcbiAxNTg6XHRcdFx0aWYgKG5vbWVtKSB7XG4gMTU5Olx0XHRcdFx0aXB2cy1cdTAwM2Vkcm9wX2NvdW50ZXIgPSBhbWVtdGhyZXNoIC8gKGFtZW10aHJlc2ggLSBhdmFpbG1lbSk7XG4gMTYwOlx0XHRcdFx0aXB2cy1cdTAwM2Vkcm9wX3JhdGUgPSBpcHZzLVx1MDAzZWRyb3BfY291bnRlcjtcbiAxNjE6XHRcdFx0fSBlbHNlIHtcbiAxNjI6XHRcdFx0XHRpcHZzLVx1MDAzZWRyb3BfcmF0ZSA9IDA7XG4gMTYzOlx0XHRcdFx0aXB2cy1cdTAwM2VzeXNjdGxfZHJvcF9wYWNrZXQgPSAxO1xuIDE2NDpcdFx0XHR9XG4gMTY1Olx0XHRcdGJyZWFrO1xuIDE2NjpcdFx0Y2FzZSAzOlxuIDE2NzpcdFx0XHRpcHZzLVx1MDAzZWRyb3BfcmF0ZSA9IGlwdnMtXHUwMDNlc3lzY3RsX2FtX2Ryb3ByYXRlO1xuIDE2ODpcdFx0XHRicmVhaztcbiAxNjk6XHRcdH1cbiAxNzA6XHRcdHNwaW5fdW5sb2NrKFx1MDAyNmlwdnMtXHUwMDNlZHJvcHBhY2tldF9sb2NrKTtcbiAxNzE6XHRcbiAxNzI6XHRcdC8qIHNlY3VyZV90Y3AgKi9cbiAxNzM6XHRcdHNwaW5fbG9jayhcdTAwMjZpcHZzLVx1MDAzZXNlY3VyZXRjcF9sb2NrKTtcbiAxNzQ6XHRcdHN3aXRjaCAoaXB2cy1cdTAwM2VzeXNjdGxfc2VjdXJlX3RjcCkge1xuIDE3NTpcdFx0Y2FzZSAwOlxuIDE3NjpcdFx0XHRpZiAoaXB2cy1cdTAwM2VvbGRfc2VjdXJlX3RjcCBcdTAwM2U9IDIpXG4gMTc3Olx0XHRcdFx0dG9fY2hhbmdlID0gMDtcbiAxNzg6XHRcdFx0YnJlYWs7XG4gMTc5Olx0XHRjYXNlIDE6XG4gMTgwOlx0XHRcdGlmIChub21lbSkge1xuIDE4MTpcdFx0XHRcdGlmIChpcHZzLVx1MDAzZW9sZF9zZWN1cmVfdGNwIFx1MDAzYyAyKVxuIDE4MjpcdFx0XHRcdFx0dG9fY2hhbmdlID0gMTtcbiAxODM6XHRcdFx0XHRpcHZzLVx1MDAzZXN5c2N0bF9zZWN1cmVfdGNwID0gMjtcbiAxODQ6XHRcdFx0fSBlbHNlIHtcbiAxODU6XHRcdFx0XHRpZiAoaXB2cy1cdTAwM2VvbGRfc2VjdXJlX3RjcCBcdTAwM2U9IDIpXG4gMTg2Olx0XHRcdFx0XHR0b19jaGFuZ2UgPSAwO1xuIDE4NzpcdFx0XHR9XG4gMTg4Olx0XHRcdGJyZWFrO1xuIDE4OTpcdFx0Y2FzZSAyOlxuIDE5MDpcdFx0XHRpZiAobm9tZW0pIHtcbiAxOTE6XHRcdFx0XHRpZiAoaXB2cy1cdTAwM2VvbGRfc2VjdXJlX3RjcCBcdTAwM2MgMilcbiAxOTI6XHRcdFx0XHRcdHRvX2NoYW5nZSA9IDE7XG4gMTkzOlx0XHRcdH0gZWxzZSB7XG4gMTk0Olx0XHRcdFx0aWYgKGlwdnMtXHUwMDNlb2xkX3NlY3VyZV90Y3AgXHUwMDNlPSAyKVxuIDE5NTpcdFx0XHRcdFx0dG9fY2hhbmdlID0gMDtcbiAxOTY6XHRcdFx0XHRpcHZzLVx1MDAzZXN5c2N0bF9zZWN1cmVfdGNwID0gMTtcbiAxOTc6XHRcdFx0fVxuIDE5ODpcdFx0XHRicmVhaztcbiAxOTk6XHRcdGNhc2UgMzpcbiAyMDA6XHRcdFx0aWYgKGlwdnMtXHUwMDNlb2xkX3NlY3VyZV90Y3AgXHUwMDNjIDIpXG4gMjAxOlx0XHRcdFx0dG9fY2hhbmdlID0gMTtcbiAyMDI6XHRcdFx0YnJlYWs7XG4gMjAzOlx0XHR9XG4gMjA0Olx0XHRpcHZzLVx1MDAzZW9sZF9zZWN1cmVfdGNwID0gaXB2cy1cdTAwM2VzeXNjdGxfc2VjdXJlX3RjcDtcbiAyMDU6XHRcdGlmICh0b19jaGFuZ2UgXHUwMDNlPSAwKVxuIDIwNjpcdFx0XHRpcF92c19wcm90b2NvbF90aW1lb3V0X2NoYW5nZShpcHZzLFxuIDIwNzpcdFx0XHRcdFx0XHQgICAgICBpcHZzLVx1MDAzZXN5c2N0bF9zZWN1cmVfdGNwIFx1MDAzZSAxKTtcbiAyMDg6XHRcdHNwaW5fdW5sb2NrKFx1MDAyNmlwdnMtXHUwMDNlc2VjdXJldGNwX2xvY2spO1xuIDIwOTpcdFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE3LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMiAxNDo1MzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxNDc0OAoJCQkJCQkJb3V0cHV0OiA0MwoJCQkJCQkJdGhvdWdodHM6IDIxCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhlIHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZToKCioqTWlzc2luZyBQcmVwcm9jZXNzb3IgRGlyZWN0aXZlIEludmVzdGlnYXRpb24qKgoKQWxyaWdodCwgSSYjMzk7bSBzY2FubmluZyB0aGlzIGNvZGUsIGFuZCB0aGUgcHJlcHJvY2Vzc29yIGRpcmVjdGl2ZSBJJiMzOTttIGV4cGVjdGluZyBpc24mIzM5O3QganVtcGluZyBvdXQgYXQgbWUuIExldCYjMzk7cyBzdGFydCB0aGUgYW5hbHlzaXMgYXQgbGluZSA1MC4gSSYjMzk7bSBhc3N1bWluZyB0aGF0IGl0IGlzIGluIHRoaXMgcmVnaW9uLiBUaGlzIGlzIHdoZXJlIHRoZSBjb3JlIGxvZ2ljIG9mIHRoZSBmdW5jdGlvbmFsaXR5IGlzIHByb2JhYmx5IHNpdHVhdGVkIGFuZCB3aGVyZSB0aGUgaXNzdWUgd291bGQgbW9zdCBsaWtlbHkgbWFuaWZlc3QuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBjb250cm9sIGZsb3cgYXJvdW5kIHRoYXQgc2VjdGlvbi4gSXMgdGhlIGZ1bmN0aW9uYWxpdHkgY29uZGl0aW9uYWxseSBjb21waWxlZCBpbiBvciBvdXQ/IEl0IGNvdWxkIGJlIG1pc3Npbmcgb3IgbWF5YmUgdGhlIHJlbGV2YW50IGNvbmRpdGlvbiBoYXMgbm90IGJlZW4gbWV0LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMiAxNDo1MzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jdGwuYyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDUwLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDEwMAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgIDUwOlx0TU9EVUxFX0FMSUFTX0dFTkxfRkFNSUxZKElQVlNfR0VOTF9OQU1FKTtcbiAgNTE6XHRcbiAgNTI6XHRzdGF0aWMgc3RydWN0IGxvY2tfY2xhc3Nfa2V5IF9faXB2c19zZXJ2aWNlX2tleTtcbiAgNTM6XHRcbiAgNTQ6XHQvKiBzeXNjdGwgdmFyaWFibGVzICovXG4gIDU1Olx0XG4gIDU2Olx0I2lmZGVmIENPTkZJR19JUF9WU19ERUJVR1xuICA1NzpcdHN0YXRpYyBpbnQgc3lzY3RsX2lwX3ZzX2RlYnVnX2xldmVsID0gMDtcbiAgNTg6XHRcbiAgNTk6XHRpbnQgaXBfdnNfZ2V0X2RlYnVnX2xldmVsKHZvaWQpXG4gIDYwOlx0e1xuICA2MTpcdFx0cmV0dXJuIHN5c2N0bF9pcF92c19kZWJ1Z19sZXZlbDtcbiAgNjI6XHR9XG4gIDYzOlx0I2VuZGlmXG4gIDY0Olx0XG4gIDY1Olx0XG4gIDY2Olx0LyogIFByb3RvcyAqL1xuICA2NzpcdHN0YXRpYyB2b2lkIF9faXBfdnNfZGVsX3NlcnZpY2Uoc3RydWN0IGlwX3ZzX3NlcnZpY2UgKnN2YywgYm9vbCBjbGVhbnVwKTtcbiAgNjg6XHRcbiAgNjk6XHRcbiAgNzA6XHQjaWZkZWYgQ09ORklHX0lQX1ZTX0lQVjZcbiAgNzE6XHQvKiBUYWtlbiBmcm9tIHJ0Nl9maWxsX25vZGUoKSBpbiBuZXQvaXB2Ni9yb3V0ZS5jLCBpcyB0aGVyZSBhIGJldHRlciB3YXk/ICovXG4gIDcyOlx0c3RhdGljIGJvb2wgX19pcF92c19hZGRyX2lzX2xvY2FsX3Y2KHN0cnVjdCBuZXQgKm5ldCxcbiAgNzM6XHRcdFx0XHRcdCAgICAgY29uc3Qgc3RydWN0IGluNl9hZGRyICphZGRyKVxuICA3NDpcdHtcbiAgNzU6XHRcdHN0cnVjdCBmbG93aTYgZmw2ID0ge1xuICA3NjpcdFx0XHQuZGFkZHIgPSAqYWRkcixcbiAgNzc6XHRcdH07XG4gIDc4Olx0XHRzdHJ1Y3QgZHN0X2VudHJ5ICpkc3QgPSBpcDZfcm91dGVfb3V0cHV0KG5ldCwgTlVMTCwgXHUwMDI2Zmw2KTtcbiAgNzk6XHRcdGJvb2wgaXNfbG9jYWw7XG4gIDgwOlx0XG4gIDgxOlx0XHRpc19sb2NhbCA9ICFkc3QtXHUwMDNlZXJyb3IgXHUwMDI2XHUwMDI2IGRzdC1cdTAwM2VkZXYgXHUwMDI2XHUwMDI2IChkc3QtXHUwMDNlZGV2LVx1MDAzZWZsYWdzIFx1MDAyNiBJRkZfTE9PUEJBQ0spO1xuICA4MjpcdFxuICA4MzpcdFx0ZHN0X3JlbGVhc2UoZHN0KTtcbiAgODQ6XHRcdHJldHVybiBpc19sb2NhbDtcbiAgODU6XHR9XG4gIDg2Olx0I2VuZGlmXG4gIDg3Olx0XG4gIDg4Olx0I2lmZGVmIENPTkZJR19TWVNDVExcbiAgODk6XHQvKlxuICA5MDpcdCAqXHR1cGRhdGVfZGVmZW5zZV9sZXZlbCBpcyBjYWxsZWQgZnJvbSBrZXZlbnRkIGFuZCBmcm9tIHN5c2N0bCxcbiAgOTE6XHQgKlx0c28gaXQgbmVlZHMgdG8gcHJvdGVjdCBpdHNlbGYgZnJvbSBzb2Z0aXJxc1xuICA5MjpcdCAqL1xuICA5MzpcdHN0YXRpYyB2b2lkIHVwZGF0ZV9kZWZlbnNlX2xldmVsKHN0cnVjdCBuZXRuc19pcHZzICppcHZzKVxuICA5NDpcdHtcbiAgOTU6XHRcdHN0cnVjdCBzeXNpbmZvIGk7XG4gIDk2Olx0XHRpbnQgYXZhaWxtZW07XG4gIDk3Olx0XHRpbnQgYW1lbXRocmVzaDtcbiAgOTg6XHRcdGludCBub21lbTtcbiAgOTk6XHRcdGludCB0b19jaGFuZ2UgPSAtMTtcbiAxMDA6XHRcbiAxMDE6XHRcdC8qIHdlIG9ubHkgY291bnQgZnJlZSBhbmQgYnVmZmVyZWQgbWVtb3J5IChpbiBwYWdlcykgKi9cbiAxMDI6XHRcdHNpX21lbWluZm8oXHUwMDI2aSk7XG4gMTAzOlx0XHRhdmFpbG1lbSA9IGkuZnJlZXJhbSAmIzQzOyBpLmJ1ZmZlcnJhbTtcbiAxMDQ6XHRcdC8qIGhvd2V2ZXIgaW4gbGludXggMi41IHRoZSBpLmJ1ZmZlcnJhbSBpcyB0b3RhbCBwYWdlIGNhY2hlIHNpemUsXG4gMTA1Olx0XHQgICB3ZSBuZWVkIGFkanVzdCBpdCAqL1xuIDEwNjpcdFx0Lyogc2lfc3dhcGluZm8oXHUwMDI2aSk7ICovXG4gMTA3Olx0XHQvKiBhdmFpbG1lbSA9IGF2YWlsbWVtIC0gKGkudG90YWxzd2FwIC0gaS5mcmVlc3dhcCk7ICovXG4gMTA4Olx0XG4gMTA5Olx0XHRhbWVtdGhyZXNoID0gbWF4KFJFQURfT05DRShpcHZzLVx1MDAzZXN5c2N0bF9hbWVtdGhyZXNoKSwgMCk7XG4gMTEwOlx0XHRub21lbSA9IChhdmFpbG1lbSBcdTAwM2MgYW1lbXRocmVzaCk7XG4gMTExOlx0XG4gMTEyOlx0XHRsb2NhbF9iaF9kaXNhYmxlKCk7XG4gMTEzOlx0XG4gMTE0Olx0XHQvKiBkcm9wX2VudHJ5ICovXG4gMTE1Olx0XHRzcGluX2xvY2soXHUwMDI2aXB2cy1cdTAwM2Vkcm9wZW50cnlfbG9jayk7XG4gMTE2Olx0XHRzd2l0Y2ggKGlwdnMtXHUwMDNlc3lzY3RsX2Ryb3BfZW50cnkpIHtcbiAxMTc6XHRcdGNhc2UgMDpcbiAxMTg6XHRcdFx0YXRvbWljX3NldChcdTAwMjZpcHZzLVx1MDAzZWRyb3BlbnRyeSwgMCk7XG4gMTE5Olx0XHRcdGJyZWFrO1xuIDEyMDpcdFx0Y2FzZSAxOlxuIDEyMTpcdFx0XHRpZiAobm9tZW0pIHtcbiAxMjI6XHRcdFx0XHRhdG9taWNfc2V0KFx1MDAyNmlwdnMtXHUwMDNlZHJvcGVudHJ5LCAxKTtcbiAxMjM6XHRcdFx0XHRpcHZzLVx1MDAzZXN5c2N0bF9kcm9wX2VudHJ5ID0gMjtcbiAxMjQ6XHRcdFx0fSBlbHNlIHtcbiAxMjU6XHRcdFx0XHRhdG9taWNfc2V0KFx1MDAyNmlwdnMtXHUwMDNlZHJvcGVudHJ5LCAwKTtcbiAxMjY6XHRcdFx0fVxuIDEyNzpcdFx0XHRicmVhaztcbiAxMjg6XHRcdGNhc2UgMjpcbiAxMjk6XHRcdFx0aWYgKG5vbWVtKSB7XG4gMTMwOlx0XHRcdFx0YXRvbWljX3NldChcdTAwMjZpcHZzLVx1MDAzZWRyb3BlbnRyeSwgMSk7XG4gMTMxOlx0XHRcdH0gZWxzZSB7XG4gMTMyOlx0XHRcdFx0YXRvbWljX3NldChcdTAwMjZpcHZzLVx1MDAzZWRyb3BlbnRyeSwgMCk7XG4gMTMzOlx0XHRcdFx0aXB2cy1cdTAwM2VzeXNjdGxfZHJvcF9lbnRyeSA9IDE7XG4gMTM0Olx0XHRcdH1cbiAxMzU6XHRcdFx0YnJlYWs7XG4gMTM2Olx0XHRjYXNlIDM6XG4gMTM3Olx0XHRcdGF0b21pY19zZXQoXHUwMDI2aXB2cy1cdTAwM2Vkcm9wZW50cnksIDEpO1xuIDEzODpcdFx0XHRicmVhaztcbiAxMzk6XHRcdH1cbiAxNDA6XHRcdHNwaW5fdW5sb2NrKFx1MDAyNmlwdnMtXHUwMDNlZHJvcGVudHJ5X2xvY2spO1xuIDE0MTpcdFxuIDE0MjpcdFx0LyogZHJvcF9wYWNrZXQgKi9cbiAxNDM6XHRcdHNwaW5fbG9jayhcdTAwMjZpcHZzLVx1MDAzZWRyb3BwYWNrZXRfbG9jayk7XG4gMTQ0Olx0XHRzd2l0Y2ggKGlwdnMtXHUwMDNlc3lzY3RsX2Ryb3BfcGFja2V0KSB7XG4gMTQ1Olx0XHRjYXNlIDA6XG4gMTQ2Olx0XHRcdGlwdnMtXHUwMDNlZHJvcF9yYXRlID0gMDtcbiAxNDc6XHRcdFx0YnJlYWs7XG4gMTQ4Olx0XHRjYXNlIDE6XG4gMTQ5Olx0XHRcdGlmIChub21lbSkge1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE5LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMiAxNDo1MzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxNjMzNQoJCQkJCQkJb3V0cHV0OiA0MwoJCQkJCQkJdGhvdWdodHM6IDEzNAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgQ29uZGl0aW9uYWwgQ29tcGlsYXRpb24gaW4gS2VybmVsIENvZGUqKgoKT2theSwgbGV0JiMzOTtzIHNlZSwgc3RhcnRpbmcgd2l0aCBsaW5lIDg4LiBJIHNlZSBhIGAjaWZkZWYgQ09ORklHX1NZU0NUTGAgZGlyZWN0aXZlIHRoZXJlLCB3aGljaCBtZWFucyB0aGUgYGRlZmVuc2Vfd29ya19oYW5kbGVyYCBmdW5jdGlvbiB3aWxsIG9ubHkgYmUgY29tcGlsZWQgaWYgdGhlIGBDT05GSUdfU1lTQ1RMYCBvcHRpb24gaXMgZW5hYmxlZCBpbiB0aGUga2VybmVsIGNvbmZpZ3VyYXRpb24uIEkgbmVlZCB0byBrZWVwIHRoYXQgaW4gbWluZC4gTm93LCBJIHNob3VsZCBkb3VibGUgY2hlY2sgdG8gc2VlIGlmIHRoZSBgZXN0X3JlbG9hZF93b3JrX2hhbmRsZXJgIGlzIHNpbWlsYXJseSBjb25kaXRpb25hbC4gTGV0JiMzOTtzIHNlZS4uLiBsb29raW5nIGZ1cnRoZXIgZG93biwgaXQmIzM5O3MgYXQgbGluZSAyNDMsIHdpdGggdGhlIGAjZW5kaWZgIGZvciBgQ09ORklHX1NZU0NUTGAganVzdCBhYm92ZSBhdCBsaW5lIDI0MS4gQWxyaWdodCwgc28gYGVzdF9yZWxvYWRfd29ya19oYW5kbGVyYCBpcyAqYWx3YXlzKiBjb21waWxlZCwgcmVnYXJkbGVzcyBvZiBgQ09ORklHX1NZU0NUTGAuIFRoYXQmIzM5O3MgaW1wb3J0YW50IHRvIHJlbWVtYmVyIGZvciBmdXR1cmUgZGVidWdnaW5nIG9yIGFuYWx5c2lzLiBOb3csIEkgcmVjYWxsIHRoYXQgYGlwX3ZzX2VzdF9yZWxvYWRfc3RhcnRgIGlzIGRlZmluZWQgd2l0aGluIGBpcF92c19lc3QuY2AsIHNvIEkgc2hvdWxkIGdvIGFuZCBjaGVjayB0aGF0IGZpbGUgYXJvdW5kIGxpbmUgMjQzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMiAxNDo1MzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19lc3QuYyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDIwMCwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiA1MAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgMjAwOlx0XHRcdFx0aXBfdnNfZXN0X2RyYWluX3RlbXBfbGlzdChpcHZzKTtcbiAyMDE6XHRcdFx0c2V0X2N1cnJlbnRfc3RhdGUoVEFTS19JRExFKTtcbiAyMDI6XHRcdFx0aWYgKGt0aHJlYWRfc2hvdWxkX3N0b3AoKSlcbiAyMDM6XHRcdFx0XHRicmVhaztcbiAyMDQ6XHRcbiAyMDU6XHRcdFx0LyogYmVmb3JlIGVzdGltYXRpb24sIGNoZWNrIGlmIHdlIHNob3VsZCBzbGVlcCAqL1xuIDIwNjpcdFx0XHRub3cgPSBqaWZmaWVzO1xuIDIwNzpcdFx0XHRnYXAgPSBrZC1cdTAwM2Vlc3RfdGltZXIgLSBub3c7XG4gMjA4Olx0XHRcdGlmIChnYXAgXHUwMDNlIDApIHtcbiAyMDk6XHRcdFx0XHRpZiAoZ2FwIFx1MDAzZSBJUFZTX0VTVF9USUNLKSB7XG4gMjEwOlx0XHRcdFx0XHRrZC1cdTAwM2Vlc3RfdGltZXIgPSBub3cgLSBJUFZTX0VTVF9USUNLO1xuIDIxMTpcdFx0XHRcdFx0Z2FwID0gSVBWU19FU1RfVElDSztcbiAyMTI6XHRcdFx0XHR9XG4gMjEzOlx0XHRcdFx0c2NoZWR1bGVfdGltZW91dChnYXApO1xuIDIxNDpcdFx0XHR9IGVsc2Uge1xuIDIxNTpcdFx0XHRcdF9fc2V0X2N1cnJlbnRfc3RhdGUoVEFTS19SVU5OSU5HKTtcbiAyMTY6XHRcdFx0XHRpZiAoZ2FwIFx1MDAzYyAtOCAqIElQVlNfRVNUX1RJQ0spXG4gMjE3Olx0XHRcdFx0XHRrZC1cdTAwM2Vlc3RfdGltZXIgPSBub3c7XG4gMjE4Olx0XHRcdH1cbiAyMTk6XHRcbiAyMjA6XHRcdFx0aWYgKGtkLVx1MDAzZXRpY2tfbGVuW3Jvd10pXG4gMjIxOlx0XHRcdFx0aXBfdnNfdGlja19lc3RpbWF0aW9uKGtkLCByb3cpO1xuIDIyMjpcdFxuIDIyMzpcdFx0XHRyb3cmIzQzOyYjNDM7O1xuIDIyNDpcdFx0XHRpZiAocm93IFx1MDAzZT0gSVBWU19FU1RfTlRJQ0tTKVxuIDIyNTpcdFx0XHRcdHJvdyA9IDA7XG4gMjI2Olx0XHRcdFdSSVRFX09OQ0Uoa2QtXHUwMDNlZXN0X3Jvdywgcm93KTtcbiAyMjc6XHRcdFx0a2QtXHUwMDNlZXN0X3RpbWVyICYjNDM7PSBJUFZTX0VTVF9USUNLO1xuIDIyODpcdFx0fVxuIDIyOTpcdFx0X19zZXRfY3VycmVudF9zdGF0ZShUQVNLX1JVTk5JTkcpO1xuIDIzMDpcdFxuIDIzMTpcdFx0cmV0dXJuIDA7XG4gMjMyOlx0fVxuIDIzMzpcdFxuIDIzNDpcdC8qIFNjaGVkdWxlIHN0b3Avc3RhcnQgZm9yIGt0aHJlYWQgdGFza3MgKi9cbiAyMzU6XHR2b2lkIGlwX3ZzX2VzdF9yZWxvYWRfc3RhcnQoc3RydWN0IG5ldG5zX2lwdnMgKmlwdnMsIGJvb2wgcmVzdGFydClcbiAyMzY6XHR7XG4gMjM3Olx0XHRsb2NrZGVwX2Fzc2VydF9oZWxkKFx1MDAyNmlwdnMtXHUwMDNlZXN0X211dGV4KTtcbiAyMzg6XHRcbiAyMzk6XHRcdC8qIElnbm9yZSByZWxvYWRzIGJlZm9yZSBmaXJzdCBzZXJ2aWNlIGlzIGFkZGVkICovXG4gMjQwOlx0XHRpZiAoIVJFQURfT05DRShpcHZzLVx1MDAzZWVuYWJsZSkpXG4gMjQxOlx0XHRcdHJldHVybjtcbiAyNDI6XHRcdGlwX3ZzX2VzdF9zdG9wcGVkX3JlY2FsYyhpcHZzKTtcbiAyNDM6XHRcdC8qIEJ1bXAgdGhlIGt0aHJlYWQgY29uZmlndXJhdGlvbiBnZW5pZCBpZiBzdG9wcGluZyBpcyByZXF1ZXN0ZWQgKi9cbiAyNDQ6XHRcdGlmIChyZXN0YXJ0KVxuIDI0NTpcdFx0XHRhdG9taWNfaW5jKFx1MDAyNmlwdnMtXHUwMDNlZXN0X2dlbmlkKTtcbiAyNDY6XHRcdHF1ZXVlX2RlbGF5ZWRfd29yayhzeXN0ZW1fZGZsX2xvbmdfd3EsIFx1MDAyNmlwdnMtXHUwMDNlZXN0X3JlbG9hZF93b3JrLCAwKTtcbiAyNDc6XHR9XG4gMjQ4Olx0XG4gMjQ5Olx0LyogU3RhcnQga3RocmVhZCB0YXNrIHdpdGggY3VycmVudCBjb25maWd1cmF0aW9uICovXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAyIDE0OjUzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE3NDkxCgkJCQkJCQlvdXRwdXQ6IDEyMAoJCQkJCQkJdGhvdWdodHM6IDEwMTQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHlzaXMgb2YgSVBWUyBQYXRjaCBmb3IgRnV6emluZyBTdWl0YWJpbGl0eSoqCgpPa2F5LCBzbyBJJiMzOTt2ZSBnb3QgdGhpcyBwYXRjaCBmb3IgSVBWUyB0byByZXZpZXcuIE15IGltbWVkaWF0ZSBmb2N1cywgYmFzZWQgb24gdGhlIGNvZGUsIGxhbmRzIG9uIHRoZSBmdW5jdGlvbnMgYGRlZmVuc2Vfd29ya19oYW5kbGVyYCwgYGVzdF9yZWxvYWRfd29ya19oYW5kbGVyYCwgYW5kIGBpcF92c19lc3RfcmVsb2FkX3N0YXJ0YC4gVGhlIHJlbGV2YW50IGNvbmZpZyBpcyBvYnZpb3VzbHkgYElQX1ZTYCwgYW5kIEkmIzM5O2xsIGluY2x1ZGUgdGhhdCBhcyBlbmFibGVkLiBBbmQgeWVzLCBgU1lTQ1RMYCBpcyBhbG1vc3QgYWx3YXlzIGVuYWJsZWQuIEkmIzM5O2xsIHN0aWNrIHdpdGggbGlzdGluZyBgSVBfVlNgIGZvciBjbGFyaXR5LgoKTm93LCBsZXQmIzM5O3MgZG91YmxlLWNoZWNrIGFnYWluc3QgdGhlIGNyaXRlcmlhIGZvciAmIzM0O1dvcnRoRnV6emluZz1mYWxzZS4mIzM0OyBUaGUgaW5zdHJ1Y3Rpb25zIGFyZSBjbGVhcjogaWYgdGhlIHBhdGNoIG1vZGlmaWVzIHVucmVhY2hhYmxlIGNvZGUgcGF0aHMgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsIGV2ZW4gd2l0aCBzb2Z0d2FyZSBlbXVsYXRpb24sIHRoZW4gaXQgaXNuJiMzOTt0IHdvcnRoIGZ1enppbmcuIEkgbmVlZCB0byBtYWtlIHN1cmUgdGhpcyBpc24mIzM5O3QgdGhlIGNhc2UuIEFuZCBJUFZTICppcyogcmVhY2hhYmxlLCBzbyB0aGF0JiMzOTtzIGdvb2QuIEFuZCB0aGVzZSBhcmUgZnVuY3Rpb25hbCBjaGFuZ2VzLCBzbyB0aGlzICppcyogd29ydGggZnV6emluZy4KCkxvb2tpbmcgbW9yZSBjbG9zZWx5IGF0IHRoZSBwYXRjaCBpdHNlbGYgKHdoaWNoIGlzIHJlYWxseSBqdXN0IGEgc2ltcGxlIGNoYW5nZSksIGl0IGFwcGVhcnMgdG8gaW52b2x2ZSBjaGFuZ2VzIHRvIHdoZXJlIGRlbGF5ZWQgd29yayBpcyBxdWV1ZWQuIFNwZWNpZmljYWxseSwgaXQmIzM5O3MgbW92aW5nIGZyb20gYHN5c3RlbV9sb25nX3dxYCB0byBgc3lzdGVtX2RmbF9sb25nX3dxYCBpbiB0aHJlZSBwbGFjZXM6IHRoZSBgZGVmZW5zZV93b3JrX2hhbmRsZXJgLCB0aGUgYGVzdF9yZWxvYWRfd29ya19oYW5kbGVyYCwgYW5kIHRoZSBgaXBfdnNfZXN0X3JlbG9hZF9zdGFydGAgZnVuY3Rpb25zLgoKT3JpZ2luYWxseSBJIHdhcyBhbHNvIGdvaW5nIHRvIGluY2x1ZGUgYGlwX3ZzX2NvbnRyb2xfbmV0X2luaXRfc3lzY3RsYCwgYnV0IHRoYXQmIzM5O3MgYW4gaW5pdGlhbGl6YXRpb24gZnVuY3Rpb24uIEl0JiMzOTtzIG5vdCBhIGdvb2QgZnVuY3Rpb24gdG8gZnV6eiwgYmVjYXVzZSBpdCYjMzk7cyBub3QgYSBmdW5jdGlvbiB0aGF0IGdldHMgY2FsbGVkIHJlcGVhdGVkbHksIGl0JiMzOTtzIGp1c3QgY2FsbGVkIGF0IGluaXRpYWxpemF0aW9uLgoKQWxyaWdodCwgd2l0aCB0aGF0IGluIG1pbmQsIEkgYW0gY29uZmlkZW50IHRoYXQgdGhlc2UgY2hhbmdlcyBhcmUgaW5kZWVkIHdvcnRoIGZ1enppbmcuIFRoZXJlZm9yZTogYFdvcnRoRnV6emluZz10cnVlYC4gTXkgYEZvY3VzU3ltYm9sc2Agd2lsbCBiZTogYGRlZmVuc2Vfd29ya19oYW5kbGVyYCwgYGVzdF9yZWxvYWRfd29ya19oYW5kbGVyYCwgYW5kIGBpcF92c19lc3RfcmVsb2FkX3N0YXJ0YC4gYEVuYWJsZUNvbmZpZ3NgIHJlbWFpbnMgYXQ6IGBJUF9WU2AuIEkmIzM5O2xsIGdvIGFoZWFkIGFuZCBzZXQgdGhlc2UgcmVzdWx0cy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDIgMTQ6NTQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0lQX1ZTJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7ZGVmZW5zZV93b3JrX2hhbmRsZXImIzM0OywKICAgICYjMzQ7ZXN0X3JlbG9hZF93b3JrX2hhbmRsZXImIzM0OywKICAgICYjMzQ7aXBfdnNfZXN0X3JlbG9hZF9zdGFydCYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBjaGFuZ2VzIHRoZSB3b3JrcXVldWUgdXNlZCBmb3IgSVBWUyBkZWZlbnNlIGFuZCBlc3RpbWF0aW9uIHJlbG9hZCB3b3JrIGZyb20gc3lzdGVtX2xvbmdfd3EgdG8gc3lzdGVtX2RmbF9sb25nX3dxLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIGNvcmUgSVBWUyBsb2dpYyB0aGF0IGFsdGVycyBleGVjdXRpb24gZmxvdywgc28gaXQgc2hvdWxkIGJlIGZ1enplZC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7SVBfVlMmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtkZWZlbnNlX3dvcmtfaGFuZGxlciYjMzQ7LAogICAgJiMzNDtlc3RfcmVsb2FkX3dvcmtfaGFuZGxlciYjMzQ7LAogICAgJiMzNDtpcF92c19lc3RfcmVsb2FkX3N0YXJ0JiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGNoYW5nZXMgdGhlIHdvcmtxdWV1ZSB1c2VkIGZvciBJUFZTIGRlZmVuc2UgYW5kIGVzdGltYXRpb24gcmVsb2FkIHdvcmsgZnJvbSBzeXN0ZW1fbG9uZ193cSB0byBzeXN0ZW1fZGZsX2xvbmdfd3EuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgY29yZSBJUFZTIGxvZ2ljIHRoYXQgYWx0ZXJzIGV4ZWN1dGlvbiBmbG93LCBzbyBpdCBzaG91bGQgYmUgZnV6emVkLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgoKCTxkaXYgaWQ9ImxsbV9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+TExNIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgVG9rZW5zPC90aD4KCQkJCQk8dGg+QXZnIFRva2VuczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJsbG1fc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJ0b29sX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5Ub29sIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9InRvb2xfc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJkdXJhdGlvbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+Cgk8ZGl2IGlkPSJ0b2tlbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+CgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9qc2FwaSI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDctMDJUMTQ6NTM6MDQuOTIyMDA1NDIxWiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NjY0NDk5MjU1MjEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiSVBfVlNcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJkZWZlbnNlX3dvcmtfaGFuZGxlclwiLFxuICAgIFwiZXN0X3JlbG9hZF93b3JrX2hhbmRsZXJcIixcbiAgICBcImlwX3ZzX2VzdF9yZWxvYWRfc3RhcnRcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBjaGFuZ2VzIHRoZSB3b3JrcXVldWUgdXNlZCBmb3IgSVBWUyBkZWZlbnNlIGFuZCBlc3RpbWF0aW9uIHJlbG9hZCB3b3JrIGZyb20gc3lzdGVtX2xvbmdfd3EgdG8gc3lzdGVtX2RmbF9sb25nX3dxLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIGNvcmUgSVBWUyBsb2dpYyB0aGF0IGFsdGVycyBleGVjdXRpb24gZmxvdywgc28gaXQgc2hvdWxkIGJlIGZ1enplZC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDJUMTQ6NTM6MDQuOTIyMDEyODExWiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1MTE3NjY4NDEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCBmMjAwOGU3MDczY2U3ZmVjOGUzN2U2ZDczYjIxNzUyMDM2OGU2NDdkXFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBUaHUgSnVsIDIgMTQ6NTM6MDMgMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2N0bC5jIGIvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2N0bC5jXFxuaW5kZXggYmNmNDBiOGM0MWNmMjYuLmQ3ZTY2OWVmYWI0ZGRjIDEwMDY0NFxcbi0tLSBhL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jdGwuY1xcbisrKyBiL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jdGwuY1xcbkBAIC0yMzUsNyArMjM1LDcgQEAgc3RhdGljIHZvaWQgZGVmZW5zZV93b3JrX2hhbmRsZXIoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxcbiBcXHR1cGRhdGVfZGVmZW5zZV9sZXZlbChpcHZzKTtcXG4gXFx0aWYgKGF0b21pY19yZWFkKFxcdTAwMjZpcHZzLVxcdTAwM2Vkcm9wZW50cnkpKVxcbiBcXHRcXHRpcF92c19yYW5kb21fZHJvcGVudHJ5KGlwdnMpO1xcbi1cXHRxdWV1ZV9kZWxheWVkX3dvcmsoc3lzdGVtX2xvbmdfd3EsIFxcdTAwMjZpcHZzLVxcdTAwM2VkZWZlbnNlX3dvcmssXFxuK1xcdHF1ZXVlX2RlbGF5ZWRfd29yayhzeXN0ZW1fZGZsX2xvbmdfd3EsIFxcdTAwMjZpcHZzLVxcdTAwM2VkZWZlbnNlX3dvcmssXFxuIFxcdFxcdFxcdCAgIERFRkVOU0VfVElNRVJfUEVSSU9EKTtcXG4gfVxcbiAjZW5kaWZcXG5AQCAtMjkwLDcgKzI5MCw3IEBAIHN0YXRpYyB2b2lkIGVzdF9yZWxvYWRfd29ya19oYW5kbGVyKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaylcXG4gXFx0YXRvbWljX3NldChcXHUwMDI2aXB2cy1cXHUwMDNlZXN0X2dlbmlkX2RvbmUsIGdlbmlkKTtcXG4gXFxuIFxcdGlmIChyZXBlYXQpXFxuLVxcdFxcdHF1ZXVlX2RlbGF5ZWRfd29yayhzeXN0ZW1fbG9uZ193cSwgXFx1MDAyNmlwdnMtXFx1MDAzZWVzdF9yZWxvYWRfd29yayxcXG4rXFx0XFx0cXVldWVfZGVsYXllZF93b3JrKHN5c3RlbV9kZmxfbG9uZ193cSwgXFx1MDAyNmlwdnMtXFx1MDAzZWVzdF9yZWxvYWRfd29yayxcXG4gXFx0XFx0XFx0XFx0ICAgZGVsYXkpO1xcbiBcXG4gdW5sb2NrOlxcbkBAIC01MTI2LDcgKzUxMjYsNyBAQCBzdGF0aWMgaW50IF9fbmV0X2luaXQgaXBfdnNfY29udHJvbF9uZXRfaW5pdF9zeXNjdGwoc3RydWN0IG5ldG5zX2lwdnMgKmlwdnMpXFxuIFxcdFxcdGdvdG8gZXJyO1xcbiBcXG4gXFx0LyogU2NoZWR1bGUgZGVmZW5zZSB3b3JrICovXFxuLVxcdHF1ZXVlX2RlbGF5ZWRfd29yayhzeXN0ZW1fbG9uZ193cSwgXFx1MDAyNmlwdnMtXFx1MDAzZWRlZmVuc2Vfd29yayxcXG4rXFx0cXVldWVfZGVsYXllZF93b3JrKHN5c3RlbV9kZmxfbG9uZ193cSwgXFx1MDAyNmlwdnMtXFx1MDAzZWRlZmVuc2Vfd29yayxcXG4gXFx0XFx0XFx0ICAgREVGRU5TRV9USU1FUl9QRVJJT0QpO1xcbiBcXG4gXFx0cmV0dXJuIDA7XFxuZGlmZiAtLWdpdCBhL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19lc3QuYyBiL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19lc3QuY1xcbmluZGV4IGFiMDlmNTE4Mjk1MTIyLi43ODk2NGFhODYxZTljMSAxMDA2NDRcXG4tLS0gYS9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfZXN0LmNcXG4rKysgYi9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfZXN0LmNcXG5AQCAtMjQzLDcgKzI0Myw3IEBAIHZvaWQgaXBfdnNfZXN0X3JlbG9hZF9zdGFydChzdHJ1Y3QgbmV0bnNfaXB2cyAqaXB2cywgYm9vbCByZXN0YXJ0KVxcbiBcXHQvKiBCdW1wIHRoZSBrdGhyZWFkIGNvbmZpZ3VyYXRpb24gZ2VuaWQgaWYgc3RvcHBpbmcgaXMgcmVxdWVzdGVkICovXFxuIFxcdGlmIChyZXN0YXJ0KVxcbiBcXHRcXHRhdG9taWNfaW5jKFxcdTAwMjZpcHZzLVxcdTAwM2Vlc3RfZ2VuaWQpO1xcbi1cXHRxdWV1ZV9kZWxheWVkX3dvcmsoc3lzdGVtX2xvbmdfd3EsIFxcdTAwMjZpcHZzLVxcdTAwM2Vlc3RfcmVsb2FkX3dvcmssIDApO1xcbitcXHRxdWV1ZV9kZWxheWVkX3dvcmsoc3lzdGVtX2RmbF9sb25nX3dxLCBcXHUwMDI2aXB2cy1cXHUwMDNlZXN0X3JlbG9hZF93b3JrLCAwKTtcXG4gfVxcbiBcXG4gLyogU3RhcnQga3RocmVhZCB0YXNrIHdpdGggY3VycmVudCBjb25maWd1cmF0aW9uICovXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAyVDE0OjUzOjA1LjQzNDMyMDQ5MloiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NjU5Mzc1OTc2NDAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiSVBfVlNcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJkZWZlbnNlX3dvcmtfaGFuZGxlclwiLFxuICAgIFwiZXN0X3JlbG9hZF93b3JrX2hhbmRsZXJcIixcbiAgICBcImlwX3ZzX2VzdF9yZWxvYWRfc3RhcnRcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBjaGFuZ2VzIHRoZSB3b3JrcXVldWUgdXNlZCBmb3IgSVBWUyBkZWZlbnNlIGFuZCBlc3RpbWF0aW9uIHJlbG9hZCB3b3JrIGZyb20gc3lzdGVtX2xvbmdfd3EgdG8gc3lzdGVtX2RmbF9sb25nX3dxLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIGNvcmUgSVBWUyBsb2dpYyB0aGF0IGFsdGVycyBleGVjdXRpb24gZmxvdywgc28gaXQgc2hvdWxkIGJlIGZ1enplZC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4yLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS5cbiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbiAgIERvIG5vdCBsaXN0IHRvbyBnZW5lcmljIGNvbmZpZ3MgKHdlIGFscmVhZHkgaGF2ZSB0aGVtIGVuYWJsZWQpLiBPbmx5IGxpc3QgdGhvc2UgdGhhdFxuICAgc3BlY2lmaWNhbGx5IGNvdmVyIHRoZSBtb2RpZmllZCBjb2RlLiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3Mgb3V0cHV0IGFycmF5LFxuICAgYW5kIERPIE5PVCBhZGQgYSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCBmMjAwOGU3MDczY2U3ZmVjOGUzN2U2ZDczYjIxNzUyMDM2OGU2NDdkXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFRodSBKdWwgMiAxNDo1MzowMyAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jdGwuYyBiL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jdGwuY1xuaW5kZXggYmNmNDBiOGM0MWNmMjYuLmQ3ZTY2OWVmYWI0ZGRjIDEwMDY0NFxuLS0tIGEvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2N0bC5jXG4rKysgYi9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY3RsLmNcbkBAIC0yMzUsNyArMjM1LDcgQEAgc3RhdGljIHZvaWQgZGVmZW5zZV93b3JrX2hhbmRsZXIoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxuIFx0dXBkYXRlX2RlZmVuc2VfbGV2ZWwoaXB2cyk7XG4gXHRpZiAoYXRvbWljX3JlYWQoXHUwMDI2aXB2cy1cdTAwM2Vkcm9wZW50cnkpKVxuIFx0XHRpcF92c19yYW5kb21fZHJvcGVudHJ5KGlwdnMpO1xuLVx0cXVldWVfZGVsYXllZF93b3JrKHN5c3RlbV9sb25nX3dxLCBcdTAwMjZpcHZzLVx1MDAzZWRlZmVuc2Vfd29yayxcbitcdHF1ZXVlX2RlbGF5ZWRfd29yayhzeXN0ZW1fZGZsX2xvbmdfd3EsIFx1MDAyNmlwdnMtXHUwMDNlZGVmZW5zZV93b3JrLFxuIFx0XHRcdCAgIERFRkVOU0VfVElNRVJfUEVSSU9EKTtcbiB9XG4gI2VuZGlmXG5AQCAtMjkwLDcgKzI5MCw3IEBAIHN0YXRpYyB2b2lkIGVzdF9yZWxvYWRfd29ya19oYW5kbGVyKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaylcbiBcdGF0b21pY19zZXQoXHUwMDI2aXB2cy1cdTAwM2Vlc3RfZ2VuaWRfZG9uZSwgZ2VuaWQpO1xuIFxuIFx0aWYgKHJlcGVhdClcbi1cdFx0cXVldWVfZGVsYXllZF93b3JrKHN5c3RlbV9sb25nX3dxLCBcdTAwMjZpcHZzLVx1MDAzZWVzdF9yZWxvYWRfd29yayxcbitcdFx0cXVldWVfZGVsYXllZF93b3JrKHN5c3RlbV9kZmxfbG9uZ193cSwgXHUwMDI2aXB2cy1cdTAwM2Vlc3RfcmVsb2FkX3dvcmssXG4gXHRcdFx0XHQgICBkZWxheSk7XG4gXG4gdW5sb2NrOlxuQEAgLTUxMjYsNyArNTEyNiw3IEBAIHN0YXRpYyBpbnQgX19uZXRfaW5pdCBpcF92c19jb250cm9sX25ldF9pbml0X3N5c2N0bChzdHJ1Y3QgbmV0bnNfaXB2cyAqaXB2cylcbiBcdFx0Z290byBlcnI7XG4gXG4gXHQvKiBTY2hlZHVsZSBkZWZlbnNlIHdvcmsgKi9cbi1cdHF1ZXVlX2RlbGF5ZWRfd29yayhzeXN0ZW1fbG9uZ193cSwgXHUwMDI2aXB2cy1cdTAwM2VkZWZlbnNlX3dvcmssXG4rXHRxdWV1ZV9kZWxheWVkX3dvcmsoc3lzdGVtX2RmbF9sb25nX3dxLCBcdTAwMjZpcHZzLVx1MDAzZWRlZmVuc2Vfd29yayxcbiBcdFx0XHQgICBERUZFTlNFX1RJTUVSX1BFUklPRCk7XG4gXG4gXHRyZXR1cm4gMDtcbmRpZmYgLS1naXQgYS9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfZXN0LmMgYi9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfZXN0LmNcbmluZGV4IGFiMDlmNTE4Mjk1MTIyLi43ODk2NGFhODYxZTljMSAxMDA2NDRcbi0tLSBhL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19lc3QuY1xuKysrIGIvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2VzdC5jXG5AQCAtMjQzLDcgKzI0Myw3IEBAIHZvaWQgaXBfdnNfZXN0X3JlbG9hZF9zdGFydChzdHJ1Y3QgbmV0bnNfaXB2cyAqaXB2cywgYm9vbCByZXN0YXJ0KVxuIFx0LyogQnVtcCB0aGUga3RocmVhZCBjb25maWd1cmF0aW9uIGdlbmlkIGlmIHN0b3BwaW5nIGlzIHJlcXVlc3RlZCAqL1xuIFx0aWYgKHJlc3RhcnQpXG4gXHRcdGF0b21pY19pbmMoXHUwMDI2aXB2cy1cdTAwM2Vlc3RfZ2VuaWQpO1xuLVx0cXVldWVfZGVsYXllZF93b3JrKHN5c3RlbV9sb25nX3dxLCBcdTAwMjZpcHZzLVx1MDAzZWVzdF9yZWxvYWRfd29yaywgMCk7XG4rXHRxdWV1ZV9kZWxheWVkX3dvcmsoc3lzdGVtX2RmbF9sb25nX3dxLCBcdTAwMjZpcHZzLVx1MDAzZWVzdF9yZWxvYWRfd29yaywgMCk7XG4gfVxuIFxuIC8qIFN0YXJ0IGt0aHJlYWQgdGFzayB3aXRoIGN1cnJlbnQgY29uZmlndXJhdGlvbiAqL1xuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDJUMTQ6NTM6MDUuNDM0MzIxNDcyWiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTU0MTIyMTc2NSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipGdXp6aW5nIHRoZSBJUFZTIFdvcmtxdWV1ZSBDaGFuZ2UqKlxuXG5Pa2F5LCBzbyB3ZSd2ZSBnb3QgdGhpcyBwYXRjaCwgcmlnaHQ/IEl0J3MgYSBzdHJhaWdodC11cCBmdW5jdGlvbmFsIGNoYW5nZSwganVzdCBzd2FwcGluZyBvdXQgYHN5c3RlbV9sb25nX3dxYCBmb3IgYHN5c3RlbV9kZmxfbG9uZ193cWAgaW4gYSBjb3VwbGUgb2YgSVBWUyBmaWxlcyDigJMgYGlwX3ZzX2N0bC5jYCBhbmQgYGlwX3ZzX2VzdC5jYC4gTXkgZmlyc3QgdGhvdWdodCBpcywgZG9lcyB0aGlzIGV2ZW4gd2FycmFudCBmdXp6aW5nPyBJdCAqaXMqIGp1c3QgY2hhbmdpbmcgdGhlIHdvcmtxdWV1ZSB1c2VkIGZvciBkZWxheWVkIHdvcmsgd2l0aGluIHRoZSBJUCBWaXJ0dWFsIFNlcnZlciBzdWJzeXN0ZW0uXG5cbkhtbSwgbGV0J3MgYnJlYWsgdGhpcyBkb3duIGZ1cnRoZXIuIEl0J3MgdGhlIGNoYW5nZSBmcm9tIGBzeXN0ZW1fbG9uZ193cWAgdG8gYHN5c3RlbV9kZmxfbG9uZ193cWAuIElzIHRoaXMgYSBzaWduaWZpY2FudCBlbm91Z2ggY2hhbmdlIHRvIHdhcnJhbnQgZnV6emluZz8gV2UncmUgdGFsa2luZyBhYm91dCB0aGUgd29ya3F1ZXVlIGZvciBgZGVmZW5zZV93b3JrYCBhbmQgYGVzdF9yZWxvYWRfd29ya2AgaW4gSVBWUy4gUmlnaHQsIElQIFZpcnR1YWwgU2VydmVyLi4uXG5cbkFscmlnaHQsIGxldCdzIHRha2UgYSBsb29rIGF0IHRoZSByZWxldmFudCBjb25maWd1cmF0aW9ucy4gV2UncmUgZGVhbGluZyB3aXRoIGBDT05GSUdfSVBfVlNgLCBzbyB0aGF0J3MgdGhlIHN0YXJ0aW5nIHBvaW50LiBOb3csIGFyZSB0aGVyZSBhbnkgKnNwZWNpZmljKiBmdW5jdGlvbnMgdGhhdCBzdGFuZCBvdXQgYXMgcG90ZW50aWFsIGZ1enogdGFyZ2V0cyBoZXJlPyBUaGlua2luZyBhYm91dCBpdCwgd2UgaGF2ZTogYGRlZmVuc2Vfd29ya19oYW5kbGVyYCwgYGVzdF9yZWxvYWRfd29ya19oYW5kbGVyYCwgYGlwX3ZzX2NvbnRyb2xfbmV0X2luaXRfc3lzY3RsYCwgYW5kIGBpcF92c19lc3RfcmVsb2FkX3N0YXJ0YC4gU2VlbXMgbGlrZSBoYW5kbGVycyBhbmQgaW5pdGlhbGl6YXRpb24gZnVuY3Rpb25zLCB0cmlnZ2VyZWQgYnkgdGltZXJzIG9yIGluaXRpYWxpemF0aW9uLlxuXG5Qcm9iYWJseSBub3QgdGhlIGJlc3QgY2FuZGlkYXRlcyBmb3IgZGlyZWN0IGZ1enppbmcsIGJlY2F1c2Ugb2YgdGhlIHRyaWdnZXJpbmcgbWVjaGFuaXNtcywgYnV0IGxldCdzIGp1c3Qgc2VlLi4uV2FpdCBhIG1pbnV0ZSwgd2hlbiBpcyBgaXBfdnNfZXN0X3JlbG9hZF9zdGFydGAgY2FsbGVkPyBUaGF0IGJlYXJzIGEgY2xvc2VyIGxvb2suIExldCdzIGRpZyBpbnRvIHRoYXQgZnVuY3Rpb24uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIzODgsIk91dHB1dFRva2VucyI6MjMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyOTIsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wMlQxNDo1MzoxMC45NzU1NDcwMTdaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDk1MzA1OTkyNywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJpcF92c19lc3RfcmVsb2FkX3N0YXJ0XCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImluY2x1ZGUvbmV0L2lwX3ZzLmg9MTkyMT12b2lkIGlwX3ZzX3JlYWRfZXN0aW1hdG9yKHN0cnVjdCBpcF92c19rc3RhdHMgKmRzdCwgc3RydWN0IGlwX3ZzX3N0YXRzICpzdGF0cyk7XFxuaW5jbHVkZS9uZXQvaXBfdnMuaDoxOTIyOnZvaWQgaXBfdnNfZXN0X3JlbG9hZF9zdGFydChzdHJ1Y3QgbmV0bnNfaXB2cyAqaXB2cywgYm9vbCByZXN0YXJ0KTtcXG5pbmNsdWRlL25ldC9pcF92cy5oLTE5MjMtaW50IGlwX3ZzX2VzdF9rdGhyZWFkX3N0YXJ0KHN0cnVjdCBuZXRuc19pcHZzICppcHZzLFxcbi0tXFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2N0bC5jPTE3MDk9aXBfdnNfYWRkX3NlcnZpY2Uoc3RydWN0IG5ldG5zX2lwdnMgKmlwdnMsIHN0cnVjdCBpcF92c19zZXJ2aWNlX3VzZXJfa2VybiAqdSxcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jdGwuYy0xODg1LVxcdFxcdC8qIFN0YXJ0IGVzdGltYXRpb24gZm9yIGZpcnN0IHRpbWUgKi9cXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY3RsLmM6MTg4NjpcXHRcXHRpcF92c19lc3RfcmVsb2FkX3N0YXJ0KGlwdnMsIHRydWUpO1xcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jdGwuYy0xODg3LVxcdFxcdG11dGV4X3VubG9jayhcXHUwMDI2aXB2cy1cXHUwMDNlZXN0X211dGV4KTtcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jdGwuYz0yNDQzPXN0YXRpYyBpbnQgaXB2c19wcm9jX2VzdF9jcHVtYXNrX3NldChjb25zdCBzdHJ1Y3QgY3RsX3RhYmxlICp0YWJsZSxcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jdGwuYy0yNDcxLVxcdGlwdnMtXFx1MDAzZWVzdF9jYWxjX3BoYXNlID0gMTtcXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY3RsLmM6MjQ3MjpcXHRpcF92c19lc3RfcmVsb2FkX3N0YXJ0KGlwdnMsIHRydWUpO1xcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jdGwuYy0yNDczLVxcbi0tXFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2N0bC5jPTI1MzM9c3RhdGljIGludCBpcHZzX3Byb2NfZXN0X25pY2UoY29uc3Qgc3RydWN0IGN0bF90YWJsZSAqdGFibGUsIGludCB3cml0ZSxcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jdGwuYy0yNTU0LVxcdFxcdFxcdFxcdCp2YWxwID0gdmFsO1xcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jdGwuYzoyNTU1OlxcdFxcdFxcdFxcdGlwX3ZzX2VzdF9yZWxvYWRfc3RhcnQoaXB2cywgdHJ1ZSk7XFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2N0bC5jLTI1NTYtXFx0XFx0XFx0fVxcbi0tXFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2N0bC5jPTI1NjM9c3RhdGljIGludCBpcHZzX3Byb2NfcnVuX2VzdGltYXRpb24oY29uc3Qgc3RydWN0IGN0bF90YWJsZSAqdGFibGUsIGludCB3cml0ZSxcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jdGwuYy0yNTgxLVxcdFxcdFxcdCp2YWxwID0gdmFsO1xcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jdGwuYzoyNTgyOlxcdFxcdFxcdGlwX3ZzX2VzdF9yZWxvYWRfc3RhcnQoaXB2cywgdHJ1ZSk7XFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2N0bC5jLTI1ODMtXFx0XFx0fVxcbi0tXFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2VzdC5jPTE3ND1zdGF0aWMgaW50IGlwX3ZzX2VzdGltYXRpb25fa3RocmVhZCh2b2lkICpkYXRhKVxcbi0tXFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2VzdC5jLTIzNC0vKiBTY2hlZHVsZSBzdG9wL3N0YXJ0IGZvciBrdGhyZWFkIHRhc2tzICovXFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2VzdC5jOjIzNTp2b2lkIGlwX3ZzX2VzdF9yZWxvYWRfc3RhcnQoc3RydWN0IG5ldG5zX2lwdnMgKmlwdnMsIGJvb2wgcmVzdGFydClcXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfZXN0LmMtMjM2LXtcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19lc3QuYz0zMDc9c3RhdGljIGludCBpcF92c19lc3RfYWRkX2t0aHJlYWQoc3RydWN0IG5ldG5zX2lwdnMgKmlwdnMpXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfZXN0LmMtMzU4LVxcdC8qIFJlcXVlc3Qga3RocmVhZCB0byBiZSBzdGFydGVkICovXFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2VzdC5jOjM1OTpcXHRpcF92c19lc3RfcmVsb2FkX3N0YXJ0KGlwdnMsIGZhbHNlKTtcXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfZXN0LmMtMzYwLVxcbi0tXFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2VzdC5jPTQ5Mz1pbnQgaXBfdnNfc3RhcnRfZXN0aW1hdG9yKHN0cnVjdCBuZXRuc19pcHZzICppcHZzLCBzdHJ1Y3QgaXBfdnNfc3RhdHMgKnN0YXRzKVxcbi0tXFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2VzdC5jLTUxMy1cXHRcXHRrZC1cXHUwMDNlbmVlZGVkID0gMTtcXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfZXN0LmM6NTE0OlxcdFxcdGlwX3ZzX2VzdF9yZWxvYWRfc3RhcnQoaXB2cywgdHJ1ZSk7XFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2VzdC5jLTUxNS1cXHRcXHRtdXRleF91bmxvY2soXFx1MDAyNmlwdnMtXFx1MDAzZWVzdF9tdXRleCk7XFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfZXN0LmM9NTM3PXZvaWQgaXBfdnNfc3RvcF9lc3RpbWF0b3Ioc3RydWN0IG5ldG5zX2lwdnMgKmlwdnMsIHN0cnVjdCBpcF92c19zdGF0cyAqc3RhdHMpXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfZXN0LmMtNjAzLVxcdFxcdFxcdGtkLVxcdTAwM2VuZWVkZWQgPSAwO1xcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19lc3QuYzo2MDQ6XFx0XFx0XFx0aXBfdnNfZXN0X3JlbG9hZF9zdGFydChpcHZzLCB0cnVlKTtcXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfZXN0LmMtNjA1LVxcdFxcdFxcdG11dGV4X3VubG9jayhcXHUwMDI2aXB2cy1cXHUwMDNlZXN0X211dGV4KTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDJUMTQ6NTM6MTUuOTI4NjE0MDk0WiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDYwMzU3NDI5MCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgYSBUaW55IEtlcm5lbCBQYXRjaCoqXG5cbk9rYXksIHNvIHRoaXMgcGF0Y2ggaXMgc3dpdGNoaW5nIHRoZSB3b3JrcXVldWUgdXNlZCBieSBJUFZTIGZyb20gYHN5c3RlbV9sb25nX3dxYCB0byBgc3lzdGVtX2RmbF9sb25nX3dxYC4gU2VlbXMgbGlrZSBhIG1pbm9yIGZ1bmN0aW9uYWwgY2hhbmdlLCBidXQgbGV0J3Mgbm90IGRpc21pc3MgaXQgb3V0cmlnaHQuIEV2ZW4gYSBzbWFsbCBtb2RpZmljYXRpb24gdG8gY29yZSBrZXJuZWwgbG9naWMsIGVzcGVjaWFsbHkgd2hlbiBpdCB0b3VjaGVzIGEgc3Vic3lzdGVtIGxpa2UgSVBWUywgd2FycmFudHMgYSBjbG9zZXIgbG9vay5cblxuVGhlIHF1ZXN0aW9uIHRoZW4gYmVjb21lcywgaXMgdGhpcyBjaGFuZ2Ugd29ydGggdGhlIGVmZm9ydCBvZiBmdXp6aW5nPyBBYnNvbHV0ZWx5LCB5ZXMuIEFueSBmdW5jdGlvbmFsIGNoYW5nZSB3aXRoaW4gdGhlIGtlcm5lbCwgaG93ZXZlciBzZWVtaW5nbHkgc21hbGwsIGNhbiBpbnRyb2R1Y2UgdW5leHBlY3RlZCBiZWhhdmlvcnMgb3IgdnVsbmVyYWJpbGl0aWVzLlxuXG5BbHJpZ2h0LCBgc3lzdGVtX2RmbF9sb25nX3dxYCBpcyBhIHdvcmtxdWV1ZS4gTm93LCBhcmUgdGhlcmUgYW55IHNwZWNpZmljIGZ1bmN0aW9ucyB0aGlzIHBhdGNoIGFmZmVjdHMgd2l0aGluIElQVlMgdGhhdCBJIHNob3VsZCBwcmlvcml0aXplIGZvciBhbmFseXNpcz8gTGV0J3Mgc2VlLi4uIGxvb2tpbmcgYXQgdGhlIGNvZGUsIGl0IGxvb2tzIGxpa2UgYGRlZmVuc2Vfd29ya19oYW5kbGVyYCwgYGVzdF9yZWxvYWRfd29ya19oYW5kbGVyYCwgYW5kIHRoZSBhc3NvY2lhdGVkIGBpcF92c19lc3RfcmVsb2FkX3N0YXJ0YCBmdW5jdGlvbiBhcmUgdGhlIGtleSBhcmVhcy4gVGhlc2UgZnVuY3Rpb25zIGFyZSBhbGwgY2VudGVyZWQgYXJvdW5kIElQVlMncyBlc3RpbWF0aW9uIGFuZCBkZWZlbnNlIG1lY2hhbmlzbXMuIFRoYXQgZGVmaW5pdGVseSB3YXJyYW50cyBhIGNsb3NlciBsb29rLiBUaW1lIHRvIGRvdWJsZS1jaGVjayB0aGUgcmVsZXZhbnQga2VybmVsIGNvbmZpZ3VyYXRpb25zIHRvIGdldCBhIGJldHRlciBzZW5zZSBvZiBob3cgSVBWUyBpcyBjb25maWd1cmVkIGluIHRoZSBlbnZpcm9ubWVudCB0aGlzIHdpbGwgYmUgYXBwbGllZCB0by5cblxuXG4iLCJJbnB1dFRva2VucyI6NDM2MiwiT3V0cHV0VG9rZW5zIjoxOCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE0NCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0wMlQxNDo1MzoyMC41MzIxOTA1NzRaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6Mjc1NTQ0NTk0OCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgSVBfVlNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L25ldGZpbHRlci9pcHZzL0tjb25maWctNC0jXFxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWc6NTptZW51Y29uZmlnIElQX1ZTXFxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWctNi1cXHR0cmlzdGF0ZSBcXFwiSVAgdmlydHVhbCBzZXJ2ZXIgc3VwcG9ydFxcXCJcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnPTI4Nj1jb21tZW50ICdJUFZTIFNIIHNjaGVkdWxlcidcXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZy0yODctXFxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWc6Mjg4OmNvbmZpZyBJUF9WU19TSF9UQUJfQklUU1xcbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnLTI4OS1cXHRpbnQgXFxcIklQVlMgc291cmNlIGhhc2hpbmcgdGFibGUgc2l6ZSAodGhlIE50aCBwb3dlciBvZiAyKVxcXCJcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnPTMwMT1jb21tZW50ICdJUFZTIE1IIHNjaGVkdWxlcidcXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZy0zMDItXFxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWc6MzAzOmNvbmZpZyBJUF9WU19NSF9UQUJfSU5ERVhcXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZy0zMDQtXFx0aW50IFxcXCJJUFZTIG1hZ2xldiBoYXNoaW5nIHRhYmxlIGluZGV4IG9mIHNpemUgKHRoZSBwcmltZSBudW1iZXJzKVxcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDJUMTQ6NTM6MjMuMjg3NjQ1MDEyWiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzA3ODg1OTEyNiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBhbiBleHBlcnQncyBpbnRlcm5hbCBtb25vbG9ndWU6XG5cbioqSW52ZXN0aWdhdGluZyB0aGUgTG9hZCBCYWxhbmNpbmcgQ29uZmlndXJhdGlvbioqXG5cbkFscmlnaHQsIHRoZSBzeXN0ZW0ncyBjdXJyZW50IGNvbmZpZ3VyYXRpb24gaXMgZGVmaW5pdGVseSBzZXQgdG8gYElQX1ZTYC4gVGhhdCdzIHRoZSBiYXNlbGluZSwgdGhlIGZvdW5kYXRpb24uIE5vdywgZ2l2ZW4gdGhhdCBjb250ZXh0LCB0aGUgZmlyc3QgcGxhY2VzIG15IG1pbmQgbmF0dXJhbGx5IGdyYXZpdGF0ZXMgdG93YXJkIGFyZSB0aGUgYGRlZmVuc2Vfd29ya19oYW5kbGVyYCBhbmQgYGVzdF9yZWxvYWRfd29ya19oYW5kbGVyYCBtb2R1bGVzLiBXaXRoIElQIFZpcnR1YWwgU2VydmVyIChJUFZTKSBhY3RpdmUsIHRoZXNlIGhhbmRsZXJzIGFyZSBnb2luZyB0byBiZSBjcml0aWNhbCBmb3IgdW5kZXJzdGFuZGluZyBob3cgd2UncmUgZGVhbGluZyB3aXRoIGJvdGggdHJhZmZpYyBjb250cm9sIGFuZCBhbnkgcG90ZW50aWFsIHJlbG9hZHMuIEtub3dpbmcgaG93IHRoZXkgb3BlcmF0ZSBpcyBjcnVjaWFsIGZvciB0aGlzIHR5cGUgb2YgY29uZmlnLiBXaGF0IGFyZSB0aGV5ICphY3R1YWxseSogZG9pbmcgaW4gdGhpcyBzcGVjaWZpYyBjb250ZXh0PyBXaGF0IGtpbmQgb2YgcHJvY2Vzc2luZyBhcmUgdGhleSByZXNwb25zaWJsZSBmb3IsIGdpdmVuIHRoYXQgd2UgYXJlIHJ1bm5pbmcgSVBWUz8gTGV0J3MgZGl2ZSBkZWVwZXIgaW50byB0aG9zZS4uLlxuXG5cbiIsIklucHV0VG9rZW5zIjo1MDUyLCJPdXRwdXRUb2tlbnMiOjE5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjksIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMDJUMTQ6NTM6MjYuMzY2NTI2NTk4WiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI3MDgyODI3OTAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiZGVmZW5zZV93b3JrX2hhbmRsZXJcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2N0bC5jPTIxNj1zdGF0aWMgdm9pZCBleHBpcmVfbm9kZXN0X2Nvbm5faGFuZGxlcihzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY3RsLmMtMjI5LVxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jdGwuYzoyMzA6c3RhdGljIHZvaWQgZGVmZW5zZV93b3JrX2hhbmRsZXIoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jdGwuYy0yMzEte1xcbi0tXFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2N0bC5jPTQ5OTU9c3RhdGljIGludCBfX25ldF9pbml0IGlwX3ZzX2NvbnRyb2xfbmV0X2luaXRfc3lzY3RsKHN0cnVjdCBuZXRuc19pcHZzICppcHZzKVxcbi0tXFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2N0bC5jLTUwMDYtXFx0c3Bpbl9sb2NrX2luaXQoXFx1MDAyNmlwdnMtXFx1MDAzZXNlY3VyZXRjcF9sb2NrKTtcXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY3RsLmM6NTAwNzpcXHRJTklUX0RFTEFZRURfV09SSyhcXHUwMDI2aXB2cy1cXHUwMDNlZGVmZW5zZV93b3JrLCBkZWZlbnNlX3dvcmtfaGFuZGxlcik7XFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2N0bC5jLTUwMDgtXFx0SU5JVF9ERUxBWUVEX1dPUksoXFx1MDAyNmlwdnMtXFx1MDAzZWV4cGlyZV9ub2Rlc3RfY29ubl93b3JrLFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wMlQxNDo1MzoyOS4wNzQ4MjIzMjhaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNTk1NjkxMTQ3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFzc2Vzc2luZyB0aGUgRnV6emluZyBWYWx1ZSBvZiBhIFdvcmtxdWV1ZSBQYXRjaCoqXG5cbk9rYXksIHNvIHRoaXMgcGF0Y2ggaXMgdG91Y2hpbmcgdGhlIHdvcmtxdWV1ZSwgc3BlY2lmaWNhbGx5IHN3YXBwaW5nIGBzeXN0ZW1fbG9uZ193cWAgZm9yIGBzeXN0ZW1fZGZsX2xvbmdfd3FgLiBNeSBpbml0aWFsIGluc3RpbmN0IGlzIHRvIHF1ZXN0aW9uIHdoZXRoZXIgZnV6emluZyB0aGlzIGlzIGFjdHVhbGx5IHdvcnRoIHRoZSBlZmZvcnQuIEl0ICppcyogYSBzaW1wbGUgY2hhbmdlLCBmdW5jdGlvbmFsbHkgc3BlYWtpbmcsIGp1c3QgYSB3b3JrcXVldWUgc3Vic3RpdHV0aW9uLiBDaGFuY2VzIGFyZSwgZnV6emluZyB0aGlzIHNwZWNpZmljIGNoYW5nZSBtaWdodCBub3QgdW5jb3ZlciBhbnl0aGluZyB0cnVseSBub3ZlbCwgYW5kIGl04oCZcyBsaWtlbHkgdG8gYmUgc29tZXRoaW5nIHRoYXQgaGFzIGJlZW4gaW1wbGljaXRseSBmdXp6ZWQgYmVmb3JlLiBIb3dldmVyLCB0aGUgY2hhbmdlICppcyogZnVuY3Rpb25hbC4gXG5cbldhaXQgYSBtaW51dGUsIGlzIGBzeXN0ZW1fZGZsX2xvbmdfd3FgIGEgbmV3IHdvcmtxdWV1ZSBvciBhbiBleGlzdGluZyBvbmU/IEkgbmVlZCB0byBjbGFyaWZ5IHRoYXQgYmVmb3JlIEkgbWFrZSBhIGZpbmFsIGRlY2lzaW9uIG9uIHRoZSBmdXp6aW5nIHN0cmF0ZWd5LiBPa2F5LCBsZXQncyBnbyBjaGVjayB3aGF0J3MgZ29pbmcgb24gd2l0aCBgc3lzdGVtX2RmbF9sb25nX3dxYC4gSSdsbCBkaWcgaW50byBpdHMgZGVmaW5pdGlvbiBhbmQgdXNhZ2UuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjU1ODQsIk91dHB1dFRva2VucyI6MjIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMTYsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMDJUMTQ6NTM6MzIuNjcwNTE2ODc0WiIsIlNlcSI6MTAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyNjA4MjQ3NzczLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInN5c3RlbV9kZmxfbG9uZ193cVwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL2F0YS9saWJhdGEtZWguYz03MjE9dm9pZCBhdGFfc2NzaV9wb3J0X2Vycm9yX2hhbmRsZXIoc3RydWN0IFNjc2lfSG9zdCAqaG9zdCwgc3RydWN0IGF0YV9wb3J0ICphcClcXG4tLVxcbmRyaXZlcnMvYXRhL2xpYmF0YS1laC5jLTgyMy1cXHRcXHQhKGFwLVxcdTAwM2VmbGFncyBcXHUwMDI2IEFUQV9GTEFHX1NBU19IT1NUKSlcXG5kcml2ZXJzL2F0YS9saWJhdGEtZWguYzo4MjQ6XFx0XFx0cXVldWVfZGVsYXllZF93b3JrKHN5c3RlbV9kZmxfbG9uZ193cSwgXFx1MDAyNmFwLVxcdTAwM2Vob3RwbHVnX3Rhc2ssIDApO1xcbmRyaXZlcnMvYXRhL2xpYmF0YS1laC5jLTgyNS1cXG4tLVxcbmRyaXZlcnMvYXRhL2xpYmF0YS1zY3NpLmM9NDcwND12b2lkIGF0YV9zY3NpX3NjYW5faG9zdChzdHJ1Y3QgYXRhX3BvcnQgKmFwLCBpbnQgc3luYylcXG4tLVxcbmRyaXZlcnMvYXRhL2xpYmF0YS1zY3NpLmMtNDc3My1cXG5kcml2ZXJzL2F0YS9saWJhdGEtc2NzaS5jOjQ3NzQ6XFx0cXVldWVfZGVsYXllZF93b3JrKHN5c3RlbV9kZmxfbG9uZ193cSwgXFx1MDAyNmFwLVxcdTAwM2Vob3RwbHVnX3Rhc2ssXFxuZHJpdmVycy9hdGEvbGliYXRhLXNjc2kuYy00Nzc1LVxcdFxcdFxcdCAgIHJvdW5kX2ppZmZpZXNfcmVsYXRpdmUoSFopKTtcXG4tLVxcbmRyaXZlcnMvaTJjL2kyYy1zbGF2ZS10ZXN0dW5pdC5jPTgyPXN0YXRpYyBpbnQgaTJjX3NsYXZlX3Rlc3R1bml0X3NsYXZlX2NiKHN0cnVjdCBpMmNfY2xpZW50ICpjbGllbnQsXFxuLS1cXG5kcml2ZXJzL2kyYy9pMmMtc2xhdmUtdGVzdHVuaXQuYy0xMjYtXFx0XFx0XFx0c2V0X2JpdChUVV9GTEFHX0lOX1BST0NFU1MsIFxcdTAwMjZ0dS1cXHUwMDNlZmxhZ3MpO1xcbmRyaXZlcnMvaTJjL2kyYy1zbGF2ZS10ZXN0dW5pdC5jOjEyNzpcXHRcXHRcXHRxdWV1ZV9kZWxheWVkX3dvcmsoc3lzdGVtX2RmbF9sb25nX3dxLCBcXHUwMDI2dHUtXFx1MDAzZXdvcmtlcixcXG5kcml2ZXJzL2kyYy9pMmMtc2xhdmUtdGVzdHVuaXQuYy0xMjgtXFx0XFx0XFx0XFx0XFx0ICAgbXNlY3NfdG9famlmZmllcygxMCAqIHR1LVxcdTAwM2VyZWdzW1RVX1JFR19ERUxBWV0pKTtcXG4tLVxcbmRyaXZlcnMvcGh5L3RpL3BoeS10dXNiMTIxMC5jPTE5MT1zdGF0aWMgdm9pZCB0dXNiMTIxMF9jaGdfZGV0X3NldF9zdGF0ZShzdHJ1Y3QgdHVzYjEyMTAgKnR1c2IsXFxuLS1cXG5kcml2ZXJzL3BoeS90aS9waHktdHVzYjEyMTAuYy0xOTktXFx0dHVzYi1cXHUwMDNlY2hnX2RldF9zdGF0ZSA9IG5ld19zdGF0ZTtcXG5kcml2ZXJzL3BoeS90aS9waHktdHVzYjEyMTAuYzoyMDA6XFx0bW9kX2RlbGF5ZWRfd29yayhzeXN0ZW1fZGZsX2xvbmdfd3EsIFxcdTAwMjZ0dXNiLVxcdTAwM2VjaGdfZGV0X3dvcmssXFxuZHJpdmVycy9waHkvdGkvcGh5LXR1c2IxMjEwLmMtMjAxLVxcdFxcdFxcdCBtc2Vjc190b19qaWZmaWVzKGRlbGF5X21zKSk7XFxuLS1cXG5kcml2ZXJzL3BoeS90aS9waHktdHVzYjEyMTAuYz0zNzY9c3RhdGljIGludCB0dXNiMTIxMF9wc3lfbm90aWZpZXIoc3RydWN0IG5vdGlmaWVyX2Jsb2NrICpuYixcXG4tLVxcbmRyaXZlcnMvcGh5L3RpL3BoeS10dXNiMTIxMC5jLTM4Mi1cXHRpZiAocHN5ICE9IHR1c2ItXFx1MDAzZXBzeSBcXHUwMDI2XFx1MDAyNiBwc3ktXFx1MDAzZWRlc2MtXFx1MDAzZXR5cGUgPT0gUE9XRVJfU1VQUExZX1RZUEVfVVNCKVxcbmRyaXZlcnMvcGh5L3RpL3BoeS10dXNiMTIxMC5jOjM4MzpcXHRcXHRxdWV1ZV9kZWxheWVkX3dvcmsoc3lzdGVtX2RmbF9sb25nX3dxLCBcXHUwMDI2dHVzYi1cXHUwMDNlY2hnX2RldF93b3JrLCAwKTtcXG5kcml2ZXJzL3BoeS90aS9waHktdHVzYjEyMTAuYy0zODQtXFxuLS1cXG5kcml2ZXJzL3BoeS90aS9waHktdHVzYjEyMTAuYz00MzI9c3RhdGljIHZvaWQgdHVzYjEyMTBfcHJvYmVfY2hhcmdlcl9kZXRlY3Qoc3RydWN0IHR1c2IxMjEwICp0dXNiKVxcbi0tXFxuZHJpdmVycy9waHkvdGkvcGh5LXR1c2IxMjEwLmMtNDYwLVxcdElOSVRfREVMQVlFRF9XT1JLKFxcdTAwMjZ0dXNiLVxcdTAwM2VjaGdfZGV0X3dvcmssIHR1c2IxMjEwX2NoZ19kZXRfd29yayk7XFxuZHJpdmVycy9waHkvdGkvcGh5LXR1c2IxMjEwLmM6NDYxOlxcdHF1ZXVlX2RlbGF5ZWRfd29yayhzeXN0ZW1fZGZsX2xvbmdfd3EsIFxcdTAwMjZ0dXNiLVxcdTAwM2VjaGdfZGV0X3dvcmssIDIgKiBIWik7XFxuZHJpdmVycy9waHkvdGkvcGh5LXR1c2IxMjEwLmMtNDYyLVxcbi0tXFxuZHJpdmVycy9zY3NpL3Njc2lfdHJhbnNwb3J0X3NycC5jPTIyMD1zdGF0aWMgc3NpemVfdCBzdG9yZV9yZWNvbm5lY3RfZGVsYXkoc3RydWN0IGRldmljZSAqZGV2LFxcbi0tXFxuZHJpdmVycy9zY3NpL3Njc2lfdHJhbnNwb3J0X3NycC5jLTIzNi1cXHQgICAgcnBvcnQtXFx1MDAzZXN0YXRlICE9IFNSUF9SUE9SVF9SVU5OSU5HKSB7XFxuZHJpdmVycy9zY3NpL3Njc2lfdHJhbnNwb3J0X3NycC5jOjIzNzpcXHRcXHRxdWV1ZV9kZWxheWVkX3dvcmsoc3lzdGVtX2RmbF9sb25nX3dxLCBcXHUwMDI2cnBvcnQtXFx1MDAzZXJlY29ubmVjdF93b3JrLFxcbmRyaXZlcnMvc2NzaS9zY3NpX3RyYW5zcG9ydF9zcnAuYy0yMzgtXFx0XFx0XFx0XFx0ICAgZGVsYXkgKiBIWik7XFxuLS1cXG5kcml2ZXJzL3Njc2kvc2NzaV90cmFuc3BvcnRfc3JwLmM9Mzc4PXN0YXRpYyB2b2lkIHNycF9yZWNvbm5lY3Rfd29yayhzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspXFxuLS1cXG5kcml2ZXJzL3Njc2kvc2NzaV90cmFuc3BvcnRfc3JwLmMtMzkyLVxcdFxcdGlmIChkZWxheSBcXHUwMDNlIDApXFxuZHJpdmVycy9zY3NpL3Njc2lfdHJhbnNwb3J0X3NycC5jOjM5MzpcXHRcXHRcXHRxdWV1ZV9kZWxheWVkX3dvcmsoc3lzdGVtX2RmbF9sb25nX3dxLFxcbmRyaXZlcnMvc2NzaS9zY3NpX3RyYW5zcG9ydF9zcnAuYy0zOTQtXFx0XFx0XFx0XFx0XFx0ICAgXFx1MDAyNnJwb3J0LVxcdTAwM2VyZWNvbm5lY3Rfd29yaywgZGVsYXkgKiBIWik7XFxuLS1cXG5kcml2ZXJzL3Njc2kvc2NzaV90cmFuc3BvcnRfc3JwLmM9NDYxPXN0YXRpYyB2b2lkIF9fc3JwX3N0YXJ0X3RsX2ZhaWxfdGltZXJzKHN0cnVjdCBzcnBfcnBvcnQgKnJwb3J0KVxcbi0tXFxuZHJpdmVycy9zY3NpL3Njc2lfdHJhbnNwb3J0X3NycC5jLTQ3Ni1cXHRpZiAoZGVsYXkgXFx1MDAzZSAwKVxcbmRyaXZlcnMvc2NzaS9zY3NpX3RyYW5zcG9ydF9zcnAuYzo0Nzc6XFx0XFx0cXVldWVfZGVsYXllZF93b3JrKHN5c3RlbV9kZmxfbG9uZ193cSwgXFx1MDAyNnJwb3J0LVxcdTAwM2VyZWNvbm5lY3Rfd29yayxcXG5kcml2ZXJzL3Njc2kvc2NzaV90cmFuc3BvcnRfc3JwLmMtNDc4LVxcdFxcdFxcdFxcdCAgIDFVTCAqIGRlbGF5ICogSFopO1xcbi0tXFxuZHJpdmVycy9zY3NpL3Njc2lfdHJhbnNwb3J0X3NycC5jLTQ4NC1cXHRcXHRpZiAoZmFzdF9pb19mYWlsX3RtbyBcXHUwMDNlPSAwKVxcbmRyaXZlcnMvc2NzaS9zY3NpX3RyYW5zcG9ydF9zcnAuYzo0ODU6XFx0XFx0XFx0cXVldWVfZGVsYXllZF93b3JrKHN5c3RlbV9kZmxfbG9uZ193cSxcXG5kcml2ZXJzL3Njc2kvc2NzaV90cmFuc3BvcnRfc3JwLmMtNDg2LVxcdFxcdFxcdFxcdFxcdCAgIFxcdTAwMjZycG9ydC1cXHUwMDNlZmFzdF9pb19mYWlsX3dvcmssXFxuLS1cXG5kcml2ZXJzL3Njc2kvc2NzaV90cmFuc3BvcnRfc3JwLmMtNDg4LVxcdFxcdGlmIChkZXZfbG9zc190bW8gXFx1MDAzZT0gMClcXG5kcml2ZXJzL3Njc2kvc2NzaV90cmFuc3BvcnRfc3JwLmM6NDg5OlxcdFxcdFxcdHF1ZXVlX2RlbGF5ZWRfd29yayhzeXN0ZW1fZGZsX2xvbmdfd3EsXFxuZHJpdmVycy9zY3NpL3Njc2lfdHJhbnNwb3J0X3NycC5jLTQ5MC1cXHRcXHRcXHRcXHRcXHQgICBcXHUwMDI2cnBvcnQtXFx1MDAzZWRldl9sb3NzX3dvcmssXFxuLS1cXG5mcy9mdXNlL2RheC5jPTEwOD1fX2tpY2tfZG1hcF9mcmVlX3dvcmtlcihzdHJ1Y3QgZnVzZV9jb25uX2RheCAqZmNkLCB1bnNpZ25lZCBsb25nIGRlbGF5X21zKVxcbi0tXFxuZnMvZnVzZS9kYXguYy0xMTUtXFx0aWYgKGZjZC1cXHUwMDNlbnJfZnJlZV9yYW5nZXMgXFx1MDAzYyBmcmVlX3RocmVzaG9sZClcXG5mcy9mdXNlL2RheC5jOjExNjpcXHRcXHRxdWV1ZV9kZWxheWVkX3dvcmsoc3lzdGVtX2RmbF9sb25nX3dxLCBcXHUwMDI2ZmNkLVxcdTAwM2VmcmVlX3dvcmssXFxuZnMvZnVzZS9kYXguYy0xMTctXFx0XFx0XFx0XFx0ICAgbXNlY3NfdG9famlmZmllcyhkZWxheV9tcykpO1xcbi0tXFxuaW5jbHVkZS9saW51eC93b3JrcXVldWUuaD00MTg9ZW51bSB3cV9jb25zdHMge1xcbi0tXFxuaW5jbHVkZS9saW51eC93b3JrcXVldWUuaC00NDQtICpcXG5pbmNsdWRlL2xpbnV4L3dvcmtxdWV1ZS5oOjQ0NTogKiBzeXN0ZW1fZGZsX2xvbmdfd3EgaXMgc2ltaWxhciB0byBzeXN0ZW1fZGZsX3dxIGJ1dCBpdCBtYXkgaG9zdCBsb25nIHJ1bm5pbmdcXG5pbmNsdWRlL2xpbnV4L3dvcmtxdWV1ZS5oLTQ0Ni0gKiB3b3Jrcy5cXG4tLVxcbmluY2x1ZGUvbGludXgvd29ya3F1ZXVlLmg9NDc1PWV4dGVybiBzdHJ1Y3Qgd29ya3F1ZXVlX3N0cnVjdCAqc3lzdGVtX2JoX2hpZ2hwcmlfd3E7XFxuaW5jbHVkZS9saW51eC93b3JrcXVldWUuaDo0NzY6ZXh0ZXJuIHN0cnVjdCB3b3JrcXVldWVfc3RydWN0ICpzeXN0ZW1fZGZsX2xvbmdfd3E7XFxuaW5jbHVkZS9saW51eC93b3JrcXVldWUuaC00NzctXFxuLS1cXG5pbmNsdWRlL2xpbnV4L3dvcmtxdWV1ZS5oPTc5Nj1leHRlcm4gdm9pZCBfX3dhcm5fZmx1c2hpbmdfc3lzdGVtd2lkZV93cSh2b2lkKVxcbi0tXFxuaW5jbHVkZS9saW51eC93b3JrcXVldWUuaC04MTUtXFx0ICAgICBfd3EgPT0gc3lzdGVtX2xvbmdfd3EpIHx8XFx0XFx0XFx0XFx0XFx0XFxcXFxcbmluY2x1ZGUvbGludXgvd29ya3F1ZXVlLmg6ODE2OlxcdCAgICAoX19idWlsdGluX2NvbnN0YW50X3AoX3dxID09IHN5c3RlbV9kZmxfbG9uZ193cSkgXFx1MDAyNlxcdTAwMjZcXHRcXHRcXFxcXFxuaW5jbHVkZS9saW51eC93b3JrcXVldWUuaDo4MTc6XFx0ICAgICBfd3EgPT0gc3lzdGVtX2RmbF9sb25nX3dxKSB8fFxcdFxcdFxcdFxcdFxcdFxcXFxcXG5pbmNsdWRlL2xpbnV4L3dvcmtxdWV1ZS5oLTgxOC1cXHQgICAgKF9fYnVpbHRpbl9jb25zdGFudF9wKF93cSA9PSBzeXN0ZW1fZGZsX3dxKSBcXHUwMDI2XFx1MDAyNlxcdFxcdFxcXFxcXG4tLVxcbmtlcm5lbC93b3JrcXVldWUuYz01NDU9RVhQT1JUX1NZTUJPTF9HUEwoc3lzdGVtX2JoX2hpZ2hwcmlfd3EpO1xcbmtlcm5lbC93b3JrcXVldWUuYzo1NDY6c3RydWN0IHdvcmtxdWV1ZV9zdHJ1Y3QgKnN5c3RlbV9kZmxfbG9uZ193cSBfX3JvX2FmdGVyX2luaXQ7XFxua2VybmVsL3dvcmtxdWV1ZS5jOjU0NzpFWFBPUlRfU1lNQk9MX0dQTChzeXN0ZW1fZGZsX2xvbmdfd3EpO1xcbmtlcm5lbC93b3JrcXVldWUuYy01NDgtXFxuLS1cXG5rZXJuZWwvd29ya3F1ZXVlLmM9Nzk3MT12b2lkIF9faW5pdCB3b3JrcXVldWVfaW5pdF9lYXJseSh2b2lkKVxcbi0tXFxua2VybmVsL3dvcmtxdWV1ZS5jLTgwNzAtXFx0XFx0XFx0XFx0XFx0ICAgICAgIFdRX0JIIHwgV1FfSElHSFBSSSB8IFdRX1BFUkNQVSwgMCk7XFxua2VybmVsL3dvcmtxdWV1ZS5jOjgwNzE6XFx0c3lzdGVtX2RmbF9sb25nX3dxID0gYWxsb2Nfd29ya3F1ZXVlKFxcXCJldmVudHNfZGZsX2xvbmdcXFwiLCBXUV9VTkJPVU5ELCBXUV9NQVhfQUNUSVZFKTtcXG5rZXJuZWwvd29ya3F1ZXVlLmMtODA3Mi1cXHRCVUdfT04oIXN5c3RlbV93cSB8fCAhc3lzdGVtX3BlcmNwdV93cXx8ICFzeXN0ZW1faGlnaHByaV93cSB8fCAhc3lzdGVtX2xvbmdfd3EgfHxcXG4tLVxcbmtlcm5lbC93b3JrcXVldWUuYy04MDc1LVxcdCAgICAgICAhc3lzdGVtX2ZyZWV6YWJsZV9wb3dlcl9lZmZpY2llbnRfd3EgfHxcXG5rZXJuZWwvd29ya3F1ZXVlLmM6ODA3NjpcXHQgICAgICAgIXN5c3RlbV9iaF93cSB8fCAhc3lzdGVtX2JoX2hpZ2hwcmlfd3EgfHwgIXN5c3RlbV9kZmxfbG9uZ193cSk7XFxua2VybmVsL3dvcmtxdWV1ZS5jLTgwNzctfVxcbi0tXFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2Nvbm4uYz0yNDM9c3RhdGljIGlubGluZSBpbnQgaXBfdnNfY29ubl9oYXNoKHN0cnVjdCBpcF92c19jb25uICpjcClcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb25uLmMtMjg3LVxcdCAgICAhdGVzdF9hbmRfc2V0X2JpdChJUF9WU19XT1JLX0NPTk5fUkVTSVpFLCBcXHUwMDI2aXB2cy1cXHUwMDNld29ya19mbGFncykpXFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2Nvbm4uYzoyODg6XFx0XFx0bW9kX2RlbGF5ZWRfd29yayhzeXN0ZW1fZGZsX2xvbmdfd3EsIFxcdTAwMjZpcHZzLVxcdTAwM2Vjb25uX3Jlc2l6ZV93b3JrLCAwKTtcXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29ubi5jLTI4OS1cXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb25uLmM9ODAwPXN0YXRpYyB2b2lkIGNvbm5fcmVzaXplX3dvcmtfaGFuZGxlcihzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29ubi5jLTkxOC1cXHQvKiBNb25pdG9yIGlmIHdlIG5lZWQgdG8gc2hyaW5rIHRhYmxlICovXFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2Nvbm4uYzo5MTk6XFx0cXVldWVfZGVsYXllZF93b3JrKHN5c3RlbV9kZmxfbG9uZ193cSwgXFx1MDAyNmlwdnMtXFx1MDAzZWNvbm5fcmVzaXplX3dvcmssXFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2Nvbm4uYy05MjAtXFx0XFx0XFx0ICAgbW9yZV93b3JrID8gMSA6IDIgKiBIWik7XFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY3RsLmM9MjMwPXN0YXRpYyB2b2lkIGRlZmVuc2Vfd29ya19oYW5kbGVyKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaylcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jdGwuYy0yMzctXFx0XFx0aXBfdnNfcmFuZG9tX2Ryb3BlbnRyeShpcHZzKTtcXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY3RsLmM6MjM4OlxcdHF1ZXVlX2RlbGF5ZWRfd29yayhzeXN0ZW1fZGZsX2xvbmdfd3EsIFxcdTAwMjZpcHZzLVxcdTAwM2VkZWZlbnNlX3dvcmssXFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2N0bC5jLTIzOS1cXHRcXHRcXHQgICBERUZFTlNFX1RJTUVSX1BFUklPRCk7XFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY3RsLmM9MjQzPXN0YXRpYyB2b2lkIGVzdF9yZWxvYWRfd29ya19oYW5kbGVyKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaylcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jdGwuYy0yOTItXFx0aWYgKHJlcGVhdClcXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY3RsLmM6MjkzOlxcdFxcdHF1ZXVlX2RlbGF5ZWRfd29yayhzeXN0ZW1fZGZsX2xvbmdfd3EsIFxcdTAwMjZpcHZzLVxcdTAwM2Vlc3RfcmVsb2FkX3dvcmssXFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2N0bC5jLTI5NC1cXHRcXHRcXHRcXHQgICBkZWxheSk7XFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY3RsLmM9NjcwPXN0YXRpYyB2b2lkIHN2Y19yZXNpemVfd29ya19oYW5kbGVyKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaylcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jdGwuYy04MjMtXFx0XFx0cmV0dXJuO1xcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jdGwuYzo4MjQ6XFx0cXVldWVfZGVsYXllZF93b3JrKHN5c3RlbV9kZmxfbG9uZ193cSwgXFx1MDAyNmlwdnMtXFx1MDAzZXN2Y19yZXNpemVfd29yaywgMSk7XFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2N0bC5jLTgyNS1cXHRyZXR1cm47XFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY3RsLmM9MTcwOT1pcF92c19hZGRfc2VydmljZShzdHJ1Y3QgbmV0bnNfaXB2cyAqaXB2cywgc3RydWN0IGlwX3ZzX3NlcnZpY2VfdXNlcl9rZXJuICp1LFxcbi0tXFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2N0bC5jLTE4NzEtXFx0aWYgKGdyb3cgXFx1MDAyNlxcdTAwMjYgIXRlc3RfYW5kX3NldF9iaXQoSVBfVlNfV09SS19TVkNfUkVTSVpFLCBcXHUwMDI2aXB2cy1cXHUwMDNld29ya19mbGFncykpXFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2N0bC5jOjE4NzI6XFx0XFx0cXVldWVfZGVsYXllZF93b3JrKHN5c3RlbV9kZmxfbG9uZ193cSwgXFx1MDAyNmlwdnMtXFx1MDAzZXN2Y19yZXNpemVfd29yayxcXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY3RsLmMtMTg3My1cXHRcXHRcXHRcXHQgICAxKTtcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jdGwuYz0yMDg2PXN0YXRpYyBpbnQgaXBfdnNfZGVsX3NlcnZpY2Uoc3RydWN0IGlwX3ZzX3NlcnZpY2UgKnN2YylcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jdGwuYy0yMTI3LVxcdFxcdFxcdFxcdFxcdFxcdFxcdTAwMjZpcHZzLVxcdTAwM2V3b3JrX2ZsYWdzKSlcXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY3RsLmM6MjEyODpcXHRcXHRcXHRxdWV1ZV9kZWxheWVkX3dvcmsoc3lzdGVtX2RmbF9sb25nX3dxLFxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jdGwuYy0yMTI5LVxcdFxcdFxcdFxcdFxcdCAgIFxcdTAwMjZpcHZzLVxcdTAwM2VzdmNfcmVzaXplX3dvcmssIDEpO1xcbi0tXFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2N0bC5jPTI1ODk9c3RhdGljIGludCBpcHZzX3Byb2NfY29ubl9sZmFjdG9yKGNvbnN0IHN0cnVjdCBjdGxfdGFibGUgKnRhYmxlLCBpbnQgd3JpdGUsXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY3RsLmMtMjYwOC1cXHRcXHRcXHRpZiAocmN1X2FjY2Vzc19wb2ludGVyKGlwdnMtXFx1MDAzZWNvbm5fdGFiKSlcXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY3RsLmM6MjYwOTpcXHRcXHRcXHRcXHRtb2RfZGVsYXllZF93b3JrKHN5c3RlbV9kZmxfbG9uZ193cSxcXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY3RsLmMtMjYxMC1cXHRcXHRcXHRcXHRcXHRcXHQgXFx1MDAyNmlwdnMtXFx1MDAzZWNvbm5fcmVzaXplX3dvcmssIDApO1xcbi0tXFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2N0bC5jPTI2MTY9c3RhdGljIGludCBpcHZzX3Byb2Nfc3ZjX2xmYWN0b3IoY29uc3Qgc3RydWN0IGN0bF90YWJsZSAqdGFibGUsIGludCB3cml0ZSxcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jdGwuYy0yNjQwLVxcdFxcdFxcdFxcdCAgICAgIFxcdTAwMjZpcHZzLVxcdTAwM2V3b3JrX2ZsYWdzKSlcXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY3RsLmM6MjY0MTpcXHRcXHRcXHRcXHRtb2RfZGVsYXllZF93b3JrKHN5c3RlbV9kZmxfbG9uZ193cSxcXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY3RsLmMtMjY0Mi1cXHRcXHRcXHRcXHRcXHRcXHQgXFx1MDAyNmlwdnMtXFx1MDAzZXN2Y19yZXNpemVfd29yaywgMCk7XFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY3RsLmM9NDk5NT1zdGF0aWMgaW50IF9fbmV0X2luaXQgaXBfdnNfY29udHJvbF9uZXRfaW5pdF9zeXNjdGwoc3RydWN0IG5ldG5zX2lwdnMgKmlwdnMpXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY3RsLmMtNTEyOC1cXHQvKiBTY2hlZHVsZSBkZWZlbnNlIHdvcmsgKi9cXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY3RsLmM6NTEyOTpcXHRxdWV1ZV9kZWxheWVkX3dvcmsoc3lzdGVtX2RmbF9sb25nX3dxLCBcXHUwMDI2aXB2cy1cXHUwMDNlZGVmZW5zZV93b3JrLFxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jdGwuYy01MTMwLVxcdFxcdFxcdCAgIERFRkVOU0VfVElNRVJfUEVSSU9EKTtcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19lc3QuYz0yMzU9dm9pZCBpcF92c19lc3RfcmVsb2FkX3N0YXJ0KHN0cnVjdCBuZXRuc19pcHZzICppcHZzLCBib29sIHJlc3RhcnQpXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfZXN0LmMtMjQ1LVxcdFxcdGF0b21pY19pbmMoXFx1MDAyNmlwdnMtXFx1MDAzZWVzdF9nZW5pZCk7XFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2VzdC5jOjI0NjpcXHRxdWV1ZV9kZWxheWVkX3dvcmsoc3lzdGVtX2RmbF9sb25nX3dxLCBcXHUwMDI2aXB2cy1cXHUwMDNlZXN0X3JlbG9hZF93b3JrLCAwKTtcXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfZXN0LmMtMjQ3LX1cXG4tLVxcbm5ldC9zdW5ycGMveHBydHJkbWEvdHJhbnNwb3J0LmM9NDgwPXhwcnRfcmRtYV9jb25uZWN0KHN0cnVjdCBycGNfeHBydCAqeHBydCwgc3RydWN0IHJwY190YXNrICp0YXNrKVxcbi0tXFxubmV0L3N1bnJwYy94cHJ0cmRtYS90cmFuc3BvcnQuYy00OTMtXFx0dHJhY2VfeHBydHJkbWFfb3BfY29ubmVjdChyX3hwcnQsIGRlbGF5KTtcXG5uZXQvc3VucnBjL3hwcnRyZG1hL3RyYW5zcG9ydC5jOjQ5NDpcXHRxdWV1ZV9kZWxheWVkX3dvcmsoc3lzdGVtX2RmbF9sb25nX3dxLCBcXHUwMDI2cl94cHJ0LVxcdTAwM2VyeF9jb25uZWN0X3dvcmtlcixcXG5uZXQvc3VucnBjL3hwcnRyZG1hL3RyYW5zcG9ydC5jLTQ5NS1cXHRcXHRcXHQgICBkZWxheSk7XFxuLS1cXG5zb3VuZC9zb2MvY29kZWNzL2NzNDJsNDMtamFjay5jPTc5Nj1pcnFyZXR1cm5fdCBjczQybDQzX3RpcF9zZW5zZShpbnQgaXJxLCB2b2lkICpkYXRhKVxcbi0tXFxuc291bmQvc29jL2NvZGVjcy9jczQybDQzLWphY2suYy04MDctXFxuc291bmQvc29jL2NvZGVjcy9jczQybDQzLWphY2suYzo4MDg6XFx0cXVldWVfZGVsYXllZF93b3JrKHN5c3RlbV9kZmxfbG9uZ193cSwgXFx1MDAyNnByaXYtXFx1MDAzZXRpcF9zZW5zZV93b3JrLFxcbnNvdW5kL3NvYy9jb2RlY3MvY3M0Mmw0My1qYWNrLmMtODA5LVxcdFxcdFxcdCAgIG1zZWNzX3RvX2ppZmZpZXMoZGJfZGVsYXkpKTtcXG4tLVxcbnNvdW5kL3NvYy9jb2RlY3MvY3M0Mmw0My1qYWNrLmM9OTA1PWludCBjczQybDQzX2phY2tfcHV0KHN0cnVjdCBzbmRfa2NvbnRyb2wgKmtjb250cm9sLCBzdHJ1Y3Qgc25kX2N0bF9lbGVtX3ZhbHVlICp1Y29udHJvbClcXG4tLVxcbnNvdW5kL3NvYy9jb2RlY3MvY3M0Mmw0My1qYWNrLmMtOTM0LVxcdGlmICghb3ZlcnJpZGUpIHtcXG5zb3VuZC9zb2MvY29kZWNzL2NzNDJsNDMtamFjay5jOjkzNTpcXHRcXHRxdWV1ZV9kZWxheWVkX3dvcmsoc3lzdGVtX2RmbF9sb25nX3dxLCBcXHUwMDI2cHJpdi1cXHUwMDNldGlwX3NlbnNlX3dvcmssXFxuc291bmQvc29jL2NvZGVjcy9jczQybDQzLWphY2suYy05MzYtXFx0XFx0XFx0XFx0ICAgMCk7XFxuLS1cXG5zb3VuZC9zb2MvY29kZWNzL3J0NTY0MC5jPTIzMTQ9c3RhdGljIHZvaWQgcnQ1NjQwX2phY2tfd29yayhzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspXFxuLS1cXG5zb3VuZC9zb2MvY29kZWNzL3J0NTY0MC5jLTIzOTktXFx0XFx0ICovXFxuc291bmQvc29jL2NvZGVjcy9ydDU2NDAuYzoyNDAwOlxcdFxcdHF1ZXVlX2RlbGF5ZWRfd29yayhzeXN0ZW1fZGZsX2xvbmdfd3EsIFxcdTAwMjZydDU2NDAtXFx1MDAzZWphY2tfd29yaywgMCk7XFxuc291bmQvc29jL2NvZGVjcy9ydDU2NDAuYy0yNDAxLVxcdH1cXG4tLVxcbnNvdW5kL3NvYy9jb2RlY3MvcnQ1NjQwLmM9MjQwND1zdGF0aWMgaXJxcmV0dXJuX3QgcnQ1NjQwX2lycShpbnQgaXJxLCB2b2lkICpkYXRhKVxcbi0tXFxuc291bmQvc29jL2NvZGVjcy9ydDU2NDAuYy0yNDEyLVxcdGlmIChydDU2NDAtXFx1MDAzZWphY2spXFxuc291bmQvc29jL2NvZGVjcy9ydDU2NDAuYzoyNDEzOlxcdFxcdG1vZF9kZWxheWVkX3dvcmsoc3lzdGVtX2RmbF9sb25nX3dxLCBcXHUwMDI2cnQ1NjQwLVxcdTAwM2VqYWNrX3dvcmssXFxuc291bmQvc29jL2NvZGVjcy9ydDU2NDAuYy0yNDE0LVxcdFxcdFxcdFxcdCBkZWxheSk7XFxuLS1cXG5zb3VuZC9zb2MvY29kZWNzL3J0NTY0MC5jPTI0MTk9c3RhdGljIGlycXJldHVybl90IHJ0NTY0MF9qZF9ncGlvX2lycShpbnQgaXJxLCB2b2lkICpkYXRhKVxcbi0tXFxuc291bmQvc29jL2NvZGVjcy9ydDU2NDAuYy0yNDIyLVxcbnNvdW5kL3NvYy9jb2RlY3MvcnQ1NjQwLmM6MjQyMzpcXHRxdWV1ZV9kZWxheWVkX3dvcmsoc3lzdGVtX2RmbF9sb25nX3dxLCBcXHUwMDI2cnQ1NjQwLVxcdTAwM2VqYWNrX3dvcmssXFxuc291bmQvc29jL2NvZGVjcy9ydDU2NDAuYy0yNDI0LVxcdFxcdFxcdCAgIG1zZWNzX3RvX2ppZmZpZXMoSkFDS19TRVRUTEVfVElNRSkpO1xcbi0tXFxuc291bmQvc29jL2NvZGVjcy9ydDU2NDAuYz0yNDk1PXN0YXRpYyB2b2lkIHJ0NTY0MF9lbmFibGVfamFja19kZXRlY3Qoc3RydWN0IHNuZF9zb2NfY29tcG9uZW50ICpjb21wb25lbnQsXFxuLS1cXG5zb3VuZC9zb2MvY29kZWNzL3J0NTY0MC5jLTI1ODQtXFx0Lyogc3luYyBpbml0aWFsIGphY2sgc3RhdGUgKi9cXG5zb3VuZC9zb2MvY29kZWNzL3J0NTY0MC5jOjI1ODU6XFx0cXVldWVfZGVsYXllZF93b3JrKHN5c3RlbV9kZmxfbG9uZ193cSwgXFx1MDAyNnJ0NTY0MC1cXHUwMDNlamFja193b3JrLCAwKTtcXG5zb3VuZC9zb2MvY29kZWNzL3J0NTY0MC5jLTI1ODYtfVxcbi0tXFxuc291bmQvc29jL2NvZGVjcy9ydDU2NDAuYz0yNTk0PXN0YXRpYyB2b2lkIHJ0NTY0MF9lbmFibGVfaGRhX2phY2tfZGV0ZWN0KFxcbi0tXFxuc291bmQvc29jL2NvZGVjcy9ydDU2NDAuYy0yNjM3LVxcdC8qIHN5bmMgaW5pdGlhbCBqYWNrIHN0YXRlICovXFxuc291bmQvc29jL2NvZGVjcy9ydDU2NDAuYzoyNjM4OlxcdHF1ZXVlX2RlbGF5ZWRfd29yayhzeXN0ZW1fZGZsX2xvbmdfd3EsIFxcdTAwMjZydDU2NDAtXFx1MDAzZWphY2tfd29yaywgMCk7XFxuc291bmQvc29jL2NvZGVjcy9ydDU2NDAuYy0yNjM5LVxcbi0tXFxuc291bmQvc29jL2NvZGVjcy9ydDU2NDAuYz0yODI2PXN0YXRpYyBpbnQgcnQ1NjQwX3Jlc3VtZShzdHJ1Y3Qgc25kX3NvY19jb21wb25lbnQgKmNvbXBvbmVudClcXG4tLVxcbnNvdW5kL3NvYy9jb2RlY3MvcnQ1NjQwLmMtMjg2NS1cXHRcXHRlbmFibGVfaXJxKHJ0NTY0MC1cXHUwMDNlaXJxKTtcXG5zb3VuZC9zb2MvY29kZWNzL3J0NTY0MC5jOjI4NjY6XFx0XFx0cXVldWVfZGVsYXllZF93b3JrKHN5c3RlbV9kZmxfbG9uZ193cSwgXFx1MDAyNnJ0NTY0MC1cXHUwMDNlamFja193b3JrLCAwKTtcXG5zb3VuZC9zb2MvY29kZWNzL3J0NTY0MC5jLTI4NjctXFx0fVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wMlQxNDo1MzozNS4yNzg3NzE0ODhaIiwiU2VxIjoxMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NzUyOTMzNjI4MSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipGdXp6aW5nIERlY2lzaW9uIGZvciBXb3JrcXVldWUgQ2hhbmdlKipcblxuT2theSwgc28gdGhpcyBwYXRjaCBpcyBzd2l0Y2hpbmcgdGhlIHdvcmtxdWV1ZSB1c2VkIGJ5IElQVlMgZnJvbSBgc3lzdGVtX2xvbmdfd3FgIHRvIGBzeXN0ZW1fZGZsX2xvbmdfd3FgLiBTZWVtcyBsaWtlIGEgbWlub3IgZnVuY3Rpb25hbCBjaGFuZ2UsIGJ1dCBsZXQncyBjb25zaWRlciBmdXp6aW5nIGl0LiBJdCdzIGluIGBuZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY3RsLmNgIGFuZCBgbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2VzdC5jYCwgc28gaXQncyBsb2NhbGl6ZWQuIFRoZSBjb3JlIHF1ZXN0aW9uIGlzOiBpcyBpdCAqd29ydGgqIGl0P1xuXG5UaGUgaW5zdHJ1Y3Rpb25zIHNheSB0byBvbmx5IHJldHVybiBgV29ydGhGdXp6aW5nPWZhbHNlYCBpZiBpdOKAmXMgZG9jdW1lbnRhdGlvbiwgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBvciBzb21ldGhpbmcgdGhhdCB3b24ndCBjaGFuZ2UgdGhlIGV4ZWN1dGlvbi4gVGhpcyBwYXRjaCAqZG9lcyogYWx0ZXIgZXhlY3V0aW9uIGZsb3csIGJlY2F1c2UgaXQncyBkZXRlcm1pbmluZyB3aGljaCB3b3JrcXVldWUgZXhlY3V0ZXMgdGhlIGZ1bmN0aW9uLCBpdCdzIG5vdCBjb3NtZXRpYy4gU28sIHllcywgaXTigJlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UsIG5vdCBqdXN0IGEgY29tbWVudCBvciBkb2N1bWVudGF0aW9uIHVwZGF0ZS5cblxuVGhlcmVmb3JlLCBJJ20gbGVhbmluZyB0b3dhcmRzIGBXb3J0aEZ1enppbmc9dHJ1ZWAuIEkgbmVlZCB0byBwcm92aWRlIHRoZSBzdXBwb3J0aW5nIGFyZ3VtZW50cyB0aG91Z2guIFNwZWNpZmljYWxseSB0aGUgYEZvY3VzU3ltYm9sc2AgYW5kIGBFbmFibGVDb25maWdzYC4gVGhlIGBGb2N1c1N5bWJvbHNgIGFwcGVhciB0byBiZSBgZGVmZW5zZV93b3JrX2hhbmRsZXJgLCBgZXN0X3JlbG9hZF93b3JrX2hhbmRsZXJgLCBhbmQgYGlwX3ZzX2VzdF9yZWxvYWRfc3RhcnRgLiBgRW5hYmxlQ29uZmlnc2AgaXMgc3RyYWlnaHRmb3J3YXJkOiBgSVBfVlNgLiBUaGF0IHNlZW1zIHJpZ2h0LCBidXQgbGV0J3MgZG91YmxlLWNoZWNrIGFueSByZWxhdGVkIGNvbmZpZ3MsIGp1c3QgdG8gYmUgc3VyZS5cblxuV2FpdCBhIHNlY29uZOKApiBgZGVmZW5zZV93b3JrX2hhbmRsZXJgIGlzIGluc2lkZSBhbiBgI2lmZGVmIENPTkZJR19TWVNDVExgIGJsb2NrLiBUaGlzIG5lZWRzIGEgY2xvc2VyIGxvb2sgYXQgYGlwX3ZzX2N0bC5jYCBhcm91bmQgbGluZSAyMzUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjExNDg0LCJPdXRwdXRUb2tlbnMiOjE5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDM5LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAyVDE0OjUzOjQyLjgwODExMTEyOVoiLCJTZXEiOjEyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjY0MzA4NDU1MywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJkZWZlbnNlX3dvcmtfaGFuZGxlclwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY3RsLmM9MjE2PXN0YXRpYyB2b2lkIGV4cGlyZV9ub2Rlc3RfY29ubl9oYW5kbGVyKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaylcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jdGwuYy0yMjktXFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2N0bC5jOjIzMDpzdGF0aWMgdm9pZCBkZWZlbnNlX3dvcmtfaGFuZGxlcihzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspXFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2N0bC5jLTIzMS17XFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY3RsLmM9NDk5NT1zdGF0aWMgaW50IF9fbmV0X2luaXQgaXBfdnNfY29udHJvbF9uZXRfaW5pdF9zeXNjdGwoc3RydWN0IG5ldG5zX2lwdnMgKmlwdnMpXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY3RsLmMtNTAwNi1cXHRzcGluX2xvY2tfaW5pdChcXHUwMDI2aXB2cy1cXHUwMDNlc2VjdXJldGNwX2xvY2spO1xcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jdGwuYzo1MDA3OlxcdElOSVRfREVMQVlFRF9XT1JLKFxcdTAwMjZpcHZzLVxcdTAwM2VkZWZlbnNlX3dvcmssIGRlZmVuc2Vfd29ya19oYW5kbGVyKTtcXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY3RsLmMtNTAwOC1cXHRJTklUX0RFTEFZRURfV09SSyhcXHUwMDI2aXB2cy1cXHUwMDNlZXhwaXJlX25vZGVzdF9jb25uX3dvcmssXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAyVDE0OjUzOjQ1LjQ1MTIwMDM3MloiLCJTZXEiOjEzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoyOTYyMTkwNjMwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgYSBzdW1tYXJ5IG9mIG15IHRob3VnaHQgcHJvY2VzcywgYXMgaWYgSSB3ZXJlIHRoZSBvbmUgdGhpbmtpbmcgaXQ6XG5cbioqRGl2aW5nIGludG8gdGhlIElQVlMgQ29udHJvbCBQbGFuZSoqXG5cbk9rYXksIHRpbWUgdG8gZ2V0IG15IGhhbmRzIGRpcnR5IHdpdGggYG5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jdGwuY2AuIEknbSBnb2luZyB0byBqdW1wIGluIGFyb3VuZCBsaW5lIDIzMC4gSSdtIGd1ZXNzaW5nIHRoYXQncyB3aGVyZSBhIGNydWNpYWwgcGFydCBvZiB0aGUgY29udHJvbCBwbGFuZSBsb2dpYywgc3BlY2lmaWNhbGx5IGFyb3VuZCBjb25maWd1cmF0aW9uIG9yIG1hbmlwdWxhdGlvbiBvZiB0aGUgSVBWUyB0YWJsZXMsIHJlc2lkZXMuIEknbSBleHBlY3RpbmcgdG8gZmluZCBzb21lIGludGVyZXN0aW5nIGludGVyYWN0aW9uIHBvaW50cyB3aXRoIHRoZSBuZXRmaWx0ZXIgaG9va3Mgb3IgcGVyaGFwcyBhIGtleSBmdW5jdGlvbiBjYWxsIGRlYWxpbmcgd2l0aCBzZXJ2aWNlIGRlZmluaXRpb24gb3IgY29ubmVjdGlvbiB0cmFja2luZyBtb2RpZmljYXRpb25zLiBMZXQncyBzZWUgd2hhdCBnZW1zIGFyZSB3YWl0aW5nIHRvIGJlIHVuZWFydGhlZC4gTGluZSAyMzAuLi4gbGV0J3Mgc2VlIHdoYXQncyBpbiBzdG9yZS5cblxuXG4iLCJJbnB1dFRva2VucyI6MTI1OTgsIk91dHB1dFRva2VucyI6NDMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyOCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0wMlQxNDo1Mzo0OC40MTMzOTQ0MzJaIiwiU2VxIjoxNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MzQ0NjAwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcIm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jdGwuY1wiLFxuICBcIkZpcnN0TGluZVwiOiAyMTAsXG4gIFwiTGluZUNvdW50XCI6IDUwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAyMTA6XFx0XFx0bG9jYWxfYmhfZW5hYmxlKCk7XFxuIDIxMTpcXHR9XFxuIDIxMjpcXHRcXG4gMjEzOlxcdC8qIEhhbmRsZXIgZm9yIGRlbGF5ZWQgd29yayBmb3IgZXhwaXJpbmcgbm9cXG4gMjE0OlxcdCAqIGRlc3RpbmF0aW9uIGNvbm5lY3Rpb25zXFxuIDIxNTpcXHQgKi9cXG4gMjE2OlxcdHN0YXRpYyB2b2lkIGV4cGlyZV9ub2Rlc3RfY29ubl9oYW5kbGVyKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaylcXG4gMjE3OlxcdHtcXG4gMjE4OlxcdFxcdHN0cnVjdCBuZXRuc19pcHZzICppcHZzO1xcbiAyMTk6XFx0XFxuIDIyMDpcXHRcXHRpcHZzID0gY29udGFpbmVyX29mKHdvcmssIHN0cnVjdCBuZXRuc19pcHZzLFxcbiAyMjE6XFx0XFx0XFx0XFx0ICAgIGV4cGlyZV9ub2Rlc3RfY29ubl93b3JrLndvcmspO1xcbiAyMjI6XFx0XFx0aXBfdnNfZXhwaXJlX25vZGVzdF9jb25uX2ZsdXNoKGlwdnMpO1xcbiAyMjM6XFx0fVxcbiAyMjQ6XFx0XFxuIDIyNTpcXHQvKlxcbiAyMjY6XFx0ICpcXHRUaW1lciBmb3IgY2hlY2tpbmcgdGhlIGRlZmVuc2VcXG4gMjI3OlxcdCAqL1xcbiAyMjg6XFx0I2RlZmluZSBERUZFTlNFX1RJTUVSX1BFUklPRFxcdDEqSFpcXG4gMjI5OlxcdFxcbiAyMzA6XFx0c3RhdGljIHZvaWQgZGVmZW5zZV93b3JrX2hhbmRsZXIoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxcbiAyMzE6XFx0e1xcbiAyMzI6XFx0XFx0c3RydWN0IG5ldG5zX2lwdnMgKmlwdnMgPVxcbiAyMzM6XFx0XFx0XFx0Y29udGFpbmVyX29mKHdvcmssIHN0cnVjdCBuZXRuc19pcHZzLCBkZWZlbnNlX3dvcmsud29yayk7XFxuIDIzNDpcXHRcXG4gMjM1OlxcdFxcdHVwZGF0ZV9kZWZlbnNlX2xldmVsKGlwdnMpO1xcbiAyMzY6XFx0XFx0aWYgKGF0b21pY19yZWFkKFxcdTAwMjZpcHZzLVxcdTAwM2Vkcm9wZW50cnkpKVxcbiAyMzc6XFx0XFx0XFx0aXBfdnNfcmFuZG9tX2Ryb3BlbnRyeShpcHZzKTtcXG4gMjM4OlxcdFxcdHF1ZXVlX2RlbGF5ZWRfd29yayhzeXN0ZW1fZGZsX2xvbmdfd3EsIFxcdTAwMjZpcHZzLVxcdTAwM2VkZWZlbnNlX3dvcmssXFxuIDIzOTpcXHRcXHRcXHRcXHQgICBERUZFTlNFX1RJTUVSX1BFUklPRCk7XFxuIDI0MDpcXHR9XFxuIDI0MTpcXHQjZW5kaWZcXG4gMjQyOlxcdFxcbiAyNDM6XFx0c3RhdGljIHZvaWQgZXN0X3JlbG9hZF93b3JrX2hhbmRsZXIoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxcbiAyNDQ6XFx0e1xcbiAyNDU6XFx0XFx0c3RydWN0IG5ldG5zX2lwdnMgKmlwdnMgPVxcbiAyNDY6XFx0XFx0XFx0Y29udGFpbmVyX29mKHdvcmssIHN0cnVjdCBuZXRuc19pcHZzLCBlc3RfcmVsb2FkX3dvcmsud29yayk7XFxuIDI0NzpcXHRcXHRpbnQgZ2VuaWRfZG9uZSA9IGF0b21pY19yZWFkKFxcdTAwMjZpcHZzLVxcdTAwM2Vlc3RfZ2VuaWRfZG9uZSk7XFxuIDI0ODpcXHRcXHR1bnNpZ25lZCBsb25nIGRlbGF5ID0gSFogLyAxMDtcXHQvKiByZXBlYXQgc3RhcnR1cHMgYWZ0ZXIgZmFpbHVyZSAqL1xcbiAyNDk6XFx0XFx0Ym9vbCByZXBlYXQgPSBmYWxzZTtcXG4gMjUwOlxcdFxcdGludCBnZW5pZDtcXG4gMjUxOlxcdFxcdGludCBpZDtcXG4gMjUyOlxcdFxcbiAyNTM6XFx0XFx0bXV0ZXhfbG9jayhcXHUwMDI2aXB2cy1cXHUwMDNlZXN0X211dGV4KTtcXG4gMjU0OlxcdFxcdGdlbmlkID0gYXRvbWljX3JlYWQoXFx1MDAyNmlwdnMtXFx1MDAzZWVzdF9nZW5pZCk7XFxuIDI1NTpcXHRcXHRmb3IgKGlkID0gMDsgaWQgXFx1MDAzYyBpcHZzLVxcdTAwM2Vlc3Rfa3RfY291bnQ7IGlkKyspIHtcXG4gMjU2OlxcdFxcdFxcdHN0cnVjdCBpcF92c19lc3Rfa3RfZGF0YSAqa2QgPSBpcHZzLVxcdTAwM2Vlc3Rfa3RfYXJyW2lkXTtcXG4gMjU3OlxcdFxcbiAyNTg6XFx0XFx0XFx0LyogbmV0bnMgY2xlYW4gdXAgc3RhcnRlZCwgYWJvcnQgZGVsYXllZCB3b3JrICovXFxuIDI1OTpcXHRcXHRcXHRpZiAoIVJFQURfT05DRShpcHZzLVxcdTAwM2VlbmFibGUpKVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wMlQxNDo1Mzo0OC40MTM3NDEzMDJaIiwiU2VxIjoxNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6Mjc2OTg0MjM0NywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6XG5cbioqQW5hbHl6aW5nIENvbmRpdGlvbmFsIENvbXBpbGF0aW9uKipcblxuQWxyaWdodCwgc28gSSdtIGxvb2tpbmcgYXQgbGluZSAyNDEsIHdoaWNoIGlzIGEgc2ltcGxlIGAjZW5kaWZgLiBUaGF0J3MgdGhlIGVuZCBvZiBhIGNvbmRpdGlvbmFsIGJsb2NrLCBubyBzdXJwcmlzZXMgdGhlcmUuIEJ1dCBpdCBpbW1lZGlhdGVseSBtYWtlcyBtZSB0aGluaywgXCJXaGF0IHdhcyB0aGUgY29ycmVzcG9uZGluZyBgI2lmZGVmYCBvciBgI2lmbmRlZmAgdGhhdCBzdGFydGVkIHRoaXMgYmxvY2s/XCIuIEkgbmVlZCB0byBrbm93IHRoZSBjb25kaXRpb25hbCBjb21waWxhdGlvbiBjb25kaXRpb24uIEknbSB0aGlua2luZywgaXMgaXQgYSBmZWF0dXJlIGZsYWcsIGEgcGxhdGZvcm0gZGVmaW5lLCBhIGRlYnVnIHN3aXRjaD8gS25vd2luZyAqdGhhdCogaXMgY3J1Y2lhbCB0byB1bmRlcnN0YW5kaW5nIHRoZSAqd2h5KiBvZiB0aGlzIHBhcnRpY3VsYXIgY29kZSBiZWluZyBwcmVzZW50IG9yIGFic2VudCBkdXJpbmcgYSBzcGVjaWZpYyBidWlsZC4gSSBuZWVkIHRvIHRyYWNlIGJhY2sgYW5kIGltbWVkaWF0ZWx5IGlkZW50aWZ5IHdoYXQgaXMgYmVpbmcgY29uZGl0aW9uYWxseSBjb21waWxlZCwgYW5kIHdoeS4gV2l0aG91dCBrbm93aW5nIHRoZSBgI2lmZGVmYCwgdGhpcyBgI2VuZGlmYCBpcyBqdXN0IGEgY2xvc2luZyBicmFja2V0IHdpdGhvdXQgY29udGV4dCwgYW4gb3JwaGFuIGluIHRoZSBjb2RlYmFzZS5cblxuXG4iLCJJbnB1dFRva2VucyI6MTM2MTEsIk91dHB1dFRva2VucyI6NDMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNiwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAyVDE0OjUzOjUxLjE4MzU4NjMyOVoiLCJTZXEiOjE2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjozMTgxODAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwibmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2N0bC5jXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDE1MCxcbiAgXCJMaW5lQ291bnRcIjogNjBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiIDE1MDpcXHRcXHRcXHRcXHRpcHZzLVxcdTAwM2Vkcm9wX2NvdW50ZXIgPSBhbWVtdGhyZXNoIC8gKGFtZW10aHJlc2ggLSBhdmFpbG1lbSk7XFxuIDE1MTpcXHRcXHRcXHRcXHRpcHZzLVxcdTAwM2Vkcm9wX3JhdGUgPSBpcHZzLVxcdTAwM2Vkcm9wX2NvdW50ZXI7XFxuIDE1MjpcXHRcXHRcXHRcXHRpcHZzLVxcdTAwM2VzeXNjdGxfZHJvcF9wYWNrZXQgPSAyO1xcbiAxNTM6XFx0XFx0XFx0fSBlbHNlIHtcXG4gMTU0OlxcdFxcdFxcdFxcdGlwdnMtXFx1MDAzZWRyb3BfcmF0ZSA9IDA7XFxuIDE1NTpcXHRcXHRcXHR9XFxuIDE1NjpcXHRcXHRcXHRicmVhaztcXG4gMTU3OlxcdFxcdGNhc2UgMjpcXG4gMTU4OlxcdFxcdFxcdGlmIChub21lbSkge1xcbiAxNTk6XFx0XFx0XFx0XFx0aXB2cy1cXHUwMDNlZHJvcF9jb3VudGVyID0gYW1lbXRocmVzaCAvIChhbWVtdGhyZXNoIC0gYXZhaWxtZW0pO1xcbiAxNjA6XFx0XFx0XFx0XFx0aXB2cy1cXHUwMDNlZHJvcF9yYXRlID0gaXB2cy1cXHUwMDNlZHJvcF9jb3VudGVyO1xcbiAxNjE6XFx0XFx0XFx0fSBlbHNlIHtcXG4gMTYyOlxcdFxcdFxcdFxcdGlwdnMtXFx1MDAzZWRyb3BfcmF0ZSA9IDA7XFxuIDE2MzpcXHRcXHRcXHRcXHRpcHZzLVxcdTAwM2VzeXNjdGxfZHJvcF9wYWNrZXQgPSAxO1xcbiAxNjQ6XFx0XFx0XFx0fVxcbiAxNjU6XFx0XFx0XFx0YnJlYWs7XFxuIDE2NjpcXHRcXHRjYXNlIDM6XFxuIDE2NzpcXHRcXHRcXHRpcHZzLVxcdTAwM2Vkcm9wX3JhdGUgPSBpcHZzLVxcdTAwM2VzeXNjdGxfYW1fZHJvcHJhdGU7XFxuIDE2ODpcXHRcXHRcXHRicmVhaztcXG4gMTY5OlxcdFxcdH1cXG4gMTcwOlxcdFxcdHNwaW5fdW5sb2NrKFxcdTAwMjZpcHZzLVxcdTAwM2Vkcm9wcGFja2V0X2xvY2spO1xcbiAxNzE6XFx0XFxuIDE3MjpcXHRcXHQvKiBzZWN1cmVfdGNwICovXFxuIDE3MzpcXHRcXHRzcGluX2xvY2soXFx1MDAyNmlwdnMtXFx1MDAzZXNlY3VyZXRjcF9sb2NrKTtcXG4gMTc0OlxcdFxcdHN3aXRjaCAoaXB2cy1cXHUwMDNlc3lzY3RsX3NlY3VyZV90Y3ApIHtcXG4gMTc1OlxcdFxcdGNhc2UgMDpcXG4gMTc2OlxcdFxcdFxcdGlmIChpcHZzLVxcdTAwM2VvbGRfc2VjdXJlX3RjcCBcXHUwMDNlPSAyKVxcbiAxNzc6XFx0XFx0XFx0XFx0dG9fY2hhbmdlID0gMDtcXG4gMTc4OlxcdFxcdFxcdGJyZWFrO1xcbiAxNzk6XFx0XFx0Y2FzZSAxOlxcbiAxODA6XFx0XFx0XFx0aWYgKG5vbWVtKSB7XFxuIDE4MTpcXHRcXHRcXHRcXHRpZiAoaXB2cy1cXHUwMDNlb2xkX3NlY3VyZV90Y3AgXFx1MDAzYyAyKVxcbiAxODI6XFx0XFx0XFx0XFx0XFx0dG9fY2hhbmdlID0gMTtcXG4gMTgzOlxcdFxcdFxcdFxcdGlwdnMtXFx1MDAzZXN5c2N0bF9zZWN1cmVfdGNwID0gMjtcXG4gMTg0OlxcdFxcdFxcdH0gZWxzZSB7XFxuIDE4NTpcXHRcXHRcXHRcXHRpZiAoaXB2cy1cXHUwMDNlb2xkX3NlY3VyZV90Y3AgXFx1MDAzZT0gMilcXG4gMTg2OlxcdFxcdFxcdFxcdFxcdHRvX2NoYW5nZSA9IDA7XFxuIDE4NzpcXHRcXHRcXHR9XFxuIDE4ODpcXHRcXHRcXHRicmVhaztcXG4gMTg5OlxcdFxcdGNhc2UgMjpcXG4gMTkwOlxcdFxcdFxcdGlmIChub21lbSkge1xcbiAxOTE6XFx0XFx0XFx0XFx0aWYgKGlwdnMtXFx1MDAzZW9sZF9zZWN1cmVfdGNwIFxcdTAwM2MgMilcXG4gMTkyOlxcdFxcdFxcdFxcdFxcdHRvX2NoYW5nZSA9IDE7XFxuIDE5MzpcXHRcXHRcXHR9IGVsc2Uge1xcbiAxOTQ6XFx0XFx0XFx0XFx0aWYgKGlwdnMtXFx1MDAzZW9sZF9zZWN1cmVfdGNwIFxcdTAwM2U9IDIpXFxuIDE5NTpcXHRcXHRcXHRcXHRcXHR0b19jaGFuZ2UgPSAwO1xcbiAxOTY6XFx0XFx0XFx0XFx0aXB2cy1cXHUwMDNlc3lzY3RsX3NlY3VyZV90Y3AgPSAxO1xcbiAxOTc6XFx0XFx0XFx0fVxcbiAxOTg6XFx0XFx0XFx0YnJlYWs7XFxuIDE5OTpcXHRcXHRjYXNlIDM6XFxuIDIwMDpcXHRcXHRcXHRpZiAoaXB2cy1cXHUwMDNlb2xkX3NlY3VyZV90Y3AgXFx1MDAzYyAyKVxcbiAyMDE6XFx0XFx0XFx0XFx0dG9fY2hhbmdlID0gMTtcXG4gMjAyOlxcdFxcdFxcdGJyZWFrO1xcbiAyMDM6XFx0XFx0fVxcbiAyMDQ6XFx0XFx0aXB2cy1cXHUwMDNlb2xkX3NlY3VyZV90Y3AgPSBpcHZzLVxcdTAwM2VzeXNjdGxfc2VjdXJlX3RjcDtcXG4gMjA1OlxcdFxcdGlmICh0b19jaGFuZ2UgXFx1MDAzZT0gMClcXG4gMjA2OlxcdFxcdFxcdGlwX3ZzX3Byb3RvY29sX3RpbWVvdXRfY2hhbmdlKGlwdnMsXFxuIDIwNzpcXHRcXHRcXHRcXHRcXHRcXHQgICAgICBpcHZzLVxcdTAwM2VzeXNjdGxfc2VjdXJlX3RjcCBcXHUwMDNlIDEpO1xcbiAyMDg6XFx0XFx0c3Bpbl91bmxvY2soXFx1MDAyNmlwdnMtXFx1MDAzZXNlY3VyZXRjcF9sb2NrKTtcXG4gMjA5OlxcdFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wMlQxNDo1Mzo1MS4xODM5MDY4MDlaIiwiU2VxIjoxNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzMzMDc0MTUwNywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhlIHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZTpcblxuKipNaXNzaW5nIFByZXByb2Nlc3NvciBEaXJlY3RpdmUgSW52ZXN0aWdhdGlvbioqXG5cbkFscmlnaHQsIEknbSBzY2FubmluZyB0aGlzIGNvZGUsIGFuZCB0aGUgcHJlcHJvY2Vzc29yIGRpcmVjdGl2ZSBJJ20gZXhwZWN0aW5nIGlzbid0IGp1bXBpbmcgb3V0IGF0IG1lLiBMZXQncyBzdGFydCB0aGUgYW5hbHlzaXMgYXQgbGluZSA1MC4gSSdtIGFzc3VtaW5nIHRoYXQgaXQgaXMgaW4gdGhpcyByZWdpb24uIFRoaXMgaXMgd2hlcmUgdGhlIGNvcmUgbG9naWMgb2YgdGhlIGZ1bmN0aW9uYWxpdHkgaXMgcHJvYmFibHkgc2l0dWF0ZWQgYW5kIHdoZXJlIHRoZSBpc3N1ZSB3b3VsZCBtb3N0IGxpa2VseSBtYW5pZmVzdC4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGNvbnRyb2wgZmxvdyBhcm91bmQgdGhhdCBzZWN0aW9uLiBJcyB0aGUgZnVuY3Rpb25hbGl0eSBjb25kaXRpb25hbGx5IGNvbXBpbGVkIGluIG9yIG91dD8gSXQgY291bGQgYmUgbWlzc2luZyBvciBtYXliZSB0aGUgcmVsZXZhbnQgY29uZGl0aW9uIGhhcyBub3QgYmVlbiBtZXQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE0NzQ4LCJPdXRwdXRUb2tlbnMiOjQzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjEsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0wMlQxNDo1Mzo1NC41MTQ2NTE3MjZaIiwiU2VxIjoxOCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjU2NTMwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcIm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jdGwuY1wiLFxuICBcIkZpcnN0TGluZVwiOiA1MCxcbiAgXCJMaW5lQ291bnRcIjogMTAwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAgNTA6XFx0TU9EVUxFX0FMSUFTX0dFTkxfRkFNSUxZKElQVlNfR0VOTF9OQU1FKTtcXG4gIDUxOlxcdFxcbiAgNTI6XFx0c3RhdGljIHN0cnVjdCBsb2NrX2NsYXNzX2tleSBfX2lwdnNfc2VydmljZV9rZXk7XFxuICA1MzpcXHRcXG4gIDU0OlxcdC8qIHN5c2N0bCB2YXJpYWJsZXMgKi9cXG4gIDU1OlxcdFxcbiAgNTY6XFx0I2lmZGVmIENPTkZJR19JUF9WU19ERUJVR1xcbiAgNTc6XFx0c3RhdGljIGludCBzeXNjdGxfaXBfdnNfZGVidWdfbGV2ZWwgPSAwO1xcbiAgNTg6XFx0XFxuICA1OTpcXHRpbnQgaXBfdnNfZ2V0X2RlYnVnX2xldmVsKHZvaWQpXFxuICA2MDpcXHR7XFxuICA2MTpcXHRcXHRyZXR1cm4gc3lzY3RsX2lwX3ZzX2RlYnVnX2xldmVsO1xcbiAgNjI6XFx0fVxcbiAgNjM6XFx0I2VuZGlmXFxuICA2NDpcXHRcXG4gIDY1OlxcdFxcbiAgNjY6XFx0LyogIFByb3RvcyAqL1xcbiAgNjc6XFx0c3RhdGljIHZvaWQgX19pcF92c19kZWxfc2VydmljZShzdHJ1Y3QgaXBfdnNfc2VydmljZSAqc3ZjLCBib29sIGNsZWFudXApO1xcbiAgNjg6XFx0XFxuICA2OTpcXHRcXG4gIDcwOlxcdCNpZmRlZiBDT05GSUdfSVBfVlNfSVBWNlxcbiAgNzE6XFx0LyogVGFrZW4gZnJvbSBydDZfZmlsbF9ub2RlKCkgaW4gbmV0L2lwdjYvcm91dGUuYywgaXMgdGhlcmUgYSBiZXR0ZXIgd2F5PyAqL1xcbiAgNzI6XFx0c3RhdGljIGJvb2wgX19pcF92c19hZGRyX2lzX2xvY2FsX3Y2KHN0cnVjdCBuZXQgKm5ldCxcXG4gIDczOlxcdFxcdFxcdFxcdFxcdCAgICAgY29uc3Qgc3RydWN0IGluNl9hZGRyICphZGRyKVxcbiAgNzQ6XFx0e1xcbiAgNzU6XFx0XFx0c3RydWN0IGZsb3dpNiBmbDYgPSB7XFxuICA3NjpcXHRcXHRcXHQuZGFkZHIgPSAqYWRkcixcXG4gIDc3OlxcdFxcdH07XFxuICA3ODpcXHRcXHRzdHJ1Y3QgZHN0X2VudHJ5ICpkc3QgPSBpcDZfcm91dGVfb3V0cHV0KG5ldCwgTlVMTCwgXFx1MDAyNmZsNik7XFxuICA3OTpcXHRcXHRib29sIGlzX2xvY2FsO1xcbiAgODA6XFx0XFxuICA4MTpcXHRcXHRpc19sb2NhbCA9ICFkc3QtXFx1MDAzZWVycm9yIFxcdTAwMjZcXHUwMDI2IGRzdC1cXHUwMDNlZGV2IFxcdTAwMjZcXHUwMDI2IChkc3QtXFx1MDAzZWRldi1cXHUwMDNlZmxhZ3MgXFx1MDAyNiBJRkZfTE9PUEJBQ0spO1xcbiAgODI6XFx0XFxuICA4MzpcXHRcXHRkc3RfcmVsZWFzZShkc3QpO1xcbiAgODQ6XFx0XFx0cmV0dXJuIGlzX2xvY2FsO1xcbiAgODU6XFx0fVxcbiAgODY6XFx0I2VuZGlmXFxuICA4NzpcXHRcXG4gIDg4OlxcdCNpZmRlZiBDT05GSUdfU1lTQ1RMXFxuICA4OTpcXHQvKlxcbiAgOTA6XFx0ICpcXHR1cGRhdGVfZGVmZW5zZV9sZXZlbCBpcyBjYWxsZWQgZnJvbSBrZXZlbnRkIGFuZCBmcm9tIHN5c2N0bCxcXG4gIDkxOlxcdCAqXFx0c28gaXQgbmVlZHMgdG8gcHJvdGVjdCBpdHNlbGYgZnJvbSBzb2Z0aXJxc1xcbiAgOTI6XFx0ICovXFxuICA5MzpcXHRzdGF0aWMgdm9pZCB1cGRhdGVfZGVmZW5zZV9sZXZlbChzdHJ1Y3QgbmV0bnNfaXB2cyAqaXB2cylcXG4gIDk0OlxcdHtcXG4gIDk1OlxcdFxcdHN0cnVjdCBzeXNpbmZvIGk7XFxuICA5NjpcXHRcXHRpbnQgYXZhaWxtZW07XFxuICA5NzpcXHRcXHRpbnQgYW1lbXRocmVzaDtcXG4gIDk4OlxcdFxcdGludCBub21lbTtcXG4gIDk5OlxcdFxcdGludCB0b19jaGFuZ2UgPSAtMTtcXG4gMTAwOlxcdFxcbiAxMDE6XFx0XFx0Lyogd2Ugb25seSBjb3VudCBmcmVlIGFuZCBidWZmZXJlZCBtZW1vcnkgKGluIHBhZ2VzKSAqL1xcbiAxMDI6XFx0XFx0c2lfbWVtaW5mbyhcXHUwMDI2aSk7XFxuIDEwMzpcXHRcXHRhdmFpbG1lbSA9IGkuZnJlZXJhbSArIGkuYnVmZmVycmFtO1xcbiAxMDQ6XFx0XFx0LyogaG93ZXZlciBpbiBsaW51eCAyLjUgdGhlIGkuYnVmZmVycmFtIGlzIHRvdGFsIHBhZ2UgY2FjaGUgc2l6ZSxcXG4gMTA1OlxcdFxcdCAgIHdlIG5lZWQgYWRqdXN0IGl0ICovXFxuIDEwNjpcXHRcXHQvKiBzaV9zd2FwaW5mbyhcXHUwMDI2aSk7ICovXFxuIDEwNzpcXHRcXHQvKiBhdmFpbG1lbSA9IGF2YWlsbWVtIC0gKGkudG90YWxzd2FwIC0gaS5mcmVlc3dhcCk7ICovXFxuIDEwODpcXHRcXG4gMTA5OlxcdFxcdGFtZW10aHJlc2ggPSBtYXgoUkVBRF9PTkNFKGlwdnMtXFx1MDAzZXN5c2N0bF9hbWVtdGhyZXNoKSwgMCk7XFxuIDExMDpcXHRcXHRub21lbSA9IChhdmFpbG1lbSBcXHUwMDNjIGFtZW10aHJlc2gpO1xcbiAxMTE6XFx0XFxuIDExMjpcXHRcXHRsb2NhbF9iaF9kaXNhYmxlKCk7XFxuIDExMzpcXHRcXG4gMTE0OlxcdFxcdC8qIGRyb3BfZW50cnkgKi9cXG4gMTE1OlxcdFxcdHNwaW5fbG9jayhcXHUwMDI2aXB2cy1cXHUwMDNlZHJvcGVudHJ5X2xvY2spO1xcbiAxMTY6XFx0XFx0c3dpdGNoIChpcHZzLVxcdTAwM2VzeXNjdGxfZHJvcF9lbnRyeSkge1xcbiAxMTc6XFx0XFx0Y2FzZSAwOlxcbiAxMTg6XFx0XFx0XFx0YXRvbWljX3NldChcXHUwMDI2aXB2cy1cXHUwMDNlZHJvcGVudHJ5LCAwKTtcXG4gMTE5OlxcdFxcdFxcdGJyZWFrO1xcbiAxMjA6XFx0XFx0Y2FzZSAxOlxcbiAxMjE6XFx0XFx0XFx0aWYgKG5vbWVtKSB7XFxuIDEyMjpcXHRcXHRcXHRcXHRhdG9taWNfc2V0KFxcdTAwMjZpcHZzLVxcdTAwM2Vkcm9wZW50cnksIDEpO1xcbiAxMjM6XFx0XFx0XFx0XFx0aXB2cy1cXHUwMDNlc3lzY3RsX2Ryb3BfZW50cnkgPSAyO1xcbiAxMjQ6XFx0XFx0XFx0fSBlbHNlIHtcXG4gMTI1OlxcdFxcdFxcdFxcdGF0b21pY19zZXQoXFx1MDAyNmlwdnMtXFx1MDAzZWRyb3BlbnRyeSwgMCk7XFxuIDEyNjpcXHRcXHRcXHR9XFxuIDEyNzpcXHRcXHRcXHRicmVhaztcXG4gMTI4OlxcdFxcdGNhc2UgMjpcXG4gMTI5OlxcdFxcdFxcdGlmIChub21lbSkge1xcbiAxMzA6XFx0XFx0XFx0XFx0YXRvbWljX3NldChcXHUwMDI2aXB2cy1cXHUwMDNlZHJvcGVudHJ5LCAxKTtcXG4gMTMxOlxcdFxcdFxcdH0gZWxzZSB7XFxuIDEzMjpcXHRcXHRcXHRcXHRhdG9taWNfc2V0KFxcdTAwMjZpcHZzLVxcdTAwM2Vkcm9wZW50cnksIDApO1xcbiAxMzM6XFx0XFx0XFx0XFx0aXB2cy1cXHUwMDNlc3lzY3RsX2Ryb3BfZW50cnkgPSAxO1xcbiAxMzQ6XFx0XFx0XFx0fVxcbiAxMzU6XFx0XFx0XFx0YnJlYWs7XFxuIDEzNjpcXHRcXHRjYXNlIDM6XFxuIDEzNzpcXHRcXHRcXHRhdG9taWNfc2V0KFxcdTAwMjZpcHZzLVxcdTAwM2Vkcm9wZW50cnksIDEpO1xcbiAxMzg6XFx0XFx0XFx0YnJlYWs7XFxuIDEzOTpcXHRcXHR9XFxuIDE0MDpcXHRcXHRzcGluX3VubG9jayhcXHUwMDI2aXB2cy1cXHUwMDNlZHJvcGVudHJ5X2xvY2spO1xcbiAxNDE6XFx0XFxuIDE0MjpcXHRcXHQvKiBkcm9wX3BhY2tldCAqL1xcbiAxNDM6XFx0XFx0c3Bpbl9sb2NrKFxcdTAwMjZpcHZzLVxcdTAwM2Vkcm9wcGFja2V0X2xvY2spO1xcbiAxNDQ6XFx0XFx0c3dpdGNoIChpcHZzLVxcdTAwM2VzeXNjdGxfZHJvcF9wYWNrZXQpIHtcXG4gMTQ1OlxcdFxcdGNhc2UgMDpcXG4gMTQ2OlxcdFxcdFxcdGlwdnMtXFx1MDAzZWRyb3BfcmF0ZSA9IDA7XFxuIDE0NzpcXHRcXHRcXHRicmVhaztcXG4gMTQ4OlxcdFxcdGNhc2UgMTpcXG4gMTQ5OlxcdFxcdFxcdGlmIChub21lbSkge1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wMlQxNDo1Mzo1NC41MTQ5MTE3MjZaIiwiU2VxIjoxOSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTAyMzc5ODI5NCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgQ29uZGl0aW9uYWwgQ29tcGlsYXRpb24gaW4gS2VybmVsIENvZGUqKlxuXG5Pa2F5LCBsZXQncyBzZWUsIHN0YXJ0aW5nIHdpdGggbGluZSA4OC4gSSBzZWUgYSBgI2lmZGVmIENPTkZJR19TWVNDVExgIGRpcmVjdGl2ZSB0aGVyZSwgd2hpY2ggbWVhbnMgdGhlIGBkZWZlbnNlX3dvcmtfaGFuZGxlcmAgZnVuY3Rpb24gd2lsbCBvbmx5IGJlIGNvbXBpbGVkIGlmIHRoZSBgQ09ORklHX1NZU0NUTGAgb3B0aW9uIGlzIGVuYWJsZWQgaW4gdGhlIGtlcm5lbCBjb25maWd1cmF0aW9uLiBJIG5lZWQgdG8ga2VlcCB0aGF0IGluIG1pbmQuIE5vdywgSSBzaG91bGQgZG91YmxlIGNoZWNrIHRvIHNlZSBpZiB0aGUgYGVzdF9yZWxvYWRfd29ya19oYW5kbGVyYCBpcyBzaW1pbGFybHkgY29uZGl0aW9uYWwuIExldCdzIHNlZS4uLiBsb29raW5nIGZ1cnRoZXIgZG93biwgaXQncyBhdCBsaW5lIDI0Mywgd2l0aCB0aGUgYCNlbmRpZmAgZm9yIGBDT05GSUdfU1lTQ1RMYCBqdXN0IGFib3ZlIGF0IGxpbmUgMjQxLiBBbHJpZ2h0LCBzbyBgZXN0X3JlbG9hZF93b3JrX2hhbmRsZXJgIGlzICphbHdheXMqIGNvbXBpbGVkLCByZWdhcmRsZXNzIG9mIGBDT05GSUdfU1lTQ1RMYC4gVGhhdCdzIGltcG9ydGFudCB0byByZW1lbWJlciBmb3IgZnV0dXJlIGRlYnVnZ2luZyBvciBhbmFseXNpcy4gTm93LCBJIHJlY2FsbCB0aGF0IGBpcF92c19lc3RfcmVsb2FkX3N0YXJ0YCBpcyBkZWZpbmVkIHdpdGhpbiBgaXBfdnNfZXN0LmNgLCBzbyBJIHNob3VsZCBnbyBhbmQgY2hlY2sgdGhhdCBmaWxlIGFyb3VuZCBsaW5lIDI0My5cblxuXG4iLCJJbnB1dFRva2VucyI6MTYzMzUsIk91dHB1dFRva2VucyI6NDMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMzQsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0wMlQxNDo1Mzo1OS41Mzg3MTE4NVoiLCJTZXEiOjIwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMDExMjAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwibmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2VzdC5jXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDIwMCxcbiAgXCJMaW5lQ291bnRcIjogNTBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiIDIwMDpcXHRcXHRcXHRcXHRpcF92c19lc3RfZHJhaW5fdGVtcF9saXN0KGlwdnMpO1xcbiAyMDE6XFx0XFx0XFx0c2V0X2N1cnJlbnRfc3RhdGUoVEFTS19JRExFKTtcXG4gMjAyOlxcdFxcdFxcdGlmIChrdGhyZWFkX3Nob3VsZF9zdG9wKCkpXFxuIDIwMzpcXHRcXHRcXHRcXHRicmVhaztcXG4gMjA0OlxcdFxcbiAyMDU6XFx0XFx0XFx0LyogYmVmb3JlIGVzdGltYXRpb24sIGNoZWNrIGlmIHdlIHNob3VsZCBzbGVlcCAqL1xcbiAyMDY6XFx0XFx0XFx0bm93ID0gamlmZmllcztcXG4gMjA3OlxcdFxcdFxcdGdhcCA9IGtkLVxcdTAwM2Vlc3RfdGltZXIgLSBub3c7XFxuIDIwODpcXHRcXHRcXHRpZiAoZ2FwIFxcdTAwM2UgMCkge1xcbiAyMDk6XFx0XFx0XFx0XFx0aWYgKGdhcCBcXHUwMDNlIElQVlNfRVNUX1RJQ0spIHtcXG4gMjEwOlxcdFxcdFxcdFxcdFxcdGtkLVxcdTAwM2Vlc3RfdGltZXIgPSBub3cgLSBJUFZTX0VTVF9USUNLO1xcbiAyMTE6XFx0XFx0XFx0XFx0XFx0Z2FwID0gSVBWU19FU1RfVElDSztcXG4gMjEyOlxcdFxcdFxcdFxcdH1cXG4gMjEzOlxcdFxcdFxcdFxcdHNjaGVkdWxlX3RpbWVvdXQoZ2FwKTtcXG4gMjE0OlxcdFxcdFxcdH0gZWxzZSB7XFxuIDIxNTpcXHRcXHRcXHRcXHRfX3NldF9jdXJyZW50X3N0YXRlKFRBU0tfUlVOTklORyk7XFxuIDIxNjpcXHRcXHRcXHRcXHRpZiAoZ2FwIFxcdTAwM2MgLTggKiBJUFZTX0VTVF9USUNLKVxcbiAyMTc6XFx0XFx0XFx0XFx0XFx0a2QtXFx1MDAzZWVzdF90aW1lciA9IG5vdztcXG4gMjE4OlxcdFxcdFxcdH1cXG4gMjE5OlxcdFxcbiAyMjA6XFx0XFx0XFx0aWYgKGtkLVxcdTAwM2V0aWNrX2xlbltyb3ddKVxcbiAyMjE6XFx0XFx0XFx0XFx0aXBfdnNfdGlja19lc3RpbWF0aW9uKGtkLCByb3cpO1xcbiAyMjI6XFx0XFxuIDIyMzpcXHRcXHRcXHRyb3crKztcXG4gMjI0OlxcdFxcdFxcdGlmIChyb3cgXFx1MDAzZT0gSVBWU19FU1RfTlRJQ0tTKVxcbiAyMjU6XFx0XFx0XFx0XFx0cm93ID0gMDtcXG4gMjI2OlxcdFxcdFxcdFdSSVRFX09OQ0Uoa2QtXFx1MDAzZWVzdF9yb3csIHJvdyk7XFxuIDIyNzpcXHRcXHRcXHRrZC1cXHUwMDNlZXN0X3RpbWVyICs9IElQVlNfRVNUX1RJQ0s7XFxuIDIyODpcXHRcXHR9XFxuIDIyOTpcXHRcXHRfX3NldF9jdXJyZW50X3N0YXRlKFRBU0tfUlVOTklORyk7XFxuIDIzMDpcXHRcXG4gMjMxOlxcdFxcdHJldHVybiAwO1xcbiAyMzI6XFx0fVxcbiAyMzM6XFx0XFxuIDIzNDpcXHQvKiBTY2hlZHVsZSBzdG9wL3N0YXJ0IGZvciBrdGhyZWFkIHRhc2tzICovXFxuIDIzNTpcXHR2b2lkIGlwX3ZzX2VzdF9yZWxvYWRfc3RhcnQoc3RydWN0IG5ldG5zX2lwdnMgKmlwdnMsIGJvb2wgcmVzdGFydClcXG4gMjM2OlxcdHtcXG4gMjM3OlxcdFxcdGxvY2tkZXBfYXNzZXJ0X2hlbGQoXFx1MDAyNmlwdnMtXFx1MDAzZWVzdF9tdXRleCk7XFxuIDIzODpcXHRcXG4gMjM5OlxcdFxcdC8qIElnbm9yZSByZWxvYWRzIGJlZm9yZSBmaXJzdCBzZXJ2aWNlIGlzIGFkZGVkICovXFxuIDI0MDpcXHRcXHRpZiAoIVJFQURfT05DRShpcHZzLVxcdTAwM2VlbmFibGUpKVxcbiAyNDE6XFx0XFx0XFx0cmV0dXJuO1xcbiAyNDI6XFx0XFx0aXBfdnNfZXN0X3N0b3BwZWRfcmVjYWxjKGlwdnMpO1xcbiAyNDM6XFx0XFx0LyogQnVtcCB0aGUga3RocmVhZCBjb25maWd1cmF0aW9uIGdlbmlkIGlmIHN0b3BwaW5nIGlzIHJlcXVlc3RlZCAqL1xcbiAyNDQ6XFx0XFx0aWYgKHJlc3RhcnQpXFxuIDI0NTpcXHRcXHRcXHRhdG9taWNfaW5jKFxcdTAwMjZpcHZzLVxcdTAwM2Vlc3RfZ2VuaWQpO1xcbiAyNDY6XFx0XFx0cXVldWVfZGVsYXllZF93b3JrKHN5c3RlbV9kZmxfbG9uZ193cSwgXFx1MDAyNmlwdnMtXFx1MDAzZWVzdF9yZWxvYWRfd29yaywgMCk7XFxuIDI0NzpcXHR9XFxuIDI0ODpcXHRcXG4gMjQ5OlxcdC8qIFN0YXJ0IGt0aHJlYWQgdGFzayB3aXRoIGN1cnJlbnQgY29uZmlndXJhdGlvbiAqL1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wMlQxNDo1Mzo1OS41Mzg4MTQxMloiLCJTZXEiOjIxLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoxMTY5NDE0MDQ2OCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXNpcyBvZiBJUFZTIFBhdGNoIGZvciBGdXp6aW5nIFN1aXRhYmlsaXR5KipcblxuT2theSwgc28gSSd2ZSBnb3QgdGhpcyBwYXRjaCBmb3IgSVBWUyB0byByZXZpZXcuIE15IGltbWVkaWF0ZSBmb2N1cywgYmFzZWQgb24gdGhlIGNvZGUsIGxhbmRzIG9uIHRoZSBmdW5jdGlvbnMgYGRlZmVuc2Vfd29ya19oYW5kbGVyYCwgYGVzdF9yZWxvYWRfd29ya19oYW5kbGVyYCwgYW5kIGBpcF92c19lc3RfcmVsb2FkX3N0YXJ0YC4gVGhlIHJlbGV2YW50IGNvbmZpZyBpcyBvYnZpb3VzbHkgYElQX1ZTYCwgYW5kIEknbGwgaW5jbHVkZSB0aGF0IGFzIGVuYWJsZWQuIEFuZCB5ZXMsIGBTWVNDVExgIGlzIGFsbW9zdCBhbHdheXMgZW5hYmxlZC4gSSdsbCBzdGljayB3aXRoIGxpc3RpbmcgYElQX1ZTYCBmb3IgY2xhcml0eS5cblxuTm93LCBsZXQncyBkb3VibGUtY2hlY2sgYWdhaW5zdCB0aGUgY3JpdGVyaWEgZm9yIFwiV29ydGhGdXp6aW5nPWZhbHNlLlwiIFRoZSBpbnN0cnVjdGlvbnMgYXJlIGNsZWFyOiBpZiB0aGUgcGF0Y2ggbW9kaWZpZXMgdW5yZWFjaGFibGUgY29kZSBwYXRocyBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwgZXZlbiB3aXRoIHNvZnR3YXJlIGVtdWxhdGlvbiwgdGhlbiBpdCBpc24ndCB3b3J0aCBmdXp6aW5nLiBJIG5lZWQgdG8gbWFrZSBzdXJlIHRoaXMgaXNuJ3QgdGhlIGNhc2UuIEFuZCBJUFZTICppcyogcmVhY2hhYmxlLCBzbyB0aGF0J3MgZ29vZC4gQW5kIHRoZXNlIGFyZSBmdW5jdGlvbmFsIGNoYW5nZXMsIHNvIHRoaXMgKmlzKiB3b3J0aCBmdXp6aW5nLlxuXG5Mb29raW5nIG1vcmUgY2xvc2VseSBhdCB0aGUgcGF0Y2ggaXRzZWxmICh3aGljaCBpcyByZWFsbHkganVzdCBhIHNpbXBsZSBjaGFuZ2UpLCBpdCBhcHBlYXJzIHRvIGludm9sdmUgY2hhbmdlcyB0byB3aGVyZSBkZWxheWVkIHdvcmsgaXMgcXVldWVkLiBTcGVjaWZpY2FsbHksIGl0J3MgbW92aW5nIGZyb20gYHN5c3RlbV9sb25nX3dxYCB0byBgc3lzdGVtX2RmbF9sb25nX3dxYCBpbiB0aHJlZSBwbGFjZXM6IHRoZSBgZGVmZW5zZV93b3JrX2hhbmRsZXJgLCB0aGUgYGVzdF9yZWxvYWRfd29ya19oYW5kbGVyYCwgYW5kIHRoZSBgaXBfdnNfZXN0X3JlbG9hZF9zdGFydGAgZnVuY3Rpb25zLlxuXG5PcmlnaW5hbGx5IEkgd2FzIGFsc28gZ29pbmcgdG8gaW5jbHVkZSBgaXBfdnNfY29udHJvbF9uZXRfaW5pdF9zeXNjdGxgLCBidXQgdGhhdCdzIGFuIGluaXRpYWxpemF0aW9uIGZ1bmN0aW9uLiBJdCdzIG5vdCBhIGdvb2QgZnVuY3Rpb24gdG8gZnV6eiwgYmVjYXVzZSBpdCdzIG5vdCBhIGZ1bmN0aW9uIHRoYXQgZ2V0cyBjYWxsZWQgcmVwZWF0ZWRseSwgaXQncyBqdXN0IGNhbGxlZCBhdCBpbml0aWFsaXphdGlvbi5cblxuQWxyaWdodCwgd2l0aCB0aGF0IGluIG1pbmQsIEkgYW0gY29uZmlkZW50IHRoYXQgdGhlc2UgY2hhbmdlcyBhcmUgaW5kZWVkIHdvcnRoIGZ1enppbmcuIFRoZXJlZm9yZTogYFdvcnRoRnV6emluZz10cnVlYC4gTXkgYEZvY3VzU3ltYm9sc2Agd2lsbCBiZTogYGRlZmVuc2Vfd29ya19oYW5kbGVyYCwgYGVzdF9yZWxvYWRfd29ya19oYW5kbGVyYCwgYW5kIGBpcF92c19lc3RfcmVsb2FkX3N0YXJ0YC4gYEVuYWJsZUNvbmZpZ3NgIHJlbWFpbnMgYXQ6IGBJUF9WU2AuIEknbGwgZ28gYWhlYWQgYW5kIHNldCB0aGVzZSByZXN1bHRzLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxNzQ5MSwiT3V0cHV0VG9rZW5zIjoxMjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMDE0LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMDJUMTQ6NTQ6MTEuMjMyOTU3OTQ3WiIsIlNlcSI6MjIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTM4OTUxNTE0LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJJUF9WU1wiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImRlZmVuc2Vfd29ya19oYW5kbGVyXCIsXG4gICAgXCJlc3RfcmVsb2FkX3dvcmtfaGFuZGxlclwiLFxuICAgIFwiaXBfdnNfZXN0X3JlbG9hZF9zdGFydFwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGNoYW5nZXMgdGhlIHdvcmtxdWV1ZSB1c2VkIGZvciBJUFZTIGRlZmVuc2UgYW5kIGVzdGltYXRpb24gcmVsb2FkIHdvcmsgZnJvbSBzeXN0ZW1fbG9uZ193cSB0byBzeXN0ZW1fZGZsX2xvbmdfd3EuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgY29yZSBJUFZTIGxvZ2ljIHRoYXQgYWx0ZXJzIGV4ZWN1dGlvbiBmbG93LCBzbyBpdCBzaG91bGQgYmUgZnV6emVkLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIklQX1ZTXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiZGVmZW5zZV93b3JrX2hhbmRsZXJcIixcbiAgICBcImVzdF9yZWxvYWRfd29ya19oYW5kbGVyXCIsXG4gICAgXCJpcF92c19lc3RfcmVsb2FkX3N0YXJ0XCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggY2hhbmdlcyB0aGUgd29ya3F1ZXVlIHVzZWQgZm9yIElQVlMgZGVmZW5zZSBhbmQgZXN0aW1hdGlvbiByZWxvYWQgd29yayBmcm9tIHN5c3RlbV9sb25nX3dxIHRvIHN5c3RlbV9kZmxfbG9uZ193cS4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBjb3JlIElQVlMgbG9naWMgdGhhdCBhbHRlcnMgZXhlY3V0aW9uIGZsb3csIHNvIGl0IHNob3VsZCBiZSBmdXp6ZWQuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/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-workflowxb94v[1] Phase: Succeeded StartedAt: 2026-07-02 14:54:34 +0000 UTC FinishedAt: 2026-07-02 14:54:34 +0000 UTC Input: nil Output: nil --------- Name: series-workflowxb94v[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-07-02 14:54:34 +0000 UTC FinishedAt: 2026-07-02 14:54:34 +0000 UTC Input: nil Output: nil --------- Name: series-workflowxb94v[2] Phase: Succeeded StartedAt: 2026-07-02 14:54:34 +0000 UTC FinishedAt: 2026-07-02 15:51:57 +0000 UTC Input: nil Output: nil --------- Name: series-workflowxb94v[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f456c1922c49e6be5ce407ddb74a6e61af5b65cf","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS"],"series_id":"","tree_name":"nf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf-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":["defense_work_handler","est_reload_work_handler","ip_vs_est_reload_start"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f456c1922c49e6be5ce407ddb74a6e61af5b65cf","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS"],"series_id":"3a50b708-b08a-4149-8c61-00786c8807bb","tree_name":"nf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf-next.git"},retest:null,track:KASAN) Phase: Succeeded StartedAt: 2026-07-02 14:54:34 +0000 UTC FinishedAt: 2026-07-02 15:51:57 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"f456c1922c49e6be5ce407ddb74a6e61af5b65cf","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS"],"series_id":"","tree_name":"nf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf-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":["defense_work_handler","est_reload_work_handler","ip_vs_est_reload_start"],"skip_cover_check":false},"patched":{"arch":"amd64","commit_hash":"f456c1922c49e6be5ce407ddb74a6e61af5b65cf","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS"],"series_id":"3a50b708-b08a-4149-8c61-00786c8807bb","tree_name":"nf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf-next.git"},"retest":null,"track":"KASAN"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: nil --------- Name: series-workflowxb94v[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f456c1922c49e6be5ce407ddb74a6e61af5b65cf","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS"],"series_id":"","tree_name":"nf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf-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":["defense_work_handler","est_reload_work_handler","ip_vs_est_reload_start"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f456c1922c49e6be5ce407ddb74a6e61af5b65cf","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS"],"series_id":"3a50b708-b08a-4149-8c61-00786c8807bb","tree_name":"nf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf-next.git"},retest:null,track:KASAN)[0] Phase: Succeeded StartedAt: 2026-07-02 14:54:34 +0000 UTC FinishedAt: 2026-07-02 14:54:57 +0000 UTC Input: nil Output: nil --------- Name: series-workflowxb94v[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f456c1922c49e6be5ce407ddb74a6e61af5b65cf","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS"],"series_id":"","tree_name":"nf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf-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":["defense_work_handler","est_reload_work_handler","ip_vs_est_reload_start"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f456c1922c49e6be5ce407ddb74a6e61af5b65cf","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS"],"series_id":"3a50b708-b08a-4149-8c61-00786c8807bb","tree_name":"nf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf-next.git"},retest:null,track:KASAN)[0].save-base-req Phase: Succeeded StartedAt: 2026-07-02 14:54:34 +0000 UTC FinishedAt: 2026-07-02 14:54:52 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"f456c1922c49e6be5ce407ddb74a6e61af5b65cf","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS"],"series_id":"","tree_name":"nf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf-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-workflowxb94v/series-workflowxb94v-convert-artifact-3146524207/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowxb94v[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f456c1922c49e6be5ce407ddb74a6e61af5b65cf","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS"],"series_id":"","tree_name":"nf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf-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":["defense_work_handler","est_reload_work_handler","ip_vs_est_reload_start"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f456c1922c49e6be5ce407ddb74a6e61af5b65cf","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS"],"series_id":"3a50b708-b08a-4149-8c61-00786c8807bb","tree_name":"nf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf-next.git"},retest:null,track:KASAN)[1] Phase: Succeeded StartedAt: 2026-07-02 14:54:57 +0000 UTC FinishedAt: 2026-07-02 15:18:15 +0000 UTC Input: nil Output: nil --------- Name: series-workflowxb94v[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f456c1922c49e6be5ce407ddb74a6e61af5b65cf","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS"],"series_id":"","tree_name":"nf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf-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":["defense_work_handler","est_reload_work_handler","ip_vs_est_reload_start"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f456c1922c49e6be5ce407ddb74a6e61af5b65cf","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS"],"series_id":"3a50b708-b08a-4149-8c61-00786c8807bb","tree_name":"nf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf-next.git"},retest:null,track:KASAN)[1].base-build Phase: Succeeded StartedAt: 2026-07-02 14:54:57 +0000 UTC FinishedAt: 2026-07-02 15:18:15 +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:*e87947ef-31bb-4eb3-bdb5-a4f5b31a62db,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-workflowxb94v/series-workflowxb94v-convert-artifact-3146524207/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": "48a4b8a4-d760-41c5-9988-f3e25b9ad5ee", "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-workflowxb94v/series-workflowxb94v-build-action-1572449269/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowxb94v[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f456c1922c49e6be5ce407ddb74a6e61af5b65cf","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS"],"series_id":"","tree_name":"nf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf-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":["defense_work_handler","est_reload_work_handler","ip_vs_est_reload_start"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f456c1922c49e6be5ce407ddb74a6e61af5b65cf","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS"],"series_id":"3a50b708-b08a-4149-8c61-00786c8807bb","tree_name":"nf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf-next.git"},retest:null,track:KASAN)[1].base-build(0) Phase: Succeeded StartedAt: 2026-07-02 14:54:57 +0000 UTC FinishedAt: 2026-07-02 15:18:05 +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:*e87947ef-31bb-4eb3-bdb5-a4f5b31a62db,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-workflowxb94v/series-workflowxb94v-convert-artifact-3146524207/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": "48a4b8a4-d760-41c5-9988-f3e25b9ad5ee", "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-workflowxb94v/series-workflowxb94v-build-action-1572449269/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowxb94v[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f456c1922c49e6be5ce407ddb74a6e61af5b65cf","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS"],"series_id":"","tree_name":"nf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf-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":["defense_work_handler","est_reload_work_handler","ip_vs_est_reload_start"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f456c1922c49e6be5ce407ddb74a6e61af5b65cf","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS"],"series_id":"3a50b708-b08a-4149-8c61-00786c8807bb","tree_name":"nf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf-next.git"},retest:null,track:KASAN)[2] Phase: Succeeded StartedAt: 2026-07-02 15:18:15 +0000 UTC FinishedAt: 2026-07-02 15:18:15 +0000 UTC Input: nil Output: nil --------- Name: series-workflowxb94v[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f456c1922c49e6be5ce407ddb74a6e61af5b65cf","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS"],"series_id":"","tree_name":"nf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf-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":["defense_work_handler","est_reload_work_handler","ip_vs_est_reload_start"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f456c1922c49e6be5ce407ddb74a6e61af5b65cf","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS"],"series_id":"3a50b708-b08a-4149-8c61-00786c8807bb","tree_name":"nf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf-next.git"},retest:null,track:KASAN)[2].abort-if-base-build-failed Phase: Skipped StartedAt: 2026-07-02 15:18:15 +0000 UTC FinishedAt: 2026-07-02 15:18:15 +0000 UTC Input: nil Output: nil --------- Name: series-workflowxb94v[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f456c1922c49e6be5ce407ddb74a6e61af5b65cf","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS"],"series_id":"","tree_name":"nf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf-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":["defense_work_handler","est_reload_work_handler","ip_vs_est_reload_start"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f456c1922c49e6be5ce407ddb74a6e61af5b65cf","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS"],"series_id":"3a50b708-b08a-4149-8c61-00786c8807bb","tree_name":"nf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf-next.git"},retest:null,track:KASAN)[3] Phase: Succeeded StartedAt: 2026-07-02 15:18:15 +0000 UTC FinishedAt: 2026-07-02 15:18:36 +0000 UTC Input: nil Output: nil --------- Name: series-workflowxb94v[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f456c1922c49e6be5ce407ddb74a6e61af5b65cf","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS"],"series_id":"","tree_name":"nf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf-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":["defense_work_handler","est_reload_work_handler","ip_vs_est_reload_start"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f456c1922c49e6be5ce407ddb74a6e61af5b65cf","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS"],"series_id":"3a50b708-b08a-4149-8c61-00786c8807bb","tree_name":"nf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf-next.git"},retest:null,track:KASAN)[3].save-patched-req Phase: Succeeded StartedAt: 2026-07-02 15:18:15 +0000 UTC FinishedAt: 2026-07-02 15:18:24 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"f456c1922c49e6be5ce407ddb74a6e61af5b65cf","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS"],"series_id":"3a50b708-b08a-4149-8c61-00786c8807bb","tree_name":"nf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf-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-workflowxb94v/series-workflowxb94v-convert-artifact-3783752574/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowxb94v[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f456c1922c49e6be5ce407ddb74a6e61af5b65cf","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS"],"series_id":"","tree_name":"nf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf-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":["defense_work_handler","est_reload_work_handler","ip_vs_est_reload_start"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f456c1922c49e6be5ce407ddb74a6e61af5b65cf","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS"],"series_id":"3a50b708-b08a-4149-8c61-00786c8807bb","tree_name":"nf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf-next.git"},retest:null,track:KASAN)[4] Phase: Succeeded StartedAt: 2026-07-02 15:18:36 +0000 UTC FinishedAt: 2026-07-02 15:20:51 +0000 UTC Input: nil Output: nil --------- Name: series-workflowxb94v[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f456c1922c49e6be5ce407ddb74a6e61af5b65cf","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS"],"series_id":"","tree_name":"nf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf-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":["defense_work_handler","est_reload_work_handler","ip_vs_est_reload_start"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f456c1922c49e6be5ce407ddb74a6e61af5b65cf","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS"],"series_id":"3a50b708-b08a-4149-8c61-00786c8807bb","tree_name":"nf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf-next.git"},retest:null,track:KASAN)[4].boot-test-base Phase: Succeeded StartedAt: 2026-07-02 15:18:36 +0000 UTC FinishedAt: 2026-07-02 15:20:41 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*48a4b8a4-d760-41c5-9988-f3e25b9ad5ee,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-workflowxb94v/series-workflowxb94v-build-action-1572449269/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-workflowxb94v[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f456c1922c49e6be5ce407ddb74a6e61af5b65cf","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS"],"series_id":"","tree_name":"nf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf-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":["defense_work_handler","est_reload_work_handler","ip_vs_est_reload_start"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f456c1922c49e6be5ce407ddb74a6e61af5b65cf","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS"],"series_id":"3a50b708-b08a-4149-8c61-00786c8807bb","tree_name":"nf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf-next.git"},retest:null,track:KASAN)[5] Phase: Succeeded StartedAt: 2026-07-02 15:20:51 +0000 UTC FinishedAt: 2026-07-02 15:20:51 +0000 UTC Input: nil Output: nil --------- Name: series-workflowxb94v[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f456c1922c49e6be5ce407ddb74a6e61af5b65cf","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS"],"series_id":"","tree_name":"nf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf-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":["defense_work_handler","est_reload_work_handler","ip_vs_est_reload_start"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f456c1922c49e6be5ce407ddb74a6e61af5b65cf","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS"],"series_id":"3a50b708-b08a-4149-8c61-00786c8807bb","tree_name":"nf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf-next.git"},retest:null,track:KASAN)[5].abort-if-base-boot-failed Phase: Skipped StartedAt: 2026-07-02 15:20:51 +0000 UTC FinishedAt: 2026-07-02 15:20:51 +0000 UTC Input: nil Output: nil --------- Name: series-workflowxb94v[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f456c1922c49e6be5ce407ddb74a6e61af5b65cf","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS"],"series_id":"","tree_name":"nf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf-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":["defense_work_handler","est_reload_work_handler","ip_vs_est_reload_start"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f456c1922c49e6be5ce407ddb74a6e61af5b65cf","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS"],"series_id":"3a50b708-b08a-4149-8c61-00786c8807bb","tree_name":"nf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf-next.git"},retest:null,track:KASAN)[6] Phase: Succeeded StartedAt: 2026-07-02 15:20:51 +0000 UTC FinishedAt: 2026-07-02 15:46:42 +0000 UTC Input: nil Output: nil --------- Name: series-workflowxb94v[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f456c1922c49e6be5ce407ddb74a6e61af5b65cf","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS"],"series_id":"","tree_name":"nf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf-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":["defense_work_handler","est_reload_work_handler","ip_vs_est_reload_start"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f456c1922c49e6be5ce407ddb74a6e61af5b65cf","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS"],"series_id":"3a50b708-b08a-4149-8c61-00786c8807bb","tree_name":"nf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf-next.git"},retest:null,track:KASAN)[6].patched-build Phase: Succeeded StartedAt: 2026-07-02 15:20:51 +0000 UTC FinishedAt: 2026-07-02 15:46:42 +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:*e87947ef-31bb-4eb3-bdb5-a4f5b31a62db,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-workflowxb94v/series-workflowxb94v-convert-artifact-3783752574/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": "cb9a27c1-c5cb-4acc-8f65-2755e460204b", "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-workflowxb94v/series-workflowxb94v-build-action-2583578578/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowxb94v[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f456c1922c49e6be5ce407ddb74a6e61af5b65cf","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS"],"series_id":"","tree_name":"nf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf-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":["defense_work_handler","est_reload_work_handler","ip_vs_est_reload_start"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f456c1922c49e6be5ce407ddb74a6e61af5b65cf","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS"],"series_id":"3a50b708-b08a-4149-8c61-00786c8807bb","tree_name":"nf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf-next.git"},retest:null,track:KASAN)[6].patched-build(0) Phase: Succeeded StartedAt: 2026-07-02 15:20:51 +0000 UTC FinishedAt: 2026-07-02 15:46:32 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:findings,Default:nil,Value:*true,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Build Patched,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:smoke-build,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:session-id,Default:nil,Value:*e87947ef-31bb-4eb3-bdb5-a4f5b31a62db,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-workflowxb94v/series-workflowxb94v-convert-artifact-3783752574/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": "cb9a27c1-c5cb-4acc-8f65-2755e460204b", "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-workflowxb94v/series-workflowxb94v-build-action-2583578578/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowxb94v[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f456c1922c49e6be5ce407ddb74a6e61af5b65cf","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS"],"series_id":"","tree_name":"nf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf-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":["defense_work_handler","est_reload_work_handler","ip_vs_est_reload_start"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f456c1922c49e6be5ce407ddb74a6e61af5b65cf","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS"],"series_id":"3a50b708-b08a-4149-8c61-00786c8807bb","tree_name":"nf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf-next.git"},retest:null,track:KASAN)[7] Phase: Succeeded StartedAt: 2026-07-02 15:46:42 +0000 UTC FinishedAt: 2026-07-02 15:46:42 +0000 UTC Input: nil Output: nil --------- Name: series-workflowxb94v[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f456c1922c49e6be5ce407ddb74a6e61af5b65cf","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS"],"series_id":"","tree_name":"nf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf-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":["defense_work_handler","est_reload_work_handler","ip_vs_est_reload_start"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f456c1922c49e6be5ce407ddb74a6e61af5b65cf","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS"],"series_id":"3a50b708-b08a-4149-8c61-00786c8807bb","tree_name":"nf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf-next.git"},retest:null,track:KASAN)[7].abort-if-patched-build-failed Phase: Skipped StartedAt: 2026-07-02 15:46:42 +0000 UTC FinishedAt: 2026-07-02 15:46:42 +0000 UTC Input: nil Output: nil --------- Name: series-workflowxb94v[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f456c1922c49e6be5ce407ddb74a6e61af5b65cf","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS"],"series_id":"","tree_name":"nf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf-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":["defense_work_handler","est_reload_work_handler","ip_vs_est_reload_start"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f456c1922c49e6be5ce407ddb74a6e61af5b65cf","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS"],"series_id":"3a50b708-b08a-4149-8c61-00786c8807bb","tree_name":"nf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf-next.git"},retest:null,track:KASAN)[8] Phase: Succeeded StartedAt: 2026-07-02 15:46:42 +0000 UTC FinishedAt: 2026-07-02 15:48:57 +0000 UTC Input: nil Output: nil --------- Name: series-workflowxb94v[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f456c1922c49e6be5ce407ddb74a6e61af5b65cf","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS"],"series_id":"","tree_name":"nf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf-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":["defense_work_handler","est_reload_work_handler","ip_vs_est_reload_start"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f456c1922c49e6be5ce407ddb74a6e61af5b65cf","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS"],"series_id":"3a50b708-b08a-4149-8c61-00786c8807bb","tree_name":"nf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf-next.git"},retest:null,track:KASAN)[8].boot-test-patched Phase: Succeeded StartedAt: 2026-07-02 15:46:42 +0000 UTC FinishedAt: 2026-07-02 15:48:47 +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:*cb9a27c1-c5cb-4acc-8f65-2755e460204b,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-workflowxb94v/series-workflowxb94v-build-action-2583578578/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-workflowxb94v[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f456c1922c49e6be5ce407ddb74a6e61af5b65cf","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS"],"series_id":"","tree_name":"nf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf-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":["defense_work_handler","est_reload_work_handler","ip_vs_est_reload_start"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f456c1922c49e6be5ce407ddb74a6e61af5b65cf","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS"],"series_id":"3a50b708-b08a-4149-8c61-00786c8807bb","tree_name":"nf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf-next.git"},retest:null,track:KASAN)[10] Phase: Succeeded StartedAt: 2026-07-02 15:48:57 +0000 UTC FinishedAt: 2026-07-02 15:51:57 +0000 UTC Input: nil Output: nil --------- Name: series-workflowxb94v[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f456c1922c49e6be5ce407ddb74a6e61af5b65cf","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS"],"series_id":"","tree_name":"nf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf-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":["defense_work_handler","est_reload_work_handler","ip_vs_est_reload_start"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f456c1922c49e6be5ce407ddb74a6e61af5b65cf","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS"],"series_id":"3a50b708-b08a-4149-8c61-00786c8807bb","tree_name":"nf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf-next.git"},retest:null,track:KASAN)[10].run-fuzz Phase: Succeeded StartedAt: 2026-07-02 15:48:57 +0000 UTC FinishedAt: 2026-07-02 15:51:57 +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":["defense_work_handler","est_reload_work_handler","ip_vs_est_reload_start"],"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:*48a4b8a4-d760-41c5-9988-f3e25b9ad5ee,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*cb9a27c1-c5cb-4acc-8f65-2755e460204b,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-workflowxb94v/series-workflowxb94v-build-action-1572449269/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-workflowxb94v/series-workflowxb94v-build-action-2583578578/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflowxb94v[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f456c1922c49e6be5ce407ddb74a6e61af5b65cf","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS"],"series_id":"","tree_name":"nf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf-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":["defense_work_handler","est_reload_work_handler","ip_vs_est_reload_start"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f456c1922c49e6be5ce407ddb74a6e61af5b65cf","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS"],"series_id":"3a50b708-b08a-4149-8c61-00786c8807bb","tree_name":"nf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf-next.git"},retest:null,track:KASAN)[10].run-fuzz[0] Phase: Succeeded StartedAt: 2026-07-02 15:48:57 +0000 UTC FinishedAt: 2026-07-02 15:49:07 +0000 UTC Input: nil Output: nil --------- Name: series-workflowxb94v[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f456c1922c49e6be5ce407ddb74a6e61af5b65cf","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS"],"series_id":"","tree_name":"nf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf-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":["defense_work_handler","est_reload_work_handler","ip_vs_est_reload_start"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f456c1922c49e6be5ce407ddb74a6e61af5b65cf","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS"],"series_id":"3a50b708-b08a-4149-8c61-00786c8807bb","tree_name":"nf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf-next.git"},retest:null,track:KASAN)[10].run-fuzz[0].save-fuzz-config Phase: Succeeded StartedAt: 2026-07-02 15:48:57 +0000 UTC FinishedAt: 2026-07-02 15:49:04 +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":["defense_work_handler","est_reload_work_handler","ip_vs_est_reload_start"],"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-workflowxb94v/series-workflowxb94v-convert-artifact-1409425283/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowxb94v[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f456c1922c49e6be5ce407ddb74a6e61af5b65cf","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS"],"series_id":"","tree_name":"nf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf-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":["defense_work_handler","est_reload_work_handler","ip_vs_est_reload_start"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f456c1922c49e6be5ce407ddb74a6e61af5b65cf","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS"],"series_id":"3a50b708-b08a-4149-8c61-00786c8807bb","tree_name":"nf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf-next.git"},retest:null,track:KASAN)[10].run-retest Phase: Skipped StartedAt: 2026-07-02 15:48:57 +0000 UTC FinishedAt: 2026-07-02 15:48:57 +0000 UTC Input: nil Output: nil --------- Name: series-workflowxb94v[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f456c1922c49e6be5ce407ddb74a6e61af5b65cf","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS"],"series_id":"","tree_name":"nf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf-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":["defense_work_handler","est_reload_work_handler","ip_vs_est_reload_start"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f456c1922c49e6be5ce407ddb74a6e61af5b65cf","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS"],"series_id":"3a50b708-b08a-4149-8c61-00786c8807bb","tree_name":"nf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf-next.git"},retest:null,track:KASAN)[9] Phase: Succeeded StartedAt: 2026-07-02 15:48:57 +0000 UTC FinishedAt: 2026-07-02 15:48:57 +0000 UTC Input: nil Output: nil --------- Name: series-workflowxb94v[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f456c1922c49e6be5ce407ddb74a6e61af5b65cf","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS"],"series_id":"","tree_name":"nf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf-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":["defense_work_handler","est_reload_work_handler","ip_vs_est_reload_start"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f456c1922c49e6be5ce407ddb74a6e61af5b65cf","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS"],"series_id":"3a50b708-b08a-4149-8c61-00786c8807bb","tree_name":"nf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf-next.git"},retest:null,track:KASAN)[9].abort-if-patched-boot-failed Phase: Skipped StartedAt: 2026-07-02 15:48:57 +0000 UTC FinishedAt: 2026-07-02 15:48:57 +0000 UTC Input: nil Output: nil --------- Name: series-workflowxb94v[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f456c1922c49e6be5ce407ddb74a6e61af5b65cf","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS"],"series_id":"","tree_name":"nf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf-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":["defense_work_handler","est_reload_work_handler","ip_vs_est_reload_start"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f456c1922c49e6be5ce407ddb74a6e61af5b65cf","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS"],"series_id":"3a50b708-b08a-4149-8c61-00786c8807bb","tree_name":"nf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf-next.git"},retest:null,track:KASAN)[10].run-fuzz[1] Phase: Succeeded StartedAt: 2026-07-02 15:49:07 +0000 UTC FinishedAt: 2026-07-02 15:51:57 +0000 UTC Input: nil Output: nil --------- Name: series-workflowxb94v[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f456c1922c49e6be5ce407ddb74a6e61af5b65cf","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS"],"series_id":"","tree_name":"nf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf-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":["defense_work_handler","est_reload_work_handler","ip_vs_est_reload_start"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f456c1922c49e6be5ce407ddb74a6e61af5b65cf","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS"],"series_id":"3a50b708-b08a-4149-8c61-00786c8807bb","tree_name":"nf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf-next.git"},retest:null,track:KASAN)[10].run-fuzz[1].fuzz Phase: Succeeded StartedAt: 2026-07-02 15:49:07 +0000 UTC FinishedAt: 2026-07-02 15:51:37 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*48a4b8a4-d760-41c5-9988-f3e25b9ad5ee,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*cb9a27c1-c5cb-4acc-8f65-2755e460204b,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-workflowxb94v/series-workflowxb94v-build-action-1572449269/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-workflowxb94v/series-workflowxb94v-build-action-2583578578/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-workflowxb94v/series-workflowxb94v-convert-artifact-1409425283/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,}