Name: series-workflowxt9qt Phase: Succeeded StartedAt: 2026-08-18 07:48:52 +0000 UTC FinishedAt: 2026-08-18 09:32:52 +0000 UTC Input: nil Output: nil --------- Name: series-workflowxt9qt[0] Phase: Succeeded StartedAt: 2026-08-18 07:48:52 +0000 UTC FinishedAt: 2026-08-18 07:51:52 +0000 UTC Input: nil Output: nil --------- Name: series-workflowxt9qt[0].run-triage Phase: Succeeded StartedAt: 2026-08-18 07:48:52 +0000 UTC FinishedAt: 2026-08-18 07:51:52 +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": "24ef02f934eeb48830cff6b739abc3c62b1d107b", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "SMC", "INFINIBAND", "DIBS", "DIBS_LO" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "net", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git", "commit_hash": "24ef02f934eeb48830cff6b739abc3c62b1d107b", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "SMC", "INFINIBAND", "DIBS", "DIBS_LO" ], "series_id": "3fe04b91-b516-4048-84ba-c8b3f2bb7af5" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "smc_llc_srv_add_link", "smc_llc_cli_add_link", "smc_llc_add_link_local" ], "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+CgkJCTx0ZD4yMDI2LzA4LzE4IDA3OjUwPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1NNQyYjMzQ7LAogICAgJiMzNDtJTkZJTklCQU5EJiMzNDssCiAgICAmIzM0O0RJQlMmIzM0OywKICAgICYjMzQ7RElCU19MTyYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O3NtY19sbGNfc3J2X2FkZF9saW5rJiMzNDssCiAgICAmIzM0O3NtY19sbGNfY2xpX2FkZF9saW5rJiMzNDssCiAgICAmIzM0O3NtY19sbGNfYWRkX2xpbmtfbG9jYWwmIzM0OwogIF0sCiAgJiMzNDtLTVNBTlJlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmaXhlcyBhIG1lbW9yeSBsZWFrIGJ5IGZyZWVpbmcgYSBzdGFzaGVkIGBxZW50cnlgIGluIGBzbWNfbGxjX2V2ZW50X2hhbmRsZXJgIHdoZW4gdGhlIHNlcnZlciBzdGFydHMgYGFkZF9saW5rYCBwcm9jZXNzaW5nLiBJdCBkb2VzIG5vdCBpbnRyb2R1Y2Ugb3IgZXhwb3NlIGFueSB1bmluaXRpYWxpemVkIG1lbW9yeSByaXNrcyBvciBpbmZvLWxlYWtzLiBNZW1vcnkgbGVha3MgYW5kIHVzZS1hZnRlci1mcmVlIGJ1Z3MgYXJlIGVmZmVjdGl2ZWx5IGRldGVjdGVkIGJ5IEtNRU1MRUFLIGFuZCBLQVNBTi4gVGhlcmVmb3JlLCBhIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaXMgbm90IHJlcXVpcmVkLiYjMzQ7LAogICYjMzQ7TmVlZHNLTVNBTiYjMzQ7OiBmYWxzZSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmaXhlcyBhIG1lbW9yeSBsZWFrIGluIHRoZSBTTUMgTExDIGV2ZW50IGhhbmRsZXIgYnkgZXhwbGljaXRseSBmcmVlaW5nIHRoZSBzdGFzaGVkIHFlbnRyeSB3aGVuIHRyYW5zaXRpb25pbmcgZnJvbSB0aGUgUkVRX0FERF9MSU5LIHN0YXRlIHRvIHRoZSBBRERfTElOSyBzdGF0ZS4gVGhpcyBpcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMgZm9yIHRoZSBTTUMgcHJvdG9jb2wuIEZ1enppbmcgc2hvdWxkIGZvY3VzIG9uIHRoZSBhZGRfbGluayBmbG93IGluaXRpYXRpb24gYW5kIHByb2Nlc3NpbmcgZnVuY3Rpb25zLiBESUJTIGFuZCBESUJTX0xPIGFyZSByZXF1aXJlZCB0byBlbmFibGUgbG9jYWwgbG9vcGJhY2sgdGVzdGluZyBvZiBTTUMgb3ZlciBlbXVsYXRlZCBSRE1BLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE4IDA3OjUwPC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgNzVjOGExZTBjY2Q3YThlMjA1NGJkMzZhNzliMDljODU5ODAzM2Y4NVxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBUdWUgQXVnIDE4IDA3OjUwOjAwIDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL25ldC9zbWMvc21jX2xsYy5jIGIvbmV0L3NtYy9zbWNfbGxjLmNcbmluZGV4IGFhNmQ4M2FmNTVlZGEuLmM3ZjAyMjJhZmY4ZDAgMTAwNjQ0XG4tLS0gYS9uZXQvc21jL3NtY19sbGMuY1xuJiM0MzsmIzQzOyYjNDM7IGIvbmV0L3NtYy9zbWNfbGxjLmNcbkBAIC0xOTExLDYgJiM0MzsxOTExLDggQEAgc3RhdGljIHZvaWQgc21jX2xsY19ldmVudF9oYW5kbGVyKHN0cnVjdCBzbWNfbGxjX3FlbnRyeSAqcWVudHJ5KVxuIFx0XHRcdGlmIChsZ3ItXHUwMDNlbGxjX2Zsb3dfbGNsLnR5cGUgPT1cbiBcdFx0XHRcdFx0U01DX0xMQ19GTE9XX1JFUV9BRERfTElOSykge1xuIFx0XHRcdFx0Lyogc2VydmVyIHN0YXJ0ZWQgYWRkX2xpbmsgcHJvY2Vzc2luZyAqL1xuJiM0MztcdFx0XHRcdC8qIGZyZWUgYW55IHFlbnRyeSBzdGFzaGVkIGluIFJFUV9BRERfTElOSyBzdGF0ZSAqL1xuJiM0MztcdFx0XHRcdHNtY19sbGNfZmxvd19xZW50cnlfZGVsKFx1MDAyNmxnci1cdTAwM2VsbGNfZmxvd19sY2wpO1xuIFx0XHRcdFx0bGdyLVx1MDAzZWxsY19mbG93X2xjbC50eXBlID0gU01DX0xMQ19GTE9XX0FERF9MSU5LO1xuIFx0XHRcdFx0c21jX2xsY19mbG93X3FlbnRyeV9zZXQoXHUwMDI2bGdyLVx1MDAzZWxsY19mbG93X2xjbCxcbiBcdFx0XHRcdFx0XHRcdHFlbnRyeSk7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTggMDc6NTA8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+YmVzdC1leHBlbnNpdmU8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1NNQyYjMzQ7LAogICAgJiMzNDtJTkZJTklCQU5EJiMzNDssCiAgICAmIzM0O0RJQlMmIzM0OywKICAgICYjMzQ7RElCU19MTyYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O3NtY19sbGNfc3J2X2FkZF9saW5rJiMzNDssCiAgICAmIzM0O3NtY19sbGNfY2xpX2FkZF9saW5rJiMzNDssCiAgICAmIzM0O3NtY19sbGNfYWRkX2xpbmtfbG9jYWwmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggZml4ZXMgYSBtZW1vcnkgbGVhayBpbiB0aGUgU01DIExMQyBldmVudCBoYW5kbGVyIGJ5IGV4cGxpY2l0bHkgZnJlZWluZyB0aGUgc3Rhc2hlZCBxZW50cnkgd2hlbiB0cmFuc2l0aW9uaW5nIGZyb20gdGhlIFJFUV9BRERfTElOSyBzdGF0ZSB0byB0aGUgQUREX0xJTksgc3RhdGUuIFRoaXMgaXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljIGZvciB0aGUgU01DIHByb3RvY29sLiBGdXp6aW5nIHNob3VsZCBmb2N1cyBvbiB0aGUgYWRkX2xpbmsgZmxvdyBpbml0aWF0aW9uIGFuZCBwcm9jZXNzaW5nIGZ1bmN0aW9ucy4gRElCUyBhbmQgRElCU19MTyBhcmUgcmVxdWlyZWQgdG8gZW5hYmxlIGxvY2FsIGxvb3BiYWNrIHRlc3Rpbmcgb2YgU01DIG92ZXIgZW11bGF0ZWQgUkRNQS4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lCmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHkKdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy4KClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6Ci0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy4KLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy4KLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuCi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLAogIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCwKICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS4KLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKQogIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9ucwogICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS4KMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuCiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KICAgQWxzbyBjaGVjayAmIzM0O2RlcGVuZHMgb24mIzM0OyBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3MKICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzCiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IDc1YzhhMWUwY2NkN2E4ZTIwNTRiZDM2YTc5YjA5Yzg1OTgwMzNmODUKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgVHVlIEF1ZyAxOCAwNzo1MDowMCAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL25ldC9zbWMvc21jX2xsYy5jIGIvbmV0L3NtYy9zbWNfbGxjLmMKaW5kZXggYWE2ZDgzYWY1NWVkYS4uYzdmMDIyMmFmZjhkMCAxMDA2NDQKLS0tIGEvbmV0L3NtYy9zbWNfbGxjLmMKJiM0MzsmIzQzOyYjNDM7IGIvbmV0L3NtYy9zbWNfbGxjLmMKQEAgLTE5MTEsNiAmIzQzOzE5MTEsOCBAQCBzdGF0aWMgdm9pZCBzbWNfbGxjX2V2ZW50X2hhbmRsZXIoc3RydWN0IHNtY19sbGNfcWVudHJ5ICpxZW50cnkpCiAJCQlpZiAobGdyLSZndDtsbGNfZmxvd19sY2wudHlwZSA9PQogCQkJCQlTTUNfTExDX0ZMT1dfUkVRX0FERF9MSU5LKSB7CiAJCQkJLyogc2VydmVyIHN0YXJ0ZWQgYWRkX2xpbmsgcHJvY2Vzc2luZyAqLwomIzQzOwkJCQkvKiBmcmVlIGFueSBxZW50cnkgc3Rhc2hlZCBpbiBSRVFfQUREX0xJTksgc3RhdGUgKi8KJiM0MzsJCQkJc21jX2xsY19mbG93X3FlbnRyeV9kZWwoJmFtcDtsZ3ItJmd0O2xsY19mbG93X2xjbCk7CiAJCQkJbGdyLSZndDtsbGNfZmxvd19sY2wudHlwZSA9IFNNQ19MTENfRkxPV19BRERfTElOSzsKIAkJCQlzbWNfbGxjX2Zsb3dfcWVudHJ5X3NldCgmYW1wO2xnci0mZ3Q7bGxjX2Zsb3dfbGNsLAogCQkJCQkJCXFlbnRyeSk7CjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE4IDA3OjUwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIwNjYKCQkJCQkJCW91dHB1dDogNDEKCQkJCQkJCXRob3VnaHRzOiAxMTkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIGEgTmV0d29ya2luZyBQYXRjaCoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgYSBwYXRjaCBmb3IgdGhlIFNNQyAoU2hhcmVkIE1lbW9yeSBDb21tdW5pY2F0aW9ucykgb3ZlciBMTEMgKExpbmsgTGF5ZXIgQ29udHJvbCkgY29kZSwgc3BlY2lmaWNhbGx5IGluIGBuZXQvc21jL3NtY19sbGMuY2AuIFRoZSBjb3JlIGNoYW5nZSBzZWVtcyB0byBiZSB3aXRoaW4gdGhlIGBzbWNfbGxjX2V2ZW50X2hhbmRsZXJgIGZ1bmN0aW9uLiBUaGUgcGF0Y2ggc3RyYXRlZ2ljYWxseSBpbnNlcnRzIGBzbWNfbGxjX2Zsb3dfcWVudHJ5X2RlbCgmYW1wO2xnci0mZ3Q7bGxjX2Zsb3dfbGNsKTtgIHJpZ2h0IGJlZm9yZSB0aGUgYXNzaWdubWVudCBgbGdyLSZndDtsbGNfZmxvd19sY2wudHlwZSA9IFNNQ19MTENfRkxPV19BRERfTElOSztgLiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdG8gZmlndXJlIG91dCB0aGUgcmVhc29uaW5nIGJlaGluZCB0aGlzIGFkZGl0aW9uLiBJdCBtYWtlcyBtZSB3YW50IHRvIGRpdmUgaW50byB0aGUgY29kZS4KCkkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBpbXBsaWNhdGlvbnMgb2YgcmVtb3ZpbmcgYSBxdWV1ZSBlbnRyeSAoYHNtY19sbGNfZmxvd19xZW50cnlfZGVsYCkgYmVmb3JlIGNoYW5naW5nIHRoZSBgdHlwZWAgb2YgYGxsY19mbG93X2xjbGAgdG8gYFNNQ19MTENfRkxPV19BRERfTElOS2AuIElzIHRoaXMgYSBjbGVhbnVwIG9wZXJhdGlvbj8gUHJldmVudGluZyBhIHBvdGVudGlhbCBkb3VibGUtZnJlZSBzY2VuYXJpbz8gT3IgbWF5YmUgaXQmIzM5O3MgYSBjcml0aWNhbCBzdGVwIGluIHRyYW5zaXRpb25pbmcgYmV0d2VlbiBmbG93IHN0YXRlcz8gSSBzaG91bGQgcmVhbGx5IGNoZWNrIHRoZSBmdW5jdGlvbiBpdHNlbGYgYW5kIHN1cnJvdW5kaW5nIGNvZGUgZm9yIHBvdGVudGlhbCBzaWRlIGVmZmVjdHMsIGFuZCBleGFtaW5lIHRoZSBzdHJ1Y3R1cmUgYGxsY19mbG93X2xjbGAgYW5kIGBsZ3JgIGluIG9yZGVyIHRvIHNlZSB3aGF0IHRoZSBpbXBhY3Qgb2YgdGhpcyBjaGFuZ2UgaXMgb24gdGhlIG92ZXJhbGwgc3lzdGVtLCBzbyBsZXQgbWUgZ2V0IHN0YXJ0ZWQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTggMDc6NTA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7c21jX2xsY19ldmVudF9oYW5kbGVyJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L3NtYy9zbWNfbGxjLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L3NtYy9zbWNfbGxjLmM9MTg2Mz1zdGF0aWMgdm9pZCBzbWNfbGxjX2V2ZW50X2ZsdXNoKHN0cnVjdCBzbWNfbGlua19ncm91cCAqbGdyKVxuLS1cbm5ldC9zbWMvc21jX2xsYy5jLTE4NzQtXG5uZXQvc21jL3NtY19sbGMuYzoxODc1OnN0YXRpYyB2b2lkIHNtY19sbGNfZXZlbnRfaGFuZGxlcihzdHJ1Y3Qgc21jX2xsY19xZW50cnkgKnFlbnRyeSlcbm5ldC9zbWMvc21jX2xsYy5jLTE4NzYte1xuLS1cbm5ldC9zbWMvc21jX2xsYy5jPTE5OTc9c3RhdGljIHZvaWQgc21jX2xsY19ldmVudF93b3JrKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaylcbi0tXG5uZXQvc21jL3NtY19sbGMuYy0yMDA2LVx0XHRpZiAoc21jX2xpbmtfdXNhYmxlKHFlbnRyeS1cdTAwM2VsaW5rKSlcbm5ldC9zbWMvc21jX2xsYy5jOjIwMDc6XHRcdFx0c21jX2xsY19ldmVudF9oYW5kbGVyKHFlbnRyeSk7XG5uZXQvc21jL3NtY19sbGMuYy0yMDA4LVx0XHRlbHNlXG4tLVxubmV0L3NtYy9zbWNfbGxjLmMtMjAxOC1cdFx0c3Bpbl91bmxvY2tfYmgoXHUwMDI2bGdyLVx1MDAzZWxsY19ldmVudF9xX2xvY2spO1xubmV0L3NtYy9zbWNfbGxjLmM6MjAxOTpcdFx0c21jX2xsY19ldmVudF9oYW5kbGVyKHFlbnRyeSk7XG5uZXQvc21jL3NtY19sbGMuYy0yMDIwLVx0XHRnb3RvIGFnYWluO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE4IDA3OjUwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI4ODAKCQkJCQkJCW91dHB1dDogNDEKCQkJCQkJCXRob3VnaHRzOiA2OAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBhIHN1bW1hcnkgb2YgbXkgdGhvdWdodCBwcm9jZXNzOgoKKipEaXZpbmcgaW50byB0aGUgU01DIExMQyBFdmVudCBIYW5kbGluZyoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhlIGBzbWNfbGxjX2V2ZW50X2hhbmRsZXJgIGZ1bmN0aW9uLiBUaGUgY29kZSB0ZWxscyBtZSBpdCYjMzk7cyBhIHN0YXRpYyBmdW5jdGlvbiwgcmVzaWRpbmcgd2l0aGluIGBuZXQvc21jL3NtY19sbGMuY2AuIFRoYXQmIzM5O3MgaW1wb3J0YW50IGZvciBjb250ZXh0IC0gSSBuZWVkIHRvIGtub3cgd2hlcmUgSSYjMzk7bSBsb29raW5nLiBUaGUgbmV4dCB0aGluZyB0aGF0IGxlYXBzIG91dCBpcyB0aGF0IGl0IGFwcGVhcnMgdG8gYmUgY2FsbGVkIGZyb20gYHNtY19sbGNfZXZlbnRfd29ya2AuIE5hdHVyYWxseSwgbXkgbWluZCBpbW1lZGlhdGVseSBqdW1wcyB0byAmIzM0O1doYXQgKmlzKiBgc21jX2xsY19ldmVudF93b3JrYD8mIzM0OyBUaGF0JiMzOTtzIHRoZSBuZXh0IGxvZ2ljYWwgc3RlcDsgSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGNhbGxpbmcgZnVuY3Rpb24gdG8gdHJ1bHkgdW5kZXJzdGFuZCB0aGUgY2FsbGVkIGZ1bmN0aW9uIGFuZCB0aGUgb3ZlcmFsbCBmbG93IG9mIGV2ZW50cy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xOCAwNzo1MDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtzbWNfbGxjX2V2ZW50X3dvcmsmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvc21jL3NtY19sbGMuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvc21jL3NtY19sbGMuYz0xODc1PXN0YXRpYyB2b2lkIHNtY19sbGNfZXZlbnRfaGFuZGxlcihzdHJ1Y3Qgc21jX2xsY19xZW50cnkgKnFlbnRyeSlcbi0tXG5uZXQvc21jL3NtY19sbGMuYy0xOTk2LS8qIHdvcmtlciB0byBwcm9jZXNzIGxsYyBtZXNzYWdlcyBvbiB0aGUgZXZlbnQgcXVldWUgKi9cbm5ldC9zbWMvc21jX2xsYy5jOjE5OTc6c3RhdGljIHZvaWQgc21jX2xsY19ldmVudF93b3JrKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaylcbm5ldC9zbWMvc21jX2xsYy5jLTE5OTgte1xuLS1cbm5ldC9zbWMvc21jX2xsYy5jPTIxNDk9dm9pZCBzbWNfbGxjX2xncl9pbml0KHN0cnVjdCBzbWNfbGlua19ncm91cCAqbGdyLCBzdHJ1Y3Qgc21jX3NvY2sgKnNtYylcbi0tXG5uZXQvc21jL3NtY19sbGMuYy0yMTUyLVxubmV0L3NtYy9zbWNfbGxjLmM6MjE1MzpcdElOSVRfV09SSyhcdTAwMjZsZ3ItXHUwMDNlbGxjX2V2ZW50X3dvcmssIHNtY19sbGNfZXZlbnRfd29yayk7XG5uZXQvc21jL3NtY19sbGMuYy0yMTU0LVx0SU5JVF9XT1JLKFx1MDAyNmxnci1cdTAwM2VsbGNfYWRkX2xpbmtfd29yaywgc21jX2xsY19hZGRfbGlua193b3JrKTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xOCAwNzo1MDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzNDY2CgkJCQkJCQlvdXRwdXQ6IDI5CgkJCQkJCQl0aG91Z2h0czogMjkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aGUgdGhvdWdodCBwcm9jZXNzLCBzdW1tYXJpemVkIGFzIHlvdSByZXF1ZXN0ZWQ6CgoqKk5hdmlnYXRpbmcgdGhlIFNNQyBLZXJuZWwgQ29kZSoqCgpPa2F5LCBzbyBJJiMzOTt2ZSBnb3QgdGhpcyBwYXRjaCB0byBkZWFsIHdpdGgsIGFuZCBpdCBsb29rcyBsaWtlIGl0JiMzOTtzIHdpdGhpbiB0aGUgU3lzdGVtIE1hbmFnZW1lbnQgQ29udHJvbGxlciAoU01DKSBjb2RlLiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdG8gemVybyBpbiBvbiB0aGUgZXhhY3QgbG9jYXRpb24gb2YgdGhlIGNoYW5nZS4gSXQgc2VlbXMgdGhlIGNvcmUgb2YgdGhlIHBhdGNoIGlzIGdvaW5nIHRvIGJlIGluIGBuZXQvc21jL3NtY19sbGMuY2AuIFRoYXTigJlzIHRoZSBmaXJzdCBwaWVjZSBvZiB0aGUgcHV6emxlLiBOb3csIHRvIHVuZGVyc3RhbmQgaG93IHRoaXMgZml0cyBpbnRvIHRoZSBicm9hZGVyIHBpY3R1cmUsIEkgbmVlZCB0byBjaGVjayB0aGUgY29uZmlndXJhdGlvbiBzZXR0aW5ncy4gVGltZSB0byBsb2NhdGUgdGhlIHJlbGV2YW50IEtjb25maWcgZmlsZSBmb3IgU01DLiBVbmRlcnN0YW5kaW5nIHRoZSBLY29uZmlnIG9wdGlvbnMgd2lsbCBnaXZlIG1lIHRoZSBjb250ZXh0IEkgbmVlZCB0byBhc3Nlc3MgdGhlIGltcGFjdCBvZiB0aGlzIHBhdGNoLiBMZXQmIzM5O3Mgc2VlIHdoYXQgdGhlIGNvbmZpZ3VyYXRpb24gZmxhZ3MgYXJlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE4IDA3OjUwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBTTUMmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvc21jL0tjb25maWcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L3NtYy9LY29uZmlnLTEtIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XG5uZXQvc21jL0tjb25maWc6Mjpjb25maWcgU01DXG5uZXQvc21jL0tjb25maWctMy1cdHRyaXN0YXRlIFwmIzM0O1NNQyBzb2NrZXQgcHJvdG9jb2wgZmFtaWx5XCYjMzQ7XG4tLVxubmV0L3NtYy9LY29uZmlnLTEzLVxubmV0L3NtYy9LY29uZmlnOjE0OmNvbmZpZyBTTUNfRElBR1xubmV0L3NtYy9LY29uZmlnLTE1LVx0dHJpc3RhdGUgXCYjMzQ7U01DOiBzb2NrZXQgbW9uaXRvcmluZyBpbnRlcmZhY2VcJiMzNDtcbi0tXG5uZXQvc21jL0tjb25maWctMjItXG5uZXQvc21jL0tjb25maWc6MjM6Y29uZmlnIFNNQ19IU19DVFJMX0JQRlxubmV0L3NtYy9LY29uZmlnLTI0LVx0Ym9vbCBcJiMzNDtHZW5lcmljIGVCUEYgaG9vayBmb3IgU01DIGhhbmRzaGFrZSBmbG93XCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTggMDc6NTA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzg3OQoJCQkJCQkJb3V0cHV0OiAzOAoJCQkJCQkJdGhvdWdodHM6IDcxCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IGFuYWx5c2lzIG9mIHRoZSBjb2RlLCBwcmVzZW50ZWQgYXMgbXkgaW50ZXJuYWwgdGhvdWdodCBwcm9jZXNzOgoKKipEaXZpbmcgaW50byB0aGUgU01DIExMQyBFdmVudCBIYW5kbGluZyoqCgpPa2F5LCB0aGUgY29uZmlndXJhdGlvbiBJJiMzOTttIGxvb2tpbmcgYXQgaXMgZm9yIGBTTUNgLiBJIG5lZWQgdG8gZmlndXJlIG91dCBob3cgdGhlIHN5c3RlbSBoYW5kbGVzIGV2ZW50cyB3aXRoaW4gdGhhdCBjb250ZXh0LCBzcGVjaWZpY2FsbHkgdGhlIGZ1bmN0aW9uIGBzbWNfbGxjX2V2ZW50X2hhbmRsZXJgLiBUaGUgZmFjdCB0aGF0IGl0JiMzOTtzIGBzdGF0aWNgIG1lYW5zIEkgbmVlZCB0byBodW50IGRvd24gdGhlIGNhbGwgc2l0ZXMuIExldCYjMzk7cyBzZWUuLi4gQWgsIHRoZXJlIGl0IGlzLCBgc21jX2xsY19ldmVudF93b3JrYCBpcyBhIHdvcmtxdWV1ZSBmdW5jdGlvbiwgbWVhbmluZyBpdCYjMzk7cyBsaWtlbHkgY2FsbGVkIGFzeW5jaHJvbm91c2x5LiBUaGF0IG5hcnJvd3MgdGhlIHRyaWdnZXJzIGRvd24gYSBiaXQuIE5vdywgd2hhdCYjMzk7cyBlbnF1ZXVpbmcgd29yayB0byB0aGF0IHNwZWNpZmljIHdvcmtxdWV1ZT8gSXQgc2VlbXMgbG9naWNhbCB0aGF0IGBzbWNfbGxjX2VucXVldWVgIHdvdWxkIGJlIHJlc3BvbnNpYmxlLiBJJiMzOTtsbCBuZWVkIHRvIHZlcmlmeSB0aGF0IGNhbGwsIGJ1dCB0aGlzIHNlZW1zIGxpa2UgdGhlIHN0YXJ0aW5nIHBvaW50IGZvciB1bmRlcnN0YW5kaW5nIHRoZSBldmVudCBwcm9jZXNzaW5nIGZsb3cuIFRoaXMgc2hvdWxkIGdldCBtZSB3aGVyZSBJIG5lZWQgdG8gZ28uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE4IDA3OjUwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2xsY19ldmVudF93b3JrJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L3NtYy9zbWNfbGxjLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L3NtYy9zbWNfbGxjLmM9MzIwPXZvaWQgc21jX2xsY19mbG93X3N0b3Aoc3RydWN0IHNtY19saW5rX2dyb3VwICpsZ3IsIHN0cnVjdCBzbWNfbGxjX2Zsb3cgKmZsb3cpXG4tLVxubmV0L3NtYy9zbWNfbGxjLmMtMzI3LVx0ICAgIGZsb3cgPT0gXHUwMDI2bGdyLVx1MDAzZWxsY19mbG93X2xjbClcbm5ldC9zbWMvc21jX2xsYy5jOjMyODpcdFx0c2NoZWR1bGVfd29yayhcdTAwMjZsZ3ItXHUwMDNlbGxjX2V2ZW50X3dvcmspO1xubmV0L3NtYy9zbWNfbGxjLmMtMzI5LVx0ZWxzZVxuLS1cbm5ldC9zbWMvc21jX2xsYy5jPTE4NzU9c3RhdGljIHZvaWQgc21jX2xsY19ldmVudF9oYW5kbGVyKHN0cnVjdCBzbWNfbGxjX3FlbnRyeSAqcWVudHJ5KVxuLS1cbm5ldC9zbWMvc21jX2xsYy5jLTE5OTYtLyogd29ya2VyIHRvIHByb2Nlc3MgbGxjIG1lc3NhZ2VzIG9uIHRoZSBldmVudCBxdWV1ZSAqL1xubmV0L3NtYy9zbWNfbGxjLmM6MTk5NzpzdGF0aWMgdm9pZCBzbWNfbGxjX2V2ZW50X3dvcmsoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxubmV0L3NtYy9zbWNfbGxjLmMtMTk5OC17XG5uZXQvc21jL3NtY19sbGMuYy0xOTk5LVx0c3RydWN0IHNtY19saW5rX2dyb3VwICpsZ3IgPSBjb250YWluZXJfb2Yod29yaywgc3RydWN0IHNtY19saW5rX2dyb3VwLFxubmV0L3NtYy9zbWNfbGxjLmM6MjAwMDpcdFx0XHRcdFx0XHQgIGxsY19ldmVudF93b3JrKTtcbm5ldC9zbWMvc21jX2xsYy5jLTIwMDEtXHRzdHJ1Y3Qgc21jX2xsY19xZW50cnkgKnFlbnRyeTtcbi0tXG5uZXQvc21jL3NtY19sbGMuYz0yMDY5PXN0YXRpYyB2b2lkIHNtY19sbGNfZW5xdWV1ZShzdHJ1Y3Qgc21jX2xpbmsgKmxpbmssIHVuaW9uIHNtY19sbGNfbXNnICpsbGMpXG4tLVxubmV0L3NtYy9zbWNfbGxjLmMtMjA5Mi1cdHNwaW5fdW5sb2NrX2lycXJlc3RvcmUoXHUwMDI2bGdyLVx1MDAzZWxsY19ldmVudF9xX2xvY2ssIGZsYWdzKTtcbm5ldC9zbWMvc21jX2xsYy5jOjIwOTM6XHRxdWV1ZV93b3JrKHN5c3RlbV9oaWdocHJpX3dxLCBcdTAwMjZsZ3ItXHUwMDNlbGxjX2V2ZW50X3dvcmspO1xubmV0L3NtYy9zbWNfbGxjLmMtMjA5NC19XG4tLVxubmV0L3NtYy9zbWNfbGxjLmM9MjE0OT12b2lkIHNtY19sbGNfbGdyX2luaXQoc3RydWN0IHNtY19saW5rX2dyb3VwICpsZ3IsIHN0cnVjdCBzbWNfc29jayAqc21jKVxuLS1cbm5ldC9zbWMvc21jX2xsYy5jLTIxNTItXG5uZXQvc21jL3NtY19sbGMuYzoyMTUzOlx0SU5JVF9XT1JLKFx1MDAyNmxnci1cdTAwM2VsbGNfZXZlbnRfd29yaywgc21jX2xsY19ldmVudF93b3JrKTtcbm5ldC9zbWMvc21jX2xsYy5jLTIxNTQtXHRJTklUX1dPUksoXHUwMDI2bGdyLVx1MDAzZWxsY19hZGRfbGlua193b3JrLCBzbWNfbGxjX2FkZF9saW5rX3dvcmspO1xuLS1cbm5ldC9zbWMvc21jX2xsYy5jPTIxNjg9dm9pZCBzbWNfbGxjX2xncl9jbGVhcihzdHJ1Y3Qgc21jX2xpbmtfZ3JvdXAgKmxncilcbi0tXG5uZXQvc21jL3NtY19sbGMuYy0yMTcyLVx0d2FrZV91cF9hbGwoXHUwMDI2bGdyLVx1MDAzZWxsY19tc2dfd2FpdGVyKTtcbm5ldC9zbWMvc21jX2xsYy5jOjIxNzM6XHRjYW5jZWxfd29ya19zeW5jKFx1MDAyNmxnci1cdTAwM2VsbGNfZXZlbnRfd29yayk7XG5uZXQvc21jL3NtY19sbGMuYy0yMTc0LVx0Y2FuY2VsX3dvcmtfc3luYyhcdTAwMjZsZ3ItXHUwMDNlbGxjX2FkZF9saW5rX3dvcmspO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjExLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xOCAwNzo1MDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1MDU5CgkJCQkJCQlvdXRwdXQ6IDM5CgkJCQkJCQl0aG91Z2h0czogMzYKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZToKCioqQW5hbHl6aW5nIHRoZSBMTEMgTWVzc2FnZSBFbnF1ZXVlIFBhdGgqKgoKQWxyaWdodCwgc28gYHNtY19sbGNfZW5xdWV1ZWAgaXMgdHJpZ2dlcmVkIHdoZW5ldmVyIHdlIGdldCBhbiBMTEMgbWVzc2FnZS4gTXkgZmlyc3QgaW5zdGluY3QsIGFzIGFsd2F5cywgaXMgdG8gZm9sbG93IHRoZSBkYXRhIGZsb3cuIFRoZSBpbW1lZGlhdGUgcXVlc3Rpb24gSSBoYXZlIGlzLCB3aGVyZSBleGFjdGx5ICppcyogYHNtY19sbGNfZW5xdWV1ZWAgY2FsbGVkIGZyb20/IEkgbmVlZCB0byB0cmFjZSBiYWNrIGZyb20gdGhhdCBwb2ludCB0byBmdWxseSB1bmRlcnN0YW5kIHRoZSBldmVudCYjMzk7cyBvcmlnaW4gYW5kIGNvbnRleHQuIExldCYjMzk7cyBkaWcgaW50byB0aGUgY2FsbCBzaXRlcyBhbmQgc2VlIHdoYXQgdXBzdHJlYW0gZnVuY3Rpb25zIG9yIGludGVycnVwdCBoYW5kbGVycyBhcmUgcmVzcG9uc2libGUgZm9yIGFjdHVhbGx5IHBsYWNpbmcgdGhlc2UgbWVzc2FnZXMgb24gdGhlIHF1ZXVlLiBLbm93aW5nIHRoaXMgd2lsbCBnaXZlIG1lIGEgcHJvcGVyIGhhbmRsZSBvbiB0aGUgb3ZlcmFsbCBtZXNzYWdlIHByb2Nlc3NpbmcgYXJjaGl0ZWN0dXJlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xOCAwNzo1MDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtzbWNfbGxjX2VucXVldWUmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvc21jL3NtY19sbGMuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvc21jL3NtY19sbGMuYz0xOTk9c3RydWN0IHNtY19sbGNfcWVudHJ5IHtcbi0tXG5uZXQvc21jL3NtY19sbGMuYy0yMDQtXG5uZXQvc21jL3NtY19sbGMuYzoyMDU6c3RhdGljIHZvaWQgc21jX2xsY19lbnF1ZXVlKHN0cnVjdCBzbWNfbGluayAqbGluaywgdW5pb24gc21jX2xsY19tc2cgKmxsYyk7XG5uZXQvc21jL3NtY19sbGMuYy0yMDYtXG4tLVxubmV0L3NtYy9zbWNfbGxjLmM9MTU0OD12b2lkIHNtY19sbGNfYWRkX2xpbmtfbG9jYWwoc3RydWN0IHNtY19saW5rICpsaW5rKVxuLS1cbm5ldC9zbWMvc21jX2xsYy5jLTE1NTQtXHQvKiBubyBkZXYgYW5kIHBvcnQgbmVlZGVkICovXG5uZXQvc21jL3NtY19sbGMuYzoxNTU1Olx0c21jX2xsY19lbnF1ZXVlKGxpbmssICh1bmlvbiBzbWNfbGxjX21zZyAqKVx1MDAyNmFkZF9sbGMpO1xubmV0L3NtYy9zbWNfbGxjLmMtMTU1Ni19XG4tLVxubmV0L3NtYy9zbWNfbGxjLmM9MTU4Mj12b2lkIHNtY19sbGNfc3J2X2RlbGV0ZV9saW5rX2xvY2FsKHN0cnVjdCBzbWNfbGluayAqbGluaywgdTggZGVsX2xpbmtfaWQpXG4tLVxubmV0L3NtYy9zbWNfbGxjLmMtMTU5MC1cdGRlbF9sbGMuaGQuZmxhZ3MgfD0gU01DX0xMQ19GTEFHX0RFTF9MSU5LX09SREVSTFk7XG5uZXQvc21jL3NtY19sbGMuYzoxNTkxOlx0c21jX2xsY19lbnF1ZXVlKGxpbmssICh1bmlvbiBzbWNfbGxjX21zZyAqKVx1MDAyNmRlbF9sbGMpO1xubmV0L3NtYy9zbWNfbGxjLmMtMTU5Mi19XG4tLVxubmV0L3NtYy9zbWNfbGxjLmM9MjAyNj1zdGF0aWMgdm9pZCBzbWNfbGxjX3J4X3Jlc3BvbnNlKHN0cnVjdCBzbWNfbGluayAqbGluayxcbi0tXG5uZXQvc21jL3NtY19sbGMuYy0yMDY4LVxubmV0L3NtYy9zbWNfbGxjLmM6MjA2OTpzdGF0aWMgdm9pZCBzbWNfbGxjX2VucXVldWUoc3RydWN0IHNtY19saW5rICpsaW5rLCB1bmlvbiBzbWNfbGxjX21zZyAqbGxjKVxubmV0L3NtYy9zbWNfbGxjLmMtMjA3MC17XG4tLVxubmV0L3NtYy9zbWNfbGxjLmM9MjA5Nz1zdGF0aWMgdm9pZCBzbWNfbGxjX3J4X2hhbmRsZXIoc3RydWN0IGliX3djICp3Yywgdm9pZCAqYnVmKVxuLS1cbm5ldC9zbWMvc21jX2xsYy5jLTIxMTEtXG5uZXQvc21jL3NtY19sbGMuYzoyMTEyOlx0c21jX2xsY19lbnF1ZXVlKGxpbmssIGxsYyk7XG5uZXQvc21jL3NtY19sbGMuYy0yMTEzLX1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTggMDc6NTA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNTk1MQoJCQkJCQkJb3V0cHV0OiA1NgoJCQkJCQkJdGhvdWdodHM6IDI1MgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBBc3Nlc3NtZW50IG9mIGBzbWNfbGxjX3J4X2hhbmRsZXJgIFZ1bG5lcmFiaWxpdHkqKgoKT2theSwgc28gYHNtY19sbGNfcnhfaGFuZGxlcmAgaXMgdGhlIHJlY2VpdmUgaGFuZGxlciBmb3IgTExDIG1lc3NhZ2VzLCB3aGljaCBtYWtlcyBpdCBhbiBpbXBvcnRhbnQgcGllY2Ugb2YgdGhlIElCIHJlY2VpdmUgaGFuZGxpbmcuIFNNQyB1c2VzIFJETUEgKFJvQ0UpIG9yIElTTSwgc28gd2UgYXJlIGRlYWxpbmcgd2l0aCBoaWdoLXBlcmZvcm1hbmNlIG5ldHdvcmtpbmcgaGVyZSwgd2hpY2ggdGVuZHMgdG8gYmUgYSB0YXJnZXQgZm9yIGZ1enppbmcuIFRoZSBpbW1lZGlhdGUgcXVlc3Rpb24gaXMsIGNhbiB0aGlzIGJlIGZ1enplZD8gU01DLCBhcyBJIHJlY2FsbCwgaXMgcmVhY2hhYmxlIHRocm91Z2ggQUZfU01DIHNvY2tldHMuIEV4Y2VsbGVudCwgbGV0JiMzOTtzIHNlZSBpZiBzeXprYWxsZXIgaXMgYWxyZWFkeSB0YXJnZXRpbmcgQUZfU01DLiBBaGEhIFllcywgc3l6a2FsbGVyIGRvZXMgZnV6eiBBRl9TTUMuIFRoYXQmIzM5O3MgYSBnb29kIHN0YXJ0aW5nIHBvaW50LgoKTm93LCB0aGUgY3J1Y2lhbCBxdWVzdGlvbjogY2FuIHdlIHJlYWNoIGBzbWNfbGxjX3J4X2hhbmRsZXJgIGRpcmVjdGx5IHRocm91Z2ggZnV6emluZz8gTExDIG1lc3NhZ2VzIGFyZSBleGNoYW5nZWQgYmV0d2VlbiBTTUMgcGVlcnMgb3ZlciB0aGUgUm9DRS9JU00gbGluay4gVGhlIHRyaWNrIGlzIHRvIHJlYWNoIHRoaXMgY29kZSB3aXRob3V0IGEgcGVlciwgb3IgYSBwZWVyIHdlIGNvbnRyb2wuIElmIHdlJiMzOTtyZSBzaW11bGF0aW5nIGEgcGVlciwgb3IgdXNpbmcgbG9vcGJhY2ssIHRoZW4gd2UgY2FuIHJlYWNoIHRoaXMgaGFuZGxlci4gV2FpdCwgc3l6a2FsbGVyIGlzIHNwZWNpZmljYWxseSBnb29kIGF0IGluamVjdGluZyBwYWNrZXRzIG9yIHVzaW5nIGxvb3BiYWNrLCB3aGljaCB3b3VsZCBhbGxvdyB1cyB0byBjcmFmdCBwYWNrZXRzIGFuZCBwb3RlbnRpYWxseSB0cmlnZ2VyIHRoZSBoYW5kbGVyLiBUaGlzIGlzIGRlZmluaXRlbHkgcHJvbWlzaW5nLgoKQXJlIHRoZXJlIGFueSBzcGVjaWZpYyBmdW5jdGlvbnMgd2l0aGluIHRoaXMgbW9kdWxlIHRoYXQgYXJlIHBhcnRpY3VsYXJseSByZWxldmFudCBvciBpbnRlcmVzdGluZyB0byB0YXJnZXQ/IGBzbWNfbGxjX2V2ZW50X2hhbmRsZXJgLCBgc21jX2xsY19ldmVudF93b3JrYCwgYW5kIGBzbWNfbGxjX3J4X2hhbmRsZXJgIGFyZSBhbGwgc3RhdGljLiBUaGF0JiMzOTtzIG5vdCBpZGVhbCwgYXMgdGhhdCBsaW1pdHMgZXh0ZXJuYWwgYWNjZXNzLCBidXQgbGV0JiMzOTtzIHNlZSwgd2hhdCBhcmUgdGhlIG5vbi1zdGF0aWMgZnVuY3Rpb25zIGF2YWlsYWJsZSBpbiB0aGlzIGFyZWE/IFdlIG5lZWQgdG8gbG9vayBpbiBgbmV0L3NtYy9zbWNfbGxjLmNgIHRvIHNlZSBpZiB0aGVyZSBhcmUgYW55IGV4cG9ydGVkIG9yIG5vbi1zdGF0aWMgZnVuY3Rpb25zIHRoYXQgbWlnaHQgYWN0IGFzIGVudHJ5IHBvaW50cyB0byB0cmlnZ2VyIGBzbWNfbGxjX3J4X2hhbmRsZXJgLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xOCAwNzo1MDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDteW2EtekEtWl9dW2EtekEtWjAtOV9dKiBzbWNfbGxjXyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9zbWMvc21jX2xsYy5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9zbWMvc21jX2xsYy5jLTIzLVxubmV0L3NtYy9zbWNfbGxjLmM6MjQ6c3RydWN0IHNtY19sbGNfaGRyIHtcbm5ldC9zbWMvc21jX2xsYy5jLTI1LVx0c3RydWN0IHNtY193cl9yeF9oZHIgY29tbW9uO1xuLS1cbm5ldC9zbWMvc21jX2xsYy5jLTQ2LVxubmV0L3NtYy9zbWNfbGxjLmM6NDc6c3RydWN0IHNtY19sbGNfbXNnX2NvbmZpcm1fbGluayB7XHQvKiB0eXBlIDB4MDEgKi9cbm5ldC9zbWMvc21jX2xsYy5jLTQ4LVx0c3RydWN0IHNtY19sbGNfaGRyIGhkO1xuLS1cbm5ldC9zbWMvc21jX2xsYy5jLTYxLVxubmV0L3NtYy9zbWNfbGxjLmM6NjI6c3RydWN0IHNtY19sbGNfbXNnX2FkZF9saW5rIHtcdFx0LyogdHlwZSAweDAyICovXG5uZXQvc21jL3NtY19sbGMuYy02My1cdHN0cnVjdCBzbWNfbGxjX2hkciBoZDtcbi0tXG5uZXQvc21jL3NtY19sbGMuYy03OS1cbm5ldC9zbWMvc21jX2xsYy5jOjgwOnN0cnVjdCBzbWNfbGxjX21zZ19hZGRfbGlua19jb250X3J0IHtcbm5ldC9zbWMvc21jX2xsYy5jLTgxLVx0X19iZTMyIHJtYl9rZXk7XG4tLVxubmV0L3NtYy9zbWNfbGxjLmMtODUtXG5uZXQvc21jL3NtY19sbGMuYzo4NjpzdHJ1Y3Qgc21jX2xsY19tc2dfYWRkX2xpbmtfdjJfZXh0IHtcbm5ldC9zbWMvc21jX2xsYy5jLTg3LSNpZiBkZWZpbmVkKF9fQklHX0VORElBTl9CSVRGSUVMRClcbi0tXG5uZXQvc21jL3NtY19sbGMuYy0xMDMtXG5uZXQvc21jL3NtY19sbGMuYzoxMDQ6c3RydWN0IHNtY19sbGNfbXNnX3JlcV9hZGRfbGlua192MiB7XG5uZXQvc21jL3NtY19sbGMuYy0xMDUtXHRzdHJ1Y3Qgc21jX2xsY19oZHIgaGQ7XG4tLVxubmV0L3NtYy9zbWNfbGxjLmMtMTEzLVxubmV0L3NtYy9zbWNfbGxjLmM6MTE0OnN0cnVjdCBzbWNfbGxjX21zZ19hZGRfbGlua19jb250IHtcdC8qIHR5cGUgMHgwMyAqL1xubmV0L3NtYy9zbWNfbGxjLmMtMTE1LVx0c3RydWN0IHNtY19sbGNfaGRyIGhkO1xuLS1cbm5ldC9zbWMvc21jX2xsYy5jLTEyNS1cbm5ldC9zbWMvc21jX2xsYy5jOjEyNjpzdHJ1Y3Qgc21jX2xsY19tc2dfZGVsX2xpbmsge1x0XHQvKiB0eXBlIDB4MDQgKi9cbm5ldC9zbWMvc21jX2xsYy5jLTEyNy1cdHN0cnVjdCBzbWNfbGxjX2hkciBoZDtcbi0tXG5uZXQvc21jL3NtY19sbGMuYy0xMzItXG5uZXQvc21jL3NtY19sbGMuYzoxMzM6c3RydWN0IHNtY19sbGNfbXNnX3Rlc3RfbGluayB7XHRcdC8qIHR5cGUgMHgwNyAqL1xubmV0L3NtYy9zbWNfbGxjLmMtMTM0LVx0c3RydWN0IHNtY19sbGNfaGRyIGhkO1xuLS1cbm5ldC9zbWMvc21jX2xsYy5jPTEzOT1zdHJ1Y3Qgc21jX3JtYl9ydG9rZW4ge1xuLS1cbm5ldC9zbWMvc21jX2xsYy5jLTE1Mi1cbm5ldC9zbWMvc21jX2xsYy5jOjE1MzpzdHJ1Y3Qgc21jX2xsY19tc2dfY29uZmlybV9ya2V5IHtcdC8qIHR5cGUgMHgwNiAqL1xubmV0L3NtYy9zbWNfbGxjLmMtMTU0LVx0c3RydWN0IHNtY19sbGNfaGRyIGhkO1xuLS1cbm5ldC9zbWMvc21jX2xsYy5jLTE2Mi1cbm5ldC9zbWMvc21jX2xsYy5jOjE2MzpzdHJ1Y3Qgc21jX2xsY19tc2dfZGVsZXRlX3JrZXkge1x0LyogdHlwZSAweDA5ICovXG5uZXQvc21jL3NtY19sbGMuYy0xNjQtXHRzdHJ1Y3Qgc21jX2xsY19oZHIgaGQ7XG4tLVxubmV0L3NtYy9zbWNfbGxjLmMtMTcxLVxubmV0L3NtYy9zbWNfbGxjLmM6MTcyOnN0cnVjdCBzbWNfbGxjX21zZ19kZWxldGVfcmtleV92MiB7XHQvKiB0eXBlIDB4MjkgKi9cbm5ldC9zbWMvc21jX2xsYy5jLTE3My1cdHN0cnVjdCBzbWNfbGxjX2hkciBoZDtcbi0tXG5uZXQvc21jL3NtY19sbGMuYy0xNzktXG5uZXQvc21jL3NtY19sbGMuYzoxODA6dW5pb24gc21jX2xsY19tc2cge1xubmV0L3NtYy9zbWNfbGxjLmMtMTgxLVx0c3RydWN0IHNtY19sbGNfbXNnX2NvbmZpcm1fbGluayBjb25maXJtX2xpbms7XG4tLVxubmV0L3NtYy9zbWNfbGxjLmMtMTk4LVxubmV0L3NtYy9zbWNfbGxjLmM6MTk5OnN0cnVjdCBzbWNfbGxjX3FlbnRyeSB7XG5uZXQvc21jL3NtY19sbGMuYy0yMDAtXHRzdHJ1Y3QgbGlzdF9oZWFkIGxpc3Q7XG4tLVxubmV0L3NtYy9zbWNfbGxjLmM9MjA1PXN0YXRpYyB2b2lkIHNtY19sbGNfZW5xdWV1ZShzdHJ1Y3Qgc21jX2xpbmsgKmxpbmssIHVuaW9uIHNtY19sbGNfbXNnICpsbGMpO1xubmV0L3NtYy9zbWNfbGxjLmMtMjA2LVxubmV0L3NtYy9zbWNfbGxjLmM6MjA3OnN0cnVjdCBzbWNfbGxjX3FlbnRyeSAqc21jX2xsY19mbG93X3FlbnRyeV9jbHIoc3RydWN0IHNtY19sbGNfZmxvdyAqZmxvdylcbm5ldC9zbWMvc21jX2xsYy5jLTIwOC17XG4tLVxubmV0L3NtYy9zbWNfbGxjLmMtMjE0LVxubmV0L3NtYy9zbWNfbGxjLmM6MjE1OnZvaWQgc21jX2xsY19mbG93X3FlbnRyeV9kZWwoc3RydWN0IHNtY19sbGNfZmxvdyAqZmxvdylcbm5ldC9zbWMvc21jX2xsYy5jLTIxNi17XG4tLVxubmV0L3NtYy9zbWNfbGxjLmM9MjU0PXN0YXRpYyBib29sIHNtY19sbGNfZmxvd19zdGFydChzdHJ1Y3Qgc21jX2xsY19mbG93ICpmbG93LFxuLS1cbm5ldC9zbWMvc21jX2xsYy5jLTI4NS0vKiBzdGFydCBhIG5ldyBsb2NhbCBsbGMgZmxvdywgd2FpdCB0aWxsIGN1cnJlbnQgZmxvdyBmaW5pc2hlZCAqL1xubmV0L3NtYy9zbWNfbGxjLmM6Mjg2OmludCBzbWNfbGxjX2Zsb3dfaW5pdGlhdGUoc3RydWN0IHNtY19saW5rX2dyb3VwICpsZ3IsXG5uZXQvc21jL3NtY19sbGMuYy0yODctXHRcdFx0ICBlbnVtIHNtY19sbGNfZmxvd3R5cGUgdHlwZSlcbi0tXG5uZXQvc21jL3NtY19sbGMuYy0zMTktLyogZmluaXNoIHRoZSBjdXJyZW50IGxsYyBmbG93ICovXG5uZXQvc21jL3NtY19sbGMuYzozMjA6dm9pZCBzbWNfbGxjX2Zsb3dfc3RvcChzdHJ1Y3Qgc21jX2xpbmtfZ3JvdXAgKmxnciwgc3RydWN0IHNtY19sbGNfZmxvdyAqZmxvdylcbm5ldC9zbWMvc21jX2xsYy5jLTMyMS17XG4tLVxubmV0L3NtYy9zbWNfbGxjLmMtMzM1LSAqL1xubmV0L3NtYy9zbWNfbGxjLmM6MzM2OnN0cnVjdCBzbWNfbGxjX3FlbnRyeSAqc21jX2xsY193YWl0KHN0cnVjdCBzbWNfbGlua19ncm91cCAqbGdyLFxubmV0L3NtYy9zbWNfbGxjLmMtMzM3LVx0XHRcdFx0ICAgIHN0cnVjdCBzbWNfbGluayAqbG5rLFxuLS1cbm5ldC9zbWMvc21jX2xsYy5jLTM3NS1cbm5ldC9zbWMvc21jX2xsYy5jOjM3NjpzdHJ1Y3Qgc21jX2xsY190eF9wZW5kIHtcbm5ldC9zbWMvc21jX2xsYy5jLTM3Ny19O1xuLS1cbm5ldC9zbWMvc21jX2xsYy5jPTQzND1zdGF0aWMgdm9pZCBzbWNfbGxjX2luaXRfbXNnX2hkcihzdHJ1Y3Qgc21jX2xsY19oZHIgKmhkcixcbi0tXG5uZXQvc21jL3NtY19sbGMuYy00NDYtLyogaGlnaC1sZXZlbCBBUEkgdG8gc2VuZCBMTEMgY29uZmlybSBsaW5rICovXG5uZXQvc21jL3NtY19sbGMuYzo0NDc6aW50IHNtY19sbGNfc2VuZF9jb25maXJtX2xpbmsoc3RydWN0IHNtY19saW5rICpsaW5rLFxubmV0L3NtYy9zbWNfbGxjLmMtNDQ4LVx0XHRcdCAgICAgIGVudW0gc21jX2xsY19yZXFyZXNwIHJlcXJlc3ApXG4tLVxubmV0L3NtYy9zbWNfbGxjLmM9NjAzPXN0YXRpYyBpbnQgc21jX2xsY19maWxsX2V4dF92MihzdHJ1Y3Qgc21jX2xsY19tc2dfYWRkX2xpbmtfdjJfZXh0ICpleHQsXG4tLVxubmV0L3NtYy9zbWNfbGxjLmMtNjQyLS8qIHNlbmQgQUREIExJTksgcmVxdWVzdCBvciByZXNwb25zZSAqL1xubmV0L3NtYy9zbWNfbGxjLmM6NjQzOmludCBzbWNfbGxjX3NlbmRfYWRkX2xpbmsoc3RydWN0IHNtY19saW5rICpsaW5rLCB1OCBtYWNbXSwgdTggZ2lkW10sXG5uZXQvc21jL3NtY19sbGMuYy02NDQtXHRcdFx0ICBzdHJ1Y3Qgc21jX2xpbmsgKmxpbmtfbmV3LFxuLS1cbm5ldC9zbWMvc21jX2xsYy5jLTcwMy0vKiBzZW5kIERFTEVURSBMSU5LIHJlcXVlc3Qgb3IgcmVzcG9uc2UgKi9cbm5ldC9zbWMvc21jX2xsYy5jOjcwNDppbnQgc21jX2xsY19zZW5kX2RlbGV0ZV9saW5rKHN0cnVjdCBzbWNfbGluayAqbGluaywgdTggbGlua19kZWxfaWQsXG5uZXQvc21jL3NtY19sbGMuYy03MDUtXHRcdFx0ICAgICBlbnVtIHNtY19sbGNfcmVxcmVzcCByZXFyZXNwLCBib29sIG9yZGVybHksXG4tLVxubmV0L3NtYy9zbWNfbGxjLmM9MTAyMD1zdGF0aWMgdm9pZCBzbWNfbGxjX3NhdmVfYWRkX2xpbmtfaW5mbyhzdHJ1Y3Qgc21jX2xpbmsgKmxpbmssXG4tLVxubmV0L3NtYy9zbWNfbGxjLmMtMTAzMC0vKiBhcyBhbiBTTUMgY2xpZW50LCBwcm9jZXNzIGFuIGFkZCBsaW5rIHJlcXVlc3QgKi9cbm5ldC9zbWMvc21jX2xsYy5jOjEwMzE6aW50IHNtY19sbGNfY2xpX2FkZF9saW5rKHN0cnVjdCBzbWNfbGluayAqbGluaywgc3RydWN0IHNtY19sbGNfcWVudHJ5ICpxZW50cnkpXG5uZXQvc21jL3NtY19sbGMuYy0xMDMyLXtcbi0tXG5uZXQvc21jL3NtY19sbGMuYz0xMzk3PXN0YXRpYyB2b2lkIHNtY19sbGNfc2VuZF9yZXFfYWRkX2xpbmtfcmVzcG9uc2Uoc3RydWN0IHNtY19sbGNfcWVudHJ5ICpxZW50cnkpXG4tLVxubmV0L3NtYy9zbWNfbGxjLmMtMTQwNS1cbm5ldC9zbWMvc21jX2xsYy5jOjE0MDY6aW50IHNtY19sbGNfc3J2X2FkZF9saW5rKHN0cnVjdCBzbWNfbGluayAqbGluayxcbm5ldC9zbWMvc21jX2xsYy5jLTE0MDctXHRcdFx0IHN0cnVjdCBzbWNfbGxjX3FlbnRyeSAqcmVxX3FlbnRyeSlcbi0tXG5uZXQvc21jL3NtY19sbGMuYz0xNTI5PXN0YXRpYyB2b2lkIHNtY19sbGNfcHJvY2Vzc19zcnZfYWRkX2xpbmsoc3RydWN0IHNtY19saW5rX2dyb3VwICpsZ3IpXG4tLVxubmV0L3NtYy9zbWNfbGxjLmMtMTU0Ny0vKiBlbnF1ZXVlIGEgbG9jYWwgYWRkX2xpbmsgcmVxIHRvIHRyaWdnZXIgYSBuZXcgYWRkX2xpbmsgZmxvdyAqL1xubmV0L3NtYy9zbWNfbGxjLmM6MTU0ODp2b2lkIHNtY19sbGNfYWRkX2xpbmtfbG9jYWwoc3RydWN0IHNtY19saW5rICpsaW5rKVxubmV0L3NtYy9zbWNfbGxjLmMtMTU0OS17XG4tLVxubmV0L3NtYy9zbWNfbGxjLmM9MTU1OT1zdGF0aWMgdm9pZCBzbWNfbGxjX2FkZF9saW5rX3dvcmsoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxuLS1cbm5ldC9zbWMvc21jX2xsYy5jLTE1ODEtICovXG5uZXQvc21jL3NtY19sbGMuYzoxNTgyOnZvaWQgc21jX2xsY19zcnZfZGVsZXRlX2xpbmtfbG9jYWwoc3RydWN0IHNtY19saW5rICpsaW5rLCB1OCBkZWxfbGlua19pZClcbm5ldC9zbWMvc21jX2xsYy5jLTE1ODMte1xuLS1cbm5ldC9zbWMvc21jX2xsYy5jPTE1OTQ9c3RhdGljIHZvaWQgc21jX2xsY19wcm9jZXNzX2NsaV9kZWxldGVfbGluayhzdHJ1Y3Qgc21jX2xpbmtfZ3JvdXAgKmxncilcbi0tXG5uZXQvc21jL3NtY19sbGMuYy0xNjUxLSAqL1xubmV0L3NtYy9zbWNfbGxjLmM6MTY1Mjp2b2lkIHNtY19sbGNfc2VuZF9saW5rX2RlbGV0ZV9hbGwoc3RydWN0IHNtY19saW5rX2dyb3VwICpsZ3IsIGJvb2wgb3JkLCB1MzIgcnNuKVxubmV0L3NtYy9zbWNfbGxjLmMtMTY1My17XG4tLVxubmV0L3NtYy9zbWNfbGxjLmM9MjExNz1zdGF0aWMgdm9pZCBzbWNfbGxjX3Rlc3RsaW5rX3dvcmsoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxuLS1cbm5ldC9zbWMvc21jX2xsYy5jLTIxNDgtXG5uZXQvc21jL3NtY19sbGMuYzoyMTQ5OnZvaWQgc21jX2xsY19sZ3JfaW5pdChzdHJ1Y3Qgc21jX2xpbmtfZ3JvdXAgKmxnciwgc3RydWN0IHNtY19zb2NrICpzbWMpXG5uZXQvc21jL3NtY19sbGMuYy0yMTUwLXtcbi0tXG5uZXQvc21jL3NtY19sbGMuYy0yMTY3LS8qIGNhbGxlZCBhZnRlciBsZ3Igd2FzIHJlbW92ZWQgZnJvbSBsZ3JfbGlzdCAqL1xubmV0L3NtYy9zbWNfbGxjLmM6MjE2ODp2b2lkIHNtY19sbGNfbGdyX2NsZWFyKHN0cnVjdCBzbWNfbGlua19ncm91cCAqbGdyKVxubmV0L3NtYy9zbWNfbGxjLmMtMjE2OS17XG4tLVxubmV0L3NtYy9zbWNfbGxjLmMtMjE4MS1cbm5ldC9zbWMvc21jX2xsYy5jOjIxODI6aW50IHNtY19sbGNfbGlua19pbml0KHN0cnVjdCBzbWNfbGluayAqbGluaylcbm5ldC9zbWMvc21jX2xsYy5jLTIxODMte1xuLS1cbm5ldC9zbWMvc21jX2xsYy5jLTIxODgtXG5uZXQvc21jL3NtY19sbGMuYzoyMTg5OnZvaWQgc21jX2xsY19saW5rX2FjdGl2ZShzdHJ1Y3Qgc21jX2xpbmsgKmxpbmspXG5uZXQvc21jL3NtY19sbGMuYy0yMTkwLXtcbi0tXG5uZXQvc21jL3NtY19sbGMuYy0yMjA2LS8qIGNhbGxlZCBpbiB3b3JrZXIgY29udGV4dCAqL1xubmV0L3NtYy9zbWNfbGxjLmM6MjIwNzp2b2lkIHNtY19sbGNfbGlua19jbGVhcihzdHJ1Y3Qgc21jX2xpbmsgKmxpbmssIGJvb2wgbG9nKVxubmV0L3NtYy9zbWNfbGxjLmMtMjIwOC17XG4tLVxubmV0L3NtYy9zbWNfbGxjLmMtMjIyMS0vKiByZWdpc3RlciBhIG5ldyBydG9rZW4gYXQgdGhlIHJlbW90ZSBwZWVyIChmb3IgYWxsIGxpbmtzKSAqL1xubmV0L3NtYy9zbWNfbGxjLmM6MjIyMjppbnQgc21jX2xsY19kb19jb25maXJtX3JrZXkoc3RydWN0IHNtY19saW5rICpzZW5kX2xpbmssXG5uZXQvc21jL3NtY19sbGMuYy0yMjIzLVx0XHRcdCAgICBzdHJ1Y3Qgc21jX2J1Zl9kZXNjICpybWJfZGVzYylcbi0tXG5uZXQvc21jL3NtY19sbGMuYy0yMjQzLS8qIHVucmVnaXN0ZXIgYW4gcnRva2VuIGF0IHRoZSByZW1vdGUgcGVlciAqL1xubmV0L3NtYy9zbWNfbGxjLmM6MjI0NDppbnQgc21jX2xsY19kb19kZWxldGVfcmtleShzdHJ1Y3Qgc21jX2xpbmtfZ3JvdXAgKmxncixcbm5ldC9zbWMvc21jX2xsYy5jLTIyNDUtXHRcdFx0ICAgc3RydWN0IHNtY19idWZfZGVzYyAqcm1iX2Rlc2MpXG4tLVxubmV0L3NtYy9zbWNfbGxjLmMtMjI2OS1cbm5ldC9zbWMvc21jX2xsYy5jOjIyNzA6dm9pZCBzbWNfbGxjX2xpbmtfc2V0X3VpZChzdHJ1Y3Qgc21jX2xpbmsgKmxpbmspXG5uZXQvc21jL3NtY19sbGMuYy0yMjcxLXtcbi0tXG5uZXQvc21jL3NtY19sbGMuYy0yMjc4LS8qIHNhdmUgcGVlcnMgbGluayB1c2VyIGlkLCB1c2VkIGZvciBkZWJ1ZyBwdXJwb3NlcyAqL1xubmV0L3NtYy9zbWNfbGxjLmM6MjI3OTp2b2lkIHNtY19sbGNfc2F2ZV9wZWVyX3VpZChzdHJ1Y3Qgc21jX2xsY19xZW50cnkgKnFlbnRyeSlcbm5ldC9zbWMvc21jX2xsYy5jLTIyODAte1xuLS1cbm5ldC9zbWMvc21jX2xsYy5jLTIyODUtLyogZXZhbHVhdGUgY29uZmlybSBsaW5rIHJlcXVlc3Qgb3IgcmVzcG9uc2UgKi9cbm5ldC9zbWMvc21jX2xsYy5jOjIyODY6aW50IHNtY19sbGNfZXZhbF9jb25mX2xpbmsoc3RydWN0IHNtY19sbGNfcWVudHJ5ICpxZW50cnksXG5uZXQvc21jL3NtY19sbGMuYy0yMjg3LVx0XHRcdCAgIGVudW0gc21jX2xsY19yZXFyZXNwIHR5cGUpXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE4IDA3OjUwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDEwNjMxCgkJCQkJCQlvdXRwdXQ6IDQ1CgkJCQkJCQl0aG91Z2h0czogMzIxCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBhIFBvdGVudGlhbCBNZW1vcnkgTGVhayBGaXggaW4gdGhlIFNNQy1MTEMgRmxvdyoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBpbiBgc21jX2xsY19ldmVudF9oYW5kbGVyYC4gUmlnaHQgb2ZmIHRoZSBiYXQsIEkgc2VlIHRoZXkmIzM5O3JlIGFkZHJlc3NpbmcgYSBwb3RlbnRpYWwgcHJvYmxlbSB3aXRoIGhvdyBgUkVRX0FERF9MSU5LYCBzdGF0ZSBpcyBoYW5kbGVkLiBUaGUgY29yZSBjaGFuZ2UgaXMgdGhlIGFkZGl0aW9uIG9mIGBzbWNfbGxjX2Zsb3dfcWVudHJ5X2RlbCgmYW1wO2xnci0mZ3Q7bGxjX2Zsb3dfbGNsKTtgIHJpZ2h0IGJlZm9yZSB0cmFuc2l0aW9uaW5nIHRoZSBgbGxjX2Zsb3dfbGNsLnR5cGVgLiBUaGlzIGxvb2tzIGxpa2UgYSBmdW5jdGlvbmFsIGNoYW5nZSDigJMgYSBtZW1vcnkgbGVhayBmaXggb3IgcGVyaGFwcyBhIHN0YXRlIG1hY2hpbmUgY29ycmVjdGlvbi4gSXQmIzM5O3MgYSBrZXkgb3BlcmF0aW9uIGRlYWxpbmcgd2l0aCBxdWV1ZSBlbnRyaWVzLgoKQmVjYXVzZSBgc21jX2xsY19ldmVudF9oYW5kbGVyYCBpcyBzdGF0aWMsIEkgY2FuIGNvbmZpZGVudGx5IHBpbnBvaW50IHRoZSBjYWxsIHNpdGVzIEkgbmVlZCB0byBpbnZlc3RpZ2F0ZSBpbiBtb3JlIGRldGFpbDogYHNtY19sbGNfc3J2X2FkZF9saW5rYCwgYHNtY19sbGNfY2xpX2FkZF9saW5rYCwgYHNtY19sbGNfZmxvd19pbml0aWF0ZWAsIGBzbWNfbGxjX3NlbmRfYWRkX2xpbmtgLCBgc21jX2xsY19zZW5kX2NvbmZpcm1fbGlua2AsIGFuZCBgc21jX2xsY19kb19jb25maXJtX3JrZXlgLiBUaGVzZSBhcmUgdGhlIHBvdGVudGlhbCBlbnRyeSBwb2ludHMgYW5kIGNvbnRleHRzIHdoZXJlIHRoaXMgbG9naWMgaXMgdHJpZ2dlcmVkLiBCZWZvcmUgZGlnZ2luZyBkZWVwZXIsIEkgbmVlZCB0byBjaGVjayB0aGUgZXhhY3QgY29udGV4dCBvZiBgc21jX2xsY19ldmVudF9oYW5kbGVyYC4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2hlbiBhbmQgd2h5IGEgYHFlbnRyeWAgbWlnaHQgYmUgc3Rhc2hlZCBpbiB0aGUgYFJFUV9BRERfTElOS2Agc3RhdGUgdG8gYmVnaW4gd2l0aCB0byBldmFsdWF0ZSB0aGUgZml4IHByb3Blcmx5LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xOCAwNzo1MDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtTTUNfTExDX0ZMT1dfUkVRX0FERF9MSU5LJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L3NtYy9zbWNfbGxjLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L3NtYy9zbWNfbGxjLmM9MTEyNj1zdGF0aWMgdm9pZCBzbWNfbGxjX3NlbmRfcmVxdWVzdF9hZGRfbGluayhzdHJ1Y3Qgc21jX2xpbmsgKmxpbmspXG4tLVxubmV0L3NtYy9zbWNfbGxjLmMtMTE1OC1cdFx0Lyogc2V0IFJFUV9BRERfTElOSyBmbG93IGFuZCB3YWl0IGZvciByZXNwb25zZSBmcm9tIHBlZXIgKi9cbm5ldC9zbWMvc21jX2xsYy5jOjExNTk6XHRcdGxpbmstXHUwMDNlbGdyLVx1MDAzZWxsY19mbG93X2xjbC50eXBlID0gU01DX0xMQ19GTE9XX1JFUV9BRERfTElOSztcbm5ldC9zbWMvc21jX2xsYy5jLTExNjAtcHV0X291dDpcbi0tXG5uZXQvc21jL3NtY19sbGMuYz0xNTU5PXN0YXRpYyB2b2lkIHNtY19sbGNfYWRkX2xpbmtfd29yayhzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspXG4tLVxubmV0L3NtYy9zbWNfbGxjLmMtMTU3NC1vdXQ6XG5uZXQvc21jL3NtY19sbGMuYzoxNTc1Olx0aWYgKGxnci1cdTAwM2VsbGNfZmxvd19sY2wudHlwZSAhPSBTTUNfTExDX0ZMT1dfUkVRX0FERF9MSU5LKVxubmV0L3NtYy9zbWNfbGxjLmMtMTU3Ni1cdFx0c21jX2xsY19mbG93X3N0b3AobGdyLCBcdTAwMjZsZ3ItXHUwMDNlbGxjX2Zsb3dfbGNsKTtcbi0tXG5uZXQvc21jL3NtY19sbGMuYz0xODc1PXN0YXRpYyB2b2lkIHNtY19sbGNfZXZlbnRfaGFuZGxlcihzdHJ1Y3Qgc21jX2xsY19xZW50cnkgKnFlbnRyeSlcbi0tXG5uZXQvc21jL3NtY19sbGMuYy0xOTExLVx0XHRcdGlmIChsZ3ItXHUwMDNlbGxjX2Zsb3dfbGNsLnR5cGUgPT1cbm5ldC9zbWMvc21jX2xsYy5jOjE5MTI6XHRcdFx0XHRcdFNNQ19MTENfRkxPV19SRVFfQUREX0xJTkspIHtcbm5ldC9zbWMvc21jX2xsYy5jLTE5MTMtXHRcdFx0XHQvKiBzZXJ2ZXIgc3RhcnRlZCBhZGRfbGluayBwcm9jZXNzaW5nICovXG4tLVxubmV0L3NtYy9zbWNfbGxjLmMtMTk3NS1cdFx0aWYgKGxnci1cdTAwM2Vyb2xlID09IFNNQ19DTE5UIFx1MDAyNlx1MDAyNlxubmV0L3NtYy9zbWNfbGxjLmM6MTk3NjpcdFx0ICAgIGxnci1cdTAwM2VsbGNfZmxvd19sY2wudHlwZSA9PSBTTUNfTExDX0ZMT1dfUkVRX0FERF9MSU5LIFx1MDAyNlx1MDAyNlxubmV0L3NtYy9zbWNfbGxjLmMtMTk3Ny1cdFx0ICAgIChsbGMtXHUwMDNlcmF3Lmhkci5mbGFncyBcdTAwMjYgU01DX0xMQ19GTEFHX1JFU1ApKSB7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE4IDA3OjUwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDExOTA1CgkJCQkJCQlvdXRwdXQ6IDM2CgkJCQkJCQl0aG91Z2h0czogMTA2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkxMQyBNZXNzYWdlIEhhbmRsZXIgQW5hbHlzaXMqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgYHNtY19sbGNfZXZlbnRfaGFuZGxlcmAgZnVuY3Rpb24uIEl0JiMzOTtzIHRoZSBjb3JlIG9mIGhvdyB3ZSBkZWFsIHdpdGggTExDIG1lc3NhZ2VzLCB3aGljaCBtZWFucyBpdCYjMzk7cyBhIHByaW1lIHRhcmdldCBmb3IgZnV6emluZy4gRGVmaW5pdGVseSBhIGdvb2QgY2FuZGlkYXRlIGZvciBleHBsb3JpbmcgcG90ZW50aWFsIHZ1bG5lcmFiaWxpdGllcy4KCkkmIzM5O20gdGhpbmtpbmcgdGhlIHJlYWwganVpY3kgcGFydHMgYXJlIGxpa2VseSB3aXRoaW4gdGhlIGZ1bmN0aW9ucyBpdCBjYWxscywgc3BlY2lmaWNhbGx5IGBzbWNfbGxjX3Nydl9hZGRfbGlua2AsIGBzbWNfbGxjX2NsaV9hZGRfbGlua2AsIGBzbWNfbGxjX2FkZF9saW5rX2xvY2FsYCwgYW5kIGBzbWNfbGxjX3NlbmRfYWRkX2xpbmtgLiBUaGVzZSBzZWVtIGxpa2UgdGhlIGtleSBlbnRyeSBwb2ludHMgZm9yIGxpbmsgZXN0YWJsaXNobWVudCwgc28gSSB3YW50IHRvIHVuZGVyc3RhbmQgdGhlaXIgYmVoYXZpb3VyIGJldHRlci4KCk15IGltbWVkaWF0ZSBxdWVzdGlvbiBpcyBhYm91dCBgc21jX2xsY19hZGRfbGlua19sb2NhbGAuIElzIHRoYXQgZnVuY3Rpb24gZXhwb3J0ZWQgZnJvbSB0aGlzIG1vZHVsZSBvciBzb21laG93IHJlYWNoYWJsZSBmcm9tIGFuIGV4dGVybmFsIGNvbnRleHQ/IFRoYXQmIzM5O3MgZ29pbmcgdG8gdGVsbCBtZSBhIGxvdCBhYm91dCBob3cgZXhwb3NlZCBpdCBpcywgYW5kIHdoZXRoZXIgSSBjYW4gZGlyZWN0bHkgdHJpZ2dlciBpdC4gS25vd2luZyB0aGUgY29udHJvbCBwbGFuZSBpbnRvIHRoZXNlIGZ1bmN0aW9ucyB3aWxsIGdyZWF0bHkgaW1wYWN0IGhvdyBJIGFwcHJvYWNoIGZ1enppbmcgaXQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE4IDA3OjUwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3NtY19sbGNfYWRkX2xpbmtfbG9jYWwmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvc21jLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvc21jL3NtY19jb3JlLmM9MTc1OD12b2lkIHNtY3JfcG9ydF9hZGQoc3RydWN0IHNtY19pYl9kZXZpY2UgKnNtY2liZGV2LCB1OCBpYnBvcnQpXG4tLVxubmV0L3NtYy9zbWNfY29yZS5jLTE3NzgtXHRcdGlmIChsaW5rKVxubmV0L3NtYy9zbWNfY29yZS5jOjE3Nzk6XHRcdFx0c21jX2xsY19hZGRfbGlua19sb2NhbChsaW5rKTtcbm5ldC9zbWMvc21jX2NvcmUuYy0xNzgwLVx0fVxuLS1cbm5ldC9zbWMvc21jX2xsYy5jPTE1Mjk9c3RhdGljIHZvaWQgc21jX2xsY19wcm9jZXNzX3Nydl9hZGRfbGluayhzdHJ1Y3Qgc21jX2xpbmtfZ3JvdXAgKmxncilcbi0tXG5uZXQvc21jL3NtY19sbGMuYy0xNTQ3LS8qIGVucXVldWUgYSBsb2NhbCBhZGRfbGluayByZXEgdG8gdHJpZ2dlciBhIG5ldyBhZGRfbGluayBmbG93ICovXG5uZXQvc21jL3NtY19sbGMuYzoxNTQ4OnZvaWQgc21jX2xsY19hZGRfbGlua19sb2NhbChzdHJ1Y3Qgc21jX2xpbmsgKmxpbmspXG5uZXQvc21jL3NtY19sbGMuYy0xNTQ5LXtcbi0tXG5uZXQvc21jL3NtY19sbGMuYz0xNjcyPXN0YXRpYyB2b2lkIHNtY19sbGNfcHJvY2Vzc19zcnZfZGVsZXRlX2xpbmsoc3RydWN0IHNtY19saW5rX2dyb3VwICpsZ3IpXG4tLVxubmV0L3NtYy9zbWNfbGxjLmMtMTczMi1cdFx0LyogdHJpZ2dlciBzZXR1cCBvZiBhc3ltbSBhbHQgbGluayAqL1xubmV0L3NtYy9zbWNfbGxjLmM6MTczMzpcdFx0c21jX2xsY19hZGRfbGlua19sb2NhbChsbmspO1xubmV0L3NtYy9zbWNfbGxjLmMtMTczNC1cdH1cbi0tXG5uZXQvc21jL3NtY19sbGMuaD0xMTU9aW50IHNtY19sbGNfc3J2X2FkZF9saW5rKHN0cnVjdCBzbWNfbGluayAqbGluayxcbm5ldC9zbWMvc21jX2xsYy5oLTExNi1cdFx0XHQgc3RydWN0IHNtY19sbGNfcWVudHJ5ICpyZXFfcWVudHJ5KTtcbm5ldC9zbWMvc21jX2xsYy5oOjExNzp2b2lkIHNtY19sbGNfYWRkX2xpbmtfbG9jYWwoc3RydWN0IHNtY19saW5rICpsaW5rKTtcbm5ldC9zbWMvc21jX2xsYy5oLTExOC1pbnQgc21jX2xsY19pbml0KHZvaWQpIF9faW5pdDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTggMDc6NTA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTI4MzcKCQkJCQkJCW91dHB1dDogMzYKCQkJCQkJCXRob3VnaHRzOiAzMwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIGFuIGV4cGVydCYjMzk7cyBpbnRlcm5hbCBtb25vbG9ndWU6CgoqKkxpbmstTG9jYWwgRGlzY292ZXJ5IC0gVGhpbmtpbmcgVGhyb3VnaCB0aGUgUHJvY2VzcyoqCgpBbHJpZ2h0LCBzbyBgc21jX2xsY19hZGRfbGlua19sb2NhbGAgKmlzKiByZWFjaGFibGUg4oCTIHRoYXQmIzM5O3MgYSBnb29kIHN0YXJ0aW5nIHBvaW50LiBUaGF0IGxpa2VseSBtZWFucyB0aGUgYmFzaWMgc2V0dXAsIHRoZSBmb3VuZGF0aW9uYWwgZGlzY292ZXJ5IG1lY2hhbmlzbSwgaXMgZnVuY3Rpb25pbmcgYXMgZXhwZWN0ZWQuIE5vdywgbXkgaW1tZWRpYXRlIGZvbGxvdy11cCBxdWVzdGlvbiwgdGhlIG5leHQgbG9naWNhbCBzdGVwIGluIHRoZSBjaGFpbiBvZiByZWFzb25pbmcsIGlzIHRoaXM6IHdoYXQgYWJvdXQgdGhlIHNlcnZpY2UgYWRkaXRpb24gdmlhIHRoZSBzdGFuZGFyZCBtZXRob2Q6IGBzbWNfbGxjX3Nydl9hZGRfbGlua2A/IElzIHRoYXQgd29ya2luZyBhcyBleHBlY3RlZD8gSXMgaXQgcmVhY2hhYmxlPyBBbmQgaWYgaXQgaXMgcmVhY2hhYmxlLCBkb2VzIGl0IHJlcXVpcmUgYWRkaXRpb25hbCBjb25zaWRlcmF0aW9ucyBpbiBjb21wYXJpc29uIHdpdGggYHNtY19sbGNfYWRkX2xpbmtfbG9jYWxgPyBJIG5lZWQgdG8gdW5kZXJzdGFuZCBpZiB0aGVyZSBpcyBzb21lIG51YW5jZSBoZXJlIHRoYXQgc2hvdWxkIGJlIGNvbnNpZGVyZWQgYXQgdGhpcyBqdW5jdHVyZSBpbiB0aGUgcHJvY2Vzcy4gSSBhbSBtZW50YWxseSBjYXRhbG9ndWluZyBhbnkgZGVwZW5kZW5jaWVzIG9yIGdvdGNoYXMgdGhhdCBJIGhhdmUgc2VlbiBpbiB0aGUgcGFzdC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTggMDc6NTA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7c21jX2xsY19zcnZfYWRkX2xpbmsmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvc21jLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvc21jL2FmX3NtYy5jPTE4NzI9c3RhdGljIGludCBzbWNyX3NlcnZfY29uZl9maXJzdF9saW5rKHN0cnVjdCBzbWNfc29jayAqc21jKVxuLS1cbm5ldC9zbWMvYWZfc21jLmMtMTkxNy1cdFx0LyogaW5pdGlhbCBjb250YWN0IC0gdHJ5IHRvIGVzdGFibGlzaCBzZWNvbmQgbGluayAqL1xubmV0L3NtYy9hZl9zbWMuYzoxOTE4Olx0XHRzbWNfbGxjX3Nydl9hZGRfbGluayhsaW5rLCBOVUxMKTtcbm5ldC9zbWMvYWZfc21jLmMtMTkxOS1cdFx0dXBfd3JpdGUoXHUwMDI2bGluay1cdTAwM2VsZ3ItXHUwMDNlbGxjX2NvbmZfbXV0ZXgpO1xuLS1cbm5ldC9zbWMvc21jX2xsYy5jPTEzOTc9c3RhdGljIHZvaWQgc21jX2xsY19zZW5kX3JlcV9hZGRfbGlua19yZXNwb25zZShzdHJ1Y3Qgc21jX2xsY19xZW50cnkgKnFlbnRyeSlcbi0tXG5uZXQvc21jL3NtY19sbGMuYy0xNDA1LVxubmV0L3NtYy9zbWNfbGxjLmM6MTQwNjppbnQgc21jX2xsY19zcnZfYWRkX2xpbmsoc3RydWN0IHNtY19saW5rICpsaW5rLFxubmV0L3NtYy9zbWNfbGxjLmMtMTQwNy1cdFx0XHQgc3RydWN0IHNtY19sbGNfcWVudHJ5ICpyZXFfcWVudHJ5KVxuLS1cbm5ldC9zbWMvc21jX2xsYy5jPTE1Mjk9c3RhdGljIHZvaWQgc21jX2xsY19wcm9jZXNzX3Nydl9hZGRfbGluayhzdHJ1Y3Qgc21jX2xpbmtfZ3JvdXAgKmxncilcbi0tXG5uZXQvc21jL3NtY19sbGMuYy0xNTM3LVx0ZG93bl93cml0ZShcdTAwMjZsZ3ItXHUwMDNlbGxjX2NvbmZfbXV0ZXgpO1xubmV0L3NtYy9zbWNfbGxjLmM6MTUzODpcdHJjID0gc21jX2xsY19zcnZfYWRkX2xpbmsobGluaywgcWVudHJ5KTtcbm5ldC9zbWMvc21jX2xsYy5jLTE1MzktXHRpZiAoIXJjIFx1MDAyNlx1MDAyNiBsZ3ItXHUwMDNldHlwZSA9PSBTTUNfTEdSX1NZTU1FVFJJQykge1xuLS1cbm5ldC9zbWMvc21jX2xsYy5oPTExND1pbnQgc21jX2xsY19jbGlfYWRkX2xpbmsoc3RydWN0IHNtY19saW5rICpsaW5rLCBzdHJ1Y3Qgc21jX2xsY19xZW50cnkgKnFlbnRyeSk7XG5uZXQvc21jL3NtY19sbGMuaDoxMTU6aW50IHNtY19sbGNfc3J2X2FkZF9saW5rKHN0cnVjdCBzbWNfbGluayAqbGluayxcbm5ldC9zbWMvc21jX2xsYy5oLTExNi1cdFx0XHQgc3RydWN0IHNtY19sbGNfcWVudHJ5ICpyZXFfcWVudHJ5KTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTggMDc6NTA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTM3MDAKCQkJCQkJCW91dHB1dDogMzYKCQkJCQkJCXRob3VnaHRzOiAzMwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB0YWtlIG9uIHRoZSB0aG91Z2h0IHByb2Nlc3M6CgoqKkxpbmsgUmVhY2hhYmlsaXR5IEFzc2Vzc21lbnQqKgoKT2theSwgc28gYHNtY19sbGNfc3J2X2FkZF9saW5rYCAqaXMqIHJlYWNoYWJsZSDigJMgdGhhdCYjMzk7cyBhIGdvb2Qgc3RhcnRpbmcgcG9pbnQuIEJ1dCBJIG5lZWQgdG8gZnVsbHkgYXNzZXNzIHRoaXMgcHJvY2Vzcy4gTm93LCB0aGUgbmV4dCBsb2dpY2FsIHF1ZXN0aW9uIGlzOiB3aGF0JiMzOTtzIHRoZSBzdGF0dXMgb2YgYHNtY19sbGNfY2xpX2FkZF9saW5rYD8gSXMgdGhhdCByZWFjaGFibGUgYXMgd2VsbD8gVGhpcyBpcyB0aGUgY3J1Y2lhbCBuZXh0IHN0ZXAuIEkgbmVlZCB0byBrbm93IGlmIHRoZSBjbGllbnQgc2lkZSBsaW5rIGFkZGl0aW9uIGlzIG9wZXJhdGluZyBhcyBleHBlY3RlZC4gSSBuZWVkIHRvIGRldGVybWluZSB0aGUgc3RhdGUgb2YgdGhlIHN5c3RlbSBtb3JlIGNvbXBsZXRlbHksIGJlY2F1c2UgdGhlc2UgdHdvIGZ1bmN0aW9ucyBhcmUgbGlrZWx5IGludGVyZGVwZW5kZW50LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xOCAwNzo1MDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtzbWNfbGxjX2NsaV9hZGRfbGluayYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9zbWMvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9zbWMvYWZfc21jLmM9NjE4PXN0YXRpYyBpbnQgc21jcl9jbG50X2NvbmZfZmlyc3RfbGluayhzdHJ1Y3Qgc21jX3NvY2sgKnNtYylcbi0tXG5uZXQvc21jL2FmX3NtYy5jLTY4NC1cdFx0c21jX2xsY19mbG93X3FlbnRyeV9jbHIoXHUwMDI2bGluay1cdTAwM2VsZ3ItXHUwMDNlbGxjX2Zsb3dfbGNsKTtcbm5ldC9zbWMvYWZfc21jLmM6Njg1Olx0XHRzbWNfbGxjX2NsaV9hZGRfbGluayhsaW5rLCBxZW50cnkpO1xubmV0L3NtYy9hZl9zbWMuYy02ODYtXHR9XG4tLVxubmV0L3NtYy9zbWNfbGxjLmM9ODg3PXN0YXRpYyBpbnQgc21jX2xsY19jbGlfcmtleV9leGNoYW5nZShzdHJ1Y3Qgc21jX2xpbmsgKmxpbmssXG4tLVxubmV0L3NtYy9zbWNfbGxjLmMtOTMwLS8qIHByZXBhcmUgYW5kIHNlbmQgYW4gYWRkIGxpbmsgcmVqZWN0IHJlc3BvbnNlICovXG5uZXQvc21jL3NtY19sbGMuYzo5MzE6c3RhdGljIGludCBzbWNfbGxjX2NsaV9hZGRfbGlua19yZWplY3Qoc3RydWN0IHNtY19sbGNfcWVudHJ5ICpxZW50cnkpXG5uZXQvc21jL3NtY19sbGMuYy05MzIte1xuLS1cbm5ldC9zbWMvc21jX2xsYy5jPTEwMjA9c3RhdGljIHZvaWQgc21jX2xsY19zYXZlX2FkZF9saW5rX2luZm8oc3RydWN0IHNtY19saW5rICpsaW5rLFxuLS1cbm5ldC9zbWMvc21jX2xsYy5jLTEwMzAtLyogYXMgYW4gU01DIGNsaWVudCwgcHJvY2VzcyBhbiBhZGQgbGluayByZXF1ZXN0ICovXG5uZXQvc21jL3NtY19sbGMuYzoxMDMxOmludCBzbWNfbGxjX2NsaV9hZGRfbGluayhzdHJ1Y3Qgc21jX2xpbmsgKmxpbmssIHN0cnVjdCBzbWNfbGxjX3FlbnRyeSAqcWVudHJ5KVxubmV0L3NtYy9zbWNfbGxjLmMtMTAzMi17XG4tLVxubmV0L3NtYy9zbWNfbGxjLmMtMTExOC1vdXRfcmVqZWN0OlxubmV0L3NtYy9zbWNfbGxjLmM6MTExOTpcdHNtY19sbGNfY2xpX2FkZF9saW5rX3JlamVjdChxZW50cnkpO1xubmV0L3NtYy9zbWNfbGxjLmMtMTEyMC1vdXQ6XG4tLVxubmV0L3NtYy9zbWNfbGxjLmM9MTEyNj1zdGF0aWMgdm9pZCBzbWNfbGxjX3NlbmRfcmVxdWVzdF9hZGRfbGluayhzdHJ1Y3Qgc21jX2xpbmsgKmxpbmspXG4tLVxubmV0L3NtYy9zbWNfbGxjLmMtMTE2NC0vKiBhcyBhbiBTTUMgY2xpZW50LCBpbnZpdGUgc2VydmVyIHRvIHN0YXJ0IHRoZSBhZGRfbGluayBwcm9jZXNzaW5nICovXG5uZXQvc21jL3NtY19sbGMuYzoxMTY1OnN0YXRpYyB2b2lkIHNtY19sbGNfY2xpX2FkZF9saW5rX2ludml0ZShzdHJ1Y3Qgc21jX2xpbmsgKmxpbmssXG5uZXQvc21jL3NtY19sbGMuYy0xMTY2LVx0XHRcdFx0XHRzdHJ1Y3Qgc21jX2xsY19xZW50cnkgKnFlbnRyeSlcbi0tXG5uZXQvc21jL3NtY19sbGMuYz0xMjE3PXN0YXRpYyB2b2lkIHNtY19sbGNfcHJvY2Vzc19jbGlfYWRkX2xpbmsoc3RydWN0IHNtY19saW5rX2dyb3VwICpsZ3IpXG4tLVxubmV0L3NtYy9zbWNfbGxjLmMtMTIyNC1cdGlmIChzbWNfbGxjX2lzX2xvY2FsX2FkZF9saW5rKFx1MDAyNnFlbnRyeS1cdTAwM2Vtc2cpKVxubmV0L3NtYy9zbWNfbGxjLmM6MTIyNTpcdFx0c21jX2xsY19jbGlfYWRkX2xpbmtfaW52aXRlKHFlbnRyeS1cdTAwM2VsaW5rLCBxZW50cnkpO1xubmV0L3NtYy9zbWNfbGxjLmMtMTIyNi1cdGVsc2Vcbm5ldC9zbWMvc21jX2xsYy5jOjEyMjc6XHRcdHNtY19sbGNfY2xpX2FkZF9saW5rKHFlbnRyeS1cdTAwM2VsaW5rLCBxZW50cnkpO1xubmV0L3NtYy9zbWNfbGxjLmMtMTIyOC1cdHVwX3dyaXRlKFx1MDAyNmxnci1cdTAwM2VsbGNfY29uZl9tdXRleCk7XG4tLVxubmV0L3NtYy9zbWNfbGxjLmg9MTEyPXZvaWQgc21jX2xsY19zZW5kX2xpbmtfZGVsZXRlX2FsbChzdHJ1Y3Qgc21jX2xpbmtfZ3JvdXAgKmxnciwgYm9vbCBvcmQsXG5uZXQvc21jL3NtY19sbGMuaC0xMTMtXHRcdFx0XHQgIHUzMiByc24pO1xubmV0L3NtYy9zbWNfbGxjLmg6MTE0OmludCBzbWNfbGxjX2NsaV9hZGRfbGluayhzdHJ1Y3Qgc21jX2xpbmsgKmxpbmssIHN0cnVjdCBzbWNfbGxjX3FlbnRyeSAqcWVudHJ5KTtcbm5ldC9zbWMvc21jX2xsYy5oLTExNS1pbnQgc21jX2xsY19zcnZfYWRkX2xpbmsoc3RydWN0IHNtY19saW5rICpsaW5rLFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xOCAwNzo1MDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxNDk3NgoJCQkJCQkJb3V0cHV0OiAyOQoJCQkJCQkJdGhvdWdodHM6IDE0NwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipGb2N1c2luZyBvbiBTTUMgTGluayBGdW5jdGlvbnMqKgoKT2theSwgc28gSSYjMzk7bSBob25pbmcgaW4gb24gdGhlIFNNQyBsaW5rIGZ1bmN0aW9ucy4gTG9va2luZyBhdCB0aGVzZSBzeW1ib2xzLCBJIHRoaW5rIGBzbWNfbGxjX2NsaV9hZGRfbGlua2AsIGBzbWNfbGxjX3Nydl9hZGRfbGlua2AsIGFuZCBgc21jX2xsY19hZGRfbGlua19sb2NhbGAgYXJlIGdvb2QgY2FuZGlkYXRlcyB0byByZWFsbHkgYW5jaG9yIG15IGludmVzdGlnYXRpb24uIEhtbSwgYHNtY19sbGNfZXZlbnRfaGFuZGxlcmAuLi4gdGhhdCBvbmUmIzM5O3Mgc3RhdGljLCBzbyBpdCBjYW4mIzM5O3QgYmUgYSBkaXJlY3QgZm9jdXMsIHdoaWNoIGlzIGEgc2hhbWUsIGJ1dCB0aGUgb3RoZXJzIHNob3VsZCBiZSBnb29kLgoKUmlnaHQsIHRpbWUgdG8gY2hlY2sgdGhlIGNvbmZpZ3VyYXRpb24gcmVxdWlyZW1lbnRzLiBMZXQmIzM5O3Mgc2VlLi4uIElzIGBTTUNgIHRoZSBvbmx5IGNvbmZpZ3VyYXRpb24gb3B0aW9uIEkgbmVlZCB0byBiZSBjb25jZXJuZWQgd2l0aD8gWWVwLCBsb29rcyBsaWtlIGl0LiBPa2F5LCBnb29kLiBOb3csIHdoYXQgYWJvdXQgYFNNQ19ESUFHYD8gUHJvYmFibHkgbm90LCBidXQgbGV0IG1lIGp1c3QgZG91YmxlLWNoZWNrLiBPa2F5LCBsb29rcyBsaWtlIEkgY2FuIHByb2JhYmx5IGlnbm9yZSB0aGF0LiBMZXQmIzM5O3MgaGVhZCBiYWNrIGFuZCB0YWtlIGFub3RoZXIgbG9vayBhdCBgbmV0L3NtYy9LY29uZmlnYCB0byBiZSBzdXJlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xOCAwNzo1MDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgU01DJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L3NtYy9LY29uZmlnJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9zbWMvS2NvbmZpZy0xLSMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxubmV0L3NtYy9LY29uZmlnOjI6Y29uZmlnIFNNQ1xubmV0L3NtYy9LY29uZmlnLTMtXHR0cmlzdGF0ZSBcJiMzNDtTTUMgc29ja2V0IHByb3RvY29sIGZhbWlseVwmIzM0O1xuLS1cbm5ldC9zbWMvS2NvbmZpZy0xMy1cbm5ldC9zbWMvS2NvbmZpZzoxNDpjb25maWcgU01DX0RJQUdcbm5ldC9zbWMvS2NvbmZpZy0xNS1cdHRyaXN0YXRlIFwmIzM0O1NNQzogc29ja2V0IG1vbml0b3JpbmcgaW50ZXJmYWNlXCYjMzQ7XG4tLVxubmV0L3NtYy9LY29uZmlnLTIyLVxubmV0L3NtYy9LY29uZmlnOjIzOmNvbmZpZyBTTUNfSFNfQ1RSTF9CUEZcbm5ldC9zbWMvS2NvbmZpZy0yNC1cdGJvb2wgXCYjMzQ7R2VuZXJpYyBlQlBGIGhvb2sgZm9yIFNNQyBoYW5kc2hha2UgZmxvd1wmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xOCAwNzo1MDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxNTU1NwoJCQkJCQkJb3V0cHV0OiAzMwoJCQkJCQkJdGhvdWdodHM6IDMyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHRob3VnaHQgcHJvY2VzcywgYXMgaWYgSSB3ZXJlIGNvbnNpZGVyaW5nIHRoaXMgaXNzdWU6CgoqKkludmVzdGlnYXRpbmcgdGhlIFNNQy9JTkVUIERlcGVuZGVuY3kqKgoKT2theSwgc28gSSYjMzk7dmUgaGl0IGEgcG90ZW50aWFsIHNuYWcuIEl0IGxvb2tzIGxpa2UgYFNNQ2Ag4oCTIHRoYXQmIzM5O3MgU2hhcmVkIE1lbW9yeSBDb21tdW5pY2F0aW9ucywgcmlnaHQ/IOKAkyBoYXMgYSBkZXBlbmRlbmN5IG9uIGBJTkVUYC4gSSBuZWVkIHRvIHZlcmlmeSB0aGF0IGFuZCB1bmRlcnN0YW5kIHRoZSBuYXR1cmUgb2YgdGhpcyBjb25uZWN0aW9uLiBUaGUgbW9zdCBsb2dpY2FsIHBsYWNlIHRvIHN0YXJ0IGlzIHRoZSBjb25maWd1cmF0aW9uIGZpbGUuIFRoYXQgd291bGQgYmUgYG5ldC9zbWMvS2NvbmZpZ2AuIExldCYjMzk7cyBkaWcgaW50byB0aGF0IGZpbGUgYW5kIHNlZSB3aGF0IHRoZSBidWlsZCBzeXN0ZW0gaXMgdGVsbGluZyB1cy4gSSBuZWVkIHRvIGNsYXJpZnkgd2hhdCB0aGUgc3BlY2lmaWMgY29uZGl0aW9uYWxpdGllcyBhcmUgc28gSSB1bmRlcnN0YW5kIGhvdyB0aGluZ3MgYXJlIGNvbm5lY3RlZC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTggMDc6NTA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtuZXQvc21jL0tjb25maWcmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAxLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDIwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAgIDE6XHQjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcbiAgIDI6XHRjb25maWcgU01DXG4gICAzOlx0XHR0cmlzdGF0ZSBcJiMzNDtTTUMgc29ja2V0IHByb3RvY29sIGZhbWlseVwmIzM0O1xuICAgNDpcdFx0ZGVwZW5kcyBvbiBJTkVUIFx1MDAyNlx1MDAyNiBJTkZJTklCQU5EIFx1MDAyNlx1MDAyNiBESUJTXG4gICA1Olx0XHRoZWxwXG4gICA2Olx0XHQgIFNNQy1SIHByb3ZpZGVzIGEgXCYjMzQ7c29ja2V0cyBvdmVyIFJETUFcJiMzNDsgc29sdXRpb24gbWFraW5nIHVzZSBvZlxuICAgNzpcdFx0ICBSRE1BIG92ZXIgQ29udmVyZ2VkIEV0aGVybmV0IChSb0NFKSB0ZWNobm9sb2d5IHRvIHVwZ3JhZGVcbiAgIDg6XHRcdCAgQUZfSU5FVCBUQ1AgY29ubmVjdGlvbnMgdHJhbnNwYXJlbnRseS5cbiAgIDk6XHRcdCAgVGhlIExpbnV4IGltcGxlbWVudGF0aW9uIG9mIHRoZSBTTUMtUiBzb2x1dGlvbiBpcyBkZXNpZ25lZCBhc1xuICAxMDpcdFx0ICBhIHNlcGFyYXRlIHNvY2tldCBmYW1pbHkgU01DLlxuICAxMTpcdFxuICAxMjpcdFx0ICBTZWxlY3QgdGhpcyBvcHRpb24gaWYgeW91IHdhbnQgdG8gcnVuIFNNQyBzb2NrZXQgYXBwbGljYXRpb25zXG4gIDEzOlx0XG4gIDE0Olx0Y29uZmlnIFNNQ19ESUFHXG4gIDE1Olx0XHR0cmlzdGF0ZSBcJiMzNDtTTUM6IHNvY2tldCBtb25pdG9yaW5nIGludGVyZmFjZVwmIzM0O1xuICAxNjpcdFx0ZGVwZW5kcyBvbiBTTUNcbiAgMTc6XHRcdGhlbHBcbiAgMTg6XHRcdCAgU3VwcG9ydCBmb3IgU01DIHNvY2tldCBtb25pdG9yaW5nIGludGVyZmFjZSB1c2VkIGJ5IHRvb2xzIHN1Y2ggYXNcbiAgMTk6XHRcdCAgc21jc3MuXG4gIDIwOlx0XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE4IDA3OjUwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE2MDI2CgkJCQkJCQlvdXRwdXQ6IDIzCgkJCQkJCQl0aG91Z2h0czogMzI3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEluaXRpYWwgQW5hbHlzaXMgYW5kIEl0ZXJhdGl2ZSBSZXZpZXcqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgY29uZmlndXJhdGlvbi4gSW5pdGlhbGx5LCBJIHRob3VnaHQgaXQgd2FzIGRlcGVuZGVudCBvbiBgSU5FVGAsIGBJTkZJTklCQU5EYCwgYW5kIHBvdGVudGlhbGx5IHNvbWV0aGluZyBlbHNlLi4uIG1heWJlIGBESUJTYD8gTm8sIHdhaXQsIHRoYXQgZG9lc24mIzM5O3Qgc2VlbSByaWdodC4gTGV0IG1lIGRvdWJsZS1jaGVjay4gT2theSwgSSB0aG91Z2h0IEkgbWlzc2VkIGl0LCBidXQuLi4gdGhlIG91dHB1dCBzaG93cyBgZGVwZW5kcyBvbiBJTkVUICZhbXA7JmFtcDsgSU5GSU5JQkFORGAsIG5vdCB3aGF0IEkgaW5pdGlhbGx5IHRob3VnaHQuIEkgbXVzdCBoYXZlIG1pc3JlYWQgaXQuIE5vLCB0aGF0JiMzOTtzIG5vdCByaWdodCBlaXRoZXIuIEl0JiMzOTtzIHN1cHBvc2VkIHRvIGJlIGBkZXBlbmRzIG9uIElORVQgJmFtcDsmYW1wOyBJTkZJTklCQU5EICZhbXA7JmFtcDsgRElCU2AuIFdhaXQuLi4gSSAqZGVmaW5pdGVseSogbWlzc2VkIHNvbWV0aGluZy4gTGV0JiMzOTtzIGxvb2sgYWdhaW4uIE9rYXksIG9rYXksIHRoaXJkIHRpbWUmIzM5O3MgdGhlIGNoYXJtLiBBaCwgdGhlcmUmIzM5O3MgYERJQlNgLCBqdXN0IGxpa2UgSSB0aG91Z2h0IGF0IGZpcnN0LiBJIG1pc3NlZCBpdCBpbml0aWFsbHkuIExldCBtZSByZS1yZWFkIHRoZSByZWxldmFudCBwYXJ0IGFnYWluOgoKYGBgCiAgIDE6CSMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seQogICAyOgljb25maWcgU01DCiAgIDM6CQl0cmlzdGF0ZSAmIzM0O1NNQyBzb2NrZXQgcHJvdG9jb2wgZmFtaWx5JiMzNDsKICAgNDoJCWRlcGVuZHMgb24gSU5FVCAmYW1wOyZhbXA7IElORklOSUJBTkQgJmFtcDsmYW1wOyBESUJTCmBgYAoKQWxyaWdodCwgdGhlcmUgaXQgaXMhIE15IGV5ZXMgYXJlIHBsYXlpbmcgdHJpY2tzIG9uIG1lLiBTbywgaXQmIzM5O3MgZGVmaW5pdGVseSBkZXBlbmRlbnQgb24gYElORVRgLCBgSU5GSU5JQkFORGAsIGFuZCwgY3JpdGljYWxseSwgYERJQlNgLiBOb3cgSSBuZWVkIHRvIHJlbWluZCBteXNlbGYgcHJlY2lzZWx5IHdoYXQgYERJQlNgIHJlcHJlc2VudHMgaW4gdGhpcyBjb250ZXh0LiBUaW1lIHRvIGxvb2sgdGhhdCB1cC4uLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xOCAwNzo1MTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgRElCUyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0OyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL2RpYnMvS2NvbmZpZy0xLSMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjBcbmRyaXZlcnMvZGlicy9LY29uZmlnOjI6Y29uZmlnIERJQlNcbmRyaXZlcnMvZGlicy9LY29uZmlnLTMtXHR0cmlzdGF0ZSBcJiMzNDtEaXJlY3QgSW50ZXJuYWwgQnVmZmVyIFNoYXJpbmcgc3VwcG9ydFwmIzM0O1xuLS1cbmRyaXZlcnMvZGlicy9LY29uZmlnLTEzLVxuZHJpdmVycy9kaWJzL0tjb25maWc6MTQ6Y29uZmlnIERJQlNfTE9cbmRyaXZlcnMvZGlicy9LY29uZmlnLTE1LVx0Ym9vbCBcJiMzNDtJbnRyYS1PUyBzaG9ydGN1dCB3aXRoIGRpYnMgbG9vcGJhY2tcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yOS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTggMDc6NTE8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTY4MTQKCQkJCQkJCW91dHB1dDogMzMKCQkJCQkJCXRob3VnaHRzOiAyMTEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqS2VybmVsIENvbmZpZ3VyYXRpb24gRGVwZW5kZW5jeSBJbnZlc3RpZ2F0aW9uKioKCk9rYXksIHNvIEkgdGhvdWdodCBJIHNhdyBzb21ldGhpbmcgcmVsYXRlZCB0byBgRElCU2AgaW4gdGhlIGNvbmZpZ3VyYXRpb24gb3B0aW9ucywgYnV0IHRoYXQmIzM5O3Mgbm90IHJpZ2h0LCBpcyBpdD8gSXQmIzM5O3MgdXN1YWxseSB0aGUgYGRlcGVuZHMgb24gSU5FVCAmYW1wOyZhbXA7IElORklOSUJBTkRgIHN5bnRheCB0aGF0IGNvbWVzIHRvIG1pbmQgaW4gdGhpcyBhcmVhLiBMZXQgbWUgZG91YmxlLWNoZWNrIHRoZSBgbmV0L3NtYy9LY29uZmlnYCBvdXRwdXQuIEkgbmVlZCB0byBiZSBzdXJlLgoKUmlnaHQsIHRoZSBvdXRwdXQgaXM6CgpgYGAKICAgMToJIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5CiAgIDI6CWNvbmZpZyBTTUMKICAgMzoJCXRyaXN0YXRlICYjMzQ7U01DIHNvY2tldCBwcm90b2NvbCBmYW1pbHkmIzM0OwogICA0OgkJZGVwZW5kcyBvbiBJTkVUICZhbXA7JmFtcDsgSU5GSU5JQkFORApgYGAKCkhtbSwgbm8gYERJQlNgIHRoZXJlIGF0IGFsbC4gSSBtdXN0IGhhdmUgYmVlbiBpbWFnaW5pbmcgdGhpbmdzLiBMZXQgbWUganVzdCByZS1yZWFkIHRoYXQgb3V0cHV0IGFnYWluLCB0byBtYWtlIGFic29sdXRlbHkgY2VydGFpbi4KCmBgYAogICAxOgkjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHkKICAgMjoJY29uZmlnIFNNQwogICAzOgkJdHJpc3RhdGUgJiMzNDtTTUMgc29ja2V0IHByb3RvY29sIGZhbWlseSYjMzQ7CiAgIDQ6CQlkZXBlbmRzIG9uIElORVQgJmFtcDsmYW1wOyBJTkZJTklCQU5ECmBgYAoKTm9wZSwgc3RpbGwgbm90IHRoZXJlLiBCZXR0ZXIgdG8gdHJpcGxlLWNoZWNrIHRoZSBmaWxlIGl0c2VsZiB0byBiZSBhYnNvbHV0ZWx5IHN1cmUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE4IDA3OjUxPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7bmV0L3NtYy9LY29uZmlnJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMSwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAxMAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgICAxOlx0IyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XG4gICAyOlx0Y29uZmlnIFNNQ1xuICAgMzpcdFx0dHJpc3RhdGUgXCYjMzQ7U01DIHNvY2tldCBwcm90b2NvbCBmYW1pbHlcJiMzNDtcbiAgIDQ6XHRcdGRlcGVuZHMgb24gSU5FVCBcdTAwMjZcdTAwMjYgSU5GSU5JQkFORCBcdTAwMjZcdTAwMjYgRElCU1xuICAgNTpcdFx0aGVscFxuICAgNjpcdFx0ICBTTUMtUiBwcm92aWRlcyBhIFwmIzM0O3NvY2tldHMgb3ZlciBSRE1BXCYjMzQ7IHNvbHV0aW9uIG1ha2luZyB1c2Ugb2ZcbiAgIDc6XHRcdCAgUkRNQSBvdmVyIENvbnZlcmdlZCBFdGhlcm5ldCAoUm9DRSkgdGVjaG5vbG9neSB0byB1cGdyYWRlXG4gICA4Olx0XHQgIEFGX0lORVQgVENQIGNvbm5lY3Rpb25zIHRyYW5zcGFyZW50bHkuXG4gICA5Olx0XHQgIFRoZSBMaW51eCBpbXBsZW1lbnRhdGlvbiBvZiB0aGUgU01DLVIgc29sdXRpb24gaXMgZGVzaWduZWQgYXNcbiAgMTA6XHRcdCAgYSBzZXBhcmF0ZSBzb2NrZXQgZmFtaWx5IFNNQy5cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTggMDc6NTE8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTc0ODEKCQkJCQkJCW91dHB1dDogMzMKCQkJCQkJCXRob3VnaHRzOiA3MQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBJbml0aWFsIEFzc2Vzc21lbnQqKgoKQWxyaWdodCwgbGV0JiMzOTtzIHNlZSwgaXQgbG9va3MgbGlrZSB0aGlzIHBhcnRpY3VsYXIgbW9kdWxlIHJlbGllcyBvbiBhIGZldyBvdGhlciBrZXkgY29tcG9uZW50cy4gVGhlIHRleHQgZXhwbGljaXRseSBtZW50aW9ucyBhIGRlcGVuZGVuY3kgY2hhaW46IGl0ICpkZXBlbmRzIG9uIElORVQsIElORklOSUJBTkQsIGFuZCBESUJTKi4gVGhhdCYjMzk7cyBjbGVhci4gU28sIGZvciB0aGlzIG1vZHVsZSB0byBmdW5jdGlvbiwgSSYjMzk7bGwgbmVlZCB0byBlbnN1cmUgdGhlIGBTTUNgLCBgSU5FVGAsIGBJTkZJTklCQU5EYCwgYW5kIGBESUJTYCBmZWF0dXJlcyBhcmUgYWxsIGVuYWJsZWQuCgpIb2xkIG9uLCB0aG91Z2guLi4gKkRJQlMqIHNlZW1zIGxpa2UgaXQgbWlnaHQgYmUgc29tZXRoaW5nIHJlbGF0aXZlbHkgcmVjZW50IHRvIHRoaXMga2VybmVsIHZlcnNpb24uIEkgZG9uJiMzOTt0IHJlY2FsbCBzZWVpbmcgaXQgYmVmb3JlLiBJJiMzOTtkIGJldHRlciBkb3VibGUtY2hlY2sgdGhlIGBkcml2ZXJzL2RpYnMvS2NvbmZpZ2AgZmlsZSB0byBjb25maXJtIHdoYXQgYERJQlNgIGlzIGFuZCBpdHMgc3BlY2lmaWMgY29uZmlndXJhdGlvbiByZXF1aXJlbWVudHMuIEFsd2F5cyBnb29kIHRvIHN0YXkgb24gdG9wIG9mIHRoZSBkZXBlbmRlbmNpZXMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE4IDA3OjUxPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9kaWJzL0tjb25maWcmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAxLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDEwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAgIDE6XHQjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wXG4gICAyOlx0Y29uZmlnIERJQlNcbiAgIDM6XHRcdHRyaXN0YXRlIFwmIzM0O0RpcmVjdCBJbnRlcm5hbCBCdWZmZXIgU2hhcmluZyBzdXBwb3J0XCYjMzQ7XG4gICA0Olx0XHRkZWZhdWx0IG5cbiAgIDU6XHRcdGhlbHBcbiAgIDY6XHRcdCAgRGlyZWN0IEludGVybmFsIEJ1ZmZlciBTaGFyaW5nIChESUJTKSBpcyBhIGNvbW11bmljYXRpb24gbWV0aG9kIHRoYXRcbiAgIDc6XHRcdCAgdXNlcyBjb21tb24gcGh5c2ljYWwgKGludGVybmFsKSBtZW1vcnkgZm9yIHN5bmNocm9ub3VzIGRpcmVjdCBhY2Nlc3NcbiAgIDg6XHRcdCAgaW50byBhIHJlbW90ZSBidWZmZXIuXG4gICA5Olx0XG4gIDEwOlx0XHQgIFNlbGVjdCB0aGlzIG9wdGlvbiB0byBwcm92aWRlIHRoZSBhYnN0cmFjdGlvbiBsYXllciBiZXR3ZWVuXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE4IDA3OjUxPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE3ODg2CgkJCQkJCQlvdXRwdXQ6IDM0CgkJCQkJCQl0aG91Z2h0czogNzQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQ29uZmlndXJhdGlvbiBDaGVja2xpc3QqKgoKQWxyaWdodCwgbGV0JiMzOTtzIGdldCBkb3duIHRvIGJyYXNzIHRhY2tzLiBJIG5lZWQgdG8gZmlndXJlIG91dCB0aGUgcmlnaHQgY29uZmlndXJhdGlvbiBzZXR0aW5ncy4gVGhlIGtleSBpcyBnb2luZyB0byBiZSBgRElCU2AsIHRoYXQmIzM5O3MgYSBnaXZlbi4gTm93LCBsZXQmIzM5O3MgcnVuIHRocm91Z2ggdGhlIHVzdWFsIHN1c3BlY3RzOiBgU01DYCwgYElORVRgLCBgSU5GSU5JQkFORGAsIGFuZCwgb2YgY291cnNlLCBgRElCU2AuIEhvbGQgb24uLi4gYElORVRgIGlzIGFsbW9zdCBhbHdheXMgZW5hYmxlZCwgc28gdGhhdCYjMzk7cyBsaWtlbHkgYWxyZWFkeSBzb3J0ZWQuIGBJTkZJTklCQU5EYCBpcyBkZWZpbml0ZWx5IHJlcXVpcmVkLCBhbmQgSSYjMzk7dmUgYWxyZWFkeSBlc3RhYmxpc2hlZCB0aGUgbmVlZCBmb3IgYERJQlNgLiBOb3csIHRoZSBuZXh0IHF1ZXN0aW9uIGJlY29tZXMgd2hldGhlciBJJiMzOTtsbCBuZWVkIGBESUJTX0xPYCBhcyB3ZWxsLiBUaGF0IG5lZWRzIGNoZWNraW5nLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjM0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xOCAwNzo1MTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvZGlicy9LY29uZmlnJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMTEsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMTAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7ICAxMTpcdFx0ICBkaWJzIGRldmljZXMgYW5kIGRpYnMgY2xpZW50cyBsaWtlIHRoZSBTTUMgcHJvdG9jb2wuXG4gIDEyOlx0XHQgIFRoZSBtb2R1bGUgbmFtZSBpcyBkaWJzLlxuICAxMzpcdFxuICAxNDpcdGNvbmZpZyBESUJTX0xPXG4gIDE1Olx0XHRib29sIFwmIzM0O0ludHJhLU9TIHNob3J0Y3V0IHdpdGggZGlicyBsb29wYmFja1wmIzM0O1xuICAxNjpcdFx0ZGVwZW5kcyBvbiBESUJTXG4gIDE3Olx0XHRkZWZhdWx0IG5cbiAgMTg6XHRcdGhlbHBcbiAgMTk6XHRcdCAgRElCU19MTyBlbmFibGVzIHRoZSBjcmVhdGlvbiBvZiBhbiBzb2Z0d2FyZS1lbXVsYXRlZCBkaWJzIGRldmljZVxuICAyMDpcdFx0ICBuYW1lZCBsbyB3aGljaCBjYW4gYmUgdXNlZCBmb3IgdHJhbnNmZXJyaW5nIGRhdGEgd2hlbiBjb21tdW5pY2F0aW9uXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE4IDA3OjUxPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE4Mjg0CgkJCQkJCQlvdXRwdXQ6IDM3CgkJCQkJCQl0aG91Z2h0czogNDc0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFuYWx5c2lzIG9mIHRoZSBTeXprYWxsZXIgRnV6emluZyBDb25maWd1cmF0aW9uIGFuZCBDb2RlIFBhdGNoKioKCk9rYXksIGhlcmUmIzM5O3Mgd2hhdCBJJiMzOTttIHRoaW5raW5nLiBJJiMzOTt2ZSBnb3QgYSBnb29kIGhhbmRsZSBvbiB0aGlzLiBUaGUgYERJQlNfTE9gIG9wdGlvbiBpcyBleGFjdGx5IHdoYXQgSSB3YXMgaG9waW5nIGZvci4gSXQgZW5hYmxlcyB0aGlzIHNvZnR3YXJlLWVtdWxhdGVkIGRpYnMgZGV2aWNlLCBuYW1lZCBgbG9gLCB3aGljaCBpcyBwZXJmZWN0IGZvciBsb2NhbCBkYXRhIHRyYW5zZmVycywgYW5kIHRoYXQmIzM5O3MgZXhhY3RseSB3aGF0IHdlIG5lZWQgdG8gZnV6eiBlZmZlY3RpdmVseSB3aXRoIHN5emthbGxlci4gU28sIGBESUJTX0xPYCBpcyBhIGRlZmluaXRlIG11c3QtaGF2ZSBmb3IgdGhlIGNvbmZpZ3VyYXRpb25zLgoKU28sIHRoZSBjb25maWcgb3B0aW9ucyBJIGFtIGdvaW5nIHRvIHVzZSBhcmU6IGBTTUNgLCBgSU5GSU5JQkFORGAsIGBESUJTYCwgYW5kIHRoYXQgY3J1Y2lhbCBgRElCU19MT2AuCgpOb3csIHJlZ2FyZGluZyB0aGUga2V5IHN5bWJvbHMsIEkmIzM5O20gZm9jdXNpbmcgb24gdGhlc2UgZm9yIG15IGZ1enppbmcgZWZmb3J0czogYHNtY19sbGNfc3J2X2FkZF9saW5rYCwgYHNtY19sbGNfY2xpX2FkZF9saW5rYCwgYW5kIGBzbWNfbGxjX2FkZF9saW5rX2xvY2FsYC4gVGhleSBhcmUgYWxsIHJlbGF0ZWQgdG8gYWRkX2xpbmsgZmxvd3MsIHdoaWNoIGFyZSBjZW50cmFsIHRvIHRoaXMuCgpJIGp1c3QgZG91YmxlLWNoZWNrZWQgYW5kIHJ1bGVkIG91dCBgU01DX0RJQUdgIGFuZCBgU01DX0hTX0NUUkxfQlBGYCBiZWNhdXNlIHRoZXkgYXJlIG5vdCBuZWVkZWQgZm9yIG15IHB1cnBvc2VzLgoKTmV4dCwgSSByZXZpZXdlZCB0aGUgY29kZSBwYXRjaC4gTG9va3MgbGlrZSB0aGlzIGlzIGFkZHJlc3NpbmcgYSBtZW1vcnkgbGVhayBvciBhIHN0YXRlIG1hY2hpbmUgcHJvYmxlbSByZWxhdGVkIHRvIFNNQyBMTEMgZmxvdyBoYW5kbGluZy4gVGhlIGtleSBwYXJ0IGlzIHRoYXQgYWRkZWQgY29tbWVudDogYC8qIGZyZWUgYW55IHFlbnRyeSBzdGFzaGVkIGluIFJFUV9BRERfTElOSyBzdGF0ZSAqL2AKCkVzc2VudGlhbGx5LCB0aGlzIGZpeCBpcyBmcmVlaW5nIGEgcXVldWUgZW50cnkgc3Rhc2hlZCBpbiBhIHNwZWNpZmljIHN0YXRlIHRvIHByZXZlbnQgYSBsZWFrLCB3aGljaCBpcyBmdW5jdGlvbmFsbHkgc2lnbmlmaWNhbnQuIFRoaXMgcGF0Y2ggaXMgcmVhY2hhYmxlIHZpYSBgc21jX2xsY19ldmVudF9oYW5kbGVyYCwgd2hpY2ggaXMgcmVzcG9uc2libGUgZm9yIHByb2Nlc3NpbmcgdGhvc2UgTExDIGV2ZW50cy4gVGhlIGZ1bmN0aW9ucywgd2hpY2ggSSBpZGVudGlmaWVkIGFib3ZlLCBpbml0aWF0ZSBvciBwcm9jZXNzIGBhZGRfbGlua2AgZmxvd3MuCgpNeSBuZXh0IHN0ZXAgaXMgdG8gbWFrZSBzdXJlIGBzbWNfbGxjX2Zsb3dfcWVudHJ5X2RlbGAgaXMgdmlzaWJsZSBhbmQgYWNjZXNzaWJsZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTggMDc6NTE8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7c21jX2xsY19mbG93X3FlbnRyeV9kZWwmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvc21jLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvc21jL2FmX3NtYy5jPTYxOD1zdGF0aWMgaW50IHNtY3JfY2xudF9jb25mX2ZpcnN0X2xpbmsoc3RydWN0IHNtY19zb2NrICpzbWMpXG4tLVxubmV0L3NtYy9hZl9zbWMuYy02MzktXHRyYyA9IHNtY19sbGNfZXZhbF9jb25mX2xpbmsocWVudHJ5LCBTTUNfTExDX1JFUSk7XG5uZXQvc21jL2FmX3NtYy5jOjY0MDpcdHNtY19sbGNfZmxvd19xZW50cnlfZGVsKFx1MDAyNmxpbmstXHUwMDNlbGdyLVx1MDAzZWxsY19mbG93X2xjbCk7XG5uZXQvc21jL2FmX3NtYy5jLTY0MS1cdGlmIChyYylcbi0tXG5uZXQvc21jL2FmX3NtYy5jPTE4NzI9c3RhdGljIGludCBzbWNyX3NlcnZfY29uZl9maXJzdF9saW5rKHN0cnVjdCBzbWNfc29jayAqc21jKVxuLS1cbm5ldC9zbWMvYWZfc21jLmMtMTkwNC1cdHJjID0gc21jX2xsY19ldmFsX2NvbmZfbGluayhxZW50cnksIFNNQ19MTENfUkVTUCk7XG5uZXQvc21jL2FmX3NtYy5jOjE5MDU6XHRzbWNfbGxjX2Zsb3dfcWVudHJ5X2RlbChcdTAwMjZsaW5rLVx1MDAzZWxnci1cdTAwM2VsbGNfZmxvd19sY2wpO1xubmV0L3NtYy9hZl9zbWMuYy0xOTA2LVx0aWYgKHJjKVxuLS1cbm5ldC9zbWMvc21jX2xsYy5jPTIwNz1zdHJ1Y3Qgc21jX2xsY19xZW50cnkgKnNtY19sbGNfZmxvd19xZW50cnlfY2xyKHN0cnVjdCBzbWNfbGxjX2Zsb3cgKmZsb3cpXG4tLVxubmV0L3NtYy9zbWNfbGxjLmMtMjE0LVxubmV0L3NtYy9zbWNfbGxjLmM6MjE1OnZvaWQgc21jX2xsY19mbG93X3FlbnRyeV9kZWwoc3RydWN0IHNtY19sbGNfZmxvdyAqZmxvdylcbm5ldC9zbWMvc21jX2xsYy5jLTIxNi17XG4tLVxubmV0L3NtYy9zbWNfbGxjLmM9MzM2PXN0cnVjdCBzbWNfbGxjX3FlbnRyeSAqc21jX2xsY193YWl0KHN0cnVjdCBzbWNfbGlua19ncm91cCAqbGdyLFxuLS1cbm5ldC9zbWMvc21jX2xsYy5jLTM0OS1cdCAgICAobG5rIFx1MDAyNlx1MDAyNiAhc21jX2xpbmtfdXNhYmxlKGxuaykpIHx8IGxpc3RfZW1wdHkoXHUwMDI2bGdyLVx1MDAzZWxpc3QpKSB7XG5uZXQvc21jL3NtY19sbGMuYzozNTA6XHRcdHNtY19sbGNfZmxvd19xZW50cnlfZGVsKGZsb3cpO1xubmV0L3NtYy9zbWNfbGxjLmMtMzUxLVx0XHRnb3RvIG91dDtcbi0tXG5uZXQvc21jL3NtY19sbGMuYy0zNjctXHRcdFx0ICAgICBmbG93LVx1MDAzZXFlbnRyeS1cdTAwM2Vtc2cucmF3Lmhkci5mbGFncyk7XG5uZXQvc21jL3NtY19sbGMuYzozNjg6XHRcdHNtY19sbGNfZmxvd19xZW50cnlfZGVsKGZsb3cpO1xubmV0L3NtYy9zbWNfbGxjLmMtMzY5LVx0fVxuLS1cbm5ldC9zbWMvc21jX2xsYy5jPTg4Nz1zdGF0aWMgaW50IHNtY19sbGNfY2xpX3JrZXlfZXhjaGFuZ2Uoc3RydWN0IHNtY19saW5rICpsaW5rLFxuLS1cbm5ldC9zbWMvc21jX2xsYy5jLTkxOC1cdFx0fVxubmV0L3NtYy9zbWNfbGxjLmM6OTE5Olx0XHRzbWNfbGxjX2Zsb3dfcWVudHJ5X2RlbChcdTAwMjZsZ3ItXHUwMDNlbGxjX2Zsb3dfbGNsKTtcbm5ldC9zbWMvc21jX2xsYy5jLTkyMC1cdFx0cmMgPSBzbWNfbGxjX2FkZF9saW5rX2NvbnQobGluaywgbGlua19uZXcsIFx1MDAyNm51bV9ya2V5c19zZW5kLFxuLS1cbm5ldC9zbWMvc21jX2xsYy5jPTk0MT1zdGF0aWMgaW50IHNtY19sbGNfY2xpX2NvbmZfbGluayhzdHJ1Y3Qgc21jX2xpbmsgKmxpbmssXG4tLVxubmV0L3NtYy9zbWNfbGxjLmMtOTYxLVx0XHRzbWNfbGxjX3NlbmRfbWVzc2FnZShsaW5rLCBcdTAwMjZxZW50cnktXHUwMDNlbXNnKTtcbm5ldC9zbWMvc21jX2xsYy5jOjk2MjpcdFx0c21jX2xsY19mbG93X3FlbnRyeV9kZWwoXHUwMDI2bGdyLVx1MDAzZWxsY19mbG93X2xjbCk7XG5uZXQvc21jL3NtY19sbGMuYy05NjMtXHRcdHJldHVybiAtRU5PTElOSztcbi0tXG5uZXQvc21jL3NtY19sbGMuYy05NjUtXHRzbWNfbGxjX3NhdmVfcGVlcl91aWQocWVudHJ5KTtcbm5ldC9zbWMvc21jX2xsYy5jOjk2NjpcdHNtY19sbGNfZmxvd19xZW50cnlfZGVsKFx1MDAyNmxnci1cdTAwM2VsbGNfZmxvd19sY2wpO1xubmV0L3NtYy9zbWNfbGxjLmMtOTY3LVxuLS1cbm5ldC9zbWMvc21jX2xsYy5jPTEyODg9c3RhdGljIHZvaWQgc21jX2xsY19kZWxldGVfYXN5bV9saW5rKHN0cnVjdCBzbWNfbGlua19ncm91cCAqbGdyKVxuLS1cbm5ldC9zbWMvc21jX2xsYy5jLTEzMTYtXHR9XG5uZXQvc21jL3NtY19sbGMuYzoxMzE3Olx0c21jX2xsY19mbG93X3FlbnRyeV9kZWwoXHUwMDI2bGdyLVx1MDAzZWxsY19mbG93X2xjbCk7XG5uZXQvc21jL3NtY19sbGMuYy0xMzE4LW91dF9mcmVlOlxuLS1cbm5ldC9zbWMvc21jX2xsYy5jPTEzMjI9c3RhdGljIGludCBzbWNfbGxjX3Nydl9ya2V5X2V4Y2hhbmdlKHN0cnVjdCBzbWNfbGluayAqbGluayxcbi0tXG5uZXQvc21jL3NtY19sbGMuYy0xMzU1LVx0XHR9XG5uZXQvc21jL3NtY19sbGMuYzoxMzU2Olx0XHRzbWNfbGxjX2Zsb3dfcWVudHJ5X2RlbChcdTAwMjZsZ3ItXHUwMDNlbGxjX2Zsb3dfbGNsKTtcbm5ldC9zbWMvc21jX2xsYy5jLTEzNTctXHR9IHdoaWxlIChudW1fcmtleXNfc2VuZCB8fCBudW1fcmtleXNfcmVjdik7XG4tLVxubmV0L3NtYy9zbWNfbGxjLmM9MTM2Mz1zdGF0aWMgaW50IHNtY19sbGNfc3J2X2NvbmZfbGluayhzdHJ1Y3Qgc21jX2xpbmsgKmxpbmssXG4tLVxubmV0L3NtYy9zbWNfbGxjLmMtMTM4Mi1cdFx0aWYgKHFlbnRyeSlcbm5ldC9zbWMvc21jX2xsYy5jOjEzODM6XHRcdFx0c21jX2xsY19mbG93X3FlbnRyeV9kZWwoXHUwMDI2bGdyLVx1MDAzZWxsY19mbG93X2xjbCk7XG5uZXQvc21jL3NtY19sbGMuYy0xMzg0LVx0XHRyZXR1cm4gLUVOT0xJTks7XG4tLVxubmV0L3NtYy9zbWNfbGxjLmMtMTM5Mi1cdFx0c21jcl9sZ3Jfc2V0X3R5cGUobGdyLCBsZ3JfbmV3X3QpO1xubmV0L3NtYy9zbWNfbGxjLmM6MTM5MzpcdHNtY19sbGNfZmxvd19xZW50cnlfZGVsKFx1MDAyNmxnci1cdTAwM2VsbGNfZmxvd19sY2wpO1xubmV0L3NtYy9zbWNfbGxjLmMtMTM5NC1cdHJldHVybiAwO1xuLS1cbm5ldC9zbWMvc21jX2xsYy5jPTE0MDY9aW50IHNtY19sbGNfc3J2X2FkZF9saW5rKHN0cnVjdCBzbWNfbGluayAqbGluayxcbi0tXG5uZXQvc21jL3NtY19sbGMuYy0xNDgzLVx0aWYgKGFkZF9sbGMtXHUwMDNlaGQuZmxhZ3MgXHUwMDI2IFNNQ19MTENfRkxBR19BRERfTE5LX1JFSikge1xubmV0L3NtYy9zbWNfbGxjLmM6MTQ4NDpcdFx0c21jX2xsY19mbG93X3FlbnRyeV9kZWwoXHUwMDI2bGdyLVx1MDAzZWxsY19mbG93X2xjbCk7XG5uZXQvc21jL3NtY19sbGMuYy0xNDg1LVx0XHRyYyA9IC1FTk9MSU5LO1xuLS1cbm5ldC9zbWMvc21jX2xsYy5jLTE0OTQtXHRzbWNfbGxjX3NhdmVfYWRkX2xpbmtfaW5mbyhsaW5rX25ldywgYWRkX2xsYyk7XG5uZXQvc21jL3NtY19sbGMuYzoxNDk1Olx0c21jX2xsY19mbG93X3FlbnRyeV9kZWwoXHUwMDI2bGdyLVx1MDAzZWxsY19mbG93X2xjbCk7XG5uZXQvc21jL3NtY19sbGMuYy0xNDk2LVxuLS1cbm5ldC9zbWMvc21jX2xsYy5jPTE1NTk9c3RhdGljIHZvaWQgc21jX2xsY19hZGRfbGlua193b3JrKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaylcbi0tXG5uZXQvc21jL3NtY19sbGMuYy0xNTY1LVx0XHQvKiBsaW5rIGdyb3VwIGlzIHRlcm1pbmF0aW5nICovXG5uZXQvc21jL3NtY19sbGMuYzoxNTY2Olx0XHRzbWNfbGxjX2Zsb3dfcWVudHJ5X2RlbChcdTAwMjZsZ3ItXHUwMDNlbGxjX2Zsb3dfbGNsKTtcbm5ldC9zbWMvc21jX2xsYy5jLTE1NjctXHRcdGdvdG8gb3V0O1xuLS1cbm5ldC9zbWMvc21jX2xsYy5jPTE2NzI9c3RhdGljIHZvaWQgc21jX2xsY19wcm9jZXNzX3Nydl9kZWxldGVfbGluayhzdHJ1Y3Qgc21jX2xpbmtfZ3JvdXAgKmxncilcbi0tXG5uZXQvc21jL3NtY19sbGMuYy0xNzE3LVx0XHRcdGlmIChxZW50cnkyKVxubmV0L3NtYy9zbWNfbGxjLmM6MTcxODpcdFx0XHRcdHNtY19sbGNfZmxvd19xZW50cnlfZGVsKFx1MDAyNmxnci1cdTAwM2VsbGNfZmxvd19sY2wpO1xubmV0L3NtYy9zbWNfbGxjLmMtMTcxOS1cdFx0fVxuLS1cbm5ldC9zbWMvc21jX2xsYy5jPTE3NDA9c3RhdGljIHZvaWQgc21jX2xsY19kZWxldGVfbGlua193b3JrKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaylcbi0tXG5uZXQvc21jL3NtY19sbGMuYy0xNzQ2LVx0XHQvKiBsaW5rIGdyb3VwIGlzIHRlcm1pbmF0aW5nICovXG5uZXQvc21jL3NtY19sbGMuYzoxNzQ3Olx0XHRzbWNfbGxjX2Zsb3dfcWVudHJ5X2RlbChcdTAwMjZsZ3ItXHUwMDNlbGxjX2Zsb3dfbGNsKTtcbm5ldC9zbWMvc21jX2xsYy5jLTE3NDgtXHRcdGdvdG8gb3V0O1xuLS1cbm5ldC9zbWMvc21jX2xsYy5jPTE3NjA9c3RhdGljIHZvaWQgc21jX2xsY19ybXRfY29uZl9ya2V5KHN0cnVjdCBzbWNfbGlua19ncm91cCAqbGdyKVxuLS1cbm5ldC9zbWMvc21jX2xsYy5jLTE3OTUtXHRzbWNfbGxjX3NlbmRfbWVzc2FnZShsaW5rLCBcdTAwMjZxZW50cnktXHUwMDNlbXNnKTtcbm5ldC9zbWMvc21jX2xsYy5jOjE3OTY6XHRzbWNfbGxjX2Zsb3dfcWVudHJ5X2RlbChcdTAwMjZsZ3ItXHUwMDNlbGxjX2Zsb3dfcm10KTtcbm5ldC9zbWMvc21jX2xsYy5jLTE3OTctfVxuLS1cbm5ldC9zbWMvc21jX2xsYy5jPTE4MDA9c3RhdGljIHZvaWQgc21jX2xsY19ybXRfZGVsZXRlX3JrZXkoc3RydWN0IHNtY19saW5rX2dyb3VwICpsZ3IpXG4tLVxubmV0L3NtYy9zbWNfbGxjLmMtMTg0OS1cdHNtY19sbGNfc2VuZF9tZXNzYWdlKGxpbmssIFx1MDAyNnFlbnRyeS1cdTAwM2Vtc2cpO1xubmV0L3NtYy9zbWNfbGxjLmM6MTg1MDpcdHNtY19sbGNfZmxvd19xZW50cnlfZGVsKFx1MDAyNmxnci1cdTAwM2VsbGNfZmxvd19ybXQpO1xubmV0L3NtYy9zbWNfbGxjLmMtMTg1MS19XG4tLVxubmV0L3NtYy9zbWNfbGxjLmM9MTg3NT1zdGF0aWMgdm9pZCBzbWNfbGxjX2V2ZW50X2hhbmRsZXIoc3RydWN0IHNtY19sbGNfcWVudHJ5ICpxZW50cnkpXG4tLVxubmV0L3NtYy9zbWNfbGxjLmMtMTkxNC1cdFx0XHRcdC8qIGZyZWUgYW55IHFlbnRyeSBzdGFzaGVkIGluIFJFUV9BRERfTElOSyBzdGF0ZSAqL1xubmV0L3NtYy9zbWNfbGxjLmM6MTkxNTpcdFx0XHRcdHNtY19sbGNfZmxvd19xZW50cnlfZGVsKFx1MDAyNmxnci1cdTAwM2VsbGNfZmxvd19sY2wpO1xubmV0L3NtYy9zbWNfbGxjLmMtMTkxNi1cdFx0XHRcdGxnci1cdTAwM2VsbGNfZmxvd19sY2wudHlwZSA9IFNNQ19MTENfRkxPV19BRERfTElOSztcbi0tXG5uZXQvc21jL3NtY19sbGMuYz0yMjIyPWludCBzbWNfbGxjX2RvX2NvbmZpcm1fcmtleShzdHJ1Y3Qgc21jX2xpbmsgKnNlbmRfbGluayxcbi0tXG5uZXQvc21jL3NtY19sbGMuYy0yMjM4LVx0aWYgKHFlbnRyeSlcbm5ldC9zbWMvc21jX2xsYy5jOjIyMzk6XHRcdHNtY19sbGNfZmxvd19xZW50cnlfZGVsKFx1MDAyNmxnci1cdTAwM2VsbGNfZmxvd19sY2wpO1xubmV0L3NtYy9zbWNfbGxjLmMtMjI0MC1cdHJldHVybiByYztcbi0tXG5uZXQvc21jL3NtY19sbGMuYz0yMjQ0PWludCBzbWNfbGxjX2RvX2RlbGV0ZV9ya2V5KHN0cnVjdCBzbWNfbGlua19ncm91cCAqbGdyLFxuLS1cbm5ldC9zbWMvc21jX2xsYy5jLTIyNjUtXHRpZiAocWVudHJ5KVxubmV0L3NtYy9zbWNfbGxjLmM6MjI2NjpcdFx0c21jX2xsY19mbG93X3FlbnRyeV9kZWwoXHUwMDI2bGdyLVx1MDAzZWxsY19mbG93X2xjbCk7XG5uZXQvc21jL3NtY19sbGMuYy0yMjY3LVx0cmV0dXJuIHJjO1xuLS1cbm5ldC9zbWMvc21jX2xsYy5oPTExMD1zdHJ1Y3Qgc21jX2xsY19xZW50cnkgKnNtY19sbGNfZmxvd19xZW50cnlfY2xyKHN0cnVjdCBzbWNfbGxjX2Zsb3cgKmZsb3cpO1xubmV0L3NtYy9zbWNfbGxjLmg6MTExOnZvaWQgc21jX2xsY19mbG93X3FlbnRyeV9kZWwoc3RydWN0IHNtY19sbGNfZmxvdyAqZmxvdyk7XG5uZXQvc21jL3NtY19sbGMuaC0xMTItdm9pZCBzbWNfbGxjX3NlbmRfbGlua19kZWxldGVfYWxsKHN0cnVjdCBzbWNfbGlua19ncm91cCAqbGdyLCBib29sIG9yZCxcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zNy8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTggMDc6NTE8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjIzOTQKCQkJCQkJCW91dHB1dDogMTgyCgkJCQkJCQl0aG91Z2h0czogMjgxCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFzc2Vzc21lbnQgb2YgdGhlIFBhdGNoKioKCk9rYXksIHNvIGBzbWNfbGxjX2Zsb3dfcWVudHJ5X2RlbGAgaXMgZXhwb3J0ZWQgaW4gdGhlIGhlYWRlciBmaWxlIGBzbWNfbGxjLmhgIGFuZCBpcyB1c2VkIGluIGJvdGggYGFmX3NtYy5jYCBhbmQgYHNtY19sbGMuY2AuIFRoYXQmIzM5O3MgYSBrZXkgc3RhcnRpbmcgcG9pbnQuIFRoaXMgcGF0Y2ggYWRkcmVzc2VzIGEgbWVtb3J5IGxlYWsgc3BlY2lmaWNhbGx5IHdpdGhpbiBgc21jX2xsY19ldmVudF9oYW5kbGVyYCB3aGVuIHRoZSBzeXN0ZW0gdHJhbnNpdGlvbnMgZnJvbSB0aGUgYFNNQ19MTENfRkxPV19SRVFfQUREX0xJTktgIHN0YXRlIHRvIGBTTUNfTExDX0ZMT1dfQUREX0xJTktgLiBZZXAsIGFic29sdXRlbHksIHRoaXMgaXMgYSBwcmltZSBjYW5kaWRhdGUgZm9yIGZ1enppbmcuIFdlIGhhdmUgYSBkZWZpbmVkIHN0YXRlIHRyYW5zaXRpb24gdGhhdCYjMzk7cyBrbm93biB0byBiZSBwcm9ibGVtYXRpYywgd2hpY2ggbWFrZXMgaXQgZWFzaWVyIHRvIHRhcmdldCB3aXRoIGZvY3VzZWQgZnV6emluZy4KCkxldCYjMzk7cyBuYWlsIGRvd24gdGhlIGZpbmFsIGFuc3dlci4KClRoZSBmdXp6aW5nIGlzICpkZWZpbml0ZWx5KiB3b3J0aHdoaWxlLgoKSGVyZSBhcmUgdGhlIHNwZWNpZmljIHN5bWJvbHMgSSB3YW50IHRvIHByaW9yaXRpemUgZHVyaW5nIGZ1enppbmc6IGBzbWNfbGxjX3Nydl9hZGRfbGlua2AsIGBzbWNfbGxjX2NsaV9hZGRfbGlua2AsIGFuZCBgc21jX2xsY19hZGRfbGlua19sb2NhbGAuIFRoZXkmIzM5O3JlIGFsbCByZWxhdGVkIHRvIHRoZSBhZGRfbGluayBmbG93LCB3aGljaCBpcyB3aGVyZSB0aGUgbGVhayBvY2N1cnMuCgpXZSBuZWVkIHRvIG1ha2Ugc3VyZSB3ZSBoYXZlIHRoZSBmb2xsb3dpbmcgY29uZmlndXJhdGlvbnMgZW5hYmxlZDogYFNNQ2AsIGBJTkZJTklCQU5EYCwgYERJQlNgLCBhbmQgYERJQlNfTE9gLiBESUJTIGFuZCBESUJTX0xPIGFyZSBlc3NlbnRpYWwgZm9yIGFsbG93aW5nIGxvY2FsIGxvb3BiYWNrIHRlc3Rpbmcgb2YgU01DIHVzaW5nIGVtdWxhdGVkIFJETUEuIFRoaXMgd2lsbCBiZSB0aGUgbW9zdCBlZmZlY3RpdmUgd2F5IHRvIHRlc3QgdGhpcyBmaXguCgpUaGUgcmVhc29uaW5nIGlzIHByZXR0eSBzdHJhaWdodGZvcndhcmQ6IHRoZSBwYXRjaCBleHBsaWNpdGx5IGZyZWVzIGEgc3Rhc2hlZCBxdWV1ZSBlbnRyeSBkdXJpbmcgdGhlIHN0YXRlIHRyYW5zaXRpb24sIGZpeGluZyBhIG1lbW9yeSBsZWFrLiBUaGlzIGlzIGNvcmUga2VybmVsIGxvZ2ljIHRoYXQmIzM5O3MgcmVhY2hhYmxlIGFuZCBjcml0aWNhbCB0byB0aGUgU01DIHByb3RvY29sLiBGdXp6aW5nIHNob3VsZCBob25lIGluIG9uIHRoZSBpbml0aWF0aW9uIGFuZCBwcm9jZXNzaW5nIG9mIHRoYXQgYWRkX2xpbmsgZmxvdyBzcGVjaWZpY2FsbHkuIEl0JiMzOTtzIGEgY2xlYW4gdGFyZ2V0IGFuZCBhIHNvbGlkIGFwcHJvYWNoLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjM4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xOCAwNzo1MTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7U01DJiMzNDssCiAgICAmIzM0O0lORklOSUJBTkQmIzM0OywKICAgICYjMzQ7RElCUyYjMzQ7LAogICAgJiMzNDtESUJTX0xPJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7c21jX2xsY19zcnZfYWRkX2xpbmsmIzM0OywKICAgICYjMzQ7c21jX2xsY19jbGlfYWRkX2xpbmsmIzM0OywKICAgICYjMzQ7c21jX2xsY19hZGRfbGlua19sb2NhbCYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmaXhlcyBhIG1lbW9yeSBsZWFrIGluIHRoZSBTTUMgTExDIGV2ZW50IGhhbmRsZXIgYnkgZXhwbGljaXRseSBmcmVlaW5nIHRoZSBzdGFzaGVkIHFlbnRyeSB3aGVuIHRyYW5zaXRpb25pbmcgZnJvbSB0aGUgUkVRX0FERF9MSU5LIHN0YXRlIHRvIHRoZSBBRERfTElOSyBzdGF0ZS4gVGhpcyBpcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMgZm9yIHRoZSBTTUMgcHJvdG9jb2wuIEZ1enppbmcgc2hvdWxkIGZvY3VzIG9uIHRoZSBhZGRfbGluayBmbG93IGluaXRpYXRpb24gYW5kIHByb2Nlc3NpbmcgZnVuY3Rpb25zLiBESUJTIGFuZCBESUJTX0xPIGFyZSByZXF1aXJlZCB0byBlbmFibGUgbG9jYWwgbG9vcGJhY2sgdGVzdGluZyBvZiBTTUMgb3ZlciBlbXVsYXRlZCBSRE1BLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtTTUMmIzM0OywKICAgICYjMzQ7SU5GSU5JQkFORCYjMzQ7LAogICAgJiMzNDtESUJTJiMzNDssCiAgICAmIzM0O0RJQlNfTE8mIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtzbWNfbGxjX3Nydl9hZGRfbGluayYjMzQ7LAogICAgJiMzNDtzbWNfbGxjX2NsaV9hZGRfbGluayYjMzQ7LAogICAgJiMzNDtzbWNfbGxjX2FkZF9saW5rX2xvY2FsJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGZpeGVzIGEgbWVtb3J5IGxlYWsgaW4gdGhlIFNNQyBMTEMgZXZlbnQgaGFuZGxlciBieSBleHBsaWNpdGx5IGZyZWVpbmcgdGhlIHN0YXNoZWQgcWVudHJ5IHdoZW4gdHJhbnNpdGlvbmluZyBmcm9tIHRoZSBSRVFfQUREX0xJTksgc3RhdGUgdG8gdGhlIEFERF9MSU5LIHN0YXRlLiBUaGlzIGlzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYyBmb3IgdGhlIFNNQyBwcm90b2NvbC4gRnV6emluZyBzaG91bGQgZm9jdXMgb24gdGhlIGFkZF9saW5rIGZsb3cgaW5pdGlhdGlvbiBhbmQgcHJvY2Vzc2luZyBmdW5jdGlvbnMuIERJQlMgYW5kIERJQlNfTE8gYXJlIHJlcXVpcmVkIHRvIGVuYWJsZSBsb2NhbCBsb29wYmFjayB0ZXN0aW5nIG9mIFNNQyBvdmVyIGVtdWxhdGVkIFJETUEuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzkvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE4IDA3OjUxPC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5JZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40MC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTggMDc6NTE8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+a21zYW4tZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+YmVzdC1leHBlbnNpdmU8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggZml4ZXMgYSBtZW1vcnkgbGVhayBieSBmcmVlaW5nIGEgc3Rhc2hlZCBgcWVudHJ5YCBpbiBgc21jX2xsY19ldmVudF9oYW5kbGVyYCB3aGVuIHRoZSBzZXJ2ZXIgc3RhcnRzIGBhZGRfbGlua2AgcHJvY2Vzc2luZy4gSXQgZG9lcyBub3QgaW50cm9kdWNlIG9yIGV4cG9zZSBhbnkgdW5pbml0aWFsaXplZCBtZW1vcnkgcmlza3Mgb3IgaW5mby1sZWFrcy4gTWVtb3J5IGxlYWtzIGFuZCB1c2UtYWZ0ZXItZnJlZSBidWdzIGFyZSBlZmZlY3RpdmVseSBkZXRlY3RlZCBieSBLTUVNTEVBSyBhbmQgS0FTQU4uIFRoZXJlZm9yZSwgYSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGlzIG5vdCByZXF1aXJlZC4mIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgc2VjdXJpdHkgZW5naW5lZXIgc3BlY2lhbGl6aW5nIGluIGtlcm5lbCBtZW1vcnkKZXJyb3IgZGV0ZWN0b3JzIChLQVNBTiBhbmQgS01TQU4pLiBZb3VyIGpvYiBpcyB0byByZXZpZXcgdGhlIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQKZGV0ZXJtaW5lIGlmIHRoZSBjb2RlIGNoYW5nZXMganVzdGlmeSBzcGF3bmluZyBhIGRlZGljYXRlZCBLTVNBTiAoS2VybmVsTWVtb3J5U2FuaXRpemVyKQpmdXp6aW5nIHNlc3Npb24gaW4gYWRkaXRpb24gdG8gc3RhbmRhcmQgS0FTQU4gZnV6emluZy4KCkNSSVRJQ0FMIERJU1RJTkNUSU9OIEJFVFdFRU4gS0FTQU4gQU5EIEtNU0FOOgotIFN0YW5kYXJkIEtBU0FOIGtlcm5lbCBidWlsZHMgKHVwc3RyZWFtLWFwcGFybW9yLWthc2FuLmNvbmZpZykgYWxyZWFkeSBlbmFibGUKICBhIGNvbXByZWhlbnNpdmUgc3VpdGUgb2YgZGVidWdnaW5nIHRvb2xzIGFuZCBzYW5pdGl6ZXJzLCBpbmNsdWRpbmcgS0FTQU4KICAob3V0LW9mLWJvdW5kcyBhY2Nlc3NlcywgdXNlLWFmdGVyLWZyZWUsIGRvdWJsZSBmcmVlLCBpbnZhbGlkIGZyZWUpLCBMT0NLREVQCiAgKGxvY2tpbmcgYnVncyBhbmQgZGVhZGxvY2tzKSwgVUItc2FuaXRpemVycywgYW5kIG1lbW9yeSBjb3JydXB0aW9uIGNoZWNrcy4KLSBLTVNBTiAoS2VybmVsTWVtb3J5U2FuaXRpemVyKSBkZXRlY3RzIHJlYWRzIG9mIFVOSU5JVElBTElaRUQgbWVtb3J5IChzdGFjaywgaGVhcCwKICBvciBwYWdlIGFsbG9jYXRpb25zKSBhbmQga2VybmVsLXRvLXVzZXIgbWVtb3J5IGluZm8tbGVha3MuCgpSdWxlOiBUSEVSRSBJUyBOTyBTRU5TRSBJTiBSVU5OSU5HIEEgS01TQU4gU0VTU0lPTiBJRiBBIEJVRyBDQU4gQkUgQ0FVR0hUIEJZIEtBU0FOLApMT0NLREVQLCBPUiBPVEhFUiBTVEFOREFSRCBCVUcgREVURUNUT1JTLgpBIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaW5jdXJzIHNpZ25pZmljYW50IHJlc291cmNlIGNvc3RzLiBZb3UgbXVzdCBPTkxZCnNldCBOZWVkc0tNU0FOPXRydWUgaWYgdGhlIGNvZGUgY2hhbmdlcyBpbnRyb2R1Y2Ugb3IgZXhwb3NlIFVOSU5JVElBTElaRUQgTUVNT1JZIHJpc2tzCnRoYXQgYXJlIGRldGVjdGVkIE9OTFkgYnkgS01TQU4uCgpMb29rIGhvbGlzdGljYWxseSBhdCB0aGUgcGF0Y2ggc2VyaWVzIGFuZCBzdXJyb3VuZGluZyBjb2RlLiBFdmVuIGlmIG5vIGRpcmVjdAp1bmluaXRpYWxpemVkIGZpZWxkIGFjY2Vzc2VzIG9yIG5ldyBidWZmZXIgYWxsb2NhdGlvbnMgYXJlIGFkZGVkIGluIHRoZSBkaWZmIGl0c2VsZiwKYSBwYXRjaCBtYXkgYWx0ZXIgY29udHJvbCBmbG93LCBib3VuZHMgY2hlY2tpbmcsIG9yIGRhdGEgbGVuZ3RoIGNhbGN1bGF0aW9ucyBpbiB3YXlzCnRoYXQgY2hhbmdlIGhvdyB0aGUgcmVzdCBvZiB0aGUgY29kZSBvcGVyYXRlcyBvbiBleGlzdGluZyBidWZmZXJzIChlLmcuIGFsbG93aW5nCnVuaW5pdGlhbGl6ZWQgc3RhY2svaGVhcCBtZW1vcnkgdG8gYmUgcmVhZCwgY29waWVkIHRvIHVzZXIgc3BhY2UsIG9yIHVzZWQgaW4gY29udHJvbApmbG93KS4gRG8gbm90IGhlc2l0YXRlIHRvIHVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGluc3BlY3QgdGhlIHN1cnJvdW5kaW5nIGNvZGUsCmNhbGxlZCBmdW5jdGlvbnMsIGFuZCBjYWxsZXJzLgoKU2V0IE5lZWRzS01TQU49dHJ1ZSBPTkxZIElGIHRoZSBwYXRjaCBpbnRyb2R1Y2VzIG9yIG1vZGlmaWVzOgoxLiBLZXJuZWwgc3RydWN0dXJlcyBzZW50IHRvIHVzZXIgc3BhY2UgKHZpYSBjb3B5X3RvX3VzZXIsIHB1dF91c2VyLCBuZXRsaW5rIHNrYgogICBhdHRyaWJ1dGVzLCBpb2N0bCBvdXRwdXQgYXJndW1lbnRzLCBzb2NrZXQgb3B0aW9ucywgb3IgQlBGIGJ1ZmZlcnMpIHdoZXJlIGZpZWxkcwogICBvciBzdHJ1Y3R1cmUgcGFkZGluZyBtaWdodCBub3QgYmUgZnVsbHkgaW5pdGlhbGl6ZWQvemVyb2VkLgoyLiBDb25kaXRpb25hbCBsb2dpYyBvciBicmFuY2hpbmcgdGhhdCBkZXBlbmRzIG9uIHBvdGVudGlhbGx5IHVuaW5pdGlhbGl6ZWQgdmFyaWFibGVzCiAgIG9yIHN0cnVjdCBmaWVsZHMuCjMuIEFsbG9jYXRpb24gb3IgaW5pdGlhbGl6YXRpb24gb2YgY29tcGxleCBkYXRhIHN0cnVjdHVyZXMgd2hlcmUgdW5pbml0aWFsaXplZCBmaWVsZHMKICAgY291bGQgYmUgcmVhZCBsYXRlciBpbiByZWFjaGFibGUgY29kZSBwYXRocy4KNC4gQm91bmRzIGNoZWNrcywgbGVuZ3Rocywgb3IgbG9naWMgaW4gYSB3YXkgdGhhdCBhbGxvd3Mgc3Vycm91bmRpbmcgY29kZSB0byBhY2Nlc3MKICAgdW5pbml0aWFsaXplZCBieXRlcyBvZiBleGlzdGluZyBidWZmZXJzLgoKU2V0IE5lZWRzS01TQU49ZmFsc2UgSUY6Ci0gVGhlIGNvZGUgY2hhbmdlcyBwcmltYXJpbHkgcmlzayBvdXQtb2YtYm91bmRzIGFjY2VzcywgYXJyYXkgb3ZlcmZsb3dzLCBOVUxMIHBvaW50ZXIKICBkZXJlZmVyZW5jZXMsIGxvY2tpbmcgZGVhZGxvY2tzLCBvciB1c2UtYWZ0ZXItZnJlZSBidWdzICh0aGVzZSBhcmUgYWxyZWFkeSBjYXVnaHQKICBieSBLQVNBTiwgTE9DS0RFUCwgb3Igc3RhbmRhcmQgYnVnIGRldGVjdG9ycykuCi0gQWxsIHN0YWNrL2hlYXAgc3RydWN0dXJlcyB0b3VjaGVkIG9yIGludHJvZHVjZWQgYnkgdGhlIHBhdGNoIGFyZSBmdWxseSB6ZXJvZWQKICBvciBpbml0aWFsaXplZCAoZS5nLiB1c2luZyA9IHswfSwgbWVtc2V0LCBremFsbG9jKSBiZWZvcmUgYmVpbmcgcmVhZCBvciBjb3BpZWQuCi0gVGhlIHBhdGNoIGRvZXMgbm90IGludHJvZHVjZSBhbnkgcmlzayBvZiB1bmluaXRpYWxpemVkIG1lbW9yeSB1c2FnZSBvciBpbmZvLWxlYWtzLgoKVXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gaW5zcGVjdCB0aGUgc3Vycm91bmRpbmcgY29kZSBpZiBuZWNlc3NhcnksIHRoZW4gcHJvdmlkZQpkZXRhaWxlZCBLTVNBTlJlYXNvbmluZyBjb250cmFzdGluZyBLQVNBTiB2cyBLTVNBTiBhcHBsaWNhYmlsaXR5IGZvciB0aGlzIHBhdGNoLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgNzVjOGExZTBjY2Q3YThlMjA1NGJkMzZhNzliMDljODU5ODAzM2Y4NQpBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBUdWUgQXVnIDE4IDA3OjUwOjAwIDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvbmV0L3NtYy9zbWNfbGxjLmMgYi9uZXQvc21jL3NtY19sbGMuYwppbmRleCBhYTZkODNhZjU1ZWRhLi5jN2YwMjIyYWZmOGQwIDEwMDY0NAotLS0gYS9uZXQvc21jL3NtY19sbGMuYwomIzQzOyYjNDM7JiM0MzsgYi9uZXQvc21jL3NtY19sbGMuYwpAQCAtMTkxMSw2ICYjNDM7MTkxMSw4IEBAIHN0YXRpYyB2b2lkIHNtY19sbGNfZXZlbnRfaGFuZGxlcihzdHJ1Y3Qgc21jX2xsY19xZW50cnkgKnFlbnRyeSkKIAkJCWlmIChsZ3ItJmd0O2xsY19mbG93X2xjbC50eXBlID09CiAJCQkJCVNNQ19MTENfRkxPV19SRVFfQUREX0xJTkspIHsKIAkJCQkvKiBzZXJ2ZXIgc3RhcnRlZCBhZGRfbGluayBwcm9jZXNzaW5nICovCiYjNDM7CQkJCS8qIGZyZWUgYW55IHFlbnRyeSBzdGFzaGVkIGluIFJFUV9BRERfTElOSyBzdGF0ZSAqLwomIzQzOwkJCQlzbWNfbGxjX2Zsb3dfcWVudHJ5X2RlbCgmYW1wO2xnci0mZ3Q7bGxjX2Zsb3dfbGNsKTsKIAkJCQlsZ3ItJmd0O2xsY19mbG93X2xjbC50eXBlID0gU01DX0xMQ19GTE9XX0FERF9MSU5LOwogCQkJCXNtY19sbGNfZmxvd19xZW50cnlfc2V0KCZhbXA7bGdyLSZndDtsbGNfZmxvd19sY2wsCiAJCQkJCQkJcWVudHJ5KTsKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NDEvMzwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE4IDA3OjUxPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5rbXNhbi1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIwNjMKCQkJCQkJCW91dHB1dDogNDQKCQkJCQkJCXRob3VnaHRzOiA0NDQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBTTUMgTExDIFBhdGNoKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGZvciBgbmV0L3NtYy9zbWNfbGxjLmNgLiBUaGUgY29yZSBvZiB0aGUgY2hhbmdlIGlzIGFkZGluZyBhIGNhbGwgdG8gYHNtY19sbGNfZmxvd19xZW50cnlfZGVsYCByaWdodCBiZWZvcmUgc2V0dGluZyB0aGUgYGxsY19mbG93X2xjbGAgdHlwZSB0byBgU01DX0xMQ19GTE9XX0FERF9MSU5LYCBhbmQgcmUtc2V0dGluZyB0aGUgYHFlbnRyeWAuIE15IGluaXRpYWwgdGhvdWdodCBpcywgdGhpcyBpcyBsaWtlbHkgYWRkcmVzc2luZyBhIG1lbW9yeSBtYW5hZ2VtZW50IGlzc3VlLiBTcGVjaWZpY2FsbHksIGl0IGxvb2tzIGxpa2UgdGhlcmUgbWlnaHQgaGF2ZSBiZWVuIGEgbWVtb3J5IGxlYWssIG9yIHBvdGVudGlhbGx5IGEgdXNlLWFmdGVyLWZyZWUgc2NlbmFyaW8sIHdoZXJlIGEgcXVldWVkIGVudHJ5IChgcWVudHJ5YCkgd2FzIGJlaW5nIHN0YXNoZWQgaW4gYGxsY19mbG93X2xjbGAgYW5kIG5vdCBwcm9wZXJseSBmcmVlZCB3aGVuIHRoZSBzZXJ2ZXIgaW5pdGlhdGVkIHRoZSAmIzM0O2FkZCBsaW5rJiMzNDsgcHJvY2Vzcy4KClRoZSBjb21tZW50IGluY2x1ZGVkIGluIHRoZSBjb2RlIHJlaW5mb3JjZXMgdGhpcywgZXhwbGljaXRseSBzdGF0aW5nIHRoYXQgd2UmIzM5O3JlIGZyZWVpbmcgYW55IHBvdGVudGlhbGx5IHN0YXNoZWQgYHFlbnRyeWAgaW4gdGhlIGBSRVFfQUREX0xJTktgIHN0YXRlLgoKR2l2ZW4gbXkgdW5kZXJzdGFuZGluZywgdGhlIGFkZGVkIGBzbWNfbGxjX2Zsb3dfcWVudHJ5X2RlbGAgY2FsbCBoYW5kbGVzIHRoZSBjbGVhbnVwLiBNZW1vcnkgbGVha3MsIHdoaWNoIGlzIHRoZSBtb3N0IGxpa2VseSBwcm9ibGVtIGhlcmUsIGFyZSB1c3VhbGx5IGNhdWdodCBieSBLTUVNTEVBSywgYW5kIHVzZS1hZnRlci1mcmVlIGlzc3VlcyBhcmUgdXN1YWxseSBjYXVnaHQgYnkgS0FTQU4uIFdlIGFyZSBkZWxldGluZyBhIHFlbnRyeSBzbyB0aGlzIGlzIHVubGlrZWx5IHRvIGJlIGFuIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHVzYWdlIG9yIGluZm8tbGVhayBzaXR1YXRpb24sIHNvIEtNU0FOIHNob3VsZCBub3QgYmUgbmVlZGVkIGhlcmUuIFRoaXMgcGF0Y2ggc2ltcGx5IGZyZWVzIGEgcHJldmlvdXNseSBhbGxvY2F0ZWQgZW50cnkuIEkgbmVlZCB0byB0YWtlIGEgcXVpY2sgcGVlayBhdCB0aGUgYHNtY19sbGNfZmxvd19xZW50cnlfZGVsYCBmdW5jdGlvbiB0byBiZSBhYnNvbHV0ZWx5IHN1cmUsIGJ1dCBteSBhc3Nlc3NtZW50IHJpZ2h0IG5vdyBpcyB0aGF0IHRoaXMgaXMgYSBzdHJhaWdodGZvcndhcmQgYW5kIG5lY2Vzc2FyeSBmaXggdG8gcHJldmVudCBhIG1lbW9yeSBtYW5hZ2VtZW50IHByb2JsZW0sIHNwZWNpZmljYWxseSByZWxhdGVkIHRvIHRoZSAmIzM0O2FkZCBsaW5rJiMzNDsgcHJvY2Vzc2luZy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40Mi8zPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTggMDc6NTE8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7c21jX2xsY19mbG93X3FlbnRyeV9kZWwmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvc21jL3NtY19sbGMuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvc21jL3NtY19sbGMuYz0yMDc9c3RydWN0IHNtY19sbGNfcWVudHJ5ICpzbWNfbGxjX2Zsb3dfcWVudHJ5X2NscihzdHJ1Y3Qgc21jX2xsY19mbG93ICpmbG93KVxuLS1cbm5ldC9zbWMvc21jX2xsYy5jLTIxNC1cbm5ldC9zbWMvc21jX2xsYy5jOjIxNTp2b2lkIHNtY19sbGNfZmxvd19xZW50cnlfZGVsKHN0cnVjdCBzbWNfbGxjX2Zsb3cgKmZsb3cpXG5uZXQvc21jL3NtY19sbGMuYy0yMTYte1xuLS1cbm5ldC9zbWMvc21jX2xsYy5jPTMzNj1zdHJ1Y3Qgc21jX2xsY19xZW50cnkgKnNtY19sbGNfd2FpdChzdHJ1Y3Qgc21jX2xpbmtfZ3JvdXAgKmxncixcbi0tXG5uZXQvc21jL3NtY19sbGMuYy0zNDktXHQgICAgKGxuayBcdTAwMjZcdTAwMjYgIXNtY19saW5rX3VzYWJsZShsbmspKSB8fCBsaXN0X2VtcHR5KFx1MDAyNmxnci1cdTAwM2VsaXN0KSkge1xubmV0L3NtYy9zbWNfbGxjLmM6MzUwOlx0XHRzbWNfbGxjX2Zsb3dfcWVudHJ5X2RlbChmbG93KTtcbm5ldC9zbWMvc21jX2xsYy5jLTM1MS1cdFx0Z290byBvdXQ7XG4tLVxubmV0L3NtYy9zbWNfbGxjLmMtMzY3LVx0XHRcdCAgICAgZmxvdy1cdTAwM2VxZW50cnktXHUwMDNlbXNnLnJhdy5oZHIuZmxhZ3MpO1xubmV0L3NtYy9zbWNfbGxjLmM6MzY4Olx0XHRzbWNfbGxjX2Zsb3dfcWVudHJ5X2RlbChmbG93KTtcbm5ldC9zbWMvc21jX2xsYy5jLTM2OS1cdH1cbi0tXG5uZXQvc21jL3NtY19sbGMuYz04ODc9c3RhdGljIGludCBzbWNfbGxjX2NsaV9ya2V5X2V4Y2hhbmdlKHN0cnVjdCBzbWNfbGluayAqbGluayxcbi0tXG5uZXQvc21jL3NtY19sbGMuYy05MTgtXHRcdH1cbm5ldC9zbWMvc21jX2xsYy5jOjkxOTpcdFx0c21jX2xsY19mbG93X3FlbnRyeV9kZWwoXHUwMDI2bGdyLVx1MDAzZWxsY19mbG93X2xjbCk7XG5uZXQvc21jL3NtY19sbGMuYy05MjAtXHRcdHJjID0gc21jX2xsY19hZGRfbGlua19jb250KGxpbmssIGxpbmtfbmV3LCBcdTAwMjZudW1fcmtleXNfc2VuZCxcbi0tXG5uZXQvc21jL3NtY19sbGMuYz05NDE9c3RhdGljIGludCBzbWNfbGxjX2NsaV9jb25mX2xpbmsoc3RydWN0IHNtY19saW5rICpsaW5rLFxuLS1cbm5ldC9zbWMvc21jX2xsYy5jLTk2MS1cdFx0c21jX2xsY19zZW5kX21lc3NhZ2UobGluaywgXHUwMDI2cWVudHJ5LVx1MDAzZW1zZyk7XG5uZXQvc21jL3NtY19sbGMuYzo5NjI6XHRcdHNtY19sbGNfZmxvd19xZW50cnlfZGVsKFx1MDAyNmxnci1cdTAwM2VsbGNfZmxvd19sY2wpO1xubmV0L3NtYy9zbWNfbGxjLmMtOTYzLVx0XHRyZXR1cm4gLUVOT0xJTks7XG4tLVxubmV0L3NtYy9zbWNfbGxjLmMtOTY1LVx0c21jX2xsY19zYXZlX3BlZXJfdWlkKHFlbnRyeSk7XG5uZXQvc21jL3NtY19sbGMuYzo5NjY6XHRzbWNfbGxjX2Zsb3dfcWVudHJ5X2RlbChcdTAwMjZsZ3ItXHUwMDNlbGxjX2Zsb3dfbGNsKTtcbm5ldC9zbWMvc21jX2xsYy5jLTk2Ny1cbi0tXG5uZXQvc21jL3NtY19sbGMuYz0xMjg4PXN0YXRpYyB2b2lkIHNtY19sbGNfZGVsZXRlX2FzeW1fbGluayhzdHJ1Y3Qgc21jX2xpbmtfZ3JvdXAgKmxncilcbi0tXG5uZXQvc21jL3NtY19sbGMuYy0xMzE2LVx0fVxubmV0L3NtYy9zbWNfbGxjLmM6MTMxNzpcdHNtY19sbGNfZmxvd19xZW50cnlfZGVsKFx1MDAyNmxnci1cdTAwM2VsbGNfZmxvd19sY2wpO1xubmV0L3NtYy9zbWNfbGxjLmMtMTMxOC1vdXRfZnJlZTpcbi0tXG5uZXQvc21jL3NtY19sbGMuYz0xMzIyPXN0YXRpYyBpbnQgc21jX2xsY19zcnZfcmtleV9leGNoYW5nZShzdHJ1Y3Qgc21jX2xpbmsgKmxpbmssXG4tLVxubmV0L3NtYy9zbWNfbGxjLmMtMTM1NS1cdFx0fVxubmV0L3NtYy9zbWNfbGxjLmM6MTM1NjpcdFx0c21jX2xsY19mbG93X3FlbnRyeV9kZWwoXHUwMDI2bGdyLVx1MDAzZWxsY19mbG93X2xjbCk7XG5uZXQvc21jL3NtY19sbGMuYy0xMzU3LVx0fSB3aGlsZSAobnVtX3JrZXlzX3NlbmQgfHwgbnVtX3JrZXlzX3JlY3YpO1xuLS1cbm5ldC9zbWMvc21jX2xsYy5jPTEzNjM9c3RhdGljIGludCBzbWNfbGxjX3Nydl9jb25mX2xpbmsoc3RydWN0IHNtY19saW5rICpsaW5rLFxuLS1cbm5ldC9zbWMvc21jX2xsYy5jLTEzODItXHRcdGlmIChxZW50cnkpXG5uZXQvc21jL3NtY19sbGMuYzoxMzgzOlx0XHRcdHNtY19sbGNfZmxvd19xZW50cnlfZGVsKFx1MDAyNmxnci1cdTAwM2VsbGNfZmxvd19sY2wpO1xubmV0L3NtYy9zbWNfbGxjLmMtMTM4NC1cdFx0cmV0dXJuIC1FTk9MSU5LO1xuLS1cbm5ldC9zbWMvc21jX2xsYy5jLTEzOTItXHRcdHNtY3JfbGdyX3NldF90eXBlKGxnciwgbGdyX25ld190KTtcbm5ldC9zbWMvc21jX2xsYy5jOjEzOTM6XHRzbWNfbGxjX2Zsb3dfcWVudHJ5X2RlbChcdTAwMjZsZ3ItXHUwMDNlbGxjX2Zsb3dfbGNsKTtcbm5ldC9zbWMvc21jX2xsYy5jLTEzOTQtXHRyZXR1cm4gMDtcbi0tXG5uZXQvc21jL3NtY19sbGMuYz0xNDA2PWludCBzbWNfbGxjX3Nydl9hZGRfbGluayhzdHJ1Y3Qgc21jX2xpbmsgKmxpbmssXG4tLVxubmV0L3NtYy9zbWNfbGxjLmMtMTQ4My1cdGlmIChhZGRfbGxjLVx1MDAzZWhkLmZsYWdzIFx1MDAyNiBTTUNfTExDX0ZMQUdfQUREX0xOS19SRUopIHtcbm5ldC9zbWMvc21jX2xsYy5jOjE0ODQ6XHRcdHNtY19sbGNfZmxvd19xZW50cnlfZGVsKFx1MDAyNmxnci1cdTAwM2VsbGNfZmxvd19sY2wpO1xubmV0L3NtYy9zbWNfbGxjLmMtMTQ4NS1cdFx0cmMgPSAtRU5PTElOSztcbi0tXG5uZXQvc21jL3NtY19sbGMuYy0xNDk0LVx0c21jX2xsY19zYXZlX2FkZF9saW5rX2luZm8obGlua19uZXcsIGFkZF9sbGMpO1xubmV0L3NtYy9zbWNfbGxjLmM6MTQ5NTpcdHNtY19sbGNfZmxvd19xZW50cnlfZGVsKFx1MDAyNmxnci1cdTAwM2VsbGNfZmxvd19sY2wpO1xubmV0L3NtYy9zbWNfbGxjLmMtMTQ5Ni1cbi0tXG5uZXQvc21jL3NtY19sbGMuYz0xNTU5PXN0YXRpYyB2b2lkIHNtY19sbGNfYWRkX2xpbmtfd29yayhzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspXG4tLVxubmV0L3NtYy9zbWNfbGxjLmMtMTU2NS1cdFx0LyogbGluayBncm91cCBpcyB0ZXJtaW5hdGluZyAqL1xubmV0L3NtYy9zbWNfbGxjLmM6MTU2NjpcdFx0c21jX2xsY19mbG93X3FlbnRyeV9kZWwoXHUwMDI2bGdyLVx1MDAzZWxsY19mbG93X2xjbCk7XG5uZXQvc21jL3NtY19sbGMuYy0xNTY3LVx0XHRnb3RvIG91dDtcbi0tXG5uZXQvc21jL3NtY19sbGMuYz0xNjcyPXN0YXRpYyB2b2lkIHNtY19sbGNfcHJvY2Vzc19zcnZfZGVsZXRlX2xpbmsoc3RydWN0IHNtY19saW5rX2dyb3VwICpsZ3IpXG4tLVxubmV0L3NtYy9zbWNfbGxjLmMtMTcxNy1cdFx0XHRpZiAocWVudHJ5Milcbm5ldC9zbWMvc21jX2xsYy5jOjE3MTg6XHRcdFx0XHRzbWNfbGxjX2Zsb3dfcWVudHJ5X2RlbChcdTAwMjZsZ3ItXHUwMDNlbGxjX2Zsb3dfbGNsKTtcbm5ldC9zbWMvc21jX2xsYy5jLTE3MTktXHRcdH1cbi0tXG5uZXQvc21jL3NtY19sbGMuYz0xNzQwPXN0YXRpYyB2b2lkIHNtY19sbGNfZGVsZXRlX2xpbmtfd29yayhzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspXG4tLVxubmV0L3NtYy9zbWNfbGxjLmMtMTc0Ni1cdFx0LyogbGluayBncm91cCBpcyB0ZXJtaW5hdGluZyAqL1xubmV0L3NtYy9zbWNfbGxjLmM6MTc0NzpcdFx0c21jX2xsY19mbG93X3FlbnRyeV9kZWwoXHUwMDI2bGdyLVx1MDAzZWxsY19mbG93X2xjbCk7XG5uZXQvc21jL3NtY19sbGMuYy0xNzQ4LVx0XHRnb3RvIG91dDtcbi0tXG5uZXQvc21jL3NtY19sbGMuYz0xNzYwPXN0YXRpYyB2b2lkIHNtY19sbGNfcm10X2NvbmZfcmtleShzdHJ1Y3Qgc21jX2xpbmtfZ3JvdXAgKmxncilcbi0tXG5uZXQvc21jL3NtY19sbGMuYy0xNzk1LVx0c21jX2xsY19zZW5kX21lc3NhZ2UobGluaywgXHUwMDI2cWVudHJ5LVx1MDAzZW1zZyk7XG5uZXQvc21jL3NtY19sbGMuYzoxNzk2Olx0c21jX2xsY19mbG93X3FlbnRyeV9kZWwoXHUwMDI2bGdyLVx1MDAzZWxsY19mbG93X3JtdCk7XG5uZXQvc21jL3NtY19sbGMuYy0xNzk3LX1cbi0tXG5uZXQvc21jL3NtY19sbGMuYz0xODAwPXN0YXRpYyB2b2lkIHNtY19sbGNfcm10X2RlbGV0ZV9ya2V5KHN0cnVjdCBzbWNfbGlua19ncm91cCAqbGdyKVxuLS1cbm5ldC9zbWMvc21jX2xsYy5jLTE4NDktXHRzbWNfbGxjX3NlbmRfbWVzc2FnZShsaW5rLCBcdTAwMjZxZW50cnktXHUwMDNlbXNnKTtcbm5ldC9zbWMvc21jX2xsYy5jOjE4NTA6XHRzbWNfbGxjX2Zsb3dfcWVudHJ5X2RlbChcdTAwMjZsZ3ItXHUwMDNlbGxjX2Zsb3dfcm10KTtcbm5ldC9zbWMvc21jX2xsYy5jLTE4NTEtfVxuLS1cbm5ldC9zbWMvc21jX2xsYy5jPTE4NzU9c3RhdGljIHZvaWQgc21jX2xsY19ldmVudF9oYW5kbGVyKHN0cnVjdCBzbWNfbGxjX3FlbnRyeSAqcWVudHJ5KVxuLS1cbm5ldC9zbWMvc21jX2xsYy5jLTE5MTQtXHRcdFx0XHQvKiBmcmVlIGFueSBxZW50cnkgc3Rhc2hlZCBpbiBSRVFfQUREX0xJTksgc3RhdGUgKi9cbm5ldC9zbWMvc21jX2xsYy5jOjE5MTU6XHRcdFx0XHRzbWNfbGxjX2Zsb3dfcWVudHJ5X2RlbChcdTAwMjZsZ3ItXHUwMDNlbGxjX2Zsb3dfbGNsKTtcbm5ldC9zbWMvc21jX2xsYy5jLTE5MTYtXHRcdFx0XHRsZ3ItXHUwMDNlbGxjX2Zsb3dfbGNsLnR5cGUgPSBTTUNfTExDX0ZMT1dfQUREX0xJTks7XG4tLVxubmV0L3NtYy9zbWNfbGxjLmM9MjIyMj1pbnQgc21jX2xsY19kb19jb25maXJtX3JrZXkoc3RydWN0IHNtY19saW5rICpzZW5kX2xpbmssXG4tLVxubmV0L3NtYy9zbWNfbGxjLmMtMjIzOC1cdGlmIChxZW50cnkpXG5uZXQvc21jL3NtY19sbGMuYzoyMjM5Olx0XHRzbWNfbGxjX2Zsb3dfcWVudHJ5X2RlbChcdTAwMjZsZ3ItXHUwMDNlbGxjX2Zsb3dfbGNsKTtcbm5ldC9zbWMvc21jX2xsYy5jLTIyNDAtXHRyZXR1cm4gcmM7XG4tLVxubmV0L3NtYy9zbWNfbGxjLmM9MjI0ND1pbnQgc21jX2xsY19kb19kZWxldGVfcmtleShzdHJ1Y3Qgc21jX2xpbmtfZ3JvdXAgKmxncixcbi0tXG5uZXQvc21jL3NtY19sbGMuYy0yMjY1LVx0aWYgKHFlbnRyeSlcbm5ldC9zbWMvc21jX2xsYy5jOjIyNjY6XHRcdHNtY19sbGNfZmxvd19xZW50cnlfZGVsKFx1MDAyNmxnci1cdTAwM2VsbGNfZmxvd19sY2wpO1xubmV0L3NtYy9zbWNfbGxjLmMtMjI2Ny1cdHJldHVybiByYztcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40My8zPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTggMDc6NTE8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPmttc2FuLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNTY1NQoJCQkJCQkJb3V0cHV0OiAxMTYKCQkJCQkJCXRob3VnaHRzOiA4OQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aGF0LgoKKipNZW1vcnkgTGVhayBGaXg6IEEgU3RyYWlnaHRmb3J3YXJkIENvcnJlY3Rpb24qKgoKQWxyaWdodCwgc28gdGhlIHBhdGNoIGlzIGFkZHJlc3NpbmcgYSBtZW1vcnkgbGVhay4gRXNzZW50aWFsbHksIHdoZW4gdGhlIHNlcnZlciBraWNrcyBvZmYgaXRzIGBhZGRfbGlua2AgcHJvY2Vzc2luZywgd2UmIzM5O3JlIG5vdyBjYWxsaW5nIGBzbWNfbGxjX2Zsb3dfcWVudHJ5X2RlbGAuIFRoaXMgZnVuY3Rpb24gaXMgY3JpdGljYWwgYmVjYXVzZSBpdCBoYW5kbGVzIGZyZWVpbmcgYSBgcWVudHJ5YCB0aGF0IHdhcyBwcmV2aW91c2x5IHN0YXNoZWQgYXdheS4gSXQmIzM5O3MgYSBjbGVhbi11cCBzdGVwLCBwcmV2ZW50aW5nIHRoYXQgb2JqZWN0IGZyb20gbGluZ2VyaW5nIGFuZCBnb2JibGluZyB1cCBtZW1vcnkgd2Ugbm8gbG9uZ2VyIG5lZWQuIFRoaXMgaXMgdGhlIGZpeC4KClRoZSBrZXkgdGhpbmcgaXMsIHRoaXMgZml4IHNwZWNpZmljYWxseSBhZGRyZXNzZXMgYSBsZWFrLiBUaGVyZSYjMzk7cyBubyByaXNrIG9mIGV4cG9zaW5nIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IGJlY2F1c2Ugb2YgdGhpcyBjaGFuZ2U7IHdlJiMzOTtyZSBqdXN0IG1hbmFnaW5nIHdoYXQgd2UgKmRvKiBoYXZlIGJldHRlci4gRnJhbmtseSwgSSYjMzk7bSBjb25maWRlbnQgdGhhdCBvdXIgZXhpc3RpbmcgdG9vbHMsIEtBU0FOIGFuZCBLTUVNTEVBSywgYXJlIHBlcmZlY3RseSBzdWZmaWNpZW50IGZvciBkZXRlY3RpbmcgbWVtb3J5IGxlYWtzIGFuZCB0aG9zZSBuYXN0eSB1c2UtYWZ0ZXItZnJlZSBidWdzLiBObyBuZWVkIGZvciBLTVNBTiBoZXJlOyB3ZSYjMzk7cmUgZ29vZC4gVGhpcyBrZWVwcyB0aGluZ3MgbGVhbiBhbmQgZm9jdXNlZC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40NC8zPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTggMDc6NTE8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggZml4ZXMgYSBtZW1vcnkgbGVhayBieSBmcmVlaW5nIGEgc3Rhc2hlZCBgcWVudHJ5YCBpbiBgc21jX2xsY19ldmVudF9oYW5kbGVyYCB3aGVuIHRoZSBzZXJ2ZXIgc3RhcnRzIGBhZGRfbGlua2AgcHJvY2Vzc2luZy4gSXQgZG9lcyBub3QgaW50cm9kdWNlIG9yIGV4cG9zZSBhbnkgdW5pbml0aWFsaXplZCBtZW1vcnkgcmlza3Mgb3IgaW5mby1sZWFrcy4gTWVtb3J5IGxlYWtzIGFuZCB1c2UtYWZ0ZXItZnJlZSBidWdzIGFyZSBlZmZlY3RpdmVseSBkZXRlY3RlZCBieSBLTUVNTEVBSyBhbmQgS0FTQU4uIFRoZXJlZm9yZSwgYSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGlzIG5vdCByZXF1aXJlZC4mIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0tNU0FOUmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGZpeGVzIGEgbWVtb3J5IGxlYWsgYnkgZnJlZWluZyBhIHN0YXNoZWQgYHFlbnRyeWAgaW4gYHNtY19sbGNfZXZlbnRfaGFuZGxlcmAgd2hlbiB0aGUgc2VydmVyIHN0YXJ0cyBgYWRkX2xpbmtgIHByb2Nlc3NpbmcuIEl0IGRvZXMgbm90IGludHJvZHVjZSBvciBleHBvc2UgYW55IHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHJpc2tzIG9yIGluZm8tbGVha3MuIE1lbW9yeSBsZWFrcyBhbmQgdXNlLWFmdGVyLWZyZWUgYnVncyBhcmUgZWZmZWN0aXZlbHkgZGV0ZWN0ZWQgYnkgS01FTUxFQUsgYW5kIEtBU0FOLiBUaGVyZWZvcmUsIGEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpcyBub3QgcmVxdWlyZWQuJiMzNDssCiAgJiMzNDtOZWVkc0tNU0FOJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE4VDA3OjUwOjAxLjc2NDAxMjIwN1oiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjk5ODM5MDI0MTE0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIlNNQ1wiLFxuICAgIFwiSU5GSU5JQkFORFwiLFxuICAgIFwiRElCU1wiLFxuICAgIFwiRElCU19MT1wiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcInNtY19sbGNfc3J2X2FkZF9saW5rXCIsXG4gICAgXCJzbWNfbGxjX2NsaV9hZGRfbGlua1wiLFxuICAgIFwic21jX2xsY19hZGRfbGlua19sb2NhbFwiXG4gIF0sXG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggZml4ZXMgYSBtZW1vcnkgbGVhayBieSBmcmVlaW5nIGEgc3Rhc2hlZCBgcWVudHJ5YCBpbiBgc21jX2xsY19ldmVudF9oYW5kbGVyYCB3aGVuIHRoZSBzZXJ2ZXIgc3RhcnRzIGBhZGRfbGlua2AgcHJvY2Vzc2luZy4gSXQgZG9lcyBub3QgaW50cm9kdWNlIG9yIGV4cG9zZSBhbnkgdW5pbml0aWFsaXplZCBtZW1vcnkgcmlza3Mgb3IgaW5mby1sZWFrcy4gTWVtb3J5IGxlYWtzIGFuZCB1c2UtYWZ0ZXItZnJlZSBidWdzIGFyZSBlZmZlY3RpdmVseSBkZXRlY3RlZCBieSBLTUVNTEVBSyBhbmQgS0FTQU4uIFRoZXJlZm9yZSwgYSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGlzIG5vdCByZXF1aXJlZC5cIixcbiAgXCJOZWVkc0tNU0FOXCI6IGZhbHNlLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBmaXhlcyBhIG1lbW9yeSBsZWFrIGluIHRoZSBTTUMgTExDIGV2ZW50IGhhbmRsZXIgYnkgZXhwbGljaXRseSBmcmVlaW5nIHRoZSBzdGFzaGVkIHFlbnRyeSB3aGVuIHRyYW5zaXRpb25pbmcgZnJvbSB0aGUgUkVRX0FERF9MSU5LIHN0YXRlIHRvIHRoZSBBRERfTElOSyBzdGF0ZS4gVGhpcyBpcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMgZm9yIHRoZSBTTUMgcHJvdG9jb2wuIEZ1enppbmcgc2hvdWxkIGZvY3VzIG9uIHRoZSBhZGRfbGluayBmbG93IGluaXRpYXRpb24gYW5kIHByb2Nlc3NpbmcgZnVuY3Rpb25zLiBESUJTIGFuZCBESUJTX0xPIGFyZSByZXF1aXJlZCB0byBlbmFibGUgbG9jYWwgbG9vcGJhY2sgdGVzdGluZyBvZiBTTUMgb3ZlciBlbXVsYXRlZCBSRE1BLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xOFQwNzo1MDowMS43NjQwMTg0MDdaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQxMDU4OTE1OCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IDc1YzhhMWUwY2NkN2E4ZTIwNTRiZDM2YTc5YjA5Yzg1OTgwMzNmODVcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIFR1ZSBBdWcgMTggMDc6NTA6MDAgMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvbmV0L3NtYy9zbWNfbGxjLmMgYi9uZXQvc21jL3NtY19sbGMuY1xcbmluZGV4IGFhNmQ4M2FmNTVlZGEuLmM3ZjAyMjJhZmY4ZDAgMTAwNjQ0XFxuLS0tIGEvbmV0L3NtYy9zbWNfbGxjLmNcXG4rKysgYi9uZXQvc21jL3NtY19sbGMuY1xcbkBAIC0xOTExLDYgKzE5MTEsOCBAQCBzdGF0aWMgdm9pZCBzbWNfbGxjX2V2ZW50X2hhbmRsZXIoc3RydWN0IHNtY19sbGNfcWVudHJ5ICpxZW50cnkpXFxuIFxcdFxcdFxcdGlmIChsZ3ItXFx1MDAzZWxsY19mbG93X2xjbC50eXBlID09XFxuIFxcdFxcdFxcdFxcdFxcdFNNQ19MTENfRkxPV19SRVFfQUREX0xJTkspIHtcXG4gXFx0XFx0XFx0XFx0Lyogc2VydmVyIHN0YXJ0ZWQgYWRkX2xpbmsgcHJvY2Vzc2luZyAqL1xcbitcXHRcXHRcXHRcXHQvKiBmcmVlIGFueSBxZW50cnkgc3Rhc2hlZCBpbiBSRVFfQUREX0xJTksgc3RhdGUgKi9cXG4rXFx0XFx0XFx0XFx0c21jX2xsY19mbG93X3FlbnRyeV9kZWwoXFx1MDAyNmxnci1cXHUwMDNlbGxjX2Zsb3dfbGNsKTtcXG4gXFx0XFx0XFx0XFx0bGdyLVxcdTAwM2VsbGNfZmxvd19sY2wudHlwZSA9IFNNQ19MTENfRkxPV19BRERfTElOSztcXG4gXFx0XFx0XFx0XFx0c21jX2xsY19mbG93X3FlbnRyeV9zZXQoXFx1MDAyNmxnci1cXHUwMDNlbGxjX2Zsb3dfbGNsLFxcbiBcXHRcXHRcXHRcXHRcXHRcXHRcXHRxZW50cnkpO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xOFQwNzo1MDowMi4xNzUyNjk5NjVaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJiZXN0LWV4cGVuc2l2ZSIsIkR1cmF0aW9uIjo4ODQwMzgxNjM4MSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJTTUNcIixcbiAgICBcIklORklOSUJBTkRcIixcbiAgICBcIkRJQlNcIixcbiAgICBcIkRJQlNfTE9cIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJzbWNfbGxjX3Nydl9hZGRfbGlua1wiLFxuICAgIFwic21jX2xsY19jbGlfYWRkX2xpbmtcIixcbiAgICBcInNtY19sbGNfYWRkX2xpbmtfbG9jYWxcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBmaXhlcyBhIG1lbW9yeSBsZWFrIGluIHRoZSBTTUMgTExDIGV2ZW50IGhhbmRsZXIgYnkgZXhwbGljaXRseSBmcmVlaW5nIHRoZSBzdGFzaGVkIHFlbnRyeSB3aGVuIHRyYW5zaXRpb25pbmcgZnJvbSB0aGUgUkVRX0FERF9MSU5LIHN0YXRlIHRvIHRoZSBBRERfTElOSyBzdGF0ZS4gVGhpcyBpcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMgZm9yIHRoZSBTTUMgcHJvdG9jb2wuIEZ1enppbmcgc2hvdWxkIGZvY3VzIG9uIHRoZSBhZGRfbGluayBmbG93IGluaXRpYXRpb24gYW5kIHByb2Nlc3NpbmcgZnVuY3Rpb25zLiBESUJTIGFuZCBESUJTX0xPIGFyZSByZXF1aXJlZCB0byBlbmFibGUgbG9jYWwgbG9vcGJhY2sgdGVzdGluZyBvZiBTTUMgb3ZlciBlbXVsYXRlZCBSRE1BLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lXG5pZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5XG51c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLlxuXG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOlxuLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLlxuLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy5cbi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LlxuLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsXG4gIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS5cbi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsXG4gIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLlxuLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKVxuICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuXG5cbklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2hcbnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLlxuXG5XaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzpcbjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuXG4gICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy5cbiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9uc1xuICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuXG4yLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS5cbiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbiAgIEFsc28gY2hlY2sgXCJkZXBlbmRzIG9uXCIgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzXG4gICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3NcbiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCA3NWM4YTFlMGNjZDdhOGUyMDU0YmQzNmE3OWIwOWM4NTk4MDMzZjg1XG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFR1ZSBBdWcgMTggMDc6NTA6MDAgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9uZXQvc21jL3NtY19sbGMuYyBiL25ldC9zbWMvc21jX2xsYy5jXG5pbmRleCBhYTZkODNhZjU1ZWRhLi5jN2YwMjIyYWZmOGQwIDEwMDY0NFxuLS0tIGEvbmV0L3NtYy9zbWNfbGxjLmNcbisrKyBiL25ldC9zbWMvc21jX2xsYy5jXG5AQCAtMTkxMSw2ICsxOTExLDggQEAgc3RhdGljIHZvaWQgc21jX2xsY19ldmVudF9oYW5kbGVyKHN0cnVjdCBzbWNfbGxjX3FlbnRyeSAqcWVudHJ5KVxuIFx0XHRcdGlmIChsZ3ItXHUwMDNlbGxjX2Zsb3dfbGNsLnR5cGUgPT1cbiBcdFx0XHRcdFx0U01DX0xMQ19GTE9XX1JFUV9BRERfTElOSykge1xuIFx0XHRcdFx0Lyogc2VydmVyIHN0YXJ0ZWQgYWRkX2xpbmsgcHJvY2Vzc2luZyAqL1xuK1x0XHRcdFx0LyogZnJlZSBhbnkgcWVudHJ5IHN0YXNoZWQgaW4gUkVRX0FERF9MSU5LIHN0YXRlICovXG4rXHRcdFx0XHRzbWNfbGxjX2Zsb3dfcWVudHJ5X2RlbChcdTAwMjZsZ3ItXHUwMDNlbGxjX2Zsb3dfbGNsKTtcbiBcdFx0XHRcdGxnci1cdTAwM2VsbGNfZmxvd19sY2wudHlwZSA9IFNNQ19MTENfRkxPV19BRERfTElOSztcbiBcdFx0XHRcdHNtY19sbGNfZmxvd19xZW50cnlfc2V0KFx1MDAyNmxnci1cdTAwM2VsbGNfZmxvd19sY2wsXG4gXHRcdFx0XHRcdFx0XHRxZW50cnkpO1xuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMThUMDc6NTA6MDIuMTc1MjcxMzA1WiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDYwMTYxMzU4MiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgYSBOZXR3b3JraW5nIFBhdGNoKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgYSBwYXRjaCBmb3IgdGhlIFNNQyAoU2hhcmVkIE1lbW9yeSBDb21tdW5pY2F0aW9ucykgb3ZlciBMTEMgKExpbmsgTGF5ZXIgQ29udHJvbCkgY29kZSwgc3BlY2lmaWNhbGx5IGluIGBuZXQvc21jL3NtY19sbGMuY2AuIFRoZSBjb3JlIGNoYW5nZSBzZWVtcyB0byBiZSB3aXRoaW4gdGhlIGBzbWNfbGxjX2V2ZW50X2hhbmRsZXJgIGZ1bmN0aW9uLiBUaGUgcGF0Y2ggc3RyYXRlZ2ljYWxseSBpbnNlcnRzIGBzbWNfbGxjX2Zsb3dfcWVudHJ5X2RlbChcdTAwMjZsZ3ItXHUwMDNlbGxjX2Zsb3dfbGNsKTtgIHJpZ2h0IGJlZm9yZSB0aGUgYXNzaWdubWVudCBgbGdyLVx1MDAzZWxsY19mbG93X2xjbC50eXBlID0gU01DX0xMQ19GTE9XX0FERF9MSU5LO2AuIE15IGluaXRpYWwgdGhvdWdodCBpcyB0byBmaWd1cmUgb3V0IHRoZSByZWFzb25pbmcgYmVoaW5kIHRoaXMgYWRkaXRpb24uIEl0IG1ha2VzIG1lIHdhbnQgdG8gZGl2ZSBpbnRvIHRoZSBjb2RlLlxuXG5JIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgaW1wbGljYXRpb25zIG9mIHJlbW92aW5nIGEgcXVldWUgZW50cnkgKGBzbWNfbGxjX2Zsb3dfcWVudHJ5X2RlbGApIGJlZm9yZSBjaGFuZ2luZyB0aGUgYHR5cGVgIG9mIGBsbGNfZmxvd19sY2xgIHRvIGBTTUNfTExDX0ZMT1dfQUREX0xJTktgLiBJcyB0aGlzIGEgY2xlYW51cCBvcGVyYXRpb24/IFByZXZlbnRpbmcgYSBwb3RlbnRpYWwgZG91YmxlLWZyZWUgc2NlbmFyaW8/IE9yIG1heWJlIGl0J3MgYSBjcml0aWNhbCBzdGVwIGluIHRyYW5zaXRpb25pbmcgYmV0d2VlbiBmbG93IHN0YXRlcz8gSSBzaG91bGQgcmVhbGx5IGNoZWNrIHRoZSBmdW5jdGlvbiBpdHNlbGYgYW5kIHN1cnJvdW5kaW5nIGNvZGUgZm9yIHBvdGVudGlhbCBzaWRlIGVmZmVjdHMsIGFuZCBleGFtaW5lIHRoZSBzdHJ1Y3R1cmUgYGxsY19mbG93X2xjbGAgYW5kIGBsZ3JgIGluIG9yZGVyIHRvIHNlZSB3aGF0IHRoZSBpbXBhY3Qgb2YgdGhpcyBjaGFuZ2UgaXMgb24gdGhlIG92ZXJhbGwgc3lzdGVtLCBzbyBsZXQgbWUgZ2V0IHN0YXJ0ZWQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIwNjYsIk91dHB1dFRva2VucyI6NDEsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMTksIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xOFQwNzo1MDowNi43NzY4ODc3NTdaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDM5OTc5NTksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwic21jX2xsY19ldmVudF9oYW5kbGVyXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9zbWMvc21jX2xsYy5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9zbWMvc21jX2xsYy5jPTE4NjM9c3RhdGljIHZvaWQgc21jX2xsY19ldmVudF9mbHVzaChzdHJ1Y3Qgc21jX2xpbmtfZ3JvdXAgKmxncilcXG4tLVxcbm5ldC9zbWMvc21jX2xsYy5jLTE4NzQtXFxubmV0L3NtYy9zbWNfbGxjLmM6MTg3NTpzdGF0aWMgdm9pZCBzbWNfbGxjX2V2ZW50X2hhbmRsZXIoc3RydWN0IHNtY19sbGNfcWVudHJ5ICpxZW50cnkpXFxubmV0L3NtYy9zbWNfbGxjLmMtMTg3Ni17XFxuLS1cXG5uZXQvc21jL3NtY19sbGMuYz0xOTk3PXN0YXRpYyB2b2lkIHNtY19sbGNfZXZlbnRfd29yayhzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspXFxuLS1cXG5uZXQvc21jL3NtY19sbGMuYy0yMDA2LVxcdFxcdGlmIChzbWNfbGlua191c2FibGUocWVudHJ5LVxcdTAwM2VsaW5rKSlcXG5uZXQvc21jL3NtY19sbGMuYzoyMDA3OlxcdFxcdFxcdHNtY19sbGNfZXZlbnRfaGFuZGxlcihxZW50cnkpO1xcbm5ldC9zbWMvc21jX2xsYy5jLTIwMDgtXFx0XFx0ZWxzZVxcbi0tXFxubmV0L3NtYy9zbWNfbGxjLmMtMjAxOC1cXHRcXHRzcGluX3VubG9ja19iaChcXHUwMDI2bGdyLVxcdTAwM2VsbGNfZXZlbnRfcV9sb2NrKTtcXG5uZXQvc21jL3NtY19sbGMuYzoyMDE5OlxcdFxcdHNtY19sbGNfZXZlbnRfaGFuZGxlcihxZW50cnkpO1xcbm5ldC9zbWMvc21jX2xsYy5jLTIwMjAtXFx0XFx0Z290byBhZ2FpbjtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMThUMDc6NTA6MDYuODIwODkwOTY2WiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzMwNDU3NTgyMSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIGEgc3VtbWFyeSBvZiBteSB0aG91Z2h0IHByb2Nlc3M6XG5cbioqRGl2aW5nIGludG8gdGhlIFNNQyBMTEMgRXZlbnQgSGFuZGxpbmcqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGUgYHNtY19sbGNfZXZlbnRfaGFuZGxlcmAgZnVuY3Rpb24uIFRoZSBjb2RlIHRlbGxzIG1lIGl0J3MgYSBzdGF0aWMgZnVuY3Rpb24sIHJlc2lkaW5nIHdpdGhpbiBgbmV0L3NtYy9zbWNfbGxjLmNgLiBUaGF0J3MgaW1wb3J0YW50IGZvciBjb250ZXh0IC0gSSBuZWVkIHRvIGtub3cgd2hlcmUgSSdtIGxvb2tpbmcuIFRoZSBuZXh0IHRoaW5nIHRoYXQgbGVhcHMgb3V0IGlzIHRoYXQgaXQgYXBwZWFycyB0byBiZSBjYWxsZWQgZnJvbSBgc21jX2xsY19ldmVudF93b3JrYC4gTmF0dXJhbGx5LCBteSBtaW5kIGltbWVkaWF0ZWx5IGp1bXBzIHRvIFwiV2hhdCAqaXMqIGBzbWNfbGxjX2V2ZW50X3dvcmtgP1wiIFRoYXQncyB0aGUgbmV4dCBsb2dpY2FsIHN0ZXA7IEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBjYWxsaW5nIGZ1bmN0aW9uIHRvIHRydWx5IHVuZGVyc3RhbmQgdGhlIGNhbGxlZCBmdW5jdGlvbiBhbmQgdGhlIG92ZXJhbGwgZmxvdyBvZiBldmVudHMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI4ODAsIk91dHB1dFRva2VucyI6NDEsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo2OCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xOFQwNzo1MDoxMC4xMjU0NzAxNTdaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDQ2ODc3MjksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwic21jX2xsY19ldmVudF93b3JrXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9zbWMvc21jX2xsYy5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9zbWMvc21jX2xsYy5jPTE4NzU9c3RhdGljIHZvaWQgc21jX2xsY19ldmVudF9oYW5kbGVyKHN0cnVjdCBzbWNfbGxjX3FlbnRyeSAqcWVudHJ5KVxcbi0tXFxubmV0L3NtYy9zbWNfbGxjLmMtMTk5Ni0vKiB3b3JrZXIgdG8gcHJvY2VzcyBsbGMgbWVzc2FnZXMgb24gdGhlIGV2ZW50IHF1ZXVlICovXFxubmV0L3NtYy9zbWNfbGxjLmM6MTk5NzpzdGF0aWMgdm9pZCBzbWNfbGxjX2V2ZW50X3dvcmsoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxcbm5ldC9zbWMvc21jX2xsYy5jLTE5OTgte1xcbi0tXFxubmV0L3NtYy9zbWNfbGxjLmM9MjE0OT12b2lkIHNtY19sbGNfbGdyX2luaXQoc3RydWN0IHNtY19saW5rX2dyb3VwICpsZ3IsIHN0cnVjdCBzbWNfc29jayAqc21jKVxcbi0tXFxubmV0L3NtYy9zbWNfbGxjLmMtMjE1Mi1cXG5uZXQvc21jL3NtY19sbGMuYzoyMTUzOlxcdElOSVRfV09SSyhcXHUwMDI2bGdyLVxcdTAwM2VsbGNfZXZlbnRfd29yaywgc21jX2xsY19ldmVudF93b3JrKTtcXG5uZXQvc21jL3NtY19sbGMuYy0yMTU0LVxcdElOSVRfV09SSyhcXHUwMDI2bGdyLVxcdTAwM2VsbGNfYWRkX2xpbmtfd29yaywgc21jX2xsY19hZGRfbGlua193b3JrKTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMThUMDc6NTA6MTAuMTcwMTYxMzI2WiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MjcxNDY1MzIyOCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHRha2Ugb24gdGhlIHRob3VnaHQgcHJvY2Vzcywgc3VtbWFyaXplZCBhcyB5b3UgcmVxdWVzdGVkOlxuXG4qKk5hdmlnYXRpbmcgdGhlIFNNQyBLZXJuZWwgQ29kZSoqXG5cbk9rYXksIHNvIEkndmUgZ290IHRoaXMgcGF0Y2ggdG8gZGVhbCB3aXRoLCBhbmQgaXQgbG9va3MgbGlrZSBpdCdzIHdpdGhpbiB0aGUgU3lzdGVtIE1hbmFnZW1lbnQgQ29udHJvbGxlciAoU01DKSBjb2RlLiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdG8gemVybyBpbiBvbiB0aGUgZXhhY3QgbG9jYXRpb24gb2YgdGhlIGNoYW5nZS4gSXQgc2VlbXMgdGhlIGNvcmUgb2YgdGhlIHBhdGNoIGlzIGdvaW5nIHRvIGJlIGluIGBuZXQvc21jL3NtY19sbGMuY2AuIFRoYXTigJlzIHRoZSBmaXJzdCBwaWVjZSBvZiB0aGUgcHV6emxlLiBOb3csIHRvIHVuZGVyc3RhbmQgaG93IHRoaXMgZml0cyBpbnRvIHRoZSBicm9hZGVyIHBpY3R1cmUsIEkgbmVlZCB0byBjaGVjayB0aGUgY29uZmlndXJhdGlvbiBzZXR0aW5ncy4gVGltZSB0byBsb2NhdGUgdGhlIHJlbGV2YW50IEtjb25maWcgZmlsZSBmb3IgU01DLiBVbmRlcnN0YW5kaW5nIHRoZSBLY29uZmlnIG9wdGlvbnMgd2lsbCBnaXZlIG1lIHRoZSBjb250ZXh0IEkgbmVlZCB0byBhc3Nlc3MgdGhlIGltcGFjdCBvZiB0aGlzIHBhdGNoLiBMZXQncyBzZWUgd2hhdCB0aGUgY29uZmlndXJhdGlvbiBmbGFncyBhcmUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjM0NjYsIk91dHB1dFRva2VucyI6MjksIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyOSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xOFQwNzo1MDoxMi44ODQ4MTc2OTRaIiwiU2VxIjo4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDQ1OTQ2MjksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIFNNQ1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvc21jL0tjb25maWdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L3NtYy9LY29uZmlnLTEtIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XFxubmV0L3NtYy9LY29uZmlnOjI6Y29uZmlnIFNNQ1xcbm5ldC9zbWMvS2NvbmZpZy0zLVxcdHRyaXN0YXRlIFxcXCJTTUMgc29ja2V0IHByb3RvY29sIGZhbWlseVxcXCJcXG4tLVxcbm5ldC9zbWMvS2NvbmZpZy0xMy1cXG5uZXQvc21jL0tjb25maWc6MTQ6Y29uZmlnIFNNQ19ESUFHXFxubmV0L3NtYy9LY29uZmlnLTE1LVxcdHRyaXN0YXRlIFxcXCJTTUM6IHNvY2tldCBtb25pdG9yaW5nIGludGVyZmFjZVxcXCJcXG4tLVxcbm5ldC9zbWMvS2NvbmZpZy0yMi1cXG5uZXQvc21jL0tjb25maWc6MjM6Y29uZmlnIFNNQ19IU19DVFJMX0JQRlxcbm5ldC9zbWMvS2NvbmZpZy0yNC1cXHRib29sIFxcXCJHZW5lcmljIGVCUEYgaG9vayBmb3IgU01DIGhhbmRzaGFrZSBmbG93XFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xOFQwNzo1MDoxMi45Mjk0MTU2ODNaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNjg1MzE4NzgwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgYW5hbHlzaXMgb2YgdGhlIGNvZGUsIHByZXNlbnRlZCBhcyBteSBpbnRlcm5hbCB0aG91Z2h0IHByb2Nlc3M6XG5cbioqRGl2aW5nIGludG8gdGhlIFNNQyBMTEMgRXZlbnQgSGFuZGxpbmcqKlxuXG5Pa2F5LCB0aGUgY29uZmlndXJhdGlvbiBJJ20gbG9va2luZyBhdCBpcyBmb3IgYFNNQ2AuIEkgbmVlZCB0byBmaWd1cmUgb3V0IGhvdyB0aGUgc3lzdGVtIGhhbmRsZXMgZXZlbnRzIHdpdGhpbiB0aGF0IGNvbnRleHQsIHNwZWNpZmljYWxseSB0aGUgZnVuY3Rpb24gYHNtY19sbGNfZXZlbnRfaGFuZGxlcmAuIFRoZSBmYWN0IHRoYXQgaXQncyBgc3RhdGljYCBtZWFucyBJIG5lZWQgdG8gaHVudCBkb3duIHRoZSBjYWxsIHNpdGVzLiBMZXQncyBzZWUuLi4gQWgsIHRoZXJlIGl0IGlzLCBgc21jX2xsY19ldmVudF93b3JrYCBpcyBhIHdvcmtxdWV1ZSBmdW5jdGlvbiwgbWVhbmluZyBpdCdzIGxpa2VseSBjYWxsZWQgYXN5bmNocm9ub3VzbHkuIFRoYXQgbmFycm93cyB0aGUgdHJpZ2dlcnMgZG93biBhIGJpdC4gTm93LCB3aGF0J3MgZW5xdWV1aW5nIHdvcmsgdG8gdGhhdCBzcGVjaWZpYyB3b3JrcXVldWU/IEl0IHNlZW1zIGxvZ2ljYWwgdGhhdCBgc21jX2xsY19lbnF1ZXVlYCB3b3VsZCBiZSByZXNwb25zaWJsZS4gSSdsbCBuZWVkIHRvIHZlcmlmeSB0aGF0IGNhbGwsIGJ1dCB0aGlzIHNlZW1zIGxpa2UgdGhlIHN0YXJ0aW5nIHBvaW50IGZvciB1bmRlcnN0YW5kaW5nIHRoZSBldmVudCBwcm9jZXNzaW5nIGZsb3cuIFRoaXMgc2hvdWxkIGdldCBtZSB3aGVyZSBJIG5lZWQgdG8gZ28uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjM4NzksIk91dHB1dFRva2VucyI6MzgsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo3MSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xOFQwNzo1MDoxNi42MTQ3Mzk0OTJaIiwiU2VxIjoxMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ0NjM2MDA4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImxsY19ldmVudF93b3JrXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9zbWMvc21jX2xsYy5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9zbWMvc21jX2xsYy5jPTMyMD12b2lkIHNtY19sbGNfZmxvd19zdG9wKHN0cnVjdCBzbWNfbGlua19ncm91cCAqbGdyLCBzdHJ1Y3Qgc21jX2xsY19mbG93ICpmbG93KVxcbi0tXFxubmV0L3NtYy9zbWNfbGxjLmMtMzI3LVxcdCAgICBmbG93ID09IFxcdTAwMjZsZ3ItXFx1MDAzZWxsY19mbG93X2xjbClcXG5uZXQvc21jL3NtY19sbGMuYzozMjg6XFx0XFx0c2NoZWR1bGVfd29yayhcXHUwMDI2bGdyLVxcdTAwM2VsbGNfZXZlbnRfd29yayk7XFxubmV0L3NtYy9zbWNfbGxjLmMtMzI5LVxcdGVsc2VcXG4tLVxcbm5ldC9zbWMvc21jX2xsYy5jPTE4NzU9c3RhdGljIHZvaWQgc21jX2xsY19ldmVudF9oYW5kbGVyKHN0cnVjdCBzbWNfbGxjX3FlbnRyeSAqcWVudHJ5KVxcbi0tXFxubmV0L3NtYy9zbWNfbGxjLmMtMTk5Ni0vKiB3b3JrZXIgdG8gcHJvY2VzcyBsbGMgbWVzc2FnZXMgb24gdGhlIGV2ZW50IHF1ZXVlICovXFxubmV0L3NtYy9zbWNfbGxjLmM6MTk5NzpzdGF0aWMgdm9pZCBzbWNfbGxjX2V2ZW50X3dvcmsoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxcbm5ldC9zbWMvc21jX2xsYy5jLTE5OTgte1xcbm5ldC9zbWMvc21jX2xsYy5jLTE5OTktXFx0c3RydWN0IHNtY19saW5rX2dyb3VwICpsZ3IgPSBjb250YWluZXJfb2Yod29yaywgc3RydWN0IHNtY19saW5rX2dyb3VwLFxcbm5ldC9zbWMvc21jX2xsYy5jOjIwMDA6XFx0XFx0XFx0XFx0XFx0XFx0ICBsbGNfZXZlbnRfd29yayk7XFxubmV0L3NtYy9zbWNfbGxjLmMtMjAwMS1cXHRzdHJ1Y3Qgc21jX2xsY19xZW50cnkgKnFlbnRyeTtcXG4tLVxcbm5ldC9zbWMvc21jX2xsYy5jPTIwNjk9c3RhdGljIHZvaWQgc21jX2xsY19lbnF1ZXVlKHN0cnVjdCBzbWNfbGluayAqbGluaywgdW5pb24gc21jX2xsY19tc2cgKmxsYylcXG4tLVxcbm5ldC9zbWMvc21jX2xsYy5jLTIwOTItXFx0c3Bpbl91bmxvY2tfaXJxcmVzdG9yZShcXHUwMDI2bGdyLVxcdTAwM2VsbGNfZXZlbnRfcV9sb2NrLCBmbGFncyk7XFxubmV0L3NtYy9zbWNfbGxjLmM6MjA5MzpcXHRxdWV1ZV93b3JrKHN5c3RlbV9oaWdocHJpX3dxLCBcXHUwMDI2bGdyLVxcdTAwM2VsbGNfZXZlbnRfd29yayk7XFxubmV0L3NtYy9zbWNfbGxjLmMtMjA5NC19XFxuLS1cXG5uZXQvc21jL3NtY19sbGMuYz0yMTQ5PXZvaWQgc21jX2xsY19sZ3JfaW5pdChzdHJ1Y3Qgc21jX2xpbmtfZ3JvdXAgKmxnciwgc3RydWN0IHNtY19zb2NrICpzbWMpXFxuLS1cXG5uZXQvc21jL3NtY19sbGMuYy0yMTUyLVxcbm5ldC9zbWMvc21jX2xsYy5jOjIxNTM6XFx0SU5JVF9XT1JLKFxcdTAwMjZsZ3ItXFx1MDAzZWxsY19ldmVudF93b3JrLCBzbWNfbGxjX2V2ZW50X3dvcmspO1xcbm5ldC9zbWMvc21jX2xsYy5jLTIxNTQtXFx0SU5JVF9XT1JLKFxcdTAwMjZsZ3ItXFx1MDAzZWxsY19hZGRfbGlua193b3JrLCBzbWNfbGxjX2FkZF9saW5rX3dvcmspO1xcbi0tXFxubmV0L3NtYy9zbWNfbGxjLmM9MjE2OD12b2lkIHNtY19sbGNfbGdyX2NsZWFyKHN0cnVjdCBzbWNfbGlua19ncm91cCAqbGdyKVxcbi0tXFxubmV0L3NtYy9zbWNfbGxjLmMtMjE3Mi1cXHR3YWtlX3VwX2FsbChcXHUwMDI2bGdyLVxcdTAwM2VsbGNfbXNnX3dhaXRlcik7XFxubmV0L3NtYy9zbWNfbGxjLmM6MjE3MzpcXHRjYW5jZWxfd29ya19zeW5jKFxcdTAwMjZsZ3ItXFx1MDAzZWxsY19ldmVudF93b3JrKTtcXG5uZXQvc21jL3NtY19sbGMuYy0yMTc0LVxcdGNhbmNlbF93b3JrX3N5bmMoXFx1MDAyNmxnci1cXHUwMDNlbGxjX2FkZF9saW5rX3dvcmspO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xOFQwNzo1MDoxNi42NTkzODE5MzFaIiwiU2VxIjoxMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzY1MTA1OTg3MSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6XG5cbioqQW5hbHl6aW5nIHRoZSBMTEMgTWVzc2FnZSBFbnF1ZXVlIFBhdGgqKlxuXG5BbHJpZ2h0LCBzbyBgc21jX2xsY19lbnF1ZXVlYCBpcyB0cmlnZ2VyZWQgd2hlbmV2ZXIgd2UgZ2V0IGFuIExMQyBtZXNzYWdlLiBNeSBmaXJzdCBpbnN0aW5jdCwgYXMgYWx3YXlzLCBpcyB0byBmb2xsb3cgdGhlIGRhdGEgZmxvdy4gVGhlIGltbWVkaWF0ZSBxdWVzdGlvbiBJIGhhdmUgaXMsIHdoZXJlIGV4YWN0bHkgKmlzKiBgc21jX2xsY19lbnF1ZXVlYCBjYWxsZWQgZnJvbT8gSSBuZWVkIHRvIHRyYWNlIGJhY2sgZnJvbSB0aGF0IHBvaW50IHRvIGZ1bGx5IHVuZGVyc3RhbmQgdGhlIGV2ZW50J3Mgb3JpZ2luIGFuZCBjb250ZXh0LiBMZXQncyBkaWcgaW50byB0aGUgY2FsbCBzaXRlcyBhbmQgc2VlIHdoYXQgdXBzdHJlYW0gZnVuY3Rpb25zIG9yIGludGVycnVwdCBoYW5kbGVycyBhcmUgcmVzcG9uc2libGUgZm9yIGFjdHVhbGx5IHBsYWNpbmcgdGhlc2UgbWVzc2FnZXMgb24gdGhlIHF1ZXVlLiBLbm93aW5nIHRoaXMgd2lsbCBnaXZlIG1lIGEgcHJvcGVyIGhhbmRsZSBvbiB0aGUgb3ZlcmFsbCBtZXNzYWdlIHByb2Nlc3NpbmcgYXJjaGl0ZWN0dXJlLlxuXG5cbiIsIklucHV0VG9rZW5zIjo1MDU5LCJPdXRwdXRUb2tlbnMiOjM5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzYsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMThUMDc6NTA6MjAuMzEwNDQzOTgyWiIsIlNlcSI6MTIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0NjczMTY5OSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJzbWNfbGxjX2VucXVldWVcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L3NtYy9zbWNfbGxjLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L3NtYy9zbWNfbGxjLmM9MTk5PXN0cnVjdCBzbWNfbGxjX3FlbnRyeSB7XFxuLS1cXG5uZXQvc21jL3NtY19sbGMuYy0yMDQtXFxubmV0L3NtYy9zbWNfbGxjLmM6MjA1OnN0YXRpYyB2b2lkIHNtY19sbGNfZW5xdWV1ZShzdHJ1Y3Qgc21jX2xpbmsgKmxpbmssIHVuaW9uIHNtY19sbGNfbXNnICpsbGMpO1xcbm5ldC9zbWMvc21jX2xsYy5jLTIwNi1cXG4tLVxcbm5ldC9zbWMvc21jX2xsYy5jPTE1NDg9dm9pZCBzbWNfbGxjX2FkZF9saW5rX2xvY2FsKHN0cnVjdCBzbWNfbGluayAqbGluaylcXG4tLVxcbm5ldC9zbWMvc21jX2xsYy5jLTE1NTQtXFx0Lyogbm8gZGV2IGFuZCBwb3J0IG5lZWRlZCAqL1xcbm5ldC9zbWMvc21jX2xsYy5jOjE1NTU6XFx0c21jX2xsY19lbnF1ZXVlKGxpbmssICh1bmlvbiBzbWNfbGxjX21zZyAqKVxcdTAwMjZhZGRfbGxjKTtcXG5uZXQvc21jL3NtY19sbGMuYy0xNTU2LX1cXG4tLVxcbm5ldC9zbWMvc21jX2xsYy5jPTE1ODI9dm9pZCBzbWNfbGxjX3Nydl9kZWxldGVfbGlua19sb2NhbChzdHJ1Y3Qgc21jX2xpbmsgKmxpbmssIHU4IGRlbF9saW5rX2lkKVxcbi0tXFxubmV0L3NtYy9zbWNfbGxjLmMtMTU5MC1cXHRkZWxfbGxjLmhkLmZsYWdzIHw9IFNNQ19MTENfRkxBR19ERUxfTElOS19PUkRFUkxZO1xcbm5ldC9zbWMvc21jX2xsYy5jOjE1OTE6XFx0c21jX2xsY19lbnF1ZXVlKGxpbmssICh1bmlvbiBzbWNfbGxjX21zZyAqKVxcdTAwMjZkZWxfbGxjKTtcXG5uZXQvc21jL3NtY19sbGMuYy0xNTkyLX1cXG4tLVxcbm5ldC9zbWMvc21jX2xsYy5jPTIwMjY9c3RhdGljIHZvaWQgc21jX2xsY19yeF9yZXNwb25zZShzdHJ1Y3Qgc21jX2xpbmsgKmxpbmssXFxuLS1cXG5uZXQvc21jL3NtY19sbGMuYy0yMDY4LVxcbm5ldC9zbWMvc21jX2xsYy5jOjIwNjk6c3RhdGljIHZvaWQgc21jX2xsY19lbnF1ZXVlKHN0cnVjdCBzbWNfbGluayAqbGluaywgdW5pb24gc21jX2xsY19tc2cgKmxsYylcXG5uZXQvc21jL3NtY19sbGMuYy0yMDcwLXtcXG4tLVxcbm5ldC9zbWMvc21jX2xsYy5jPTIwOTc9c3RhdGljIHZvaWQgc21jX2xsY19yeF9oYW5kbGVyKHN0cnVjdCBpYl93YyAqd2MsIHZvaWQgKmJ1ZilcXG4tLVxcbm5ldC9zbWMvc21jX2xsYy5jLTIxMTEtXFxubmV0L3NtYy9zbWNfbGxjLmM6MjExMjpcXHRzbWNfbGxjX2VucXVldWUobGluaywgbGxjKTtcXG5uZXQvc21jL3NtY19sbGMuYy0yMTEzLX1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMThUMDc6NTA6MjAuMzU3MTc5NzRaIiwiU2VxIjoxMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTg1NTYzMzQ3NCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBc3Nlc3NtZW50IG9mIGBzbWNfbGxjX3J4X2hhbmRsZXJgIFZ1bG5lcmFiaWxpdHkqKlxuXG5Pa2F5LCBzbyBgc21jX2xsY19yeF9oYW5kbGVyYCBpcyB0aGUgcmVjZWl2ZSBoYW5kbGVyIGZvciBMTEMgbWVzc2FnZXMsIHdoaWNoIG1ha2VzIGl0IGFuIGltcG9ydGFudCBwaWVjZSBvZiB0aGUgSUIgcmVjZWl2ZSBoYW5kbGluZy4gU01DIHVzZXMgUkRNQSAoUm9DRSkgb3IgSVNNLCBzbyB3ZSBhcmUgZGVhbGluZyB3aXRoIGhpZ2gtcGVyZm9ybWFuY2UgbmV0d29ya2luZyBoZXJlLCB3aGljaCB0ZW5kcyB0byBiZSBhIHRhcmdldCBmb3IgZnV6emluZy4gVGhlIGltbWVkaWF0ZSBxdWVzdGlvbiBpcywgY2FuIHRoaXMgYmUgZnV6emVkPyBTTUMsIGFzIEkgcmVjYWxsLCBpcyByZWFjaGFibGUgdGhyb3VnaCBBRl9TTUMgc29ja2V0cy4gRXhjZWxsZW50LCBsZXQncyBzZWUgaWYgc3l6a2FsbGVyIGlzIGFscmVhZHkgdGFyZ2V0aW5nIEFGX1NNQy4gQWhhISBZZXMsIHN5emthbGxlciBkb2VzIGZ1enogQUZfU01DLiBUaGF0J3MgYSBnb29kIHN0YXJ0aW5nIHBvaW50LlxuXG5Ob3csIHRoZSBjcnVjaWFsIHF1ZXN0aW9uOiBjYW4gd2UgcmVhY2ggYHNtY19sbGNfcnhfaGFuZGxlcmAgZGlyZWN0bHkgdGhyb3VnaCBmdXp6aW5nPyBMTEMgbWVzc2FnZXMgYXJlIGV4Y2hhbmdlZCBiZXR3ZWVuIFNNQyBwZWVycyBvdmVyIHRoZSBSb0NFL0lTTSBsaW5rLiBUaGUgdHJpY2sgaXMgdG8gcmVhY2ggdGhpcyBjb2RlIHdpdGhvdXQgYSBwZWVyLCBvciBhIHBlZXIgd2UgY29udHJvbC4gSWYgd2UncmUgc2ltdWxhdGluZyBhIHBlZXIsIG9yIHVzaW5nIGxvb3BiYWNrLCB0aGVuIHdlIGNhbiByZWFjaCB0aGlzIGhhbmRsZXIuIFdhaXQsIHN5emthbGxlciBpcyBzcGVjaWZpY2FsbHkgZ29vZCBhdCBpbmplY3RpbmcgcGFja2V0cyBvciB1c2luZyBsb29wYmFjaywgd2hpY2ggd291bGQgYWxsb3cgdXMgdG8gY3JhZnQgcGFja2V0cyBhbmQgcG90ZW50aWFsbHkgdHJpZ2dlciB0aGUgaGFuZGxlci4gVGhpcyBpcyBkZWZpbml0ZWx5IHByb21pc2luZy5cblxuQXJlIHRoZXJlIGFueSBzcGVjaWZpYyBmdW5jdGlvbnMgd2l0aGluIHRoaXMgbW9kdWxlIHRoYXQgYXJlIHBhcnRpY3VsYXJseSByZWxldmFudCBvciBpbnRlcmVzdGluZyB0byB0YXJnZXQ/IGBzbWNfbGxjX2V2ZW50X2hhbmRsZXJgLCBgc21jX2xsY19ldmVudF93b3JrYCwgYW5kIGBzbWNfbGxjX3J4X2hhbmRsZXJgIGFyZSBhbGwgc3RhdGljLiBUaGF0J3Mgbm90IGlkZWFsLCBhcyB0aGF0IGxpbWl0cyBleHRlcm5hbCBhY2Nlc3MsIGJ1dCBsZXQncyBzZWUsIHdoYXQgYXJlIHRoZSBub24tc3RhdGljIGZ1bmN0aW9ucyBhdmFpbGFibGUgaW4gdGhpcyBhcmVhPyBXZSBuZWVkIHRvIGxvb2sgaW4gYG5ldC9zbWMvc21jX2xsYy5jYCB0byBzZWUgaWYgdGhlcmUgYXJlIGFueSBleHBvcnRlZCBvciBub24tc3RhdGljIGZ1bmN0aW9ucyB0aGF0IG1pZ2h0IGFjdCBhcyBlbnRyeSBwb2ludHMgdG8gdHJpZ2dlciBgc21jX2xsY19yeF9oYW5kbGVyYC5cblxuXG4iLCJJbnB1dFRva2VucyI6NTk1MSwiT3V0cHV0VG9rZW5zIjo1NiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI1MiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xOFQwNzo1MDoyNi4yMTI4MTYxNTVaIiwiU2VxIjoxNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ2MDU2MjM5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIl5bYS16QS1aX11bYS16QS1aMC05X10qIHNtY19sbGNfXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9zbWMvc21jX2xsYy5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9zbWMvc21jX2xsYy5jLTIzLVxcbm5ldC9zbWMvc21jX2xsYy5jOjI0OnN0cnVjdCBzbWNfbGxjX2hkciB7XFxubmV0L3NtYy9zbWNfbGxjLmMtMjUtXFx0c3RydWN0IHNtY193cl9yeF9oZHIgY29tbW9uO1xcbi0tXFxubmV0L3NtYy9zbWNfbGxjLmMtNDYtXFxubmV0L3NtYy9zbWNfbGxjLmM6NDc6c3RydWN0IHNtY19sbGNfbXNnX2NvbmZpcm1fbGluayB7XFx0LyogdHlwZSAweDAxICovXFxubmV0L3NtYy9zbWNfbGxjLmMtNDgtXFx0c3RydWN0IHNtY19sbGNfaGRyIGhkO1xcbi0tXFxubmV0L3NtYy9zbWNfbGxjLmMtNjEtXFxubmV0L3NtYy9zbWNfbGxjLmM6NjI6c3RydWN0IHNtY19sbGNfbXNnX2FkZF9saW5rIHtcXHRcXHQvKiB0eXBlIDB4MDIgKi9cXG5uZXQvc21jL3NtY19sbGMuYy02My1cXHRzdHJ1Y3Qgc21jX2xsY19oZHIgaGQ7XFxuLS1cXG5uZXQvc21jL3NtY19sbGMuYy03OS1cXG5uZXQvc21jL3NtY19sbGMuYzo4MDpzdHJ1Y3Qgc21jX2xsY19tc2dfYWRkX2xpbmtfY29udF9ydCB7XFxubmV0L3NtYy9zbWNfbGxjLmMtODEtXFx0X19iZTMyIHJtYl9rZXk7XFxuLS1cXG5uZXQvc21jL3NtY19sbGMuYy04NS1cXG5uZXQvc21jL3NtY19sbGMuYzo4NjpzdHJ1Y3Qgc21jX2xsY19tc2dfYWRkX2xpbmtfdjJfZXh0IHtcXG5uZXQvc21jL3NtY19sbGMuYy04Ny0jaWYgZGVmaW5lZChfX0JJR19FTkRJQU5fQklURklFTEQpXFxuLS1cXG5uZXQvc21jL3NtY19sbGMuYy0xMDMtXFxubmV0L3NtYy9zbWNfbGxjLmM6MTA0OnN0cnVjdCBzbWNfbGxjX21zZ19yZXFfYWRkX2xpbmtfdjIge1xcbm5ldC9zbWMvc21jX2xsYy5jLTEwNS1cXHRzdHJ1Y3Qgc21jX2xsY19oZHIgaGQ7XFxuLS1cXG5uZXQvc21jL3NtY19sbGMuYy0xMTMtXFxubmV0L3NtYy9zbWNfbGxjLmM6MTE0OnN0cnVjdCBzbWNfbGxjX21zZ19hZGRfbGlua19jb250IHtcXHQvKiB0eXBlIDB4MDMgKi9cXG5uZXQvc21jL3NtY19sbGMuYy0xMTUtXFx0c3RydWN0IHNtY19sbGNfaGRyIGhkO1xcbi0tXFxubmV0L3NtYy9zbWNfbGxjLmMtMTI1LVxcbm5ldC9zbWMvc21jX2xsYy5jOjEyNjpzdHJ1Y3Qgc21jX2xsY19tc2dfZGVsX2xpbmsge1xcdFxcdC8qIHR5cGUgMHgwNCAqL1xcbm5ldC9zbWMvc21jX2xsYy5jLTEyNy1cXHRzdHJ1Y3Qgc21jX2xsY19oZHIgaGQ7XFxuLS1cXG5uZXQvc21jL3NtY19sbGMuYy0xMzItXFxubmV0L3NtYy9zbWNfbGxjLmM6MTMzOnN0cnVjdCBzbWNfbGxjX21zZ190ZXN0X2xpbmsge1xcdFxcdC8qIHR5cGUgMHgwNyAqL1xcbm5ldC9zbWMvc21jX2xsYy5jLTEzNC1cXHRzdHJ1Y3Qgc21jX2xsY19oZHIgaGQ7XFxuLS1cXG5uZXQvc21jL3NtY19sbGMuYz0xMzk9c3RydWN0IHNtY19ybWJfcnRva2VuIHtcXG4tLVxcbm5ldC9zbWMvc21jX2xsYy5jLTE1Mi1cXG5uZXQvc21jL3NtY19sbGMuYzoxNTM6c3RydWN0IHNtY19sbGNfbXNnX2NvbmZpcm1fcmtleSB7XFx0LyogdHlwZSAweDA2ICovXFxubmV0L3NtYy9zbWNfbGxjLmMtMTU0LVxcdHN0cnVjdCBzbWNfbGxjX2hkciBoZDtcXG4tLVxcbm5ldC9zbWMvc21jX2xsYy5jLTE2Mi1cXG5uZXQvc21jL3NtY19sbGMuYzoxNjM6c3RydWN0IHNtY19sbGNfbXNnX2RlbGV0ZV9ya2V5IHtcXHQvKiB0eXBlIDB4MDkgKi9cXG5uZXQvc21jL3NtY19sbGMuYy0xNjQtXFx0c3RydWN0IHNtY19sbGNfaGRyIGhkO1xcbi0tXFxubmV0L3NtYy9zbWNfbGxjLmMtMTcxLVxcbm5ldC9zbWMvc21jX2xsYy5jOjE3MjpzdHJ1Y3Qgc21jX2xsY19tc2dfZGVsZXRlX3JrZXlfdjIge1xcdC8qIHR5cGUgMHgyOSAqL1xcbm5ldC9zbWMvc21jX2xsYy5jLTE3My1cXHRzdHJ1Y3Qgc21jX2xsY19oZHIgaGQ7XFxuLS1cXG5uZXQvc21jL3NtY19sbGMuYy0xNzktXFxubmV0L3NtYy9zbWNfbGxjLmM6MTgwOnVuaW9uIHNtY19sbGNfbXNnIHtcXG5uZXQvc21jL3NtY19sbGMuYy0xODEtXFx0c3RydWN0IHNtY19sbGNfbXNnX2NvbmZpcm1fbGluayBjb25maXJtX2xpbms7XFxuLS1cXG5uZXQvc21jL3NtY19sbGMuYy0xOTgtXFxubmV0L3NtYy9zbWNfbGxjLmM6MTk5OnN0cnVjdCBzbWNfbGxjX3FlbnRyeSB7XFxubmV0L3NtYy9zbWNfbGxjLmMtMjAwLVxcdHN0cnVjdCBsaXN0X2hlYWQgbGlzdDtcXG4tLVxcbm5ldC9zbWMvc21jX2xsYy5jPTIwNT1zdGF0aWMgdm9pZCBzbWNfbGxjX2VucXVldWUoc3RydWN0IHNtY19saW5rICpsaW5rLCB1bmlvbiBzbWNfbGxjX21zZyAqbGxjKTtcXG5uZXQvc21jL3NtY19sbGMuYy0yMDYtXFxubmV0L3NtYy9zbWNfbGxjLmM6MjA3OnN0cnVjdCBzbWNfbGxjX3FlbnRyeSAqc21jX2xsY19mbG93X3FlbnRyeV9jbHIoc3RydWN0IHNtY19sbGNfZmxvdyAqZmxvdylcXG5uZXQvc21jL3NtY19sbGMuYy0yMDgte1xcbi0tXFxubmV0L3NtYy9zbWNfbGxjLmMtMjE0LVxcbm5ldC9zbWMvc21jX2xsYy5jOjIxNTp2b2lkIHNtY19sbGNfZmxvd19xZW50cnlfZGVsKHN0cnVjdCBzbWNfbGxjX2Zsb3cgKmZsb3cpXFxubmV0L3NtYy9zbWNfbGxjLmMtMjE2LXtcXG4tLVxcbm5ldC9zbWMvc21jX2xsYy5jPTI1ND1zdGF0aWMgYm9vbCBzbWNfbGxjX2Zsb3dfc3RhcnQoc3RydWN0IHNtY19sbGNfZmxvdyAqZmxvdyxcXG4tLVxcbm5ldC9zbWMvc21jX2xsYy5jLTI4NS0vKiBzdGFydCBhIG5ldyBsb2NhbCBsbGMgZmxvdywgd2FpdCB0aWxsIGN1cnJlbnQgZmxvdyBmaW5pc2hlZCAqL1xcbm5ldC9zbWMvc21jX2xsYy5jOjI4NjppbnQgc21jX2xsY19mbG93X2luaXRpYXRlKHN0cnVjdCBzbWNfbGlua19ncm91cCAqbGdyLFxcbm5ldC9zbWMvc21jX2xsYy5jLTI4Ny1cXHRcXHRcXHQgIGVudW0gc21jX2xsY19mbG93dHlwZSB0eXBlKVxcbi0tXFxubmV0L3NtYy9zbWNfbGxjLmMtMzE5LS8qIGZpbmlzaCB0aGUgY3VycmVudCBsbGMgZmxvdyAqL1xcbm5ldC9zbWMvc21jX2xsYy5jOjMyMDp2b2lkIHNtY19sbGNfZmxvd19zdG9wKHN0cnVjdCBzbWNfbGlua19ncm91cCAqbGdyLCBzdHJ1Y3Qgc21jX2xsY19mbG93ICpmbG93KVxcbm5ldC9zbWMvc21jX2xsYy5jLTMyMS17XFxuLS1cXG5uZXQvc21jL3NtY19sbGMuYy0zMzUtICovXFxubmV0L3NtYy9zbWNfbGxjLmM6MzM2OnN0cnVjdCBzbWNfbGxjX3FlbnRyeSAqc21jX2xsY193YWl0KHN0cnVjdCBzbWNfbGlua19ncm91cCAqbGdyLFxcbm5ldC9zbWMvc21jX2xsYy5jLTMzNy1cXHRcXHRcXHRcXHQgICAgc3RydWN0IHNtY19saW5rICpsbmssXFxuLS1cXG5uZXQvc21jL3NtY19sbGMuYy0zNzUtXFxubmV0L3NtYy9zbWNfbGxjLmM6Mzc2OnN0cnVjdCBzbWNfbGxjX3R4X3BlbmQge1xcbm5ldC9zbWMvc21jX2xsYy5jLTM3Ny19O1xcbi0tXFxubmV0L3NtYy9zbWNfbGxjLmM9NDM0PXN0YXRpYyB2b2lkIHNtY19sbGNfaW5pdF9tc2dfaGRyKHN0cnVjdCBzbWNfbGxjX2hkciAqaGRyLFxcbi0tXFxubmV0L3NtYy9zbWNfbGxjLmMtNDQ2LS8qIGhpZ2gtbGV2ZWwgQVBJIHRvIHNlbmQgTExDIGNvbmZpcm0gbGluayAqL1xcbm5ldC9zbWMvc21jX2xsYy5jOjQ0NzppbnQgc21jX2xsY19zZW5kX2NvbmZpcm1fbGluayhzdHJ1Y3Qgc21jX2xpbmsgKmxpbmssXFxubmV0L3NtYy9zbWNfbGxjLmMtNDQ4LVxcdFxcdFxcdCAgICAgIGVudW0gc21jX2xsY19yZXFyZXNwIHJlcXJlc3ApXFxuLS1cXG5uZXQvc21jL3NtY19sbGMuYz02MDM9c3RhdGljIGludCBzbWNfbGxjX2ZpbGxfZXh0X3YyKHN0cnVjdCBzbWNfbGxjX21zZ19hZGRfbGlua192Ml9leHQgKmV4dCxcXG4tLVxcbm5ldC9zbWMvc21jX2xsYy5jLTY0Mi0vKiBzZW5kIEFERCBMSU5LIHJlcXVlc3Qgb3IgcmVzcG9uc2UgKi9cXG5uZXQvc21jL3NtY19sbGMuYzo2NDM6aW50IHNtY19sbGNfc2VuZF9hZGRfbGluayhzdHJ1Y3Qgc21jX2xpbmsgKmxpbmssIHU4IG1hY1tdLCB1OCBnaWRbXSxcXG5uZXQvc21jL3NtY19sbGMuYy02NDQtXFx0XFx0XFx0ICBzdHJ1Y3Qgc21jX2xpbmsgKmxpbmtfbmV3LFxcbi0tXFxubmV0L3NtYy9zbWNfbGxjLmMtNzAzLS8qIHNlbmQgREVMRVRFIExJTksgcmVxdWVzdCBvciByZXNwb25zZSAqL1xcbm5ldC9zbWMvc21jX2xsYy5jOjcwNDppbnQgc21jX2xsY19zZW5kX2RlbGV0ZV9saW5rKHN0cnVjdCBzbWNfbGluayAqbGluaywgdTggbGlua19kZWxfaWQsXFxubmV0L3NtYy9zbWNfbGxjLmMtNzA1LVxcdFxcdFxcdCAgICAgZW51bSBzbWNfbGxjX3JlcXJlc3AgcmVxcmVzcCwgYm9vbCBvcmRlcmx5LFxcbi0tXFxubmV0L3NtYy9zbWNfbGxjLmM9MTAyMD1zdGF0aWMgdm9pZCBzbWNfbGxjX3NhdmVfYWRkX2xpbmtfaW5mbyhzdHJ1Y3Qgc21jX2xpbmsgKmxpbmssXFxuLS1cXG5uZXQvc21jL3NtY19sbGMuYy0xMDMwLS8qIGFzIGFuIFNNQyBjbGllbnQsIHByb2Nlc3MgYW4gYWRkIGxpbmsgcmVxdWVzdCAqL1xcbm5ldC9zbWMvc21jX2xsYy5jOjEwMzE6aW50IHNtY19sbGNfY2xpX2FkZF9saW5rKHN0cnVjdCBzbWNfbGluayAqbGluaywgc3RydWN0IHNtY19sbGNfcWVudHJ5ICpxZW50cnkpXFxubmV0L3NtYy9zbWNfbGxjLmMtMTAzMi17XFxuLS1cXG5uZXQvc21jL3NtY19sbGMuYz0xMzk3PXN0YXRpYyB2b2lkIHNtY19sbGNfc2VuZF9yZXFfYWRkX2xpbmtfcmVzcG9uc2Uoc3RydWN0IHNtY19sbGNfcWVudHJ5ICpxZW50cnkpXFxuLS1cXG5uZXQvc21jL3NtY19sbGMuYy0xNDA1LVxcbm5ldC9zbWMvc21jX2xsYy5jOjE0MDY6aW50IHNtY19sbGNfc3J2X2FkZF9saW5rKHN0cnVjdCBzbWNfbGluayAqbGluayxcXG5uZXQvc21jL3NtY19sbGMuYy0xNDA3LVxcdFxcdFxcdCBzdHJ1Y3Qgc21jX2xsY19xZW50cnkgKnJlcV9xZW50cnkpXFxuLS1cXG5uZXQvc21jL3NtY19sbGMuYz0xNTI5PXN0YXRpYyB2b2lkIHNtY19sbGNfcHJvY2Vzc19zcnZfYWRkX2xpbmsoc3RydWN0IHNtY19saW5rX2dyb3VwICpsZ3IpXFxuLS1cXG5uZXQvc21jL3NtY19sbGMuYy0xNTQ3LS8qIGVucXVldWUgYSBsb2NhbCBhZGRfbGluayByZXEgdG8gdHJpZ2dlciBhIG5ldyBhZGRfbGluayBmbG93ICovXFxubmV0L3NtYy9zbWNfbGxjLmM6MTU0ODp2b2lkIHNtY19sbGNfYWRkX2xpbmtfbG9jYWwoc3RydWN0IHNtY19saW5rICpsaW5rKVxcbm5ldC9zbWMvc21jX2xsYy5jLTE1NDkte1xcbi0tXFxubmV0L3NtYy9zbWNfbGxjLmM9MTU1OT1zdGF0aWMgdm9pZCBzbWNfbGxjX2FkZF9saW5rX3dvcmsoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxcbi0tXFxubmV0L3NtYy9zbWNfbGxjLmMtMTU4MS0gKi9cXG5uZXQvc21jL3NtY19sbGMuYzoxNTgyOnZvaWQgc21jX2xsY19zcnZfZGVsZXRlX2xpbmtfbG9jYWwoc3RydWN0IHNtY19saW5rICpsaW5rLCB1OCBkZWxfbGlua19pZClcXG5uZXQvc21jL3NtY19sbGMuYy0xNTgzLXtcXG4tLVxcbm5ldC9zbWMvc21jX2xsYy5jPTE1OTQ9c3RhdGljIHZvaWQgc21jX2xsY19wcm9jZXNzX2NsaV9kZWxldGVfbGluayhzdHJ1Y3Qgc21jX2xpbmtfZ3JvdXAgKmxncilcXG4tLVxcbm5ldC9zbWMvc21jX2xsYy5jLTE2NTEtICovXFxubmV0L3NtYy9zbWNfbGxjLmM6MTY1Mjp2b2lkIHNtY19sbGNfc2VuZF9saW5rX2RlbGV0ZV9hbGwoc3RydWN0IHNtY19saW5rX2dyb3VwICpsZ3IsIGJvb2wgb3JkLCB1MzIgcnNuKVxcbm5ldC9zbWMvc21jX2xsYy5jLTE2NTMte1xcbi0tXFxubmV0L3NtYy9zbWNfbGxjLmM9MjExNz1zdGF0aWMgdm9pZCBzbWNfbGxjX3Rlc3RsaW5rX3dvcmsoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxcbi0tXFxubmV0L3NtYy9zbWNfbGxjLmMtMjE0OC1cXG5uZXQvc21jL3NtY19sbGMuYzoyMTQ5OnZvaWQgc21jX2xsY19sZ3JfaW5pdChzdHJ1Y3Qgc21jX2xpbmtfZ3JvdXAgKmxnciwgc3RydWN0IHNtY19zb2NrICpzbWMpXFxubmV0L3NtYy9zbWNfbGxjLmMtMjE1MC17XFxuLS1cXG5uZXQvc21jL3NtY19sbGMuYy0yMTY3LS8qIGNhbGxlZCBhZnRlciBsZ3Igd2FzIHJlbW92ZWQgZnJvbSBsZ3JfbGlzdCAqL1xcbm5ldC9zbWMvc21jX2xsYy5jOjIxNjg6dm9pZCBzbWNfbGxjX2xncl9jbGVhcihzdHJ1Y3Qgc21jX2xpbmtfZ3JvdXAgKmxncilcXG5uZXQvc21jL3NtY19sbGMuYy0yMTY5LXtcXG4tLVxcbm5ldC9zbWMvc21jX2xsYy5jLTIxODEtXFxubmV0L3NtYy9zbWNfbGxjLmM6MjE4MjppbnQgc21jX2xsY19saW5rX2luaXQoc3RydWN0IHNtY19saW5rICpsaW5rKVxcbm5ldC9zbWMvc21jX2xsYy5jLTIxODMte1xcbi0tXFxubmV0L3NtYy9zbWNfbGxjLmMtMjE4OC1cXG5uZXQvc21jL3NtY19sbGMuYzoyMTg5OnZvaWQgc21jX2xsY19saW5rX2FjdGl2ZShzdHJ1Y3Qgc21jX2xpbmsgKmxpbmspXFxubmV0L3NtYy9zbWNfbGxjLmMtMjE5MC17XFxuLS1cXG5uZXQvc21jL3NtY19sbGMuYy0yMjA2LS8qIGNhbGxlZCBpbiB3b3JrZXIgY29udGV4dCAqL1xcbm5ldC9zbWMvc21jX2xsYy5jOjIyMDc6dm9pZCBzbWNfbGxjX2xpbmtfY2xlYXIoc3RydWN0IHNtY19saW5rICpsaW5rLCBib29sIGxvZylcXG5uZXQvc21jL3NtY19sbGMuYy0yMjA4LXtcXG4tLVxcbm5ldC9zbWMvc21jX2xsYy5jLTIyMjEtLyogcmVnaXN0ZXIgYSBuZXcgcnRva2VuIGF0IHRoZSByZW1vdGUgcGVlciAoZm9yIGFsbCBsaW5rcykgKi9cXG5uZXQvc21jL3NtY19sbGMuYzoyMjIyOmludCBzbWNfbGxjX2RvX2NvbmZpcm1fcmtleShzdHJ1Y3Qgc21jX2xpbmsgKnNlbmRfbGluayxcXG5uZXQvc21jL3NtY19sbGMuYy0yMjIzLVxcdFxcdFxcdCAgICBzdHJ1Y3Qgc21jX2J1Zl9kZXNjICpybWJfZGVzYylcXG4tLVxcbm5ldC9zbWMvc21jX2xsYy5jLTIyNDMtLyogdW5yZWdpc3RlciBhbiBydG9rZW4gYXQgdGhlIHJlbW90ZSBwZWVyICovXFxubmV0L3NtYy9zbWNfbGxjLmM6MjI0NDppbnQgc21jX2xsY19kb19kZWxldGVfcmtleShzdHJ1Y3Qgc21jX2xpbmtfZ3JvdXAgKmxncixcXG5uZXQvc21jL3NtY19sbGMuYy0yMjQ1LVxcdFxcdFxcdCAgIHN0cnVjdCBzbWNfYnVmX2Rlc2MgKnJtYl9kZXNjKVxcbi0tXFxubmV0L3NtYy9zbWNfbGxjLmMtMjI2OS1cXG5uZXQvc21jL3NtY19sbGMuYzoyMjcwOnZvaWQgc21jX2xsY19saW5rX3NldF91aWQoc3RydWN0IHNtY19saW5rICpsaW5rKVxcbm5ldC9zbWMvc21jX2xsYy5jLTIyNzEte1xcbi0tXFxubmV0L3NtYy9zbWNfbGxjLmMtMjI3OC0vKiBzYXZlIHBlZXJzIGxpbmsgdXNlciBpZCwgdXNlZCBmb3IgZGVidWcgcHVycG9zZXMgKi9cXG5uZXQvc21jL3NtY19sbGMuYzoyMjc5OnZvaWQgc21jX2xsY19zYXZlX3BlZXJfdWlkKHN0cnVjdCBzbWNfbGxjX3FlbnRyeSAqcWVudHJ5KVxcbm5ldC9zbWMvc21jX2xsYy5jLTIyODAte1xcbi0tXFxubmV0L3NtYy9zbWNfbGxjLmMtMjI4NS0vKiBldmFsdWF0ZSBjb25maXJtIGxpbmsgcmVxdWVzdCBvciByZXNwb25zZSAqL1xcbm5ldC9zbWMvc21jX2xsYy5jOjIyODY6aW50IHNtY19sbGNfZXZhbF9jb25mX2xpbmsoc3RydWN0IHNtY19sbGNfcWVudHJ5ICpxZW50cnksXFxubmV0L3NtYy9zbWNfbGxjLmMtMjI4Ny1cXHRcXHRcXHQgICBlbnVtIHNtY19sbGNfcmVxcmVzcCB0eXBlKVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xOFQwNzo1MDoyNi4yNTg4NzgyODRaIiwiU2VxIjoxNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NjQ2MzgxODg5NiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgYSBQb3RlbnRpYWwgTWVtb3J5IExlYWsgRml4IGluIHRoZSBTTUMtTExDIEZsb3cqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGluIGBzbWNfbGxjX2V2ZW50X2hhbmRsZXJgLiBSaWdodCBvZmYgdGhlIGJhdCwgSSBzZWUgdGhleSdyZSBhZGRyZXNzaW5nIGEgcG90ZW50aWFsIHByb2JsZW0gd2l0aCBob3cgYFJFUV9BRERfTElOS2Agc3RhdGUgaXMgaGFuZGxlZC4gVGhlIGNvcmUgY2hhbmdlIGlzIHRoZSBhZGRpdGlvbiBvZiBgc21jX2xsY19mbG93X3FlbnRyeV9kZWwoXHUwMDI2bGdyLVx1MDAzZWxsY19mbG93X2xjbCk7YCByaWdodCBiZWZvcmUgdHJhbnNpdGlvbmluZyB0aGUgYGxsY19mbG93X2xjbC50eXBlYC4gVGhpcyBsb29rcyBsaWtlIGEgZnVuY3Rpb25hbCBjaGFuZ2Ug4oCTIGEgbWVtb3J5IGxlYWsgZml4IG9yIHBlcmhhcHMgYSBzdGF0ZSBtYWNoaW5lIGNvcnJlY3Rpb24uIEl0J3MgYSBrZXkgb3BlcmF0aW9uIGRlYWxpbmcgd2l0aCBxdWV1ZSBlbnRyaWVzLlxuXG5CZWNhdXNlIGBzbWNfbGxjX2V2ZW50X2hhbmRsZXJgIGlzIHN0YXRpYywgSSBjYW4gY29uZmlkZW50bHkgcGlucG9pbnQgdGhlIGNhbGwgc2l0ZXMgSSBuZWVkIHRvIGludmVzdGlnYXRlIGluIG1vcmUgZGV0YWlsOiBgc21jX2xsY19zcnZfYWRkX2xpbmtgLCBgc21jX2xsY19jbGlfYWRkX2xpbmtgLCBgc21jX2xsY19mbG93X2luaXRpYXRlYCwgYHNtY19sbGNfc2VuZF9hZGRfbGlua2AsIGBzbWNfbGxjX3NlbmRfY29uZmlybV9saW5rYCwgYW5kIGBzbWNfbGxjX2RvX2NvbmZpcm1fcmtleWAuIFRoZXNlIGFyZSB0aGUgcG90ZW50aWFsIGVudHJ5IHBvaW50cyBhbmQgY29udGV4dHMgd2hlcmUgdGhpcyBsb2dpYyBpcyB0cmlnZ2VyZWQuIEJlZm9yZSBkaWdnaW5nIGRlZXBlciwgSSBuZWVkIHRvIGNoZWNrIHRoZSBleGFjdCBjb250ZXh0IG9mIGBzbWNfbGxjX2V2ZW50X2hhbmRsZXJgLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGVuIGFuZCB3aHkgYSBgcWVudHJ5YCBtaWdodCBiZSBzdGFzaGVkIGluIHRoZSBgUkVRX0FERF9MSU5LYCBzdGF0ZSB0byBiZWdpbiB3aXRoIHRvIGV2YWx1YXRlIHRoZSBmaXggcHJvcGVybHkuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjEwNjMxLCJPdXRwdXRUb2tlbnMiOjQ1LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzIxLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE4VDA3OjUwOjMyLjcyMjY5OTQ1WiIsIlNlcSI6MTYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0NDA4OTQ5OSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJTTUNfTExDX0ZMT1dfUkVRX0FERF9MSU5LXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9zbWMvc21jX2xsYy5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9zbWMvc21jX2xsYy5jPTExMjY9c3RhdGljIHZvaWQgc21jX2xsY19zZW5kX3JlcXVlc3RfYWRkX2xpbmsoc3RydWN0IHNtY19saW5rICpsaW5rKVxcbi0tXFxubmV0L3NtYy9zbWNfbGxjLmMtMTE1OC1cXHRcXHQvKiBzZXQgUkVRX0FERF9MSU5LIGZsb3cgYW5kIHdhaXQgZm9yIHJlc3BvbnNlIGZyb20gcGVlciAqL1xcbm5ldC9zbWMvc21jX2xsYy5jOjExNTk6XFx0XFx0bGluay1cXHUwMDNlbGdyLVxcdTAwM2VsbGNfZmxvd19sY2wudHlwZSA9IFNNQ19MTENfRkxPV19SRVFfQUREX0xJTks7XFxubmV0L3NtYy9zbWNfbGxjLmMtMTE2MC1wdXRfb3V0Olxcbi0tXFxubmV0L3NtYy9zbWNfbGxjLmM9MTU1OT1zdGF0aWMgdm9pZCBzbWNfbGxjX2FkZF9saW5rX3dvcmsoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxcbi0tXFxubmV0L3NtYy9zbWNfbGxjLmMtMTU3NC1vdXQ6XFxubmV0L3NtYy9zbWNfbGxjLmM6MTU3NTpcXHRpZiAobGdyLVxcdTAwM2VsbGNfZmxvd19sY2wudHlwZSAhPSBTTUNfTExDX0ZMT1dfUkVRX0FERF9MSU5LKVxcbm5ldC9zbWMvc21jX2xsYy5jLTE1NzYtXFx0XFx0c21jX2xsY19mbG93X3N0b3AobGdyLCBcXHUwMDI2bGdyLVxcdTAwM2VsbGNfZmxvd19sY2wpO1xcbi0tXFxubmV0L3NtYy9zbWNfbGxjLmM9MTg3NT1zdGF0aWMgdm9pZCBzbWNfbGxjX2V2ZW50X2hhbmRsZXIoc3RydWN0IHNtY19sbGNfcWVudHJ5ICpxZW50cnkpXFxuLS1cXG5uZXQvc21jL3NtY19sbGMuYy0xOTExLVxcdFxcdFxcdGlmIChsZ3ItXFx1MDAzZWxsY19mbG93X2xjbC50eXBlID09XFxubmV0L3NtYy9zbWNfbGxjLmM6MTkxMjpcXHRcXHRcXHRcXHRcXHRTTUNfTExDX0ZMT1dfUkVRX0FERF9MSU5LKSB7XFxubmV0L3NtYy9zbWNfbGxjLmMtMTkxMy1cXHRcXHRcXHRcXHQvKiBzZXJ2ZXIgc3RhcnRlZCBhZGRfbGluayBwcm9jZXNzaW5nICovXFxuLS1cXG5uZXQvc21jL3NtY19sbGMuYy0xOTc1LVxcdFxcdGlmIChsZ3ItXFx1MDAzZXJvbGUgPT0gU01DX0NMTlQgXFx1MDAyNlxcdTAwMjZcXG5uZXQvc21jL3NtY19sbGMuYzoxOTc2OlxcdFxcdCAgICBsZ3ItXFx1MDAzZWxsY19mbG93X2xjbC50eXBlID09IFNNQ19MTENfRkxPV19SRVFfQUREX0xJTksgXFx1MDAyNlxcdTAwMjZcXG5uZXQvc21jL3NtY19sbGMuYy0xOTc3LVxcdFxcdCAgICAobGxjLVxcdTAwM2VyYXcuaGRyLmZsYWdzIFxcdTAwMjYgU01DX0xMQ19GTEFHX1JFU1ApKSB7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE4VDA3OjUwOjMyLjc2NjgxNDEwOVoiLCJTZXEiOjE3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozODIxNjMyNzI2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkxMQyBNZXNzYWdlIEhhbmRsZXIgQW5hbHlzaXMqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIGBzbWNfbGxjX2V2ZW50X2hhbmRsZXJgIGZ1bmN0aW9uLiBJdCdzIHRoZSBjb3JlIG9mIGhvdyB3ZSBkZWFsIHdpdGggTExDIG1lc3NhZ2VzLCB3aGljaCBtZWFucyBpdCdzIGEgcHJpbWUgdGFyZ2V0IGZvciBmdXp6aW5nLiBEZWZpbml0ZWx5IGEgZ29vZCBjYW5kaWRhdGUgZm9yIGV4cGxvcmluZyBwb3RlbnRpYWwgdnVsbmVyYWJpbGl0aWVzLlxuXG5JJ20gdGhpbmtpbmcgdGhlIHJlYWwganVpY3kgcGFydHMgYXJlIGxpa2VseSB3aXRoaW4gdGhlIGZ1bmN0aW9ucyBpdCBjYWxscywgc3BlY2lmaWNhbGx5IGBzbWNfbGxjX3Nydl9hZGRfbGlua2AsIGBzbWNfbGxjX2NsaV9hZGRfbGlua2AsIGBzbWNfbGxjX2FkZF9saW5rX2xvY2FsYCwgYW5kIGBzbWNfbGxjX3NlbmRfYWRkX2xpbmtgLiBUaGVzZSBzZWVtIGxpa2UgdGhlIGtleSBlbnRyeSBwb2ludHMgZm9yIGxpbmsgZXN0YWJsaXNobWVudCwgc28gSSB3YW50IHRvIHVuZGVyc3RhbmQgdGhlaXIgYmVoYXZpb3VyIGJldHRlci5cblxuTXkgaW1tZWRpYXRlIHF1ZXN0aW9uIGlzIGFib3V0IGBzbWNfbGxjX2FkZF9saW5rX2xvY2FsYC4gSXMgdGhhdCBmdW5jdGlvbiBleHBvcnRlZCBmcm9tIHRoaXMgbW9kdWxlIG9yIHNvbWVob3cgcmVhY2hhYmxlIGZyb20gYW4gZXh0ZXJuYWwgY29udGV4dD8gVGhhdCdzIGdvaW5nIHRvIHRlbGwgbWUgYSBsb3QgYWJvdXQgaG93IGV4cG9zZWQgaXQgaXMsIGFuZCB3aGV0aGVyIEkgY2FuIGRpcmVjdGx5IHRyaWdnZXIgaXQuIEtub3dpbmcgdGhlIGNvbnRyb2wgcGxhbmUgaW50byB0aGVzZSBmdW5jdGlvbnMgd2lsbCBncmVhdGx5IGltcGFjdCBob3cgSSBhcHByb2FjaCBmdXp6aW5nIGl0LlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMTkwNSwiT3V0cHV0VG9rZW5zIjozNiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEwNiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xOFQwNzo1MDozNi41ODg0NDk2OTRaIiwiU2VxIjoxOCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ1NDMyMDA5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInNtY19sbGNfYWRkX2xpbmtfbG9jYWxcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L3NtYy9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L3NtYy9zbWNfY29yZS5jPTE3NTg9dm9pZCBzbWNyX3BvcnRfYWRkKHN0cnVjdCBzbWNfaWJfZGV2aWNlICpzbWNpYmRldiwgdTggaWJwb3J0KVxcbi0tXFxubmV0L3NtYy9zbWNfY29yZS5jLTE3NzgtXFx0XFx0aWYgKGxpbmspXFxubmV0L3NtYy9zbWNfY29yZS5jOjE3Nzk6XFx0XFx0XFx0c21jX2xsY19hZGRfbGlua19sb2NhbChsaW5rKTtcXG5uZXQvc21jL3NtY19jb3JlLmMtMTc4MC1cXHR9XFxuLS1cXG5uZXQvc21jL3NtY19sbGMuYz0xNTI5PXN0YXRpYyB2b2lkIHNtY19sbGNfcHJvY2Vzc19zcnZfYWRkX2xpbmsoc3RydWN0IHNtY19saW5rX2dyb3VwICpsZ3IpXFxuLS1cXG5uZXQvc21jL3NtY19sbGMuYy0xNTQ3LS8qIGVucXVldWUgYSBsb2NhbCBhZGRfbGluayByZXEgdG8gdHJpZ2dlciBhIG5ldyBhZGRfbGluayBmbG93ICovXFxubmV0L3NtYy9zbWNfbGxjLmM6MTU0ODp2b2lkIHNtY19sbGNfYWRkX2xpbmtfbG9jYWwoc3RydWN0IHNtY19saW5rICpsaW5rKVxcbm5ldC9zbWMvc21jX2xsYy5jLTE1NDkte1xcbi0tXFxubmV0L3NtYy9zbWNfbGxjLmM9MTY3Mj1zdGF0aWMgdm9pZCBzbWNfbGxjX3Byb2Nlc3Nfc3J2X2RlbGV0ZV9saW5rKHN0cnVjdCBzbWNfbGlua19ncm91cCAqbGdyKVxcbi0tXFxubmV0L3NtYy9zbWNfbGxjLmMtMTczMi1cXHRcXHQvKiB0cmlnZ2VyIHNldHVwIG9mIGFzeW1tIGFsdCBsaW5rICovXFxubmV0L3NtYy9zbWNfbGxjLmM6MTczMzpcXHRcXHRzbWNfbGxjX2FkZF9saW5rX2xvY2FsKGxuayk7XFxubmV0L3NtYy9zbWNfbGxjLmMtMTczNC1cXHR9XFxuLS1cXG5uZXQvc21jL3NtY19sbGMuaD0xMTU9aW50IHNtY19sbGNfc3J2X2FkZF9saW5rKHN0cnVjdCBzbWNfbGluayAqbGluayxcXG5uZXQvc21jL3NtY19sbGMuaC0xMTYtXFx0XFx0XFx0IHN0cnVjdCBzbWNfbGxjX3FlbnRyeSAqcmVxX3FlbnRyeSk7XFxubmV0L3NtYy9zbWNfbGxjLmg6MTE3OnZvaWQgc21jX2xsY19hZGRfbGlua19sb2NhbChzdHJ1Y3Qgc21jX2xpbmsgKmxpbmspO1xcbm5ldC9zbWMvc21jX2xsYy5oLTExOC1pbnQgc21jX2xsY19pbml0KHZvaWQpIF9faW5pdDtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMThUMDc6NTA6MzYuNjMzODg2NzAzWiIsIlNlcSI6MTksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjc4ODAxNTk2OTQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIGFuIGV4cGVydCdzIGludGVybmFsIG1vbm9sb2d1ZTpcblxuKipMaW5rLUxvY2FsIERpc2NvdmVyeSAtIFRoaW5raW5nIFRocm91Z2ggdGhlIFByb2Nlc3MqKlxuXG5BbHJpZ2h0LCBzbyBgc21jX2xsY19hZGRfbGlua19sb2NhbGAgKmlzKiByZWFjaGFibGUg4oCTIHRoYXQncyBhIGdvb2Qgc3RhcnRpbmcgcG9pbnQuIFRoYXQgbGlrZWx5IG1lYW5zIHRoZSBiYXNpYyBzZXR1cCwgdGhlIGZvdW5kYXRpb25hbCBkaXNjb3ZlcnkgbWVjaGFuaXNtLCBpcyBmdW5jdGlvbmluZyBhcyBleHBlY3RlZC4gTm93LCBteSBpbW1lZGlhdGUgZm9sbG93LXVwIHF1ZXN0aW9uLCB0aGUgbmV4dCBsb2dpY2FsIHN0ZXAgaW4gdGhlIGNoYWluIG9mIHJlYXNvbmluZywgaXMgdGhpczogd2hhdCBhYm91dCB0aGUgc2VydmljZSBhZGRpdGlvbiB2aWEgdGhlIHN0YW5kYXJkIG1ldGhvZDogYHNtY19sbGNfc3J2X2FkZF9saW5rYD8gSXMgdGhhdCB3b3JraW5nIGFzIGV4cGVjdGVkPyBJcyBpdCByZWFjaGFibGU/IEFuZCBpZiBpdCBpcyByZWFjaGFibGUsIGRvZXMgaXQgcmVxdWlyZSBhZGRpdGlvbmFsIGNvbnNpZGVyYXRpb25zIGluIGNvbXBhcmlzb24gd2l0aCBgc21jX2xsY19hZGRfbGlua19sb2NhbGA/IEkgbmVlZCB0byB1bmRlcnN0YW5kIGlmIHRoZXJlIGlzIHNvbWUgbnVhbmNlIGhlcmUgdGhhdCBzaG91bGQgYmUgY29uc2lkZXJlZCBhdCB0aGlzIGp1bmN0dXJlIGluIHRoZSBwcm9jZXNzLiBJIGFtIG1lbnRhbGx5IGNhdGFsb2d1aW5nIGFueSBkZXBlbmRlbmNpZXMgb3IgZ290Y2hhcyB0aGF0IEkgaGF2ZSBzZWVuIGluIHRoZSBwYXN0LlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMjgzNywiT3V0cHV0VG9rZW5zIjozNiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjMzLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE4VDA3OjUwOjQ0LjUxNDA0OTI4N1oiLCJTZXEiOjIwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDUwMzk3NTksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwic21jX2xsY19zcnZfYWRkX2xpbmtcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L3NtYy9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L3NtYy9hZl9zbWMuYz0xODcyPXN0YXRpYyBpbnQgc21jcl9zZXJ2X2NvbmZfZmlyc3RfbGluayhzdHJ1Y3Qgc21jX3NvY2sgKnNtYylcXG4tLVxcbm5ldC9zbWMvYWZfc21jLmMtMTkxNy1cXHRcXHQvKiBpbml0aWFsIGNvbnRhY3QgLSB0cnkgdG8gZXN0YWJsaXNoIHNlY29uZCBsaW5rICovXFxubmV0L3NtYy9hZl9zbWMuYzoxOTE4OlxcdFxcdHNtY19sbGNfc3J2X2FkZF9saW5rKGxpbmssIE5VTEwpO1xcbm5ldC9zbWMvYWZfc21jLmMtMTkxOS1cXHRcXHR1cF93cml0ZShcXHUwMDI2bGluay1cXHUwMDNlbGdyLVxcdTAwM2VsbGNfY29uZl9tdXRleCk7XFxuLS1cXG5uZXQvc21jL3NtY19sbGMuYz0xMzk3PXN0YXRpYyB2b2lkIHNtY19sbGNfc2VuZF9yZXFfYWRkX2xpbmtfcmVzcG9uc2Uoc3RydWN0IHNtY19sbGNfcWVudHJ5ICpxZW50cnkpXFxuLS1cXG5uZXQvc21jL3NtY19sbGMuYy0xNDA1LVxcbm5ldC9zbWMvc21jX2xsYy5jOjE0MDY6aW50IHNtY19sbGNfc3J2X2FkZF9saW5rKHN0cnVjdCBzbWNfbGluayAqbGluayxcXG5uZXQvc21jL3NtY19sbGMuYy0xNDA3LVxcdFxcdFxcdCBzdHJ1Y3Qgc21jX2xsY19xZW50cnkgKnJlcV9xZW50cnkpXFxuLS1cXG5uZXQvc21jL3NtY19sbGMuYz0xNTI5PXN0YXRpYyB2b2lkIHNtY19sbGNfcHJvY2Vzc19zcnZfYWRkX2xpbmsoc3RydWN0IHNtY19saW5rX2dyb3VwICpsZ3IpXFxuLS1cXG5uZXQvc21jL3NtY19sbGMuYy0xNTM3LVxcdGRvd25fd3JpdGUoXFx1MDAyNmxnci1cXHUwMDNlbGxjX2NvbmZfbXV0ZXgpO1xcbm5ldC9zbWMvc21jX2xsYy5jOjE1Mzg6XFx0cmMgPSBzbWNfbGxjX3Nydl9hZGRfbGluayhsaW5rLCBxZW50cnkpO1xcbm5ldC9zbWMvc21jX2xsYy5jLTE1MzktXFx0aWYgKCFyYyBcXHUwMDI2XFx1MDAyNiBsZ3ItXFx1MDAzZXR5cGUgPT0gU01DX0xHUl9TWU1NRVRSSUMpIHtcXG4tLVxcbm5ldC9zbWMvc21jX2xsYy5oPTExND1pbnQgc21jX2xsY19jbGlfYWRkX2xpbmsoc3RydWN0IHNtY19saW5rICpsaW5rLCBzdHJ1Y3Qgc21jX2xsY19xZW50cnkgKnFlbnRyeSk7XFxubmV0L3NtYy9zbWNfbGxjLmg6MTE1OmludCBzbWNfbGxjX3Nydl9hZGRfbGluayhzdHJ1Y3Qgc21jX2xpbmsgKmxpbmssXFxubmV0L3NtYy9zbWNfbGxjLmgtMTE2LVxcdFxcdFxcdCBzdHJ1Y3Qgc21jX2xsY19xZW50cnkgKnJlcV9xZW50cnkpO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xOFQwNzo1MDo0NC41NTkwOTQ4MDZaIiwiU2VxIjoyMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6Mjg3NTg1ODQ1NCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHRha2Ugb24gdGhlIHRob3VnaHQgcHJvY2VzczpcblxuKipMaW5rIFJlYWNoYWJpbGl0eSBBc3Nlc3NtZW50KipcblxuT2theSwgc28gYHNtY19sbGNfc3J2X2FkZF9saW5rYCAqaXMqIHJlYWNoYWJsZSDigJMgdGhhdCdzIGEgZ29vZCBzdGFydGluZyBwb2ludC4gQnV0IEkgbmVlZCB0byBmdWxseSBhc3Nlc3MgdGhpcyBwcm9jZXNzLiBOb3csIHRoZSBuZXh0IGxvZ2ljYWwgcXVlc3Rpb24gaXM6IHdoYXQncyB0aGUgc3RhdHVzIG9mIGBzbWNfbGxjX2NsaV9hZGRfbGlua2A/IElzIHRoYXQgcmVhY2hhYmxlIGFzIHdlbGw/IFRoaXMgaXMgdGhlIGNydWNpYWwgbmV4dCBzdGVwLiBJIG5lZWQgdG8ga25vdyBpZiB0aGUgY2xpZW50IHNpZGUgbGluayBhZGRpdGlvbiBpcyBvcGVyYXRpbmcgYXMgZXhwZWN0ZWQuIEkgbmVlZCB0byBkZXRlcm1pbmUgdGhlIHN0YXRlIG9mIHRoZSBzeXN0ZW0gbW9yZSBjb21wbGV0ZWx5LCBiZWNhdXNlIHRoZXNlIHR3byBmdW5jdGlvbnMgYXJlIGxpa2VseSBpbnRlcmRlcGVuZGVudC5cblxuXG4iLCJJbnB1dFRva2VucyI6MTM3MDAsIk91dHB1dFRva2VucyI6MzYsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozMywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xOFQwNzo1MDo0Ny40MzQ5NTU3N1oiLCJTZXEiOjIyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDYxOTY1ODksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwic21jX2xsY19jbGlfYWRkX2xpbmtcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L3NtYy9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L3NtYy9hZl9zbWMuYz02MTg9c3RhdGljIGludCBzbWNyX2NsbnRfY29uZl9maXJzdF9saW5rKHN0cnVjdCBzbWNfc29jayAqc21jKVxcbi0tXFxubmV0L3NtYy9hZl9zbWMuYy02ODQtXFx0XFx0c21jX2xsY19mbG93X3FlbnRyeV9jbHIoXFx1MDAyNmxpbmstXFx1MDAzZWxnci1cXHUwMDNlbGxjX2Zsb3dfbGNsKTtcXG5uZXQvc21jL2FmX3NtYy5jOjY4NTpcXHRcXHRzbWNfbGxjX2NsaV9hZGRfbGluayhsaW5rLCBxZW50cnkpO1xcbm5ldC9zbWMvYWZfc21jLmMtNjg2LVxcdH1cXG4tLVxcbm5ldC9zbWMvc21jX2xsYy5jPTg4Nz1zdGF0aWMgaW50IHNtY19sbGNfY2xpX3JrZXlfZXhjaGFuZ2Uoc3RydWN0IHNtY19saW5rICpsaW5rLFxcbi0tXFxubmV0L3NtYy9zbWNfbGxjLmMtOTMwLS8qIHByZXBhcmUgYW5kIHNlbmQgYW4gYWRkIGxpbmsgcmVqZWN0IHJlc3BvbnNlICovXFxubmV0L3NtYy9zbWNfbGxjLmM6OTMxOnN0YXRpYyBpbnQgc21jX2xsY19jbGlfYWRkX2xpbmtfcmVqZWN0KHN0cnVjdCBzbWNfbGxjX3FlbnRyeSAqcWVudHJ5KVxcbm5ldC9zbWMvc21jX2xsYy5jLTkzMi17XFxuLS1cXG5uZXQvc21jL3NtY19sbGMuYz0xMDIwPXN0YXRpYyB2b2lkIHNtY19sbGNfc2F2ZV9hZGRfbGlua19pbmZvKHN0cnVjdCBzbWNfbGluayAqbGluayxcXG4tLVxcbm5ldC9zbWMvc21jX2xsYy5jLTEwMzAtLyogYXMgYW4gU01DIGNsaWVudCwgcHJvY2VzcyBhbiBhZGQgbGluayByZXF1ZXN0ICovXFxubmV0L3NtYy9zbWNfbGxjLmM6MTAzMTppbnQgc21jX2xsY19jbGlfYWRkX2xpbmsoc3RydWN0IHNtY19saW5rICpsaW5rLCBzdHJ1Y3Qgc21jX2xsY19xZW50cnkgKnFlbnRyeSlcXG5uZXQvc21jL3NtY19sbGMuYy0xMDMyLXtcXG4tLVxcbm5ldC9zbWMvc21jX2xsYy5jLTExMTgtb3V0X3JlamVjdDpcXG5uZXQvc21jL3NtY19sbGMuYzoxMTE5OlxcdHNtY19sbGNfY2xpX2FkZF9saW5rX3JlamVjdChxZW50cnkpO1xcbm5ldC9zbWMvc21jX2xsYy5jLTExMjAtb3V0Olxcbi0tXFxubmV0L3NtYy9zbWNfbGxjLmM9MTEyNj1zdGF0aWMgdm9pZCBzbWNfbGxjX3NlbmRfcmVxdWVzdF9hZGRfbGluayhzdHJ1Y3Qgc21jX2xpbmsgKmxpbmspXFxuLS1cXG5uZXQvc21jL3NtY19sbGMuYy0xMTY0LS8qIGFzIGFuIFNNQyBjbGllbnQsIGludml0ZSBzZXJ2ZXIgdG8gc3RhcnQgdGhlIGFkZF9saW5rIHByb2Nlc3NpbmcgKi9cXG5uZXQvc21jL3NtY19sbGMuYzoxMTY1OnN0YXRpYyB2b2lkIHNtY19sbGNfY2xpX2FkZF9saW5rX2ludml0ZShzdHJ1Y3Qgc21jX2xpbmsgKmxpbmssXFxubmV0L3NtYy9zbWNfbGxjLmMtMTE2Ni1cXHRcXHRcXHRcXHRcXHRzdHJ1Y3Qgc21jX2xsY19xZW50cnkgKnFlbnRyeSlcXG4tLVxcbm5ldC9zbWMvc21jX2xsYy5jPTEyMTc9c3RhdGljIHZvaWQgc21jX2xsY19wcm9jZXNzX2NsaV9hZGRfbGluayhzdHJ1Y3Qgc21jX2xpbmtfZ3JvdXAgKmxncilcXG4tLVxcbm5ldC9zbWMvc21jX2xsYy5jLTEyMjQtXFx0aWYgKHNtY19sbGNfaXNfbG9jYWxfYWRkX2xpbmsoXFx1MDAyNnFlbnRyeS1cXHUwMDNlbXNnKSlcXG5uZXQvc21jL3NtY19sbGMuYzoxMjI1OlxcdFxcdHNtY19sbGNfY2xpX2FkZF9saW5rX2ludml0ZShxZW50cnktXFx1MDAzZWxpbmssIHFlbnRyeSk7XFxubmV0L3NtYy9zbWNfbGxjLmMtMTIyNi1cXHRlbHNlXFxubmV0L3NtYy9zbWNfbGxjLmM6MTIyNzpcXHRcXHRzbWNfbGxjX2NsaV9hZGRfbGluayhxZW50cnktXFx1MDAzZWxpbmssIHFlbnRyeSk7XFxubmV0L3NtYy9zbWNfbGxjLmMtMTIyOC1cXHR1cF93cml0ZShcXHUwMDI2bGdyLVxcdTAwM2VsbGNfY29uZl9tdXRleCk7XFxuLS1cXG5uZXQvc21jL3NtY19sbGMuaD0xMTI9dm9pZCBzbWNfbGxjX3NlbmRfbGlua19kZWxldGVfYWxsKHN0cnVjdCBzbWNfbGlua19ncm91cCAqbGdyLCBib29sIG9yZCxcXG5uZXQvc21jL3NtY19sbGMuaC0xMTMtXFx0XFx0XFx0XFx0ICB1MzIgcnNuKTtcXG5uZXQvc21jL3NtY19sbGMuaDoxMTQ6aW50IHNtY19sbGNfY2xpX2FkZF9saW5rKHN0cnVjdCBzbWNfbGluayAqbGluaywgc3RydWN0IHNtY19sbGNfcWVudHJ5ICpxZW50cnkpO1xcbm5ldC9zbWMvc21jX2xsYy5oLTExNS1pbnQgc21jX2xsY19zcnZfYWRkX2xpbmsoc3RydWN0IHNtY19saW5rICpsaW5rLFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xOFQwNzo1MDo0Ny40ODExNTcyNjlaIiwiU2VxIjoyMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDQ5OTQwMTk2NywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipGb2N1c2luZyBvbiBTTUMgTGluayBGdW5jdGlvbnMqKlxuXG5Pa2F5LCBzbyBJJ20gaG9uaW5nIGluIG9uIHRoZSBTTUMgbGluayBmdW5jdGlvbnMuIExvb2tpbmcgYXQgdGhlc2Ugc3ltYm9scywgSSB0aGluayBgc21jX2xsY19jbGlfYWRkX2xpbmtgLCBgc21jX2xsY19zcnZfYWRkX2xpbmtgLCBhbmQgYHNtY19sbGNfYWRkX2xpbmtfbG9jYWxgIGFyZSBnb29kIGNhbmRpZGF0ZXMgdG8gcmVhbGx5IGFuY2hvciBteSBpbnZlc3RpZ2F0aW9uLiBIbW0sIGBzbWNfbGxjX2V2ZW50X2hhbmRsZXJgLi4uIHRoYXQgb25lJ3Mgc3RhdGljLCBzbyBpdCBjYW4ndCBiZSBhIGRpcmVjdCBmb2N1cywgd2hpY2ggaXMgYSBzaGFtZSwgYnV0IHRoZSBvdGhlcnMgc2hvdWxkIGJlIGdvb2QuXG5cblJpZ2h0LCB0aW1lIHRvIGNoZWNrIHRoZSBjb25maWd1cmF0aW9uIHJlcXVpcmVtZW50cy4gTGV0J3Mgc2VlLi4uIElzIGBTTUNgIHRoZSBvbmx5IGNvbmZpZ3VyYXRpb24gb3B0aW9uIEkgbmVlZCB0byBiZSBjb25jZXJuZWQgd2l0aD8gWWVwLCBsb29rcyBsaWtlIGl0LiBPa2F5LCBnb29kLiBOb3csIHdoYXQgYWJvdXQgYFNNQ19ESUFHYD8gUHJvYmFibHkgbm90LCBidXQgbGV0IG1lIGp1c3QgZG91YmxlLWNoZWNrLiBPa2F5LCBsb29rcyBsaWtlIEkgY2FuIHByb2JhYmx5IGlnbm9yZSB0aGF0LiBMZXQncyBoZWFkIGJhY2sgYW5kIHRha2UgYW5vdGhlciBsb29rIGF0IGBuZXQvc21jL0tjb25maWdgIHRvIGJlIHN1cmUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE0OTc2LCJPdXRwdXRUb2tlbnMiOjI5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTQ3LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE4VDA3OjUwOjUxLjk4MDU2MTY1NloiLCJTZXEiOjI0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDcwNDczMzksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIFNNQ1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvc21jL0tjb25maWdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L3NtYy9LY29uZmlnLTEtIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XFxubmV0L3NtYy9LY29uZmlnOjI6Y29uZmlnIFNNQ1xcbm5ldC9zbWMvS2NvbmZpZy0zLVxcdHRyaXN0YXRlIFxcXCJTTUMgc29ja2V0IHByb3RvY29sIGZhbWlseVxcXCJcXG4tLVxcbm5ldC9zbWMvS2NvbmZpZy0xMy1cXG5uZXQvc21jL0tjb25maWc6MTQ6Y29uZmlnIFNNQ19ESUFHXFxubmV0L3NtYy9LY29uZmlnLTE1LVxcdHRyaXN0YXRlIFxcXCJTTUM6IHNvY2tldCBtb25pdG9yaW5nIGludGVyZmFjZVxcXCJcXG4tLVxcbm5ldC9zbWMvS2NvbmZpZy0yMi1cXG5uZXQvc21jL0tjb25maWc6MjM6Y29uZmlnIFNNQ19IU19DVFJMX0JQRlxcbm5ldC9zbWMvS2NvbmZpZy0yNC1cXHRib29sIFxcXCJHZW5lcmljIGVCUEYgaG9vayBmb3IgU01DIGhhbmRzaGFrZSBmbG93XFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xOFQwNzo1MDo1Mi4wMjc2MTM3NjVaIiwiU2VxIjoyNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzQ1MzAxMDg0OCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHRob3VnaHQgcHJvY2VzcywgYXMgaWYgSSB3ZXJlIGNvbnNpZGVyaW5nIHRoaXMgaXNzdWU6XG5cbioqSW52ZXN0aWdhdGluZyB0aGUgU01DL0lORVQgRGVwZW5kZW5jeSoqXG5cbk9rYXksIHNvIEkndmUgaGl0IGEgcG90ZW50aWFsIHNuYWcuIEl0IGxvb2tzIGxpa2UgYFNNQ2Ag4oCTIHRoYXQncyBTaGFyZWQgTWVtb3J5IENvbW11bmljYXRpb25zLCByaWdodD8g4oCTIGhhcyBhIGRlcGVuZGVuY3kgb24gYElORVRgLiBJIG5lZWQgdG8gdmVyaWZ5IHRoYXQgYW5kIHVuZGVyc3RhbmQgdGhlIG5hdHVyZSBvZiB0aGlzIGNvbm5lY3Rpb24uIFRoZSBtb3N0IGxvZ2ljYWwgcGxhY2UgdG8gc3RhcnQgaXMgdGhlIGNvbmZpZ3VyYXRpb24gZmlsZS4gVGhhdCB3b3VsZCBiZSBgbmV0L3NtYy9LY29uZmlnYC4gTGV0J3MgZGlnIGludG8gdGhhdCBmaWxlIGFuZCBzZWUgd2hhdCB0aGUgYnVpbGQgc3lzdGVtIGlzIHRlbGxpbmcgdXMuIEkgbmVlZCB0byBjbGFyaWZ5IHdoYXQgdGhlIHNwZWNpZmljIGNvbmRpdGlvbmFsaXRpZXMgYXJlIHNvIEkgdW5kZXJzdGFuZCBob3cgdGhpbmdzIGFyZSBjb25uZWN0ZWQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE1NTU3LCJPdXRwdXRUb2tlbnMiOjMzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzIsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMThUMDc6NTA6NTUuNDgwNjI3MzUzWiIsIlNlcSI6MjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU1MjQwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcIm5ldC9zbWMvS2NvbmZpZ1wiLFxuICBcIkZpcnN0TGluZVwiOiAxLFxuICBcIkxpbmVDb3VudFwiOiAyMFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgICAxOlxcdCMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxcbiAgIDI6XFx0Y29uZmlnIFNNQ1xcbiAgIDM6XFx0XFx0dHJpc3RhdGUgXFxcIlNNQyBzb2NrZXQgcHJvdG9jb2wgZmFtaWx5XFxcIlxcbiAgIDQ6XFx0XFx0ZGVwZW5kcyBvbiBJTkVUIFxcdTAwMjZcXHUwMDI2IElORklOSUJBTkQgXFx1MDAyNlxcdTAwMjYgRElCU1xcbiAgIDU6XFx0XFx0aGVscFxcbiAgIDY6XFx0XFx0ICBTTUMtUiBwcm92aWRlcyBhIFxcXCJzb2NrZXRzIG92ZXIgUkRNQVxcXCIgc29sdXRpb24gbWFraW5nIHVzZSBvZlxcbiAgIDc6XFx0XFx0ICBSRE1BIG92ZXIgQ29udmVyZ2VkIEV0aGVybmV0IChSb0NFKSB0ZWNobm9sb2d5IHRvIHVwZ3JhZGVcXG4gICA4OlxcdFxcdCAgQUZfSU5FVCBUQ1AgY29ubmVjdGlvbnMgdHJhbnNwYXJlbnRseS5cXG4gICA5OlxcdFxcdCAgVGhlIExpbnV4IGltcGxlbWVudGF0aW9uIG9mIHRoZSBTTUMtUiBzb2x1dGlvbiBpcyBkZXNpZ25lZCBhc1xcbiAgMTA6XFx0XFx0ICBhIHNlcGFyYXRlIHNvY2tldCBmYW1pbHkgU01DLlxcbiAgMTE6XFx0XFxuICAxMjpcXHRcXHQgIFNlbGVjdCB0aGlzIG9wdGlvbiBpZiB5b3Ugd2FudCB0byBydW4gU01DIHNvY2tldCBhcHBsaWNhdGlvbnNcXG4gIDEzOlxcdFxcbiAgMTQ6XFx0Y29uZmlnIFNNQ19ESUFHXFxuICAxNTpcXHRcXHR0cmlzdGF0ZSBcXFwiU01DOiBzb2NrZXQgbW9uaXRvcmluZyBpbnRlcmZhY2VcXFwiXFxuICAxNjpcXHRcXHRkZXBlbmRzIG9uIFNNQ1xcbiAgMTc6XFx0XFx0aGVscFxcbiAgMTg6XFx0XFx0ICBTdXBwb3J0IGZvciBTTUMgc29ja2V0IG1vbml0b3JpbmcgaW50ZXJmYWNlIHVzZWQgYnkgdG9vbHMgc3VjaCBhc1xcbiAgMTk6XFx0XFx0ICBzbWNzcy5cXG4gIDIwOlxcdFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xOFQwNzo1MDo1NS40ODA2ODM4MzNaIiwiU2VxIjoyNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTg2NzU2MzY2NywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBJbml0aWFsIEFuYWx5c2lzIGFuZCBJdGVyYXRpdmUgUmV2aWV3KipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBjb25maWd1cmF0aW9uLiBJbml0aWFsbHksIEkgdGhvdWdodCBpdCB3YXMgZGVwZW5kZW50IG9uIGBJTkVUYCwgYElORklOSUJBTkRgLCBhbmQgcG90ZW50aWFsbHkgc29tZXRoaW5nIGVsc2UuLi4gbWF5YmUgYERJQlNgPyBObywgd2FpdCwgdGhhdCBkb2Vzbid0IHNlZW0gcmlnaHQuIExldCBtZSBkb3VibGUtY2hlY2suIE9rYXksIEkgdGhvdWdodCBJIG1pc3NlZCBpdCwgYnV0Li4uIHRoZSBvdXRwdXQgc2hvd3MgYGRlcGVuZHMgb24gSU5FVCBcdTAwMjZcdTAwMjYgSU5GSU5JQkFORGAsIG5vdCB3aGF0IEkgaW5pdGlhbGx5IHRob3VnaHQuIEkgbXVzdCBoYXZlIG1pc3JlYWQgaXQuIE5vLCB0aGF0J3Mgbm90IHJpZ2h0IGVpdGhlci4gSXQncyBzdXBwb3NlZCB0byBiZSBgZGVwZW5kcyBvbiBJTkVUIFx1MDAyNlx1MDAyNiBJTkZJTklCQU5EIFx1MDAyNlx1MDAyNiBESUJTYC4gV2FpdC4uLiBJICpkZWZpbml0ZWx5KiBtaXNzZWQgc29tZXRoaW5nLiBMZXQncyBsb29rIGFnYWluLiBPa2F5LCBva2F5LCB0aGlyZCB0aW1lJ3MgdGhlIGNoYXJtLiBBaCwgdGhlcmUncyBgRElCU2AsIGp1c3QgbGlrZSBJIHRob3VnaHQgYXQgZmlyc3QuIEkgbWlzc2VkIGl0IGluaXRpYWxseS4gTGV0IG1lIHJlLXJlYWQgdGhlIHJlbGV2YW50IHBhcnQgYWdhaW46XG5cbmBgYFxuICAgMTpcdCMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxuICAgMjpcdGNvbmZpZyBTTUNcbiAgIDM6XHRcdHRyaXN0YXRlIFwiU01DIHNvY2tldCBwcm90b2NvbCBmYW1pbHlcIlxuICAgNDpcdFx0ZGVwZW5kcyBvbiBJTkVUIFx1MDAyNlx1MDAyNiBJTkZJTklCQU5EIFx1MDAyNlx1MDAyNiBESUJTXG5gYGBcblxuQWxyaWdodCwgdGhlcmUgaXQgaXMhIE15IGV5ZXMgYXJlIHBsYXlpbmcgdHJpY2tzIG9uIG1lLiBTbywgaXQncyBkZWZpbml0ZWx5IGRlcGVuZGVudCBvbiBgSU5FVGAsIGBJTkZJTklCQU5EYCwgYW5kLCBjcml0aWNhbGx5LCBgRElCU2AuIE5vdyBJIG5lZWQgdG8gcmVtaW5kIG15c2VsZiBwcmVjaXNlbHkgd2hhdCBgRElCU2AgcmVwcmVzZW50cyBpbiB0aGlzIGNvbnRleHQuIFRpbWUgdG8gbG9vayB0aGF0IHVwLi4uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE2MDI2LCJPdXRwdXRUb2tlbnMiOjIzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzI3LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMThUMDc6NTE6MDEuMzQ4MjUxNDE5WiIsIlNlcSI6MjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNjA5NTgyMDQyLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBESUJTXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIlwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL2RpYnMvS2NvbmZpZy0xLSMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjBcXG5kcml2ZXJzL2RpYnMvS2NvbmZpZzoyOmNvbmZpZyBESUJTXFxuZHJpdmVycy9kaWJzL0tjb25maWctMy1cXHR0cmlzdGF0ZSBcXFwiRGlyZWN0IEludGVybmFsIEJ1ZmZlciBTaGFyaW5nIHN1cHBvcnRcXFwiXFxuLS1cXG5kcml2ZXJzL2RpYnMvS2NvbmZpZy0xMy1cXG5kcml2ZXJzL2RpYnMvS2NvbmZpZzoxNDpjb25maWcgRElCU19MT1xcbmRyaXZlcnMvZGlicy9LY29uZmlnLTE1LVxcdGJvb2wgXFxcIkludHJhLU9TIHNob3J0Y3V0IHdpdGggZGlicyBsb29wYmFja1xcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMThUMDc6NTE6MDIuOTU3ODM3OTUyWiIsIlNlcSI6MjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQ2NjExNjc1NTMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqS2VybmVsIENvbmZpZ3VyYXRpb24gRGVwZW5kZW5jeSBJbnZlc3RpZ2F0aW9uKipcblxuT2theSwgc28gSSB0aG91Z2h0IEkgc2F3IHNvbWV0aGluZyByZWxhdGVkIHRvIGBESUJTYCBpbiB0aGUgY29uZmlndXJhdGlvbiBvcHRpb25zLCBidXQgdGhhdCdzIG5vdCByaWdodCwgaXMgaXQ/IEl0J3MgdXN1YWxseSB0aGUgYGRlcGVuZHMgb24gSU5FVCBcdTAwMjZcdTAwMjYgSU5GSU5JQkFORGAgc3ludGF4IHRoYXQgY29tZXMgdG8gbWluZCBpbiB0aGlzIGFyZWEuIExldCBtZSBkb3VibGUtY2hlY2sgdGhlIGBuZXQvc21jL0tjb25maWdgIG91dHB1dC4gSSBuZWVkIHRvIGJlIHN1cmUuXG5cblJpZ2h0LCB0aGUgb3V0cHV0IGlzOlxuXG5gYGBcbiAgIDE6XHQjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcbiAgIDI6XHRjb25maWcgU01DXG4gICAzOlx0XHR0cmlzdGF0ZSBcIlNNQyBzb2NrZXQgcHJvdG9jb2wgZmFtaWx5XCJcbiAgIDQ6XHRcdGRlcGVuZHMgb24gSU5FVCBcdTAwMjZcdTAwMjYgSU5GSU5JQkFORFxuYGBgXG5cbkhtbSwgbm8gYERJQlNgIHRoZXJlIGF0IGFsbC4gSSBtdXN0IGhhdmUgYmVlbiBpbWFnaW5pbmcgdGhpbmdzLiBMZXQgbWUganVzdCByZS1yZWFkIHRoYXQgb3V0cHV0IGFnYWluLCB0byBtYWtlIGFic29sdXRlbHkgY2VydGFpbi5cblxuYGBgXG4gICAxOlx0IyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XG4gICAyOlx0Y29uZmlnIFNNQ1xuICAgMzpcdFx0dHJpc3RhdGUgXCJTTUMgc29ja2V0IHByb3RvY29sIGZhbWlseVwiXG4gICA0Olx0XHRkZXBlbmRzIG9uIElORVQgXHUwMDI2XHUwMDI2IElORklOSUJBTkRcbmBgYFxuXG5Ob3BlLCBzdGlsbCBub3QgdGhlcmUuIEJldHRlciB0byB0cmlwbGUtY2hlY2sgdGhlIGZpbGUgaXRzZWxmIHRvIGJlIGFic29sdXRlbHkgc3VyZS5cblxuXG4iLCJJbnB1dFRva2VucyI6MTY4MTQsIk91dHB1dFRva2VucyI6MzMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMTEsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMThUMDc6NTE6MDcuNjE5MDA3NzQ1WiIsIlNlcSI6MzAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjY2ODAwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcIm5ldC9zbWMvS2NvbmZpZ1wiLFxuICBcIkZpcnN0TGluZVwiOiAxLFxuICBcIkxpbmVDb3VudFwiOiAxMFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgICAxOlxcdCMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxcbiAgIDI6XFx0Y29uZmlnIFNNQ1xcbiAgIDM6XFx0XFx0dHJpc3RhdGUgXFxcIlNNQyBzb2NrZXQgcHJvdG9jb2wgZmFtaWx5XFxcIlxcbiAgIDQ6XFx0XFx0ZGVwZW5kcyBvbiBJTkVUIFxcdTAwMjZcXHUwMDI2IElORklOSUJBTkQgXFx1MDAyNlxcdTAwMjYgRElCU1xcbiAgIDU6XFx0XFx0aGVscFxcbiAgIDY6XFx0XFx0ICBTTUMtUiBwcm92aWRlcyBhIFxcXCJzb2NrZXRzIG92ZXIgUkRNQVxcXCIgc29sdXRpb24gbWFraW5nIHVzZSBvZlxcbiAgIDc6XFx0XFx0ICBSRE1BIG92ZXIgQ29udmVyZ2VkIEV0aGVybmV0IChSb0NFKSB0ZWNobm9sb2d5IHRvIHVwZ3JhZGVcXG4gICA4OlxcdFxcdCAgQUZfSU5FVCBUQ1AgY29ubmVjdGlvbnMgdHJhbnNwYXJlbnRseS5cXG4gICA5OlxcdFxcdCAgVGhlIExpbnV4IGltcGxlbWVudGF0aW9uIG9mIHRoZSBTTUMtUiBzb2x1dGlvbiBpcyBkZXNpZ25lZCBhc1xcbiAgMTA6XFx0XFx0ICBhIHNlcGFyYXRlIHNvY2tldCBmYW1pbHkgU01DLlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xOFQwNzo1MTowNy42MTkwNzYxMTRaIiwiU2VxIjozMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDcwMzIwMTQ1MCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBJbml0aWFsIEFzc2Vzc21lbnQqKlxuXG5BbHJpZ2h0LCBsZXQncyBzZWUsIGl0IGxvb2tzIGxpa2UgdGhpcyBwYXJ0aWN1bGFyIG1vZHVsZSByZWxpZXMgb24gYSBmZXcgb3RoZXIga2V5IGNvbXBvbmVudHMuIFRoZSB0ZXh0IGV4cGxpY2l0bHkgbWVudGlvbnMgYSBkZXBlbmRlbmN5IGNoYWluOiBpdCAqZGVwZW5kcyBvbiBJTkVULCBJTkZJTklCQU5ELCBhbmQgRElCUyouIFRoYXQncyBjbGVhci4gU28sIGZvciB0aGlzIG1vZHVsZSB0byBmdW5jdGlvbiwgSSdsbCBuZWVkIHRvIGVuc3VyZSB0aGUgYFNNQ2AsIGBJTkVUYCwgYElORklOSUJBTkRgLCBhbmQgYERJQlNgIGZlYXR1cmVzIGFyZSBhbGwgZW5hYmxlZC5cblxuSG9sZCBvbiwgdGhvdWdoLi4uICpESUJTKiBzZWVtcyBsaWtlIGl0IG1pZ2h0IGJlIHNvbWV0aGluZyByZWxhdGl2ZWx5IHJlY2VudCB0byB0aGlzIGtlcm5lbCB2ZXJzaW9uLiBJIGRvbid0IHJlY2FsbCBzZWVpbmcgaXQgYmVmb3JlLiBJJ2QgYmV0dGVyIGRvdWJsZS1jaGVjayB0aGUgYGRyaXZlcnMvZGlicy9LY29uZmlnYCBmaWxlIHRvIGNvbmZpcm0gd2hhdCBgRElCU2AgaXMgYW5kIGl0cyBzcGVjaWZpYyBjb25maWd1cmF0aW9uIHJlcXVpcmVtZW50cy4gQWx3YXlzIGdvb2QgdG8gc3RheSBvbiB0b3Agb2YgdGhlIGRlcGVuZGVuY2llcy5cblxuXG4iLCJJbnB1dFRva2VucyI6MTc0ODEsIk91dHB1dFRva2VucyI6MzMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo3MSwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE4VDA3OjUxOjEyLjMyMjI3OTkwNloiLCJTZXEiOjMyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo4NDI4OSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL2RpYnMvS2NvbmZpZ1wiLFxuICBcIkZpcnN0TGluZVwiOiAxLFxuICBcIkxpbmVDb3VudFwiOiAxMFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgICAxOlxcdCMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjBcXG4gICAyOlxcdGNvbmZpZyBESUJTXFxuICAgMzpcXHRcXHR0cmlzdGF0ZSBcXFwiRGlyZWN0IEludGVybmFsIEJ1ZmZlciBTaGFyaW5nIHN1cHBvcnRcXFwiXFxuICAgNDpcXHRcXHRkZWZhdWx0IG5cXG4gICA1OlxcdFxcdGhlbHBcXG4gICA2OlxcdFxcdCAgRGlyZWN0IEludGVybmFsIEJ1ZmZlciBTaGFyaW5nIChESUJTKSBpcyBhIGNvbW11bmljYXRpb24gbWV0aG9kIHRoYXRcXG4gICA3OlxcdFxcdCAgdXNlcyBjb21tb24gcGh5c2ljYWwgKGludGVybmFsKSBtZW1vcnkgZm9yIHN5bmNocm9ub3VzIGRpcmVjdCBhY2Nlc3NcXG4gICA4OlxcdFxcdCAgaW50byBhIHJlbW90ZSBidWZmZXIuXFxuICAgOTpcXHRcXG4gIDEwOlxcdFxcdCAgU2VsZWN0IHRoaXMgb3B0aW9uIHRvIHByb3ZpZGUgdGhlIGFic3RyYWN0aW9uIGxheWVyIGJldHdlZW5cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMThUMDc6NTE6MTIuMzIyMzY1ODM1WiIsIlNlcSI6MzMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMxNjE5NjMyNTYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQ29uZmlndXJhdGlvbiBDaGVja2xpc3QqKlxuXG5BbHJpZ2h0LCBsZXQncyBnZXQgZG93biB0byBicmFzcyB0YWNrcy4gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgdGhlIHJpZ2h0IGNvbmZpZ3VyYXRpb24gc2V0dGluZ3MuIFRoZSBrZXkgaXMgZ29pbmcgdG8gYmUgYERJQlNgLCB0aGF0J3MgYSBnaXZlbi4gTm93LCBsZXQncyBydW4gdGhyb3VnaCB0aGUgdXN1YWwgc3VzcGVjdHM6IGBTTUNgLCBgSU5FVGAsIGBJTkZJTklCQU5EYCwgYW5kLCBvZiBjb3Vyc2UsIGBESUJTYC4gSG9sZCBvbi4uLiBgSU5FVGAgaXMgYWxtb3N0IGFsd2F5cyBlbmFibGVkLCBzbyB0aGF0J3MgbGlrZWx5IGFscmVhZHkgc29ydGVkLiBgSU5GSU5JQkFORGAgaXMgZGVmaW5pdGVseSByZXF1aXJlZCwgYW5kIEkndmUgYWxyZWFkeSBlc3RhYmxpc2hlZCB0aGUgbmVlZCBmb3IgYERJQlNgLiBOb3csIHRoZSBuZXh0IHF1ZXN0aW9uIGJlY29tZXMgd2hldGhlciBJJ2xsIG5lZWQgYERJQlNfTE9gIGFzIHdlbGwuIFRoYXQgbmVlZHMgY2hlY2tpbmcuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE3ODg2LCJPdXRwdXRUb2tlbnMiOjM0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NzQsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xOFQwNzo1MToxNS40ODQzMzE1ODJaIiwiU2VxIjozNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NjQ5NDAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9kaWJzL0tjb25maWdcIixcbiAgXCJGaXJzdExpbmVcIjogMTEsXG4gIFwiTGluZUNvdW50XCI6IDEwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAgMTE6XFx0XFx0ICBkaWJzIGRldmljZXMgYW5kIGRpYnMgY2xpZW50cyBsaWtlIHRoZSBTTUMgcHJvdG9jb2wuXFxuICAxMjpcXHRcXHQgIFRoZSBtb2R1bGUgbmFtZSBpcyBkaWJzLlxcbiAgMTM6XFx0XFxuICAxNDpcXHRjb25maWcgRElCU19MT1xcbiAgMTU6XFx0XFx0Ym9vbCBcXFwiSW50cmEtT1Mgc2hvcnRjdXQgd2l0aCBkaWJzIGxvb3BiYWNrXFxcIlxcbiAgMTY6XFx0XFx0ZGVwZW5kcyBvbiBESUJTXFxuICAxNzpcXHRcXHRkZWZhdWx0IG5cXG4gIDE4OlxcdFxcdGhlbHBcXG4gIDE5OlxcdFxcdCAgRElCU19MTyBlbmFibGVzIHRoZSBjcmVhdGlvbiBvZiBhbiBzb2Z0d2FyZS1lbXVsYXRlZCBkaWJzIGRldmljZVxcbiAgMjA6XFx0XFx0ICBuYW1lZCBsbyB3aGljaCBjYW4gYmUgdXNlZCBmb3IgdHJhbnNmZXJyaW5nIGRhdGEgd2hlbiBjb21tdW5pY2F0aW9uXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE4VDA3OjUxOjE1LjQ4NDM5OTQ0MloiLCJTZXEiOjM1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo3NzkyODEwNzEwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEFuYWx5c2lzIG9mIHRoZSBTeXprYWxsZXIgRnV6emluZyBDb25maWd1cmF0aW9uIGFuZCBDb2RlIFBhdGNoKipcblxuT2theSwgaGVyZSdzIHdoYXQgSSdtIHRoaW5raW5nLiBJJ3ZlIGdvdCBhIGdvb2QgaGFuZGxlIG9uIHRoaXMuIFRoZSBgRElCU19MT2Agb3B0aW9uIGlzIGV4YWN0bHkgd2hhdCBJIHdhcyBob3BpbmcgZm9yLiBJdCBlbmFibGVzIHRoaXMgc29mdHdhcmUtZW11bGF0ZWQgZGlicyBkZXZpY2UsIG5hbWVkIGBsb2AsIHdoaWNoIGlzIHBlcmZlY3QgZm9yIGxvY2FsIGRhdGEgdHJhbnNmZXJzLCBhbmQgdGhhdCdzIGV4YWN0bHkgd2hhdCB3ZSBuZWVkIHRvIGZ1enogZWZmZWN0aXZlbHkgd2l0aCBzeXprYWxsZXIuIFNvLCBgRElCU19MT2AgaXMgYSBkZWZpbml0ZSBtdXN0LWhhdmUgZm9yIHRoZSBjb25maWd1cmF0aW9ucy5cblxuU28sIHRoZSBjb25maWcgb3B0aW9ucyBJIGFtIGdvaW5nIHRvIHVzZSBhcmU6IGBTTUNgLCBgSU5GSU5JQkFORGAsIGBESUJTYCwgYW5kIHRoYXQgY3J1Y2lhbCBgRElCU19MT2AuXG5cbk5vdywgcmVnYXJkaW5nIHRoZSBrZXkgc3ltYm9scywgSSdtIGZvY3VzaW5nIG9uIHRoZXNlIGZvciBteSBmdXp6aW5nIGVmZm9ydHM6IGBzbWNfbGxjX3Nydl9hZGRfbGlua2AsIGBzbWNfbGxjX2NsaV9hZGRfbGlua2AsIGFuZCBgc21jX2xsY19hZGRfbGlua19sb2NhbGAuIFRoZXkgYXJlIGFsbCByZWxhdGVkIHRvIGFkZF9saW5rIGZsb3dzLCB3aGljaCBhcmUgY2VudHJhbCB0byB0aGlzLlxuXG5JIGp1c3QgZG91YmxlLWNoZWNrZWQgYW5kIHJ1bGVkIG91dCBgU01DX0RJQUdgIGFuZCBgU01DX0hTX0NUUkxfQlBGYCBiZWNhdXNlIHRoZXkgYXJlIG5vdCBuZWVkZWQgZm9yIG15IHB1cnBvc2VzLlxuXG5OZXh0LCBJIHJldmlld2VkIHRoZSBjb2RlIHBhdGNoLiBMb29rcyBsaWtlIHRoaXMgaXMgYWRkcmVzc2luZyBhIG1lbW9yeSBsZWFrIG9yIGEgc3RhdGUgbWFjaGluZSBwcm9ibGVtIHJlbGF0ZWQgdG8gU01DIExMQyBmbG93IGhhbmRsaW5nLiBUaGUga2V5IHBhcnQgaXMgdGhhdCBhZGRlZCBjb21tZW50OiBgLyogZnJlZSBhbnkgcWVudHJ5IHN0YXNoZWQgaW4gUkVRX0FERF9MSU5LIHN0YXRlICovYFxuXG5Fc3NlbnRpYWxseSwgdGhpcyBmaXggaXMgZnJlZWluZyBhIHF1ZXVlIGVudHJ5IHN0YXNoZWQgaW4gYSBzcGVjaWZpYyBzdGF0ZSB0byBwcmV2ZW50IGEgbGVhaywgd2hpY2ggaXMgZnVuY3Rpb25hbGx5IHNpZ25pZmljYW50LiBUaGlzIHBhdGNoIGlzIHJlYWNoYWJsZSB2aWEgYHNtY19sbGNfZXZlbnRfaGFuZGxlcmAsIHdoaWNoIGlzIHJlc3BvbnNpYmxlIGZvciBwcm9jZXNzaW5nIHRob3NlIExMQyBldmVudHMuIFRoZSBmdW5jdGlvbnMsIHdoaWNoIEkgaWRlbnRpZmllZCBhYm92ZSwgaW5pdGlhdGUgb3IgcHJvY2VzcyBgYWRkX2xpbmtgIGZsb3dzLlxuXG5NeSBuZXh0IHN0ZXAgaXMgdG8gbWFrZSBzdXJlIGBzbWNfbGxjX2Zsb3dfcWVudHJ5X2RlbGAgaXMgdmlzaWJsZSBhbmQgYWNjZXNzaWJsZS5cblxuXG4iLCJJbnB1dFRva2VucyI6MTgyODQsIk91dHB1dFRva2VucyI6MzcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0NzQsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xOFQwNzo1MToyMy4yNzcyMTIzMzJaIiwiU2VxIjozNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ0ODE1MTc5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInNtY19sbGNfZmxvd19xZW50cnlfZGVsXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9zbWMvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9zbWMvYWZfc21jLmM9NjE4PXN0YXRpYyBpbnQgc21jcl9jbG50X2NvbmZfZmlyc3RfbGluayhzdHJ1Y3Qgc21jX3NvY2sgKnNtYylcXG4tLVxcbm5ldC9zbWMvYWZfc21jLmMtNjM5LVxcdHJjID0gc21jX2xsY19ldmFsX2NvbmZfbGluayhxZW50cnksIFNNQ19MTENfUkVRKTtcXG5uZXQvc21jL2FmX3NtYy5jOjY0MDpcXHRzbWNfbGxjX2Zsb3dfcWVudHJ5X2RlbChcXHUwMDI2bGluay1cXHUwMDNlbGdyLVxcdTAwM2VsbGNfZmxvd19sY2wpO1xcbm5ldC9zbWMvYWZfc21jLmMtNjQxLVxcdGlmIChyYylcXG4tLVxcbm5ldC9zbWMvYWZfc21jLmM9MTg3Mj1zdGF0aWMgaW50IHNtY3Jfc2Vydl9jb25mX2ZpcnN0X2xpbmsoc3RydWN0IHNtY19zb2NrICpzbWMpXFxuLS1cXG5uZXQvc21jL2FmX3NtYy5jLTE5MDQtXFx0cmMgPSBzbWNfbGxjX2V2YWxfY29uZl9saW5rKHFlbnRyeSwgU01DX0xMQ19SRVNQKTtcXG5uZXQvc21jL2FmX3NtYy5jOjE5MDU6XFx0c21jX2xsY19mbG93X3FlbnRyeV9kZWwoXFx1MDAyNmxpbmstXFx1MDAzZWxnci1cXHUwMDNlbGxjX2Zsb3dfbGNsKTtcXG5uZXQvc21jL2FmX3NtYy5jLTE5MDYtXFx0aWYgKHJjKVxcbi0tXFxubmV0L3NtYy9zbWNfbGxjLmM9MjA3PXN0cnVjdCBzbWNfbGxjX3FlbnRyeSAqc21jX2xsY19mbG93X3FlbnRyeV9jbHIoc3RydWN0IHNtY19sbGNfZmxvdyAqZmxvdylcXG4tLVxcbm5ldC9zbWMvc21jX2xsYy5jLTIxNC1cXG5uZXQvc21jL3NtY19sbGMuYzoyMTU6dm9pZCBzbWNfbGxjX2Zsb3dfcWVudHJ5X2RlbChzdHJ1Y3Qgc21jX2xsY19mbG93ICpmbG93KVxcbm5ldC9zbWMvc21jX2xsYy5jLTIxNi17XFxuLS1cXG5uZXQvc21jL3NtY19sbGMuYz0zMzY9c3RydWN0IHNtY19sbGNfcWVudHJ5ICpzbWNfbGxjX3dhaXQoc3RydWN0IHNtY19saW5rX2dyb3VwICpsZ3IsXFxuLS1cXG5uZXQvc21jL3NtY19sbGMuYy0zNDktXFx0ICAgIChsbmsgXFx1MDAyNlxcdTAwMjYgIXNtY19saW5rX3VzYWJsZShsbmspKSB8fCBsaXN0X2VtcHR5KFxcdTAwMjZsZ3ItXFx1MDAzZWxpc3QpKSB7XFxubmV0L3NtYy9zbWNfbGxjLmM6MzUwOlxcdFxcdHNtY19sbGNfZmxvd19xZW50cnlfZGVsKGZsb3cpO1xcbm5ldC9zbWMvc21jX2xsYy5jLTM1MS1cXHRcXHRnb3RvIG91dDtcXG4tLVxcbm5ldC9zbWMvc21jX2xsYy5jLTM2Ny1cXHRcXHRcXHQgICAgIGZsb3ctXFx1MDAzZXFlbnRyeS1cXHUwMDNlbXNnLnJhdy5oZHIuZmxhZ3MpO1xcbm5ldC9zbWMvc21jX2xsYy5jOjM2ODpcXHRcXHRzbWNfbGxjX2Zsb3dfcWVudHJ5X2RlbChmbG93KTtcXG5uZXQvc21jL3NtY19sbGMuYy0zNjktXFx0fVxcbi0tXFxubmV0L3NtYy9zbWNfbGxjLmM9ODg3PXN0YXRpYyBpbnQgc21jX2xsY19jbGlfcmtleV9leGNoYW5nZShzdHJ1Y3Qgc21jX2xpbmsgKmxpbmssXFxuLS1cXG5uZXQvc21jL3NtY19sbGMuYy05MTgtXFx0XFx0fVxcbm5ldC9zbWMvc21jX2xsYy5jOjkxOTpcXHRcXHRzbWNfbGxjX2Zsb3dfcWVudHJ5X2RlbChcXHUwMDI2bGdyLVxcdTAwM2VsbGNfZmxvd19sY2wpO1xcbm5ldC9zbWMvc21jX2xsYy5jLTkyMC1cXHRcXHRyYyA9IHNtY19sbGNfYWRkX2xpbmtfY29udChsaW5rLCBsaW5rX25ldywgXFx1MDAyNm51bV9ya2V5c19zZW5kLFxcbi0tXFxubmV0L3NtYy9zbWNfbGxjLmM9OTQxPXN0YXRpYyBpbnQgc21jX2xsY19jbGlfY29uZl9saW5rKHN0cnVjdCBzbWNfbGluayAqbGluayxcXG4tLVxcbm5ldC9zbWMvc21jX2xsYy5jLTk2MS1cXHRcXHRzbWNfbGxjX3NlbmRfbWVzc2FnZShsaW5rLCBcXHUwMDI2cWVudHJ5LVxcdTAwM2Vtc2cpO1xcbm5ldC9zbWMvc21jX2xsYy5jOjk2MjpcXHRcXHRzbWNfbGxjX2Zsb3dfcWVudHJ5X2RlbChcXHUwMDI2bGdyLVxcdTAwM2VsbGNfZmxvd19sY2wpO1xcbm5ldC9zbWMvc21jX2xsYy5jLTk2My1cXHRcXHRyZXR1cm4gLUVOT0xJTks7XFxuLS1cXG5uZXQvc21jL3NtY19sbGMuYy05NjUtXFx0c21jX2xsY19zYXZlX3BlZXJfdWlkKHFlbnRyeSk7XFxubmV0L3NtYy9zbWNfbGxjLmM6OTY2OlxcdHNtY19sbGNfZmxvd19xZW50cnlfZGVsKFxcdTAwMjZsZ3ItXFx1MDAzZWxsY19mbG93X2xjbCk7XFxubmV0L3NtYy9zbWNfbGxjLmMtOTY3LVxcbi0tXFxubmV0L3NtYy9zbWNfbGxjLmM9MTI4OD1zdGF0aWMgdm9pZCBzbWNfbGxjX2RlbGV0ZV9hc3ltX2xpbmsoc3RydWN0IHNtY19saW5rX2dyb3VwICpsZ3IpXFxuLS1cXG5uZXQvc21jL3NtY19sbGMuYy0xMzE2LVxcdH1cXG5uZXQvc21jL3NtY19sbGMuYzoxMzE3OlxcdHNtY19sbGNfZmxvd19xZW50cnlfZGVsKFxcdTAwMjZsZ3ItXFx1MDAzZWxsY19mbG93X2xjbCk7XFxubmV0L3NtYy9zbWNfbGxjLmMtMTMxOC1vdXRfZnJlZTpcXG4tLVxcbm5ldC9zbWMvc21jX2xsYy5jPTEzMjI9c3RhdGljIGludCBzbWNfbGxjX3Nydl9ya2V5X2V4Y2hhbmdlKHN0cnVjdCBzbWNfbGluayAqbGluayxcXG4tLVxcbm5ldC9zbWMvc21jX2xsYy5jLTEzNTUtXFx0XFx0fVxcbm5ldC9zbWMvc21jX2xsYy5jOjEzNTY6XFx0XFx0c21jX2xsY19mbG93X3FlbnRyeV9kZWwoXFx1MDAyNmxnci1cXHUwMDNlbGxjX2Zsb3dfbGNsKTtcXG5uZXQvc21jL3NtY19sbGMuYy0xMzU3LVxcdH0gd2hpbGUgKG51bV9ya2V5c19zZW5kIHx8IG51bV9ya2V5c19yZWN2KTtcXG4tLVxcbm5ldC9zbWMvc21jX2xsYy5jPTEzNjM9c3RhdGljIGludCBzbWNfbGxjX3Nydl9jb25mX2xpbmsoc3RydWN0IHNtY19saW5rICpsaW5rLFxcbi0tXFxubmV0L3NtYy9zbWNfbGxjLmMtMTM4Mi1cXHRcXHRpZiAocWVudHJ5KVxcbm5ldC9zbWMvc21jX2xsYy5jOjEzODM6XFx0XFx0XFx0c21jX2xsY19mbG93X3FlbnRyeV9kZWwoXFx1MDAyNmxnci1cXHUwMDNlbGxjX2Zsb3dfbGNsKTtcXG5uZXQvc21jL3NtY19sbGMuYy0xMzg0LVxcdFxcdHJldHVybiAtRU5PTElOSztcXG4tLVxcbm5ldC9zbWMvc21jX2xsYy5jLTEzOTItXFx0XFx0c21jcl9sZ3Jfc2V0X3R5cGUobGdyLCBsZ3JfbmV3X3QpO1xcbm5ldC9zbWMvc21jX2xsYy5jOjEzOTM6XFx0c21jX2xsY19mbG93X3FlbnRyeV9kZWwoXFx1MDAyNmxnci1cXHUwMDNlbGxjX2Zsb3dfbGNsKTtcXG5uZXQvc21jL3NtY19sbGMuYy0xMzk0LVxcdHJldHVybiAwO1xcbi0tXFxubmV0L3NtYy9zbWNfbGxjLmM9MTQwNj1pbnQgc21jX2xsY19zcnZfYWRkX2xpbmsoc3RydWN0IHNtY19saW5rICpsaW5rLFxcbi0tXFxubmV0L3NtYy9zbWNfbGxjLmMtMTQ4My1cXHRpZiAoYWRkX2xsYy1cXHUwMDNlaGQuZmxhZ3MgXFx1MDAyNiBTTUNfTExDX0ZMQUdfQUREX0xOS19SRUopIHtcXG5uZXQvc21jL3NtY19sbGMuYzoxNDg0OlxcdFxcdHNtY19sbGNfZmxvd19xZW50cnlfZGVsKFxcdTAwMjZsZ3ItXFx1MDAzZWxsY19mbG93X2xjbCk7XFxubmV0L3NtYy9zbWNfbGxjLmMtMTQ4NS1cXHRcXHRyYyA9IC1FTk9MSU5LO1xcbi0tXFxubmV0L3NtYy9zbWNfbGxjLmMtMTQ5NC1cXHRzbWNfbGxjX3NhdmVfYWRkX2xpbmtfaW5mbyhsaW5rX25ldywgYWRkX2xsYyk7XFxubmV0L3NtYy9zbWNfbGxjLmM6MTQ5NTpcXHRzbWNfbGxjX2Zsb3dfcWVudHJ5X2RlbChcXHUwMDI2bGdyLVxcdTAwM2VsbGNfZmxvd19sY2wpO1xcbm5ldC9zbWMvc21jX2xsYy5jLTE0OTYtXFxuLS1cXG5uZXQvc21jL3NtY19sbGMuYz0xNTU5PXN0YXRpYyB2b2lkIHNtY19sbGNfYWRkX2xpbmtfd29yayhzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspXFxuLS1cXG5uZXQvc21jL3NtY19sbGMuYy0xNTY1LVxcdFxcdC8qIGxpbmsgZ3JvdXAgaXMgdGVybWluYXRpbmcgKi9cXG5uZXQvc21jL3NtY19sbGMuYzoxNTY2OlxcdFxcdHNtY19sbGNfZmxvd19xZW50cnlfZGVsKFxcdTAwMjZsZ3ItXFx1MDAzZWxsY19mbG93X2xjbCk7XFxubmV0L3NtYy9zbWNfbGxjLmMtMTU2Ny1cXHRcXHRnb3RvIG91dDtcXG4tLVxcbm5ldC9zbWMvc21jX2xsYy5jPTE2NzI9c3RhdGljIHZvaWQgc21jX2xsY19wcm9jZXNzX3Nydl9kZWxldGVfbGluayhzdHJ1Y3Qgc21jX2xpbmtfZ3JvdXAgKmxncilcXG4tLVxcbm5ldC9zbWMvc21jX2xsYy5jLTE3MTctXFx0XFx0XFx0aWYgKHFlbnRyeTIpXFxubmV0L3NtYy9zbWNfbGxjLmM6MTcxODpcXHRcXHRcXHRcXHRzbWNfbGxjX2Zsb3dfcWVudHJ5X2RlbChcXHUwMDI2bGdyLVxcdTAwM2VsbGNfZmxvd19sY2wpO1xcbm5ldC9zbWMvc21jX2xsYy5jLTE3MTktXFx0XFx0fVxcbi0tXFxubmV0L3NtYy9zbWNfbGxjLmM9MTc0MD1zdGF0aWMgdm9pZCBzbWNfbGxjX2RlbGV0ZV9saW5rX3dvcmsoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxcbi0tXFxubmV0L3NtYy9zbWNfbGxjLmMtMTc0Ni1cXHRcXHQvKiBsaW5rIGdyb3VwIGlzIHRlcm1pbmF0aW5nICovXFxubmV0L3NtYy9zbWNfbGxjLmM6MTc0NzpcXHRcXHRzbWNfbGxjX2Zsb3dfcWVudHJ5X2RlbChcXHUwMDI2bGdyLVxcdTAwM2VsbGNfZmxvd19sY2wpO1xcbm5ldC9zbWMvc21jX2xsYy5jLTE3NDgtXFx0XFx0Z290byBvdXQ7XFxuLS1cXG5uZXQvc21jL3NtY19sbGMuYz0xNzYwPXN0YXRpYyB2b2lkIHNtY19sbGNfcm10X2NvbmZfcmtleShzdHJ1Y3Qgc21jX2xpbmtfZ3JvdXAgKmxncilcXG4tLVxcbm5ldC9zbWMvc21jX2xsYy5jLTE3OTUtXFx0c21jX2xsY19zZW5kX21lc3NhZ2UobGluaywgXFx1MDAyNnFlbnRyeS1cXHUwMDNlbXNnKTtcXG5uZXQvc21jL3NtY19sbGMuYzoxNzk2OlxcdHNtY19sbGNfZmxvd19xZW50cnlfZGVsKFxcdTAwMjZsZ3ItXFx1MDAzZWxsY19mbG93X3JtdCk7XFxubmV0L3NtYy9zbWNfbGxjLmMtMTc5Ny19XFxuLS1cXG5uZXQvc21jL3NtY19sbGMuYz0xODAwPXN0YXRpYyB2b2lkIHNtY19sbGNfcm10X2RlbGV0ZV9ya2V5KHN0cnVjdCBzbWNfbGlua19ncm91cCAqbGdyKVxcbi0tXFxubmV0L3NtYy9zbWNfbGxjLmMtMTg0OS1cXHRzbWNfbGxjX3NlbmRfbWVzc2FnZShsaW5rLCBcXHUwMDI2cWVudHJ5LVxcdTAwM2Vtc2cpO1xcbm5ldC9zbWMvc21jX2xsYy5jOjE4NTA6XFx0c21jX2xsY19mbG93X3FlbnRyeV9kZWwoXFx1MDAyNmxnci1cXHUwMDNlbGxjX2Zsb3dfcm10KTtcXG5uZXQvc21jL3NtY19sbGMuYy0xODUxLX1cXG4tLVxcbm5ldC9zbWMvc21jX2xsYy5jPTE4NzU9c3RhdGljIHZvaWQgc21jX2xsY19ldmVudF9oYW5kbGVyKHN0cnVjdCBzbWNfbGxjX3FlbnRyeSAqcWVudHJ5KVxcbi0tXFxubmV0L3NtYy9zbWNfbGxjLmMtMTkxNC1cXHRcXHRcXHRcXHQvKiBmcmVlIGFueSBxZW50cnkgc3Rhc2hlZCBpbiBSRVFfQUREX0xJTksgc3RhdGUgKi9cXG5uZXQvc21jL3NtY19sbGMuYzoxOTE1OlxcdFxcdFxcdFxcdHNtY19sbGNfZmxvd19xZW50cnlfZGVsKFxcdTAwMjZsZ3ItXFx1MDAzZWxsY19mbG93X2xjbCk7XFxubmV0L3NtYy9zbWNfbGxjLmMtMTkxNi1cXHRcXHRcXHRcXHRsZ3ItXFx1MDAzZWxsY19mbG93X2xjbC50eXBlID0gU01DX0xMQ19GTE9XX0FERF9MSU5LO1xcbi0tXFxubmV0L3NtYy9zbWNfbGxjLmM9MjIyMj1pbnQgc21jX2xsY19kb19jb25maXJtX3JrZXkoc3RydWN0IHNtY19saW5rICpzZW5kX2xpbmssXFxuLS1cXG5uZXQvc21jL3NtY19sbGMuYy0yMjM4LVxcdGlmIChxZW50cnkpXFxubmV0L3NtYy9zbWNfbGxjLmM6MjIzOTpcXHRcXHRzbWNfbGxjX2Zsb3dfcWVudHJ5X2RlbChcXHUwMDI2bGdyLVxcdTAwM2VsbGNfZmxvd19sY2wpO1xcbm5ldC9zbWMvc21jX2xsYy5jLTIyNDAtXFx0cmV0dXJuIHJjO1xcbi0tXFxubmV0L3NtYy9zbWNfbGxjLmM9MjI0ND1pbnQgc21jX2xsY19kb19kZWxldGVfcmtleShzdHJ1Y3Qgc21jX2xpbmtfZ3JvdXAgKmxncixcXG4tLVxcbm5ldC9zbWMvc21jX2xsYy5jLTIyNjUtXFx0aWYgKHFlbnRyeSlcXG5uZXQvc21jL3NtY19sbGMuYzoyMjY2OlxcdFxcdHNtY19sbGNfZmxvd19xZW50cnlfZGVsKFxcdTAwMjZsZ3ItXFx1MDAzZWxsY19mbG93X2xjbCk7XFxubmV0L3NtYy9zbWNfbGxjLmMtMjI2Ny1cXHRyZXR1cm4gcmM7XFxuLS1cXG5uZXQvc21jL3NtY19sbGMuaD0xMTA9c3RydWN0IHNtY19sbGNfcWVudHJ5ICpzbWNfbGxjX2Zsb3dfcWVudHJ5X2NscihzdHJ1Y3Qgc21jX2xsY19mbG93ICpmbG93KTtcXG5uZXQvc21jL3NtY19sbGMuaDoxMTE6dm9pZCBzbWNfbGxjX2Zsb3dfcWVudHJ5X2RlbChzdHJ1Y3Qgc21jX2xsY19mbG93ICpmbG93KTtcXG5uZXQvc21jL3NtY19sbGMuaC0xMTItdm9pZCBzbWNfbGxjX3NlbmRfbGlua19kZWxldGVfYWxsKHN0cnVjdCBzbWNfbGlua19ncm91cCAqbGdyLCBib29sIG9yZCxcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMThUMDc6NTE6MjMuMzIyMDMxMjExWiIsIlNlcSI6MzcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjcxODMxNTM4NjgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQXNzZXNzbWVudCBvZiB0aGUgUGF0Y2gqKlxuXG5Pa2F5LCBzbyBgc21jX2xsY19mbG93X3FlbnRyeV9kZWxgIGlzIGV4cG9ydGVkIGluIHRoZSBoZWFkZXIgZmlsZSBgc21jX2xsYy5oYCBhbmQgaXMgdXNlZCBpbiBib3RoIGBhZl9zbWMuY2AgYW5kIGBzbWNfbGxjLmNgLiBUaGF0J3MgYSBrZXkgc3RhcnRpbmcgcG9pbnQuIFRoaXMgcGF0Y2ggYWRkcmVzc2VzIGEgbWVtb3J5IGxlYWsgc3BlY2lmaWNhbGx5IHdpdGhpbiBgc21jX2xsY19ldmVudF9oYW5kbGVyYCB3aGVuIHRoZSBzeXN0ZW0gdHJhbnNpdGlvbnMgZnJvbSB0aGUgYFNNQ19MTENfRkxPV19SRVFfQUREX0xJTktgIHN0YXRlIHRvIGBTTUNfTExDX0ZMT1dfQUREX0xJTktgLiBZZXAsIGFic29sdXRlbHksIHRoaXMgaXMgYSBwcmltZSBjYW5kaWRhdGUgZm9yIGZ1enppbmcuIFdlIGhhdmUgYSBkZWZpbmVkIHN0YXRlIHRyYW5zaXRpb24gdGhhdCdzIGtub3duIHRvIGJlIHByb2JsZW1hdGljLCB3aGljaCBtYWtlcyBpdCBlYXNpZXIgdG8gdGFyZ2V0IHdpdGggZm9jdXNlZCBmdXp6aW5nLlxuXG5MZXQncyBuYWlsIGRvd24gdGhlIGZpbmFsIGFuc3dlci5cblxuVGhlIGZ1enppbmcgaXMgKmRlZmluaXRlbHkqIHdvcnRod2hpbGUuXG5cbkhlcmUgYXJlIHRoZSBzcGVjaWZpYyBzeW1ib2xzIEkgd2FudCB0byBwcmlvcml0aXplIGR1cmluZyBmdXp6aW5nOiBgc21jX2xsY19zcnZfYWRkX2xpbmtgLCBgc21jX2xsY19jbGlfYWRkX2xpbmtgLCBhbmQgYHNtY19sbGNfYWRkX2xpbmtfbG9jYWxgLiBUaGV5J3JlIGFsbCByZWxhdGVkIHRvIHRoZSBhZGRfbGluayBmbG93LCB3aGljaCBpcyB3aGVyZSB0aGUgbGVhayBvY2N1cnMuXG5cbldlIG5lZWQgdG8gbWFrZSBzdXJlIHdlIGhhdmUgdGhlIGZvbGxvd2luZyBjb25maWd1cmF0aW9ucyBlbmFibGVkOiBgU01DYCwgYElORklOSUJBTkRgLCBgRElCU2AsIGFuZCBgRElCU19MT2AuIERJQlMgYW5kIERJQlNfTE8gYXJlIGVzc2VudGlhbCBmb3IgYWxsb3dpbmcgbG9jYWwgbG9vcGJhY2sgdGVzdGluZyBvZiBTTUMgdXNpbmcgZW11bGF0ZWQgUkRNQS4gVGhpcyB3aWxsIGJlIHRoZSBtb3N0IGVmZmVjdGl2ZSB3YXkgdG8gdGVzdCB0aGlzIGZpeC5cblxuVGhlIHJlYXNvbmluZyBpcyBwcmV0dHkgc3RyYWlnaHRmb3J3YXJkOiB0aGUgcGF0Y2ggZXhwbGljaXRseSBmcmVlcyBhIHN0YXNoZWQgcXVldWUgZW50cnkgZHVyaW5nIHRoZSBzdGF0ZSB0cmFuc2l0aW9uLCBmaXhpbmcgYSBtZW1vcnkgbGVhay4gVGhpcyBpcyBjb3JlIGtlcm5lbCBsb2dpYyB0aGF0J3MgcmVhY2hhYmxlIGFuZCBjcml0aWNhbCB0byB0aGUgU01DIHByb3RvY29sLiBGdXp6aW5nIHNob3VsZCBob25lIGluIG9uIHRoZSBpbml0aWF0aW9uIGFuZCBwcm9jZXNzaW5nIG9mIHRoYXQgYWRkX2xpbmsgZmxvdyBzcGVjaWZpY2FsbHkuIEl0J3MgYSBjbGVhbiB0YXJnZXQgYW5kIGEgc29saWQgYXBwcm9hY2guXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIyMzk0LCJPdXRwdXRUb2tlbnMiOjE4MiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI4MSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xOFQwNzo1MTozMC41MDUxODgwOTlaIiwiU2VxIjozOCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo3Mzg5NTkyNywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiU01DXCIsXG4gICAgXCJJTkZJTklCQU5EXCIsXG4gICAgXCJESUJTXCIsXG4gICAgXCJESUJTX0xPXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwic21jX2xsY19zcnZfYWRkX2xpbmtcIixcbiAgICBcInNtY19sbGNfY2xpX2FkZF9saW5rXCIsXG4gICAgXCJzbWNfbGxjX2FkZF9saW5rX2xvY2FsXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggZml4ZXMgYSBtZW1vcnkgbGVhayBpbiB0aGUgU01DIExMQyBldmVudCBoYW5kbGVyIGJ5IGV4cGxpY2l0bHkgZnJlZWluZyB0aGUgc3Rhc2hlZCBxZW50cnkgd2hlbiB0cmFuc2l0aW9uaW5nIGZyb20gdGhlIFJFUV9BRERfTElOSyBzdGF0ZSB0byB0aGUgQUREX0xJTksgc3RhdGUuIFRoaXMgaXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljIGZvciB0aGUgU01DIHByb3RvY29sLiBGdXp6aW5nIHNob3VsZCBmb2N1cyBvbiB0aGUgYWRkX2xpbmsgZmxvdyBpbml0aWF0aW9uIGFuZCBwcm9jZXNzaW5nIGZ1bmN0aW9ucy4gRElCUyBhbmQgRElCU19MTyBhcmUgcmVxdWlyZWQgdG8gZW5hYmxlIGxvY2FsIGxvb3BiYWNrIHRlc3Rpbmcgb2YgU01DIG92ZXIgZW11bGF0ZWQgUkRNQS5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJTTUNcIixcbiAgICBcIklORklOSUJBTkRcIixcbiAgICBcIkRJQlNcIixcbiAgICBcIkRJQlNfTE9cIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJzbWNfbGxjX3Nydl9hZGRfbGlua1wiLFxuICAgIFwic21jX2xsY19jbGlfYWRkX2xpbmtcIixcbiAgICBcInNtY19sbGNfYWRkX2xpbmtfbG9jYWxcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBmaXhlcyBhIG1lbW9yeSBsZWFrIGluIHRoZSBTTUMgTExDIGV2ZW50IGhhbmRsZXIgYnkgZXhwbGljaXRseSBmcmVlaW5nIHRoZSBzdGFzaGVkIHFlbnRyeSB3aGVuIHRyYW5zaXRpb25pbmcgZnJvbSB0aGUgUkVRX0FERF9MSU5LIHN0YXRlIHRvIHRoZSBBRERfTElOSyBzdGF0ZS4gVGhpcyBpcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMgZm9yIHRoZSBTTUMgcHJvdG9jb2wuIEZ1enppbmcgc2hvdWxkIGZvY3VzIG9uIHRoZSBhZGRfbGluayBmbG93IGluaXRpYXRpb24gYW5kIHByb2Nlc3NpbmcgZnVuY3Rpb25zLiBESUJTIGFuZCBESUJTX0xPIGFyZSByZXF1aXJlZCB0byBlbmFibGUgbG9jYWwgbG9vcGJhY2sgdGVzdGluZyBvZiBTTUMgb3ZlciBlbXVsYXRlZCBSRE1BLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xOFQwNzo1MTozMC41NzkwODkxNTZaIiwiU2VxIjozOSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJJZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjExMDIzOTM2MjI1LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMThUMDc6NTE6MzAuNTc5NTgwMTY2WiIsIlNlcSI6NDAsIk5lc3RpbmciOjIsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJrbXNhbi1ldmFsdWF0b3IiLCJNb2RlbCI6ImJlc3QtZXhwZW5zaXZlIiwiRHVyYXRpb24iOjExMDIzNDQxMjE1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJLTVNBTlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBmaXhlcyBhIG1lbW9yeSBsZWFrIGJ5IGZyZWVpbmcgYSBzdGFzaGVkIGBxZW50cnlgIGluIGBzbWNfbGxjX2V2ZW50X2hhbmRsZXJgIHdoZW4gdGhlIHNlcnZlciBzdGFydHMgYGFkZF9saW5rYCBwcm9jZXNzaW5nLiBJdCBkb2VzIG5vdCBpbnRyb2R1Y2Ugb3IgZXhwb3NlIGFueSB1bmluaXRpYWxpemVkIG1lbW9yeSByaXNrcyBvciBpbmZvLWxlYWtzLiBNZW1vcnkgbGVha3MgYW5kIHVzZS1hZnRlci1mcmVlIGJ1Z3MgYXJlIGVmZmVjdGl2ZWx5IGRldGVjdGVkIGJ5IEtNRU1MRUFLIGFuZCBLQVNBTi4gVGhlcmVmb3JlLCBhIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaXMgbm90IHJlcXVpcmVkLlwiLFxuICBcIk5lZWRzS01TQU5cIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBzZWN1cml0eSBlbmdpbmVlciBzcGVjaWFsaXppbmcgaW4ga2VybmVsIG1lbW9yeVxuZXJyb3IgZGV0ZWN0b3JzIChLQVNBTiBhbmQgS01TQU4pLiBZb3VyIGpvYiBpcyB0byByZXZpZXcgdGhlIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmRcbmRldGVybWluZSBpZiB0aGUgY29kZSBjaGFuZ2VzIGp1c3RpZnkgc3Bhd25pbmcgYSBkZWRpY2F0ZWQgS01TQU4gKEtlcm5lbE1lbW9yeVNhbml0aXplcilcbmZ1enppbmcgc2Vzc2lvbiBpbiBhZGRpdGlvbiB0byBzdGFuZGFyZCBLQVNBTiBmdXp6aW5nLlxuXG5DUklUSUNBTCBESVNUSU5DVElPTiBCRVRXRUVOIEtBU0FOIEFORCBLTVNBTjpcbi0gU3RhbmRhcmQgS0FTQU4ga2VybmVsIGJ1aWxkcyAodXBzdHJlYW0tYXBwYXJtb3Ita2FzYW4uY29uZmlnKSBhbHJlYWR5IGVuYWJsZVxuICBhIGNvbXByZWhlbnNpdmUgc3VpdGUgb2YgZGVidWdnaW5nIHRvb2xzIGFuZCBzYW5pdGl6ZXJzLCBpbmNsdWRpbmcgS0FTQU5cbiAgKG91dC1vZi1ib3VuZHMgYWNjZXNzZXMsIHVzZS1hZnRlci1mcmVlLCBkb3VibGUgZnJlZSwgaW52YWxpZCBmcmVlKSwgTE9DS0RFUFxuICAobG9ja2luZyBidWdzIGFuZCBkZWFkbG9ja3MpLCBVQi1zYW5pdGl6ZXJzLCBhbmQgbWVtb3J5IGNvcnJ1cHRpb24gY2hlY2tzLlxuLSBLTVNBTiAoS2VybmVsTWVtb3J5U2FuaXRpemVyKSBkZXRlY3RzIHJlYWRzIG9mIFVOSU5JVElBTElaRUQgbWVtb3J5IChzdGFjaywgaGVhcCxcbiAgb3IgcGFnZSBhbGxvY2F0aW9ucykgYW5kIGtlcm5lbC10by11c2VyIG1lbW9yeSBpbmZvLWxlYWtzLlxuXG5SdWxlOiBUSEVSRSBJUyBOTyBTRU5TRSBJTiBSVU5OSU5HIEEgS01TQU4gU0VTU0lPTiBJRiBBIEJVRyBDQU4gQkUgQ0FVR0hUIEJZIEtBU0FOLFxuTE9DS0RFUCwgT1IgT1RIRVIgU1RBTkRBUkQgQlVHIERFVEVDVE9SUy5cbkEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpbmN1cnMgc2lnbmlmaWNhbnQgcmVzb3VyY2UgY29zdHMuIFlvdSBtdXN0IE9OTFlcbnNldCBOZWVkc0tNU0FOPXRydWUgaWYgdGhlIGNvZGUgY2hhbmdlcyBpbnRyb2R1Y2Ugb3IgZXhwb3NlIFVOSU5JVElBTElaRUQgTUVNT1JZIHJpc2tzXG50aGF0IGFyZSBkZXRlY3RlZCBPTkxZIGJ5IEtNU0FOLlxuXG5Mb29rIGhvbGlzdGljYWxseSBhdCB0aGUgcGF0Y2ggc2VyaWVzIGFuZCBzdXJyb3VuZGluZyBjb2RlLiBFdmVuIGlmIG5vIGRpcmVjdFxudW5pbml0aWFsaXplZCBmaWVsZCBhY2Nlc3NlcyBvciBuZXcgYnVmZmVyIGFsbG9jYXRpb25zIGFyZSBhZGRlZCBpbiB0aGUgZGlmZiBpdHNlbGYsXG5hIHBhdGNoIG1heSBhbHRlciBjb250cm9sIGZsb3csIGJvdW5kcyBjaGVja2luZywgb3IgZGF0YSBsZW5ndGggY2FsY3VsYXRpb25zIGluIHdheXNcbnRoYXQgY2hhbmdlIGhvdyB0aGUgcmVzdCBvZiB0aGUgY29kZSBvcGVyYXRlcyBvbiBleGlzdGluZyBidWZmZXJzIChlLmcuIGFsbG93aW5nXG51bmluaXRpYWxpemVkIHN0YWNrL2hlYXAgbWVtb3J5IHRvIGJlIHJlYWQsIGNvcGllZCB0byB1c2VyIHNwYWNlLCBvciB1c2VkIGluIGNvbnRyb2xcbmZsb3cpLiBEbyBub3QgaGVzaXRhdGUgdG8gdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gaW5zcGVjdCB0aGUgc3Vycm91bmRpbmcgY29kZSxcbmNhbGxlZCBmdW5jdGlvbnMsIGFuZCBjYWxsZXJzLlxuXG5TZXQgTmVlZHNLTVNBTj10cnVlIE9OTFkgSUYgdGhlIHBhdGNoIGludHJvZHVjZXMgb3IgbW9kaWZpZXM6XG4xLiBLZXJuZWwgc3RydWN0dXJlcyBzZW50IHRvIHVzZXIgc3BhY2UgKHZpYSBjb3B5X3RvX3VzZXIsIHB1dF91c2VyLCBuZXRsaW5rIHNrYlxuICAgYXR0cmlidXRlcywgaW9jdGwgb3V0cHV0IGFyZ3VtZW50cywgc29ja2V0IG9wdGlvbnMsIG9yIEJQRiBidWZmZXJzKSB3aGVyZSBmaWVsZHNcbiAgIG9yIHN0cnVjdHVyZSBwYWRkaW5nIG1pZ2h0IG5vdCBiZSBmdWxseSBpbml0aWFsaXplZC96ZXJvZWQuXG4yLiBDb25kaXRpb25hbCBsb2dpYyBvciBicmFuY2hpbmcgdGhhdCBkZXBlbmRzIG9uIHBvdGVudGlhbGx5IHVuaW5pdGlhbGl6ZWQgdmFyaWFibGVzXG4gICBvciBzdHJ1Y3QgZmllbGRzLlxuMy4gQWxsb2NhdGlvbiBvciBpbml0aWFsaXphdGlvbiBvZiBjb21wbGV4IGRhdGEgc3RydWN0dXJlcyB3aGVyZSB1bmluaXRpYWxpemVkIGZpZWxkc1xuICAgY291bGQgYmUgcmVhZCBsYXRlciBpbiByZWFjaGFibGUgY29kZSBwYXRocy5cbjQuIEJvdW5kcyBjaGVja3MsIGxlbmd0aHMsIG9yIGxvZ2ljIGluIGEgd2F5IHRoYXQgYWxsb3dzIHN1cnJvdW5kaW5nIGNvZGUgdG8gYWNjZXNzXG4gICB1bmluaXRpYWxpemVkIGJ5dGVzIG9mIGV4aXN0aW5nIGJ1ZmZlcnMuXG5cblNldCBOZWVkc0tNU0FOPWZhbHNlIElGOlxuLSBUaGUgY29kZSBjaGFuZ2VzIHByaW1hcmlseSByaXNrIG91dC1vZi1ib3VuZHMgYWNjZXNzLCBhcnJheSBvdmVyZmxvd3MsIE5VTEwgcG9pbnRlclxuICBkZXJlZmVyZW5jZXMsIGxvY2tpbmcgZGVhZGxvY2tzLCBvciB1c2UtYWZ0ZXItZnJlZSBidWdzICh0aGVzZSBhcmUgYWxyZWFkeSBjYXVnaHRcbiAgYnkgS0FTQU4sIExPQ0tERVAsIG9yIHN0YW5kYXJkIGJ1ZyBkZXRlY3RvcnMpLlxuLSBBbGwgc3RhY2svaGVhcCBzdHJ1Y3R1cmVzIHRvdWNoZWQgb3IgaW50cm9kdWNlZCBieSB0aGUgcGF0Y2ggYXJlIGZ1bGx5IHplcm9lZFxuICBvciBpbml0aWFsaXplZCAoZS5nLiB1c2luZyA9IHswfSwgbWVtc2V0LCBremFsbG9jKSBiZWZvcmUgYmVpbmcgcmVhZCBvciBjb3BpZWQuXG4tIFRoZSBwYXRjaCBkb2VzIG5vdCBpbnRyb2R1Y2UgYW55IHJpc2sgb2YgdW5pbml0aWFsaXplZCBtZW1vcnkgdXNhZ2Ugb3IgaW5mby1sZWFrcy5cblxuVXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gaW5zcGVjdCB0aGUgc3Vycm91bmRpbmcgY29kZSBpZiBuZWNlc3NhcnksIHRoZW4gcHJvdmlkZVxuZGV0YWlsZWQgS01TQU5SZWFzb25pbmcgY29udHJhc3RpbmcgS0FTQU4gdnMgS01TQU4gYXBwbGljYWJpbGl0eSBmb3IgdGhpcyBwYXRjaC5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IDc1YzhhMWUwY2NkN2E4ZTIwNTRiZDM2YTc5YjA5Yzg1OTgwMzNmODVcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgVHVlIEF1ZyAxOCAwNzo1MDowMCAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL25ldC9zbWMvc21jX2xsYy5jIGIvbmV0L3NtYy9zbWNfbGxjLmNcbmluZGV4IGFhNmQ4M2FmNTVlZGEuLmM3ZjAyMjJhZmY4ZDAgMTAwNjQ0XG4tLS0gYS9uZXQvc21jL3NtY19sbGMuY1xuKysrIGIvbmV0L3NtYy9zbWNfbGxjLmNcbkBAIC0xOTExLDYgKzE5MTEsOCBAQCBzdGF0aWMgdm9pZCBzbWNfbGxjX2V2ZW50X2hhbmRsZXIoc3RydWN0IHNtY19sbGNfcWVudHJ5ICpxZW50cnkpXG4gXHRcdFx0aWYgKGxnci1cdTAwM2VsbGNfZmxvd19sY2wudHlwZSA9PVxuIFx0XHRcdFx0XHRTTUNfTExDX0ZMT1dfUkVRX0FERF9MSU5LKSB7XG4gXHRcdFx0XHQvKiBzZXJ2ZXIgc3RhcnRlZCBhZGRfbGluayBwcm9jZXNzaW5nICovXG4rXHRcdFx0XHQvKiBmcmVlIGFueSBxZW50cnkgc3Rhc2hlZCBpbiBSRVFfQUREX0xJTksgc3RhdGUgKi9cbitcdFx0XHRcdHNtY19sbGNfZmxvd19xZW50cnlfZGVsKFx1MDAyNmxnci1cdTAwM2VsbGNfZmxvd19sY2wpO1xuIFx0XHRcdFx0bGdyLVx1MDAzZWxsY19mbG93X2xjbC50eXBlID0gU01DX0xMQ19GTE9XX0FERF9MSU5LO1xuIFx0XHRcdFx0c21jX2xsY19mbG93X3FlbnRyeV9zZXQoXHUwMDI2bGdyLVx1MDAzZWxsY19mbG93X2xjbCxcbiBcdFx0XHRcdFx0XHRcdHFlbnRyeSk7XG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xOFQwNzo1MTozMC41Nzk1ODE3MzZaIiwiU2VxIjo0MSwiTmVzdGluZyI6MywiVHlwZSI6ImxsbSIsIk5hbWUiOiJrbXNhbi1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NjYxODg0ODc0NSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIFNNQyBMTEMgUGF0Y2gqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGZvciBgbmV0L3NtYy9zbWNfbGxjLmNgLiBUaGUgY29yZSBvZiB0aGUgY2hhbmdlIGlzIGFkZGluZyBhIGNhbGwgdG8gYHNtY19sbGNfZmxvd19xZW50cnlfZGVsYCByaWdodCBiZWZvcmUgc2V0dGluZyB0aGUgYGxsY19mbG93X2xjbGAgdHlwZSB0byBgU01DX0xMQ19GTE9XX0FERF9MSU5LYCBhbmQgcmUtc2V0dGluZyB0aGUgYHFlbnRyeWAuIE15IGluaXRpYWwgdGhvdWdodCBpcywgdGhpcyBpcyBsaWtlbHkgYWRkcmVzc2luZyBhIG1lbW9yeSBtYW5hZ2VtZW50IGlzc3VlLiBTcGVjaWZpY2FsbHksIGl0IGxvb2tzIGxpa2UgdGhlcmUgbWlnaHQgaGF2ZSBiZWVuIGEgbWVtb3J5IGxlYWssIG9yIHBvdGVudGlhbGx5IGEgdXNlLWFmdGVyLWZyZWUgc2NlbmFyaW8sIHdoZXJlIGEgcXVldWVkIGVudHJ5IChgcWVudHJ5YCkgd2FzIGJlaW5nIHN0YXNoZWQgaW4gYGxsY19mbG93X2xjbGAgYW5kIG5vdCBwcm9wZXJseSBmcmVlZCB3aGVuIHRoZSBzZXJ2ZXIgaW5pdGlhdGVkIHRoZSBcImFkZCBsaW5rXCIgcHJvY2Vzcy5cblxuVGhlIGNvbW1lbnQgaW5jbHVkZWQgaW4gdGhlIGNvZGUgcmVpbmZvcmNlcyB0aGlzLCBleHBsaWNpdGx5IHN0YXRpbmcgdGhhdCB3ZSdyZSBmcmVlaW5nIGFueSBwb3RlbnRpYWxseSBzdGFzaGVkIGBxZW50cnlgIGluIHRoZSBgUkVRX0FERF9MSU5LYCBzdGF0ZS5cblxuR2l2ZW4gbXkgdW5kZXJzdGFuZGluZywgdGhlIGFkZGVkIGBzbWNfbGxjX2Zsb3dfcWVudHJ5X2RlbGAgY2FsbCBoYW5kbGVzIHRoZSBjbGVhbnVwLiBNZW1vcnkgbGVha3MsIHdoaWNoIGlzIHRoZSBtb3N0IGxpa2VseSBwcm9ibGVtIGhlcmUsIGFyZSB1c3VhbGx5IGNhdWdodCBieSBLTUVNTEVBSywgYW5kIHVzZS1hZnRlci1mcmVlIGlzc3VlcyBhcmUgdXN1YWxseSBjYXVnaHQgYnkgS0FTQU4uIFdlIGFyZSBkZWxldGluZyBhIHFlbnRyeSBzbyB0aGlzIGlzIHVubGlrZWx5IHRvIGJlIGFuIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHVzYWdlIG9yIGluZm8tbGVhayBzaXR1YXRpb24sIHNvIEtNU0FOIHNob3VsZCBub3QgYmUgbmVlZGVkIGhlcmUuIFRoaXMgcGF0Y2ggc2ltcGx5IGZyZWVzIGEgcHJldmlvdXNseSBhbGxvY2F0ZWQgZW50cnkuIEkgbmVlZCB0byB0YWtlIGEgcXVpY2sgcGVlayBhdCB0aGUgYHNtY19sbGNfZmxvd19xZW50cnlfZGVsYCBmdW5jdGlvbiB0byBiZSBhYnNvbHV0ZWx5IHN1cmUsIGJ1dCBteSBhc3Nlc3NtZW50IHJpZ2h0IG5vdyBpcyB0aGF0IHRoaXMgaXMgYSBzdHJhaWdodGZvcndhcmQgYW5kIG5lY2Vzc2FyeSBmaXggdG8gcHJldmVudCBhIG1lbW9yeSBtYW5hZ2VtZW50IHByb2JsZW0sIHNwZWNpZmljYWxseSByZWxhdGVkIHRvIHRoZSBcImFkZCBsaW5rXCIgcHJvY2Vzc2luZy5cblxuXG4iLCJJbnB1dFRva2VucyI6MjA2MywiT3V0cHV0VG9rZW5zIjo0NCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjQ0NCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE4VDA3OjUxOjM3LjE5ODQzMzc3MVoiLCJTZXEiOjQyLCJOZXN0aW5nIjozLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDQ0Njg1OTksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwic21jX2xsY19mbG93X3FlbnRyeV9kZWxcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L3NtYy9zbWNfbGxjLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L3NtYy9zbWNfbGxjLmM9MjA3PXN0cnVjdCBzbWNfbGxjX3FlbnRyeSAqc21jX2xsY19mbG93X3FlbnRyeV9jbHIoc3RydWN0IHNtY19sbGNfZmxvdyAqZmxvdylcXG4tLVxcbm5ldC9zbWMvc21jX2xsYy5jLTIxNC1cXG5uZXQvc21jL3NtY19sbGMuYzoyMTU6dm9pZCBzbWNfbGxjX2Zsb3dfcWVudHJ5X2RlbChzdHJ1Y3Qgc21jX2xsY19mbG93ICpmbG93KVxcbm5ldC9zbWMvc21jX2xsYy5jLTIxNi17XFxuLS1cXG5uZXQvc21jL3NtY19sbGMuYz0zMzY9c3RydWN0IHNtY19sbGNfcWVudHJ5ICpzbWNfbGxjX3dhaXQoc3RydWN0IHNtY19saW5rX2dyb3VwICpsZ3IsXFxuLS1cXG5uZXQvc21jL3NtY19sbGMuYy0zNDktXFx0ICAgIChsbmsgXFx1MDAyNlxcdTAwMjYgIXNtY19saW5rX3VzYWJsZShsbmspKSB8fCBsaXN0X2VtcHR5KFxcdTAwMjZsZ3ItXFx1MDAzZWxpc3QpKSB7XFxubmV0L3NtYy9zbWNfbGxjLmM6MzUwOlxcdFxcdHNtY19sbGNfZmxvd19xZW50cnlfZGVsKGZsb3cpO1xcbm5ldC9zbWMvc21jX2xsYy5jLTM1MS1cXHRcXHRnb3RvIG91dDtcXG4tLVxcbm5ldC9zbWMvc21jX2xsYy5jLTM2Ny1cXHRcXHRcXHQgICAgIGZsb3ctXFx1MDAzZXFlbnRyeS1cXHUwMDNlbXNnLnJhdy5oZHIuZmxhZ3MpO1xcbm5ldC9zbWMvc21jX2xsYy5jOjM2ODpcXHRcXHRzbWNfbGxjX2Zsb3dfcWVudHJ5X2RlbChmbG93KTtcXG5uZXQvc21jL3NtY19sbGMuYy0zNjktXFx0fVxcbi0tXFxubmV0L3NtYy9zbWNfbGxjLmM9ODg3PXN0YXRpYyBpbnQgc21jX2xsY19jbGlfcmtleV9leGNoYW5nZShzdHJ1Y3Qgc21jX2xpbmsgKmxpbmssXFxuLS1cXG5uZXQvc21jL3NtY19sbGMuYy05MTgtXFx0XFx0fVxcbm5ldC9zbWMvc21jX2xsYy5jOjkxOTpcXHRcXHRzbWNfbGxjX2Zsb3dfcWVudHJ5X2RlbChcXHUwMDI2bGdyLVxcdTAwM2VsbGNfZmxvd19sY2wpO1xcbm5ldC9zbWMvc21jX2xsYy5jLTkyMC1cXHRcXHRyYyA9IHNtY19sbGNfYWRkX2xpbmtfY29udChsaW5rLCBsaW5rX25ldywgXFx1MDAyNm51bV9ya2V5c19zZW5kLFxcbi0tXFxubmV0L3NtYy9zbWNfbGxjLmM9OTQxPXN0YXRpYyBpbnQgc21jX2xsY19jbGlfY29uZl9saW5rKHN0cnVjdCBzbWNfbGluayAqbGluayxcXG4tLVxcbm5ldC9zbWMvc21jX2xsYy5jLTk2MS1cXHRcXHRzbWNfbGxjX3NlbmRfbWVzc2FnZShsaW5rLCBcXHUwMDI2cWVudHJ5LVxcdTAwM2Vtc2cpO1xcbm5ldC9zbWMvc21jX2xsYy5jOjk2MjpcXHRcXHRzbWNfbGxjX2Zsb3dfcWVudHJ5X2RlbChcXHUwMDI2bGdyLVxcdTAwM2VsbGNfZmxvd19sY2wpO1xcbm5ldC9zbWMvc21jX2xsYy5jLTk2My1cXHRcXHRyZXR1cm4gLUVOT0xJTks7XFxuLS1cXG5uZXQvc21jL3NtY19sbGMuYy05NjUtXFx0c21jX2xsY19zYXZlX3BlZXJfdWlkKHFlbnRyeSk7XFxubmV0L3NtYy9zbWNfbGxjLmM6OTY2OlxcdHNtY19sbGNfZmxvd19xZW50cnlfZGVsKFxcdTAwMjZsZ3ItXFx1MDAzZWxsY19mbG93X2xjbCk7XFxubmV0L3NtYy9zbWNfbGxjLmMtOTY3LVxcbi0tXFxubmV0L3NtYy9zbWNfbGxjLmM9MTI4OD1zdGF0aWMgdm9pZCBzbWNfbGxjX2RlbGV0ZV9hc3ltX2xpbmsoc3RydWN0IHNtY19saW5rX2dyb3VwICpsZ3IpXFxuLS1cXG5uZXQvc21jL3NtY19sbGMuYy0xMzE2LVxcdH1cXG5uZXQvc21jL3NtY19sbGMuYzoxMzE3OlxcdHNtY19sbGNfZmxvd19xZW50cnlfZGVsKFxcdTAwMjZsZ3ItXFx1MDAzZWxsY19mbG93X2xjbCk7XFxubmV0L3NtYy9zbWNfbGxjLmMtMTMxOC1vdXRfZnJlZTpcXG4tLVxcbm5ldC9zbWMvc21jX2xsYy5jPTEzMjI9c3RhdGljIGludCBzbWNfbGxjX3Nydl9ya2V5X2V4Y2hhbmdlKHN0cnVjdCBzbWNfbGluayAqbGluayxcXG4tLVxcbm5ldC9zbWMvc21jX2xsYy5jLTEzNTUtXFx0XFx0fVxcbm5ldC9zbWMvc21jX2xsYy5jOjEzNTY6XFx0XFx0c21jX2xsY19mbG93X3FlbnRyeV9kZWwoXFx1MDAyNmxnci1cXHUwMDNlbGxjX2Zsb3dfbGNsKTtcXG5uZXQvc21jL3NtY19sbGMuYy0xMzU3LVxcdH0gd2hpbGUgKG51bV9ya2V5c19zZW5kIHx8IG51bV9ya2V5c19yZWN2KTtcXG4tLVxcbm5ldC9zbWMvc21jX2xsYy5jPTEzNjM9c3RhdGljIGludCBzbWNfbGxjX3Nydl9jb25mX2xpbmsoc3RydWN0IHNtY19saW5rICpsaW5rLFxcbi0tXFxubmV0L3NtYy9zbWNfbGxjLmMtMTM4Mi1cXHRcXHRpZiAocWVudHJ5KVxcbm5ldC9zbWMvc21jX2xsYy5jOjEzODM6XFx0XFx0XFx0c21jX2xsY19mbG93X3FlbnRyeV9kZWwoXFx1MDAyNmxnci1cXHUwMDNlbGxjX2Zsb3dfbGNsKTtcXG5uZXQvc21jL3NtY19sbGMuYy0xMzg0LVxcdFxcdHJldHVybiAtRU5PTElOSztcXG4tLVxcbm5ldC9zbWMvc21jX2xsYy5jLTEzOTItXFx0XFx0c21jcl9sZ3Jfc2V0X3R5cGUobGdyLCBsZ3JfbmV3X3QpO1xcbm5ldC9zbWMvc21jX2xsYy5jOjEzOTM6XFx0c21jX2xsY19mbG93X3FlbnRyeV9kZWwoXFx1MDAyNmxnci1cXHUwMDNlbGxjX2Zsb3dfbGNsKTtcXG5uZXQvc21jL3NtY19sbGMuYy0xMzk0LVxcdHJldHVybiAwO1xcbi0tXFxubmV0L3NtYy9zbWNfbGxjLmM9MTQwNj1pbnQgc21jX2xsY19zcnZfYWRkX2xpbmsoc3RydWN0IHNtY19saW5rICpsaW5rLFxcbi0tXFxubmV0L3NtYy9zbWNfbGxjLmMtMTQ4My1cXHRpZiAoYWRkX2xsYy1cXHUwMDNlaGQuZmxhZ3MgXFx1MDAyNiBTTUNfTExDX0ZMQUdfQUREX0xOS19SRUopIHtcXG5uZXQvc21jL3NtY19sbGMuYzoxNDg0OlxcdFxcdHNtY19sbGNfZmxvd19xZW50cnlfZGVsKFxcdTAwMjZsZ3ItXFx1MDAzZWxsY19mbG93X2xjbCk7XFxubmV0L3NtYy9zbWNfbGxjLmMtMTQ4NS1cXHRcXHRyYyA9IC1FTk9MSU5LO1xcbi0tXFxubmV0L3NtYy9zbWNfbGxjLmMtMTQ5NC1cXHRzbWNfbGxjX3NhdmVfYWRkX2xpbmtfaW5mbyhsaW5rX25ldywgYWRkX2xsYyk7XFxubmV0L3NtYy9zbWNfbGxjLmM6MTQ5NTpcXHRzbWNfbGxjX2Zsb3dfcWVudHJ5X2RlbChcXHUwMDI2bGdyLVxcdTAwM2VsbGNfZmxvd19sY2wpO1xcbm5ldC9zbWMvc21jX2xsYy5jLTE0OTYtXFxuLS1cXG5uZXQvc21jL3NtY19sbGMuYz0xNTU5PXN0YXRpYyB2b2lkIHNtY19sbGNfYWRkX2xpbmtfd29yayhzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspXFxuLS1cXG5uZXQvc21jL3NtY19sbGMuYy0xNTY1LVxcdFxcdC8qIGxpbmsgZ3JvdXAgaXMgdGVybWluYXRpbmcgKi9cXG5uZXQvc21jL3NtY19sbGMuYzoxNTY2OlxcdFxcdHNtY19sbGNfZmxvd19xZW50cnlfZGVsKFxcdTAwMjZsZ3ItXFx1MDAzZWxsY19mbG93X2xjbCk7XFxubmV0L3NtYy9zbWNfbGxjLmMtMTU2Ny1cXHRcXHRnb3RvIG91dDtcXG4tLVxcbm5ldC9zbWMvc21jX2xsYy5jPTE2NzI9c3RhdGljIHZvaWQgc21jX2xsY19wcm9jZXNzX3Nydl9kZWxldGVfbGluayhzdHJ1Y3Qgc21jX2xpbmtfZ3JvdXAgKmxncilcXG4tLVxcbm5ldC9zbWMvc21jX2xsYy5jLTE3MTctXFx0XFx0XFx0aWYgKHFlbnRyeTIpXFxubmV0L3NtYy9zbWNfbGxjLmM6MTcxODpcXHRcXHRcXHRcXHRzbWNfbGxjX2Zsb3dfcWVudHJ5X2RlbChcXHUwMDI2bGdyLVxcdTAwM2VsbGNfZmxvd19sY2wpO1xcbm5ldC9zbWMvc21jX2xsYy5jLTE3MTktXFx0XFx0fVxcbi0tXFxubmV0L3NtYy9zbWNfbGxjLmM9MTc0MD1zdGF0aWMgdm9pZCBzbWNfbGxjX2RlbGV0ZV9saW5rX3dvcmsoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxcbi0tXFxubmV0L3NtYy9zbWNfbGxjLmMtMTc0Ni1cXHRcXHQvKiBsaW5rIGdyb3VwIGlzIHRlcm1pbmF0aW5nICovXFxubmV0L3NtYy9zbWNfbGxjLmM6MTc0NzpcXHRcXHRzbWNfbGxjX2Zsb3dfcWVudHJ5X2RlbChcXHUwMDI2bGdyLVxcdTAwM2VsbGNfZmxvd19sY2wpO1xcbm5ldC9zbWMvc21jX2xsYy5jLTE3NDgtXFx0XFx0Z290byBvdXQ7XFxuLS1cXG5uZXQvc21jL3NtY19sbGMuYz0xNzYwPXN0YXRpYyB2b2lkIHNtY19sbGNfcm10X2NvbmZfcmtleShzdHJ1Y3Qgc21jX2xpbmtfZ3JvdXAgKmxncilcXG4tLVxcbm5ldC9zbWMvc21jX2xsYy5jLTE3OTUtXFx0c21jX2xsY19zZW5kX21lc3NhZ2UobGluaywgXFx1MDAyNnFlbnRyeS1cXHUwMDNlbXNnKTtcXG5uZXQvc21jL3NtY19sbGMuYzoxNzk2OlxcdHNtY19sbGNfZmxvd19xZW50cnlfZGVsKFxcdTAwMjZsZ3ItXFx1MDAzZWxsY19mbG93X3JtdCk7XFxubmV0L3NtYy9zbWNfbGxjLmMtMTc5Ny19XFxuLS1cXG5uZXQvc21jL3NtY19sbGMuYz0xODAwPXN0YXRpYyB2b2lkIHNtY19sbGNfcm10X2RlbGV0ZV9ya2V5KHN0cnVjdCBzbWNfbGlua19ncm91cCAqbGdyKVxcbi0tXFxubmV0L3NtYy9zbWNfbGxjLmMtMTg0OS1cXHRzbWNfbGxjX3NlbmRfbWVzc2FnZShsaW5rLCBcXHUwMDI2cWVudHJ5LVxcdTAwM2Vtc2cpO1xcbm5ldC9zbWMvc21jX2xsYy5jOjE4NTA6XFx0c21jX2xsY19mbG93X3FlbnRyeV9kZWwoXFx1MDAyNmxnci1cXHUwMDNlbGxjX2Zsb3dfcm10KTtcXG5uZXQvc21jL3NtY19sbGMuYy0xODUxLX1cXG4tLVxcbm5ldC9zbWMvc21jX2xsYy5jPTE4NzU9c3RhdGljIHZvaWQgc21jX2xsY19ldmVudF9oYW5kbGVyKHN0cnVjdCBzbWNfbGxjX3FlbnRyeSAqcWVudHJ5KVxcbi0tXFxubmV0L3NtYy9zbWNfbGxjLmMtMTkxNC1cXHRcXHRcXHRcXHQvKiBmcmVlIGFueSBxZW50cnkgc3Rhc2hlZCBpbiBSRVFfQUREX0xJTksgc3RhdGUgKi9cXG5uZXQvc21jL3NtY19sbGMuYzoxOTE1OlxcdFxcdFxcdFxcdHNtY19sbGNfZmxvd19xZW50cnlfZGVsKFxcdTAwMjZsZ3ItXFx1MDAzZWxsY19mbG93X2xjbCk7XFxubmV0L3NtYy9zbWNfbGxjLmMtMTkxNi1cXHRcXHRcXHRcXHRsZ3ItXFx1MDAzZWxsY19mbG93X2xjbC50eXBlID0gU01DX0xMQ19GTE9XX0FERF9MSU5LO1xcbi0tXFxubmV0L3NtYy9zbWNfbGxjLmM9MjIyMj1pbnQgc21jX2xsY19kb19jb25maXJtX3JrZXkoc3RydWN0IHNtY19saW5rICpzZW5kX2xpbmssXFxuLS1cXG5uZXQvc21jL3NtY19sbGMuYy0yMjM4LVxcdGlmIChxZW50cnkpXFxubmV0L3NtYy9zbWNfbGxjLmM6MjIzOTpcXHRcXHRzbWNfbGxjX2Zsb3dfcWVudHJ5X2RlbChcXHUwMDI2bGdyLVxcdTAwM2VsbGNfZmxvd19sY2wpO1xcbm5ldC9zbWMvc21jX2xsYy5jLTIyNDAtXFx0cmV0dXJuIHJjO1xcbi0tXFxubmV0L3NtYy9zbWNfbGxjLmM9MjI0ND1pbnQgc21jX2xsY19kb19kZWxldGVfcmtleShzdHJ1Y3Qgc21jX2xpbmtfZ3JvdXAgKmxncixcXG4tLVxcbm5ldC9zbWMvc21jX2xsYy5jLTIyNjUtXFx0aWYgKHFlbnRyeSlcXG5uZXQvc21jL3NtY19sbGMuYzoyMjY2OlxcdFxcdHNtY19sbGNfZmxvd19xZW50cnlfZGVsKFxcdTAwMjZsZ3ItXFx1MDAzZWxsY19mbG93X2xjbCk7XFxubmV0L3NtYy9zbWNfbGxjLmMtMjI2Ny1cXHRyZXR1cm4gcmM7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE4VDA3OjUxOjM3LjI0MjkwOTg4WiIsIlNlcSI6NDMsIk5lc3RpbmciOjMsIlR5cGUiOiJsbG0iLCJOYW1lIjoia21zYW4tZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQzNjAwODg4OTEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aGF0LlxuXG4qKk1lbW9yeSBMZWFrIEZpeDogQSBTdHJhaWdodGZvcndhcmQgQ29ycmVjdGlvbioqXG5cbkFscmlnaHQsIHNvIHRoZSBwYXRjaCBpcyBhZGRyZXNzaW5nIGEgbWVtb3J5IGxlYWsuIEVzc2VudGlhbGx5LCB3aGVuIHRoZSBzZXJ2ZXIga2lja3Mgb2ZmIGl0cyBgYWRkX2xpbmtgIHByb2Nlc3NpbmcsIHdlJ3JlIG5vdyBjYWxsaW5nIGBzbWNfbGxjX2Zsb3dfcWVudHJ5X2RlbGAuIFRoaXMgZnVuY3Rpb24gaXMgY3JpdGljYWwgYmVjYXVzZSBpdCBoYW5kbGVzIGZyZWVpbmcgYSBgcWVudHJ5YCB0aGF0IHdhcyBwcmV2aW91c2x5IHN0YXNoZWQgYXdheS4gSXQncyBhIGNsZWFuLXVwIHN0ZXAsIHByZXZlbnRpbmcgdGhhdCBvYmplY3QgZnJvbSBsaW5nZXJpbmcgYW5kIGdvYmJsaW5nIHVwIG1lbW9yeSB3ZSBubyBsb25nZXIgbmVlZC4gVGhpcyBpcyB0aGUgZml4LlxuXG5UaGUga2V5IHRoaW5nIGlzLCB0aGlzIGZpeCBzcGVjaWZpY2FsbHkgYWRkcmVzc2VzIGEgbGVhay4gVGhlcmUncyBubyByaXNrIG9mIGV4cG9zaW5nIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IGJlY2F1c2Ugb2YgdGhpcyBjaGFuZ2U7IHdlJ3JlIGp1c3QgbWFuYWdpbmcgd2hhdCB3ZSAqZG8qIGhhdmUgYmV0dGVyLiBGcmFua2x5LCBJJ20gY29uZmlkZW50IHRoYXQgb3VyIGV4aXN0aW5nIHRvb2xzLCBLQVNBTiBhbmQgS01FTUxFQUssIGFyZSBwZXJmZWN0bHkgc3VmZmljaWVudCBmb3IgZGV0ZWN0aW5nIG1lbW9yeSBsZWFrcyBhbmQgdGhvc2UgbmFzdHkgdXNlLWFmdGVyLWZyZWUgYnVncy4gTm8gbmVlZCBmb3IgS01TQU4gaGVyZTsgd2UncmUgZ29vZC4gVGhpcyBrZWVwcyB0aGluZ3MgbGVhbiBhbmQgZm9jdXNlZC5cblxuXG4iLCJJbnB1dFRva2VucyI6NTY1NSwiT3V0cHV0VG9rZW5zIjoxMTYsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo4OSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xOFQwNzo1MTo0MS42MDMwMDE5ODFaIiwiU2VxIjo0NCwiTmVzdGluZyI6MywiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNzI4MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGZpeGVzIGEgbWVtb3J5IGxlYWsgYnkgZnJlZWluZyBhIHN0YXNoZWQgYHFlbnRyeWAgaW4gYHNtY19sbGNfZXZlbnRfaGFuZGxlcmAgd2hlbiB0aGUgc2VydmVyIHN0YXJ0cyBgYWRkX2xpbmtgIHByb2Nlc3NpbmcuIEl0IGRvZXMgbm90IGludHJvZHVjZSBvciBleHBvc2UgYW55IHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHJpc2tzIG9yIGluZm8tbGVha3MuIE1lbW9yeSBsZWFrcyBhbmQgdXNlLWFmdGVyLWZyZWUgYnVncyBhcmUgZWZmZWN0aXZlbHkgZGV0ZWN0ZWQgYnkgS01FTUxFQUsgYW5kIEtBU0FOLiBUaGVyZWZvcmUsIGEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpcyBub3QgcmVxdWlyZWQuXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggZml4ZXMgYSBtZW1vcnkgbGVhayBieSBmcmVlaW5nIGEgc3Rhc2hlZCBgcWVudHJ5YCBpbiBgc21jX2xsY19ldmVudF9oYW5kbGVyYCB3aGVuIHRoZSBzZXJ2ZXIgc3RhcnRzIGBhZGRfbGlua2AgcHJvY2Vzc2luZy4gSXQgZG9lcyBub3QgaW50cm9kdWNlIG9yIGV4cG9zZSBhbnkgdW5pbml0aWFsaXplZCBtZW1vcnkgcmlza3Mgb3IgaW5mby1sZWFrcy4gTWVtb3J5IGxlYWtzIGFuZCB1c2UtYWZ0ZXItZnJlZSBidWdzIGFyZSBlZmZlY3RpdmVseSBkZXRlY3RlZCBieSBLTUVNTEVBSyBhbmQgS0FTQU4uIFRoZXJlZm9yZSwgYSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGlzIG5vdCByZXF1aXJlZC5cIixcbiAgXCJOZWVkc0tNU0FOXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+IHsKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOyAKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iKSB7CgkJCQkJc3RhdHMubGxtLmNvdW50Kys7CgkJCQkJc3RhdHMubGxtLnRva2VucyArPSAocy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2Vucyk7CgkJCQkJc3RhdHMubGxtLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0gZWxzZSBpZiAocy5UeXBlID09PSAidG9vbCIpIHsKCQkJCQlzdGF0cy50b29sLmNvdW50Kys7CgkJCQkJc3RhdHMudG9vbC5kdXJhdGlvbiArPSBkdXI7CgkJCQl9CgkJCX0pOwoKCQkJY29uc3QgYXZnTGxtRHVyID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0uZHVyYXRpb24gLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdMbG1Ub2tlbiA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLnRva2VucyAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z1Rvb2xEdXIgPSBzdGF0cy50b29sLmNvdW50ID4gMCA/IChzdGF0cy50b29sLmR1cmF0aW9uIC8gc3RhdHMudG9vbC5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgoJCQljb25zdCBsbG1TdW1hcnlDZWxscyA9IFtzdGF0cy5sbG0uY291bnQsIHN0YXRzLmxsbS50b2tlbnMsIGF2Z0xsbVRva2VuLCBzdGF0cy5sbG0uZHVyYXRpb24sIGF2Z0xsbUR1cl07CgkJCWNvbnN0IHRvb2xTdW1tYXJ5Q2VsbHMgPSBbc3RhdHMudG9vbC5jb3VudCwgc3RhdHMudG9vbC5kdXJhdGlvbiwgYXZnVG9vbER1cl07CgoJCQljb25zdCBsbG1TdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdsbG1fc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCWxsbVN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCBsbG1UciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCWxsbVN1bWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQlsbG1Uci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQlsbG1TdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZChsbG1Ucik7CgoJCQljb25zdCB0b29sU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJdG9vbFN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCB0b29sVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQl0b29sU3VtbWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQl0b29sVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJdG9vbFN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKHRvb2xUcik7CgkJfQoKCQlmdW5jdGlvbiBkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGZpbHRlcmVkU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IFsibGxtIiwgInRvb2wiXS5pbmNsdWRlcyhkLlR5cGUpKTsKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnRHVyYXRpb24nKTsKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsgCgoJCQlmaWx0ZXJlZFN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQkKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOwoJCQkJbGV0IHRvb2x0aXAgPSBzLk5hbWU7CgkJCQlpZiAocy5UeXBlID09PSAibGxtIiAmJiBzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgkJCQlkYXRhLmFkZFJvdyhbYCR7cy5TZXF9YCwgZHVyLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVGltZSBDb25zdW1wdGlvbiBvZiBMTE0vVG9vbCBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNL1Rvb2wgU3RlcHMnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnU2Vjb25kcycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZHVyYXRpb25fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGxsbVN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBkLlR5cGUgPT09ICJsbG0iKTsKCQkJaWYgKGxsbVN0ZXBzLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnVG9rZW5zJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3N0eWxlJ30pOwkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsJCgoJCQljb25zdCBhZ2VudENvbG9ycyA9IHt9OwoJCQljb25zdCBwYWxldHRlID0gWycjNDI4NUY0JywgJyNEQjQ0MzcnLCAnI0Y0QjQwMCcsICcjMEY5RDU4JywgJyNBQjQ3QkMnLCAnIzAwQUNDMSddOwoJCQlsZXQgY29sb3JJZHggPSAwOwoJCQljb25zdCBhZ2VudExMTUNvdW50cyA9IHt9OwoJCQlsbG1TdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJaWYgKCFhZ2VudENvbG9yc1tzLk5hbWVdKSB7CgkJCQkJYWdlbnRDb2xvcnNbcy5OYW1lXSA9IHBhbGV0dGVbY29sb3JJZHggJSBwYWxldHRlLmxlbmd0aF07CgkJCQkJY29sb3JJZHgrKzsKCQkJCX0KCgkJCQlhZ2VudExMTUNvdW50c1tzLk5hbWVdID0gKGFnZW50TExNQ291bnRzW3MuTmFtZV0gfHwgMCkgKyAxOwoJCQkJY29uc3QgbGFiZWwgPSBgJHtzLk5hbWV9LSR7YWdlbnRMTE1Db3VudHNbcy5OYW1lXX1gOwoJCQkJY29uc3QgdG90YWxUb2tlbnMgPSBzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zOwoJCQkJY29uc3Qgc3R5bGUgPSBgY29sb3I6ICR7YWdlbnRDb2xvcnNbcy5OYW1lXX1gOwoJCQkJbGV0IHRvb2x0aXAgPSBgVG90YWwgVG9rZW5zOiAke3RvdGFsVG9rZW5zfVxuKEluOiAke3MuSW5wdXRUb2tlbnN9LCBPdXQ6ICR7cy5PdXRwdXRUb2tlbnN9LCBUaG91Z2h0czogJHtzLk91dHB1dFRob3VnaHRzVG9rZW5zfSlgOwoJCQkJaWYgKHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCgkJCQlkYXRhLmFkZFJvdyhbbGFiZWwsIHRvdGFsVG9rZW5zLCBzdHlsZSwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1Rva2VuIENvbnN1bXB0aW9uIGJ5IExMTSBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNIENhbGwgU2VxdWVuY2UnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnQ29uc3VtZWQgVG9rZW5zJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b2tlbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoJCWxldCBhbGxFeHBhbmRlZCA9IGZhbHNlOwoJCWZ1bmN0aW9uIHRvZ2dsZUFsbERldGFpbHMoKSB7CgkJCWFsbEV4cGFuZGVkID0gIWFsbEV4cGFuZGVkOwoJCQlkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdkZXRhaWxzJykuZm9yRWFjaChkID0+IHsKCQkJCWlmIChhbGxFeHBhbmRlZCkgZC5zZXRBdHRyaWJ1dGUoJ29wZW4nLCAnJyk7CgkJCQllbHNlIGQucmVtb3ZlQXR0cmlidXRlKCdvcGVuJyk7CgkJCX0pOwoJCX0KCTwvc2NyaXB0PgoKCjwvYm9keT4KPC9odG1sPgo=" },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-workflowxt9qt[0].run-triage(0) Phase: Succeeded StartedAt: 2026-08-18 07:48:52 +0000 UTC FinishedAt: 2026-08-18 07:51:42 +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": "24ef02f934eeb48830cff6b739abc3c62b1d107b", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "SMC", "INFINIBAND", "DIBS", "DIBS_LO" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "net", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git", "commit_hash": "24ef02f934eeb48830cff6b739abc3c62b1d107b", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "SMC", "INFINIBAND", "DIBS", "DIBS_LO" ], "series_id": "3fe04b91-b516-4048-84ba-c8b3f2bb7af5" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "smc_llc_srv_add_link", "smc_llc_cli_add_link", "smc_llc_add_link_local" ], "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+CgkJCTx0ZD4yMDI2LzA4LzE4IDA3OjUwPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1NNQyYjMzQ7LAogICAgJiMzNDtJTkZJTklCQU5EJiMzNDssCiAgICAmIzM0O0RJQlMmIzM0OywKICAgICYjMzQ7RElCU19MTyYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O3NtY19sbGNfc3J2X2FkZF9saW5rJiMzNDssCiAgICAmIzM0O3NtY19sbGNfY2xpX2FkZF9saW5rJiMzNDssCiAgICAmIzM0O3NtY19sbGNfYWRkX2xpbmtfbG9jYWwmIzM0OwogIF0sCiAgJiMzNDtLTVNBTlJlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmaXhlcyBhIG1lbW9yeSBsZWFrIGJ5IGZyZWVpbmcgYSBzdGFzaGVkIGBxZW50cnlgIGluIGBzbWNfbGxjX2V2ZW50X2hhbmRsZXJgIHdoZW4gdGhlIHNlcnZlciBzdGFydHMgYGFkZF9saW5rYCBwcm9jZXNzaW5nLiBJdCBkb2VzIG5vdCBpbnRyb2R1Y2Ugb3IgZXhwb3NlIGFueSB1bmluaXRpYWxpemVkIG1lbW9yeSByaXNrcyBvciBpbmZvLWxlYWtzLiBNZW1vcnkgbGVha3MgYW5kIHVzZS1hZnRlci1mcmVlIGJ1Z3MgYXJlIGVmZmVjdGl2ZWx5IGRldGVjdGVkIGJ5IEtNRU1MRUFLIGFuZCBLQVNBTi4gVGhlcmVmb3JlLCBhIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaXMgbm90IHJlcXVpcmVkLiYjMzQ7LAogICYjMzQ7TmVlZHNLTVNBTiYjMzQ7OiBmYWxzZSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmaXhlcyBhIG1lbW9yeSBsZWFrIGluIHRoZSBTTUMgTExDIGV2ZW50IGhhbmRsZXIgYnkgZXhwbGljaXRseSBmcmVlaW5nIHRoZSBzdGFzaGVkIHFlbnRyeSB3aGVuIHRyYW5zaXRpb25pbmcgZnJvbSB0aGUgUkVRX0FERF9MSU5LIHN0YXRlIHRvIHRoZSBBRERfTElOSyBzdGF0ZS4gVGhpcyBpcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMgZm9yIHRoZSBTTUMgcHJvdG9jb2wuIEZ1enppbmcgc2hvdWxkIGZvY3VzIG9uIHRoZSBhZGRfbGluayBmbG93IGluaXRpYXRpb24gYW5kIHByb2Nlc3NpbmcgZnVuY3Rpb25zLiBESUJTIGFuZCBESUJTX0xPIGFyZSByZXF1aXJlZCB0byBlbmFibGUgbG9jYWwgbG9vcGJhY2sgdGVzdGluZyBvZiBTTUMgb3ZlciBlbXVsYXRlZCBSRE1BLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE4IDA3OjUwPC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgNzVjOGExZTBjY2Q3YThlMjA1NGJkMzZhNzliMDljODU5ODAzM2Y4NVxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBUdWUgQXVnIDE4IDA3OjUwOjAwIDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL25ldC9zbWMvc21jX2xsYy5jIGIvbmV0L3NtYy9zbWNfbGxjLmNcbmluZGV4IGFhNmQ4M2FmNTVlZGEuLmM3ZjAyMjJhZmY4ZDAgMTAwNjQ0XG4tLS0gYS9uZXQvc21jL3NtY19sbGMuY1xuJiM0MzsmIzQzOyYjNDM7IGIvbmV0L3NtYy9zbWNfbGxjLmNcbkBAIC0xOTExLDYgJiM0MzsxOTExLDggQEAgc3RhdGljIHZvaWQgc21jX2xsY19ldmVudF9oYW5kbGVyKHN0cnVjdCBzbWNfbGxjX3FlbnRyeSAqcWVudHJ5KVxuIFx0XHRcdGlmIChsZ3ItXHUwMDNlbGxjX2Zsb3dfbGNsLnR5cGUgPT1cbiBcdFx0XHRcdFx0U01DX0xMQ19GTE9XX1JFUV9BRERfTElOSykge1xuIFx0XHRcdFx0Lyogc2VydmVyIHN0YXJ0ZWQgYWRkX2xpbmsgcHJvY2Vzc2luZyAqL1xuJiM0MztcdFx0XHRcdC8qIGZyZWUgYW55IHFlbnRyeSBzdGFzaGVkIGluIFJFUV9BRERfTElOSyBzdGF0ZSAqL1xuJiM0MztcdFx0XHRcdHNtY19sbGNfZmxvd19xZW50cnlfZGVsKFx1MDAyNmxnci1cdTAwM2VsbGNfZmxvd19sY2wpO1xuIFx0XHRcdFx0bGdyLVx1MDAzZWxsY19mbG93X2xjbC50eXBlID0gU01DX0xMQ19GTE9XX0FERF9MSU5LO1xuIFx0XHRcdFx0c21jX2xsY19mbG93X3FlbnRyeV9zZXQoXHUwMDI2bGdyLVx1MDAzZWxsY19mbG93X2xjbCxcbiBcdFx0XHRcdFx0XHRcdHFlbnRyeSk7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTggMDc6NTA8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+YmVzdC1leHBlbnNpdmU8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1NNQyYjMzQ7LAogICAgJiMzNDtJTkZJTklCQU5EJiMzNDssCiAgICAmIzM0O0RJQlMmIzM0OywKICAgICYjMzQ7RElCU19MTyYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O3NtY19sbGNfc3J2X2FkZF9saW5rJiMzNDssCiAgICAmIzM0O3NtY19sbGNfY2xpX2FkZF9saW5rJiMzNDssCiAgICAmIzM0O3NtY19sbGNfYWRkX2xpbmtfbG9jYWwmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggZml4ZXMgYSBtZW1vcnkgbGVhayBpbiB0aGUgU01DIExMQyBldmVudCBoYW5kbGVyIGJ5IGV4cGxpY2l0bHkgZnJlZWluZyB0aGUgc3Rhc2hlZCBxZW50cnkgd2hlbiB0cmFuc2l0aW9uaW5nIGZyb20gdGhlIFJFUV9BRERfTElOSyBzdGF0ZSB0byB0aGUgQUREX0xJTksgc3RhdGUuIFRoaXMgaXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljIGZvciB0aGUgU01DIHByb3RvY29sLiBGdXp6aW5nIHNob3VsZCBmb2N1cyBvbiB0aGUgYWRkX2xpbmsgZmxvdyBpbml0aWF0aW9uIGFuZCBwcm9jZXNzaW5nIGZ1bmN0aW9ucy4gRElCUyBhbmQgRElCU19MTyBhcmUgcmVxdWlyZWQgdG8gZW5hYmxlIGxvY2FsIGxvb3BiYWNrIHRlc3Rpbmcgb2YgU01DIG92ZXIgZW11bGF0ZWQgUkRNQS4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lCmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHkKdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy4KClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6Ci0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy4KLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy4KLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuCi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLAogIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCwKICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS4KLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKQogIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9ucwogICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS4KMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuCiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KICAgQWxzbyBjaGVjayAmIzM0O2RlcGVuZHMgb24mIzM0OyBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3MKICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzCiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IDc1YzhhMWUwY2NkN2E4ZTIwNTRiZDM2YTc5YjA5Yzg1OTgwMzNmODUKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgVHVlIEF1ZyAxOCAwNzo1MDowMCAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL25ldC9zbWMvc21jX2xsYy5jIGIvbmV0L3NtYy9zbWNfbGxjLmMKaW5kZXggYWE2ZDgzYWY1NWVkYS4uYzdmMDIyMmFmZjhkMCAxMDA2NDQKLS0tIGEvbmV0L3NtYy9zbWNfbGxjLmMKJiM0MzsmIzQzOyYjNDM7IGIvbmV0L3NtYy9zbWNfbGxjLmMKQEAgLTE5MTEsNiAmIzQzOzE5MTEsOCBAQCBzdGF0aWMgdm9pZCBzbWNfbGxjX2V2ZW50X2hhbmRsZXIoc3RydWN0IHNtY19sbGNfcWVudHJ5ICpxZW50cnkpCiAJCQlpZiAobGdyLSZndDtsbGNfZmxvd19sY2wudHlwZSA9PQogCQkJCQlTTUNfTExDX0ZMT1dfUkVRX0FERF9MSU5LKSB7CiAJCQkJLyogc2VydmVyIHN0YXJ0ZWQgYWRkX2xpbmsgcHJvY2Vzc2luZyAqLwomIzQzOwkJCQkvKiBmcmVlIGFueSBxZW50cnkgc3Rhc2hlZCBpbiBSRVFfQUREX0xJTksgc3RhdGUgKi8KJiM0MzsJCQkJc21jX2xsY19mbG93X3FlbnRyeV9kZWwoJmFtcDtsZ3ItJmd0O2xsY19mbG93X2xjbCk7CiAJCQkJbGdyLSZndDtsbGNfZmxvd19sY2wudHlwZSA9IFNNQ19MTENfRkxPV19BRERfTElOSzsKIAkJCQlzbWNfbGxjX2Zsb3dfcWVudHJ5X3NldCgmYW1wO2xnci0mZ3Q7bGxjX2Zsb3dfbGNsLAogCQkJCQkJCXFlbnRyeSk7CjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE4IDA3OjUwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIwNjYKCQkJCQkJCW91dHB1dDogNDEKCQkJCQkJCXRob3VnaHRzOiAxMTkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIGEgTmV0d29ya2luZyBQYXRjaCoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgYSBwYXRjaCBmb3IgdGhlIFNNQyAoU2hhcmVkIE1lbW9yeSBDb21tdW5pY2F0aW9ucykgb3ZlciBMTEMgKExpbmsgTGF5ZXIgQ29udHJvbCkgY29kZSwgc3BlY2lmaWNhbGx5IGluIGBuZXQvc21jL3NtY19sbGMuY2AuIFRoZSBjb3JlIGNoYW5nZSBzZWVtcyB0byBiZSB3aXRoaW4gdGhlIGBzbWNfbGxjX2V2ZW50X2hhbmRsZXJgIGZ1bmN0aW9uLiBUaGUgcGF0Y2ggc3RyYXRlZ2ljYWxseSBpbnNlcnRzIGBzbWNfbGxjX2Zsb3dfcWVudHJ5X2RlbCgmYW1wO2xnci0mZ3Q7bGxjX2Zsb3dfbGNsKTtgIHJpZ2h0IGJlZm9yZSB0aGUgYXNzaWdubWVudCBgbGdyLSZndDtsbGNfZmxvd19sY2wudHlwZSA9IFNNQ19MTENfRkxPV19BRERfTElOSztgLiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdG8gZmlndXJlIG91dCB0aGUgcmVhc29uaW5nIGJlaGluZCB0aGlzIGFkZGl0aW9uLiBJdCBtYWtlcyBtZSB3YW50IHRvIGRpdmUgaW50byB0aGUgY29kZS4KCkkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBpbXBsaWNhdGlvbnMgb2YgcmVtb3ZpbmcgYSBxdWV1ZSBlbnRyeSAoYHNtY19sbGNfZmxvd19xZW50cnlfZGVsYCkgYmVmb3JlIGNoYW5naW5nIHRoZSBgdHlwZWAgb2YgYGxsY19mbG93X2xjbGAgdG8gYFNNQ19MTENfRkxPV19BRERfTElOS2AuIElzIHRoaXMgYSBjbGVhbnVwIG9wZXJhdGlvbj8gUHJldmVudGluZyBhIHBvdGVudGlhbCBkb3VibGUtZnJlZSBzY2VuYXJpbz8gT3IgbWF5YmUgaXQmIzM5O3MgYSBjcml0aWNhbCBzdGVwIGluIHRyYW5zaXRpb25pbmcgYmV0d2VlbiBmbG93IHN0YXRlcz8gSSBzaG91bGQgcmVhbGx5IGNoZWNrIHRoZSBmdW5jdGlvbiBpdHNlbGYgYW5kIHN1cnJvdW5kaW5nIGNvZGUgZm9yIHBvdGVudGlhbCBzaWRlIGVmZmVjdHMsIGFuZCBleGFtaW5lIHRoZSBzdHJ1Y3R1cmUgYGxsY19mbG93X2xjbGAgYW5kIGBsZ3JgIGluIG9yZGVyIHRvIHNlZSB3aGF0IHRoZSBpbXBhY3Qgb2YgdGhpcyBjaGFuZ2UgaXMgb24gdGhlIG92ZXJhbGwgc3lzdGVtLCBzbyBsZXQgbWUgZ2V0IHN0YXJ0ZWQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTggMDc6NTA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7c21jX2xsY19ldmVudF9oYW5kbGVyJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L3NtYy9zbWNfbGxjLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L3NtYy9zbWNfbGxjLmM9MTg2Mz1zdGF0aWMgdm9pZCBzbWNfbGxjX2V2ZW50X2ZsdXNoKHN0cnVjdCBzbWNfbGlua19ncm91cCAqbGdyKVxuLS1cbm5ldC9zbWMvc21jX2xsYy5jLTE4NzQtXG5uZXQvc21jL3NtY19sbGMuYzoxODc1OnN0YXRpYyB2b2lkIHNtY19sbGNfZXZlbnRfaGFuZGxlcihzdHJ1Y3Qgc21jX2xsY19xZW50cnkgKnFlbnRyeSlcbm5ldC9zbWMvc21jX2xsYy5jLTE4NzYte1xuLS1cbm5ldC9zbWMvc21jX2xsYy5jPTE5OTc9c3RhdGljIHZvaWQgc21jX2xsY19ldmVudF93b3JrKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaylcbi0tXG5uZXQvc21jL3NtY19sbGMuYy0yMDA2LVx0XHRpZiAoc21jX2xpbmtfdXNhYmxlKHFlbnRyeS1cdTAwM2VsaW5rKSlcbm5ldC9zbWMvc21jX2xsYy5jOjIwMDc6XHRcdFx0c21jX2xsY19ldmVudF9oYW5kbGVyKHFlbnRyeSk7XG5uZXQvc21jL3NtY19sbGMuYy0yMDA4LVx0XHRlbHNlXG4tLVxubmV0L3NtYy9zbWNfbGxjLmMtMjAxOC1cdFx0c3Bpbl91bmxvY2tfYmgoXHUwMDI2bGdyLVx1MDAzZWxsY19ldmVudF9xX2xvY2spO1xubmV0L3NtYy9zbWNfbGxjLmM6MjAxOTpcdFx0c21jX2xsY19ldmVudF9oYW5kbGVyKHFlbnRyeSk7XG5uZXQvc21jL3NtY19sbGMuYy0yMDIwLVx0XHRnb3RvIGFnYWluO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE4IDA3OjUwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI4ODAKCQkJCQkJCW91dHB1dDogNDEKCQkJCQkJCXRob3VnaHRzOiA2OAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBhIHN1bW1hcnkgb2YgbXkgdGhvdWdodCBwcm9jZXNzOgoKKipEaXZpbmcgaW50byB0aGUgU01DIExMQyBFdmVudCBIYW5kbGluZyoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhlIGBzbWNfbGxjX2V2ZW50X2hhbmRsZXJgIGZ1bmN0aW9uLiBUaGUgY29kZSB0ZWxscyBtZSBpdCYjMzk7cyBhIHN0YXRpYyBmdW5jdGlvbiwgcmVzaWRpbmcgd2l0aGluIGBuZXQvc21jL3NtY19sbGMuY2AuIFRoYXQmIzM5O3MgaW1wb3J0YW50IGZvciBjb250ZXh0IC0gSSBuZWVkIHRvIGtub3cgd2hlcmUgSSYjMzk7bSBsb29raW5nLiBUaGUgbmV4dCB0aGluZyB0aGF0IGxlYXBzIG91dCBpcyB0aGF0IGl0IGFwcGVhcnMgdG8gYmUgY2FsbGVkIGZyb20gYHNtY19sbGNfZXZlbnRfd29ya2AuIE5hdHVyYWxseSwgbXkgbWluZCBpbW1lZGlhdGVseSBqdW1wcyB0byAmIzM0O1doYXQgKmlzKiBgc21jX2xsY19ldmVudF93b3JrYD8mIzM0OyBUaGF0JiMzOTtzIHRoZSBuZXh0IGxvZ2ljYWwgc3RlcDsgSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGNhbGxpbmcgZnVuY3Rpb24gdG8gdHJ1bHkgdW5kZXJzdGFuZCB0aGUgY2FsbGVkIGZ1bmN0aW9uIGFuZCB0aGUgb3ZlcmFsbCBmbG93IG9mIGV2ZW50cy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xOCAwNzo1MDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtzbWNfbGxjX2V2ZW50X3dvcmsmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvc21jL3NtY19sbGMuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvc21jL3NtY19sbGMuYz0xODc1PXN0YXRpYyB2b2lkIHNtY19sbGNfZXZlbnRfaGFuZGxlcihzdHJ1Y3Qgc21jX2xsY19xZW50cnkgKnFlbnRyeSlcbi0tXG5uZXQvc21jL3NtY19sbGMuYy0xOTk2LS8qIHdvcmtlciB0byBwcm9jZXNzIGxsYyBtZXNzYWdlcyBvbiB0aGUgZXZlbnQgcXVldWUgKi9cbm5ldC9zbWMvc21jX2xsYy5jOjE5OTc6c3RhdGljIHZvaWQgc21jX2xsY19ldmVudF93b3JrKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaylcbm5ldC9zbWMvc21jX2xsYy5jLTE5OTgte1xuLS1cbm5ldC9zbWMvc21jX2xsYy5jPTIxNDk9dm9pZCBzbWNfbGxjX2xncl9pbml0KHN0cnVjdCBzbWNfbGlua19ncm91cCAqbGdyLCBzdHJ1Y3Qgc21jX3NvY2sgKnNtYylcbi0tXG5uZXQvc21jL3NtY19sbGMuYy0yMTUyLVxubmV0L3NtYy9zbWNfbGxjLmM6MjE1MzpcdElOSVRfV09SSyhcdTAwMjZsZ3ItXHUwMDNlbGxjX2V2ZW50X3dvcmssIHNtY19sbGNfZXZlbnRfd29yayk7XG5uZXQvc21jL3NtY19sbGMuYy0yMTU0LVx0SU5JVF9XT1JLKFx1MDAyNmxnci1cdTAwM2VsbGNfYWRkX2xpbmtfd29yaywgc21jX2xsY19hZGRfbGlua193b3JrKTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xOCAwNzo1MDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzNDY2CgkJCQkJCQlvdXRwdXQ6IDI5CgkJCQkJCQl0aG91Z2h0czogMjkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aGUgdGhvdWdodCBwcm9jZXNzLCBzdW1tYXJpemVkIGFzIHlvdSByZXF1ZXN0ZWQ6CgoqKk5hdmlnYXRpbmcgdGhlIFNNQyBLZXJuZWwgQ29kZSoqCgpPa2F5LCBzbyBJJiMzOTt2ZSBnb3QgdGhpcyBwYXRjaCB0byBkZWFsIHdpdGgsIGFuZCBpdCBsb29rcyBsaWtlIGl0JiMzOTtzIHdpdGhpbiB0aGUgU3lzdGVtIE1hbmFnZW1lbnQgQ29udHJvbGxlciAoU01DKSBjb2RlLiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdG8gemVybyBpbiBvbiB0aGUgZXhhY3QgbG9jYXRpb24gb2YgdGhlIGNoYW5nZS4gSXQgc2VlbXMgdGhlIGNvcmUgb2YgdGhlIHBhdGNoIGlzIGdvaW5nIHRvIGJlIGluIGBuZXQvc21jL3NtY19sbGMuY2AuIFRoYXTigJlzIHRoZSBmaXJzdCBwaWVjZSBvZiB0aGUgcHV6emxlLiBOb3csIHRvIHVuZGVyc3RhbmQgaG93IHRoaXMgZml0cyBpbnRvIHRoZSBicm9hZGVyIHBpY3R1cmUsIEkgbmVlZCB0byBjaGVjayB0aGUgY29uZmlndXJhdGlvbiBzZXR0aW5ncy4gVGltZSB0byBsb2NhdGUgdGhlIHJlbGV2YW50IEtjb25maWcgZmlsZSBmb3IgU01DLiBVbmRlcnN0YW5kaW5nIHRoZSBLY29uZmlnIG9wdGlvbnMgd2lsbCBnaXZlIG1lIHRoZSBjb250ZXh0IEkgbmVlZCB0byBhc3Nlc3MgdGhlIGltcGFjdCBvZiB0aGlzIHBhdGNoLiBMZXQmIzM5O3Mgc2VlIHdoYXQgdGhlIGNvbmZpZ3VyYXRpb24gZmxhZ3MgYXJlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE4IDA3OjUwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBTTUMmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvc21jL0tjb25maWcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L3NtYy9LY29uZmlnLTEtIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XG5uZXQvc21jL0tjb25maWc6Mjpjb25maWcgU01DXG5uZXQvc21jL0tjb25maWctMy1cdHRyaXN0YXRlIFwmIzM0O1NNQyBzb2NrZXQgcHJvdG9jb2wgZmFtaWx5XCYjMzQ7XG4tLVxubmV0L3NtYy9LY29uZmlnLTEzLVxubmV0L3NtYy9LY29uZmlnOjE0OmNvbmZpZyBTTUNfRElBR1xubmV0L3NtYy9LY29uZmlnLTE1LVx0dHJpc3RhdGUgXCYjMzQ7U01DOiBzb2NrZXQgbW9uaXRvcmluZyBpbnRlcmZhY2VcJiMzNDtcbi0tXG5uZXQvc21jL0tjb25maWctMjItXG5uZXQvc21jL0tjb25maWc6MjM6Y29uZmlnIFNNQ19IU19DVFJMX0JQRlxubmV0L3NtYy9LY29uZmlnLTI0LVx0Ym9vbCBcJiMzNDtHZW5lcmljIGVCUEYgaG9vayBmb3IgU01DIGhhbmRzaGFrZSBmbG93XCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTggMDc6NTA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzg3OQoJCQkJCQkJb3V0cHV0OiAzOAoJCQkJCQkJdGhvdWdodHM6IDcxCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IGFuYWx5c2lzIG9mIHRoZSBjb2RlLCBwcmVzZW50ZWQgYXMgbXkgaW50ZXJuYWwgdGhvdWdodCBwcm9jZXNzOgoKKipEaXZpbmcgaW50byB0aGUgU01DIExMQyBFdmVudCBIYW5kbGluZyoqCgpPa2F5LCB0aGUgY29uZmlndXJhdGlvbiBJJiMzOTttIGxvb2tpbmcgYXQgaXMgZm9yIGBTTUNgLiBJIG5lZWQgdG8gZmlndXJlIG91dCBob3cgdGhlIHN5c3RlbSBoYW5kbGVzIGV2ZW50cyB3aXRoaW4gdGhhdCBjb250ZXh0LCBzcGVjaWZpY2FsbHkgdGhlIGZ1bmN0aW9uIGBzbWNfbGxjX2V2ZW50X2hhbmRsZXJgLiBUaGUgZmFjdCB0aGF0IGl0JiMzOTtzIGBzdGF0aWNgIG1lYW5zIEkgbmVlZCB0byBodW50IGRvd24gdGhlIGNhbGwgc2l0ZXMuIExldCYjMzk7cyBzZWUuLi4gQWgsIHRoZXJlIGl0IGlzLCBgc21jX2xsY19ldmVudF93b3JrYCBpcyBhIHdvcmtxdWV1ZSBmdW5jdGlvbiwgbWVhbmluZyBpdCYjMzk7cyBsaWtlbHkgY2FsbGVkIGFzeW5jaHJvbm91c2x5LiBUaGF0IG5hcnJvd3MgdGhlIHRyaWdnZXJzIGRvd24gYSBiaXQuIE5vdywgd2hhdCYjMzk7cyBlbnF1ZXVpbmcgd29yayB0byB0aGF0IHNwZWNpZmljIHdvcmtxdWV1ZT8gSXQgc2VlbXMgbG9naWNhbCB0aGF0IGBzbWNfbGxjX2VucXVldWVgIHdvdWxkIGJlIHJlc3BvbnNpYmxlLiBJJiMzOTtsbCBuZWVkIHRvIHZlcmlmeSB0aGF0IGNhbGwsIGJ1dCB0aGlzIHNlZW1zIGxpa2UgdGhlIHN0YXJ0aW5nIHBvaW50IGZvciB1bmRlcnN0YW5kaW5nIHRoZSBldmVudCBwcm9jZXNzaW5nIGZsb3cuIFRoaXMgc2hvdWxkIGdldCBtZSB3aGVyZSBJIG5lZWQgdG8gZ28uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE4IDA3OjUwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2xsY19ldmVudF93b3JrJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L3NtYy9zbWNfbGxjLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L3NtYy9zbWNfbGxjLmM9MzIwPXZvaWQgc21jX2xsY19mbG93X3N0b3Aoc3RydWN0IHNtY19saW5rX2dyb3VwICpsZ3IsIHN0cnVjdCBzbWNfbGxjX2Zsb3cgKmZsb3cpXG4tLVxubmV0L3NtYy9zbWNfbGxjLmMtMzI3LVx0ICAgIGZsb3cgPT0gXHUwMDI2bGdyLVx1MDAzZWxsY19mbG93X2xjbClcbm5ldC9zbWMvc21jX2xsYy5jOjMyODpcdFx0c2NoZWR1bGVfd29yayhcdTAwMjZsZ3ItXHUwMDNlbGxjX2V2ZW50X3dvcmspO1xubmV0L3NtYy9zbWNfbGxjLmMtMzI5LVx0ZWxzZVxuLS1cbm5ldC9zbWMvc21jX2xsYy5jPTE4NzU9c3RhdGljIHZvaWQgc21jX2xsY19ldmVudF9oYW5kbGVyKHN0cnVjdCBzbWNfbGxjX3FlbnRyeSAqcWVudHJ5KVxuLS1cbm5ldC9zbWMvc21jX2xsYy5jLTE5OTYtLyogd29ya2VyIHRvIHByb2Nlc3MgbGxjIG1lc3NhZ2VzIG9uIHRoZSBldmVudCBxdWV1ZSAqL1xubmV0L3NtYy9zbWNfbGxjLmM6MTk5NzpzdGF0aWMgdm9pZCBzbWNfbGxjX2V2ZW50X3dvcmsoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxubmV0L3NtYy9zbWNfbGxjLmMtMTk5OC17XG5uZXQvc21jL3NtY19sbGMuYy0xOTk5LVx0c3RydWN0IHNtY19saW5rX2dyb3VwICpsZ3IgPSBjb250YWluZXJfb2Yod29yaywgc3RydWN0IHNtY19saW5rX2dyb3VwLFxubmV0L3NtYy9zbWNfbGxjLmM6MjAwMDpcdFx0XHRcdFx0XHQgIGxsY19ldmVudF93b3JrKTtcbm5ldC9zbWMvc21jX2xsYy5jLTIwMDEtXHRzdHJ1Y3Qgc21jX2xsY19xZW50cnkgKnFlbnRyeTtcbi0tXG5uZXQvc21jL3NtY19sbGMuYz0yMDY5PXN0YXRpYyB2b2lkIHNtY19sbGNfZW5xdWV1ZShzdHJ1Y3Qgc21jX2xpbmsgKmxpbmssIHVuaW9uIHNtY19sbGNfbXNnICpsbGMpXG4tLVxubmV0L3NtYy9zbWNfbGxjLmMtMjA5Mi1cdHNwaW5fdW5sb2NrX2lycXJlc3RvcmUoXHUwMDI2bGdyLVx1MDAzZWxsY19ldmVudF9xX2xvY2ssIGZsYWdzKTtcbm5ldC9zbWMvc21jX2xsYy5jOjIwOTM6XHRxdWV1ZV93b3JrKHN5c3RlbV9oaWdocHJpX3dxLCBcdTAwMjZsZ3ItXHUwMDNlbGxjX2V2ZW50X3dvcmspO1xubmV0L3NtYy9zbWNfbGxjLmMtMjA5NC19XG4tLVxubmV0L3NtYy9zbWNfbGxjLmM9MjE0OT12b2lkIHNtY19sbGNfbGdyX2luaXQoc3RydWN0IHNtY19saW5rX2dyb3VwICpsZ3IsIHN0cnVjdCBzbWNfc29jayAqc21jKVxuLS1cbm5ldC9zbWMvc21jX2xsYy5jLTIxNTItXG5uZXQvc21jL3NtY19sbGMuYzoyMTUzOlx0SU5JVF9XT1JLKFx1MDAyNmxnci1cdTAwM2VsbGNfZXZlbnRfd29yaywgc21jX2xsY19ldmVudF93b3JrKTtcbm5ldC9zbWMvc21jX2xsYy5jLTIxNTQtXHRJTklUX1dPUksoXHUwMDI2bGdyLVx1MDAzZWxsY19hZGRfbGlua193b3JrLCBzbWNfbGxjX2FkZF9saW5rX3dvcmspO1xuLS1cbm5ldC9zbWMvc21jX2xsYy5jPTIxNjg9dm9pZCBzbWNfbGxjX2xncl9jbGVhcihzdHJ1Y3Qgc21jX2xpbmtfZ3JvdXAgKmxncilcbi0tXG5uZXQvc21jL3NtY19sbGMuYy0yMTcyLVx0d2FrZV91cF9hbGwoXHUwMDI2bGdyLVx1MDAzZWxsY19tc2dfd2FpdGVyKTtcbm5ldC9zbWMvc21jX2xsYy5jOjIxNzM6XHRjYW5jZWxfd29ya19zeW5jKFx1MDAyNmxnci1cdTAwM2VsbGNfZXZlbnRfd29yayk7XG5uZXQvc21jL3NtY19sbGMuYy0yMTc0LVx0Y2FuY2VsX3dvcmtfc3luYyhcdTAwMjZsZ3ItXHUwMDNlbGxjX2FkZF9saW5rX3dvcmspO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjExLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xOCAwNzo1MDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1MDU5CgkJCQkJCQlvdXRwdXQ6IDM5CgkJCQkJCQl0aG91Z2h0czogMzYKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZToKCioqQW5hbHl6aW5nIHRoZSBMTEMgTWVzc2FnZSBFbnF1ZXVlIFBhdGgqKgoKQWxyaWdodCwgc28gYHNtY19sbGNfZW5xdWV1ZWAgaXMgdHJpZ2dlcmVkIHdoZW5ldmVyIHdlIGdldCBhbiBMTEMgbWVzc2FnZS4gTXkgZmlyc3QgaW5zdGluY3QsIGFzIGFsd2F5cywgaXMgdG8gZm9sbG93IHRoZSBkYXRhIGZsb3cuIFRoZSBpbW1lZGlhdGUgcXVlc3Rpb24gSSBoYXZlIGlzLCB3aGVyZSBleGFjdGx5ICppcyogYHNtY19sbGNfZW5xdWV1ZWAgY2FsbGVkIGZyb20/IEkgbmVlZCB0byB0cmFjZSBiYWNrIGZyb20gdGhhdCBwb2ludCB0byBmdWxseSB1bmRlcnN0YW5kIHRoZSBldmVudCYjMzk7cyBvcmlnaW4gYW5kIGNvbnRleHQuIExldCYjMzk7cyBkaWcgaW50byB0aGUgY2FsbCBzaXRlcyBhbmQgc2VlIHdoYXQgdXBzdHJlYW0gZnVuY3Rpb25zIG9yIGludGVycnVwdCBoYW5kbGVycyBhcmUgcmVzcG9uc2libGUgZm9yIGFjdHVhbGx5IHBsYWNpbmcgdGhlc2UgbWVzc2FnZXMgb24gdGhlIHF1ZXVlLiBLbm93aW5nIHRoaXMgd2lsbCBnaXZlIG1lIGEgcHJvcGVyIGhhbmRsZSBvbiB0aGUgb3ZlcmFsbCBtZXNzYWdlIHByb2Nlc3NpbmcgYXJjaGl0ZWN0dXJlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xOCAwNzo1MDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtzbWNfbGxjX2VucXVldWUmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvc21jL3NtY19sbGMuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvc21jL3NtY19sbGMuYz0xOTk9c3RydWN0IHNtY19sbGNfcWVudHJ5IHtcbi0tXG5uZXQvc21jL3NtY19sbGMuYy0yMDQtXG5uZXQvc21jL3NtY19sbGMuYzoyMDU6c3RhdGljIHZvaWQgc21jX2xsY19lbnF1ZXVlKHN0cnVjdCBzbWNfbGluayAqbGluaywgdW5pb24gc21jX2xsY19tc2cgKmxsYyk7XG5uZXQvc21jL3NtY19sbGMuYy0yMDYtXG4tLVxubmV0L3NtYy9zbWNfbGxjLmM9MTU0OD12b2lkIHNtY19sbGNfYWRkX2xpbmtfbG9jYWwoc3RydWN0IHNtY19saW5rICpsaW5rKVxuLS1cbm5ldC9zbWMvc21jX2xsYy5jLTE1NTQtXHQvKiBubyBkZXYgYW5kIHBvcnQgbmVlZGVkICovXG5uZXQvc21jL3NtY19sbGMuYzoxNTU1Olx0c21jX2xsY19lbnF1ZXVlKGxpbmssICh1bmlvbiBzbWNfbGxjX21zZyAqKVx1MDAyNmFkZF9sbGMpO1xubmV0L3NtYy9zbWNfbGxjLmMtMTU1Ni19XG4tLVxubmV0L3NtYy9zbWNfbGxjLmM9MTU4Mj12b2lkIHNtY19sbGNfc3J2X2RlbGV0ZV9saW5rX2xvY2FsKHN0cnVjdCBzbWNfbGluayAqbGluaywgdTggZGVsX2xpbmtfaWQpXG4tLVxubmV0L3NtYy9zbWNfbGxjLmMtMTU5MC1cdGRlbF9sbGMuaGQuZmxhZ3MgfD0gU01DX0xMQ19GTEFHX0RFTF9MSU5LX09SREVSTFk7XG5uZXQvc21jL3NtY19sbGMuYzoxNTkxOlx0c21jX2xsY19lbnF1ZXVlKGxpbmssICh1bmlvbiBzbWNfbGxjX21zZyAqKVx1MDAyNmRlbF9sbGMpO1xubmV0L3NtYy9zbWNfbGxjLmMtMTU5Mi19XG4tLVxubmV0L3NtYy9zbWNfbGxjLmM9MjAyNj1zdGF0aWMgdm9pZCBzbWNfbGxjX3J4X3Jlc3BvbnNlKHN0cnVjdCBzbWNfbGluayAqbGluayxcbi0tXG5uZXQvc21jL3NtY19sbGMuYy0yMDY4LVxubmV0L3NtYy9zbWNfbGxjLmM6MjA2OTpzdGF0aWMgdm9pZCBzbWNfbGxjX2VucXVldWUoc3RydWN0IHNtY19saW5rICpsaW5rLCB1bmlvbiBzbWNfbGxjX21zZyAqbGxjKVxubmV0L3NtYy9zbWNfbGxjLmMtMjA3MC17XG4tLVxubmV0L3NtYy9zbWNfbGxjLmM9MjA5Nz1zdGF0aWMgdm9pZCBzbWNfbGxjX3J4X2hhbmRsZXIoc3RydWN0IGliX3djICp3Yywgdm9pZCAqYnVmKVxuLS1cbm5ldC9zbWMvc21jX2xsYy5jLTIxMTEtXG5uZXQvc21jL3NtY19sbGMuYzoyMTEyOlx0c21jX2xsY19lbnF1ZXVlKGxpbmssIGxsYyk7XG5uZXQvc21jL3NtY19sbGMuYy0yMTEzLX1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTggMDc6NTA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNTk1MQoJCQkJCQkJb3V0cHV0OiA1NgoJCQkJCQkJdGhvdWdodHM6IDI1MgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBBc3Nlc3NtZW50IG9mIGBzbWNfbGxjX3J4X2hhbmRsZXJgIFZ1bG5lcmFiaWxpdHkqKgoKT2theSwgc28gYHNtY19sbGNfcnhfaGFuZGxlcmAgaXMgdGhlIHJlY2VpdmUgaGFuZGxlciBmb3IgTExDIG1lc3NhZ2VzLCB3aGljaCBtYWtlcyBpdCBhbiBpbXBvcnRhbnQgcGllY2Ugb2YgdGhlIElCIHJlY2VpdmUgaGFuZGxpbmcuIFNNQyB1c2VzIFJETUEgKFJvQ0UpIG9yIElTTSwgc28gd2UgYXJlIGRlYWxpbmcgd2l0aCBoaWdoLXBlcmZvcm1hbmNlIG5ldHdvcmtpbmcgaGVyZSwgd2hpY2ggdGVuZHMgdG8gYmUgYSB0YXJnZXQgZm9yIGZ1enppbmcuIFRoZSBpbW1lZGlhdGUgcXVlc3Rpb24gaXMsIGNhbiB0aGlzIGJlIGZ1enplZD8gU01DLCBhcyBJIHJlY2FsbCwgaXMgcmVhY2hhYmxlIHRocm91Z2ggQUZfU01DIHNvY2tldHMuIEV4Y2VsbGVudCwgbGV0JiMzOTtzIHNlZSBpZiBzeXprYWxsZXIgaXMgYWxyZWFkeSB0YXJnZXRpbmcgQUZfU01DLiBBaGEhIFllcywgc3l6a2FsbGVyIGRvZXMgZnV6eiBBRl9TTUMuIFRoYXQmIzM5O3MgYSBnb29kIHN0YXJ0aW5nIHBvaW50LgoKTm93LCB0aGUgY3J1Y2lhbCBxdWVzdGlvbjogY2FuIHdlIHJlYWNoIGBzbWNfbGxjX3J4X2hhbmRsZXJgIGRpcmVjdGx5IHRocm91Z2ggZnV6emluZz8gTExDIG1lc3NhZ2VzIGFyZSBleGNoYW5nZWQgYmV0d2VlbiBTTUMgcGVlcnMgb3ZlciB0aGUgUm9DRS9JU00gbGluay4gVGhlIHRyaWNrIGlzIHRvIHJlYWNoIHRoaXMgY29kZSB3aXRob3V0IGEgcGVlciwgb3IgYSBwZWVyIHdlIGNvbnRyb2wuIElmIHdlJiMzOTtyZSBzaW11bGF0aW5nIGEgcGVlciwgb3IgdXNpbmcgbG9vcGJhY2ssIHRoZW4gd2UgY2FuIHJlYWNoIHRoaXMgaGFuZGxlci4gV2FpdCwgc3l6a2FsbGVyIGlzIHNwZWNpZmljYWxseSBnb29kIGF0IGluamVjdGluZyBwYWNrZXRzIG9yIHVzaW5nIGxvb3BiYWNrLCB3aGljaCB3b3VsZCBhbGxvdyB1cyB0byBjcmFmdCBwYWNrZXRzIGFuZCBwb3RlbnRpYWxseSB0cmlnZ2VyIHRoZSBoYW5kbGVyLiBUaGlzIGlzIGRlZmluaXRlbHkgcHJvbWlzaW5nLgoKQXJlIHRoZXJlIGFueSBzcGVjaWZpYyBmdW5jdGlvbnMgd2l0aGluIHRoaXMgbW9kdWxlIHRoYXQgYXJlIHBhcnRpY3VsYXJseSByZWxldmFudCBvciBpbnRlcmVzdGluZyB0byB0YXJnZXQ/IGBzbWNfbGxjX2V2ZW50X2hhbmRsZXJgLCBgc21jX2xsY19ldmVudF93b3JrYCwgYW5kIGBzbWNfbGxjX3J4X2hhbmRsZXJgIGFyZSBhbGwgc3RhdGljLiBUaGF0JiMzOTtzIG5vdCBpZGVhbCwgYXMgdGhhdCBsaW1pdHMgZXh0ZXJuYWwgYWNjZXNzLCBidXQgbGV0JiMzOTtzIHNlZSwgd2hhdCBhcmUgdGhlIG5vbi1zdGF0aWMgZnVuY3Rpb25zIGF2YWlsYWJsZSBpbiB0aGlzIGFyZWE/IFdlIG5lZWQgdG8gbG9vayBpbiBgbmV0L3NtYy9zbWNfbGxjLmNgIHRvIHNlZSBpZiB0aGVyZSBhcmUgYW55IGV4cG9ydGVkIG9yIG5vbi1zdGF0aWMgZnVuY3Rpb25zIHRoYXQgbWlnaHQgYWN0IGFzIGVudHJ5IHBvaW50cyB0byB0cmlnZ2VyIGBzbWNfbGxjX3J4X2hhbmRsZXJgLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xOCAwNzo1MDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDteW2EtekEtWl9dW2EtekEtWjAtOV9dKiBzbWNfbGxjXyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9zbWMvc21jX2xsYy5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9zbWMvc21jX2xsYy5jLTIzLVxubmV0L3NtYy9zbWNfbGxjLmM6MjQ6c3RydWN0IHNtY19sbGNfaGRyIHtcbm5ldC9zbWMvc21jX2xsYy5jLTI1LVx0c3RydWN0IHNtY193cl9yeF9oZHIgY29tbW9uO1xuLS1cbm5ldC9zbWMvc21jX2xsYy5jLTQ2LVxubmV0L3NtYy9zbWNfbGxjLmM6NDc6c3RydWN0IHNtY19sbGNfbXNnX2NvbmZpcm1fbGluayB7XHQvKiB0eXBlIDB4MDEgKi9cbm5ldC9zbWMvc21jX2xsYy5jLTQ4LVx0c3RydWN0IHNtY19sbGNfaGRyIGhkO1xuLS1cbm5ldC9zbWMvc21jX2xsYy5jLTYxLVxubmV0L3NtYy9zbWNfbGxjLmM6NjI6c3RydWN0IHNtY19sbGNfbXNnX2FkZF9saW5rIHtcdFx0LyogdHlwZSAweDAyICovXG5uZXQvc21jL3NtY19sbGMuYy02My1cdHN0cnVjdCBzbWNfbGxjX2hkciBoZDtcbi0tXG5uZXQvc21jL3NtY19sbGMuYy03OS1cbm5ldC9zbWMvc21jX2xsYy5jOjgwOnN0cnVjdCBzbWNfbGxjX21zZ19hZGRfbGlua19jb250X3J0IHtcbm5ldC9zbWMvc21jX2xsYy5jLTgxLVx0X19iZTMyIHJtYl9rZXk7XG4tLVxubmV0L3NtYy9zbWNfbGxjLmMtODUtXG5uZXQvc21jL3NtY19sbGMuYzo4NjpzdHJ1Y3Qgc21jX2xsY19tc2dfYWRkX2xpbmtfdjJfZXh0IHtcbm5ldC9zbWMvc21jX2xsYy5jLTg3LSNpZiBkZWZpbmVkKF9fQklHX0VORElBTl9CSVRGSUVMRClcbi0tXG5uZXQvc21jL3NtY19sbGMuYy0xMDMtXG5uZXQvc21jL3NtY19sbGMuYzoxMDQ6c3RydWN0IHNtY19sbGNfbXNnX3JlcV9hZGRfbGlua192MiB7XG5uZXQvc21jL3NtY19sbGMuYy0xMDUtXHRzdHJ1Y3Qgc21jX2xsY19oZHIgaGQ7XG4tLVxubmV0L3NtYy9zbWNfbGxjLmMtMTEzLVxubmV0L3NtYy9zbWNfbGxjLmM6MTE0OnN0cnVjdCBzbWNfbGxjX21zZ19hZGRfbGlua19jb250IHtcdC8qIHR5cGUgMHgwMyAqL1xubmV0L3NtYy9zbWNfbGxjLmMtMTE1LVx0c3RydWN0IHNtY19sbGNfaGRyIGhkO1xuLS1cbm5ldC9zbWMvc21jX2xsYy5jLTEyNS1cbm5ldC9zbWMvc21jX2xsYy5jOjEyNjpzdHJ1Y3Qgc21jX2xsY19tc2dfZGVsX2xpbmsge1x0XHQvKiB0eXBlIDB4MDQgKi9cbm5ldC9zbWMvc21jX2xsYy5jLTEyNy1cdHN0cnVjdCBzbWNfbGxjX2hkciBoZDtcbi0tXG5uZXQvc21jL3NtY19sbGMuYy0xMzItXG5uZXQvc21jL3NtY19sbGMuYzoxMzM6c3RydWN0IHNtY19sbGNfbXNnX3Rlc3RfbGluayB7XHRcdC8qIHR5cGUgMHgwNyAqL1xubmV0L3NtYy9zbWNfbGxjLmMtMTM0LVx0c3RydWN0IHNtY19sbGNfaGRyIGhkO1xuLS1cbm5ldC9zbWMvc21jX2xsYy5jPTEzOT1zdHJ1Y3Qgc21jX3JtYl9ydG9rZW4ge1xuLS1cbm5ldC9zbWMvc21jX2xsYy5jLTE1Mi1cbm5ldC9zbWMvc21jX2xsYy5jOjE1MzpzdHJ1Y3Qgc21jX2xsY19tc2dfY29uZmlybV9ya2V5IHtcdC8qIHR5cGUgMHgwNiAqL1xubmV0L3NtYy9zbWNfbGxjLmMtMTU0LVx0c3RydWN0IHNtY19sbGNfaGRyIGhkO1xuLS1cbm5ldC9zbWMvc21jX2xsYy5jLTE2Mi1cbm5ldC9zbWMvc21jX2xsYy5jOjE2MzpzdHJ1Y3Qgc21jX2xsY19tc2dfZGVsZXRlX3JrZXkge1x0LyogdHlwZSAweDA5ICovXG5uZXQvc21jL3NtY19sbGMuYy0xNjQtXHRzdHJ1Y3Qgc21jX2xsY19oZHIgaGQ7XG4tLVxubmV0L3NtYy9zbWNfbGxjLmMtMTcxLVxubmV0L3NtYy9zbWNfbGxjLmM6MTcyOnN0cnVjdCBzbWNfbGxjX21zZ19kZWxldGVfcmtleV92MiB7XHQvKiB0eXBlIDB4MjkgKi9cbm5ldC9zbWMvc21jX2xsYy5jLTE3My1cdHN0cnVjdCBzbWNfbGxjX2hkciBoZDtcbi0tXG5uZXQvc21jL3NtY19sbGMuYy0xNzktXG5uZXQvc21jL3NtY19sbGMuYzoxODA6dW5pb24gc21jX2xsY19tc2cge1xubmV0L3NtYy9zbWNfbGxjLmMtMTgxLVx0c3RydWN0IHNtY19sbGNfbXNnX2NvbmZpcm1fbGluayBjb25maXJtX2xpbms7XG4tLVxubmV0L3NtYy9zbWNfbGxjLmMtMTk4LVxubmV0L3NtYy9zbWNfbGxjLmM6MTk5OnN0cnVjdCBzbWNfbGxjX3FlbnRyeSB7XG5uZXQvc21jL3NtY19sbGMuYy0yMDAtXHRzdHJ1Y3QgbGlzdF9oZWFkIGxpc3Q7XG4tLVxubmV0L3NtYy9zbWNfbGxjLmM9MjA1PXN0YXRpYyB2b2lkIHNtY19sbGNfZW5xdWV1ZShzdHJ1Y3Qgc21jX2xpbmsgKmxpbmssIHVuaW9uIHNtY19sbGNfbXNnICpsbGMpO1xubmV0L3NtYy9zbWNfbGxjLmMtMjA2LVxubmV0L3NtYy9zbWNfbGxjLmM6MjA3OnN0cnVjdCBzbWNfbGxjX3FlbnRyeSAqc21jX2xsY19mbG93X3FlbnRyeV9jbHIoc3RydWN0IHNtY19sbGNfZmxvdyAqZmxvdylcbm5ldC9zbWMvc21jX2xsYy5jLTIwOC17XG4tLVxubmV0L3NtYy9zbWNfbGxjLmMtMjE0LVxubmV0L3NtYy9zbWNfbGxjLmM6MjE1OnZvaWQgc21jX2xsY19mbG93X3FlbnRyeV9kZWwoc3RydWN0IHNtY19sbGNfZmxvdyAqZmxvdylcbm5ldC9zbWMvc21jX2xsYy5jLTIxNi17XG4tLVxubmV0L3NtYy9zbWNfbGxjLmM9MjU0PXN0YXRpYyBib29sIHNtY19sbGNfZmxvd19zdGFydChzdHJ1Y3Qgc21jX2xsY19mbG93ICpmbG93LFxuLS1cbm5ldC9zbWMvc21jX2xsYy5jLTI4NS0vKiBzdGFydCBhIG5ldyBsb2NhbCBsbGMgZmxvdywgd2FpdCB0aWxsIGN1cnJlbnQgZmxvdyBmaW5pc2hlZCAqL1xubmV0L3NtYy9zbWNfbGxjLmM6Mjg2OmludCBzbWNfbGxjX2Zsb3dfaW5pdGlhdGUoc3RydWN0IHNtY19saW5rX2dyb3VwICpsZ3IsXG5uZXQvc21jL3NtY19sbGMuYy0yODctXHRcdFx0ICBlbnVtIHNtY19sbGNfZmxvd3R5cGUgdHlwZSlcbi0tXG5uZXQvc21jL3NtY19sbGMuYy0zMTktLyogZmluaXNoIHRoZSBjdXJyZW50IGxsYyBmbG93ICovXG5uZXQvc21jL3NtY19sbGMuYzozMjA6dm9pZCBzbWNfbGxjX2Zsb3dfc3RvcChzdHJ1Y3Qgc21jX2xpbmtfZ3JvdXAgKmxnciwgc3RydWN0IHNtY19sbGNfZmxvdyAqZmxvdylcbm5ldC9zbWMvc21jX2xsYy5jLTMyMS17XG4tLVxubmV0L3NtYy9zbWNfbGxjLmMtMzM1LSAqL1xubmV0L3NtYy9zbWNfbGxjLmM6MzM2OnN0cnVjdCBzbWNfbGxjX3FlbnRyeSAqc21jX2xsY193YWl0KHN0cnVjdCBzbWNfbGlua19ncm91cCAqbGdyLFxubmV0L3NtYy9zbWNfbGxjLmMtMzM3LVx0XHRcdFx0ICAgIHN0cnVjdCBzbWNfbGluayAqbG5rLFxuLS1cbm5ldC9zbWMvc21jX2xsYy5jLTM3NS1cbm5ldC9zbWMvc21jX2xsYy5jOjM3NjpzdHJ1Y3Qgc21jX2xsY190eF9wZW5kIHtcbm5ldC9zbWMvc21jX2xsYy5jLTM3Ny19O1xuLS1cbm5ldC9zbWMvc21jX2xsYy5jPTQzND1zdGF0aWMgdm9pZCBzbWNfbGxjX2luaXRfbXNnX2hkcihzdHJ1Y3Qgc21jX2xsY19oZHIgKmhkcixcbi0tXG5uZXQvc21jL3NtY19sbGMuYy00NDYtLyogaGlnaC1sZXZlbCBBUEkgdG8gc2VuZCBMTEMgY29uZmlybSBsaW5rICovXG5uZXQvc21jL3NtY19sbGMuYzo0NDc6aW50IHNtY19sbGNfc2VuZF9jb25maXJtX2xpbmsoc3RydWN0IHNtY19saW5rICpsaW5rLFxubmV0L3NtYy9zbWNfbGxjLmMtNDQ4LVx0XHRcdCAgICAgIGVudW0gc21jX2xsY19yZXFyZXNwIHJlcXJlc3ApXG4tLVxubmV0L3NtYy9zbWNfbGxjLmM9NjAzPXN0YXRpYyBpbnQgc21jX2xsY19maWxsX2V4dF92MihzdHJ1Y3Qgc21jX2xsY19tc2dfYWRkX2xpbmtfdjJfZXh0ICpleHQsXG4tLVxubmV0L3NtYy9zbWNfbGxjLmMtNjQyLS8qIHNlbmQgQUREIExJTksgcmVxdWVzdCBvciByZXNwb25zZSAqL1xubmV0L3NtYy9zbWNfbGxjLmM6NjQzOmludCBzbWNfbGxjX3NlbmRfYWRkX2xpbmsoc3RydWN0IHNtY19saW5rICpsaW5rLCB1OCBtYWNbXSwgdTggZ2lkW10sXG5uZXQvc21jL3NtY19sbGMuYy02NDQtXHRcdFx0ICBzdHJ1Y3Qgc21jX2xpbmsgKmxpbmtfbmV3LFxuLS1cbm5ldC9zbWMvc21jX2xsYy5jLTcwMy0vKiBzZW5kIERFTEVURSBMSU5LIHJlcXVlc3Qgb3IgcmVzcG9uc2UgKi9cbm5ldC9zbWMvc21jX2xsYy5jOjcwNDppbnQgc21jX2xsY19zZW5kX2RlbGV0ZV9saW5rKHN0cnVjdCBzbWNfbGluayAqbGluaywgdTggbGlua19kZWxfaWQsXG5uZXQvc21jL3NtY19sbGMuYy03MDUtXHRcdFx0ICAgICBlbnVtIHNtY19sbGNfcmVxcmVzcCByZXFyZXNwLCBib29sIG9yZGVybHksXG4tLVxubmV0L3NtYy9zbWNfbGxjLmM9MTAyMD1zdGF0aWMgdm9pZCBzbWNfbGxjX3NhdmVfYWRkX2xpbmtfaW5mbyhzdHJ1Y3Qgc21jX2xpbmsgKmxpbmssXG4tLVxubmV0L3NtYy9zbWNfbGxjLmMtMTAzMC0vKiBhcyBhbiBTTUMgY2xpZW50LCBwcm9jZXNzIGFuIGFkZCBsaW5rIHJlcXVlc3QgKi9cbm5ldC9zbWMvc21jX2xsYy5jOjEwMzE6aW50IHNtY19sbGNfY2xpX2FkZF9saW5rKHN0cnVjdCBzbWNfbGluayAqbGluaywgc3RydWN0IHNtY19sbGNfcWVudHJ5ICpxZW50cnkpXG5uZXQvc21jL3NtY19sbGMuYy0xMDMyLXtcbi0tXG5uZXQvc21jL3NtY19sbGMuYz0xMzk3PXN0YXRpYyB2b2lkIHNtY19sbGNfc2VuZF9yZXFfYWRkX2xpbmtfcmVzcG9uc2Uoc3RydWN0IHNtY19sbGNfcWVudHJ5ICpxZW50cnkpXG4tLVxubmV0L3NtYy9zbWNfbGxjLmMtMTQwNS1cbm5ldC9zbWMvc21jX2xsYy5jOjE0MDY6aW50IHNtY19sbGNfc3J2X2FkZF9saW5rKHN0cnVjdCBzbWNfbGluayAqbGluayxcbm5ldC9zbWMvc21jX2xsYy5jLTE0MDctXHRcdFx0IHN0cnVjdCBzbWNfbGxjX3FlbnRyeSAqcmVxX3FlbnRyeSlcbi0tXG5uZXQvc21jL3NtY19sbGMuYz0xNTI5PXN0YXRpYyB2b2lkIHNtY19sbGNfcHJvY2Vzc19zcnZfYWRkX2xpbmsoc3RydWN0IHNtY19saW5rX2dyb3VwICpsZ3IpXG4tLVxubmV0L3NtYy9zbWNfbGxjLmMtMTU0Ny0vKiBlbnF1ZXVlIGEgbG9jYWwgYWRkX2xpbmsgcmVxIHRvIHRyaWdnZXIgYSBuZXcgYWRkX2xpbmsgZmxvdyAqL1xubmV0L3NtYy9zbWNfbGxjLmM6MTU0ODp2b2lkIHNtY19sbGNfYWRkX2xpbmtfbG9jYWwoc3RydWN0IHNtY19saW5rICpsaW5rKVxubmV0L3NtYy9zbWNfbGxjLmMtMTU0OS17XG4tLVxubmV0L3NtYy9zbWNfbGxjLmM9MTU1OT1zdGF0aWMgdm9pZCBzbWNfbGxjX2FkZF9saW5rX3dvcmsoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxuLS1cbm5ldC9zbWMvc21jX2xsYy5jLTE1ODEtICovXG5uZXQvc21jL3NtY19sbGMuYzoxNTgyOnZvaWQgc21jX2xsY19zcnZfZGVsZXRlX2xpbmtfbG9jYWwoc3RydWN0IHNtY19saW5rICpsaW5rLCB1OCBkZWxfbGlua19pZClcbm5ldC9zbWMvc21jX2xsYy5jLTE1ODMte1xuLS1cbm5ldC9zbWMvc21jX2xsYy5jPTE1OTQ9c3RhdGljIHZvaWQgc21jX2xsY19wcm9jZXNzX2NsaV9kZWxldGVfbGluayhzdHJ1Y3Qgc21jX2xpbmtfZ3JvdXAgKmxncilcbi0tXG5uZXQvc21jL3NtY19sbGMuYy0xNjUxLSAqL1xubmV0L3NtYy9zbWNfbGxjLmM6MTY1Mjp2b2lkIHNtY19sbGNfc2VuZF9saW5rX2RlbGV0ZV9hbGwoc3RydWN0IHNtY19saW5rX2dyb3VwICpsZ3IsIGJvb2wgb3JkLCB1MzIgcnNuKVxubmV0L3NtYy9zbWNfbGxjLmMtMTY1My17XG4tLVxubmV0L3NtYy9zbWNfbGxjLmM9MjExNz1zdGF0aWMgdm9pZCBzbWNfbGxjX3Rlc3RsaW5rX3dvcmsoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxuLS1cbm5ldC9zbWMvc21jX2xsYy5jLTIxNDgtXG5uZXQvc21jL3NtY19sbGMuYzoyMTQ5OnZvaWQgc21jX2xsY19sZ3JfaW5pdChzdHJ1Y3Qgc21jX2xpbmtfZ3JvdXAgKmxnciwgc3RydWN0IHNtY19zb2NrICpzbWMpXG5uZXQvc21jL3NtY19sbGMuYy0yMTUwLXtcbi0tXG5uZXQvc21jL3NtY19sbGMuYy0yMTY3LS8qIGNhbGxlZCBhZnRlciBsZ3Igd2FzIHJlbW92ZWQgZnJvbSBsZ3JfbGlzdCAqL1xubmV0L3NtYy9zbWNfbGxjLmM6MjE2ODp2b2lkIHNtY19sbGNfbGdyX2NsZWFyKHN0cnVjdCBzbWNfbGlua19ncm91cCAqbGdyKVxubmV0L3NtYy9zbWNfbGxjLmMtMjE2OS17XG4tLVxubmV0L3NtYy9zbWNfbGxjLmMtMjE4MS1cbm5ldC9zbWMvc21jX2xsYy5jOjIxODI6aW50IHNtY19sbGNfbGlua19pbml0KHN0cnVjdCBzbWNfbGluayAqbGluaylcbm5ldC9zbWMvc21jX2xsYy5jLTIxODMte1xuLS1cbm5ldC9zbWMvc21jX2xsYy5jLTIxODgtXG5uZXQvc21jL3NtY19sbGMuYzoyMTg5OnZvaWQgc21jX2xsY19saW5rX2FjdGl2ZShzdHJ1Y3Qgc21jX2xpbmsgKmxpbmspXG5uZXQvc21jL3NtY19sbGMuYy0yMTkwLXtcbi0tXG5uZXQvc21jL3NtY19sbGMuYy0yMjA2LS8qIGNhbGxlZCBpbiB3b3JrZXIgY29udGV4dCAqL1xubmV0L3NtYy9zbWNfbGxjLmM6MjIwNzp2b2lkIHNtY19sbGNfbGlua19jbGVhcihzdHJ1Y3Qgc21jX2xpbmsgKmxpbmssIGJvb2wgbG9nKVxubmV0L3NtYy9zbWNfbGxjLmMtMjIwOC17XG4tLVxubmV0L3NtYy9zbWNfbGxjLmMtMjIyMS0vKiByZWdpc3RlciBhIG5ldyBydG9rZW4gYXQgdGhlIHJlbW90ZSBwZWVyIChmb3IgYWxsIGxpbmtzKSAqL1xubmV0L3NtYy9zbWNfbGxjLmM6MjIyMjppbnQgc21jX2xsY19kb19jb25maXJtX3JrZXkoc3RydWN0IHNtY19saW5rICpzZW5kX2xpbmssXG5uZXQvc21jL3NtY19sbGMuYy0yMjIzLVx0XHRcdCAgICBzdHJ1Y3Qgc21jX2J1Zl9kZXNjICpybWJfZGVzYylcbi0tXG5uZXQvc21jL3NtY19sbGMuYy0yMjQzLS8qIHVucmVnaXN0ZXIgYW4gcnRva2VuIGF0IHRoZSByZW1vdGUgcGVlciAqL1xubmV0L3NtYy9zbWNfbGxjLmM6MjI0NDppbnQgc21jX2xsY19kb19kZWxldGVfcmtleShzdHJ1Y3Qgc21jX2xpbmtfZ3JvdXAgKmxncixcbm5ldC9zbWMvc21jX2xsYy5jLTIyNDUtXHRcdFx0ICAgc3RydWN0IHNtY19idWZfZGVzYyAqcm1iX2Rlc2MpXG4tLVxubmV0L3NtYy9zbWNfbGxjLmMtMjI2OS1cbm5ldC9zbWMvc21jX2xsYy5jOjIyNzA6dm9pZCBzbWNfbGxjX2xpbmtfc2V0X3VpZChzdHJ1Y3Qgc21jX2xpbmsgKmxpbmspXG5uZXQvc21jL3NtY19sbGMuYy0yMjcxLXtcbi0tXG5uZXQvc21jL3NtY19sbGMuYy0yMjc4LS8qIHNhdmUgcGVlcnMgbGluayB1c2VyIGlkLCB1c2VkIGZvciBkZWJ1ZyBwdXJwb3NlcyAqL1xubmV0L3NtYy9zbWNfbGxjLmM6MjI3OTp2b2lkIHNtY19sbGNfc2F2ZV9wZWVyX3VpZChzdHJ1Y3Qgc21jX2xsY19xZW50cnkgKnFlbnRyeSlcbm5ldC9zbWMvc21jX2xsYy5jLTIyODAte1xuLS1cbm5ldC9zbWMvc21jX2xsYy5jLTIyODUtLyogZXZhbHVhdGUgY29uZmlybSBsaW5rIHJlcXVlc3Qgb3IgcmVzcG9uc2UgKi9cbm5ldC9zbWMvc21jX2xsYy5jOjIyODY6aW50IHNtY19sbGNfZXZhbF9jb25mX2xpbmsoc3RydWN0IHNtY19sbGNfcWVudHJ5ICpxZW50cnksXG5uZXQvc21jL3NtY19sbGMuYy0yMjg3LVx0XHRcdCAgIGVudW0gc21jX2xsY19yZXFyZXNwIHR5cGUpXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE4IDA3OjUwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDEwNjMxCgkJCQkJCQlvdXRwdXQ6IDQ1CgkJCQkJCQl0aG91Z2h0czogMzIxCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBhIFBvdGVudGlhbCBNZW1vcnkgTGVhayBGaXggaW4gdGhlIFNNQy1MTEMgRmxvdyoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBpbiBgc21jX2xsY19ldmVudF9oYW5kbGVyYC4gUmlnaHQgb2ZmIHRoZSBiYXQsIEkgc2VlIHRoZXkmIzM5O3JlIGFkZHJlc3NpbmcgYSBwb3RlbnRpYWwgcHJvYmxlbSB3aXRoIGhvdyBgUkVRX0FERF9MSU5LYCBzdGF0ZSBpcyBoYW5kbGVkLiBUaGUgY29yZSBjaGFuZ2UgaXMgdGhlIGFkZGl0aW9uIG9mIGBzbWNfbGxjX2Zsb3dfcWVudHJ5X2RlbCgmYW1wO2xnci0mZ3Q7bGxjX2Zsb3dfbGNsKTtgIHJpZ2h0IGJlZm9yZSB0cmFuc2l0aW9uaW5nIHRoZSBgbGxjX2Zsb3dfbGNsLnR5cGVgLiBUaGlzIGxvb2tzIGxpa2UgYSBmdW5jdGlvbmFsIGNoYW5nZSDigJMgYSBtZW1vcnkgbGVhayBmaXggb3IgcGVyaGFwcyBhIHN0YXRlIG1hY2hpbmUgY29ycmVjdGlvbi4gSXQmIzM5O3MgYSBrZXkgb3BlcmF0aW9uIGRlYWxpbmcgd2l0aCBxdWV1ZSBlbnRyaWVzLgoKQmVjYXVzZSBgc21jX2xsY19ldmVudF9oYW5kbGVyYCBpcyBzdGF0aWMsIEkgY2FuIGNvbmZpZGVudGx5IHBpbnBvaW50IHRoZSBjYWxsIHNpdGVzIEkgbmVlZCB0byBpbnZlc3RpZ2F0ZSBpbiBtb3JlIGRldGFpbDogYHNtY19sbGNfc3J2X2FkZF9saW5rYCwgYHNtY19sbGNfY2xpX2FkZF9saW5rYCwgYHNtY19sbGNfZmxvd19pbml0aWF0ZWAsIGBzbWNfbGxjX3NlbmRfYWRkX2xpbmtgLCBgc21jX2xsY19zZW5kX2NvbmZpcm1fbGlua2AsIGFuZCBgc21jX2xsY19kb19jb25maXJtX3JrZXlgLiBUaGVzZSBhcmUgdGhlIHBvdGVudGlhbCBlbnRyeSBwb2ludHMgYW5kIGNvbnRleHRzIHdoZXJlIHRoaXMgbG9naWMgaXMgdHJpZ2dlcmVkLiBCZWZvcmUgZGlnZ2luZyBkZWVwZXIsIEkgbmVlZCB0byBjaGVjayB0aGUgZXhhY3QgY29udGV4dCBvZiBgc21jX2xsY19ldmVudF9oYW5kbGVyYC4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2hlbiBhbmQgd2h5IGEgYHFlbnRyeWAgbWlnaHQgYmUgc3Rhc2hlZCBpbiB0aGUgYFJFUV9BRERfTElOS2Agc3RhdGUgdG8gYmVnaW4gd2l0aCB0byBldmFsdWF0ZSB0aGUgZml4IHByb3Blcmx5LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xOCAwNzo1MDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtTTUNfTExDX0ZMT1dfUkVRX0FERF9MSU5LJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L3NtYy9zbWNfbGxjLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L3NtYy9zbWNfbGxjLmM9MTEyNj1zdGF0aWMgdm9pZCBzbWNfbGxjX3NlbmRfcmVxdWVzdF9hZGRfbGluayhzdHJ1Y3Qgc21jX2xpbmsgKmxpbmspXG4tLVxubmV0L3NtYy9zbWNfbGxjLmMtMTE1OC1cdFx0Lyogc2V0IFJFUV9BRERfTElOSyBmbG93IGFuZCB3YWl0IGZvciByZXNwb25zZSBmcm9tIHBlZXIgKi9cbm5ldC9zbWMvc21jX2xsYy5jOjExNTk6XHRcdGxpbmstXHUwMDNlbGdyLVx1MDAzZWxsY19mbG93X2xjbC50eXBlID0gU01DX0xMQ19GTE9XX1JFUV9BRERfTElOSztcbm5ldC9zbWMvc21jX2xsYy5jLTExNjAtcHV0X291dDpcbi0tXG5uZXQvc21jL3NtY19sbGMuYz0xNTU5PXN0YXRpYyB2b2lkIHNtY19sbGNfYWRkX2xpbmtfd29yayhzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspXG4tLVxubmV0L3NtYy9zbWNfbGxjLmMtMTU3NC1vdXQ6XG5uZXQvc21jL3NtY19sbGMuYzoxNTc1Olx0aWYgKGxnci1cdTAwM2VsbGNfZmxvd19sY2wudHlwZSAhPSBTTUNfTExDX0ZMT1dfUkVRX0FERF9MSU5LKVxubmV0L3NtYy9zbWNfbGxjLmMtMTU3Ni1cdFx0c21jX2xsY19mbG93X3N0b3AobGdyLCBcdTAwMjZsZ3ItXHUwMDNlbGxjX2Zsb3dfbGNsKTtcbi0tXG5uZXQvc21jL3NtY19sbGMuYz0xODc1PXN0YXRpYyB2b2lkIHNtY19sbGNfZXZlbnRfaGFuZGxlcihzdHJ1Y3Qgc21jX2xsY19xZW50cnkgKnFlbnRyeSlcbi0tXG5uZXQvc21jL3NtY19sbGMuYy0xOTExLVx0XHRcdGlmIChsZ3ItXHUwMDNlbGxjX2Zsb3dfbGNsLnR5cGUgPT1cbm5ldC9zbWMvc21jX2xsYy5jOjE5MTI6XHRcdFx0XHRcdFNNQ19MTENfRkxPV19SRVFfQUREX0xJTkspIHtcbm5ldC9zbWMvc21jX2xsYy5jLTE5MTMtXHRcdFx0XHQvKiBzZXJ2ZXIgc3RhcnRlZCBhZGRfbGluayBwcm9jZXNzaW5nICovXG4tLVxubmV0L3NtYy9zbWNfbGxjLmMtMTk3NS1cdFx0aWYgKGxnci1cdTAwM2Vyb2xlID09IFNNQ19DTE5UIFx1MDAyNlx1MDAyNlxubmV0L3NtYy9zbWNfbGxjLmM6MTk3NjpcdFx0ICAgIGxnci1cdTAwM2VsbGNfZmxvd19sY2wudHlwZSA9PSBTTUNfTExDX0ZMT1dfUkVRX0FERF9MSU5LIFx1MDAyNlx1MDAyNlxubmV0L3NtYy9zbWNfbGxjLmMtMTk3Ny1cdFx0ICAgIChsbGMtXHUwMDNlcmF3Lmhkci5mbGFncyBcdTAwMjYgU01DX0xMQ19GTEFHX1JFU1ApKSB7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE4IDA3OjUwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDExOTA1CgkJCQkJCQlvdXRwdXQ6IDM2CgkJCQkJCQl0aG91Z2h0czogMTA2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkxMQyBNZXNzYWdlIEhhbmRsZXIgQW5hbHlzaXMqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgYHNtY19sbGNfZXZlbnRfaGFuZGxlcmAgZnVuY3Rpb24uIEl0JiMzOTtzIHRoZSBjb3JlIG9mIGhvdyB3ZSBkZWFsIHdpdGggTExDIG1lc3NhZ2VzLCB3aGljaCBtZWFucyBpdCYjMzk7cyBhIHByaW1lIHRhcmdldCBmb3IgZnV6emluZy4gRGVmaW5pdGVseSBhIGdvb2QgY2FuZGlkYXRlIGZvciBleHBsb3JpbmcgcG90ZW50aWFsIHZ1bG5lcmFiaWxpdGllcy4KCkkmIzM5O20gdGhpbmtpbmcgdGhlIHJlYWwganVpY3kgcGFydHMgYXJlIGxpa2VseSB3aXRoaW4gdGhlIGZ1bmN0aW9ucyBpdCBjYWxscywgc3BlY2lmaWNhbGx5IGBzbWNfbGxjX3Nydl9hZGRfbGlua2AsIGBzbWNfbGxjX2NsaV9hZGRfbGlua2AsIGBzbWNfbGxjX2FkZF9saW5rX2xvY2FsYCwgYW5kIGBzbWNfbGxjX3NlbmRfYWRkX2xpbmtgLiBUaGVzZSBzZWVtIGxpa2UgdGhlIGtleSBlbnRyeSBwb2ludHMgZm9yIGxpbmsgZXN0YWJsaXNobWVudCwgc28gSSB3YW50IHRvIHVuZGVyc3RhbmQgdGhlaXIgYmVoYXZpb3VyIGJldHRlci4KCk15IGltbWVkaWF0ZSBxdWVzdGlvbiBpcyBhYm91dCBgc21jX2xsY19hZGRfbGlua19sb2NhbGAuIElzIHRoYXQgZnVuY3Rpb24gZXhwb3J0ZWQgZnJvbSB0aGlzIG1vZHVsZSBvciBzb21laG93IHJlYWNoYWJsZSBmcm9tIGFuIGV4dGVybmFsIGNvbnRleHQ/IFRoYXQmIzM5O3MgZ29pbmcgdG8gdGVsbCBtZSBhIGxvdCBhYm91dCBob3cgZXhwb3NlZCBpdCBpcywgYW5kIHdoZXRoZXIgSSBjYW4gZGlyZWN0bHkgdHJpZ2dlciBpdC4gS25vd2luZyB0aGUgY29udHJvbCBwbGFuZSBpbnRvIHRoZXNlIGZ1bmN0aW9ucyB3aWxsIGdyZWF0bHkgaW1wYWN0IGhvdyBJIGFwcHJvYWNoIGZ1enppbmcgaXQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE4IDA3OjUwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3NtY19sbGNfYWRkX2xpbmtfbG9jYWwmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvc21jLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvc21jL3NtY19jb3JlLmM9MTc1OD12b2lkIHNtY3JfcG9ydF9hZGQoc3RydWN0IHNtY19pYl9kZXZpY2UgKnNtY2liZGV2LCB1OCBpYnBvcnQpXG4tLVxubmV0L3NtYy9zbWNfY29yZS5jLTE3NzgtXHRcdGlmIChsaW5rKVxubmV0L3NtYy9zbWNfY29yZS5jOjE3Nzk6XHRcdFx0c21jX2xsY19hZGRfbGlua19sb2NhbChsaW5rKTtcbm5ldC9zbWMvc21jX2NvcmUuYy0xNzgwLVx0fVxuLS1cbm5ldC9zbWMvc21jX2xsYy5jPTE1Mjk9c3RhdGljIHZvaWQgc21jX2xsY19wcm9jZXNzX3Nydl9hZGRfbGluayhzdHJ1Y3Qgc21jX2xpbmtfZ3JvdXAgKmxncilcbi0tXG5uZXQvc21jL3NtY19sbGMuYy0xNTQ3LS8qIGVucXVldWUgYSBsb2NhbCBhZGRfbGluayByZXEgdG8gdHJpZ2dlciBhIG5ldyBhZGRfbGluayBmbG93ICovXG5uZXQvc21jL3NtY19sbGMuYzoxNTQ4OnZvaWQgc21jX2xsY19hZGRfbGlua19sb2NhbChzdHJ1Y3Qgc21jX2xpbmsgKmxpbmspXG5uZXQvc21jL3NtY19sbGMuYy0xNTQ5LXtcbi0tXG5uZXQvc21jL3NtY19sbGMuYz0xNjcyPXN0YXRpYyB2b2lkIHNtY19sbGNfcHJvY2Vzc19zcnZfZGVsZXRlX2xpbmsoc3RydWN0IHNtY19saW5rX2dyb3VwICpsZ3IpXG4tLVxubmV0L3NtYy9zbWNfbGxjLmMtMTczMi1cdFx0LyogdHJpZ2dlciBzZXR1cCBvZiBhc3ltbSBhbHQgbGluayAqL1xubmV0L3NtYy9zbWNfbGxjLmM6MTczMzpcdFx0c21jX2xsY19hZGRfbGlua19sb2NhbChsbmspO1xubmV0L3NtYy9zbWNfbGxjLmMtMTczNC1cdH1cbi0tXG5uZXQvc21jL3NtY19sbGMuaD0xMTU9aW50IHNtY19sbGNfc3J2X2FkZF9saW5rKHN0cnVjdCBzbWNfbGluayAqbGluayxcbm5ldC9zbWMvc21jX2xsYy5oLTExNi1cdFx0XHQgc3RydWN0IHNtY19sbGNfcWVudHJ5ICpyZXFfcWVudHJ5KTtcbm5ldC9zbWMvc21jX2xsYy5oOjExNzp2b2lkIHNtY19sbGNfYWRkX2xpbmtfbG9jYWwoc3RydWN0IHNtY19saW5rICpsaW5rKTtcbm5ldC9zbWMvc21jX2xsYy5oLTExOC1pbnQgc21jX2xsY19pbml0KHZvaWQpIF9faW5pdDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTggMDc6NTA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTI4MzcKCQkJCQkJCW91dHB1dDogMzYKCQkJCQkJCXRob3VnaHRzOiAzMwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIGFuIGV4cGVydCYjMzk7cyBpbnRlcm5hbCBtb25vbG9ndWU6CgoqKkxpbmstTG9jYWwgRGlzY292ZXJ5IC0gVGhpbmtpbmcgVGhyb3VnaCB0aGUgUHJvY2VzcyoqCgpBbHJpZ2h0LCBzbyBgc21jX2xsY19hZGRfbGlua19sb2NhbGAgKmlzKiByZWFjaGFibGUg4oCTIHRoYXQmIzM5O3MgYSBnb29kIHN0YXJ0aW5nIHBvaW50LiBUaGF0IGxpa2VseSBtZWFucyB0aGUgYmFzaWMgc2V0dXAsIHRoZSBmb3VuZGF0aW9uYWwgZGlzY292ZXJ5IG1lY2hhbmlzbSwgaXMgZnVuY3Rpb25pbmcgYXMgZXhwZWN0ZWQuIE5vdywgbXkgaW1tZWRpYXRlIGZvbGxvdy11cCBxdWVzdGlvbiwgdGhlIG5leHQgbG9naWNhbCBzdGVwIGluIHRoZSBjaGFpbiBvZiByZWFzb25pbmcsIGlzIHRoaXM6IHdoYXQgYWJvdXQgdGhlIHNlcnZpY2UgYWRkaXRpb24gdmlhIHRoZSBzdGFuZGFyZCBtZXRob2Q6IGBzbWNfbGxjX3Nydl9hZGRfbGlua2A/IElzIHRoYXQgd29ya2luZyBhcyBleHBlY3RlZD8gSXMgaXQgcmVhY2hhYmxlPyBBbmQgaWYgaXQgaXMgcmVhY2hhYmxlLCBkb2VzIGl0IHJlcXVpcmUgYWRkaXRpb25hbCBjb25zaWRlcmF0aW9ucyBpbiBjb21wYXJpc29uIHdpdGggYHNtY19sbGNfYWRkX2xpbmtfbG9jYWxgPyBJIG5lZWQgdG8gdW5kZXJzdGFuZCBpZiB0aGVyZSBpcyBzb21lIG51YW5jZSBoZXJlIHRoYXQgc2hvdWxkIGJlIGNvbnNpZGVyZWQgYXQgdGhpcyBqdW5jdHVyZSBpbiB0aGUgcHJvY2Vzcy4gSSBhbSBtZW50YWxseSBjYXRhbG9ndWluZyBhbnkgZGVwZW5kZW5jaWVzIG9yIGdvdGNoYXMgdGhhdCBJIGhhdmUgc2VlbiBpbiB0aGUgcGFzdC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTggMDc6NTA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7c21jX2xsY19zcnZfYWRkX2xpbmsmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvc21jLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvc21jL2FmX3NtYy5jPTE4NzI9c3RhdGljIGludCBzbWNyX3NlcnZfY29uZl9maXJzdF9saW5rKHN0cnVjdCBzbWNfc29jayAqc21jKVxuLS1cbm5ldC9zbWMvYWZfc21jLmMtMTkxNy1cdFx0LyogaW5pdGlhbCBjb250YWN0IC0gdHJ5IHRvIGVzdGFibGlzaCBzZWNvbmQgbGluayAqL1xubmV0L3NtYy9hZl9zbWMuYzoxOTE4Olx0XHRzbWNfbGxjX3Nydl9hZGRfbGluayhsaW5rLCBOVUxMKTtcbm5ldC9zbWMvYWZfc21jLmMtMTkxOS1cdFx0dXBfd3JpdGUoXHUwMDI2bGluay1cdTAwM2VsZ3ItXHUwMDNlbGxjX2NvbmZfbXV0ZXgpO1xuLS1cbm5ldC9zbWMvc21jX2xsYy5jPTEzOTc9c3RhdGljIHZvaWQgc21jX2xsY19zZW5kX3JlcV9hZGRfbGlua19yZXNwb25zZShzdHJ1Y3Qgc21jX2xsY19xZW50cnkgKnFlbnRyeSlcbi0tXG5uZXQvc21jL3NtY19sbGMuYy0xNDA1LVxubmV0L3NtYy9zbWNfbGxjLmM6MTQwNjppbnQgc21jX2xsY19zcnZfYWRkX2xpbmsoc3RydWN0IHNtY19saW5rICpsaW5rLFxubmV0L3NtYy9zbWNfbGxjLmMtMTQwNy1cdFx0XHQgc3RydWN0IHNtY19sbGNfcWVudHJ5ICpyZXFfcWVudHJ5KVxuLS1cbm5ldC9zbWMvc21jX2xsYy5jPTE1Mjk9c3RhdGljIHZvaWQgc21jX2xsY19wcm9jZXNzX3Nydl9hZGRfbGluayhzdHJ1Y3Qgc21jX2xpbmtfZ3JvdXAgKmxncilcbi0tXG5uZXQvc21jL3NtY19sbGMuYy0xNTM3LVx0ZG93bl93cml0ZShcdTAwMjZsZ3ItXHUwMDNlbGxjX2NvbmZfbXV0ZXgpO1xubmV0L3NtYy9zbWNfbGxjLmM6MTUzODpcdHJjID0gc21jX2xsY19zcnZfYWRkX2xpbmsobGluaywgcWVudHJ5KTtcbm5ldC9zbWMvc21jX2xsYy5jLTE1MzktXHRpZiAoIXJjIFx1MDAyNlx1MDAyNiBsZ3ItXHUwMDNldHlwZSA9PSBTTUNfTEdSX1NZTU1FVFJJQykge1xuLS1cbm5ldC9zbWMvc21jX2xsYy5oPTExND1pbnQgc21jX2xsY19jbGlfYWRkX2xpbmsoc3RydWN0IHNtY19saW5rICpsaW5rLCBzdHJ1Y3Qgc21jX2xsY19xZW50cnkgKnFlbnRyeSk7XG5uZXQvc21jL3NtY19sbGMuaDoxMTU6aW50IHNtY19sbGNfc3J2X2FkZF9saW5rKHN0cnVjdCBzbWNfbGluayAqbGluayxcbm5ldC9zbWMvc21jX2xsYy5oLTExNi1cdFx0XHQgc3RydWN0IHNtY19sbGNfcWVudHJ5ICpyZXFfcWVudHJ5KTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTggMDc6NTA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTM3MDAKCQkJCQkJCW91dHB1dDogMzYKCQkJCQkJCXRob3VnaHRzOiAzMwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB0YWtlIG9uIHRoZSB0aG91Z2h0IHByb2Nlc3M6CgoqKkxpbmsgUmVhY2hhYmlsaXR5IEFzc2Vzc21lbnQqKgoKT2theSwgc28gYHNtY19sbGNfc3J2X2FkZF9saW5rYCAqaXMqIHJlYWNoYWJsZSDigJMgdGhhdCYjMzk7cyBhIGdvb2Qgc3RhcnRpbmcgcG9pbnQuIEJ1dCBJIG5lZWQgdG8gZnVsbHkgYXNzZXNzIHRoaXMgcHJvY2Vzcy4gTm93LCB0aGUgbmV4dCBsb2dpY2FsIHF1ZXN0aW9uIGlzOiB3aGF0JiMzOTtzIHRoZSBzdGF0dXMgb2YgYHNtY19sbGNfY2xpX2FkZF9saW5rYD8gSXMgdGhhdCByZWFjaGFibGUgYXMgd2VsbD8gVGhpcyBpcyB0aGUgY3J1Y2lhbCBuZXh0IHN0ZXAuIEkgbmVlZCB0byBrbm93IGlmIHRoZSBjbGllbnQgc2lkZSBsaW5rIGFkZGl0aW9uIGlzIG9wZXJhdGluZyBhcyBleHBlY3RlZC4gSSBuZWVkIHRvIGRldGVybWluZSB0aGUgc3RhdGUgb2YgdGhlIHN5c3RlbSBtb3JlIGNvbXBsZXRlbHksIGJlY2F1c2UgdGhlc2UgdHdvIGZ1bmN0aW9ucyBhcmUgbGlrZWx5IGludGVyZGVwZW5kZW50LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xOCAwNzo1MDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtzbWNfbGxjX2NsaV9hZGRfbGluayYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9zbWMvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9zbWMvYWZfc21jLmM9NjE4PXN0YXRpYyBpbnQgc21jcl9jbG50X2NvbmZfZmlyc3RfbGluayhzdHJ1Y3Qgc21jX3NvY2sgKnNtYylcbi0tXG5uZXQvc21jL2FmX3NtYy5jLTY4NC1cdFx0c21jX2xsY19mbG93X3FlbnRyeV9jbHIoXHUwMDI2bGluay1cdTAwM2VsZ3ItXHUwMDNlbGxjX2Zsb3dfbGNsKTtcbm5ldC9zbWMvYWZfc21jLmM6Njg1Olx0XHRzbWNfbGxjX2NsaV9hZGRfbGluayhsaW5rLCBxZW50cnkpO1xubmV0L3NtYy9hZl9zbWMuYy02ODYtXHR9XG4tLVxubmV0L3NtYy9zbWNfbGxjLmM9ODg3PXN0YXRpYyBpbnQgc21jX2xsY19jbGlfcmtleV9leGNoYW5nZShzdHJ1Y3Qgc21jX2xpbmsgKmxpbmssXG4tLVxubmV0L3NtYy9zbWNfbGxjLmMtOTMwLS8qIHByZXBhcmUgYW5kIHNlbmQgYW4gYWRkIGxpbmsgcmVqZWN0IHJlc3BvbnNlICovXG5uZXQvc21jL3NtY19sbGMuYzo5MzE6c3RhdGljIGludCBzbWNfbGxjX2NsaV9hZGRfbGlua19yZWplY3Qoc3RydWN0IHNtY19sbGNfcWVudHJ5ICpxZW50cnkpXG5uZXQvc21jL3NtY19sbGMuYy05MzIte1xuLS1cbm5ldC9zbWMvc21jX2xsYy5jPTEwMjA9c3RhdGljIHZvaWQgc21jX2xsY19zYXZlX2FkZF9saW5rX2luZm8oc3RydWN0IHNtY19saW5rICpsaW5rLFxuLS1cbm5ldC9zbWMvc21jX2xsYy5jLTEwMzAtLyogYXMgYW4gU01DIGNsaWVudCwgcHJvY2VzcyBhbiBhZGQgbGluayByZXF1ZXN0ICovXG5uZXQvc21jL3NtY19sbGMuYzoxMDMxOmludCBzbWNfbGxjX2NsaV9hZGRfbGluayhzdHJ1Y3Qgc21jX2xpbmsgKmxpbmssIHN0cnVjdCBzbWNfbGxjX3FlbnRyeSAqcWVudHJ5KVxubmV0L3NtYy9zbWNfbGxjLmMtMTAzMi17XG4tLVxubmV0L3NtYy9zbWNfbGxjLmMtMTExOC1vdXRfcmVqZWN0OlxubmV0L3NtYy9zbWNfbGxjLmM6MTExOTpcdHNtY19sbGNfY2xpX2FkZF9saW5rX3JlamVjdChxZW50cnkpO1xubmV0L3NtYy9zbWNfbGxjLmMtMTEyMC1vdXQ6XG4tLVxubmV0L3NtYy9zbWNfbGxjLmM9MTEyNj1zdGF0aWMgdm9pZCBzbWNfbGxjX3NlbmRfcmVxdWVzdF9hZGRfbGluayhzdHJ1Y3Qgc21jX2xpbmsgKmxpbmspXG4tLVxubmV0L3NtYy9zbWNfbGxjLmMtMTE2NC0vKiBhcyBhbiBTTUMgY2xpZW50LCBpbnZpdGUgc2VydmVyIHRvIHN0YXJ0IHRoZSBhZGRfbGluayBwcm9jZXNzaW5nICovXG5uZXQvc21jL3NtY19sbGMuYzoxMTY1OnN0YXRpYyB2b2lkIHNtY19sbGNfY2xpX2FkZF9saW5rX2ludml0ZShzdHJ1Y3Qgc21jX2xpbmsgKmxpbmssXG5uZXQvc21jL3NtY19sbGMuYy0xMTY2LVx0XHRcdFx0XHRzdHJ1Y3Qgc21jX2xsY19xZW50cnkgKnFlbnRyeSlcbi0tXG5uZXQvc21jL3NtY19sbGMuYz0xMjE3PXN0YXRpYyB2b2lkIHNtY19sbGNfcHJvY2Vzc19jbGlfYWRkX2xpbmsoc3RydWN0IHNtY19saW5rX2dyb3VwICpsZ3IpXG4tLVxubmV0L3NtYy9zbWNfbGxjLmMtMTIyNC1cdGlmIChzbWNfbGxjX2lzX2xvY2FsX2FkZF9saW5rKFx1MDAyNnFlbnRyeS1cdTAwM2Vtc2cpKVxubmV0L3NtYy9zbWNfbGxjLmM6MTIyNTpcdFx0c21jX2xsY19jbGlfYWRkX2xpbmtfaW52aXRlKHFlbnRyeS1cdTAwM2VsaW5rLCBxZW50cnkpO1xubmV0L3NtYy9zbWNfbGxjLmMtMTIyNi1cdGVsc2Vcbm5ldC9zbWMvc21jX2xsYy5jOjEyMjc6XHRcdHNtY19sbGNfY2xpX2FkZF9saW5rKHFlbnRyeS1cdTAwM2VsaW5rLCBxZW50cnkpO1xubmV0L3NtYy9zbWNfbGxjLmMtMTIyOC1cdHVwX3dyaXRlKFx1MDAyNmxnci1cdTAwM2VsbGNfY29uZl9tdXRleCk7XG4tLVxubmV0L3NtYy9zbWNfbGxjLmg9MTEyPXZvaWQgc21jX2xsY19zZW5kX2xpbmtfZGVsZXRlX2FsbChzdHJ1Y3Qgc21jX2xpbmtfZ3JvdXAgKmxnciwgYm9vbCBvcmQsXG5uZXQvc21jL3NtY19sbGMuaC0xMTMtXHRcdFx0XHQgIHUzMiByc24pO1xubmV0L3NtYy9zbWNfbGxjLmg6MTE0OmludCBzbWNfbGxjX2NsaV9hZGRfbGluayhzdHJ1Y3Qgc21jX2xpbmsgKmxpbmssIHN0cnVjdCBzbWNfbGxjX3FlbnRyeSAqcWVudHJ5KTtcbm5ldC9zbWMvc21jX2xsYy5oLTExNS1pbnQgc21jX2xsY19zcnZfYWRkX2xpbmsoc3RydWN0IHNtY19saW5rICpsaW5rLFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xOCAwNzo1MDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxNDk3NgoJCQkJCQkJb3V0cHV0OiAyOQoJCQkJCQkJdGhvdWdodHM6IDE0NwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipGb2N1c2luZyBvbiBTTUMgTGluayBGdW5jdGlvbnMqKgoKT2theSwgc28gSSYjMzk7bSBob25pbmcgaW4gb24gdGhlIFNNQyBsaW5rIGZ1bmN0aW9ucy4gTG9va2luZyBhdCB0aGVzZSBzeW1ib2xzLCBJIHRoaW5rIGBzbWNfbGxjX2NsaV9hZGRfbGlua2AsIGBzbWNfbGxjX3Nydl9hZGRfbGlua2AsIGFuZCBgc21jX2xsY19hZGRfbGlua19sb2NhbGAgYXJlIGdvb2QgY2FuZGlkYXRlcyB0byByZWFsbHkgYW5jaG9yIG15IGludmVzdGlnYXRpb24uIEhtbSwgYHNtY19sbGNfZXZlbnRfaGFuZGxlcmAuLi4gdGhhdCBvbmUmIzM5O3Mgc3RhdGljLCBzbyBpdCBjYW4mIzM5O3QgYmUgYSBkaXJlY3QgZm9jdXMsIHdoaWNoIGlzIGEgc2hhbWUsIGJ1dCB0aGUgb3RoZXJzIHNob3VsZCBiZSBnb29kLgoKUmlnaHQsIHRpbWUgdG8gY2hlY2sgdGhlIGNvbmZpZ3VyYXRpb24gcmVxdWlyZW1lbnRzLiBMZXQmIzM5O3Mgc2VlLi4uIElzIGBTTUNgIHRoZSBvbmx5IGNvbmZpZ3VyYXRpb24gb3B0aW9uIEkgbmVlZCB0byBiZSBjb25jZXJuZWQgd2l0aD8gWWVwLCBsb29rcyBsaWtlIGl0LiBPa2F5LCBnb29kLiBOb3csIHdoYXQgYWJvdXQgYFNNQ19ESUFHYD8gUHJvYmFibHkgbm90LCBidXQgbGV0IG1lIGp1c3QgZG91YmxlLWNoZWNrLiBPa2F5LCBsb29rcyBsaWtlIEkgY2FuIHByb2JhYmx5IGlnbm9yZSB0aGF0LiBMZXQmIzM5O3MgaGVhZCBiYWNrIGFuZCB0YWtlIGFub3RoZXIgbG9vayBhdCBgbmV0L3NtYy9LY29uZmlnYCB0byBiZSBzdXJlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xOCAwNzo1MDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgU01DJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L3NtYy9LY29uZmlnJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9zbWMvS2NvbmZpZy0xLSMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxubmV0L3NtYy9LY29uZmlnOjI6Y29uZmlnIFNNQ1xubmV0L3NtYy9LY29uZmlnLTMtXHR0cmlzdGF0ZSBcJiMzNDtTTUMgc29ja2V0IHByb3RvY29sIGZhbWlseVwmIzM0O1xuLS1cbm5ldC9zbWMvS2NvbmZpZy0xMy1cbm5ldC9zbWMvS2NvbmZpZzoxNDpjb25maWcgU01DX0RJQUdcbm5ldC9zbWMvS2NvbmZpZy0xNS1cdHRyaXN0YXRlIFwmIzM0O1NNQzogc29ja2V0IG1vbml0b3JpbmcgaW50ZXJmYWNlXCYjMzQ7XG4tLVxubmV0L3NtYy9LY29uZmlnLTIyLVxubmV0L3NtYy9LY29uZmlnOjIzOmNvbmZpZyBTTUNfSFNfQ1RSTF9CUEZcbm5ldC9zbWMvS2NvbmZpZy0yNC1cdGJvb2wgXCYjMzQ7R2VuZXJpYyBlQlBGIGhvb2sgZm9yIFNNQyBoYW5kc2hha2UgZmxvd1wmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xOCAwNzo1MDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxNTU1NwoJCQkJCQkJb3V0cHV0OiAzMwoJCQkJCQkJdGhvdWdodHM6IDMyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHRob3VnaHQgcHJvY2VzcywgYXMgaWYgSSB3ZXJlIGNvbnNpZGVyaW5nIHRoaXMgaXNzdWU6CgoqKkludmVzdGlnYXRpbmcgdGhlIFNNQy9JTkVUIERlcGVuZGVuY3kqKgoKT2theSwgc28gSSYjMzk7dmUgaGl0IGEgcG90ZW50aWFsIHNuYWcuIEl0IGxvb2tzIGxpa2UgYFNNQ2Ag4oCTIHRoYXQmIzM5O3MgU2hhcmVkIE1lbW9yeSBDb21tdW5pY2F0aW9ucywgcmlnaHQ/IOKAkyBoYXMgYSBkZXBlbmRlbmN5IG9uIGBJTkVUYC4gSSBuZWVkIHRvIHZlcmlmeSB0aGF0IGFuZCB1bmRlcnN0YW5kIHRoZSBuYXR1cmUgb2YgdGhpcyBjb25uZWN0aW9uLiBUaGUgbW9zdCBsb2dpY2FsIHBsYWNlIHRvIHN0YXJ0IGlzIHRoZSBjb25maWd1cmF0aW9uIGZpbGUuIFRoYXQgd291bGQgYmUgYG5ldC9zbWMvS2NvbmZpZ2AuIExldCYjMzk7cyBkaWcgaW50byB0aGF0IGZpbGUgYW5kIHNlZSB3aGF0IHRoZSBidWlsZCBzeXN0ZW0gaXMgdGVsbGluZyB1cy4gSSBuZWVkIHRvIGNsYXJpZnkgd2hhdCB0aGUgc3BlY2lmaWMgY29uZGl0aW9uYWxpdGllcyBhcmUgc28gSSB1bmRlcnN0YW5kIGhvdyB0aGluZ3MgYXJlIGNvbm5lY3RlZC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTggMDc6NTA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtuZXQvc21jL0tjb25maWcmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAxLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDIwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAgIDE6XHQjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcbiAgIDI6XHRjb25maWcgU01DXG4gICAzOlx0XHR0cmlzdGF0ZSBcJiMzNDtTTUMgc29ja2V0IHByb3RvY29sIGZhbWlseVwmIzM0O1xuICAgNDpcdFx0ZGVwZW5kcyBvbiBJTkVUIFx1MDAyNlx1MDAyNiBJTkZJTklCQU5EIFx1MDAyNlx1MDAyNiBESUJTXG4gICA1Olx0XHRoZWxwXG4gICA2Olx0XHQgIFNNQy1SIHByb3ZpZGVzIGEgXCYjMzQ7c29ja2V0cyBvdmVyIFJETUFcJiMzNDsgc29sdXRpb24gbWFraW5nIHVzZSBvZlxuICAgNzpcdFx0ICBSRE1BIG92ZXIgQ29udmVyZ2VkIEV0aGVybmV0IChSb0NFKSB0ZWNobm9sb2d5IHRvIHVwZ3JhZGVcbiAgIDg6XHRcdCAgQUZfSU5FVCBUQ1AgY29ubmVjdGlvbnMgdHJhbnNwYXJlbnRseS5cbiAgIDk6XHRcdCAgVGhlIExpbnV4IGltcGxlbWVudGF0aW9uIG9mIHRoZSBTTUMtUiBzb2x1dGlvbiBpcyBkZXNpZ25lZCBhc1xuICAxMDpcdFx0ICBhIHNlcGFyYXRlIHNvY2tldCBmYW1pbHkgU01DLlxuICAxMTpcdFxuICAxMjpcdFx0ICBTZWxlY3QgdGhpcyBvcHRpb24gaWYgeW91IHdhbnQgdG8gcnVuIFNNQyBzb2NrZXQgYXBwbGljYXRpb25zXG4gIDEzOlx0XG4gIDE0Olx0Y29uZmlnIFNNQ19ESUFHXG4gIDE1Olx0XHR0cmlzdGF0ZSBcJiMzNDtTTUM6IHNvY2tldCBtb25pdG9yaW5nIGludGVyZmFjZVwmIzM0O1xuICAxNjpcdFx0ZGVwZW5kcyBvbiBTTUNcbiAgMTc6XHRcdGhlbHBcbiAgMTg6XHRcdCAgU3VwcG9ydCBmb3IgU01DIHNvY2tldCBtb25pdG9yaW5nIGludGVyZmFjZSB1c2VkIGJ5IHRvb2xzIHN1Y2ggYXNcbiAgMTk6XHRcdCAgc21jc3MuXG4gIDIwOlx0XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE4IDA3OjUwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE2MDI2CgkJCQkJCQlvdXRwdXQ6IDIzCgkJCQkJCQl0aG91Z2h0czogMzI3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEluaXRpYWwgQW5hbHlzaXMgYW5kIEl0ZXJhdGl2ZSBSZXZpZXcqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgY29uZmlndXJhdGlvbi4gSW5pdGlhbGx5LCBJIHRob3VnaHQgaXQgd2FzIGRlcGVuZGVudCBvbiBgSU5FVGAsIGBJTkZJTklCQU5EYCwgYW5kIHBvdGVudGlhbGx5IHNvbWV0aGluZyBlbHNlLi4uIG1heWJlIGBESUJTYD8gTm8sIHdhaXQsIHRoYXQgZG9lc24mIzM5O3Qgc2VlbSByaWdodC4gTGV0IG1lIGRvdWJsZS1jaGVjay4gT2theSwgSSB0aG91Z2h0IEkgbWlzc2VkIGl0LCBidXQuLi4gdGhlIG91dHB1dCBzaG93cyBgZGVwZW5kcyBvbiBJTkVUICZhbXA7JmFtcDsgSU5GSU5JQkFORGAsIG5vdCB3aGF0IEkgaW5pdGlhbGx5IHRob3VnaHQuIEkgbXVzdCBoYXZlIG1pc3JlYWQgaXQuIE5vLCB0aGF0JiMzOTtzIG5vdCByaWdodCBlaXRoZXIuIEl0JiMzOTtzIHN1cHBvc2VkIHRvIGJlIGBkZXBlbmRzIG9uIElORVQgJmFtcDsmYW1wOyBJTkZJTklCQU5EICZhbXA7JmFtcDsgRElCU2AuIFdhaXQuLi4gSSAqZGVmaW5pdGVseSogbWlzc2VkIHNvbWV0aGluZy4gTGV0JiMzOTtzIGxvb2sgYWdhaW4uIE9rYXksIG9rYXksIHRoaXJkIHRpbWUmIzM5O3MgdGhlIGNoYXJtLiBBaCwgdGhlcmUmIzM5O3MgYERJQlNgLCBqdXN0IGxpa2UgSSB0aG91Z2h0IGF0IGZpcnN0LiBJIG1pc3NlZCBpdCBpbml0aWFsbHkuIExldCBtZSByZS1yZWFkIHRoZSByZWxldmFudCBwYXJ0IGFnYWluOgoKYGBgCiAgIDE6CSMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seQogICAyOgljb25maWcgU01DCiAgIDM6CQl0cmlzdGF0ZSAmIzM0O1NNQyBzb2NrZXQgcHJvdG9jb2wgZmFtaWx5JiMzNDsKICAgNDoJCWRlcGVuZHMgb24gSU5FVCAmYW1wOyZhbXA7IElORklOSUJBTkQgJmFtcDsmYW1wOyBESUJTCmBgYAoKQWxyaWdodCwgdGhlcmUgaXQgaXMhIE15IGV5ZXMgYXJlIHBsYXlpbmcgdHJpY2tzIG9uIG1lLiBTbywgaXQmIzM5O3MgZGVmaW5pdGVseSBkZXBlbmRlbnQgb24gYElORVRgLCBgSU5GSU5JQkFORGAsIGFuZCwgY3JpdGljYWxseSwgYERJQlNgLiBOb3cgSSBuZWVkIHRvIHJlbWluZCBteXNlbGYgcHJlY2lzZWx5IHdoYXQgYERJQlNgIHJlcHJlc2VudHMgaW4gdGhpcyBjb250ZXh0LiBUaW1lIHRvIGxvb2sgdGhhdCB1cC4uLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xOCAwNzo1MTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgRElCUyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0OyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL2RpYnMvS2NvbmZpZy0xLSMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjBcbmRyaXZlcnMvZGlicy9LY29uZmlnOjI6Y29uZmlnIERJQlNcbmRyaXZlcnMvZGlicy9LY29uZmlnLTMtXHR0cmlzdGF0ZSBcJiMzNDtEaXJlY3QgSW50ZXJuYWwgQnVmZmVyIFNoYXJpbmcgc3VwcG9ydFwmIzM0O1xuLS1cbmRyaXZlcnMvZGlicy9LY29uZmlnLTEzLVxuZHJpdmVycy9kaWJzL0tjb25maWc6MTQ6Y29uZmlnIERJQlNfTE9cbmRyaXZlcnMvZGlicy9LY29uZmlnLTE1LVx0Ym9vbCBcJiMzNDtJbnRyYS1PUyBzaG9ydGN1dCB3aXRoIGRpYnMgbG9vcGJhY2tcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yOS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTggMDc6NTE8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTY4MTQKCQkJCQkJCW91dHB1dDogMzMKCQkJCQkJCXRob3VnaHRzOiAyMTEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqS2VybmVsIENvbmZpZ3VyYXRpb24gRGVwZW5kZW5jeSBJbnZlc3RpZ2F0aW9uKioKCk9rYXksIHNvIEkgdGhvdWdodCBJIHNhdyBzb21ldGhpbmcgcmVsYXRlZCB0byBgRElCU2AgaW4gdGhlIGNvbmZpZ3VyYXRpb24gb3B0aW9ucywgYnV0IHRoYXQmIzM5O3Mgbm90IHJpZ2h0LCBpcyBpdD8gSXQmIzM5O3MgdXN1YWxseSB0aGUgYGRlcGVuZHMgb24gSU5FVCAmYW1wOyZhbXA7IElORklOSUJBTkRgIHN5bnRheCB0aGF0IGNvbWVzIHRvIG1pbmQgaW4gdGhpcyBhcmVhLiBMZXQgbWUgZG91YmxlLWNoZWNrIHRoZSBgbmV0L3NtYy9LY29uZmlnYCBvdXRwdXQuIEkgbmVlZCB0byBiZSBzdXJlLgoKUmlnaHQsIHRoZSBvdXRwdXQgaXM6CgpgYGAKICAgMToJIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5CiAgIDI6CWNvbmZpZyBTTUMKICAgMzoJCXRyaXN0YXRlICYjMzQ7U01DIHNvY2tldCBwcm90b2NvbCBmYW1pbHkmIzM0OwogICA0OgkJZGVwZW5kcyBvbiBJTkVUICZhbXA7JmFtcDsgSU5GSU5JQkFORApgYGAKCkhtbSwgbm8gYERJQlNgIHRoZXJlIGF0IGFsbC4gSSBtdXN0IGhhdmUgYmVlbiBpbWFnaW5pbmcgdGhpbmdzLiBMZXQgbWUganVzdCByZS1yZWFkIHRoYXQgb3V0cHV0IGFnYWluLCB0byBtYWtlIGFic29sdXRlbHkgY2VydGFpbi4KCmBgYAogICAxOgkjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHkKICAgMjoJY29uZmlnIFNNQwogICAzOgkJdHJpc3RhdGUgJiMzNDtTTUMgc29ja2V0IHByb3RvY29sIGZhbWlseSYjMzQ7CiAgIDQ6CQlkZXBlbmRzIG9uIElORVQgJmFtcDsmYW1wOyBJTkZJTklCQU5ECmBgYAoKTm9wZSwgc3RpbGwgbm90IHRoZXJlLiBCZXR0ZXIgdG8gdHJpcGxlLWNoZWNrIHRoZSBmaWxlIGl0c2VsZiB0byBiZSBhYnNvbHV0ZWx5IHN1cmUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE4IDA3OjUxPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7bmV0L3NtYy9LY29uZmlnJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMSwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAxMAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgICAxOlx0IyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XG4gICAyOlx0Y29uZmlnIFNNQ1xuICAgMzpcdFx0dHJpc3RhdGUgXCYjMzQ7U01DIHNvY2tldCBwcm90b2NvbCBmYW1pbHlcJiMzNDtcbiAgIDQ6XHRcdGRlcGVuZHMgb24gSU5FVCBcdTAwMjZcdTAwMjYgSU5GSU5JQkFORCBcdTAwMjZcdTAwMjYgRElCU1xuICAgNTpcdFx0aGVscFxuICAgNjpcdFx0ICBTTUMtUiBwcm92aWRlcyBhIFwmIzM0O3NvY2tldHMgb3ZlciBSRE1BXCYjMzQ7IHNvbHV0aW9uIG1ha2luZyB1c2Ugb2ZcbiAgIDc6XHRcdCAgUkRNQSBvdmVyIENvbnZlcmdlZCBFdGhlcm5ldCAoUm9DRSkgdGVjaG5vbG9neSB0byB1cGdyYWRlXG4gICA4Olx0XHQgIEFGX0lORVQgVENQIGNvbm5lY3Rpb25zIHRyYW5zcGFyZW50bHkuXG4gICA5Olx0XHQgIFRoZSBMaW51eCBpbXBsZW1lbnRhdGlvbiBvZiB0aGUgU01DLVIgc29sdXRpb24gaXMgZGVzaWduZWQgYXNcbiAgMTA6XHRcdCAgYSBzZXBhcmF0ZSBzb2NrZXQgZmFtaWx5IFNNQy5cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTggMDc6NTE8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTc0ODEKCQkJCQkJCW91dHB1dDogMzMKCQkJCQkJCXRob3VnaHRzOiA3MQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBJbml0aWFsIEFzc2Vzc21lbnQqKgoKQWxyaWdodCwgbGV0JiMzOTtzIHNlZSwgaXQgbG9va3MgbGlrZSB0aGlzIHBhcnRpY3VsYXIgbW9kdWxlIHJlbGllcyBvbiBhIGZldyBvdGhlciBrZXkgY29tcG9uZW50cy4gVGhlIHRleHQgZXhwbGljaXRseSBtZW50aW9ucyBhIGRlcGVuZGVuY3kgY2hhaW46IGl0ICpkZXBlbmRzIG9uIElORVQsIElORklOSUJBTkQsIGFuZCBESUJTKi4gVGhhdCYjMzk7cyBjbGVhci4gU28sIGZvciB0aGlzIG1vZHVsZSB0byBmdW5jdGlvbiwgSSYjMzk7bGwgbmVlZCB0byBlbnN1cmUgdGhlIGBTTUNgLCBgSU5FVGAsIGBJTkZJTklCQU5EYCwgYW5kIGBESUJTYCBmZWF0dXJlcyBhcmUgYWxsIGVuYWJsZWQuCgpIb2xkIG9uLCB0aG91Z2guLi4gKkRJQlMqIHNlZW1zIGxpa2UgaXQgbWlnaHQgYmUgc29tZXRoaW5nIHJlbGF0aXZlbHkgcmVjZW50IHRvIHRoaXMga2VybmVsIHZlcnNpb24uIEkgZG9uJiMzOTt0IHJlY2FsbCBzZWVpbmcgaXQgYmVmb3JlLiBJJiMzOTtkIGJldHRlciBkb3VibGUtY2hlY2sgdGhlIGBkcml2ZXJzL2RpYnMvS2NvbmZpZ2AgZmlsZSB0byBjb25maXJtIHdoYXQgYERJQlNgIGlzIGFuZCBpdHMgc3BlY2lmaWMgY29uZmlndXJhdGlvbiByZXF1aXJlbWVudHMuIEFsd2F5cyBnb29kIHRvIHN0YXkgb24gdG9wIG9mIHRoZSBkZXBlbmRlbmNpZXMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE4IDA3OjUxPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9kaWJzL0tjb25maWcmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAxLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDEwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAgIDE6XHQjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wXG4gICAyOlx0Y29uZmlnIERJQlNcbiAgIDM6XHRcdHRyaXN0YXRlIFwmIzM0O0RpcmVjdCBJbnRlcm5hbCBCdWZmZXIgU2hhcmluZyBzdXBwb3J0XCYjMzQ7XG4gICA0Olx0XHRkZWZhdWx0IG5cbiAgIDU6XHRcdGhlbHBcbiAgIDY6XHRcdCAgRGlyZWN0IEludGVybmFsIEJ1ZmZlciBTaGFyaW5nIChESUJTKSBpcyBhIGNvbW11bmljYXRpb24gbWV0aG9kIHRoYXRcbiAgIDc6XHRcdCAgdXNlcyBjb21tb24gcGh5c2ljYWwgKGludGVybmFsKSBtZW1vcnkgZm9yIHN5bmNocm9ub3VzIGRpcmVjdCBhY2Nlc3NcbiAgIDg6XHRcdCAgaW50byBhIHJlbW90ZSBidWZmZXIuXG4gICA5Olx0XG4gIDEwOlx0XHQgIFNlbGVjdCB0aGlzIG9wdGlvbiB0byBwcm92aWRlIHRoZSBhYnN0cmFjdGlvbiBsYXllciBiZXR3ZWVuXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE4IDA3OjUxPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE3ODg2CgkJCQkJCQlvdXRwdXQ6IDM0CgkJCQkJCQl0aG91Z2h0czogNzQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQ29uZmlndXJhdGlvbiBDaGVja2xpc3QqKgoKQWxyaWdodCwgbGV0JiMzOTtzIGdldCBkb3duIHRvIGJyYXNzIHRhY2tzLiBJIG5lZWQgdG8gZmlndXJlIG91dCB0aGUgcmlnaHQgY29uZmlndXJhdGlvbiBzZXR0aW5ncy4gVGhlIGtleSBpcyBnb2luZyB0byBiZSBgRElCU2AsIHRoYXQmIzM5O3MgYSBnaXZlbi4gTm93LCBsZXQmIzM5O3MgcnVuIHRocm91Z2ggdGhlIHVzdWFsIHN1c3BlY3RzOiBgU01DYCwgYElORVRgLCBgSU5GSU5JQkFORGAsIGFuZCwgb2YgY291cnNlLCBgRElCU2AuIEhvbGQgb24uLi4gYElORVRgIGlzIGFsbW9zdCBhbHdheXMgZW5hYmxlZCwgc28gdGhhdCYjMzk7cyBsaWtlbHkgYWxyZWFkeSBzb3J0ZWQuIGBJTkZJTklCQU5EYCBpcyBkZWZpbml0ZWx5IHJlcXVpcmVkLCBhbmQgSSYjMzk7dmUgYWxyZWFkeSBlc3RhYmxpc2hlZCB0aGUgbmVlZCBmb3IgYERJQlNgLiBOb3csIHRoZSBuZXh0IHF1ZXN0aW9uIGJlY29tZXMgd2hldGhlciBJJiMzOTtsbCBuZWVkIGBESUJTX0xPYCBhcyB3ZWxsLiBUaGF0IG5lZWRzIGNoZWNraW5nLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjM0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xOCAwNzo1MTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvZGlicy9LY29uZmlnJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMTEsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMTAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7ICAxMTpcdFx0ICBkaWJzIGRldmljZXMgYW5kIGRpYnMgY2xpZW50cyBsaWtlIHRoZSBTTUMgcHJvdG9jb2wuXG4gIDEyOlx0XHQgIFRoZSBtb2R1bGUgbmFtZSBpcyBkaWJzLlxuICAxMzpcdFxuICAxNDpcdGNvbmZpZyBESUJTX0xPXG4gIDE1Olx0XHRib29sIFwmIzM0O0ludHJhLU9TIHNob3J0Y3V0IHdpdGggZGlicyBsb29wYmFja1wmIzM0O1xuICAxNjpcdFx0ZGVwZW5kcyBvbiBESUJTXG4gIDE3Olx0XHRkZWZhdWx0IG5cbiAgMTg6XHRcdGhlbHBcbiAgMTk6XHRcdCAgRElCU19MTyBlbmFibGVzIHRoZSBjcmVhdGlvbiBvZiBhbiBzb2Z0d2FyZS1lbXVsYXRlZCBkaWJzIGRldmljZVxuICAyMDpcdFx0ICBuYW1lZCBsbyB3aGljaCBjYW4gYmUgdXNlZCBmb3IgdHJhbnNmZXJyaW5nIGRhdGEgd2hlbiBjb21tdW5pY2F0aW9uXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE4IDA3OjUxPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE4Mjg0CgkJCQkJCQlvdXRwdXQ6IDM3CgkJCQkJCQl0aG91Z2h0czogNDc0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFuYWx5c2lzIG9mIHRoZSBTeXprYWxsZXIgRnV6emluZyBDb25maWd1cmF0aW9uIGFuZCBDb2RlIFBhdGNoKioKCk9rYXksIGhlcmUmIzM5O3Mgd2hhdCBJJiMzOTttIHRoaW5raW5nLiBJJiMzOTt2ZSBnb3QgYSBnb29kIGhhbmRsZSBvbiB0aGlzLiBUaGUgYERJQlNfTE9gIG9wdGlvbiBpcyBleGFjdGx5IHdoYXQgSSB3YXMgaG9waW5nIGZvci4gSXQgZW5hYmxlcyB0aGlzIHNvZnR3YXJlLWVtdWxhdGVkIGRpYnMgZGV2aWNlLCBuYW1lZCBgbG9gLCB3aGljaCBpcyBwZXJmZWN0IGZvciBsb2NhbCBkYXRhIHRyYW5zZmVycywgYW5kIHRoYXQmIzM5O3MgZXhhY3RseSB3aGF0IHdlIG5lZWQgdG8gZnV6eiBlZmZlY3RpdmVseSB3aXRoIHN5emthbGxlci4gU28sIGBESUJTX0xPYCBpcyBhIGRlZmluaXRlIG11c3QtaGF2ZSBmb3IgdGhlIGNvbmZpZ3VyYXRpb25zLgoKU28sIHRoZSBjb25maWcgb3B0aW9ucyBJIGFtIGdvaW5nIHRvIHVzZSBhcmU6IGBTTUNgLCBgSU5GSU5JQkFORGAsIGBESUJTYCwgYW5kIHRoYXQgY3J1Y2lhbCBgRElCU19MT2AuCgpOb3csIHJlZ2FyZGluZyB0aGUga2V5IHN5bWJvbHMsIEkmIzM5O20gZm9jdXNpbmcgb24gdGhlc2UgZm9yIG15IGZ1enppbmcgZWZmb3J0czogYHNtY19sbGNfc3J2X2FkZF9saW5rYCwgYHNtY19sbGNfY2xpX2FkZF9saW5rYCwgYW5kIGBzbWNfbGxjX2FkZF9saW5rX2xvY2FsYC4gVGhleSBhcmUgYWxsIHJlbGF0ZWQgdG8gYWRkX2xpbmsgZmxvd3MsIHdoaWNoIGFyZSBjZW50cmFsIHRvIHRoaXMuCgpJIGp1c3QgZG91YmxlLWNoZWNrZWQgYW5kIHJ1bGVkIG91dCBgU01DX0RJQUdgIGFuZCBgU01DX0hTX0NUUkxfQlBGYCBiZWNhdXNlIHRoZXkgYXJlIG5vdCBuZWVkZWQgZm9yIG15IHB1cnBvc2VzLgoKTmV4dCwgSSByZXZpZXdlZCB0aGUgY29kZSBwYXRjaC4gTG9va3MgbGlrZSB0aGlzIGlzIGFkZHJlc3NpbmcgYSBtZW1vcnkgbGVhayBvciBhIHN0YXRlIG1hY2hpbmUgcHJvYmxlbSByZWxhdGVkIHRvIFNNQyBMTEMgZmxvdyBoYW5kbGluZy4gVGhlIGtleSBwYXJ0IGlzIHRoYXQgYWRkZWQgY29tbWVudDogYC8qIGZyZWUgYW55IHFlbnRyeSBzdGFzaGVkIGluIFJFUV9BRERfTElOSyBzdGF0ZSAqL2AKCkVzc2VudGlhbGx5LCB0aGlzIGZpeCBpcyBmcmVlaW5nIGEgcXVldWUgZW50cnkgc3Rhc2hlZCBpbiBhIHNwZWNpZmljIHN0YXRlIHRvIHByZXZlbnQgYSBsZWFrLCB3aGljaCBpcyBmdW5jdGlvbmFsbHkgc2lnbmlmaWNhbnQuIFRoaXMgcGF0Y2ggaXMgcmVhY2hhYmxlIHZpYSBgc21jX2xsY19ldmVudF9oYW5kbGVyYCwgd2hpY2ggaXMgcmVzcG9uc2libGUgZm9yIHByb2Nlc3NpbmcgdGhvc2UgTExDIGV2ZW50cy4gVGhlIGZ1bmN0aW9ucywgd2hpY2ggSSBpZGVudGlmaWVkIGFib3ZlLCBpbml0aWF0ZSBvciBwcm9jZXNzIGBhZGRfbGlua2AgZmxvd3MuCgpNeSBuZXh0IHN0ZXAgaXMgdG8gbWFrZSBzdXJlIGBzbWNfbGxjX2Zsb3dfcWVudHJ5X2RlbGAgaXMgdmlzaWJsZSBhbmQgYWNjZXNzaWJsZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTggMDc6NTE8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7c21jX2xsY19mbG93X3FlbnRyeV9kZWwmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvc21jLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvc21jL2FmX3NtYy5jPTYxOD1zdGF0aWMgaW50IHNtY3JfY2xudF9jb25mX2ZpcnN0X2xpbmsoc3RydWN0IHNtY19zb2NrICpzbWMpXG4tLVxubmV0L3NtYy9hZl9zbWMuYy02MzktXHRyYyA9IHNtY19sbGNfZXZhbF9jb25mX2xpbmsocWVudHJ5LCBTTUNfTExDX1JFUSk7XG5uZXQvc21jL2FmX3NtYy5jOjY0MDpcdHNtY19sbGNfZmxvd19xZW50cnlfZGVsKFx1MDAyNmxpbmstXHUwMDNlbGdyLVx1MDAzZWxsY19mbG93X2xjbCk7XG5uZXQvc21jL2FmX3NtYy5jLTY0MS1cdGlmIChyYylcbi0tXG5uZXQvc21jL2FmX3NtYy5jPTE4NzI9c3RhdGljIGludCBzbWNyX3NlcnZfY29uZl9maXJzdF9saW5rKHN0cnVjdCBzbWNfc29jayAqc21jKVxuLS1cbm5ldC9zbWMvYWZfc21jLmMtMTkwNC1cdHJjID0gc21jX2xsY19ldmFsX2NvbmZfbGluayhxZW50cnksIFNNQ19MTENfUkVTUCk7XG5uZXQvc21jL2FmX3NtYy5jOjE5MDU6XHRzbWNfbGxjX2Zsb3dfcWVudHJ5X2RlbChcdTAwMjZsaW5rLVx1MDAzZWxnci1cdTAwM2VsbGNfZmxvd19sY2wpO1xubmV0L3NtYy9hZl9zbWMuYy0xOTA2LVx0aWYgKHJjKVxuLS1cbm5ldC9zbWMvc21jX2xsYy5jPTIwNz1zdHJ1Y3Qgc21jX2xsY19xZW50cnkgKnNtY19sbGNfZmxvd19xZW50cnlfY2xyKHN0cnVjdCBzbWNfbGxjX2Zsb3cgKmZsb3cpXG4tLVxubmV0L3NtYy9zbWNfbGxjLmMtMjE0LVxubmV0L3NtYy9zbWNfbGxjLmM6MjE1OnZvaWQgc21jX2xsY19mbG93X3FlbnRyeV9kZWwoc3RydWN0IHNtY19sbGNfZmxvdyAqZmxvdylcbm5ldC9zbWMvc21jX2xsYy5jLTIxNi17XG4tLVxubmV0L3NtYy9zbWNfbGxjLmM9MzM2PXN0cnVjdCBzbWNfbGxjX3FlbnRyeSAqc21jX2xsY193YWl0KHN0cnVjdCBzbWNfbGlua19ncm91cCAqbGdyLFxuLS1cbm5ldC9zbWMvc21jX2xsYy5jLTM0OS1cdCAgICAobG5rIFx1MDAyNlx1MDAyNiAhc21jX2xpbmtfdXNhYmxlKGxuaykpIHx8IGxpc3RfZW1wdHkoXHUwMDI2bGdyLVx1MDAzZWxpc3QpKSB7XG5uZXQvc21jL3NtY19sbGMuYzozNTA6XHRcdHNtY19sbGNfZmxvd19xZW50cnlfZGVsKGZsb3cpO1xubmV0L3NtYy9zbWNfbGxjLmMtMzUxLVx0XHRnb3RvIG91dDtcbi0tXG5uZXQvc21jL3NtY19sbGMuYy0zNjctXHRcdFx0ICAgICBmbG93LVx1MDAzZXFlbnRyeS1cdTAwM2Vtc2cucmF3Lmhkci5mbGFncyk7XG5uZXQvc21jL3NtY19sbGMuYzozNjg6XHRcdHNtY19sbGNfZmxvd19xZW50cnlfZGVsKGZsb3cpO1xubmV0L3NtYy9zbWNfbGxjLmMtMzY5LVx0fVxuLS1cbm5ldC9zbWMvc21jX2xsYy5jPTg4Nz1zdGF0aWMgaW50IHNtY19sbGNfY2xpX3JrZXlfZXhjaGFuZ2Uoc3RydWN0IHNtY19saW5rICpsaW5rLFxuLS1cbm5ldC9zbWMvc21jX2xsYy5jLTkxOC1cdFx0fVxubmV0L3NtYy9zbWNfbGxjLmM6OTE5Olx0XHRzbWNfbGxjX2Zsb3dfcWVudHJ5X2RlbChcdTAwMjZsZ3ItXHUwMDNlbGxjX2Zsb3dfbGNsKTtcbm5ldC9zbWMvc21jX2xsYy5jLTkyMC1cdFx0cmMgPSBzbWNfbGxjX2FkZF9saW5rX2NvbnQobGluaywgbGlua19uZXcsIFx1MDAyNm51bV9ya2V5c19zZW5kLFxuLS1cbm5ldC9zbWMvc21jX2xsYy5jPTk0MT1zdGF0aWMgaW50IHNtY19sbGNfY2xpX2NvbmZfbGluayhzdHJ1Y3Qgc21jX2xpbmsgKmxpbmssXG4tLVxubmV0L3NtYy9zbWNfbGxjLmMtOTYxLVx0XHRzbWNfbGxjX3NlbmRfbWVzc2FnZShsaW5rLCBcdTAwMjZxZW50cnktXHUwMDNlbXNnKTtcbm5ldC9zbWMvc21jX2xsYy5jOjk2MjpcdFx0c21jX2xsY19mbG93X3FlbnRyeV9kZWwoXHUwMDI2bGdyLVx1MDAzZWxsY19mbG93X2xjbCk7XG5uZXQvc21jL3NtY19sbGMuYy05NjMtXHRcdHJldHVybiAtRU5PTElOSztcbi0tXG5uZXQvc21jL3NtY19sbGMuYy05NjUtXHRzbWNfbGxjX3NhdmVfcGVlcl91aWQocWVudHJ5KTtcbm5ldC9zbWMvc21jX2xsYy5jOjk2NjpcdHNtY19sbGNfZmxvd19xZW50cnlfZGVsKFx1MDAyNmxnci1cdTAwM2VsbGNfZmxvd19sY2wpO1xubmV0L3NtYy9zbWNfbGxjLmMtOTY3LVxuLS1cbm5ldC9zbWMvc21jX2xsYy5jPTEyODg9c3RhdGljIHZvaWQgc21jX2xsY19kZWxldGVfYXN5bV9saW5rKHN0cnVjdCBzbWNfbGlua19ncm91cCAqbGdyKVxuLS1cbm5ldC9zbWMvc21jX2xsYy5jLTEzMTYtXHR9XG5uZXQvc21jL3NtY19sbGMuYzoxMzE3Olx0c21jX2xsY19mbG93X3FlbnRyeV9kZWwoXHUwMDI2bGdyLVx1MDAzZWxsY19mbG93X2xjbCk7XG5uZXQvc21jL3NtY19sbGMuYy0xMzE4LW91dF9mcmVlOlxuLS1cbm5ldC9zbWMvc21jX2xsYy5jPTEzMjI9c3RhdGljIGludCBzbWNfbGxjX3Nydl9ya2V5X2V4Y2hhbmdlKHN0cnVjdCBzbWNfbGluayAqbGluayxcbi0tXG5uZXQvc21jL3NtY19sbGMuYy0xMzU1LVx0XHR9XG5uZXQvc21jL3NtY19sbGMuYzoxMzU2Olx0XHRzbWNfbGxjX2Zsb3dfcWVudHJ5X2RlbChcdTAwMjZsZ3ItXHUwMDNlbGxjX2Zsb3dfbGNsKTtcbm5ldC9zbWMvc21jX2xsYy5jLTEzNTctXHR9IHdoaWxlIChudW1fcmtleXNfc2VuZCB8fCBudW1fcmtleXNfcmVjdik7XG4tLVxubmV0L3NtYy9zbWNfbGxjLmM9MTM2Mz1zdGF0aWMgaW50IHNtY19sbGNfc3J2X2NvbmZfbGluayhzdHJ1Y3Qgc21jX2xpbmsgKmxpbmssXG4tLVxubmV0L3NtYy9zbWNfbGxjLmMtMTM4Mi1cdFx0aWYgKHFlbnRyeSlcbm5ldC9zbWMvc21jX2xsYy5jOjEzODM6XHRcdFx0c21jX2xsY19mbG93X3FlbnRyeV9kZWwoXHUwMDI2bGdyLVx1MDAzZWxsY19mbG93X2xjbCk7XG5uZXQvc21jL3NtY19sbGMuYy0xMzg0LVx0XHRyZXR1cm4gLUVOT0xJTks7XG4tLVxubmV0L3NtYy9zbWNfbGxjLmMtMTM5Mi1cdFx0c21jcl9sZ3Jfc2V0X3R5cGUobGdyLCBsZ3JfbmV3X3QpO1xubmV0L3NtYy9zbWNfbGxjLmM6MTM5MzpcdHNtY19sbGNfZmxvd19xZW50cnlfZGVsKFx1MDAyNmxnci1cdTAwM2VsbGNfZmxvd19sY2wpO1xubmV0L3NtYy9zbWNfbGxjLmMtMTM5NC1cdHJldHVybiAwO1xuLS1cbm5ldC9zbWMvc21jX2xsYy5jPTE0MDY9aW50IHNtY19sbGNfc3J2X2FkZF9saW5rKHN0cnVjdCBzbWNfbGluayAqbGluayxcbi0tXG5uZXQvc21jL3NtY19sbGMuYy0xNDgzLVx0aWYgKGFkZF9sbGMtXHUwMDNlaGQuZmxhZ3MgXHUwMDI2IFNNQ19MTENfRkxBR19BRERfTE5LX1JFSikge1xubmV0L3NtYy9zbWNfbGxjLmM6MTQ4NDpcdFx0c21jX2xsY19mbG93X3FlbnRyeV9kZWwoXHUwMDI2bGdyLVx1MDAzZWxsY19mbG93X2xjbCk7XG5uZXQvc21jL3NtY19sbGMuYy0xNDg1LVx0XHRyYyA9IC1FTk9MSU5LO1xuLS1cbm5ldC9zbWMvc21jX2xsYy5jLTE0OTQtXHRzbWNfbGxjX3NhdmVfYWRkX2xpbmtfaW5mbyhsaW5rX25ldywgYWRkX2xsYyk7XG5uZXQvc21jL3NtY19sbGMuYzoxNDk1Olx0c21jX2xsY19mbG93X3FlbnRyeV9kZWwoXHUwMDI2bGdyLVx1MDAzZWxsY19mbG93X2xjbCk7XG5uZXQvc21jL3NtY19sbGMuYy0xNDk2LVxuLS1cbm5ldC9zbWMvc21jX2xsYy5jPTE1NTk9c3RhdGljIHZvaWQgc21jX2xsY19hZGRfbGlua193b3JrKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaylcbi0tXG5uZXQvc21jL3NtY19sbGMuYy0xNTY1LVx0XHQvKiBsaW5rIGdyb3VwIGlzIHRlcm1pbmF0aW5nICovXG5uZXQvc21jL3NtY19sbGMuYzoxNTY2Olx0XHRzbWNfbGxjX2Zsb3dfcWVudHJ5X2RlbChcdTAwMjZsZ3ItXHUwMDNlbGxjX2Zsb3dfbGNsKTtcbm5ldC9zbWMvc21jX2xsYy5jLTE1NjctXHRcdGdvdG8gb3V0O1xuLS1cbm5ldC9zbWMvc21jX2xsYy5jPTE2NzI9c3RhdGljIHZvaWQgc21jX2xsY19wcm9jZXNzX3Nydl9kZWxldGVfbGluayhzdHJ1Y3Qgc21jX2xpbmtfZ3JvdXAgKmxncilcbi0tXG5uZXQvc21jL3NtY19sbGMuYy0xNzE3LVx0XHRcdGlmIChxZW50cnkyKVxubmV0L3NtYy9zbWNfbGxjLmM6MTcxODpcdFx0XHRcdHNtY19sbGNfZmxvd19xZW50cnlfZGVsKFx1MDAyNmxnci1cdTAwM2VsbGNfZmxvd19sY2wpO1xubmV0L3NtYy9zbWNfbGxjLmMtMTcxOS1cdFx0fVxuLS1cbm5ldC9zbWMvc21jX2xsYy5jPTE3NDA9c3RhdGljIHZvaWQgc21jX2xsY19kZWxldGVfbGlua193b3JrKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaylcbi0tXG5uZXQvc21jL3NtY19sbGMuYy0xNzQ2LVx0XHQvKiBsaW5rIGdyb3VwIGlzIHRlcm1pbmF0aW5nICovXG5uZXQvc21jL3NtY19sbGMuYzoxNzQ3Olx0XHRzbWNfbGxjX2Zsb3dfcWVudHJ5X2RlbChcdTAwMjZsZ3ItXHUwMDNlbGxjX2Zsb3dfbGNsKTtcbm5ldC9zbWMvc21jX2xsYy5jLTE3NDgtXHRcdGdvdG8gb3V0O1xuLS1cbm5ldC9zbWMvc21jX2xsYy5jPTE3NjA9c3RhdGljIHZvaWQgc21jX2xsY19ybXRfY29uZl9ya2V5KHN0cnVjdCBzbWNfbGlua19ncm91cCAqbGdyKVxuLS1cbm5ldC9zbWMvc21jX2xsYy5jLTE3OTUtXHRzbWNfbGxjX3NlbmRfbWVzc2FnZShsaW5rLCBcdTAwMjZxZW50cnktXHUwMDNlbXNnKTtcbm5ldC9zbWMvc21jX2xsYy5jOjE3OTY6XHRzbWNfbGxjX2Zsb3dfcWVudHJ5X2RlbChcdTAwMjZsZ3ItXHUwMDNlbGxjX2Zsb3dfcm10KTtcbm5ldC9zbWMvc21jX2xsYy5jLTE3OTctfVxuLS1cbm5ldC9zbWMvc21jX2xsYy5jPTE4MDA9c3RhdGljIHZvaWQgc21jX2xsY19ybXRfZGVsZXRlX3JrZXkoc3RydWN0IHNtY19saW5rX2dyb3VwICpsZ3IpXG4tLVxubmV0L3NtYy9zbWNfbGxjLmMtMTg0OS1cdHNtY19sbGNfc2VuZF9tZXNzYWdlKGxpbmssIFx1MDAyNnFlbnRyeS1cdTAwM2Vtc2cpO1xubmV0L3NtYy9zbWNfbGxjLmM6MTg1MDpcdHNtY19sbGNfZmxvd19xZW50cnlfZGVsKFx1MDAyNmxnci1cdTAwM2VsbGNfZmxvd19ybXQpO1xubmV0L3NtYy9zbWNfbGxjLmMtMTg1MS19XG4tLVxubmV0L3NtYy9zbWNfbGxjLmM9MTg3NT1zdGF0aWMgdm9pZCBzbWNfbGxjX2V2ZW50X2hhbmRsZXIoc3RydWN0IHNtY19sbGNfcWVudHJ5ICpxZW50cnkpXG4tLVxubmV0L3NtYy9zbWNfbGxjLmMtMTkxNC1cdFx0XHRcdC8qIGZyZWUgYW55IHFlbnRyeSBzdGFzaGVkIGluIFJFUV9BRERfTElOSyBzdGF0ZSAqL1xubmV0L3NtYy9zbWNfbGxjLmM6MTkxNTpcdFx0XHRcdHNtY19sbGNfZmxvd19xZW50cnlfZGVsKFx1MDAyNmxnci1cdTAwM2VsbGNfZmxvd19sY2wpO1xubmV0L3NtYy9zbWNfbGxjLmMtMTkxNi1cdFx0XHRcdGxnci1cdTAwM2VsbGNfZmxvd19sY2wudHlwZSA9IFNNQ19MTENfRkxPV19BRERfTElOSztcbi0tXG5uZXQvc21jL3NtY19sbGMuYz0yMjIyPWludCBzbWNfbGxjX2RvX2NvbmZpcm1fcmtleShzdHJ1Y3Qgc21jX2xpbmsgKnNlbmRfbGluayxcbi0tXG5uZXQvc21jL3NtY19sbGMuYy0yMjM4LVx0aWYgKHFlbnRyeSlcbm5ldC9zbWMvc21jX2xsYy5jOjIyMzk6XHRcdHNtY19sbGNfZmxvd19xZW50cnlfZGVsKFx1MDAyNmxnci1cdTAwM2VsbGNfZmxvd19sY2wpO1xubmV0L3NtYy9zbWNfbGxjLmMtMjI0MC1cdHJldHVybiByYztcbi0tXG5uZXQvc21jL3NtY19sbGMuYz0yMjQ0PWludCBzbWNfbGxjX2RvX2RlbGV0ZV9ya2V5KHN0cnVjdCBzbWNfbGlua19ncm91cCAqbGdyLFxuLS1cbm5ldC9zbWMvc21jX2xsYy5jLTIyNjUtXHRpZiAocWVudHJ5KVxubmV0L3NtYy9zbWNfbGxjLmM6MjI2NjpcdFx0c21jX2xsY19mbG93X3FlbnRyeV9kZWwoXHUwMDI2bGdyLVx1MDAzZWxsY19mbG93X2xjbCk7XG5uZXQvc21jL3NtY19sbGMuYy0yMjY3LVx0cmV0dXJuIHJjO1xuLS1cbm5ldC9zbWMvc21jX2xsYy5oPTExMD1zdHJ1Y3Qgc21jX2xsY19xZW50cnkgKnNtY19sbGNfZmxvd19xZW50cnlfY2xyKHN0cnVjdCBzbWNfbGxjX2Zsb3cgKmZsb3cpO1xubmV0L3NtYy9zbWNfbGxjLmg6MTExOnZvaWQgc21jX2xsY19mbG93X3FlbnRyeV9kZWwoc3RydWN0IHNtY19sbGNfZmxvdyAqZmxvdyk7XG5uZXQvc21jL3NtY19sbGMuaC0xMTItdm9pZCBzbWNfbGxjX3NlbmRfbGlua19kZWxldGVfYWxsKHN0cnVjdCBzbWNfbGlua19ncm91cCAqbGdyLCBib29sIG9yZCxcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zNy8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTggMDc6NTE8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjIzOTQKCQkJCQkJCW91dHB1dDogMTgyCgkJCQkJCQl0aG91Z2h0czogMjgxCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFzc2Vzc21lbnQgb2YgdGhlIFBhdGNoKioKCk9rYXksIHNvIGBzbWNfbGxjX2Zsb3dfcWVudHJ5X2RlbGAgaXMgZXhwb3J0ZWQgaW4gdGhlIGhlYWRlciBmaWxlIGBzbWNfbGxjLmhgIGFuZCBpcyB1c2VkIGluIGJvdGggYGFmX3NtYy5jYCBhbmQgYHNtY19sbGMuY2AuIFRoYXQmIzM5O3MgYSBrZXkgc3RhcnRpbmcgcG9pbnQuIFRoaXMgcGF0Y2ggYWRkcmVzc2VzIGEgbWVtb3J5IGxlYWsgc3BlY2lmaWNhbGx5IHdpdGhpbiBgc21jX2xsY19ldmVudF9oYW5kbGVyYCB3aGVuIHRoZSBzeXN0ZW0gdHJhbnNpdGlvbnMgZnJvbSB0aGUgYFNNQ19MTENfRkxPV19SRVFfQUREX0xJTktgIHN0YXRlIHRvIGBTTUNfTExDX0ZMT1dfQUREX0xJTktgLiBZZXAsIGFic29sdXRlbHksIHRoaXMgaXMgYSBwcmltZSBjYW5kaWRhdGUgZm9yIGZ1enppbmcuIFdlIGhhdmUgYSBkZWZpbmVkIHN0YXRlIHRyYW5zaXRpb24gdGhhdCYjMzk7cyBrbm93biB0byBiZSBwcm9ibGVtYXRpYywgd2hpY2ggbWFrZXMgaXQgZWFzaWVyIHRvIHRhcmdldCB3aXRoIGZvY3VzZWQgZnV6emluZy4KCkxldCYjMzk7cyBuYWlsIGRvd24gdGhlIGZpbmFsIGFuc3dlci4KClRoZSBmdXp6aW5nIGlzICpkZWZpbml0ZWx5KiB3b3J0aHdoaWxlLgoKSGVyZSBhcmUgdGhlIHNwZWNpZmljIHN5bWJvbHMgSSB3YW50IHRvIHByaW9yaXRpemUgZHVyaW5nIGZ1enppbmc6IGBzbWNfbGxjX3Nydl9hZGRfbGlua2AsIGBzbWNfbGxjX2NsaV9hZGRfbGlua2AsIGFuZCBgc21jX2xsY19hZGRfbGlua19sb2NhbGAuIFRoZXkmIzM5O3JlIGFsbCByZWxhdGVkIHRvIHRoZSBhZGRfbGluayBmbG93LCB3aGljaCBpcyB3aGVyZSB0aGUgbGVhayBvY2N1cnMuCgpXZSBuZWVkIHRvIG1ha2Ugc3VyZSB3ZSBoYXZlIHRoZSBmb2xsb3dpbmcgY29uZmlndXJhdGlvbnMgZW5hYmxlZDogYFNNQ2AsIGBJTkZJTklCQU5EYCwgYERJQlNgLCBhbmQgYERJQlNfTE9gLiBESUJTIGFuZCBESUJTX0xPIGFyZSBlc3NlbnRpYWwgZm9yIGFsbG93aW5nIGxvY2FsIGxvb3BiYWNrIHRlc3Rpbmcgb2YgU01DIHVzaW5nIGVtdWxhdGVkIFJETUEuIFRoaXMgd2lsbCBiZSB0aGUgbW9zdCBlZmZlY3RpdmUgd2F5IHRvIHRlc3QgdGhpcyBmaXguCgpUaGUgcmVhc29uaW5nIGlzIHByZXR0eSBzdHJhaWdodGZvcndhcmQ6IHRoZSBwYXRjaCBleHBsaWNpdGx5IGZyZWVzIGEgc3Rhc2hlZCBxdWV1ZSBlbnRyeSBkdXJpbmcgdGhlIHN0YXRlIHRyYW5zaXRpb24sIGZpeGluZyBhIG1lbW9yeSBsZWFrLiBUaGlzIGlzIGNvcmUga2VybmVsIGxvZ2ljIHRoYXQmIzM5O3MgcmVhY2hhYmxlIGFuZCBjcml0aWNhbCB0byB0aGUgU01DIHByb3RvY29sLiBGdXp6aW5nIHNob3VsZCBob25lIGluIG9uIHRoZSBpbml0aWF0aW9uIGFuZCBwcm9jZXNzaW5nIG9mIHRoYXQgYWRkX2xpbmsgZmxvdyBzcGVjaWZpY2FsbHkuIEl0JiMzOTtzIGEgY2xlYW4gdGFyZ2V0IGFuZCBhIHNvbGlkIGFwcHJvYWNoLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjM4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xOCAwNzo1MTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7U01DJiMzNDssCiAgICAmIzM0O0lORklOSUJBTkQmIzM0OywKICAgICYjMzQ7RElCUyYjMzQ7LAogICAgJiMzNDtESUJTX0xPJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7c21jX2xsY19zcnZfYWRkX2xpbmsmIzM0OywKICAgICYjMzQ7c21jX2xsY19jbGlfYWRkX2xpbmsmIzM0OywKICAgICYjMzQ7c21jX2xsY19hZGRfbGlua19sb2NhbCYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmaXhlcyBhIG1lbW9yeSBsZWFrIGluIHRoZSBTTUMgTExDIGV2ZW50IGhhbmRsZXIgYnkgZXhwbGljaXRseSBmcmVlaW5nIHRoZSBzdGFzaGVkIHFlbnRyeSB3aGVuIHRyYW5zaXRpb25pbmcgZnJvbSB0aGUgUkVRX0FERF9MSU5LIHN0YXRlIHRvIHRoZSBBRERfTElOSyBzdGF0ZS4gVGhpcyBpcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMgZm9yIHRoZSBTTUMgcHJvdG9jb2wuIEZ1enppbmcgc2hvdWxkIGZvY3VzIG9uIHRoZSBhZGRfbGluayBmbG93IGluaXRpYXRpb24gYW5kIHByb2Nlc3NpbmcgZnVuY3Rpb25zLiBESUJTIGFuZCBESUJTX0xPIGFyZSByZXF1aXJlZCB0byBlbmFibGUgbG9jYWwgbG9vcGJhY2sgdGVzdGluZyBvZiBTTUMgb3ZlciBlbXVsYXRlZCBSRE1BLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtTTUMmIzM0OywKICAgICYjMzQ7SU5GSU5JQkFORCYjMzQ7LAogICAgJiMzNDtESUJTJiMzNDssCiAgICAmIzM0O0RJQlNfTE8mIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtzbWNfbGxjX3Nydl9hZGRfbGluayYjMzQ7LAogICAgJiMzNDtzbWNfbGxjX2NsaV9hZGRfbGluayYjMzQ7LAogICAgJiMzNDtzbWNfbGxjX2FkZF9saW5rX2xvY2FsJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGZpeGVzIGEgbWVtb3J5IGxlYWsgaW4gdGhlIFNNQyBMTEMgZXZlbnQgaGFuZGxlciBieSBleHBsaWNpdGx5IGZyZWVpbmcgdGhlIHN0YXNoZWQgcWVudHJ5IHdoZW4gdHJhbnNpdGlvbmluZyBmcm9tIHRoZSBSRVFfQUREX0xJTksgc3RhdGUgdG8gdGhlIEFERF9MSU5LIHN0YXRlLiBUaGlzIGlzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYyBmb3IgdGhlIFNNQyBwcm90b2NvbC4gRnV6emluZyBzaG91bGQgZm9jdXMgb24gdGhlIGFkZF9saW5rIGZsb3cgaW5pdGlhdGlvbiBhbmQgcHJvY2Vzc2luZyBmdW5jdGlvbnMuIERJQlMgYW5kIERJQlNfTE8gYXJlIHJlcXVpcmVkIHRvIGVuYWJsZSBsb2NhbCBsb29wYmFjayB0ZXN0aW5nIG9mIFNNQyBvdmVyIGVtdWxhdGVkIFJETUEuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzkvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE4IDA3OjUxPC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5JZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40MC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTggMDc6NTE8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+a21zYW4tZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+YmVzdC1leHBlbnNpdmU8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggZml4ZXMgYSBtZW1vcnkgbGVhayBieSBmcmVlaW5nIGEgc3Rhc2hlZCBgcWVudHJ5YCBpbiBgc21jX2xsY19ldmVudF9oYW5kbGVyYCB3aGVuIHRoZSBzZXJ2ZXIgc3RhcnRzIGBhZGRfbGlua2AgcHJvY2Vzc2luZy4gSXQgZG9lcyBub3QgaW50cm9kdWNlIG9yIGV4cG9zZSBhbnkgdW5pbml0aWFsaXplZCBtZW1vcnkgcmlza3Mgb3IgaW5mby1sZWFrcy4gTWVtb3J5IGxlYWtzIGFuZCB1c2UtYWZ0ZXItZnJlZSBidWdzIGFyZSBlZmZlY3RpdmVseSBkZXRlY3RlZCBieSBLTUVNTEVBSyBhbmQgS0FTQU4uIFRoZXJlZm9yZSwgYSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGlzIG5vdCByZXF1aXJlZC4mIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgc2VjdXJpdHkgZW5naW5lZXIgc3BlY2lhbGl6aW5nIGluIGtlcm5lbCBtZW1vcnkKZXJyb3IgZGV0ZWN0b3JzIChLQVNBTiBhbmQgS01TQU4pLiBZb3VyIGpvYiBpcyB0byByZXZpZXcgdGhlIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQKZGV0ZXJtaW5lIGlmIHRoZSBjb2RlIGNoYW5nZXMganVzdGlmeSBzcGF3bmluZyBhIGRlZGljYXRlZCBLTVNBTiAoS2VybmVsTWVtb3J5U2FuaXRpemVyKQpmdXp6aW5nIHNlc3Npb24gaW4gYWRkaXRpb24gdG8gc3RhbmRhcmQgS0FTQU4gZnV6emluZy4KCkNSSVRJQ0FMIERJU1RJTkNUSU9OIEJFVFdFRU4gS0FTQU4gQU5EIEtNU0FOOgotIFN0YW5kYXJkIEtBU0FOIGtlcm5lbCBidWlsZHMgKHVwc3RyZWFtLWFwcGFybW9yLWthc2FuLmNvbmZpZykgYWxyZWFkeSBlbmFibGUKICBhIGNvbXByZWhlbnNpdmUgc3VpdGUgb2YgZGVidWdnaW5nIHRvb2xzIGFuZCBzYW5pdGl6ZXJzLCBpbmNsdWRpbmcgS0FTQU4KICAob3V0LW9mLWJvdW5kcyBhY2Nlc3NlcywgdXNlLWFmdGVyLWZyZWUsIGRvdWJsZSBmcmVlLCBpbnZhbGlkIGZyZWUpLCBMT0NLREVQCiAgKGxvY2tpbmcgYnVncyBhbmQgZGVhZGxvY2tzKSwgVUItc2FuaXRpemVycywgYW5kIG1lbW9yeSBjb3JydXB0aW9uIGNoZWNrcy4KLSBLTVNBTiAoS2VybmVsTWVtb3J5U2FuaXRpemVyKSBkZXRlY3RzIHJlYWRzIG9mIFVOSU5JVElBTElaRUQgbWVtb3J5IChzdGFjaywgaGVhcCwKICBvciBwYWdlIGFsbG9jYXRpb25zKSBhbmQga2VybmVsLXRvLXVzZXIgbWVtb3J5IGluZm8tbGVha3MuCgpSdWxlOiBUSEVSRSBJUyBOTyBTRU5TRSBJTiBSVU5OSU5HIEEgS01TQU4gU0VTU0lPTiBJRiBBIEJVRyBDQU4gQkUgQ0FVR0hUIEJZIEtBU0FOLApMT0NLREVQLCBPUiBPVEhFUiBTVEFOREFSRCBCVUcgREVURUNUT1JTLgpBIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaW5jdXJzIHNpZ25pZmljYW50IHJlc291cmNlIGNvc3RzLiBZb3UgbXVzdCBPTkxZCnNldCBOZWVkc0tNU0FOPXRydWUgaWYgdGhlIGNvZGUgY2hhbmdlcyBpbnRyb2R1Y2Ugb3IgZXhwb3NlIFVOSU5JVElBTElaRUQgTUVNT1JZIHJpc2tzCnRoYXQgYXJlIGRldGVjdGVkIE9OTFkgYnkgS01TQU4uCgpMb29rIGhvbGlzdGljYWxseSBhdCB0aGUgcGF0Y2ggc2VyaWVzIGFuZCBzdXJyb3VuZGluZyBjb2RlLiBFdmVuIGlmIG5vIGRpcmVjdAp1bmluaXRpYWxpemVkIGZpZWxkIGFjY2Vzc2VzIG9yIG5ldyBidWZmZXIgYWxsb2NhdGlvbnMgYXJlIGFkZGVkIGluIHRoZSBkaWZmIGl0c2VsZiwKYSBwYXRjaCBtYXkgYWx0ZXIgY29udHJvbCBmbG93LCBib3VuZHMgY2hlY2tpbmcsIG9yIGRhdGEgbGVuZ3RoIGNhbGN1bGF0aW9ucyBpbiB3YXlzCnRoYXQgY2hhbmdlIGhvdyB0aGUgcmVzdCBvZiB0aGUgY29kZSBvcGVyYXRlcyBvbiBleGlzdGluZyBidWZmZXJzIChlLmcuIGFsbG93aW5nCnVuaW5pdGlhbGl6ZWQgc3RhY2svaGVhcCBtZW1vcnkgdG8gYmUgcmVhZCwgY29waWVkIHRvIHVzZXIgc3BhY2UsIG9yIHVzZWQgaW4gY29udHJvbApmbG93KS4gRG8gbm90IGhlc2l0YXRlIHRvIHVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGluc3BlY3QgdGhlIHN1cnJvdW5kaW5nIGNvZGUsCmNhbGxlZCBmdW5jdGlvbnMsIGFuZCBjYWxsZXJzLgoKU2V0IE5lZWRzS01TQU49dHJ1ZSBPTkxZIElGIHRoZSBwYXRjaCBpbnRyb2R1Y2VzIG9yIG1vZGlmaWVzOgoxLiBLZXJuZWwgc3RydWN0dXJlcyBzZW50IHRvIHVzZXIgc3BhY2UgKHZpYSBjb3B5X3RvX3VzZXIsIHB1dF91c2VyLCBuZXRsaW5rIHNrYgogICBhdHRyaWJ1dGVzLCBpb2N0bCBvdXRwdXQgYXJndW1lbnRzLCBzb2NrZXQgb3B0aW9ucywgb3IgQlBGIGJ1ZmZlcnMpIHdoZXJlIGZpZWxkcwogICBvciBzdHJ1Y3R1cmUgcGFkZGluZyBtaWdodCBub3QgYmUgZnVsbHkgaW5pdGlhbGl6ZWQvemVyb2VkLgoyLiBDb25kaXRpb25hbCBsb2dpYyBvciBicmFuY2hpbmcgdGhhdCBkZXBlbmRzIG9uIHBvdGVudGlhbGx5IHVuaW5pdGlhbGl6ZWQgdmFyaWFibGVzCiAgIG9yIHN0cnVjdCBmaWVsZHMuCjMuIEFsbG9jYXRpb24gb3IgaW5pdGlhbGl6YXRpb24gb2YgY29tcGxleCBkYXRhIHN0cnVjdHVyZXMgd2hlcmUgdW5pbml0aWFsaXplZCBmaWVsZHMKICAgY291bGQgYmUgcmVhZCBsYXRlciBpbiByZWFjaGFibGUgY29kZSBwYXRocy4KNC4gQm91bmRzIGNoZWNrcywgbGVuZ3Rocywgb3IgbG9naWMgaW4gYSB3YXkgdGhhdCBhbGxvd3Mgc3Vycm91bmRpbmcgY29kZSB0byBhY2Nlc3MKICAgdW5pbml0aWFsaXplZCBieXRlcyBvZiBleGlzdGluZyBidWZmZXJzLgoKU2V0IE5lZWRzS01TQU49ZmFsc2UgSUY6Ci0gVGhlIGNvZGUgY2hhbmdlcyBwcmltYXJpbHkgcmlzayBvdXQtb2YtYm91bmRzIGFjY2VzcywgYXJyYXkgb3ZlcmZsb3dzLCBOVUxMIHBvaW50ZXIKICBkZXJlZmVyZW5jZXMsIGxvY2tpbmcgZGVhZGxvY2tzLCBvciB1c2UtYWZ0ZXItZnJlZSBidWdzICh0aGVzZSBhcmUgYWxyZWFkeSBjYXVnaHQKICBieSBLQVNBTiwgTE9DS0RFUCwgb3Igc3RhbmRhcmQgYnVnIGRldGVjdG9ycykuCi0gQWxsIHN0YWNrL2hlYXAgc3RydWN0dXJlcyB0b3VjaGVkIG9yIGludHJvZHVjZWQgYnkgdGhlIHBhdGNoIGFyZSBmdWxseSB6ZXJvZWQKICBvciBpbml0aWFsaXplZCAoZS5nLiB1c2luZyA9IHswfSwgbWVtc2V0LCBremFsbG9jKSBiZWZvcmUgYmVpbmcgcmVhZCBvciBjb3BpZWQuCi0gVGhlIHBhdGNoIGRvZXMgbm90IGludHJvZHVjZSBhbnkgcmlzayBvZiB1bmluaXRpYWxpemVkIG1lbW9yeSB1c2FnZSBvciBpbmZvLWxlYWtzLgoKVXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gaW5zcGVjdCB0aGUgc3Vycm91bmRpbmcgY29kZSBpZiBuZWNlc3NhcnksIHRoZW4gcHJvdmlkZQpkZXRhaWxlZCBLTVNBTlJlYXNvbmluZyBjb250cmFzdGluZyBLQVNBTiB2cyBLTVNBTiBhcHBsaWNhYmlsaXR5IGZvciB0aGlzIHBhdGNoLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgNzVjOGExZTBjY2Q3YThlMjA1NGJkMzZhNzliMDljODU5ODAzM2Y4NQpBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBUdWUgQXVnIDE4IDA3OjUwOjAwIDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvbmV0L3NtYy9zbWNfbGxjLmMgYi9uZXQvc21jL3NtY19sbGMuYwppbmRleCBhYTZkODNhZjU1ZWRhLi5jN2YwMjIyYWZmOGQwIDEwMDY0NAotLS0gYS9uZXQvc21jL3NtY19sbGMuYwomIzQzOyYjNDM7JiM0MzsgYi9uZXQvc21jL3NtY19sbGMuYwpAQCAtMTkxMSw2ICYjNDM7MTkxMSw4IEBAIHN0YXRpYyB2b2lkIHNtY19sbGNfZXZlbnRfaGFuZGxlcihzdHJ1Y3Qgc21jX2xsY19xZW50cnkgKnFlbnRyeSkKIAkJCWlmIChsZ3ItJmd0O2xsY19mbG93X2xjbC50eXBlID09CiAJCQkJCVNNQ19MTENfRkxPV19SRVFfQUREX0xJTkspIHsKIAkJCQkvKiBzZXJ2ZXIgc3RhcnRlZCBhZGRfbGluayBwcm9jZXNzaW5nICovCiYjNDM7CQkJCS8qIGZyZWUgYW55IHFlbnRyeSBzdGFzaGVkIGluIFJFUV9BRERfTElOSyBzdGF0ZSAqLwomIzQzOwkJCQlzbWNfbGxjX2Zsb3dfcWVudHJ5X2RlbCgmYW1wO2xnci0mZ3Q7bGxjX2Zsb3dfbGNsKTsKIAkJCQlsZ3ItJmd0O2xsY19mbG93X2xjbC50eXBlID0gU01DX0xMQ19GTE9XX0FERF9MSU5LOwogCQkJCXNtY19sbGNfZmxvd19xZW50cnlfc2V0KCZhbXA7bGdyLSZndDtsbGNfZmxvd19sY2wsCiAJCQkJCQkJcWVudHJ5KTsKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NDEvMzwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE4IDA3OjUxPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5rbXNhbi1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIwNjMKCQkJCQkJCW91dHB1dDogNDQKCQkJCQkJCXRob3VnaHRzOiA0NDQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBTTUMgTExDIFBhdGNoKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGZvciBgbmV0L3NtYy9zbWNfbGxjLmNgLiBUaGUgY29yZSBvZiB0aGUgY2hhbmdlIGlzIGFkZGluZyBhIGNhbGwgdG8gYHNtY19sbGNfZmxvd19xZW50cnlfZGVsYCByaWdodCBiZWZvcmUgc2V0dGluZyB0aGUgYGxsY19mbG93X2xjbGAgdHlwZSB0byBgU01DX0xMQ19GTE9XX0FERF9MSU5LYCBhbmQgcmUtc2V0dGluZyB0aGUgYHFlbnRyeWAuIE15IGluaXRpYWwgdGhvdWdodCBpcywgdGhpcyBpcyBsaWtlbHkgYWRkcmVzc2luZyBhIG1lbW9yeSBtYW5hZ2VtZW50IGlzc3VlLiBTcGVjaWZpY2FsbHksIGl0IGxvb2tzIGxpa2UgdGhlcmUgbWlnaHQgaGF2ZSBiZWVuIGEgbWVtb3J5IGxlYWssIG9yIHBvdGVudGlhbGx5IGEgdXNlLWFmdGVyLWZyZWUgc2NlbmFyaW8sIHdoZXJlIGEgcXVldWVkIGVudHJ5IChgcWVudHJ5YCkgd2FzIGJlaW5nIHN0YXNoZWQgaW4gYGxsY19mbG93X2xjbGAgYW5kIG5vdCBwcm9wZXJseSBmcmVlZCB3aGVuIHRoZSBzZXJ2ZXIgaW5pdGlhdGVkIHRoZSAmIzM0O2FkZCBsaW5rJiMzNDsgcHJvY2Vzcy4KClRoZSBjb21tZW50IGluY2x1ZGVkIGluIHRoZSBjb2RlIHJlaW5mb3JjZXMgdGhpcywgZXhwbGljaXRseSBzdGF0aW5nIHRoYXQgd2UmIzM5O3JlIGZyZWVpbmcgYW55IHBvdGVudGlhbGx5IHN0YXNoZWQgYHFlbnRyeWAgaW4gdGhlIGBSRVFfQUREX0xJTktgIHN0YXRlLgoKR2l2ZW4gbXkgdW5kZXJzdGFuZGluZywgdGhlIGFkZGVkIGBzbWNfbGxjX2Zsb3dfcWVudHJ5X2RlbGAgY2FsbCBoYW5kbGVzIHRoZSBjbGVhbnVwLiBNZW1vcnkgbGVha3MsIHdoaWNoIGlzIHRoZSBtb3N0IGxpa2VseSBwcm9ibGVtIGhlcmUsIGFyZSB1c3VhbGx5IGNhdWdodCBieSBLTUVNTEVBSywgYW5kIHVzZS1hZnRlci1mcmVlIGlzc3VlcyBhcmUgdXN1YWxseSBjYXVnaHQgYnkgS0FTQU4uIFdlIGFyZSBkZWxldGluZyBhIHFlbnRyeSBzbyB0aGlzIGlzIHVubGlrZWx5IHRvIGJlIGFuIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHVzYWdlIG9yIGluZm8tbGVhayBzaXR1YXRpb24sIHNvIEtNU0FOIHNob3VsZCBub3QgYmUgbmVlZGVkIGhlcmUuIFRoaXMgcGF0Y2ggc2ltcGx5IGZyZWVzIGEgcHJldmlvdXNseSBhbGxvY2F0ZWQgZW50cnkuIEkgbmVlZCB0byB0YWtlIGEgcXVpY2sgcGVlayBhdCB0aGUgYHNtY19sbGNfZmxvd19xZW50cnlfZGVsYCBmdW5jdGlvbiB0byBiZSBhYnNvbHV0ZWx5IHN1cmUsIGJ1dCBteSBhc3Nlc3NtZW50IHJpZ2h0IG5vdyBpcyB0aGF0IHRoaXMgaXMgYSBzdHJhaWdodGZvcndhcmQgYW5kIG5lY2Vzc2FyeSBmaXggdG8gcHJldmVudCBhIG1lbW9yeSBtYW5hZ2VtZW50IHByb2JsZW0sIHNwZWNpZmljYWxseSByZWxhdGVkIHRvIHRoZSAmIzM0O2FkZCBsaW5rJiMzNDsgcHJvY2Vzc2luZy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40Mi8zPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTggMDc6NTE8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7c21jX2xsY19mbG93X3FlbnRyeV9kZWwmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvc21jL3NtY19sbGMuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvc21jL3NtY19sbGMuYz0yMDc9c3RydWN0IHNtY19sbGNfcWVudHJ5ICpzbWNfbGxjX2Zsb3dfcWVudHJ5X2NscihzdHJ1Y3Qgc21jX2xsY19mbG93ICpmbG93KVxuLS1cbm5ldC9zbWMvc21jX2xsYy5jLTIxNC1cbm5ldC9zbWMvc21jX2xsYy5jOjIxNTp2b2lkIHNtY19sbGNfZmxvd19xZW50cnlfZGVsKHN0cnVjdCBzbWNfbGxjX2Zsb3cgKmZsb3cpXG5uZXQvc21jL3NtY19sbGMuYy0yMTYte1xuLS1cbm5ldC9zbWMvc21jX2xsYy5jPTMzNj1zdHJ1Y3Qgc21jX2xsY19xZW50cnkgKnNtY19sbGNfd2FpdChzdHJ1Y3Qgc21jX2xpbmtfZ3JvdXAgKmxncixcbi0tXG5uZXQvc21jL3NtY19sbGMuYy0zNDktXHQgICAgKGxuayBcdTAwMjZcdTAwMjYgIXNtY19saW5rX3VzYWJsZShsbmspKSB8fCBsaXN0X2VtcHR5KFx1MDAyNmxnci1cdTAwM2VsaXN0KSkge1xubmV0L3NtYy9zbWNfbGxjLmM6MzUwOlx0XHRzbWNfbGxjX2Zsb3dfcWVudHJ5X2RlbChmbG93KTtcbm5ldC9zbWMvc21jX2xsYy5jLTM1MS1cdFx0Z290byBvdXQ7XG4tLVxubmV0L3NtYy9zbWNfbGxjLmMtMzY3LVx0XHRcdCAgICAgZmxvdy1cdTAwM2VxZW50cnktXHUwMDNlbXNnLnJhdy5oZHIuZmxhZ3MpO1xubmV0L3NtYy9zbWNfbGxjLmM6MzY4Olx0XHRzbWNfbGxjX2Zsb3dfcWVudHJ5X2RlbChmbG93KTtcbm5ldC9zbWMvc21jX2xsYy5jLTM2OS1cdH1cbi0tXG5uZXQvc21jL3NtY19sbGMuYz04ODc9c3RhdGljIGludCBzbWNfbGxjX2NsaV9ya2V5X2V4Y2hhbmdlKHN0cnVjdCBzbWNfbGluayAqbGluayxcbi0tXG5uZXQvc21jL3NtY19sbGMuYy05MTgtXHRcdH1cbm5ldC9zbWMvc21jX2xsYy5jOjkxOTpcdFx0c21jX2xsY19mbG93X3FlbnRyeV9kZWwoXHUwMDI2bGdyLVx1MDAzZWxsY19mbG93X2xjbCk7XG5uZXQvc21jL3NtY19sbGMuYy05MjAtXHRcdHJjID0gc21jX2xsY19hZGRfbGlua19jb250KGxpbmssIGxpbmtfbmV3LCBcdTAwMjZudW1fcmtleXNfc2VuZCxcbi0tXG5uZXQvc21jL3NtY19sbGMuYz05NDE9c3RhdGljIGludCBzbWNfbGxjX2NsaV9jb25mX2xpbmsoc3RydWN0IHNtY19saW5rICpsaW5rLFxuLS1cbm5ldC9zbWMvc21jX2xsYy5jLTk2MS1cdFx0c21jX2xsY19zZW5kX21lc3NhZ2UobGluaywgXHUwMDI2cWVudHJ5LVx1MDAzZW1zZyk7XG5uZXQvc21jL3NtY19sbGMuYzo5NjI6XHRcdHNtY19sbGNfZmxvd19xZW50cnlfZGVsKFx1MDAyNmxnci1cdTAwM2VsbGNfZmxvd19sY2wpO1xubmV0L3NtYy9zbWNfbGxjLmMtOTYzLVx0XHRyZXR1cm4gLUVOT0xJTks7XG4tLVxubmV0L3NtYy9zbWNfbGxjLmMtOTY1LVx0c21jX2xsY19zYXZlX3BlZXJfdWlkKHFlbnRyeSk7XG5uZXQvc21jL3NtY19sbGMuYzo5NjY6XHRzbWNfbGxjX2Zsb3dfcWVudHJ5X2RlbChcdTAwMjZsZ3ItXHUwMDNlbGxjX2Zsb3dfbGNsKTtcbm5ldC9zbWMvc21jX2xsYy5jLTk2Ny1cbi0tXG5uZXQvc21jL3NtY19sbGMuYz0xMjg4PXN0YXRpYyB2b2lkIHNtY19sbGNfZGVsZXRlX2FzeW1fbGluayhzdHJ1Y3Qgc21jX2xpbmtfZ3JvdXAgKmxncilcbi0tXG5uZXQvc21jL3NtY19sbGMuYy0xMzE2LVx0fVxubmV0L3NtYy9zbWNfbGxjLmM6MTMxNzpcdHNtY19sbGNfZmxvd19xZW50cnlfZGVsKFx1MDAyNmxnci1cdTAwM2VsbGNfZmxvd19sY2wpO1xubmV0L3NtYy9zbWNfbGxjLmMtMTMxOC1vdXRfZnJlZTpcbi0tXG5uZXQvc21jL3NtY19sbGMuYz0xMzIyPXN0YXRpYyBpbnQgc21jX2xsY19zcnZfcmtleV9leGNoYW5nZShzdHJ1Y3Qgc21jX2xpbmsgKmxpbmssXG4tLVxubmV0L3NtYy9zbWNfbGxjLmMtMTM1NS1cdFx0fVxubmV0L3NtYy9zbWNfbGxjLmM6MTM1NjpcdFx0c21jX2xsY19mbG93X3FlbnRyeV9kZWwoXHUwMDI2bGdyLVx1MDAzZWxsY19mbG93X2xjbCk7XG5uZXQvc21jL3NtY19sbGMuYy0xMzU3LVx0fSB3aGlsZSAobnVtX3JrZXlzX3NlbmQgfHwgbnVtX3JrZXlzX3JlY3YpO1xuLS1cbm5ldC9zbWMvc21jX2xsYy5jPTEzNjM9c3RhdGljIGludCBzbWNfbGxjX3Nydl9jb25mX2xpbmsoc3RydWN0IHNtY19saW5rICpsaW5rLFxuLS1cbm5ldC9zbWMvc21jX2xsYy5jLTEzODItXHRcdGlmIChxZW50cnkpXG5uZXQvc21jL3NtY19sbGMuYzoxMzgzOlx0XHRcdHNtY19sbGNfZmxvd19xZW50cnlfZGVsKFx1MDAyNmxnci1cdTAwM2VsbGNfZmxvd19sY2wpO1xubmV0L3NtYy9zbWNfbGxjLmMtMTM4NC1cdFx0cmV0dXJuIC1FTk9MSU5LO1xuLS1cbm5ldC9zbWMvc21jX2xsYy5jLTEzOTItXHRcdHNtY3JfbGdyX3NldF90eXBlKGxnciwgbGdyX25ld190KTtcbm5ldC9zbWMvc21jX2xsYy5jOjEzOTM6XHRzbWNfbGxjX2Zsb3dfcWVudHJ5X2RlbChcdTAwMjZsZ3ItXHUwMDNlbGxjX2Zsb3dfbGNsKTtcbm5ldC9zbWMvc21jX2xsYy5jLTEzOTQtXHRyZXR1cm4gMDtcbi0tXG5uZXQvc21jL3NtY19sbGMuYz0xNDA2PWludCBzbWNfbGxjX3Nydl9hZGRfbGluayhzdHJ1Y3Qgc21jX2xpbmsgKmxpbmssXG4tLVxubmV0L3NtYy9zbWNfbGxjLmMtMTQ4My1cdGlmIChhZGRfbGxjLVx1MDAzZWhkLmZsYWdzIFx1MDAyNiBTTUNfTExDX0ZMQUdfQUREX0xOS19SRUopIHtcbm5ldC9zbWMvc21jX2xsYy5jOjE0ODQ6XHRcdHNtY19sbGNfZmxvd19xZW50cnlfZGVsKFx1MDAyNmxnci1cdTAwM2VsbGNfZmxvd19sY2wpO1xubmV0L3NtYy9zbWNfbGxjLmMtMTQ4NS1cdFx0cmMgPSAtRU5PTElOSztcbi0tXG5uZXQvc21jL3NtY19sbGMuYy0xNDk0LVx0c21jX2xsY19zYXZlX2FkZF9saW5rX2luZm8obGlua19uZXcsIGFkZF9sbGMpO1xubmV0L3NtYy9zbWNfbGxjLmM6MTQ5NTpcdHNtY19sbGNfZmxvd19xZW50cnlfZGVsKFx1MDAyNmxnci1cdTAwM2VsbGNfZmxvd19sY2wpO1xubmV0L3NtYy9zbWNfbGxjLmMtMTQ5Ni1cbi0tXG5uZXQvc21jL3NtY19sbGMuYz0xNTU5PXN0YXRpYyB2b2lkIHNtY19sbGNfYWRkX2xpbmtfd29yayhzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspXG4tLVxubmV0L3NtYy9zbWNfbGxjLmMtMTU2NS1cdFx0LyogbGluayBncm91cCBpcyB0ZXJtaW5hdGluZyAqL1xubmV0L3NtYy9zbWNfbGxjLmM6MTU2NjpcdFx0c21jX2xsY19mbG93X3FlbnRyeV9kZWwoXHUwMDI2bGdyLVx1MDAzZWxsY19mbG93X2xjbCk7XG5uZXQvc21jL3NtY19sbGMuYy0xNTY3LVx0XHRnb3RvIG91dDtcbi0tXG5uZXQvc21jL3NtY19sbGMuYz0xNjcyPXN0YXRpYyB2b2lkIHNtY19sbGNfcHJvY2Vzc19zcnZfZGVsZXRlX2xpbmsoc3RydWN0IHNtY19saW5rX2dyb3VwICpsZ3IpXG4tLVxubmV0L3NtYy9zbWNfbGxjLmMtMTcxNy1cdFx0XHRpZiAocWVudHJ5Milcbm5ldC9zbWMvc21jX2xsYy5jOjE3MTg6XHRcdFx0XHRzbWNfbGxjX2Zsb3dfcWVudHJ5X2RlbChcdTAwMjZsZ3ItXHUwMDNlbGxjX2Zsb3dfbGNsKTtcbm5ldC9zbWMvc21jX2xsYy5jLTE3MTktXHRcdH1cbi0tXG5uZXQvc21jL3NtY19sbGMuYz0xNzQwPXN0YXRpYyB2b2lkIHNtY19sbGNfZGVsZXRlX2xpbmtfd29yayhzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspXG4tLVxubmV0L3NtYy9zbWNfbGxjLmMtMTc0Ni1cdFx0LyogbGluayBncm91cCBpcyB0ZXJtaW5hdGluZyAqL1xubmV0L3NtYy9zbWNfbGxjLmM6MTc0NzpcdFx0c21jX2xsY19mbG93X3FlbnRyeV9kZWwoXHUwMDI2bGdyLVx1MDAzZWxsY19mbG93X2xjbCk7XG5uZXQvc21jL3NtY19sbGMuYy0xNzQ4LVx0XHRnb3RvIG91dDtcbi0tXG5uZXQvc21jL3NtY19sbGMuYz0xNzYwPXN0YXRpYyB2b2lkIHNtY19sbGNfcm10X2NvbmZfcmtleShzdHJ1Y3Qgc21jX2xpbmtfZ3JvdXAgKmxncilcbi0tXG5uZXQvc21jL3NtY19sbGMuYy0xNzk1LVx0c21jX2xsY19zZW5kX21lc3NhZ2UobGluaywgXHUwMDI2cWVudHJ5LVx1MDAzZW1zZyk7XG5uZXQvc21jL3NtY19sbGMuYzoxNzk2Olx0c21jX2xsY19mbG93X3FlbnRyeV9kZWwoXHUwMDI2bGdyLVx1MDAzZWxsY19mbG93X3JtdCk7XG5uZXQvc21jL3NtY19sbGMuYy0xNzk3LX1cbi0tXG5uZXQvc21jL3NtY19sbGMuYz0xODAwPXN0YXRpYyB2b2lkIHNtY19sbGNfcm10X2RlbGV0ZV9ya2V5KHN0cnVjdCBzbWNfbGlua19ncm91cCAqbGdyKVxuLS1cbm5ldC9zbWMvc21jX2xsYy5jLTE4NDktXHRzbWNfbGxjX3NlbmRfbWVzc2FnZShsaW5rLCBcdTAwMjZxZW50cnktXHUwMDNlbXNnKTtcbm5ldC9zbWMvc21jX2xsYy5jOjE4NTA6XHRzbWNfbGxjX2Zsb3dfcWVudHJ5X2RlbChcdTAwMjZsZ3ItXHUwMDNlbGxjX2Zsb3dfcm10KTtcbm5ldC9zbWMvc21jX2xsYy5jLTE4NTEtfVxuLS1cbm5ldC9zbWMvc21jX2xsYy5jPTE4NzU9c3RhdGljIHZvaWQgc21jX2xsY19ldmVudF9oYW5kbGVyKHN0cnVjdCBzbWNfbGxjX3FlbnRyeSAqcWVudHJ5KVxuLS1cbm5ldC9zbWMvc21jX2xsYy5jLTE5MTQtXHRcdFx0XHQvKiBmcmVlIGFueSBxZW50cnkgc3Rhc2hlZCBpbiBSRVFfQUREX0xJTksgc3RhdGUgKi9cbm5ldC9zbWMvc21jX2xsYy5jOjE5MTU6XHRcdFx0XHRzbWNfbGxjX2Zsb3dfcWVudHJ5X2RlbChcdTAwMjZsZ3ItXHUwMDNlbGxjX2Zsb3dfbGNsKTtcbm5ldC9zbWMvc21jX2xsYy5jLTE5MTYtXHRcdFx0XHRsZ3ItXHUwMDNlbGxjX2Zsb3dfbGNsLnR5cGUgPSBTTUNfTExDX0ZMT1dfQUREX0xJTks7XG4tLVxubmV0L3NtYy9zbWNfbGxjLmM9MjIyMj1pbnQgc21jX2xsY19kb19jb25maXJtX3JrZXkoc3RydWN0IHNtY19saW5rICpzZW5kX2xpbmssXG4tLVxubmV0L3NtYy9zbWNfbGxjLmMtMjIzOC1cdGlmIChxZW50cnkpXG5uZXQvc21jL3NtY19sbGMuYzoyMjM5Olx0XHRzbWNfbGxjX2Zsb3dfcWVudHJ5X2RlbChcdTAwMjZsZ3ItXHUwMDNlbGxjX2Zsb3dfbGNsKTtcbm5ldC9zbWMvc21jX2xsYy5jLTIyNDAtXHRyZXR1cm4gcmM7XG4tLVxubmV0L3NtYy9zbWNfbGxjLmM9MjI0ND1pbnQgc21jX2xsY19kb19kZWxldGVfcmtleShzdHJ1Y3Qgc21jX2xpbmtfZ3JvdXAgKmxncixcbi0tXG5uZXQvc21jL3NtY19sbGMuYy0yMjY1LVx0aWYgKHFlbnRyeSlcbm5ldC9zbWMvc21jX2xsYy5jOjIyNjY6XHRcdHNtY19sbGNfZmxvd19xZW50cnlfZGVsKFx1MDAyNmxnci1cdTAwM2VsbGNfZmxvd19sY2wpO1xubmV0L3NtYy9zbWNfbGxjLmMtMjI2Ny1cdHJldHVybiByYztcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40My8zPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTggMDc6NTE8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPmttc2FuLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNTY1NQoJCQkJCQkJb3V0cHV0OiAxMTYKCQkJCQkJCXRob3VnaHRzOiA4OQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aGF0LgoKKipNZW1vcnkgTGVhayBGaXg6IEEgU3RyYWlnaHRmb3J3YXJkIENvcnJlY3Rpb24qKgoKQWxyaWdodCwgc28gdGhlIHBhdGNoIGlzIGFkZHJlc3NpbmcgYSBtZW1vcnkgbGVhay4gRXNzZW50aWFsbHksIHdoZW4gdGhlIHNlcnZlciBraWNrcyBvZmYgaXRzIGBhZGRfbGlua2AgcHJvY2Vzc2luZywgd2UmIzM5O3JlIG5vdyBjYWxsaW5nIGBzbWNfbGxjX2Zsb3dfcWVudHJ5X2RlbGAuIFRoaXMgZnVuY3Rpb24gaXMgY3JpdGljYWwgYmVjYXVzZSBpdCBoYW5kbGVzIGZyZWVpbmcgYSBgcWVudHJ5YCB0aGF0IHdhcyBwcmV2aW91c2x5IHN0YXNoZWQgYXdheS4gSXQmIzM5O3MgYSBjbGVhbi11cCBzdGVwLCBwcmV2ZW50aW5nIHRoYXQgb2JqZWN0IGZyb20gbGluZ2VyaW5nIGFuZCBnb2JibGluZyB1cCBtZW1vcnkgd2Ugbm8gbG9uZ2VyIG5lZWQuIFRoaXMgaXMgdGhlIGZpeC4KClRoZSBrZXkgdGhpbmcgaXMsIHRoaXMgZml4IHNwZWNpZmljYWxseSBhZGRyZXNzZXMgYSBsZWFrLiBUaGVyZSYjMzk7cyBubyByaXNrIG9mIGV4cG9zaW5nIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IGJlY2F1c2Ugb2YgdGhpcyBjaGFuZ2U7IHdlJiMzOTtyZSBqdXN0IG1hbmFnaW5nIHdoYXQgd2UgKmRvKiBoYXZlIGJldHRlci4gRnJhbmtseSwgSSYjMzk7bSBjb25maWRlbnQgdGhhdCBvdXIgZXhpc3RpbmcgdG9vbHMsIEtBU0FOIGFuZCBLTUVNTEVBSywgYXJlIHBlcmZlY3RseSBzdWZmaWNpZW50IGZvciBkZXRlY3RpbmcgbWVtb3J5IGxlYWtzIGFuZCB0aG9zZSBuYXN0eSB1c2UtYWZ0ZXItZnJlZSBidWdzLiBObyBuZWVkIGZvciBLTVNBTiBoZXJlOyB3ZSYjMzk7cmUgZ29vZC4gVGhpcyBrZWVwcyB0aGluZ3MgbGVhbiBhbmQgZm9jdXNlZC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40NC8zPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTggMDc6NTE8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggZml4ZXMgYSBtZW1vcnkgbGVhayBieSBmcmVlaW5nIGEgc3Rhc2hlZCBgcWVudHJ5YCBpbiBgc21jX2xsY19ldmVudF9oYW5kbGVyYCB3aGVuIHRoZSBzZXJ2ZXIgc3RhcnRzIGBhZGRfbGlua2AgcHJvY2Vzc2luZy4gSXQgZG9lcyBub3QgaW50cm9kdWNlIG9yIGV4cG9zZSBhbnkgdW5pbml0aWFsaXplZCBtZW1vcnkgcmlza3Mgb3IgaW5mby1sZWFrcy4gTWVtb3J5IGxlYWtzIGFuZCB1c2UtYWZ0ZXItZnJlZSBidWdzIGFyZSBlZmZlY3RpdmVseSBkZXRlY3RlZCBieSBLTUVNTEVBSyBhbmQgS0FTQU4uIFRoZXJlZm9yZSwgYSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGlzIG5vdCByZXF1aXJlZC4mIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0tNU0FOUmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGZpeGVzIGEgbWVtb3J5IGxlYWsgYnkgZnJlZWluZyBhIHN0YXNoZWQgYHFlbnRyeWAgaW4gYHNtY19sbGNfZXZlbnRfaGFuZGxlcmAgd2hlbiB0aGUgc2VydmVyIHN0YXJ0cyBgYWRkX2xpbmtgIHByb2Nlc3NpbmcuIEl0IGRvZXMgbm90IGludHJvZHVjZSBvciBleHBvc2UgYW55IHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHJpc2tzIG9yIGluZm8tbGVha3MuIE1lbW9yeSBsZWFrcyBhbmQgdXNlLWFmdGVyLWZyZWUgYnVncyBhcmUgZWZmZWN0aXZlbHkgZGV0ZWN0ZWQgYnkgS01FTUxFQUsgYW5kIEtBU0FOLiBUaGVyZWZvcmUsIGEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpcyBub3QgcmVxdWlyZWQuJiMzNDssCiAgJiMzNDtOZWVkc0tNU0FOJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE4VDA3OjUwOjAxLjc2NDAxMjIwN1oiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjk5ODM5MDI0MTE0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIlNNQ1wiLFxuICAgIFwiSU5GSU5JQkFORFwiLFxuICAgIFwiRElCU1wiLFxuICAgIFwiRElCU19MT1wiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcInNtY19sbGNfc3J2X2FkZF9saW5rXCIsXG4gICAgXCJzbWNfbGxjX2NsaV9hZGRfbGlua1wiLFxuICAgIFwic21jX2xsY19hZGRfbGlua19sb2NhbFwiXG4gIF0sXG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggZml4ZXMgYSBtZW1vcnkgbGVhayBieSBmcmVlaW5nIGEgc3Rhc2hlZCBgcWVudHJ5YCBpbiBgc21jX2xsY19ldmVudF9oYW5kbGVyYCB3aGVuIHRoZSBzZXJ2ZXIgc3RhcnRzIGBhZGRfbGlua2AgcHJvY2Vzc2luZy4gSXQgZG9lcyBub3QgaW50cm9kdWNlIG9yIGV4cG9zZSBhbnkgdW5pbml0aWFsaXplZCBtZW1vcnkgcmlza3Mgb3IgaW5mby1sZWFrcy4gTWVtb3J5IGxlYWtzIGFuZCB1c2UtYWZ0ZXItZnJlZSBidWdzIGFyZSBlZmZlY3RpdmVseSBkZXRlY3RlZCBieSBLTUVNTEVBSyBhbmQgS0FTQU4uIFRoZXJlZm9yZSwgYSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGlzIG5vdCByZXF1aXJlZC5cIixcbiAgXCJOZWVkc0tNU0FOXCI6IGZhbHNlLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBmaXhlcyBhIG1lbW9yeSBsZWFrIGluIHRoZSBTTUMgTExDIGV2ZW50IGhhbmRsZXIgYnkgZXhwbGljaXRseSBmcmVlaW5nIHRoZSBzdGFzaGVkIHFlbnRyeSB3aGVuIHRyYW5zaXRpb25pbmcgZnJvbSB0aGUgUkVRX0FERF9MSU5LIHN0YXRlIHRvIHRoZSBBRERfTElOSyBzdGF0ZS4gVGhpcyBpcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMgZm9yIHRoZSBTTUMgcHJvdG9jb2wuIEZ1enppbmcgc2hvdWxkIGZvY3VzIG9uIHRoZSBhZGRfbGluayBmbG93IGluaXRpYXRpb24gYW5kIHByb2Nlc3NpbmcgZnVuY3Rpb25zLiBESUJTIGFuZCBESUJTX0xPIGFyZSByZXF1aXJlZCB0byBlbmFibGUgbG9jYWwgbG9vcGJhY2sgdGVzdGluZyBvZiBTTUMgb3ZlciBlbXVsYXRlZCBSRE1BLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xOFQwNzo1MDowMS43NjQwMTg0MDdaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQxMDU4OTE1OCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IDc1YzhhMWUwY2NkN2E4ZTIwNTRiZDM2YTc5YjA5Yzg1OTgwMzNmODVcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIFR1ZSBBdWcgMTggMDc6NTA6MDAgMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvbmV0L3NtYy9zbWNfbGxjLmMgYi9uZXQvc21jL3NtY19sbGMuY1xcbmluZGV4IGFhNmQ4M2FmNTVlZGEuLmM3ZjAyMjJhZmY4ZDAgMTAwNjQ0XFxuLS0tIGEvbmV0L3NtYy9zbWNfbGxjLmNcXG4rKysgYi9uZXQvc21jL3NtY19sbGMuY1xcbkBAIC0xOTExLDYgKzE5MTEsOCBAQCBzdGF0aWMgdm9pZCBzbWNfbGxjX2V2ZW50X2hhbmRsZXIoc3RydWN0IHNtY19sbGNfcWVudHJ5ICpxZW50cnkpXFxuIFxcdFxcdFxcdGlmIChsZ3ItXFx1MDAzZWxsY19mbG93X2xjbC50eXBlID09XFxuIFxcdFxcdFxcdFxcdFxcdFNNQ19MTENfRkxPV19SRVFfQUREX0xJTkspIHtcXG4gXFx0XFx0XFx0XFx0Lyogc2VydmVyIHN0YXJ0ZWQgYWRkX2xpbmsgcHJvY2Vzc2luZyAqL1xcbitcXHRcXHRcXHRcXHQvKiBmcmVlIGFueSBxZW50cnkgc3Rhc2hlZCBpbiBSRVFfQUREX0xJTksgc3RhdGUgKi9cXG4rXFx0XFx0XFx0XFx0c21jX2xsY19mbG93X3FlbnRyeV9kZWwoXFx1MDAyNmxnci1cXHUwMDNlbGxjX2Zsb3dfbGNsKTtcXG4gXFx0XFx0XFx0XFx0bGdyLVxcdTAwM2VsbGNfZmxvd19sY2wudHlwZSA9IFNNQ19MTENfRkxPV19BRERfTElOSztcXG4gXFx0XFx0XFx0XFx0c21jX2xsY19mbG93X3FlbnRyeV9zZXQoXFx1MDAyNmxnci1cXHUwMDNlbGxjX2Zsb3dfbGNsLFxcbiBcXHRcXHRcXHRcXHRcXHRcXHRcXHRxZW50cnkpO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xOFQwNzo1MDowMi4xNzUyNjk5NjVaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJiZXN0LWV4cGVuc2l2ZSIsIkR1cmF0aW9uIjo4ODQwMzgxNjM4MSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJTTUNcIixcbiAgICBcIklORklOSUJBTkRcIixcbiAgICBcIkRJQlNcIixcbiAgICBcIkRJQlNfTE9cIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJzbWNfbGxjX3Nydl9hZGRfbGlua1wiLFxuICAgIFwic21jX2xsY19jbGlfYWRkX2xpbmtcIixcbiAgICBcInNtY19sbGNfYWRkX2xpbmtfbG9jYWxcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBmaXhlcyBhIG1lbW9yeSBsZWFrIGluIHRoZSBTTUMgTExDIGV2ZW50IGhhbmRsZXIgYnkgZXhwbGljaXRseSBmcmVlaW5nIHRoZSBzdGFzaGVkIHFlbnRyeSB3aGVuIHRyYW5zaXRpb25pbmcgZnJvbSB0aGUgUkVRX0FERF9MSU5LIHN0YXRlIHRvIHRoZSBBRERfTElOSyBzdGF0ZS4gVGhpcyBpcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMgZm9yIHRoZSBTTUMgcHJvdG9jb2wuIEZ1enppbmcgc2hvdWxkIGZvY3VzIG9uIHRoZSBhZGRfbGluayBmbG93IGluaXRpYXRpb24gYW5kIHByb2Nlc3NpbmcgZnVuY3Rpb25zLiBESUJTIGFuZCBESUJTX0xPIGFyZSByZXF1aXJlZCB0byBlbmFibGUgbG9jYWwgbG9vcGJhY2sgdGVzdGluZyBvZiBTTUMgb3ZlciBlbXVsYXRlZCBSRE1BLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lXG5pZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5XG51c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLlxuXG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOlxuLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLlxuLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy5cbi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LlxuLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsXG4gIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS5cbi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsXG4gIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLlxuLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKVxuICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuXG5cbklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2hcbnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLlxuXG5XaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzpcbjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuXG4gICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy5cbiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9uc1xuICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuXG4yLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS5cbiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbiAgIEFsc28gY2hlY2sgXCJkZXBlbmRzIG9uXCIgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzXG4gICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3NcbiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCA3NWM4YTFlMGNjZDdhOGUyMDU0YmQzNmE3OWIwOWM4NTk4MDMzZjg1XG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFR1ZSBBdWcgMTggMDc6NTA6MDAgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9uZXQvc21jL3NtY19sbGMuYyBiL25ldC9zbWMvc21jX2xsYy5jXG5pbmRleCBhYTZkODNhZjU1ZWRhLi5jN2YwMjIyYWZmOGQwIDEwMDY0NFxuLS0tIGEvbmV0L3NtYy9zbWNfbGxjLmNcbisrKyBiL25ldC9zbWMvc21jX2xsYy5jXG5AQCAtMTkxMSw2ICsxOTExLDggQEAgc3RhdGljIHZvaWQgc21jX2xsY19ldmVudF9oYW5kbGVyKHN0cnVjdCBzbWNfbGxjX3FlbnRyeSAqcWVudHJ5KVxuIFx0XHRcdGlmIChsZ3ItXHUwMDNlbGxjX2Zsb3dfbGNsLnR5cGUgPT1cbiBcdFx0XHRcdFx0U01DX0xMQ19GTE9XX1JFUV9BRERfTElOSykge1xuIFx0XHRcdFx0Lyogc2VydmVyIHN0YXJ0ZWQgYWRkX2xpbmsgcHJvY2Vzc2luZyAqL1xuK1x0XHRcdFx0LyogZnJlZSBhbnkgcWVudHJ5IHN0YXNoZWQgaW4gUkVRX0FERF9MSU5LIHN0YXRlICovXG4rXHRcdFx0XHRzbWNfbGxjX2Zsb3dfcWVudHJ5X2RlbChcdTAwMjZsZ3ItXHUwMDNlbGxjX2Zsb3dfbGNsKTtcbiBcdFx0XHRcdGxnci1cdTAwM2VsbGNfZmxvd19sY2wudHlwZSA9IFNNQ19MTENfRkxPV19BRERfTElOSztcbiBcdFx0XHRcdHNtY19sbGNfZmxvd19xZW50cnlfc2V0KFx1MDAyNmxnci1cdTAwM2VsbGNfZmxvd19sY2wsXG4gXHRcdFx0XHRcdFx0XHRxZW50cnkpO1xuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMThUMDc6NTA6MDIuMTc1MjcxMzA1WiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDYwMTYxMzU4MiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgYSBOZXR3b3JraW5nIFBhdGNoKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgYSBwYXRjaCBmb3IgdGhlIFNNQyAoU2hhcmVkIE1lbW9yeSBDb21tdW5pY2F0aW9ucykgb3ZlciBMTEMgKExpbmsgTGF5ZXIgQ29udHJvbCkgY29kZSwgc3BlY2lmaWNhbGx5IGluIGBuZXQvc21jL3NtY19sbGMuY2AuIFRoZSBjb3JlIGNoYW5nZSBzZWVtcyB0byBiZSB3aXRoaW4gdGhlIGBzbWNfbGxjX2V2ZW50X2hhbmRsZXJgIGZ1bmN0aW9uLiBUaGUgcGF0Y2ggc3RyYXRlZ2ljYWxseSBpbnNlcnRzIGBzbWNfbGxjX2Zsb3dfcWVudHJ5X2RlbChcdTAwMjZsZ3ItXHUwMDNlbGxjX2Zsb3dfbGNsKTtgIHJpZ2h0IGJlZm9yZSB0aGUgYXNzaWdubWVudCBgbGdyLVx1MDAzZWxsY19mbG93X2xjbC50eXBlID0gU01DX0xMQ19GTE9XX0FERF9MSU5LO2AuIE15IGluaXRpYWwgdGhvdWdodCBpcyB0byBmaWd1cmUgb3V0IHRoZSByZWFzb25pbmcgYmVoaW5kIHRoaXMgYWRkaXRpb24uIEl0IG1ha2VzIG1lIHdhbnQgdG8gZGl2ZSBpbnRvIHRoZSBjb2RlLlxuXG5JIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgaW1wbGljYXRpb25zIG9mIHJlbW92aW5nIGEgcXVldWUgZW50cnkgKGBzbWNfbGxjX2Zsb3dfcWVudHJ5X2RlbGApIGJlZm9yZSBjaGFuZ2luZyB0aGUgYHR5cGVgIG9mIGBsbGNfZmxvd19sY2xgIHRvIGBTTUNfTExDX0ZMT1dfQUREX0xJTktgLiBJcyB0aGlzIGEgY2xlYW51cCBvcGVyYXRpb24/IFByZXZlbnRpbmcgYSBwb3RlbnRpYWwgZG91YmxlLWZyZWUgc2NlbmFyaW8/IE9yIG1heWJlIGl0J3MgYSBjcml0aWNhbCBzdGVwIGluIHRyYW5zaXRpb25pbmcgYmV0d2VlbiBmbG93IHN0YXRlcz8gSSBzaG91bGQgcmVhbGx5IGNoZWNrIHRoZSBmdW5jdGlvbiBpdHNlbGYgYW5kIHN1cnJvdW5kaW5nIGNvZGUgZm9yIHBvdGVudGlhbCBzaWRlIGVmZmVjdHMsIGFuZCBleGFtaW5lIHRoZSBzdHJ1Y3R1cmUgYGxsY19mbG93X2xjbGAgYW5kIGBsZ3JgIGluIG9yZGVyIHRvIHNlZSB3aGF0IHRoZSBpbXBhY3Qgb2YgdGhpcyBjaGFuZ2UgaXMgb24gdGhlIG92ZXJhbGwgc3lzdGVtLCBzbyBsZXQgbWUgZ2V0IHN0YXJ0ZWQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIwNjYsIk91dHB1dFRva2VucyI6NDEsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMTksIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xOFQwNzo1MDowNi43NzY4ODc3NTdaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDM5OTc5NTksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwic21jX2xsY19ldmVudF9oYW5kbGVyXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9zbWMvc21jX2xsYy5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9zbWMvc21jX2xsYy5jPTE4NjM9c3RhdGljIHZvaWQgc21jX2xsY19ldmVudF9mbHVzaChzdHJ1Y3Qgc21jX2xpbmtfZ3JvdXAgKmxncilcXG4tLVxcbm5ldC9zbWMvc21jX2xsYy5jLTE4NzQtXFxubmV0L3NtYy9zbWNfbGxjLmM6MTg3NTpzdGF0aWMgdm9pZCBzbWNfbGxjX2V2ZW50X2hhbmRsZXIoc3RydWN0IHNtY19sbGNfcWVudHJ5ICpxZW50cnkpXFxubmV0L3NtYy9zbWNfbGxjLmMtMTg3Ni17XFxuLS1cXG5uZXQvc21jL3NtY19sbGMuYz0xOTk3PXN0YXRpYyB2b2lkIHNtY19sbGNfZXZlbnRfd29yayhzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspXFxuLS1cXG5uZXQvc21jL3NtY19sbGMuYy0yMDA2LVxcdFxcdGlmIChzbWNfbGlua191c2FibGUocWVudHJ5LVxcdTAwM2VsaW5rKSlcXG5uZXQvc21jL3NtY19sbGMuYzoyMDA3OlxcdFxcdFxcdHNtY19sbGNfZXZlbnRfaGFuZGxlcihxZW50cnkpO1xcbm5ldC9zbWMvc21jX2xsYy5jLTIwMDgtXFx0XFx0ZWxzZVxcbi0tXFxubmV0L3NtYy9zbWNfbGxjLmMtMjAxOC1cXHRcXHRzcGluX3VubG9ja19iaChcXHUwMDI2bGdyLVxcdTAwM2VsbGNfZXZlbnRfcV9sb2NrKTtcXG5uZXQvc21jL3NtY19sbGMuYzoyMDE5OlxcdFxcdHNtY19sbGNfZXZlbnRfaGFuZGxlcihxZW50cnkpO1xcbm5ldC9zbWMvc21jX2xsYy5jLTIwMjAtXFx0XFx0Z290byBhZ2FpbjtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMThUMDc6NTA6MDYuODIwODkwOTY2WiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzMwNDU3NTgyMSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIGEgc3VtbWFyeSBvZiBteSB0aG91Z2h0IHByb2Nlc3M6XG5cbioqRGl2aW5nIGludG8gdGhlIFNNQyBMTEMgRXZlbnQgSGFuZGxpbmcqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGUgYHNtY19sbGNfZXZlbnRfaGFuZGxlcmAgZnVuY3Rpb24uIFRoZSBjb2RlIHRlbGxzIG1lIGl0J3MgYSBzdGF0aWMgZnVuY3Rpb24sIHJlc2lkaW5nIHdpdGhpbiBgbmV0L3NtYy9zbWNfbGxjLmNgLiBUaGF0J3MgaW1wb3J0YW50IGZvciBjb250ZXh0IC0gSSBuZWVkIHRvIGtub3cgd2hlcmUgSSdtIGxvb2tpbmcuIFRoZSBuZXh0IHRoaW5nIHRoYXQgbGVhcHMgb3V0IGlzIHRoYXQgaXQgYXBwZWFycyB0byBiZSBjYWxsZWQgZnJvbSBgc21jX2xsY19ldmVudF93b3JrYC4gTmF0dXJhbGx5LCBteSBtaW5kIGltbWVkaWF0ZWx5IGp1bXBzIHRvIFwiV2hhdCAqaXMqIGBzbWNfbGxjX2V2ZW50X3dvcmtgP1wiIFRoYXQncyB0aGUgbmV4dCBsb2dpY2FsIHN0ZXA7IEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBjYWxsaW5nIGZ1bmN0aW9uIHRvIHRydWx5IHVuZGVyc3RhbmQgdGhlIGNhbGxlZCBmdW5jdGlvbiBhbmQgdGhlIG92ZXJhbGwgZmxvdyBvZiBldmVudHMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI4ODAsIk91dHB1dFRva2VucyI6NDEsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo2OCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xOFQwNzo1MDoxMC4xMjU0NzAxNTdaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDQ2ODc3MjksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwic21jX2xsY19ldmVudF93b3JrXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9zbWMvc21jX2xsYy5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9zbWMvc21jX2xsYy5jPTE4NzU9c3RhdGljIHZvaWQgc21jX2xsY19ldmVudF9oYW5kbGVyKHN0cnVjdCBzbWNfbGxjX3FlbnRyeSAqcWVudHJ5KVxcbi0tXFxubmV0L3NtYy9zbWNfbGxjLmMtMTk5Ni0vKiB3b3JrZXIgdG8gcHJvY2VzcyBsbGMgbWVzc2FnZXMgb24gdGhlIGV2ZW50IHF1ZXVlICovXFxubmV0L3NtYy9zbWNfbGxjLmM6MTk5NzpzdGF0aWMgdm9pZCBzbWNfbGxjX2V2ZW50X3dvcmsoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxcbm5ldC9zbWMvc21jX2xsYy5jLTE5OTgte1xcbi0tXFxubmV0L3NtYy9zbWNfbGxjLmM9MjE0OT12b2lkIHNtY19sbGNfbGdyX2luaXQoc3RydWN0IHNtY19saW5rX2dyb3VwICpsZ3IsIHN0cnVjdCBzbWNfc29jayAqc21jKVxcbi0tXFxubmV0L3NtYy9zbWNfbGxjLmMtMjE1Mi1cXG5uZXQvc21jL3NtY19sbGMuYzoyMTUzOlxcdElOSVRfV09SSyhcXHUwMDI2bGdyLVxcdTAwM2VsbGNfZXZlbnRfd29yaywgc21jX2xsY19ldmVudF93b3JrKTtcXG5uZXQvc21jL3NtY19sbGMuYy0yMTU0LVxcdElOSVRfV09SSyhcXHUwMDI2bGdyLVxcdTAwM2VsbGNfYWRkX2xpbmtfd29yaywgc21jX2xsY19hZGRfbGlua193b3JrKTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMThUMDc6NTA6MTAuMTcwMTYxMzI2WiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MjcxNDY1MzIyOCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHRha2Ugb24gdGhlIHRob3VnaHQgcHJvY2Vzcywgc3VtbWFyaXplZCBhcyB5b3UgcmVxdWVzdGVkOlxuXG4qKk5hdmlnYXRpbmcgdGhlIFNNQyBLZXJuZWwgQ29kZSoqXG5cbk9rYXksIHNvIEkndmUgZ290IHRoaXMgcGF0Y2ggdG8gZGVhbCB3aXRoLCBhbmQgaXQgbG9va3MgbGlrZSBpdCdzIHdpdGhpbiB0aGUgU3lzdGVtIE1hbmFnZW1lbnQgQ29udHJvbGxlciAoU01DKSBjb2RlLiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdG8gemVybyBpbiBvbiB0aGUgZXhhY3QgbG9jYXRpb24gb2YgdGhlIGNoYW5nZS4gSXQgc2VlbXMgdGhlIGNvcmUgb2YgdGhlIHBhdGNoIGlzIGdvaW5nIHRvIGJlIGluIGBuZXQvc21jL3NtY19sbGMuY2AuIFRoYXTigJlzIHRoZSBmaXJzdCBwaWVjZSBvZiB0aGUgcHV6emxlLiBOb3csIHRvIHVuZGVyc3RhbmQgaG93IHRoaXMgZml0cyBpbnRvIHRoZSBicm9hZGVyIHBpY3R1cmUsIEkgbmVlZCB0byBjaGVjayB0aGUgY29uZmlndXJhdGlvbiBzZXR0aW5ncy4gVGltZSB0byBsb2NhdGUgdGhlIHJlbGV2YW50IEtjb25maWcgZmlsZSBmb3IgU01DLiBVbmRlcnN0YW5kaW5nIHRoZSBLY29uZmlnIG9wdGlvbnMgd2lsbCBnaXZlIG1lIHRoZSBjb250ZXh0IEkgbmVlZCB0byBhc3Nlc3MgdGhlIGltcGFjdCBvZiB0aGlzIHBhdGNoLiBMZXQncyBzZWUgd2hhdCB0aGUgY29uZmlndXJhdGlvbiBmbGFncyBhcmUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjM0NjYsIk91dHB1dFRva2VucyI6MjksIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyOSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xOFQwNzo1MDoxMi44ODQ4MTc2OTRaIiwiU2VxIjo4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDQ1OTQ2MjksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIFNNQ1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvc21jL0tjb25maWdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L3NtYy9LY29uZmlnLTEtIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XFxubmV0L3NtYy9LY29uZmlnOjI6Y29uZmlnIFNNQ1xcbm5ldC9zbWMvS2NvbmZpZy0zLVxcdHRyaXN0YXRlIFxcXCJTTUMgc29ja2V0IHByb3RvY29sIGZhbWlseVxcXCJcXG4tLVxcbm5ldC9zbWMvS2NvbmZpZy0xMy1cXG5uZXQvc21jL0tjb25maWc6MTQ6Y29uZmlnIFNNQ19ESUFHXFxubmV0L3NtYy9LY29uZmlnLTE1LVxcdHRyaXN0YXRlIFxcXCJTTUM6IHNvY2tldCBtb25pdG9yaW5nIGludGVyZmFjZVxcXCJcXG4tLVxcbm5ldC9zbWMvS2NvbmZpZy0yMi1cXG5uZXQvc21jL0tjb25maWc6MjM6Y29uZmlnIFNNQ19IU19DVFJMX0JQRlxcbm5ldC9zbWMvS2NvbmZpZy0yNC1cXHRib29sIFxcXCJHZW5lcmljIGVCUEYgaG9vayBmb3IgU01DIGhhbmRzaGFrZSBmbG93XFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xOFQwNzo1MDoxMi45Mjk0MTU2ODNaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNjg1MzE4NzgwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgYW5hbHlzaXMgb2YgdGhlIGNvZGUsIHByZXNlbnRlZCBhcyBteSBpbnRlcm5hbCB0aG91Z2h0IHByb2Nlc3M6XG5cbioqRGl2aW5nIGludG8gdGhlIFNNQyBMTEMgRXZlbnQgSGFuZGxpbmcqKlxuXG5Pa2F5LCB0aGUgY29uZmlndXJhdGlvbiBJJ20gbG9va2luZyBhdCBpcyBmb3IgYFNNQ2AuIEkgbmVlZCB0byBmaWd1cmUgb3V0IGhvdyB0aGUgc3lzdGVtIGhhbmRsZXMgZXZlbnRzIHdpdGhpbiB0aGF0IGNvbnRleHQsIHNwZWNpZmljYWxseSB0aGUgZnVuY3Rpb24gYHNtY19sbGNfZXZlbnRfaGFuZGxlcmAuIFRoZSBmYWN0IHRoYXQgaXQncyBgc3RhdGljYCBtZWFucyBJIG5lZWQgdG8gaHVudCBkb3duIHRoZSBjYWxsIHNpdGVzLiBMZXQncyBzZWUuLi4gQWgsIHRoZXJlIGl0IGlzLCBgc21jX2xsY19ldmVudF93b3JrYCBpcyBhIHdvcmtxdWV1ZSBmdW5jdGlvbiwgbWVhbmluZyBpdCdzIGxpa2VseSBjYWxsZWQgYXN5bmNocm9ub3VzbHkuIFRoYXQgbmFycm93cyB0aGUgdHJpZ2dlcnMgZG93biBhIGJpdC4gTm93LCB3aGF0J3MgZW5xdWV1aW5nIHdvcmsgdG8gdGhhdCBzcGVjaWZpYyB3b3JrcXVldWU/IEl0IHNlZW1zIGxvZ2ljYWwgdGhhdCBgc21jX2xsY19lbnF1ZXVlYCB3b3VsZCBiZSByZXNwb25zaWJsZS4gSSdsbCBuZWVkIHRvIHZlcmlmeSB0aGF0IGNhbGwsIGJ1dCB0aGlzIHNlZW1zIGxpa2UgdGhlIHN0YXJ0aW5nIHBvaW50IGZvciB1bmRlcnN0YW5kaW5nIHRoZSBldmVudCBwcm9jZXNzaW5nIGZsb3cuIFRoaXMgc2hvdWxkIGdldCBtZSB3aGVyZSBJIG5lZWQgdG8gZ28uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjM4NzksIk91dHB1dFRva2VucyI6MzgsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo3MSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xOFQwNzo1MDoxNi42MTQ3Mzk0OTJaIiwiU2VxIjoxMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ0NjM2MDA4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImxsY19ldmVudF93b3JrXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9zbWMvc21jX2xsYy5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9zbWMvc21jX2xsYy5jPTMyMD12b2lkIHNtY19sbGNfZmxvd19zdG9wKHN0cnVjdCBzbWNfbGlua19ncm91cCAqbGdyLCBzdHJ1Y3Qgc21jX2xsY19mbG93ICpmbG93KVxcbi0tXFxubmV0L3NtYy9zbWNfbGxjLmMtMzI3LVxcdCAgICBmbG93ID09IFxcdTAwMjZsZ3ItXFx1MDAzZWxsY19mbG93X2xjbClcXG5uZXQvc21jL3NtY19sbGMuYzozMjg6XFx0XFx0c2NoZWR1bGVfd29yayhcXHUwMDI2bGdyLVxcdTAwM2VsbGNfZXZlbnRfd29yayk7XFxubmV0L3NtYy9zbWNfbGxjLmMtMzI5LVxcdGVsc2VcXG4tLVxcbm5ldC9zbWMvc21jX2xsYy5jPTE4NzU9c3RhdGljIHZvaWQgc21jX2xsY19ldmVudF9oYW5kbGVyKHN0cnVjdCBzbWNfbGxjX3FlbnRyeSAqcWVudHJ5KVxcbi0tXFxubmV0L3NtYy9zbWNfbGxjLmMtMTk5Ni0vKiB3b3JrZXIgdG8gcHJvY2VzcyBsbGMgbWVzc2FnZXMgb24gdGhlIGV2ZW50IHF1ZXVlICovXFxubmV0L3NtYy9zbWNfbGxjLmM6MTk5NzpzdGF0aWMgdm9pZCBzbWNfbGxjX2V2ZW50X3dvcmsoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxcbm5ldC9zbWMvc21jX2xsYy5jLTE5OTgte1xcbm5ldC9zbWMvc21jX2xsYy5jLTE5OTktXFx0c3RydWN0IHNtY19saW5rX2dyb3VwICpsZ3IgPSBjb250YWluZXJfb2Yod29yaywgc3RydWN0IHNtY19saW5rX2dyb3VwLFxcbm5ldC9zbWMvc21jX2xsYy5jOjIwMDA6XFx0XFx0XFx0XFx0XFx0XFx0ICBsbGNfZXZlbnRfd29yayk7XFxubmV0L3NtYy9zbWNfbGxjLmMtMjAwMS1cXHRzdHJ1Y3Qgc21jX2xsY19xZW50cnkgKnFlbnRyeTtcXG4tLVxcbm5ldC9zbWMvc21jX2xsYy5jPTIwNjk9c3RhdGljIHZvaWQgc21jX2xsY19lbnF1ZXVlKHN0cnVjdCBzbWNfbGluayAqbGluaywgdW5pb24gc21jX2xsY19tc2cgKmxsYylcXG4tLVxcbm5ldC9zbWMvc21jX2xsYy5jLTIwOTItXFx0c3Bpbl91bmxvY2tfaXJxcmVzdG9yZShcXHUwMDI2bGdyLVxcdTAwM2VsbGNfZXZlbnRfcV9sb2NrLCBmbGFncyk7XFxubmV0L3NtYy9zbWNfbGxjLmM6MjA5MzpcXHRxdWV1ZV93b3JrKHN5c3RlbV9oaWdocHJpX3dxLCBcXHUwMDI2bGdyLVxcdTAwM2VsbGNfZXZlbnRfd29yayk7XFxubmV0L3NtYy9zbWNfbGxjLmMtMjA5NC19XFxuLS1cXG5uZXQvc21jL3NtY19sbGMuYz0yMTQ5PXZvaWQgc21jX2xsY19sZ3JfaW5pdChzdHJ1Y3Qgc21jX2xpbmtfZ3JvdXAgKmxnciwgc3RydWN0IHNtY19zb2NrICpzbWMpXFxuLS1cXG5uZXQvc21jL3NtY19sbGMuYy0yMTUyLVxcbm5ldC9zbWMvc21jX2xsYy5jOjIxNTM6XFx0SU5JVF9XT1JLKFxcdTAwMjZsZ3ItXFx1MDAzZWxsY19ldmVudF93b3JrLCBzbWNfbGxjX2V2ZW50X3dvcmspO1xcbm5ldC9zbWMvc21jX2xsYy5jLTIxNTQtXFx0SU5JVF9XT1JLKFxcdTAwMjZsZ3ItXFx1MDAzZWxsY19hZGRfbGlua193b3JrLCBzbWNfbGxjX2FkZF9saW5rX3dvcmspO1xcbi0tXFxubmV0L3NtYy9zbWNfbGxjLmM9MjE2OD12b2lkIHNtY19sbGNfbGdyX2NsZWFyKHN0cnVjdCBzbWNfbGlua19ncm91cCAqbGdyKVxcbi0tXFxubmV0L3NtYy9zbWNfbGxjLmMtMjE3Mi1cXHR3YWtlX3VwX2FsbChcXHUwMDI2bGdyLVxcdTAwM2VsbGNfbXNnX3dhaXRlcik7XFxubmV0L3NtYy9zbWNfbGxjLmM6MjE3MzpcXHRjYW5jZWxfd29ya19zeW5jKFxcdTAwMjZsZ3ItXFx1MDAzZWxsY19ldmVudF93b3JrKTtcXG5uZXQvc21jL3NtY19sbGMuYy0yMTc0LVxcdGNhbmNlbF93b3JrX3N5bmMoXFx1MDAyNmxnci1cXHUwMDNlbGxjX2FkZF9saW5rX3dvcmspO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xOFQwNzo1MDoxNi42NTkzODE5MzFaIiwiU2VxIjoxMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzY1MTA1OTg3MSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6XG5cbioqQW5hbHl6aW5nIHRoZSBMTEMgTWVzc2FnZSBFbnF1ZXVlIFBhdGgqKlxuXG5BbHJpZ2h0LCBzbyBgc21jX2xsY19lbnF1ZXVlYCBpcyB0cmlnZ2VyZWQgd2hlbmV2ZXIgd2UgZ2V0IGFuIExMQyBtZXNzYWdlLiBNeSBmaXJzdCBpbnN0aW5jdCwgYXMgYWx3YXlzLCBpcyB0byBmb2xsb3cgdGhlIGRhdGEgZmxvdy4gVGhlIGltbWVkaWF0ZSBxdWVzdGlvbiBJIGhhdmUgaXMsIHdoZXJlIGV4YWN0bHkgKmlzKiBgc21jX2xsY19lbnF1ZXVlYCBjYWxsZWQgZnJvbT8gSSBuZWVkIHRvIHRyYWNlIGJhY2sgZnJvbSB0aGF0IHBvaW50IHRvIGZ1bGx5IHVuZGVyc3RhbmQgdGhlIGV2ZW50J3Mgb3JpZ2luIGFuZCBjb250ZXh0LiBMZXQncyBkaWcgaW50byB0aGUgY2FsbCBzaXRlcyBhbmQgc2VlIHdoYXQgdXBzdHJlYW0gZnVuY3Rpb25zIG9yIGludGVycnVwdCBoYW5kbGVycyBhcmUgcmVzcG9uc2libGUgZm9yIGFjdHVhbGx5IHBsYWNpbmcgdGhlc2UgbWVzc2FnZXMgb24gdGhlIHF1ZXVlLiBLbm93aW5nIHRoaXMgd2lsbCBnaXZlIG1lIGEgcHJvcGVyIGhhbmRsZSBvbiB0aGUgb3ZlcmFsbCBtZXNzYWdlIHByb2Nlc3NpbmcgYXJjaGl0ZWN0dXJlLlxuXG5cbiIsIklucHV0VG9rZW5zIjo1MDU5LCJPdXRwdXRUb2tlbnMiOjM5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzYsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMThUMDc6NTA6MjAuMzEwNDQzOTgyWiIsIlNlcSI6MTIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0NjczMTY5OSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJzbWNfbGxjX2VucXVldWVcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L3NtYy9zbWNfbGxjLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L3NtYy9zbWNfbGxjLmM9MTk5PXN0cnVjdCBzbWNfbGxjX3FlbnRyeSB7XFxuLS1cXG5uZXQvc21jL3NtY19sbGMuYy0yMDQtXFxubmV0L3NtYy9zbWNfbGxjLmM6MjA1OnN0YXRpYyB2b2lkIHNtY19sbGNfZW5xdWV1ZShzdHJ1Y3Qgc21jX2xpbmsgKmxpbmssIHVuaW9uIHNtY19sbGNfbXNnICpsbGMpO1xcbm5ldC9zbWMvc21jX2xsYy5jLTIwNi1cXG4tLVxcbm5ldC9zbWMvc21jX2xsYy5jPTE1NDg9dm9pZCBzbWNfbGxjX2FkZF9saW5rX2xvY2FsKHN0cnVjdCBzbWNfbGluayAqbGluaylcXG4tLVxcbm5ldC9zbWMvc21jX2xsYy5jLTE1NTQtXFx0Lyogbm8gZGV2IGFuZCBwb3J0IG5lZWRlZCAqL1xcbm5ldC9zbWMvc21jX2xsYy5jOjE1NTU6XFx0c21jX2xsY19lbnF1ZXVlKGxpbmssICh1bmlvbiBzbWNfbGxjX21zZyAqKVxcdTAwMjZhZGRfbGxjKTtcXG5uZXQvc21jL3NtY19sbGMuYy0xNTU2LX1cXG4tLVxcbm5ldC9zbWMvc21jX2xsYy5jPTE1ODI9dm9pZCBzbWNfbGxjX3Nydl9kZWxldGVfbGlua19sb2NhbChzdHJ1Y3Qgc21jX2xpbmsgKmxpbmssIHU4IGRlbF9saW5rX2lkKVxcbi0tXFxubmV0L3NtYy9zbWNfbGxjLmMtMTU5MC1cXHRkZWxfbGxjLmhkLmZsYWdzIHw9IFNNQ19MTENfRkxBR19ERUxfTElOS19PUkRFUkxZO1xcbm5ldC9zbWMvc21jX2xsYy5jOjE1OTE6XFx0c21jX2xsY19lbnF1ZXVlKGxpbmssICh1bmlvbiBzbWNfbGxjX21zZyAqKVxcdTAwMjZkZWxfbGxjKTtcXG5uZXQvc21jL3NtY19sbGMuYy0xNTkyLX1cXG4tLVxcbm5ldC9zbWMvc21jX2xsYy5jPTIwMjY9c3RhdGljIHZvaWQgc21jX2xsY19yeF9yZXNwb25zZShzdHJ1Y3Qgc21jX2xpbmsgKmxpbmssXFxuLS1cXG5uZXQvc21jL3NtY19sbGMuYy0yMDY4LVxcbm5ldC9zbWMvc21jX2xsYy5jOjIwNjk6c3RhdGljIHZvaWQgc21jX2xsY19lbnF1ZXVlKHN0cnVjdCBzbWNfbGluayAqbGluaywgdW5pb24gc21jX2xsY19tc2cgKmxsYylcXG5uZXQvc21jL3NtY19sbGMuYy0yMDcwLXtcXG4tLVxcbm5ldC9zbWMvc21jX2xsYy5jPTIwOTc9c3RhdGljIHZvaWQgc21jX2xsY19yeF9oYW5kbGVyKHN0cnVjdCBpYl93YyAqd2MsIHZvaWQgKmJ1ZilcXG4tLVxcbm5ldC9zbWMvc21jX2xsYy5jLTIxMTEtXFxubmV0L3NtYy9zbWNfbGxjLmM6MjExMjpcXHRzbWNfbGxjX2VucXVldWUobGluaywgbGxjKTtcXG5uZXQvc21jL3NtY19sbGMuYy0yMTEzLX1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMThUMDc6NTA6MjAuMzU3MTc5NzRaIiwiU2VxIjoxMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTg1NTYzMzQ3NCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBc3Nlc3NtZW50IG9mIGBzbWNfbGxjX3J4X2hhbmRsZXJgIFZ1bG5lcmFiaWxpdHkqKlxuXG5Pa2F5LCBzbyBgc21jX2xsY19yeF9oYW5kbGVyYCBpcyB0aGUgcmVjZWl2ZSBoYW5kbGVyIGZvciBMTEMgbWVzc2FnZXMsIHdoaWNoIG1ha2VzIGl0IGFuIGltcG9ydGFudCBwaWVjZSBvZiB0aGUgSUIgcmVjZWl2ZSBoYW5kbGluZy4gU01DIHVzZXMgUkRNQSAoUm9DRSkgb3IgSVNNLCBzbyB3ZSBhcmUgZGVhbGluZyB3aXRoIGhpZ2gtcGVyZm9ybWFuY2UgbmV0d29ya2luZyBoZXJlLCB3aGljaCB0ZW5kcyB0byBiZSBhIHRhcmdldCBmb3IgZnV6emluZy4gVGhlIGltbWVkaWF0ZSBxdWVzdGlvbiBpcywgY2FuIHRoaXMgYmUgZnV6emVkPyBTTUMsIGFzIEkgcmVjYWxsLCBpcyByZWFjaGFibGUgdGhyb3VnaCBBRl9TTUMgc29ja2V0cy4gRXhjZWxsZW50LCBsZXQncyBzZWUgaWYgc3l6a2FsbGVyIGlzIGFscmVhZHkgdGFyZ2V0aW5nIEFGX1NNQy4gQWhhISBZZXMsIHN5emthbGxlciBkb2VzIGZ1enogQUZfU01DLiBUaGF0J3MgYSBnb29kIHN0YXJ0aW5nIHBvaW50LlxuXG5Ob3csIHRoZSBjcnVjaWFsIHF1ZXN0aW9uOiBjYW4gd2UgcmVhY2ggYHNtY19sbGNfcnhfaGFuZGxlcmAgZGlyZWN0bHkgdGhyb3VnaCBmdXp6aW5nPyBMTEMgbWVzc2FnZXMgYXJlIGV4Y2hhbmdlZCBiZXR3ZWVuIFNNQyBwZWVycyBvdmVyIHRoZSBSb0NFL0lTTSBsaW5rLiBUaGUgdHJpY2sgaXMgdG8gcmVhY2ggdGhpcyBjb2RlIHdpdGhvdXQgYSBwZWVyLCBvciBhIHBlZXIgd2UgY29udHJvbC4gSWYgd2UncmUgc2ltdWxhdGluZyBhIHBlZXIsIG9yIHVzaW5nIGxvb3BiYWNrLCB0aGVuIHdlIGNhbiByZWFjaCB0aGlzIGhhbmRsZXIuIFdhaXQsIHN5emthbGxlciBpcyBzcGVjaWZpY2FsbHkgZ29vZCBhdCBpbmplY3RpbmcgcGFja2V0cyBvciB1c2luZyBsb29wYmFjaywgd2hpY2ggd291bGQgYWxsb3cgdXMgdG8gY3JhZnQgcGFja2V0cyBhbmQgcG90ZW50aWFsbHkgdHJpZ2dlciB0aGUgaGFuZGxlci4gVGhpcyBpcyBkZWZpbml0ZWx5IHByb21pc2luZy5cblxuQXJlIHRoZXJlIGFueSBzcGVjaWZpYyBmdW5jdGlvbnMgd2l0aGluIHRoaXMgbW9kdWxlIHRoYXQgYXJlIHBhcnRpY3VsYXJseSByZWxldmFudCBvciBpbnRlcmVzdGluZyB0byB0YXJnZXQ/IGBzbWNfbGxjX2V2ZW50X2hhbmRsZXJgLCBgc21jX2xsY19ldmVudF93b3JrYCwgYW5kIGBzbWNfbGxjX3J4X2hhbmRsZXJgIGFyZSBhbGwgc3RhdGljLiBUaGF0J3Mgbm90IGlkZWFsLCBhcyB0aGF0IGxpbWl0cyBleHRlcm5hbCBhY2Nlc3MsIGJ1dCBsZXQncyBzZWUsIHdoYXQgYXJlIHRoZSBub24tc3RhdGljIGZ1bmN0aW9ucyBhdmFpbGFibGUgaW4gdGhpcyBhcmVhPyBXZSBuZWVkIHRvIGxvb2sgaW4gYG5ldC9zbWMvc21jX2xsYy5jYCB0byBzZWUgaWYgdGhlcmUgYXJlIGFueSBleHBvcnRlZCBvciBub24tc3RhdGljIGZ1bmN0aW9ucyB0aGF0IG1pZ2h0IGFjdCBhcyBlbnRyeSBwb2ludHMgdG8gdHJpZ2dlciBgc21jX2xsY19yeF9oYW5kbGVyYC5cblxuXG4iLCJJbnB1dFRva2VucyI6NTk1MSwiT3V0cHV0VG9rZW5zIjo1NiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI1MiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xOFQwNzo1MDoyNi4yMTI4MTYxNTVaIiwiU2VxIjoxNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ2MDU2MjM5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIl5bYS16QS1aX11bYS16QS1aMC05X10qIHNtY19sbGNfXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9zbWMvc21jX2xsYy5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9zbWMvc21jX2xsYy5jLTIzLVxcbm5ldC9zbWMvc21jX2xsYy5jOjI0OnN0cnVjdCBzbWNfbGxjX2hkciB7XFxubmV0L3NtYy9zbWNfbGxjLmMtMjUtXFx0c3RydWN0IHNtY193cl9yeF9oZHIgY29tbW9uO1xcbi0tXFxubmV0L3NtYy9zbWNfbGxjLmMtNDYtXFxubmV0L3NtYy9zbWNfbGxjLmM6NDc6c3RydWN0IHNtY19sbGNfbXNnX2NvbmZpcm1fbGluayB7XFx0LyogdHlwZSAweDAxICovXFxubmV0L3NtYy9zbWNfbGxjLmMtNDgtXFx0c3RydWN0IHNtY19sbGNfaGRyIGhkO1xcbi0tXFxubmV0L3NtYy9zbWNfbGxjLmMtNjEtXFxubmV0L3NtYy9zbWNfbGxjLmM6NjI6c3RydWN0IHNtY19sbGNfbXNnX2FkZF9saW5rIHtcXHRcXHQvKiB0eXBlIDB4MDIgKi9cXG5uZXQvc21jL3NtY19sbGMuYy02My1cXHRzdHJ1Y3Qgc21jX2xsY19oZHIgaGQ7XFxuLS1cXG5uZXQvc21jL3NtY19sbGMuYy03OS1cXG5uZXQvc21jL3NtY19sbGMuYzo4MDpzdHJ1Y3Qgc21jX2xsY19tc2dfYWRkX2xpbmtfY29udF9ydCB7XFxubmV0L3NtYy9zbWNfbGxjLmMtODEtXFx0X19iZTMyIHJtYl9rZXk7XFxuLS1cXG5uZXQvc21jL3NtY19sbGMuYy04NS1cXG5uZXQvc21jL3NtY19sbGMuYzo4NjpzdHJ1Y3Qgc21jX2xsY19tc2dfYWRkX2xpbmtfdjJfZXh0IHtcXG5uZXQvc21jL3NtY19sbGMuYy04Ny0jaWYgZGVmaW5lZChfX0JJR19FTkRJQU5fQklURklFTEQpXFxuLS1cXG5uZXQvc21jL3NtY19sbGMuYy0xMDMtXFxubmV0L3NtYy9zbWNfbGxjLmM6MTA0OnN0cnVjdCBzbWNfbGxjX21zZ19yZXFfYWRkX2xpbmtfdjIge1xcbm5ldC9zbWMvc21jX2xsYy5jLTEwNS1cXHRzdHJ1Y3Qgc21jX2xsY19oZHIgaGQ7XFxuLS1cXG5uZXQvc21jL3NtY19sbGMuYy0xMTMtXFxubmV0L3NtYy9zbWNfbGxjLmM6MTE0OnN0cnVjdCBzbWNfbGxjX21zZ19hZGRfbGlua19jb250IHtcXHQvKiB0eXBlIDB4MDMgKi9cXG5uZXQvc21jL3NtY19sbGMuYy0xMTUtXFx0c3RydWN0IHNtY19sbGNfaGRyIGhkO1xcbi0tXFxubmV0L3NtYy9zbWNfbGxjLmMtMTI1LVxcbm5ldC9zbWMvc21jX2xsYy5jOjEyNjpzdHJ1Y3Qgc21jX2xsY19tc2dfZGVsX2xpbmsge1xcdFxcdC8qIHR5cGUgMHgwNCAqL1xcbm5ldC9zbWMvc21jX2xsYy5jLTEyNy1cXHRzdHJ1Y3Qgc21jX2xsY19oZHIgaGQ7XFxuLS1cXG5uZXQvc21jL3NtY19sbGMuYy0xMzItXFxubmV0L3NtYy9zbWNfbGxjLmM6MTMzOnN0cnVjdCBzbWNfbGxjX21zZ190ZXN0X2xpbmsge1xcdFxcdC8qIHR5cGUgMHgwNyAqL1xcbm5ldC9zbWMvc21jX2xsYy5jLTEzNC1cXHRzdHJ1Y3Qgc21jX2xsY19oZHIgaGQ7XFxuLS1cXG5uZXQvc21jL3NtY19sbGMuYz0xMzk9c3RydWN0IHNtY19ybWJfcnRva2VuIHtcXG4tLVxcbm5ldC9zbWMvc21jX2xsYy5jLTE1Mi1cXG5uZXQvc21jL3NtY19sbGMuYzoxNTM6c3RydWN0IHNtY19sbGNfbXNnX2NvbmZpcm1fcmtleSB7XFx0LyogdHlwZSAweDA2ICovXFxubmV0L3NtYy9zbWNfbGxjLmMtMTU0LVxcdHN0cnVjdCBzbWNfbGxjX2hkciBoZDtcXG4tLVxcbm5ldC9zbWMvc21jX2xsYy5jLTE2Mi1cXG5uZXQvc21jL3NtY19sbGMuYzoxNjM6c3RydWN0IHNtY19sbGNfbXNnX2RlbGV0ZV9ya2V5IHtcXHQvKiB0eXBlIDB4MDkgKi9cXG5uZXQvc21jL3NtY19sbGMuYy0xNjQtXFx0c3RydWN0IHNtY19sbGNfaGRyIGhkO1xcbi0tXFxubmV0L3NtYy9zbWNfbGxjLmMtMTcxLVxcbm5ldC9zbWMvc21jX2xsYy5jOjE3MjpzdHJ1Y3Qgc21jX2xsY19tc2dfZGVsZXRlX3JrZXlfdjIge1xcdC8qIHR5cGUgMHgyOSAqL1xcbm5ldC9zbWMvc21jX2xsYy5jLTE3My1cXHRzdHJ1Y3Qgc21jX2xsY19oZHIgaGQ7XFxuLS1cXG5uZXQvc21jL3NtY19sbGMuYy0xNzktXFxubmV0L3NtYy9zbWNfbGxjLmM6MTgwOnVuaW9uIHNtY19sbGNfbXNnIHtcXG5uZXQvc21jL3NtY19sbGMuYy0xODEtXFx0c3RydWN0IHNtY19sbGNfbXNnX2NvbmZpcm1fbGluayBjb25maXJtX2xpbms7XFxuLS1cXG5uZXQvc21jL3NtY19sbGMuYy0xOTgtXFxubmV0L3NtYy9zbWNfbGxjLmM6MTk5OnN0cnVjdCBzbWNfbGxjX3FlbnRyeSB7XFxubmV0L3NtYy9zbWNfbGxjLmMtMjAwLVxcdHN0cnVjdCBsaXN0X2hlYWQgbGlzdDtcXG4tLVxcbm5ldC9zbWMvc21jX2xsYy5jPTIwNT1zdGF0aWMgdm9pZCBzbWNfbGxjX2VucXVldWUoc3RydWN0IHNtY19saW5rICpsaW5rLCB1bmlvbiBzbWNfbGxjX21zZyAqbGxjKTtcXG5uZXQvc21jL3NtY19sbGMuYy0yMDYtXFxubmV0L3NtYy9zbWNfbGxjLmM6MjA3OnN0cnVjdCBzbWNfbGxjX3FlbnRyeSAqc21jX2xsY19mbG93X3FlbnRyeV9jbHIoc3RydWN0IHNtY19sbGNfZmxvdyAqZmxvdylcXG5uZXQvc21jL3NtY19sbGMuYy0yMDgte1xcbi0tXFxubmV0L3NtYy9zbWNfbGxjLmMtMjE0LVxcbm5ldC9zbWMvc21jX2xsYy5jOjIxNTp2b2lkIHNtY19sbGNfZmxvd19xZW50cnlfZGVsKHN0cnVjdCBzbWNfbGxjX2Zsb3cgKmZsb3cpXFxubmV0L3NtYy9zbWNfbGxjLmMtMjE2LXtcXG4tLVxcbm5ldC9zbWMvc21jX2xsYy5jPTI1ND1zdGF0aWMgYm9vbCBzbWNfbGxjX2Zsb3dfc3RhcnQoc3RydWN0IHNtY19sbGNfZmxvdyAqZmxvdyxcXG4tLVxcbm5ldC9zbWMvc21jX2xsYy5jLTI4NS0vKiBzdGFydCBhIG5ldyBsb2NhbCBsbGMgZmxvdywgd2FpdCB0aWxsIGN1cnJlbnQgZmxvdyBmaW5pc2hlZCAqL1xcbm5ldC9zbWMvc21jX2xsYy5jOjI4NjppbnQgc21jX2xsY19mbG93X2luaXRpYXRlKHN0cnVjdCBzbWNfbGlua19ncm91cCAqbGdyLFxcbm5ldC9zbWMvc21jX2xsYy5jLTI4Ny1cXHRcXHRcXHQgIGVudW0gc21jX2xsY19mbG93dHlwZSB0eXBlKVxcbi0tXFxubmV0L3NtYy9zbWNfbGxjLmMtMzE5LS8qIGZpbmlzaCB0aGUgY3VycmVudCBsbGMgZmxvdyAqL1xcbm5ldC9zbWMvc21jX2xsYy5jOjMyMDp2b2lkIHNtY19sbGNfZmxvd19zdG9wKHN0cnVjdCBzbWNfbGlua19ncm91cCAqbGdyLCBzdHJ1Y3Qgc21jX2xsY19mbG93ICpmbG93KVxcbm5ldC9zbWMvc21jX2xsYy5jLTMyMS17XFxuLS1cXG5uZXQvc21jL3NtY19sbGMuYy0zMzUtICovXFxubmV0L3NtYy9zbWNfbGxjLmM6MzM2OnN0cnVjdCBzbWNfbGxjX3FlbnRyeSAqc21jX2xsY193YWl0KHN0cnVjdCBzbWNfbGlua19ncm91cCAqbGdyLFxcbm5ldC9zbWMvc21jX2xsYy5jLTMzNy1cXHRcXHRcXHRcXHQgICAgc3RydWN0IHNtY19saW5rICpsbmssXFxuLS1cXG5uZXQvc21jL3NtY19sbGMuYy0zNzUtXFxubmV0L3NtYy9zbWNfbGxjLmM6Mzc2OnN0cnVjdCBzbWNfbGxjX3R4X3BlbmQge1xcbm5ldC9zbWMvc21jX2xsYy5jLTM3Ny19O1xcbi0tXFxubmV0L3NtYy9zbWNfbGxjLmM9NDM0PXN0YXRpYyB2b2lkIHNtY19sbGNfaW5pdF9tc2dfaGRyKHN0cnVjdCBzbWNfbGxjX2hkciAqaGRyLFxcbi0tXFxubmV0L3NtYy9zbWNfbGxjLmMtNDQ2LS8qIGhpZ2gtbGV2ZWwgQVBJIHRvIHNlbmQgTExDIGNvbmZpcm0gbGluayAqL1xcbm5ldC9zbWMvc21jX2xsYy5jOjQ0NzppbnQgc21jX2xsY19zZW5kX2NvbmZpcm1fbGluayhzdHJ1Y3Qgc21jX2xpbmsgKmxpbmssXFxubmV0L3NtYy9zbWNfbGxjLmMtNDQ4LVxcdFxcdFxcdCAgICAgIGVudW0gc21jX2xsY19yZXFyZXNwIHJlcXJlc3ApXFxuLS1cXG5uZXQvc21jL3NtY19sbGMuYz02MDM9c3RhdGljIGludCBzbWNfbGxjX2ZpbGxfZXh0X3YyKHN0cnVjdCBzbWNfbGxjX21zZ19hZGRfbGlua192Ml9leHQgKmV4dCxcXG4tLVxcbm5ldC9zbWMvc21jX2xsYy5jLTY0Mi0vKiBzZW5kIEFERCBMSU5LIHJlcXVlc3Qgb3IgcmVzcG9uc2UgKi9cXG5uZXQvc21jL3NtY19sbGMuYzo2NDM6aW50IHNtY19sbGNfc2VuZF9hZGRfbGluayhzdHJ1Y3Qgc21jX2xpbmsgKmxpbmssIHU4IG1hY1tdLCB1OCBnaWRbXSxcXG5uZXQvc21jL3NtY19sbGMuYy02NDQtXFx0XFx0XFx0ICBzdHJ1Y3Qgc21jX2xpbmsgKmxpbmtfbmV3LFxcbi0tXFxubmV0L3NtYy9zbWNfbGxjLmMtNzAzLS8qIHNlbmQgREVMRVRFIExJTksgcmVxdWVzdCBvciByZXNwb25zZSAqL1xcbm5ldC9zbWMvc21jX2xsYy5jOjcwNDppbnQgc21jX2xsY19zZW5kX2RlbGV0ZV9saW5rKHN0cnVjdCBzbWNfbGluayAqbGluaywgdTggbGlua19kZWxfaWQsXFxubmV0L3NtYy9zbWNfbGxjLmMtNzA1LVxcdFxcdFxcdCAgICAgZW51bSBzbWNfbGxjX3JlcXJlc3AgcmVxcmVzcCwgYm9vbCBvcmRlcmx5LFxcbi0tXFxubmV0L3NtYy9zbWNfbGxjLmM9MTAyMD1zdGF0aWMgdm9pZCBzbWNfbGxjX3NhdmVfYWRkX2xpbmtfaW5mbyhzdHJ1Y3Qgc21jX2xpbmsgKmxpbmssXFxuLS1cXG5uZXQvc21jL3NtY19sbGMuYy0xMDMwLS8qIGFzIGFuIFNNQyBjbGllbnQsIHByb2Nlc3MgYW4gYWRkIGxpbmsgcmVxdWVzdCAqL1xcbm5ldC9zbWMvc21jX2xsYy5jOjEwMzE6aW50IHNtY19sbGNfY2xpX2FkZF9saW5rKHN0cnVjdCBzbWNfbGluayAqbGluaywgc3RydWN0IHNtY19sbGNfcWVudHJ5ICpxZW50cnkpXFxubmV0L3NtYy9zbWNfbGxjLmMtMTAzMi17XFxuLS1cXG5uZXQvc21jL3NtY19sbGMuYz0xMzk3PXN0YXRpYyB2b2lkIHNtY19sbGNfc2VuZF9yZXFfYWRkX2xpbmtfcmVzcG9uc2Uoc3RydWN0IHNtY19sbGNfcWVudHJ5ICpxZW50cnkpXFxuLS1cXG5uZXQvc21jL3NtY19sbGMuYy0xNDA1LVxcbm5ldC9zbWMvc21jX2xsYy5jOjE0MDY6aW50IHNtY19sbGNfc3J2X2FkZF9saW5rKHN0cnVjdCBzbWNfbGluayAqbGluayxcXG5uZXQvc21jL3NtY19sbGMuYy0xNDA3LVxcdFxcdFxcdCBzdHJ1Y3Qgc21jX2xsY19xZW50cnkgKnJlcV9xZW50cnkpXFxuLS1cXG5uZXQvc21jL3NtY19sbGMuYz0xNTI5PXN0YXRpYyB2b2lkIHNtY19sbGNfcHJvY2Vzc19zcnZfYWRkX2xpbmsoc3RydWN0IHNtY19saW5rX2dyb3VwICpsZ3IpXFxuLS1cXG5uZXQvc21jL3NtY19sbGMuYy0xNTQ3LS8qIGVucXVldWUgYSBsb2NhbCBhZGRfbGluayByZXEgdG8gdHJpZ2dlciBhIG5ldyBhZGRfbGluayBmbG93ICovXFxubmV0L3NtYy9zbWNfbGxjLmM6MTU0ODp2b2lkIHNtY19sbGNfYWRkX2xpbmtfbG9jYWwoc3RydWN0IHNtY19saW5rICpsaW5rKVxcbm5ldC9zbWMvc21jX2xsYy5jLTE1NDkte1xcbi0tXFxubmV0L3NtYy9zbWNfbGxjLmM9MTU1OT1zdGF0aWMgdm9pZCBzbWNfbGxjX2FkZF9saW5rX3dvcmsoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxcbi0tXFxubmV0L3NtYy9zbWNfbGxjLmMtMTU4MS0gKi9cXG5uZXQvc21jL3NtY19sbGMuYzoxNTgyOnZvaWQgc21jX2xsY19zcnZfZGVsZXRlX2xpbmtfbG9jYWwoc3RydWN0IHNtY19saW5rICpsaW5rLCB1OCBkZWxfbGlua19pZClcXG5uZXQvc21jL3NtY19sbGMuYy0xNTgzLXtcXG4tLVxcbm5ldC9zbWMvc21jX2xsYy5jPTE1OTQ9c3RhdGljIHZvaWQgc21jX2xsY19wcm9jZXNzX2NsaV9kZWxldGVfbGluayhzdHJ1Y3Qgc21jX2xpbmtfZ3JvdXAgKmxncilcXG4tLVxcbm5ldC9zbWMvc21jX2xsYy5jLTE2NTEtICovXFxubmV0L3NtYy9zbWNfbGxjLmM6MTY1Mjp2b2lkIHNtY19sbGNfc2VuZF9saW5rX2RlbGV0ZV9hbGwoc3RydWN0IHNtY19saW5rX2dyb3VwICpsZ3IsIGJvb2wgb3JkLCB1MzIgcnNuKVxcbm5ldC9zbWMvc21jX2xsYy5jLTE2NTMte1xcbi0tXFxubmV0L3NtYy9zbWNfbGxjLmM9MjExNz1zdGF0aWMgdm9pZCBzbWNfbGxjX3Rlc3RsaW5rX3dvcmsoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxcbi0tXFxubmV0L3NtYy9zbWNfbGxjLmMtMjE0OC1cXG5uZXQvc21jL3NtY19sbGMuYzoyMTQ5OnZvaWQgc21jX2xsY19sZ3JfaW5pdChzdHJ1Y3Qgc21jX2xpbmtfZ3JvdXAgKmxnciwgc3RydWN0IHNtY19zb2NrICpzbWMpXFxubmV0L3NtYy9zbWNfbGxjLmMtMjE1MC17XFxuLS1cXG5uZXQvc21jL3NtY19sbGMuYy0yMTY3LS8qIGNhbGxlZCBhZnRlciBsZ3Igd2FzIHJlbW92ZWQgZnJvbSBsZ3JfbGlzdCAqL1xcbm5ldC9zbWMvc21jX2xsYy5jOjIxNjg6dm9pZCBzbWNfbGxjX2xncl9jbGVhcihzdHJ1Y3Qgc21jX2xpbmtfZ3JvdXAgKmxncilcXG5uZXQvc21jL3NtY19sbGMuYy0yMTY5LXtcXG4tLVxcbm5ldC9zbWMvc21jX2xsYy5jLTIxODEtXFxubmV0L3NtYy9zbWNfbGxjLmM6MjE4MjppbnQgc21jX2xsY19saW5rX2luaXQoc3RydWN0IHNtY19saW5rICpsaW5rKVxcbm5ldC9zbWMvc21jX2xsYy5jLTIxODMte1xcbi0tXFxubmV0L3NtYy9zbWNfbGxjLmMtMjE4OC1cXG5uZXQvc21jL3NtY19sbGMuYzoyMTg5OnZvaWQgc21jX2xsY19saW5rX2FjdGl2ZShzdHJ1Y3Qgc21jX2xpbmsgKmxpbmspXFxubmV0L3NtYy9zbWNfbGxjLmMtMjE5MC17XFxuLS1cXG5uZXQvc21jL3NtY19sbGMuYy0yMjA2LS8qIGNhbGxlZCBpbiB3b3JrZXIgY29udGV4dCAqL1xcbm5ldC9zbWMvc21jX2xsYy5jOjIyMDc6dm9pZCBzbWNfbGxjX2xpbmtfY2xlYXIoc3RydWN0IHNtY19saW5rICpsaW5rLCBib29sIGxvZylcXG5uZXQvc21jL3NtY19sbGMuYy0yMjA4LXtcXG4tLVxcbm5ldC9zbWMvc21jX2xsYy5jLTIyMjEtLyogcmVnaXN0ZXIgYSBuZXcgcnRva2VuIGF0IHRoZSByZW1vdGUgcGVlciAoZm9yIGFsbCBsaW5rcykgKi9cXG5uZXQvc21jL3NtY19sbGMuYzoyMjIyOmludCBzbWNfbGxjX2RvX2NvbmZpcm1fcmtleShzdHJ1Y3Qgc21jX2xpbmsgKnNlbmRfbGluayxcXG5uZXQvc21jL3NtY19sbGMuYy0yMjIzLVxcdFxcdFxcdCAgICBzdHJ1Y3Qgc21jX2J1Zl9kZXNjICpybWJfZGVzYylcXG4tLVxcbm5ldC9zbWMvc21jX2xsYy5jLTIyNDMtLyogdW5yZWdpc3RlciBhbiBydG9rZW4gYXQgdGhlIHJlbW90ZSBwZWVyICovXFxubmV0L3NtYy9zbWNfbGxjLmM6MjI0NDppbnQgc21jX2xsY19kb19kZWxldGVfcmtleShzdHJ1Y3Qgc21jX2xpbmtfZ3JvdXAgKmxncixcXG5uZXQvc21jL3NtY19sbGMuYy0yMjQ1LVxcdFxcdFxcdCAgIHN0cnVjdCBzbWNfYnVmX2Rlc2MgKnJtYl9kZXNjKVxcbi0tXFxubmV0L3NtYy9zbWNfbGxjLmMtMjI2OS1cXG5uZXQvc21jL3NtY19sbGMuYzoyMjcwOnZvaWQgc21jX2xsY19saW5rX3NldF91aWQoc3RydWN0IHNtY19saW5rICpsaW5rKVxcbm5ldC9zbWMvc21jX2xsYy5jLTIyNzEte1xcbi0tXFxubmV0L3NtYy9zbWNfbGxjLmMtMjI3OC0vKiBzYXZlIHBlZXJzIGxpbmsgdXNlciBpZCwgdXNlZCBmb3IgZGVidWcgcHVycG9zZXMgKi9cXG5uZXQvc21jL3NtY19sbGMuYzoyMjc5OnZvaWQgc21jX2xsY19zYXZlX3BlZXJfdWlkKHN0cnVjdCBzbWNfbGxjX3FlbnRyeSAqcWVudHJ5KVxcbm5ldC9zbWMvc21jX2xsYy5jLTIyODAte1xcbi0tXFxubmV0L3NtYy9zbWNfbGxjLmMtMjI4NS0vKiBldmFsdWF0ZSBjb25maXJtIGxpbmsgcmVxdWVzdCBvciByZXNwb25zZSAqL1xcbm5ldC9zbWMvc21jX2xsYy5jOjIyODY6aW50IHNtY19sbGNfZXZhbF9jb25mX2xpbmsoc3RydWN0IHNtY19sbGNfcWVudHJ5ICpxZW50cnksXFxubmV0L3NtYy9zbWNfbGxjLmMtMjI4Ny1cXHRcXHRcXHQgICBlbnVtIHNtY19sbGNfcmVxcmVzcCB0eXBlKVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xOFQwNzo1MDoyNi4yNTg4NzgyODRaIiwiU2VxIjoxNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NjQ2MzgxODg5NiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgYSBQb3RlbnRpYWwgTWVtb3J5IExlYWsgRml4IGluIHRoZSBTTUMtTExDIEZsb3cqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGluIGBzbWNfbGxjX2V2ZW50X2hhbmRsZXJgLiBSaWdodCBvZmYgdGhlIGJhdCwgSSBzZWUgdGhleSdyZSBhZGRyZXNzaW5nIGEgcG90ZW50aWFsIHByb2JsZW0gd2l0aCBob3cgYFJFUV9BRERfTElOS2Agc3RhdGUgaXMgaGFuZGxlZC4gVGhlIGNvcmUgY2hhbmdlIGlzIHRoZSBhZGRpdGlvbiBvZiBgc21jX2xsY19mbG93X3FlbnRyeV9kZWwoXHUwMDI2bGdyLVx1MDAzZWxsY19mbG93X2xjbCk7YCByaWdodCBiZWZvcmUgdHJhbnNpdGlvbmluZyB0aGUgYGxsY19mbG93X2xjbC50eXBlYC4gVGhpcyBsb29rcyBsaWtlIGEgZnVuY3Rpb25hbCBjaGFuZ2Ug4oCTIGEgbWVtb3J5IGxlYWsgZml4IG9yIHBlcmhhcHMgYSBzdGF0ZSBtYWNoaW5lIGNvcnJlY3Rpb24uIEl0J3MgYSBrZXkgb3BlcmF0aW9uIGRlYWxpbmcgd2l0aCBxdWV1ZSBlbnRyaWVzLlxuXG5CZWNhdXNlIGBzbWNfbGxjX2V2ZW50X2hhbmRsZXJgIGlzIHN0YXRpYywgSSBjYW4gY29uZmlkZW50bHkgcGlucG9pbnQgdGhlIGNhbGwgc2l0ZXMgSSBuZWVkIHRvIGludmVzdGlnYXRlIGluIG1vcmUgZGV0YWlsOiBgc21jX2xsY19zcnZfYWRkX2xpbmtgLCBgc21jX2xsY19jbGlfYWRkX2xpbmtgLCBgc21jX2xsY19mbG93X2luaXRpYXRlYCwgYHNtY19sbGNfc2VuZF9hZGRfbGlua2AsIGBzbWNfbGxjX3NlbmRfY29uZmlybV9saW5rYCwgYW5kIGBzbWNfbGxjX2RvX2NvbmZpcm1fcmtleWAuIFRoZXNlIGFyZSB0aGUgcG90ZW50aWFsIGVudHJ5IHBvaW50cyBhbmQgY29udGV4dHMgd2hlcmUgdGhpcyBsb2dpYyBpcyB0cmlnZ2VyZWQuIEJlZm9yZSBkaWdnaW5nIGRlZXBlciwgSSBuZWVkIHRvIGNoZWNrIHRoZSBleGFjdCBjb250ZXh0IG9mIGBzbWNfbGxjX2V2ZW50X2hhbmRsZXJgLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGVuIGFuZCB3aHkgYSBgcWVudHJ5YCBtaWdodCBiZSBzdGFzaGVkIGluIHRoZSBgUkVRX0FERF9MSU5LYCBzdGF0ZSB0byBiZWdpbiB3aXRoIHRvIGV2YWx1YXRlIHRoZSBmaXggcHJvcGVybHkuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjEwNjMxLCJPdXRwdXRUb2tlbnMiOjQ1LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzIxLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE4VDA3OjUwOjMyLjcyMjY5OTQ1WiIsIlNlcSI6MTYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0NDA4OTQ5OSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJTTUNfTExDX0ZMT1dfUkVRX0FERF9MSU5LXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9zbWMvc21jX2xsYy5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9zbWMvc21jX2xsYy5jPTExMjY9c3RhdGljIHZvaWQgc21jX2xsY19zZW5kX3JlcXVlc3RfYWRkX2xpbmsoc3RydWN0IHNtY19saW5rICpsaW5rKVxcbi0tXFxubmV0L3NtYy9zbWNfbGxjLmMtMTE1OC1cXHRcXHQvKiBzZXQgUkVRX0FERF9MSU5LIGZsb3cgYW5kIHdhaXQgZm9yIHJlc3BvbnNlIGZyb20gcGVlciAqL1xcbm5ldC9zbWMvc21jX2xsYy5jOjExNTk6XFx0XFx0bGluay1cXHUwMDNlbGdyLVxcdTAwM2VsbGNfZmxvd19sY2wudHlwZSA9IFNNQ19MTENfRkxPV19SRVFfQUREX0xJTks7XFxubmV0L3NtYy9zbWNfbGxjLmMtMTE2MC1wdXRfb3V0Olxcbi0tXFxubmV0L3NtYy9zbWNfbGxjLmM9MTU1OT1zdGF0aWMgdm9pZCBzbWNfbGxjX2FkZF9saW5rX3dvcmsoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxcbi0tXFxubmV0L3NtYy9zbWNfbGxjLmMtMTU3NC1vdXQ6XFxubmV0L3NtYy9zbWNfbGxjLmM6MTU3NTpcXHRpZiAobGdyLVxcdTAwM2VsbGNfZmxvd19sY2wudHlwZSAhPSBTTUNfTExDX0ZMT1dfUkVRX0FERF9MSU5LKVxcbm5ldC9zbWMvc21jX2xsYy5jLTE1NzYtXFx0XFx0c21jX2xsY19mbG93X3N0b3AobGdyLCBcXHUwMDI2bGdyLVxcdTAwM2VsbGNfZmxvd19sY2wpO1xcbi0tXFxubmV0L3NtYy9zbWNfbGxjLmM9MTg3NT1zdGF0aWMgdm9pZCBzbWNfbGxjX2V2ZW50X2hhbmRsZXIoc3RydWN0IHNtY19sbGNfcWVudHJ5ICpxZW50cnkpXFxuLS1cXG5uZXQvc21jL3NtY19sbGMuYy0xOTExLVxcdFxcdFxcdGlmIChsZ3ItXFx1MDAzZWxsY19mbG93X2xjbC50eXBlID09XFxubmV0L3NtYy9zbWNfbGxjLmM6MTkxMjpcXHRcXHRcXHRcXHRcXHRTTUNfTExDX0ZMT1dfUkVRX0FERF9MSU5LKSB7XFxubmV0L3NtYy9zbWNfbGxjLmMtMTkxMy1cXHRcXHRcXHRcXHQvKiBzZXJ2ZXIgc3RhcnRlZCBhZGRfbGluayBwcm9jZXNzaW5nICovXFxuLS1cXG5uZXQvc21jL3NtY19sbGMuYy0xOTc1LVxcdFxcdGlmIChsZ3ItXFx1MDAzZXJvbGUgPT0gU01DX0NMTlQgXFx1MDAyNlxcdTAwMjZcXG5uZXQvc21jL3NtY19sbGMuYzoxOTc2OlxcdFxcdCAgICBsZ3ItXFx1MDAzZWxsY19mbG93X2xjbC50eXBlID09IFNNQ19MTENfRkxPV19SRVFfQUREX0xJTksgXFx1MDAyNlxcdTAwMjZcXG5uZXQvc21jL3NtY19sbGMuYy0xOTc3LVxcdFxcdCAgICAobGxjLVxcdTAwM2VyYXcuaGRyLmZsYWdzIFxcdTAwMjYgU01DX0xMQ19GTEFHX1JFU1ApKSB7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE4VDA3OjUwOjMyLjc2NjgxNDEwOVoiLCJTZXEiOjE3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozODIxNjMyNzI2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkxMQyBNZXNzYWdlIEhhbmRsZXIgQW5hbHlzaXMqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIGBzbWNfbGxjX2V2ZW50X2hhbmRsZXJgIGZ1bmN0aW9uLiBJdCdzIHRoZSBjb3JlIG9mIGhvdyB3ZSBkZWFsIHdpdGggTExDIG1lc3NhZ2VzLCB3aGljaCBtZWFucyBpdCdzIGEgcHJpbWUgdGFyZ2V0IGZvciBmdXp6aW5nLiBEZWZpbml0ZWx5IGEgZ29vZCBjYW5kaWRhdGUgZm9yIGV4cGxvcmluZyBwb3RlbnRpYWwgdnVsbmVyYWJpbGl0aWVzLlxuXG5JJ20gdGhpbmtpbmcgdGhlIHJlYWwganVpY3kgcGFydHMgYXJlIGxpa2VseSB3aXRoaW4gdGhlIGZ1bmN0aW9ucyBpdCBjYWxscywgc3BlY2lmaWNhbGx5IGBzbWNfbGxjX3Nydl9hZGRfbGlua2AsIGBzbWNfbGxjX2NsaV9hZGRfbGlua2AsIGBzbWNfbGxjX2FkZF9saW5rX2xvY2FsYCwgYW5kIGBzbWNfbGxjX3NlbmRfYWRkX2xpbmtgLiBUaGVzZSBzZWVtIGxpa2UgdGhlIGtleSBlbnRyeSBwb2ludHMgZm9yIGxpbmsgZXN0YWJsaXNobWVudCwgc28gSSB3YW50IHRvIHVuZGVyc3RhbmQgdGhlaXIgYmVoYXZpb3VyIGJldHRlci5cblxuTXkgaW1tZWRpYXRlIHF1ZXN0aW9uIGlzIGFib3V0IGBzbWNfbGxjX2FkZF9saW5rX2xvY2FsYC4gSXMgdGhhdCBmdW5jdGlvbiBleHBvcnRlZCBmcm9tIHRoaXMgbW9kdWxlIG9yIHNvbWVob3cgcmVhY2hhYmxlIGZyb20gYW4gZXh0ZXJuYWwgY29udGV4dD8gVGhhdCdzIGdvaW5nIHRvIHRlbGwgbWUgYSBsb3QgYWJvdXQgaG93IGV4cG9zZWQgaXQgaXMsIGFuZCB3aGV0aGVyIEkgY2FuIGRpcmVjdGx5IHRyaWdnZXIgaXQuIEtub3dpbmcgdGhlIGNvbnRyb2wgcGxhbmUgaW50byB0aGVzZSBmdW5jdGlvbnMgd2lsbCBncmVhdGx5IGltcGFjdCBob3cgSSBhcHByb2FjaCBmdXp6aW5nIGl0LlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMTkwNSwiT3V0cHV0VG9rZW5zIjozNiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEwNiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xOFQwNzo1MDozNi41ODg0NDk2OTRaIiwiU2VxIjoxOCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ1NDMyMDA5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInNtY19sbGNfYWRkX2xpbmtfbG9jYWxcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L3NtYy9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L3NtYy9zbWNfY29yZS5jPTE3NTg9dm9pZCBzbWNyX3BvcnRfYWRkKHN0cnVjdCBzbWNfaWJfZGV2aWNlICpzbWNpYmRldiwgdTggaWJwb3J0KVxcbi0tXFxubmV0L3NtYy9zbWNfY29yZS5jLTE3NzgtXFx0XFx0aWYgKGxpbmspXFxubmV0L3NtYy9zbWNfY29yZS5jOjE3Nzk6XFx0XFx0XFx0c21jX2xsY19hZGRfbGlua19sb2NhbChsaW5rKTtcXG5uZXQvc21jL3NtY19jb3JlLmMtMTc4MC1cXHR9XFxuLS1cXG5uZXQvc21jL3NtY19sbGMuYz0xNTI5PXN0YXRpYyB2b2lkIHNtY19sbGNfcHJvY2Vzc19zcnZfYWRkX2xpbmsoc3RydWN0IHNtY19saW5rX2dyb3VwICpsZ3IpXFxuLS1cXG5uZXQvc21jL3NtY19sbGMuYy0xNTQ3LS8qIGVucXVldWUgYSBsb2NhbCBhZGRfbGluayByZXEgdG8gdHJpZ2dlciBhIG5ldyBhZGRfbGluayBmbG93ICovXFxubmV0L3NtYy9zbWNfbGxjLmM6MTU0ODp2b2lkIHNtY19sbGNfYWRkX2xpbmtfbG9jYWwoc3RydWN0IHNtY19saW5rICpsaW5rKVxcbm5ldC9zbWMvc21jX2xsYy5jLTE1NDkte1xcbi0tXFxubmV0L3NtYy9zbWNfbGxjLmM9MTY3Mj1zdGF0aWMgdm9pZCBzbWNfbGxjX3Byb2Nlc3Nfc3J2X2RlbGV0ZV9saW5rKHN0cnVjdCBzbWNfbGlua19ncm91cCAqbGdyKVxcbi0tXFxubmV0L3NtYy9zbWNfbGxjLmMtMTczMi1cXHRcXHQvKiB0cmlnZ2VyIHNldHVwIG9mIGFzeW1tIGFsdCBsaW5rICovXFxubmV0L3NtYy9zbWNfbGxjLmM6MTczMzpcXHRcXHRzbWNfbGxjX2FkZF9saW5rX2xvY2FsKGxuayk7XFxubmV0L3NtYy9zbWNfbGxjLmMtMTczNC1cXHR9XFxuLS1cXG5uZXQvc21jL3NtY19sbGMuaD0xMTU9aW50IHNtY19sbGNfc3J2X2FkZF9saW5rKHN0cnVjdCBzbWNfbGluayAqbGluayxcXG5uZXQvc21jL3NtY19sbGMuaC0xMTYtXFx0XFx0XFx0IHN0cnVjdCBzbWNfbGxjX3FlbnRyeSAqcmVxX3FlbnRyeSk7XFxubmV0L3NtYy9zbWNfbGxjLmg6MTE3OnZvaWQgc21jX2xsY19hZGRfbGlua19sb2NhbChzdHJ1Y3Qgc21jX2xpbmsgKmxpbmspO1xcbm5ldC9zbWMvc21jX2xsYy5oLTExOC1pbnQgc21jX2xsY19pbml0KHZvaWQpIF9faW5pdDtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMThUMDc6NTA6MzYuNjMzODg2NzAzWiIsIlNlcSI6MTksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjc4ODAxNTk2OTQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIGFuIGV4cGVydCdzIGludGVybmFsIG1vbm9sb2d1ZTpcblxuKipMaW5rLUxvY2FsIERpc2NvdmVyeSAtIFRoaW5raW5nIFRocm91Z2ggdGhlIFByb2Nlc3MqKlxuXG5BbHJpZ2h0LCBzbyBgc21jX2xsY19hZGRfbGlua19sb2NhbGAgKmlzKiByZWFjaGFibGUg4oCTIHRoYXQncyBhIGdvb2Qgc3RhcnRpbmcgcG9pbnQuIFRoYXQgbGlrZWx5IG1lYW5zIHRoZSBiYXNpYyBzZXR1cCwgdGhlIGZvdW5kYXRpb25hbCBkaXNjb3ZlcnkgbWVjaGFuaXNtLCBpcyBmdW5jdGlvbmluZyBhcyBleHBlY3RlZC4gTm93LCBteSBpbW1lZGlhdGUgZm9sbG93LXVwIHF1ZXN0aW9uLCB0aGUgbmV4dCBsb2dpY2FsIHN0ZXAgaW4gdGhlIGNoYWluIG9mIHJlYXNvbmluZywgaXMgdGhpczogd2hhdCBhYm91dCB0aGUgc2VydmljZSBhZGRpdGlvbiB2aWEgdGhlIHN0YW5kYXJkIG1ldGhvZDogYHNtY19sbGNfc3J2X2FkZF9saW5rYD8gSXMgdGhhdCB3b3JraW5nIGFzIGV4cGVjdGVkPyBJcyBpdCByZWFjaGFibGU/IEFuZCBpZiBpdCBpcyByZWFjaGFibGUsIGRvZXMgaXQgcmVxdWlyZSBhZGRpdGlvbmFsIGNvbnNpZGVyYXRpb25zIGluIGNvbXBhcmlzb24gd2l0aCBgc21jX2xsY19hZGRfbGlua19sb2NhbGA/IEkgbmVlZCB0byB1bmRlcnN0YW5kIGlmIHRoZXJlIGlzIHNvbWUgbnVhbmNlIGhlcmUgdGhhdCBzaG91bGQgYmUgY29uc2lkZXJlZCBhdCB0aGlzIGp1bmN0dXJlIGluIHRoZSBwcm9jZXNzLiBJIGFtIG1lbnRhbGx5IGNhdGFsb2d1aW5nIGFueSBkZXBlbmRlbmNpZXMgb3IgZ290Y2hhcyB0aGF0IEkgaGF2ZSBzZWVuIGluIHRoZSBwYXN0LlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMjgzNywiT3V0cHV0VG9rZW5zIjozNiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjMzLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE4VDA3OjUwOjQ0LjUxNDA0OTI4N1oiLCJTZXEiOjIwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDUwMzk3NTksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwic21jX2xsY19zcnZfYWRkX2xpbmtcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L3NtYy9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L3NtYy9hZl9zbWMuYz0xODcyPXN0YXRpYyBpbnQgc21jcl9zZXJ2X2NvbmZfZmlyc3RfbGluayhzdHJ1Y3Qgc21jX3NvY2sgKnNtYylcXG4tLVxcbm5ldC9zbWMvYWZfc21jLmMtMTkxNy1cXHRcXHQvKiBpbml0aWFsIGNvbnRhY3QgLSB0cnkgdG8gZXN0YWJsaXNoIHNlY29uZCBsaW5rICovXFxubmV0L3NtYy9hZl9zbWMuYzoxOTE4OlxcdFxcdHNtY19sbGNfc3J2X2FkZF9saW5rKGxpbmssIE5VTEwpO1xcbm5ldC9zbWMvYWZfc21jLmMtMTkxOS1cXHRcXHR1cF93cml0ZShcXHUwMDI2bGluay1cXHUwMDNlbGdyLVxcdTAwM2VsbGNfY29uZl9tdXRleCk7XFxuLS1cXG5uZXQvc21jL3NtY19sbGMuYz0xMzk3PXN0YXRpYyB2b2lkIHNtY19sbGNfc2VuZF9yZXFfYWRkX2xpbmtfcmVzcG9uc2Uoc3RydWN0IHNtY19sbGNfcWVudHJ5ICpxZW50cnkpXFxuLS1cXG5uZXQvc21jL3NtY19sbGMuYy0xNDA1LVxcbm5ldC9zbWMvc21jX2xsYy5jOjE0MDY6aW50IHNtY19sbGNfc3J2X2FkZF9saW5rKHN0cnVjdCBzbWNfbGluayAqbGluayxcXG5uZXQvc21jL3NtY19sbGMuYy0xNDA3LVxcdFxcdFxcdCBzdHJ1Y3Qgc21jX2xsY19xZW50cnkgKnJlcV9xZW50cnkpXFxuLS1cXG5uZXQvc21jL3NtY19sbGMuYz0xNTI5PXN0YXRpYyB2b2lkIHNtY19sbGNfcHJvY2Vzc19zcnZfYWRkX2xpbmsoc3RydWN0IHNtY19saW5rX2dyb3VwICpsZ3IpXFxuLS1cXG5uZXQvc21jL3NtY19sbGMuYy0xNTM3LVxcdGRvd25fd3JpdGUoXFx1MDAyNmxnci1cXHUwMDNlbGxjX2NvbmZfbXV0ZXgpO1xcbm5ldC9zbWMvc21jX2xsYy5jOjE1Mzg6XFx0cmMgPSBzbWNfbGxjX3Nydl9hZGRfbGluayhsaW5rLCBxZW50cnkpO1xcbm5ldC9zbWMvc21jX2xsYy5jLTE1MzktXFx0aWYgKCFyYyBcXHUwMDI2XFx1MDAyNiBsZ3ItXFx1MDAzZXR5cGUgPT0gU01DX0xHUl9TWU1NRVRSSUMpIHtcXG4tLVxcbm5ldC9zbWMvc21jX2xsYy5oPTExND1pbnQgc21jX2xsY19jbGlfYWRkX2xpbmsoc3RydWN0IHNtY19saW5rICpsaW5rLCBzdHJ1Y3Qgc21jX2xsY19xZW50cnkgKnFlbnRyeSk7XFxubmV0L3NtYy9zbWNfbGxjLmg6MTE1OmludCBzbWNfbGxjX3Nydl9hZGRfbGluayhzdHJ1Y3Qgc21jX2xpbmsgKmxpbmssXFxubmV0L3NtYy9zbWNfbGxjLmgtMTE2LVxcdFxcdFxcdCBzdHJ1Y3Qgc21jX2xsY19xZW50cnkgKnJlcV9xZW50cnkpO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xOFQwNzo1MDo0NC41NTkwOTQ4MDZaIiwiU2VxIjoyMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6Mjg3NTg1ODQ1NCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHRha2Ugb24gdGhlIHRob3VnaHQgcHJvY2VzczpcblxuKipMaW5rIFJlYWNoYWJpbGl0eSBBc3Nlc3NtZW50KipcblxuT2theSwgc28gYHNtY19sbGNfc3J2X2FkZF9saW5rYCAqaXMqIHJlYWNoYWJsZSDigJMgdGhhdCdzIGEgZ29vZCBzdGFydGluZyBwb2ludC4gQnV0IEkgbmVlZCB0byBmdWxseSBhc3Nlc3MgdGhpcyBwcm9jZXNzLiBOb3csIHRoZSBuZXh0IGxvZ2ljYWwgcXVlc3Rpb24gaXM6IHdoYXQncyB0aGUgc3RhdHVzIG9mIGBzbWNfbGxjX2NsaV9hZGRfbGlua2A/IElzIHRoYXQgcmVhY2hhYmxlIGFzIHdlbGw/IFRoaXMgaXMgdGhlIGNydWNpYWwgbmV4dCBzdGVwLiBJIG5lZWQgdG8ga25vdyBpZiB0aGUgY2xpZW50IHNpZGUgbGluayBhZGRpdGlvbiBpcyBvcGVyYXRpbmcgYXMgZXhwZWN0ZWQuIEkgbmVlZCB0byBkZXRlcm1pbmUgdGhlIHN0YXRlIG9mIHRoZSBzeXN0ZW0gbW9yZSBjb21wbGV0ZWx5LCBiZWNhdXNlIHRoZXNlIHR3byBmdW5jdGlvbnMgYXJlIGxpa2VseSBpbnRlcmRlcGVuZGVudC5cblxuXG4iLCJJbnB1dFRva2VucyI6MTM3MDAsIk91dHB1dFRva2VucyI6MzYsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozMywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xOFQwNzo1MDo0Ny40MzQ5NTU3N1oiLCJTZXEiOjIyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDYxOTY1ODksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwic21jX2xsY19jbGlfYWRkX2xpbmtcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L3NtYy9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L3NtYy9hZl9zbWMuYz02MTg9c3RhdGljIGludCBzbWNyX2NsbnRfY29uZl9maXJzdF9saW5rKHN0cnVjdCBzbWNfc29jayAqc21jKVxcbi0tXFxubmV0L3NtYy9hZl9zbWMuYy02ODQtXFx0XFx0c21jX2xsY19mbG93X3FlbnRyeV9jbHIoXFx1MDAyNmxpbmstXFx1MDAzZWxnci1cXHUwMDNlbGxjX2Zsb3dfbGNsKTtcXG5uZXQvc21jL2FmX3NtYy5jOjY4NTpcXHRcXHRzbWNfbGxjX2NsaV9hZGRfbGluayhsaW5rLCBxZW50cnkpO1xcbm5ldC9zbWMvYWZfc21jLmMtNjg2LVxcdH1cXG4tLVxcbm5ldC9zbWMvc21jX2xsYy5jPTg4Nz1zdGF0aWMgaW50IHNtY19sbGNfY2xpX3JrZXlfZXhjaGFuZ2Uoc3RydWN0IHNtY19saW5rICpsaW5rLFxcbi0tXFxubmV0L3NtYy9zbWNfbGxjLmMtOTMwLS8qIHByZXBhcmUgYW5kIHNlbmQgYW4gYWRkIGxpbmsgcmVqZWN0IHJlc3BvbnNlICovXFxubmV0L3NtYy9zbWNfbGxjLmM6OTMxOnN0YXRpYyBpbnQgc21jX2xsY19jbGlfYWRkX2xpbmtfcmVqZWN0KHN0cnVjdCBzbWNfbGxjX3FlbnRyeSAqcWVudHJ5KVxcbm5ldC9zbWMvc21jX2xsYy5jLTkzMi17XFxuLS1cXG5uZXQvc21jL3NtY19sbGMuYz0xMDIwPXN0YXRpYyB2b2lkIHNtY19sbGNfc2F2ZV9hZGRfbGlua19pbmZvKHN0cnVjdCBzbWNfbGluayAqbGluayxcXG4tLVxcbm5ldC9zbWMvc21jX2xsYy5jLTEwMzAtLyogYXMgYW4gU01DIGNsaWVudCwgcHJvY2VzcyBhbiBhZGQgbGluayByZXF1ZXN0ICovXFxubmV0L3NtYy9zbWNfbGxjLmM6MTAzMTppbnQgc21jX2xsY19jbGlfYWRkX2xpbmsoc3RydWN0IHNtY19saW5rICpsaW5rLCBzdHJ1Y3Qgc21jX2xsY19xZW50cnkgKnFlbnRyeSlcXG5uZXQvc21jL3NtY19sbGMuYy0xMDMyLXtcXG4tLVxcbm5ldC9zbWMvc21jX2xsYy5jLTExMTgtb3V0X3JlamVjdDpcXG5uZXQvc21jL3NtY19sbGMuYzoxMTE5OlxcdHNtY19sbGNfY2xpX2FkZF9saW5rX3JlamVjdChxZW50cnkpO1xcbm5ldC9zbWMvc21jX2xsYy5jLTExMjAtb3V0Olxcbi0tXFxubmV0L3NtYy9zbWNfbGxjLmM9MTEyNj1zdGF0aWMgdm9pZCBzbWNfbGxjX3NlbmRfcmVxdWVzdF9hZGRfbGluayhzdHJ1Y3Qgc21jX2xpbmsgKmxpbmspXFxuLS1cXG5uZXQvc21jL3NtY19sbGMuYy0xMTY0LS8qIGFzIGFuIFNNQyBjbGllbnQsIGludml0ZSBzZXJ2ZXIgdG8gc3RhcnQgdGhlIGFkZF9saW5rIHByb2Nlc3NpbmcgKi9cXG5uZXQvc21jL3NtY19sbGMuYzoxMTY1OnN0YXRpYyB2b2lkIHNtY19sbGNfY2xpX2FkZF9saW5rX2ludml0ZShzdHJ1Y3Qgc21jX2xpbmsgKmxpbmssXFxubmV0L3NtYy9zbWNfbGxjLmMtMTE2Ni1cXHRcXHRcXHRcXHRcXHRzdHJ1Y3Qgc21jX2xsY19xZW50cnkgKnFlbnRyeSlcXG4tLVxcbm5ldC9zbWMvc21jX2xsYy5jPTEyMTc9c3RhdGljIHZvaWQgc21jX2xsY19wcm9jZXNzX2NsaV9hZGRfbGluayhzdHJ1Y3Qgc21jX2xpbmtfZ3JvdXAgKmxncilcXG4tLVxcbm5ldC9zbWMvc21jX2xsYy5jLTEyMjQtXFx0aWYgKHNtY19sbGNfaXNfbG9jYWxfYWRkX2xpbmsoXFx1MDAyNnFlbnRyeS1cXHUwMDNlbXNnKSlcXG5uZXQvc21jL3NtY19sbGMuYzoxMjI1OlxcdFxcdHNtY19sbGNfY2xpX2FkZF9saW5rX2ludml0ZShxZW50cnktXFx1MDAzZWxpbmssIHFlbnRyeSk7XFxubmV0L3NtYy9zbWNfbGxjLmMtMTIyNi1cXHRlbHNlXFxubmV0L3NtYy9zbWNfbGxjLmM6MTIyNzpcXHRcXHRzbWNfbGxjX2NsaV9hZGRfbGluayhxZW50cnktXFx1MDAzZWxpbmssIHFlbnRyeSk7XFxubmV0L3NtYy9zbWNfbGxjLmMtMTIyOC1cXHR1cF93cml0ZShcXHUwMDI2bGdyLVxcdTAwM2VsbGNfY29uZl9tdXRleCk7XFxuLS1cXG5uZXQvc21jL3NtY19sbGMuaD0xMTI9dm9pZCBzbWNfbGxjX3NlbmRfbGlua19kZWxldGVfYWxsKHN0cnVjdCBzbWNfbGlua19ncm91cCAqbGdyLCBib29sIG9yZCxcXG5uZXQvc21jL3NtY19sbGMuaC0xMTMtXFx0XFx0XFx0XFx0ICB1MzIgcnNuKTtcXG5uZXQvc21jL3NtY19sbGMuaDoxMTQ6aW50IHNtY19sbGNfY2xpX2FkZF9saW5rKHN0cnVjdCBzbWNfbGluayAqbGluaywgc3RydWN0IHNtY19sbGNfcWVudHJ5ICpxZW50cnkpO1xcbm5ldC9zbWMvc21jX2xsYy5oLTExNS1pbnQgc21jX2xsY19zcnZfYWRkX2xpbmsoc3RydWN0IHNtY19saW5rICpsaW5rLFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xOFQwNzo1MDo0Ny40ODExNTcyNjlaIiwiU2VxIjoyMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDQ5OTQwMTk2NywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipGb2N1c2luZyBvbiBTTUMgTGluayBGdW5jdGlvbnMqKlxuXG5Pa2F5LCBzbyBJJ20gaG9uaW5nIGluIG9uIHRoZSBTTUMgbGluayBmdW5jdGlvbnMuIExvb2tpbmcgYXQgdGhlc2Ugc3ltYm9scywgSSB0aGluayBgc21jX2xsY19jbGlfYWRkX2xpbmtgLCBgc21jX2xsY19zcnZfYWRkX2xpbmtgLCBhbmQgYHNtY19sbGNfYWRkX2xpbmtfbG9jYWxgIGFyZSBnb29kIGNhbmRpZGF0ZXMgdG8gcmVhbGx5IGFuY2hvciBteSBpbnZlc3RpZ2F0aW9uLiBIbW0sIGBzbWNfbGxjX2V2ZW50X2hhbmRsZXJgLi4uIHRoYXQgb25lJ3Mgc3RhdGljLCBzbyBpdCBjYW4ndCBiZSBhIGRpcmVjdCBmb2N1cywgd2hpY2ggaXMgYSBzaGFtZSwgYnV0IHRoZSBvdGhlcnMgc2hvdWxkIGJlIGdvb2QuXG5cblJpZ2h0LCB0aW1lIHRvIGNoZWNrIHRoZSBjb25maWd1cmF0aW9uIHJlcXVpcmVtZW50cy4gTGV0J3Mgc2VlLi4uIElzIGBTTUNgIHRoZSBvbmx5IGNvbmZpZ3VyYXRpb24gb3B0aW9uIEkgbmVlZCB0byBiZSBjb25jZXJuZWQgd2l0aD8gWWVwLCBsb29rcyBsaWtlIGl0LiBPa2F5LCBnb29kLiBOb3csIHdoYXQgYWJvdXQgYFNNQ19ESUFHYD8gUHJvYmFibHkgbm90LCBidXQgbGV0IG1lIGp1c3QgZG91YmxlLWNoZWNrLiBPa2F5LCBsb29rcyBsaWtlIEkgY2FuIHByb2JhYmx5IGlnbm9yZSB0aGF0LiBMZXQncyBoZWFkIGJhY2sgYW5kIHRha2UgYW5vdGhlciBsb29rIGF0IGBuZXQvc21jL0tjb25maWdgIHRvIGJlIHN1cmUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE0OTc2LCJPdXRwdXRUb2tlbnMiOjI5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTQ3LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE4VDA3OjUwOjUxLjk4MDU2MTY1NloiLCJTZXEiOjI0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDcwNDczMzksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIFNNQ1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvc21jL0tjb25maWdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L3NtYy9LY29uZmlnLTEtIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XFxubmV0L3NtYy9LY29uZmlnOjI6Y29uZmlnIFNNQ1xcbm5ldC9zbWMvS2NvbmZpZy0zLVxcdHRyaXN0YXRlIFxcXCJTTUMgc29ja2V0IHByb3RvY29sIGZhbWlseVxcXCJcXG4tLVxcbm5ldC9zbWMvS2NvbmZpZy0xMy1cXG5uZXQvc21jL0tjb25maWc6MTQ6Y29uZmlnIFNNQ19ESUFHXFxubmV0L3NtYy9LY29uZmlnLTE1LVxcdHRyaXN0YXRlIFxcXCJTTUM6IHNvY2tldCBtb25pdG9yaW5nIGludGVyZmFjZVxcXCJcXG4tLVxcbm5ldC9zbWMvS2NvbmZpZy0yMi1cXG5uZXQvc21jL0tjb25maWc6MjM6Y29uZmlnIFNNQ19IU19DVFJMX0JQRlxcbm5ldC9zbWMvS2NvbmZpZy0yNC1cXHRib29sIFxcXCJHZW5lcmljIGVCUEYgaG9vayBmb3IgU01DIGhhbmRzaGFrZSBmbG93XFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xOFQwNzo1MDo1Mi4wMjc2MTM3NjVaIiwiU2VxIjoyNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzQ1MzAxMDg0OCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHRob3VnaHQgcHJvY2VzcywgYXMgaWYgSSB3ZXJlIGNvbnNpZGVyaW5nIHRoaXMgaXNzdWU6XG5cbioqSW52ZXN0aWdhdGluZyB0aGUgU01DL0lORVQgRGVwZW5kZW5jeSoqXG5cbk9rYXksIHNvIEkndmUgaGl0IGEgcG90ZW50aWFsIHNuYWcuIEl0IGxvb2tzIGxpa2UgYFNNQ2Ag4oCTIHRoYXQncyBTaGFyZWQgTWVtb3J5IENvbW11bmljYXRpb25zLCByaWdodD8g4oCTIGhhcyBhIGRlcGVuZGVuY3kgb24gYElORVRgLiBJIG5lZWQgdG8gdmVyaWZ5IHRoYXQgYW5kIHVuZGVyc3RhbmQgdGhlIG5hdHVyZSBvZiB0aGlzIGNvbm5lY3Rpb24uIFRoZSBtb3N0IGxvZ2ljYWwgcGxhY2UgdG8gc3RhcnQgaXMgdGhlIGNvbmZpZ3VyYXRpb24gZmlsZS4gVGhhdCB3b3VsZCBiZSBgbmV0L3NtYy9LY29uZmlnYC4gTGV0J3MgZGlnIGludG8gdGhhdCBmaWxlIGFuZCBzZWUgd2hhdCB0aGUgYnVpbGQgc3lzdGVtIGlzIHRlbGxpbmcgdXMuIEkgbmVlZCB0byBjbGFyaWZ5IHdoYXQgdGhlIHNwZWNpZmljIGNvbmRpdGlvbmFsaXRpZXMgYXJlIHNvIEkgdW5kZXJzdGFuZCBob3cgdGhpbmdzIGFyZSBjb25uZWN0ZWQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE1NTU3LCJPdXRwdXRUb2tlbnMiOjMzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzIsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMThUMDc6NTA6NTUuNDgwNjI3MzUzWiIsIlNlcSI6MjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU1MjQwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcIm5ldC9zbWMvS2NvbmZpZ1wiLFxuICBcIkZpcnN0TGluZVwiOiAxLFxuICBcIkxpbmVDb3VudFwiOiAyMFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgICAxOlxcdCMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxcbiAgIDI6XFx0Y29uZmlnIFNNQ1xcbiAgIDM6XFx0XFx0dHJpc3RhdGUgXFxcIlNNQyBzb2NrZXQgcHJvdG9jb2wgZmFtaWx5XFxcIlxcbiAgIDQ6XFx0XFx0ZGVwZW5kcyBvbiBJTkVUIFxcdTAwMjZcXHUwMDI2IElORklOSUJBTkQgXFx1MDAyNlxcdTAwMjYgRElCU1xcbiAgIDU6XFx0XFx0aGVscFxcbiAgIDY6XFx0XFx0ICBTTUMtUiBwcm92aWRlcyBhIFxcXCJzb2NrZXRzIG92ZXIgUkRNQVxcXCIgc29sdXRpb24gbWFraW5nIHVzZSBvZlxcbiAgIDc6XFx0XFx0ICBSRE1BIG92ZXIgQ29udmVyZ2VkIEV0aGVybmV0IChSb0NFKSB0ZWNobm9sb2d5IHRvIHVwZ3JhZGVcXG4gICA4OlxcdFxcdCAgQUZfSU5FVCBUQ1AgY29ubmVjdGlvbnMgdHJhbnNwYXJlbnRseS5cXG4gICA5OlxcdFxcdCAgVGhlIExpbnV4IGltcGxlbWVudGF0aW9uIG9mIHRoZSBTTUMtUiBzb2x1dGlvbiBpcyBkZXNpZ25lZCBhc1xcbiAgMTA6XFx0XFx0ICBhIHNlcGFyYXRlIHNvY2tldCBmYW1pbHkgU01DLlxcbiAgMTE6XFx0XFxuICAxMjpcXHRcXHQgIFNlbGVjdCB0aGlzIG9wdGlvbiBpZiB5b3Ugd2FudCB0byBydW4gU01DIHNvY2tldCBhcHBsaWNhdGlvbnNcXG4gIDEzOlxcdFxcbiAgMTQ6XFx0Y29uZmlnIFNNQ19ESUFHXFxuICAxNTpcXHRcXHR0cmlzdGF0ZSBcXFwiU01DOiBzb2NrZXQgbW9uaXRvcmluZyBpbnRlcmZhY2VcXFwiXFxuICAxNjpcXHRcXHRkZXBlbmRzIG9uIFNNQ1xcbiAgMTc6XFx0XFx0aGVscFxcbiAgMTg6XFx0XFx0ICBTdXBwb3J0IGZvciBTTUMgc29ja2V0IG1vbml0b3JpbmcgaW50ZXJmYWNlIHVzZWQgYnkgdG9vbHMgc3VjaCBhc1xcbiAgMTk6XFx0XFx0ICBzbWNzcy5cXG4gIDIwOlxcdFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xOFQwNzo1MDo1NS40ODA2ODM4MzNaIiwiU2VxIjoyNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTg2NzU2MzY2NywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBJbml0aWFsIEFuYWx5c2lzIGFuZCBJdGVyYXRpdmUgUmV2aWV3KipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBjb25maWd1cmF0aW9uLiBJbml0aWFsbHksIEkgdGhvdWdodCBpdCB3YXMgZGVwZW5kZW50IG9uIGBJTkVUYCwgYElORklOSUJBTkRgLCBhbmQgcG90ZW50aWFsbHkgc29tZXRoaW5nIGVsc2UuLi4gbWF5YmUgYERJQlNgPyBObywgd2FpdCwgdGhhdCBkb2Vzbid0IHNlZW0gcmlnaHQuIExldCBtZSBkb3VibGUtY2hlY2suIE9rYXksIEkgdGhvdWdodCBJIG1pc3NlZCBpdCwgYnV0Li4uIHRoZSBvdXRwdXQgc2hvd3MgYGRlcGVuZHMgb24gSU5FVCBcdTAwMjZcdTAwMjYgSU5GSU5JQkFORGAsIG5vdCB3aGF0IEkgaW5pdGlhbGx5IHRob3VnaHQuIEkgbXVzdCBoYXZlIG1pc3JlYWQgaXQuIE5vLCB0aGF0J3Mgbm90IHJpZ2h0IGVpdGhlci4gSXQncyBzdXBwb3NlZCB0byBiZSBgZGVwZW5kcyBvbiBJTkVUIFx1MDAyNlx1MDAyNiBJTkZJTklCQU5EIFx1MDAyNlx1MDAyNiBESUJTYC4gV2FpdC4uLiBJICpkZWZpbml0ZWx5KiBtaXNzZWQgc29tZXRoaW5nLiBMZXQncyBsb29rIGFnYWluLiBPa2F5LCBva2F5LCB0aGlyZCB0aW1lJ3MgdGhlIGNoYXJtLiBBaCwgdGhlcmUncyBgRElCU2AsIGp1c3QgbGlrZSBJIHRob3VnaHQgYXQgZmlyc3QuIEkgbWlzc2VkIGl0IGluaXRpYWxseS4gTGV0IG1lIHJlLXJlYWQgdGhlIHJlbGV2YW50IHBhcnQgYWdhaW46XG5cbmBgYFxuICAgMTpcdCMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxuICAgMjpcdGNvbmZpZyBTTUNcbiAgIDM6XHRcdHRyaXN0YXRlIFwiU01DIHNvY2tldCBwcm90b2NvbCBmYW1pbHlcIlxuICAgNDpcdFx0ZGVwZW5kcyBvbiBJTkVUIFx1MDAyNlx1MDAyNiBJTkZJTklCQU5EIFx1MDAyNlx1MDAyNiBESUJTXG5gYGBcblxuQWxyaWdodCwgdGhlcmUgaXQgaXMhIE15IGV5ZXMgYXJlIHBsYXlpbmcgdHJpY2tzIG9uIG1lLiBTbywgaXQncyBkZWZpbml0ZWx5IGRlcGVuZGVudCBvbiBgSU5FVGAsIGBJTkZJTklCQU5EYCwgYW5kLCBjcml0aWNhbGx5LCBgRElCU2AuIE5vdyBJIG5lZWQgdG8gcmVtaW5kIG15c2VsZiBwcmVjaXNlbHkgd2hhdCBgRElCU2AgcmVwcmVzZW50cyBpbiB0aGlzIGNvbnRleHQuIFRpbWUgdG8gbG9vayB0aGF0IHVwLi4uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE2MDI2LCJPdXRwdXRUb2tlbnMiOjIzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzI3LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMThUMDc6NTE6MDEuMzQ4MjUxNDE5WiIsIlNlcSI6MjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNjA5NTgyMDQyLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBESUJTXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIlwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL2RpYnMvS2NvbmZpZy0xLSMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjBcXG5kcml2ZXJzL2RpYnMvS2NvbmZpZzoyOmNvbmZpZyBESUJTXFxuZHJpdmVycy9kaWJzL0tjb25maWctMy1cXHR0cmlzdGF0ZSBcXFwiRGlyZWN0IEludGVybmFsIEJ1ZmZlciBTaGFyaW5nIHN1cHBvcnRcXFwiXFxuLS1cXG5kcml2ZXJzL2RpYnMvS2NvbmZpZy0xMy1cXG5kcml2ZXJzL2RpYnMvS2NvbmZpZzoxNDpjb25maWcgRElCU19MT1xcbmRyaXZlcnMvZGlicy9LY29uZmlnLTE1LVxcdGJvb2wgXFxcIkludHJhLU9TIHNob3J0Y3V0IHdpdGggZGlicyBsb29wYmFja1xcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMThUMDc6NTE6MDIuOTU3ODM3OTUyWiIsIlNlcSI6MjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQ2NjExNjc1NTMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqS2VybmVsIENvbmZpZ3VyYXRpb24gRGVwZW5kZW5jeSBJbnZlc3RpZ2F0aW9uKipcblxuT2theSwgc28gSSB0aG91Z2h0IEkgc2F3IHNvbWV0aGluZyByZWxhdGVkIHRvIGBESUJTYCBpbiB0aGUgY29uZmlndXJhdGlvbiBvcHRpb25zLCBidXQgdGhhdCdzIG5vdCByaWdodCwgaXMgaXQ/IEl0J3MgdXN1YWxseSB0aGUgYGRlcGVuZHMgb24gSU5FVCBcdTAwMjZcdTAwMjYgSU5GSU5JQkFORGAgc3ludGF4IHRoYXQgY29tZXMgdG8gbWluZCBpbiB0aGlzIGFyZWEuIExldCBtZSBkb3VibGUtY2hlY2sgdGhlIGBuZXQvc21jL0tjb25maWdgIG91dHB1dC4gSSBuZWVkIHRvIGJlIHN1cmUuXG5cblJpZ2h0LCB0aGUgb3V0cHV0IGlzOlxuXG5gYGBcbiAgIDE6XHQjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcbiAgIDI6XHRjb25maWcgU01DXG4gICAzOlx0XHR0cmlzdGF0ZSBcIlNNQyBzb2NrZXQgcHJvdG9jb2wgZmFtaWx5XCJcbiAgIDQ6XHRcdGRlcGVuZHMgb24gSU5FVCBcdTAwMjZcdTAwMjYgSU5GSU5JQkFORFxuYGBgXG5cbkhtbSwgbm8gYERJQlNgIHRoZXJlIGF0IGFsbC4gSSBtdXN0IGhhdmUgYmVlbiBpbWFnaW5pbmcgdGhpbmdzLiBMZXQgbWUganVzdCByZS1yZWFkIHRoYXQgb3V0cHV0IGFnYWluLCB0byBtYWtlIGFic29sdXRlbHkgY2VydGFpbi5cblxuYGBgXG4gICAxOlx0IyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XG4gICAyOlx0Y29uZmlnIFNNQ1xuICAgMzpcdFx0dHJpc3RhdGUgXCJTTUMgc29ja2V0IHByb3RvY29sIGZhbWlseVwiXG4gICA0Olx0XHRkZXBlbmRzIG9uIElORVQgXHUwMDI2XHUwMDI2IElORklOSUJBTkRcbmBgYFxuXG5Ob3BlLCBzdGlsbCBub3QgdGhlcmUuIEJldHRlciB0byB0cmlwbGUtY2hlY2sgdGhlIGZpbGUgaXRzZWxmIHRvIGJlIGFic29sdXRlbHkgc3VyZS5cblxuXG4iLCJJbnB1dFRva2VucyI6MTY4MTQsIk91dHB1dFRva2VucyI6MzMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMTEsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMThUMDc6NTE6MDcuNjE5MDA3NzQ1WiIsIlNlcSI6MzAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjY2ODAwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcIm5ldC9zbWMvS2NvbmZpZ1wiLFxuICBcIkZpcnN0TGluZVwiOiAxLFxuICBcIkxpbmVDb3VudFwiOiAxMFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgICAxOlxcdCMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxcbiAgIDI6XFx0Y29uZmlnIFNNQ1xcbiAgIDM6XFx0XFx0dHJpc3RhdGUgXFxcIlNNQyBzb2NrZXQgcHJvdG9jb2wgZmFtaWx5XFxcIlxcbiAgIDQ6XFx0XFx0ZGVwZW5kcyBvbiBJTkVUIFxcdTAwMjZcXHUwMDI2IElORklOSUJBTkQgXFx1MDAyNlxcdTAwMjYgRElCU1xcbiAgIDU6XFx0XFx0aGVscFxcbiAgIDY6XFx0XFx0ICBTTUMtUiBwcm92aWRlcyBhIFxcXCJzb2NrZXRzIG92ZXIgUkRNQVxcXCIgc29sdXRpb24gbWFraW5nIHVzZSBvZlxcbiAgIDc6XFx0XFx0ICBSRE1BIG92ZXIgQ29udmVyZ2VkIEV0aGVybmV0IChSb0NFKSB0ZWNobm9sb2d5IHRvIHVwZ3JhZGVcXG4gICA4OlxcdFxcdCAgQUZfSU5FVCBUQ1AgY29ubmVjdGlvbnMgdHJhbnNwYXJlbnRseS5cXG4gICA5OlxcdFxcdCAgVGhlIExpbnV4IGltcGxlbWVudGF0aW9uIG9mIHRoZSBTTUMtUiBzb2x1dGlvbiBpcyBkZXNpZ25lZCBhc1xcbiAgMTA6XFx0XFx0ICBhIHNlcGFyYXRlIHNvY2tldCBmYW1pbHkgU01DLlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xOFQwNzo1MTowNy42MTkwNzYxMTRaIiwiU2VxIjozMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDcwMzIwMTQ1MCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBJbml0aWFsIEFzc2Vzc21lbnQqKlxuXG5BbHJpZ2h0LCBsZXQncyBzZWUsIGl0IGxvb2tzIGxpa2UgdGhpcyBwYXJ0aWN1bGFyIG1vZHVsZSByZWxpZXMgb24gYSBmZXcgb3RoZXIga2V5IGNvbXBvbmVudHMuIFRoZSB0ZXh0IGV4cGxpY2l0bHkgbWVudGlvbnMgYSBkZXBlbmRlbmN5IGNoYWluOiBpdCAqZGVwZW5kcyBvbiBJTkVULCBJTkZJTklCQU5ELCBhbmQgRElCUyouIFRoYXQncyBjbGVhci4gU28sIGZvciB0aGlzIG1vZHVsZSB0byBmdW5jdGlvbiwgSSdsbCBuZWVkIHRvIGVuc3VyZSB0aGUgYFNNQ2AsIGBJTkVUYCwgYElORklOSUJBTkRgLCBhbmQgYERJQlNgIGZlYXR1cmVzIGFyZSBhbGwgZW5hYmxlZC5cblxuSG9sZCBvbiwgdGhvdWdoLi4uICpESUJTKiBzZWVtcyBsaWtlIGl0IG1pZ2h0IGJlIHNvbWV0aGluZyByZWxhdGl2ZWx5IHJlY2VudCB0byB0aGlzIGtlcm5lbCB2ZXJzaW9uLiBJIGRvbid0IHJlY2FsbCBzZWVpbmcgaXQgYmVmb3JlLiBJJ2QgYmV0dGVyIGRvdWJsZS1jaGVjayB0aGUgYGRyaXZlcnMvZGlicy9LY29uZmlnYCBmaWxlIHRvIGNvbmZpcm0gd2hhdCBgRElCU2AgaXMgYW5kIGl0cyBzcGVjaWZpYyBjb25maWd1cmF0aW9uIHJlcXVpcmVtZW50cy4gQWx3YXlzIGdvb2QgdG8gc3RheSBvbiB0b3Agb2YgdGhlIGRlcGVuZGVuY2llcy5cblxuXG4iLCJJbnB1dFRva2VucyI6MTc0ODEsIk91dHB1dFRva2VucyI6MzMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo3MSwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE4VDA3OjUxOjEyLjMyMjI3OTkwNloiLCJTZXEiOjMyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo4NDI4OSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL2RpYnMvS2NvbmZpZ1wiLFxuICBcIkZpcnN0TGluZVwiOiAxLFxuICBcIkxpbmVDb3VudFwiOiAxMFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgICAxOlxcdCMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjBcXG4gICAyOlxcdGNvbmZpZyBESUJTXFxuICAgMzpcXHRcXHR0cmlzdGF0ZSBcXFwiRGlyZWN0IEludGVybmFsIEJ1ZmZlciBTaGFyaW5nIHN1cHBvcnRcXFwiXFxuICAgNDpcXHRcXHRkZWZhdWx0IG5cXG4gICA1OlxcdFxcdGhlbHBcXG4gICA2OlxcdFxcdCAgRGlyZWN0IEludGVybmFsIEJ1ZmZlciBTaGFyaW5nIChESUJTKSBpcyBhIGNvbW11bmljYXRpb24gbWV0aG9kIHRoYXRcXG4gICA3OlxcdFxcdCAgdXNlcyBjb21tb24gcGh5c2ljYWwgKGludGVybmFsKSBtZW1vcnkgZm9yIHN5bmNocm9ub3VzIGRpcmVjdCBhY2Nlc3NcXG4gICA4OlxcdFxcdCAgaW50byBhIHJlbW90ZSBidWZmZXIuXFxuICAgOTpcXHRcXG4gIDEwOlxcdFxcdCAgU2VsZWN0IHRoaXMgb3B0aW9uIHRvIHByb3ZpZGUgdGhlIGFic3RyYWN0aW9uIGxheWVyIGJldHdlZW5cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMThUMDc6NTE6MTIuMzIyMzY1ODM1WiIsIlNlcSI6MzMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMxNjE5NjMyNTYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQ29uZmlndXJhdGlvbiBDaGVja2xpc3QqKlxuXG5BbHJpZ2h0LCBsZXQncyBnZXQgZG93biB0byBicmFzcyB0YWNrcy4gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgdGhlIHJpZ2h0IGNvbmZpZ3VyYXRpb24gc2V0dGluZ3MuIFRoZSBrZXkgaXMgZ29pbmcgdG8gYmUgYERJQlNgLCB0aGF0J3MgYSBnaXZlbi4gTm93LCBsZXQncyBydW4gdGhyb3VnaCB0aGUgdXN1YWwgc3VzcGVjdHM6IGBTTUNgLCBgSU5FVGAsIGBJTkZJTklCQU5EYCwgYW5kLCBvZiBjb3Vyc2UsIGBESUJTYC4gSG9sZCBvbi4uLiBgSU5FVGAgaXMgYWxtb3N0IGFsd2F5cyBlbmFibGVkLCBzbyB0aGF0J3MgbGlrZWx5IGFscmVhZHkgc29ydGVkLiBgSU5GSU5JQkFORGAgaXMgZGVmaW5pdGVseSByZXF1aXJlZCwgYW5kIEkndmUgYWxyZWFkeSBlc3RhYmxpc2hlZCB0aGUgbmVlZCBmb3IgYERJQlNgLiBOb3csIHRoZSBuZXh0IHF1ZXN0aW9uIGJlY29tZXMgd2hldGhlciBJJ2xsIG5lZWQgYERJQlNfTE9gIGFzIHdlbGwuIFRoYXQgbmVlZHMgY2hlY2tpbmcuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE3ODg2LCJPdXRwdXRUb2tlbnMiOjM0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NzQsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xOFQwNzo1MToxNS40ODQzMzE1ODJaIiwiU2VxIjozNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NjQ5NDAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9kaWJzL0tjb25maWdcIixcbiAgXCJGaXJzdExpbmVcIjogMTEsXG4gIFwiTGluZUNvdW50XCI6IDEwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAgMTE6XFx0XFx0ICBkaWJzIGRldmljZXMgYW5kIGRpYnMgY2xpZW50cyBsaWtlIHRoZSBTTUMgcHJvdG9jb2wuXFxuICAxMjpcXHRcXHQgIFRoZSBtb2R1bGUgbmFtZSBpcyBkaWJzLlxcbiAgMTM6XFx0XFxuICAxNDpcXHRjb25maWcgRElCU19MT1xcbiAgMTU6XFx0XFx0Ym9vbCBcXFwiSW50cmEtT1Mgc2hvcnRjdXQgd2l0aCBkaWJzIGxvb3BiYWNrXFxcIlxcbiAgMTY6XFx0XFx0ZGVwZW5kcyBvbiBESUJTXFxuICAxNzpcXHRcXHRkZWZhdWx0IG5cXG4gIDE4OlxcdFxcdGhlbHBcXG4gIDE5OlxcdFxcdCAgRElCU19MTyBlbmFibGVzIHRoZSBjcmVhdGlvbiBvZiBhbiBzb2Z0d2FyZS1lbXVsYXRlZCBkaWJzIGRldmljZVxcbiAgMjA6XFx0XFx0ICBuYW1lZCBsbyB3aGljaCBjYW4gYmUgdXNlZCBmb3IgdHJhbnNmZXJyaW5nIGRhdGEgd2hlbiBjb21tdW5pY2F0aW9uXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE4VDA3OjUxOjE1LjQ4NDM5OTQ0MloiLCJTZXEiOjM1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo3NzkyODEwNzEwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEFuYWx5c2lzIG9mIHRoZSBTeXprYWxsZXIgRnV6emluZyBDb25maWd1cmF0aW9uIGFuZCBDb2RlIFBhdGNoKipcblxuT2theSwgaGVyZSdzIHdoYXQgSSdtIHRoaW5raW5nLiBJJ3ZlIGdvdCBhIGdvb2QgaGFuZGxlIG9uIHRoaXMuIFRoZSBgRElCU19MT2Agb3B0aW9uIGlzIGV4YWN0bHkgd2hhdCBJIHdhcyBob3BpbmcgZm9yLiBJdCBlbmFibGVzIHRoaXMgc29mdHdhcmUtZW11bGF0ZWQgZGlicyBkZXZpY2UsIG5hbWVkIGBsb2AsIHdoaWNoIGlzIHBlcmZlY3QgZm9yIGxvY2FsIGRhdGEgdHJhbnNmZXJzLCBhbmQgdGhhdCdzIGV4YWN0bHkgd2hhdCB3ZSBuZWVkIHRvIGZ1enogZWZmZWN0aXZlbHkgd2l0aCBzeXprYWxsZXIuIFNvLCBgRElCU19MT2AgaXMgYSBkZWZpbml0ZSBtdXN0LWhhdmUgZm9yIHRoZSBjb25maWd1cmF0aW9ucy5cblxuU28sIHRoZSBjb25maWcgb3B0aW9ucyBJIGFtIGdvaW5nIHRvIHVzZSBhcmU6IGBTTUNgLCBgSU5GSU5JQkFORGAsIGBESUJTYCwgYW5kIHRoYXQgY3J1Y2lhbCBgRElCU19MT2AuXG5cbk5vdywgcmVnYXJkaW5nIHRoZSBrZXkgc3ltYm9scywgSSdtIGZvY3VzaW5nIG9uIHRoZXNlIGZvciBteSBmdXp6aW5nIGVmZm9ydHM6IGBzbWNfbGxjX3Nydl9hZGRfbGlua2AsIGBzbWNfbGxjX2NsaV9hZGRfbGlua2AsIGFuZCBgc21jX2xsY19hZGRfbGlua19sb2NhbGAuIFRoZXkgYXJlIGFsbCByZWxhdGVkIHRvIGFkZF9saW5rIGZsb3dzLCB3aGljaCBhcmUgY2VudHJhbCB0byB0aGlzLlxuXG5JIGp1c3QgZG91YmxlLWNoZWNrZWQgYW5kIHJ1bGVkIG91dCBgU01DX0RJQUdgIGFuZCBgU01DX0hTX0NUUkxfQlBGYCBiZWNhdXNlIHRoZXkgYXJlIG5vdCBuZWVkZWQgZm9yIG15IHB1cnBvc2VzLlxuXG5OZXh0LCBJIHJldmlld2VkIHRoZSBjb2RlIHBhdGNoLiBMb29rcyBsaWtlIHRoaXMgaXMgYWRkcmVzc2luZyBhIG1lbW9yeSBsZWFrIG9yIGEgc3RhdGUgbWFjaGluZSBwcm9ibGVtIHJlbGF0ZWQgdG8gU01DIExMQyBmbG93IGhhbmRsaW5nLiBUaGUga2V5IHBhcnQgaXMgdGhhdCBhZGRlZCBjb21tZW50OiBgLyogZnJlZSBhbnkgcWVudHJ5IHN0YXNoZWQgaW4gUkVRX0FERF9MSU5LIHN0YXRlICovYFxuXG5Fc3NlbnRpYWxseSwgdGhpcyBmaXggaXMgZnJlZWluZyBhIHF1ZXVlIGVudHJ5IHN0YXNoZWQgaW4gYSBzcGVjaWZpYyBzdGF0ZSB0byBwcmV2ZW50IGEgbGVhaywgd2hpY2ggaXMgZnVuY3Rpb25hbGx5IHNpZ25pZmljYW50LiBUaGlzIHBhdGNoIGlzIHJlYWNoYWJsZSB2aWEgYHNtY19sbGNfZXZlbnRfaGFuZGxlcmAsIHdoaWNoIGlzIHJlc3BvbnNpYmxlIGZvciBwcm9jZXNzaW5nIHRob3NlIExMQyBldmVudHMuIFRoZSBmdW5jdGlvbnMsIHdoaWNoIEkgaWRlbnRpZmllZCBhYm92ZSwgaW5pdGlhdGUgb3IgcHJvY2VzcyBgYWRkX2xpbmtgIGZsb3dzLlxuXG5NeSBuZXh0IHN0ZXAgaXMgdG8gbWFrZSBzdXJlIGBzbWNfbGxjX2Zsb3dfcWVudHJ5X2RlbGAgaXMgdmlzaWJsZSBhbmQgYWNjZXNzaWJsZS5cblxuXG4iLCJJbnB1dFRva2VucyI6MTgyODQsIk91dHB1dFRva2VucyI6MzcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0NzQsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xOFQwNzo1MToyMy4yNzcyMTIzMzJaIiwiU2VxIjozNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ0ODE1MTc5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInNtY19sbGNfZmxvd19xZW50cnlfZGVsXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9zbWMvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9zbWMvYWZfc21jLmM9NjE4PXN0YXRpYyBpbnQgc21jcl9jbG50X2NvbmZfZmlyc3RfbGluayhzdHJ1Y3Qgc21jX3NvY2sgKnNtYylcXG4tLVxcbm5ldC9zbWMvYWZfc21jLmMtNjM5LVxcdHJjID0gc21jX2xsY19ldmFsX2NvbmZfbGluayhxZW50cnksIFNNQ19MTENfUkVRKTtcXG5uZXQvc21jL2FmX3NtYy5jOjY0MDpcXHRzbWNfbGxjX2Zsb3dfcWVudHJ5X2RlbChcXHUwMDI2bGluay1cXHUwMDNlbGdyLVxcdTAwM2VsbGNfZmxvd19sY2wpO1xcbm5ldC9zbWMvYWZfc21jLmMtNjQxLVxcdGlmIChyYylcXG4tLVxcbm5ldC9zbWMvYWZfc21jLmM9MTg3Mj1zdGF0aWMgaW50IHNtY3Jfc2Vydl9jb25mX2ZpcnN0X2xpbmsoc3RydWN0IHNtY19zb2NrICpzbWMpXFxuLS1cXG5uZXQvc21jL2FmX3NtYy5jLTE5MDQtXFx0cmMgPSBzbWNfbGxjX2V2YWxfY29uZl9saW5rKHFlbnRyeSwgU01DX0xMQ19SRVNQKTtcXG5uZXQvc21jL2FmX3NtYy5jOjE5MDU6XFx0c21jX2xsY19mbG93X3FlbnRyeV9kZWwoXFx1MDAyNmxpbmstXFx1MDAzZWxnci1cXHUwMDNlbGxjX2Zsb3dfbGNsKTtcXG5uZXQvc21jL2FmX3NtYy5jLTE5MDYtXFx0aWYgKHJjKVxcbi0tXFxubmV0L3NtYy9zbWNfbGxjLmM9MjA3PXN0cnVjdCBzbWNfbGxjX3FlbnRyeSAqc21jX2xsY19mbG93X3FlbnRyeV9jbHIoc3RydWN0IHNtY19sbGNfZmxvdyAqZmxvdylcXG4tLVxcbm5ldC9zbWMvc21jX2xsYy5jLTIxNC1cXG5uZXQvc21jL3NtY19sbGMuYzoyMTU6dm9pZCBzbWNfbGxjX2Zsb3dfcWVudHJ5X2RlbChzdHJ1Y3Qgc21jX2xsY19mbG93ICpmbG93KVxcbm5ldC9zbWMvc21jX2xsYy5jLTIxNi17XFxuLS1cXG5uZXQvc21jL3NtY19sbGMuYz0zMzY9c3RydWN0IHNtY19sbGNfcWVudHJ5ICpzbWNfbGxjX3dhaXQoc3RydWN0IHNtY19saW5rX2dyb3VwICpsZ3IsXFxuLS1cXG5uZXQvc21jL3NtY19sbGMuYy0zNDktXFx0ICAgIChsbmsgXFx1MDAyNlxcdTAwMjYgIXNtY19saW5rX3VzYWJsZShsbmspKSB8fCBsaXN0X2VtcHR5KFxcdTAwMjZsZ3ItXFx1MDAzZWxpc3QpKSB7XFxubmV0L3NtYy9zbWNfbGxjLmM6MzUwOlxcdFxcdHNtY19sbGNfZmxvd19xZW50cnlfZGVsKGZsb3cpO1xcbm5ldC9zbWMvc21jX2xsYy5jLTM1MS1cXHRcXHRnb3RvIG91dDtcXG4tLVxcbm5ldC9zbWMvc21jX2xsYy5jLTM2Ny1cXHRcXHRcXHQgICAgIGZsb3ctXFx1MDAzZXFlbnRyeS1cXHUwMDNlbXNnLnJhdy5oZHIuZmxhZ3MpO1xcbm5ldC9zbWMvc21jX2xsYy5jOjM2ODpcXHRcXHRzbWNfbGxjX2Zsb3dfcWVudHJ5X2RlbChmbG93KTtcXG5uZXQvc21jL3NtY19sbGMuYy0zNjktXFx0fVxcbi0tXFxubmV0L3NtYy9zbWNfbGxjLmM9ODg3PXN0YXRpYyBpbnQgc21jX2xsY19jbGlfcmtleV9leGNoYW5nZShzdHJ1Y3Qgc21jX2xpbmsgKmxpbmssXFxuLS1cXG5uZXQvc21jL3NtY19sbGMuYy05MTgtXFx0XFx0fVxcbm5ldC9zbWMvc21jX2xsYy5jOjkxOTpcXHRcXHRzbWNfbGxjX2Zsb3dfcWVudHJ5X2RlbChcXHUwMDI2bGdyLVxcdTAwM2VsbGNfZmxvd19sY2wpO1xcbm5ldC9zbWMvc21jX2xsYy5jLTkyMC1cXHRcXHRyYyA9IHNtY19sbGNfYWRkX2xpbmtfY29udChsaW5rLCBsaW5rX25ldywgXFx1MDAyNm51bV9ya2V5c19zZW5kLFxcbi0tXFxubmV0L3NtYy9zbWNfbGxjLmM9OTQxPXN0YXRpYyBpbnQgc21jX2xsY19jbGlfY29uZl9saW5rKHN0cnVjdCBzbWNfbGluayAqbGluayxcXG4tLVxcbm5ldC9zbWMvc21jX2xsYy5jLTk2MS1cXHRcXHRzbWNfbGxjX3NlbmRfbWVzc2FnZShsaW5rLCBcXHUwMDI2cWVudHJ5LVxcdTAwM2Vtc2cpO1xcbm5ldC9zbWMvc21jX2xsYy5jOjk2MjpcXHRcXHRzbWNfbGxjX2Zsb3dfcWVudHJ5X2RlbChcXHUwMDI2bGdyLVxcdTAwM2VsbGNfZmxvd19sY2wpO1xcbm5ldC9zbWMvc21jX2xsYy5jLTk2My1cXHRcXHRyZXR1cm4gLUVOT0xJTks7XFxuLS1cXG5uZXQvc21jL3NtY19sbGMuYy05NjUtXFx0c21jX2xsY19zYXZlX3BlZXJfdWlkKHFlbnRyeSk7XFxubmV0L3NtYy9zbWNfbGxjLmM6OTY2OlxcdHNtY19sbGNfZmxvd19xZW50cnlfZGVsKFxcdTAwMjZsZ3ItXFx1MDAzZWxsY19mbG93X2xjbCk7XFxubmV0L3NtYy9zbWNfbGxjLmMtOTY3LVxcbi0tXFxubmV0L3NtYy9zbWNfbGxjLmM9MTI4OD1zdGF0aWMgdm9pZCBzbWNfbGxjX2RlbGV0ZV9hc3ltX2xpbmsoc3RydWN0IHNtY19saW5rX2dyb3VwICpsZ3IpXFxuLS1cXG5uZXQvc21jL3NtY19sbGMuYy0xMzE2LVxcdH1cXG5uZXQvc21jL3NtY19sbGMuYzoxMzE3OlxcdHNtY19sbGNfZmxvd19xZW50cnlfZGVsKFxcdTAwMjZsZ3ItXFx1MDAzZWxsY19mbG93X2xjbCk7XFxubmV0L3NtYy9zbWNfbGxjLmMtMTMxOC1vdXRfZnJlZTpcXG4tLVxcbm5ldC9zbWMvc21jX2xsYy5jPTEzMjI9c3RhdGljIGludCBzbWNfbGxjX3Nydl9ya2V5X2V4Y2hhbmdlKHN0cnVjdCBzbWNfbGluayAqbGluayxcXG4tLVxcbm5ldC9zbWMvc21jX2xsYy5jLTEzNTUtXFx0XFx0fVxcbm5ldC9zbWMvc21jX2xsYy5jOjEzNTY6XFx0XFx0c21jX2xsY19mbG93X3FlbnRyeV9kZWwoXFx1MDAyNmxnci1cXHUwMDNlbGxjX2Zsb3dfbGNsKTtcXG5uZXQvc21jL3NtY19sbGMuYy0xMzU3LVxcdH0gd2hpbGUgKG51bV9ya2V5c19zZW5kIHx8IG51bV9ya2V5c19yZWN2KTtcXG4tLVxcbm5ldC9zbWMvc21jX2xsYy5jPTEzNjM9c3RhdGljIGludCBzbWNfbGxjX3Nydl9jb25mX2xpbmsoc3RydWN0IHNtY19saW5rICpsaW5rLFxcbi0tXFxubmV0L3NtYy9zbWNfbGxjLmMtMTM4Mi1cXHRcXHRpZiAocWVudHJ5KVxcbm5ldC9zbWMvc21jX2xsYy5jOjEzODM6XFx0XFx0XFx0c21jX2xsY19mbG93X3FlbnRyeV9kZWwoXFx1MDAyNmxnci1cXHUwMDNlbGxjX2Zsb3dfbGNsKTtcXG5uZXQvc21jL3NtY19sbGMuYy0xMzg0LVxcdFxcdHJldHVybiAtRU5PTElOSztcXG4tLVxcbm5ldC9zbWMvc21jX2xsYy5jLTEzOTItXFx0XFx0c21jcl9sZ3Jfc2V0X3R5cGUobGdyLCBsZ3JfbmV3X3QpO1xcbm5ldC9zbWMvc21jX2xsYy5jOjEzOTM6XFx0c21jX2xsY19mbG93X3FlbnRyeV9kZWwoXFx1MDAyNmxnci1cXHUwMDNlbGxjX2Zsb3dfbGNsKTtcXG5uZXQvc21jL3NtY19sbGMuYy0xMzk0LVxcdHJldHVybiAwO1xcbi0tXFxubmV0L3NtYy9zbWNfbGxjLmM9MTQwNj1pbnQgc21jX2xsY19zcnZfYWRkX2xpbmsoc3RydWN0IHNtY19saW5rICpsaW5rLFxcbi0tXFxubmV0L3NtYy9zbWNfbGxjLmMtMTQ4My1cXHRpZiAoYWRkX2xsYy1cXHUwMDNlaGQuZmxhZ3MgXFx1MDAyNiBTTUNfTExDX0ZMQUdfQUREX0xOS19SRUopIHtcXG5uZXQvc21jL3NtY19sbGMuYzoxNDg0OlxcdFxcdHNtY19sbGNfZmxvd19xZW50cnlfZGVsKFxcdTAwMjZsZ3ItXFx1MDAzZWxsY19mbG93X2xjbCk7XFxubmV0L3NtYy9zbWNfbGxjLmMtMTQ4NS1cXHRcXHRyYyA9IC1FTk9MSU5LO1xcbi0tXFxubmV0L3NtYy9zbWNfbGxjLmMtMTQ5NC1cXHRzbWNfbGxjX3NhdmVfYWRkX2xpbmtfaW5mbyhsaW5rX25ldywgYWRkX2xsYyk7XFxubmV0L3NtYy9zbWNfbGxjLmM6MTQ5NTpcXHRzbWNfbGxjX2Zsb3dfcWVudHJ5X2RlbChcXHUwMDI2bGdyLVxcdTAwM2VsbGNfZmxvd19sY2wpO1xcbm5ldC9zbWMvc21jX2xsYy5jLTE0OTYtXFxuLS1cXG5uZXQvc21jL3NtY19sbGMuYz0xNTU5PXN0YXRpYyB2b2lkIHNtY19sbGNfYWRkX2xpbmtfd29yayhzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspXFxuLS1cXG5uZXQvc21jL3NtY19sbGMuYy0xNTY1LVxcdFxcdC8qIGxpbmsgZ3JvdXAgaXMgdGVybWluYXRpbmcgKi9cXG5uZXQvc21jL3NtY19sbGMuYzoxNTY2OlxcdFxcdHNtY19sbGNfZmxvd19xZW50cnlfZGVsKFxcdTAwMjZsZ3ItXFx1MDAzZWxsY19mbG93X2xjbCk7XFxubmV0L3NtYy9zbWNfbGxjLmMtMTU2Ny1cXHRcXHRnb3RvIG91dDtcXG4tLVxcbm5ldC9zbWMvc21jX2xsYy5jPTE2NzI9c3RhdGljIHZvaWQgc21jX2xsY19wcm9jZXNzX3Nydl9kZWxldGVfbGluayhzdHJ1Y3Qgc21jX2xpbmtfZ3JvdXAgKmxncilcXG4tLVxcbm5ldC9zbWMvc21jX2xsYy5jLTE3MTctXFx0XFx0XFx0aWYgKHFlbnRyeTIpXFxubmV0L3NtYy9zbWNfbGxjLmM6MTcxODpcXHRcXHRcXHRcXHRzbWNfbGxjX2Zsb3dfcWVudHJ5X2RlbChcXHUwMDI2bGdyLVxcdTAwM2VsbGNfZmxvd19sY2wpO1xcbm5ldC9zbWMvc21jX2xsYy5jLTE3MTktXFx0XFx0fVxcbi0tXFxubmV0L3NtYy9zbWNfbGxjLmM9MTc0MD1zdGF0aWMgdm9pZCBzbWNfbGxjX2RlbGV0ZV9saW5rX3dvcmsoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxcbi0tXFxubmV0L3NtYy9zbWNfbGxjLmMtMTc0Ni1cXHRcXHQvKiBsaW5rIGdyb3VwIGlzIHRlcm1pbmF0aW5nICovXFxubmV0L3NtYy9zbWNfbGxjLmM6MTc0NzpcXHRcXHRzbWNfbGxjX2Zsb3dfcWVudHJ5X2RlbChcXHUwMDI2bGdyLVxcdTAwM2VsbGNfZmxvd19sY2wpO1xcbm5ldC9zbWMvc21jX2xsYy5jLTE3NDgtXFx0XFx0Z290byBvdXQ7XFxuLS1cXG5uZXQvc21jL3NtY19sbGMuYz0xNzYwPXN0YXRpYyB2b2lkIHNtY19sbGNfcm10X2NvbmZfcmtleShzdHJ1Y3Qgc21jX2xpbmtfZ3JvdXAgKmxncilcXG4tLVxcbm5ldC9zbWMvc21jX2xsYy5jLTE3OTUtXFx0c21jX2xsY19zZW5kX21lc3NhZ2UobGluaywgXFx1MDAyNnFlbnRyeS1cXHUwMDNlbXNnKTtcXG5uZXQvc21jL3NtY19sbGMuYzoxNzk2OlxcdHNtY19sbGNfZmxvd19xZW50cnlfZGVsKFxcdTAwMjZsZ3ItXFx1MDAzZWxsY19mbG93X3JtdCk7XFxubmV0L3NtYy9zbWNfbGxjLmMtMTc5Ny19XFxuLS1cXG5uZXQvc21jL3NtY19sbGMuYz0xODAwPXN0YXRpYyB2b2lkIHNtY19sbGNfcm10X2RlbGV0ZV9ya2V5KHN0cnVjdCBzbWNfbGlua19ncm91cCAqbGdyKVxcbi0tXFxubmV0L3NtYy9zbWNfbGxjLmMtMTg0OS1cXHRzbWNfbGxjX3NlbmRfbWVzc2FnZShsaW5rLCBcXHUwMDI2cWVudHJ5LVxcdTAwM2Vtc2cpO1xcbm5ldC9zbWMvc21jX2xsYy5jOjE4NTA6XFx0c21jX2xsY19mbG93X3FlbnRyeV9kZWwoXFx1MDAyNmxnci1cXHUwMDNlbGxjX2Zsb3dfcm10KTtcXG5uZXQvc21jL3NtY19sbGMuYy0xODUxLX1cXG4tLVxcbm5ldC9zbWMvc21jX2xsYy5jPTE4NzU9c3RhdGljIHZvaWQgc21jX2xsY19ldmVudF9oYW5kbGVyKHN0cnVjdCBzbWNfbGxjX3FlbnRyeSAqcWVudHJ5KVxcbi0tXFxubmV0L3NtYy9zbWNfbGxjLmMtMTkxNC1cXHRcXHRcXHRcXHQvKiBmcmVlIGFueSBxZW50cnkgc3Rhc2hlZCBpbiBSRVFfQUREX0xJTksgc3RhdGUgKi9cXG5uZXQvc21jL3NtY19sbGMuYzoxOTE1OlxcdFxcdFxcdFxcdHNtY19sbGNfZmxvd19xZW50cnlfZGVsKFxcdTAwMjZsZ3ItXFx1MDAzZWxsY19mbG93X2xjbCk7XFxubmV0L3NtYy9zbWNfbGxjLmMtMTkxNi1cXHRcXHRcXHRcXHRsZ3ItXFx1MDAzZWxsY19mbG93X2xjbC50eXBlID0gU01DX0xMQ19GTE9XX0FERF9MSU5LO1xcbi0tXFxubmV0L3NtYy9zbWNfbGxjLmM9MjIyMj1pbnQgc21jX2xsY19kb19jb25maXJtX3JrZXkoc3RydWN0IHNtY19saW5rICpzZW5kX2xpbmssXFxuLS1cXG5uZXQvc21jL3NtY19sbGMuYy0yMjM4LVxcdGlmIChxZW50cnkpXFxubmV0L3NtYy9zbWNfbGxjLmM6MjIzOTpcXHRcXHRzbWNfbGxjX2Zsb3dfcWVudHJ5X2RlbChcXHUwMDI2bGdyLVxcdTAwM2VsbGNfZmxvd19sY2wpO1xcbm5ldC9zbWMvc21jX2xsYy5jLTIyNDAtXFx0cmV0dXJuIHJjO1xcbi0tXFxubmV0L3NtYy9zbWNfbGxjLmM9MjI0ND1pbnQgc21jX2xsY19kb19kZWxldGVfcmtleShzdHJ1Y3Qgc21jX2xpbmtfZ3JvdXAgKmxncixcXG4tLVxcbm5ldC9zbWMvc21jX2xsYy5jLTIyNjUtXFx0aWYgKHFlbnRyeSlcXG5uZXQvc21jL3NtY19sbGMuYzoyMjY2OlxcdFxcdHNtY19sbGNfZmxvd19xZW50cnlfZGVsKFxcdTAwMjZsZ3ItXFx1MDAzZWxsY19mbG93X2xjbCk7XFxubmV0L3NtYy9zbWNfbGxjLmMtMjI2Ny1cXHRyZXR1cm4gcmM7XFxuLS1cXG5uZXQvc21jL3NtY19sbGMuaD0xMTA9c3RydWN0IHNtY19sbGNfcWVudHJ5ICpzbWNfbGxjX2Zsb3dfcWVudHJ5X2NscihzdHJ1Y3Qgc21jX2xsY19mbG93ICpmbG93KTtcXG5uZXQvc21jL3NtY19sbGMuaDoxMTE6dm9pZCBzbWNfbGxjX2Zsb3dfcWVudHJ5X2RlbChzdHJ1Y3Qgc21jX2xsY19mbG93ICpmbG93KTtcXG5uZXQvc21jL3NtY19sbGMuaC0xMTItdm9pZCBzbWNfbGxjX3NlbmRfbGlua19kZWxldGVfYWxsKHN0cnVjdCBzbWNfbGlua19ncm91cCAqbGdyLCBib29sIG9yZCxcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMThUMDc6NTE6MjMuMzIyMDMxMjExWiIsIlNlcSI6MzcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjcxODMxNTM4NjgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQXNzZXNzbWVudCBvZiB0aGUgUGF0Y2gqKlxuXG5Pa2F5LCBzbyBgc21jX2xsY19mbG93X3FlbnRyeV9kZWxgIGlzIGV4cG9ydGVkIGluIHRoZSBoZWFkZXIgZmlsZSBgc21jX2xsYy5oYCBhbmQgaXMgdXNlZCBpbiBib3RoIGBhZl9zbWMuY2AgYW5kIGBzbWNfbGxjLmNgLiBUaGF0J3MgYSBrZXkgc3RhcnRpbmcgcG9pbnQuIFRoaXMgcGF0Y2ggYWRkcmVzc2VzIGEgbWVtb3J5IGxlYWsgc3BlY2lmaWNhbGx5IHdpdGhpbiBgc21jX2xsY19ldmVudF9oYW5kbGVyYCB3aGVuIHRoZSBzeXN0ZW0gdHJhbnNpdGlvbnMgZnJvbSB0aGUgYFNNQ19MTENfRkxPV19SRVFfQUREX0xJTktgIHN0YXRlIHRvIGBTTUNfTExDX0ZMT1dfQUREX0xJTktgLiBZZXAsIGFic29sdXRlbHksIHRoaXMgaXMgYSBwcmltZSBjYW5kaWRhdGUgZm9yIGZ1enppbmcuIFdlIGhhdmUgYSBkZWZpbmVkIHN0YXRlIHRyYW5zaXRpb24gdGhhdCdzIGtub3duIHRvIGJlIHByb2JsZW1hdGljLCB3aGljaCBtYWtlcyBpdCBlYXNpZXIgdG8gdGFyZ2V0IHdpdGggZm9jdXNlZCBmdXp6aW5nLlxuXG5MZXQncyBuYWlsIGRvd24gdGhlIGZpbmFsIGFuc3dlci5cblxuVGhlIGZ1enppbmcgaXMgKmRlZmluaXRlbHkqIHdvcnRod2hpbGUuXG5cbkhlcmUgYXJlIHRoZSBzcGVjaWZpYyBzeW1ib2xzIEkgd2FudCB0byBwcmlvcml0aXplIGR1cmluZyBmdXp6aW5nOiBgc21jX2xsY19zcnZfYWRkX2xpbmtgLCBgc21jX2xsY19jbGlfYWRkX2xpbmtgLCBhbmQgYHNtY19sbGNfYWRkX2xpbmtfbG9jYWxgLiBUaGV5J3JlIGFsbCByZWxhdGVkIHRvIHRoZSBhZGRfbGluayBmbG93LCB3aGljaCBpcyB3aGVyZSB0aGUgbGVhayBvY2N1cnMuXG5cbldlIG5lZWQgdG8gbWFrZSBzdXJlIHdlIGhhdmUgdGhlIGZvbGxvd2luZyBjb25maWd1cmF0aW9ucyBlbmFibGVkOiBgU01DYCwgYElORklOSUJBTkRgLCBgRElCU2AsIGFuZCBgRElCU19MT2AuIERJQlMgYW5kIERJQlNfTE8gYXJlIGVzc2VudGlhbCBmb3IgYWxsb3dpbmcgbG9jYWwgbG9vcGJhY2sgdGVzdGluZyBvZiBTTUMgdXNpbmcgZW11bGF0ZWQgUkRNQS4gVGhpcyB3aWxsIGJlIHRoZSBtb3N0IGVmZmVjdGl2ZSB3YXkgdG8gdGVzdCB0aGlzIGZpeC5cblxuVGhlIHJlYXNvbmluZyBpcyBwcmV0dHkgc3RyYWlnaHRmb3J3YXJkOiB0aGUgcGF0Y2ggZXhwbGljaXRseSBmcmVlcyBhIHN0YXNoZWQgcXVldWUgZW50cnkgZHVyaW5nIHRoZSBzdGF0ZSB0cmFuc2l0aW9uLCBmaXhpbmcgYSBtZW1vcnkgbGVhay4gVGhpcyBpcyBjb3JlIGtlcm5lbCBsb2dpYyB0aGF0J3MgcmVhY2hhYmxlIGFuZCBjcml0aWNhbCB0byB0aGUgU01DIHByb3RvY29sLiBGdXp6aW5nIHNob3VsZCBob25lIGluIG9uIHRoZSBpbml0aWF0aW9uIGFuZCBwcm9jZXNzaW5nIG9mIHRoYXQgYWRkX2xpbmsgZmxvdyBzcGVjaWZpY2FsbHkuIEl0J3MgYSBjbGVhbiB0YXJnZXQgYW5kIGEgc29saWQgYXBwcm9hY2guXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIyMzk0LCJPdXRwdXRUb2tlbnMiOjE4MiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI4MSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xOFQwNzo1MTozMC41MDUxODgwOTlaIiwiU2VxIjozOCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo3Mzg5NTkyNywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiU01DXCIsXG4gICAgXCJJTkZJTklCQU5EXCIsXG4gICAgXCJESUJTXCIsXG4gICAgXCJESUJTX0xPXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwic21jX2xsY19zcnZfYWRkX2xpbmtcIixcbiAgICBcInNtY19sbGNfY2xpX2FkZF9saW5rXCIsXG4gICAgXCJzbWNfbGxjX2FkZF9saW5rX2xvY2FsXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggZml4ZXMgYSBtZW1vcnkgbGVhayBpbiB0aGUgU01DIExMQyBldmVudCBoYW5kbGVyIGJ5IGV4cGxpY2l0bHkgZnJlZWluZyB0aGUgc3Rhc2hlZCBxZW50cnkgd2hlbiB0cmFuc2l0aW9uaW5nIGZyb20gdGhlIFJFUV9BRERfTElOSyBzdGF0ZSB0byB0aGUgQUREX0xJTksgc3RhdGUuIFRoaXMgaXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljIGZvciB0aGUgU01DIHByb3RvY29sLiBGdXp6aW5nIHNob3VsZCBmb2N1cyBvbiB0aGUgYWRkX2xpbmsgZmxvdyBpbml0aWF0aW9uIGFuZCBwcm9jZXNzaW5nIGZ1bmN0aW9ucy4gRElCUyBhbmQgRElCU19MTyBhcmUgcmVxdWlyZWQgdG8gZW5hYmxlIGxvY2FsIGxvb3BiYWNrIHRlc3Rpbmcgb2YgU01DIG92ZXIgZW11bGF0ZWQgUkRNQS5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJTTUNcIixcbiAgICBcIklORklOSUJBTkRcIixcbiAgICBcIkRJQlNcIixcbiAgICBcIkRJQlNfTE9cIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJzbWNfbGxjX3Nydl9hZGRfbGlua1wiLFxuICAgIFwic21jX2xsY19jbGlfYWRkX2xpbmtcIixcbiAgICBcInNtY19sbGNfYWRkX2xpbmtfbG9jYWxcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBmaXhlcyBhIG1lbW9yeSBsZWFrIGluIHRoZSBTTUMgTExDIGV2ZW50IGhhbmRsZXIgYnkgZXhwbGljaXRseSBmcmVlaW5nIHRoZSBzdGFzaGVkIHFlbnRyeSB3aGVuIHRyYW5zaXRpb25pbmcgZnJvbSB0aGUgUkVRX0FERF9MSU5LIHN0YXRlIHRvIHRoZSBBRERfTElOSyBzdGF0ZS4gVGhpcyBpcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMgZm9yIHRoZSBTTUMgcHJvdG9jb2wuIEZ1enppbmcgc2hvdWxkIGZvY3VzIG9uIHRoZSBhZGRfbGluayBmbG93IGluaXRpYXRpb24gYW5kIHByb2Nlc3NpbmcgZnVuY3Rpb25zLiBESUJTIGFuZCBESUJTX0xPIGFyZSByZXF1aXJlZCB0byBlbmFibGUgbG9jYWwgbG9vcGJhY2sgdGVzdGluZyBvZiBTTUMgb3ZlciBlbXVsYXRlZCBSRE1BLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xOFQwNzo1MTozMC41NzkwODkxNTZaIiwiU2VxIjozOSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJJZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjExMDIzOTM2MjI1LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMThUMDc6NTE6MzAuNTc5NTgwMTY2WiIsIlNlcSI6NDAsIk5lc3RpbmciOjIsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJrbXNhbi1ldmFsdWF0b3IiLCJNb2RlbCI6ImJlc3QtZXhwZW5zaXZlIiwiRHVyYXRpb24iOjExMDIzNDQxMjE1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJLTVNBTlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBmaXhlcyBhIG1lbW9yeSBsZWFrIGJ5IGZyZWVpbmcgYSBzdGFzaGVkIGBxZW50cnlgIGluIGBzbWNfbGxjX2V2ZW50X2hhbmRsZXJgIHdoZW4gdGhlIHNlcnZlciBzdGFydHMgYGFkZF9saW5rYCBwcm9jZXNzaW5nLiBJdCBkb2VzIG5vdCBpbnRyb2R1Y2Ugb3IgZXhwb3NlIGFueSB1bmluaXRpYWxpemVkIG1lbW9yeSByaXNrcyBvciBpbmZvLWxlYWtzLiBNZW1vcnkgbGVha3MgYW5kIHVzZS1hZnRlci1mcmVlIGJ1Z3MgYXJlIGVmZmVjdGl2ZWx5IGRldGVjdGVkIGJ5IEtNRU1MRUFLIGFuZCBLQVNBTi4gVGhlcmVmb3JlLCBhIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaXMgbm90IHJlcXVpcmVkLlwiLFxuICBcIk5lZWRzS01TQU5cIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBzZWN1cml0eSBlbmdpbmVlciBzcGVjaWFsaXppbmcgaW4ga2VybmVsIG1lbW9yeVxuZXJyb3IgZGV0ZWN0b3JzIChLQVNBTiBhbmQgS01TQU4pLiBZb3VyIGpvYiBpcyB0byByZXZpZXcgdGhlIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmRcbmRldGVybWluZSBpZiB0aGUgY29kZSBjaGFuZ2VzIGp1c3RpZnkgc3Bhd25pbmcgYSBkZWRpY2F0ZWQgS01TQU4gKEtlcm5lbE1lbW9yeVNhbml0aXplcilcbmZ1enppbmcgc2Vzc2lvbiBpbiBhZGRpdGlvbiB0byBzdGFuZGFyZCBLQVNBTiBmdXp6aW5nLlxuXG5DUklUSUNBTCBESVNUSU5DVElPTiBCRVRXRUVOIEtBU0FOIEFORCBLTVNBTjpcbi0gU3RhbmRhcmQgS0FTQU4ga2VybmVsIGJ1aWxkcyAodXBzdHJlYW0tYXBwYXJtb3Ita2FzYW4uY29uZmlnKSBhbHJlYWR5IGVuYWJsZVxuICBhIGNvbXByZWhlbnNpdmUgc3VpdGUgb2YgZGVidWdnaW5nIHRvb2xzIGFuZCBzYW5pdGl6ZXJzLCBpbmNsdWRpbmcgS0FTQU5cbiAgKG91dC1vZi1ib3VuZHMgYWNjZXNzZXMsIHVzZS1hZnRlci1mcmVlLCBkb3VibGUgZnJlZSwgaW52YWxpZCBmcmVlKSwgTE9DS0RFUFxuICAobG9ja2luZyBidWdzIGFuZCBkZWFkbG9ja3MpLCBVQi1zYW5pdGl6ZXJzLCBhbmQgbWVtb3J5IGNvcnJ1cHRpb24gY2hlY2tzLlxuLSBLTVNBTiAoS2VybmVsTWVtb3J5U2FuaXRpemVyKSBkZXRlY3RzIHJlYWRzIG9mIFVOSU5JVElBTElaRUQgbWVtb3J5IChzdGFjaywgaGVhcCxcbiAgb3IgcGFnZSBhbGxvY2F0aW9ucykgYW5kIGtlcm5lbC10by11c2VyIG1lbW9yeSBpbmZvLWxlYWtzLlxuXG5SdWxlOiBUSEVSRSBJUyBOTyBTRU5TRSBJTiBSVU5OSU5HIEEgS01TQU4gU0VTU0lPTiBJRiBBIEJVRyBDQU4gQkUgQ0FVR0hUIEJZIEtBU0FOLFxuTE9DS0RFUCwgT1IgT1RIRVIgU1RBTkRBUkQgQlVHIERFVEVDVE9SUy5cbkEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpbmN1cnMgc2lnbmlmaWNhbnQgcmVzb3VyY2UgY29zdHMuIFlvdSBtdXN0IE9OTFlcbnNldCBOZWVkc0tNU0FOPXRydWUgaWYgdGhlIGNvZGUgY2hhbmdlcyBpbnRyb2R1Y2Ugb3IgZXhwb3NlIFVOSU5JVElBTElaRUQgTUVNT1JZIHJpc2tzXG50aGF0IGFyZSBkZXRlY3RlZCBPTkxZIGJ5IEtNU0FOLlxuXG5Mb29rIGhvbGlzdGljYWxseSBhdCB0aGUgcGF0Y2ggc2VyaWVzIGFuZCBzdXJyb3VuZGluZyBjb2RlLiBFdmVuIGlmIG5vIGRpcmVjdFxudW5pbml0aWFsaXplZCBmaWVsZCBhY2Nlc3NlcyBvciBuZXcgYnVmZmVyIGFsbG9jYXRpb25zIGFyZSBhZGRlZCBpbiB0aGUgZGlmZiBpdHNlbGYsXG5hIHBhdGNoIG1heSBhbHRlciBjb250cm9sIGZsb3csIGJvdW5kcyBjaGVja2luZywgb3IgZGF0YSBsZW5ndGggY2FsY3VsYXRpb25zIGluIHdheXNcbnRoYXQgY2hhbmdlIGhvdyB0aGUgcmVzdCBvZiB0aGUgY29kZSBvcGVyYXRlcyBvbiBleGlzdGluZyBidWZmZXJzIChlLmcuIGFsbG93aW5nXG51bmluaXRpYWxpemVkIHN0YWNrL2hlYXAgbWVtb3J5IHRvIGJlIHJlYWQsIGNvcGllZCB0byB1c2VyIHNwYWNlLCBvciB1c2VkIGluIGNvbnRyb2xcbmZsb3cpLiBEbyBub3QgaGVzaXRhdGUgdG8gdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gaW5zcGVjdCB0aGUgc3Vycm91bmRpbmcgY29kZSxcbmNhbGxlZCBmdW5jdGlvbnMsIGFuZCBjYWxsZXJzLlxuXG5TZXQgTmVlZHNLTVNBTj10cnVlIE9OTFkgSUYgdGhlIHBhdGNoIGludHJvZHVjZXMgb3IgbW9kaWZpZXM6XG4xLiBLZXJuZWwgc3RydWN0dXJlcyBzZW50IHRvIHVzZXIgc3BhY2UgKHZpYSBjb3B5X3RvX3VzZXIsIHB1dF91c2VyLCBuZXRsaW5rIHNrYlxuICAgYXR0cmlidXRlcywgaW9jdGwgb3V0cHV0IGFyZ3VtZW50cywgc29ja2V0IG9wdGlvbnMsIG9yIEJQRiBidWZmZXJzKSB3aGVyZSBmaWVsZHNcbiAgIG9yIHN0cnVjdHVyZSBwYWRkaW5nIG1pZ2h0IG5vdCBiZSBmdWxseSBpbml0aWFsaXplZC96ZXJvZWQuXG4yLiBDb25kaXRpb25hbCBsb2dpYyBvciBicmFuY2hpbmcgdGhhdCBkZXBlbmRzIG9uIHBvdGVudGlhbGx5IHVuaW5pdGlhbGl6ZWQgdmFyaWFibGVzXG4gICBvciBzdHJ1Y3QgZmllbGRzLlxuMy4gQWxsb2NhdGlvbiBvciBpbml0aWFsaXphdGlvbiBvZiBjb21wbGV4IGRhdGEgc3RydWN0dXJlcyB3aGVyZSB1bmluaXRpYWxpemVkIGZpZWxkc1xuICAgY291bGQgYmUgcmVhZCBsYXRlciBpbiByZWFjaGFibGUgY29kZSBwYXRocy5cbjQuIEJvdW5kcyBjaGVja3MsIGxlbmd0aHMsIG9yIGxvZ2ljIGluIGEgd2F5IHRoYXQgYWxsb3dzIHN1cnJvdW5kaW5nIGNvZGUgdG8gYWNjZXNzXG4gICB1bmluaXRpYWxpemVkIGJ5dGVzIG9mIGV4aXN0aW5nIGJ1ZmZlcnMuXG5cblNldCBOZWVkc0tNU0FOPWZhbHNlIElGOlxuLSBUaGUgY29kZSBjaGFuZ2VzIHByaW1hcmlseSByaXNrIG91dC1vZi1ib3VuZHMgYWNjZXNzLCBhcnJheSBvdmVyZmxvd3MsIE5VTEwgcG9pbnRlclxuICBkZXJlZmVyZW5jZXMsIGxvY2tpbmcgZGVhZGxvY2tzLCBvciB1c2UtYWZ0ZXItZnJlZSBidWdzICh0aGVzZSBhcmUgYWxyZWFkeSBjYXVnaHRcbiAgYnkgS0FTQU4sIExPQ0tERVAsIG9yIHN0YW5kYXJkIGJ1ZyBkZXRlY3RvcnMpLlxuLSBBbGwgc3RhY2svaGVhcCBzdHJ1Y3R1cmVzIHRvdWNoZWQgb3IgaW50cm9kdWNlZCBieSB0aGUgcGF0Y2ggYXJlIGZ1bGx5IHplcm9lZFxuICBvciBpbml0aWFsaXplZCAoZS5nLiB1c2luZyA9IHswfSwgbWVtc2V0LCBremFsbG9jKSBiZWZvcmUgYmVpbmcgcmVhZCBvciBjb3BpZWQuXG4tIFRoZSBwYXRjaCBkb2VzIG5vdCBpbnRyb2R1Y2UgYW55IHJpc2sgb2YgdW5pbml0aWFsaXplZCBtZW1vcnkgdXNhZ2Ugb3IgaW5mby1sZWFrcy5cblxuVXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gaW5zcGVjdCB0aGUgc3Vycm91bmRpbmcgY29kZSBpZiBuZWNlc3NhcnksIHRoZW4gcHJvdmlkZVxuZGV0YWlsZWQgS01TQU5SZWFzb25pbmcgY29udHJhc3RpbmcgS0FTQU4gdnMgS01TQU4gYXBwbGljYWJpbGl0eSBmb3IgdGhpcyBwYXRjaC5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IDc1YzhhMWUwY2NkN2E4ZTIwNTRiZDM2YTc5YjA5Yzg1OTgwMzNmODVcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgVHVlIEF1ZyAxOCAwNzo1MDowMCAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL25ldC9zbWMvc21jX2xsYy5jIGIvbmV0L3NtYy9zbWNfbGxjLmNcbmluZGV4IGFhNmQ4M2FmNTVlZGEuLmM3ZjAyMjJhZmY4ZDAgMTAwNjQ0XG4tLS0gYS9uZXQvc21jL3NtY19sbGMuY1xuKysrIGIvbmV0L3NtYy9zbWNfbGxjLmNcbkBAIC0xOTExLDYgKzE5MTEsOCBAQCBzdGF0aWMgdm9pZCBzbWNfbGxjX2V2ZW50X2hhbmRsZXIoc3RydWN0IHNtY19sbGNfcWVudHJ5ICpxZW50cnkpXG4gXHRcdFx0aWYgKGxnci1cdTAwM2VsbGNfZmxvd19sY2wudHlwZSA9PVxuIFx0XHRcdFx0XHRTTUNfTExDX0ZMT1dfUkVRX0FERF9MSU5LKSB7XG4gXHRcdFx0XHQvKiBzZXJ2ZXIgc3RhcnRlZCBhZGRfbGluayBwcm9jZXNzaW5nICovXG4rXHRcdFx0XHQvKiBmcmVlIGFueSBxZW50cnkgc3Rhc2hlZCBpbiBSRVFfQUREX0xJTksgc3RhdGUgKi9cbitcdFx0XHRcdHNtY19sbGNfZmxvd19xZW50cnlfZGVsKFx1MDAyNmxnci1cdTAwM2VsbGNfZmxvd19sY2wpO1xuIFx0XHRcdFx0bGdyLVx1MDAzZWxsY19mbG93X2xjbC50eXBlID0gU01DX0xMQ19GTE9XX0FERF9MSU5LO1xuIFx0XHRcdFx0c21jX2xsY19mbG93X3FlbnRyeV9zZXQoXHUwMDI2bGdyLVx1MDAzZWxsY19mbG93X2xjbCxcbiBcdFx0XHRcdFx0XHRcdHFlbnRyeSk7XG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xOFQwNzo1MTozMC41Nzk1ODE3MzZaIiwiU2VxIjo0MSwiTmVzdGluZyI6MywiVHlwZSI6ImxsbSIsIk5hbWUiOiJrbXNhbi1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NjYxODg0ODc0NSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIFNNQyBMTEMgUGF0Y2gqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGZvciBgbmV0L3NtYy9zbWNfbGxjLmNgLiBUaGUgY29yZSBvZiB0aGUgY2hhbmdlIGlzIGFkZGluZyBhIGNhbGwgdG8gYHNtY19sbGNfZmxvd19xZW50cnlfZGVsYCByaWdodCBiZWZvcmUgc2V0dGluZyB0aGUgYGxsY19mbG93X2xjbGAgdHlwZSB0byBgU01DX0xMQ19GTE9XX0FERF9MSU5LYCBhbmQgcmUtc2V0dGluZyB0aGUgYHFlbnRyeWAuIE15IGluaXRpYWwgdGhvdWdodCBpcywgdGhpcyBpcyBsaWtlbHkgYWRkcmVzc2luZyBhIG1lbW9yeSBtYW5hZ2VtZW50IGlzc3VlLiBTcGVjaWZpY2FsbHksIGl0IGxvb2tzIGxpa2UgdGhlcmUgbWlnaHQgaGF2ZSBiZWVuIGEgbWVtb3J5IGxlYWssIG9yIHBvdGVudGlhbGx5IGEgdXNlLWFmdGVyLWZyZWUgc2NlbmFyaW8sIHdoZXJlIGEgcXVldWVkIGVudHJ5IChgcWVudHJ5YCkgd2FzIGJlaW5nIHN0YXNoZWQgaW4gYGxsY19mbG93X2xjbGAgYW5kIG5vdCBwcm9wZXJseSBmcmVlZCB3aGVuIHRoZSBzZXJ2ZXIgaW5pdGlhdGVkIHRoZSBcImFkZCBsaW5rXCIgcHJvY2Vzcy5cblxuVGhlIGNvbW1lbnQgaW5jbHVkZWQgaW4gdGhlIGNvZGUgcmVpbmZvcmNlcyB0aGlzLCBleHBsaWNpdGx5IHN0YXRpbmcgdGhhdCB3ZSdyZSBmcmVlaW5nIGFueSBwb3RlbnRpYWxseSBzdGFzaGVkIGBxZW50cnlgIGluIHRoZSBgUkVRX0FERF9MSU5LYCBzdGF0ZS5cblxuR2l2ZW4gbXkgdW5kZXJzdGFuZGluZywgdGhlIGFkZGVkIGBzbWNfbGxjX2Zsb3dfcWVudHJ5X2RlbGAgY2FsbCBoYW5kbGVzIHRoZSBjbGVhbnVwLiBNZW1vcnkgbGVha3MsIHdoaWNoIGlzIHRoZSBtb3N0IGxpa2VseSBwcm9ibGVtIGhlcmUsIGFyZSB1c3VhbGx5IGNhdWdodCBieSBLTUVNTEVBSywgYW5kIHVzZS1hZnRlci1mcmVlIGlzc3VlcyBhcmUgdXN1YWxseSBjYXVnaHQgYnkgS0FTQU4uIFdlIGFyZSBkZWxldGluZyBhIHFlbnRyeSBzbyB0aGlzIGlzIHVubGlrZWx5IHRvIGJlIGFuIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHVzYWdlIG9yIGluZm8tbGVhayBzaXR1YXRpb24sIHNvIEtNU0FOIHNob3VsZCBub3QgYmUgbmVlZGVkIGhlcmUuIFRoaXMgcGF0Y2ggc2ltcGx5IGZyZWVzIGEgcHJldmlvdXNseSBhbGxvY2F0ZWQgZW50cnkuIEkgbmVlZCB0byB0YWtlIGEgcXVpY2sgcGVlayBhdCB0aGUgYHNtY19sbGNfZmxvd19xZW50cnlfZGVsYCBmdW5jdGlvbiB0byBiZSBhYnNvbHV0ZWx5IHN1cmUsIGJ1dCBteSBhc3Nlc3NtZW50IHJpZ2h0IG5vdyBpcyB0aGF0IHRoaXMgaXMgYSBzdHJhaWdodGZvcndhcmQgYW5kIG5lY2Vzc2FyeSBmaXggdG8gcHJldmVudCBhIG1lbW9yeSBtYW5hZ2VtZW50IHByb2JsZW0sIHNwZWNpZmljYWxseSByZWxhdGVkIHRvIHRoZSBcImFkZCBsaW5rXCIgcHJvY2Vzc2luZy5cblxuXG4iLCJJbnB1dFRva2VucyI6MjA2MywiT3V0cHV0VG9rZW5zIjo0NCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjQ0NCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE4VDA3OjUxOjM3LjE5ODQzMzc3MVoiLCJTZXEiOjQyLCJOZXN0aW5nIjozLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDQ0Njg1OTksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwic21jX2xsY19mbG93X3FlbnRyeV9kZWxcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L3NtYy9zbWNfbGxjLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L3NtYy9zbWNfbGxjLmM9MjA3PXN0cnVjdCBzbWNfbGxjX3FlbnRyeSAqc21jX2xsY19mbG93X3FlbnRyeV9jbHIoc3RydWN0IHNtY19sbGNfZmxvdyAqZmxvdylcXG4tLVxcbm5ldC9zbWMvc21jX2xsYy5jLTIxNC1cXG5uZXQvc21jL3NtY19sbGMuYzoyMTU6dm9pZCBzbWNfbGxjX2Zsb3dfcWVudHJ5X2RlbChzdHJ1Y3Qgc21jX2xsY19mbG93ICpmbG93KVxcbm5ldC9zbWMvc21jX2xsYy5jLTIxNi17XFxuLS1cXG5uZXQvc21jL3NtY19sbGMuYz0zMzY9c3RydWN0IHNtY19sbGNfcWVudHJ5ICpzbWNfbGxjX3dhaXQoc3RydWN0IHNtY19saW5rX2dyb3VwICpsZ3IsXFxuLS1cXG5uZXQvc21jL3NtY19sbGMuYy0zNDktXFx0ICAgIChsbmsgXFx1MDAyNlxcdTAwMjYgIXNtY19saW5rX3VzYWJsZShsbmspKSB8fCBsaXN0X2VtcHR5KFxcdTAwMjZsZ3ItXFx1MDAzZWxpc3QpKSB7XFxubmV0L3NtYy9zbWNfbGxjLmM6MzUwOlxcdFxcdHNtY19sbGNfZmxvd19xZW50cnlfZGVsKGZsb3cpO1xcbm5ldC9zbWMvc21jX2xsYy5jLTM1MS1cXHRcXHRnb3RvIG91dDtcXG4tLVxcbm5ldC9zbWMvc21jX2xsYy5jLTM2Ny1cXHRcXHRcXHQgICAgIGZsb3ctXFx1MDAzZXFlbnRyeS1cXHUwMDNlbXNnLnJhdy5oZHIuZmxhZ3MpO1xcbm5ldC9zbWMvc21jX2xsYy5jOjM2ODpcXHRcXHRzbWNfbGxjX2Zsb3dfcWVudHJ5X2RlbChmbG93KTtcXG5uZXQvc21jL3NtY19sbGMuYy0zNjktXFx0fVxcbi0tXFxubmV0L3NtYy9zbWNfbGxjLmM9ODg3PXN0YXRpYyBpbnQgc21jX2xsY19jbGlfcmtleV9leGNoYW5nZShzdHJ1Y3Qgc21jX2xpbmsgKmxpbmssXFxuLS1cXG5uZXQvc21jL3NtY19sbGMuYy05MTgtXFx0XFx0fVxcbm5ldC9zbWMvc21jX2xsYy5jOjkxOTpcXHRcXHRzbWNfbGxjX2Zsb3dfcWVudHJ5X2RlbChcXHUwMDI2bGdyLVxcdTAwM2VsbGNfZmxvd19sY2wpO1xcbm5ldC9zbWMvc21jX2xsYy5jLTkyMC1cXHRcXHRyYyA9IHNtY19sbGNfYWRkX2xpbmtfY29udChsaW5rLCBsaW5rX25ldywgXFx1MDAyNm51bV9ya2V5c19zZW5kLFxcbi0tXFxubmV0L3NtYy9zbWNfbGxjLmM9OTQxPXN0YXRpYyBpbnQgc21jX2xsY19jbGlfY29uZl9saW5rKHN0cnVjdCBzbWNfbGluayAqbGluayxcXG4tLVxcbm5ldC9zbWMvc21jX2xsYy5jLTk2MS1cXHRcXHRzbWNfbGxjX3NlbmRfbWVzc2FnZShsaW5rLCBcXHUwMDI2cWVudHJ5LVxcdTAwM2Vtc2cpO1xcbm5ldC9zbWMvc21jX2xsYy5jOjk2MjpcXHRcXHRzbWNfbGxjX2Zsb3dfcWVudHJ5X2RlbChcXHUwMDI2bGdyLVxcdTAwM2VsbGNfZmxvd19sY2wpO1xcbm5ldC9zbWMvc21jX2xsYy5jLTk2My1cXHRcXHRyZXR1cm4gLUVOT0xJTks7XFxuLS1cXG5uZXQvc21jL3NtY19sbGMuYy05NjUtXFx0c21jX2xsY19zYXZlX3BlZXJfdWlkKHFlbnRyeSk7XFxubmV0L3NtYy9zbWNfbGxjLmM6OTY2OlxcdHNtY19sbGNfZmxvd19xZW50cnlfZGVsKFxcdTAwMjZsZ3ItXFx1MDAzZWxsY19mbG93X2xjbCk7XFxubmV0L3NtYy9zbWNfbGxjLmMtOTY3LVxcbi0tXFxubmV0L3NtYy9zbWNfbGxjLmM9MTI4OD1zdGF0aWMgdm9pZCBzbWNfbGxjX2RlbGV0ZV9hc3ltX2xpbmsoc3RydWN0IHNtY19saW5rX2dyb3VwICpsZ3IpXFxuLS1cXG5uZXQvc21jL3NtY19sbGMuYy0xMzE2LVxcdH1cXG5uZXQvc21jL3NtY19sbGMuYzoxMzE3OlxcdHNtY19sbGNfZmxvd19xZW50cnlfZGVsKFxcdTAwMjZsZ3ItXFx1MDAzZWxsY19mbG93X2xjbCk7XFxubmV0L3NtYy9zbWNfbGxjLmMtMTMxOC1vdXRfZnJlZTpcXG4tLVxcbm5ldC9zbWMvc21jX2xsYy5jPTEzMjI9c3RhdGljIGludCBzbWNfbGxjX3Nydl9ya2V5X2V4Y2hhbmdlKHN0cnVjdCBzbWNfbGluayAqbGluayxcXG4tLVxcbm5ldC9zbWMvc21jX2xsYy5jLTEzNTUtXFx0XFx0fVxcbm5ldC9zbWMvc21jX2xsYy5jOjEzNTY6XFx0XFx0c21jX2xsY19mbG93X3FlbnRyeV9kZWwoXFx1MDAyNmxnci1cXHUwMDNlbGxjX2Zsb3dfbGNsKTtcXG5uZXQvc21jL3NtY19sbGMuYy0xMzU3LVxcdH0gd2hpbGUgKG51bV9ya2V5c19zZW5kIHx8IG51bV9ya2V5c19yZWN2KTtcXG4tLVxcbm5ldC9zbWMvc21jX2xsYy5jPTEzNjM9c3RhdGljIGludCBzbWNfbGxjX3Nydl9jb25mX2xpbmsoc3RydWN0IHNtY19saW5rICpsaW5rLFxcbi0tXFxubmV0L3NtYy9zbWNfbGxjLmMtMTM4Mi1cXHRcXHRpZiAocWVudHJ5KVxcbm5ldC9zbWMvc21jX2xsYy5jOjEzODM6XFx0XFx0XFx0c21jX2xsY19mbG93X3FlbnRyeV9kZWwoXFx1MDAyNmxnci1cXHUwMDNlbGxjX2Zsb3dfbGNsKTtcXG5uZXQvc21jL3NtY19sbGMuYy0xMzg0LVxcdFxcdHJldHVybiAtRU5PTElOSztcXG4tLVxcbm5ldC9zbWMvc21jX2xsYy5jLTEzOTItXFx0XFx0c21jcl9sZ3Jfc2V0X3R5cGUobGdyLCBsZ3JfbmV3X3QpO1xcbm5ldC9zbWMvc21jX2xsYy5jOjEzOTM6XFx0c21jX2xsY19mbG93X3FlbnRyeV9kZWwoXFx1MDAyNmxnci1cXHUwMDNlbGxjX2Zsb3dfbGNsKTtcXG5uZXQvc21jL3NtY19sbGMuYy0xMzk0LVxcdHJldHVybiAwO1xcbi0tXFxubmV0L3NtYy9zbWNfbGxjLmM9MTQwNj1pbnQgc21jX2xsY19zcnZfYWRkX2xpbmsoc3RydWN0IHNtY19saW5rICpsaW5rLFxcbi0tXFxubmV0L3NtYy9zbWNfbGxjLmMtMTQ4My1cXHRpZiAoYWRkX2xsYy1cXHUwMDNlaGQuZmxhZ3MgXFx1MDAyNiBTTUNfTExDX0ZMQUdfQUREX0xOS19SRUopIHtcXG5uZXQvc21jL3NtY19sbGMuYzoxNDg0OlxcdFxcdHNtY19sbGNfZmxvd19xZW50cnlfZGVsKFxcdTAwMjZsZ3ItXFx1MDAzZWxsY19mbG93X2xjbCk7XFxubmV0L3NtYy9zbWNfbGxjLmMtMTQ4NS1cXHRcXHRyYyA9IC1FTk9MSU5LO1xcbi0tXFxubmV0L3NtYy9zbWNfbGxjLmMtMTQ5NC1cXHRzbWNfbGxjX3NhdmVfYWRkX2xpbmtfaW5mbyhsaW5rX25ldywgYWRkX2xsYyk7XFxubmV0L3NtYy9zbWNfbGxjLmM6MTQ5NTpcXHRzbWNfbGxjX2Zsb3dfcWVudHJ5X2RlbChcXHUwMDI2bGdyLVxcdTAwM2VsbGNfZmxvd19sY2wpO1xcbm5ldC9zbWMvc21jX2xsYy5jLTE0OTYtXFxuLS1cXG5uZXQvc21jL3NtY19sbGMuYz0xNTU5PXN0YXRpYyB2b2lkIHNtY19sbGNfYWRkX2xpbmtfd29yayhzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspXFxuLS1cXG5uZXQvc21jL3NtY19sbGMuYy0xNTY1LVxcdFxcdC8qIGxpbmsgZ3JvdXAgaXMgdGVybWluYXRpbmcgKi9cXG5uZXQvc21jL3NtY19sbGMuYzoxNTY2OlxcdFxcdHNtY19sbGNfZmxvd19xZW50cnlfZGVsKFxcdTAwMjZsZ3ItXFx1MDAzZWxsY19mbG93X2xjbCk7XFxubmV0L3NtYy9zbWNfbGxjLmMtMTU2Ny1cXHRcXHRnb3RvIG91dDtcXG4tLVxcbm5ldC9zbWMvc21jX2xsYy5jPTE2NzI9c3RhdGljIHZvaWQgc21jX2xsY19wcm9jZXNzX3Nydl9kZWxldGVfbGluayhzdHJ1Y3Qgc21jX2xpbmtfZ3JvdXAgKmxncilcXG4tLVxcbm5ldC9zbWMvc21jX2xsYy5jLTE3MTctXFx0XFx0XFx0aWYgKHFlbnRyeTIpXFxubmV0L3NtYy9zbWNfbGxjLmM6MTcxODpcXHRcXHRcXHRcXHRzbWNfbGxjX2Zsb3dfcWVudHJ5X2RlbChcXHUwMDI2bGdyLVxcdTAwM2VsbGNfZmxvd19sY2wpO1xcbm5ldC9zbWMvc21jX2xsYy5jLTE3MTktXFx0XFx0fVxcbi0tXFxubmV0L3NtYy9zbWNfbGxjLmM9MTc0MD1zdGF0aWMgdm9pZCBzbWNfbGxjX2RlbGV0ZV9saW5rX3dvcmsoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxcbi0tXFxubmV0L3NtYy9zbWNfbGxjLmMtMTc0Ni1cXHRcXHQvKiBsaW5rIGdyb3VwIGlzIHRlcm1pbmF0aW5nICovXFxubmV0L3NtYy9zbWNfbGxjLmM6MTc0NzpcXHRcXHRzbWNfbGxjX2Zsb3dfcWVudHJ5X2RlbChcXHUwMDI2bGdyLVxcdTAwM2VsbGNfZmxvd19sY2wpO1xcbm5ldC9zbWMvc21jX2xsYy5jLTE3NDgtXFx0XFx0Z290byBvdXQ7XFxuLS1cXG5uZXQvc21jL3NtY19sbGMuYz0xNzYwPXN0YXRpYyB2b2lkIHNtY19sbGNfcm10X2NvbmZfcmtleShzdHJ1Y3Qgc21jX2xpbmtfZ3JvdXAgKmxncilcXG4tLVxcbm5ldC9zbWMvc21jX2xsYy5jLTE3OTUtXFx0c21jX2xsY19zZW5kX21lc3NhZ2UobGluaywgXFx1MDAyNnFlbnRyeS1cXHUwMDNlbXNnKTtcXG5uZXQvc21jL3NtY19sbGMuYzoxNzk2OlxcdHNtY19sbGNfZmxvd19xZW50cnlfZGVsKFxcdTAwMjZsZ3ItXFx1MDAzZWxsY19mbG93X3JtdCk7XFxubmV0L3NtYy9zbWNfbGxjLmMtMTc5Ny19XFxuLS1cXG5uZXQvc21jL3NtY19sbGMuYz0xODAwPXN0YXRpYyB2b2lkIHNtY19sbGNfcm10X2RlbGV0ZV9ya2V5KHN0cnVjdCBzbWNfbGlua19ncm91cCAqbGdyKVxcbi0tXFxubmV0L3NtYy9zbWNfbGxjLmMtMTg0OS1cXHRzbWNfbGxjX3NlbmRfbWVzc2FnZShsaW5rLCBcXHUwMDI2cWVudHJ5LVxcdTAwM2Vtc2cpO1xcbm5ldC9zbWMvc21jX2xsYy5jOjE4NTA6XFx0c21jX2xsY19mbG93X3FlbnRyeV9kZWwoXFx1MDAyNmxnci1cXHUwMDNlbGxjX2Zsb3dfcm10KTtcXG5uZXQvc21jL3NtY19sbGMuYy0xODUxLX1cXG4tLVxcbm5ldC9zbWMvc21jX2xsYy5jPTE4NzU9c3RhdGljIHZvaWQgc21jX2xsY19ldmVudF9oYW5kbGVyKHN0cnVjdCBzbWNfbGxjX3FlbnRyeSAqcWVudHJ5KVxcbi0tXFxubmV0L3NtYy9zbWNfbGxjLmMtMTkxNC1cXHRcXHRcXHRcXHQvKiBmcmVlIGFueSBxZW50cnkgc3Rhc2hlZCBpbiBSRVFfQUREX0xJTksgc3RhdGUgKi9cXG5uZXQvc21jL3NtY19sbGMuYzoxOTE1OlxcdFxcdFxcdFxcdHNtY19sbGNfZmxvd19xZW50cnlfZGVsKFxcdTAwMjZsZ3ItXFx1MDAzZWxsY19mbG93X2xjbCk7XFxubmV0L3NtYy9zbWNfbGxjLmMtMTkxNi1cXHRcXHRcXHRcXHRsZ3ItXFx1MDAzZWxsY19mbG93X2xjbC50eXBlID0gU01DX0xMQ19GTE9XX0FERF9MSU5LO1xcbi0tXFxubmV0L3NtYy9zbWNfbGxjLmM9MjIyMj1pbnQgc21jX2xsY19kb19jb25maXJtX3JrZXkoc3RydWN0IHNtY19saW5rICpzZW5kX2xpbmssXFxuLS1cXG5uZXQvc21jL3NtY19sbGMuYy0yMjM4LVxcdGlmIChxZW50cnkpXFxubmV0L3NtYy9zbWNfbGxjLmM6MjIzOTpcXHRcXHRzbWNfbGxjX2Zsb3dfcWVudHJ5X2RlbChcXHUwMDI2bGdyLVxcdTAwM2VsbGNfZmxvd19sY2wpO1xcbm5ldC9zbWMvc21jX2xsYy5jLTIyNDAtXFx0cmV0dXJuIHJjO1xcbi0tXFxubmV0L3NtYy9zbWNfbGxjLmM9MjI0ND1pbnQgc21jX2xsY19kb19kZWxldGVfcmtleShzdHJ1Y3Qgc21jX2xpbmtfZ3JvdXAgKmxncixcXG4tLVxcbm5ldC9zbWMvc21jX2xsYy5jLTIyNjUtXFx0aWYgKHFlbnRyeSlcXG5uZXQvc21jL3NtY19sbGMuYzoyMjY2OlxcdFxcdHNtY19sbGNfZmxvd19xZW50cnlfZGVsKFxcdTAwMjZsZ3ItXFx1MDAzZWxsY19mbG93X2xjbCk7XFxubmV0L3NtYy9zbWNfbGxjLmMtMjI2Ny1cXHRyZXR1cm4gcmM7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE4VDA3OjUxOjM3LjI0MjkwOTg4WiIsIlNlcSI6NDMsIk5lc3RpbmciOjMsIlR5cGUiOiJsbG0iLCJOYW1lIjoia21zYW4tZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQzNjAwODg4OTEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aGF0LlxuXG4qKk1lbW9yeSBMZWFrIEZpeDogQSBTdHJhaWdodGZvcndhcmQgQ29ycmVjdGlvbioqXG5cbkFscmlnaHQsIHNvIHRoZSBwYXRjaCBpcyBhZGRyZXNzaW5nIGEgbWVtb3J5IGxlYWsuIEVzc2VudGlhbGx5LCB3aGVuIHRoZSBzZXJ2ZXIga2lja3Mgb2ZmIGl0cyBgYWRkX2xpbmtgIHByb2Nlc3NpbmcsIHdlJ3JlIG5vdyBjYWxsaW5nIGBzbWNfbGxjX2Zsb3dfcWVudHJ5X2RlbGAuIFRoaXMgZnVuY3Rpb24gaXMgY3JpdGljYWwgYmVjYXVzZSBpdCBoYW5kbGVzIGZyZWVpbmcgYSBgcWVudHJ5YCB0aGF0IHdhcyBwcmV2aW91c2x5IHN0YXNoZWQgYXdheS4gSXQncyBhIGNsZWFuLXVwIHN0ZXAsIHByZXZlbnRpbmcgdGhhdCBvYmplY3QgZnJvbSBsaW5nZXJpbmcgYW5kIGdvYmJsaW5nIHVwIG1lbW9yeSB3ZSBubyBsb25nZXIgbmVlZC4gVGhpcyBpcyB0aGUgZml4LlxuXG5UaGUga2V5IHRoaW5nIGlzLCB0aGlzIGZpeCBzcGVjaWZpY2FsbHkgYWRkcmVzc2VzIGEgbGVhay4gVGhlcmUncyBubyByaXNrIG9mIGV4cG9zaW5nIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IGJlY2F1c2Ugb2YgdGhpcyBjaGFuZ2U7IHdlJ3JlIGp1c3QgbWFuYWdpbmcgd2hhdCB3ZSAqZG8qIGhhdmUgYmV0dGVyLiBGcmFua2x5LCBJJ20gY29uZmlkZW50IHRoYXQgb3VyIGV4aXN0aW5nIHRvb2xzLCBLQVNBTiBhbmQgS01FTUxFQUssIGFyZSBwZXJmZWN0bHkgc3VmZmljaWVudCBmb3IgZGV0ZWN0aW5nIG1lbW9yeSBsZWFrcyBhbmQgdGhvc2UgbmFzdHkgdXNlLWFmdGVyLWZyZWUgYnVncy4gTm8gbmVlZCBmb3IgS01TQU4gaGVyZTsgd2UncmUgZ29vZC4gVGhpcyBrZWVwcyB0aGluZ3MgbGVhbiBhbmQgZm9jdXNlZC5cblxuXG4iLCJJbnB1dFRva2VucyI6NTY1NSwiT3V0cHV0VG9rZW5zIjoxMTYsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo4OSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xOFQwNzo1MTo0MS42MDMwMDE5ODFaIiwiU2VxIjo0NCwiTmVzdGluZyI6MywiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNzI4MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGZpeGVzIGEgbWVtb3J5IGxlYWsgYnkgZnJlZWluZyBhIHN0YXNoZWQgYHFlbnRyeWAgaW4gYHNtY19sbGNfZXZlbnRfaGFuZGxlcmAgd2hlbiB0aGUgc2VydmVyIHN0YXJ0cyBgYWRkX2xpbmtgIHByb2Nlc3NpbmcuIEl0IGRvZXMgbm90IGludHJvZHVjZSBvciBleHBvc2UgYW55IHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHJpc2tzIG9yIGluZm8tbGVha3MuIE1lbW9yeSBsZWFrcyBhbmQgdXNlLWFmdGVyLWZyZWUgYnVncyBhcmUgZWZmZWN0aXZlbHkgZGV0ZWN0ZWQgYnkgS01FTUxFQUsgYW5kIEtBU0FOLiBUaGVyZWZvcmUsIGEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpcyBub3QgcmVxdWlyZWQuXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggZml4ZXMgYSBtZW1vcnkgbGVhayBieSBmcmVlaW5nIGEgc3Rhc2hlZCBgcWVudHJ5YCBpbiBgc21jX2xsY19ldmVudF9oYW5kbGVyYCB3aGVuIHRoZSBzZXJ2ZXIgc3RhcnRzIGBhZGRfbGlua2AgcHJvY2Vzc2luZy4gSXQgZG9lcyBub3QgaW50cm9kdWNlIG9yIGV4cG9zZSBhbnkgdW5pbml0aWFsaXplZCBtZW1vcnkgcmlza3Mgb3IgaW5mby1sZWFrcy4gTWVtb3J5IGxlYWtzIGFuZCB1c2UtYWZ0ZXItZnJlZSBidWdzIGFyZSBlZmZlY3RpdmVseSBkZXRlY3RlZCBieSBLTUVNTEVBSyBhbmQgS0FTQU4uIFRoZXJlZm9yZSwgYSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGlzIG5vdCByZXF1aXJlZC5cIixcbiAgXCJOZWVkc0tNU0FOXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+IHsKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOyAKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iKSB7CgkJCQkJc3RhdHMubGxtLmNvdW50Kys7CgkJCQkJc3RhdHMubGxtLnRva2VucyArPSAocy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2Vucyk7CgkJCQkJc3RhdHMubGxtLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0gZWxzZSBpZiAocy5UeXBlID09PSAidG9vbCIpIHsKCQkJCQlzdGF0cy50b29sLmNvdW50Kys7CgkJCQkJc3RhdHMudG9vbC5kdXJhdGlvbiArPSBkdXI7CgkJCQl9CgkJCX0pOwoKCQkJY29uc3QgYXZnTGxtRHVyID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0uZHVyYXRpb24gLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdMbG1Ub2tlbiA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLnRva2VucyAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z1Rvb2xEdXIgPSBzdGF0cy50b29sLmNvdW50ID4gMCA/IChzdGF0cy50b29sLmR1cmF0aW9uIC8gc3RhdHMudG9vbC5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgoJCQljb25zdCBsbG1TdW1hcnlDZWxscyA9IFtzdGF0cy5sbG0uY291bnQsIHN0YXRzLmxsbS50b2tlbnMsIGF2Z0xsbVRva2VuLCBzdGF0cy5sbG0uZHVyYXRpb24sIGF2Z0xsbUR1cl07CgkJCWNvbnN0IHRvb2xTdW1tYXJ5Q2VsbHMgPSBbc3RhdHMudG9vbC5jb3VudCwgc3RhdHMudG9vbC5kdXJhdGlvbiwgYXZnVG9vbER1cl07CgoJCQljb25zdCBsbG1TdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdsbG1fc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCWxsbVN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCBsbG1UciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCWxsbVN1bWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQlsbG1Uci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQlsbG1TdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZChsbG1Ucik7CgoJCQljb25zdCB0b29sU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJdG9vbFN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCB0b29sVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQl0b29sU3VtbWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQl0b29sVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJdG9vbFN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKHRvb2xUcik7CgkJfQoKCQlmdW5jdGlvbiBkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGZpbHRlcmVkU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IFsibGxtIiwgInRvb2wiXS5pbmNsdWRlcyhkLlR5cGUpKTsKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnRHVyYXRpb24nKTsKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsgCgoJCQlmaWx0ZXJlZFN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQkKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOwoJCQkJbGV0IHRvb2x0aXAgPSBzLk5hbWU7CgkJCQlpZiAocy5UeXBlID09PSAibGxtIiAmJiBzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgkJCQlkYXRhLmFkZFJvdyhbYCR7cy5TZXF9YCwgZHVyLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVGltZSBDb25zdW1wdGlvbiBvZiBMTE0vVG9vbCBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNL1Rvb2wgU3RlcHMnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnU2Vjb25kcycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZHVyYXRpb25fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGxsbVN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBkLlR5cGUgPT09ICJsbG0iKTsKCQkJaWYgKGxsbVN0ZXBzLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnVG9rZW5zJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3N0eWxlJ30pOwkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsJCgoJCQljb25zdCBhZ2VudENvbG9ycyA9IHt9OwoJCQljb25zdCBwYWxldHRlID0gWycjNDI4NUY0JywgJyNEQjQ0MzcnLCAnI0Y0QjQwMCcsICcjMEY5RDU4JywgJyNBQjQ3QkMnLCAnIzAwQUNDMSddOwoJCQlsZXQgY29sb3JJZHggPSAwOwoJCQljb25zdCBhZ2VudExMTUNvdW50cyA9IHt9OwoJCQlsbG1TdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJaWYgKCFhZ2VudENvbG9yc1tzLk5hbWVdKSB7CgkJCQkJYWdlbnRDb2xvcnNbcy5OYW1lXSA9IHBhbGV0dGVbY29sb3JJZHggJSBwYWxldHRlLmxlbmd0aF07CgkJCQkJY29sb3JJZHgrKzsKCQkJCX0KCgkJCQlhZ2VudExMTUNvdW50c1tzLk5hbWVdID0gKGFnZW50TExNQ291bnRzW3MuTmFtZV0gfHwgMCkgKyAxOwoJCQkJY29uc3QgbGFiZWwgPSBgJHtzLk5hbWV9LSR7YWdlbnRMTE1Db3VudHNbcy5OYW1lXX1gOwoJCQkJY29uc3QgdG90YWxUb2tlbnMgPSBzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zOwoJCQkJY29uc3Qgc3R5bGUgPSBgY29sb3I6ICR7YWdlbnRDb2xvcnNbcy5OYW1lXX1gOwoJCQkJbGV0IHRvb2x0aXAgPSBgVG90YWwgVG9rZW5zOiAke3RvdGFsVG9rZW5zfVxuKEluOiAke3MuSW5wdXRUb2tlbnN9LCBPdXQ6ICR7cy5PdXRwdXRUb2tlbnN9LCBUaG91Z2h0czogJHtzLk91dHB1dFRob3VnaHRzVG9rZW5zfSlgOwoJCQkJaWYgKHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCgkJCQlkYXRhLmFkZFJvdyhbbGFiZWwsIHRvdGFsVG9rZW5zLCBzdHlsZSwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1Rva2VuIENvbnN1bXB0aW9uIGJ5IExMTSBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNIENhbGwgU2VxdWVuY2UnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnQ29uc3VtZWQgVG9rZW5zJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b2tlbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoJCWxldCBhbGxFeHBhbmRlZCA9IGZhbHNlOwoJCWZ1bmN0aW9uIHRvZ2dsZUFsbERldGFpbHMoKSB7CgkJCWFsbEV4cGFuZGVkID0gIWFsbEV4cGFuZGVkOwoJCQlkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdkZXRhaWxzJykuZm9yRWFjaChkID0+IHsKCQkJCWlmIChhbGxFeHBhbmRlZCkgZC5zZXRBdHRyaWJ1dGUoJ29wZW4nLCAnJyk7CgkJCQllbHNlIGQucmVtb3ZlQXR0cmlidXRlKCdvcGVuJyk7CgkJCX0pOwoJCX0KCTwvc2NyaXB0PgoKCjwvYm9keT4KPC9odG1sPgo=" },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-workflowxt9qt[1] Phase: Succeeded StartedAt: 2026-08-18 07:51:52 +0000 UTC FinishedAt: 2026-08-18 07:51:52 +0000 UTC Input: nil Output: nil --------- Name: series-workflowxt9qt[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-08-18 07:51:52 +0000 UTC FinishedAt: 2026-08-18 07:51:52 +0000 UTC Input: nil Output: nil --------- Name: series-workflowxt9qt[2] Phase: Succeeded StartedAt: 2026-08-18 07:51:52 +0000 UTC FinishedAt: 2026-08-18 09:32:52 +0000 UTC Input: nil Output: nil --------- Name: series-workflowxt9qt[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"24ef02f934eeb48830cff6b739abc3c62b1d107b","config_name":"upstream-apparmor-kasan.config","enable_configs":["SMC","INFINIBAND","DIBS","DIBS_LO"],"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":["smc_llc_srv_add_link","smc_llc_cli_add_link","smc_llc_add_link_local"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"24ef02f934eeb48830cff6b739abc3c62b1d107b","config_name":"upstream-apparmor-kasan.config","enable_configs":["SMC","INFINIBAND","DIBS","DIBS_LO"],"series_id":"3fe04b91-b516-4048-84ba-c8b3f2bb7af5","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-08-18 07:51:52 +0000 UTC FinishedAt: 2026-08-18 09:32:52 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"24ef02f934eeb48830cff6b739abc3c62b1d107b","config_name":"upstream-apparmor-kasan.config","enable_configs":["SMC","INFINIBAND","DIBS","DIBS_LO"],"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":["smc_llc_srv_add_link","smc_llc_cli_add_link","smc_llc_add_link_local"],"skip_cover_check":false},"patched":{"arch":"amd64","commit_hash":"24ef02f934eeb48830cff6b739abc3c62b1d107b","config_name":"upstream-apparmor-kasan.config","enable_configs":["SMC","INFINIBAND","DIBS","DIBS_LO"],"series_id":"3fe04b91-b516-4048-84ba-c8b3f2bb7af5","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-workflowxt9qt[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"24ef02f934eeb48830cff6b739abc3c62b1d107b","config_name":"upstream-apparmor-kasan.config","enable_configs":["SMC","INFINIBAND","DIBS","DIBS_LO"],"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":["smc_llc_srv_add_link","smc_llc_cli_add_link","smc_llc_add_link_local"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"24ef02f934eeb48830cff6b739abc3c62b1d107b","config_name":"upstream-apparmor-kasan.config","enable_configs":["SMC","INFINIBAND","DIBS","DIBS_LO"],"series_id":"3fe04b91-b516-4048-84ba-c8b3f2bb7af5","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-08-18 07:51:52 +0000 UTC FinishedAt: 2026-08-18 07:52:02 +0000 UTC Input: nil Output: nil --------- Name: series-workflowxt9qt[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"24ef02f934eeb48830cff6b739abc3c62b1d107b","config_name":"upstream-apparmor-kasan.config","enable_configs":["SMC","INFINIBAND","DIBS","DIBS_LO"],"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":["smc_llc_srv_add_link","smc_llc_cli_add_link","smc_llc_add_link_local"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"24ef02f934eeb48830cff6b739abc3c62b1d107b","config_name":"upstream-apparmor-kasan.config","enable_configs":["SMC","INFINIBAND","DIBS","DIBS_LO"],"series_id":"3fe04b91-b516-4048-84ba-c8b3f2bb7af5","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-08-18 07:51:52 +0000 UTC FinishedAt: 2026-08-18 07:51:58 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"24ef02f934eeb48830cff6b739abc3c62b1d107b","config_name":"upstream-apparmor-kasan.config","enable_configs":["SMC","INFINIBAND","DIBS","DIBS_LO"],"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-workflowxt9qt/series-workflowxt9qt-convert-artifact-1174558836/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowxt9qt[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"24ef02f934eeb48830cff6b739abc3c62b1d107b","config_name":"upstream-apparmor-kasan.config","enable_configs":["SMC","INFINIBAND","DIBS","DIBS_LO"],"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":["smc_llc_srv_add_link","smc_llc_cli_add_link","smc_llc_add_link_local"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"24ef02f934eeb48830cff6b739abc3c62b1d107b","config_name":"upstream-apparmor-kasan.config","enable_configs":["SMC","INFINIBAND","DIBS","DIBS_LO"],"series_id":"3fe04b91-b516-4048-84ba-c8b3f2bb7af5","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-08-18 07:52:02 +0000 UTC FinishedAt: 2026-08-18 08:10:46 +0000 UTC Input: nil Output: nil --------- Name: series-workflowxt9qt[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"24ef02f934eeb48830cff6b739abc3c62b1d107b","config_name":"upstream-apparmor-kasan.config","enable_configs":["SMC","INFINIBAND","DIBS","DIBS_LO"],"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":["smc_llc_srv_add_link","smc_llc_cli_add_link","smc_llc_add_link_local"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"24ef02f934eeb48830cff6b739abc3c62b1d107b","config_name":"upstream-apparmor-kasan.config","enable_configs":["SMC","INFINIBAND","DIBS","DIBS_LO"],"series_id":"3fe04b91-b516-4048-84ba-c8b3f2bb7af5","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-08-18 07:52:02 +0000 UTC FinishedAt: 2026-08-18 08:10:46 +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:*1ba4a025-b318-459a-9227-7dcdb417707a,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-workflowxt9qt/series-workflowxt9qt-convert-artifact-1174558836/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": "7689fd99-0676-442b-a2db-c0f10edff99b", "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-workflowxt9qt/series-workflowxt9qt-build-action-1068252530/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowxt9qt[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"24ef02f934eeb48830cff6b739abc3c62b1d107b","config_name":"upstream-apparmor-kasan.config","enable_configs":["SMC","INFINIBAND","DIBS","DIBS_LO"],"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":["smc_llc_srv_add_link","smc_llc_cli_add_link","smc_llc_add_link_local"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"24ef02f934eeb48830cff6b739abc3c62b1d107b","config_name":"upstream-apparmor-kasan.config","enable_configs":["SMC","INFINIBAND","DIBS","DIBS_LO"],"series_id":"3fe04b91-b516-4048-84ba-c8b3f2bb7af5","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-08-18 07:52:02 +0000 UTC FinishedAt: 2026-08-18 08:10:36 +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:*1ba4a025-b318-459a-9227-7dcdb417707a,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-workflowxt9qt/series-workflowxt9qt-convert-artifact-1174558836/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": "7689fd99-0676-442b-a2db-c0f10edff99b", "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-workflowxt9qt/series-workflowxt9qt-build-action-1068252530/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowxt9qt[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"24ef02f934eeb48830cff6b739abc3c62b1d107b","config_name":"upstream-apparmor-kasan.config","enable_configs":["SMC","INFINIBAND","DIBS","DIBS_LO"],"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":["smc_llc_srv_add_link","smc_llc_cli_add_link","smc_llc_add_link_local"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"24ef02f934eeb48830cff6b739abc3c62b1d107b","config_name":"upstream-apparmor-kasan.config","enable_configs":["SMC","INFINIBAND","DIBS","DIBS_LO"],"series_id":"3fe04b91-b516-4048-84ba-c8b3f2bb7af5","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-08-18 08:10:46 +0000 UTC FinishedAt: 2026-08-18 08:10:46 +0000 UTC Input: nil Output: nil --------- Name: series-workflowxt9qt[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"24ef02f934eeb48830cff6b739abc3c62b1d107b","config_name":"upstream-apparmor-kasan.config","enable_configs":["SMC","INFINIBAND","DIBS","DIBS_LO"],"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":["smc_llc_srv_add_link","smc_llc_cli_add_link","smc_llc_add_link_local"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"24ef02f934eeb48830cff6b739abc3c62b1d107b","config_name":"upstream-apparmor-kasan.config","enable_configs":["SMC","INFINIBAND","DIBS","DIBS_LO"],"series_id":"3fe04b91-b516-4048-84ba-c8b3f2bb7af5","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-08-18 08:10:46 +0000 UTC FinishedAt: 2026-08-18 08:10:46 +0000 UTC Input: nil Output: nil --------- Name: series-workflowxt9qt[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"24ef02f934eeb48830cff6b739abc3c62b1d107b","config_name":"upstream-apparmor-kasan.config","enable_configs":["SMC","INFINIBAND","DIBS","DIBS_LO"],"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":["smc_llc_srv_add_link","smc_llc_cli_add_link","smc_llc_add_link_local"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"24ef02f934eeb48830cff6b739abc3c62b1d107b","config_name":"upstream-apparmor-kasan.config","enable_configs":["SMC","INFINIBAND","DIBS","DIBS_LO"],"series_id":"3fe04b91-b516-4048-84ba-c8b3f2bb7af5","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-08-18 08:10:46 +0000 UTC FinishedAt: 2026-08-18 08:10:56 +0000 UTC Input: nil Output: nil --------- Name: series-workflowxt9qt[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"24ef02f934eeb48830cff6b739abc3c62b1d107b","config_name":"upstream-apparmor-kasan.config","enable_configs":["SMC","INFINIBAND","DIBS","DIBS_LO"],"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":["smc_llc_srv_add_link","smc_llc_cli_add_link","smc_llc_add_link_local"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"24ef02f934eeb48830cff6b739abc3c62b1d107b","config_name":"upstream-apparmor-kasan.config","enable_configs":["SMC","INFINIBAND","DIBS","DIBS_LO"],"series_id":"3fe04b91-b516-4048-84ba-c8b3f2bb7af5","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-08-18 08:10:46 +0000 UTC FinishedAt: 2026-08-18 08:10:53 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"24ef02f934eeb48830cff6b739abc3c62b1d107b","config_name":"upstream-apparmor-kasan.config","enable_configs":["SMC","INFINIBAND","DIBS","DIBS_LO"],"series_id":"3fe04b91-b516-4048-84ba-c8b3f2bb7af5","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-workflowxt9qt/series-workflowxt9qt-convert-artifact-1552114995/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowxt9qt[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"24ef02f934eeb48830cff6b739abc3c62b1d107b","config_name":"upstream-apparmor-kasan.config","enable_configs":["SMC","INFINIBAND","DIBS","DIBS_LO"],"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":["smc_llc_srv_add_link","smc_llc_cli_add_link","smc_llc_add_link_local"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"24ef02f934eeb48830cff6b739abc3c62b1d107b","config_name":"upstream-apparmor-kasan.config","enable_configs":["SMC","INFINIBAND","DIBS","DIBS_LO"],"series_id":"3fe04b91-b516-4048-84ba-c8b3f2bb7af5","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-08-18 08:10:56 +0000 UTC FinishedAt: 2026-08-18 08:12:45 +0000 UTC Input: nil Output: nil --------- Name: series-workflowxt9qt[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"24ef02f934eeb48830cff6b739abc3c62b1d107b","config_name":"upstream-apparmor-kasan.config","enable_configs":["SMC","INFINIBAND","DIBS","DIBS_LO"],"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":["smc_llc_srv_add_link","smc_llc_cli_add_link","smc_llc_add_link_local"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"24ef02f934eeb48830cff6b739abc3c62b1d107b","config_name":"upstream-apparmor-kasan.config","enable_configs":["SMC","INFINIBAND","DIBS","DIBS_LO"],"series_id":"3fe04b91-b516-4048-84ba-c8b3f2bb7af5","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-08-18 08:10:56 +0000 UTC FinishedAt: 2026-08-18 08:12:35 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*7689fd99-0676-442b-a2db-c0f10edff99b,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-workflowxt9qt/series-workflowxt9qt-build-action-1068252530/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-workflowxt9qt[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"24ef02f934eeb48830cff6b739abc3c62b1d107b","config_name":"upstream-apparmor-kasan.config","enable_configs":["SMC","INFINIBAND","DIBS","DIBS_LO"],"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":["smc_llc_srv_add_link","smc_llc_cli_add_link","smc_llc_add_link_local"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"24ef02f934eeb48830cff6b739abc3c62b1d107b","config_name":"upstream-apparmor-kasan.config","enable_configs":["SMC","INFINIBAND","DIBS","DIBS_LO"],"series_id":"3fe04b91-b516-4048-84ba-c8b3f2bb7af5","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-08-18 08:12:45 +0000 UTC FinishedAt: 2026-08-18 08:12:45 +0000 UTC Input: nil Output: nil --------- Name: series-workflowxt9qt[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"24ef02f934eeb48830cff6b739abc3c62b1d107b","config_name":"upstream-apparmor-kasan.config","enable_configs":["SMC","INFINIBAND","DIBS","DIBS_LO"],"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":["smc_llc_srv_add_link","smc_llc_cli_add_link","smc_llc_add_link_local"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"24ef02f934eeb48830cff6b739abc3c62b1d107b","config_name":"upstream-apparmor-kasan.config","enable_configs":["SMC","INFINIBAND","DIBS","DIBS_LO"],"series_id":"3fe04b91-b516-4048-84ba-c8b3f2bb7af5","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-08-18 08:12:45 +0000 UTC FinishedAt: 2026-08-18 08:12:45 +0000 UTC Input: nil Output: nil --------- Name: series-workflowxt9qt[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"24ef02f934eeb48830cff6b739abc3c62b1d107b","config_name":"upstream-apparmor-kasan.config","enable_configs":["SMC","INFINIBAND","DIBS","DIBS_LO"],"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":["smc_llc_srv_add_link","smc_llc_cli_add_link","smc_llc_add_link_local"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"24ef02f934eeb48830cff6b739abc3c62b1d107b","config_name":"upstream-apparmor-kasan.config","enable_configs":["SMC","INFINIBAND","DIBS","DIBS_LO"],"series_id":"3fe04b91-b516-4048-84ba-c8b3f2bb7af5","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-08-18 08:12:45 +0000 UTC FinishedAt: 2026-08-18 08:33:13 +0000 UTC Input: nil Output: nil --------- Name: series-workflowxt9qt[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"24ef02f934eeb48830cff6b739abc3c62b1d107b","config_name":"upstream-apparmor-kasan.config","enable_configs":["SMC","INFINIBAND","DIBS","DIBS_LO"],"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":["smc_llc_srv_add_link","smc_llc_cli_add_link","smc_llc_add_link_local"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"24ef02f934eeb48830cff6b739abc3c62b1d107b","config_name":"upstream-apparmor-kasan.config","enable_configs":["SMC","INFINIBAND","DIBS","DIBS_LO"],"series_id":"3fe04b91-b516-4048-84ba-c8b3f2bb7af5","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-08-18 08:12:45 +0000 UTC FinishedAt: 2026-08-18 08:33:13 +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:*1ba4a025-b318-459a-9227-7dcdb417707a,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-workflowxt9qt/series-workflowxt9qt-convert-artifact-1552114995/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": "316b7a80-f21a-465d-96d0-40be010e0b18", "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-workflowxt9qt/series-workflowxt9qt-build-action-207908327/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowxt9qt[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"24ef02f934eeb48830cff6b739abc3c62b1d107b","config_name":"upstream-apparmor-kasan.config","enable_configs":["SMC","INFINIBAND","DIBS","DIBS_LO"],"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":["smc_llc_srv_add_link","smc_llc_cli_add_link","smc_llc_add_link_local"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"24ef02f934eeb48830cff6b739abc3c62b1d107b","config_name":"upstream-apparmor-kasan.config","enable_configs":["SMC","INFINIBAND","DIBS","DIBS_LO"],"series_id":"3fe04b91-b516-4048-84ba-c8b3f2bb7af5","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-08-18 08:12:45 +0000 UTC FinishedAt: 2026-08-18 08:33:03 +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:*1ba4a025-b318-459a-9227-7dcdb417707a,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-workflowxt9qt/series-workflowxt9qt-convert-artifact-1552114995/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": "316b7a80-f21a-465d-96d0-40be010e0b18", "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-workflowxt9qt/series-workflowxt9qt-build-action-207908327/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowxt9qt[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"24ef02f934eeb48830cff6b739abc3c62b1d107b","config_name":"upstream-apparmor-kasan.config","enable_configs":["SMC","INFINIBAND","DIBS","DIBS_LO"],"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":["smc_llc_srv_add_link","smc_llc_cli_add_link","smc_llc_add_link_local"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"24ef02f934eeb48830cff6b739abc3c62b1d107b","config_name":"upstream-apparmor-kasan.config","enable_configs":["SMC","INFINIBAND","DIBS","DIBS_LO"],"series_id":"3fe04b91-b516-4048-84ba-c8b3f2bb7af5","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-08-18 08:33:13 +0000 UTC FinishedAt: 2026-08-18 08:33:13 +0000 UTC Input: nil Output: nil --------- Name: series-workflowxt9qt[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"24ef02f934eeb48830cff6b739abc3c62b1d107b","config_name":"upstream-apparmor-kasan.config","enable_configs":["SMC","INFINIBAND","DIBS","DIBS_LO"],"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":["smc_llc_srv_add_link","smc_llc_cli_add_link","smc_llc_add_link_local"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"24ef02f934eeb48830cff6b739abc3c62b1d107b","config_name":"upstream-apparmor-kasan.config","enable_configs":["SMC","INFINIBAND","DIBS","DIBS_LO"],"series_id":"3fe04b91-b516-4048-84ba-c8b3f2bb7af5","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-08-18 08:33:13 +0000 UTC FinishedAt: 2026-08-18 08:33:13 +0000 UTC Input: nil Output: nil --------- Name: series-workflowxt9qt[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"24ef02f934eeb48830cff6b739abc3c62b1d107b","config_name":"upstream-apparmor-kasan.config","enable_configs":["SMC","INFINIBAND","DIBS","DIBS_LO"],"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":["smc_llc_srv_add_link","smc_llc_cli_add_link","smc_llc_add_link_local"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"24ef02f934eeb48830cff6b739abc3c62b1d107b","config_name":"upstream-apparmor-kasan.config","enable_configs":["SMC","INFINIBAND","DIBS","DIBS_LO"],"series_id":"3fe04b91-b516-4048-84ba-c8b3f2bb7af5","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-08-18 08:33:13 +0000 UTC FinishedAt: 2026-08-18 08:35:15 +0000 UTC Input: nil Output: nil --------- Name: series-workflowxt9qt[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"24ef02f934eeb48830cff6b739abc3c62b1d107b","config_name":"upstream-apparmor-kasan.config","enable_configs":["SMC","INFINIBAND","DIBS","DIBS_LO"],"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":["smc_llc_srv_add_link","smc_llc_cli_add_link","smc_llc_add_link_local"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"24ef02f934eeb48830cff6b739abc3c62b1d107b","config_name":"upstream-apparmor-kasan.config","enable_configs":["SMC","INFINIBAND","DIBS","DIBS_LO"],"series_id":"3fe04b91-b516-4048-84ba-c8b3f2bb7af5","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-08-18 08:33:13 +0000 UTC FinishedAt: 2026-08-18 08:35:05 +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:*316b7a80-f21a-465d-96d0-40be010e0b18,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-workflowxt9qt/series-workflowxt9qt-build-action-207908327/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-workflowxt9qt[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"24ef02f934eeb48830cff6b739abc3c62b1d107b","config_name":"upstream-apparmor-kasan.config","enable_configs":["SMC","INFINIBAND","DIBS","DIBS_LO"],"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":["smc_llc_srv_add_link","smc_llc_cli_add_link","smc_llc_add_link_local"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"24ef02f934eeb48830cff6b739abc3c62b1d107b","config_name":"upstream-apparmor-kasan.config","enable_configs":["SMC","INFINIBAND","DIBS","DIBS_LO"],"series_id":"3fe04b91-b516-4048-84ba-c8b3f2bb7af5","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-08-18 08:35:15 +0000 UTC FinishedAt: 2026-08-18 09:32:52 +0000 UTC Input: nil Output: nil --------- Name: series-workflowxt9qt[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"24ef02f934eeb48830cff6b739abc3c62b1d107b","config_name":"upstream-apparmor-kasan.config","enable_configs":["SMC","INFINIBAND","DIBS","DIBS_LO"],"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":["smc_llc_srv_add_link","smc_llc_cli_add_link","smc_llc_add_link_local"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"24ef02f934eeb48830cff6b739abc3c62b1d107b","config_name":"upstream-apparmor-kasan.config","enable_configs":["SMC","INFINIBAND","DIBS","DIBS_LO"],"series_id":"3fe04b91-b516-4048-84ba-c8b3f2bb7af5","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-08-18 08:35:15 +0000 UTC FinishedAt: 2026-08-18 09:32:52 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:config,Default:nil,Value:*{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["smc_llc_srv_add_link","smc_llc_cli_add_link","smc_llc_add_link_local"],"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:*7689fd99-0676-442b-a2db-c0f10edff99b,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*316b7a80-f21a-465d-96d0-40be010e0b18,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-workflowxt9qt/series-workflowxt9qt-build-action-1068252530/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-workflowxt9qt/series-workflowxt9qt-build-action-207908327/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflowxt9qt[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"24ef02f934eeb48830cff6b739abc3c62b1d107b","config_name":"upstream-apparmor-kasan.config","enable_configs":["SMC","INFINIBAND","DIBS","DIBS_LO"],"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":["smc_llc_srv_add_link","smc_llc_cli_add_link","smc_llc_add_link_local"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"24ef02f934eeb48830cff6b739abc3c62b1d107b","config_name":"upstream-apparmor-kasan.config","enable_configs":["SMC","INFINIBAND","DIBS","DIBS_LO"],"series_id":"3fe04b91-b516-4048-84ba-c8b3f2bb7af5","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-08-18 08:35:15 +0000 UTC FinishedAt: 2026-08-18 08:35:25 +0000 UTC Input: nil Output: nil --------- Name: series-workflowxt9qt[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"24ef02f934eeb48830cff6b739abc3c62b1d107b","config_name":"upstream-apparmor-kasan.config","enable_configs":["SMC","INFINIBAND","DIBS","DIBS_LO"],"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":["smc_llc_srv_add_link","smc_llc_cli_add_link","smc_llc_add_link_local"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"24ef02f934eeb48830cff6b739abc3c62b1d107b","config_name":"upstream-apparmor-kasan.config","enable_configs":["SMC","INFINIBAND","DIBS","DIBS_LO"],"series_id":"3fe04b91-b516-4048-84ba-c8b3f2bb7af5","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-08-18 08:35:15 +0000 UTC FinishedAt: 2026-08-18 08:35:21 +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":["smc_llc_srv_add_link","smc_llc_cli_add_link","smc_llc_add_link_local"],"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-workflowxt9qt/series-workflowxt9qt-convert-artifact-1501447468/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowxt9qt[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"24ef02f934eeb48830cff6b739abc3c62b1d107b","config_name":"upstream-apparmor-kasan.config","enable_configs":["SMC","INFINIBAND","DIBS","DIBS_LO"],"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":["smc_llc_srv_add_link","smc_llc_cli_add_link","smc_llc_add_link_local"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"24ef02f934eeb48830cff6b739abc3c62b1d107b","config_name":"upstream-apparmor-kasan.config","enable_configs":["SMC","INFINIBAND","DIBS","DIBS_LO"],"series_id":"3fe04b91-b516-4048-84ba-c8b3f2bb7af5","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-08-18 08:35:15 +0000 UTC FinishedAt: 2026-08-18 08:35:15 +0000 UTC Input: nil Output: nil --------- Name: series-workflowxt9qt[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"24ef02f934eeb48830cff6b739abc3c62b1d107b","config_name":"upstream-apparmor-kasan.config","enable_configs":["SMC","INFINIBAND","DIBS","DIBS_LO"],"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":["smc_llc_srv_add_link","smc_llc_cli_add_link","smc_llc_add_link_local"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"24ef02f934eeb48830cff6b739abc3c62b1d107b","config_name":"upstream-apparmor-kasan.config","enable_configs":["SMC","INFINIBAND","DIBS","DIBS_LO"],"series_id":"3fe04b91-b516-4048-84ba-c8b3f2bb7af5","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-08-18 08:35:15 +0000 UTC FinishedAt: 2026-08-18 08:35:15 +0000 UTC Input: nil Output: nil --------- Name: series-workflowxt9qt[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"24ef02f934eeb48830cff6b739abc3c62b1d107b","config_name":"upstream-apparmor-kasan.config","enable_configs":["SMC","INFINIBAND","DIBS","DIBS_LO"],"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":["smc_llc_srv_add_link","smc_llc_cli_add_link","smc_llc_add_link_local"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"24ef02f934eeb48830cff6b739abc3c62b1d107b","config_name":"upstream-apparmor-kasan.config","enable_configs":["SMC","INFINIBAND","DIBS","DIBS_LO"],"series_id":"3fe04b91-b516-4048-84ba-c8b3f2bb7af5","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-08-18 08:35:15 +0000 UTC FinishedAt: 2026-08-18 08:35:15 +0000 UTC Input: nil Output: nil --------- Name: series-workflowxt9qt[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"24ef02f934eeb48830cff6b739abc3c62b1d107b","config_name":"upstream-apparmor-kasan.config","enable_configs":["SMC","INFINIBAND","DIBS","DIBS_LO"],"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":["smc_llc_srv_add_link","smc_llc_cli_add_link","smc_llc_add_link_local"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"24ef02f934eeb48830cff6b739abc3c62b1d107b","config_name":"upstream-apparmor-kasan.config","enable_configs":["SMC","INFINIBAND","DIBS","DIBS_LO"],"series_id":"3fe04b91-b516-4048-84ba-c8b3f2bb7af5","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-08-18 08:35:25 +0000 UTC FinishedAt: 2026-08-18 09:32:52 +0000 UTC Input: nil Output: nil --------- Name: series-workflowxt9qt[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"24ef02f934eeb48830cff6b739abc3c62b1d107b","config_name":"upstream-apparmor-kasan.config","enable_configs":["SMC","INFINIBAND","DIBS","DIBS_LO"],"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":["smc_llc_srv_add_link","smc_llc_cli_add_link","smc_llc_add_link_local"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"24ef02f934eeb48830cff6b739abc3c62b1d107b","config_name":"upstream-apparmor-kasan.config","enable_configs":["SMC","INFINIBAND","DIBS","DIBS_LO"],"series_id":"3fe04b91-b516-4048-84ba-c8b3f2bb7af5","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-08-18 08:35:25 +0000 UTC FinishedAt: 2026-08-18 09:32:42 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*7689fd99-0676-442b-a2db-c0f10edff99b,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*316b7a80-f21a-465d-96d0-40be010e0b18,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-workflowxt9qt/series-workflowxt9qt-build-action-1068252530/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-workflowxt9qt/series-workflowxt9qt-build-action-207908327/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-workflowxt9qt/series-workflowxt9qt-convert-artifact-1501447468/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,}