Name: series-workflowvnr7z Phase: Succeeded StartedAt: 2026-07-26 22:19:16 +0000 UTC FinishedAt: 2026-07-27 03:14:15 +0000 UTC Input: nil Output: nil --------- Name: series-workflowvnr7z[0] Phase: Succeeded StartedAt: 2026-07-26 22:19:16 +0000 UTC FinishedAt: 2026-07-26 22:41:14 +0000 UTC Input: nil Output: nil --------- Name: series-workflowvnr7z[0].run-triage Phase: Succeeded StartedAt: 2026-07-26 22:19:16 +0000 UTC FinishedAt: 2026-07-26 22:41:14 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "net", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git", "commit_hash": "53658c6f3682967a5e76ed4bc7462c4bdcddaec3", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "BRIDGE", "BRIDGE_MRP" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "net", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git", "commit_hash": "53658c6f3682967a5e76ed4bc7462c4bdcddaec3", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "BRIDGE", "BRIDGE_MRP" ], "series_id": "d9dd3ef0-7ee2-4289-bab3-f9268a6de3d0" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "br_mrp_start_test", "br_mrp_parse" ], "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+CgkJCTx0ZD4yMDI2LzA3LzI2IDIyOjQwPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0JSSURHRSYjMzQ7LAogICAgJiMzNDtCUklER0VfTVJQJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7YnJfbXJwX3N0YXJ0X3Rlc3QmIzM0OywKICAgICYjMzQ7YnJfbXJwX3BhcnNlJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGZpeGVzIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IGluIGBicl9tcnBfYWxsb2NfdGVzdF9za2JgIHdoaWNoIGlzIGNhbGxlZCBieSB0aGUgYGJyX21ycF90ZXN0X3dvcmtfZXhwaXJlZGAgd29ya2VyLiBUaGUgd29ya2VyIGlzIHNjaGVkdWxlZCBieSBgYnJfbXJwX3N0YXJ0X3Rlc3RgIHdoaWNoIGlzIHJlYWNoYWJsZSB2aWEgbmV0bGluayBjb25maWd1cmF0aW9uIChgYnJfbXJwX3BhcnNlYCkuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjYgMjI6NDA8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCBlMmU5MWJlNDE5ZjEyMTdkYTlkZGRlYmY1MWE2NDZiZDQ3Mzc2YTUwXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFN1biBKdWwgMjYgMjI6NDA6MDYgMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvbmV0L2JyaWRnZS9icl9tcnAuYyBiL25ldC9icmlkZ2UvYnJfbXJwLmNcbmluZGV4IDNmNzEyNmE3ZDcyMDAzLi5hNTU0OGY0NzU2MDRjNSAxMDA2NDRcbi0tLSBhL25ldC9icmlkZ2UvYnJfbXJwLmNcbiYjNDM7JiM0MzsmIzQzOyBiL25ldC9icmlkZ2UvYnJfbXJwLmNcbkBAIC0yMjYsOSAmIzQzOzIyNiwxMCBAQCBzdGF0aWMgc3RydWN0IHNrX2J1ZmYgKmJyX21ycF9hbGxvY190ZXN0X3NrYihzdHJ1Y3QgYnJfbXJwICptcnAsXG4gXG4gXHRcdHN1Yl90bHYgPSBza2JfcHV0KHNrYiwgc2l6ZW9mKCpzdWJfdGx2KSk7XG4gXHRcdHN1Yl90bHYtXHUwMDNldHlwZSA9IEJSX01SUF9TVUJfVExWX0hFQURFUl9URVNUX0FVVE9fTUdSO1xuJiM0MztcdFx0c3ViX3Rsdi1cdTAwM2VsZW5ndGggPSAweDA7XG4gXG4gXHRcdC8qIDMyIGJpdCBhbGxpZ21lbnQgc2hhbGwgYmUgZW5zdXJlZCB0aGVyZWZvcmUgYWRkIDIgYnl0ZXMgKi9cbi1cdFx0c2tiX3B1dChza2IsIE1SUF9PUFRfUEFERElORyk7XG4mIzQzO1x0XHRza2JfcHV0X3plcm8oc2tiLCBNUlBfT1BUX1BBRERJTkcpO1xuIFx0fVxuIFxuIFx0YnJfbXJwX3NrYl90bHYoc2tiLCBCUl9NUlBfVExWX0hFQURFUl9FTkQsIDB4MCk7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjYgMjI6NDA8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+YmVzdC1leHBlbnNpdmU8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0JSSURHRSYjMzQ7LAogICAgJiMzNDtCUklER0VfTVJQJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7YnJfbXJwX3N0YXJ0X3Rlc3QmIzM0OywKICAgICYjMzQ7YnJfbXJwX3BhcnNlJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGZpeGVzIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IGluIGBicl9tcnBfYWxsb2NfdGVzdF9za2JgIHdoaWNoIGlzIGNhbGxlZCBieSB0aGUgYGJyX21ycF90ZXN0X3dvcmtfZXhwaXJlZGAgd29ya2VyLiBUaGUgd29ya2VyIGlzIHNjaGVkdWxlZCBieSBgYnJfbXJwX3N0YXJ0X3Rlc3RgIHdoaWNoIGlzIHJlYWNoYWJsZSB2aWEgbmV0bGluayBjb25maWd1cmF0aW9uIChgYnJfbXJwX3BhcnNlYCkuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZQppZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5CnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuCgpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOgotIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuCi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuCi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LgotIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwKICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuCi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsCiAgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuCi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSkKICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuCgpJZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoCnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLgoKV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086CjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuCiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLgogICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnMKICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuCjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLgogICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCiAgIEFsc28gY2hlY2sgJiMzNDtkZXBlbmRzIG9uJiMzNDsgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzCiAgIG5lZWRlZCBmb3IgS2J1aWxkIHRvIGNvbXBpbGUgdGhlIGNvZGUgc3RhdGljYWxseSBpbnRvIHZtbGludXguIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncwogICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCBlMmU5MWJlNDE5ZjEyMTdkYTlkZGRlYmY1MWE2NDZiZDQ3Mzc2YTUwCkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIFN1biBKdWwgMjYgMjI6NDA6MDYgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9uZXQvYnJpZGdlL2JyX21ycC5jIGIvbmV0L2JyaWRnZS9icl9tcnAuYwppbmRleCAzZjcxMjZhN2Q3MjAwMy4uYTU1NDhmNDc1NjA0YzUgMTAwNjQ0Ci0tLSBhL25ldC9icmlkZ2UvYnJfbXJwLmMKJiM0MzsmIzQzOyYjNDM7IGIvbmV0L2JyaWRnZS9icl9tcnAuYwpAQCAtMjI2LDkgJiM0MzsyMjYsMTAgQEAgc3RhdGljIHN0cnVjdCBza19idWZmICpicl9tcnBfYWxsb2NfdGVzdF9za2Ioc3RydWN0IGJyX21ycCAqbXJwLAogCiAJCXN1Yl90bHYgPSBza2JfcHV0KHNrYiwgc2l6ZW9mKCpzdWJfdGx2KSk7CiAJCXN1Yl90bHYtJmd0O3R5cGUgPSBCUl9NUlBfU1VCX1RMVl9IRUFERVJfVEVTVF9BVVRPX01HUjsKJiM0MzsJCXN1Yl90bHYtJmd0O2xlbmd0aCA9IDB4MDsKIAogCQkvKiAzMiBiaXQgYWxsaWdtZW50IHNoYWxsIGJlIGVuc3VyZWQgdGhlcmVmb3JlIGFkZCAyIGJ5dGVzICovCi0JCXNrYl9wdXQoc2tiLCBNUlBfT1BUX1BBRERJTkcpOwomIzQzOwkJc2tiX3B1dF96ZXJvKHNrYiwgTVJQX09QVF9QQURESU5HKTsKIAl9CiAKIAlicl9tcnBfc2tiX3Rsdihza2IsIEJSX01SUF9UTFZfSEVBREVSX0VORCwgMHgwKTsKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjYgMjI6NDA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjEzNwoJCQkJCQkJb3V0cHV0OiA0MQoJCQkJCQkJdGhvdWdodHM6IDIzMgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgYSBCcmlkZ2UgTVJQIFBhdGNoKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGZvciBgbmV0L2JyaWRnZS9icl9tcnAuY2AuIEl0IHNlZW1zIGxpa2UgYSByZWxhdGl2ZWx5IHN0cmFpZ2h0Zm9yd2FyZCBtb2RpZmljYXRpb24gdG8gYGJyX21ycF9hbGxvY190ZXN0X3NrYmAuIFRoZSBrZXkgY2hhbmdlIGhlcmUgaW52b2x2ZXMgdGhlIGFsbG9jYXRpb24gb2YgYSBzdWItVExWIHdpdGhpbiBhbiBTS0IuIFNwZWNpZmljYWxseSwgaXQmIzM5O3MgaW5pdGlhbGl6aW5nIGBzdWJfdGx2LSZndDtsZW5ndGhgIHRvIHplcm8sIHdoaWNoIGlzIGdvb2QgcHJhY3RpY2UuIFdl4oCZcmUgYWxzbyBub3cgdXNpbmcgYHNrYl9wdXRfemVyb2AgaW5zdGVhZCBvZiBqdXN0IGBza2JfcHV0YCB0byBlbnN1cmUgdGhhdCBwYWRkaW5nIGlzIHplcm9lZCBvdXQuIFRoaXMgaXMgYSBzb2xpZCBhcHByb2FjaCB0byBwcmV2ZW50IHBvdGVudGlhbCBzZWN1cml0eSB2dWxuZXJhYmlsaXRpZXMgZHVlIHRvIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IGV4cG9zdXJlLCBlc3BlY2lhbGx5IGluIGEgbmV0d29yayBjb250ZXh0LgoKTm93LCBJIHdhbnQgdG8gY29uZmlybSB0aGUgY29udGV4dCwgYW5kIGhvdyBpbXBvcnRhbnQgdGhlc2UgY2hhbmdlcyBhcmUuIEkgc2hvdWxkIGNoZWNrIGV4YWN0bHkgd2hlcmUgYGJyX21ycF9hbGxvY190ZXN0X3NrYmAgaXMgY2FsbGVkIHdpdGhpbiB0aGUgbGFyZ2VyIE1SUCBmcmFtZXdvcmsgdG8gYXNzZXNzIHRoZSBpbXBhY3Qgb2YgdGhlc2UgYWx0ZXJhdGlvbnMuIFRoaXMgd2lsbCBoZWxwIG1lIHVuZGVyc3RhbmQgaWYgdGhpcyBpcyBhIGNyaXRpY2FsIGNvZGUgcGF0aCBvciBhIGxlc3MgZnJlcXVlbnRseSB1c2VkIGZ1bmN0aW9uLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI2IDIyOjQwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2JyX21ycF9hbGxvY190ZXN0X3NrYiYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9icmlkZ2UvYnJfbXJwLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L2JyaWRnZS9icl9tcnAuYz0xNzE9c3RhdGljIHZvaWQgYnJfbXJwX3NrYl9jb21tb24oc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IGJyX21ycCAqbXJwKVxuLS1cbm5ldC9icmlkZ2UvYnJfbXJwLmMtMTgxLVxubmV0L2JyaWRnZS9icl9tcnAuYzoxODI6c3RhdGljIHN0cnVjdCBza19idWZmICpicl9tcnBfYWxsb2NfdGVzdF9za2Ioc3RydWN0IGJyX21ycCAqbXJwLFxubmV0L2JyaWRnZS9icl9tcnAuYy0xODMtXHRcdFx0XHRcdCAgICAgc3RydWN0IG5ldF9icmlkZ2VfcG9ydCAqcCxcbi0tXG5uZXQvYnJpZGdlL2JyX21ycC5jPTI4MD1zdGF0aWMgdm9pZCBicl9tcnBfdGVzdF93b3JrX2V4cGlyZWQoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxuLS1cbm5ldC9icmlkZ2UvYnJfbXJwLmMtMzEyLVx0XHRpZiAoIW1ycC1cdTAwM2V0ZXN0X21vbml0b3IpIHtcbm5ldC9icmlkZ2UvYnJfbXJwLmM6MzEzOlx0XHRcdHNrYiA9IGJyX21ycF9hbGxvY190ZXN0X3NrYihtcnAsIHAsXG5uZXQvYnJpZGdlL2JyX21ycC5jLTMxNC1cdFx0XHRcdFx0XHQgICAgQlJfTVJQX1BPUlRfUk9MRV9QUklNQVJZKTtcbi0tXG5uZXQvYnJpZGdlL2JyX21ycC5jLTMyOC1cdFx0aWYgKCFtcnAtXHUwMDNldGVzdF9tb25pdG9yKSB7XG5uZXQvYnJpZGdlL2JyX21ycC5jOjMyOTpcdFx0XHRza2IgPSBicl9tcnBfYWxsb2NfdGVzdF9za2IobXJwLCBwLFxubmV0L2JyaWRnZS9icl9tcnAuYy0zMzAtXHRcdFx0XHRcdFx0ICAgIEJSX01SUF9QT1JUX1JPTEVfU0VDT05EQVJZKTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNiAyMjo0MDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyOTk3CgkJCQkJCQlvdXRwdXQ6IDMxCgkJCQkJCQl0aG91Z2h0czogNDAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhvc2UgdGhvdWdodHMsIHN1bW1hcml6ZWQgZnJvbSBteSBwZXJzcGVjdGl2ZSBhcyBhbiBleHBlcnQgaW4gdGhlIGZpZWxkOgoKKipEZWJ1Z2dpbmcgTVJQIEV4cGlyYXRpb24gaW4gdGhlIEJyaWRnZSoqCgpBbHJpZ2h0LCB0aGUgZGVidWdnZXIgcG9pbnRzIG1lIHRvIGBicl9tcnBfdGVzdF93b3JrX2V4cGlyZWRgLiBUaGF0IGZ1bmN0aW9uIGNhbGwgaW1tZWRpYXRlbHkgdHJpZ2dlcnMgc29tZSBxdWVzdGlvbnMg4oCTIHNwZWNpZmljYWxseSwgd2hhdCBjb25maWd1cmF0aW9uIG9wdGlvbnMgYXJlIGluIHBsYXkgdGhhdCBsZWFkIHVzIGhlcmU/IE15IGltbWVkaWF0ZSB0YXNrIGlzIHRvIGlkZW50aWZ5IHRoZSBjcml0aWNhbCBgQ09ORklHYCBzZXR0aW5ncyByZWxldmFudCB0byBgbmV0L2JyaWRnZS9icl9tcnAuY2AuIEkgbmVlZCB0byBmaWd1cmUgb3V0IHdoaWNoIGZlYXR1cmUgZmxhZ3MgYXJlIGVuYWJsZWQgb3IgZGlzYWJsZWQgdGhhdCBjb3VsZCBpbmZsdWVuY2UgdGhlIE1SUCAoTXVsdGlwbGUgUmVnaXN0cmF0aW9uIFByb3RvY29sKSBoYW5kbGluZyBpbiB0aGUgYnJpZGdlLiBLbm93aW5nIHRoZSBjb25maWd1cmF0aW9uIGlzIGtleSB0byB1bmRlcnN0YW5kaW5nIHRoZSBjb250ZXh0IG9mIHRoaXMgZXhwaXJhdGlvbiBjaGVjayBhbmQgdG8gdHJhY2UgdGhlIHBvdGVudGlhbCByb290IGNhdXNlLiBJJiMzOTtsbCBuZWVkIHRvIHVzZSBteSBmYW1pbGlhcml0eSB3aXRoIHRoZSBrZXJuZWwgYnVpbGQgc3lzdGVtIGFuZCBpdHMgY29uZmlndXJhdGlvbiBvcHRpb25zIHRvIHF1aWNrbHkgcGlucG9pbnQgdGhlIHJpZ2h0IHNldHRpbmdzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI2IDIyOjQwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2JyX21ycC5vJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L2JyaWRnZS9NYWtlZmlsZSYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvYnJpZGdlL01ha2VmaWxlPTI3PW9iai0kKENPTkZJR19ORVRGSUxURVIpICYjNDM7PSBuZXRmaWx0ZXIvXG5uZXQvYnJpZGdlL01ha2VmaWxlLTI4LVxubmV0L2JyaWRnZS9NYWtlZmlsZToyOTpicmlkZ2UtJChDT05GSUdfQlJJREdFX01SUClcdCYjNDM7PSBicl9tcnBfc3dpdGNoZGV2Lm8gYnJfbXJwLm8gYnJfbXJwX25ldGxpbmsub1xubmV0L2JyaWRnZS9NYWtlZmlsZS0zMC1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNiAyMjo0MDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzMzM5CgkJCQkJCQlvdXRwdXQ6IDMwCgkJCQkJCQl0aG91Z2h0czogMzAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZToKCioqSW52ZXN0aWdhdGluZyBNUlAgQ29uZmlndXJhdGlvbiBmb3IgQnJpZGdlIFN1cHBvcnQqKgoKQWxyaWdodCwgaXQgc2VlbXMgbGlrZSB3ZSYjMzk7cmUgZGl2aW5nIGludG8gTWVkaWEgUmVkdW5kYW5jeSBQcm90b2NvbCAoTVJQKSBhbmQgaXRzIGludGVncmF0aW9uIHdpdGggdGhlIGJyaWRnaW5nIGluZnJhc3RydWN0dXJlLiBUaGUgY2x1ZSBpcyBgQ09ORklHX0JSSURHRV9NUlBgIC0tIHRoYXQgc3Ryb25nbHkgc3VnZ2VzdHMgTVJQIHN1cHBvcnQgaXMgcmVxdWlyZWQgd2l0aGluIHRoZSBicmlkZ2UgY29uZmlndXJhdGlvbi4gVG8gZ2V0IGEgY2xlYXIgcGljdHVyZSBvZiBob3cgTVJQIGlzIGVuYWJsZWQgb3IgZGlzYWJsZWQsIEkgbmVlZCB0byB1bmRlcnN0YW5kIGl0cyBLY29uZmlnIGRlcGVuZGVuY2llcyBhbmQgb3B0aW9ucy4gTXkgbmV4dCBzdGVwIGlzIG9idmlvdXNseSB0byBnbyBhbmQgaW5zcGVjdCBgbmV0L2JyaWRnZS9LY29uZmlnYC4gSSYjMzk7bGwgYmUgbG9va2luZyBzcGVjaWZpY2FsbHkgZm9yIHRoZSBgQlJJREdFX01SUGAgc3ltYm9sIGFuZCBpdHMgcmVsYXRpb24gdG8gb3RoZXIgYnJpZGdlIGFuZCBuZXR3b3JraW5nIGNvbmZpZ3VyYXRpb25zLiBJIGFudGljaXBhdGUgZmluZGluZyBjb25kaXRpb25hbHMgb3IgZGVwZW5kZW5jaWVzIHRoYXQgZXhwbGFpbiBob3cgYEJSSURHRV9NUlBgIHJlbGF0ZXMgdG8gY29yZSBicmlkZ2luZyBmZWF0dXJlcyBhbmQgb3RoZXIgbmV0d29ya2luZyBzdWJzeXN0ZW1zLiBUaGlzIHdpbGwgaGVscCBtZSBncmFzcCB0aGUgYnJvYWRlciBpbXBsaWNhdGlvbnMgb2YgZW5hYmxpbmcgb3IgZGlzYWJsaW5nIE1SUCB3aXRoaW4gdGhlIGJyaWRnZSBjb250ZXh0LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI2IDIyOjQwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBCUklER0VfTVJQJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L2JyaWRnZS9LY29uZmlnJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9icmlkZ2UvS2NvbmZpZz01MD1jb25maWcgQlJJREdFX1ZMQU5fRklMVEVSSU5HXG4tLVxubmV0L2JyaWRnZS9LY29uZmlnLTYzLVxubmV0L2JyaWRnZS9LY29uZmlnOjY0OmNvbmZpZyBCUklER0VfTVJQXG5uZXQvYnJpZGdlL0tjb25maWctNjUtXHRib29sIFwmIzM0O01SUCBwcm90b2NvbFwmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI2IDIyOjQwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDM2NjAKCQkJCQkJCW91dHB1dDogMzMKCQkJCQkJCXRob3VnaHRzOiAxMwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6CgoqKkFuYWx5emluZyBEZXBlbmRlbmNpZXMgZm9yIEJSSURHRV9NUlAqKgoKT2theSwgc28gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGFyY2hpdGVjdHVyZSBhcm91bmQgYEJSSURHRV9NUlBgLiBJIGltbWVkaWF0ZWx5IHN0YXJ0IHRoaW5raW5nIGFib3V0IGl0cyBkZXBlbmRlbmNpZXMuIFdoYXQgb3RoZXIgbW9kdWxlcywgc2VydmljZXMsIGRhdGEgc3RydWN0dXJlcywgb3IgZXZlbiBleHRlcm5hbCBzeXN0ZW1zIGRvZXMgdGhpcyBwYXJ0aWN1bGFyIHBpZWNlIG9mIGNvZGUgcmVseSB1cG9uPyBJJiMzOTttIGVzc2VudGlhbGx5IHRyYWNpbmcgdGhlIGNhbGwgZ3JhcGgsIGJ1dCBmcm9tIHRoZSBwZXJzcGVjdGl2ZSBvZiBob3cgTVJQIChNYXRlcmlhbCBSZXF1aXJlbWVudHMgUGxhbm5pbmcpIGlzIHNwZWNpZmljYWxseSBiZWluZyBoYW5kbGVkIHdpdGhpbiB0aGUgYnJpZGdlLiBJcyBpdCBhIGNvcmUgY2FsY3VsYXRpb24gZW5naW5lLCBhIGRhdGEgYWRhcHRlciwgYW4gaW50ZWdyYXRpb24gbGF5ZXIsIG9yIHNvbWV0aGluZyBlbHNlIGVudGlyZWx5PyBLbm93aW5nIHRoZSBkZXBlbmRlbmNpZXMgd2lsbCBoZWxwIG1lIGltbWVkaWF0ZWx5IGdyYXNwIGl0cyBpbXBhY3QgYW5kIHBpbnBvaW50IHBvdGVudGlhbCBhcmVhcyBmb3Igb3B0aW1pemF0aW9uLCBkZWJ1Z2dpbmcsIG9yIGZ1dHVyZSBpbnRlZ3JhdGlvbiBlZmZvcnRzLiBUaGlzIGlzIHRoZSBmaXJzdCBxdWVzdGlvbiBJIG5lZWQgdG8gYW5zd2VyLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNiAyMjo0MDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O25ldC9icmlkZ2UvS2NvbmZpZyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDY0LAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDIwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAgNjQ6XHRjb25maWcgQlJJREdFX01SUFxuICA2NTpcdFx0Ym9vbCBcJiMzNDtNUlAgcHJvdG9jb2xcJiMzNDtcbiAgNjY6XHRcdGRlcGVuZHMgb24gQlJJREdFXG4gIDY3Olx0XHRkZWZhdWx0IG5cbiAgNjg6XHRcdGhlbHBcbiAgNjk6XHRcdCAgSWYgeW91IHNheSBZIGhlcmUsIHRoZW4gdGhlIEV0aGVybmV0IGJyaWRnZSB3aWxsIGJlIGFibGUgdG8gcnVuIE1SUFxuICA3MDpcdFx0ICBwcm90b2NvbCB0byBkZXRlY3QgbG9vcHNcbiAgNzE6XHRcbiAgNzI6XHRcdCAgU2F5IE4gdG8gZXhjbHVkZSB0aGlzIHN1cHBvcnQgYW5kIHJlZHVjZSB0aGUgYmluYXJ5IHNpemUuXG4gIDczOlx0XG4gIDc0Olx0XHQgIElmIHVuc3VyZSwgc2F5IE4uXG4gIDc1Olx0XG4gIDc2Olx0Y29uZmlnIEJSSURHRV9DRk1cbiAgNzc6XHRcdGJvb2wgXCYjMzQ7Q0ZNIHByb3RvY29sXCYjMzQ7XG4gIDc4Olx0XHRkZXBlbmRzIG9uIEJSSURHRVxuICA3OTpcdFx0aGVscFxuICA4MDpcdFx0ICBJZiB5b3Ugc2F5IFkgaGVyZSwgdGhlbiB0aGUgRXRoZXJuZXQgYnJpZGdlIHdpbGwgYmUgYWJsZSB0byBydW4gQ0ZNXG4gIDgxOlx0XHQgIHByb3RvY29sIGFjY29yZGluZyB0byA4MDIuMVEgc2VjdGlvbiAxMi4xNFxuICA4MjpcdFxuICA4MzpcdFx0ICBTYXkgTiB0byBleGNsdWRlIHRoaXMgc3VwcG9ydCBhbmQgcmVkdWNlIHRoZSBiaW5hcnkgc2l6ZS5cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjYgMjI6NDA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDExNQoJCQkJCQkJb3V0cHV0OiA0MAoJCQkJCQkJdGhvdWdodHM6IDM3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IGludGVycHJldGF0aW9uIG9mIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgbXkgb3duOgoKKipBbmFseXppbmcgRGVwZW5kZW5jaWVzIGFuZCBUcmlnZ2VyIE1lY2hhbmlzbXMqKgoKQWxyaWdodCwgaXQmIzM5O3MgY2xlYXIgd2UmIzM5O3JlIGRlYWxpbmcgd2l0aCBhIGRlcGVuZGVuY3kgaXNzdWUgaGVyZS4gVGhlIG1lbnRpb24gb2YgYm90aCBgQlJJREdFX01SUGAgYW5kIGBCUklER0VgIHRlbGxzIG1lIHRob3NlIGFyZSBmdW5kYW1lbnRhbCBidWlsZGluZyBibG9ja3MgZm9yIHdoYXRldmVyIHRhc2sgb3Igc3lzdGVtIHdlJiMzOTtyZSBleGFtaW5pbmcuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZWlyIHJlbGF0aW9uc2hpcCBhbmQgaG93IHRoZXkgaW50ZXJhY3QuIFNwZWNpZmljYWxseSwgSSBuZWVkIHRvIGtub3cgd2h5IGJvdGggb2YgdGhlc2UgY29tcG9uZW50cyBhcmUgcmVxdWlyZWQuCgpNeSBpbW1lZGlhdGUgbmV4dCBzdGVwIGlzIHRvIGRpdmUgaW50byBgYnJfbXJwX3Rlc3Rfd29ya19leHBpcmVkYC4gVGhpcyBpcyB0aGUgbW9zdCBsaWtlbHkgZW50cnkgcG9pbnQgdG8gdW5kZXJzdGFuZGluZyB0aGUgd2hvbGUgc3lzdGVtLCBzaW5jZSB0aGVyZSYjMzk7cyBhIHJlZmVyZW5jZSB0byB0aGUgYE1SUGAgY29tcG9uZW50LiBJIG5lZWQgdG8gdHJhY2UgKmhvdyogdGhpcyBpcyB0cmlnZ2VyZWQuIEkmIzM5O20gbG9va2luZyBmb3IgdGhlIGNvbmRpdGlvbnMgdGhhdCBpbml0aWF0ZSBpdC4gSXMgaXQgYSB0aW1lciwgYW4gZXZlbnQsIGEgc3BlY2lmaWMgc3RhdGUgY2hhbmdlPyBVbmRlcnN0YW5kaW5nIHRoZSB0cmlnZ2VyIG1lY2hhbmlzbSB3aWxsIGlsbHVtaW5hdGUgdGhlIHJvbGUgYEJSSURHRV9NUlBgIGFuZCBgQlJJREdFYCBwbGF5IGluIHRoZSBwcm9jZXNzLCBhbmQgdGhlaXIgcmVsYXRpb25zaGlwLiBPbmNlIEkgZmlndXJlIG91dCB0aGUgdHJpZ2dlciwgSSBjYW4gYmV0dGVyIHVuZGVyc3RhbmQgd2h5IHdlIGV2ZW4gbmVlZCB0aGVzZSBjb21wb25lbnRzIHRvIGJlZ2luIHdpdGguCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI2IDIyOjQwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2JyX21ycF90ZXN0X3dvcmtfZXhwaXJlZCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9icmlkZ2UvYnJfbXJwLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L2JyaWRnZS9icl9tcnAuYz0yNDA9c3RhdGljIHN0cnVjdCBza19idWZmICpicl9tcnBfYWxsb2NfaW5fdGVzdF9za2Ioc3RydWN0IGJyX21ycCAqbXJwLFxuLS1cbm5ldC9icmlkZ2UvYnJfbXJwLmMtMjc5LSAqL1xubmV0L2JyaWRnZS9icl9tcnAuYzoyODA6c3RhdGljIHZvaWQgYnJfbXJwX3Rlc3Rfd29ya19leHBpcmVkKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaylcbm5ldC9icmlkZ2UvYnJfbXJwLmMtMjgxLXtcbi0tXG5uZXQvYnJpZGdlL2JyX21ycC5jPTQ5OD1pbnQgYnJfbXJwX2FkZChzdHJ1Y3QgbmV0X2JyaWRnZSAqYnIsIHN0cnVjdCBicl9tcnBfaW5zdGFuY2UgKmluc3RhbmNlKVxuLS1cbm5ldC9icmlkZ2UvYnJfbXJwLmMtNTQzLVxubmV0L2JyaWRnZS9icl9tcnAuYzo1NDQ6XHRJTklUX0RFTEFZRURfV09SSyhcdTAwMjZtcnAtXHUwMDNldGVzdF93b3JrLCBicl9tcnBfdGVzdF93b3JrX2V4cGlyZWQpO1xubmV0L2JyaWRnZS9icl9tcnAuYy01NDUtXHRJTklUX0RFTEFZRURfV09SSyhcdTAwMjZtcnAtXHUwMDNlaW5fdGVzdF93b3JrLCBicl9tcnBfaW5fdGVzdF93b3JrX2V4cGlyZWQpO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNiAyMjo0MDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0Njk1CgkJCQkJCQlvdXRwdXQ6IDMwCgkJCQkJCQl0aG91Z2h0czogMjcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgYSBzdW1tYXJ5IG9mIG15IHRob3VnaHQgcHJvY2VzcywgYXMgaWYgSSB3ZXJlIGFuYWx5emluZyB0aGF0IGNvZGUgc25pcHBldDoKCioqSW5pdGlhbGl6YXRpb24gYW5kIFRyaWdnZXIgQW5hbHlzaXMqKgoKT2theSwgc28gYGJyX21ycF9hZGRgIGlzIHRoZSBzdGFydGluZyBwb2ludCwgdGhlIGluaXRpYWxpemF0aW9uIHJvdXRpbmUgZm9yIHNvbWV0aGluZy4gVGhlIGltbWVkaWF0ZSBxdWVzdGlvbiBpcywgd2hhdCBraWNrcyB0aGlzIHRoaW5nIG9mZj8gV2hhdCBhcmUgdGhlIGNhbGxpbmcgY29uZGl0aW9ucz8gSSBuZWVkIHRvIHRyYWNlIHRoZSB0cmlnZ2VycyBvZiBgYnJfbXJwX2FkZGAgdG8gdW5kZXJzdGFuZCBpdHMgY29udGV4dCBhbmQgdGhlIG92ZXJhbGwgcHJvY2VzcyBmbG93LiBVbmRlcnN0YW5kaW5nIHRoZSBldmVudCB0aGF0IGxlYWRzIHRvIGl0cyBleGVjdXRpb24gaXMgY3J1Y2lhbCBmb3IgYSBjb21wbGV0ZSBhc3Nlc3NtZW50LiBMZXQmIzM5O3MgZGlnIGludG8gdGhhdCBjYWxsaW5nIHNlcXVlbmNlLi4uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI2IDIyOjQwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2JyX21ycF9hZGQmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvYnJpZGdlLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvYnJpZGdlL2JyX21ycC5jPTQyOT1zdGF0aWMgdm9pZCBicl9tcnBfZGVsX2ltcGwoc3RydWN0IG5ldF9icmlkZ2UgKmJyLCBzdHJ1Y3QgYnJfbXJwICptcnApXG4tLVxubmV0L2JyaWRnZS9icl9tcnAuYy00OTctICovXG5uZXQvYnJpZGdlL2JyX21ycC5jOjQ5ODppbnQgYnJfbXJwX2FkZChzdHJ1Y3QgbmV0X2JyaWRnZSAqYnIsIHN0cnVjdCBicl9tcnBfaW5zdGFuY2UgKmluc3RhbmNlKVxubmV0L2JyaWRnZS9icl9tcnAuYy00OTkte1xuLS1cbm5ldC9icmlkZ2UvYnJfbXJwX25ldGxpbmsuYz0zMT1zdGF0aWMgaW50IGJyX21ycF9pbnN0YW5jZV9wYXJzZShzdHJ1Y3QgbmV0X2JyaWRnZSAqYnIsIHN0cnVjdCBubGF0dHIgKmF0dHIsXG4tLVxubmV0L2JyaWRnZS9icl9tcnBfbmV0bGluay5jLTYxLVx0aWYgKGNtZCA9PSBSVE1fU0VUTElOSylcbm5ldC9icmlkZ2UvYnJfbXJwX25ldGxpbmsuYzo2MjpcdFx0cmV0dXJuIGJyX21ycF9hZGQoYnIsIFx1MDAyNmluc3QpO1xubmV0L2JyaWRnZS9icl9tcnBfbmV0bGluay5jLTYzLVx0ZWxzZVxuLS1cbm5ldC9icmlkZ2UvYnJfcHJpdmF0ZV9tcnAuaD01OT1lbnVtIGJyX21ycF9od19zdXBwb3J0IHtcbi0tXG5uZXQvYnJpZGdlL2JyX3ByaXZhdGVfbXJwLmgtNjUtLyogYnJfbXJwLmMgKi9cbm5ldC9icmlkZ2UvYnJfcHJpdmF0ZV9tcnAuaDo2NjppbnQgYnJfbXJwX2FkZChzdHJ1Y3QgbmV0X2JyaWRnZSAqYnIsIHN0cnVjdCBicl9tcnBfaW5zdGFuY2UgKmluc3RhbmNlKTtcbm5ldC9icmlkZ2UvYnJfcHJpdmF0ZV9tcnAuaC02Ny1pbnQgYnJfbXJwX2RlbChzdHJ1Y3QgbmV0X2JyaWRnZSAqYnIsIHN0cnVjdCBicl9tcnBfaW5zdGFuY2UgKmluc3RhbmNlKTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjYgMjI6NDA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNTI2NgoJCQkJCQkJb3V0cHV0OiA0MQoJCQkJCQkJdGhvdWdodHM6IDQyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBteSBvd24gbWVudGFsIHByb2Nlc3NpbmcgYXMgYW4gZXhwZXJ0OgoKKipJbnZlc3RpZ2F0aW5nIGEgYFJUTV9TRVRMSU5LYCBUcmlnZ2VyIGluIGBicl9tcnBfbmV0bGluay5jYCoqCgpBbHJpZ2h0LCB0aGF0IGBSVE1fU0VUTElOS2AgbWVzc2FnZSBoYXMgbXkgYXR0ZW50aW9uLiBJdCYjMzk7cyBjb21pbmcgaW4gdGhyb3VnaCB0aGUgbmV0bGluayBpbnRlcmZhY2UsIHNwZWNpZmljYWxseSB3aXRoaW4gdGhlIGNvbnRleHQgb2YgYGJyX21ycF9uZXRsaW5rLmNgLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGF0JiMzOTtzIGhhcHBlbmluZy4gTXkgaW1tZWRpYXRlIGZvY3VzIGlzIHRvIGRpc3NlY3QgdGhlIGNvZGUgd2l0aGluIGBicl9tcnBfbmV0bGluay5jYC4gSSBoYXZlIGEgZmVlbGluZyB0aGlzIGlzIHdoZXJlIHRoZSBjb3JlIG9mIHRoZSBpbnRlcmFjdGlvbiB3aXRoIHRoZSBicmlkZ2UgYW5kIE1SUCAoTXVsdGlwbGUgUmVnaXN0cmF0aW9uIFByb3RvY29sKSBpcyBiZWluZyBoYW5kbGVkIGF0IHRoZSBuZXRsaW5rIGxldmVsLiBJJiMzOTtsbCBzdGFydCBieSB0cmFjaW5nIHRoZSBwYXRoIGZyb20gdGhlIG5ldGxpbmsgbWVzc2FnZSBoYW5kbGVyIHdpdGhpbiB0aGF0IGZpbGUsIHNlZSB3aGF0IGFjdGlvbnMgaXQmIzM5O3MgdGFraW5nIG9uIHRoZSBicmlkZ2UgY29uZmlndXJhdGlvbiwgYW5kIGZpZ3VyZSBvdXQgdGhlIHNlcXVlbmNlIG9mIGNhbGxzIHRoYXQgYXJlIGJlaW5nIG1hZGUuIEkmIzM5O2xsIGJlIHBhcnRpY3VsYXJseSBpbnRlcmVzdGVkIGluIGhvdyBsaW5rIHNldHRpbmdzIGFyZSB0cmFuc2xhdGVkIGludG8gYnJpZGdlIG9yIE1SUCBzcGVjaWZpYyBjb25maWd1cmF0aW9ucy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjYgMjI6NDA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7YnJfbXJwX2luc3RhbmNlX3BhcnNlJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L2JyaWRnZS9icl9tcnBfbmV0bGluay5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9icmlkZ2UvYnJfbXJwX25ldGxpbmsuYz0yMz1icl9tcnBfaW5zdGFuY2VfcG9saWN5W0lGTEFfQlJJREdFX01SUF9JTlNUQU5DRV9NQVggJiM0MzsgMV0gPSB7XG4tLVxubmV0L2JyaWRnZS9icl9tcnBfbmV0bGluay5jLTMwLVxubmV0L2JyaWRnZS9icl9tcnBfbmV0bGluay5jOjMxOnN0YXRpYyBpbnQgYnJfbXJwX2luc3RhbmNlX3BhcnNlKHN0cnVjdCBuZXRfYnJpZGdlICpiciwgc3RydWN0IG5sYXR0ciAqYXR0cixcbm5ldC9icmlkZ2UvYnJfbXJwX25ldGxpbmsuYy0zMi1cdFx0XHRcdCBpbnQgY21kLCBzdHJ1Y3QgbmV0bGlua19leHRfYWNrICpleHRhY2spXG4tLVxubmV0L2JyaWRnZS9icl9tcnBfbmV0bGluay5jPTM1Nj1pbnQgYnJfbXJwX3BhcnNlKHN0cnVjdCBuZXRfYnJpZGdlICpiciwgc3RydWN0IG5ldF9icmlkZ2VfcG9ydCAqcCxcbi0tXG5uZXQvYnJpZGdlL2JyX21ycF9uZXRsaW5rLmMtMzc4LVx0aWYgKHRiW0lGTEFfQlJJREdFX01SUF9JTlNUQU5DRV0pIHtcbm5ldC9icmlkZ2UvYnJfbXJwX25ldGxpbmsuYzozNzk6XHRcdGVyciA9IGJyX21ycF9pbnN0YW5jZV9wYXJzZShiciwgdGJbSUZMQV9CUklER0VfTVJQX0lOU1RBTkNFXSxcbm5ldC9icmlkZ2UvYnJfbXJwX25ldGxpbmsuYy0zODAtXHRcdFx0XHRcdCAgICBjbWQsIGV4dGFjayk7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI2IDIyOjQwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDU4NjIKCQkJCQkJCW91dHB1dDogMzAKCQkJCQkJCXRob3VnaHRzOiAzMQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgYW4gZXhwZXJ0JiMzOTtzIGludGVybmFsIG1vbm9sb2d1ZToKCioqVHJhY2luZyB0aGUgRXhlY3V0aW9uIFBhdGgqKgoKQWxyaWdodCwgYGJyX21ycF9wYXJzZWAgaXMgdGhlIHN0YXJ0aW5nIHBvaW50LCB0aGUgbWFpbiBlbnRyeSBmdW5jdGlvbiBmb3IgdGhpcyBtb2R1bGUuIE15IGZpcnN0IG1vdmUgaXMgYWx3YXlzIHRvIHVuZGVyc3RhbmQgdGhlIGNhbGxpbmcgY29udGV4dC4gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgd2hlcmUgYGJyX21ycF9wYXJzZWAgaXMgYmVpbmcgaW52b2tlZC4gVGhhdCBnaXZlcyBtZSBjcml0aWNhbCBjb250ZXh0IG9uIGhvdyB0aGUgZGF0YSBpcyBiZWluZyBmZWQgaW4gYW5kIHRoZSBvdmVyYWxsIHB1cnBvc2UgaXQgc2VydmVzIHdpdGhpbiB0aGUgbGFyZ2VyIHN5c3RlbS4gVGltZSB0byBkaWcgaW50byB0aGUgY2FsbCBncmFwaCBhbmQgc2VlIHdoZXJlIHRoZSBlbnRyeSBwb2ludCBpcyB1c2VkLiBVbmRlcnN0YW5kaW5nIHRoaXMgd2lsbCBpbW1lZGlhdGVseSBwcm92aWRlIGEgY3J1Y2lhbCBsYXllciBvZiBjbGFyaXR5IQoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNiAyMjo0MDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDticl9tcnBfcGFyc2UmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvYnJpZGdlLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvYnJpZGdlL2JyX21ycF9uZXRsaW5rLmM9MzI0PXN0YXRpYyBpbnQgYnJfbXJwX3N0YXJ0X2luX3Rlc3RfcGFyc2Uoc3RydWN0IG5ldF9icmlkZ2UgKmJyLFxuLS1cbm5ldC9icmlkZ2UvYnJfbXJwX25ldGxpbmsuYy0zNTUtXG5uZXQvYnJpZGdlL2JyX21ycF9uZXRsaW5rLmM6MzU2OmludCBicl9tcnBfcGFyc2Uoc3RydWN0IG5ldF9icmlkZ2UgKmJyLCBzdHJ1Y3QgbmV0X2JyaWRnZV9wb3J0ICpwLFxubmV0L2JyaWRnZS9icl9tcnBfbmV0bGluay5jLTM1Ny1cdFx0IHN0cnVjdCBubGF0dHIgKmF0dHIsIGludCBjbWQsIHN0cnVjdCBuZXRsaW5rX2V4dF9hY2sgKmV4dGFjaylcbi0tXG5uZXQvYnJpZGdlL2JyX25ldGxpbmsuYz04MDk9c3RhdGljIGludCBicl9hZnNwZWMoc3RydWN0IG5ldF9icmlkZ2UgKmJyLFxuLS1cbm5ldC9icmlkZ2UvYnJfbmV0bGluay5jLTg0OC1cdFx0Y2FzZSBJRkxBX0JSSURHRV9NUlA6XG5uZXQvYnJpZGdlL2JyX25ldGxpbmsuYzo4NDk6XHRcdFx0ZXJyID0gYnJfbXJwX3BhcnNlKGJyLCBwLCBhdHRyLCBjbWQsIGV4dGFjayk7XG5uZXQvYnJpZGdlL2JyX25ldGxpbmsuYy04NTAtXHRcdFx0aWYgKGVycilcbi0tXG5uZXQvYnJpZGdlL2JyX3ByaXZhdGUuaD0yMDY4PXVuc2lnbmVkIGxvbmcgYnJfdGltZXJfdmFsdWUoY29uc3Qgc3RydWN0IHRpbWVyX2xpc3QgKnRpbWVyKTtcbi0tXG5uZXQvYnJpZGdlL2JyX3ByaXZhdGUuaC0yMDczLSNpZiBJU19FTkFCTEVEKENPTkZJR19CUklER0VfTVJQKVxubmV0L2JyaWRnZS9icl9wcml2YXRlLmg6MjA3NDppbnQgYnJfbXJwX3BhcnNlKHN0cnVjdCBuZXRfYnJpZGdlICpiciwgc3RydWN0IG5ldF9icmlkZ2VfcG9ydCAqcCxcbm5ldC9icmlkZ2UvYnJfcHJpdmF0ZS5oLTIwNzUtXHRcdCBzdHJ1Y3QgbmxhdHRyICphdHRyLCBpbnQgY21kLCBzdHJ1Y3QgbmV0bGlua19leHRfYWNrICpleHRhY2spO1xuLS1cbm5ldC9icmlkZ2UvYnJfcHJpdmF0ZS5oPTIwNzg9aW50IGJyX21ycF9maWxsX2luZm8oc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IG5ldF9icmlkZ2UgKmJyKTtcbm5ldC9icmlkZ2UvYnJfcHJpdmF0ZS5oLTIwNzktI2Vsc2Vcbm5ldC9icmlkZ2UvYnJfcHJpdmF0ZS5oOjIwODA6c3RhdGljIGlubGluZSBpbnQgYnJfbXJwX3BhcnNlKHN0cnVjdCBuZXRfYnJpZGdlICpiciwgc3RydWN0IG5ldF9icmlkZ2VfcG9ydCAqcCxcbm5ldC9icmlkZ2UvYnJfcHJpdmF0ZS5oLTIwODEtXHRcdFx0ICAgICAgIHN0cnVjdCBubGF0dHIgKmF0dHIsIGludCBjbWQsXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI2IDIyOjQwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDY1OTkKCQkJCQkJCW91dHB1dDogMzMKCQkJCQkJCXRob3VnaHRzOiAxMTIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBCcmlkZ2UgTmV0bGluayBDb25maWd1cmF0aW9uKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGFuZCB0cmFjaW5nIHRoZSBjb2RlLiBJdCBzZWVtcyB0aGUgZnVuY3Rpb24gaW4gcXVlc3Rpb24sIGBicl9tcnBfYWRkYCwgaXMgY2FsbGVkIGZyb20gYGJyX2Fmc3BlY2Agd2l0aGluIGBicl9uZXRsaW5rLmNgLiBUaGF0IHBsYWNlcyBpdCBmaXJtbHkgd2l0aGluIHRoZSBicmlkZ2UgbmV0bGluayBjb25maWd1cmF0aW9uIGNvbnRleHQsIHdoaWNoIG1ha2VzIHNlbnNlLiBJIGNhbiBjb25maXJtLCB0aGVuLCB0aGF0IGBicl9tcnBfYWRkYCBpcyBkZWZpbml0ZWx5IHJlYWNoYWJsZSB3aXRoaW4gdGhpcyBmbG93LgoKTm93LCB0aGUgcGF0Y2ggaXRzZWxmIHRhcmdldHMgdW5pbml0aWFsaXplZCBtZW1vcnkgd2l0aGluIGBicl9tcnBfYWxsb2NfdGVzdF9za2JgLiBTbyB0aGUgbmV4dCBsb2dpY2FsIHN0ZXAgaXMgdG8gdW5kZXJzdGFuZCB3aGF0IHRyaWdnZXJzIHRoYXQgZnVuY3Rpb24uIExldCYjMzk7cyBzZWUuLi4gYWgsIGhlcmUgaXQgaXM6IGBicl9tcnBfdGVzdF93b3JrX2V4cGlyZWRgIGlzIHJlc3BvbnNpYmxlIGZvciBjYWxsaW5nIGl0LiBUaGF0JiMzOTtzIGdvb2QuCgpTbywgSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2hlcmUgYHRlc3Rfd29ya2AgKHByZXN1bWFibHkgcmVsYXRlZCB0byB0aGF0ICYjMzQ7dGVzdCYjMzQ7IHdvcmspIGdldHMgc2NoZWR1bGVkIHRvIGdldCB0aGUgYmlnZ2VyIHBpY3R1cmUuIEkgbmVlZCB0byB0cmFjZSBiYWNrIGZyb20gYGJyX21ycF90ZXN0X3dvcmtfZXhwaXJlZGAgdG8gZmluZCBvdXQgd2hlcmUgdGhpcyBgdGVzdF93b3JrYCBpcyBhY3R1YWxseSBzY2hlZHVsZWQgZnJvbSB3aXRoaW4gdGhlIGNvZGUuIFRoZW4sIEkgY2FuIHVuZGVyc3RhbmQgd2hlbiBhbmQgdW5kZXIgd2hhdCBjaXJjdW1zdGFuY2VzIHRoaXMgdW5pbml0aWFsaXplZCBtZW1vcnkgcHJvYmxlbSB3aWxsIG9jY3VyLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNiAyMjo0MDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDt0ZXN0X3dvcmsmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvYnJpZGdlL2JyX21ycC5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9icmlkZ2UvYnJfbXJwLmM9MjQwPXN0YXRpYyBzdHJ1Y3Qgc2tfYnVmZiAqYnJfbXJwX2FsbG9jX2luX3Rlc3Rfc2tiKHN0cnVjdCBicl9tcnAgKm1ycCxcbi0tXG5uZXQvYnJpZGdlL2JyX21ycC5jLTI3OS0gKi9cbm5ldC9icmlkZ2UvYnJfbXJwLmM6MjgwOnN0YXRpYyB2b2lkIGJyX21ycF90ZXN0X3dvcmtfZXhwaXJlZChzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspXG5uZXQvYnJpZGdlL2JyX21ycC5jLTI4MS17XG5uZXQvYnJpZGdlL2JyX21ycC5jLTI4Mi1cdHN0cnVjdCBkZWxheWVkX3dvcmsgKmRlbF93b3JrID0gdG9fZGVsYXllZF93b3JrKHdvcmspO1xubmV0L2JyaWRnZS9icl9tcnAuYzoyODM6XHRzdHJ1Y3QgYnJfbXJwICptcnAgPSBjb250YWluZXJfb2YoZGVsX3dvcmssIHN0cnVjdCBicl9tcnAsIHRlc3Rfd29yayk7XG5uZXQvYnJpZGdlL2JyX21ycC5jLTI4NC1cdHN0cnVjdCBuZXRfYnJpZGdlX3BvcnQgKnA7XG4tLVxubmV0L2JyaWRnZS9icl9tcnAuYy0zNDQtXG5uZXQvYnJpZGdlL2JyX21ycC5jOjM0NTpcdHF1ZXVlX2RlbGF5ZWRfd29yayhzeXN0ZW1fcGVyY3B1X3dxLCBcdTAwMjZtcnAtXHUwMDNldGVzdF93b3JrLFxubmV0L2JyaWRnZS9icl9tcnAuYy0zNDYtXHRcdFx0ICAgdXNlY3NfdG9famlmZmllcyhtcnAtXHUwMDNldGVzdF9pbnRlcnZhbCkpO1xuLS1cbm5ldC9icmlkZ2UvYnJfbXJwLmMtMzUyLSAqL1xubmV0L2JyaWRnZS9icl9tcnAuYzozNTM6c3RhdGljIHZvaWQgYnJfbXJwX2luX3Rlc3Rfd29ya19leHBpcmVkKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaylcbm5ldC9icmlkZ2UvYnJfbXJwLmMtMzU0LXtcbm5ldC9icmlkZ2UvYnJfbXJwLmMtMzU1LVx0c3RydWN0IGRlbGF5ZWRfd29yayAqZGVsX3dvcmsgPSB0b19kZWxheWVkX3dvcmsod29yayk7XG5uZXQvYnJpZGdlL2JyX21ycC5jOjM1NjpcdHN0cnVjdCBicl9tcnAgKm1ycCA9IGNvbnRhaW5lcl9vZihkZWxfd29yaywgc3RydWN0IGJyX21ycCwgaW5fdGVzdF93b3JrKTtcbm5ldC9icmlkZ2UvYnJfbXJwLmMtMzU3LVx0c3RydWN0IG5ldF9icmlkZ2VfcG9ydCAqcDtcbi0tXG5uZXQvYnJpZGdlL2JyX21ycC5jLTQyMS1cbm5ldC9icmlkZ2UvYnJfbXJwLmM6NDIyOlx0cXVldWVfZGVsYXllZF93b3JrKHN5c3RlbV9wZXJjcHVfd3EsIFx1MDAyNm1ycC1cdTAwM2Vpbl90ZXN0X3dvcmssXG5uZXQvYnJpZGdlL2JyX21ycC5jLTQyMy1cdFx0XHQgICB1c2Vjc190b19qaWZmaWVzKG1ycC1cdTAwM2Vpbl90ZXN0X2ludGVydmFsKSk7XG4tLVxubmV0L2JyaWRnZS9icl9tcnAuYz00Mjk9c3RhdGljIHZvaWQgYnJfbXJwX2RlbF9pbXBsKHN0cnVjdCBuZXRfYnJpZGdlICpiciwgc3RydWN0IGJyX21ycCAqbXJwKVxuLS1cbm5ldC9icmlkZ2UvYnJfbXJwLmMtNDM0LVx0LyogU3RvcCBzZW5kaW5nIE1SUF9UZXN0IGZyYW1lcyAqL1xubmV0L2JyaWRnZS9icl9tcnAuYzo0MzU6XHRjYW5jZWxfZGVsYXllZF93b3JrX3N5bmMoXHUwMDI2bXJwLVx1MDAzZXRlc3Rfd29yayk7XG5uZXQvYnJpZGdlL2JyX21ycC5jLTQzNi1cdGJyX21ycF9zd2l0Y2hkZXZfc2VuZF9yaW5nX3Rlc3QoYnIsIG1ycCwgMCwgMCwgMCwgMCk7XG4tLVxubmV0L2JyaWRnZS9icl9tcnAuYy00MzgtXHQvKiBTdG9wIHNlbmRpbmcgTVJQX0luVGVzdCBmcmFtZXMgaWYgaGFzIGFuIGludGVyY29ubmVjdCByb2xlICovXG5uZXQvYnJpZGdlL2JyX21ycC5jOjQzOTpcdGNhbmNlbF9kZWxheWVkX3dvcmtfc3luYyhcdTAwMjZtcnAtXHUwMDNlaW5fdGVzdF93b3JrKTtcbm5ldC9icmlkZ2UvYnJfbXJwLmMtNDQwLVx0YnJfbXJwX3N3aXRjaGRldl9zZW5kX2luX3Rlc3QoYnIsIG1ycCwgMCwgMCwgMCk7XG4tLVxubmV0L2JyaWRnZS9icl9tcnAuYz00OTg9aW50IGJyX21ycF9hZGQoc3RydWN0IG5ldF9icmlkZ2UgKmJyLCBzdHJ1Y3QgYnJfbXJwX2luc3RhbmNlICppbnN0YW5jZSlcbi0tXG5uZXQvYnJpZGdlL2JyX21ycC5jLTU0My1cbm5ldC9icmlkZ2UvYnJfbXJwLmM6NTQ0Olx0SU5JVF9ERUxBWUVEX1dPUksoXHUwMDI2bXJwLVx1MDAzZXRlc3Rfd29yaywgYnJfbXJwX3Rlc3Rfd29ya19leHBpcmVkKTtcbm5ldC9icmlkZ2UvYnJfbXJwLmM6NTQ1Olx0SU5JVF9ERUxBWUVEX1dPUksoXHUwMDI2bXJwLVx1MDAzZWluX3Rlc3Rfd29yaywgYnJfbXJwX2luX3Rlc3Rfd29ya19leHBpcmVkKTtcbm5ldC9icmlkZ2UvYnJfbXJwLmMtNTQ2LVx0aGxpc3RfYWRkX3RhaWxfcmN1KFx1MDAyNm1ycC1cdTAwM2VsaXN0LCBcdTAwMjZici1cdTAwM2VtcnBfbGlzdCk7XG4tLVxubmV0L2JyaWRnZS9icl9tcnAuYz03MDM9aW50IGJyX21ycF9zdGFydF90ZXN0KHN0cnVjdCBuZXRfYnJpZGdlICpicixcbi0tXG5uZXQvYnJpZGdlL2JyX21ycC5jLTcyOC1cdG1ycC1cdTAwM2V0ZXN0X2NvdW50X21pc3MgPSAwO1xubmV0L2JyaWRnZS9icl9tcnAuYzo3Mjk6XHRxdWV1ZV9kZWxheWVkX3dvcmsoc3lzdGVtX3BlcmNwdV93cSwgXHUwMDI2bXJwLVx1MDAzZXRlc3Rfd29yayxcbm5ldC9icmlkZ2UvYnJfbXJwLmMtNzMwLVx0XHRcdCAgIHVzZWNzX3RvX2ppZmZpZXModGVzdC1cdTAwM2VpbnRlcnZhbCkpO1xuLS1cbm5ldC9icmlkZ2UvYnJfbXJwLmM9NzU5PWludCBicl9tcnBfc2V0X2luX3JvbGUoc3RydWN0IG5ldF9icmlkZ2UgKmJyLCBzdHJ1Y3QgYnJfbXJwX2luX3JvbGUgKnJvbGUpXG4tLVxubmV0L2JyaWRnZS9icl9tcnAuYy03NzktXHRcdC8qIFN0b3AgdGhlIGdlbmVyYXRpbmcgTVJQX0luVGVzdCBmcmFtZXMgKi9cbm5ldC9icmlkZ2UvYnJfbXJwLmM6NzgwOlx0XHRjYW5jZWxfZGVsYXllZF93b3JrX3N5bmMoXHUwMDI2bXJwLVx1MDAzZWluX3Rlc3Rfd29yayk7XG5uZXQvYnJpZGdlL2JyX21ycC5jLTc4MS1cdFx0YnJfbXJwX3N3aXRjaGRldl9zZW5kX2luX3Rlc3QoYnIsIG1ycCwgMCwgMCwgMCk7XG4tLVxubmV0L2JyaWRnZS9icl9tcnAuYz04NDE9aW50IGJyX21ycF9zdGFydF9pbl90ZXN0KHN0cnVjdCBuZXRfYnJpZGdlICpicixcbi0tXG5uZXQvYnJpZGdlL2JyX21ycC5jLTg2OC1cdG1ycC1cdTAwM2Vpbl90ZXN0X2NvdW50X21pc3MgPSAwO1xubmV0L2JyaWRnZS9icl9tcnAuYzo4Njk6XHRxdWV1ZV9kZWxheWVkX3dvcmsoc3lzdGVtX3BlcmNwdV93cSwgXHUwMDI2bXJwLVx1MDAzZWluX3Rlc3Rfd29yayxcbm5ldC9icmlkZ2UvYnJfbXJwLmMtODcwLVx0XHRcdCAgIHVzZWNzX3RvX2ppZmZpZXMoaW5fdGVzdC1cdTAwM2VpbnRlcnZhbCkpO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIxLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNiAyMjo0MDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA4NDc5CgkJCQkJCQlvdXRwdXQ6IDMyCgkJCQkJCQl0aG91Z2h0czogMzIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aGUgdGhvdWdodCBwcm9jZXNzLCBhcyByZXF1ZXN0ZWQ6CgoqKkRlY29uc3RydWN0aW5nIHRoZSBgYnJfbXJwX3N0YXJ0X3Rlc3RgIFRyaWdnZXIqKgoKT2theSwgc28gSSBzZWUgdGhpcyB0ZXN0IGlzIHNjaGVkdWxlZCB3aXRoaW4gdGhlIGBicl9tcnBfc3RhcnRfdGVzdGAgY29udGV4dC4gTXkgaW1tZWRpYXRlIGZvY3VzIGlzIHRvIHVuZGVyc3RhbmQgKndoeSogYW5kICpob3cqIHRoaXMgdGVzdCBpcyBiZWluZyBpbml0aWF0ZWQuIEkgbmVlZCB0byB0cmFjZSB0aGUgZXhlY3V0aW9uIHBhdGguIFNvLCBsZXQmIzM5O3MgbG9vayBmb3IgdGhlIGV2ZW50cyB0aGF0IGFjdHVhbGx5ICp0cmlnZ2VyKiBgYnJfbXJwX3N0YXJ0X3Rlc3RgLiBLbm93aW5nIHRob3NlIGVudHJ5IHBvaW50cyBpcyBjcml0aWNhbCBmb3IgdW5kZXJzdGFuZGluZyB0aGUgb3ZlcmFsbCBkYXRhIGZsb3cgYW5kIGFueSBwb3RlbnRpYWwgc2lkZSBlZmZlY3RzIG9mIHRoaXMgc2NoZWR1bGVkIHRlc3QuIEl0JiMzOTtzIHRpbWUgdG8gZGlnIGludG8gdGhlIHVwc3RyZWFtIGRlcGVuZGVuY2llcy4gTGV0JiMzOTtzIHNlZSB3aGF0JiMzOTtzIGNhbGxpbmcgdGhhdCBmdW5jdGlvbiwgd2hhdCBkZXBlbmRlbmNpZXMgZXhpc3QsIGFuZCBob3cgdGhvc2UgdHJpZ2dlciBmdW5jdGlvbnMgaW50ZXJhY3Qgd2l0aCBvbmUgYW5vdGhlci4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjYgMjI6NDA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7YnJfbXJwX3N0YXJ0X3Rlc3QmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvYnJpZGdlLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvYnJpZGdlL2JyX21ycC5jPTY3Mj1pbnQgYnJfbXJwX3NldF9yaW5nX3JvbGUoc3RydWN0IG5ldF9icmlkZ2UgKmJyLFxuLS1cbm5ldC9icmlkZ2UvYnJfbXJwLmMtNzAyLSAqL1xubmV0L2JyaWRnZS9icl9tcnAuYzo3MDM6aW50IGJyX21ycF9zdGFydF90ZXN0KHN0cnVjdCBuZXRfYnJpZGdlICpicixcbm5ldC9icmlkZ2UvYnJfbXJwLmM6NzA0Olx0XHQgICAgICBzdHJ1Y3QgYnJfbXJwX3N0YXJ0X3Rlc3QgKnRlc3QpXG5uZXQvYnJpZGdlL2JyX21ycC5jLTcwNS17XG4tLVxubmV0L2JyaWRnZS9icl9tcnBfbmV0bGluay5jPTE5NT1zdGF0aWMgY29uc3Qgc3RydWN0IG5sYV9wb2xpY3lcbm5ldC9icmlkZ2UvYnJfbXJwX25ldGxpbmsuYzoxOTY6YnJfbXJwX3N0YXJ0X3Rlc3RfcG9saWN5W0lGTEFfQlJJREdFX01SUF9TVEFSVF9URVNUX01BWCAmIzQzOyAxXSA9IHtcbm5ldC9icmlkZ2UvYnJfbXJwX25ldGxpbmsuYy0xOTctXHRbSUZMQV9CUklER0VfTVJQX1NUQVJUX1RFU1RfVU5TUEVDXVx0PSB7IC50eXBlID0gTkxBX1JFSkVDVCB9LFxuLS1cbm5ldC9icmlkZ2UvYnJfbXJwX25ldGxpbmsuYy0yMDQtXG5uZXQvYnJpZGdlL2JyX21ycF9uZXRsaW5rLmM6MjA1OnN0YXRpYyBpbnQgYnJfbXJwX3N0YXJ0X3Rlc3RfcGFyc2Uoc3RydWN0IG5ldF9icmlkZ2UgKmJyLCBzdHJ1Y3QgbmxhdHRyICphdHRyLFxubmV0L2JyaWRnZS9icl9tcnBfbmV0bGluay5jLTIwNi1cdFx0XHRcdCAgIHN0cnVjdCBuZXRsaW5rX2V4dF9hY2sgKmV4dGFjaylcbi0tXG5uZXQvYnJpZGdlL2JyX21ycF9uZXRsaW5rLmMtMjA4LVx0c3RydWN0IG5sYXR0ciAqdGJbSUZMQV9CUklER0VfTVJQX1NUQVJUX1RFU1RfTUFYICYjNDM7IDFdO1xubmV0L2JyaWRnZS9icl9tcnBfbmV0bGluay5jOjIwOTpcdHN0cnVjdCBicl9tcnBfc3RhcnRfdGVzdCB0ZXN0O1xubmV0L2JyaWRnZS9icl9tcnBfbmV0bGluay5jLTIxMC1cdGludCBlcnI7XG4tLVxubmV0L2JyaWRnZS9icl9tcnBfbmV0bGluay5jLTIxMi1cdGVyciA9IG5sYV9wYXJzZV9uZXN0ZWQodGIsIElGTEFfQlJJREdFX01SUF9TVEFSVF9URVNUX01BWCwgYXR0cixcbm5ldC9icmlkZ2UvYnJfbXJwX25ldGxpbmsuYzoyMTM6XHRcdFx0ICAgICAgIGJyX21ycF9zdGFydF90ZXN0X3BvbGljeSwgZXh0YWNrKTtcbm5ldC9icmlkZ2UvYnJfbXJwX25ldGxpbmsuYy0yMTQtXHRpZiAoZXJyKVxuLS1cbm5ldC9icmlkZ2UvYnJfbXJwX25ldGxpbmsuYy0yMzctXG5uZXQvYnJpZGdlL2JyX21ycF9uZXRsaW5rLmM6MjM4Olx0cmV0dXJuIGJyX21ycF9zdGFydF90ZXN0KGJyLCBcdTAwMjZ0ZXN0KTtcbm5ldC9icmlkZ2UvYnJfbXJwX25ldGxpbmsuYy0yMzktfVxuLS1cbm5ldC9icmlkZ2UvYnJfbXJwX25ldGxpbmsuYz0zNTY9aW50IGJyX21ycF9wYXJzZShzdHJ1Y3QgbmV0X2JyaWRnZSAqYnIsIHN0cnVjdCBuZXRfYnJpZGdlX3BvcnQgKnAsXG4tLVxubmV0L2JyaWRnZS9icl9tcnBfbmV0bGluay5jLTQxNC1cdGlmICh0YltJRkxBX0JSSURHRV9NUlBfU1RBUlRfVEVTVF0pIHtcbm5ldC9icmlkZ2UvYnJfbXJwX25ldGxpbmsuYzo0MTU6XHRcdGVyciA9IGJyX21ycF9zdGFydF90ZXN0X3BhcnNlKGJyLFxubmV0L2JyaWRnZS9icl9tcnBfbmV0bGluay5jLTQxNi1cdFx0XHRcdFx0ICAgICAgdGJbSUZMQV9CUklER0VfTVJQX1NUQVJUX1RFU1RdLFxuLS1cbm5ldC9icmlkZ2UvYnJfcHJpdmF0ZV9tcnAuaD03ND1pbnQgYnJfbXJwX3NldF9yaW5nX3JvbGUoc3RydWN0IG5ldF9icmlkZ2UgKmJyLCBzdHJ1Y3QgYnJfbXJwX3Jpbmdfcm9sZSAqcm9sZSk7XG5uZXQvYnJpZGdlL2JyX3ByaXZhdGVfbXJwLmg6NzU6aW50IGJyX21ycF9zdGFydF90ZXN0KHN0cnVjdCBuZXRfYnJpZGdlICpiciwgc3RydWN0IGJyX21ycF9zdGFydF90ZXN0ICp0ZXN0KTtcbm5ldC9icmlkZ2UvYnJfcHJpdmF0ZV9tcnAuaC03Ni1pbnQgYnJfbXJwX3NldF9pbl9zdGF0ZShzdHJ1Y3QgbmV0X2JyaWRnZSAqYnIsIHN0cnVjdCBicl9tcnBfaW5fc3RhdGUgKnN0YXRlKTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjYgMjI6NDA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogOTY1MAoJCQkJCQkJb3V0cHV0OiAzOAoJCQkJCQkJdGhvdWdodHM6IDE3MwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipGdXp6aW5nIEZvY3VzOiBCcmlkZ2UgTVJQIFRlc3QgSW1wbGVtZW50YXRpb24qKgoKT2theSwgc28gSSYjMzk7dmUgcmVjZWl2ZWQgdGhlIGBuZXRsaW5rYCB0cmlnZ2VyIGZvciBgSUZMQV9CUklER0VfTVJQX1NUQVJUX1RFU1RgLiBUaGlzIGlzIGdvb2QsIGl0IG1lYW5zIHRoZSB1bmRlcmx5aW5nIGNvZGUgcGF0aCBpcyBhY3R1YWxseSByZWFjaGFibGUgYW5kIGZ1bmN0aW9uYWwg4oCTIHByb2dyZXNzISBOb3csIEkgbmVlZCB0byBwaW5wb2ludCB0aGUga2V5IGZ1bmN0aW9ucyBmb3IgbXkgZnV6emluZyBlZmZvcnRzLiBMZXQmIzM5O3Mgc2VlLi4uCgpJJiMzOTt2ZSBpZGVudGlmaWVkIHNldmVyYWwgZnVuY3Rpb25zIGluIHRoZSBgYnJfbXJwYCBjb2RlLiBgYnJfbXJwX2FsbG9jX3Rlc3Rfc2tiYCwgYGJyX21ycF90ZXN0X3dvcmtfZXhwaXJlZGAsIGFuZCBgYnJfbXJwX2luc3RhbmNlX3BhcnNlYCBhbmQgYGJyX21ycF9zdGFydF90ZXN0X3BhcnNlYCBhcmUgYWxsIHN0YXRpYywgbWVhbmluZyB0aGV5JiMzOTtyZSBpbnRlcm5hbCB0byB0aGUgbW9kdWxlLCBidXQgcG90ZW50aWFsbHkgc3RpbGwgdnVsbmVyYWJsZS4gVGhlIG5vbi1zdGF0aWMgb25lcyBhcmUgYGJyX21ycF9zdGFydF90ZXN0YCwgYGJyX21ycF9hZGRgLCBhbmQgYGJyX21ycF9wYXJzZWAuIFNpbmNlIHRoZSB0cmlnZ2VyIGluaXRpYXRlZCB0aGUgcHJvY2VzcywgaXQgbWFrZXMgc2Vuc2UgdG8gc3RhcnQgd2l0aCB0aGUgZW50cnkgcG9pbnRzLgoKSSYjMzk7bGwgc3RhcnQgd2l0aCBhIGRlZXAgZGl2ZSBpbnRvIGBicl9tcnBfc3RhcnRfdGVzdGAgYW5kIGBicl9tcnBfYWRkYC4gSSYjMzk7bGwgYW5hbHl6ZSB0aGVpciBsb2dpYywgYXJndW1lbnQgaGFuZGxpbmcsIGFuZCBhbnkgcG90ZW50aWFsIGFyZWFzIGZvciBpbnB1dCB2YWxpZGF0aW9uIGZsYXdzLiBUaGVzZSB0d28gZnVuY3Rpb25zIGFyZSBsaWtlbHkgd2hlcmUgdGhlIGluaXRpYWwgZGF0YSBwcm9jZXNzaW5nIGFuZCBzZXR1cCBoYXBwZW5zLiBJZiB0aGVyZSBhcmUgdnVsbmVyYWJpbGl0aWVzIHRoZXJlLCB0aGV5IGNvdWxkIHBvdGVudGlhbGx5IGxlYWQgdG8gY3Jhc2hlcyBvciBvdGhlciB1bmRlc2lyYWJsZSBiZWhhdmlvciB0aGF0IGNhbiBiZSBleHBsb2l0ZWQgaW4gYSBmdXp6aW5nIGNhbXBhaWduLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNiAyMjo0MDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDticl9tcnBfc3RhcnRfdGVzdCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9icmlkZ2UvYnJfbXJwLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L2JyaWRnZS9icl9tcnAuYz02NzI9aW50IGJyX21ycF9zZXRfcmluZ19yb2xlKHN0cnVjdCBuZXRfYnJpZGdlICpicixcbi0tXG5uZXQvYnJpZGdlL2JyX21ycC5jLTcwMi0gKi9cbm5ldC9icmlkZ2UvYnJfbXJwLmM6NzAzOmludCBicl9tcnBfc3RhcnRfdGVzdChzdHJ1Y3QgbmV0X2JyaWRnZSAqYnIsXG5uZXQvYnJpZGdlL2JyX21ycC5jOjcwNDpcdFx0ICAgICAgc3RydWN0IGJyX21ycF9zdGFydF90ZXN0ICp0ZXN0KVxubmV0L2JyaWRnZS9icl9tcnAuYy03MDUte1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNiAyMjo0MDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMDMwNQoJCQkJCQkJb3V0cHV0OiA0MAoJCQkJCQkJdGhvdWdodHM6IDIyNwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIEJ1ZyBGaXggYW5kIFJlbGV2YW50IEZ1bmN0aW9ucyoqCgpPa2F5LCBzbyB0aGlzIHBhdGNoIGFkZHJlc3NlcyBhbiB1bmluaXRpYWxpemVkIG1lbW9yeSBpc3N1ZSB3aXRoaW4gYGJyX21ycF9hbGxvY190ZXN0X3NrYmAuIE15IGluaXRpYWwgdGhvdWdodCBpcyB0byBwaW5wb2ludCB0aGUgbW9zdCBhcHByb3ByaWF0ZSBmb2N1cyBzeW1ib2wgdG8gdW5kZXJzdGFuZCB0aGUgYnVnJiMzOTtzIHJvb3QgY2F1c2UgYW5kIGltcGFjdC4gSXQgc2VlbXMgYGJyX21ycF9hbGxvY190ZXN0X3NrYmAgaXMgY2FsbGVkIGJ5IGBicl9tcnBfdGVzdF93b3JrX2V4cGlyZWRgLCB3aGljaCwgaW4gdHVybiwgaXMgc2NoZWR1bGVkIGJ5IGBicl9tcnBfc3RhcnRfdGVzdGAuCgpHaXZlbiB0aGUgcHJlZmVyZW5jZSBmb3Igbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnRzLCBgYnJfbXJwX3N0YXJ0X3Rlc3RgIGltbWVkaWF0ZWx5IHN0YW5kcyBvdXQgYXMgYSBzdHJvbmcgY2FuZGlkYXRlLiBgYnJfbXJwX3Rlc3Rfd29ya19leHBpcmVkYCBpcyByZWxldmFudCwgYnV0IGl0JiMzOTtzIGEgc3RhdGljIGZ1bmN0aW9uLCBzbyBsZXQmIzM5O3Mga2VlcCBpdCBpbiBtaW5kLiBJcyBgYnJfbXJwX3BhcnNlYCBhIG5ldGxpbmsgZW50cnkgcG9pbnQ/IEdpdmVuIHRoYXQgcHJlZmVyZW5jZSwgaXMgdGhlcmUgYW5vdGhlciBlbnRyeSBwb2ludD8KClRvIGNvbmZpcm0gbXkgdW5kZXJzdGFuZGluZywgSSBuZWVkIHRvIHRyYWNlIHRoaXMgZnVydGhlci4gU3BlY2lmaWNhbGx5LCBsZXQgbWUgZGlnIGRlZXBlciBpbnRvIGBicl9tcnBfdGVzdF93b3JrX2V4cGlyZWRgIHRvIHNlZSBob3cgaXQgdXNlcyBgYnJfbXJwX2FsbG9jX3Rlc3Rfc2tiYC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjYgMjI6NDA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7YnJfbXJwX3Rlc3Rfd29ya19leHBpcmVkJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L2JyaWRnZS9icl9tcnAuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvYnJpZGdlL2JyX21ycC5jPTI0MD1zdGF0aWMgc3RydWN0IHNrX2J1ZmYgKmJyX21ycF9hbGxvY19pbl90ZXN0X3NrYihzdHJ1Y3QgYnJfbXJwICptcnAsXG4tLVxubmV0L2JyaWRnZS9icl9tcnAuYy0yNzktICovXG5uZXQvYnJpZGdlL2JyX21ycC5jOjI4MDpzdGF0aWMgdm9pZCBicl9tcnBfdGVzdF93b3JrX2V4cGlyZWQoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxubmV0L2JyaWRnZS9icl9tcnAuYy0yODEte1xuLS1cbm5ldC9icmlkZ2UvYnJfbXJwLmM9NDk4PWludCBicl9tcnBfYWRkKHN0cnVjdCBuZXRfYnJpZGdlICpiciwgc3RydWN0IGJyX21ycF9pbnN0YW5jZSAqaW5zdGFuY2UpXG4tLVxubmV0L2JyaWRnZS9icl9tcnAuYy01NDMtXG5uZXQvYnJpZGdlL2JyX21ycC5jOjU0NDpcdElOSVRfREVMQVlFRF9XT1JLKFx1MDAyNm1ycC1cdTAwM2V0ZXN0X3dvcmssIGJyX21ycF90ZXN0X3dvcmtfZXhwaXJlZCk7XG5uZXQvYnJpZGdlL2JyX21ycC5jLTU0NS1cdElOSVRfREVMQVlFRF9XT1JLKFx1MDAyNm1ycC1cdTAwM2Vpbl90ZXN0X3dvcmssIGJyX21ycF9pbl90ZXN0X3dvcmtfZXhwaXJlZCk7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI2IDIyOjQwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDExMDk3CgkJCQkJCQlvdXRwdXQ6IDI4CgkJCQkJCQl0aG91Z2h0czogMjcxCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgQnVnIEZpeCoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBmaXggcmVsYXRlZCB0byB1bmluaXRpYWxpemVkIG1lbW9yeSBpbiBgYnJfbXJwX2FsbG9jX3Rlc3Rfc2tiYC4gTXkgaW5pdGlhbCB0aG91Z2h0IHdhcyB0byBleGFtaW5lIGBicl9tcnBfdGVzdF93b3JrX2V4cGlyZWRgIGJlY2F1c2UgdGhhdCYjMzk7cyB0aGUgZnVuY3Rpb24gYWN0dWFsbHkgcnVubmluZyB0aGUgYWx0ZXJlZCBjb2RlLiBUaGUgcHJvYmxlbSBpcyB0aGF0IGl0JiMzOTtzIGEgc3RhdGljIGZ1bmN0aW9uLiBUaGF0IG1lYW5zIEkgbmVlZCB0byB0cmFjZSBiYWNrIGZyb20gdGhlcmUuCgpgYnJfbXJwX3N0YXJ0X3Rlc3RgIGxvb2tzIHByb21pc2luZyBhcyB0aGUgZW50cnkgcG9pbnQgdGhhdCBzY2hlZHVsZXMgdGhlIHdvcmssIHNvIEkmIzM5O2xsIGRlZmluaXRlbHkgaW5jbHVkZSB0aGF0IGluIHRoZSBhbmFseXNpcy4gQWxzbywgYGJyX21ycF9wYXJzZWAgbWFrZXMgc2Vuc2UgdG8gaW5jbHVkZSBpbiBteSBleGFtaW5hdGlvbiBvZiB0aGlzIGlzc3VlLgoKTm93LCBsZXQmIzM5O3MgbG9vayBhdCB0aGUgcGF0Y2ggaXRzZWxmLiBBaCwgSSBzZWUgaXQmIzM5O3MgYWJvdXQgYWxsb2NhdGluZyBtZW1vcnkgZm9yIGEgc3ViLVRMViBpbiBhbiBza2IgYW5kIHNldHRpbmcgdGhlIGxlbmd0aCBmaWVsZC4gVGhlIGNydWNpYWwgcGFydCBoZXJlIGlzIHRoZSBhZGRpdGlvbiBvZiBgc3ViX3Rsdi0mZ3Q7bGVuZ3RoID0gMHgwO2AgYW5kLCBtb3JlIGltcG9ydGFudGx5LCB0aGUgY2hhbmdlIGZyb20gYHNrYl9wdXQoc2tiLCBNUlBfT1BUX1BBRERJTkcpO2AgdG8gYHNrYl9wdXRfemVybyhza2IsIE1SUF9PUFRfUEFERElORyk7YC4gVGhhdCYjMzk7cyB3aGVyZSB0aGUgaW5pdGlhbGl6YXRpb24gb2YgdGhlIGFsbG9jYXRlZCBtZW1vcnkgY29tZXMgaW4uIEl0JiMzOTtzIGluaXRpYWxpemluZyB0aGUgc3ViLVRMViBsZW5ndGggdG8gMCwgYW5kIHplcm9pbmcgdGhlIHBhZGRpbmcuIEl0JiMzOTtzIGFsbCBhYm91dCBhdm9pZGluZyB0aGF0IHVuaW5pdGlhbGl6ZWQgbWVtb3J5LiBTbywgdGhpcyBmaXggdGFyZ2V0cyB0aGUgYWxsb2NhdGlvbiBpbnNpZGUgYGJyX21ycF9hbGxvY190ZXN0X3NrYmAsIGFzIGV4cGVjdGVkLgoKSSBoYXZlIHRvIG1ha2Ugc3VyZSB0aGUgQ09ORklHIHNldHRpbmdzIGFyZSB3aGF0IEkgZXhwZWN0LiBJIG5lZWQgdG8gZG91YmxlLWNoZWNrIHRoYXQgYEJSSURHRV9NUlBgIGlzIHRoZSBjb3JyZWN0IHNldHRpbmcuIEkgYWxzbyBuZWVkIHRvIGJlIGNlcnRhaW4gdGhhdCBgQlJJREdFYCBpcyBhbHNvIGVuYWJsZWQuIEkgc2hvdWxkIHByb2JhYmx5IHJlLWV4YW1pbmUgYG5ldC9icmlkZ2UvS2NvbmZpZ2AgdG8gYmUgY2VydGFpbi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjYgMjI6NDA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIEJSSURHRSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9icmlkZ2UvS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvYnJpZGdlL0tjb25maWctNS1cbm5ldC9icmlkZ2UvS2NvbmZpZzo2OmNvbmZpZyBCUklER0Vcbm5ldC9icmlkZ2UvS2NvbmZpZy03LVx0dHJpc3RhdGUgXCYjMzQ7ODAyLjFkIEV0aGVybmV0IEJyaWRnaW5nXCYjMzQ7XG4tLVxubmV0L2JyaWRnZS9LY29uZmlnLTM1LVxubmV0L2JyaWRnZS9LY29uZmlnOjM2OmNvbmZpZyBCUklER0VfSUdNUF9TTk9PUElOR1xubmV0L2JyaWRnZS9LY29uZmlnLTM3LVx0Ym9vbCBcJiMzNDtJR01QL01MRCBzbm9vcGluZ1wmIzM0O1xuLS1cbm5ldC9icmlkZ2UvS2NvbmZpZy00OS1cbm5ldC9icmlkZ2UvS2NvbmZpZzo1MDpjb25maWcgQlJJREdFX1ZMQU5fRklMVEVSSU5HXG5uZXQvYnJpZGdlL0tjb25maWctNTEtXHRib29sIFwmIzM0O1ZMQU4gZmlsdGVyaW5nXCYjMzQ7XG4tLVxubmV0L2JyaWRnZS9LY29uZmlnLTYzLVxubmV0L2JyaWRnZS9LY29uZmlnOjY0OmNvbmZpZyBCUklER0VfTVJQXG5uZXQvYnJpZGdlL0tjb25maWctNjUtXHRib29sIFwmIzM0O01SUCBwcm90b2NvbFwmIzM0O1xuLS1cbm5ldC9icmlkZ2UvS2NvbmZpZy03NS1cbm5ldC9icmlkZ2UvS2NvbmZpZzo3Njpjb25maWcgQlJJREdFX0NGTVxubmV0L2JyaWRnZS9LY29uZmlnLTc3LVx0Ym9vbCBcJiMzNDtDRk0gcHJvdG9jb2xcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yOS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjYgMjI6NDA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTIwMjcKCQkJCQkJCW91dHB1dDogNDEKCQkJCQkJCXRob3VnaHRzOiAzOQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgYW4gZXhwZXJ0JiMzOTtzIGludGVybmFsIG1vbm9sb2d1ZToKCioqRGVlcCBEaXZlIGludG8gQ29uZmlndXJhdGlvbiBhbmQgQ29kZSBVc2FnZSoqCgpSaWdodCwgc28gSSYjMzk7bSBmb2N1c2luZyBvbiB0aGUgY29uZmlndXJhdGlvbiBoZXJlLiBgQlJJREdFYCBhbmQgYEJSSURHRV9NUlBgIGFyZSB0aGUgY3JpdGljYWwgY29uZmlnIG9wdGlvbnMsIHRoYXQmIzM5O3MgY2xlYXIuIE5vdywgYmVmb3JlIEkgbW92ZSBvbiwgSSB3YW50IHRvIGNvbmZpcm0gc29tZXRoaW5nIGluIG15IG1pbmQuIFRoZSBgYnJfbXJwX2FsbG9jX3Rlc3Rfc2tiYCBmdW5jdGlvbi4uLiBJIG5lZWQgdG8gcXVpY2tseSB2ZXJpZnkgdGhhdCBpdCYjMzk7cyBvbmx5IHVzZWQgd2hlcmUgSSAqZXhwZWN0KiBpdCB0byBiZS4gQW55IHVuZXhwZWN0ZWQgY2FsbHMgdG8gaXQgY291bGQgaW5kaWNhdGUgc29tZXRoaW5nIEkgbmVlZCB0byBpbnZlc3RpZ2F0ZSBmdXJ0aGVyLiBBIHF1aWNrIHNlYXJjaCBzaG91bGQgZ2l2ZSBtZSB0aGUgYXNzdXJhbmNlIEkgbmVlZCB0aGF0IGV2ZXJ5dGhpbmcmIzM5O3MgYmVoYXZpbmcgYXMgaW50ZW5kZWQgaW4gdGhpcyBhcmVhLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNiAyMjo0MDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDticl9tcnBfYWxsb2NfdGVzdF9za2ImIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvYnJpZGdlL2JyX21ycC5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9icmlkZ2UvYnJfbXJwLmM9MTcxPXN0YXRpYyB2b2lkIGJyX21ycF9za2JfY29tbW9uKHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBicl9tcnAgKm1ycClcbi0tXG5uZXQvYnJpZGdlL2JyX21ycC5jLTE4MS1cbm5ldC9icmlkZ2UvYnJfbXJwLmM6MTgyOnN0YXRpYyBzdHJ1Y3Qgc2tfYnVmZiAqYnJfbXJwX2FsbG9jX3Rlc3Rfc2tiKHN0cnVjdCBicl9tcnAgKm1ycCxcbm5ldC9icmlkZ2UvYnJfbXJwLmMtMTgzLVx0XHRcdFx0XHQgICAgIHN0cnVjdCBuZXRfYnJpZGdlX3BvcnQgKnAsXG4tLVxubmV0L2JyaWRnZS9icl9tcnAuYz0yODA9c3RhdGljIHZvaWQgYnJfbXJwX3Rlc3Rfd29ya19leHBpcmVkKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaylcbi0tXG5uZXQvYnJpZGdlL2JyX21ycC5jLTMxMi1cdFx0aWYgKCFtcnAtXHUwMDNldGVzdF9tb25pdG9yKSB7XG5uZXQvYnJpZGdlL2JyX21ycC5jOjMxMzpcdFx0XHRza2IgPSBicl9tcnBfYWxsb2NfdGVzdF9za2IobXJwLCBwLFxubmV0L2JyaWRnZS9icl9tcnAuYy0zMTQtXHRcdFx0XHRcdFx0ICAgIEJSX01SUF9QT1JUX1JPTEVfUFJJTUFSWSk7XG4tLVxubmV0L2JyaWRnZS9icl9tcnAuYy0zMjgtXHRcdGlmICghbXJwLVx1MDAzZXRlc3RfbW9uaXRvcikge1xubmV0L2JyaWRnZS9icl9tcnAuYzozMjk6XHRcdFx0c2tiID0gYnJfbXJwX2FsbG9jX3Rlc3Rfc2tiKG1ycCwgcCxcbm5ldC9icmlkZ2UvYnJfbXJwLmMtMzMwLVx0XHRcdFx0XHRcdCAgICBCUl9NUlBfUE9SVF9ST0xFX1NFQ09OREFSWSk7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI2IDIyOjQwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDEyNjI5CgkJCQkJCQlvdXRwdXQ6IDEyOAoJCQkJCQkJdGhvdWdodHM6IDI2MwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBBbmFseXNpcyBvZiB0aGUgYGJyX21ycF90ZXN0X3dvcmtfZXhwaXJlZGAgVnVsbmVyYWJpbGl0eSBGaXgqKgoKT2theSwgc28gdGhpcyBwYXRjaCBpcyBzcGVjaWZpY2FsbHkgYWRkcmVzc2luZyBhbiBpc3N1ZSB3aXRoaW4gYGJyX21ycF90ZXN0X3dvcmtfZXhwaXJlZGAuIE15IGltbWVkaWF0ZSB0aG91Z2h0IGlzIHRvIHZlcmlmeSB3aGV0aGVyIHRoaXMgZnVuY3Rpb24gaXMgdGhlIHNvbGUgc2NoZWR1bGVyIGZvciBgdGVzdF93b3JrYC4gQSBxdWljayBsb29rIHJldmVhbHMgdGhhdCBpdCAqZG9lcyogcmVzY2hlZHVsZSBpdHNlbGYgdXNpbmcgYHF1ZXVlX2RlbGF5ZWRfd29ya2AsIGFuZCBpdCYjMzk7cyBpbml0aWFsbHkgc2NoZWR1bGVkIGJ5IGBicl9tcnBfc3RhcnRfdGVzdGAuCgpUaGVyZWZvcmUsIHRoZSBjcml0aWNhbCBmdW5jdGlvbnMgdG8gZm9jdXMgb24gYXJlIGBicl9tcnBfc3RhcnRfdGVzdGAgYW5kLCBzaW5jZSB3ZSYjMzk7cmUgZGVhbGluZyB3aXRoIG5ldGxpbmsgY29uZmlndXJhdGlvbiwgSSYjMzk7bGwgYWRkIGBicl9tcnBfcGFyc2VgIHRvIHRoYXQgbGlzdC4gVGhhdCBsaWtlbHkgaGFuZGxlcyB0aGUgaW5pdGlhbCB0cmlnZ2VyLgoKTm93LCBsZXQmIzM5O3MgYXNzZW1ibGUgdGhlIGtleSBmaW5kaW5ncy4gVGhpcyBsb29rcyBsaWtlIGEgcHJpbWUgdGFyZ2V0IGZvciBmdXp6aW5nLiBUaGUgcGF0Y2ggY29ycmVjdHMgYW4gdW5pbml0aWFsaXplZCBtZW1vcnkgaXNzdWUgaW4gYGJyX21ycF9hbGxvY190ZXN0X3NrYmAsIHdoaWNoIGlzIGNhbGxlZCB3aXRoaW4gYGJyX21ycF90ZXN0X3dvcmtfZXhwaXJlZGAuIFRoZSB3b3JrZXIgaXRzZWxmIGlzIHNjaGVkdWxlZCBieSBgYnJfbXJwX3N0YXJ0X3Rlc3RgLCB3aGljaCBpcyByZWFjaGVkIHRocm91Z2ggYSBuZXRsaW5rIGNvbmZpZ3VyYXRpb24sIGhlbmNlIHRoZSBpbmNsdXNpb24gb2YgYGJyX21ycF9wYXJzZWAuIEdpdmVuIHRoYXQgdGhlIHZ1bG5lcmFiaWxpdHkgZXhpc3RzIHdpdGhpbiB0aGUgd29ya2VyIGZ1bmN0aW9uLCBJJiMzOTtkIHNheSB0aGlzIGlzIGEgd29ydGh3aGlsZSBmdXp6aW5nIHRhcmdldC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjYgMjI6NDE8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0JSSURHRSYjMzQ7LAogICAgJiMzNDtCUklER0VfTVJQJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7YnJfbXJwX3N0YXJ0X3Rlc3QmIzM0OywKICAgICYjMzQ7YnJfbXJwX3BhcnNlJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGZpeGVzIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IGluIGBicl9tcnBfYWxsb2NfdGVzdF9za2JgIHdoaWNoIGlzIGNhbGxlZCBieSB0aGUgYGJyX21ycF90ZXN0X3dvcmtfZXhwaXJlZGAgd29ya2VyLiBUaGUgd29ya2VyIGlzIHNjaGVkdWxlZCBieSBgYnJfbXJwX3N0YXJ0X3Rlc3RgIHdoaWNoIGlzIHJlYWNoYWJsZSB2aWEgbmV0bGluayBjb25maWd1cmF0aW9uIChgYnJfbXJwX3BhcnNlYCkuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0JSSURHRSYjMzQ7LAogICAgJiMzNDtCUklER0VfTVJQJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7YnJfbXJwX3N0YXJ0X3Rlc3QmIzM0OywKICAgICYjMzQ7YnJfbXJwX3BhcnNlJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGZpeGVzIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IGluIGBicl9tcnBfYWxsb2NfdGVzdF9za2JgIHdoaWNoIGlzIGNhbGxlZCBieSB0aGUgYGJyX21ycF90ZXN0X3dvcmtfZXhwaXJlZGAgd29ya2VyLiBUaGUgd29ya2VyIGlzIHNjaGVkdWxlZCBieSBgYnJfbXJwX3N0YXJ0X3Rlc3RgIHdoaWNoIGlzIHJlYWNoYWJsZSB2aWEgbmV0bGluayBjb25maWd1cmF0aW9uIChgYnJfbXJwX3BhcnNlYCkuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wNy0yNlQyMjo0MDowNy42NTkyNjY1NjlaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1NTA2OTQ1NTkxOSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJCUklER0VcIixcbiAgICBcIkJSSURHRV9NUlBcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJicl9tcnBfc3RhcnRfdGVzdFwiLFxuICAgIFwiYnJfbXJwX3BhcnNlXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggZml4ZXMgdW5pbml0aWFsaXplZCBtZW1vcnkgaW4gYGJyX21ycF9hbGxvY190ZXN0X3NrYmAgd2hpY2ggaXMgY2FsbGVkIGJ5IHRoZSBgYnJfbXJwX3Rlc3Rfd29ya19leHBpcmVkYCB3b3JrZXIuIFRoZSB3b3JrZXIgaXMgc2NoZWR1bGVkIGJ5IGBicl9tcnBfc3RhcnRfdGVzdGAgd2hpY2ggaXMgcmVhY2hhYmxlIHZpYSBuZXRsaW5rIGNvbmZpZ3VyYXRpb24gKGBicl9tcnBfcGFyc2VgKS5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjZUMjI6NDA6MDcuNjU5Mjc0MjI5WiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0MDExMjgyMjksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCBlMmU5MWJlNDE5ZjEyMTdkYTlkZGRlYmY1MWE2NDZiZDQ3Mzc2YTUwXFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBTdW4gSnVsIDI2IDIyOjQwOjA2IDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL25ldC9icmlkZ2UvYnJfbXJwLmMgYi9uZXQvYnJpZGdlL2JyX21ycC5jXFxuaW5kZXggM2Y3MTI2YTdkNzIwMDMuLmE1NTQ4ZjQ3NTYwNGM1IDEwMDY0NFxcbi0tLSBhL25ldC9icmlkZ2UvYnJfbXJwLmNcXG4rKysgYi9uZXQvYnJpZGdlL2JyX21ycC5jXFxuQEAgLTIyNiw5ICsyMjYsMTAgQEAgc3RhdGljIHN0cnVjdCBza19idWZmICpicl9tcnBfYWxsb2NfdGVzdF9za2Ioc3RydWN0IGJyX21ycCAqbXJwLFxcbiBcXG4gXFx0XFx0c3ViX3RsdiA9IHNrYl9wdXQoc2tiLCBzaXplb2YoKnN1Yl90bHYpKTtcXG4gXFx0XFx0c3ViX3Rsdi1cXHUwMDNldHlwZSA9IEJSX01SUF9TVUJfVExWX0hFQURFUl9URVNUX0FVVE9fTUdSO1xcbitcXHRcXHRzdWJfdGx2LVxcdTAwM2VsZW5ndGggPSAweDA7XFxuIFxcbiBcXHRcXHQvKiAzMiBiaXQgYWxsaWdtZW50IHNoYWxsIGJlIGVuc3VyZWQgdGhlcmVmb3JlIGFkZCAyIGJ5dGVzICovXFxuLVxcdFxcdHNrYl9wdXQoc2tiLCBNUlBfT1BUX1BBRERJTkcpO1xcbitcXHRcXHRza2JfcHV0X3plcm8oc2tiLCBNUlBfT1BUX1BBRERJTkcpO1xcbiBcXHR9XFxuIFxcbiBcXHRicl9tcnBfc2tiX3Rsdihza2IsIEJSX01SUF9UTFZfSEVBREVSX0VORCwgMHgwKTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjZUMjI6NDA6MDguMDYxMTk2MDM4WiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiYmVzdC1leHBlbnNpdmUiLCJEdXJhdGlvbiI6NTQ2Njc1MTQzNDksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiQlJJREdFXCIsXG4gICAgXCJCUklER0VfTVJQXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiYnJfbXJwX3N0YXJ0X3Rlc3RcIixcbiAgICBcImJyX21ycF9wYXJzZVwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGZpeGVzIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IGluIGBicl9tcnBfYWxsb2NfdGVzdF9za2JgIHdoaWNoIGlzIGNhbGxlZCBieSB0aGUgYGJyX21ycF90ZXN0X3dvcmtfZXhwaXJlZGAgd29ya2VyLiBUaGUgd29ya2VyIGlzIHNjaGVkdWxlZCBieSBgYnJfbXJwX3N0YXJ0X3Rlc3RgIHdoaWNoIGlzIHJlYWNoYWJsZSB2aWEgbmV0bGluayBjb25maWd1cmF0aW9uIChgYnJfbXJwX3BhcnNlYCkuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmVcbmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHlcbnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuXG5cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6XG4tIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuXG4tIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLlxuLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuXG4tIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSxcbiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLlxuLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCxcbiAgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuXG4tIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpXG4gIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy5cblxuSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaFxudG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuXG5cbldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOlxuMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy5cbiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLlxuICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zXG4gICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS5cbjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLlxuICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuICAgQWxzbyBjaGVjayBcImRlcGVuZHMgb25cIiBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3NcbiAgIG5lZWRlZCBmb3IgS2J1aWxkIHRvIGNvbXBpbGUgdGhlIGNvZGUgc3RhdGljYWxseSBpbnRvIHZtbGludXguIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlnc1xuICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IGUyZTkxYmU0MTlmMTIxN2RhOWRkZGViZjUxYTY0NmJkNDczNzZhNTBcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgU3VuIEp1bCAyNiAyMjo0MDowNiAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL25ldC9icmlkZ2UvYnJfbXJwLmMgYi9uZXQvYnJpZGdlL2JyX21ycC5jXG5pbmRleCAzZjcxMjZhN2Q3MjAwMy4uYTU1NDhmNDc1NjA0YzUgMTAwNjQ0XG4tLS0gYS9uZXQvYnJpZGdlL2JyX21ycC5jXG4rKysgYi9uZXQvYnJpZGdlL2JyX21ycC5jXG5AQCAtMjI2LDkgKzIyNiwxMCBAQCBzdGF0aWMgc3RydWN0IHNrX2J1ZmYgKmJyX21ycF9hbGxvY190ZXN0X3NrYihzdHJ1Y3QgYnJfbXJwICptcnAsXG4gXG4gXHRcdHN1Yl90bHYgPSBza2JfcHV0KHNrYiwgc2l6ZW9mKCpzdWJfdGx2KSk7XG4gXHRcdHN1Yl90bHYtXHUwMDNldHlwZSA9IEJSX01SUF9TVUJfVExWX0hFQURFUl9URVNUX0FVVE9fTUdSO1xuK1x0XHRzdWJfdGx2LVx1MDAzZWxlbmd0aCA9IDB4MDtcbiBcbiBcdFx0LyogMzIgYml0IGFsbGlnbWVudCBzaGFsbCBiZSBlbnN1cmVkIHRoZXJlZm9yZSBhZGQgMiBieXRlcyAqL1xuLVx0XHRza2JfcHV0KHNrYiwgTVJQX09QVF9QQURESU5HKTtcbitcdFx0c2tiX3B1dF96ZXJvKHNrYiwgTVJQX09QVF9QQURESU5HKTtcbiBcdH1cbiBcbiBcdGJyX21ycF9za2JfdGx2KHNrYiwgQlJfTVJQX1RMVl9IRUFERVJfRU5ELCAweDApO1xuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjZUMjI6NDA6MDguMDYxMTk3NTY4WiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6Mzg0MDkxODExMCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgYSBCcmlkZ2UgTVJQIFBhdGNoKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBmb3IgYG5ldC9icmlkZ2UvYnJfbXJwLmNgLiBJdCBzZWVtcyBsaWtlIGEgcmVsYXRpdmVseSBzdHJhaWdodGZvcndhcmQgbW9kaWZpY2F0aW9uIHRvIGBicl9tcnBfYWxsb2NfdGVzdF9za2JgLiBUaGUga2V5IGNoYW5nZSBoZXJlIGludm9sdmVzIHRoZSBhbGxvY2F0aW9uIG9mIGEgc3ViLVRMViB3aXRoaW4gYW4gU0tCLiBTcGVjaWZpY2FsbHksIGl0J3MgaW5pdGlhbGl6aW5nIGBzdWJfdGx2LVx1MDAzZWxlbmd0aGAgdG8gemVybywgd2hpY2ggaXMgZ29vZCBwcmFjdGljZS4gV2XigJlyZSBhbHNvIG5vdyB1c2luZyBgc2tiX3B1dF96ZXJvYCBpbnN0ZWFkIG9mIGp1c3QgYHNrYl9wdXRgIHRvIGVuc3VyZSB0aGF0IHBhZGRpbmcgaXMgemVyb2VkIG91dC4gVGhpcyBpcyBhIHNvbGlkIGFwcHJvYWNoIHRvIHByZXZlbnQgcG90ZW50aWFsIHNlY3VyaXR5IHZ1bG5lcmFiaWxpdGllcyBkdWUgdG8gdW5pbml0aWFsaXplZCBtZW1vcnkgZXhwb3N1cmUsIGVzcGVjaWFsbHkgaW4gYSBuZXR3b3JrIGNvbnRleHQuXG5cbk5vdywgSSB3YW50IHRvIGNvbmZpcm0gdGhlIGNvbnRleHQsIGFuZCBob3cgaW1wb3J0YW50IHRoZXNlIGNoYW5nZXMgYXJlLiBJIHNob3VsZCBjaGVjayBleGFjdGx5IHdoZXJlIGBicl9tcnBfYWxsb2NfdGVzdF9za2JgIGlzIGNhbGxlZCB3aXRoaW4gdGhlIGxhcmdlciBNUlAgZnJhbWV3b3JrIHRvIGFzc2VzcyB0aGUgaW1wYWN0IG9mIHRoZXNlIGFsdGVyYXRpb25zLiBUaGlzIHdpbGwgaGVscCBtZSB1bmRlcnN0YW5kIGlmIHRoaXMgaXMgYSBjcml0aWNhbCBjb2RlIHBhdGggb3IgYSBsZXNzIGZyZXF1ZW50bHkgdXNlZCBmdW5jdGlvbi5cblxuXG4iLCJJbnB1dFRva2VucyI6MjEzNywiT3V0cHV0VG9rZW5zIjo0MSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIzMiwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI2VDIyOjQwOjExLjkwMjExNzk1OFoiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo2MjU5MDU1OCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJicl9tcnBfYWxsb2NfdGVzdF9za2JcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L2JyaWRnZS9icl9tcnAuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvYnJpZGdlL2JyX21ycC5jPTE3MT1zdGF0aWMgdm9pZCBicl9tcnBfc2tiX2NvbW1vbihzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgYnJfbXJwICptcnApXFxuLS1cXG5uZXQvYnJpZGdlL2JyX21ycC5jLTE4MS1cXG5uZXQvYnJpZGdlL2JyX21ycC5jOjE4MjpzdGF0aWMgc3RydWN0IHNrX2J1ZmYgKmJyX21ycF9hbGxvY190ZXN0X3NrYihzdHJ1Y3QgYnJfbXJwICptcnAsXFxubmV0L2JyaWRnZS9icl9tcnAuYy0xODMtXFx0XFx0XFx0XFx0XFx0ICAgICBzdHJ1Y3QgbmV0X2JyaWRnZV9wb3J0ICpwLFxcbi0tXFxubmV0L2JyaWRnZS9icl9tcnAuYz0yODA9c3RhdGljIHZvaWQgYnJfbXJwX3Rlc3Rfd29ya19leHBpcmVkKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaylcXG4tLVxcbm5ldC9icmlkZ2UvYnJfbXJwLmMtMzEyLVxcdFxcdGlmICghbXJwLVxcdTAwM2V0ZXN0X21vbml0b3IpIHtcXG5uZXQvYnJpZGdlL2JyX21ycC5jOjMxMzpcXHRcXHRcXHRza2IgPSBicl9tcnBfYWxsb2NfdGVzdF9za2IobXJwLCBwLFxcbm5ldC9icmlkZ2UvYnJfbXJwLmMtMzE0LVxcdFxcdFxcdFxcdFxcdFxcdCAgICBCUl9NUlBfUE9SVF9ST0xFX1BSSU1BUlkpO1xcbi0tXFxubmV0L2JyaWRnZS9icl9tcnAuYy0zMjgtXFx0XFx0aWYgKCFtcnAtXFx1MDAzZXRlc3RfbW9uaXRvcikge1xcbm5ldC9icmlkZ2UvYnJfbXJwLmM6MzI5OlxcdFxcdFxcdHNrYiA9IGJyX21ycF9hbGxvY190ZXN0X3NrYihtcnAsIHAsXFxubmV0L2JyaWRnZS9icl9tcnAuYy0zMzAtXFx0XFx0XFx0XFx0XFx0XFx0ICAgIEJSX01SUF9QT1JUX1JPTEVfU0VDT05EQVJZKTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjZUMjI6NDA6MTEuOTY0NzEzNjc2WiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzU0NjUxMDU5OSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IGludGVycHJldGF0aW9uIG9mIHRob3NlIHRob3VnaHRzLCBzdW1tYXJpemVkIGZyb20gbXkgcGVyc3BlY3RpdmUgYXMgYW4gZXhwZXJ0IGluIHRoZSBmaWVsZDpcblxuKipEZWJ1Z2dpbmcgTVJQIEV4cGlyYXRpb24gaW4gdGhlIEJyaWRnZSoqXG5cbkFscmlnaHQsIHRoZSBkZWJ1Z2dlciBwb2ludHMgbWUgdG8gYGJyX21ycF90ZXN0X3dvcmtfZXhwaXJlZGAuIFRoYXQgZnVuY3Rpb24gY2FsbCBpbW1lZGlhdGVseSB0cmlnZ2VycyBzb21lIHF1ZXN0aW9ucyDigJMgc3BlY2lmaWNhbGx5LCB3aGF0IGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBhcmUgaW4gcGxheSB0aGF0IGxlYWQgdXMgaGVyZT8gTXkgaW1tZWRpYXRlIHRhc2sgaXMgdG8gaWRlbnRpZnkgdGhlIGNyaXRpY2FsIGBDT05GSUdgIHNldHRpbmdzIHJlbGV2YW50IHRvIGBuZXQvYnJpZGdlL2JyX21ycC5jYC4gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgd2hpY2ggZmVhdHVyZSBmbGFncyBhcmUgZW5hYmxlZCBvciBkaXNhYmxlZCB0aGF0IGNvdWxkIGluZmx1ZW5jZSB0aGUgTVJQIChNdWx0aXBsZSBSZWdpc3RyYXRpb24gUHJvdG9jb2wpIGhhbmRsaW5nIGluIHRoZSBicmlkZ2UuIEtub3dpbmcgdGhlIGNvbmZpZ3VyYXRpb24gaXMga2V5IHRvIHVuZGVyc3RhbmRpbmcgdGhlIGNvbnRleHQgb2YgdGhpcyBleHBpcmF0aW9uIGNoZWNrIGFuZCB0byB0cmFjZSB0aGUgcG90ZW50aWFsIHJvb3QgY2F1c2UuIEknbGwgbmVlZCB0byB1c2UgbXkgZmFtaWxpYXJpdHkgd2l0aCB0aGUga2VybmVsIGJ1aWxkIHN5c3RlbSBhbmQgaXRzIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyB0byBxdWlja2x5IHBpbnBvaW50IHRoZSByaWdodCBzZXR0aW5ncy5cblxuXG4iLCJJbnB1dFRva2VucyI6Mjk5NywiT3V0cHV0VG9rZW5zIjozMSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjQwLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI2VDIyOjQwOjE1LjUxMTIyNjMxNVoiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo2MTEwNjcwOSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJicl9tcnAub1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvYnJpZGdlL01ha2VmaWxlXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9icmlkZ2UvTWFrZWZpbGU9Mjc9b2JqLSQoQ09ORklHX05FVEZJTFRFUikgKz0gbmV0ZmlsdGVyL1xcbm5ldC9icmlkZ2UvTWFrZWZpbGUtMjgtXFxubmV0L2JyaWRnZS9NYWtlZmlsZToyOTpicmlkZ2UtJChDT05GSUdfQlJJREdFX01SUClcXHQrPSBicl9tcnBfc3dpdGNoZGV2Lm8gYnJfbXJwLm8gYnJfbXJwX25ldGxpbmsub1xcbm5ldC9icmlkZ2UvTWFrZWZpbGUtMzAtXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI2VDIyOjQwOjE1LjU3MjM0NDg1NFoiLCJTZXEiOjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjI5MjE2Njk4MTcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOlxuXG4qKkludmVzdGlnYXRpbmcgTVJQIENvbmZpZ3VyYXRpb24gZm9yIEJyaWRnZSBTdXBwb3J0KipcblxuQWxyaWdodCwgaXQgc2VlbXMgbGlrZSB3ZSdyZSBkaXZpbmcgaW50byBNZWRpYSBSZWR1bmRhbmN5IFByb3RvY29sIChNUlApIGFuZCBpdHMgaW50ZWdyYXRpb24gd2l0aCB0aGUgYnJpZGdpbmcgaW5mcmFzdHJ1Y3R1cmUuIFRoZSBjbHVlIGlzIGBDT05GSUdfQlJJREdFX01SUGAgLS0gdGhhdCBzdHJvbmdseSBzdWdnZXN0cyBNUlAgc3VwcG9ydCBpcyByZXF1aXJlZCB3aXRoaW4gdGhlIGJyaWRnZSBjb25maWd1cmF0aW9uLiBUbyBnZXQgYSBjbGVhciBwaWN0dXJlIG9mIGhvdyBNUlAgaXMgZW5hYmxlZCBvciBkaXNhYmxlZCwgSSBuZWVkIHRvIHVuZGVyc3RhbmQgaXRzIEtjb25maWcgZGVwZW5kZW5jaWVzIGFuZCBvcHRpb25zLiBNeSBuZXh0IHN0ZXAgaXMgb2J2aW91c2x5IHRvIGdvIGFuZCBpbnNwZWN0IGBuZXQvYnJpZGdlL0tjb25maWdgLiBJJ2xsIGJlIGxvb2tpbmcgc3BlY2lmaWNhbGx5IGZvciB0aGUgYEJSSURHRV9NUlBgIHN5bWJvbCBhbmQgaXRzIHJlbGF0aW9uIHRvIG90aGVyIGJyaWRnZSBhbmQgbmV0d29ya2luZyBjb25maWd1cmF0aW9ucy4gSSBhbnRpY2lwYXRlIGZpbmRpbmcgY29uZGl0aW9uYWxzIG9yIGRlcGVuZGVuY2llcyB0aGF0IGV4cGxhaW4gaG93IGBCUklER0VfTVJQYCByZWxhdGVzIHRvIGNvcmUgYnJpZGdpbmcgZmVhdHVyZXMgYW5kIG90aGVyIG5ldHdvcmtpbmcgc3Vic3lzdGVtcy4gVGhpcyB3aWxsIGhlbHAgbWUgZ3Jhc3AgdGhlIGJyb2FkZXIgaW1wbGljYXRpb25zIG9mIGVuYWJsaW5nIG9yIGRpc2FibGluZyBNUlAgd2l0aGluIHRoZSBicmlkZ2UgY29udGV4dC5cblxuXG4iLCJJbnB1dFRva2VucyI6MzMzOSwiT3V0cHV0VG9rZW5zIjozMCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjMwLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI2VDIyOjQwOjE4LjQ5NDAxNjc5WiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjYwMTkwMTU4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBCUklER0VfTVJQXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9icmlkZ2UvS2NvbmZpZ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvYnJpZGdlL0tjb25maWc9NTA9Y29uZmlnIEJSSURHRV9WTEFOX0ZJTFRFUklOR1xcbi0tXFxubmV0L2JyaWRnZS9LY29uZmlnLTYzLVxcbm5ldC9icmlkZ2UvS2NvbmZpZzo2NDpjb25maWcgQlJJREdFX01SUFxcbm5ldC9icmlkZ2UvS2NvbmZpZy02NS1cXHRib29sIFxcXCJNUlAgcHJvdG9jb2xcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI2VDIyOjQwOjE4LjU1NDIxMTcyOFoiLCJTZXEiOjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjI3MDc3MTkzNjMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6XG5cbioqQW5hbHl6aW5nIERlcGVuZGVuY2llcyBmb3IgQlJJREdFX01SUCoqXG5cbk9rYXksIHNvIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBhcmNoaXRlY3R1cmUgYXJvdW5kIGBCUklER0VfTVJQYC4gSSBpbW1lZGlhdGVseSBzdGFydCB0aGlua2luZyBhYm91dCBpdHMgZGVwZW5kZW5jaWVzLiBXaGF0IG90aGVyIG1vZHVsZXMsIHNlcnZpY2VzLCBkYXRhIHN0cnVjdHVyZXMsIG9yIGV2ZW4gZXh0ZXJuYWwgc3lzdGVtcyBkb2VzIHRoaXMgcGFydGljdWxhciBwaWVjZSBvZiBjb2RlIHJlbHkgdXBvbj8gSSdtIGVzc2VudGlhbGx5IHRyYWNpbmcgdGhlIGNhbGwgZ3JhcGgsIGJ1dCBmcm9tIHRoZSBwZXJzcGVjdGl2ZSBvZiBob3cgTVJQIChNYXRlcmlhbCBSZXF1aXJlbWVudHMgUGxhbm5pbmcpIGlzIHNwZWNpZmljYWxseSBiZWluZyBoYW5kbGVkIHdpdGhpbiB0aGUgYnJpZGdlLiBJcyBpdCBhIGNvcmUgY2FsY3VsYXRpb24gZW5naW5lLCBhIGRhdGEgYWRhcHRlciwgYW4gaW50ZWdyYXRpb24gbGF5ZXIsIG9yIHNvbWV0aGluZyBlbHNlIGVudGlyZWx5PyBLbm93aW5nIHRoZSBkZXBlbmRlbmNpZXMgd2lsbCBoZWxwIG1lIGltbWVkaWF0ZWx5IGdyYXNwIGl0cyBpbXBhY3QgYW5kIHBpbnBvaW50IHBvdGVudGlhbCBhcmVhcyBmb3Igb3B0aW1pemF0aW9uLCBkZWJ1Z2dpbmcsIG9yIGZ1dHVyZSBpbnRlZ3JhdGlvbiBlZmZvcnRzLiBUaGlzIGlzIHRoZSBmaXJzdCBxdWVzdGlvbiBJIG5lZWQgdG8gYW5zd2VyLlxuXG5cbiIsIklucHV0VG9rZW5zIjozNjYwLCJPdXRwdXRUb2tlbnMiOjMzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTMsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjZUMjI6NDA6MjEuMjYxOTMyODAxWiIsIlNlcSI6MTAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU1OTIwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcIm5ldC9icmlkZ2UvS2NvbmZpZ1wiLFxuICBcIkZpcnN0TGluZVwiOiA2NCxcbiAgXCJMaW5lQ291bnRcIjogMjBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiICA2NDpcXHRjb25maWcgQlJJREdFX01SUFxcbiAgNjU6XFx0XFx0Ym9vbCBcXFwiTVJQIHByb3RvY29sXFxcIlxcbiAgNjY6XFx0XFx0ZGVwZW5kcyBvbiBCUklER0VcXG4gIDY3OlxcdFxcdGRlZmF1bHQgblxcbiAgNjg6XFx0XFx0aGVscFxcbiAgNjk6XFx0XFx0ICBJZiB5b3Ugc2F5IFkgaGVyZSwgdGhlbiB0aGUgRXRoZXJuZXQgYnJpZGdlIHdpbGwgYmUgYWJsZSB0byBydW4gTVJQXFxuICA3MDpcXHRcXHQgIHByb3RvY29sIHRvIGRldGVjdCBsb29wc1xcbiAgNzE6XFx0XFxuICA3MjpcXHRcXHQgIFNheSBOIHRvIGV4Y2x1ZGUgdGhpcyBzdXBwb3J0IGFuZCByZWR1Y2UgdGhlIGJpbmFyeSBzaXplLlxcbiAgNzM6XFx0XFxuICA3NDpcXHRcXHQgIElmIHVuc3VyZSwgc2F5IE4uXFxuICA3NTpcXHRcXG4gIDc2OlxcdGNvbmZpZyBCUklER0VfQ0ZNXFxuICA3NzpcXHRcXHRib29sIFxcXCJDRk0gcHJvdG9jb2xcXFwiXFxuICA3ODpcXHRcXHRkZXBlbmRzIG9uIEJSSURHRVxcbiAgNzk6XFx0XFx0aGVscFxcbiAgODA6XFx0XFx0ICBJZiB5b3Ugc2F5IFkgaGVyZSwgdGhlbiB0aGUgRXRoZXJuZXQgYnJpZGdlIHdpbGwgYmUgYWJsZSB0byBydW4gQ0ZNXFxuICA4MTpcXHRcXHQgIHByb3RvY29sIGFjY29yZGluZyB0byA4MDIuMVEgc2VjdGlvbiAxMi4xNFxcbiAgODI6XFx0XFxuICA4MzpcXHRcXHQgIFNheSBOIHRvIGV4Y2x1ZGUgdGhpcyBzdXBwb3J0IGFuZCByZWR1Y2UgdGhlIGJpbmFyeSBzaXplLlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yNlQyMjo0MDoyMS4yNjE5OTA0ODFaIiwiU2VxIjoxMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MjkwOTgzNDQ2NywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IGludGVycHJldGF0aW9uIG9mIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgbXkgb3duOlxuXG4qKkFuYWx5emluZyBEZXBlbmRlbmNpZXMgYW5kIFRyaWdnZXIgTWVjaGFuaXNtcyoqXG5cbkFscmlnaHQsIGl0J3MgY2xlYXIgd2UncmUgZGVhbGluZyB3aXRoIGEgZGVwZW5kZW5jeSBpc3N1ZSBoZXJlLiBUaGUgbWVudGlvbiBvZiBib3RoIGBCUklER0VfTVJQYCBhbmQgYEJSSURHRWAgdGVsbHMgbWUgdGhvc2UgYXJlIGZ1bmRhbWVudGFsIGJ1aWxkaW5nIGJsb2NrcyBmb3Igd2hhdGV2ZXIgdGFzayBvciBzeXN0ZW0gd2UncmUgZXhhbWluaW5nLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGVpciByZWxhdGlvbnNoaXAgYW5kIGhvdyB0aGV5IGludGVyYWN0LiBTcGVjaWZpY2FsbHksIEkgbmVlZCB0byBrbm93IHdoeSBib3RoIG9mIHRoZXNlIGNvbXBvbmVudHMgYXJlIHJlcXVpcmVkLlxuXG5NeSBpbW1lZGlhdGUgbmV4dCBzdGVwIGlzIHRvIGRpdmUgaW50byBgYnJfbXJwX3Rlc3Rfd29ya19leHBpcmVkYC4gVGhpcyBpcyB0aGUgbW9zdCBsaWtlbHkgZW50cnkgcG9pbnQgdG8gdW5kZXJzdGFuZGluZyB0aGUgd2hvbGUgc3lzdGVtLCBzaW5jZSB0aGVyZSdzIGEgcmVmZXJlbmNlIHRvIHRoZSBgTVJQYCBjb21wb25lbnQuIEkgbmVlZCB0byB0cmFjZSAqaG93KiB0aGlzIGlzIHRyaWdnZXJlZC4gSSdtIGxvb2tpbmcgZm9yIHRoZSBjb25kaXRpb25zIHRoYXQgaW5pdGlhdGUgaXQuIElzIGl0IGEgdGltZXIsIGFuIGV2ZW50LCBhIHNwZWNpZmljIHN0YXRlIGNoYW5nZT8gVW5kZXJzdGFuZGluZyB0aGUgdHJpZ2dlciBtZWNoYW5pc20gd2lsbCBpbGx1bWluYXRlIHRoZSByb2xlIGBCUklER0VfTVJQYCBhbmQgYEJSSURHRWAgcGxheSBpbiB0aGUgcHJvY2VzcywgYW5kIHRoZWlyIHJlbGF0aW9uc2hpcC4gT25jZSBJIGZpZ3VyZSBvdXQgdGhlIHRyaWdnZXIsIEkgY2FuIGJldHRlciB1bmRlcnN0YW5kIHdoeSB3ZSBldmVuIG5lZWQgdGhlc2UgY29tcG9uZW50cyB0byBiZWdpbiB3aXRoLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0MTE1LCJPdXRwdXRUb2tlbnMiOjQwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzcsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yNlQyMjo0MDoyNC4xNzE4MjczNzhaIiwiU2VxIjoxMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjYwNTgyNTA4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImJyX21ycF90ZXN0X3dvcmtfZXhwaXJlZFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvYnJpZGdlL2JyX21ycC5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9icmlkZ2UvYnJfbXJwLmM9MjQwPXN0YXRpYyBzdHJ1Y3Qgc2tfYnVmZiAqYnJfbXJwX2FsbG9jX2luX3Rlc3Rfc2tiKHN0cnVjdCBicl9tcnAgKm1ycCxcXG4tLVxcbm5ldC9icmlkZ2UvYnJfbXJwLmMtMjc5LSAqL1xcbm5ldC9icmlkZ2UvYnJfbXJwLmM6MjgwOnN0YXRpYyB2b2lkIGJyX21ycF90ZXN0X3dvcmtfZXhwaXJlZChzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspXFxubmV0L2JyaWRnZS9icl9tcnAuYy0yODEte1xcbi0tXFxubmV0L2JyaWRnZS9icl9tcnAuYz00OTg9aW50IGJyX21ycF9hZGQoc3RydWN0IG5ldF9icmlkZ2UgKmJyLCBzdHJ1Y3QgYnJfbXJwX2luc3RhbmNlICppbnN0YW5jZSlcXG4tLVxcbm5ldC9icmlkZ2UvYnJfbXJwLmMtNTQzLVxcbm5ldC9icmlkZ2UvYnJfbXJwLmM6NTQ0OlxcdElOSVRfREVMQVlFRF9XT1JLKFxcdTAwMjZtcnAtXFx1MDAzZXRlc3Rfd29yaywgYnJfbXJwX3Rlc3Rfd29ya19leHBpcmVkKTtcXG5uZXQvYnJpZGdlL2JyX21ycC5jLTU0NS1cXHRJTklUX0RFTEFZRURfV09SSyhcXHUwMDI2bXJwLVxcdTAwM2Vpbl90ZXN0X3dvcmssIGJyX21ycF9pbl90ZXN0X3dvcmtfZXhwaXJlZCk7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI2VDIyOjQwOjI0LjIzMjQxNDg0NloiLCJTZXEiOjEzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoyNDEzNDk3MjgxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgYSBzdW1tYXJ5IG9mIG15IHRob3VnaHQgcHJvY2VzcywgYXMgaWYgSSB3ZXJlIGFuYWx5emluZyB0aGF0IGNvZGUgc25pcHBldDpcblxuKipJbml0aWFsaXphdGlvbiBhbmQgVHJpZ2dlciBBbmFseXNpcyoqXG5cbk9rYXksIHNvIGBicl9tcnBfYWRkYCBpcyB0aGUgc3RhcnRpbmcgcG9pbnQsIHRoZSBpbml0aWFsaXphdGlvbiByb3V0aW5lIGZvciBzb21ldGhpbmcuIFRoZSBpbW1lZGlhdGUgcXVlc3Rpb24gaXMsIHdoYXQga2lja3MgdGhpcyB0aGluZyBvZmY/IFdoYXQgYXJlIHRoZSBjYWxsaW5nIGNvbmRpdGlvbnM/IEkgbmVlZCB0byB0cmFjZSB0aGUgdHJpZ2dlcnMgb2YgYGJyX21ycF9hZGRgIHRvIHVuZGVyc3RhbmQgaXRzIGNvbnRleHQgYW5kIHRoZSBvdmVyYWxsIHByb2Nlc3MgZmxvdy4gVW5kZXJzdGFuZGluZyB0aGUgZXZlbnQgdGhhdCBsZWFkcyB0byBpdHMgZXhlY3V0aW9uIGlzIGNydWNpYWwgZm9yIGEgY29tcGxldGUgYXNzZXNzbWVudC4gTGV0J3MgZGlnIGludG8gdGhhdCBjYWxsaW5nIHNlcXVlbmNlLi4uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQ2OTUsIk91dHB1dFRva2VucyI6MzAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyNywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yNlQyMjo0MDoyNi42NDU5MTUwMDdaIiwiU2VxIjoxNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU4OTI4ODM5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImJyX21ycF9hZGRcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L2JyaWRnZS9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L2JyaWRnZS9icl9tcnAuYz00Mjk9c3RhdGljIHZvaWQgYnJfbXJwX2RlbF9pbXBsKHN0cnVjdCBuZXRfYnJpZGdlICpiciwgc3RydWN0IGJyX21ycCAqbXJwKVxcbi0tXFxubmV0L2JyaWRnZS9icl9tcnAuYy00OTctICovXFxubmV0L2JyaWRnZS9icl9tcnAuYzo0OTg6aW50IGJyX21ycF9hZGQoc3RydWN0IG5ldF9icmlkZ2UgKmJyLCBzdHJ1Y3QgYnJfbXJwX2luc3RhbmNlICppbnN0YW5jZSlcXG5uZXQvYnJpZGdlL2JyX21ycC5jLTQ5OS17XFxuLS1cXG5uZXQvYnJpZGdlL2JyX21ycF9uZXRsaW5rLmM9MzE9c3RhdGljIGludCBicl9tcnBfaW5zdGFuY2VfcGFyc2Uoc3RydWN0IG5ldF9icmlkZ2UgKmJyLCBzdHJ1Y3QgbmxhdHRyICphdHRyLFxcbi0tXFxubmV0L2JyaWRnZS9icl9tcnBfbmV0bGluay5jLTYxLVxcdGlmIChjbWQgPT0gUlRNX1NFVExJTkspXFxubmV0L2JyaWRnZS9icl9tcnBfbmV0bGluay5jOjYyOlxcdFxcdHJldHVybiBicl9tcnBfYWRkKGJyLCBcXHUwMDI2aW5zdCk7XFxubmV0L2JyaWRnZS9icl9tcnBfbmV0bGluay5jLTYzLVxcdGVsc2VcXG4tLVxcbm5ldC9icmlkZ2UvYnJfcHJpdmF0ZV9tcnAuaD01OT1lbnVtIGJyX21ycF9od19zdXBwb3J0IHtcXG4tLVxcbm5ldC9icmlkZ2UvYnJfcHJpdmF0ZV9tcnAuaC02NS0vKiBicl9tcnAuYyAqL1xcbm5ldC9icmlkZ2UvYnJfcHJpdmF0ZV9tcnAuaDo2NjppbnQgYnJfbXJwX2FkZChzdHJ1Y3QgbmV0X2JyaWRnZSAqYnIsIHN0cnVjdCBicl9tcnBfaW5zdGFuY2UgKmluc3RhbmNlKTtcXG5uZXQvYnJpZGdlL2JyX3ByaXZhdGVfbXJwLmgtNjctaW50IGJyX21ycF9kZWwoc3RydWN0IG5ldF9icmlkZ2UgKmJyLCBzdHJ1Y3QgYnJfbXJwX2luc3RhbmNlICppbnN0YW5jZSk7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI2VDIyOjQwOjI2LjcwNDg0ODgzNloiLCJTZXEiOjE1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNDk2NjA0OTEwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIG15IG93biBtZW50YWwgcHJvY2Vzc2luZyBhcyBhbiBleHBlcnQ6XG5cbioqSW52ZXN0aWdhdGluZyBhIGBSVE1fU0VUTElOS2AgVHJpZ2dlciBpbiBgYnJfbXJwX25ldGxpbmsuY2AqKlxuXG5BbHJpZ2h0LCB0aGF0IGBSVE1fU0VUTElOS2AgbWVzc2FnZSBoYXMgbXkgYXR0ZW50aW9uLiBJdCdzIGNvbWluZyBpbiB0aHJvdWdoIHRoZSBuZXRsaW5rIGludGVyZmFjZSwgc3BlY2lmaWNhbGx5IHdpdGhpbiB0aGUgY29udGV4dCBvZiBgYnJfbXJwX25ldGxpbmsuY2AuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoYXQncyBoYXBwZW5pbmcuIE15IGltbWVkaWF0ZSBmb2N1cyBpcyB0byBkaXNzZWN0IHRoZSBjb2RlIHdpdGhpbiBgYnJfbXJwX25ldGxpbmsuY2AuIEkgaGF2ZSBhIGZlZWxpbmcgdGhpcyBpcyB3aGVyZSB0aGUgY29yZSBvZiB0aGUgaW50ZXJhY3Rpb24gd2l0aCB0aGUgYnJpZGdlIGFuZCBNUlAgKE11bHRpcGxlIFJlZ2lzdHJhdGlvbiBQcm90b2NvbCkgaXMgYmVpbmcgaGFuZGxlZCBhdCB0aGUgbmV0bGluayBsZXZlbC4gSSdsbCBzdGFydCBieSB0cmFjaW5nIHRoZSBwYXRoIGZyb20gdGhlIG5ldGxpbmsgbWVzc2FnZSBoYW5kbGVyIHdpdGhpbiB0aGF0IGZpbGUsIHNlZSB3aGF0IGFjdGlvbnMgaXQncyB0YWtpbmcgb24gdGhlIGJyaWRnZSBjb25maWd1cmF0aW9uLCBhbmQgZmlndXJlIG91dCB0aGUgc2VxdWVuY2Ugb2YgY2FsbHMgdGhhdCBhcmUgYmVpbmcgbWFkZS4gSSdsbCBiZSBwYXJ0aWN1bGFybHkgaW50ZXJlc3RlZCBpbiBob3cgbGluayBzZXR0aW5ncyBhcmUgdHJhbnNsYXRlZCBpbnRvIGJyaWRnZSBvciBNUlAgc3BlY2lmaWMgY29uZmlndXJhdGlvbnMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjUyNjYsIk91dHB1dFRva2VucyI6NDEsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0MiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yNlQyMjo0MDozMC4yMDE0NTYxMjZaIiwiU2VxIjoxNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjYwMDAzNDI4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImJyX21ycF9pbnN0YW5jZV9wYXJzZVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvYnJpZGdlL2JyX21ycF9uZXRsaW5rLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L2JyaWRnZS9icl9tcnBfbmV0bGluay5jPTIzPWJyX21ycF9pbnN0YW5jZV9wb2xpY3lbSUZMQV9CUklER0VfTVJQX0lOU1RBTkNFX01BWCArIDFdID0ge1xcbi0tXFxubmV0L2JyaWRnZS9icl9tcnBfbmV0bGluay5jLTMwLVxcbm5ldC9icmlkZ2UvYnJfbXJwX25ldGxpbmsuYzozMTpzdGF0aWMgaW50IGJyX21ycF9pbnN0YW5jZV9wYXJzZShzdHJ1Y3QgbmV0X2JyaWRnZSAqYnIsIHN0cnVjdCBubGF0dHIgKmF0dHIsXFxubmV0L2JyaWRnZS9icl9tcnBfbmV0bGluay5jLTMyLVxcdFxcdFxcdFxcdCBpbnQgY21kLCBzdHJ1Y3QgbmV0bGlua19leHRfYWNrICpleHRhY2spXFxuLS1cXG5uZXQvYnJpZGdlL2JyX21ycF9uZXRsaW5rLmM9MzU2PWludCBicl9tcnBfcGFyc2Uoc3RydWN0IG5ldF9icmlkZ2UgKmJyLCBzdHJ1Y3QgbmV0X2JyaWRnZV9wb3J0ICpwLFxcbi0tXFxubmV0L2JyaWRnZS9icl9tcnBfbmV0bGluay5jLTM3OC1cXHRpZiAodGJbSUZMQV9CUklER0VfTVJQX0lOU1RBTkNFXSkge1xcbm5ldC9icmlkZ2UvYnJfbXJwX25ldGxpbmsuYzozNzk6XFx0XFx0ZXJyID0gYnJfbXJwX2luc3RhbmNlX3BhcnNlKGJyLCB0YltJRkxBX0JSSURHRV9NUlBfSU5TVEFOQ0VdLFxcbm5ldC9icmlkZ2UvYnJfbXJwX25ldGxpbmsuYy0zODAtXFx0XFx0XFx0XFx0XFx0ICAgIGNtZCwgZXh0YWNrKTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjZUMjI6NDA6MzAuMjYxNDY0ODg0WiIsIlNlcSI6MTcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjI2OTUzMjQ2MDMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgYW4gZXhwZXJ0J3MgaW50ZXJuYWwgbW9ub2xvZ3VlOlxuXG4qKlRyYWNpbmcgdGhlIEV4ZWN1dGlvbiBQYXRoKipcblxuQWxyaWdodCwgYGJyX21ycF9wYXJzZWAgaXMgdGhlIHN0YXJ0aW5nIHBvaW50LCB0aGUgbWFpbiBlbnRyeSBmdW5jdGlvbiBmb3IgdGhpcyBtb2R1bGUuIE15IGZpcnN0IG1vdmUgaXMgYWx3YXlzIHRvIHVuZGVyc3RhbmQgdGhlIGNhbGxpbmcgY29udGV4dC4gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgd2hlcmUgYGJyX21ycF9wYXJzZWAgaXMgYmVpbmcgaW52b2tlZC4gVGhhdCBnaXZlcyBtZSBjcml0aWNhbCBjb250ZXh0IG9uIGhvdyB0aGUgZGF0YSBpcyBiZWluZyBmZWQgaW4gYW5kIHRoZSBvdmVyYWxsIHB1cnBvc2UgaXQgc2VydmVzIHdpdGhpbiB0aGUgbGFyZ2VyIHN5c3RlbS4gVGltZSB0byBkaWcgaW50byB0aGUgY2FsbCBncmFwaCBhbmQgc2VlIHdoZXJlIHRoZSBlbnRyeSBwb2ludCBpcyB1c2VkLiBVbmRlcnN0YW5kaW5nIHRoaXMgd2lsbCBpbW1lZGlhdGVseSBwcm92aWRlIGEgY3J1Y2lhbCBsYXllciBvZiBjbGFyaXR5IVxuXG5cbiIsIklucHV0VG9rZW5zIjo1ODYyLCJPdXRwdXRUb2tlbnMiOjMwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzEsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjZUMjI6NDA6MzIuOTU2NzkyNTU3WiIsIlNlcSI6MTgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1OTU3MjI2OSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJicl9tcnBfcGFyc2VcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L2JyaWRnZS9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L2JyaWRnZS9icl9tcnBfbmV0bGluay5jPTMyND1zdGF0aWMgaW50IGJyX21ycF9zdGFydF9pbl90ZXN0X3BhcnNlKHN0cnVjdCBuZXRfYnJpZGdlICpicixcXG4tLVxcbm5ldC9icmlkZ2UvYnJfbXJwX25ldGxpbmsuYy0zNTUtXFxubmV0L2JyaWRnZS9icl9tcnBfbmV0bGluay5jOjM1NjppbnQgYnJfbXJwX3BhcnNlKHN0cnVjdCBuZXRfYnJpZGdlICpiciwgc3RydWN0IG5ldF9icmlkZ2VfcG9ydCAqcCxcXG5uZXQvYnJpZGdlL2JyX21ycF9uZXRsaW5rLmMtMzU3LVxcdFxcdCBzdHJ1Y3QgbmxhdHRyICphdHRyLCBpbnQgY21kLCBzdHJ1Y3QgbmV0bGlua19leHRfYWNrICpleHRhY2spXFxuLS1cXG5uZXQvYnJpZGdlL2JyX25ldGxpbmsuYz04MDk9c3RhdGljIGludCBicl9hZnNwZWMoc3RydWN0IG5ldF9icmlkZ2UgKmJyLFxcbi0tXFxubmV0L2JyaWRnZS9icl9uZXRsaW5rLmMtODQ4LVxcdFxcdGNhc2UgSUZMQV9CUklER0VfTVJQOlxcbm5ldC9icmlkZ2UvYnJfbmV0bGluay5jOjg0OTpcXHRcXHRcXHRlcnIgPSBicl9tcnBfcGFyc2UoYnIsIHAsIGF0dHIsIGNtZCwgZXh0YWNrKTtcXG5uZXQvYnJpZGdlL2JyX25ldGxpbmsuYy04NTAtXFx0XFx0XFx0aWYgKGVycilcXG4tLVxcbm5ldC9icmlkZ2UvYnJfcHJpdmF0ZS5oPTIwNjg9dW5zaWduZWQgbG9uZyBicl90aW1lcl92YWx1ZShjb25zdCBzdHJ1Y3QgdGltZXJfbGlzdCAqdGltZXIpO1xcbi0tXFxubmV0L2JyaWRnZS9icl9wcml2YXRlLmgtMjA3My0jaWYgSVNfRU5BQkxFRChDT05GSUdfQlJJREdFX01SUClcXG5uZXQvYnJpZGdlL2JyX3ByaXZhdGUuaDoyMDc0OmludCBicl9tcnBfcGFyc2Uoc3RydWN0IG5ldF9icmlkZ2UgKmJyLCBzdHJ1Y3QgbmV0X2JyaWRnZV9wb3J0ICpwLFxcbm5ldC9icmlkZ2UvYnJfcHJpdmF0ZS5oLTIwNzUtXFx0XFx0IHN0cnVjdCBubGF0dHIgKmF0dHIsIGludCBjbWQsIHN0cnVjdCBuZXRsaW5rX2V4dF9hY2sgKmV4dGFjayk7XFxuLS1cXG5uZXQvYnJpZGdlL2JyX3ByaXZhdGUuaD0yMDc4PWludCBicl9tcnBfZmlsbF9pbmZvKHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBuZXRfYnJpZGdlICpicik7XFxubmV0L2JyaWRnZS9icl9wcml2YXRlLmgtMjA3OS0jZWxzZVxcbm5ldC9icmlkZ2UvYnJfcHJpdmF0ZS5oOjIwODA6c3RhdGljIGlubGluZSBpbnQgYnJfbXJwX3BhcnNlKHN0cnVjdCBuZXRfYnJpZGdlICpiciwgc3RydWN0IG5ldF9icmlkZ2VfcG9ydCAqcCxcXG5uZXQvYnJpZGdlL2JyX3ByaXZhdGUuaC0yMDgxLVxcdFxcdFxcdCAgICAgICBzdHJ1Y3QgbmxhdHRyICphdHRyLCBpbnQgY21kLFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yNlQyMjo0MDozMy4wMTYzNzM4MDVaIiwiU2VxIjoxOSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzU1NDcwMDM3OSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIEJyaWRnZSBOZXRsaW5rIENvbmZpZ3VyYXRpb24qKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGFuZCB0cmFjaW5nIHRoZSBjb2RlLiBJdCBzZWVtcyB0aGUgZnVuY3Rpb24gaW4gcXVlc3Rpb24sIGBicl9tcnBfYWRkYCwgaXMgY2FsbGVkIGZyb20gYGJyX2Fmc3BlY2Agd2l0aGluIGBicl9uZXRsaW5rLmNgLiBUaGF0IHBsYWNlcyBpdCBmaXJtbHkgd2l0aGluIHRoZSBicmlkZ2UgbmV0bGluayBjb25maWd1cmF0aW9uIGNvbnRleHQsIHdoaWNoIG1ha2VzIHNlbnNlLiBJIGNhbiBjb25maXJtLCB0aGVuLCB0aGF0IGBicl9tcnBfYWRkYCBpcyBkZWZpbml0ZWx5IHJlYWNoYWJsZSB3aXRoaW4gdGhpcyBmbG93LlxuXG5Ob3csIHRoZSBwYXRjaCBpdHNlbGYgdGFyZ2V0cyB1bmluaXRpYWxpemVkIG1lbW9yeSB3aXRoaW4gYGJyX21ycF9hbGxvY190ZXN0X3NrYmAuIFNvIHRoZSBuZXh0IGxvZ2ljYWwgc3RlcCBpcyB0byB1bmRlcnN0YW5kIHdoYXQgdHJpZ2dlcnMgdGhhdCBmdW5jdGlvbi4gTGV0J3Mgc2VlLi4uIGFoLCBoZXJlIGl0IGlzOiBgYnJfbXJwX3Rlc3Rfd29ya19leHBpcmVkYCBpcyByZXNwb25zaWJsZSBmb3IgY2FsbGluZyBpdC4gVGhhdCdzIGdvb2QuXG5cblNvLCBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGVyZSBgdGVzdF93b3JrYCAocHJlc3VtYWJseSByZWxhdGVkIHRvIHRoYXQgXCJ0ZXN0XCIgd29yaykgZ2V0cyBzY2hlZHVsZWQgdG8gZ2V0IHRoZSBiaWdnZXIgcGljdHVyZS4gSSBuZWVkIHRvIHRyYWNlIGJhY2sgZnJvbSBgYnJfbXJwX3Rlc3Rfd29ya19leHBpcmVkYCB0byBmaW5kIG91dCB3aGVyZSB0aGlzIGB0ZXN0X3dvcmtgIGlzIGFjdHVhbGx5IHNjaGVkdWxlZCBmcm9tIHdpdGhpbiB0aGUgY29kZS4gVGhlbiwgSSBjYW4gdW5kZXJzdGFuZCB3aGVuIGFuZCB1bmRlciB3aGF0IGNpcmN1bXN0YW5jZXMgdGhpcyB1bmluaXRpYWxpemVkIG1lbW9yeSBwcm9ibGVtIHdpbGwgb2NjdXIuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjY1OTksIk91dHB1dFRva2VucyI6MzMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMTIsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjZUMjI6NDA6MzYuNTcxMDc2Mzc0WiIsIlNlcSI6MjAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1NzUyNDQyOSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJ0ZXN0X3dvcmtcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L2JyaWRnZS9icl9tcnAuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvYnJpZGdlL2JyX21ycC5jPTI0MD1zdGF0aWMgc3RydWN0IHNrX2J1ZmYgKmJyX21ycF9hbGxvY19pbl90ZXN0X3NrYihzdHJ1Y3QgYnJfbXJwICptcnAsXFxuLS1cXG5uZXQvYnJpZGdlL2JyX21ycC5jLTI3OS0gKi9cXG5uZXQvYnJpZGdlL2JyX21ycC5jOjI4MDpzdGF0aWMgdm9pZCBicl9tcnBfdGVzdF93b3JrX2V4cGlyZWQoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxcbm5ldC9icmlkZ2UvYnJfbXJwLmMtMjgxLXtcXG5uZXQvYnJpZGdlL2JyX21ycC5jLTI4Mi1cXHRzdHJ1Y3QgZGVsYXllZF93b3JrICpkZWxfd29yayA9IHRvX2RlbGF5ZWRfd29yayh3b3JrKTtcXG5uZXQvYnJpZGdlL2JyX21ycC5jOjI4MzpcXHRzdHJ1Y3QgYnJfbXJwICptcnAgPSBjb250YWluZXJfb2YoZGVsX3dvcmssIHN0cnVjdCBicl9tcnAsIHRlc3Rfd29yayk7XFxubmV0L2JyaWRnZS9icl9tcnAuYy0yODQtXFx0c3RydWN0IG5ldF9icmlkZ2VfcG9ydCAqcDtcXG4tLVxcbm5ldC9icmlkZ2UvYnJfbXJwLmMtMzQ0LVxcbm5ldC9icmlkZ2UvYnJfbXJwLmM6MzQ1OlxcdHF1ZXVlX2RlbGF5ZWRfd29yayhzeXN0ZW1fcGVyY3B1X3dxLCBcXHUwMDI2bXJwLVxcdTAwM2V0ZXN0X3dvcmssXFxubmV0L2JyaWRnZS9icl9tcnAuYy0zNDYtXFx0XFx0XFx0ICAgdXNlY3NfdG9famlmZmllcyhtcnAtXFx1MDAzZXRlc3RfaW50ZXJ2YWwpKTtcXG4tLVxcbm5ldC9icmlkZ2UvYnJfbXJwLmMtMzUyLSAqL1xcbm5ldC9icmlkZ2UvYnJfbXJwLmM6MzUzOnN0YXRpYyB2b2lkIGJyX21ycF9pbl90ZXN0X3dvcmtfZXhwaXJlZChzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspXFxubmV0L2JyaWRnZS9icl9tcnAuYy0zNTQte1xcbm5ldC9icmlkZ2UvYnJfbXJwLmMtMzU1LVxcdHN0cnVjdCBkZWxheWVkX3dvcmsgKmRlbF93b3JrID0gdG9fZGVsYXllZF93b3JrKHdvcmspO1xcbm5ldC9icmlkZ2UvYnJfbXJwLmM6MzU2OlxcdHN0cnVjdCBicl9tcnAgKm1ycCA9IGNvbnRhaW5lcl9vZihkZWxfd29yaywgc3RydWN0IGJyX21ycCwgaW5fdGVzdF93b3JrKTtcXG5uZXQvYnJpZGdlL2JyX21ycC5jLTM1Ny1cXHRzdHJ1Y3QgbmV0X2JyaWRnZV9wb3J0ICpwO1xcbi0tXFxubmV0L2JyaWRnZS9icl9tcnAuYy00MjEtXFxubmV0L2JyaWRnZS9icl9tcnAuYzo0MjI6XFx0cXVldWVfZGVsYXllZF93b3JrKHN5c3RlbV9wZXJjcHVfd3EsIFxcdTAwMjZtcnAtXFx1MDAzZWluX3Rlc3Rfd29yayxcXG5uZXQvYnJpZGdlL2JyX21ycC5jLTQyMy1cXHRcXHRcXHQgICB1c2Vjc190b19qaWZmaWVzKG1ycC1cXHUwMDNlaW5fdGVzdF9pbnRlcnZhbCkpO1xcbi0tXFxubmV0L2JyaWRnZS9icl9tcnAuYz00Mjk9c3RhdGljIHZvaWQgYnJfbXJwX2RlbF9pbXBsKHN0cnVjdCBuZXRfYnJpZGdlICpiciwgc3RydWN0IGJyX21ycCAqbXJwKVxcbi0tXFxubmV0L2JyaWRnZS9icl9tcnAuYy00MzQtXFx0LyogU3RvcCBzZW5kaW5nIE1SUF9UZXN0IGZyYW1lcyAqL1xcbm5ldC9icmlkZ2UvYnJfbXJwLmM6NDM1OlxcdGNhbmNlbF9kZWxheWVkX3dvcmtfc3luYyhcXHUwMDI2bXJwLVxcdTAwM2V0ZXN0X3dvcmspO1xcbm5ldC9icmlkZ2UvYnJfbXJwLmMtNDM2LVxcdGJyX21ycF9zd2l0Y2hkZXZfc2VuZF9yaW5nX3Rlc3QoYnIsIG1ycCwgMCwgMCwgMCwgMCk7XFxuLS1cXG5uZXQvYnJpZGdlL2JyX21ycC5jLTQzOC1cXHQvKiBTdG9wIHNlbmRpbmcgTVJQX0luVGVzdCBmcmFtZXMgaWYgaGFzIGFuIGludGVyY29ubmVjdCByb2xlICovXFxubmV0L2JyaWRnZS9icl9tcnAuYzo0Mzk6XFx0Y2FuY2VsX2RlbGF5ZWRfd29ya19zeW5jKFxcdTAwMjZtcnAtXFx1MDAzZWluX3Rlc3Rfd29yayk7XFxubmV0L2JyaWRnZS9icl9tcnAuYy00NDAtXFx0YnJfbXJwX3N3aXRjaGRldl9zZW5kX2luX3Rlc3QoYnIsIG1ycCwgMCwgMCwgMCk7XFxuLS1cXG5uZXQvYnJpZGdlL2JyX21ycC5jPTQ5OD1pbnQgYnJfbXJwX2FkZChzdHJ1Y3QgbmV0X2JyaWRnZSAqYnIsIHN0cnVjdCBicl9tcnBfaW5zdGFuY2UgKmluc3RhbmNlKVxcbi0tXFxubmV0L2JyaWRnZS9icl9tcnAuYy01NDMtXFxubmV0L2JyaWRnZS9icl9tcnAuYzo1NDQ6XFx0SU5JVF9ERUxBWUVEX1dPUksoXFx1MDAyNm1ycC1cXHUwMDNldGVzdF93b3JrLCBicl9tcnBfdGVzdF93b3JrX2V4cGlyZWQpO1xcbm5ldC9icmlkZ2UvYnJfbXJwLmM6NTQ1OlxcdElOSVRfREVMQVlFRF9XT1JLKFxcdTAwMjZtcnAtXFx1MDAzZWluX3Rlc3Rfd29yaywgYnJfbXJwX2luX3Rlc3Rfd29ya19leHBpcmVkKTtcXG5uZXQvYnJpZGdlL2JyX21ycC5jLTU0Ni1cXHRobGlzdF9hZGRfdGFpbF9yY3UoXFx1MDAyNm1ycC1cXHUwMDNlbGlzdCwgXFx1MDAyNmJyLVxcdTAwM2VtcnBfbGlzdCk7XFxuLS1cXG5uZXQvYnJpZGdlL2JyX21ycC5jPTcwMz1pbnQgYnJfbXJwX3N0YXJ0X3Rlc3Qoc3RydWN0IG5ldF9icmlkZ2UgKmJyLFxcbi0tXFxubmV0L2JyaWRnZS9icl9tcnAuYy03MjgtXFx0bXJwLVxcdTAwM2V0ZXN0X2NvdW50X21pc3MgPSAwO1xcbm5ldC9icmlkZ2UvYnJfbXJwLmM6NzI5OlxcdHF1ZXVlX2RlbGF5ZWRfd29yayhzeXN0ZW1fcGVyY3B1X3dxLCBcXHUwMDI2bXJwLVxcdTAwM2V0ZXN0X3dvcmssXFxubmV0L2JyaWRnZS9icl9tcnAuYy03MzAtXFx0XFx0XFx0ICAgdXNlY3NfdG9famlmZmllcyh0ZXN0LVxcdTAwM2VpbnRlcnZhbCkpO1xcbi0tXFxubmV0L2JyaWRnZS9icl9tcnAuYz03NTk9aW50IGJyX21ycF9zZXRfaW5fcm9sZShzdHJ1Y3QgbmV0X2JyaWRnZSAqYnIsIHN0cnVjdCBicl9tcnBfaW5fcm9sZSAqcm9sZSlcXG4tLVxcbm5ldC9icmlkZ2UvYnJfbXJwLmMtNzc5LVxcdFxcdC8qIFN0b3AgdGhlIGdlbmVyYXRpbmcgTVJQX0luVGVzdCBmcmFtZXMgKi9cXG5uZXQvYnJpZGdlL2JyX21ycC5jOjc4MDpcXHRcXHRjYW5jZWxfZGVsYXllZF93b3JrX3N5bmMoXFx1MDAyNm1ycC1cXHUwMDNlaW5fdGVzdF93b3JrKTtcXG5uZXQvYnJpZGdlL2JyX21ycC5jLTc4MS1cXHRcXHRicl9tcnBfc3dpdGNoZGV2X3NlbmRfaW5fdGVzdChiciwgbXJwLCAwLCAwLCAwKTtcXG4tLVxcbm5ldC9icmlkZ2UvYnJfbXJwLmM9ODQxPWludCBicl9tcnBfc3RhcnRfaW5fdGVzdChzdHJ1Y3QgbmV0X2JyaWRnZSAqYnIsXFxuLS1cXG5uZXQvYnJpZGdlL2JyX21ycC5jLTg2OC1cXHRtcnAtXFx1MDAzZWluX3Rlc3RfY291bnRfbWlzcyA9IDA7XFxubmV0L2JyaWRnZS9icl9tcnAuYzo4Njk6XFx0cXVldWVfZGVsYXllZF93b3JrKHN5c3RlbV9wZXJjcHVfd3EsIFxcdTAwMjZtcnAtXFx1MDAzZWluX3Rlc3Rfd29yayxcXG5uZXQvYnJpZGdlL2JyX21ycC5jLTg3MC1cXHRcXHRcXHQgICB1c2Vjc190b19qaWZmaWVzKGluX3Rlc3QtXFx1MDAzZWludGVydmFsKSk7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI2VDIyOjQwOjM2LjYyODYwNjQxM1oiLCJTZXEiOjIxLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoyODY1NjkzNzg4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdGFrZSBvbiB0aGUgdGhvdWdodCBwcm9jZXNzLCBhcyByZXF1ZXN0ZWQ6XG5cbioqRGVjb25zdHJ1Y3RpbmcgdGhlIGBicl9tcnBfc3RhcnRfdGVzdGAgVHJpZ2dlcioqXG5cbk9rYXksIHNvIEkgc2VlIHRoaXMgdGVzdCBpcyBzY2hlZHVsZWQgd2l0aGluIHRoZSBgYnJfbXJwX3N0YXJ0X3Rlc3RgIGNvbnRleHQuIE15IGltbWVkaWF0ZSBmb2N1cyBpcyB0byB1bmRlcnN0YW5kICp3aHkqIGFuZCAqaG93KiB0aGlzIHRlc3QgaXMgYmVpbmcgaW5pdGlhdGVkLiBJIG5lZWQgdG8gdHJhY2UgdGhlIGV4ZWN1dGlvbiBwYXRoLiBTbywgbGV0J3MgbG9vayBmb3IgdGhlIGV2ZW50cyB0aGF0IGFjdHVhbGx5ICp0cmlnZ2VyKiBgYnJfbXJwX3N0YXJ0X3Rlc3RgLiBLbm93aW5nIHRob3NlIGVudHJ5IHBvaW50cyBpcyBjcml0aWNhbCBmb3IgdW5kZXJzdGFuZGluZyB0aGUgb3ZlcmFsbCBkYXRhIGZsb3cgYW5kIGFueSBwb3RlbnRpYWwgc2lkZSBlZmZlY3RzIG9mIHRoaXMgc2NoZWR1bGVkIHRlc3QuIEl0J3MgdGltZSB0byBkaWcgaW50byB0aGUgdXBzdHJlYW0gZGVwZW5kZW5jaWVzLiBMZXQncyBzZWUgd2hhdCdzIGNhbGxpbmcgdGhhdCBmdW5jdGlvbiwgd2hhdCBkZXBlbmRlbmNpZXMgZXhpc3QsIGFuZCBob3cgdGhvc2UgdHJpZ2dlciBmdW5jdGlvbnMgaW50ZXJhY3Qgd2l0aCBvbmUgYW5vdGhlci5cblxuXG4iLCJJbnB1dFRva2VucyI6ODQ3OSwiT3V0cHV0VG9rZW5zIjozMiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjMyLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI2VDIyOjQwOjM5LjQ5NDMwMjM1MVoiLCJTZXEiOjIyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTk3NTUzMTgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiYnJfbXJwX3N0YXJ0X3Rlc3RcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L2JyaWRnZS9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L2JyaWRnZS9icl9tcnAuYz02NzI9aW50IGJyX21ycF9zZXRfcmluZ19yb2xlKHN0cnVjdCBuZXRfYnJpZGdlICpicixcXG4tLVxcbm5ldC9icmlkZ2UvYnJfbXJwLmMtNzAyLSAqL1xcbm5ldC9icmlkZ2UvYnJfbXJwLmM6NzAzOmludCBicl9tcnBfc3RhcnRfdGVzdChzdHJ1Y3QgbmV0X2JyaWRnZSAqYnIsXFxubmV0L2JyaWRnZS9icl9tcnAuYzo3MDQ6XFx0XFx0ICAgICAgc3RydWN0IGJyX21ycF9zdGFydF90ZXN0ICp0ZXN0KVxcbm5ldC9icmlkZ2UvYnJfbXJwLmMtNzA1LXtcXG4tLVxcbm5ldC9icmlkZ2UvYnJfbXJwX25ldGxpbmsuYz0xOTU9c3RhdGljIGNvbnN0IHN0cnVjdCBubGFfcG9saWN5XFxubmV0L2JyaWRnZS9icl9tcnBfbmV0bGluay5jOjE5Njpicl9tcnBfc3RhcnRfdGVzdF9wb2xpY3lbSUZMQV9CUklER0VfTVJQX1NUQVJUX1RFU1RfTUFYICsgMV0gPSB7XFxubmV0L2JyaWRnZS9icl9tcnBfbmV0bGluay5jLTE5Ny1cXHRbSUZMQV9CUklER0VfTVJQX1NUQVJUX1RFU1RfVU5TUEVDXVxcdD0geyAudHlwZSA9IE5MQV9SRUpFQ1QgfSxcXG4tLVxcbm5ldC9icmlkZ2UvYnJfbXJwX25ldGxpbmsuYy0yMDQtXFxubmV0L2JyaWRnZS9icl9tcnBfbmV0bGluay5jOjIwNTpzdGF0aWMgaW50IGJyX21ycF9zdGFydF90ZXN0X3BhcnNlKHN0cnVjdCBuZXRfYnJpZGdlICpiciwgc3RydWN0IG5sYXR0ciAqYXR0cixcXG5uZXQvYnJpZGdlL2JyX21ycF9uZXRsaW5rLmMtMjA2LVxcdFxcdFxcdFxcdCAgIHN0cnVjdCBuZXRsaW5rX2V4dF9hY2sgKmV4dGFjaylcXG4tLVxcbm5ldC9icmlkZ2UvYnJfbXJwX25ldGxpbmsuYy0yMDgtXFx0c3RydWN0IG5sYXR0ciAqdGJbSUZMQV9CUklER0VfTVJQX1NUQVJUX1RFU1RfTUFYICsgMV07XFxubmV0L2JyaWRnZS9icl9tcnBfbmV0bGluay5jOjIwOTpcXHRzdHJ1Y3QgYnJfbXJwX3N0YXJ0X3Rlc3QgdGVzdDtcXG5uZXQvYnJpZGdlL2JyX21ycF9uZXRsaW5rLmMtMjEwLVxcdGludCBlcnI7XFxuLS1cXG5uZXQvYnJpZGdlL2JyX21ycF9uZXRsaW5rLmMtMjEyLVxcdGVyciA9IG5sYV9wYXJzZV9uZXN0ZWQodGIsIElGTEFfQlJJREdFX01SUF9TVEFSVF9URVNUX01BWCwgYXR0cixcXG5uZXQvYnJpZGdlL2JyX21ycF9uZXRsaW5rLmM6MjEzOlxcdFxcdFxcdCAgICAgICBicl9tcnBfc3RhcnRfdGVzdF9wb2xpY3ksIGV4dGFjayk7XFxubmV0L2JyaWRnZS9icl9tcnBfbmV0bGluay5jLTIxNC1cXHRpZiAoZXJyKVxcbi0tXFxubmV0L2JyaWRnZS9icl9tcnBfbmV0bGluay5jLTIzNy1cXG5uZXQvYnJpZGdlL2JyX21ycF9uZXRsaW5rLmM6MjM4OlxcdHJldHVybiBicl9tcnBfc3RhcnRfdGVzdChiciwgXFx1MDAyNnRlc3QpO1xcbm5ldC9icmlkZ2UvYnJfbXJwX25ldGxpbmsuYy0yMzktfVxcbi0tXFxubmV0L2JyaWRnZS9icl9tcnBfbmV0bGluay5jPTM1Nj1pbnQgYnJfbXJwX3BhcnNlKHN0cnVjdCBuZXRfYnJpZGdlICpiciwgc3RydWN0IG5ldF9icmlkZ2VfcG9ydCAqcCxcXG4tLVxcbm5ldC9icmlkZ2UvYnJfbXJwX25ldGxpbmsuYy00MTQtXFx0aWYgKHRiW0lGTEFfQlJJREdFX01SUF9TVEFSVF9URVNUXSkge1xcbm5ldC9icmlkZ2UvYnJfbXJwX25ldGxpbmsuYzo0MTU6XFx0XFx0ZXJyID0gYnJfbXJwX3N0YXJ0X3Rlc3RfcGFyc2UoYnIsXFxubmV0L2JyaWRnZS9icl9tcnBfbmV0bGluay5jLTQxNi1cXHRcXHRcXHRcXHRcXHQgICAgICB0YltJRkxBX0JSSURHRV9NUlBfU1RBUlRfVEVTVF0sXFxuLS1cXG5uZXQvYnJpZGdlL2JyX3ByaXZhdGVfbXJwLmg9NzQ9aW50IGJyX21ycF9zZXRfcmluZ19yb2xlKHN0cnVjdCBuZXRfYnJpZGdlICpiciwgc3RydWN0IGJyX21ycF9yaW5nX3JvbGUgKnJvbGUpO1xcbm5ldC9icmlkZ2UvYnJfcHJpdmF0ZV9tcnAuaDo3NTppbnQgYnJfbXJwX3N0YXJ0X3Rlc3Qoc3RydWN0IG5ldF9icmlkZ2UgKmJyLCBzdHJ1Y3QgYnJfbXJwX3N0YXJ0X3Rlc3QgKnRlc3QpO1xcbm5ldC9icmlkZ2UvYnJfcHJpdmF0ZV9tcnAuaC03Ni1pbnQgYnJfbXJwX3NldF9pbl9zdGF0ZShzdHJ1Y3QgbmV0X2JyaWRnZSAqYnIsIHN0cnVjdCBicl9tcnBfaW5fc3RhdGUgKnN0YXRlKTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjZUMjI6NDA6MzkuNTU0MDYyMTY5WiIsIlNlcSI6MjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQ2MDg0NTcxOTgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqRnV6emluZyBGb2N1czogQnJpZGdlIE1SUCBUZXN0IEltcGxlbWVudGF0aW9uKipcblxuT2theSwgc28gSSd2ZSByZWNlaXZlZCB0aGUgYG5ldGxpbmtgIHRyaWdnZXIgZm9yIGBJRkxBX0JSSURHRV9NUlBfU1RBUlRfVEVTVGAuIFRoaXMgaXMgZ29vZCwgaXQgbWVhbnMgdGhlIHVuZGVybHlpbmcgY29kZSBwYXRoIGlzIGFjdHVhbGx5IHJlYWNoYWJsZSBhbmQgZnVuY3Rpb25hbCDigJMgcHJvZ3Jlc3MhIE5vdywgSSBuZWVkIHRvIHBpbnBvaW50IHRoZSBrZXkgZnVuY3Rpb25zIGZvciBteSBmdXp6aW5nIGVmZm9ydHMuIExldCdzIHNlZS4uLlxuXG5JJ3ZlIGlkZW50aWZpZWQgc2V2ZXJhbCBmdW5jdGlvbnMgaW4gdGhlIGBicl9tcnBgIGNvZGUuIGBicl9tcnBfYWxsb2NfdGVzdF9za2JgLCBgYnJfbXJwX3Rlc3Rfd29ya19leHBpcmVkYCwgYW5kIGBicl9tcnBfaW5zdGFuY2VfcGFyc2VgIGFuZCBgYnJfbXJwX3N0YXJ0X3Rlc3RfcGFyc2VgIGFyZSBhbGwgc3RhdGljLCBtZWFuaW5nIHRoZXkncmUgaW50ZXJuYWwgdG8gdGhlIG1vZHVsZSwgYnV0IHBvdGVudGlhbGx5IHN0aWxsIHZ1bG5lcmFibGUuIFRoZSBub24tc3RhdGljIG9uZXMgYXJlIGBicl9tcnBfc3RhcnRfdGVzdGAsIGBicl9tcnBfYWRkYCwgYW5kIGBicl9tcnBfcGFyc2VgLiBTaW5jZSB0aGUgdHJpZ2dlciBpbml0aWF0ZWQgdGhlIHByb2Nlc3MsIGl0IG1ha2VzIHNlbnNlIHRvIHN0YXJ0IHdpdGggdGhlIGVudHJ5IHBvaW50cy5cblxuSSdsbCBzdGFydCB3aXRoIGEgZGVlcCBkaXZlIGludG8gYGJyX21ycF9zdGFydF90ZXN0YCBhbmQgYGJyX21ycF9hZGRgLiBJJ2xsIGFuYWx5emUgdGhlaXIgbG9naWMsIGFyZ3VtZW50IGhhbmRsaW5nLCBhbmQgYW55IHBvdGVudGlhbCBhcmVhcyBmb3IgaW5wdXQgdmFsaWRhdGlvbiBmbGF3cy4gVGhlc2UgdHdvIGZ1bmN0aW9ucyBhcmUgbGlrZWx5IHdoZXJlIHRoZSBpbml0aWFsIGRhdGEgcHJvY2Vzc2luZyBhbmQgc2V0dXAgaGFwcGVucy4gSWYgdGhlcmUgYXJlIHZ1bG5lcmFiaWxpdGllcyB0aGVyZSwgdGhleSBjb3VsZCBwb3RlbnRpYWxseSBsZWFkIHRvIGNyYXNoZXMgb3Igb3RoZXIgdW5kZXNpcmFibGUgYmVoYXZpb3IgdGhhdCBjYW4gYmUgZXhwbG9pdGVkIGluIGEgZnV6emluZyBjYW1wYWlnbi5cblxuXG4iLCJJbnB1dFRva2VucyI6OTY1MCwiT3V0cHV0VG9rZW5zIjozOCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE3MywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yNlQyMjo0MDo0NC4xNjI1MjE4MjdaIiwiU2VxIjoyNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU5MzkzNDA4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImJyX21ycF9zdGFydF90ZXN0XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9icmlkZ2UvYnJfbXJwLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L2JyaWRnZS9icl9tcnAuYz02NzI9aW50IGJyX21ycF9zZXRfcmluZ19yb2xlKHN0cnVjdCBuZXRfYnJpZGdlICpicixcXG4tLVxcbm5ldC9icmlkZ2UvYnJfbXJwLmMtNzAyLSAqL1xcbm5ldC9icmlkZ2UvYnJfbXJwLmM6NzAzOmludCBicl9tcnBfc3RhcnRfdGVzdChzdHJ1Y3QgbmV0X2JyaWRnZSAqYnIsXFxubmV0L2JyaWRnZS9icl9tcnAuYzo3MDQ6XFx0XFx0ICAgICAgc3RydWN0IGJyX21ycF9zdGFydF90ZXN0ICp0ZXN0KVxcbm5ldC9icmlkZ2UvYnJfbXJwLmMtNzA1LXtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjZUMjI6NDA6NDQuMjIxOTE5NzY1WiIsIlNlcSI6MjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQ0MzM2NzgxNzQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBCdWcgRml4IGFuZCBSZWxldmFudCBGdW5jdGlvbnMqKlxuXG5Pa2F5LCBzbyB0aGlzIHBhdGNoIGFkZHJlc3NlcyBhbiB1bmluaXRpYWxpemVkIG1lbW9yeSBpc3N1ZSB3aXRoaW4gYGJyX21ycF9hbGxvY190ZXN0X3NrYmAuIE15IGluaXRpYWwgdGhvdWdodCBpcyB0byBwaW5wb2ludCB0aGUgbW9zdCBhcHByb3ByaWF0ZSBmb2N1cyBzeW1ib2wgdG8gdW5kZXJzdGFuZCB0aGUgYnVnJ3Mgcm9vdCBjYXVzZSBhbmQgaW1wYWN0LiBJdCBzZWVtcyBgYnJfbXJwX2FsbG9jX3Rlc3Rfc2tiYCBpcyBjYWxsZWQgYnkgYGJyX21ycF90ZXN0X3dvcmtfZXhwaXJlZGAsIHdoaWNoLCBpbiB0dXJuLCBpcyBzY2hlZHVsZWQgYnkgYGJyX21ycF9zdGFydF90ZXN0YC5cblxuR2l2ZW4gdGhlIHByZWZlcmVuY2UgZm9yIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50cywgYGJyX21ycF9zdGFydF90ZXN0YCBpbW1lZGlhdGVseSBzdGFuZHMgb3V0IGFzIGEgc3Ryb25nIGNhbmRpZGF0ZS4gYGJyX21ycF90ZXN0X3dvcmtfZXhwaXJlZGAgaXMgcmVsZXZhbnQsIGJ1dCBpdCdzIGEgc3RhdGljIGZ1bmN0aW9uLCBzbyBsZXQncyBrZWVwIGl0IGluIG1pbmQuIElzIGBicl9tcnBfcGFyc2VgIGEgbmV0bGluayBlbnRyeSBwb2ludD8gR2l2ZW4gdGhhdCBwcmVmZXJlbmNlLCBpcyB0aGVyZSBhbm90aGVyIGVudHJ5IHBvaW50P1xuXG5UbyBjb25maXJtIG15IHVuZGVyc3RhbmRpbmcsIEkgbmVlZCB0byB0cmFjZSB0aGlzIGZ1cnRoZXIuIFNwZWNpZmljYWxseSwgbGV0IG1lIGRpZyBkZWVwZXIgaW50byBgYnJfbXJwX3Rlc3Rfd29ya19leHBpcmVkYCB0byBzZWUgaG93IGl0IHVzZXMgYGJyX21ycF9hbGxvY190ZXN0X3NrYmAuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjEwMzA1LCJPdXRwdXRUb2tlbnMiOjQwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjI3LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI2VDIyOjQwOjQ4LjY1NTU5OTYwOVoiLCJTZXEiOjI2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTg1MzA0NjksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiYnJfbXJwX3Rlc3Rfd29ya19leHBpcmVkXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9icmlkZ2UvYnJfbXJwLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L2JyaWRnZS9icl9tcnAuYz0yNDA9c3RhdGljIHN0cnVjdCBza19idWZmICpicl9tcnBfYWxsb2NfaW5fdGVzdF9za2Ioc3RydWN0IGJyX21ycCAqbXJwLFxcbi0tXFxubmV0L2JyaWRnZS9icl9tcnAuYy0yNzktICovXFxubmV0L2JyaWRnZS9icl9tcnAuYzoyODA6c3RhdGljIHZvaWQgYnJfbXJwX3Rlc3Rfd29ya19leHBpcmVkKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaylcXG5uZXQvYnJpZGdlL2JyX21ycC5jLTI4MS17XFxuLS1cXG5uZXQvYnJpZGdlL2JyX21ycC5jPTQ5OD1pbnQgYnJfbXJwX2FkZChzdHJ1Y3QgbmV0X2JyaWRnZSAqYnIsIHN0cnVjdCBicl9tcnBfaW5zdGFuY2UgKmluc3RhbmNlKVxcbi0tXFxubmV0L2JyaWRnZS9icl9tcnAuYy01NDMtXFxubmV0L2JyaWRnZS9icl9tcnAuYzo1NDQ6XFx0SU5JVF9ERUxBWUVEX1dPUksoXFx1MDAyNm1ycC1cXHUwMDNldGVzdF93b3JrLCBicl9tcnBfdGVzdF93b3JrX2V4cGlyZWQpO1xcbm5ldC9icmlkZ2UvYnJfbXJwLmMtNTQ1LVxcdElOSVRfREVMQVlFRF9XT1JLKFxcdTAwMjZtcnAtXFx1MDAzZWluX3Rlc3Rfd29yaywgYnJfbXJwX2luX3Rlc3Rfd29ya19leHBpcmVkKTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjZUMjI6NDA6NDguNzE0MTM2Mzc3WiIsIlNlcSI6MjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjUyOTEwNjYzMTgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBCdWcgRml4KipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBmaXggcmVsYXRlZCB0byB1bmluaXRpYWxpemVkIG1lbW9yeSBpbiBgYnJfbXJwX2FsbG9jX3Rlc3Rfc2tiYC4gTXkgaW5pdGlhbCB0aG91Z2h0IHdhcyB0byBleGFtaW5lIGBicl9tcnBfdGVzdF93b3JrX2V4cGlyZWRgIGJlY2F1c2UgdGhhdCdzIHRoZSBmdW5jdGlvbiBhY3R1YWxseSBydW5uaW5nIHRoZSBhbHRlcmVkIGNvZGUuIFRoZSBwcm9ibGVtIGlzIHRoYXQgaXQncyBhIHN0YXRpYyBmdW5jdGlvbi4gVGhhdCBtZWFucyBJIG5lZWQgdG8gdHJhY2UgYmFjayBmcm9tIHRoZXJlLlxuXG5gYnJfbXJwX3N0YXJ0X3Rlc3RgIGxvb2tzIHByb21pc2luZyBhcyB0aGUgZW50cnkgcG9pbnQgdGhhdCBzY2hlZHVsZXMgdGhlIHdvcmssIHNvIEknbGwgZGVmaW5pdGVseSBpbmNsdWRlIHRoYXQgaW4gdGhlIGFuYWx5c2lzLiBBbHNvLCBgYnJfbXJwX3BhcnNlYCBtYWtlcyBzZW5zZSB0byBpbmNsdWRlIGluIG15IGV4YW1pbmF0aW9uIG9mIHRoaXMgaXNzdWUuXG5cbk5vdywgbGV0J3MgbG9vayBhdCB0aGUgcGF0Y2ggaXRzZWxmLiBBaCwgSSBzZWUgaXQncyBhYm91dCBhbGxvY2F0aW5nIG1lbW9yeSBmb3IgYSBzdWItVExWIGluIGFuIHNrYiBhbmQgc2V0dGluZyB0aGUgbGVuZ3RoIGZpZWxkLiBUaGUgY3J1Y2lhbCBwYXJ0IGhlcmUgaXMgdGhlIGFkZGl0aW9uIG9mIGBzdWJfdGx2LVx1MDAzZWxlbmd0aCA9IDB4MDtgIGFuZCwgbW9yZSBpbXBvcnRhbnRseSwgdGhlIGNoYW5nZSBmcm9tIGBza2JfcHV0KHNrYiwgTVJQX09QVF9QQURESU5HKTtgIHRvIGBza2JfcHV0X3plcm8oc2tiLCBNUlBfT1BUX1BBRERJTkcpO2AuIFRoYXQncyB3aGVyZSB0aGUgaW5pdGlhbGl6YXRpb24gb2YgdGhlIGFsbG9jYXRlZCBtZW1vcnkgY29tZXMgaW4uIEl0J3MgaW5pdGlhbGl6aW5nIHRoZSBzdWItVExWIGxlbmd0aCB0byAwLCBhbmQgemVyb2luZyB0aGUgcGFkZGluZy4gSXQncyBhbGwgYWJvdXQgYXZvaWRpbmcgdGhhdCB1bmluaXRpYWxpemVkIG1lbW9yeS4gU28sIHRoaXMgZml4IHRhcmdldHMgdGhlIGFsbG9jYXRpb24gaW5zaWRlIGBicl9tcnBfYWxsb2NfdGVzdF9za2JgLCBhcyBleHBlY3RlZC5cblxuSSBoYXZlIHRvIG1ha2Ugc3VyZSB0aGUgQ09ORklHIHNldHRpbmdzIGFyZSB3aGF0IEkgZXhwZWN0LiBJIG5lZWQgdG8gZG91YmxlLWNoZWNrIHRoYXQgYEJSSURHRV9NUlBgIGlzIHRoZSBjb3JyZWN0IHNldHRpbmcuIEkgYWxzbyBuZWVkIHRvIGJlIGNlcnRhaW4gdGhhdCBgQlJJREdFYCBpcyBhbHNvIGVuYWJsZWQuIEkgc2hvdWxkIHByb2JhYmx5IHJlLWV4YW1pbmUgYG5ldC9icmlkZ2UvS2NvbmZpZ2AgdG8gYmUgY2VydGFpbi5cblxuXG4iLCJJbnB1dFRva2VucyI6MTEwOTcsIk91dHB1dFRva2VucyI6MjgsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyNzEsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjZUMjI6NDA6NTQuMDA1MjA1OTg2WiIsIlNlcSI6MjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1ODk4ODQ2OSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgQlJJREdFXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9icmlkZ2UvS2NvbmZpZ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvYnJpZGdlL0tjb25maWctNS1cXG5uZXQvYnJpZGdlL0tjb25maWc6Njpjb25maWcgQlJJREdFXFxubmV0L2JyaWRnZS9LY29uZmlnLTctXFx0dHJpc3RhdGUgXFxcIjgwMi4xZCBFdGhlcm5ldCBCcmlkZ2luZ1xcXCJcXG4tLVxcbm5ldC9icmlkZ2UvS2NvbmZpZy0zNS1cXG5uZXQvYnJpZGdlL0tjb25maWc6MzY6Y29uZmlnIEJSSURHRV9JR01QX1NOT09QSU5HXFxubmV0L2JyaWRnZS9LY29uZmlnLTM3LVxcdGJvb2wgXFxcIklHTVAvTUxEIHNub29waW5nXFxcIlxcbi0tXFxubmV0L2JyaWRnZS9LY29uZmlnLTQ5LVxcbm5ldC9icmlkZ2UvS2NvbmZpZzo1MDpjb25maWcgQlJJREdFX1ZMQU5fRklMVEVSSU5HXFxubmV0L2JyaWRnZS9LY29uZmlnLTUxLVxcdGJvb2wgXFxcIlZMQU4gZmlsdGVyaW5nXFxcIlxcbi0tXFxubmV0L2JyaWRnZS9LY29uZmlnLTYzLVxcbm5ldC9icmlkZ2UvS2NvbmZpZzo2NDpjb25maWcgQlJJREdFX01SUFxcbm5ldC9icmlkZ2UvS2NvbmZpZy02NS1cXHRib29sIFxcXCJNUlAgcHJvdG9jb2xcXFwiXFxuLS1cXG5uZXQvYnJpZGdlL0tjb25maWctNzUtXFxubmV0L2JyaWRnZS9LY29uZmlnOjc2OmNvbmZpZyBCUklER0VfQ0ZNXFxubmV0L2JyaWRnZS9LY29uZmlnLTc3LVxcdGJvb2wgXFxcIkNGTSBwcm90b2NvbFxcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjZUMjI6NDA6NTQuMDY0MjAwMjM1WiIsIlNlcSI6MjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMwODM2MjI3MTIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgYW4gZXhwZXJ0J3MgaW50ZXJuYWwgbW9ub2xvZ3VlOlxuXG4qKkRlZXAgRGl2ZSBpbnRvIENvbmZpZ3VyYXRpb24gYW5kIENvZGUgVXNhZ2UqKlxuXG5SaWdodCwgc28gSSdtIGZvY3VzaW5nIG9uIHRoZSBjb25maWd1cmF0aW9uIGhlcmUuIGBCUklER0VgIGFuZCBgQlJJREdFX01SUGAgYXJlIHRoZSBjcml0aWNhbCBjb25maWcgb3B0aW9ucywgdGhhdCdzIGNsZWFyLiBOb3csIGJlZm9yZSBJIG1vdmUgb24sIEkgd2FudCB0byBjb25maXJtIHNvbWV0aGluZyBpbiBteSBtaW5kLiBUaGUgYGJyX21ycF9hbGxvY190ZXN0X3NrYmAgZnVuY3Rpb24uLi4gSSBuZWVkIHRvIHF1aWNrbHkgdmVyaWZ5IHRoYXQgaXQncyBvbmx5IHVzZWQgd2hlcmUgSSAqZXhwZWN0KiBpdCB0byBiZS4gQW55IHVuZXhwZWN0ZWQgY2FsbHMgdG8gaXQgY291bGQgaW5kaWNhdGUgc29tZXRoaW5nIEkgbmVlZCB0byBpbnZlc3RpZ2F0ZSBmdXJ0aGVyLiBBIHF1aWNrIHNlYXJjaCBzaG91bGQgZ2l2ZSBtZSB0aGUgYXNzdXJhbmNlIEkgbmVlZCB0aGF0IGV2ZXJ5dGhpbmcncyBiZWhhdmluZyBhcyBpbnRlbmRlZCBpbiB0aGlzIGFyZWEuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjEyMDI3LCJPdXRwdXRUb2tlbnMiOjQxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzksIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjZUMjI6NDA6NTcuMTQ3ODI1MjY3WiIsIlNlcSI6MzAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo2MDcwNTcxOCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJicl9tcnBfYWxsb2NfdGVzdF9za2JcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L2JyaWRnZS9icl9tcnAuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvYnJpZGdlL2JyX21ycC5jPTE3MT1zdGF0aWMgdm9pZCBicl9tcnBfc2tiX2NvbW1vbihzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgYnJfbXJwICptcnApXFxuLS1cXG5uZXQvYnJpZGdlL2JyX21ycC5jLTE4MS1cXG5uZXQvYnJpZGdlL2JyX21ycC5jOjE4MjpzdGF0aWMgc3RydWN0IHNrX2J1ZmYgKmJyX21ycF9hbGxvY190ZXN0X3NrYihzdHJ1Y3QgYnJfbXJwICptcnAsXFxubmV0L2JyaWRnZS9icl9tcnAuYy0xODMtXFx0XFx0XFx0XFx0XFx0ICAgICBzdHJ1Y3QgbmV0X2JyaWRnZV9wb3J0ICpwLFxcbi0tXFxubmV0L2JyaWRnZS9icl9tcnAuYz0yODA9c3RhdGljIHZvaWQgYnJfbXJwX3Rlc3Rfd29ya19leHBpcmVkKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaylcXG4tLVxcbm5ldC9icmlkZ2UvYnJfbXJwLmMtMzEyLVxcdFxcdGlmICghbXJwLVxcdTAwM2V0ZXN0X21vbml0b3IpIHtcXG5uZXQvYnJpZGdlL2JyX21ycC5jOjMxMzpcXHRcXHRcXHRza2IgPSBicl9tcnBfYWxsb2NfdGVzdF9za2IobXJwLCBwLFxcbm5ldC9icmlkZ2UvYnJfbXJwLmMtMzE0LVxcdFxcdFxcdFxcdFxcdFxcdCAgICBCUl9NUlBfUE9SVF9ST0xFX1BSSU1BUlkpO1xcbi0tXFxubmV0L2JyaWRnZS9icl9tcnAuYy0zMjgtXFx0XFx0aWYgKCFtcnAtXFx1MDAzZXRlc3RfbW9uaXRvcikge1xcbm5ldC9icmlkZ2UvYnJfbXJwLmM6MzI5OlxcdFxcdFxcdHNrYiA9IGJyX21ycF9hbGxvY190ZXN0X3NrYihtcnAsIHAsXFxubmV0L2JyaWRnZS9icl9tcnAuYy0zMzAtXFx0XFx0XFx0XFx0XFx0XFx0ICAgIEJSX01SUF9QT1JUX1JPTEVfU0VDT05EQVJZKTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjZUMjI6NDA6NTcuMjA4NTM2OTU1WiIsIlNlcSI6MzEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjU0MzczMTI5MjUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQW5hbHlzaXMgb2YgdGhlIGBicl9tcnBfdGVzdF93b3JrX2V4cGlyZWRgIFZ1bG5lcmFiaWxpdHkgRml4KipcblxuT2theSwgc28gdGhpcyBwYXRjaCBpcyBzcGVjaWZpY2FsbHkgYWRkcmVzc2luZyBhbiBpc3N1ZSB3aXRoaW4gYGJyX21ycF90ZXN0X3dvcmtfZXhwaXJlZGAuIE15IGltbWVkaWF0ZSB0aG91Z2h0IGlzIHRvIHZlcmlmeSB3aGV0aGVyIHRoaXMgZnVuY3Rpb24gaXMgdGhlIHNvbGUgc2NoZWR1bGVyIGZvciBgdGVzdF93b3JrYC4gQSBxdWljayBsb29rIHJldmVhbHMgdGhhdCBpdCAqZG9lcyogcmVzY2hlZHVsZSBpdHNlbGYgdXNpbmcgYHF1ZXVlX2RlbGF5ZWRfd29ya2AsIGFuZCBpdCdzIGluaXRpYWxseSBzY2hlZHVsZWQgYnkgYGJyX21ycF9zdGFydF90ZXN0YC5cblxuVGhlcmVmb3JlLCB0aGUgY3JpdGljYWwgZnVuY3Rpb25zIHRvIGZvY3VzIG9uIGFyZSBgYnJfbXJwX3N0YXJ0X3Rlc3RgIGFuZCwgc2luY2Ugd2UncmUgZGVhbGluZyB3aXRoIG5ldGxpbmsgY29uZmlndXJhdGlvbiwgSSdsbCBhZGQgYGJyX21ycF9wYXJzZWAgdG8gdGhhdCBsaXN0LiBUaGF0IGxpa2VseSBoYW5kbGVzIHRoZSBpbml0aWFsIHRyaWdnZXIuXG5cbk5vdywgbGV0J3MgYXNzZW1ibGUgdGhlIGtleSBmaW5kaW5ncy4gVGhpcyBsb29rcyBsaWtlIGEgcHJpbWUgdGFyZ2V0IGZvciBmdXp6aW5nLiBUaGUgcGF0Y2ggY29ycmVjdHMgYW4gdW5pbml0aWFsaXplZCBtZW1vcnkgaXNzdWUgaW4gYGJyX21ycF9hbGxvY190ZXN0X3NrYmAsIHdoaWNoIGlzIGNhbGxlZCB3aXRoaW4gYGJyX21ycF90ZXN0X3dvcmtfZXhwaXJlZGAuIFRoZSB3b3JrZXIgaXRzZWxmIGlzIHNjaGVkdWxlZCBieSBgYnJfbXJwX3N0YXJ0X3Rlc3RgLCB3aGljaCBpcyByZWFjaGVkIHRocm91Z2ggYSBuZXRsaW5rIGNvbmZpZ3VyYXRpb24sIGhlbmNlIHRoZSBpbmNsdXNpb24gb2YgYGJyX21ycF9wYXJzZWAuIEdpdmVuIHRoYXQgdGhlIHZ1bG5lcmFiaWxpdHkgZXhpc3RzIHdpdGhpbiB0aGUgd29ya2VyIGZ1bmN0aW9uLCBJJ2Qgc2F5IHRoaXMgaXMgYSB3b3J0aHdoaWxlIGZ1enppbmcgdGFyZ2V0LlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMjYyOSwiT3V0cHV0VG9rZW5zIjoxMjgsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyNjMsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjZUMjI6NDE6MDIuNjQ1ODUyMThaIiwiU2VxIjozMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo4Mjg1NDQxOCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiQlJJREdFXCIsXG4gICAgXCJCUklER0VfTVJQXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiYnJfbXJwX3N0YXJ0X3Rlc3RcIixcbiAgICBcImJyX21ycF9wYXJzZVwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGZpeGVzIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IGluIGBicl9tcnBfYWxsb2NfdGVzdF9za2JgIHdoaWNoIGlzIGNhbGxlZCBieSB0aGUgYGJyX21ycF90ZXN0X3dvcmtfZXhwaXJlZGAgd29ya2VyLiBUaGUgd29ya2VyIGlzIHNjaGVkdWxlZCBieSBgYnJfbXJwX3N0YXJ0X3Rlc3RgIHdoaWNoIGlzIHJlYWNoYWJsZSB2aWEgbmV0bGluayBjb25maWd1cmF0aW9uIChgYnJfbXJwX3BhcnNlYCkuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiQlJJREdFXCIsXG4gICAgXCJCUklER0VfTVJQXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiYnJfbXJwX3N0YXJ0X3Rlc3RcIixcbiAgICBcImJyX21ycF9wYXJzZVwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGZpeGVzIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IGluIGBicl9tcnBfYWxsb2NfdGVzdF9za2JgIHdoaWNoIGlzIGNhbGxlZCBieSB0aGUgYGJyX21ycF90ZXN0X3dvcmtfZXhwaXJlZGAgd29ya2VyLiBUaGUgd29ya2VyIGlzIHNjaGVkdWxlZCBieSBgYnJfbXJwX3N0YXJ0X3Rlc3RgIHdoaWNoIGlzIHJlYWNoYWJsZSB2aWEgbmV0bGluayBjb25maWd1cmF0aW9uIChgYnJfbXJwX3BhcnNlYCkuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/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-workflowvnr7z[0].run-triage(0) Phase: Succeeded StartedAt: 2026-07-26 22:19:16 +0000 UTC FinishedAt: 2026-07-26 22:41:04 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "net", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git", "commit_hash": "53658c6f3682967a5e76ed4bc7462c4bdcddaec3", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "BRIDGE", "BRIDGE_MRP" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "net", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git", "commit_hash": "53658c6f3682967a5e76ed4bc7462c4bdcddaec3", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "BRIDGE", "BRIDGE_MRP" ], "series_id": "d9dd3ef0-7ee2-4289-bab3-f9268a6de3d0" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "br_mrp_start_test", "br_mrp_parse" ], "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+CgkJCTx0ZD4yMDI2LzA3LzI2IDIyOjQwPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0JSSURHRSYjMzQ7LAogICAgJiMzNDtCUklER0VfTVJQJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7YnJfbXJwX3N0YXJ0X3Rlc3QmIzM0OywKICAgICYjMzQ7YnJfbXJwX3BhcnNlJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGZpeGVzIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IGluIGBicl9tcnBfYWxsb2NfdGVzdF9za2JgIHdoaWNoIGlzIGNhbGxlZCBieSB0aGUgYGJyX21ycF90ZXN0X3dvcmtfZXhwaXJlZGAgd29ya2VyLiBUaGUgd29ya2VyIGlzIHNjaGVkdWxlZCBieSBgYnJfbXJwX3N0YXJ0X3Rlc3RgIHdoaWNoIGlzIHJlYWNoYWJsZSB2aWEgbmV0bGluayBjb25maWd1cmF0aW9uIChgYnJfbXJwX3BhcnNlYCkuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjYgMjI6NDA8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCBlMmU5MWJlNDE5ZjEyMTdkYTlkZGRlYmY1MWE2NDZiZDQ3Mzc2YTUwXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFN1biBKdWwgMjYgMjI6NDA6MDYgMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvbmV0L2JyaWRnZS9icl9tcnAuYyBiL25ldC9icmlkZ2UvYnJfbXJwLmNcbmluZGV4IDNmNzEyNmE3ZDcyMDAzLi5hNTU0OGY0NzU2MDRjNSAxMDA2NDRcbi0tLSBhL25ldC9icmlkZ2UvYnJfbXJwLmNcbiYjNDM7JiM0MzsmIzQzOyBiL25ldC9icmlkZ2UvYnJfbXJwLmNcbkBAIC0yMjYsOSAmIzQzOzIyNiwxMCBAQCBzdGF0aWMgc3RydWN0IHNrX2J1ZmYgKmJyX21ycF9hbGxvY190ZXN0X3NrYihzdHJ1Y3QgYnJfbXJwICptcnAsXG4gXG4gXHRcdHN1Yl90bHYgPSBza2JfcHV0KHNrYiwgc2l6ZW9mKCpzdWJfdGx2KSk7XG4gXHRcdHN1Yl90bHYtXHUwMDNldHlwZSA9IEJSX01SUF9TVUJfVExWX0hFQURFUl9URVNUX0FVVE9fTUdSO1xuJiM0MztcdFx0c3ViX3Rsdi1cdTAwM2VsZW5ndGggPSAweDA7XG4gXG4gXHRcdC8qIDMyIGJpdCBhbGxpZ21lbnQgc2hhbGwgYmUgZW5zdXJlZCB0aGVyZWZvcmUgYWRkIDIgYnl0ZXMgKi9cbi1cdFx0c2tiX3B1dChza2IsIE1SUF9PUFRfUEFERElORyk7XG4mIzQzO1x0XHRza2JfcHV0X3plcm8oc2tiLCBNUlBfT1BUX1BBRERJTkcpO1xuIFx0fVxuIFxuIFx0YnJfbXJwX3NrYl90bHYoc2tiLCBCUl9NUlBfVExWX0hFQURFUl9FTkQsIDB4MCk7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjYgMjI6NDA8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+YmVzdC1leHBlbnNpdmU8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0JSSURHRSYjMzQ7LAogICAgJiMzNDtCUklER0VfTVJQJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7YnJfbXJwX3N0YXJ0X3Rlc3QmIzM0OywKICAgICYjMzQ7YnJfbXJwX3BhcnNlJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGZpeGVzIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IGluIGBicl9tcnBfYWxsb2NfdGVzdF9za2JgIHdoaWNoIGlzIGNhbGxlZCBieSB0aGUgYGJyX21ycF90ZXN0X3dvcmtfZXhwaXJlZGAgd29ya2VyLiBUaGUgd29ya2VyIGlzIHNjaGVkdWxlZCBieSBgYnJfbXJwX3N0YXJ0X3Rlc3RgIHdoaWNoIGlzIHJlYWNoYWJsZSB2aWEgbmV0bGluayBjb25maWd1cmF0aW9uIChgYnJfbXJwX3BhcnNlYCkuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZQppZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5CnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuCgpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOgotIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuCi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuCi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LgotIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwKICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuCi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsCiAgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuCi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSkKICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuCgpJZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoCnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLgoKV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086CjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuCiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLgogICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnMKICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuCjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLgogICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCiAgIEFsc28gY2hlY2sgJiMzNDtkZXBlbmRzIG9uJiMzNDsgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzCiAgIG5lZWRlZCBmb3IgS2J1aWxkIHRvIGNvbXBpbGUgdGhlIGNvZGUgc3RhdGljYWxseSBpbnRvIHZtbGludXguIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncwogICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCBlMmU5MWJlNDE5ZjEyMTdkYTlkZGRlYmY1MWE2NDZiZDQ3Mzc2YTUwCkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIFN1biBKdWwgMjYgMjI6NDA6MDYgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9uZXQvYnJpZGdlL2JyX21ycC5jIGIvbmV0L2JyaWRnZS9icl9tcnAuYwppbmRleCAzZjcxMjZhN2Q3MjAwMy4uYTU1NDhmNDc1NjA0YzUgMTAwNjQ0Ci0tLSBhL25ldC9icmlkZ2UvYnJfbXJwLmMKJiM0MzsmIzQzOyYjNDM7IGIvbmV0L2JyaWRnZS9icl9tcnAuYwpAQCAtMjI2LDkgJiM0MzsyMjYsMTAgQEAgc3RhdGljIHN0cnVjdCBza19idWZmICpicl9tcnBfYWxsb2NfdGVzdF9za2Ioc3RydWN0IGJyX21ycCAqbXJwLAogCiAJCXN1Yl90bHYgPSBza2JfcHV0KHNrYiwgc2l6ZW9mKCpzdWJfdGx2KSk7CiAJCXN1Yl90bHYtJmd0O3R5cGUgPSBCUl9NUlBfU1VCX1RMVl9IRUFERVJfVEVTVF9BVVRPX01HUjsKJiM0MzsJCXN1Yl90bHYtJmd0O2xlbmd0aCA9IDB4MDsKIAogCQkvKiAzMiBiaXQgYWxsaWdtZW50IHNoYWxsIGJlIGVuc3VyZWQgdGhlcmVmb3JlIGFkZCAyIGJ5dGVzICovCi0JCXNrYl9wdXQoc2tiLCBNUlBfT1BUX1BBRERJTkcpOwomIzQzOwkJc2tiX3B1dF96ZXJvKHNrYiwgTVJQX09QVF9QQURESU5HKTsKIAl9CiAKIAlicl9tcnBfc2tiX3Rsdihza2IsIEJSX01SUF9UTFZfSEVBREVSX0VORCwgMHgwKTsKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjYgMjI6NDA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjEzNwoJCQkJCQkJb3V0cHV0OiA0MQoJCQkJCQkJdGhvdWdodHM6IDIzMgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgYSBCcmlkZ2UgTVJQIFBhdGNoKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGZvciBgbmV0L2JyaWRnZS9icl9tcnAuY2AuIEl0IHNlZW1zIGxpa2UgYSByZWxhdGl2ZWx5IHN0cmFpZ2h0Zm9yd2FyZCBtb2RpZmljYXRpb24gdG8gYGJyX21ycF9hbGxvY190ZXN0X3NrYmAuIFRoZSBrZXkgY2hhbmdlIGhlcmUgaW52b2x2ZXMgdGhlIGFsbG9jYXRpb24gb2YgYSBzdWItVExWIHdpdGhpbiBhbiBTS0IuIFNwZWNpZmljYWxseSwgaXQmIzM5O3MgaW5pdGlhbGl6aW5nIGBzdWJfdGx2LSZndDtsZW5ndGhgIHRvIHplcm8sIHdoaWNoIGlzIGdvb2QgcHJhY3RpY2UuIFdl4oCZcmUgYWxzbyBub3cgdXNpbmcgYHNrYl9wdXRfemVyb2AgaW5zdGVhZCBvZiBqdXN0IGBza2JfcHV0YCB0byBlbnN1cmUgdGhhdCBwYWRkaW5nIGlzIHplcm9lZCBvdXQuIFRoaXMgaXMgYSBzb2xpZCBhcHByb2FjaCB0byBwcmV2ZW50IHBvdGVudGlhbCBzZWN1cml0eSB2dWxuZXJhYmlsaXRpZXMgZHVlIHRvIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IGV4cG9zdXJlLCBlc3BlY2lhbGx5IGluIGEgbmV0d29yayBjb250ZXh0LgoKTm93LCBJIHdhbnQgdG8gY29uZmlybSB0aGUgY29udGV4dCwgYW5kIGhvdyBpbXBvcnRhbnQgdGhlc2UgY2hhbmdlcyBhcmUuIEkgc2hvdWxkIGNoZWNrIGV4YWN0bHkgd2hlcmUgYGJyX21ycF9hbGxvY190ZXN0X3NrYmAgaXMgY2FsbGVkIHdpdGhpbiB0aGUgbGFyZ2VyIE1SUCBmcmFtZXdvcmsgdG8gYXNzZXNzIHRoZSBpbXBhY3Qgb2YgdGhlc2UgYWx0ZXJhdGlvbnMuIFRoaXMgd2lsbCBoZWxwIG1lIHVuZGVyc3RhbmQgaWYgdGhpcyBpcyBhIGNyaXRpY2FsIGNvZGUgcGF0aCBvciBhIGxlc3MgZnJlcXVlbnRseSB1c2VkIGZ1bmN0aW9uLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI2IDIyOjQwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2JyX21ycF9hbGxvY190ZXN0X3NrYiYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9icmlkZ2UvYnJfbXJwLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L2JyaWRnZS9icl9tcnAuYz0xNzE9c3RhdGljIHZvaWQgYnJfbXJwX3NrYl9jb21tb24oc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IGJyX21ycCAqbXJwKVxuLS1cbm5ldC9icmlkZ2UvYnJfbXJwLmMtMTgxLVxubmV0L2JyaWRnZS9icl9tcnAuYzoxODI6c3RhdGljIHN0cnVjdCBza19idWZmICpicl9tcnBfYWxsb2NfdGVzdF9za2Ioc3RydWN0IGJyX21ycCAqbXJwLFxubmV0L2JyaWRnZS9icl9tcnAuYy0xODMtXHRcdFx0XHRcdCAgICAgc3RydWN0IG5ldF9icmlkZ2VfcG9ydCAqcCxcbi0tXG5uZXQvYnJpZGdlL2JyX21ycC5jPTI4MD1zdGF0aWMgdm9pZCBicl9tcnBfdGVzdF93b3JrX2V4cGlyZWQoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxuLS1cbm5ldC9icmlkZ2UvYnJfbXJwLmMtMzEyLVx0XHRpZiAoIW1ycC1cdTAwM2V0ZXN0X21vbml0b3IpIHtcbm5ldC9icmlkZ2UvYnJfbXJwLmM6MzEzOlx0XHRcdHNrYiA9IGJyX21ycF9hbGxvY190ZXN0X3NrYihtcnAsIHAsXG5uZXQvYnJpZGdlL2JyX21ycC5jLTMxNC1cdFx0XHRcdFx0XHQgICAgQlJfTVJQX1BPUlRfUk9MRV9QUklNQVJZKTtcbi0tXG5uZXQvYnJpZGdlL2JyX21ycC5jLTMyOC1cdFx0aWYgKCFtcnAtXHUwMDNldGVzdF9tb25pdG9yKSB7XG5uZXQvYnJpZGdlL2JyX21ycC5jOjMyOTpcdFx0XHRza2IgPSBicl9tcnBfYWxsb2NfdGVzdF9za2IobXJwLCBwLFxubmV0L2JyaWRnZS9icl9tcnAuYy0zMzAtXHRcdFx0XHRcdFx0ICAgIEJSX01SUF9QT1JUX1JPTEVfU0VDT05EQVJZKTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNiAyMjo0MDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyOTk3CgkJCQkJCQlvdXRwdXQ6IDMxCgkJCQkJCQl0aG91Z2h0czogNDAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhvc2UgdGhvdWdodHMsIHN1bW1hcml6ZWQgZnJvbSBteSBwZXJzcGVjdGl2ZSBhcyBhbiBleHBlcnQgaW4gdGhlIGZpZWxkOgoKKipEZWJ1Z2dpbmcgTVJQIEV4cGlyYXRpb24gaW4gdGhlIEJyaWRnZSoqCgpBbHJpZ2h0LCB0aGUgZGVidWdnZXIgcG9pbnRzIG1lIHRvIGBicl9tcnBfdGVzdF93b3JrX2V4cGlyZWRgLiBUaGF0IGZ1bmN0aW9uIGNhbGwgaW1tZWRpYXRlbHkgdHJpZ2dlcnMgc29tZSBxdWVzdGlvbnMg4oCTIHNwZWNpZmljYWxseSwgd2hhdCBjb25maWd1cmF0aW9uIG9wdGlvbnMgYXJlIGluIHBsYXkgdGhhdCBsZWFkIHVzIGhlcmU/IE15IGltbWVkaWF0ZSB0YXNrIGlzIHRvIGlkZW50aWZ5IHRoZSBjcml0aWNhbCBgQ09ORklHYCBzZXR0aW5ncyByZWxldmFudCB0byBgbmV0L2JyaWRnZS9icl9tcnAuY2AuIEkgbmVlZCB0byBmaWd1cmUgb3V0IHdoaWNoIGZlYXR1cmUgZmxhZ3MgYXJlIGVuYWJsZWQgb3IgZGlzYWJsZWQgdGhhdCBjb3VsZCBpbmZsdWVuY2UgdGhlIE1SUCAoTXVsdGlwbGUgUmVnaXN0cmF0aW9uIFByb3RvY29sKSBoYW5kbGluZyBpbiB0aGUgYnJpZGdlLiBLbm93aW5nIHRoZSBjb25maWd1cmF0aW9uIGlzIGtleSB0byB1bmRlcnN0YW5kaW5nIHRoZSBjb250ZXh0IG9mIHRoaXMgZXhwaXJhdGlvbiBjaGVjayBhbmQgdG8gdHJhY2UgdGhlIHBvdGVudGlhbCByb290IGNhdXNlLiBJJiMzOTtsbCBuZWVkIHRvIHVzZSBteSBmYW1pbGlhcml0eSB3aXRoIHRoZSBrZXJuZWwgYnVpbGQgc3lzdGVtIGFuZCBpdHMgY29uZmlndXJhdGlvbiBvcHRpb25zIHRvIHF1aWNrbHkgcGlucG9pbnQgdGhlIHJpZ2h0IHNldHRpbmdzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI2IDIyOjQwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2JyX21ycC5vJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L2JyaWRnZS9NYWtlZmlsZSYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvYnJpZGdlL01ha2VmaWxlPTI3PW9iai0kKENPTkZJR19ORVRGSUxURVIpICYjNDM7PSBuZXRmaWx0ZXIvXG5uZXQvYnJpZGdlL01ha2VmaWxlLTI4LVxubmV0L2JyaWRnZS9NYWtlZmlsZToyOTpicmlkZ2UtJChDT05GSUdfQlJJREdFX01SUClcdCYjNDM7PSBicl9tcnBfc3dpdGNoZGV2Lm8gYnJfbXJwLm8gYnJfbXJwX25ldGxpbmsub1xubmV0L2JyaWRnZS9NYWtlZmlsZS0zMC1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNiAyMjo0MDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzMzM5CgkJCQkJCQlvdXRwdXQ6IDMwCgkJCQkJCQl0aG91Z2h0czogMzAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZToKCioqSW52ZXN0aWdhdGluZyBNUlAgQ29uZmlndXJhdGlvbiBmb3IgQnJpZGdlIFN1cHBvcnQqKgoKQWxyaWdodCwgaXQgc2VlbXMgbGlrZSB3ZSYjMzk7cmUgZGl2aW5nIGludG8gTWVkaWEgUmVkdW5kYW5jeSBQcm90b2NvbCAoTVJQKSBhbmQgaXRzIGludGVncmF0aW9uIHdpdGggdGhlIGJyaWRnaW5nIGluZnJhc3RydWN0dXJlLiBUaGUgY2x1ZSBpcyBgQ09ORklHX0JSSURHRV9NUlBgIC0tIHRoYXQgc3Ryb25nbHkgc3VnZ2VzdHMgTVJQIHN1cHBvcnQgaXMgcmVxdWlyZWQgd2l0aGluIHRoZSBicmlkZ2UgY29uZmlndXJhdGlvbi4gVG8gZ2V0IGEgY2xlYXIgcGljdHVyZSBvZiBob3cgTVJQIGlzIGVuYWJsZWQgb3IgZGlzYWJsZWQsIEkgbmVlZCB0byB1bmRlcnN0YW5kIGl0cyBLY29uZmlnIGRlcGVuZGVuY2llcyBhbmQgb3B0aW9ucy4gTXkgbmV4dCBzdGVwIGlzIG9idmlvdXNseSB0byBnbyBhbmQgaW5zcGVjdCBgbmV0L2JyaWRnZS9LY29uZmlnYC4gSSYjMzk7bGwgYmUgbG9va2luZyBzcGVjaWZpY2FsbHkgZm9yIHRoZSBgQlJJREdFX01SUGAgc3ltYm9sIGFuZCBpdHMgcmVsYXRpb24gdG8gb3RoZXIgYnJpZGdlIGFuZCBuZXR3b3JraW5nIGNvbmZpZ3VyYXRpb25zLiBJIGFudGljaXBhdGUgZmluZGluZyBjb25kaXRpb25hbHMgb3IgZGVwZW5kZW5jaWVzIHRoYXQgZXhwbGFpbiBob3cgYEJSSURHRV9NUlBgIHJlbGF0ZXMgdG8gY29yZSBicmlkZ2luZyBmZWF0dXJlcyBhbmQgb3RoZXIgbmV0d29ya2luZyBzdWJzeXN0ZW1zLiBUaGlzIHdpbGwgaGVscCBtZSBncmFzcCB0aGUgYnJvYWRlciBpbXBsaWNhdGlvbnMgb2YgZW5hYmxpbmcgb3IgZGlzYWJsaW5nIE1SUCB3aXRoaW4gdGhlIGJyaWRnZSBjb250ZXh0LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI2IDIyOjQwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBCUklER0VfTVJQJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L2JyaWRnZS9LY29uZmlnJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9icmlkZ2UvS2NvbmZpZz01MD1jb25maWcgQlJJREdFX1ZMQU5fRklMVEVSSU5HXG4tLVxubmV0L2JyaWRnZS9LY29uZmlnLTYzLVxubmV0L2JyaWRnZS9LY29uZmlnOjY0OmNvbmZpZyBCUklER0VfTVJQXG5uZXQvYnJpZGdlL0tjb25maWctNjUtXHRib29sIFwmIzM0O01SUCBwcm90b2NvbFwmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI2IDIyOjQwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDM2NjAKCQkJCQkJCW91dHB1dDogMzMKCQkJCQkJCXRob3VnaHRzOiAxMwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6CgoqKkFuYWx5emluZyBEZXBlbmRlbmNpZXMgZm9yIEJSSURHRV9NUlAqKgoKT2theSwgc28gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGFyY2hpdGVjdHVyZSBhcm91bmQgYEJSSURHRV9NUlBgLiBJIGltbWVkaWF0ZWx5IHN0YXJ0IHRoaW5raW5nIGFib3V0IGl0cyBkZXBlbmRlbmNpZXMuIFdoYXQgb3RoZXIgbW9kdWxlcywgc2VydmljZXMsIGRhdGEgc3RydWN0dXJlcywgb3IgZXZlbiBleHRlcm5hbCBzeXN0ZW1zIGRvZXMgdGhpcyBwYXJ0aWN1bGFyIHBpZWNlIG9mIGNvZGUgcmVseSB1cG9uPyBJJiMzOTttIGVzc2VudGlhbGx5IHRyYWNpbmcgdGhlIGNhbGwgZ3JhcGgsIGJ1dCBmcm9tIHRoZSBwZXJzcGVjdGl2ZSBvZiBob3cgTVJQIChNYXRlcmlhbCBSZXF1aXJlbWVudHMgUGxhbm5pbmcpIGlzIHNwZWNpZmljYWxseSBiZWluZyBoYW5kbGVkIHdpdGhpbiB0aGUgYnJpZGdlLiBJcyBpdCBhIGNvcmUgY2FsY3VsYXRpb24gZW5naW5lLCBhIGRhdGEgYWRhcHRlciwgYW4gaW50ZWdyYXRpb24gbGF5ZXIsIG9yIHNvbWV0aGluZyBlbHNlIGVudGlyZWx5PyBLbm93aW5nIHRoZSBkZXBlbmRlbmNpZXMgd2lsbCBoZWxwIG1lIGltbWVkaWF0ZWx5IGdyYXNwIGl0cyBpbXBhY3QgYW5kIHBpbnBvaW50IHBvdGVudGlhbCBhcmVhcyBmb3Igb3B0aW1pemF0aW9uLCBkZWJ1Z2dpbmcsIG9yIGZ1dHVyZSBpbnRlZ3JhdGlvbiBlZmZvcnRzLiBUaGlzIGlzIHRoZSBmaXJzdCBxdWVzdGlvbiBJIG5lZWQgdG8gYW5zd2VyLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNiAyMjo0MDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O25ldC9icmlkZ2UvS2NvbmZpZyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDY0LAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDIwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAgNjQ6XHRjb25maWcgQlJJREdFX01SUFxuICA2NTpcdFx0Ym9vbCBcJiMzNDtNUlAgcHJvdG9jb2xcJiMzNDtcbiAgNjY6XHRcdGRlcGVuZHMgb24gQlJJREdFXG4gIDY3Olx0XHRkZWZhdWx0IG5cbiAgNjg6XHRcdGhlbHBcbiAgNjk6XHRcdCAgSWYgeW91IHNheSBZIGhlcmUsIHRoZW4gdGhlIEV0aGVybmV0IGJyaWRnZSB3aWxsIGJlIGFibGUgdG8gcnVuIE1SUFxuICA3MDpcdFx0ICBwcm90b2NvbCB0byBkZXRlY3QgbG9vcHNcbiAgNzE6XHRcbiAgNzI6XHRcdCAgU2F5IE4gdG8gZXhjbHVkZSB0aGlzIHN1cHBvcnQgYW5kIHJlZHVjZSB0aGUgYmluYXJ5IHNpemUuXG4gIDczOlx0XG4gIDc0Olx0XHQgIElmIHVuc3VyZSwgc2F5IE4uXG4gIDc1Olx0XG4gIDc2Olx0Y29uZmlnIEJSSURHRV9DRk1cbiAgNzc6XHRcdGJvb2wgXCYjMzQ7Q0ZNIHByb3RvY29sXCYjMzQ7XG4gIDc4Olx0XHRkZXBlbmRzIG9uIEJSSURHRVxuICA3OTpcdFx0aGVscFxuICA4MDpcdFx0ICBJZiB5b3Ugc2F5IFkgaGVyZSwgdGhlbiB0aGUgRXRoZXJuZXQgYnJpZGdlIHdpbGwgYmUgYWJsZSB0byBydW4gQ0ZNXG4gIDgxOlx0XHQgIHByb3RvY29sIGFjY29yZGluZyB0byA4MDIuMVEgc2VjdGlvbiAxMi4xNFxuICA4MjpcdFxuICA4MzpcdFx0ICBTYXkgTiB0byBleGNsdWRlIHRoaXMgc3VwcG9ydCBhbmQgcmVkdWNlIHRoZSBiaW5hcnkgc2l6ZS5cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjYgMjI6NDA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDExNQoJCQkJCQkJb3V0cHV0OiA0MAoJCQkJCQkJdGhvdWdodHM6IDM3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IGludGVycHJldGF0aW9uIG9mIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgbXkgb3duOgoKKipBbmFseXppbmcgRGVwZW5kZW5jaWVzIGFuZCBUcmlnZ2VyIE1lY2hhbmlzbXMqKgoKQWxyaWdodCwgaXQmIzM5O3MgY2xlYXIgd2UmIzM5O3JlIGRlYWxpbmcgd2l0aCBhIGRlcGVuZGVuY3kgaXNzdWUgaGVyZS4gVGhlIG1lbnRpb24gb2YgYm90aCBgQlJJREdFX01SUGAgYW5kIGBCUklER0VgIHRlbGxzIG1lIHRob3NlIGFyZSBmdW5kYW1lbnRhbCBidWlsZGluZyBibG9ja3MgZm9yIHdoYXRldmVyIHRhc2sgb3Igc3lzdGVtIHdlJiMzOTtyZSBleGFtaW5pbmcuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZWlyIHJlbGF0aW9uc2hpcCBhbmQgaG93IHRoZXkgaW50ZXJhY3QuIFNwZWNpZmljYWxseSwgSSBuZWVkIHRvIGtub3cgd2h5IGJvdGggb2YgdGhlc2UgY29tcG9uZW50cyBhcmUgcmVxdWlyZWQuCgpNeSBpbW1lZGlhdGUgbmV4dCBzdGVwIGlzIHRvIGRpdmUgaW50byBgYnJfbXJwX3Rlc3Rfd29ya19leHBpcmVkYC4gVGhpcyBpcyB0aGUgbW9zdCBsaWtlbHkgZW50cnkgcG9pbnQgdG8gdW5kZXJzdGFuZGluZyB0aGUgd2hvbGUgc3lzdGVtLCBzaW5jZSB0aGVyZSYjMzk7cyBhIHJlZmVyZW5jZSB0byB0aGUgYE1SUGAgY29tcG9uZW50LiBJIG5lZWQgdG8gdHJhY2UgKmhvdyogdGhpcyBpcyB0cmlnZ2VyZWQuIEkmIzM5O20gbG9va2luZyBmb3IgdGhlIGNvbmRpdGlvbnMgdGhhdCBpbml0aWF0ZSBpdC4gSXMgaXQgYSB0aW1lciwgYW4gZXZlbnQsIGEgc3BlY2lmaWMgc3RhdGUgY2hhbmdlPyBVbmRlcnN0YW5kaW5nIHRoZSB0cmlnZ2VyIG1lY2hhbmlzbSB3aWxsIGlsbHVtaW5hdGUgdGhlIHJvbGUgYEJSSURHRV9NUlBgIGFuZCBgQlJJREdFYCBwbGF5IGluIHRoZSBwcm9jZXNzLCBhbmQgdGhlaXIgcmVsYXRpb25zaGlwLiBPbmNlIEkgZmlndXJlIG91dCB0aGUgdHJpZ2dlciwgSSBjYW4gYmV0dGVyIHVuZGVyc3RhbmQgd2h5IHdlIGV2ZW4gbmVlZCB0aGVzZSBjb21wb25lbnRzIHRvIGJlZ2luIHdpdGguCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI2IDIyOjQwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2JyX21ycF90ZXN0X3dvcmtfZXhwaXJlZCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9icmlkZ2UvYnJfbXJwLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L2JyaWRnZS9icl9tcnAuYz0yNDA9c3RhdGljIHN0cnVjdCBza19idWZmICpicl9tcnBfYWxsb2NfaW5fdGVzdF9za2Ioc3RydWN0IGJyX21ycCAqbXJwLFxuLS1cbm5ldC9icmlkZ2UvYnJfbXJwLmMtMjc5LSAqL1xubmV0L2JyaWRnZS9icl9tcnAuYzoyODA6c3RhdGljIHZvaWQgYnJfbXJwX3Rlc3Rfd29ya19leHBpcmVkKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaylcbm5ldC9icmlkZ2UvYnJfbXJwLmMtMjgxLXtcbi0tXG5uZXQvYnJpZGdlL2JyX21ycC5jPTQ5OD1pbnQgYnJfbXJwX2FkZChzdHJ1Y3QgbmV0X2JyaWRnZSAqYnIsIHN0cnVjdCBicl9tcnBfaW5zdGFuY2UgKmluc3RhbmNlKVxuLS1cbm5ldC9icmlkZ2UvYnJfbXJwLmMtNTQzLVxubmV0L2JyaWRnZS9icl9tcnAuYzo1NDQ6XHRJTklUX0RFTEFZRURfV09SSyhcdTAwMjZtcnAtXHUwMDNldGVzdF93b3JrLCBicl9tcnBfdGVzdF93b3JrX2V4cGlyZWQpO1xubmV0L2JyaWRnZS9icl9tcnAuYy01NDUtXHRJTklUX0RFTEFZRURfV09SSyhcdTAwMjZtcnAtXHUwMDNlaW5fdGVzdF93b3JrLCBicl9tcnBfaW5fdGVzdF93b3JrX2V4cGlyZWQpO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNiAyMjo0MDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0Njk1CgkJCQkJCQlvdXRwdXQ6IDMwCgkJCQkJCQl0aG91Z2h0czogMjcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgYSBzdW1tYXJ5IG9mIG15IHRob3VnaHQgcHJvY2VzcywgYXMgaWYgSSB3ZXJlIGFuYWx5emluZyB0aGF0IGNvZGUgc25pcHBldDoKCioqSW5pdGlhbGl6YXRpb24gYW5kIFRyaWdnZXIgQW5hbHlzaXMqKgoKT2theSwgc28gYGJyX21ycF9hZGRgIGlzIHRoZSBzdGFydGluZyBwb2ludCwgdGhlIGluaXRpYWxpemF0aW9uIHJvdXRpbmUgZm9yIHNvbWV0aGluZy4gVGhlIGltbWVkaWF0ZSBxdWVzdGlvbiBpcywgd2hhdCBraWNrcyB0aGlzIHRoaW5nIG9mZj8gV2hhdCBhcmUgdGhlIGNhbGxpbmcgY29uZGl0aW9ucz8gSSBuZWVkIHRvIHRyYWNlIHRoZSB0cmlnZ2VycyBvZiBgYnJfbXJwX2FkZGAgdG8gdW5kZXJzdGFuZCBpdHMgY29udGV4dCBhbmQgdGhlIG92ZXJhbGwgcHJvY2VzcyBmbG93LiBVbmRlcnN0YW5kaW5nIHRoZSBldmVudCB0aGF0IGxlYWRzIHRvIGl0cyBleGVjdXRpb24gaXMgY3J1Y2lhbCBmb3IgYSBjb21wbGV0ZSBhc3Nlc3NtZW50LiBMZXQmIzM5O3MgZGlnIGludG8gdGhhdCBjYWxsaW5nIHNlcXVlbmNlLi4uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI2IDIyOjQwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2JyX21ycF9hZGQmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvYnJpZGdlLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvYnJpZGdlL2JyX21ycC5jPTQyOT1zdGF0aWMgdm9pZCBicl9tcnBfZGVsX2ltcGwoc3RydWN0IG5ldF9icmlkZ2UgKmJyLCBzdHJ1Y3QgYnJfbXJwICptcnApXG4tLVxubmV0L2JyaWRnZS9icl9tcnAuYy00OTctICovXG5uZXQvYnJpZGdlL2JyX21ycC5jOjQ5ODppbnQgYnJfbXJwX2FkZChzdHJ1Y3QgbmV0X2JyaWRnZSAqYnIsIHN0cnVjdCBicl9tcnBfaW5zdGFuY2UgKmluc3RhbmNlKVxubmV0L2JyaWRnZS9icl9tcnAuYy00OTkte1xuLS1cbm5ldC9icmlkZ2UvYnJfbXJwX25ldGxpbmsuYz0zMT1zdGF0aWMgaW50IGJyX21ycF9pbnN0YW5jZV9wYXJzZShzdHJ1Y3QgbmV0X2JyaWRnZSAqYnIsIHN0cnVjdCBubGF0dHIgKmF0dHIsXG4tLVxubmV0L2JyaWRnZS9icl9tcnBfbmV0bGluay5jLTYxLVx0aWYgKGNtZCA9PSBSVE1fU0VUTElOSylcbm5ldC9icmlkZ2UvYnJfbXJwX25ldGxpbmsuYzo2MjpcdFx0cmV0dXJuIGJyX21ycF9hZGQoYnIsIFx1MDAyNmluc3QpO1xubmV0L2JyaWRnZS9icl9tcnBfbmV0bGluay5jLTYzLVx0ZWxzZVxuLS1cbm5ldC9icmlkZ2UvYnJfcHJpdmF0ZV9tcnAuaD01OT1lbnVtIGJyX21ycF9od19zdXBwb3J0IHtcbi0tXG5uZXQvYnJpZGdlL2JyX3ByaXZhdGVfbXJwLmgtNjUtLyogYnJfbXJwLmMgKi9cbm5ldC9icmlkZ2UvYnJfcHJpdmF0ZV9tcnAuaDo2NjppbnQgYnJfbXJwX2FkZChzdHJ1Y3QgbmV0X2JyaWRnZSAqYnIsIHN0cnVjdCBicl9tcnBfaW5zdGFuY2UgKmluc3RhbmNlKTtcbm5ldC9icmlkZ2UvYnJfcHJpdmF0ZV9tcnAuaC02Ny1pbnQgYnJfbXJwX2RlbChzdHJ1Y3QgbmV0X2JyaWRnZSAqYnIsIHN0cnVjdCBicl9tcnBfaW5zdGFuY2UgKmluc3RhbmNlKTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjYgMjI6NDA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNTI2NgoJCQkJCQkJb3V0cHV0OiA0MQoJCQkJCQkJdGhvdWdodHM6IDQyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBteSBvd24gbWVudGFsIHByb2Nlc3NpbmcgYXMgYW4gZXhwZXJ0OgoKKipJbnZlc3RpZ2F0aW5nIGEgYFJUTV9TRVRMSU5LYCBUcmlnZ2VyIGluIGBicl9tcnBfbmV0bGluay5jYCoqCgpBbHJpZ2h0LCB0aGF0IGBSVE1fU0VUTElOS2AgbWVzc2FnZSBoYXMgbXkgYXR0ZW50aW9uLiBJdCYjMzk7cyBjb21pbmcgaW4gdGhyb3VnaCB0aGUgbmV0bGluayBpbnRlcmZhY2UsIHNwZWNpZmljYWxseSB3aXRoaW4gdGhlIGNvbnRleHQgb2YgYGJyX21ycF9uZXRsaW5rLmNgLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGF0JiMzOTtzIGhhcHBlbmluZy4gTXkgaW1tZWRpYXRlIGZvY3VzIGlzIHRvIGRpc3NlY3QgdGhlIGNvZGUgd2l0aGluIGBicl9tcnBfbmV0bGluay5jYC4gSSBoYXZlIGEgZmVlbGluZyB0aGlzIGlzIHdoZXJlIHRoZSBjb3JlIG9mIHRoZSBpbnRlcmFjdGlvbiB3aXRoIHRoZSBicmlkZ2UgYW5kIE1SUCAoTXVsdGlwbGUgUmVnaXN0cmF0aW9uIFByb3RvY29sKSBpcyBiZWluZyBoYW5kbGVkIGF0IHRoZSBuZXRsaW5rIGxldmVsLiBJJiMzOTtsbCBzdGFydCBieSB0cmFjaW5nIHRoZSBwYXRoIGZyb20gdGhlIG5ldGxpbmsgbWVzc2FnZSBoYW5kbGVyIHdpdGhpbiB0aGF0IGZpbGUsIHNlZSB3aGF0IGFjdGlvbnMgaXQmIzM5O3MgdGFraW5nIG9uIHRoZSBicmlkZ2UgY29uZmlndXJhdGlvbiwgYW5kIGZpZ3VyZSBvdXQgdGhlIHNlcXVlbmNlIG9mIGNhbGxzIHRoYXQgYXJlIGJlaW5nIG1hZGUuIEkmIzM5O2xsIGJlIHBhcnRpY3VsYXJseSBpbnRlcmVzdGVkIGluIGhvdyBsaW5rIHNldHRpbmdzIGFyZSB0cmFuc2xhdGVkIGludG8gYnJpZGdlIG9yIE1SUCBzcGVjaWZpYyBjb25maWd1cmF0aW9ucy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjYgMjI6NDA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7YnJfbXJwX2luc3RhbmNlX3BhcnNlJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L2JyaWRnZS9icl9tcnBfbmV0bGluay5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9icmlkZ2UvYnJfbXJwX25ldGxpbmsuYz0yMz1icl9tcnBfaW5zdGFuY2VfcG9saWN5W0lGTEFfQlJJREdFX01SUF9JTlNUQU5DRV9NQVggJiM0MzsgMV0gPSB7XG4tLVxubmV0L2JyaWRnZS9icl9tcnBfbmV0bGluay5jLTMwLVxubmV0L2JyaWRnZS9icl9tcnBfbmV0bGluay5jOjMxOnN0YXRpYyBpbnQgYnJfbXJwX2luc3RhbmNlX3BhcnNlKHN0cnVjdCBuZXRfYnJpZGdlICpiciwgc3RydWN0IG5sYXR0ciAqYXR0cixcbm5ldC9icmlkZ2UvYnJfbXJwX25ldGxpbmsuYy0zMi1cdFx0XHRcdCBpbnQgY21kLCBzdHJ1Y3QgbmV0bGlua19leHRfYWNrICpleHRhY2spXG4tLVxubmV0L2JyaWRnZS9icl9tcnBfbmV0bGluay5jPTM1Nj1pbnQgYnJfbXJwX3BhcnNlKHN0cnVjdCBuZXRfYnJpZGdlICpiciwgc3RydWN0IG5ldF9icmlkZ2VfcG9ydCAqcCxcbi0tXG5uZXQvYnJpZGdlL2JyX21ycF9uZXRsaW5rLmMtMzc4LVx0aWYgKHRiW0lGTEFfQlJJREdFX01SUF9JTlNUQU5DRV0pIHtcbm5ldC9icmlkZ2UvYnJfbXJwX25ldGxpbmsuYzozNzk6XHRcdGVyciA9IGJyX21ycF9pbnN0YW5jZV9wYXJzZShiciwgdGJbSUZMQV9CUklER0VfTVJQX0lOU1RBTkNFXSxcbm5ldC9icmlkZ2UvYnJfbXJwX25ldGxpbmsuYy0zODAtXHRcdFx0XHRcdCAgICBjbWQsIGV4dGFjayk7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI2IDIyOjQwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDU4NjIKCQkJCQkJCW91dHB1dDogMzAKCQkJCQkJCXRob3VnaHRzOiAzMQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgYW4gZXhwZXJ0JiMzOTtzIGludGVybmFsIG1vbm9sb2d1ZToKCioqVHJhY2luZyB0aGUgRXhlY3V0aW9uIFBhdGgqKgoKQWxyaWdodCwgYGJyX21ycF9wYXJzZWAgaXMgdGhlIHN0YXJ0aW5nIHBvaW50LCB0aGUgbWFpbiBlbnRyeSBmdW5jdGlvbiBmb3IgdGhpcyBtb2R1bGUuIE15IGZpcnN0IG1vdmUgaXMgYWx3YXlzIHRvIHVuZGVyc3RhbmQgdGhlIGNhbGxpbmcgY29udGV4dC4gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgd2hlcmUgYGJyX21ycF9wYXJzZWAgaXMgYmVpbmcgaW52b2tlZC4gVGhhdCBnaXZlcyBtZSBjcml0aWNhbCBjb250ZXh0IG9uIGhvdyB0aGUgZGF0YSBpcyBiZWluZyBmZWQgaW4gYW5kIHRoZSBvdmVyYWxsIHB1cnBvc2UgaXQgc2VydmVzIHdpdGhpbiB0aGUgbGFyZ2VyIHN5c3RlbS4gVGltZSB0byBkaWcgaW50byB0aGUgY2FsbCBncmFwaCBhbmQgc2VlIHdoZXJlIHRoZSBlbnRyeSBwb2ludCBpcyB1c2VkLiBVbmRlcnN0YW5kaW5nIHRoaXMgd2lsbCBpbW1lZGlhdGVseSBwcm92aWRlIGEgY3J1Y2lhbCBsYXllciBvZiBjbGFyaXR5IQoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNiAyMjo0MDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDticl9tcnBfcGFyc2UmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvYnJpZGdlLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvYnJpZGdlL2JyX21ycF9uZXRsaW5rLmM9MzI0PXN0YXRpYyBpbnQgYnJfbXJwX3N0YXJ0X2luX3Rlc3RfcGFyc2Uoc3RydWN0IG5ldF9icmlkZ2UgKmJyLFxuLS1cbm5ldC9icmlkZ2UvYnJfbXJwX25ldGxpbmsuYy0zNTUtXG5uZXQvYnJpZGdlL2JyX21ycF9uZXRsaW5rLmM6MzU2OmludCBicl9tcnBfcGFyc2Uoc3RydWN0IG5ldF9icmlkZ2UgKmJyLCBzdHJ1Y3QgbmV0X2JyaWRnZV9wb3J0ICpwLFxubmV0L2JyaWRnZS9icl9tcnBfbmV0bGluay5jLTM1Ny1cdFx0IHN0cnVjdCBubGF0dHIgKmF0dHIsIGludCBjbWQsIHN0cnVjdCBuZXRsaW5rX2V4dF9hY2sgKmV4dGFjaylcbi0tXG5uZXQvYnJpZGdlL2JyX25ldGxpbmsuYz04MDk9c3RhdGljIGludCBicl9hZnNwZWMoc3RydWN0IG5ldF9icmlkZ2UgKmJyLFxuLS1cbm5ldC9icmlkZ2UvYnJfbmV0bGluay5jLTg0OC1cdFx0Y2FzZSBJRkxBX0JSSURHRV9NUlA6XG5uZXQvYnJpZGdlL2JyX25ldGxpbmsuYzo4NDk6XHRcdFx0ZXJyID0gYnJfbXJwX3BhcnNlKGJyLCBwLCBhdHRyLCBjbWQsIGV4dGFjayk7XG5uZXQvYnJpZGdlL2JyX25ldGxpbmsuYy04NTAtXHRcdFx0aWYgKGVycilcbi0tXG5uZXQvYnJpZGdlL2JyX3ByaXZhdGUuaD0yMDY4PXVuc2lnbmVkIGxvbmcgYnJfdGltZXJfdmFsdWUoY29uc3Qgc3RydWN0IHRpbWVyX2xpc3QgKnRpbWVyKTtcbi0tXG5uZXQvYnJpZGdlL2JyX3ByaXZhdGUuaC0yMDczLSNpZiBJU19FTkFCTEVEKENPTkZJR19CUklER0VfTVJQKVxubmV0L2JyaWRnZS9icl9wcml2YXRlLmg6MjA3NDppbnQgYnJfbXJwX3BhcnNlKHN0cnVjdCBuZXRfYnJpZGdlICpiciwgc3RydWN0IG5ldF9icmlkZ2VfcG9ydCAqcCxcbm5ldC9icmlkZ2UvYnJfcHJpdmF0ZS5oLTIwNzUtXHRcdCBzdHJ1Y3QgbmxhdHRyICphdHRyLCBpbnQgY21kLCBzdHJ1Y3QgbmV0bGlua19leHRfYWNrICpleHRhY2spO1xuLS1cbm5ldC9icmlkZ2UvYnJfcHJpdmF0ZS5oPTIwNzg9aW50IGJyX21ycF9maWxsX2luZm8oc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IG5ldF9icmlkZ2UgKmJyKTtcbm5ldC9icmlkZ2UvYnJfcHJpdmF0ZS5oLTIwNzktI2Vsc2Vcbm5ldC9icmlkZ2UvYnJfcHJpdmF0ZS5oOjIwODA6c3RhdGljIGlubGluZSBpbnQgYnJfbXJwX3BhcnNlKHN0cnVjdCBuZXRfYnJpZGdlICpiciwgc3RydWN0IG5ldF9icmlkZ2VfcG9ydCAqcCxcbm5ldC9icmlkZ2UvYnJfcHJpdmF0ZS5oLTIwODEtXHRcdFx0ICAgICAgIHN0cnVjdCBubGF0dHIgKmF0dHIsIGludCBjbWQsXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI2IDIyOjQwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDY1OTkKCQkJCQkJCW91dHB1dDogMzMKCQkJCQkJCXRob3VnaHRzOiAxMTIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBCcmlkZ2UgTmV0bGluayBDb25maWd1cmF0aW9uKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGFuZCB0cmFjaW5nIHRoZSBjb2RlLiBJdCBzZWVtcyB0aGUgZnVuY3Rpb24gaW4gcXVlc3Rpb24sIGBicl9tcnBfYWRkYCwgaXMgY2FsbGVkIGZyb20gYGJyX2Fmc3BlY2Agd2l0aGluIGBicl9uZXRsaW5rLmNgLiBUaGF0IHBsYWNlcyBpdCBmaXJtbHkgd2l0aGluIHRoZSBicmlkZ2UgbmV0bGluayBjb25maWd1cmF0aW9uIGNvbnRleHQsIHdoaWNoIG1ha2VzIHNlbnNlLiBJIGNhbiBjb25maXJtLCB0aGVuLCB0aGF0IGBicl9tcnBfYWRkYCBpcyBkZWZpbml0ZWx5IHJlYWNoYWJsZSB3aXRoaW4gdGhpcyBmbG93LgoKTm93LCB0aGUgcGF0Y2ggaXRzZWxmIHRhcmdldHMgdW5pbml0aWFsaXplZCBtZW1vcnkgd2l0aGluIGBicl9tcnBfYWxsb2NfdGVzdF9za2JgLiBTbyB0aGUgbmV4dCBsb2dpY2FsIHN0ZXAgaXMgdG8gdW5kZXJzdGFuZCB3aGF0IHRyaWdnZXJzIHRoYXQgZnVuY3Rpb24uIExldCYjMzk7cyBzZWUuLi4gYWgsIGhlcmUgaXQgaXM6IGBicl9tcnBfdGVzdF93b3JrX2V4cGlyZWRgIGlzIHJlc3BvbnNpYmxlIGZvciBjYWxsaW5nIGl0LiBUaGF0JiMzOTtzIGdvb2QuCgpTbywgSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2hlcmUgYHRlc3Rfd29ya2AgKHByZXN1bWFibHkgcmVsYXRlZCB0byB0aGF0ICYjMzQ7dGVzdCYjMzQ7IHdvcmspIGdldHMgc2NoZWR1bGVkIHRvIGdldCB0aGUgYmlnZ2VyIHBpY3R1cmUuIEkgbmVlZCB0byB0cmFjZSBiYWNrIGZyb20gYGJyX21ycF90ZXN0X3dvcmtfZXhwaXJlZGAgdG8gZmluZCBvdXQgd2hlcmUgdGhpcyBgdGVzdF93b3JrYCBpcyBhY3R1YWxseSBzY2hlZHVsZWQgZnJvbSB3aXRoaW4gdGhlIGNvZGUuIFRoZW4sIEkgY2FuIHVuZGVyc3RhbmQgd2hlbiBhbmQgdW5kZXIgd2hhdCBjaXJjdW1zdGFuY2VzIHRoaXMgdW5pbml0aWFsaXplZCBtZW1vcnkgcHJvYmxlbSB3aWxsIG9jY3VyLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNiAyMjo0MDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDt0ZXN0X3dvcmsmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvYnJpZGdlL2JyX21ycC5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9icmlkZ2UvYnJfbXJwLmM9MjQwPXN0YXRpYyBzdHJ1Y3Qgc2tfYnVmZiAqYnJfbXJwX2FsbG9jX2luX3Rlc3Rfc2tiKHN0cnVjdCBicl9tcnAgKm1ycCxcbi0tXG5uZXQvYnJpZGdlL2JyX21ycC5jLTI3OS0gKi9cbm5ldC9icmlkZ2UvYnJfbXJwLmM6MjgwOnN0YXRpYyB2b2lkIGJyX21ycF90ZXN0X3dvcmtfZXhwaXJlZChzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspXG5uZXQvYnJpZGdlL2JyX21ycC5jLTI4MS17XG5uZXQvYnJpZGdlL2JyX21ycC5jLTI4Mi1cdHN0cnVjdCBkZWxheWVkX3dvcmsgKmRlbF93b3JrID0gdG9fZGVsYXllZF93b3JrKHdvcmspO1xubmV0L2JyaWRnZS9icl9tcnAuYzoyODM6XHRzdHJ1Y3QgYnJfbXJwICptcnAgPSBjb250YWluZXJfb2YoZGVsX3dvcmssIHN0cnVjdCBicl9tcnAsIHRlc3Rfd29yayk7XG5uZXQvYnJpZGdlL2JyX21ycC5jLTI4NC1cdHN0cnVjdCBuZXRfYnJpZGdlX3BvcnQgKnA7XG4tLVxubmV0L2JyaWRnZS9icl9tcnAuYy0zNDQtXG5uZXQvYnJpZGdlL2JyX21ycC5jOjM0NTpcdHF1ZXVlX2RlbGF5ZWRfd29yayhzeXN0ZW1fcGVyY3B1X3dxLCBcdTAwMjZtcnAtXHUwMDNldGVzdF93b3JrLFxubmV0L2JyaWRnZS9icl9tcnAuYy0zNDYtXHRcdFx0ICAgdXNlY3NfdG9famlmZmllcyhtcnAtXHUwMDNldGVzdF9pbnRlcnZhbCkpO1xuLS1cbm5ldC9icmlkZ2UvYnJfbXJwLmMtMzUyLSAqL1xubmV0L2JyaWRnZS9icl9tcnAuYzozNTM6c3RhdGljIHZvaWQgYnJfbXJwX2luX3Rlc3Rfd29ya19leHBpcmVkKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaylcbm5ldC9icmlkZ2UvYnJfbXJwLmMtMzU0LXtcbm5ldC9icmlkZ2UvYnJfbXJwLmMtMzU1LVx0c3RydWN0IGRlbGF5ZWRfd29yayAqZGVsX3dvcmsgPSB0b19kZWxheWVkX3dvcmsod29yayk7XG5uZXQvYnJpZGdlL2JyX21ycC5jOjM1NjpcdHN0cnVjdCBicl9tcnAgKm1ycCA9IGNvbnRhaW5lcl9vZihkZWxfd29yaywgc3RydWN0IGJyX21ycCwgaW5fdGVzdF93b3JrKTtcbm5ldC9icmlkZ2UvYnJfbXJwLmMtMzU3LVx0c3RydWN0IG5ldF9icmlkZ2VfcG9ydCAqcDtcbi0tXG5uZXQvYnJpZGdlL2JyX21ycC5jLTQyMS1cbm5ldC9icmlkZ2UvYnJfbXJwLmM6NDIyOlx0cXVldWVfZGVsYXllZF93b3JrKHN5c3RlbV9wZXJjcHVfd3EsIFx1MDAyNm1ycC1cdTAwM2Vpbl90ZXN0X3dvcmssXG5uZXQvYnJpZGdlL2JyX21ycC5jLTQyMy1cdFx0XHQgICB1c2Vjc190b19qaWZmaWVzKG1ycC1cdTAwM2Vpbl90ZXN0X2ludGVydmFsKSk7XG4tLVxubmV0L2JyaWRnZS9icl9tcnAuYz00Mjk9c3RhdGljIHZvaWQgYnJfbXJwX2RlbF9pbXBsKHN0cnVjdCBuZXRfYnJpZGdlICpiciwgc3RydWN0IGJyX21ycCAqbXJwKVxuLS1cbm5ldC9icmlkZ2UvYnJfbXJwLmMtNDM0LVx0LyogU3RvcCBzZW5kaW5nIE1SUF9UZXN0IGZyYW1lcyAqL1xubmV0L2JyaWRnZS9icl9tcnAuYzo0MzU6XHRjYW5jZWxfZGVsYXllZF93b3JrX3N5bmMoXHUwMDI2bXJwLVx1MDAzZXRlc3Rfd29yayk7XG5uZXQvYnJpZGdlL2JyX21ycC5jLTQzNi1cdGJyX21ycF9zd2l0Y2hkZXZfc2VuZF9yaW5nX3Rlc3QoYnIsIG1ycCwgMCwgMCwgMCwgMCk7XG4tLVxubmV0L2JyaWRnZS9icl9tcnAuYy00MzgtXHQvKiBTdG9wIHNlbmRpbmcgTVJQX0luVGVzdCBmcmFtZXMgaWYgaGFzIGFuIGludGVyY29ubmVjdCByb2xlICovXG5uZXQvYnJpZGdlL2JyX21ycC5jOjQzOTpcdGNhbmNlbF9kZWxheWVkX3dvcmtfc3luYyhcdTAwMjZtcnAtXHUwMDNlaW5fdGVzdF93b3JrKTtcbm5ldC9icmlkZ2UvYnJfbXJwLmMtNDQwLVx0YnJfbXJwX3N3aXRjaGRldl9zZW5kX2luX3Rlc3QoYnIsIG1ycCwgMCwgMCwgMCk7XG4tLVxubmV0L2JyaWRnZS9icl9tcnAuYz00OTg9aW50IGJyX21ycF9hZGQoc3RydWN0IG5ldF9icmlkZ2UgKmJyLCBzdHJ1Y3QgYnJfbXJwX2luc3RhbmNlICppbnN0YW5jZSlcbi0tXG5uZXQvYnJpZGdlL2JyX21ycC5jLTU0My1cbm5ldC9icmlkZ2UvYnJfbXJwLmM6NTQ0Olx0SU5JVF9ERUxBWUVEX1dPUksoXHUwMDI2bXJwLVx1MDAzZXRlc3Rfd29yaywgYnJfbXJwX3Rlc3Rfd29ya19leHBpcmVkKTtcbm5ldC9icmlkZ2UvYnJfbXJwLmM6NTQ1Olx0SU5JVF9ERUxBWUVEX1dPUksoXHUwMDI2bXJwLVx1MDAzZWluX3Rlc3Rfd29yaywgYnJfbXJwX2luX3Rlc3Rfd29ya19leHBpcmVkKTtcbm5ldC9icmlkZ2UvYnJfbXJwLmMtNTQ2LVx0aGxpc3RfYWRkX3RhaWxfcmN1KFx1MDAyNm1ycC1cdTAwM2VsaXN0LCBcdTAwMjZici1cdTAwM2VtcnBfbGlzdCk7XG4tLVxubmV0L2JyaWRnZS9icl9tcnAuYz03MDM9aW50IGJyX21ycF9zdGFydF90ZXN0KHN0cnVjdCBuZXRfYnJpZGdlICpicixcbi0tXG5uZXQvYnJpZGdlL2JyX21ycC5jLTcyOC1cdG1ycC1cdTAwM2V0ZXN0X2NvdW50X21pc3MgPSAwO1xubmV0L2JyaWRnZS9icl9tcnAuYzo3Mjk6XHRxdWV1ZV9kZWxheWVkX3dvcmsoc3lzdGVtX3BlcmNwdV93cSwgXHUwMDI2bXJwLVx1MDAzZXRlc3Rfd29yayxcbm5ldC9icmlkZ2UvYnJfbXJwLmMtNzMwLVx0XHRcdCAgIHVzZWNzX3RvX2ppZmZpZXModGVzdC1cdTAwM2VpbnRlcnZhbCkpO1xuLS1cbm5ldC9icmlkZ2UvYnJfbXJwLmM9NzU5PWludCBicl9tcnBfc2V0X2luX3JvbGUoc3RydWN0IG5ldF9icmlkZ2UgKmJyLCBzdHJ1Y3QgYnJfbXJwX2luX3JvbGUgKnJvbGUpXG4tLVxubmV0L2JyaWRnZS9icl9tcnAuYy03NzktXHRcdC8qIFN0b3AgdGhlIGdlbmVyYXRpbmcgTVJQX0luVGVzdCBmcmFtZXMgKi9cbm5ldC9icmlkZ2UvYnJfbXJwLmM6NzgwOlx0XHRjYW5jZWxfZGVsYXllZF93b3JrX3N5bmMoXHUwMDI2bXJwLVx1MDAzZWluX3Rlc3Rfd29yayk7XG5uZXQvYnJpZGdlL2JyX21ycC5jLTc4MS1cdFx0YnJfbXJwX3N3aXRjaGRldl9zZW5kX2luX3Rlc3QoYnIsIG1ycCwgMCwgMCwgMCk7XG4tLVxubmV0L2JyaWRnZS9icl9tcnAuYz04NDE9aW50IGJyX21ycF9zdGFydF9pbl90ZXN0KHN0cnVjdCBuZXRfYnJpZGdlICpicixcbi0tXG5uZXQvYnJpZGdlL2JyX21ycC5jLTg2OC1cdG1ycC1cdTAwM2Vpbl90ZXN0X2NvdW50X21pc3MgPSAwO1xubmV0L2JyaWRnZS9icl9tcnAuYzo4Njk6XHRxdWV1ZV9kZWxheWVkX3dvcmsoc3lzdGVtX3BlcmNwdV93cSwgXHUwMDI2bXJwLVx1MDAzZWluX3Rlc3Rfd29yayxcbm5ldC9icmlkZ2UvYnJfbXJwLmMtODcwLVx0XHRcdCAgIHVzZWNzX3RvX2ppZmZpZXMoaW5fdGVzdC1cdTAwM2VpbnRlcnZhbCkpO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIxLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNiAyMjo0MDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA4NDc5CgkJCQkJCQlvdXRwdXQ6IDMyCgkJCQkJCQl0aG91Z2h0czogMzIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aGUgdGhvdWdodCBwcm9jZXNzLCBhcyByZXF1ZXN0ZWQ6CgoqKkRlY29uc3RydWN0aW5nIHRoZSBgYnJfbXJwX3N0YXJ0X3Rlc3RgIFRyaWdnZXIqKgoKT2theSwgc28gSSBzZWUgdGhpcyB0ZXN0IGlzIHNjaGVkdWxlZCB3aXRoaW4gdGhlIGBicl9tcnBfc3RhcnRfdGVzdGAgY29udGV4dC4gTXkgaW1tZWRpYXRlIGZvY3VzIGlzIHRvIHVuZGVyc3RhbmQgKndoeSogYW5kICpob3cqIHRoaXMgdGVzdCBpcyBiZWluZyBpbml0aWF0ZWQuIEkgbmVlZCB0byB0cmFjZSB0aGUgZXhlY3V0aW9uIHBhdGguIFNvLCBsZXQmIzM5O3MgbG9vayBmb3IgdGhlIGV2ZW50cyB0aGF0IGFjdHVhbGx5ICp0cmlnZ2VyKiBgYnJfbXJwX3N0YXJ0X3Rlc3RgLiBLbm93aW5nIHRob3NlIGVudHJ5IHBvaW50cyBpcyBjcml0aWNhbCBmb3IgdW5kZXJzdGFuZGluZyB0aGUgb3ZlcmFsbCBkYXRhIGZsb3cgYW5kIGFueSBwb3RlbnRpYWwgc2lkZSBlZmZlY3RzIG9mIHRoaXMgc2NoZWR1bGVkIHRlc3QuIEl0JiMzOTtzIHRpbWUgdG8gZGlnIGludG8gdGhlIHVwc3RyZWFtIGRlcGVuZGVuY2llcy4gTGV0JiMzOTtzIHNlZSB3aGF0JiMzOTtzIGNhbGxpbmcgdGhhdCBmdW5jdGlvbiwgd2hhdCBkZXBlbmRlbmNpZXMgZXhpc3QsIGFuZCBob3cgdGhvc2UgdHJpZ2dlciBmdW5jdGlvbnMgaW50ZXJhY3Qgd2l0aCBvbmUgYW5vdGhlci4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjYgMjI6NDA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7YnJfbXJwX3N0YXJ0X3Rlc3QmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvYnJpZGdlLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvYnJpZGdlL2JyX21ycC5jPTY3Mj1pbnQgYnJfbXJwX3NldF9yaW5nX3JvbGUoc3RydWN0IG5ldF9icmlkZ2UgKmJyLFxuLS1cbm5ldC9icmlkZ2UvYnJfbXJwLmMtNzAyLSAqL1xubmV0L2JyaWRnZS9icl9tcnAuYzo3MDM6aW50IGJyX21ycF9zdGFydF90ZXN0KHN0cnVjdCBuZXRfYnJpZGdlICpicixcbm5ldC9icmlkZ2UvYnJfbXJwLmM6NzA0Olx0XHQgICAgICBzdHJ1Y3QgYnJfbXJwX3N0YXJ0X3Rlc3QgKnRlc3QpXG5uZXQvYnJpZGdlL2JyX21ycC5jLTcwNS17XG4tLVxubmV0L2JyaWRnZS9icl9tcnBfbmV0bGluay5jPTE5NT1zdGF0aWMgY29uc3Qgc3RydWN0IG5sYV9wb2xpY3lcbm5ldC9icmlkZ2UvYnJfbXJwX25ldGxpbmsuYzoxOTY6YnJfbXJwX3N0YXJ0X3Rlc3RfcG9saWN5W0lGTEFfQlJJREdFX01SUF9TVEFSVF9URVNUX01BWCAmIzQzOyAxXSA9IHtcbm5ldC9icmlkZ2UvYnJfbXJwX25ldGxpbmsuYy0xOTctXHRbSUZMQV9CUklER0VfTVJQX1NUQVJUX1RFU1RfVU5TUEVDXVx0PSB7IC50eXBlID0gTkxBX1JFSkVDVCB9LFxuLS1cbm5ldC9icmlkZ2UvYnJfbXJwX25ldGxpbmsuYy0yMDQtXG5uZXQvYnJpZGdlL2JyX21ycF9uZXRsaW5rLmM6MjA1OnN0YXRpYyBpbnQgYnJfbXJwX3N0YXJ0X3Rlc3RfcGFyc2Uoc3RydWN0IG5ldF9icmlkZ2UgKmJyLCBzdHJ1Y3QgbmxhdHRyICphdHRyLFxubmV0L2JyaWRnZS9icl9tcnBfbmV0bGluay5jLTIwNi1cdFx0XHRcdCAgIHN0cnVjdCBuZXRsaW5rX2V4dF9hY2sgKmV4dGFjaylcbi0tXG5uZXQvYnJpZGdlL2JyX21ycF9uZXRsaW5rLmMtMjA4LVx0c3RydWN0IG5sYXR0ciAqdGJbSUZMQV9CUklER0VfTVJQX1NUQVJUX1RFU1RfTUFYICYjNDM7IDFdO1xubmV0L2JyaWRnZS9icl9tcnBfbmV0bGluay5jOjIwOTpcdHN0cnVjdCBicl9tcnBfc3RhcnRfdGVzdCB0ZXN0O1xubmV0L2JyaWRnZS9icl9tcnBfbmV0bGluay5jLTIxMC1cdGludCBlcnI7XG4tLVxubmV0L2JyaWRnZS9icl9tcnBfbmV0bGluay5jLTIxMi1cdGVyciA9IG5sYV9wYXJzZV9uZXN0ZWQodGIsIElGTEFfQlJJREdFX01SUF9TVEFSVF9URVNUX01BWCwgYXR0cixcbm5ldC9icmlkZ2UvYnJfbXJwX25ldGxpbmsuYzoyMTM6XHRcdFx0ICAgICAgIGJyX21ycF9zdGFydF90ZXN0X3BvbGljeSwgZXh0YWNrKTtcbm5ldC9icmlkZ2UvYnJfbXJwX25ldGxpbmsuYy0yMTQtXHRpZiAoZXJyKVxuLS1cbm5ldC9icmlkZ2UvYnJfbXJwX25ldGxpbmsuYy0yMzctXG5uZXQvYnJpZGdlL2JyX21ycF9uZXRsaW5rLmM6MjM4Olx0cmV0dXJuIGJyX21ycF9zdGFydF90ZXN0KGJyLCBcdTAwMjZ0ZXN0KTtcbm5ldC9icmlkZ2UvYnJfbXJwX25ldGxpbmsuYy0yMzktfVxuLS1cbm5ldC9icmlkZ2UvYnJfbXJwX25ldGxpbmsuYz0zNTY9aW50IGJyX21ycF9wYXJzZShzdHJ1Y3QgbmV0X2JyaWRnZSAqYnIsIHN0cnVjdCBuZXRfYnJpZGdlX3BvcnQgKnAsXG4tLVxubmV0L2JyaWRnZS9icl9tcnBfbmV0bGluay5jLTQxNC1cdGlmICh0YltJRkxBX0JSSURHRV9NUlBfU1RBUlRfVEVTVF0pIHtcbm5ldC9icmlkZ2UvYnJfbXJwX25ldGxpbmsuYzo0MTU6XHRcdGVyciA9IGJyX21ycF9zdGFydF90ZXN0X3BhcnNlKGJyLFxubmV0L2JyaWRnZS9icl9tcnBfbmV0bGluay5jLTQxNi1cdFx0XHRcdFx0ICAgICAgdGJbSUZMQV9CUklER0VfTVJQX1NUQVJUX1RFU1RdLFxuLS1cbm5ldC9icmlkZ2UvYnJfcHJpdmF0ZV9tcnAuaD03ND1pbnQgYnJfbXJwX3NldF9yaW5nX3JvbGUoc3RydWN0IG5ldF9icmlkZ2UgKmJyLCBzdHJ1Y3QgYnJfbXJwX3Jpbmdfcm9sZSAqcm9sZSk7XG5uZXQvYnJpZGdlL2JyX3ByaXZhdGVfbXJwLmg6NzU6aW50IGJyX21ycF9zdGFydF90ZXN0KHN0cnVjdCBuZXRfYnJpZGdlICpiciwgc3RydWN0IGJyX21ycF9zdGFydF90ZXN0ICp0ZXN0KTtcbm5ldC9icmlkZ2UvYnJfcHJpdmF0ZV9tcnAuaC03Ni1pbnQgYnJfbXJwX3NldF9pbl9zdGF0ZShzdHJ1Y3QgbmV0X2JyaWRnZSAqYnIsIHN0cnVjdCBicl9tcnBfaW5fc3RhdGUgKnN0YXRlKTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjYgMjI6NDA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogOTY1MAoJCQkJCQkJb3V0cHV0OiAzOAoJCQkJCQkJdGhvdWdodHM6IDE3MwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipGdXp6aW5nIEZvY3VzOiBCcmlkZ2UgTVJQIFRlc3QgSW1wbGVtZW50YXRpb24qKgoKT2theSwgc28gSSYjMzk7dmUgcmVjZWl2ZWQgdGhlIGBuZXRsaW5rYCB0cmlnZ2VyIGZvciBgSUZMQV9CUklER0VfTVJQX1NUQVJUX1RFU1RgLiBUaGlzIGlzIGdvb2QsIGl0IG1lYW5zIHRoZSB1bmRlcmx5aW5nIGNvZGUgcGF0aCBpcyBhY3R1YWxseSByZWFjaGFibGUgYW5kIGZ1bmN0aW9uYWwg4oCTIHByb2dyZXNzISBOb3csIEkgbmVlZCB0byBwaW5wb2ludCB0aGUga2V5IGZ1bmN0aW9ucyBmb3IgbXkgZnV6emluZyBlZmZvcnRzLiBMZXQmIzM5O3Mgc2VlLi4uCgpJJiMzOTt2ZSBpZGVudGlmaWVkIHNldmVyYWwgZnVuY3Rpb25zIGluIHRoZSBgYnJfbXJwYCBjb2RlLiBgYnJfbXJwX2FsbG9jX3Rlc3Rfc2tiYCwgYGJyX21ycF90ZXN0X3dvcmtfZXhwaXJlZGAsIGFuZCBgYnJfbXJwX2luc3RhbmNlX3BhcnNlYCBhbmQgYGJyX21ycF9zdGFydF90ZXN0X3BhcnNlYCBhcmUgYWxsIHN0YXRpYywgbWVhbmluZyB0aGV5JiMzOTtyZSBpbnRlcm5hbCB0byB0aGUgbW9kdWxlLCBidXQgcG90ZW50aWFsbHkgc3RpbGwgdnVsbmVyYWJsZS4gVGhlIG5vbi1zdGF0aWMgb25lcyBhcmUgYGJyX21ycF9zdGFydF90ZXN0YCwgYGJyX21ycF9hZGRgLCBhbmQgYGJyX21ycF9wYXJzZWAuIFNpbmNlIHRoZSB0cmlnZ2VyIGluaXRpYXRlZCB0aGUgcHJvY2VzcywgaXQgbWFrZXMgc2Vuc2UgdG8gc3RhcnQgd2l0aCB0aGUgZW50cnkgcG9pbnRzLgoKSSYjMzk7bGwgc3RhcnQgd2l0aCBhIGRlZXAgZGl2ZSBpbnRvIGBicl9tcnBfc3RhcnRfdGVzdGAgYW5kIGBicl9tcnBfYWRkYC4gSSYjMzk7bGwgYW5hbHl6ZSB0aGVpciBsb2dpYywgYXJndW1lbnQgaGFuZGxpbmcsIGFuZCBhbnkgcG90ZW50aWFsIGFyZWFzIGZvciBpbnB1dCB2YWxpZGF0aW9uIGZsYXdzLiBUaGVzZSB0d28gZnVuY3Rpb25zIGFyZSBsaWtlbHkgd2hlcmUgdGhlIGluaXRpYWwgZGF0YSBwcm9jZXNzaW5nIGFuZCBzZXR1cCBoYXBwZW5zLiBJZiB0aGVyZSBhcmUgdnVsbmVyYWJpbGl0aWVzIHRoZXJlLCB0aGV5IGNvdWxkIHBvdGVudGlhbGx5IGxlYWQgdG8gY3Jhc2hlcyBvciBvdGhlciB1bmRlc2lyYWJsZSBiZWhhdmlvciB0aGF0IGNhbiBiZSBleHBsb2l0ZWQgaW4gYSBmdXp6aW5nIGNhbXBhaWduLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNiAyMjo0MDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDticl9tcnBfc3RhcnRfdGVzdCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9icmlkZ2UvYnJfbXJwLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L2JyaWRnZS9icl9tcnAuYz02NzI9aW50IGJyX21ycF9zZXRfcmluZ19yb2xlKHN0cnVjdCBuZXRfYnJpZGdlICpicixcbi0tXG5uZXQvYnJpZGdlL2JyX21ycC5jLTcwMi0gKi9cbm5ldC9icmlkZ2UvYnJfbXJwLmM6NzAzOmludCBicl9tcnBfc3RhcnRfdGVzdChzdHJ1Y3QgbmV0X2JyaWRnZSAqYnIsXG5uZXQvYnJpZGdlL2JyX21ycC5jOjcwNDpcdFx0ICAgICAgc3RydWN0IGJyX21ycF9zdGFydF90ZXN0ICp0ZXN0KVxubmV0L2JyaWRnZS9icl9tcnAuYy03MDUte1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNiAyMjo0MDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMDMwNQoJCQkJCQkJb3V0cHV0OiA0MAoJCQkJCQkJdGhvdWdodHM6IDIyNwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIEJ1ZyBGaXggYW5kIFJlbGV2YW50IEZ1bmN0aW9ucyoqCgpPa2F5LCBzbyB0aGlzIHBhdGNoIGFkZHJlc3NlcyBhbiB1bmluaXRpYWxpemVkIG1lbW9yeSBpc3N1ZSB3aXRoaW4gYGJyX21ycF9hbGxvY190ZXN0X3NrYmAuIE15IGluaXRpYWwgdGhvdWdodCBpcyB0byBwaW5wb2ludCB0aGUgbW9zdCBhcHByb3ByaWF0ZSBmb2N1cyBzeW1ib2wgdG8gdW5kZXJzdGFuZCB0aGUgYnVnJiMzOTtzIHJvb3QgY2F1c2UgYW5kIGltcGFjdC4gSXQgc2VlbXMgYGJyX21ycF9hbGxvY190ZXN0X3NrYmAgaXMgY2FsbGVkIGJ5IGBicl9tcnBfdGVzdF93b3JrX2V4cGlyZWRgLCB3aGljaCwgaW4gdHVybiwgaXMgc2NoZWR1bGVkIGJ5IGBicl9tcnBfc3RhcnRfdGVzdGAuCgpHaXZlbiB0aGUgcHJlZmVyZW5jZSBmb3Igbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnRzLCBgYnJfbXJwX3N0YXJ0X3Rlc3RgIGltbWVkaWF0ZWx5IHN0YW5kcyBvdXQgYXMgYSBzdHJvbmcgY2FuZGlkYXRlLiBgYnJfbXJwX3Rlc3Rfd29ya19leHBpcmVkYCBpcyByZWxldmFudCwgYnV0IGl0JiMzOTtzIGEgc3RhdGljIGZ1bmN0aW9uLCBzbyBsZXQmIzM5O3Mga2VlcCBpdCBpbiBtaW5kLiBJcyBgYnJfbXJwX3BhcnNlYCBhIG5ldGxpbmsgZW50cnkgcG9pbnQ/IEdpdmVuIHRoYXQgcHJlZmVyZW5jZSwgaXMgdGhlcmUgYW5vdGhlciBlbnRyeSBwb2ludD8KClRvIGNvbmZpcm0gbXkgdW5kZXJzdGFuZGluZywgSSBuZWVkIHRvIHRyYWNlIHRoaXMgZnVydGhlci4gU3BlY2lmaWNhbGx5LCBsZXQgbWUgZGlnIGRlZXBlciBpbnRvIGBicl9tcnBfdGVzdF93b3JrX2V4cGlyZWRgIHRvIHNlZSBob3cgaXQgdXNlcyBgYnJfbXJwX2FsbG9jX3Rlc3Rfc2tiYC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjYgMjI6NDA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7YnJfbXJwX3Rlc3Rfd29ya19leHBpcmVkJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L2JyaWRnZS9icl9tcnAuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvYnJpZGdlL2JyX21ycC5jPTI0MD1zdGF0aWMgc3RydWN0IHNrX2J1ZmYgKmJyX21ycF9hbGxvY19pbl90ZXN0X3NrYihzdHJ1Y3QgYnJfbXJwICptcnAsXG4tLVxubmV0L2JyaWRnZS9icl9tcnAuYy0yNzktICovXG5uZXQvYnJpZGdlL2JyX21ycC5jOjI4MDpzdGF0aWMgdm9pZCBicl9tcnBfdGVzdF93b3JrX2V4cGlyZWQoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxubmV0L2JyaWRnZS9icl9tcnAuYy0yODEte1xuLS1cbm5ldC9icmlkZ2UvYnJfbXJwLmM9NDk4PWludCBicl9tcnBfYWRkKHN0cnVjdCBuZXRfYnJpZGdlICpiciwgc3RydWN0IGJyX21ycF9pbnN0YW5jZSAqaW5zdGFuY2UpXG4tLVxubmV0L2JyaWRnZS9icl9tcnAuYy01NDMtXG5uZXQvYnJpZGdlL2JyX21ycC5jOjU0NDpcdElOSVRfREVMQVlFRF9XT1JLKFx1MDAyNm1ycC1cdTAwM2V0ZXN0X3dvcmssIGJyX21ycF90ZXN0X3dvcmtfZXhwaXJlZCk7XG5uZXQvYnJpZGdlL2JyX21ycC5jLTU0NS1cdElOSVRfREVMQVlFRF9XT1JLKFx1MDAyNm1ycC1cdTAwM2Vpbl90ZXN0X3dvcmssIGJyX21ycF9pbl90ZXN0X3dvcmtfZXhwaXJlZCk7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI2IDIyOjQwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDExMDk3CgkJCQkJCQlvdXRwdXQ6IDI4CgkJCQkJCQl0aG91Z2h0czogMjcxCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgQnVnIEZpeCoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBmaXggcmVsYXRlZCB0byB1bmluaXRpYWxpemVkIG1lbW9yeSBpbiBgYnJfbXJwX2FsbG9jX3Rlc3Rfc2tiYC4gTXkgaW5pdGlhbCB0aG91Z2h0IHdhcyB0byBleGFtaW5lIGBicl9tcnBfdGVzdF93b3JrX2V4cGlyZWRgIGJlY2F1c2UgdGhhdCYjMzk7cyB0aGUgZnVuY3Rpb24gYWN0dWFsbHkgcnVubmluZyB0aGUgYWx0ZXJlZCBjb2RlLiBUaGUgcHJvYmxlbSBpcyB0aGF0IGl0JiMzOTtzIGEgc3RhdGljIGZ1bmN0aW9uLiBUaGF0IG1lYW5zIEkgbmVlZCB0byB0cmFjZSBiYWNrIGZyb20gdGhlcmUuCgpgYnJfbXJwX3N0YXJ0X3Rlc3RgIGxvb2tzIHByb21pc2luZyBhcyB0aGUgZW50cnkgcG9pbnQgdGhhdCBzY2hlZHVsZXMgdGhlIHdvcmssIHNvIEkmIzM5O2xsIGRlZmluaXRlbHkgaW5jbHVkZSB0aGF0IGluIHRoZSBhbmFseXNpcy4gQWxzbywgYGJyX21ycF9wYXJzZWAgbWFrZXMgc2Vuc2UgdG8gaW5jbHVkZSBpbiBteSBleGFtaW5hdGlvbiBvZiB0aGlzIGlzc3VlLgoKTm93LCBsZXQmIzM5O3MgbG9vayBhdCB0aGUgcGF0Y2ggaXRzZWxmLiBBaCwgSSBzZWUgaXQmIzM5O3MgYWJvdXQgYWxsb2NhdGluZyBtZW1vcnkgZm9yIGEgc3ViLVRMViBpbiBhbiBza2IgYW5kIHNldHRpbmcgdGhlIGxlbmd0aCBmaWVsZC4gVGhlIGNydWNpYWwgcGFydCBoZXJlIGlzIHRoZSBhZGRpdGlvbiBvZiBgc3ViX3Rsdi0mZ3Q7bGVuZ3RoID0gMHgwO2AgYW5kLCBtb3JlIGltcG9ydGFudGx5LCB0aGUgY2hhbmdlIGZyb20gYHNrYl9wdXQoc2tiLCBNUlBfT1BUX1BBRERJTkcpO2AgdG8gYHNrYl9wdXRfemVybyhza2IsIE1SUF9PUFRfUEFERElORyk7YC4gVGhhdCYjMzk7cyB3aGVyZSB0aGUgaW5pdGlhbGl6YXRpb24gb2YgdGhlIGFsbG9jYXRlZCBtZW1vcnkgY29tZXMgaW4uIEl0JiMzOTtzIGluaXRpYWxpemluZyB0aGUgc3ViLVRMViBsZW5ndGggdG8gMCwgYW5kIHplcm9pbmcgdGhlIHBhZGRpbmcuIEl0JiMzOTtzIGFsbCBhYm91dCBhdm9pZGluZyB0aGF0IHVuaW5pdGlhbGl6ZWQgbWVtb3J5LiBTbywgdGhpcyBmaXggdGFyZ2V0cyB0aGUgYWxsb2NhdGlvbiBpbnNpZGUgYGJyX21ycF9hbGxvY190ZXN0X3NrYmAsIGFzIGV4cGVjdGVkLgoKSSBoYXZlIHRvIG1ha2Ugc3VyZSB0aGUgQ09ORklHIHNldHRpbmdzIGFyZSB3aGF0IEkgZXhwZWN0LiBJIG5lZWQgdG8gZG91YmxlLWNoZWNrIHRoYXQgYEJSSURHRV9NUlBgIGlzIHRoZSBjb3JyZWN0IHNldHRpbmcuIEkgYWxzbyBuZWVkIHRvIGJlIGNlcnRhaW4gdGhhdCBgQlJJREdFYCBpcyBhbHNvIGVuYWJsZWQuIEkgc2hvdWxkIHByb2JhYmx5IHJlLWV4YW1pbmUgYG5ldC9icmlkZ2UvS2NvbmZpZ2AgdG8gYmUgY2VydGFpbi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjYgMjI6NDA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIEJSSURHRSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9icmlkZ2UvS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvYnJpZGdlL0tjb25maWctNS1cbm5ldC9icmlkZ2UvS2NvbmZpZzo2OmNvbmZpZyBCUklER0Vcbm5ldC9icmlkZ2UvS2NvbmZpZy03LVx0dHJpc3RhdGUgXCYjMzQ7ODAyLjFkIEV0aGVybmV0IEJyaWRnaW5nXCYjMzQ7XG4tLVxubmV0L2JyaWRnZS9LY29uZmlnLTM1LVxubmV0L2JyaWRnZS9LY29uZmlnOjM2OmNvbmZpZyBCUklER0VfSUdNUF9TTk9PUElOR1xubmV0L2JyaWRnZS9LY29uZmlnLTM3LVx0Ym9vbCBcJiMzNDtJR01QL01MRCBzbm9vcGluZ1wmIzM0O1xuLS1cbm5ldC9icmlkZ2UvS2NvbmZpZy00OS1cbm5ldC9icmlkZ2UvS2NvbmZpZzo1MDpjb25maWcgQlJJREdFX1ZMQU5fRklMVEVSSU5HXG5uZXQvYnJpZGdlL0tjb25maWctNTEtXHRib29sIFwmIzM0O1ZMQU4gZmlsdGVyaW5nXCYjMzQ7XG4tLVxubmV0L2JyaWRnZS9LY29uZmlnLTYzLVxubmV0L2JyaWRnZS9LY29uZmlnOjY0OmNvbmZpZyBCUklER0VfTVJQXG5uZXQvYnJpZGdlL0tjb25maWctNjUtXHRib29sIFwmIzM0O01SUCBwcm90b2NvbFwmIzM0O1xuLS1cbm5ldC9icmlkZ2UvS2NvbmZpZy03NS1cbm5ldC9icmlkZ2UvS2NvbmZpZzo3Njpjb25maWcgQlJJREdFX0NGTVxubmV0L2JyaWRnZS9LY29uZmlnLTc3LVx0Ym9vbCBcJiMzNDtDRk0gcHJvdG9jb2xcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yOS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjYgMjI6NDA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTIwMjcKCQkJCQkJCW91dHB1dDogNDEKCQkJCQkJCXRob3VnaHRzOiAzOQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgYW4gZXhwZXJ0JiMzOTtzIGludGVybmFsIG1vbm9sb2d1ZToKCioqRGVlcCBEaXZlIGludG8gQ29uZmlndXJhdGlvbiBhbmQgQ29kZSBVc2FnZSoqCgpSaWdodCwgc28gSSYjMzk7bSBmb2N1c2luZyBvbiB0aGUgY29uZmlndXJhdGlvbiBoZXJlLiBgQlJJREdFYCBhbmQgYEJSSURHRV9NUlBgIGFyZSB0aGUgY3JpdGljYWwgY29uZmlnIG9wdGlvbnMsIHRoYXQmIzM5O3MgY2xlYXIuIE5vdywgYmVmb3JlIEkgbW92ZSBvbiwgSSB3YW50IHRvIGNvbmZpcm0gc29tZXRoaW5nIGluIG15IG1pbmQuIFRoZSBgYnJfbXJwX2FsbG9jX3Rlc3Rfc2tiYCBmdW5jdGlvbi4uLiBJIG5lZWQgdG8gcXVpY2tseSB2ZXJpZnkgdGhhdCBpdCYjMzk7cyBvbmx5IHVzZWQgd2hlcmUgSSAqZXhwZWN0KiBpdCB0byBiZS4gQW55IHVuZXhwZWN0ZWQgY2FsbHMgdG8gaXQgY291bGQgaW5kaWNhdGUgc29tZXRoaW5nIEkgbmVlZCB0byBpbnZlc3RpZ2F0ZSBmdXJ0aGVyLiBBIHF1aWNrIHNlYXJjaCBzaG91bGQgZ2l2ZSBtZSB0aGUgYXNzdXJhbmNlIEkgbmVlZCB0aGF0IGV2ZXJ5dGhpbmcmIzM5O3MgYmVoYXZpbmcgYXMgaW50ZW5kZWQgaW4gdGhpcyBhcmVhLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNiAyMjo0MDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDticl9tcnBfYWxsb2NfdGVzdF9za2ImIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvYnJpZGdlL2JyX21ycC5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9icmlkZ2UvYnJfbXJwLmM9MTcxPXN0YXRpYyB2b2lkIGJyX21ycF9za2JfY29tbW9uKHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBicl9tcnAgKm1ycClcbi0tXG5uZXQvYnJpZGdlL2JyX21ycC5jLTE4MS1cbm5ldC9icmlkZ2UvYnJfbXJwLmM6MTgyOnN0YXRpYyBzdHJ1Y3Qgc2tfYnVmZiAqYnJfbXJwX2FsbG9jX3Rlc3Rfc2tiKHN0cnVjdCBicl9tcnAgKm1ycCxcbm5ldC9icmlkZ2UvYnJfbXJwLmMtMTgzLVx0XHRcdFx0XHQgICAgIHN0cnVjdCBuZXRfYnJpZGdlX3BvcnQgKnAsXG4tLVxubmV0L2JyaWRnZS9icl9tcnAuYz0yODA9c3RhdGljIHZvaWQgYnJfbXJwX3Rlc3Rfd29ya19leHBpcmVkKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaylcbi0tXG5uZXQvYnJpZGdlL2JyX21ycC5jLTMxMi1cdFx0aWYgKCFtcnAtXHUwMDNldGVzdF9tb25pdG9yKSB7XG5uZXQvYnJpZGdlL2JyX21ycC5jOjMxMzpcdFx0XHRza2IgPSBicl9tcnBfYWxsb2NfdGVzdF9za2IobXJwLCBwLFxubmV0L2JyaWRnZS9icl9tcnAuYy0zMTQtXHRcdFx0XHRcdFx0ICAgIEJSX01SUF9QT1JUX1JPTEVfUFJJTUFSWSk7XG4tLVxubmV0L2JyaWRnZS9icl9tcnAuYy0zMjgtXHRcdGlmICghbXJwLVx1MDAzZXRlc3RfbW9uaXRvcikge1xubmV0L2JyaWRnZS9icl9tcnAuYzozMjk6XHRcdFx0c2tiID0gYnJfbXJwX2FsbG9jX3Rlc3Rfc2tiKG1ycCwgcCxcbm5ldC9icmlkZ2UvYnJfbXJwLmMtMzMwLVx0XHRcdFx0XHRcdCAgICBCUl9NUlBfUE9SVF9ST0xFX1NFQ09OREFSWSk7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI2IDIyOjQwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDEyNjI5CgkJCQkJCQlvdXRwdXQ6IDEyOAoJCQkJCQkJdGhvdWdodHM6IDI2MwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBBbmFseXNpcyBvZiB0aGUgYGJyX21ycF90ZXN0X3dvcmtfZXhwaXJlZGAgVnVsbmVyYWJpbGl0eSBGaXgqKgoKT2theSwgc28gdGhpcyBwYXRjaCBpcyBzcGVjaWZpY2FsbHkgYWRkcmVzc2luZyBhbiBpc3N1ZSB3aXRoaW4gYGJyX21ycF90ZXN0X3dvcmtfZXhwaXJlZGAuIE15IGltbWVkaWF0ZSB0aG91Z2h0IGlzIHRvIHZlcmlmeSB3aGV0aGVyIHRoaXMgZnVuY3Rpb24gaXMgdGhlIHNvbGUgc2NoZWR1bGVyIGZvciBgdGVzdF93b3JrYC4gQSBxdWljayBsb29rIHJldmVhbHMgdGhhdCBpdCAqZG9lcyogcmVzY2hlZHVsZSBpdHNlbGYgdXNpbmcgYHF1ZXVlX2RlbGF5ZWRfd29ya2AsIGFuZCBpdCYjMzk7cyBpbml0aWFsbHkgc2NoZWR1bGVkIGJ5IGBicl9tcnBfc3RhcnRfdGVzdGAuCgpUaGVyZWZvcmUsIHRoZSBjcml0aWNhbCBmdW5jdGlvbnMgdG8gZm9jdXMgb24gYXJlIGBicl9tcnBfc3RhcnRfdGVzdGAgYW5kLCBzaW5jZSB3ZSYjMzk7cmUgZGVhbGluZyB3aXRoIG5ldGxpbmsgY29uZmlndXJhdGlvbiwgSSYjMzk7bGwgYWRkIGBicl9tcnBfcGFyc2VgIHRvIHRoYXQgbGlzdC4gVGhhdCBsaWtlbHkgaGFuZGxlcyB0aGUgaW5pdGlhbCB0cmlnZ2VyLgoKTm93LCBsZXQmIzM5O3MgYXNzZW1ibGUgdGhlIGtleSBmaW5kaW5ncy4gVGhpcyBsb29rcyBsaWtlIGEgcHJpbWUgdGFyZ2V0IGZvciBmdXp6aW5nLiBUaGUgcGF0Y2ggY29ycmVjdHMgYW4gdW5pbml0aWFsaXplZCBtZW1vcnkgaXNzdWUgaW4gYGJyX21ycF9hbGxvY190ZXN0X3NrYmAsIHdoaWNoIGlzIGNhbGxlZCB3aXRoaW4gYGJyX21ycF90ZXN0X3dvcmtfZXhwaXJlZGAuIFRoZSB3b3JrZXIgaXRzZWxmIGlzIHNjaGVkdWxlZCBieSBgYnJfbXJwX3N0YXJ0X3Rlc3RgLCB3aGljaCBpcyByZWFjaGVkIHRocm91Z2ggYSBuZXRsaW5rIGNvbmZpZ3VyYXRpb24sIGhlbmNlIHRoZSBpbmNsdXNpb24gb2YgYGJyX21ycF9wYXJzZWAuIEdpdmVuIHRoYXQgdGhlIHZ1bG5lcmFiaWxpdHkgZXhpc3RzIHdpdGhpbiB0aGUgd29ya2VyIGZ1bmN0aW9uLCBJJiMzOTtkIHNheSB0aGlzIGlzIGEgd29ydGh3aGlsZSBmdXp6aW5nIHRhcmdldC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjYgMjI6NDE8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0JSSURHRSYjMzQ7LAogICAgJiMzNDtCUklER0VfTVJQJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7YnJfbXJwX3N0YXJ0X3Rlc3QmIzM0OywKICAgICYjMzQ7YnJfbXJwX3BhcnNlJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGZpeGVzIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IGluIGBicl9tcnBfYWxsb2NfdGVzdF9za2JgIHdoaWNoIGlzIGNhbGxlZCBieSB0aGUgYGJyX21ycF90ZXN0X3dvcmtfZXhwaXJlZGAgd29ya2VyLiBUaGUgd29ya2VyIGlzIHNjaGVkdWxlZCBieSBgYnJfbXJwX3N0YXJ0X3Rlc3RgIHdoaWNoIGlzIHJlYWNoYWJsZSB2aWEgbmV0bGluayBjb25maWd1cmF0aW9uIChgYnJfbXJwX3BhcnNlYCkuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0JSSURHRSYjMzQ7LAogICAgJiMzNDtCUklER0VfTVJQJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7YnJfbXJwX3N0YXJ0X3Rlc3QmIzM0OywKICAgICYjMzQ7YnJfbXJwX3BhcnNlJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGZpeGVzIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IGluIGBicl9tcnBfYWxsb2NfdGVzdF9za2JgIHdoaWNoIGlzIGNhbGxlZCBieSB0aGUgYGJyX21ycF90ZXN0X3dvcmtfZXhwaXJlZGAgd29ya2VyLiBUaGUgd29ya2VyIGlzIHNjaGVkdWxlZCBieSBgYnJfbXJwX3N0YXJ0X3Rlc3RgIHdoaWNoIGlzIHJlYWNoYWJsZSB2aWEgbmV0bGluayBjb25maWd1cmF0aW9uIChgYnJfbXJwX3BhcnNlYCkuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wNy0yNlQyMjo0MDowNy42NTkyNjY1NjlaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1NTA2OTQ1NTkxOSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJCUklER0VcIixcbiAgICBcIkJSSURHRV9NUlBcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJicl9tcnBfc3RhcnRfdGVzdFwiLFxuICAgIFwiYnJfbXJwX3BhcnNlXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggZml4ZXMgdW5pbml0aWFsaXplZCBtZW1vcnkgaW4gYGJyX21ycF9hbGxvY190ZXN0X3NrYmAgd2hpY2ggaXMgY2FsbGVkIGJ5IHRoZSBgYnJfbXJwX3Rlc3Rfd29ya19leHBpcmVkYCB3b3JrZXIuIFRoZSB3b3JrZXIgaXMgc2NoZWR1bGVkIGJ5IGBicl9tcnBfc3RhcnRfdGVzdGAgd2hpY2ggaXMgcmVhY2hhYmxlIHZpYSBuZXRsaW5rIGNvbmZpZ3VyYXRpb24gKGBicl9tcnBfcGFyc2VgKS5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjZUMjI6NDA6MDcuNjU5Mjc0MjI5WiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0MDExMjgyMjksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCBlMmU5MWJlNDE5ZjEyMTdkYTlkZGRlYmY1MWE2NDZiZDQ3Mzc2YTUwXFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBTdW4gSnVsIDI2IDIyOjQwOjA2IDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL25ldC9icmlkZ2UvYnJfbXJwLmMgYi9uZXQvYnJpZGdlL2JyX21ycC5jXFxuaW5kZXggM2Y3MTI2YTdkNzIwMDMuLmE1NTQ4ZjQ3NTYwNGM1IDEwMDY0NFxcbi0tLSBhL25ldC9icmlkZ2UvYnJfbXJwLmNcXG4rKysgYi9uZXQvYnJpZGdlL2JyX21ycC5jXFxuQEAgLTIyNiw5ICsyMjYsMTAgQEAgc3RhdGljIHN0cnVjdCBza19idWZmICpicl9tcnBfYWxsb2NfdGVzdF9za2Ioc3RydWN0IGJyX21ycCAqbXJwLFxcbiBcXG4gXFx0XFx0c3ViX3RsdiA9IHNrYl9wdXQoc2tiLCBzaXplb2YoKnN1Yl90bHYpKTtcXG4gXFx0XFx0c3ViX3Rsdi1cXHUwMDNldHlwZSA9IEJSX01SUF9TVUJfVExWX0hFQURFUl9URVNUX0FVVE9fTUdSO1xcbitcXHRcXHRzdWJfdGx2LVxcdTAwM2VsZW5ndGggPSAweDA7XFxuIFxcbiBcXHRcXHQvKiAzMiBiaXQgYWxsaWdtZW50IHNoYWxsIGJlIGVuc3VyZWQgdGhlcmVmb3JlIGFkZCAyIGJ5dGVzICovXFxuLVxcdFxcdHNrYl9wdXQoc2tiLCBNUlBfT1BUX1BBRERJTkcpO1xcbitcXHRcXHRza2JfcHV0X3plcm8oc2tiLCBNUlBfT1BUX1BBRERJTkcpO1xcbiBcXHR9XFxuIFxcbiBcXHRicl9tcnBfc2tiX3Rsdihza2IsIEJSX01SUF9UTFZfSEVBREVSX0VORCwgMHgwKTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjZUMjI6NDA6MDguMDYxMTk2MDM4WiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiYmVzdC1leHBlbnNpdmUiLCJEdXJhdGlvbiI6NTQ2Njc1MTQzNDksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiQlJJREdFXCIsXG4gICAgXCJCUklER0VfTVJQXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiYnJfbXJwX3N0YXJ0X3Rlc3RcIixcbiAgICBcImJyX21ycF9wYXJzZVwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGZpeGVzIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IGluIGBicl9tcnBfYWxsb2NfdGVzdF9za2JgIHdoaWNoIGlzIGNhbGxlZCBieSB0aGUgYGJyX21ycF90ZXN0X3dvcmtfZXhwaXJlZGAgd29ya2VyLiBUaGUgd29ya2VyIGlzIHNjaGVkdWxlZCBieSBgYnJfbXJwX3N0YXJ0X3Rlc3RgIHdoaWNoIGlzIHJlYWNoYWJsZSB2aWEgbmV0bGluayBjb25maWd1cmF0aW9uIChgYnJfbXJwX3BhcnNlYCkuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmVcbmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHlcbnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuXG5cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6XG4tIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuXG4tIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLlxuLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuXG4tIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSxcbiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLlxuLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCxcbiAgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuXG4tIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpXG4gIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy5cblxuSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaFxudG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuXG5cbldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOlxuMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy5cbiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLlxuICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zXG4gICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS5cbjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLlxuICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuICAgQWxzbyBjaGVjayBcImRlcGVuZHMgb25cIiBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3NcbiAgIG5lZWRlZCBmb3IgS2J1aWxkIHRvIGNvbXBpbGUgdGhlIGNvZGUgc3RhdGljYWxseSBpbnRvIHZtbGludXguIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlnc1xuICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IGUyZTkxYmU0MTlmMTIxN2RhOWRkZGViZjUxYTY0NmJkNDczNzZhNTBcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgU3VuIEp1bCAyNiAyMjo0MDowNiAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL25ldC9icmlkZ2UvYnJfbXJwLmMgYi9uZXQvYnJpZGdlL2JyX21ycC5jXG5pbmRleCAzZjcxMjZhN2Q3MjAwMy4uYTU1NDhmNDc1NjA0YzUgMTAwNjQ0XG4tLS0gYS9uZXQvYnJpZGdlL2JyX21ycC5jXG4rKysgYi9uZXQvYnJpZGdlL2JyX21ycC5jXG5AQCAtMjI2LDkgKzIyNiwxMCBAQCBzdGF0aWMgc3RydWN0IHNrX2J1ZmYgKmJyX21ycF9hbGxvY190ZXN0X3NrYihzdHJ1Y3QgYnJfbXJwICptcnAsXG4gXG4gXHRcdHN1Yl90bHYgPSBza2JfcHV0KHNrYiwgc2l6ZW9mKCpzdWJfdGx2KSk7XG4gXHRcdHN1Yl90bHYtXHUwMDNldHlwZSA9IEJSX01SUF9TVUJfVExWX0hFQURFUl9URVNUX0FVVE9fTUdSO1xuK1x0XHRzdWJfdGx2LVx1MDAzZWxlbmd0aCA9IDB4MDtcbiBcbiBcdFx0LyogMzIgYml0IGFsbGlnbWVudCBzaGFsbCBiZSBlbnN1cmVkIHRoZXJlZm9yZSBhZGQgMiBieXRlcyAqL1xuLVx0XHRza2JfcHV0KHNrYiwgTVJQX09QVF9QQURESU5HKTtcbitcdFx0c2tiX3B1dF96ZXJvKHNrYiwgTVJQX09QVF9QQURESU5HKTtcbiBcdH1cbiBcbiBcdGJyX21ycF9za2JfdGx2KHNrYiwgQlJfTVJQX1RMVl9IRUFERVJfRU5ELCAweDApO1xuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjZUMjI6NDA6MDguMDYxMTk3NTY4WiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6Mzg0MDkxODExMCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgYSBCcmlkZ2UgTVJQIFBhdGNoKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBmb3IgYG5ldC9icmlkZ2UvYnJfbXJwLmNgLiBJdCBzZWVtcyBsaWtlIGEgcmVsYXRpdmVseSBzdHJhaWdodGZvcndhcmQgbW9kaWZpY2F0aW9uIHRvIGBicl9tcnBfYWxsb2NfdGVzdF9za2JgLiBUaGUga2V5IGNoYW5nZSBoZXJlIGludm9sdmVzIHRoZSBhbGxvY2F0aW9uIG9mIGEgc3ViLVRMViB3aXRoaW4gYW4gU0tCLiBTcGVjaWZpY2FsbHksIGl0J3MgaW5pdGlhbGl6aW5nIGBzdWJfdGx2LVx1MDAzZWxlbmd0aGAgdG8gemVybywgd2hpY2ggaXMgZ29vZCBwcmFjdGljZS4gV2XigJlyZSBhbHNvIG5vdyB1c2luZyBgc2tiX3B1dF96ZXJvYCBpbnN0ZWFkIG9mIGp1c3QgYHNrYl9wdXRgIHRvIGVuc3VyZSB0aGF0IHBhZGRpbmcgaXMgemVyb2VkIG91dC4gVGhpcyBpcyBhIHNvbGlkIGFwcHJvYWNoIHRvIHByZXZlbnQgcG90ZW50aWFsIHNlY3VyaXR5IHZ1bG5lcmFiaWxpdGllcyBkdWUgdG8gdW5pbml0aWFsaXplZCBtZW1vcnkgZXhwb3N1cmUsIGVzcGVjaWFsbHkgaW4gYSBuZXR3b3JrIGNvbnRleHQuXG5cbk5vdywgSSB3YW50IHRvIGNvbmZpcm0gdGhlIGNvbnRleHQsIGFuZCBob3cgaW1wb3J0YW50IHRoZXNlIGNoYW5nZXMgYXJlLiBJIHNob3VsZCBjaGVjayBleGFjdGx5IHdoZXJlIGBicl9tcnBfYWxsb2NfdGVzdF9za2JgIGlzIGNhbGxlZCB3aXRoaW4gdGhlIGxhcmdlciBNUlAgZnJhbWV3b3JrIHRvIGFzc2VzcyB0aGUgaW1wYWN0IG9mIHRoZXNlIGFsdGVyYXRpb25zLiBUaGlzIHdpbGwgaGVscCBtZSB1bmRlcnN0YW5kIGlmIHRoaXMgaXMgYSBjcml0aWNhbCBjb2RlIHBhdGggb3IgYSBsZXNzIGZyZXF1ZW50bHkgdXNlZCBmdW5jdGlvbi5cblxuXG4iLCJJbnB1dFRva2VucyI6MjEzNywiT3V0cHV0VG9rZW5zIjo0MSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIzMiwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI2VDIyOjQwOjExLjkwMjExNzk1OFoiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo2MjU5MDU1OCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJicl9tcnBfYWxsb2NfdGVzdF9za2JcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L2JyaWRnZS9icl9tcnAuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvYnJpZGdlL2JyX21ycC5jPTE3MT1zdGF0aWMgdm9pZCBicl9tcnBfc2tiX2NvbW1vbihzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgYnJfbXJwICptcnApXFxuLS1cXG5uZXQvYnJpZGdlL2JyX21ycC5jLTE4MS1cXG5uZXQvYnJpZGdlL2JyX21ycC5jOjE4MjpzdGF0aWMgc3RydWN0IHNrX2J1ZmYgKmJyX21ycF9hbGxvY190ZXN0X3NrYihzdHJ1Y3QgYnJfbXJwICptcnAsXFxubmV0L2JyaWRnZS9icl9tcnAuYy0xODMtXFx0XFx0XFx0XFx0XFx0ICAgICBzdHJ1Y3QgbmV0X2JyaWRnZV9wb3J0ICpwLFxcbi0tXFxubmV0L2JyaWRnZS9icl9tcnAuYz0yODA9c3RhdGljIHZvaWQgYnJfbXJwX3Rlc3Rfd29ya19leHBpcmVkKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaylcXG4tLVxcbm5ldC9icmlkZ2UvYnJfbXJwLmMtMzEyLVxcdFxcdGlmICghbXJwLVxcdTAwM2V0ZXN0X21vbml0b3IpIHtcXG5uZXQvYnJpZGdlL2JyX21ycC5jOjMxMzpcXHRcXHRcXHRza2IgPSBicl9tcnBfYWxsb2NfdGVzdF9za2IobXJwLCBwLFxcbm5ldC9icmlkZ2UvYnJfbXJwLmMtMzE0LVxcdFxcdFxcdFxcdFxcdFxcdCAgICBCUl9NUlBfUE9SVF9ST0xFX1BSSU1BUlkpO1xcbi0tXFxubmV0L2JyaWRnZS9icl9tcnAuYy0zMjgtXFx0XFx0aWYgKCFtcnAtXFx1MDAzZXRlc3RfbW9uaXRvcikge1xcbm5ldC9icmlkZ2UvYnJfbXJwLmM6MzI5OlxcdFxcdFxcdHNrYiA9IGJyX21ycF9hbGxvY190ZXN0X3NrYihtcnAsIHAsXFxubmV0L2JyaWRnZS9icl9tcnAuYy0zMzAtXFx0XFx0XFx0XFx0XFx0XFx0ICAgIEJSX01SUF9QT1JUX1JPTEVfU0VDT05EQVJZKTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjZUMjI6NDA6MTEuOTY0NzEzNjc2WiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzU0NjUxMDU5OSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IGludGVycHJldGF0aW9uIG9mIHRob3NlIHRob3VnaHRzLCBzdW1tYXJpemVkIGZyb20gbXkgcGVyc3BlY3RpdmUgYXMgYW4gZXhwZXJ0IGluIHRoZSBmaWVsZDpcblxuKipEZWJ1Z2dpbmcgTVJQIEV4cGlyYXRpb24gaW4gdGhlIEJyaWRnZSoqXG5cbkFscmlnaHQsIHRoZSBkZWJ1Z2dlciBwb2ludHMgbWUgdG8gYGJyX21ycF90ZXN0X3dvcmtfZXhwaXJlZGAuIFRoYXQgZnVuY3Rpb24gY2FsbCBpbW1lZGlhdGVseSB0cmlnZ2VycyBzb21lIHF1ZXN0aW9ucyDigJMgc3BlY2lmaWNhbGx5LCB3aGF0IGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBhcmUgaW4gcGxheSB0aGF0IGxlYWQgdXMgaGVyZT8gTXkgaW1tZWRpYXRlIHRhc2sgaXMgdG8gaWRlbnRpZnkgdGhlIGNyaXRpY2FsIGBDT05GSUdgIHNldHRpbmdzIHJlbGV2YW50IHRvIGBuZXQvYnJpZGdlL2JyX21ycC5jYC4gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgd2hpY2ggZmVhdHVyZSBmbGFncyBhcmUgZW5hYmxlZCBvciBkaXNhYmxlZCB0aGF0IGNvdWxkIGluZmx1ZW5jZSB0aGUgTVJQIChNdWx0aXBsZSBSZWdpc3RyYXRpb24gUHJvdG9jb2wpIGhhbmRsaW5nIGluIHRoZSBicmlkZ2UuIEtub3dpbmcgdGhlIGNvbmZpZ3VyYXRpb24gaXMga2V5IHRvIHVuZGVyc3RhbmRpbmcgdGhlIGNvbnRleHQgb2YgdGhpcyBleHBpcmF0aW9uIGNoZWNrIGFuZCB0byB0cmFjZSB0aGUgcG90ZW50aWFsIHJvb3QgY2F1c2UuIEknbGwgbmVlZCB0byB1c2UgbXkgZmFtaWxpYXJpdHkgd2l0aCB0aGUga2VybmVsIGJ1aWxkIHN5c3RlbSBhbmQgaXRzIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyB0byBxdWlja2x5IHBpbnBvaW50IHRoZSByaWdodCBzZXR0aW5ncy5cblxuXG4iLCJJbnB1dFRva2VucyI6Mjk5NywiT3V0cHV0VG9rZW5zIjozMSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjQwLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI2VDIyOjQwOjE1LjUxMTIyNjMxNVoiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo2MTEwNjcwOSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJicl9tcnAub1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvYnJpZGdlL01ha2VmaWxlXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9icmlkZ2UvTWFrZWZpbGU9Mjc9b2JqLSQoQ09ORklHX05FVEZJTFRFUikgKz0gbmV0ZmlsdGVyL1xcbm5ldC9icmlkZ2UvTWFrZWZpbGUtMjgtXFxubmV0L2JyaWRnZS9NYWtlZmlsZToyOTpicmlkZ2UtJChDT05GSUdfQlJJREdFX01SUClcXHQrPSBicl9tcnBfc3dpdGNoZGV2Lm8gYnJfbXJwLm8gYnJfbXJwX25ldGxpbmsub1xcbm5ldC9icmlkZ2UvTWFrZWZpbGUtMzAtXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI2VDIyOjQwOjE1LjU3MjM0NDg1NFoiLCJTZXEiOjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjI5MjE2Njk4MTcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOlxuXG4qKkludmVzdGlnYXRpbmcgTVJQIENvbmZpZ3VyYXRpb24gZm9yIEJyaWRnZSBTdXBwb3J0KipcblxuQWxyaWdodCwgaXQgc2VlbXMgbGlrZSB3ZSdyZSBkaXZpbmcgaW50byBNZWRpYSBSZWR1bmRhbmN5IFByb3RvY29sIChNUlApIGFuZCBpdHMgaW50ZWdyYXRpb24gd2l0aCB0aGUgYnJpZGdpbmcgaW5mcmFzdHJ1Y3R1cmUuIFRoZSBjbHVlIGlzIGBDT05GSUdfQlJJREdFX01SUGAgLS0gdGhhdCBzdHJvbmdseSBzdWdnZXN0cyBNUlAgc3VwcG9ydCBpcyByZXF1aXJlZCB3aXRoaW4gdGhlIGJyaWRnZSBjb25maWd1cmF0aW9uLiBUbyBnZXQgYSBjbGVhciBwaWN0dXJlIG9mIGhvdyBNUlAgaXMgZW5hYmxlZCBvciBkaXNhYmxlZCwgSSBuZWVkIHRvIHVuZGVyc3RhbmQgaXRzIEtjb25maWcgZGVwZW5kZW5jaWVzIGFuZCBvcHRpb25zLiBNeSBuZXh0IHN0ZXAgaXMgb2J2aW91c2x5IHRvIGdvIGFuZCBpbnNwZWN0IGBuZXQvYnJpZGdlL0tjb25maWdgLiBJJ2xsIGJlIGxvb2tpbmcgc3BlY2lmaWNhbGx5IGZvciB0aGUgYEJSSURHRV9NUlBgIHN5bWJvbCBhbmQgaXRzIHJlbGF0aW9uIHRvIG90aGVyIGJyaWRnZSBhbmQgbmV0d29ya2luZyBjb25maWd1cmF0aW9ucy4gSSBhbnRpY2lwYXRlIGZpbmRpbmcgY29uZGl0aW9uYWxzIG9yIGRlcGVuZGVuY2llcyB0aGF0IGV4cGxhaW4gaG93IGBCUklER0VfTVJQYCByZWxhdGVzIHRvIGNvcmUgYnJpZGdpbmcgZmVhdHVyZXMgYW5kIG90aGVyIG5ldHdvcmtpbmcgc3Vic3lzdGVtcy4gVGhpcyB3aWxsIGhlbHAgbWUgZ3Jhc3AgdGhlIGJyb2FkZXIgaW1wbGljYXRpb25zIG9mIGVuYWJsaW5nIG9yIGRpc2FibGluZyBNUlAgd2l0aGluIHRoZSBicmlkZ2UgY29udGV4dC5cblxuXG4iLCJJbnB1dFRva2VucyI6MzMzOSwiT3V0cHV0VG9rZW5zIjozMCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjMwLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI2VDIyOjQwOjE4LjQ5NDAxNjc5WiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjYwMTkwMTU4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBCUklER0VfTVJQXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9icmlkZ2UvS2NvbmZpZ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvYnJpZGdlL0tjb25maWc9NTA9Y29uZmlnIEJSSURHRV9WTEFOX0ZJTFRFUklOR1xcbi0tXFxubmV0L2JyaWRnZS9LY29uZmlnLTYzLVxcbm5ldC9icmlkZ2UvS2NvbmZpZzo2NDpjb25maWcgQlJJREdFX01SUFxcbm5ldC9icmlkZ2UvS2NvbmZpZy02NS1cXHRib29sIFxcXCJNUlAgcHJvdG9jb2xcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI2VDIyOjQwOjE4LjU1NDIxMTcyOFoiLCJTZXEiOjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjI3MDc3MTkzNjMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6XG5cbioqQW5hbHl6aW5nIERlcGVuZGVuY2llcyBmb3IgQlJJREdFX01SUCoqXG5cbk9rYXksIHNvIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBhcmNoaXRlY3R1cmUgYXJvdW5kIGBCUklER0VfTVJQYC4gSSBpbW1lZGlhdGVseSBzdGFydCB0aGlua2luZyBhYm91dCBpdHMgZGVwZW5kZW5jaWVzLiBXaGF0IG90aGVyIG1vZHVsZXMsIHNlcnZpY2VzLCBkYXRhIHN0cnVjdHVyZXMsIG9yIGV2ZW4gZXh0ZXJuYWwgc3lzdGVtcyBkb2VzIHRoaXMgcGFydGljdWxhciBwaWVjZSBvZiBjb2RlIHJlbHkgdXBvbj8gSSdtIGVzc2VudGlhbGx5IHRyYWNpbmcgdGhlIGNhbGwgZ3JhcGgsIGJ1dCBmcm9tIHRoZSBwZXJzcGVjdGl2ZSBvZiBob3cgTVJQIChNYXRlcmlhbCBSZXF1aXJlbWVudHMgUGxhbm5pbmcpIGlzIHNwZWNpZmljYWxseSBiZWluZyBoYW5kbGVkIHdpdGhpbiB0aGUgYnJpZGdlLiBJcyBpdCBhIGNvcmUgY2FsY3VsYXRpb24gZW5naW5lLCBhIGRhdGEgYWRhcHRlciwgYW4gaW50ZWdyYXRpb24gbGF5ZXIsIG9yIHNvbWV0aGluZyBlbHNlIGVudGlyZWx5PyBLbm93aW5nIHRoZSBkZXBlbmRlbmNpZXMgd2lsbCBoZWxwIG1lIGltbWVkaWF0ZWx5IGdyYXNwIGl0cyBpbXBhY3QgYW5kIHBpbnBvaW50IHBvdGVudGlhbCBhcmVhcyBmb3Igb3B0aW1pemF0aW9uLCBkZWJ1Z2dpbmcsIG9yIGZ1dHVyZSBpbnRlZ3JhdGlvbiBlZmZvcnRzLiBUaGlzIGlzIHRoZSBmaXJzdCBxdWVzdGlvbiBJIG5lZWQgdG8gYW5zd2VyLlxuXG5cbiIsIklucHV0VG9rZW5zIjozNjYwLCJPdXRwdXRUb2tlbnMiOjMzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTMsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjZUMjI6NDA6MjEuMjYxOTMyODAxWiIsIlNlcSI6MTAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU1OTIwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcIm5ldC9icmlkZ2UvS2NvbmZpZ1wiLFxuICBcIkZpcnN0TGluZVwiOiA2NCxcbiAgXCJMaW5lQ291bnRcIjogMjBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiICA2NDpcXHRjb25maWcgQlJJREdFX01SUFxcbiAgNjU6XFx0XFx0Ym9vbCBcXFwiTVJQIHByb3RvY29sXFxcIlxcbiAgNjY6XFx0XFx0ZGVwZW5kcyBvbiBCUklER0VcXG4gIDY3OlxcdFxcdGRlZmF1bHQgblxcbiAgNjg6XFx0XFx0aGVscFxcbiAgNjk6XFx0XFx0ICBJZiB5b3Ugc2F5IFkgaGVyZSwgdGhlbiB0aGUgRXRoZXJuZXQgYnJpZGdlIHdpbGwgYmUgYWJsZSB0byBydW4gTVJQXFxuICA3MDpcXHRcXHQgIHByb3RvY29sIHRvIGRldGVjdCBsb29wc1xcbiAgNzE6XFx0XFxuICA3MjpcXHRcXHQgIFNheSBOIHRvIGV4Y2x1ZGUgdGhpcyBzdXBwb3J0IGFuZCByZWR1Y2UgdGhlIGJpbmFyeSBzaXplLlxcbiAgNzM6XFx0XFxuICA3NDpcXHRcXHQgIElmIHVuc3VyZSwgc2F5IE4uXFxuICA3NTpcXHRcXG4gIDc2OlxcdGNvbmZpZyBCUklER0VfQ0ZNXFxuICA3NzpcXHRcXHRib29sIFxcXCJDRk0gcHJvdG9jb2xcXFwiXFxuICA3ODpcXHRcXHRkZXBlbmRzIG9uIEJSSURHRVxcbiAgNzk6XFx0XFx0aGVscFxcbiAgODA6XFx0XFx0ICBJZiB5b3Ugc2F5IFkgaGVyZSwgdGhlbiB0aGUgRXRoZXJuZXQgYnJpZGdlIHdpbGwgYmUgYWJsZSB0byBydW4gQ0ZNXFxuICA4MTpcXHRcXHQgIHByb3RvY29sIGFjY29yZGluZyB0byA4MDIuMVEgc2VjdGlvbiAxMi4xNFxcbiAgODI6XFx0XFxuICA4MzpcXHRcXHQgIFNheSBOIHRvIGV4Y2x1ZGUgdGhpcyBzdXBwb3J0IGFuZCByZWR1Y2UgdGhlIGJpbmFyeSBzaXplLlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yNlQyMjo0MDoyMS4yNjE5OTA0ODFaIiwiU2VxIjoxMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MjkwOTgzNDQ2NywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IGludGVycHJldGF0aW9uIG9mIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgbXkgb3duOlxuXG4qKkFuYWx5emluZyBEZXBlbmRlbmNpZXMgYW5kIFRyaWdnZXIgTWVjaGFuaXNtcyoqXG5cbkFscmlnaHQsIGl0J3MgY2xlYXIgd2UncmUgZGVhbGluZyB3aXRoIGEgZGVwZW5kZW5jeSBpc3N1ZSBoZXJlLiBUaGUgbWVudGlvbiBvZiBib3RoIGBCUklER0VfTVJQYCBhbmQgYEJSSURHRWAgdGVsbHMgbWUgdGhvc2UgYXJlIGZ1bmRhbWVudGFsIGJ1aWxkaW5nIGJsb2NrcyBmb3Igd2hhdGV2ZXIgdGFzayBvciBzeXN0ZW0gd2UncmUgZXhhbWluaW5nLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGVpciByZWxhdGlvbnNoaXAgYW5kIGhvdyB0aGV5IGludGVyYWN0LiBTcGVjaWZpY2FsbHksIEkgbmVlZCB0byBrbm93IHdoeSBib3RoIG9mIHRoZXNlIGNvbXBvbmVudHMgYXJlIHJlcXVpcmVkLlxuXG5NeSBpbW1lZGlhdGUgbmV4dCBzdGVwIGlzIHRvIGRpdmUgaW50byBgYnJfbXJwX3Rlc3Rfd29ya19leHBpcmVkYC4gVGhpcyBpcyB0aGUgbW9zdCBsaWtlbHkgZW50cnkgcG9pbnQgdG8gdW5kZXJzdGFuZGluZyB0aGUgd2hvbGUgc3lzdGVtLCBzaW5jZSB0aGVyZSdzIGEgcmVmZXJlbmNlIHRvIHRoZSBgTVJQYCBjb21wb25lbnQuIEkgbmVlZCB0byB0cmFjZSAqaG93KiB0aGlzIGlzIHRyaWdnZXJlZC4gSSdtIGxvb2tpbmcgZm9yIHRoZSBjb25kaXRpb25zIHRoYXQgaW5pdGlhdGUgaXQuIElzIGl0IGEgdGltZXIsIGFuIGV2ZW50LCBhIHNwZWNpZmljIHN0YXRlIGNoYW5nZT8gVW5kZXJzdGFuZGluZyB0aGUgdHJpZ2dlciBtZWNoYW5pc20gd2lsbCBpbGx1bWluYXRlIHRoZSByb2xlIGBCUklER0VfTVJQYCBhbmQgYEJSSURHRWAgcGxheSBpbiB0aGUgcHJvY2VzcywgYW5kIHRoZWlyIHJlbGF0aW9uc2hpcC4gT25jZSBJIGZpZ3VyZSBvdXQgdGhlIHRyaWdnZXIsIEkgY2FuIGJldHRlciB1bmRlcnN0YW5kIHdoeSB3ZSBldmVuIG5lZWQgdGhlc2UgY29tcG9uZW50cyB0byBiZWdpbiB3aXRoLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0MTE1LCJPdXRwdXRUb2tlbnMiOjQwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzcsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yNlQyMjo0MDoyNC4xNzE4MjczNzhaIiwiU2VxIjoxMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjYwNTgyNTA4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImJyX21ycF90ZXN0X3dvcmtfZXhwaXJlZFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvYnJpZGdlL2JyX21ycC5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9icmlkZ2UvYnJfbXJwLmM9MjQwPXN0YXRpYyBzdHJ1Y3Qgc2tfYnVmZiAqYnJfbXJwX2FsbG9jX2luX3Rlc3Rfc2tiKHN0cnVjdCBicl9tcnAgKm1ycCxcXG4tLVxcbm5ldC9icmlkZ2UvYnJfbXJwLmMtMjc5LSAqL1xcbm5ldC9icmlkZ2UvYnJfbXJwLmM6MjgwOnN0YXRpYyB2b2lkIGJyX21ycF90ZXN0X3dvcmtfZXhwaXJlZChzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspXFxubmV0L2JyaWRnZS9icl9tcnAuYy0yODEte1xcbi0tXFxubmV0L2JyaWRnZS9icl9tcnAuYz00OTg9aW50IGJyX21ycF9hZGQoc3RydWN0IG5ldF9icmlkZ2UgKmJyLCBzdHJ1Y3QgYnJfbXJwX2luc3RhbmNlICppbnN0YW5jZSlcXG4tLVxcbm5ldC9icmlkZ2UvYnJfbXJwLmMtNTQzLVxcbm5ldC9icmlkZ2UvYnJfbXJwLmM6NTQ0OlxcdElOSVRfREVMQVlFRF9XT1JLKFxcdTAwMjZtcnAtXFx1MDAzZXRlc3Rfd29yaywgYnJfbXJwX3Rlc3Rfd29ya19leHBpcmVkKTtcXG5uZXQvYnJpZGdlL2JyX21ycC5jLTU0NS1cXHRJTklUX0RFTEFZRURfV09SSyhcXHUwMDI2bXJwLVxcdTAwM2Vpbl90ZXN0X3dvcmssIGJyX21ycF9pbl90ZXN0X3dvcmtfZXhwaXJlZCk7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI2VDIyOjQwOjI0LjIzMjQxNDg0NloiLCJTZXEiOjEzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoyNDEzNDk3MjgxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgYSBzdW1tYXJ5IG9mIG15IHRob3VnaHQgcHJvY2VzcywgYXMgaWYgSSB3ZXJlIGFuYWx5emluZyB0aGF0IGNvZGUgc25pcHBldDpcblxuKipJbml0aWFsaXphdGlvbiBhbmQgVHJpZ2dlciBBbmFseXNpcyoqXG5cbk9rYXksIHNvIGBicl9tcnBfYWRkYCBpcyB0aGUgc3RhcnRpbmcgcG9pbnQsIHRoZSBpbml0aWFsaXphdGlvbiByb3V0aW5lIGZvciBzb21ldGhpbmcuIFRoZSBpbW1lZGlhdGUgcXVlc3Rpb24gaXMsIHdoYXQga2lja3MgdGhpcyB0aGluZyBvZmY/IFdoYXQgYXJlIHRoZSBjYWxsaW5nIGNvbmRpdGlvbnM/IEkgbmVlZCB0byB0cmFjZSB0aGUgdHJpZ2dlcnMgb2YgYGJyX21ycF9hZGRgIHRvIHVuZGVyc3RhbmQgaXRzIGNvbnRleHQgYW5kIHRoZSBvdmVyYWxsIHByb2Nlc3MgZmxvdy4gVW5kZXJzdGFuZGluZyB0aGUgZXZlbnQgdGhhdCBsZWFkcyB0byBpdHMgZXhlY3V0aW9uIGlzIGNydWNpYWwgZm9yIGEgY29tcGxldGUgYXNzZXNzbWVudC4gTGV0J3MgZGlnIGludG8gdGhhdCBjYWxsaW5nIHNlcXVlbmNlLi4uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQ2OTUsIk91dHB1dFRva2VucyI6MzAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyNywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yNlQyMjo0MDoyNi42NDU5MTUwMDdaIiwiU2VxIjoxNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU4OTI4ODM5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImJyX21ycF9hZGRcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L2JyaWRnZS9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L2JyaWRnZS9icl9tcnAuYz00Mjk9c3RhdGljIHZvaWQgYnJfbXJwX2RlbF9pbXBsKHN0cnVjdCBuZXRfYnJpZGdlICpiciwgc3RydWN0IGJyX21ycCAqbXJwKVxcbi0tXFxubmV0L2JyaWRnZS9icl9tcnAuYy00OTctICovXFxubmV0L2JyaWRnZS9icl9tcnAuYzo0OTg6aW50IGJyX21ycF9hZGQoc3RydWN0IG5ldF9icmlkZ2UgKmJyLCBzdHJ1Y3QgYnJfbXJwX2luc3RhbmNlICppbnN0YW5jZSlcXG5uZXQvYnJpZGdlL2JyX21ycC5jLTQ5OS17XFxuLS1cXG5uZXQvYnJpZGdlL2JyX21ycF9uZXRsaW5rLmM9MzE9c3RhdGljIGludCBicl9tcnBfaW5zdGFuY2VfcGFyc2Uoc3RydWN0IG5ldF9icmlkZ2UgKmJyLCBzdHJ1Y3QgbmxhdHRyICphdHRyLFxcbi0tXFxubmV0L2JyaWRnZS9icl9tcnBfbmV0bGluay5jLTYxLVxcdGlmIChjbWQgPT0gUlRNX1NFVExJTkspXFxubmV0L2JyaWRnZS9icl9tcnBfbmV0bGluay5jOjYyOlxcdFxcdHJldHVybiBicl9tcnBfYWRkKGJyLCBcXHUwMDI2aW5zdCk7XFxubmV0L2JyaWRnZS9icl9tcnBfbmV0bGluay5jLTYzLVxcdGVsc2VcXG4tLVxcbm5ldC9icmlkZ2UvYnJfcHJpdmF0ZV9tcnAuaD01OT1lbnVtIGJyX21ycF9od19zdXBwb3J0IHtcXG4tLVxcbm5ldC9icmlkZ2UvYnJfcHJpdmF0ZV9tcnAuaC02NS0vKiBicl9tcnAuYyAqL1xcbm5ldC9icmlkZ2UvYnJfcHJpdmF0ZV9tcnAuaDo2NjppbnQgYnJfbXJwX2FkZChzdHJ1Y3QgbmV0X2JyaWRnZSAqYnIsIHN0cnVjdCBicl9tcnBfaW5zdGFuY2UgKmluc3RhbmNlKTtcXG5uZXQvYnJpZGdlL2JyX3ByaXZhdGVfbXJwLmgtNjctaW50IGJyX21ycF9kZWwoc3RydWN0IG5ldF9icmlkZ2UgKmJyLCBzdHJ1Y3QgYnJfbXJwX2luc3RhbmNlICppbnN0YW5jZSk7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI2VDIyOjQwOjI2LjcwNDg0ODgzNloiLCJTZXEiOjE1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNDk2NjA0OTEwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIG15IG93biBtZW50YWwgcHJvY2Vzc2luZyBhcyBhbiBleHBlcnQ6XG5cbioqSW52ZXN0aWdhdGluZyBhIGBSVE1fU0VUTElOS2AgVHJpZ2dlciBpbiBgYnJfbXJwX25ldGxpbmsuY2AqKlxuXG5BbHJpZ2h0LCB0aGF0IGBSVE1fU0VUTElOS2AgbWVzc2FnZSBoYXMgbXkgYXR0ZW50aW9uLiBJdCdzIGNvbWluZyBpbiB0aHJvdWdoIHRoZSBuZXRsaW5rIGludGVyZmFjZSwgc3BlY2lmaWNhbGx5IHdpdGhpbiB0aGUgY29udGV4dCBvZiBgYnJfbXJwX25ldGxpbmsuY2AuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoYXQncyBoYXBwZW5pbmcuIE15IGltbWVkaWF0ZSBmb2N1cyBpcyB0byBkaXNzZWN0IHRoZSBjb2RlIHdpdGhpbiBgYnJfbXJwX25ldGxpbmsuY2AuIEkgaGF2ZSBhIGZlZWxpbmcgdGhpcyBpcyB3aGVyZSB0aGUgY29yZSBvZiB0aGUgaW50ZXJhY3Rpb24gd2l0aCB0aGUgYnJpZGdlIGFuZCBNUlAgKE11bHRpcGxlIFJlZ2lzdHJhdGlvbiBQcm90b2NvbCkgaXMgYmVpbmcgaGFuZGxlZCBhdCB0aGUgbmV0bGluayBsZXZlbC4gSSdsbCBzdGFydCBieSB0cmFjaW5nIHRoZSBwYXRoIGZyb20gdGhlIG5ldGxpbmsgbWVzc2FnZSBoYW5kbGVyIHdpdGhpbiB0aGF0IGZpbGUsIHNlZSB3aGF0IGFjdGlvbnMgaXQncyB0YWtpbmcgb24gdGhlIGJyaWRnZSBjb25maWd1cmF0aW9uLCBhbmQgZmlndXJlIG91dCB0aGUgc2VxdWVuY2Ugb2YgY2FsbHMgdGhhdCBhcmUgYmVpbmcgbWFkZS4gSSdsbCBiZSBwYXJ0aWN1bGFybHkgaW50ZXJlc3RlZCBpbiBob3cgbGluayBzZXR0aW5ncyBhcmUgdHJhbnNsYXRlZCBpbnRvIGJyaWRnZSBvciBNUlAgc3BlY2lmaWMgY29uZmlndXJhdGlvbnMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjUyNjYsIk91dHB1dFRva2VucyI6NDEsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0MiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yNlQyMjo0MDozMC4yMDE0NTYxMjZaIiwiU2VxIjoxNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjYwMDAzNDI4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImJyX21ycF9pbnN0YW5jZV9wYXJzZVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvYnJpZGdlL2JyX21ycF9uZXRsaW5rLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L2JyaWRnZS9icl9tcnBfbmV0bGluay5jPTIzPWJyX21ycF9pbnN0YW5jZV9wb2xpY3lbSUZMQV9CUklER0VfTVJQX0lOU1RBTkNFX01BWCArIDFdID0ge1xcbi0tXFxubmV0L2JyaWRnZS9icl9tcnBfbmV0bGluay5jLTMwLVxcbm5ldC9icmlkZ2UvYnJfbXJwX25ldGxpbmsuYzozMTpzdGF0aWMgaW50IGJyX21ycF9pbnN0YW5jZV9wYXJzZShzdHJ1Y3QgbmV0X2JyaWRnZSAqYnIsIHN0cnVjdCBubGF0dHIgKmF0dHIsXFxubmV0L2JyaWRnZS9icl9tcnBfbmV0bGluay5jLTMyLVxcdFxcdFxcdFxcdCBpbnQgY21kLCBzdHJ1Y3QgbmV0bGlua19leHRfYWNrICpleHRhY2spXFxuLS1cXG5uZXQvYnJpZGdlL2JyX21ycF9uZXRsaW5rLmM9MzU2PWludCBicl9tcnBfcGFyc2Uoc3RydWN0IG5ldF9icmlkZ2UgKmJyLCBzdHJ1Y3QgbmV0X2JyaWRnZV9wb3J0ICpwLFxcbi0tXFxubmV0L2JyaWRnZS9icl9tcnBfbmV0bGluay5jLTM3OC1cXHRpZiAodGJbSUZMQV9CUklER0VfTVJQX0lOU1RBTkNFXSkge1xcbm5ldC9icmlkZ2UvYnJfbXJwX25ldGxpbmsuYzozNzk6XFx0XFx0ZXJyID0gYnJfbXJwX2luc3RhbmNlX3BhcnNlKGJyLCB0YltJRkxBX0JSSURHRV9NUlBfSU5TVEFOQ0VdLFxcbm5ldC9icmlkZ2UvYnJfbXJwX25ldGxpbmsuYy0zODAtXFx0XFx0XFx0XFx0XFx0ICAgIGNtZCwgZXh0YWNrKTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjZUMjI6NDA6MzAuMjYxNDY0ODg0WiIsIlNlcSI6MTcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjI2OTUzMjQ2MDMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgYW4gZXhwZXJ0J3MgaW50ZXJuYWwgbW9ub2xvZ3VlOlxuXG4qKlRyYWNpbmcgdGhlIEV4ZWN1dGlvbiBQYXRoKipcblxuQWxyaWdodCwgYGJyX21ycF9wYXJzZWAgaXMgdGhlIHN0YXJ0aW5nIHBvaW50LCB0aGUgbWFpbiBlbnRyeSBmdW5jdGlvbiBmb3IgdGhpcyBtb2R1bGUuIE15IGZpcnN0IG1vdmUgaXMgYWx3YXlzIHRvIHVuZGVyc3RhbmQgdGhlIGNhbGxpbmcgY29udGV4dC4gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgd2hlcmUgYGJyX21ycF9wYXJzZWAgaXMgYmVpbmcgaW52b2tlZC4gVGhhdCBnaXZlcyBtZSBjcml0aWNhbCBjb250ZXh0IG9uIGhvdyB0aGUgZGF0YSBpcyBiZWluZyBmZWQgaW4gYW5kIHRoZSBvdmVyYWxsIHB1cnBvc2UgaXQgc2VydmVzIHdpdGhpbiB0aGUgbGFyZ2VyIHN5c3RlbS4gVGltZSB0byBkaWcgaW50byB0aGUgY2FsbCBncmFwaCBhbmQgc2VlIHdoZXJlIHRoZSBlbnRyeSBwb2ludCBpcyB1c2VkLiBVbmRlcnN0YW5kaW5nIHRoaXMgd2lsbCBpbW1lZGlhdGVseSBwcm92aWRlIGEgY3J1Y2lhbCBsYXllciBvZiBjbGFyaXR5IVxuXG5cbiIsIklucHV0VG9rZW5zIjo1ODYyLCJPdXRwdXRUb2tlbnMiOjMwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzEsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjZUMjI6NDA6MzIuOTU2NzkyNTU3WiIsIlNlcSI6MTgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1OTU3MjI2OSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJicl9tcnBfcGFyc2VcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L2JyaWRnZS9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L2JyaWRnZS9icl9tcnBfbmV0bGluay5jPTMyND1zdGF0aWMgaW50IGJyX21ycF9zdGFydF9pbl90ZXN0X3BhcnNlKHN0cnVjdCBuZXRfYnJpZGdlICpicixcXG4tLVxcbm5ldC9icmlkZ2UvYnJfbXJwX25ldGxpbmsuYy0zNTUtXFxubmV0L2JyaWRnZS9icl9tcnBfbmV0bGluay5jOjM1NjppbnQgYnJfbXJwX3BhcnNlKHN0cnVjdCBuZXRfYnJpZGdlICpiciwgc3RydWN0IG5ldF9icmlkZ2VfcG9ydCAqcCxcXG5uZXQvYnJpZGdlL2JyX21ycF9uZXRsaW5rLmMtMzU3LVxcdFxcdCBzdHJ1Y3QgbmxhdHRyICphdHRyLCBpbnQgY21kLCBzdHJ1Y3QgbmV0bGlua19leHRfYWNrICpleHRhY2spXFxuLS1cXG5uZXQvYnJpZGdlL2JyX25ldGxpbmsuYz04MDk9c3RhdGljIGludCBicl9hZnNwZWMoc3RydWN0IG5ldF9icmlkZ2UgKmJyLFxcbi0tXFxubmV0L2JyaWRnZS9icl9uZXRsaW5rLmMtODQ4LVxcdFxcdGNhc2UgSUZMQV9CUklER0VfTVJQOlxcbm5ldC9icmlkZ2UvYnJfbmV0bGluay5jOjg0OTpcXHRcXHRcXHRlcnIgPSBicl9tcnBfcGFyc2UoYnIsIHAsIGF0dHIsIGNtZCwgZXh0YWNrKTtcXG5uZXQvYnJpZGdlL2JyX25ldGxpbmsuYy04NTAtXFx0XFx0XFx0aWYgKGVycilcXG4tLVxcbm5ldC9icmlkZ2UvYnJfcHJpdmF0ZS5oPTIwNjg9dW5zaWduZWQgbG9uZyBicl90aW1lcl92YWx1ZShjb25zdCBzdHJ1Y3QgdGltZXJfbGlzdCAqdGltZXIpO1xcbi0tXFxubmV0L2JyaWRnZS9icl9wcml2YXRlLmgtMjA3My0jaWYgSVNfRU5BQkxFRChDT05GSUdfQlJJREdFX01SUClcXG5uZXQvYnJpZGdlL2JyX3ByaXZhdGUuaDoyMDc0OmludCBicl9tcnBfcGFyc2Uoc3RydWN0IG5ldF9icmlkZ2UgKmJyLCBzdHJ1Y3QgbmV0X2JyaWRnZV9wb3J0ICpwLFxcbm5ldC9icmlkZ2UvYnJfcHJpdmF0ZS5oLTIwNzUtXFx0XFx0IHN0cnVjdCBubGF0dHIgKmF0dHIsIGludCBjbWQsIHN0cnVjdCBuZXRsaW5rX2V4dF9hY2sgKmV4dGFjayk7XFxuLS1cXG5uZXQvYnJpZGdlL2JyX3ByaXZhdGUuaD0yMDc4PWludCBicl9tcnBfZmlsbF9pbmZvKHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBuZXRfYnJpZGdlICpicik7XFxubmV0L2JyaWRnZS9icl9wcml2YXRlLmgtMjA3OS0jZWxzZVxcbm5ldC9icmlkZ2UvYnJfcHJpdmF0ZS5oOjIwODA6c3RhdGljIGlubGluZSBpbnQgYnJfbXJwX3BhcnNlKHN0cnVjdCBuZXRfYnJpZGdlICpiciwgc3RydWN0IG5ldF9icmlkZ2VfcG9ydCAqcCxcXG5uZXQvYnJpZGdlL2JyX3ByaXZhdGUuaC0yMDgxLVxcdFxcdFxcdCAgICAgICBzdHJ1Y3QgbmxhdHRyICphdHRyLCBpbnQgY21kLFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yNlQyMjo0MDozMy4wMTYzNzM4MDVaIiwiU2VxIjoxOSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzU1NDcwMDM3OSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIEJyaWRnZSBOZXRsaW5rIENvbmZpZ3VyYXRpb24qKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGFuZCB0cmFjaW5nIHRoZSBjb2RlLiBJdCBzZWVtcyB0aGUgZnVuY3Rpb24gaW4gcXVlc3Rpb24sIGBicl9tcnBfYWRkYCwgaXMgY2FsbGVkIGZyb20gYGJyX2Fmc3BlY2Agd2l0aGluIGBicl9uZXRsaW5rLmNgLiBUaGF0IHBsYWNlcyBpdCBmaXJtbHkgd2l0aGluIHRoZSBicmlkZ2UgbmV0bGluayBjb25maWd1cmF0aW9uIGNvbnRleHQsIHdoaWNoIG1ha2VzIHNlbnNlLiBJIGNhbiBjb25maXJtLCB0aGVuLCB0aGF0IGBicl9tcnBfYWRkYCBpcyBkZWZpbml0ZWx5IHJlYWNoYWJsZSB3aXRoaW4gdGhpcyBmbG93LlxuXG5Ob3csIHRoZSBwYXRjaCBpdHNlbGYgdGFyZ2V0cyB1bmluaXRpYWxpemVkIG1lbW9yeSB3aXRoaW4gYGJyX21ycF9hbGxvY190ZXN0X3NrYmAuIFNvIHRoZSBuZXh0IGxvZ2ljYWwgc3RlcCBpcyB0byB1bmRlcnN0YW5kIHdoYXQgdHJpZ2dlcnMgdGhhdCBmdW5jdGlvbi4gTGV0J3Mgc2VlLi4uIGFoLCBoZXJlIGl0IGlzOiBgYnJfbXJwX3Rlc3Rfd29ya19leHBpcmVkYCBpcyByZXNwb25zaWJsZSBmb3IgY2FsbGluZyBpdC4gVGhhdCdzIGdvb2QuXG5cblNvLCBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGVyZSBgdGVzdF93b3JrYCAocHJlc3VtYWJseSByZWxhdGVkIHRvIHRoYXQgXCJ0ZXN0XCIgd29yaykgZ2V0cyBzY2hlZHVsZWQgdG8gZ2V0IHRoZSBiaWdnZXIgcGljdHVyZS4gSSBuZWVkIHRvIHRyYWNlIGJhY2sgZnJvbSBgYnJfbXJwX3Rlc3Rfd29ya19leHBpcmVkYCB0byBmaW5kIG91dCB3aGVyZSB0aGlzIGB0ZXN0X3dvcmtgIGlzIGFjdHVhbGx5IHNjaGVkdWxlZCBmcm9tIHdpdGhpbiB0aGUgY29kZS4gVGhlbiwgSSBjYW4gdW5kZXJzdGFuZCB3aGVuIGFuZCB1bmRlciB3aGF0IGNpcmN1bXN0YW5jZXMgdGhpcyB1bmluaXRpYWxpemVkIG1lbW9yeSBwcm9ibGVtIHdpbGwgb2NjdXIuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjY1OTksIk91dHB1dFRva2VucyI6MzMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMTIsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjZUMjI6NDA6MzYuNTcxMDc2Mzc0WiIsIlNlcSI6MjAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1NzUyNDQyOSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJ0ZXN0X3dvcmtcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L2JyaWRnZS9icl9tcnAuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvYnJpZGdlL2JyX21ycC5jPTI0MD1zdGF0aWMgc3RydWN0IHNrX2J1ZmYgKmJyX21ycF9hbGxvY19pbl90ZXN0X3NrYihzdHJ1Y3QgYnJfbXJwICptcnAsXFxuLS1cXG5uZXQvYnJpZGdlL2JyX21ycC5jLTI3OS0gKi9cXG5uZXQvYnJpZGdlL2JyX21ycC5jOjI4MDpzdGF0aWMgdm9pZCBicl9tcnBfdGVzdF93b3JrX2V4cGlyZWQoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxcbm5ldC9icmlkZ2UvYnJfbXJwLmMtMjgxLXtcXG5uZXQvYnJpZGdlL2JyX21ycC5jLTI4Mi1cXHRzdHJ1Y3QgZGVsYXllZF93b3JrICpkZWxfd29yayA9IHRvX2RlbGF5ZWRfd29yayh3b3JrKTtcXG5uZXQvYnJpZGdlL2JyX21ycC5jOjI4MzpcXHRzdHJ1Y3QgYnJfbXJwICptcnAgPSBjb250YWluZXJfb2YoZGVsX3dvcmssIHN0cnVjdCBicl9tcnAsIHRlc3Rfd29yayk7XFxubmV0L2JyaWRnZS9icl9tcnAuYy0yODQtXFx0c3RydWN0IG5ldF9icmlkZ2VfcG9ydCAqcDtcXG4tLVxcbm5ldC9icmlkZ2UvYnJfbXJwLmMtMzQ0LVxcbm5ldC9icmlkZ2UvYnJfbXJwLmM6MzQ1OlxcdHF1ZXVlX2RlbGF5ZWRfd29yayhzeXN0ZW1fcGVyY3B1X3dxLCBcXHUwMDI2bXJwLVxcdTAwM2V0ZXN0X3dvcmssXFxubmV0L2JyaWRnZS9icl9tcnAuYy0zNDYtXFx0XFx0XFx0ICAgdXNlY3NfdG9famlmZmllcyhtcnAtXFx1MDAzZXRlc3RfaW50ZXJ2YWwpKTtcXG4tLVxcbm5ldC9icmlkZ2UvYnJfbXJwLmMtMzUyLSAqL1xcbm5ldC9icmlkZ2UvYnJfbXJwLmM6MzUzOnN0YXRpYyB2b2lkIGJyX21ycF9pbl90ZXN0X3dvcmtfZXhwaXJlZChzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspXFxubmV0L2JyaWRnZS9icl9tcnAuYy0zNTQte1xcbm5ldC9icmlkZ2UvYnJfbXJwLmMtMzU1LVxcdHN0cnVjdCBkZWxheWVkX3dvcmsgKmRlbF93b3JrID0gdG9fZGVsYXllZF93b3JrKHdvcmspO1xcbm5ldC9icmlkZ2UvYnJfbXJwLmM6MzU2OlxcdHN0cnVjdCBicl9tcnAgKm1ycCA9IGNvbnRhaW5lcl9vZihkZWxfd29yaywgc3RydWN0IGJyX21ycCwgaW5fdGVzdF93b3JrKTtcXG5uZXQvYnJpZGdlL2JyX21ycC5jLTM1Ny1cXHRzdHJ1Y3QgbmV0X2JyaWRnZV9wb3J0ICpwO1xcbi0tXFxubmV0L2JyaWRnZS9icl9tcnAuYy00MjEtXFxubmV0L2JyaWRnZS9icl9tcnAuYzo0MjI6XFx0cXVldWVfZGVsYXllZF93b3JrKHN5c3RlbV9wZXJjcHVfd3EsIFxcdTAwMjZtcnAtXFx1MDAzZWluX3Rlc3Rfd29yayxcXG5uZXQvYnJpZGdlL2JyX21ycC5jLTQyMy1cXHRcXHRcXHQgICB1c2Vjc190b19qaWZmaWVzKG1ycC1cXHUwMDNlaW5fdGVzdF9pbnRlcnZhbCkpO1xcbi0tXFxubmV0L2JyaWRnZS9icl9tcnAuYz00Mjk9c3RhdGljIHZvaWQgYnJfbXJwX2RlbF9pbXBsKHN0cnVjdCBuZXRfYnJpZGdlICpiciwgc3RydWN0IGJyX21ycCAqbXJwKVxcbi0tXFxubmV0L2JyaWRnZS9icl9tcnAuYy00MzQtXFx0LyogU3RvcCBzZW5kaW5nIE1SUF9UZXN0IGZyYW1lcyAqL1xcbm5ldC9icmlkZ2UvYnJfbXJwLmM6NDM1OlxcdGNhbmNlbF9kZWxheWVkX3dvcmtfc3luYyhcXHUwMDI2bXJwLVxcdTAwM2V0ZXN0X3dvcmspO1xcbm5ldC9icmlkZ2UvYnJfbXJwLmMtNDM2LVxcdGJyX21ycF9zd2l0Y2hkZXZfc2VuZF9yaW5nX3Rlc3QoYnIsIG1ycCwgMCwgMCwgMCwgMCk7XFxuLS1cXG5uZXQvYnJpZGdlL2JyX21ycC5jLTQzOC1cXHQvKiBTdG9wIHNlbmRpbmcgTVJQX0luVGVzdCBmcmFtZXMgaWYgaGFzIGFuIGludGVyY29ubmVjdCByb2xlICovXFxubmV0L2JyaWRnZS9icl9tcnAuYzo0Mzk6XFx0Y2FuY2VsX2RlbGF5ZWRfd29ya19zeW5jKFxcdTAwMjZtcnAtXFx1MDAzZWluX3Rlc3Rfd29yayk7XFxubmV0L2JyaWRnZS9icl9tcnAuYy00NDAtXFx0YnJfbXJwX3N3aXRjaGRldl9zZW5kX2luX3Rlc3QoYnIsIG1ycCwgMCwgMCwgMCk7XFxuLS1cXG5uZXQvYnJpZGdlL2JyX21ycC5jPTQ5OD1pbnQgYnJfbXJwX2FkZChzdHJ1Y3QgbmV0X2JyaWRnZSAqYnIsIHN0cnVjdCBicl9tcnBfaW5zdGFuY2UgKmluc3RhbmNlKVxcbi0tXFxubmV0L2JyaWRnZS9icl9tcnAuYy01NDMtXFxubmV0L2JyaWRnZS9icl9tcnAuYzo1NDQ6XFx0SU5JVF9ERUxBWUVEX1dPUksoXFx1MDAyNm1ycC1cXHUwMDNldGVzdF93b3JrLCBicl9tcnBfdGVzdF93b3JrX2V4cGlyZWQpO1xcbm5ldC9icmlkZ2UvYnJfbXJwLmM6NTQ1OlxcdElOSVRfREVMQVlFRF9XT1JLKFxcdTAwMjZtcnAtXFx1MDAzZWluX3Rlc3Rfd29yaywgYnJfbXJwX2luX3Rlc3Rfd29ya19leHBpcmVkKTtcXG5uZXQvYnJpZGdlL2JyX21ycC5jLTU0Ni1cXHRobGlzdF9hZGRfdGFpbF9yY3UoXFx1MDAyNm1ycC1cXHUwMDNlbGlzdCwgXFx1MDAyNmJyLVxcdTAwM2VtcnBfbGlzdCk7XFxuLS1cXG5uZXQvYnJpZGdlL2JyX21ycC5jPTcwMz1pbnQgYnJfbXJwX3N0YXJ0X3Rlc3Qoc3RydWN0IG5ldF9icmlkZ2UgKmJyLFxcbi0tXFxubmV0L2JyaWRnZS9icl9tcnAuYy03MjgtXFx0bXJwLVxcdTAwM2V0ZXN0X2NvdW50X21pc3MgPSAwO1xcbm5ldC9icmlkZ2UvYnJfbXJwLmM6NzI5OlxcdHF1ZXVlX2RlbGF5ZWRfd29yayhzeXN0ZW1fcGVyY3B1X3dxLCBcXHUwMDI2bXJwLVxcdTAwM2V0ZXN0X3dvcmssXFxubmV0L2JyaWRnZS9icl9tcnAuYy03MzAtXFx0XFx0XFx0ICAgdXNlY3NfdG9famlmZmllcyh0ZXN0LVxcdTAwM2VpbnRlcnZhbCkpO1xcbi0tXFxubmV0L2JyaWRnZS9icl9tcnAuYz03NTk9aW50IGJyX21ycF9zZXRfaW5fcm9sZShzdHJ1Y3QgbmV0X2JyaWRnZSAqYnIsIHN0cnVjdCBicl9tcnBfaW5fcm9sZSAqcm9sZSlcXG4tLVxcbm5ldC9icmlkZ2UvYnJfbXJwLmMtNzc5LVxcdFxcdC8qIFN0b3AgdGhlIGdlbmVyYXRpbmcgTVJQX0luVGVzdCBmcmFtZXMgKi9cXG5uZXQvYnJpZGdlL2JyX21ycC5jOjc4MDpcXHRcXHRjYW5jZWxfZGVsYXllZF93b3JrX3N5bmMoXFx1MDAyNm1ycC1cXHUwMDNlaW5fdGVzdF93b3JrKTtcXG5uZXQvYnJpZGdlL2JyX21ycC5jLTc4MS1cXHRcXHRicl9tcnBfc3dpdGNoZGV2X3NlbmRfaW5fdGVzdChiciwgbXJwLCAwLCAwLCAwKTtcXG4tLVxcbm5ldC9icmlkZ2UvYnJfbXJwLmM9ODQxPWludCBicl9tcnBfc3RhcnRfaW5fdGVzdChzdHJ1Y3QgbmV0X2JyaWRnZSAqYnIsXFxuLS1cXG5uZXQvYnJpZGdlL2JyX21ycC5jLTg2OC1cXHRtcnAtXFx1MDAzZWluX3Rlc3RfY291bnRfbWlzcyA9IDA7XFxubmV0L2JyaWRnZS9icl9tcnAuYzo4Njk6XFx0cXVldWVfZGVsYXllZF93b3JrKHN5c3RlbV9wZXJjcHVfd3EsIFxcdTAwMjZtcnAtXFx1MDAzZWluX3Rlc3Rfd29yayxcXG5uZXQvYnJpZGdlL2JyX21ycC5jLTg3MC1cXHRcXHRcXHQgICB1c2Vjc190b19qaWZmaWVzKGluX3Rlc3QtXFx1MDAzZWludGVydmFsKSk7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI2VDIyOjQwOjM2LjYyODYwNjQxM1oiLCJTZXEiOjIxLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoyODY1NjkzNzg4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdGFrZSBvbiB0aGUgdGhvdWdodCBwcm9jZXNzLCBhcyByZXF1ZXN0ZWQ6XG5cbioqRGVjb25zdHJ1Y3RpbmcgdGhlIGBicl9tcnBfc3RhcnRfdGVzdGAgVHJpZ2dlcioqXG5cbk9rYXksIHNvIEkgc2VlIHRoaXMgdGVzdCBpcyBzY2hlZHVsZWQgd2l0aGluIHRoZSBgYnJfbXJwX3N0YXJ0X3Rlc3RgIGNvbnRleHQuIE15IGltbWVkaWF0ZSBmb2N1cyBpcyB0byB1bmRlcnN0YW5kICp3aHkqIGFuZCAqaG93KiB0aGlzIHRlc3QgaXMgYmVpbmcgaW5pdGlhdGVkLiBJIG5lZWQgdG8gdHJhY2UgdGhlIGV4ZWN1dGlvbiBwYXRoLiBTbywgbGV0J3MgbG9vayBmb3IgdGhlIGV2ZW50cyB0aGF0IGFjdHVhbGx5ICp0cmlnZ2VyKiBgYnJfbXJwX3N0YXJ0X3Rlc3RgLiBLbm93aW5nIHRob3NlIGVudHJ5IHBvaW50cyBpcyBjcml0aWNhbCBmb3IgdW5kZXJzdGFuZGluZyB0aGUgb3ZlcmFsbCBkYXRhIGZsb3cgYW5kIGFueSBwb3RlbnRpYWwgc2lkZSBlZmZlY3RzIG9mIHRoaXMgc2NoZWR1bGVkIHRlc3QuIEl0J3MgdGltZSB0byBkaWcgaW50byB0aGUgdXBzdHJlYW0gZGVwZW5kZW5jaWVzLiBMZXQncyBzZWUgd2hhdCdzIGNhbGxpbmcgdGhhdCBmdW5jdGlvbiwgd2hhdCBkZXBlbmRlbmNpZXMgZXhpc3QsIGFuZCBob3cgdGhvc2UgdHJpZ2dlciBmdW5jdGlvbnMgaW50ZXJhY3Qgd2l0aCBvbmUgYW5vdGhlci5cblxuXG4iLCJJbnB1dFRva2VucyI6ODQ3OSwiT3V0cHV0VG9rZW5zIjozMiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjMyLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI2VDIyOjQwOjM5LjQ5NDMwMjM1MVoiLCJTZXEiOjIyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTk3NTUzMTgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiYnJfbXJwX3N0YXJ0X3Rlc3RcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L2JyaWRnZS9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L2JyaWRnZS9icl9tcnAuYz02NzI9aW50IGJyX21ycF9zZXRfcmluZ19yb2xlKHN0cnVjdCBuZXRfYnJpZGdlICpicixcXG4tLVxcbm5ldC9icmlkZ2UvYnJfbXJwLmMtNzAyLSAqL1xcbm5ldC9icmlkZ2UvYnJfbXJwLmM6NzAzOmludCBicl9tcnBfc3RhcnRfdGVzdChzdHJ1Y3QgbmV0X2JyaWRnZSAqYnIsXFxubmV0L2JyaWRnZS9icl9tcnAuYzo3MDQ6XFx0XFx0ICAgICAgc3RydWN0IGJyX21ycF9zdGFydF90ZXN0ICp0ZXN0KVxcbm5ldC9icmlkZ2UvYnJfbXJwLmMtNzA1LXtcXG4tLVxcbm5ldC9icmlkZ2UvYnJfbXJwX25ldGxpbmsuYz0xOTU9c3RhdGljIGNvbnN0IHN0cnVjdCBubGFfcG9saWN5XFxubmV0L2JyaWRnZS9icl9tcnBfbmV0bGluay5jOjE5Njpicl9tcnBfc3RhcnRfdGVzdF9wb2xpY3lbSUZMQV9CUklER0VfTVJQX1NUQVJUX1RFU1RfTUFYICsgMV0gPSB7XFxubmV0L2JyaWRnZS9icl9tcnBfbmV0bGluay5jLTE5Ny1cXHRbSUZMQV9CUklER0VfTVJQX1NUQVJUX1RFU1RfVU5TUEVDXVxcdD0geyAudHlwZSA9IE5MQV9SRUpFQ1QgfSxcXG4tLVxcbm5ldC9icmlkZ2UvYnJfbXJwX25ldGxpbmsuYy0yMDQtXFxubmV0L2JyaWRnZS9icl9tcnBfbmV0bGluay5jOjIwNTpzdGF0aWMgaW50IGJyX21ycF9zdGFydF90ZXN0X3BhcnNlKHN0cnVjdCBuZXRfYnJpZGdlICpiciwgc3RydWN0IG5sYXR0ciAqYXR0cixcXG5uZXQvYnJpZGdlL2JyX21ycF9uZXRsaW5rLmMtMjA2LVxcdFxcdFxcdFxcdCAgIHN0cnVjdCBuZXRsaW5rX2V4dF9hY2sgKmV4dGFjaylcXG4tLVxcbm5ldC9icmlkZ2UvYnJfbXJwX25ldGxpbmsuYy0yMDgtXFx0c3RydWN0IG5sYXR0ciAqdGJbSUZMQV9CUklER0VfTVJQX1NUQVJUX1RFU1RfTUFYICsgMV07XFxubmV0L2JyaWRnZS9icl9tcnBfbmV0bGluay5jOjIwOTpcXHRzdHJ1Y3QgYnJfbXJwX3N0YXJ0X3Rlc3QgdGVzdDtcXG5uZXQvYnJpZGdlL2JyX21ycF9uZXRsaW5rLmMtMjEwLVxcdGludCBlcnI7XFxuLS1cXG5uZXQvYnJpZGdlL2JyX21ycF9uZXRsaW5rLmMtMjEyLVxcdGVyciA9IG5sYV9wYXJzZV9uZXN0ZWQodGIsIElGTEFfQlJJREdFX01SUF9TVEFSVF9URVNUX01BWCwgYXR0cixcXG5uZXQvYnJpZGdlL2JyX21ycF9uZXRsaW5rLmM6MjEzOlxcdFxcdFxcdCAgICAgICBicl9tcnBfc3RhcnRfdGVzdF9wb2xpY3ksIGV4dGFjayk7XFxubmV0L2JyaWRnZS9icl9tcnBfbmV0bGluay5jLTIxNC1cXHRpZiAoZXJyKVxcbi0tXFxubmV0L2JyaWRnZS9icl9tcnBfbmV0bGluay5jLTIzNy1cXG5uZXQvYnJpZGdlL2JyX21ycF9uZXRsaW5rLmM6MjM4OlxcdHJldHVybiBicl9tcnBfc3RhcnRfdGVzdChiciwgXFx1MDAyNnRlc3QpO1xcbm5ldC9icmlkZ2UvYnJfbXJwX25ldGxpbmsuYy0yMzktfVxcbi0tXFxubmV0L2JyaWRnZS9icl9tcnBfbmV0bGluay5jPTM1Nj1pbnQgYnJfbXJwX3BhcnNlKHN0cnVjdCBuZXRfYnJpZGdlICpiciwgc3RydWN0IG5ldF9icmlkZ2VfcG9ydCAqcCxcXG4tLVxcbm5ldC9icmlkZ2UvYnJfbXJwX25ldGxpbmsuYy00MTQtXFx0aWYgKHRiW0lGTEFfQlJJREdFX01SUF9TVEFSVF9URVNUXSkge1xcbm5ldC9icmlkZ2UvYnJfbXJwX25ldGxpbmsuYzo0MTU6XFx0XFx0ZXJyID0gYnJfbXJwX3N0YXJ0X3Rlc3RfcGFyc2UoYnIsXFxubmV0L2JyaWRnZS9icl9tcnBfbmV0bGluay5jLTQxNi1cXHRcXHRcXHRcXHRcXHQgICAgICB0YltJRkxBX0JSSURHRV9NUlBfU1RBUlRfVEVTVF0sXFxuLS1cXG5uZXQvYnJpZGdlL2JyX3ByaXZhdGVfbXJwLmg9NzQ9aW50IGJyX21ycF9zZXRfcmluZ19yb2xlKHN0cnVjdCBuZXRfYnJpZGdlICpiciwgc3RydWN0IGJyX21ycF9yaW5nX3JvbGUgKnJvbGUpO1xcbm5ldC9icmlkZ2UvYnJfcHJpdmF0ZV9tcnAuaDo3NTppbnQgYnJfbXJwX3N0YXJ0X3Rlc3Qoc3RydWN0IG5ldF9icmlkZ2UgKmJyLCBzdHJ1Y3QgYnJfbXJwX3N0YXJ0X3Rlc3QgKnRlc3QpO1xcbm5ldC9icmlkZ2UvYnJfcHJpdmF0ZV9tcnAuaC03Ni1pbnQgYnJfbXJwX3NldF9pbl9zdGF0ZShzdHJ1Y3QgbmV0X2JyaWRnZSAqYnIsIHN0cnVjdCBicl9tcnBfaW5fc3RhdGUgKnN0YXRlKTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjZUMjI6NDA6MzkuNTU0MDYyMTY5WiIsIlNlcSI6MjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQ2MDg0NTcxOTgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqRnV6emluZyBGb2N1czogQnJpZGdlIE1SUCBUZXN0IEltcGxlbWVudGF0aW9uKipcblxuT2theSwgc28gSSd2ZSByZWNlaXZlZCB0aGUgYG5ldGxpbmtgIHRyaWdnZXIgZm9yIGBJRkxBX0JSSURHRV9NUlBfU1RBUlRfVEVTVGAuIFRoaXMgaXMgZ29vZCwgaXQgbWVhbnMgdGhlIHVuZGVybHlpbmcgY29kZSBwYXRoIGlzIGFjdHVhbGx5IHJlYWNoYWJsZSBhbmQgZnVuY3Rpb25hbCDigJMgcHJvZ3Jlc3MhIE5vdywgSSBuZWVkIHRvIHBpbnBvaW50IHRoZSBrZXkgZnVuY3Rpb25zIGZvciBteSBmdXp6aW5nIGVmZm9ydHMuIExldCdzIHNlZS4uLlxuXG5JJ3ZlIGlkZW50aWZpZWQgc2V2ZXJhbCBmdW5jdGlvbnMgaW4gdGhlIGBicl9tcnBgIGNvZGUuIGBicl9tcnBfYWxsb2NfdGVzdF9za2JgLCBgYnJfbXJwX3Rlc3Rfd29ya19leHBpcmVkYCwgYW5kIGBicl9tcnBfaW5zdGFuY2VfcGFyc2VgIGFuZCBgYnJfbXJwX3N0YXJ0X3Rlc3RfcGFyc2VgIGFyZSBhbGwgc3RhdGljLCBtZWFuaW5nIHRoZXkncmUgaW50ZXJuYWwgdG8gdGhlIG1vZHVsZSwgYnV0IHBvdGVudGlhbGx5IHN0aWxsIHZ1bG5lcmFibGUuIFRoZSBub24tc3RhdGljIG9uZXMgYXJlIGBicl9tcnBfc3RhcnRfdGVzdGAsIGBicl9tcnBfYWRkYCwgYW5kIGBicl9tcnBfcGFyc2VgLiBTaW5jZSB0aGUgdHJpZ2dlciBpbml0aWF0ZWQgdGhlIHByb2Nlc3MsIGl0IG1ha2VzIHNlbnNlIHRvIHN0YXJ0IHdpdGggdGhlIGVudHJ5IHBvaW50cy5cblxuSSdsbCBzdGFydCB3aXRoIGEgZGVlcCBkaXZlIGludG8gYGJyX21ycF9zdGFydF90ZXN0YCBhbmQgYGJyX21ycF9hZGRgLiBJJ2xsIGFuYWx5emUgdGhlaXIgbG9naWMsIGFyZ3VtZW50IGhhbmRsaW5nLCBhbmQgYW55IHBvdGVudGlhbCBhcmVhcyBmb3IgaW5wdXQgdmFsaWRhdGlvbiBmbGF3cy4gVGhlc2UgdHdvIGZ1bmN0aW9ucyBhcmUgbGlrZWx5IHdoZXJlIHRoZSBpbml0aWFsIGRhdGEgcHJvY2Vzc2luZyBhbmQgc2V0dXAgaGFwcGVucy4gSWYgdGhlcmUgYXJlIHZ1bG5lcmFiaWxpdGllcyB0aGVyZSwgdGhleSBjb3VsZCBwb3RlbnRpYWxseSBsZWFkIHRvIGNyYXNoZXMgb3Igb3RoZXIgdW5kZXNpcmFibGUgYmVoYXZpb3IgdGhhdCBjYW4gYmUgZXhwbG9pdGVkIGluIGEgZnV6emluZyBjYW1wYWlnbi5cblxuXG4iLCJJbnB1dFRva2VucyI6OTY1MCwiT3V0cHV0VG9rZW5zIjozOCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE3MywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yNlQyMjo0MDo0NC4xNjI1MjE4MjdaIiwiU2VxIjoyNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU5MzkzNDA4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImJyX21ycF9zdGFydF90ZXN0XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9icmlkZ2UvYnJfbXJwLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L2JyaWRnZS9icl9tcnAuYz02NzI9aW50IGJyX21ycF9zZXRfcmluZ19yb2xlKHN0cnVjdCBuZXRfYnJpZGdlICpicixcXG4tLVxcbm5ldC9icmlkZ2UvYnJfbXJwLmMtNzAyLSAqL1xcbm5ldC9icmlkZ2UvYnJfbXJwLmM6NzAzOmludCBicl9tcnBfc3RhcnRfdGVzdChzdHJ1Y3QgbmV0X2JyaWRnZSAqYnIsXFxubmV0L2JyaWRnZS9icl9tcnAuYzo3MDQ6XFx0XFx0ICAgICAgc3RydWN0IGJyX21ycF9zdGFydF90ZXN0ICp0ZXN0KVxcbm5ldC9icmlkZ2UvYnJfbXJwLmMtNzA1LXtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjZUMjI6NDA6NDQuMjIxOTE5NzY1WiIsIlNlcSI6MjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQ0MzM2NzgxNzQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBCdWcgRml4IGFuZCBSZWxldmFudCBGdW5jdGlvbnMqKlxuXG5Pa2F5LCBzbyB0aGlzIHBhdGNoIGFkZHJlc3NlcyBhbiB1bmluaXRpYWxpemVkIG1lbW9yeSBpc3N1ZSB3aXRoaW4gYGJyX21ycF9hbGxvY190ZXN0X3NrYmAuIE15IGluaXRpYWwgdGhvdWdodCBpcyB0byBwaW5wb2ludCB0aGUgbW9zdCBhcHByb3ByaWF0ZSBmb2N1cyBzeW1ib2wgdG8gdW5kZXJzdGFuZCB0aGUgYnVnJ3Mgcm9vdCBjYXVzZSBhbmQgaW1wYWN0LiBJdCBzZWVtcyBgYnJfbXJwX2FsbG9jX3Rlc3Rfc2tiYCBpcyBjYWxsZWQgYnkgYGJyX21ycF90ZXN0X3dvcmtfZXhwaXJlZGAsIHdoaWNoLCBpbiB0dXJuLCBpcyBzY2hlZHVsZWQgYnkgYGJyX21ycF9zdGFydF90ZXN0YC5cblxuR2l2ZW4gdGhlIHByZWZlcmVuY2UgZm9yIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50cywgYGJyX21ycF9zdGFydF90ZXN0YCBpbW1lZGlhdGVseSBzdGFuZHMgb3V0IGFzIGEgc3Ryb25nIGNhbmRpZGF0ZS4gYGJyX21ycF90ZXN0X3dvcmtfZXhwaXJlZGAgaXMgcmVsZXZhbnQsIGJ1dCBpdCdzIGEgc3RhdGljIGZ1bmN0aW9uLCBzbyBsZXQncyBrZWVwIGl0IGluIG1pbmQuIElzIGBicl9tcnBfcGFyc2VgIGEgbmV0bGluayBlbnRyeSBwb2ludD8gR2l2ZW4gdGhhdCBwcmVmZXJlbmNlLCBpcyB0aGVyZSBhbm90aGVyIGVudHJ5IHBvaW50P1xuXG5UbyBjb25maXJtIG15IHVuZGVyc3RhbmRpbmcsIEkgbmVlZCB0byB0cmFjZSB0aGlzIGZ1cnRoZXIuIFNwZWNpZmljYWxseSwgbGV0IG1lIGRpZyBkZWVwZXIgaW50byBgYnJfbXJwX3Rlc3Rfd29ya19leHBpcmVkYCB0byBzZWUgaG93IGl0IHVzZXMgYGJyX21ycF9hbGxvY190ZXN0X3NrYmAuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjEwMzA1LCJPdXRwdXRUb2tlbnMiOjQwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjI3LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI2VDIyOjQwOjQ4LjY1NTU5OTYwOVoiLCJTZXEiOjI2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTg1MzA0NjksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiYnJfbXJwX3Rlc3Rfd29ya19leHBpcmVkXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9icmlkZ2UvYnJfbXJwLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L2JyaWRnZS9icl9tcnAuYz0yNDA9c3RhdGljIHN0cnVjdCBza19idWZmICpicl9tcnBfYWxsb2NfaW5fdGVzdF9za2Ioc3RydWN0IGJyX21ycCAqbXJwLFxcbi0tXFxubmV0L2JyaWRnZS9icl9tcnAuYy0yNzktICovXFxubmV0L2JyaWRnZS9icl9tcnAuYzoyODA6c3RhdGljIHZvaWQgYnJfbXJwX3Rlc3Rfd29ya19leHBpcmVkKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaylcXG5uZXQvYnJpZGdlL2JyX21ycC5jLTI4MS17XFxuLS1cXG5uZXQvYnJpZGdlL2JyX21ycC5jPTQ5OD1pbnQgYnJfbXJwX2FkZChzdHJ1Y3QgbmV0X2JyaWRnZSAqYnIsIHN0cnVjdCBicl9tcnBfaW5zdGFuY2UgKmluc3RhbmNlKVxcbi0tXFxubmV0L2JyaWRnZS9icl9tcnAuYy01NDMtXFxubmV0L2JyaWRnZS9icl9tcnAuYzo1NDQ6XFx0SU5JVF9ERUxBWUVEX1dPUksoXFx1MDAyNm1ycC1cXHUwMDNldGVzdF93b3JrLCBicl9tcnBfdGVzdF93b3JrX2V4cGlyZWQpO1xcbm5ldC9icmlkZ2UvYnJfbXJwLmMtNTQ1LVxcdElOSVRfREVMQVlFRF9XT1JLKFxcdTAwMjZtcnAtXFx1MDAzZWluX3Rlc3Rfd29yaywgYnJfbXJwX2luX3Rlc3Rfd29ya19leHBpcmVkKTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjZUMjI6NDA6NDguNzE0MTM2Mzc3WiIsIlNlcSI6MjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjUyOTEwNjYzMTgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBCdWcgRml4KipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBmaXggcmVsYXRlZCB0byB1bmluaXRpYWxpemVkIG1lbW9yeSBpbiBgYnJfbXJwX2FsbG9jX3Rlc3Rfc2tiYC4gTXkgaW5pdGlhbCB0aG91Z2h0IHdhcyB0byBleGFtaW5lIGBicl9tcnBfdGVzdF93b3JrX2V4cGlyZWRgIGJlY2F1c2UgdGhhdCdzIHRoZSBmdW5jdGlvbiBhY3R1YWxseSBydW5uaW5nIHRoZSBhbHRlcmVkIGNvZGUuIFRoZSBwcm9ibGVtIGlzIHRoYXQgaXQncyBhIHN0YXRpYyBmdW5jdGlvbi4gVGhhdCBtZWFucyBJIG5lZWQgdG8gdHJhY2UgYmFjayBmcm9tIHRoZXJlLlxuXG5gYnJfbXJwX3N0YXJ0X3Rlc3RgIGxvb2tzIHByb21pc2luZyBhcyB0aGUgZW50cnkgcG9pbnQgdGhhdCBzY2hlZHVsZXMgdGhlIHdvcmssIHNvIEknbGwgZGVmaW5pdGVseSBpbmNsdWRlIHRoYXQgaW4gdGhlIGFuYWx5c2lzLiBBbHNvLCBgYnJfbXJwX3BhcnNlYCBtYWtlcyBzZW5zZSB0byBpbmNsdWRlIGluIG15IGV4YW1pbmF0aW9uIG9mIHRoaXMgaXNzdWUuXG5cbk5vdywgbGV0J3MgbG9vayBhdCB0aGUgcGF0Y2ggaXRzZWxmLiBBaCwgSSBzZWUgaXQncyBhYm91dCBhbGxvY2F0aW5nIG1lbW9yeSBmb3IgYSBzdWItVExWIGluIGFuIHNrYiBhbmQgc2V0dGluZyB0aGUgbGVuZ3RoIGZpZWxkLiBUaGUgY3J1Y2lhbCBwYXJ0IGhlcmUgaXMgdGhlIGFkZGl0aW9uIG9mIGBzdWJfdGx2LVx1MDAzZWxlbmd0aCA9IDB4MDtgIGFuZCwgbW9yZSBpbXBvcnRhbnRseSwgdGhlIGNoYW5nZSBmcm9tIGBza2JfcHV0KHNrYiwgTVJQX09QVF9QQURESU5HKTtgIHRvIGBza2JfcHV0X3plcm8oc2tiLCBNUlBfT1BUX1BBRERJTkcpO2AuIFRoYXQncyB3aGVyZSB0aGUgaW5pdGlhbGl6YXRpb24gb2YgdGhlIGFsbG9jYXRlZCBtZW1vcnkgY29tZXMgaW4uIEl0J3MgaW5pdGlhbGl6aW5nIHRoZSBzdWItVExWIGxlbmd0aCB0byAwLCBhbmQgemVyb2luZyB0aGUgcGFkZGluZy4gSXQncyBhbGwgYWJvdXQgYXZvaWRpbmcgdGhhdCB1bmluaXRpYWxpemVkIG1lbW9yeS4gU28sIHRoaXMgZml4IHRhcmdldHMgdGhlIGFsbG9jYXRpb24gaW5zaWRlIGBicl9tcnBfYWxsb2NfdGVzdF9za2JgLCBhcyBleHBlY3RlZC5cblxuSSBoYXZlIHRvIG1ha2Ugc3VyZSB0aGUgQ09ORklHIHNldHRpbmdzIGFyZSB3aGF0IEkgZXhwZWN0LiBJIG5lZWQgdG8gZG91YmxlLWNoZWNrIHRoYXQgYEJSSURHRV9NUlBgIGlzIHRoZSBjb3JyZWN0IHNldHRpbmcuIEkgYWxzbyBuZWVkIHRvIGJlIGNlcnRhaW4gdGhhdCBgQlJJREdFYCBpcyBhbHNvIGVuYWJsZWQuIEkgc2hvdWxkIHByb2JhYmx5IHJlLWV4YW1pbmUgYG5ldC9icmlkZ2UvS2NvbmZpZ2AgdG8gYmUgY2VydGFpbi5cblxuXG4iLCJJbnB1dFRva2VucyI6MTEwOTcsIk91dHB1dFRva2VucyI6MjgsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyNzEsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjZUMjI6NDA6NTQuMDA1MjA1OTg2WiIsIlNlcSI6MjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1ODk4ODQ2OSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgQlJJREdFXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9icmlkZ2UvS2NvbmZpZ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvYnJpZGdlL0tjb25maWctNS1cXG5uZXQvYnJpZGdlL0tjb25maWc6Njpjb25maWcgQlJJREdFXFxubmV0L2JyaWRnZS9LY29uZmlnLTctXFx0dHJpc3RhdGUgXFxcIjgwMi4xZCBFdGhlcm5ldCBCcmlkZ2luZ1xcXCJcXG4tLVxcbm5ldC9icmlkZ2UvS2NvbmZpZy0zNS1cXG5uZXQvYnJpZGdlL0tjb25maWc6MzY6Y29uZmlnIEJSSURHRV9JR01QX1NOT09QSU5HXFxubmV0L2JyaWRnZS9LY29uZmlnLTM3LVxcdGJvb2wgXFxcIklHTVAvTUxEIHNub29waW5nXFxcIlxcbi0tXFxubmV0L2JyaWRnZS9LY29uZmlnLTQ5LVxcbm5ldC9icmlkZ2UvS2NvbmZpZzo1MDpjb25maWcgQlJJREdFX1ZMQU5fRklMVEVSSU5HXFxubmV0L2JyaWRnZS9LY29uZmlnLTUxLVxcdGJvb2wgXFxcIlZMQU4gZmlsdGVyaW5nXFxcIlxcbi0tXFxubmV0L2JyaWRnZS9LY29uZmlnLTYzLVxcbm5ldC9icmlkZ2UvS2NvbmZpZzo2NDpjb25maWcgQlJJREdFX01SUFxcbm5ldC9icmlkZ2UvS2NvbmZpZy02NS1cXHRib29sIFxcXCJNUlAgcHJvdG9jb2xcXFwiXFxuLS1cXG5uZXQvYnJpZGdlL0tjb25maWctNzUtXFxubmV0L2JyaWRnZS9LY29uZmlnOjc2OmNvbmZpZyBCUklER0VfQ0ZNXFxubmV0L2JyaWRnZS9LY29uZmlnLTc3LVxcdGJvb2wgXFxcIkNGTSBwcm90b2NvbFxcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjZUMjI6NDA6NTQuMDY0MjAwMjM1WiIsIlNlcSI6MjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMwODM2MjI3MTIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgYW4gZXhwZXJ0J3MgaW50ZXJuYWwgbW9ub2xvZ3VlOlxuXG4qKkRlZXAgRGl2ZSBpbnRvIENvbmZpZ3VyYXRpb24gYW5kIENvZGUgVXNhZ2UqKlxuXG5SaWdodCwgc28gSSdtIGZvY3VzaW5nIG9uIHRoZSBjb25maWd1cmF0aW9uIGhlcmUuIGBCUklER0VgIGFuZCBgQlJJREdFX01SUGAgYXJlIHRoZSBjcml0aWNhbCBjb25maWcgb3B0aW9ucywgdGhhdCdzIGNsZWFyLiBOb3csIGJlZm9yZSBJIG1vdmUgb24sIEkgd2FudCB0byBjb25maXJtIHNvbWV0aGluZyBpbiBteSBtaW5kLiBUaGUgYGJyX21ycF9hbGxvY190ZXN0X3NrYmAgZnVuY3Rpb24uLi4gSSBuZWVkIHRvIHF1aWNrbHkgdmVyaWZ5IHRoYXQgaXQncyBvbmx5IHVzZWQgd2hlcmUgSSAqZXhwZWN0KiBpdCB0byBiZS4gQW55IHVuZXhwZWN0ZWQgY2FsbHMgdG8gaXQgY291bGQgaW5kaWNhdGUgc29tZXRoaW5nIEkgbmVlZCB0byBpbnZlc3RpZ2F0ZSBmdXJ0aGVyLiBBIHF1aWNrIHNlYXJjaCBzaG91bGQgZ2l2ZSBtZSB0aGUgYXNzdXJhbmNlIEkgbmVlZCB0aGF0IGV2ZXJ5dGhpbmcncyBiZWhhdmluZyBhcyBpbnRlbmRlZCBpbiB0aGlzIGFyZWEuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjEyMDI3LCJPdXRwdXRUb2tlbnMiOjQxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzksIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjZUMjI6NDA6NTcuMTQ3ODI1MjY3WiIsIlNlcSI6MzAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo2MDcwNTcxOCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJicl9tcnBfYWxsb2NfdGVzdF9za2JcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L2JyaWRnZS9icl9tcnAuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvYnJpZGdlL2JyX21ycC5jPTE3MT1zdGF0aWMgdm9pZCBicl9tcnBfc2tiX2NvbW1vbihzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgYnJfbXJwICptcnApXFxuLS1cXG5uZXQvYnJpZGdlL2JyX21ycC5jLTE4MS1cXG5uZXQvYnJpZGdlL2JyX21ycC5jOjE4MjpzdGF0aWMgc3RydWN0IHNrX2J1ZmYgKmJyX21ycF9hbGxvY190ZXN0X3NrYihzdHJ1Y3QgYnJfbXJwICptcnAsXFxubmV0L2JyaWRnZS9icl9tcnAuYy0xODMtXFx0XFx0XFx0XFx0XFx0ICAgICBzdHJ1Y3QgbmV0X2JyaWRnZV9wb3J0ICpwLFxcbi0tXFxubmV0L2JyaWRnZS9icl9tcnAuYz0yODA9c3RhdGljIHZvaWQgYnJfbXJwX3Rlc3Rfd29ya19leHBpcmVkKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaylcXG4tLVxcbm5ldC9icmlkZ2UvYnJfbXJwLmMtMzEyLVxcdFxcdGlmICghbXJwLVxcdTAwM2V0ZXN0X21vbml0b3IpIHtcXG5uZXQvYnJpZGdlL2JyX21ycC5jOjMxMzpcXHRcXHRcXHRza2IgPSBicl9tcnBfYWxsb2NfdGVzdF9za2IobXJwLCBwLFxcbm5ldC9icmlkZ2UvYnJfbXJwLmMtMzE0LVxcdFxcdFxcdFxcdFxcdFxcdCAgICBCUl9NUlBfUE9SVF9ST0xFX1BSSU1BUlkpO1xcbi0tXFxubmV0L2JyaWRnZS9icl9tcnAuYy0zMjgtXFx0XFx0aWYgKCFtcnAtXFx1MDAzZXRlc3RfbW9uaXRvcikge1xcbm5ldC9icmlkZ2UvYnJfbXJwLmM6MzI5OlxcdFxcdFxcdHNrYiA9IGJyX21ycF9hbGxvY190ZXN0X3NrYihtcnAsIHAsXFxubmV0L2JyaWRnZS9icl9tcnAuYy0zMzAtXFx0XFx0XFx0XFx0XFx0XFx0ICAgIEJSX01SUF9QT1JUX1JPTEVfU0VDT05EQVJZKTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjZUMjI6NDA6NTcuMjA4NTM2OTU1WiIsIlNlcSI6MzEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjU0MzczMTI5MjUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQW5hbHlzaXMgb2YgdGhlIGBicl9tcnBfdGVzdF93b3JrX2V4cGlyZWRgIFZ1bG5lcmFiaWxpdHkgRml4KipcblxuT2theSwgc28gdGhpcyBwYXRjaCBpcyBzcGVjaWZpY2FsbHkgYWRkcmVzc2luZyBhbiBpc3N1ZSB3aXRoaW4gYGJyX21ycF90ZXN0X3dvcmtfZXhwaXJlZGAuIE15IGltbWVkaWF0ZSB0aG91Z2h0IGlzIHRvIHZlcmlmeSB3aGV0aGVyIHRoaXMgZnVuY3Rpb24gaXMgdGhlIHNvbGUgc2NoZWR1bGVyIGZvciBgdGVzdF93b3JrYC4gQSBxdWljayBsb29rIHJldmVhbHMgdGhhdCBpdCAqZG9lcyogcmVzY2hlZHVsZSBpdHNlbGYgdXNpbmcgYHF1ZXVlX2RlbGF5ZWRfd29ya2AsIGFuZCBpdCdzIGluaXRpYWxseSBzY2hlZHVsZWQgYnkgYGJyX21ycF9zdGFydF90ZXN0YC5cblxuVGhlcmVmb3JlLCB0aGUgY3JpdGljYWwgZnVuY3Rpb25zIHRvIGZvY3VzIG9uIGFyZSBgYnJfbXJwX3N0YXJ0X3Rlc3RgIGFuZCwgc2luY2Ugd2UncmUgZGVhbGluZyB3aXRoIG5ldGxpbmsgY29uZmlndXJhdGlvbiwgSSdsbCBhZGQgYGJyX21ycF9wYXJzZWAgdG8gdGhhdCBsaXN0LiBUaGF0IGxpa2VseSBoYW5kbGVzIHRoZSBpbml0aWFsIHRyaWdnZXIuXG5cbk5vdywgbGV0J3MgYXNzZW1ibGUgdGhlIGtleSBmaW5kaW5ncy4gVGhpcyBsb29rcyBsaWtlIGEgcHJpbWUgdGFyZ2V0IGZvciBmdXp6aW5nLiBUaGUgcGF0Y2ggY29ycmVjdHMgYW4gdW5pbml0aWFsaXplZCBtZW1vcnkgaXNzdWUgaW4gYGJyX21ycF9hbGxvY190ZXN0X3NrYmAsIHdoaWNoIGlzIGNhbGxlZCB3aXRoaW4gYGJyX21ycF90ZXN0X3dvcmtfZXhwaXJlZGAuIFRoZSB3b3JrZXIgaXRzZWxmIGlzIHNjaGVkdWxlZCBieSBgYnJfbXJwX3N0YXJ0X3Rlc3RgLCB3aGljaCBpcyByZWFjaGVkIHRocm91Z2ggYSBuZXRsaW5rIGNvbmZpZ3VyYXRpb24sIGhlbmNlIHRoZSBpbmNsdXNpb24gb2YgYGJyX21ycF9wYXJzZWAuIEdpdmVuIHRoYXQgdGhlIHZ1bG5lcmFiaWxpdHkgZXhpc3RzIHdpdGhpbiB0aGUgd29ya2VyIGZ1bmN0aW9uLCBJJ2Qgc2F5IHRoaXMgaXMgYSB3b3J0aHdoaWxlIGZ1enppbmcgdGFyZ2V0LlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMjYyOSwiT3V0cHV0VG9rZW5zIjoxMjgsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyNjMsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjZUMjI6NDE6MDIuNjQ1ODUyMThaIiwiU2VxIjozMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo4Mjg1NDQxOCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiQlJJREdFXCIsXG4gICAgXCJCUklER0VfTVJQXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiYnJfbXJwX3N0YXJ0X3Rlc3RcIixcbiAgICBcImJyX21ycF9wYXJzZVwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGZpeGVzIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IGluIGBicl9tcnBfYWxsb2NfdGVzdF9za2JgIHdoaWNoIGlzIGNhbGxlZCBieSB0aGUgYGJyX21ycF90ZXN0X3dvcmtfZXhwaXJlZGAgd29ya2VyLiBUaGUgd29ya2VyIGlzIHNjaGVkdWxlZCBieSBgYnJfbXJwX3N0YXJ0X3Rlc3RgIHdoaWNoIGlzIHJlYWNoYWJsZSB2aWEgbmV0bGluayBjb25maWd1cmF0aW9uIChgYnJfbXJwX3BhcnNlYCkuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiQlJJREdFXCIsXG4gICAgXCJCUklER0VfTVJQXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiYnJfbXJwX3N0YXJ0X3Rlc3RcIixcbiAgICBcImJyX21ycF9wYXJzZVwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGZpeGVzIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IGluIGBicl9tcnBfYWxsb2NfdGVzdF9za2JgIHdoaWNoIGlzIGNhbGxlZCBieSB0aGUgYGJyX21ycF90ZXN0X3dvcmtfZXhwaXJlZGAgd29ya2VyLiBUaGUgd29ya2VyIGlzIHNjaGVkdWxlZCBieSBgYnJfbXJwX3N0YXJ0X3Rlc3RgIHdoaWNoIGlzIHJlYWNoYWJsZSB2aWEgbmV0bGluayBjb25maWd1cmF0aW9uIChgYnJfbXJwX3BhcnNlYCkuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/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-workflowvnr7z[1] Phase: Succeeded StartedAt: 2026-07-26 22:41:14 +0000 UTC FinishedAt: 2026-07-26 22:41:14 +0000 UTC Input: nil Output: nil --------- Name: series-workflowvnr7z[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-07-26 22:41:14 +0000 UTC FinishedAt: 2026-07-26 22:41:14 +0000 UTC Input: nil Output: nil --------- Name: series-workflowvnr7z[2] Phase: Succeeded StartedAt: 2026-07-26 22:41:14 +0000 UTC FinishedAt: 2026-07-27 03:14:15 +0000 UTC Input: nil Output: nil --------- Name: series-workflowvnr7z[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"53658c6f3682967a5e76ed4bc7462c4bdcddaec3","config_name":"upstream-apparmor-kasan.config","enable_configs":["BRIDGE","BRIDGE_MRP"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["br_mrp_start_test","br_mrp_parse"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"53658c6f3682967a5e76ed4bc7462c4bdcddaec3","config_name":"upstream-apparmor-kasan.config","enable_configs":["BRIDGE","BRIDGE_MRP"],"series_id":"d9dd3ef0-7ee2-4289-bab3-f9268a6de3d0","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN) Phase: Succeeded StartedAt: 2026-07-26 22:41:14 +0000 UTC FinishedAt: 2026-07-27 03:14:15 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"53658c6f3682967a5e76ed4bc7462c4bdcddaec3","config_name":"upstream-apparmor-kasan.config","enable_configs":["BRIDGE","BRIDGE_MRP"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},"fuzz":{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["br_mrp_start_test","br_mrp_parse"],"skip_cover_check":false},"patched":{"arch":"amd64","commit_hash":"53658c6f3682967a5e76ed4bc7462c4bdcddaec3","config_name":"upstream-apparmor-kasan.config","enable_configs":["BRIDGE","BRIDGE_MRP"],"series_id":"d9dd3ef0-7ee2-4289-bab3-f9268a6de3d0","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},"retest":null,"track":"KASAN"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: nil --------- Name: series-workflowvnr7z[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"53658c6f3682967a5e76ed4bc7462c4bdcddaec3","config_name":"upstream-apparmor-kasan.config","enable_configs":["BRIDGE","BRIDGE_MRP"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["br_mrp_start_test","br_mrp_parse"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"53658c6f3682967a5e76ed4bc7462c4bdcddaec3","config_name":"upstream-apparmor-kasan.config","enable_configs":["BRIDGE","BRIDGE_MRP"],"series_id":"d9dd3ef0-7ee2-4289-bab3-f9268a6de3d0","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[0] Phase: Succeeded StartedAt: 2026-07-26 22:41:14 +0000 UTC FinishedAt: 2026-07-26 22:41:24 +0000 UTC Input: nil Output: nil --------- Name: series-workflowvnr7z[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"53658c6f3682967a5e76ed4bc7462c4bdcddaec3","config_name":"upstream-apparmor-kasan.config","enable_configs":["BRIDGE","BRIDGE_MRP"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["br_mrp_start_test","br_mrp_parse"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"53658c6f3682967a5e76ed4bc7462c4bdcddaec3","config_name":"upstream-apparmor-kasan.config","enable_configs":["BRIDGE","BRIDGE_MRP"],"series_id":"d9dd3ef0-7ee2-4289-bab3-f9268a6de3d0","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[0].save-base-req Phase: Succeeded StartedAt: 2026-07-26 22:41:14 +0000 UTC FinishedAt: 2026-07-26 22:41:20 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"53658c6f3682967a5e76ed4bc7462c4bdcddaec3","config_name":"upstream-apparmor-kasan.config","enable_configs":["BRIDGE","BRIDGE_MRP"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.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-workflowvnr7z/series-workflowvnr7z-convert-artifact-3552979539/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowvnr7z[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"53658c6f3682967a5e76ed4bc7462c4bdcddaec3","config_name":"upstream-apparmor-kasan.config","enable_configs":["BRIDGE","BRIDGE_MRP"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["br_mrp_start_test","br_mrp_parse"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"53658c6f3682967a5e76ed4bc7462c4bdcddaec3","config_name":"upstream-apparmor-kasan.config","enable_configs":["BRIDGE","BRIDGE_MRP"],"series_id":"d9dd3ef0-7ee2-4289-bab3-f9268a6de3d0","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[1] Phase: Succeeded StartedAt: 2026-07-26 22:41:24 +0000 UTC FinishedAt: 2026-07-26 23:26:58 +0000 UTC Input: nil Output: nil --------- Name: series-workflowvnr7z[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"53658c6f3682967a5e76ed4bc7462c4bdcddaec3","config_name":"upstream-apparmor-kasan.config","enable_configs":["BRIDGE","BRIDGE_MRP"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["br_mrp_start_test","br_mrp_parse"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"53658c6f3682967a5e76ed4bc7462c4bdcddaec3","config_name":"upstream-apparmor-kasan.config","enable_configs":["BRIDGE","BRIDGE_MRP"],"series_id":"d9dd3ef0-7ee2-4289-bab3-f9268a6de3d0","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[1].base-build Phase: Succeeded StartedAt: 2026-07-26 22:41:24 +0000 UTC FinishedAt: 2026-07-26 23:26:58 +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:*0fe31bcb-bc5e-4911-ade1-1bbb3077f5be,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-workflowvnr7z/series-workflowvnr7z-convert-artifact-3552979539/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": "36756b59-9ecb-495e-94bd-0ddb583cd063", "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-workflowvnr7z/series-workflowvnr7z-build-action-2746576257/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowvnr7z[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"53658c6f3682967a5e76ed4bc7462c4bdcddaec3","config_name":"upstream-apparmor-kasan.config","enable_configs":["BRIDGE","BRIDGE_MRP"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["br_mrp_start_test","br_mrp_parse"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"53658c6f3682967a5e76ed4bc7462c4bdcddaec3","config_name":"upstream-apparmor-kasan.config","enable_configs":["BRIDGE","BRIDGE_MRP"],"series_id":"d9dd3ef0-7ee2-4289-bab3-f9268a6de3d0","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[1].base-build(0) Phase: Succeeded StartedAt: 2026-07-26 22:41:24 +0000 UTC FinishedAt: 2026-07-26 23:26:48 +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:*0fe31bcb-bc5e-4911-ade1-1bbb3077f5be,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-workflowvnr7z/series-workflowvnr7z-convert-artifact-3552979539/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": "36756b59-9ecb-495e-94bd-0ddb583cd063", "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-workflowvnr7z/series-workflowvnr7z-build-action-2746576257/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowvnr7z[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"53658c6f3682967a5e76ed4bc7462c4bdcddaec3","config_name":"upstream-apparmor-kasan.config","enable_configs":["BRIDGE","BRIDGE_MRP"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["br_mrp_start_test","br_mrp_parse"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"53658c6f3682967a5e76ed4bc7462c4bdcddaec3","config_name":"upstream-apparmor-kasan.config","enable_configs":["BRIDGE","BRIDGE_MRP"],"series_id":"d9dd3ef0-7ee2-4289-bab3-f9268a6de3d0","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[2] Phase: Succeeded StartedAt: 2026-07-26 23:26:58 +0000 UTC FinishedAt: 2026-07-26 23:26:58 +0000 UTC Input: nil Output: nil --------- Name: series-workflowvnr7z[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"53658c6f3682967a5e76ed4bc7462c4bdcddaec3","config_name":"upstream-apparmor-kasan.config","enable_configs":["BRIDGE","BRIDGE_MRP"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["br_mrp_start_test","br_mrp_parse"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"53658c6f3682967a5e76ed4bc7462c4bdcddaec3","config_name":"upstream-apparmor-kasan.config","enable_configs":["BRIDGE","BRIDGE_MRP"],"series_id":"d9dd3ef0-7ee2-4289-bab3-f9268a6de3d0","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[2].abort-if-base-build-failed Phase: Skipped StartedAt: 2026-07-26 23:26:58 +0000 UTC FinishedAt: 2026-07-26 23:26:58 +0000 UTC Input: nil Output: nil --------- Name: series-workflowvnr7z[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"53658c6f3682967a5e76ed4bc7462c4bdcddaec3","config_name":"upstream-apparmor-kasan.config","enable_configs":["BRIDGE","BRIDGE_MRP"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["br_mrp_start_test","br_mrp_parse"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"53658c6f3682967a5e76ed4bc7462c4bdcddaec3","config_name":"upstream-apparmor-kasan.config","enable_configs":["BRIDGE","BRIDGE_MRP"],"series_id":"d9dd3ef0-7ee2-4289-bab3-f9268a6de3d0","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[3] Phase: Succeeded StartedAt: 2026-07-26 23:26:58 +0000 UTC FinishedAt: 2026-07-26 23:27:08 +0000 UTC Input: nil Output: nil --------- Name: series-workflowvnr7z[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"53658c6f3682967a5e76ed4bc7462c4bdcddaec3","config_name":"upstream-apparmor-kasan.config","enable_configs":["BRIDGE","BRIDGE_MRP"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["br_mrp_start_test","br_mrp_parse"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"53658c6f3682967a5e76ed4bc7462c4bdcddaec3","config_name":"upstream-apparmor-kasan.config","enable_configs":["BRIDGE","BRIDGE_MRP"],"series_id":"d9dd3ef0-7ee2-4289-bab3-f9268a6de3d0","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[3].save-patched-req Phase: Succeeded StartedAt: 2026-07-26 23:26:58 +0000 UTC FinishedAt: 2026-07-26 23:27:05 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"53658c6f3682967a5e76ed4bc7462c4bdcddaec3","config_name":"upstream-apparmor-kasan.config","enable_configs":["BRIDGE","BRIDGE_MRP"],"series_id":"d9dd3ef0-7ee2-4289-bab3-f9268a6de3d0","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.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-workflowvnr7z/series-workflowvnr7z-convert-artifact-3521079882/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowvnr7z[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"53658c6f3682967a5e76ed4bc7462c4bdcddaec3","config_name":"upstream-apparmor-kasan.config","enable_configs":["BRIDGE","BRIDGE_MRP"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["br_mrp_start_test","br_mrp_parse"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"53658c6f3682967a5e76ed4bc7462c4bdcddaec3","config_name":"upstream-apparmor-kasan.config","enable_configs":["BRIDGE","BRIDGE_MRP"],"series_id":"d9dd3ef0-7ee2-4289-bab3-f9268a6de3d0","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[4] Phase: Succeeded StartedAt: 2026-07-26 23:27:08 +0000 UTC FinishedAt: 2026-07-26 23:29:30 +0000 UTC Input: nil Output: nil --------- Name: series-workflowvnr7z[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"53658c6f3682967a5e76ed4bc7462c4bdcddaec3","config_name":"upstream-apparmor-kasan.config","enable_configs":["BRIDGE","BRIDGE_MRP"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["br_mrp_start_test","br_mrp_parse"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"53658c6f3682967a5e76ed4bc7462c4bdcddaec3","config_name":"upstream-apparmor-kasan.config","enable_configs":["BRIDGE","BRIDGE_MRP"],"series_id":"d9dd3ef0-7ee2-4289-bab3-f9268a6de3d0","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[4].boot-test-base Phase: Succeeded StartedAt: 2026-07-26 23:27:08 +0000 UTC FinishedAt: 2026-07-26 23:29:20 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*36756b59-9ecb-495e-94bd-0ddb583cd063,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-workflowvnr7z/series-workflowvnr7z-build-action-2746576257/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-workflowvnr7z[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"53658c6f3682967a5e76ed4bc7462c4bdcddaec3","config_name":"upstream-apparmor-kasan.config","enable_configs":["BRIDGE","BRIDGE_MRP"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["br_mrp_start_test","br_mrp_parse"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"53658c6f3682967a5e76ed4bc7462c4bdcddaec3","config_name":"upstream-apparmor-kasan.config","enable_configs":["BRIDGE","BRIDGE_MRP"],"series_id":"d9dd3ef0-7ee2-4289-bab3-f9268a6de3d0","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[5] Phase: Succeeded StartedAt: 2026-07-26 23:29:30 +0000 UTC FinishedAt: 2026-07-26 23:29:30 +0000 UTC Input: nil Output: nil --------- Name: series-workflowvnr7z[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"53658c6f3682967a5e76ed4bc7462c4bdcddaec3","config_name":"upstream-apparmor-kasan.config","enable_configs":["BRIDGE","BRIDGE_MRP"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["br_mrp_start_test","br_mrp_parse"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"53658c6f3682967a5e76ed4bc7462c4bdcddaec3","config_name":"upstream-apparmor-kasan.config","enable_configs":["BRIDGE","BRIDGE_MRP"],"series_id":"d9dd3ef0-7ee2-4289-bab3-f9268a6de3d0","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[5].abort-if-base-boot-failed Phase: Skipped StartedAt: 2026-07-26 23:29:30 +0000 UTC FinishedAt: 2026-07-26 23:29:30 +0000 UTC Input: nil Output: nil --------- Name: series-workflowvnr7z[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"53658c6f3682967a5e76ed4bc7462c4bdcddaec3","config_name":"upstream-apparmor-kasan.config","enable_configs":["BRIDGE","BRIDGE_MRP"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["br_mrp_start_test","br_mrp_parse"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"53658c6f3682967a5e76ed4bc7462c4bdcddaec3","config_name":"upstream-apparmor-kasan.config","enable_configs":["BRIDGE","BRIDGE_MRP"],"series_id":"d9dd3ef0-7ee2-4289-bab3-f9268a6de3d0","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[6] Phase: Succeeded StartedAt: 2026-07-26 23:29:30 +0000 UTC FinishedAt: 2026-07-27 00:09:39 +0000 UTC Input: nil Output: nil --------- Name: series-workflowvnr7z[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"53658c6f3682967a5e76ed4bc7462c4bdcddaec3","config_name":"upstream-apparmor-kasan.config","enable_configs":["BRIDGE","BRIDGE_MRP"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["br_mrp_start_test","br_mrp_parse"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"53658c6f3682967a5e76ed4bc7462c4bdcddaec3","config_name":"upstream-apparmor-kasan.config","enable_configs":["BRIDGE","BRIDGE_MRP"],"series_id":"d9dd3ef0-7ee2-4289-bab3-f9268a6de3d0","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[6].patched-build Phase: Succeeded StartedAt: 2026-07-26 23:29:30 +0000 UTC FinishedAt: 2026-07-27 00:09:39 +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:*0fe31bcb-bc5e-4911-ade1-1bbb3077f5be,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-workflowvnr7z/series-workflowvnr7z-convert-artifact-3521079882/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": "64fd9506-33a6-4f12-9cda-aeb48bcc236b", "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-workflowvnr7z/series-workflowvnr7z-build-action-53988974/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowvnr7z[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"53658c6f3682967a5e76ed4bc7462c4bdcddaec3","config_name":"upstream-apparmor-kasan.config","enable_configs":["BRIDGE","BRIDGE_MRP"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["br_mrp_start_test","br_mrp_parse"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"53658c6f3682967a5e76ed4bc7462c4bdcddaec3","config_name":"upstream-apparmor-kasan.config","enable_configs":["BRIDGE","BRIDGE_MRP"],"series_id":"d9dd3ef0-7ee2-4289-bab3-f9268a6de3d0","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[6].patched-build(0) Phase: Succeeded StartedAt: 2026-07-26 23:29:30 +0000 UTC FinishedAt: 2026-07-27 00:09:29 +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:*0fe31bcb-bc5e-4911-ade1-1bbb3077f5be,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-workflowvnr7z/series-workflowvnr7z-convert-artifact-3521079882/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": "64fd9506-33a6-4f12-9cda-aeb48bcc236b", "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-workflowvnr7z/series-workflowvnr7z-build-action-53988974/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowvnr7z[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"53658c6f3682967a5e76ed4bc7462c4bdcddaec3","config_name":"upstream-apparmor-kasan.config","enable_configs":["BRIDGE","BRIDGE_MRP"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["br_mrp_start_test","br_mrp_parse"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"53658c6f3682967a5e76ed4bc7462c4bdcddaec3","config_name":"upstream-apparmor-kasan.config","enable_configs":["BRIDGE","BRIDGE_MRP"],"series_id":"d9dd3ef0-7ee2-4289-bab3-f9268a6de3d0","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[7] Phase: Succeeded StartedAt: 2026-07-27 00:09:39 +0000 UTC FinishedAt: 2026-07-27 00:09:39 +0000 UTC Input: nil Output: nil --------- Name: series-workflowvnr7z[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"53658c6f3682967a5e76ed4bc7462c4bdcddaec3","config_name":"upstream-apparmor-kasan.config","enable_configs":["BRIDGE","BRIDGE_MRP"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["br_mrp_start_test","br_mrp_parse"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"53658c6f3682967a5e76ed4bc7462c4bdcddaec3","config_name":"upstream-apparmor-kasan.config","enable_configs":["BRIDGE","BRIDGE_MRP"],"series_id":"d9dd3ef0-7ee2-4289-bab3-f9268a6de3d0","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[7].abort-if-patched-build-failed Phase: Skipped StartedAt: 2026-07-27 00:09:39 +0000 UTC FinishedAt: 2026-07-27 00:09:39 +0000 UTC Input: nil Output: nil --------- Name: series-workflowvnr7z[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"53658c6f3682967a5e76ed4bc7462c4bdcddaec3","config_name":"upstream-apparmor-kasan.config","enable_configs":["BRIDGE","BRIDGE_MRP"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["br_mrp_start_test","br_mrp_parse"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"53658c6f3682967a5e76ed4bc7462c4bdcddaec3","config_name":"upstream-apparmor-kasan.config","enable_configs":["BRIDGE","BRIDGE_MRP"],"series_id":"d9dd3ef0-7ee2-4289-bab3-f9268a6de3d0","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[8] Phase: Succeeded StartedAt: 2026-07-27 00:09:39 +0000 UTC FinishedAt: 2026-07-27 00:11:44 +0000 UTC Input: nil Output: nil --------- Name: series-workflowvnr7z[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"53658c6f3682967a5e76ed4bc7462c4bdcddaec3","config_name":"upstream-apparmor-kasan.config","enable_configs":["BRIDGE","BRIDGE_MRP"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["br_mrp_start_test","br_mrp_parse"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"53658c6f3682967a5e76ed4bc7462c4bdcddaec3","config_name":"upstream-apparmor-kasan.config","enable_configs":["BRIDGE","BRIDGE_MRP"],"series_id":"d9dd3ef0-7ee2-4289-bab3-f9268a6de3d0","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[8].boot-test-patched Phase: Succeeded StartedAt: 2026-07-27 00:09:39 +0000 UTC FinishedAt: 2026-07-27 00:11:34 +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:*64fd9506-33a6-4f12-9cda-aeb48bcc236b,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-workflowvnr7z/series-workflowvnr7z-build-action-53988974/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-workflowvnr7z[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"53658c6f3682967a5e76ed4bc7462c4bdcddaec3","config_name":"upstream-apparmor-kasan.config","enable_configs":["BRIDGE","BRIDGE_MRP"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["br_mrp_start_test","br_mrp_parse"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"53658c6f3682967a5e76ed4bc7462c4bdcddaec3","config_name":"upstream-apparmor-kasan.config","enable_configs":["BRIDGE","BRIDGE_MRP"],"series_id":"d9dd3ef0-7ee2-4289-bab3-f9268a6de3d0","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10] Phase: Succeeded StartedAt: 2026-07-27 00:11:44 +0000 UTC FinishedAt: 2026-07-27 03:14:15 +0000 UTC Input: nil Output: nil --------- Name: series-workflowvnr7z[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"53658c6f3682967a5e76ed4bc7462c4bdcddaec3","config_name":"upstream-apparmor-kasan.config","enable_configs":["BRIDGE","BRIDGE_MRP"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["br_mrp_start_test","br_mrp_parse"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"53658c6f3682967a5e76ed4bc7462c4bdcddaec3","config_name":"upstream-apparmor-kasan.config","enable_configs":["BRIDGE","BRIDGE_MRP"],"series_id":"d9dd3ef0-7ee2-4289-bab3-f9268a6de3d0","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10].run-fuzz Phase: Succeeded StartedAt: 2026-07-27 00:11:44 +0000 UTC FinishedAt: 2026-07-27 03:14:15 +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":["br_mrp_start_test","br_mrp_parse"],"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:*36756b59-9ecb-495e-94bd-0ddb583cd063,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*64fd9506-33a6-4f12-9cda-aeb48bcc236b,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-workflowvnr7z/series-workflowvnr7z-build-action-2746576257/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-workflowvnr7z/series-workflowvnr7z-build-action-53988974/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflowvnr7z[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"53658c6f3682967a5e76ed4bc7462c4bdcddaec3","config_name":"upstream-apparmor-kasan.config","enable_configs":["BRIDGE","BRIDGE_MRP"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["br_mrp_start_test","br_mrp_parse"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"53658c6f3682967a5e76ed4bc7462c4bdcddaec3","config_name":"upstream-apparmor-kasan.config","enable_configs":["BRIDGE","BRIDGE_MRP"],"series_id":"d9dd3ef0-7ee2-4289-bab3-f9268a6de3d0","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10].run-fuzz[0] Phase: Succeeded StartedAt: 2026-07-27 00:11:44 +0000 UTC FinishedAt: 2026-07-27 00:11:54 +0000 UTC Input: nil Output: nil --------- Name: series-workflowvnr7z[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"53658c6f3682967a5e76ed4bc7462c4bdcddaec3","config_name":"upstream-apparmor-kasan.config","enable_configs":["BRIDGE","BRIDGE_MRP"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["br_mrp_start_test","br_mrp_parse"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"53658c6f3682967a5e76ed4bc7462c4bdcddaec3","config_name":"upstream-apparmor-kasan.config","enable_configs":["BRIDGE","BRIDGE_MRP"],"series_id":"d9dd3ef0-7ee2-4289-bab3-f9268a6de3d0","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10].run-fuzz[0].save-fuzz-config Phase: Succeeded StartedAt: 2026-07-27 00:11:44 +0000 UTC FinishedAt: 2026-07-27 00:11:49 +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":["br_mrp_start_test","br_mrp_parse"],"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-workflowvnr7z/series-workflowvnr7z-convert-artifact-2522913247/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowvnr7z[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"53658c6f3682967a5e76ed4bc7462c4bdcddaec3","config_name":"upstream-apparmor-kasan.config","enable_configs":["BRIDGE","BRIDGE_MRP"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["br_mrp_start_test","br_mrp_parse"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"53658c6f3682967a5e76ed4bc7462c4bdcddaec3","config_name":"upstream-apparmor-kasan.config","enable_configs":["BRIDGE","BRIDGE_MRP"],"series_id":"d9dd3ef0-7ee2-4289-bab3-f9268a6de3d0","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10].run-retest Phase: Skipped StartedAt: 2026-07-27 00:11:44 +0000 UTC FinishedAt: 2026-07-27 00:11:44 +0000 UTC Input: nil Output: nil --------- Name: series-workflowvnr7z[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"53658c6f3682967a5e76ed4bc7462c4bdcddaec3","config_name":"upstream-apparmor-kasan.config","enable_configs":["BRIDGE","BRIDGE_MRP"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["br_mrp_start_test","br_mrp_parse"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"53658c6f3682967a5e76ed4bc7462c4bdcddaec3","config_name":"upstream-apparmor-kasan.config","enable_configs":["BRIDGE","BRIDGE_MRP"],"series_id":"d9dd3ef0-7ee2-4289-bab3-f9268a6de3d0","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[9] Phase: Succeeded StartedAt: 2026-07-27 00:11:44 +0000 UTC FinishedAt: 2026-07-27 00:11:44 +0000 UTC Input: nil Output: nil --------- Name: series-workflowvnr7z[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"53658c6f3682967a5e76ed4bc7462c4bdcddaec3","config_name":"upstream-apparmor-kasan.config","enable_configs":["BRIDGE","BRIDGE_MRP"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["br_mrp_start_test","br_mrp_parse"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"53658c6f3682967a5e76ed4bc7462c4bdcddaec3","config_name":"upstream-apparmor-kasan.config","enable_configs":["BRIDGE","BRIDGE_MRP"],"series_id":"d9dd3ef0-7ee2-4289-bab3-f9268a6de3d0","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[9].abort-if-patched-boot-failed Phase: Skipped StartedAt: 2026-07-27 00:11:44 +0000 UTC FinishedAt: 2026-07-27 00:11:44 +0000 UTC Input: nil Output: nil --------- Name: series-workflowvnr7z[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"53658c6f3682967a5e76ed4bc7462c4bdcddaec3","config_name":"upstream-apparmor-kasan.config","enable_configs":["BRIDGE","BRIDGE_MRP"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["br_mrp_start_test","br_mrp_parse"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"53658c6f3682967a5e76ed4bc7462c4bdcddaec3","config_name":"upstream-apparmor-kasan.config","enable_configs":["BRIDGE","BRIDGE_MRP"],"series_id":"d9dd3ef0-7ee2-4289-bab3-f9268a6de3d0","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10].run-fuzz[1] Phase: Succeeded StartedAt: 2026-07-27 00:11:54 +0000 UTC FinishedAt: 2026-07-27 03:14:15 +0000 UTC Input: nil Output: nil --------- Name: series-workflowvnr7z[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"53658c6f3682967a5e76ed4bc7462c4bdcddaec3","config_name":"upstream-apparmor-kasan.config","enable_configs":["BRIDGE","BRIDGE_MRP"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["br_mrp_start_test","br_mrp_parse"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"53658c6f3682967a5e76ed4bc7462c4bdcddaec3","config_name":"upstream-apparmor-kasan.config","enable_configs":["BRIDGE","BRIDGE_MRP"],"series_id":"d9dd3ef0-7ee2-4289-bab3-f9268a6de3d0","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10].run-fuzz[1].fuzz Phase: Succeeded StartedAt: 2026-07-27 00:11:54 +0000 UTC FinishedAt: 2026-07-27 03:14:05 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*36756b59-9ecb-495e-94bd-0ddb583cd063,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*64fd9506-33a6-4f12-9cda-aeb48bcc236b,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-workflowvnr7z/series-workflowvnr7z-build-action-2746576257/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-workflowvnr7z/series-workflowvnr7z-build-action-53988974/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-workflowvnr7z/series-workflowvnr7z-convert-artifact-2522913247/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,}