Name: series-workflowwwtg6 Phase: Succeeded StartedAt: 2026-09-10 16:14:08 +0000 UTC FinishedAt: 2026-09-10 19:56:25 +0000 UTC Input: nil Output: nil --------- Name: series-workflowwwtg6[0] Phase: Succeeded StartedAt: 2026-09-10 16:14:08 +0000 UTC FinishedAt: 2026-09-10 16:17:24 +0000 UTC Input: nil Output: nil --------- Name: series-workflowwwtg6[0].run-triage Phase: Succeeded StartedAt: 2026-09-10 16:14:08 +0000 UTC FinishedAt: 2026-09-10 16:17:24 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "bpf", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git", "commit_hash": "e4a62833adff6ef0fe7c0b90393204fe3c26b5c5", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "BPF_SYSCALL", "BPF_EVENTS" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "bpf", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git", "commit_hash": "e4a62833adff6ef0fe7c0b90393204fe3c26b5c5", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "BPF_SYSCALL", "BPF_EVENTS" ], "series_id": "ce442b8d-4868-46a3-8d35-6f7f39f3cf22" }, "track": "KASAN", "fuzz": { "focus": [ "bpf" ], "focus_symbols": [ "check_kfunc_call", "check_mem_access" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-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+CgkJCTx0ZD4yMDI2LzA5LzEwIDE2OjE1PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0JQRl9TWVNDQUxMJiMzNDssCiAgICAmIzM0O0JQRl9FVkVOVFMmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtjaGVja19rZnVuY19jYWxsJiMzNDssCiAgICAmIzM0O2NoZWNrX21lbV9hY2Nlc3MmIzM0OwogIF0sCiAgJiMzNDtLTVNBTlJlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBpbnRyb2R1Y2VzIHRoZSBLRl9QRVJGTU9OIGtmdW5jIGZsYWcgYW5kIGVuZm9yY2VzIGNhcGFiaWxpdHkgY2hlY2tzIGluIHRoZSBCUEYgdmVyaWZpZXIgKHJlcXVpcmluZyBDQVBfUEVSRk1PTiAvIENBUF9TWVNfQURNSU4gdmlhIGVudi1cdTAwM2VhbGxvd19wdHJfbGVha3MpIGZvciBjZXJ0YWluIGtmdW5jcyBhbmQgdW50cnVzdGVkIHJlYWQtb25seSBtZW1vcnkgYWNjZXNzZXMuXG5cblRoZSBjaGFuZ2VzIGFyZSBlbnRpcmVseSByZXN0cmljdGVkIHRvIEJQRiB2ZXJpZmllciBhY2Nlc3MtY29udHJvbCBjaGVja3MgYW5kIGZsYWcgZGVmaW5pdGlvbnMuIFRoZXkgZG8gbm90IGFsdGVyIG1lbW9yeSBpbml0aWFsaXphdGlvbiwgZG8gbm90IGludHJvZHVjZSBvciBjb3B5IHVuaW5pdGlhbGl6ZWQgZGF0YSBzdHJ1Y3R1cmVzIHRvIHVzZXIgc3BhY2UsIGFuZCBkbyBub3QgaW50cm9kdWNlIGxvZ2ljIHRoYXQgYnJhbmNoZXMgb24gdW5pbml0aWFsaXplZCBtZW1vcnkuIFRodXMsIHRoZXJlIGFyZSBubyB1bmluaXRpYWxpemVkIG1lbW9yeSByaXNrcyB0aGF0IHJlcXVpcmUgYSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uLiYjMzQ7LAogICYjMzQ7TmVlZHNLTVNBTiYjMzQ7OiBmYWxzZSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBpbnRyb2R1Y2VzIGEgbmV3IEtGX1BFUkZNT04ga2Z1bmMgZmxhZyBhbmQgZW5mb3JjZXMgQ0FQX1BFUkZNT04vQ0FQX1NZU19BRE1JTiBwZXJtaXNzaW9uIGNoZWNrcyBpbiB0aGUgQlBGIHZlcmlmaWVyIChjaGVja19rZnVuY19jYWxsIGFuZCBjaGVja19tZW1fYWNjZXNzKS4gU2luY2UgdGhlc2UgY2hhbmdlcyBtb2RpZnkgcmVhY2hhYmxlIEJQRiB2ZXJpZmllciBsb2dpYyBleGVjdXRlZCBkdXJpbmcgQlBGIHByb2dyYW0gdmVyaWZpY2F0aW9uIHZpYSBzeXNfYnBmLCB0aGV5IHdhcnJhbnQgZnV6emluZy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMCAxNjoxNTwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IDQ3NTQ3ZWU3YTU0MDkyM2U2MjE5ZjQ1YmQ4YjI2ZTI5ZGE4YzFmNTBcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgVGh1IFNlcCAxMCAxNjoxNTo0MiAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2JwZi9rZnVuY3MucnN0IGIvRG9jdW1lbnRhdGlvbi9icGYva2Z1bmNzLnJzdFxuaW5kZXggODVmNzNlMGJiZDBmZi4uNjY5MWZlOGEzMmMzZCAxMDA2NDRcbi0tLSBhL0RvY3VtZW50YXRpb24vYnBmL2tmdW5jcy5yc3RcbiYjNDM7JiM0MzsmIzQzOyBiL0RvY3VtZW50YXRpb24vYnBmL2tmdW5jcy5yc3RcbkBAIC00ODYsNiAmIzQzOzQ4NiwxNiBAQCBFeGFtcGxlIHVzYWdlIGluIEJQRiBwcm9ncmFtOlxuIFx0Lyogbm90ZSB0aGF0IHRoZSBsYXN0IGFyZ3VtZW50IGlzIG9taXR0ZWQgKi9cbiAgICAgICAgIGJwZl90YXNrX3dvcmtfc2NoZWR1bGVfc2lnbmFsKHRhc2ssIFx1MDAyNndvcmstXHUwMDNldHcsIFx1MDAyNmFycm1hcCwgdGFza193b3JrX2NhbGxiYWNrKTtcbiBcbiYjNDM7Mi41LjEwIEtGX1BFUkZNT04gZmxhZ1xuJiM0MzstLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4mIzQzO1xuJiM0MztUaGUgS0ZfUEVSRk1PTiBmbGFnIGlzIHVzZWQgZm9yIGtmdW5jcyB0aGF0IGNhbiBleHBvc2Uga2VybmVsIG1lbW9yeSBvciBrZXJuZWxcbiYjNDM7YWRkcmVzc2VzIHRvIHRoZSBCUEYgcHJvZ3JhbSwgZm9yIGV4YW1wbGUgYnkgcmVhZGluZyB0aHJvdWdoIGEgcG9pbnRlciB0aGF0IHRoZVxuJiM0Mzt2ZXJpZmllciBkb2VzIG5vdCBjaGVjay4gQ2FsbGluZyBzdWNoIGEga2Z1bmMgcmVxdWlyZXMgQ0FQX1BFUkZNT04sIG9yXG4mIzQzO0NBUF9TWVNfQURNSU4sIGluIHRoZSBzYW1lIHdheSB0aGF0IHRoZSBlcXVpdmFsZW50IEJQRiBoZWxwZXJzIGFyZSBnYXRlZCBpblxuJiM0MzticGZfYmFzZV9mdW5jX3Byb3RvKCkuIEEgcHJvZ3JhbSBsb2FkZWQgd2l0aCBDQVBfQlBGIGFsb25lIGlzIHJlamVjdGVkIGF0IGxvYWRcbiYjNDM7dGltZS5cbiYjNDM7XG4gMi42IFJlZ2lzdGVyaW5nIHRoZSBrZnVuY3NcbiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuIFxuZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgvYnRmLmggYi9pbmNsdWRlL2xpbnV4L2J0Zi5oXG5pbmRleCA4OWQ1YTVjNGYxMTcxLi43YzYyZWExN2IxMTYzIDEwMDY0NFxuLS0tIGEvaW5jbHVkZS9saW51eC9idGYuaFxuJiM0MzsmIzQzOyYjNDM7IGIvaW5jbHVkZS9saW51eC9idGYuaFxuQEAgLTgwLDYgJiM0Mzs4MCw3IEBAXG4gI2RlZmluZSBLRl9BUkVOQV9BUkcyICAgKDEgXHUwMDNjXHUwMDNjIDE1KSAvKiBrZnVuYyB0YWtlcyBhbiBhcmVuYSBwb2ludGVyIGFzIGl0cyBzZWNvbmQgYXJndW1lbnQgKi9cbiAjZGVmaW5lIEtGX0lNUExJQ0lUX0FSR1MgKDEgXHUwMDNjXHUwMDNjIDE2KSAvKiBrZnVuYyBoYXMgaW1wbGljaXQgYXJndW1lbnRzIHN1cHBsaWVkIGJ5IHRoZSB2ZXJpZmllciAqL1xuICNkZWZpbmUgS0ZfU1BJTkxPQ0tfU0FGRSAoMSBcdTAwM2NcdTAwM2MgMTcpIC8qIGtmdW5jIGlzIGFsbG93ZWQgaW5zaWRlIGJwZl9zcGluX2xvY2stZWQgcmVnaW9uICovXG4mIzQzOyNkZWZpbmUgS0ZfUEVSRk1PTiAgICAgICgxIFx1MDAzY1x1MDAzYyAxOCkgLyoga2Z1bmMgcmVxdWlyZXMgQ0FQX1BFUkZNT04gKi9cbiBcbiAvKlxuICAqIFRhZyBtYXJraW5nIGEga2VybmVsIGZ1bmN0aW9uIGFzIGEga2Z1bmMuIFRoaXMgaXMgbWVhbnQgdG8gbWluaW1pemUgdGhlXG5kaWZmIC0tZ2l0IGEva2VybmVsL2JwZi9oZWxwZXJzLmMgYi9rZXJuZWwvYnBmL2hlbHBlcnMuY1xuaW5kZXggYjNjYzVjOGZjODc1Ni4uOGEwZWViNGY2MjM2ZCAxMDA2NDRcbi0tLSBhL2tlcm5lbC9icGYvaGVscGVycy5jXG4mIzQzOyYjNDM7JiM0MzsgYi9rZXJuZWwvYnBmL2hlbHBlcnMuY1xuQEAgLTQ4ODMsNyAmIzQzOzQ4ODMsNyBAQCBCVEZfSUQoZnVuYywgYnBmX2Nncm91cF9yZWxlYXNlX2R0b3IpXG4gXG4gQlRGX0tGVU5DU19TVEFSVChjb21tb25fYnRmX2lkcylcbiBCVEZfSURfRkxBR1MoZnVuYywgYnBmX2Nhc3RfdG9fa2Vybl9jdHgsIEtGX0ZBU1RDQUxMKVxuLUJURl9JRF9GTEFHUyhmdW5jLCBicGZfcmRvbmx5X2Nhc3QsIEtGX0ZBU1RDQUxMKVxuJiM0MztCVEZfSURfRkxBR1MoZnVuYywgYnBmX3Jkb25seV9jYXN0LCBLRl9GQVNUQ0FMTCB8IEtGX1BFUkZNT04pXG4gQlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl9yY3VfcmVhZF9sb2NrKVxuIEJURl9JRF9GTEFHUyhmdW5jLCBicGZfcmN1X3JlYWRfdW5sb2NrKVxuIEJURl9JRF9GTEFHUyhmdW5jLCBicGZfZHlucHRyX3NsaWNlLCBLRl9SRVRfTlVMTClcbkBAIC00OTIwLDExICYjNDM7NDkyMCwxMSBAQCBCVEZfSURfRkxBR1MoZnVuYywgYnBmX3dxX3NldF9jYWxsYmFjaywgS0ZfSU1QTElDSVRfQVJHUylcbiBCVEZfSURfRkxBR1MoZnVuYywgYnBmX3dxX3N0YXJ0KVxuIEJURl9JRF9GTEFHUyhmdW5jLCBicGZfcHJlZW1wdF9kaXNhYmxlKVxuIEJURl9JRF9GTEFHUyhmdW5jLCBicGZfcHJlZW1wdF9lbmFibGUpXG4tQlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl9pdGVyX2JpdHNfbmV3LCBLRl9JVEVSX05FVylcbiYjNDM7QlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl9pdGVyX2JpdHNfbmV3LCBLRl9JVEVSX05FVyB8IEtGX1BFUkZNT04pXG4gQlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl9pdGVyX2JpdHNfbmV4dCwgS0ZfSVRFUl9ORVhUIHwgS0ZfUkVUX05VTEwpXG4gQlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl9pdGVyX2JpdHNfZGVzdHJveSwgS0ZfSVRFUl9ERVNUUk9ZKVxuLUJURl9JRF9GTEFHUyhmdW5jLCBicGZfY29weV9mcm9tX3VzZXJfc3RyLCBLRl9TTEVFUEFCTEUpXG4tQlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl9jb3B5X2Zyb21fdXNlcl90YXNrX3N0ciwgS0ZfU0xFRVBBQkxFKVxuJiM0MztCVEZfSURfRkxBR1MoZnVuYywgYnBmX2NvcHlfZnJvbV91c2VyX3N0ciwgS0ZfU0xFRVBBQkxFIHwgS0ZfUEVSRk1PTilcbiYjNDM7QlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl9jb3B5X2Zyb21fdXNlcl90YXNrX3N0ciwgS0ZfU0xFRVBBQkxFIHwgS0ZfUEVSRk1PTilcbiBCVEZfSURfRkxBR1MoZnVuYywgYnBmX2dldF9rbWVtX2NhY2hlKVxuIEJURl9JRF9GTEFHUyhmdW5jLCBicGZfaXRlcl9rbWVtX2NhY2hlX25ldywgS0ZfSVRFUl9ORVcgfCBLRl9TTEVFUEFCTEUpXG4gQlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl9pdGVyX2ttZW1fY2FjaGVfbmV4dCwgS0ZfSVRFUl9ORVhUIHwgS0ZfUkVUX05VTEwgfCBLRl9TTEVFUEFCTEUpXG5AQCAtNDkzMiwxNCAmIzQzOzQ5MzIsMTQgQEAgQlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl9pdGVyX2ttZW1fY2FjaGVfZGVzdHJveSwgS0ZfSVRFUl9ERVNUUk9ZIHwgS0ZfU0xFRVBBQkxFKVxuIEJURl9JRF9GTEFHUyhmdW5jLCBicGZfbG9jYWxfaXJxX3NhdmUpXG4gQlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl9sb2NhbF9pcnFfcmVzdG9yZSlcbiAjaWZkZWYgQ09ORklHX0JQRl9FVkVOVFNcbi1CVEZfSURfRkxBR1MoZnVuYywgYnBmX3Byb2JlX3JlYWRfdXNlcl9keW5wdHIpXG4tQlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl9wcm9iZV9yZWFkX2tlcm5lbF9keW5wdHIpXG4tQlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl9wcm9iZV9yZWFkX3VzZXJfc3RyX2R5bnB0cilcbi1CVEZfSURfRkxBR1MoZnVuYywgYnBmX3Byb2JlX3JlYWRfa2VybmVsX3N0cl9keW5wdHIpXG4tQlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl9jb3B5X2Zyb21fdXNlcl9keW5wdHIsIEtGX1NMRUVQQUJMRSlcbi1CVEZfSURfRkxBR1MoZnVuYywgYnBmX2NvcHlfZnJvbV91c2VyX3N0cl9keW5wdHIsIEtGX1NMRUVQQUJMRSlcbi1CVEZfSURfRkxBR1MoZnVuYywgYnBmX2NvcHlfZnJvbV91c2VyX3Rhc2tfZHlucHRyLCBLRl9TTEVFUEFCTEUpXG4tQlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl9jb3B5X2Zyb21fdXNlcl90YXNrX3N0cl9keW5wdHIsIEtGX1NMRUVQQUJMRSlcbiYjNDM7QlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl9wcm9iZV9yZWFkX3VzZXJfZHlucHRyLCBLRl9QRVJGTU9OKVxuJiM0MztCVEZfSURfRkxBR1MoZnVuYywgYnBmX3Byb2JlX3JlYWRfa2VybmVsX2R5bnB0ciwgS0ZfUEVSRk1PTilcbiYjNDM7QlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl9wcm9iZV9yZWFkX3VzZXJfc3RyX2R5bnB0ciwgS0ZfUEVSRk1PTilcbiYjNDM7QlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl9wcm9iZV9yZWFkX2tlcm5lbF9zdHJfZHlucHRyLCBLRl9QRVJGTU9OKVxuJiM0MztCVEZfSURfRkxBR1MoZnVuYywgYnBmX2NvcHlfZnJvbV91c2VyX2R5bnB0ciwgS0ZfU0xFRVBBQkxFIHwgS0ZfUEVSRk1PTilcbiYjNDM7QlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl9jb3B5X2Zyb21fdXNlcl9zdHJfZHlucHRyLCBLRl9TTEVFUEFCTEUgfCBLRl9QRVJGTU9OKVxuJiM0MztCVEZfSURfRkxBR1MoZnVuYywgYnBmX2NvcHlfZnJvbV91c2VyX3Rhc2tfZHlucHRyLCBLRl9TTEVFUEFCTEUgfCBLRl9QRVJGTU9OKVxuJiM0MztCVEZfSURfRkxBR1MoZnVuYywgYnBmX2NvcHlfZnJvbV91c2VyX3Rhc2tfc3RyX2R5bnB0ciwgS0ZfU0xFRVBBQkxFIHwgS0ZfUEVSRk1PTilcbiAjZW5kaWZcbiAjaWZkZWYgQ09ORklHX0RNQV9TSEFSRURfQlVGRkVSXG4gQlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl9pdGVyX2RtYWJ1Zl9uZXcsIEtGX0lURVJfTkVXIHwgS0ZfU0xFRVBBQkxFKVxuQEAgLTQ5NDcsMjYgJiM0Mzs0OTQ3LDI2IEBAIEJURl9JRF9GTEFHUyhmdW5jLCBicGZfaXRlcl9kbWFidWZfbmV4dCwgS0ZfSVRFUl9ORVhUIHwgS0ZfUkVUX05VTEwgfCBLRl9TTEVFUEFCXG4gQlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl9pdGVyX2RtYWJ1Zl9kZXN0cm95LCBLRl9JVEVSX0RFU1RST1kgfCBLRl9TTEVFUEFCTEUpXG4gI2VuZGlmXG4gQlRGX0lEX0ZMQUdTKGZ1bmMsIF9fYnBmX3RyYXApXG4tQlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl9zdHJjbXApO1xuLUJURl9JRF9GTEFHUyhmdW5jLCBicGZfc3RyY2FzZWNtcCk7XG4tQlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl9zdHJuY2FzZWNtcCk7XG4tQlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl9zdHJjaHIpO1xuLUJURl9JRF9GTEFHUyhmdW5jLCBicGZfc3RyY2hybnVsKTtcbi1CVEZfSURfRkxBR1MoZnVuYywgYnBmX3N0cm5jaHIpO1xuLUJURl9JRF9GTEFHUyhmdW5jLCBicGZfc3RycmNocik7XG4tQlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl9zdHJsZW4pO1xuLUJURl9JRF9GTEFHUyhmdW5jLCBicGZfc3Rybmxlbik7XG4tQlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl9zdHJzcG4pO1xuLUJURl9JRF9GTEFHUyhmdW5jLCBicGZfc3RyY3Nwbik7XG4tQlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl9zdHJzdHIpO1xuLUJURl9JRF9GTEFHUyhmdW5jLCBicGZfc3RyY2FzZXN0cik7XG4tQlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl9zdHJuc3RyKTtcbi1CVEZfSURfRkxBR1MoZnVuYywgYnBmX3N0cm5jYXNlc3RyKTtcbiYjNDM7QlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl9zdHJjbXAsIEtGX1BFUkZNT04pO1xuJiM0MztCVEZfSURfRkxBR1MoZnVuYywgYnBmX3N0cmNhc2VjbXAsIEtGX1BFUkZNT04pO1xuJiM0MztCVEZfSURfRkxBR1MoZnVuYywgYnBmX3N0cm5jYXNlY21wLCBLRl9QRVJGTU9OKTtcbiYjNDM7QlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl9zdHJjaHIsIEtGX1BFUkZNT04pO1xuJiM0MztCVEZfSURfRkxBR1MoZnVuYywgYnBmX3N0cmNocm51bCwgS0ZfUEVSRk1PTik7XG4mIzQzO0JURl9JRF9GTEFHUyhmdW5jLCBicGZfc3RybmNociwgS0ZfUEVSRk1PTik7XG4mIzQzO0JURl9JRF9GTEFHUyhmdW5jLCBicGZfc3RycmNociwgS0ZfUEVSRk1PTik7XG4mIzQzO0JURl9JRF9GTEFHUyhmdW5jLCBicGZfc3RybGVuLCBLRl9QRVJGTU9OKTtcbiYjNDM7QlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl9zdHJubGVuLCBLRl9QRVJGTU9OKTtcbiYjNDM7QlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl9zdHJzcG4sIEtGX1BFUkZNT04pO1xuJiM0MztCVEZfSURfRkxBR1MoZnVuYywgYnBmX3N0cmNzcG4sIEtGX1BFUkZNT04pO1xuJiM0MztCVEZfSURfRkxBR1MoZnVuYywgYnBmX3N0cnN0ciwgS0ZfUEVSRk1PTik7XG4mIzQzO0JURl9JRF9GTEFHUyhmdW5jLCBicGZfc3RyY2FzZXN0ciwgS0ZfUEVSRk1PTik7XG4mIzQzO0JURl9JRF9GTEFHUyhmdW5jLCBicGZfc3RybnN0ciwgS0ZfUEVSRk1PTik7XG4mIzQzO0JURl9JRF9GTEFHUyhmdW5jLCBicGZfc3RybmNhc2VzdHIsIEtGX1BFUkZNT04pO1xuICNpZiBkZWZpbmVkKENPTkZJR19CUEZfTFNNKSBcdTAwMjZcdTAwMjYgZGVmaW5lZChDT05GSUdfQ0dST1VQUylcbiBCVEZfSURfRkxBR1MoZnVuYywgYnBmX2Nncm91cF9yZWFkX3hhdHRyLCBLRl9SQ1UpXG4gI2VuZGlmXG4tQlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl9zdHJlYW1fdnByaW50aywgS0ZfSU1QTElDSVRfQVJHUyB8IEtGX1NQSU5MT0NLX1NBRkUpXG4tQlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl9zdHJlYW1fcHJpbnRfc3RhY2ssIEtGX0lNUExJQ0lUX0FSR1MgfCBLRl9TUElOTE9DS19TQUZFKVxuJiM0MztCVEZfSURfRkxBR1MoZnVuYywgYnBmX3N0cmVhbV92cHJpbnRrLCBLRl9JTVBMSUNJVF9BUkdTIHwgS0ZfU1BJTkxPQ0tfU0FGRSB8IEtGX1BFUkZNT04pXG4mIzQzO0JURl9JRF9GTEFHUyhmdW5jLCBicGZfc3RyZWFtX3ByaW50X3N0YWNrLCBLRl9JTVBMSUNJVF9BUkdTIHwgS0ZfU1BJTkxPQ0tfU0FGRSB8IEtGX1BFUkZNT04pXG4gQlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl90YXNrX3dvcmtfc2NoZWR1bGVfc2lnbmFsLCBLRl9JTVBMSUNJVF9BUkdTKVxuIEJURl9JRF9GTEFHUyhmdW5jLCBicGZfdGFza193b3JrX3NjaGVkdWxlX3Jlc3VtZSwgS0ZfSU1QTElDSVRfQVJHUylcbiBCVEZfSURfRkxBR1MoZnVuYywgYnBmX2R5bnB0cl9mcm9tX2ZpbGUpXG5kaWZmIC0tZ2l0IGEva2VybmVsL2JwZi92ZXJpZmllci5jIGIva2VybmVsL2JwZi92ZXJpZmllci5jXG5pbmRleCA3MmEzZjU5OThkZDI3Li4zNjkyM2NlMDQyNzM0IDEwMDY0NFxuLS0tIGEva2VybmVsL2JwZi92ZXJpZmllci5jXG4mIzQzOyYjNDM7JiM0MzsgYi9rZXJuZWwvYnBmL3ZlcmlmaWVyLmNcbkBAIC02NDUzLDYgJiM0Mzs2NDUzLDE2IEBAIHN0YXRpYyBpbnQgY2hlY2tfbWVtX2FjY2VzcyhzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52LCBpbnQgaW5zbl9pZHgsIHN0cnVjdCBiXG4gXHRcdFx0cmV0dXJuIC1FQUNDRVM7XG4gXHRcdH1cbiBcbiYjNDM7XHRcdGlmIChyZG9ubHlfdW50cnVzdGVkIFx1MDAyNlx1MDAyNiAhZW52LVx1MDAzZWFsbG93X3B0cl9sZWFrcykge1xuJiM0MztcdFx0XHR2ZXJib3NlKGVudiwgXCYjMzQ7JXMgYWNjZXNzIGlzIGFsbG93ZWQgb25seSB0byBDQVBfUEVSRk1PTiBhbmQgQ0FQX1NZU19BRE1JTlxcblwmIzM0OyxcbiYjNDM7XHRcdFx0XHRyZWdfdHlwZV9zdHIoZW52LCByZWctXHUwMDNldHlwZSkpO1xuJiM0MztcdFx0XHRicGZfZGlhZ19wb2xpY3koXG4mIzQzO1x0XHRcdFx0ZW52LCBpbnNuX2lkeCwgXCYjMzQ7cmVhZCBmcm9tIHVudHJ1c3RlZCByZWFkLW9ubHkgbWVtb3J5XCYjMzQ7LFxuJiM0MztcdFx0XHRcdFwmIzM0O3RoZSBhY2Nlc3MgcmVxdWlyZXMgQ0FQX1BFUkZNT05cJiMzNDssXG4mIzQzO1x0XHRcdFx0XCYjMzQ7TG9hZCB0aGUgcHJvZ3JhbSB3aXRoIENBUF9QRVJGTU9OLCBvciBhdm9pZCBkZXJlZmVyZW5jaW5nIHVudHJ1c3RlZCBwb2ludGVycy5cJiMzNDspO1xuJiM0MztcdFx0XHRyZXR1cm4gLUVQRVJNO1xuJiM0MztcdFx0fVxuJiM0MztcbiBcdFx0LypcbiBcdFx0ICogQWNjZXNzZXMgdG8gdW50cnVzdGVkIFBUUl9UT19NRU0gYXJlIGRvbmUgdGhyb3VnaCBwcm9iZVxuIFx0XHQgKiBpbnN0cnVjdGlvbnMsIGhlbmNlIG5vIG5lZWQgdG8gY2hlY2sgYm91bmRzIGluIHRoYXQgY2FzZS5cbkBAIC0xMTM1Niw2ICYjNDM7MTEzNjYsMTEgQEAgc3RhdGljIGJvb2wgaXNfa2Z1bmNfZGVzdHJ1Y3RpdmUoc3RydWN0IGJwZl9jYWxsX2FyZ19tZXRhICptZXRhKVxuIFx0cmV0dXJuIG1ldGEtXHUwMDNla2Z1bmNfZmxhZ3MgXHUwMDI2IEtGX0RFU1RSVUNUSVZFO1xuIH1cbiBcbiYjNDM7c3RhdGljIGJvb2wgaXNfa2Z1bmNfcGVyZm1vbihzdHJ1Y3QgYnBmX2NhbGxfYXJnX21ldGEgKm1ldGEpXG4mIzQzO3tcbiYjNDM7XHRyZXR1cm4gbWV0YS1cdTAwM2VrZnVuY19mbGFncyBcdTAwMjYgS0ZfUEVSRk1PTjtcbiYjNDM7fVxuJiM0MztcbiBzdGF0aWMgYm9vbCBpc19rZnVuY19yY3Uoc3RydWN0IGJwZl9jYWxsX2FyZ19tZXRhICptZXRhKVxuIHtcbiBcdHJldHVybiBtZXRhLVx1MDAzZWtmdW5jX2ZsYWdzIFx1MDAyNiBLRl9SQ1U7XG5AQCAtMTM4MzQsNiAmIzQzOzEzODQ5LDE2IEBAIHN0YXRpYyBpbnQgY2hlY2tfa2Z1bmNfY2FsbChzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52LCBzdHJ1Y3QgYnBmX2luc24gKmluc24sXG4gXHRcdHJldHVybiAtRUFDQ0VTO1xuIFx0fVxuIFxuJiM0MztcdGlmIChpc19rZnVuY19wZXJmbW9uKFx1MDAyNm1ldGEpIFx1MDAyNlx1MDAyNiAhZW52LVx1MDAzZWFsbG93X3B0cl9sZWFrcykge1xuJiM0MztcdFx0dmVyYm9zZShlbnYsIFwmIzM0OyVzIGlzIGFsbG93ZWQgb25seSB0byBDQVBfUEVSRk1PTiBhbmQgQ0FQX1NZU19BRE1JTlxcblwmIzM0OyxcbiYjNDM7XHRcdFx0ZnVuY19uYW1lKTtcbiYjNDM7XHRcdG9wZXJhdGlvbiA9IGJwZl9kaWFnX2ZtdChlbnYsIFwmIzM0O2tmdW5jICVzXCYjMzQ7LCBmdW5jX25hbWUpO1xuJiM0MztcdFx0YnBmX2RpYWdfcG9saWN5KFxuJiM0MztcdFx0XHRlbnYsIGluc25faWR4LCBvcGVyYXRpb24sIFwmIzM0O3RoZSBrZnVuYyByZXF1aXJlcyBDQVBfUEVSRk1PTlwmIzM0OyxcbiYjNDM7XHRcdFx0XCYjMzQ7TG9hZCB0aGUgcHJvZ3JhbSB3aXRoIENBUF9QRVJGTU9OLCBvciBhdm9pZCB0aGUga2Z1bmMuXCYjMzQ7KTtcbiYjNDM7XHRcdHJldHVybiAtRVBFUk07XG4mIzQzO1x0fVxuJiM0MztcbiBcdHNsZWVwYWJsZSA9IGJwZl9pc19rZnVuY19zbGVlcGFibGUoXHUwMDI2bWV0YSk7XG4gXHRpZiAoc2xlZXBhYmxlIFx1MDAyNlx1MDAyNiAhaW5fc2xlZXBhYmxlKGVudikpIHtcbiBcdFx0dmVyYm9zZShlbnYsIFwmIzM0O3Byb2dyYW0gbXVzdCBiZSBzbGVlcGFibGUgdG8gY2FsbCBzbGVlcGFibGUga2Z1bmMgJXNcXG5cJiMzNDssIGZ1bmNfbmFtZSk7XG5kaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvdmVyaWZpZXIuYyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3ZlcmlmaWVyLmNcbmluZGV4IDY0YWM0OWFkNjdlNjMuLmVjOWUzOTA3Yzc1ZDYgMTAwNjQ0XG4tLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy92ZXJpZmllci5jXG4mIzQzOyYjNDM7JiM0MzsgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy92ZXJpZmllci5jXG5AQCAtNTMsNiAmIzQzOzUzLDcgQEBcbiAjaW5jbHVkZSBcJiMzNDt2ZXJpZmllcl9pdGVyYXRpbmdfY2FsbGJhY2tzLnNrZWwuaFwmIzM0O1xuICNpbmNsdWRlIFwmIzM0O3ZlcmlmaWVyX2plcV9pbmZlcl9ub3RfbnVsbC5za2VsLmhcJiMzNDtcbiAjaW5jbHVkZSBcJiMzNDt2ZXJpZmllcl9qaXRfY29udmVyZ2VuY2Uuc2tlbC5oXCYjMzQ7XG4mIzQzOyNpbmNsdWRlIFwmIzM0O3ZlcmlmaWVyX2tmdW5jX3BlcmZtb24uc2tlbC5oXCYjMzQ7XG4gI2luY2x1ZGUgXCYjMzQ7dmVyaWZpZXJfbGRfaW5kLnNrZWwuaFwmIzM0O1xuICNpbmNsdWRlIFwmIzM0O3ZlcmlmaWVyX2xkc3guc2tlbC5oXCYjMzQ7XG4gI2luY2x1ZGUgXCYjMzQ7dmVyaWZpZXJfbGVha19wdHIuc2tlbC5oXCYjMzQ7XG5AQCAtMjE2LDYgJiM0MzsyMTcsNyBAQCB2b2lkIHRlc3RfdmVyaWZpZXJfaW50X3B0cih2b2lkKSAgICAgICAgICAgICAgeyBSVU4odmVyaWZpZXJfaW50X3B0cik7IH1cbiB2b2lkIHRlc3RfdmVyaWZpZXJfaXRlcmF0aW5nX2NhbGxiYWNrcyh2b2lkKSAgeyBSVU4odmVyaWZpZXJfaXRlcmF0aW5nX2NhbGxiYWNrcyk7IH1cbiB2b2lkIHRlc3RfdmVyaWZpZXJfamVxX2luZmVyX25vdF9udWxsKHZvaWQpICAgeyBSVU4odmVyaWZpZXJfamVxX2luZmVyX25vdF9udWxsKTsgfVxuIHZvaWQgdGVzdF92ZXJpZmllcl9qaXRfY29udmVyZ2VuY2Uodm9pZCkgICAgICB7IFJVTih2ZXJpZmllcl9qaXRfY29udmVyZ2VuY2UpOyB9XG4mIzQzO3ZvaWQgdGVzdF92ZXJpZmllcl9rZnVuY19wZXJmbW9uKHZvaWQpICAgICAgICB7IFJVTih2ZXJpZmllcl9rZnVuY19wZXJmbW9uKTsgfVxuIHZvaWQgdGVzdF92ZXJpZmllcl9sb2FkX2FjcXVpcmUodm9pZCkgICAgICAgICB7IFJVTih2ZXJpZmllcl9sb2FkX2FjcXVpcmUpOyB9XG4gdm9pZCB0ZXN0X3ZlcmlmaWVyX2xkX2luZCh2b2lkKSAgICAgICAgICAgICAgIHsgUlVOKHZlcmlmaWVyX2xkX2luZCk7IH1cbiB2b2lkIHRlc3RfdmVyaWZpZXJfbGRzeCh2b2lkKSAgICAgICAgICAgICAgICAgIHsgUlVOKHZlcmlmaWVyX2xkc3gpOyB9XG5kaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3ZlcmlmaWVyX2tmdW5jX3BlcmZtb24uYyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy92ZXJpZmllcl9rZnVuY19wZXJmbW9uLmNcbm5ldyBmaWxlIG1vZGUgMTAwNjQ0XG5pbmRleCAwMDAwMDAwMDAwMDAwLi5jNmFkYmI0ODE2Y2VjXG4tLS0gL2Rldi9udWxsXG4mIzQzOyYjNDM7JiM0MzsgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvdmVyaWZpZXJfa2Z1bmNfcGVyZm1vbi5jXG5AQCAtMCwwICYjNDM7MSw2MyBAQFxuJiM0MzsvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMFxuJiM0MztcbiYjNDM7I2luY2x1ZGUgXHUwMDNjdm1saW51eC5oXHUwMDNlXG4mIzQzOyNpbmNsdWRlIFx1MDAzY2JwZi9icGZfaGVscGVycy5oXHUwMDNlXG4mIzQzOyNpbmNsdWRlIFwmIzM0O2JwZl9taXNjLmhcJiMzNDtcbiYjNDM7XG4mIzQzO3ZvaWQgKnVzZXJfcHRyO1xuJiM0MztjaGFyIGR5bnB0cl9idWZbOF07XG4mIzQzO3U2NCBrYWRkcjtcbiYjNDM7XG4mIzQzO1NFQyhcJiMzNDtzb2NrZXRcJiMzNDspXG4mIzQzO19fc3VjY2Vzc1xuJiM0MztfX2NhcHNfdW5wcml2KENBUF9CUEYpXG4mIzQzO19fZmFpbHVyZV91bnByaXZcbiYjNDM7X19tc2dfdW5wcml2KFwmIzM0O2JwZl9yZG9ubHlfY2FzdCBpcyBhbGxvd2VkIG9ubHkgdG8gQ0FQX1BFUkZNT04gYW5kIENBUF9TWVNfQURNSU5cJiMzNDspXG4mIzQzO2ludCByZG9ubHlfY2FzdF9ub3BlcmZtb24odm9pZCAqY3R4KVxuJiM0Mzt7XG4mIzQzO1x0Y2hhciAqcCA9IGJwZl9yZG9ubHlfY2FzdCgwLCAwKTtcbiYjNDM7XG4mIzQzO1x0cmV0dXJuIHBbMHg3ZmZmXTtcbiYjNDM7fVxuJiM0MztcbiYjNDM7U0VDKFwmIzM0O3NvY2tldFwmIzM0OylcbiYjNDM7X19zdWNjZXNzXG4mIzQzO19fY2Fwc191bnByaXYoQ0FQX0JQRilcbiYjNDM7X19mYWlsdXJlX3VucHJpdlxuJiM0MztfX21zZ191bnByaXYoXCYjMzQ7YnBmX3Byb2JlX3JlYWRfa2VybmVsX2R5bnB0ciBpcyBhbGxvd2VkIG9ubHkgdG8gQ0FQX1BFUkZNT04gYW5kIENBUF9TWVNfQURNSU5cJiMzNDspXG4mIzQzO2ludCBwcm9iZV9yZWFkX2tlcm5lbF9keW5wdHJfbm9wZXJmbW9uKHZvaWQgKmN0eClcbiYjNDM7e1xuJiM0MztcdHN0cnVjdCBicGZfZHlucHRyIGRwdHI7XG4mIzQzO1xuJiM0MztcdGJwZl9keW5wdHJfZnJvbV9tZW0oZHlucHRyX2J1Ziwgc2l6ZW9mKGR5bnB0cl9idWYpLCAwLCBcdTAwMjZkcHRyKTtcbiYjNDM7XHRicGZfcHJvYmVfcmVhZF9rZXJuZWxfZHlucHRyKFx1MDAyNmRwdHIsIDAsIHNpemVvZihkeW5wdHJfYnVmKSwgdXNlcl9wdHIpO1xuJiM0MztcdHJldHVybiAwO1xuJiM0Mzt9XG4mIzQzO1xuJiM0MztTRUMoXCYjMzQ7c29ja2V0XCYjMzQ7KVxuJiM0MztfX3N1Y2Nlc3NcbiYjNDM7X19jYXBzX3VucHJpdihDQVBfQlBGKVxuJiM0MztfX2ZhaWx1cmVfdW5wcml2XG4mIzQzO19fbXNnX3VucHJpdihcJiMzNDticGZfc3RyZWFtX3ZwcmludGsgaXMgYWxsb3dlZCBvbmx5IHRvIENBUF9QRVJGTU9OIGFuZCBDQVBfU1lTX0FETUlOXCYjMzQ7KVxuJiM0MztpbnQgc3RyZWFtX3ZwcmludGtfbm9wZXJmbW9uKHZvaWQgKmN0eClcbiYjNDM7e1xuJiM0MztcdGJwZl9zdHJlYW1fcHJpbnRrKEJQRl9TVERPVVQsIFwmIzM0OyVwQlwmIzM0OywgKHZvaWQgKilrYWRkcik7XG4mIzQzO1x0cmV0dXJuIDA7XG4mIzQzO31cbiYjNDM7XG4mIzQzO19fd2VhayBpbnQgc3VicHJvZ191bnRydXN0ZWRfcmVhZCh2b2lkICpwIF9fYXJnX3VudHJ1c3RlZClcbiYjNDM7e1xuJiM0MztcdHJldHVybiAqKGNoYXIgKilwO1xuJiM0Mzt9XG4mIzQzO1xuJiM0MztTRUMoXCYjMzQ7c29ja2V0XCYjMzQ7KVxuJiM0MztfX3N1Y2Nlc3NcbiYjNDM7X19jYXBzX3VucHJpdihDQVBfQlBGKVxuJiM0MztfX2ZhaWx1cmVfdW5wcml2XG4mIzQzO19fbXNnX3VucHJpdihcJiMzNDtyZG9ubHlfdW50cnVzdGVkX21lbSBhY2Nlc3MgaXMgYWxsb3dlZCBvbmx5IHRvIENBUF9QRVJGTU9OIGFuZCBDQVBfU1lTX0FETUlOXCYjMzQ7KVxuJiM0MztpbnQgYXJnX3VudHJ1c3RlZF9yZWFkX25vcGVyZm1vbih2b2lkICpjdHgpXG4mIzQzO3tcbiYjNDM7XHRyZXR1cm4gc3VicHJvZ191bnRydXN0ZWRfcmVhZCgwKTtcbiYjNDM7fVxuJiM0MztcbiYjNDM7Y2hhciBfbGljZW5zZVtdIFNFQyhcJiMzNDtsaWNlbnNlXCYjMzQ7KSA9IFwmIzM0O0dQTFwmIzM0OztcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMCAxNjoxNTwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4xbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5jb3JlPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtCUEZfU1lTQ0FMTCYjMzQ7LAogICAgJiMzNDtCUEZfRVZFTlRTJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7Y2hlY2tfa2Z1bmNfY2FsbCYjMzQ7LAogICAgJiMzNDtjaGVja19tZW1fYWNjZXNzJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGludHJvZHVjZXMgYSBuZXcgS0ZfUEVSRk1PTiBrZnVuYyBmbGFnIGFuZCBlbmZvcmNlcyBDQVBfUEVSRk1PTi9DQVBfU1lTX0FETUlOIHBlcm1pc3Npb24gY2hlY2tzIGluIHRoZSBCUEYgdmVyaWZpZXIgKGNoZWNrX2tmdW5jX2NhbGwgYW5kIGNoZWNrX21lbV9hY2Nlc3MpLiBTaW5jZSB0aGVzZSBjaGFuZ2VzIG1vZGlmeSByZWFjaGFibGUgQlBGIHZlcmlmaWVyIGxvZ2ljIGV4ZWN1dGVkIGR1cmluZyBCUEYgcHJvZ3JhbSB2ZXJpZmljYXRpb24gdmlhIHN5c19icGYsIHRoZXkgd2FycmFudCBmdXp6aW5nLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lciBhbmQgc2VjdXJpdHkgZW5naW5lZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZXZhbHVhdGUgd2hldGhlciBpdCB3YXJyYW50cyBmdXp6aW5nIHdpdGggc3l6a2FsbGVyLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiBpbnRlcm5hbCBhc3N1bXB0aW9ucy4gWW91IG11c3QgYWN0aXZlbHkgdXNlIHlvdXIgY29kZSBhY2Nlc3MKdG9vbHMgdG8gaW5zcGVjdCB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlLCBjYWxsZXJzLCBhbmQgc3Vycm91bmRpbmcgY29udGV4dC4KCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CjEuIENPUkUgVFJJQUdFIFBISUxPU09QSFkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KVGhlIGdvYWwgb2YgcGF0Y2ggZnV6emluZyBpcyB0byBkaXNjb3ZlciBjcmFzaGVzLCByZWdyZXNzaW9ucywgZXhwb3NlZCBsYXRlbnQgYnVncywKYW5kIG5ld2x5IHRyaWdnZXJlZCBhc3NlcnRpb25zIGludHJvZHVjZWQgYnkgdGhlIHBhdGNoIHNlcmllcy4KCi0gUkVBQ0hBQklMSVRZIElTIFRIRSBQUklNQVJZIEdBVEU6CiAgRnV6emluZyBjYW4gb25seSBkaXNjb3ZlciBidWdzIGluIGNvZGUgdGhhdCBjYW4gYWN0dWFsbHkgZXhlY3V0ZSBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZAogIGVudmlyb25tZW50cyAoR0NFIG9yIFFFTVUsIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBkZXZpY2VzIGxpa2UgVVNCIGdhZGdldHMsIG5ldGRldiwgdHVuL3RhcCkuCiAgSWYgdGhlIG1vZGlmaWVkIGNvZGUgaXMgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIChzZWUgU2VjdGlvbiAyKSwgaXQgTVVTVCBOT1QgYmUgZnV6emVkLAogIHJlZ2FyZGxlc3Mgb2Ygd2hldGhlciBpdCBhZGRzIGFzc2VydGlvbnMgb3IgY29tcGxleCBsb2dpYy4KCi0gRE8gTk9UIEJMSU5ETFkgVFJVU1QgJiMzNDtOTyBGVU5DVElPTkFMIENIQU5HRSYjMzQ7IChORkNJKSBPUiAmIzM0O1JFRkFDVE9SSU5HJiMzNDsgQ0xBSU1TOgogIFBhdGNoIGF1dGhvcnMgcm91dGluZWx5IGxhYmVsIGNoYW5nZXMgYXMgJiMzNDtjbGVhbnVwcyYjMzQ7LCAmIzM0O3JlZmFjdG9yaW5ncyYjMzQ7LCBvciBzdGF0ZQogICYjMzQ7Tm8gZnVuY3Rpb25hbCBjaGFuZ2UgaW50ZW5kZWQmIzM0Oy4gRG8gTk9UIHRha2UgdGhlc2UgY2xhaW1zIGF0IGZhY2UgdmFsdWUuCiAgQ29kZSByZWZhY3RvcmluZ3MgdGhhdCByZWFycmFuZ2UgbG9naWMsIGludHJvZHVjZSBoZWxwZXIgZnVuY3Rpb25zLCBvciBhbHRlciBzdGF0ZSBtYW5hZ2VtZW50CiAgaW4gY29yZSBzdWJzeXN0ZW1zIGZyZXF1ZW50bHkgaW50cm9kdWNlIHN1YnRsZSBzZW1hbnRpYyBzaGlmdHMgb3IgdW5jb3ZlciBsYXRlbnQga2VybmVsIGJ1Z3MuCiAgSWYgcmVhY2hhYmxlIGV4ZWN1dGFibGUgY29kZSBpcyBtb2RpZmllZCBvciByZWZhY3RvcmVkLCBpdCBNVVNUIGJlIGZ1enplZC4KCi0gTkVXIE9SIE1PRElGSUVEIEFTU0VSVElPTlMgSU4gUkVBQ0hBQkxFIENPREUgTVVTVCBCRSBGVVpaRUQ6CiAgV2hlbiBhIHBhdGNoIGludHJvZHVjZXMgb3IgbW9kaWZpZXMgcnVudGltZSBjaGVja3Mgb3IgYXNzZXJ0aW9ucyAoZS5nLiwgV0FSTl9PTiosIFZNX1dBUk5fT04qLAogIEJVR19PTiosIGxvY2tkZXBfYXNzZXJ0KikgaW4gcmVhY2hhYmxlIGNvZGUgcGF0aHMsIGl0IGVuZm9yY2VzIG5ldyBvciBzdHJpY3RlciBpbnZhcmlhbnRzLgogIEV2ZW4gaWYgdGhlIGF1dGhvciBiZWxpZXZlcyB0aGUgaW52YXJpYW50IGFsd2F5cyBob2xkcywgZnV6emluZyBpcyBlc3NlbnRpYWwgdG8gdmVyaWZ5IHdoZXRoZXIKICBhbiB1bnVzdWFsIHNlcXVlbmNlIG9mIG9wZXJhdGlvbnMgY2FuIHZpb2xhdGUgaXQuCgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQoyLiBXSEVOIFRPIFJFVFVSTiBXb3J0aEZ1enppbmc9ZmFsc2UgKE5FR0FUSVZFIENSSVRFUklBKQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIE9OTFkgSUYgYWxsIG1vZGlmaWVkIGNvZGUgZmFsbHMgc3RyaWN0bHkgaW50byBvbmUgb3IgbW9yZSBvZiB0aGVzZSBjYXRlZ29yaWVzOgoKLSBOb24ta2VybmVsIGFuZCBub24tZXhlY3V0YWJsZSBjaGFuZ2VzOgogICogTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgY29tbWVudHMsIG9yIHNwZWxsaW5nIGZpeGVzLgogICogVXNlci1zcGFjZSBkaXJlY3Rvcmllcywgc2VsZi10ZXN0cywgc2FtcGxlcywgb3Igc2NyaXB0cyAoZS5nLiwgdG9vbHMvLCBzYW1wbGVzLywgc2NyaXB0cy8sIHVzci8pCiAgICB0aGF0IGRvIG5vdCBhZmZlY3QgdGhlIGNvbXBpbGVkIGtlcm5lbCBpbWFnZSAodm1saW51eCkgb3Iga2VybmVsIG1vZHVsZXMuCiAgKiBQdXJlbHkgZGVjb3JhdGl2ZSBsb2dnaW5nIChlLmcuLCBtZXNzYWdlIHN0cmluZ3MgaW4gcHJfZXJyLCBwcmludGssIGRldl9pbmZvKSBvciB0cmFjZXBvaW50cwogICAgdGhhdCBkbyBub3QgYWx0ZXIgY29udHJvbCBmbG93IG9yIGRhdGEgc3RydWN0dXJlcy4KICAqIEJ1aWxkIHN5c3RlbSBvciBLY29uZmlnIGNoYW5nZXMgdGhhdCBkbyBub3QgYWx0ZXIgY29tcGlsZWQgQyBsb2dpYy4KLSBTdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgaGFyZHdhcmU6CiAgKiBWZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2hlcywgU21hcnROSUNzLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsCiAgICBpb25pYywgYW1kZ3B1KSByZXF1aXJpbmcgcGh5c2ljYWwgQVNJQy9QQ0llIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLgotIFVucmVhY2hhYmxlIGV4ZWN1dGlvbiBwYXRoczoKICAqIERyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKC5yZW1vdmUsIC5zaHV0ZG93biwgcGNpX3VucmVnaXN0ZXJfZHJpdmVyKSBleGVjdXRlZCBvbmx5IGR1cmluZwogICAgcGh5c2ljYWwgUENJIGhvdC11bnBsdWcgb3IgbWFudWFsIHN5c2ZzIGRyaXZlciB1bmJpbmRpbmcuCiAgKiBDb2RlIHBhdGhzIGV4Y2x1c2l2ZSB0byBhcmNoaXRlY3R1cmVzIG90aGVyIHRoYW4gdGhlIHRhcmdldCBhcmNoaXRlY3R1cmUuCgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQozLiBXSEVOIFRPIFJFVFVSTiBXb3J0aEZ1enppbmc9dHJ1ZSAoUE9TSVRJVkUgQ1JJVEVSSUEpCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZSB3aGVuZXZlciB0aGUgcGF0Y2ggdG91Y2hlcyByZWFjaGFibGUgZXhlY3V0YWJsZSBjb2RlLCBpbmNsdWRpbmc6Ci0gQ29yZSBTdWJzeXN0ZW1zOgogICogQW55IGxvZ2ljIG1vZGlmaWNhdGlvbnMgaW4gbWVtb3J5IG1hbmFnZW1lbnQgKG1tLyksIHN5bmNocm9uaXphdGlvbi9sb2NraW5nIChrZXJuZWwvbG9ja2luZy8pLAogICAgQlBGLCBzY2hlZHVsZXIsIGNvcmUgbmV0d29ya2luZywgVkZTLCBvciBzeXNjYWxsIGhhbmRsaW5nLgotIFJlZmFjdG9yaW5ncyBhbmQgQ29kZSBDbGVhbnVwczoKICAqIEFueSByZXN0cnVjdHVyaW5nIG9mIHJlYWNoYWJsZSBkYXRhIHN0cnVjdHVyZXMsIGhlbHBlciBhYnN0cmFjdGlvbnMsIG9yIGFsZ29yaXRobSBmbG93cy4KLSBSdW50aW1lIEFzc2VydGlvbnMgYW5kIERlZmVuc2l2ZSBDaGVja3M6CiAgKiBBbnkgaW50cm9kdWN0aW9uIG9yIGFsdGVyYXRpb24gb2YgYXNzZXJ0aW9ucyAoV0FSTl9PTiosIFZNX1dBUk5fT04qLCBCVUdfT04qLCBldGMuKSBpbiByZWFjaGFibGUgcGF0aHMuCi0gUmVhY2hhYmxlIERyaXZlcnMgYW5kIFByb3RvY29sczoKICAqIERyaXZlcnMgYWNjZXNzaWJsZSB2aWEgdmlydHVhbCBidXNlcyAodmlydGlvLCBVU0IgZ2FkZ2V0LCBsb29wYmFjaywgbmV0bGluaywgYmluZGVyLCBzb2NrZXRzLCBldGMuKS4KCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CjQuIEVYVFJBQ1RJTkcgRm9jdXNTeW1ib2xzIChQUkVWRU5USU5HIERJTFVUSU9OKQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpXaGVuIFdvcnRoRnV6emluZz10cnVlLCB5b3UgbXVzdCBleHRyYWN0IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgaW50byBGb2N1c1N5bWJvbHMgdG8gZ3VpZGUgdGhlIGZ1enplcjoKCi0gQVZPSUQgVUJJUVVJVE9VUyBMSUZFQ1lDTEUgSE9ULVBBVEhTOgogIERvIE5PVCBsaXN0IGdlbmVyaWMsIHViaXF1aXRvdXMgZnVuY3Rpb25zIGNhbGxlZCBieSBhbG1vc3QgZXZlcnkgcHJvZ3JhbSBpbiB0aGUgY29ycHVzCiAgKGluY2x1ZGluZywgYnV0IG5vdCBsaW1pdGVkIHRvOiBnZW5lcmFsIG1lbW9yeSBhbGxvY2F0b3JzIGFuZCBkZWFsbG9jYXRvcnMsIHBhZ2UgZmF1bHQKICBhbmQgdHJhcCBoYW5kbGVycywgb3IgY29yZSBzeW5jaHJvbml6YXRpb24gcHJpbWl0aXZlczsgdGhpcyBpcyBub3QgYW4gZXhoYXVzdGl2ZSBsaXN0KS4KICBMaXN0aW5nIHViaXF1aXRvdXMgZnVuY3Rpb25zIGNhdXNlcyB0aGUgZnV6emVyIHRvIGNsYXNzaWZ5IHRob3VzYW5kcyBvZiB1bnJlbGF0ZWQgdGVzdHMgYXMgJiMzNDtmb2N1c2VkJiMzNDssCiAgd2hpY2ggc2V2ZXJlbHkgZGlsdXRlcyBmdXp6aW5nIGVmZm9ydCBhd2F5IGZyb20gdGhlIGFjdHVhbCBjaGFuZ2VzLgoKLSBUQVJHRVQgU1BFQ0lGSUMgRkVBVFVSRSBMT0dJQyBBTkQgRU5UUllQT0lOVFM6CiAgTGlzdCBmdW5jdGlvbnMgdGhhdCBzcGVjaWZpY2FsbHkgaW1wbGVtZW50IHRoZSBsb2dpYyBiZWluZyBhZGRlZCBvciBhbHRlcmVkLCBvciBkaXJlY3QgQVBJIGVudHJ5cG9pbnRzCiAgZm9yIHRoZSBzdWJzeXN0ZW0gZmVhdHVyZSB1bmRlciByZXZpZXcuCgotIEhBTkRMSU5HIFNUQVRJQyBJTkxJTkUgRlVOQ1RJT05TIElOIEhFQURFUlMgKC5oKToKICBDb21waWxlci1pbmxpbmVkIHN0YXRpYyBmdW5jdGlvbnMgKHN1Y2ggYXMgc3RhdGljIGlubGluZXMgaW4gbW0vKi5oIG9yIGluY2x1ZGUvbGludXgvKi5oKSBsYWNrCiAgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcyBpbiB2bWxpbnV4IGFuZCBjYW5ub3QgYmUgdGFyZ2V0ZWQgZGlyZWN0bHkgYnkgc3ltYm9sIGNvdmVyYWdlIGZpbHRlcnMuCiAgSWYgdGhlIGNoYW5nZXMgYXJlIHByaW1hcmlseSBpbiBzdGF0aWMgaW5saW5lIGhlbHBlcnMsIGlkZW50aWZ5IG5vbi1zdGF0aWMsIGZlYXR1cmUtc3BlY2lmaWMgY2FsbGVyCiAgZnVuY3Rpb25zIGluIC5jIGZpbGVzIHRoYXQgZXhlcmNpc2UgdGhlbSAoYXZvaWRpbmcgdWJpcXVpdG91cyBsaWZlY3ljbGUgd3JhcHBlcnMpLgoKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KNS4gSURFTlRJRllJTkcgRW5hYmxlQ29uZmlncwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IGNvbXBpbGUgYW5kIHJlYWNoIHRoZSBtb2RpZmllZCBjb2RlOgotIEluc3BlY3QgS2NvbmZpZyBmaWxlcyBhbmQgI2lmZGVmIGd1YXJkczsgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCi0gQ2hlY2sgJiMzNDtkZXBlbmRzIG9uJiMzNDsgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzIG5lZWRlZC4KLSBTdHJpcCBhbnkgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+VGFyZ2V0IGFyY2hpdGVjdHVyZTogYW1kNjQKCkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgNDc1NDdlZTdhNTQwOTIzZTYyMTlmNDViZDhiMjZlMjlkYThjMWY1MApBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBUaHUgU2VwIDEwIDE2OjE1OjQyIDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9icGYva2Z1bmNzLnJzdCBiL0RvY3VtZW50YXRpb24vYnBmL2tmdW5jcy5yc3QKaW5kZXggODVmNzNlMGJiZDBmZi4uNjY5MWZlOGEzMmMzZCAxMDA2NDQKLS0tIGEvRG9jdW1lbnRhdGlvbi9icGYva2Z1bmNzLnJzdAomIzQzOyYjNDM7JiM0MzsgYi9Eb2N1bWVudGF0aW9uL2JwZi9rZnVuY3MucnN0CkBAIC00ODYsNiAmIzQzOzQ4NiwxNiBAQCBFeGFtcGxlIHVzYWdlIGluIEJQRiBwcm9ncmFtOgogCS8qIG5vdGUgdGhhdCB0aGUgbGFzdCBhcmd1bWVudCBpcyBvbWl0dGVkICovCiAgICAgICAgIGJwZl90YXNrX3dvcmtfc2NoZWR1bGVfc2lnbmFsKHRhc2ssICZhbXA7d29yay0mZ3Q7dHcsICZhbXA7YXJybWFwLCB0YXNrX3dvcmtfY2FsbGJhY2spOwogCiYjNDM7Mi41LjEwIEtGX1BFUkZNT04gZmxhZwomIzQzOy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KJiM0MzsKJiM0MztUaGUgS0ZfUEVSRk1PTiBmbGFnIGlzIHVzZWQgZm9yIGtmdW5jcyB0aGF0IGNhbiBleHBvc2Uga2VybmVsIG1lbW9yeSBvciBrZXJuZWwKJiM0MzthZGRyZXNzZXMgdG8gdGhlIEJQRiBwcm9ncmFtLCBmb3IgZXhhbXBsZSBieSByZWFkaW5nIHRocm91Z2ggYSBwb2ludGVyIHRoYXQgdGhlCiYjNDM7dmVyaWZpZXIgZG9lcyBub3QgY2hlY2suIENhbGxpbmcgc3VjaCBhIGtmdW5jIHJlcXVpcmVzIENBUF9QRVJGTU9OLCBvcgomIzQzO0NBUF9TWVNfQURNSU4sIGluIHRoZSBzYW1lIHdheSB0aGF0IHRoZSBlcXVpdmFsZW50IEJQRiBoZWxwZXJzIGFyZSBnYXRlZCBpbgomIzQzO2JwZl9iYXNlX2Z1bmNfcHJvdG8oKS4gQSBwcm9ncmFtIGxvYWRlZCB3aXRoIENBUF9CUEYgYWxvbmUgaXMgcmVqZWN0ZWQgYXQgbG9hZAomIzQzO3RpbWUuCiYjNDM7CiAyLjYgUmVnaXN0ZXJpbmcgdGhlIGtmdW5jcwogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51eC9idGYuaCBiL2luY2x1ZGUvbGludXgvYnRmLmgKaW5kZXggODlkNWE1YzRmMTE3MS4uN2M2MmVhMTdiMTE2MyAxMDA2NDQKLS0tIGEvaW5jbHVkZS9saW51eC9idGYuaAomIzQzOyYjNDM7JiM0MzsgYi9pbmNsdWRlL2xpbnV4L2J0Zi5oCkBAIC04MCw2ICYjNDM7ODAsNyBAQAogI2RlZmluZSBLRl9BUkVOQV9BUkcyICAgKDEgJmx0OyZsdDsgMTUpIC8qIGtmdW5jIHRha2VzIGFuIGFyZW5hIHBvaW50ZXIgYXMgaXRzIHNlY29uZCBhcmd1bWVudCAqLwogI2RlZmluZSBLRl9JTVBMSUNJVF9BUkdTICgxICZsdDsmbHQ7IDE2KSAvKiBrZnVuYyBoYXMgaW1wbGljaXQgYXJndW1lbnRzIHN1cHBsaWVkIGJ5IHRoZSB2ZXJpZmllciAqLwogI2RlZmluZSBLRl9TUElOTE9DS19TQUZFICgxICZsdDsmbHQ7IDE3KSAvKiBrZnVuYyBpcyBhbGxvd2VkIGluc2lkZSBicGZfc3Bpbl9sb2NrLWVkIHJlZ2lvbiAqLwomIzQzOyNkZWZpbmUgS0ZfUEVSRk1PTiAgICAgICgxICZsdDsmbHQ7IDE4KSAvKiBrZnVuYyByZXF1aXJlcyBDQVBfUEVSRk1PTiAqLwogCiAvKgogICogVGFnIG1hcmtpbmcgYSBrZXJuZWwgZnVuY3Rpb24gYXMgYSBrZnVuYy4gVGhpcyBpcyBtZWFudCB0byBtaW5pbWl6ZSB0aGUKZGlmZiAtLWdpdCBhL2tlcm5lbC9icGYvaGVscGVycy5jIGIva2VybmVsL2JwZi9oZWxwZXJzLmMKaW5kZXggYjNjYzVjOGZjODc1Ni4uOGEwZWViNGY2MjM2ZCAxMDA2NDQKLS0tIGEva2VybmVsL2JwZi9oZWxwZXJzLmMKJiM0MzsmIzQzOyYjNDM7IGIva2VybmVsL2JwZi9oZWxwZXJzLmMKQEAgLTQ4ODMsNyAmIzQzOzQ4ODMsNyBAQCBCVEZfSUQoZnVuYywgYnBmX2Nncm91cF9yZWxlYXNlX2R0b3IpCiAKIEJURl9LRlVOQ1NfU1RBUlQoY29tbW9uX2J0Zl9pZHMpCiBCVEZfSURfRkxBR1MoZnVuYywgYnBmX2Nhc3RfdG9fa2Vybl9jdHgsIEtGX0ZBU1RDQUxMKQotQlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl9yZG9ubHlfY2FzdCwgS0ZfRkFTVENBTEwpCiYjNDM7QlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl9yZG9ubHlfY2FzdCwgS0ZfRkFTVENBTEwgfCBLRl9QRVJGTU9OKQogQlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl9yY3VfcmVhZF9sb2NrKQogQlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl9yY3VfcmVhZF91bmxvY2spCiBCVEZfSURfRkxBR1MoZnVuYywgYnBmX2R5bnB0cl9zbGljZSwgS0ZfUkVUX05VTEwpCkBAIC00OTIwLDExICYjNDM7NDkyMCwxMSBAQCBCVEZfSURfRkxBR1MoZnVuYywgYnBmX3dxX3NldF9jYWxsYmFjaywgS0ZfSU1QTElDSVRfQVJHUykKIEJURl9JRF9GTEFHUyhmdW5jLCBicGZfd3Ffc3RhcnQpCiBCVEZfSURfRkxBR1MoZnVuYywgYnBmX3ByZWVtcHRfZGlzYWJsZSkKIEJURl9JRF9GTEFHUyhmdW5jLCBicGZfcHJlZW1wdF9lbmFibGUpCi1CVEZfSURfRkxBR1MoZnVuYywgYnBmX2l0ZXJfYml0c19uZXcsIEtGX0lURVJfTkVXKQomIzQzO0JURl9JRF9GTEFHUyhmdW5jLCBicGZfaXRlcl9iaXRzX25ldywgS0ZfSVRFUl9ORVcgfCBLRl9QRVJGTU9OKQogQlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl9pdGVyX2JpdHNfbmV4dCwgS0ZfSVRFUl9ORVhUIHwgS0ZfUkVUX05VTEwpCiBCVEZfSURfRkxBR1MoZnVuYywgYnBmX2l0ZXJfYml0c19kZXN0cm95LCBLRl9JVEVSX0RFU1RST1kpCi1CVEZfSURfRkxBR1MoZnVuYywgYnBmX2NvcHlfZnJvbV91c2VyX3N0ciwgS0ZfU0xFRVBBQkxFKQotQlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl9jb3B5X2Zyb21fdXNlcl90YXNrX3N0ciwgS0ZfU0xFRVBBQkxFKQomIzQzO0JURl9JRF9GTEFHUyhmdW5jLCBicGZfY29weV9mcm9tX3VzZXJfc3RyLCBLRl9TTEVFUEFCTEUgfCBLRl9QRVJGTU9OKQomIzQzO0JURl9JRF9GTEFHUyhmdW5jLCBicGZfY29weV9mcm9tX3VzZXJfdGFza19zdHIsIEtGX1NMRUVQQUJMRSB8IEtGX1BFUkZNT04pCiBCVEZfSURfRkxBR1MoZnVuYywgYnBmX2dldF9rbWVtX2NhY2hlKQogQlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl9pdGVyX2ttZW1fY2FjaGVfbmV3LCBLRl9JVEVSX05FVyB8IEtGX1NMRUVQQUJMRSkKIEJURl9JRF9GTEFHUyhmdW5jLCBicGZfaXRlcl9rbWVtX2NhY2hlX25leHQsIEtGX0lURVJfTkVYVCB8IEtGX1JFVF9OVUxMIHwgS0ZfU0xFRVBBQkxFKQpAQCAtNDkzMiwxNCAmIzQzOzQ5MzIsMTQgQEAgQlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl9pdGVyX2ttZW1fY2FjaGVfZGVzdHJveSwgS0ZfSVRFUl9ERVNUUk9ZIHwgS0ZfU0xFRVBBQkxFKQogQlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl9sb2NhbF9pcnFfc2F2ZSkKIEJURl9JRF9GTEFHUyhmdW5jLCBicGZfbG9jYWxfaXJxX3Jlc3RvcmUpCiAjaWZkZWYgQ09ORklHX0JQRl9FVkVOVFMKLUJURl9JRF9GTEFHUyhmdW5jLCBicGZfcHJvYmVfcmVhZF91c2VyX2R5bnB0cikKLUJURl9JRF9GTEFHUyhmdW5jLCBicGZfcHJvYmVfcmVhZF9rZXJuZWxfZHlucHRyKQotQlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl9wcm9iZV9yZWFkX3VzZXJfc3RyX2R5bnB0cikKLUJURl9JRF9GTEFHUyhmdW5jLCBicGZfcHJvYmVfcmVhZF9rZXJuZWxfc3RyX2R5bnB0cikKLUJURl9JRF9GTEFHUyhmdW5jLCBicGZfY29weV9mcm9tX3VzZXJfZHlucHRyLCBLRl9TTEVFUEFCTEUpCi1CVEZfSURfRkxBR1MoZnVuYywgYnBmX2NvcHlfZnJvbV91c2VyX3N0cl9keW5wdHIsIEtGX1NMRUVQQUJMRSkKLUJURl9JRF9GTEFHUyhmdW5jLCBicGZfY29weV9mcm9tX3VzZXJfdGFza19keW5wdHIsIEtGX1NMRUVQQUJMRSkKLUJURl9JRF9GTEFHUyhmdW5jLCBicGZfY29weV9mcm9tX3VzZXJfdGFza19zdHJfZHlucHRyLCBLRl9TTEVFUEFCTEUpCiYjNDM7QlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl9wcm9iZV9yZWFkX3VzZXJfZHlucHRyLCBLRl9QRVJGTU9OKQomIzQzO0JURl9JRF9GTEFHUyhmdW5jLCBicGZfcHJvYmVfcmVhZF9rZXJuZWxfZHlucHRyLCBLRl9QRVJGTU9OKQomIzQzO0JURl9JRF9GTEFHUyhmdW5jLCBicGZfcHJvYmVfcmVhZF91c2VyX3N0cl9keW5wdHIsIEtGX1BFUkZNT04pCiYjNDM7QlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl9wcm9iZV9yZWFkX2tlcm5lbF9zdHJfZHlucHRyLCBLRl9QRVJGTU9OKQomIzQzO0JURl9JRF9GTEFHUyhmdW5jLCBicGZfY29weV9mcm9tX3VzZXJfZHlucHRyLCBLRl9TTEVFUEFCTEUgfCBLRl9QRVJGTU9OKQomIzQzO0JURl9JRF9GTEFHUyhmdW5jLCBicGZfY29weV9mcm9tX3VzZXJfc3RyX2R5bnB0ciwgS0ZfU0xFRVBBQkxFIHwgS0ZfUEVSRk1PTikKJiM0MztCVEZfSURfRkxBR1MoZnVuYywgYnBmX2NvcHlfZnJvbV91c2VyX3Rhc2tfZHlucHRyLCBLRl9TTEVFUEFCTEUgfCBLRl9QRVJGTU9OKQomIzQzO0JURl9JRF9GTEFHUyhmdW5jLCBicGZfY29weV9mcm9tX3VzZXJfdGFza19zdHJfZHlucHRyLCBLRl9TTEVFUEFCTEUgfCBLRl9QRVJGTU9OKQogI2VuZGlmCiAjaWZkZWYgQ09ORklHX0RNQV9TSEFSRURfQlVGRkVSCiBCVEZfSURfRkxBR1MoZnVuYywgYnBmX2l0ZXJfZG1hYnVmX25ldywgS0ZfSVRFUl9ORVcgfCBLRl9TTEVFUEFCTEUpCkBAIC00OTQ3LDI2ICYjNDM7NDk0NywyNiBAQCBCVEZfSURfRkxBR1MoZnVuYywgYnBmX2l0ZXJfZG1hYnVmX25leHQsIEtGX0lURVJfTkVYVCB8IEtGX1JFVF9OVUxMIHwgS0ZfU0xFRVBBQgogQlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl9pdGVyX2RtYWJ1Zl9kZXN0cm95LCBLRl9JVEVSX0RFU1RST1kgfCBLRl9TTEVFUEFCTEUpCiAjZW5kaWYKIEJURl9JRF9GTEFHUyhmdW5jLCBfX2JwZl90cmFwKQotQlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl9zdHJjbXApOwotQlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl9zdHJjYXNlY21wKTsKLUJURl9JRF9GTEFHUyhmdW5jLCBicGZfc3RybmNhc2VjbXApOwotQlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl9zdHJjaHIpOwotQlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl9zdHJjaHJudWwpOwotQlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl9zdHJuY2hyKTsKLUJURl9JRF9GTEFHUyhmdW5jLCBicGZfc3RycmNocik7Ci1CVEZfSURfRkxBR1MoZnVuYywgYnBmX3N0cmxlbik7Ci1CVEZfSURfRkxBR1MoZnVuYywgYnBmX3N0cm5sZW4pOwotQlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl9zdHJzcG4pOwotQlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl9zdHJjc3BuKTsKLUJURl9JRF9GTEFHUyhmdW5jLCBicGZfc3Ryc3RyKTsKLUJURl9JRF9GTEFHUyhmdW5jLCBicGZfc3RyY2FzZXN0cik7Ci1CVEZfSURfRkxBR1MoZnVuYywgYnBmX3N0cm5zdHIpOwotQlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl9zdHJuY2FzZXN0cik7CiYjNDM7QlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl9zdHJjbXAsIEtGX1BFUkZNT04pOwomIzQzO0JURl9JRF9GTEFHUyhmdW5jLCBicGZfc3RyY2FzZWNtcCwgS0ZfUEVSRk1PTik7CiYjNDM7QlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl9zdHJuY2FzZWNtcCwgS0ZfUEVSRk1PTik7CiYjNDM7QlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl9zdHJjaHIsIEtGX1BFUkZNT04pOwomIzQzO0JURl9JRF9GTEFHUyhmdW5jLCBicGZfc3RyY2hybnVsLCBLRl9QRVJGTU9OKTsKJiM0MztCVEZfSURfRkxBR1MoZnVuYywgYnBmX3N0cm5jaHIsIEtGX1BFUkZNT04pOwomIzQzO0JURl9JRF9GTEFHUyhmdW5jLCBicGZfc3RycmNociwgS0ZfUEVSRk1PTik7CiYjNDM7QlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl9zdHJsZW4sIEtGX1BFUkZNT04pOwomIzQzO0JURl9JRF9GTEFHUyhmdW5jLCBicGZfc3RybmxlbiwgS0ZfUEVSRk1PTik7CiYjNDM7QlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl9zdHJzcG4sIEtGX1BFUkZNT04pOwomIzQzO0JURl9JRF9GTEFHUyhmdW5jLCBicGZfc3RyY3NwbiwgS0ZfUEVSRk1PTik7CiYjNDM7QlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl9zdHJzdHIsIEtGX1BFUkZNT04pOwomIzQzO0JURl9JRF9GTEFHUyhmdW5jLCBicGZfc3RyY2FzZXN0ciwgS0ZfUEVSRk1PTik7CiYjNDM7QlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl9zdHJuc3RyLCBLRl9QRVJGTU9OKTsKJiM0MztCVEZfSURfRkxBR1MoZnVuYywgYnBmX3N0cm5jYXNlc3RyLCBLRl9QRVJGTU9OKTsKICNpZiBkZWZpbmVkKENPTkZJR19CUEZfTFNNKSAmYW1wOyZhbXA7IGRlZmluZWQoQ09ORklHX0NHUk9VUFMpCiBCVEZfSURfRkxBR1MoZnVuYywgYnBmX2Nncm91cF9yZWFkX3hhdHRyLCBLRl9SQ1UpCiAjZW5kaWYKLUJURl9JRF9GTEFHUyhmdW5jLCBicGZfc3RyZWFtX3ZwcmludGssIEtGX0lNUExJQ0lUX0FSR1MgfCBLRl9TUElOTE9DS19TQUZFKQotQlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl9zdHJlYW1fcHJpbnRfc3RhY2ssIEtGX0lNUExJQ0lUX0FSR1MgfCBLRl9TUElOTE9DS19TQUZFKQomIzQzO0JURl9JRF9GTEFHUyhmdW5jLCBicGZfc3RyZWFtX3ZwcmludGssIEtGX0lNUExJQ0lUX0FSR1MgfCBLRl9TUElOTE9DS19TQUZFIHwgS0ZfUEVSRk1PTikKJiM0MztCVEZfSURfRkxBR1MoZnVuYywgYnBmX3N0cmVhbV9wcmludF9zdGFjaywgS0ZfSU1QTElDSVRfQVJHUyB8IEtGX1NQSU5MT0NLX1NBRkUgfCBLRl9QRVJGTU9OKQogQlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl90YXNrX3dvcmtfc2NoZWR1bGVfc2lnbmFsLCBLRl9JTVBMSUNJVF9BUkdTKQogQlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl90YXNrX3dvcmtfc2NoZWR1bGVfcmVzdW1lLCBLRl9JTVBMSUNJVF9BUkdTKQogQlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl9keW5wdHJfZnJvbV9maWxlKQpkaWZmIC0tZ2l0IGEva2VybmVsL2JwZi92ZXJpZmllci5jIGIva2VybmVsL2JwZi92ZXJpZmllci5jCmluZGV4IDcyYTNmNTk5OGRkMjcuLjM2OTIzY2UwNDI3MzQgMTAwNjQ0Ci0tLSBhL2tlcm5lbC9icGYvdmVyaWZpZXIuYwomIzQzOyYjNDM7JiM0MzsgYi9rZXJuZWwvYnBmL3ZlcmlmaWVyLmMKQEAgLTY0NTMsNiAmIzQzOzY0NTMsMTYgQEAgc3RhdGljIGludCBjaGVja19tZW1fYWNjZXNzKHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYsIGludCBpbnNuX2lkeCwgc3RydWN0IGIKIAkJCXJldHVybiAtRUFDQ0VTOwogCQl9CiAKJiM0MzsJCWlmIChyZG9ubHlfdW50cnVzdGVkICZhbXA7JmFtcDsgIWVudi0mZ3Q7YWxsb3dfcHRyX2xlYWtzKSB7CiYjNDM7CQkJdmVyYm9zZShlbnYsICYjMzQ7JXMgYWNjZXNzIGlzIGFsbG93ZWQgb25seSB0byBDQVBfUEVSRk1PTiBhbmQgQ0FQX1NZU19BRE1JTlxuJiMzNDssCiYjNDM7CQkJCXJlZ190eXBlX3N0cihlbnYsIHJlZy0mZ3Q7dHlwZSkpOwomIzQzOwkJCWJwZl9kaWFnX3BvbGljeSgKJiM0MzsJCQkJZW52LCBpbnNuX2lkeCwgJiMzNDtyZWFkIGZyb20gdW50cnVzdGVkIHJlYWQtb25seSBtZW1vcnkmIzM0OywKJiM0MzsJCQkJJiMzNDt0aGUgYWNjZXNzIHJlcXVpcmVzIENBUF9QRVJGTU9OJiMzNDssCiYjNDM7CQkJCSYjMzQ7TG9hZCB0aGUgcHJvZ3JhbSB3aXRoIENBUF9QRVJGTU9OLCBvciBhdm9pZCBkZXJlZmVyZW5jaW5nIHVudHJ1c3RlZCBwb2ludGVycy4mIzM0Oyk7CiYjNDM7CQkJcmV0dXJuIC1FUEVSTTsKJiM0MzsJCX0KJiM0MzsKIAkJLyoKIAkJICogQWNjZXNzZXMgdG8gdW50cnVzdGVkIFBUUl9UT19NRU0gYXJlIGRvbmUgdGhyb3VnaCBwcm9iZQogCQkgKiBpbnN0cnVjdGlvbnMsIGhlbmNlIG5vIG5lZWQgdG8gY2hlY2sgYm91bmRzIGluIHRoYXQgY2FzZS4KQEAgLTExMzU2LDYgJiM0MzsxMTM2NiwxMSBAQCBzdGF0aWMgYm9vbCBpc19rZnVuY19kZXN0cnVjdGl2ZShzdHJ1Y3QgYnBmX2NhbGxfYXJnX21ldGEgKm1ldGEpCiAJcmV0dXJuIG1ldGEtJmd0O2tmdW5jX2ZsYWdzICZhbXA7IEtGX0RFU1RSVUNUSVZFOwogfQogCiYjNDM7c3RhdGljIGJvb2wgaXNfa2Z1bmNfcGVyZm1vbihzdHJ1Y3QgYnBmX2NhbGxfYXJnX21ldGEgKm1ldGEpCiYjNDM7ewomIzQzOwlyZXR1cm4gbWV0YS0mZ3Q7a2Z1bmNfZmxhZ3MgJmFtcDsgS0ZfUEVSRk1PTjsKJiM0Mzt9CiYjNDM7CiBzdGF0aWMgYm9vbCBpc19rZnVuY19yY3Uoc3RydWN0IGJwZl9jYWxsX2FyZ19tZXRhICptZXRhKQogewogCXJldHVybiBtZXRhLSZndDtrZnVuY19mbGFncyAmYW1wOyBLRl9SQ1U7CkBAIC0xMzgzNCw2ICYjNDM7MTM4NDksMTYgQEAgc3RhdGljIGludCBjaGVja19rZnVuY19jYWxsKHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYsIHN0cnVjdCBicGZfaW5zbiAqaW5zbiwKIAkJcmV0dXJuIC1FQUNDRVM7CiAJfQogCiYjNDM7CWlmIChpc19rZnVuY19wZXJmbW9uKCZhbXA7bWV0YSkgJmFtcDsmYW1wOyAhZW52LSZndDthbGxvd19wdHJfbGVha3MpIHsKJiM0MzsJCXZlcmJvc2UoZW52LCAmIzM0OyVzIGlzIGFsbG93ZWQgb25seSB0byBDQVBfUEVSRk1PTiBhbmQgQ0FQX1NZU19BRE1JTlxuJiMzNDssCiYjNDM7CQkJZnVuY19uYW1lKTsKJiM0MzsJCW9wZXJhdGlvbiA9IGJwZl9kaWFnX2ZtdChlbnYsICYjMzQ7a2Z1bmMgJXMmIzM0OywgZnVuY19uYW1lKTsKJiM0MzsJCWJwZl9kaWFnX3BvbGljeSgKJiM0MzsJCQllbnYsIGluc25faWR4LCBvcGVyYXRpb24sICYjMzQ7dGhlIGtmdW5jIHJlcXVpcmVzIENBUF9QRVJGTU9OJiMzNDssCiYjNDM7CQkJJiMzNDtMb2FkIHRoZSBwcm9ncmFtIHdpdGggQ0FQX1BFUkZNT04sIG9yIGF2b2lkIHRoZSBrZnVuYy4mIzM0Oyk7CiYjNDM7CQlyZXR1cm4gLUVQRVJNOwomIzQzOwl9CiYjNDM7CiAJc2xlZXBhYmxlID0gYnBmX2lzX2tmdW5jX3NsZWVwYWJsZSgmYW1wO21ldGEpOwogCWlmIChzbGVlcGFibGUgJmFtcDsmYW1wOyAhaW5fc2xlZXBhYmxlKGVudikpIHsKIAkJdmVyYm9zZShlbnYsICYjMzQ7cHJvZ3JhbSBtdXN0IGJlIHNsZWVwYWJsZSB0byBjYWxsIHNsZWVwYWJsZSBrZnVuYyAlc1xuJiMzNDssIGZ1bmNfbmFtZSk7CmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy92ZXJpZmllci5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvdmVyaWZpZXIuYwppbmRleCA2NGFjNDlhZDY3ZTYzLi5lYzllMzkwN2M3NWQ2IDEwMDY0NAotLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy92ZXJpZmllci5jCiYjNDM7JiM0MzsmIzQzOyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3ZlcmlmaWVyLmMKQEAgLTUzLDYgJiM0Mzs1Myw3IEBACiAjaW5jbHVkZSAmIzM0O3ZlcmlmaWVyX2l0ZXJhdGluZ19jYWxsYmFja3Muc2tlbC5oJiMzNDsKICNpbmNsdWRlICYjMzQ7dmVyaWZpZXJfamVxX2luZmVyX25vdF9udWxsLnNrZWwuaCYjMzQ7CiAjaW5jbHVkZSAmIzM0O3ZlcmlmaWVyX2ppdF9jb252ZXJnZW5jZS5za2VsLmgmIzM0OwomIzQzOyNpbmNsdWRlICYjMzQ7dmVyaWZpZXJfa2Z1bmNfcGVyZm1vbi5za2VsLmgmIzM0OwogI2luY2x1ZGUgJiMzNDt2ZXJpZmllcl9sZF9pbmQuc2tlbC5oJiMzNDsKICNpbmNsdWRlICYjMzQ7dmVyaWZpZXJfbGRzeC5za2VsLmgmIzM0OwogI2luY2x1ZGUgJiMzNDt2ZXJpZmllcl9sZWFrX3B0ci5za2VsLmgmIzM0OwpAQCAtMjE2LDYgJiM0MzsyMTcsNyBAQCB2b2lkIHRlc3RfdmVyaWZpZXJfaW50X3B0cih2b2lkKSAgICAgICAgICAgICAgeyBSVU4odmVyaWZpZXJfaW50X3B0cik7IH0KIHZvaWQgdGVzdF92ZXJpZmllcl9pdGVyYXRpbmdfY2FsbGJhY2tzKHZvaWQpICB7IFJVTih2ZXJpZmllcl9pdGVyYXRpbmdfY2FsbGJhY2tzKTsgfQogdm9pZCB0ZXN0X3ZlcmlmaWVyX2plcV9pbmZlcl9ub3RfbnVsbCh2b2lkKSAgIHsgUlVOKHZlcmlmaWVyX2plcV9pbmZlcl9ub3RfbnVsbCk7IH0KIHZvaWQgdGVzdF92ZXJpZmllcl9qaXRfY29udmVyZ2VuY2Uodm9pZCkgICAgICB7IFJVTih2ZXJpZmllcl9qaXRfY29udmVyZ2VuY2UpOyB9CiYjNDM7dm9pZCB0ZXN0X3ZlcmlmaWVyX2tmdW5jX3BlcmZtb24odm9pZCkgICAgICAgIHsgUlVOKHZlcmlmaWVyX2tmdW5jX3BlcmZtb24pOyB9CiB2b2lkIHRlc3RfdmVyaWZpZXJfbG9hZF9hY3F1aXJlKHZvaWQpICAgICAgICAgeyBSVU4odmVyaWZpZXJfbG9hZF9hY3F1aXJlKTsgfQogdm9pZCB0ZXN0X3ZlcmlmaWVyX2xkX2luZCh2b2lkKSAgICAgICAgICAgICAgIHsgUlVOKHZlcmlmaWVyX2xkX2luZCk7IH0KIHZvaWQgdGVzdF92ZXJpZmllcl9sZHN4KHZvaWQpICAgICAgICAgICAgICAgICAgeyBSVU4odmVyaWZpZXJfbGRzeCk7IH0KZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy92ZXJpZmllcl9rZnVuY19wZXJmbW9uLmMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvdmVyaWZpZXJfa2Z1bmNfcGVyZm1vbi5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAuLmM2YWRiYjQ4MTZjZWMKLS0tIC9kZXYvbnVsbAomIzQzOyYjNDM7JiM0MzsgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvdmVyaWZpZXJfa2Z1bmNfcGVyZm1vbi5jCkBAIC0wLDAgJiM0MzsxLDYzIEBACiYjNDM7Ly8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAKJiM0MzsKJiM0MzsjaW5jbHVkZSAmbHQ7dm1saW51eC5oJmd0OwomIzQzOyNpbmNsdWRlICZsdDticGYvYnBmX2hlbHBlcnMuaCZndDsKJiM0MzsjaW5jbHVkZSAmIzM0O2JwZl9taXNjLmgmIzM0OwomIzQzOwomIzQzO3ZvaWQgKnVzZXJfcHRyOwomIzQzO2NoYXIgZHlucHRyX2J1Zls4XTsKJiM0Mzt1NjQga2FkZHI7CiYjNDM7CiYjNDM7U0VDKCYjMzQ7c29ja2V0JiMzNDspCiYjNDM7X19zdWNjZXNzCiYjNDM7X19jYXBzX3VucHJpdihDQVBfQlBGKQomIzQzO19fZmFpbHVyZV91bnByaXYKJiM0MztfX21zZ191bnByaXYoJiMzNDticGZfcmRvbmx5X2Nhc3QgaXMgYWxsb3dlZCBvbmx5IHRvIENBUF9QRVJGTU9OIGFuZCBDQVBfU1lTX0FETUlOJiMzNDspCiYjNDM7aW50IHJkb25seV9jYXN0X25vcGVyZm1vbih2b2lkICpjdHgpCiYjNDM7ewomIzQzOwljaGFyICpwID0gYnBmX3Jkb25seV9jYXN0KDAsIDApOwomIzQzOwomIzQzOwlyZXR1cm4gcFsweDdmZmZdOwomIzQzO30KJiM0MzsKJiM0MztTRUMoJiMzNDtzb2NrZXQmIzM0OykKJiM0MztfX3N1Y2Nlc3MKJiM0MztfX2NhcHNfdW5wcml2KENBUF9CUEYpCiYjNDM7X19mYWlsdXJlX3VucHJpdgomIzQzO19fbXNnX3VucHJpdigmIzM0O2JwZl9wcm9iZV9yZWFkX2tlcm5lbF9keW5wdHIgaXMgYWxsb3dlZCBvbmx5IHRvIENBUF9QRVJGTU9OIGFuZCBDQVBfU1lTX0FETUlOJiMzNDspCiYjNDM7aW50IHByb2JlX3JlYWRfa2VybmVsX2R5bnB0cl9ub3BlcmZtb24odm9pZCAqY3R4KQomIzQzO3sKJiM0MzsJc3RydWN0IGJwZl9keW5wdHIgZHB0cjsKJiM0MzsKJiM0MzsJYnBmX2R5bnB0cl9mcm9tX21lbShkeW5wdHJfYnVmLCBzaXplb2YoZHlucHRyX2J1ZiksIDAsICZhbXA7ZHB0cik7CiYjNDM7CWJwZl9wcm9iZV9yZWFkX2tlcm5lbF9keW5wdHIoJmFtcDtkcHRyLCAwLCBzaXplb2YoZHlucHRyX2J1ZiksIHVzZXJfcHRyKTsKJiM0MzsJcmV0dXJuIDA7CiYjNDM7fQomIzQzOwomIzQzO1NFQygmIzM0O3NvY2tldCYjMzQ7KQomIzQzO19fc3VjY2VzcwomIzQzO19fY2Fwc191bnByaXYoQ0FQX0JQRikKJiM0MztfX2ZhaWx1cmVfdW5wcml2CiYjNDM7X19tc2dfdW5wcml2KCYjMzQ7YnBmX3N0cmVhbV92cHJpbnRrIGlzIGFsbG93ZWQgb25seSB0byBDQVBfUEVSRk1PTiBhbmQgQ0FQX1NZU19BRE1JTiYjMzQ7KQomIzQzO2ludCBzdHJlYW1fdnByaW50a19ub3BlcmZtb24odm9pZCAqY3R4KQomIzQzO3sKJiM0MzsJYnBmX3N0cmVhbV9wcmludGsoQlBGX1NURE9VVCwgJiMzNDslcEImIzM0OywgKHZvaWQgKilrYWRkcik7CiYjNDM7CXJldHVybiAwOwomIzQzO30KJiM0MzsKJiM0MztfX3dlYWsgaW50IHN1YnByb2dfdW50cnVzdGVkX3JlYWQodm9pZCAqcCBfX2FyZ191bnRydXN0ZWQpCiYjNDM7ewomIzQzOwlyZXR1cm4gKihjaGFyICopcDsKJiM0Mzt9CiYjNDM7CiYjNDM7U0VDKCYjMzQ7c29ja2V0JiMzNDspCiYjNDM7X19zdWNjZXNzCiYjNDM7X19jYXBzX3VucHJpdihDQVBfQlBGKQomIzQzO19fZmFpbHVyZV91bnByaXYKJiM0MztfX21zZ191bnByaXYoJiMzNDtyZG9ubHlfdW50cnVzdGVkX21lbSBhY2Nlc3MgaXMgYWxsb3dlZCBvbmx5IHRvIENBUF9QRVJGTU9OIGFuZCBDQVBfU1lTX0FETUlOJiMzNDspCiYjNDM7aW50IGFyZ191bnRydXN0ZWRfcmVhZF9ub3BlcmZtb24odm9pZCAqY3R4KQomIzQzO3sKJiM0MzsJcmV0dXJuIHN1YnByb2dfdW50cnVzdGVkX3JlYWQoMCk7CiYjNDM7fQomIzQzOwomIzQzO2NoYXIgX2xpY2Vuc2VbXSBTRUMoJiMzNDtsaWNlbnNlJiMzNDspID0gJiMzNDtHUEwmIzM0OzsKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTAgMTY6MTU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNzU0NAoJCQkJCQkJb3V0cHV0OiAzNAoJCQkJCQkJdGhvdWdodHM6IDExMTgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHlzaXMgb2YgQlBGIEtmdW5jIFBlcm1pc3Npb25zIFBhdGNoKioKCk9rYXksIGxldCYjMzk7cyBicmVhayB0aGlzIGRvd24uIFRoaXMgcGF0Y2ggaXMgZm9jdXNlZCBvbiBCUEYga2Z1bmNzLCBzcGVjaWZpY2FsbHkgcmVsYXRlZCB0byB0aGUgdmVyaWZpZXIgYW5kIHBlcm1pc3Npb24gY2hlY2tzLiBNeSBpbml0aWFsIGFzc2Vzc21lbnQgaXMgdGhhdCB0aGlzIHdhcnJhbnRzIGZ1enppbmcgYmFzZWQgb24gdGhlIHBhdGNoJiMzOTtzIHRvdWNoZXMgdG8gY29yZSBCUEYgdmVyaWZpZXIgbG9naWMsIHdoaWNoIGlzIHJlYWNoYWJsZSB2aWEgdGhlIGBicGYoKWAgc3lzY2FsbCBhbmQgZmFsbHMgdW5kZXIgdGhlICYjMzQ7Y29yZSBzdWJzeXN0ZW0mIzM0OyBjYXRlZ29yeSBhY2NvcmRpbmcgdG8gc2VjdGlvbiAzLgoKVGhlIHBhdGNoIGl0c2VsZiBpcyBhZGRpbmcgYSBuZXcgZmxhZywgYEtGX1BFUkZNT05gLCBkZWZpbmVkIGluIGBpbmNsdWRlL2xpbnV4L2J0Zi5oYC4gVGhpcyBpcyBpbW1lZGlhdGVseSBzdXNwaWNpb3VzIOKAkyBpbnRyb2R1Y2luZyBhIG5ldyBwZXJtaXNzaW9uIHJlcXVpcmVtZW50IHN1Z2dlc3RzIGEgcG90ZW50aWFsIGF0dGFjayBzdXJmYWNlLiBUaGlzIGZsYWcgaXMgdGhlbiBhcHBsaWVkIHRvIGEgc3Vic3RhbnRpYWwgbnVtYmVyIG9mIGtmdW5jcyB3aXRoaW4gYGtlcm5lbC9icGYvaGVscGVycy5jYC4gU3BlY2lmaWNhbGx5LCBJIHNlZSBpdCBhcHBsaWVkIHRvIGEgdmFyaWV0eSBvZiByZWFkL3dyaXRlIGZ1bmN0aW9ucyBhbmQgc3RyaW5nIG1hbmlwdWxhdGlvbiBmdW5jdGlvbnMsIGluY2x1ZGluZyBgYnBmX3Jkb25seV9jYXN0YCwgYSBudW1iZXIgb2YgaXRlcmF0b3IgZnVuY3Rpb25zIGFuZCBzdHJpbmcgZnVuY3Rpb25zLCBhbmQgYGJwZl9zdHJlYW1fdnByaW50a2AsIHdoaWNoIHN0YW5kcyBvdXQuCgpUaGUgY29yZSBvZiB0aGUgY2hhbmdlIHJlc2lkZXMgaW4gYGtlcm5lbC9icGYvdmVyaWZpZXIuY2AuICBgY2hlY2tfbWVtX2FjY2VzcygpYCBub3cgaW5jbHVkZXMgYSBjaGVjayBiYXNlZCBvbiB0aGUgbmV3IGBLRl9QRVJGTU9OYCBmbGFnLiBFc3NlbnRpYWxseSwgaWYgYSBwb2ludGVyIGlzIHVudHJ1c3RlZCBhbmQgcmVhZC1vbmx5LCBpdCBub3cgcmVxdWlyZXMgYENBUF9QRVJGTU9OYCAob3IgYENBUF9TWVNfQURNSU5gLCBuYXR1cmFsbHkpIHVubGVzcyBgZW52LSZndDthbGxvd19wdHJfbGVha3NgIGlzIHNldC4gVGhlIGFkZGVkIGBpc19rZnVuY19wZXJmbW9uKClgIGhlbHBlciBpcyB0aGVuIHVzZWQgYnkgdGhlIG1vcmUgc2lnbmlmaWNhbnQgYGNoZWNrX2tmdW5jX2NhbGwoKWAgZnVuY3Rpb24uICBUaGlzIGZ1bmN0aW9uIHdpbGwgbm93IGJsb2NrIGNhbGxzIHRvIHRob3NlIGtmdW5jcyB0aGF0IGFyZSB0YWdnZWQgd2l0aCB0aGUgYEtGX1BFUkZNT05gIGZsYWcgd2l0aG91dCB0aGUgbmVjZXNzYXJ5IGNhcGFiaWxpdHkuCgpGcm9tIGEgZnV6emluZyBwZXJzcGVjdGl2ZSwgSSYjMzk7bSBnb2luZyB0byB3YW50IHRvIGZvY3VzIG9uOgoKKiAgIFRoZSBmdW5jdGlvbnMgbW9kaWZpZWQgaW4gYGtlcm5lbC9icGYvdmVyaWZpZXIuY2A6IHNwZWNpZmljYWxseSwgYGNoZWNrX2tmdW5jX2NhbGxgIGFuZCBgY2hlY2tfbWVtX2FjY2Vzc2Ag4oCTIHRoZXNlIGFyZSBjbGVhcmx5IHRoZSBnYXRla2VlcGVycyBhbmQgdGhlIGNyaXRpY2FsIHBvaW50cyBvZiBlbmZvcmNlbWVudC4KKiAgIFRoZSBrZnVuY3MgdGhlbXNlbHZlcywgZXNwZWNpYWxseSB0aG9zZSBub3cgcmVxdWlyaW5nIGBDQVBfUEVSRk1PTmAuICBJdCYjMzk7cyB1c2VmdWwgdG8ga2VlcCB0cmFjayBvZiB0aGUgaGVscGVyIGZ1bmN0aW9uLCBgaXNfa2Z1bmNfcGVyZm1vbigpYCB0b28uCiogICBUaGUgb3ZlcmFsbCBlbnRyeXBvaW50IHRvIEJQRiB2ZXJpZmllciwgdGhlIGhlbHBlciBmdW5jdGlvbiBpdHNlbGYgYGJwZl9jaGVja2AuCgpJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgZXhhY3QgY29uZGl0aW9ucyB1bmRlciB3aGljaCBgZW52LSZndDthbGxvd19wdHJfbGVha3NgIGNhbiBiZSBzZXQsIGFzIHRoYXQgY291bGQgYnlwYXNzIHRoZSBuZXcgcmVzdHJpY3Rpb25zLiBJdCB3b3VsZCBiZSBwcnVkZW50IHRvIGluc3BlY3QgdGhlIGNvZGUgdG8gdW5kZXJzdGFuZCB3aGF0IHZhbHVlcyBmb3IgdGhlIGFyZ3VtZW50cyBmb3IgdGhlc2UgZnVuY3Rpb25zIHdpbGwgcmVzdWx0IGluIGFuIGFsbG93ZWQgY2FsbCB2ZXJzdXMgYSBibG9ja2VkIGNhbGwuIEkmIzM5O20gZ29pbmcgdG8gdXNlIGdyZXBwZXIgb3IgcmVhZC1maWxlIHRvIGNhcmVmdWxseSBleGFtaW5lIHRoZSBzdXJyb3VuZGluZyBjb2RlIGluIGBrZXJuZWwvYnBmL3ZlcmlmaWVyLmNgIHRvIHVuZGVyc3RhbmQgdGhlIGZsb3cgd2l0aGluIHRoZXNlIGZ1bmN0aW9ucyBhbmQgaG93IHRoZXkgcmVsYXRlIHRvIHRoZSBCUEYgcHJvZ3JhbSBsb2FkaW5nIHByb2Nlc3MuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTAgMTY6MTY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y2hlY2tfa2Z1bmNfY2FsbCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2tlcm5lbC9icGYvdmVyaWZpZXIuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtrZXJuZWwvYnBmL3ZlcmlmaWVyLmM9MTM3Njg9c3RhdGljIGludCBjaGVja19yZXR1cm5fY29kZShzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52LCBpbnQgcmVnbm8sIGNvbnN0IGNoYXIgKnJlZ19uYW1lKTtcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xMzc2OS1cbmtlcm5lbC9icGYvdmVyaWZpZXIuYzoxMzc3MDpzdGF0aWMgaW50IGNoZWNrX2tmdW5jX2NhbGwoc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudiwgc3RydWN0IGJwZl9pbnNuICppbnNuLFxua2VybmVsL2JwZi92ZXJpZmllci5jLTEzNzcxLVx0XHRcdCAgICBpbnQgKmluc25faWR4X3ApXG4tLVxua2VybmVsL2JwZi92ZXJpZmllci5jPTE4MjUyPXN0YXRpYyBpbnQgZG9fY2hlY2tfaW5zbihzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52LCBib29sICpkb19wcmludF9zdGF0ZSlcbi0tXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTgzMjQtXHRcdFx0aWYgKGluc24tXHUwMDNlc3JjX3JlZyA9PSBCUEZfUFNFVURPX0tGVU5DX0NBTEwpXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6MTgzMjU6XHRcdFx0XHRyZXR1cm4gY2hlY2tfa2Z1bmNfY2FsbChlbnYsIGluc24sIFx1MDAyNmVudi1cdTAwM2VpbnNuX2lkeCk7XG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTgzMjYtXHRcdFx0cmV0dXJuIGNoZWNrX2hlbHBlcl9jYWxsKGVudiwgaW5zbiwgXHUwMDI2ZW52LVx1MDAzZWluc25faWR4KTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMCAxNjoxNjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA5NjAwCgkJCQkJCQlvdXRwdXQ6IDMzCgkJCQkJCQl0aG91Z2h0czogMjIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgc3VtbWFyeSwgYXMgdGhvdWdoIEkmIzM5O20gdGhpbmtpbmcgdGhyb3VnaCB0aGlzIHByb2Nlc3M6CgoqKkRpdmluZyBpbnRvIHRoZSBCUEYgVmVyaWZpZXIqKgoKQWxyaWdodCwgdGltZSB0byB0cm91Ymxlc2hvb3QgdGhpcyBtZW1vcnkgYWNjZXNzIGlzc3VlLiBJIGtub3cgaXQmIzM5O3MgcHJvYmFibHkgc29tZXdoZXJlIGRlZXAgd2l0aGluIHRoZSBCUEYgdmVyaWZpZXIuIExldCYjMzk7cyBzdGFydCBieSB6ZXJvaW5nIGluIG9uIGBjaGVja19tZW1fYWNjZXNzYC4gVGhhdCBmdW5jdGlvbiBpbiBga2VybmVsL2JwZi92ZXJpZmllci5jYCBpcyB0aGUgcHJpbWUgc3VzcGVjdCBmb3IgaGFuZGxpbmcgbWVtb3J5IHNhZmV0eSBjaGVja3MsIHdoaWNoIGlzIGV4YWN0bHkgd2hlcmUgSSBleHBlY3QgdGhlIHJvb3QgY2F1c2UgdG8gYmUuIExldCBtZSBncmFiIHRoZSBzb3VyY2UgYW5kIGdldCB0byBpdC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMCAxNjoxNjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjaGVja19tZW1fYWNjZXNzJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7a2VybmVsL2JwZi92ZXJpZmllci5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2tlcm5lbC9icGYvdmVyaWZpZXIuYz01OD1zdGF0aWMgYm9vbCBicGZfZ2xvYmFsX3BlcmNwdV9tYV9zZXQ7XG4tLVxua2VybmVsL2JwZi92ZXJpZmllci5jLTEwNS0gKiBjYW4gYmU6IFBUUl9UT19NQVBfVkFMVUUsIFBUUl9UT19DVFgsIFBUUl9UT19TVEFDSywgUFRSX1RPX1NPQ0tFVC4gVGhlc2UgYXJlXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6MTA2OiAqIGZvdXIgcG9pbnRlciB0eXBlcyByZWNvZ25pemVkIGJ5IGNoZWNrX21lbV9hY2Nlc3MoKSBmdW5jdGlvbi5cbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xMDctICpcbi0tXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM9ODQ1PXN0YXRpYyBib29sIGlzX2R5bnB0cl9yZWdfdmFsaWRfdW5pbml0KHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYsIHN0cnVjdCBicGZfcmVnX3N0YXRlICpyZWcpXG4tLVxua2VybmVsL2JwZi92ZXJpZmllci5jLTg1NS1cdCAqIGVycm9yIGJlY2F1c2UgdGhpcyBqdXN0IG1lYW5zIHRoZSBzdGFjayBzdGF0ZSBoYXNuJiMzOTt0IGJlZW4gdXBkYXRlZCB5ZXQuXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6ODU2Olx0ICogV2Ugd2lsbCBkbyBjaGVja19tZW1fYWNjZXNzIHRvIGNoZWNrIGFuZCB1cGRhdGUgc3RhY2sgYm91bmRzIGxhdGVyLlxua2VybmVsL2JwZi92ZXJpZmllci5jLTg1Ny1cdCAqL1xuLS1cbmtlcm5lbC9icGYvdmVyaWZpZXIuYz0xMDA0PXN0YXRpYyBib29sIGlzX2l0ZXJfcmVnX3ZhbGlkX3VuaW5pdChzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52LFxuLS1cbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xMDEwLVx0LyogRm9yIC1FUkFOR0UgKGkuZS4gc3BpIG5vdCBmYWxsaW5nIGludG8gYWxsb2NhdGVkIHN0YWNrIHNsb3RzKSwgd2Vcbmtlcm5lbC9icGYvdmVyaWZpZXIuYzoxMDExOlx0ICogd2lsbCBkbyBjaGVja19tZW1fYWNjZXNzIHRvIGNoZWNrIGFuZCB1cGRhdGUgc3RhY2sgYm91bmRzIGxhdGVyLCBzb1xua2VybmVsL2JwZi92ZXJpZmllci5jLTEwMTItXHQgKiByZXR1cm4gdHJ1ZSBmb3IgdGhhdCBjYXNlLlxuLS1cbmtlcm5lbC9icGYvdmVyaWZpZXIuYz0xMTY0PXN0YXRpYyBib29sIGlzX2lycV9mbGFnX3JlZ192YWxpZF91bmluaXQoc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudiwgc3RydWN0IGJwZl9yZWdfc3RhdGUgKnJlZylcbi0tXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTE3MC1cdC8qIEZvciAtRVJBTkdFIChpLmUuIHNwaSBub3QgZmFsbGluZyBpbnRvIGFsbG9jYXRlZCBzdGFjayBzbG90cyksIHdlXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6MTE3MTpcdCAqIHdpbGwgZG8gY2hlY2tfbWVtX2FjY2VzcyB0byBjaGVjayBhbmQgdXBkYXRlIHN0YWNrIGJvdW5kcyBsYXRlciwgc29cbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xMTcyLVx0ICogcmV0dXJuIHRydWUgZm9yIHRoYXQgY2FzZS5cbi0tXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM9MzUwMT1zdGF0aWMgdm9pZCBzY3J1Yl9zcGVjaWFsX3Nsb3Qoc3RydWN0IGJwZl9mdW5jX3N0YXRlICpzdGF0ZSwgaW50IHNwaSlcbi0tXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMzUxMy0vKiBjaGVja19zdGFja197cmVhZCx3cml0ZX1fZml4ZWRfb2ZmIGZ1bmN0aW9ucyB0cmFjayBzcGlsbC9maWxsIG9mIHJlZ2lzdGVycyxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYzozNTE0OiAqIHN0YWNrIGJvdW5kYXJ5IGFuZCBhbGlnbm1lbnQgYXJlIGNoZWNrZWQgaW4gY2hlY2tfbWVtX2FjY2VzcygpXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMzUxNS0gKi9cbi0tXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM9NDI5Mj1zdGF0aWMgaW50IGNoZWNrX21hcF9hY2Nlc3NfdHlwZShzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52LCBzdHJ1Y3QgYnBmX3JlZ19zdGF0ZSAqcmVnLFxuLS1cbmtlcm5lbC9icGYvdmVyaWZpZXIuYy00MzEzLS8qIGNoZWNrIHJlYWQvd3JpdGUgaW50byBtZW1vcnkgcmVnaW9uIChlLmcuLCBtYXAgdmFsdWUsIHJpbmdidWYgc2FtcGxlLCBldGMpICovXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6NDMxNDpzdGF0aWMgaW50IF9fY2hlY2tfbWVtX2FjY2VzcyhzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52LCBzdHJ1Y3QgYnBmX3JlZ19zdGF0ZSAqcmVnLCBhcmdub190IGFyZ25vLFxua2VybmVsL2JwZi92ZXJpZmllci5jLTQzMTUtXHRcdFx0ICAgICAgaW50IG9mZiwgaW50IHNpemUsIHUzMiBtZW1fc2l6ZSxcbi0tXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM9NDM1Mj1zdGF0aWMgaW50IGNoZWNrX21lbV9yZWdpb25fYWNjZXNzKHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYsIHN0cnVjdCBicGZfcmVnX3N0YXRlICpyZWcsIGFyZ25vX3QgYXJnbm8sXG4tLVxua2VybmVsL2JwZi92ZXJpZmllci5jLTQzODYtXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6NDM4NzpcdGVyciA9IF9fY2hlY2tfbWVtX2FjY2VzcyhlbnYsIHJlZywgYXJnbm8sIHJlZ19zbWluKHJlZykgJiM0Mzsgb2ZmLCBzaXplLFxua2VybmVsL2JwZi92ZXJpZmllci5jLTQzODgtXHRcdFx0XHQgbWVtX3NpemUsIHplcm9fc2l6ZV9hbGxvd2VkKTtcbi0tXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtNDQxNS1cbmtlcm5lbC9icGYvdmVyaWZpZXIuYzo0NDE2Olx0ZXJyID0gX19jaGVja19tZW1fYWNjZXNzKGVudiwgcmVnLCBhcmdubywgcmVnX3VtYXgocmVnKSAmIzQzOyBvZmYsIHNpemUsXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtNDQxNy1cdFx0XHRcdCBtZW1fc2l6ZSwgemVyb19zaXplX2FsbG93ZWQpO1xuLS1cbmtlcm5lbC9icGYvdmVyaWZpZXIuYz00ODYxPXN0YXRpYyBpbnQgY2hlY2tfcGFja2V0X2FjY2VzcyhzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52LCBzdHJ1Y3QgYnBmX3JlZ19zdGF0ZSAqcmVnLCBhcmdub190IGFyZ25vLCBpbnQgb2ZmLFxuLS1cbmtlcm5lbC9icGYvdmVyaWZpZXIuYy00ODc0LVxua2VybmVsL2JwZi92ZXJpZmllci5jOjQ4NzU6XHQvKiBfX2NoZWNrX21lbV9hY2Nlc3MgaGFzIG1hZGUgc3VyZSBcJiMzNDtvZmYgJiM0Mzsgc2l6ZSAtIDFcJiMzNDsgaXMgd2l0aGluIHUxNi5cbmtlcm5lbC9icGYvdmVyaWZpZXIuYy00ODc2LVx0ICogcmVnX3VtYXgocmVnKSBjYW4mIzM5O3QgYmUgYmlnZ2VyIHRoYW4gTUFYX1BBQ0tFVF9PRkYgd2hpY2ggaXMgMHhmZmZmLFxua2VybmVsL2JwZi92ZXJpZmllci5jLTQ4NzctXHQgKiBvdGhlcndpc2UgZmluZF9nb29kX3BrdF9wb2ludGVycyB3b3VsZCBoYXZlIHJlZnVzZWQgdG8gc2V0IHJhbmdlIGluZm9cbmtlcm5lbC9icGYvdmVyaWZpZXIuYzo0ODc4Olx0ICogdGhhdCBfX2NoZWNrX21lbV9hY2Nlc3Mgd291bGQgaGF2ZSByZWplY3RlZCB0aGlzIHBrdCBhY2Nlc3MuXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtNDg3OS1cdCAqIFRoZXJlZm9yZSwgXCYjMzQ7b2ZmICYjNDM7IHJlZ191bWF4KHJlZykgJiM0Mzsgc2l6ZSAtIDFcJiMzNDsgd29uJiMzOTt0IG92ZXJmbG93IHUzMi5cbi0tXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM9NjMzMD1zdGF0aWMgaW50IGNoZWNrX21hcF9tZW1fcmVhZChzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52LCBzdHJ1Y3QgYnBmX3JlZ19zdGF0ZSAqcmVnLCBpbnQgb2ZmLFxuLS1cbmtlcm5lbC9icGYvdmVyaWZpZXIuYy02MzgwLSAqL1xua2VybmVsL2JwZi92ZXJpZmllci5jOjYzODE6c3RhdGljIGludCBjaGVja19tZW1fYWNjZXNzKHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYsIGludCBpbnNuX2lkeCwgc3RydWN0IGJwZl9yZWdfc3RhdGUgKnJlZywgYXJnbm9fdCBhcmdubyxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy02MzgyLVx0XHRcdCAgICBpbnQgb2ZmLCBpbnQgYnBmX3NpemUsIGVudW0gYnBmX2FjY2Vzc190eXBlIHQsXG4tLVxua2VybmVsL2JwZi92ZXJpZmllci5jPTY2NDA9c3RhdGljIGludCBjaGVja19sb2FkX21lbShzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52LCBzdHJ1Y3QgYnBmX2luc24gKmluc24sXG4tLVxua2VybmVsL2JwZi92ZXJpZmllci5jLTY2NzQtXHRicGZfZGlhZ19tb2RfYmVnaW4oZW52LCBcdTAwMjZyZWdzW2luc24tXHUwMDNlZHN0X3JlZ10sIE5VTEwsIEJQRl9ESUFHX01PRF9XUklURSk7XG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6NjY3NTpcdGVyciA9IGNoZWNrX21lbV9hY2Nlc3MoZW52LCBlbnYtXHUwMDNlaW5zbl9pZHgsIHJlZ3MgJiM0MzsgaW5zbi1cdTAwM2VzcmNfcmVnLCBhcmdub19mcm9tX3JlZyhpbnNuLVx1MDAzZXNyY19yZWcpLCBpbnNuLVx1MDAzZW9mZixcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy02Njc2LVx0XHRcdCAgICAgICBCUEZfU0laRShpbnNuLVx1MDAzZWNvZGUpLCBCUEZfUkVBRCwgaW5zbi1cdTAwM2Vkc3RfcmVnLFxuLS1cbmtlcm5lbC9icGYvdmVyaWZpZXIuYz02Njg3PXN0YXRpYyBpbnQgY2hlY2tfc3RvcmVfcmVnKHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYsIHN0cnVjdCBicGZfaW5zbiAqaW5zbixcbi0tXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtNjcxNi1cdC8qIENoZWNrIGlmIChkc3RfcmVnICYjNDM7IG9mZikgaXMgd3JpdGVhYmxlLiAqL1xua2VybmVsL2JwZi92ZXJpZmllci5jOjY3MTc6XHRlcnIgPSBjaGVja19tZW1fYWNjZXNzKGVudiwgZW52LVx1MDAzZWluc25faWR4LCByZWdzICYjNDM7IGluc24tXHUwMDNlZHN0X3JlZywgYXJnbm9fZnJvbV9yZWcoaW5zbi1cdTAwM2Vkc3RfcmVnKSwgaW5zbi1cdTAwM2VvZmYsXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtNjcxOC1cdFx0XHQgICAgICAgQlBGX1NJWkUoaW5zbi1cdTAwM2Vjb2RlKSwgQlBGX1dSSVRFLCBpbnNuLVx1MDAzZXNyY19yZWcsXG4tLVxua2VybmVsL2JwZi92ZXJpZmllci5jPTY3MjU9c3RhdGljIGludCBjaGVja19hdG9taWNfcm13KHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYsXG4tLVxua2VybmVsL2JwZi92ZXJpZmllci5jLTY3ODUtXHQgKi9cbmtlcm5lbC9icGYvdmVyaWZpZXIuYzo2Nzg2Olx0ZXJyID0gY2hlY2tfbWVtX2FjY2VzcyhlbnYsIGVudi1cdTAwM2VpbnNuX2lkeCwgZHN0X3JlZywgYXJnbm9fZnJvbV9yZWcoaW5zbi1cdTAwM2Vkc3RfcmVnKSwgaW5zbi1cdTAwM2VvZmYsXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtNjc4Ny1cdFx0XHQgICAgICAgQlBGX1NJWkUoaW5zbi1cdTAwM2Vjb2RlKSwgQlBGX1JFQUQsIC0xLCB0cnVlLCBmYWxzZSk7XG4tLVxua2VybmVsL2JwZi92ZXJpZmllci5jLTY3ODktXHRcdGJwZl9kaWFnX21vZF9iZWdpbihlbnYsIGN1cl9yZWdzKGVudikgJiM0MzsgbG9hZF9yZWcsIE5VTEwsIEJQRl9ESUFHX01PRF9XUklURSk7XG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6Njc5MDpcdFx0ZXJyID0gY2hlY2tfbWVtX2FjY2VzcyhlbnYsIGVudi1cdTAwM2VpbnNuX2lkeCwgZHN0X3JlZywgYXJnbm9fZnJvbV9yZWcoaW5zbi1cdTAwM2Vkc3RfcmVnKSxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy02NzkxLVx0XHRcdFx0ICAgICAgIGluc24tXHUwMDNlb2ZmLCBCUEZfU0laRShpbnNuLVx1MDAzZWNvZGUpLFxuLS1cbmtlcm5lbC9icGYvdmVyaWZpZXIuYy02ODAyLVx0LyogQ2hlY2sgd2hldGhlciB3ZSBjYW4gd3JpdGUgaW50byB0aGUgc2FtZSBtZW1vcnkuICovXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6NjgwMzpcdGVyciA9IGNoZWNrX21lbV9hY2Nlc3MoZW52LCBlbnYtXHUwMDNlaW5zbl9pZHgsIGRzdF9yZWcsIGFyZ25vX2Zyb21fcmVnKGluc24tXHUwMDNlZHN0X3JlZyksIGluc24tXHUwMDNlb2ZmLFxua2VybmVsL2JwZi92ZXJpZmllci5jLTY4MDQtXHRcdFx0ICAgICAgIEJQRl9TSVpFKGluc24tXHUwMDNlY29kZSksIEJQRl9XUklURSwgLTEsIHRydWUsIGZhbHNlKTtcbi0tXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM9NzYwNT1zdGF0aWMgaW50IHByb2Nlc3NfZHlucHRyX2Z1bmMoc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudiwgc3RydWN0IGJwZl9yZWdfc3RhdGUgKnJlZyxcbi0tXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtNzY1MS1cdFx0Zm9yIChpID0gMDsgaSBcdTAwM2MgQlBGX0RZTlBUUl9TSVpFOyBpICYjNDM7PSA4KSB7XG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6NzY1MjpcdFx0XHRlcnIgPSBjaGVja19tZW1fYWNjZXNzKGVudiwgaW5zbl9pZHgsIHJlZywgYXJnbm8sXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtNzY1My1cdFx0XHRcdFx0ICAgICAgIGksIEJQRl9EVywgQlBGX1dSSVRFLCAtMSwgZmFsc2UsIGZhbHNlKTtcbi0tXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM9Nzc0ND1zdGF0aWMgaW50IHByb2Nlc3NfaXRlcl9hcmcoc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudiwgc3RydWN0IGJwZl9yZWdfc3RhdGUgKnJlZywgYXJnbm9fdCBhcmdubywgaW50IGluc25faWR4LFxuLS1cbmtlcm5lbC9icGYvdmVyaWZpZXIuYy03Nzk0LVx0XHRmb3IgKGkgPSAwOyBpIFx1MDAzYyBucl9zbG90cyAqIDg7IGkgJiM0Mzs9IEJQRl9SRUdfU0laRSkge1xua2VybmVsL2JwZi92ZXJpZmllci5jOjc3OTU6XHRcdFx0ZXJyID0gY2hlY2tfbWVtX2FjY2VzcyhlbnYsIGluc25faWR4LCByZWcsIGFyZ25vLFxua2VybmVsL2JwZi92ZXJpZmllci5jLTc3OTYtXHRcdFx0XHRcdCAgICAgICBpLCBCUEZfRFcsIEJQRl9XUklURSwgLTEsIGZhbHNlLCBmYWxzZSk7XG4tLVxua2VybmVsL2JwZi92ZXJpZmllci5jPTEwODIzPXN0YXRpYyBpbnQgY2hlY2tfaGVscGVyX2NhbGwoc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudiwgc3RydWN0IGJwZl9pbnNuICppbnNuLFxuLS1cbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xMDkyOC1cdGZvciAoaSA9IDA7IGkgXHUwMDNjIG1ldGEuYXJnX3Jhd19tZW0uc2l6ZTsgaSYjNDM7JiM0MzspIHtcbmtlcm5lbC9icGYvdmVyaWZpZXIuYzoxMDkyOTpcdFx0ZXJyID0gY2hlY2tfbWVtX2FjY2VzcyhlbnYsIGluc25faWR4LCByZWdzICYjNDM7IG1ldGEuYXJnX3Jhd19tZW0ucmVnbm8sXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTA5MzAtXHRcdFx0XHQgICAgICAgYXJnbm9fZnJvbV9yZWcobWV0YS5hcmdfcmF3X21lbS5yZWdubyksIGksIEJQRl9CLFxuLS1cbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xMTE4My1cdFx0XHRcdCAqIGl0IHdpbGwgY29uZnVzZSB0aGUgY2hlY2sgb2YgUFRSX1RPX0JURl9JRCBpblxua2VybmVsL2JwZi92ZXJpZmllci5jOjExMTg0Olx0XHRcdFx0ICogY2hlY2tfbWVtX2FjY2VzcygpLlxua2VybmVsL2JwZi92ZXJpZmllci5jLTExMTg1LVx0XHRcdFx0ICovXG4tLVxua2VybmVsL2JwZi92ZXJpZmllci5jPTEyMTg1PXN0YXRpYyBpbnQgcHJvY2Vzc19pcnFfZmxhZyhzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52LCBzdHJ1Y3QgYnBmX3JlZ19zdGF0ZSAqcmVnLCBhcmdub190IGFyZ25vLFxuLS1cbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xMjIxOC1cbmtlcm5lbC9icGYvdmVyaWZpZXIuYzoxMjIxOTpcdFx0ZXJyID0gY2hlY2tfbWVtX2FjY2VzcyhlbnYsIGVudi1cdTAwM2VpbnNuX2lkeCwgcmVnLCBhcmdubywgMCwgQlBGX0RXLFxua2VybmVsL2JwZi92ZXJpZmllci5jLTEyMjIwLVx0XHRcdFx0ICAgICAgIEJQRl9XUklURSwgLTEsIGZhbHNlLCBmYWxzZSk7XG4tLVxua2VybmVsL2JwZi92ZXJpZmllci5jPTE4MjUyPXN0YXRpYyBpbnQgZG9fY2hlY2tfaW5zbihzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52LCBib29sICpkb19wcmludF9zdGF0ZSlcbi0tXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTgyODktXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6MTgyOTA6XHRcdGVyciA9IGNoZWNrX21lbV9hY2Nlc3MoZW52LCBlbnYtXHUwMDNlaW5zbl9pZHgsIGN1cl9yZWdzKGVudikgJiM0MzsgaW5zbi1cdTAwM2Vkc3RfcmVnLCBhcmdub19mcm9tX3JlZyhpbnNuLVx1MDAzZWRzdF9yZWcpLFxua2VybmVsL2JwZi92ZXJpZmllci5jLTE4MjkxLVx0XHRcdFx0ICAgICAgIGluc24tXHUwMDNlb2ZmLCBCUEZfU0laRShpbnNuLVx1MDAzZWNvZGUpLFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzEwIDE2OjE2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDEyOTIyCgkJCQkJCQlvdXRwdXQ6IDI3CgkJCQkJCQl0aG91Z2h0czogNDAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgc3VtbWFyeSwgdGFraW5nIG9uIHRoZSBwZXJzb25hIHlvdSYjMzk7dmUgZGVzY3JpYmVkOgoKKipCUEYgVmVyaWZpZXIgJmFtcDsgS2Z1bmMgQ29uZmlndXJhdGlvbiBDaGVjayoqCgpBbHJpZ2h0LCB0aW1lIHRvIGdldCB0aGlzIHNvcnRlZC4gRmlyc3QsIEkgbmVlZCB0byBtYWtlIGFic29sdXRlbHkgY2VydGFpbiB0aGF0IHRoZSBCUEYgdmVyaWZpZXIgYW5kIGtmdW5jcyBhcmUgY29uZmlndXJlZCBjb3JyZWN0bHkuIEkmIzM5O2xsIG5lZWQgdG8gZG91YmxlLWNoZWNrIHRoZWlyIEtjb25maWcgcmVxdWlyZW1lbnRzIOKAkyB5b3Uga25vdywgbWFrZSBzdXJlIGFsbCB0aGUgZGVwZW5kZW5jaWVzIGFyZSBzYXRpc2ZpZWQgYW5kIHRoYXQgZXZlcnl0aGluZyBpcyBzZXQgdXAgZm9yIHRoZSBidWlsZC4gSXQmIzM5O3MgZWFzeSB0byBtaXNzIGEgY3J1Y2lhbCBsaXR0bGUgZmxhZyBhbmQgdGhlbiBzcGVuZCBhZ2VzIGRlYnVnZ2luZyBsYXRlci4KClRvIGRvIHRoaXMgZWZmaWNpZW50bHksIEkmIzM5O2xsIGdvIGRpcmVjdGx5IHRvIHRoZSBzb3VyY2UuIExldCYjMzk7cyBzdGFydCB3aXRoIGBrZXJuZWwvYnBmL01ha2VmaWxlYCBhbmQgYGtlcm5lbC9icGYvS2NvbmZpZ2AuIFRoZXNlIGFyZSB0aGUgY3J1Y2lhbCBmaWxlcyB0aGF0IGNvbnRyb2wgdGhlIGJ1aWxkIHByb2Nlc3MgYW5kIGRlZmluZSB0aGUgY29uZmlndXJhdGlvbiBvcHRpb25zLiBDaGVja2luZyB0aGVzZSBmaWxlcyBzaG91bGQgZ2l2ZSBtZSBhIGNsZWFyIHBpY3R1cmUgb2Ygd2hhdCYjMzk7cyBlbmFibGVkLCB3aGF0JiMzOTtzIGRpc2FibGVkLCBhbmQgYW55IHNwZWNpZmljIGRlcGVuZGVuY2llcyB0aGUgQlBGIHZlcmlmaWVyIG9yIGtmdW5jcyBoYXZlLiBUaGlzIGlzIHN0YW5kYXJkIHByb2NlZHVyZSwgYnV0IGl0IG5ldmVyIGh1cnRzIHRvIGJlIHRob3JvdWdoLCBlc3BlY2lhbGx5IHdoZW4gZGVhbGluZyB3aXRoIHN1Y2ggY29yZSBmdW5jdGlvbmFsaXR5LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzEwIDE2OjE2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3ZlcmlmaWVyLm8mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtrZXJuZWwvYnBmJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2tlcm5lbC9icGYvTWFrZWZpbGU9Nz1DRkxBR1NfY29yZS5vICYjNDM7PSAtV25vLW92ZXJyaWRlLWluaXQgJChjZmxhZ3Mtbm9nY3NlLXl5KVxua2VybmVsL2JwZi9NYWtlZmlsZS04LVxua2VybmVsL2JwZi9NYWtlZmlsZTo5Om9iai0kKENPTkZJR19CUEZfU1lTQ0FMTCkgJiM0Mzs9IHN5c2NhbGwubyB2ZXJpZmllci5vIGlub2RlLm8gaGVscGVycy5vIHRudW0ubyBjbnVtLm8gbG9nLm8gdG9rZW4ubyBsaXZlbmVzcy5vIGNvbnN0X2ZvbGQubyBkaWFnbm9zdGljcy5vXG5rZXJuZWwvYnBmL01ha2VmaWxlLTEwLW9iai0kKENPTkZJR19CUEZfU1lTQ0FMTCkgJiM0Mzs9IGJwZl9pdGVyLm8gbWFwX2l0ZXIubyB0YXNrX2l0ZXIubyBwcm9nX2l0ZXIubyBsaW5rX2l0ZXIub1xuLS1cbmtlcm5lbC9icGYvYnBmX2xzbS5jPTQxMz1jb25zdCBzdHJ1Y3QgYnBmX3Byb2dfb3BzIGxzbV9wcm9nX29wcyA9IHtcbi0tXG5rZXJuZWwvYnBmL2JwZl9sc20uYy00MTUtXG5rZXJuZWwvYnBmL2JwZl9sc20uYzo0MTY6Y29uc3Qgc3RydWN0IGJwZl92ZXJpZmllcl9vcHMgbHNtX3ZlcmlmaWVyX29wcyA9IHtcbmtlcm5lbC9icGYvYnBmX2xzbS5jLTQxNy1cdC5nZXRfZnVuY19wcm90byA9IGJwZl9sc21fZnVuY19wcm90byxcbi0tXG5rZXJuZWwvYnBmL2JwZl9zdHJ1Y3Rfb3BzLmM9NjQ9c3RhdGljIERFRklORV9NVVRFWCh1cGRhdGVfbXV0ZXgpO1xuLS1cbmtlcm5lbC9icGYvYnBmX3N0cnVjdF9vcHMuYy02OC1cbmtlcm5lbC9icGYvYnBmX3N0cnVjdF9vcHMuYzo2OTpjb25zdCBzdHJ1Y3QgYnBmX3ZlcmlmaWVyX29wcyBicGZfc3RydWN0X29wc192ZXJpZmllcl9vcHMgPSB7XG5rZXJuZWwvYnBmL2JwZl9zdHJ1Y3Rfb3BzLmMtNzAtfTtcbi0tXG5rZXJuZWwvYnBmL2J0Zi5jPTU5NjQ9c3RhdGljIHN0cnVjdCBidGYgKmJ0Zl9wYXJzZShjb25zdCB1bmlvbiBicGZfYXR0ciAqYXR0ciwgYnBmcHRyX3QgdWF0dHIsXG4tLVxua2VybmVsL2JwZi9idGYuYy01OTgwLVxua2VybmVsL2JwZi9idGYuYzo1OTgxOlx0LyogdXNlciBjb3VsZCBoYXZlIHJlcXVlc3RlZCB2ZXJib3NlIHZlcmlmaWVyIG91dHB1dFxua2VybmVsL2JwZi9idGYuYy01OTgyLVx0ICogYW5kIHN1cHBsaWVkIGJ1ZmZlciB0byBzdG9yZSB0aGUgdmVyaWZpY2F0aW9uIHRyYWNlXG4tLVxua2VybmVsL2JwZi9jZ3JvdXAuYz0xOTIzPWNvbnN0IHN0cnVjdCBicGZfcHJvZ19vcHMgY2dfZGV2X3Byb2dfb3BzID0ge1xuLS1cbmtlcm5lbC9icGYvY2dyb3VwLmMtMTkyNS1cbmtlcm5lbC9icGYvY2dyb3VwLmM6MTkyNjpjb25zdCBzdHJ1Y3QgYnBmX3ZlcmlmaWVyX29wcyBjZ19kZXZfdmVyaWZpZXJfb3BzID0ge1xua2VybmVsL2JwZi9jZ3JvdXAuYy0xOTI3LVx0LmdldF9mdW5jX3Byb3RvXHRcdD0gY2dyb3VwX2Rldl9mdW5jX3Byb3RvLFxuLS1cbmtlcm5lbC9icGYvY2dyb3VwLmM9MjQ3OD1zdGF0aWMgdTMyIHN5c2N0bF9jb252ZXJ0X2N0eF9hY2Nlc3MoZW51bSBicGZfYWNjZXNzX3R5cGUgdHlwZSxcbi0tXG5rZXJuZWwvYnBmL2Nncm91cC5jLTI1NDEtXG5rZXJuZWwvYnBmL2Nncm91cC5jOjI1NDI6Y29uc3Qgc3RydWN0IGJwZl92ZXJpZmllcl9vcHMgY2dfc3lzY3RsX3ZlcmlmaWVyX29wcyA9IHtcbmtlcm5lbC9icGYvY2dyb3VwLmMtMjU0My1cdC5nZXRfZnVuY19wcm90b1x0XHQ9IHN5c2N0bF9mdW5jX3Byb3RvLFxuLS1cbmtlcm5lbC9icGYvY2dyb3VwLmM9Mjc1Nj1zdGF0aWMgaW50IGNnX3NvY2tvcHRfZ2V0X3Byb2xvZ3VlKHN0cnVjdCBicGZfaW5zbiAqaW5zbl9idWYsXG4tLVxua2VybmVsL2JwZi9jZ3JvdXAuYy0yNzY0LVxua2VybmVsL2JwZi9jZ3JvdXAuYzoyNzY1OmNvbnN0IHN0cnVjdCBicGZfdmVyaWZpZXJfb3BzIGNnX3NvY2tvcHRfdmVyaWZpZXJfb3BzID0ge1xua2VybmVsL2JwZi9jZ3JvdXAuYy0yNzY2LVx0LmdldF9mdW5jX3Byb3RvXHRcdD0gY2dfc29ja29wdF9mdW5jX3Byb3RvLFxuLS1cbmtlcm5lbC9icGYvZml4dXBzLmM9NzQ2PWludCBicGZfY29udmVydF9jdHhfYWNjZXNzZXMoc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudilcbi0tXG5rZXJuZWwvYnBmL2ZpeHVwcy5jLTc0OC1cdHN0cnVjdCBicGZfc3VicHJvZ19pbmZvICpzdWJwcm9ncyA9IGVudi1cdTAwM2VzdWJwcm9nX2luZm87XG5rZXJuZWwvYnBmL2ZpeHVwcy5jOjc0OTpcdGNvbnN0IHN0cnVjdCBicGZfdmVyaWZpZXJfb3BzICpvcHMgPSBlbnYtXHUwMDNlb3BzO1xua2VybmVsL2JwZi9maXh1cHMuYy03NTAtXHRpbnQgaSwgY250LCBzaXplLCBjdHhfZmllbGRfc2l6ZSwgcmV0LCBkZWx0YSA9IDAsIGVwaWxvZ3VlX2NudCA9IDA7XG4tLVxua2VybmVsL2JwZi9oZWxwZXJzLmMtMzUtLyogSWYga2VybmVsIHN1YnN5c3RlbSBpcyBhbGxvd2luZyBlQlBGIHByb2dyYW1zIHRvIGNhbGwgdGhpcyBmdW5jdGlvbixcbmtlcm5lbC9icGYvaGVscGVycy5jOjM2OiAqIGluc2lkZSBpdHMgb3duIHZlcmlmaWVyX29wcy1cdTAwM2VnZXRfZnVuY19wcm90bygpIGNhbGxiYWNrIGl0IHNob3VsZCByZXR1cm5cbmtlcm5lbC9icGYvaGVscGVycy5jLTM3LSAqIGJwZl9tYXBfbG9va3VwX2VsZW1fcHJvdG8sIHNvIHRoYXQgdmVyaWZpZXIgY2FuIHByb3Blcmx5IGNoZWNrIHRoZSBhcmd1bWVudHNcbi0tXG5rZXJuZWwvYnBmL3N5c2NhbGwuYz02NjMwPXN5c2NhbGxfcHJvZ19mdW5jX3Byb3RvKGVudW0gYnBmX2Z1bmNfaWQgZnVuY19pZCwgY29uc3Qgc3RydWN0IGJwZl9wcm9nICpwcm9nKVxuLS1cbmtlcm5lbC9icGYvc3lzY2FsbC5jLTY2NDYtXG5rZXJuZWwvYnBmL3N5c2NhbGwuYzo2NjQ3OmNvbnN0IHN0cnVjdCBicGZfdmVyaWZpZXJfb3BzIGJwZl9zeXNjYWxsX3ZlcmlmaWVyX29wcyA9IHtcbmtlcm5lbC9icGYvc3lzY2FsbC5jLTY2NDgtXHQuZ2V0X2Z1bmNfcHJvdG8gID0gc3lzY2FsbF9wcm9nX2Z1bmNfcHJvdG8sXG4tLVxua2VybmVsL2JwZi90YXNrX2l0ZXIuYz05OTI9X19icGZfa2Z1bmMgc3RydWN0IHZtX2FyZWFfc3RydWN0ICpicGZfaXRlcl90YXNrX3ZtYV9uZXh0KHN0cnVjdCBicGZfaXRlcl90YXNrX3ZtYSAqaXQpXG4tLVxua2VybmVsL2JwZi90YXNrX2l0ZXIuYy0xMDEwLVx0Lypcbmtlcm5lbC9icGYvdGFza19pdGVyLmM6MTAxMTpcdCAqIFRoZSB2ZXJpZmllciBvbmx5IHRydXN0cyB2bV9tbSBhbmQgdm1fZmlsZSAoc2VlXG5rZXJuZWwvYnBmL3Rhc2tfaXRlci5jLTEwMTItXHQgKiBCVEZfVFlQRV9TQUZFX1RSVVNURURfT1JfTlVMTCBpbiB2ZXJpZmllci5jKS4gVGFrZSBhIHJlZmVyZW5jZVxuLS1cbmtlcm5lbC9icGYvdHJhbXBvbGluZS5jLTE3LS8qIGR1bW15IF9vcHMuIFRoZSB2ZXJpZmllciB3aWxsIG9wZXJhdGUgb24gdGFyZ2V0IHByb2dyYW0mIzM5O3Mgb3BzLiAqL1xua2VybmVsL2JwZi90cmFtcG9saW5lLmM6MTg6Y29uc3Qgc3RydWN0IGJwZl92ZXJpZmllcl9vcHMgYnBmX2V4dGVuc2lvbl92ZXJpZmllcl9vcHMgPSB7XG5rZXJuZWwvYnBmL3RyYW1wb2xpbmUuYy0xOS19O1xuLS1cbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0zOS1cbmtlcm5lbC9icGYvdmVyaWZpZXIuYzo0MDpzdGF0aWMgY29uc3Qgc3RydWN0IGJwZl92ZXJpZmllcl9vcHMgKiBjb25zdCBicGZfdmVyaWZpZXJfb3BzW10gPSB7XG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtNDEtI2RlZmluZSBCUEZfUFJPR19UWVBFKF9pZCwgX25hbWUsIHByb2dfY3R4X3R5cGUsIGtlcm5fY3R4X3R5cGUpIFxcXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6NDI6XHRbX2lkXSA9IFx1MDAyNiBfbmFtZSAjIyBfdmVyaWZpZXJfb3BzLFxua2VybmVsL2JwZi92ZXJpZmllci5jLTQzLSNkZWZpbmUgQlBGX01BUF9UWVBFKF9pZCwgX29wcylcbi0tXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM9NzI4MD1lbnVtIHtcbi0tXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtNzI5MS0gKiBGb3IgdHJhZGl0aW9uYWwgUFRSX1RPX01BUF9WQUxVRSBvciBQVFJfVE9fQlRGX0lEIHwgTUVNX0FMTE9DLCB0aGUgdmVyaWZpZXJcbmtlcm5lbC9icGYvdmVyaWZpZXIuYzo3MjkyOiAqIGNsZWFycyByZWctXHUwMDNlaWQgYWZ0ZXIgdmFsdWVfb3JfbnVsbC1cdTAwM2V2YWx1ZSB0cmFuc2l0aW9uLCBzaW5jZSB0aGUgdmVyaWZpZXIgb25seVxua2VybmVsL2JwZi92ZXJpZmllci5jLTcyOTMtICogY2FyZXMgYWJvdXQgdGhlIHJhbmdlIG9mIGFjY2VzcyB0byB2YWxpZCBtYXAgdmFsdWUgcG9pbnRlciBhbmQgZG9lc24mIzM5O3QgY2FyZVxuLS1cbmtlcm5lbC9icGYvdmVyaWZpZXIuYz0xNDU2NT1zdGF0aWMgaW50IGFkanVzdF9wdHJfbWluX21heF92YWxzKHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYsIHN0cnVjdCBicGZfaW5zbiAqaW5zbixcbi0tXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTQ3MzktXHRcdFx0XHRlbnYsIFwmIzM0O1RoaXMgb3BlcmF0aW9uIHN1YnRyYWN0cyBwb2ludGVyIHJlZ2lzdGVyIFIlZCBmcm9tIHNjYWxhciByZWdpc3RlciBSJWQuIFwmIzM0O1xua2VybmVsL2JwZi92ZXJpZmllci5jOjE0NzQwOlx0XHRcdFx0XCYjMzQ7VGhlIHZlcmlmaWVyIG9ubHkgdHJhY2tzIHBvaW50ZXItbWludXMtc2NhbGFyIGFyaXRobWV0aWMgZm9yIGFsbG93ZWQgcG9pbnRlciB0eXBlcy5cJiMzNDssXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTQ3NDEtXHRcdFx0XHRwdHJfcmVnbm8sIGRzdCk7XG4tLVxua2VybmVsL2JwZi92ZXJpZmllci5jPTE3Njg3PWJvb2wgYnBmX2dldF9jYWxsX3N1bW1hcnkoc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudiwgc3RydWN0IGJwZl9pbnNuICpjYWxsLFxuLS1cbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xNzc1Mi0gKlxua2VybmVsL2JwZi92ZXJpZmllci5jOjE3NzUzOiAqIC0gaWYgc28sIGFuZCBpZiB2ZXJpZmllciBvciBjdXJyZW50IEpJVCBpbmxpbmVzIHRoZSBjYWxsIHRvIHRoZVxua2VybmVsL2JwZi92ZXJpZmllci5jLTE3NzU0LSAqICAgYnBmX2Zhc3RjYWxsIGZ1bmN0aW9uIChlLmcuIGEgaGVscGVyIGNhbGwpLCBrZXJuZWwgcmVtb3ZlcyB1bm5lY2Vzc2FyeVxuLS1cbmtlcm5lbC9icGYvdmVyaWZpZXIuYz0xOTczND1zdGF0aWMgaW50IGNoZWNrX3N0cnVjdF9vcHNfYnRmX2lkKHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYpXG4tLVxua2VybmVsL2JwZi92ZXJpZmllci5jLTE5ODUxLVx0cHJvZy1cdTAwM2VhdXgtXHUwMDNlYXR0YWNoX2Z1bmNfbmFtZSA9IG1uYW1lO1xua2VybmVsL2JwZi92ZXJpZmllci5jOjE5ODUyOlx0ZW52LVx1MDAzZW9wcyA9IHN0X29wcy1cdTAwM2V2ZXJpZmllcl9vcHM7XG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTk4NTMtXG4tLVxua2VybmVsL2JwZi92ZXJpZmllci5jPTIwNDg1PXN0YXRpYyBpbnQgY2hlY2tfYXR0YWNoX2J0Zl9pZChzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52KVxuLS1cbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0yMDUyNC1cdFx0ICovXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6MjA1MjU6XHRcdGVudi1cdTAwM2VvcHMgPSBicGZfdmVyaWZpZXJfb3BzW3RndF9wcm9nLVx1MDAzZXR5cGVdO1xua2VybmVsL2JwZi92ZXJpZmllci5jLTIwNTI2LVx0XHRwcm9nLVx1MDAzZWV4cGVjdGVkX2F0dGFjaF90eXBlID0gdGd0X3Byb2ctXHUwMDNlZXhwZWN0ZWRfYXR0YWNoX3R5cGU7XG4tLVxua2VybmVsL2JwZi92ZXJpZmllci5jPTIxMTU3PWludCBicGZfY2hlY2soc3RydWN0IGJwZl9wcm9nICoqcHJvZywgdW5pb24gYnBmX2F0dHIgKmF0dHIsIGJwZnB0cl90IHVhdHRyLFxuLS1cbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0yMTE2Ny1cdC8qIG5vIHByb2dyYW0gaXMgdmFsaWQgKi9cbmtlcm5lbC9icGYvdmVyaWZpZXIuYzoyMTE2ODpcdGlmIChBUlJBWV9TSVpFKGJwZl92ZXJpZmllcl9vcHMpID09IDApXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMjExNjktXHRcdHJldHVybiAtRUlOVkFMO1xuLS1cbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0yMTE3OS1cdGVudi1cdTAwM2Vwcm9nID0gKnByb2c7XG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6MjExODA6XHRlbnYtXHUwMDNlb3BzID0gYnBmX3ZlcmlmaWVyX29wc1tlbnYtXHUwMDNlcHJvZy1cdTAwM2V0eXBlXTtcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0yMTE4MS1cbi0tXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMjExODgtXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6MjExODk6XHQvKiB1c2VyIGNvdWxkIGhhdmUgcmVxdWVzdGVkIHZlcmJvc2UgdmVyaWZpZXIgb3V0cHV0XG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMjExOTAtXHQgKiBhbmQgc3VwcGxpZWQgYnVmZmVyIHRvIHN0b3JlIHRoZSB2ZXJpZmljYXRpb24gdHJhY2VcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD45LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMCAxNjoxNjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxNTc3OAoJCQkJCQkJb3V0cHV0OiAzMQoJCQkJCQkJdGhvdWdodHM6IDExNgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipLZXJuZWwgQ29uZmlndXJhdGlvbiBJbnZlc3RpZ2F0aW9uKioKCkFscmlnaHQsIGxldCYjMzk7cyBkaXZlIGluIGFuZCBzZWUgd2hhdCYjMzk7cyBnb2luZyBvbiB3aXRoIHRoZXNlIEJQRiBjb25maWd1cmF0aW9ucy4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRvIGNvbmZpcm0gdGhlIHN0YXR1cyBvZiBgQ09ORklHX0JQRl9TWVNDQUxMYCB3aXRoaW4gdGhlIEtjb25maWcgc3lzdGVtLiBUaGF0IG9uZSYjMzk7cyB0aGUgbGluY2hwaW4sIGVuYWJsaW5nIHRoZSBgYnBmKClgIHN5c2NhbGwgYW5kLCBjcnVjaWFsbHksIHRoZSBCUEYgdmVyaWZpZXIuIEJleW9uZCB0aGF0LCBJJiMzOTttIGFsc28gdGhpbmtpbmcgd2Ugc2hvdWxkIGRvdWJsZS1jaGVjayB0aGUgc3RhdHVzIG9mIGBDT05GSUdfQlBGX0VWRU5UU2AgYW5kIGBDT05GSUdfREVCVUdfSU5GT19CVEZgLiBBcmUgdGhlc2UgZXNzZW50aWFsLCBvciBhcmUgdGhleSBzdGFuZGFyZCBjb25maWd1cmF0aW9ucyB0aGF0IG1heSBiZSBlbmFibGVkIGJ5IGRlZmF1bHQ/CgpJJiMzOTtsbCBzcGVjaWZpY2FsbHkgbmVlZCB0byBhc2NlcnRhaW4gd2hldGhlciBgQ09ORklHX0JQRl9TWVNDQUxMYCBhbmQgYENPTkZJR19ERUJVR19JTkZPX0JURmAgYXJlIG5lY2Vzc2FyeSBkZXBlbmRlbmNpZXMgZm9yIHRoaXMgdXNlLWNhc2UsIG9yIGlmIHRoZXkmIzM5O3JlIHN0YW5kYXJkIGFuZCBwb3RlbnRpYWxseSBhbHJlYWR5IGluIHRoZSBkZXNpcmVkIHN0YXRlLiBJJiMzOTtsbCBzdGFydCBieSBkb2luZyBhIHF1aWNrIEtjb25maWcgc2VhcmNoIGZvciBgQlBGX1NZU0NBTExgIHRvIGdldCBhbiBvdmVydmlldyBvZiBpdHMgZGVwZW5kZW5jaWVzIGFuZCBpbXBsaWNhdGlvbnMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzEwIDE2OjE2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5FcnJvcjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm5vIG1hdGNoZXM8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIEJQRl9TWVNDQUxMJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7aW5pdC9LY29uZmlnJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O2Vycm9yJiMzNDs6ICYjMzQ7bm8gbWF0Y2hlcyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTAgMTY6MTY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTYxNTIKCQkJCQkJCW91dHB1dDogMjEKCQkJCQkJCXRob3VnaHRzOiAxNAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6CgoqKkJQRl9TWVNDQUxMIExvY2F0aW9uIFF1ZXN0KioKCk9rYXksIHNvIEkgbmVlZCB0byB0cmFjayBkb3duIHRoZSBkZWZpbml0aW9uIG9mIGBCUEZfU1lTQ0FMTGAuIE15IGluaXRpYWwgYXBwcm9hY2ggd291bGQgYmUgdG8gZGl2ZSBpbnRvIHRoZSBrZXJuZWwgc291cmNlLCBwcm9iYWJseSBzdGFydGluZyB3aXRoIHRoZSBoZWFkZXJzIHJlbGF0ZWQgdG8gdGhlIEJQRiBzdWJzeXN0ZW0uIEkmIzM5O2QgYW50aWNpcGF0ZSBpdCBiZWluZyBkZWZpbmVkIGluIG9uZSBvZiB0aGUgY29yZSBCUEYgaGVhZGVyIGZpbGVzLCBzb21ldGhpbmcgbGlrZSBgbGludXgvYnBmLmhgIG9yIHBvdGVudGlhbGx5IGEgaGVhZGVyIHJlbGF0ZWQgdG8gc3lzdGVtIGNhbGwgd3JhcHBlcnMgaWYgaXQmIzM5O3MgaW52b2x2ZWQgaW4gc3lzY2FsbCB0cmFjaW5nIG9yIGludGVyY2VwdGlvbi4gR2l2ZW4gdGhlIG5hbWluZywgaXQmIzM5O3MgaGlnaGx5IGxpa2VseSB0byBiZSBhbiBlbnVtZXJhdGlvbiBvciBtYWNyby4gSSYjMzk7bGwgbmVlZCB0byBjaGVjayBpZiB0aGVyZSBhcmUgcGxhdGZvcm0tc3BlY2lmaWMgdmFyaWF0aW9ucywgc28gSSBzaG91bGQgYmUgcHJlcGFyZWQgdG8gaGFuZGxlIGAjaWZkZWZgIG9yIHNpbWlsYXIgY29uZGl0aW9uYWwgY29tcGlsYXRpb24gZGlyZWN0aXZlcyB3aXRoaW4gdGhlIGhlYWRlciBmaWxlcy4gSSBzaG91bGQgYWxzbyBjb25zaWRlciBob3cgdGhpcyByZWxhdGVzIHRvIG90aGVyIHJlbGF0ZWQgY29uc3RhbnRzIGFuZCBzdHJ1Y3R1cmVzLCBzdWNoIGFzIGBicGZfcHJvZ190eXBlYCBvciBhbnkgYXNzb2NpYXRlZCBzeXNjYWxsIG51bWJlcnMuIFRoZSBnb2FsIGlzIHRvIGdldCB0aGUgcHJlY2lzZSB2YWx1ZSBhbmQgdW5kZXJzdGFuZCB0aGUgY29udGV4dCB3aXRoaW4gdGhlIGtlcm5lbCYjMzk7cyBCUEYgaW1wbGVtZW50YXRpb24uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzEwIDE2OjE2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBCUEZfU1lTQ0FMTCYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtrZXJuZWwvYnBmL0tjb25maWc9MjU9bWVudSBcJiMzNDtCUEYgc3Vic3lzdGVtXCYjMzQ7XG5rZXJuZWwvYnBmL0tjb25maWctMjYtXG5rZXJuZWwvYnBmL0tjb25maWc6Mjc6Y29uZmlnIEJQRl9TWVNDQUxMXG5rZXJuZWwvYnBmL0tjb25maWctMjgtXHRib29sIFwmIzM0O0VuYWJsZSBicGYoKSBzeXN0ZW0gY2FsbFwmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMCAxNjoxNjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxNjQ5MQoJCQkJCQkJb3V0cHV0OiAzNAoJCQkJCQkJdGhvdWdodHM6IDE5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhlIHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZToKCioqRXhhbWluaW5nIEJQRiBLY29uZmlnIENvbmZpZ3VyYXRpb24qKgoKT2theSwgSSBuZWVkIHRvIGRpdmUgaW50byB0aGUga2VybmVsJiMzOTtzIEJQRiBjb25maWd1cmF0aW9uLiBNeSBpbml0aWFsIGluc3RpbmN0IGlzIHRvIGdvIHN0cmFpZ2h0IHRvIGBrZXJuZWwvYnBmL0tjb25maWdgLCBzcGVjaWZpY2FsbHkgYXJvdW5kIGxpbmUgMjcuIEkmIzM5O20gcHJvYmFibHkgbG9va2luZyBmb3IgdGhlIGNvcmUgQlBGIGZlYXR1cmUgZW5hYmxlbWVudCBmbGFnLCBvciBtYXliZSBJJiMzOTttIHRyeWluZyB0byByZWNhbGwgYSByZWxhdGVkIG9wdGlvbiB0aGF0IEkgd2FudCB0byBkb3VibGUtY2hlY2suIENvdWxkIGJlIGFuIGV4cGVyaW1lbnRhbCBmZWF0dXJlIGZsYWcsIG9yIHNvbWV0aGluZyB0aWVkIHRvIGEgc3BlY2lmaWMgQlBGIGhlbHBlciB2ZXJzaW9uLiBJIHN1c3BlY3QgbGluZSAyNyB3aWxsIGxpa2VseSBsZWFkIG1lIHRvIHRoZSBtYWluIGVudHJ5IHBvaW50IG9yIGEgY3J1Y2lhbCBkZXBlbmRlbmN5IGluIHRoYXQgS2NvbmZpZyBmaWxlLiBJIGFtIGhvcGluZyB0byBnZXQgdG8gdGhlIHJvb3QgY2F1c2Ugb2YgYW4gaXNzdWUgSSYjMzk7bSB3b3JraW5nIHRocm91Z2guIEkmIzM5O20gZXhwZWN0aW5nIHRoaXMgdG8gcHJvdmlkZSB0aGUgYmFzZSBjb25maWd1cmF0aW9uIHRoYXQgYWxsIGZ1cnRoZXIgY29uZmlndXJhdGlvbiBpcyByZWxpYW50IG9uLiBUaW1lIHRvIHNlZSB3aGF0JiMzOTtzIHRoZXJlIGFuZCByZWZyZXNoIG15IG1lbW9yeSBvbiB0aGUgYnVpbGQgb3B0aW9ucy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTAgMTY6MTY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtrZXJuZWwvYnBmL0tjb25maWcmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAyNSwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiA0MAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgIDI1Olx0bWVudSBcJiMzNDtCUEYgc3Vic3lzdGVtXCYjMzQ7XG4gIDI2Olx0XG4gIDI3Olx0Y29uZmlnIEJQRl9TWVNDQUxMXG4gIDI4Olx0XHRib29sIFwmIzM0O0VuYWJsZSBicGYoKSBzeXN0ZW0gY2FsbFwmIzM0O1xuICAyOTpcdFx0c2VsZWN0IEJQRlxuICAzMDpcdFx0c2VsZWN0IElSUV9XT1JLXG4gIDMxOlx0XHRzZWxlY3QgTkVFRF9UQVNLU19SQ1VcbiAgMzI6XHRcdHNlbGVjdCBUQVNLU19UUkFDRV9SQ1VcbiAgMzM6XHRcdHNlbGVjdCBCSU5BUllfUFJJTlRGXG4gIDM0Olx0XHRzZWxlY3QgTkVUX1NPQ0tfTVNHIGlmIE5FVFxuICAzNTpcdFx0c2VsZWN0IE5FVF9YR1JFU1MgaWYgTkVUXG4gIDM2Olx0XHRzZWxlY3QgUEFHRV9QT09MIGlmIE5FVFxuICAzNzpcdFx0ZGVmYXVsdCBuXG4gIDM4Olx0XHRoZWxwXG4gIDM5Olx0XHQgIEVuYWJsZSB0aGUgYnBmKCkgc3lzdGVtIGNhbGwgdGhhdCBhbGxvd3MgdG8gbWFuaXB1bGF0ZSBCUEYgcHJvZ3JhbXNcbiAgNDA6XHRcdCAgYW5kIG1hcHMgdmlhIGZpbGUgZGVzY3JpcHRvcnMuXG4gIDQxOlx0XG4gIDQyOlx0Y29uZmlnIEJQRl9KSVRcbiAgNDM6XHRcdGJvb2wgXCYjMzQ7RW5hYmxlIEJQRiBKdXN0IEluIFRpbWUgY29tcGlsZXJcJiMzNDtcbiAgNDQ6XHRcdGRlcGVuZHMgb24gQlBGXG4gIDQ1Olx0XHRkZXBlbmRzIG9uIEhBVkVfQ0JQRl9KSVQgfHwgSEFWRV9FQlBGX0pJVFxuICA0NjpcdFx0c2VsZWN0IEVYRUNNRU1cbiAgNDc6XHRcdGhlbHBcbiAgNDg6XHRcdCAgQlBGIHByb2dyYW1zIGFyZSBub3JtYWxseSBoYW5kbGVkIGJ5IGEgQlBGIGludGVycHJldGVyLiBUaGlzIG9wdGlvblxuICA0OTpcdFx0ICBhbGxvd3MgdGhlIGtlcm5lbCB0byBnZW5lcmF0ZSBuYXRpdmUgY29kZSB3aGVuIGEgcHJvZ3JhbSBpcyBsb2FkZWRcbiAgNTA6XHRcdCAgaW50byB0aGUga2VybmVsLiBUaGlzIHdpbGwgc2lnbmlmaWNhbnRseSBzcGVlZC11cCBwcm9jZXNzaW5nIG9mIEJQRlxuICA1MTpcdFx0ICBwcm9ncmFtcy5cbiAgNTI6XHRcbiAgNTM6XHRcdCAgTm90ZSwgYW4gYWRtaW4gc2hvdWxkIGVuYWJsZSB0aGlzIGZlYXR1cmUgY2hhbmdpbmc6XG4gIDU0Olx0XHQgIC9wcm9jL3N5cy9uZXQvY29yZS9icGZfaml0X2VuYWJsZVxuICA1NTpcdFx0ICAvcHJvYy9zeXMvbmV0L2NvcmUvYnBmX2ppdF9oYXJkZW4gICAob3B0aW9uYWwpXG4gIDU2Olx0XHQgIC9wcm9jL3N5cy9uZXQvY29yZS9icGZfaml0X2thbGxzeW1zIChvcHRpb25hbClcbiAgNTc6XHRcbiAgNTg6XHRjb25maWcgQlBGX0pJVF9BTFdBWVNfT05cbiAgNTk6XHRcdGJvb2wgXCYjMzQ7UGVybWFuZW50bHkgZW5hYmxlIEJQRiBKSVQgYW5kIHJlbW92ZSBCUEYgaW50ZXJwcmV0ZXJcJiMzNDtcbiAgNjA6XHRcdGRlcGVuZHMgb24gQlBGX1NZU0NBTEwgXHUwMDI2XHUwMDI2IEhBVkVfRUJQRl9KSVQgXHUwMDI2XHUwMDI2IEJQRl9KSVRcbiAgNjE6XHRcdGhlbHBcbiAgNjI6XHRcdCAgRW5hYmxlcyBCUEYgSklUIGFuZCByZW1vdmVzIEJQRiBpbnRlcnByZXRlciB0byBhdm9pZCBzcGVjdWxhdGl2ZVxuICA2MzpcdFx0ICBleGVjdXRpb24gb2YgQlBGIGluc3RydWN0aW9ucyBieSB0aGUgaW50ZXJwcmV0ZXIuXG4gIDY0Olx0XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzEwIDE2OjE2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE3MzI0CgkJCQkJCQlvdXRwdXQ6IDEzNwoJCQkJCQkJdGhvdWdodHM6IDYyMwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBBbmFseXNpcyBvZiB0aGUgQlBGIFBhdGNoKioKCk9rYXksIGxldCYjMzk7cyBicmVhayB0aGlzIGRvd24uIE15IGluaXRpYWwgZm9jdXMgaXMgb24gdGhlIGtleSBzeW1ib2xzLCBhcyB1c3VhbDogYGNoZWNrX2tmdW5jX2NhbGxgIGFuZCBgY2hlY2tfbWVtX2FjY2Vzc2AuIFRoZXNlIGFyZSB0aGUgZnVuY3Rpb25zIHdpdGhpbiB0aGUgQlBGIHZlcmlmaWVyIHRoYXQgYXJlIGRpcmVjdGx5IG1vZGlmaWVkIGJ5IHRoaXMgcGF0Y2gsIHNwZWNpZmljYWxseSB3aXRoaW4gYGtlcm5lbC9icGYvdmVyaWZpZXIuY2AuIE15IHF1aWNrIGluaXRpYWwgc2NhbiBmbGFnZ2VkIHRoZXNlIGFzIHRoZSBrZXkgcG9pbnRzLCBhbmQgbm93IEkmIzM5O20gY29uZmlybWluZyB0aGF0LgoKSSBzZWUgdGhhdCB0aGUgY2hhbmdlcyBpbnZvbHZlIGFkZGluZyBjaGVja3MgcmVsYXRlZCB0byBgS0ZfUEVSRk1PTmAgYW5kIGByZG9ubHlfdW50cnVzdGVkYCBtZW1vcnkgYWNjZXNzLiBNYWtlcyBzZW5zZS4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIHNjb3BlIG9mIHRob3NlIGZsYWdzLiBgaXNfa2Z1bmNfcGVyZm1vbmAgaXMgYSBzdGF0aWMgaGVscGVyIGZ1bmN0aW9uIGluIHRoZSB2ZXJpZmllci5jIGZpbGUsIHNvIHRoZSBzY29wZSBtYWtlcyBwZXJmZWN0IHNlbnNlLgoKSSYjMzk7bSBkb3VibGUtY2hlY2tpbmcgdGhlIHNjb3BlLCB0aGUgc3BlY2lmaWMgbGluZXMgb2YgY29kZSB0aGF0IGhhdmUgYmVlbiBhZGRlZDoKCi0gICBgY2hlY2tfbWVtX2FjY2Vzc2A6IEkgc2VlIGEgbmV3IGNoZWNrIGZvciBgcmRvbmx5X3VudHJ1c3RlZCAmYW1wOyZhbXA7ICFlbnYtJmd0O2FsbG93X3B0cl9sZWFrc2AuIFRoYXQmIzM5O3MgaW1wb3J0YW50IGZvciBtZW1vcnkgc2FmZXR5LgotICAgYGlzX2tmdW5jX3BlcmZtb25gOiBBIGhlbHBlciBmdW5jdGlvbiwgdGhlIG5ldyBzdGF0aWMgZnVuY3Rpb24uCi0gICBgY2hlY2tfa2Z1bmNfY2FsbGA6IFRoZXJlJiMzOTtzIGEgbmV3IGNoZWNrIGZvciBgaXNfa2Z1bmNfcGVyZm1vbigmYW1wO21ldGEpICZhbXA7JmFtcDsgIWVudi0mZ3Q7YWxsb3dfcHRyX2xlYWtzYC4gVGhhdCBtYWtlcyBzZW5zZSBpbiB0aGUgY2FsbGluZyBjb250ZXh0LgoKSSYjMzk7bSBhbHNvIGNvbnNpZGVyaW5nIHRoZSBicm9hZGVyIGltcGxpY2F0aW9ucy4gVGhlIGBoZWxwZXJzLmNgIGZpbGUgaXMgdG91Y2hlZCwgdGhlIGRpZmYgaXMgYWRkaW5nIG1hY3JvIGRlY2xhcmF0aW9ucyB3aXRoaW4gdGhlIGBjb21tb25fYnRmX2lkc2AgdGFibGUuIEkmIzM5O20gbm90aW5nIHRoaXMsIGJ1dCBpdCBzZWVtcyBzZWNvbmRhcnkgdG8gdGhlIGNvcmUgdmVyaWZpY2F0aW9uIGNoYW5nZXMuCgpJJiMzOTttIGFsc28gdGhpbmtpbmcgdGhyb3VnaCBhbnkgcmVsZXZhbnQgY29uZmlndXJhdGlvbnMuIEkgc2VlIGBDT05GSUdfQlBGX0VWRU5UU2AsIHdoaWNoIHRyaWdnZXJzIHRoZSBhZGRpdGlvbiBvZiBgS0ZfUEVSRk1PTmAgZmxhZ3MgaW4gdGhlIGBoZWxwZXJzLmNgIGZpbGUuIFRoaXMgdGVsbHMgbWUgdGhhdCBgQlBGX0VWRU5UU2AgbWlnaHQgYmUgcmVsZXZhbnQsIGFuZCBJIHNob3VsZCBjb25zaWRlciBpdCBhcyBhbiBvcHRpb24uCgpOb3cgdGhhdCBJJiMzOTt2ZSByZXZpZXdlZCBldmVyeXRoaW5nLCB0aGUgbWFpbiBmb2N1cyBzdGlsbCBsaWVzIG9uIHRoZSB2ZXJpZmllciBjaGFuZ2VzIHJlbGF0ZWQgdG8gYGNoZWNrX2tmdW5jX2NhbGxgIGFuZCBgY2hlY2tfbWVtX2FjY2Vzc2AuIFllcywgdGhpcyBjaGFuZ2UgdG91Y2hlcyB0aGUgY29yZSBCUEYgdmVyaWZpY2F0aW9uIGxvZ2ljLiBZZXMsIHRoaXMgaXMgc29tZXRoaW5nIEkgd2FudCB0byBiZSAqdmVyeSogdGhvcm91Z2ggYWJvdXQuIFRoaXMgaXMgY2VydGFpbmx5IHdvcnRoIGZ1enppbmcuCgpJJiMzOTttIGNvbmZpZGVudCBpbiBteSBhc3Nlc3NtZW50LCBhbmQgSSYjMzk7bGwgcHJvY2VlZCB3aXRoIGBzZXQtcmVzdWx0c2AuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzEwIDE2OjE2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtCUEZfU1lTQ0FMTCYjMzQ7LAogICAgJiMzNDtCUEZfRVZFTlRTJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7Y2hlY2tfa2Z1bmNfY2FsbCYjMzQ7LAogICAgJiMzNDtjaGVja19tZW1fYWNjZXNzJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGludHJvZHVjZXMgYSBuZXcgS0ZfUEVSRk1PTiBrZnVuYyBmbGFnIGFuZCBlbmZvcmNlcyBDQVBfUEVSRk1PTi9DQVBfU1lTX0FETUlOIHBlcm1pc3Npb24gY2hlY2tzIGluIHRoZSBCUEYgdmVyaWZpZXIgKGNoZWNrX2tmdW5jX2NhbGwgYW5kIGNoZWNrX21lbV9hY2Nlc3MpLiBTaW5jZSB0aGVzZSBjaGFuZ2VzIG1vZGlmeSByZWFjaGFibGUgQlBGIHZlcmlmaWVyIGxvZ2ljIGV4ZWN1dGVkIGR1cmluZyBCUEYgcHJvZ3JhbSB2ZXJpZmljYXRpb24gdmlhIHN5c19icGYsIHRoZXkgd2FycmFudCBmdXp6aW5nLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtCUEZfU1lTQ0FMTCYjMzQ7LAogICAgJiMzNDtCUEZfRVZFTlRTJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7Y2hlY2tfa2Z1bmNfY2FsbCYjMzQ7LAogICAgJiMzNDtjaGVja19tZW1fYWNjZXNzJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGludHJvZHVjZXMgYSBuZXcgS0ZfUEVSRk1PTiBrZnVuYyBmbGFnIGFuZCBlbmZvcmNlcyBDQVBfUEVSRk1PTi9DQVBfU1lTX0FETUlOIHBlcm1pc3Npb24gY2hlY2tzIGluIHRoZSBCUEYgdmVyaWZpZXIgKGNoZWNrX2tmdW5jX2NhbGwgYW5kIGNoZWNrX21lbV9hY2Nlc3MpLiBTaW5jZSB0aGVzZSBjaGFuZ2VzIG1vZGlmeSByZWFjaGFibGUgQlBGIHZlcmlmaWVyIGxvZ2ljIGV4ZWN1dGVkIGR1cmluZyBCUEYgcHJvZ3JhbSB2ZXJpZmljYXRpb24gdmlhIHN5c19icGYsIHRoZXkgd2FycmFudCBmdXp6aW5nLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE3LzE8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMCAxNjoxNjwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+SWY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzEwIDE2OjE2PC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPmttc2FuLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmNvcmU8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggaW50cm9kdWNlcyB0aGUgS0ZfUEVSRk1PTiBrZnVuYyBmbGFnIGFuZCBlbmZvcmNlcyBjYXBhYmlsaXR5IGNoZWNrcyBpbiB0aGUgQlBGIHZlcmlmaWVyIChyZXF1aXJpbmcgQ0FQX1BFUkZNT04gLyBDQVBfU1lTX0FETUlOIHZpYSBlbnYtXHUwMDNlYWxsb3dfcHRyX2xlYWtzKSBmb3IgY2VydGFpbiBrZnVuY3MgYW5kIHVudHJ1c3RlZCByZWFkLW9ubHkgbWVtb3J5IGFjY2Vzc2VzLlxuXG5UaGUgY2hhbmdlcyBhcmUgZW50aXJlbHkgcmVzdHJpY3RlZCB0byBCUEYgdmVyaWZpZXIgYWNjZXNzLWNvbnRyb2wgY2hlY2tzIGFuZCBmbGFnIGRlZmluaXRpb25zLiBUaGV5IGRvIG5vdCBhbHRlciBtZW1vcnkgaW5pdGlhbGl6YXRpb24sIGRvIG5vdCBpbnRyb2R1Y2Ugb3IgY29weSB1bmluaXRpYWxpemVkIGRhdGEgc3RydWN0dXJlcyB0byB1c2VyIHNwYWNlLCBhbmQgZG8gbm90IGludHJvZHVjZSBsb2dpYyB0aGF0IGJyYW5jaGVzIG9uIHVuaW5pdGlhbGl6ZWQgbWVtb3J5LiBUaHVzLCB0aGVyZSBhcmUgbm8gdW5pbml0aWFsaXplZCBtZW1vcnkgcmlza3MgdGhhdCByZXF1aXJlIGEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbi4mIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgc2VjdXJpdHkgZW5naW5lZXIgc3BlY2lhbGl6aW5nIGluIGtlcm5lbCBtZW1vcnkKZXJyb3IgZGV0ZWN0b3JzIChLQVNBTiBhbmQgS01TQU4pLiBZb3VyIGpvYiBpcyB0byByZXZpZXcgdGhlIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQKZGV0ZXJtaW5lIGlmIHRoZSBjb2RlIGNoYW5nZXMganVzdGlmeSBzcGF3bmluZyBhIGRlZGljYXRlZCBLTVNBTiAoS2VybmVsTWVtb3J5U2FuaXRpemVyKQpmdXp6aW5nIHNlc3Npb24gaW4gYWRkaXRpb24gdG8gc3RhbmRhcmQgS0FTQU4gZnV6emluZy4KCkNSSVRJQ0FMIERJU1RJTkNUSU9OIEJFVFdFRU4gS0FTQU4gQU5EIEtNU0FOOgotIFN0YW5kYXJkIEtBU0FOIGtlcm5lbCBidWlsZHMgKHVwc3RyZWFtLWFwcGFybW9yLWthc2FuLmNvbmZpZykgYWxyZWFkeSBlbmFibGUKICBhIGNvbXByZWhlbnNpdmUgc3VpdGUgb2YgZGVidWdnaW5nIHRvb2xzIGFuZCBzYW5pdGl6ZXJzLCBpbmNsdWRpbmcgS0FTQU4KICAob3V0LW9mLWJvdW5kcyBhY2Nlc3NlcywgdXNlLWFmdGVyLWZyZWUsIGRvdWJsZSBmcmVlLCBpbnZhbGlkIGZyZWUpLCBMT0NLREVQCiAgKGxvY2tpbmcgYnVncyBhbmQgZGVhZGxvY2tzKSwgVUItc2FuaXRpemVycywgYW5kIG1lbW9yeSBjb3JydXB0aW9uIGNoZWNrcy4KLSBLTVNBTiAoS2VybmVsTWVtb3J5U2FuaXRpemVyKSBkZXRlY3RzIHJlYWRzIG9mIFVOSU5JVElBTElaRUQgbWVtb3J5IChzdGFjaywgaGVhcCwKICBvciBwYWdlIGFsbG9jYXRpb25zKSBhbmQga2VybmVsLXRvLXVzZXIgbWVtb3J5IGluZm8tbGVha3MuCgpSdWxlOiBUSEVSRSBJUyBOTyBTRU5TRSBJTiBSVU5OSU5HIEEgS01TQU4gU0VTU0lPTiBJRiBBIEJVRyBDQU4gQkUgQ0FVR0hUIEJZIEtBU0FOLApMT0NLREVQLCBPUiBPVEhFUiBTVEFOREFSRCBCVUcgREVURUNUT1JTLgpBIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaW5jdXJzIHNpZ25pZmljYW50IHJlc291cmNlIGNvc3RzLiBZb3UgbXVzdCBPTkxZCnNldCBOZWVkc0tNU0FOPXRydWUgaWYgdGhlIGNvZGUgY2hhbmdlcyBpbnRyb2R1Y2Ugb3IgZXhwb3NlIFVOSU5JVElBTElaRUQgTUVNT1JZIHJpc2tzCnRoYXQgYXJlIGRldGVjdGVkIE9OTFkgYnkgS01TQU4uCgpMb29rIGhvbGlzdGljYWxseSBhdCB0aGUgcGF0Y2ggc2VyaWVzIGFuZCBzdXJyb3VuZGluZyBjb2RlLiBFdmVuIGlmIG5vIGRpcmVjdAp1bmluaXRpYWxpemVkIGZpZWxkIGFjY2Vzc2VzIG9yIG5ldyBidWZmZXIgYWxsb2NhdGlvbnMgYXJlIGFkZGVkIGluIHRoZSBkaWZmIGl0c2VsZiwKYSBwYXRjaCBtYXkgYWx0ZXIgY29udHJvbCBmbG93LCBib3VuZHMgY2hlY2tpbmcsIG9yIGRhdGEgbGVuZ3RoIGNhbGN1bGF0aW9ucyBpbiB3YXlzCnRoYXQgY2hhbmdlIGhvdyB0aGUgcmVzdCBvZiB0aGUgY29kZSBvcGVyYXRlcyBvbiBleGlzdGluZyBidWZmZXJzIChlLmcuIGFsbG93aW5nCnVuaW5pdGlhbGl6ZWQgc3RhY2svaGVhcCBtZW1vcnkgdG8gYmUgcmVhZCwgY29waWVkIHRvIHVzZXIgc3BhY2UsIG9yIHVzZWQgaW4gY29udHJvbApmbG93KS4gRG8gbm90IGhlc2l0YXRlIHRvIHVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGluc3BlY3QgdGhlIHN1cnJvdW5kaW5nIGNvZGUsCmNhbGxlZCBmdW5jdGlvbnMsIGFuZCBjYWxsZXJzLgoKU2V0IE5lZWRzS01TQU49dHJ1ZSBPTkxZIElGIHRoZSBwYXRjaCBpbnRyb2R1Y2VzIG9yIG1vZGlmaWVzOgoxLiBLZXJuZWwgc3RydWN0dXJlcyBzZW50IHRvIHVzZXIgc3BhY2UgKHZpYSBjb3B5X3RvX3VzZXIsIHB1dF91c2VyLCBuZXRsaW5rIHNrYgogICBhdHRyaWJ1dGVzLCBpb2N0bCBvdXRwdXQgYXJndW1lbnRzLCBzb2NrZXQgb3B0aW9ucywgb3IgQlBGIGJ1ZmZlcnMpIHdoZXJlIGZpZWxkcwogICBvciBzdHJ1Y3R1cmUgcGFkZGluZyBtaWdodCBub3QgYmUgZnVsbHkgaW5pdGlhbGl6ZWQvemVyb2VkLgoyLiBDb25kaXRpb25hbCBsb2dpYyBvciBicmFuY2hpbmcgdGhhdCBkZXBlbmRzIG9uIHBvdGVudGlhbGx5IHVuaW5pdGlhbGl6ZWQgdmFyaWFibGVzCiAgIG9yIHN0cnVjdCBmaWVsZHMuCjMuIEFsbG9jYXRpb24gb3IgaW5pdGlhbGl6YXRpb24gb2YgY29tcGxleCBkYXRhIHN0cnVjdHVyZXMgd2hlcmUgdW5pbml0aWFsaXplZCBmaWVsZHMKICAgY291bGQgYmUgcmVhZCBsYXRlciBpbiByZWFjaGFibGUgY29kZSBwYXRocy4KNC4gQm91bmRzIGNoZWNrcywgbGVuZ3Rocywgb3IgbG9naWMgaW4gYSB3YXkgdGhhdCBhbGxvd3Mgc3Vycm91bmRpbmcgY29kZSB0byBhY2Nlc3MKICAgdW5pbml0aWFsaXplZCBieXRlcyBvZiBleGlzdGluZyBidWZmZXJzLgoKU2V0IE5lZWRzS01TQU49ZmFsc2UgSUY6Ci0gVGhlIGNvZGUgY2hhbmdlcyBwcmltYXJpbHkgcmlzayBvdXQtb2YtYm91bmRzIGFjY2VzcywgYXJyYXkgb3ZlcmZsb3dzLCBOVUxMIHBvaW50ZXIKICBkZXJlZmVyZW5jZXMsIGxvY2tpbmcgZGVhZGxvY2tzLCBvciB1c2UtYWZ0ZXItZnJlZSBidWdzICh0aGVzZSBhcmUgYWxyZWFkeSBjYXVnaHQKICBieSBLQVNBTiwgTE9DS0RFUCwgb3Igc3RhbmRhcmQgYnVnIGRldGVjdG9ycykuCi0gQWxsIHN0YWNrL2hlYXAgc3RydWN0dXJlcyB0b3VjaGVkIG9yIGludHJvZHVjZWQgYnkgdGhlIHBhdGNoIGFyZSBmdWxseSB6ZXJvZWQKICBvciBpbml0aWFsaXplZCAoZS5nLiB1c2luZyA9IHswfSwgbWVtc2V0LCBremFsbG9jKSBiZWZvcmUgYmVpbmcgcmVhZCBvciBjb3BpZWQuCi0gVGhlIHBhdGNoIGRvZXMgbm90IGludHJvZHVjZSBhbnkgcmlzayBvZiB1bmluaXRpYWxpemVkIG1lbW9yeSB1c2FnZSBvciBpbmZvLWxlYWtzLgoKVXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gaW5zcGVjdCB0aGUgc3Vycm91bmRpbmcgY29kZSBpZiBuZWNlc3NhcnksIHRoZW4gcHJvdmlkZQpkZXRhaWxlZCBLTVNBTlJlYXNvbmluZyBjb250cmFzdGluZyBLQVNBTiB2cyBLTVNBTiBhcHBsaWNhYmlsaXR5IGZvciB0aGlzIHBhdGNoLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPlRhcmdldCBhcmNoaXRlY3R1cmU6IGFtZDY0CgpGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IDQ3NTQ3ZWU3YTU0MDkyM2U2MjE5ZjQ1YmQ4YjI2ZTI5ZGE4YzFmNTAKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgVGh1IFNlcCAxMCAxNjoxNTo0MiAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vYnBmL2tmdW5jcy5yc3QgYi9Eb2N1bWVudGF0aW9uL2JwZi9rZnVuY3MucnN0CmluZGV4IDg1ZjczZTBiYmQwZmYuLjY2OTFmZThhMzJjM2QgMTAwNjQ0Ci0tLSBhL0RvY3VtZW50YXRpb24vYnBmL2tmdW5jcy5yc3QKJiM0MzsmIzQzOyYjNDM7IGIvRG9jdW1lbnRhdGlvbi9icGYva2Z1bmNzLnJzdApAQCAtNDg2LDYgJiM0Mzs0ODYsMTYgQEAgRXhhbXBsZSB1c2FnZSBpbiBCUEYgcHJvZ3JhbToKIAkvKiBub3RlIHRoYXQgdGhlIGxhc3QgYXJndW1lbnQgaXMgb21pdHRlZCAqLwogICAgICAgICBicGZfdGFza193b3JrX3NjaGVkdWxlX3NpZ25hbCh0YXNrLCAmYW1wO3dvcmstJmd0O3R3LCAmYW1wO2Fycm1hcCwgdGFza193b3JrX2NhbGxiYWNrKTsKIAomIzQzOzIuNS4xMCBLRl9QRVJGTU9OIGZsYWcKJiM0MzstLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiYjNDM7CiYjNDM7VGhlIEtGX1BFUkZNT04gZmxhZyBpcyB1c2VkIGZvciBrZnVuY3MgdGhhdCBjYW4gZXhwb3NlIGtlcm5lbCBtZW1vcnkgb3Iga2VybmVsCiYjNDM7YWRkcmVzc2VzIHRvIHRoZSBCUEYgcHJvZ3JhbSwgZm9yIGV4YW1wbGUgYnkgcmVhZGluZyB0aHJvdWdoIGEgcG9pbnRlciB0aGF0IHRoZQomIzQzO3ZlcmlmaWVyIGRvZXMgbm90IGNoZWNrLiBDYWxsaW5nIHN1Y2ggYSBrZnVuYyByZXF1aXJlcyBDQVBfUEVSRk1PTiwgb3IKJiM0MztDQVBfU1lTX0FETUlOLCBpbiB0aGUgc2FtZSB3YXkgdGhhdCB0aGUgZXF1aXZhbGVudCBCUEYgaGVscGVycyBhcmUgZ2F0ZWQgaW4KJiM0MzticGZfYmFzZV9mdW5jX3Byb3RvKCkuIEEgcHJvZ3JhbSBsb2FkZWQgd2l0aCBDQVBfQlBGIGFsb25lIGlzIHJlamVjdGVkIGF0IGxvYWQKJiM0Mzt0aW1lLgomIzQzOwogMi42IFJlZ2lzdGVyaW5nIHRoZSBrZnVuY3MKIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgvYnRmLmggYi9pbmNsdWRlL2xpbnV4L2J0Zi5oCmluZGV4IDg5ZDVhNWM0ZjExNzEuLjdjNjJlYTE3YjExNjMgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvbGludXgvYnRmLmgKJiM0MzsmIzQzOyYjNDM7IGIvaW5jbHVkZS9saW51eC9idGYuaApAQCAtODAsNiAmIzQzOzgwLDcgQEAKICNkZWZpbmUgS0ZfQVJFTkFfQVJHMiAgICgxICZsdDsmbHQ7IDE1KSAvKiBrZnVuYyB0YWtlcyBhbiBhcmVuYSBwb2ludGVyIGFzIGl0cyBzZWNvbmQgYXJndW1lbnQgKi8KICNkZWZpbmUgS0ZfSU1QTElDSVRfQVJHUyAoMSAmbHQ7Jmx0OyAxNikgLyoga2Z1bmMgaGFzIGltcGxpY2l0IGFyZ3VtZW50cyBzdXBwbGllZCBieSB0aGUgdmVyaWZpZXIgKi8KICNkZWZpbmUgS0ZfU1BJTkxPQ0tfU0FGRSAoMSAmbHQ7Jmx0OyAxNykgLyoga2Z1bmMgaXMgYWxsb3dlZCBpbnNpZGUgYnBmX3NwaW5fbG9jay1lZCByZWdpb24gKi8KJiM0MzsjZGVmaW5lIEtGX1BFUkZNT04gICAgICAoMSAmbHQ7Jmx0OyAxOCkgLyoga2Z1bmMgcmVxdWlyZXMgQ0FQX1BFUkZNT04gKi8KIAogLyoKICAqIFRhZyBtYXJraW5nIGEga2VybmVsIGZ1bmN0aW9uIGFzIGEga2Z1bmMuIFRoaXMgaXMgbWVhbnQgdG8gbWluaW1pemUgdGhlCmRpZmYgLS1naXQgYS9rZXJuZWwvYnBmL2hlbHBlcnMuYyBiL2tlcm5lbC9icGYvaGVscGVycy5jCmluZGV4IGIzY2M1YzhmYzg3NTYuLjhhMGVlYjRmNjIzNmQgMTAwNjQ0Ci0tLSBhL2tlcm5lbC9icGYvaGVscGVycy5jCiYjNDM7JiM0MzsmIzQzOyBiL2tlcm5lbC9icGYvaGVscGVycy5jCkBAIC00ODgzLDcgJiM0Mzs0ODgzLDcgQEAgQlRGX0lEKGZ1bmMsIGJwZl9jZ3JvdXBfcmVsZWFzZV9kdG9yKQogCiBCVEZfS0ZVTkNTX1NUQVJUKGNvbW1vbl9idGZfaWRzKQogQlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl9jYXN0X3RvX2tlcm5fY3R4LCBLRl9GQVNUQ0FMTCkKLUJURl9JRF9GTEFHUyhmdW5jLCBicGZfcmRvbmx5X2Nhc3QsIEtGX0ZBU1RDQUxMKQomIzQzO0JURl9JRF9GTEFHUyhmdW5jLCBicGZfcmRvbmx5X2Nhc3QsIEtGX0ZBU1RDQUxMIHwgS0ZfUEVSRk1PTikKIEJURl9JRF9GTEFHUyhmdW5jLCBicGZfcmN1X3JlYWRfbG9jaykKIEJURl9JRF9GTEFHUyhmdW5jLCBicGZfcmN1X3JlYWRfdW5sb2NrKQogQlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl9keW5wdHJfc2xpY2UsIEtGX1JFVF9OVUxMKQpAQCAtNDkyMCwxMSAmIzQzOzQ5MjAsMTEgQEAgQlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl93cV9zZXRfY2FsbGJhY2ssIEtGX0lNUExJQ0lUX0FSR1MpCiBCVEZfSURfRkxBR1MoZnVuYywgYnBmX3dxX3N0YXJ0KQogQlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl9wcmVlbXB0X2Rpc2FibGUpCiBCVEZfSURfRkxBR1MoZnVuYywgYnBmX3ByZWVtcHRfZW5hYmxlKQotQlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl9pdGVyX2JpdHNfbmV3LCBLRl9JVEVSX05FVykKJiM0MztCVEZfSURfRkxBR1MoZnVuYywgYnBmX2l0ZXJfYml0c19uZXcsIEtGX0lURVJfTkVXIHwgS0ZfUEVSRk1PTikKIEJURl9JRF9GTEFHUyhmdW5jLCBicGZfaXRlcl9iaXRzX25leHQsIEtGX0lURVJfTkVYVCB8IEtGX1JFVF9OVUxMKQogQlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl9pdGVyX2JpdHNfZGVzdHJveSwgS0ZfSVRFUl9ERVNUUk9ZKQotQlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl9jb3B5X2Zyb21fdXNlcl9zdHIsIEtGX1NMRUVQQUJMRSkKLUJURl9JRF9GTEFHUyhmdW5jLCBicGZfY29weV9mcm9tX3VzZXJfdGFza19zdHIsIEtGX1NMRUVQQUJMRSkKJiM0MztCVEZfSURfRkxBR1MoZnVuYywgYnBmX2NvcHlfZnJvbV91c2VyX3N0ciwgS0ZfU0xFRVBBQkxFIHwgS0ZfUEVSRk1PTikKJiM0MztCVEZfSURfRkxBR1MoZnVuYywgYnBmX2NvcHlfZnJvbV91c2VyX3Rhc2tfc3RyLCBLRl9TTEVFUEFCTEUgfCBLRl9QRVJGTU9OKQogQlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl9nZXRfa21lbV9jYWNoZSkKIEJURl9JRF9GTEFHUyhmdW5jLCBicGZfaXRlcl9rbWVtX2NhY2hlX25ldywgS0ZfSVRFUl9ORVcgfCBLRl9TTEVFUEFCTEUpCiBCVEZfSURfRkxBR1MoZnVuYywgYnBmX2l0ZXJfa21lbV9jYWNoZV9uZXh0LCBLRl9JVEVSX05FWFQgfCBLRl9SRVRfTlVMTCB8IEtGX1NMRUVQQUJMRSkKQEAgLTQ5MzIsMTQgJiM0Mzs0OTMyLDE0IEBAIEJURl9JRF9GTEFHUyhmdW5jLCBicGZfaXRlcl9rbWVtX2NhY2hlX2Rlc3Ryb3ksIEtGX0lURVJfREVTVFJPWSB8IEtGX1NMRUVQQUJMRSkKIEJURl9JRF9GTEFHUyhmdW5jLCBicGZfbG9jYWxfaXJxX3NhdmUpCiBCVEZfSURfRkxBR1MoZnVuYywgYnBmX2xvY2FsX2lycV9yZXN0b3JlKQogI2lmZGVmIENPTkZJR19CUEZfRVZFTlRTCi1CVEZfSURfRkxBR1MoZnVuYywgYnBmX3Byb2JlX3JlYWRfdXNlcl9keW5wdHIpCi1CVEZfSURfRkxBR1MoZnVuYywgYnBmX3Byb2JlX3JlYWRfa2VybmVsX2R5bnB0cikKLUJURl9JRF9GTEFHUyhmdW5jLCBicGZfcHJvYmVfcmVhZF91c2VyX3N0cl9keW5wdHIpCi1CVEZfSURfRkxBR1MoZnVuYywgYnBmX3Byb2JlX3JlYWRfa2VybmVsX3N0cl9keW5wdHIpCi1CVEZfSURfRkxBR1MoZnVuYywgYnBmX2NvcHlfZnJvbV91c2VyX2R5bnB0ciwgS0ZfU0xFRVBBQkxFKQotQlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl9jb3B5X2Zyb21fdXNlcl9zdHJfZHlucHRyLCBLRl9TTEVFUEFCTEUpCi1CVEZfSURfRkxBR1MoZnVuYywgYnBmX2NvcHlfZnJvbV91c2VyX3Rhc2tfZHlucHRyLCBLRl9TTEVFUEFCTEUpCi1CVEZfSURfRkxBR1MoZnVuYywgYnBmX2NvcHlfZnJvbV91c2VyX3Rhc2tfc3RyX2R5bnB0ciwgS0ZfU0xFRVBBQkxFKQomIzQzO0JURl9JRF9GTEFHUyhmdW5jLCBicGZfcHJvYmVfcmVhZF91c2VyX2R5bnB0ciwgS0ZfUEVSRk1PTikKJiM0MztCVEZfSURfRkxBR1MoZnVuYywgYnBmX3Byb2JlX3JlYWRfa2VybmVsX2R5bnB0ciwgS0ZfUEVSRk1PTikKJiM0MztCVEZfSURfRkxBR1MoZnVuYywgYnBmX3Byb2JlX3JlYWRfdXNlcl9zdHJfZHlucHRyLCBLRl9QRVJGTU9OKQomIzQzO0JURl9JRF9GTEFHUyhmdW5jLCBicGZfcHJvYmVfcmVhZF9rZXJuZWxfc3RyX2R5bnB0ciwgS0ZfUEVSRk1PTikKJiM0MztCVEZfSURfRkxBR1MoZnVuYywgYnBmX2NvcHlfZnJvbV91c2VyX2R5bnB0ciwgS0ZfU0xFRVBBQkxFIHwgS0ZfUEVSRk1PTikKJiM0MztCVEZfSURfRkxBR1MoZnVuYywgYnBmX2NvcHlfZnJvbV91c2VyX3N0cl9keW5wdHIsIEtGX1NMRUVQQUJMRSB8IEtGX1BFUkZNT04pCiYjNDM7QlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl9jb3B5X2Zyb21fdXNlcl90YXNrX2R5bnB0ciwgS0ZfU0xFRVBBQkxFIHwgS0ZfUEVSRk1PTikKJiM0MztCVEZfSURfRkxBR1MoZnVuYywgYnBmX2NvcHlfZnJvbV91c2VyX3Rhc2tfc3RyX2R5bnB0ciwgS0ZfU0xFRVBBQkxFIHwgS0ZfUEVSRk1PTikKICNlbmRpZgogI2lmZGVmIENPTkZJR19ETUFfU0hBUkVEX0JVRkZFUgogQlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl9pdGVyX2RtYWJ1Zl9uZXcsIEtGX0lURVJfTkVXIHwgS0ZfU0xFRVBBQkxFKQpAQCAtNDk0NywyNiAmIzQzOzQ5NDcsMjYgQEAgQlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl9pdGVyX2RtYWJ1Zl9uZXh0LCBLRl9JVEVSX05FWFQgfCBLRl9SRVRfTlVMTCB8IEtGX1NMRUVQQUIKIEJURl9JRF9GTEFHUyhmdW5jLCBicGZfaXRlcl9kbWFidWZfZGVzdHJveSwgS0ZfSVRFUl9ERVNUUk9ZIHwgS0ZfU0xFRVBBQkxFKQogI2VuZGlmCiBCVEZfSURfRkxBR1MoZnVuYywgX19icGZfdHJhcCkKLUJURl9JRF9GTEFHUyhmdW5jLCBicGZfc3RyY21wKTsKLUJURl9JRF9GTEFHUyhmdW5jLCBicGZfc3RyY2FzZWNtcCk7Ci1CVEZfSURfRkxBR1MoZnVuYywgYnBmX3N0cm5jYXNlY21wKTsKLUJURl9JRF9GTEFHUyhmdW5jLCBicGZfc3RyY2hyKTsKLUJURl9JRF9GTEFHUyhmdW5jLCBicGZfc3RyY2hybnVsKTsKLUJURl9JRF9GTEFHUyhmdW5jLCBicGZfc3RybmNocik7Ci1CVEZfSURfRkxBR1MoZnVuYywgYnBmX3N0cnJjaHIpOwotQlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl9zdHJsZW4pOwotQlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl9zdHJubGVuKTsKLUJURl9JRF9GTEFHUyhmdW5jLCBicGZfc3Ryc3BuKTsKLUJURl9JRF9GTEFHUyhmdW5jLCBicGZfc3RyY3Nwbik7Ci1CVEZfSURfRkxBR1MoZnVuYywgYnBmX3N0cnN0cik7Ci1CVEZfSURfRkxBR1MoZnVuYywgYnBmX3N0cmNhc2VzdHIpOwotQlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl9zdHJuc3RyKTsKLUJURl9JRF9GTEFHUyhmdW5jLCBicGZfc3RybmNhc2VzdHIpOwomIzQzO0JURl9JRF9GTEFHUyhmdW5jLCBicGZfc3RyY21wLCBLRl9QRVJGTU9OKTsKJiM0MztCVEZfSURfRkxBR1MoZnVuYywgYnBmX3N0cmNhc2VjbXAsIEtGX1BFUkZNT04pOwomIzQzO0JURl9JRF9GTEFHUyhmdW5jLCBicGZfc3RybmNhc2VjbXAsIEtGX1BFUkZNT04pOwomIzQzO0JURl9JRF9GTEFHUyhmdW5jLCBicGZfc3RyY2hyLCBLRl9QRVJGTU9OKTsKJiM0MztCVEZfSURfRkxBR1MoZnVuYywgYnBmX3N0cmNocm51bCwgS0ZfUEVSRk1PTik7CiYjNDM7QlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl9zdHJuY2hyLCBLRl9QRVJGTU9OKTsKJiM0MztCVEZfSURfRkxBR1MoZnVuYywgYnBmX3N0cnJjaHIsIEtGX1BFUkZNT04pOwomIzQzO0JURl9JRF9GTEFHUyhmdW5jLCBicGZfc3RybGVuLCBLRl9QRVJGTU9OKTsKJiM0MztCVEZfSURfRkxBR1MoZnVuYywgYnBmX3N0cm5sZW4sIEtGX1BFUkZNT04pOwomIzQzO0JURl9JRF9GTEFHUyhmdW5jLCBicGZfc3Ryc3BuLCBLRl9QRVJGTU9OKTsKJiM0MztCVEZfSURfRkxBR1MoZnVuYywgYnBmX3N0cmNzcG4sIEtGX1BFUkZNT04pOwomIzQzO0JURl9JRF9GTEFHUyhmdW5jLCBicGZfc3Ryc3RyLCBLRl9QRVJGTU9OKTsKJiM0MztCVEZfSURfRkxBR1MoZnVuYywgYnBmX3N0cmNhc2VzdHIsIEtGX1BFUkZNT04pOwomIzQzO0JURl9JRF9GTEFHUyhmdW5jLCBicGZfc3RybnN0ciwgS0ZfUEVSRk1PTik7CiYjNDM7QlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl9zdHJuY2FzZXN0ciwgS0ZfUEVSRk1PTik7CiAjaWYgZGVmaW5lZChDT05GSUdfQlBGX0xTTSkgJmFtcDsmYW1wOyBkZWZpbmVkKENPTkZJR19DR1JPVVBTKQogQlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl9jZ3JvdXBfcmVhZF94YXR0ciwgS0ZfUkNVKQogI2VuZGlmCi1CVEZfSURfRkxBR1MoZnVuYywgYnBmX3N0cmVhbV92cHJpbnRrLCBLRl9JTVBMSUNJVF9BUkdTIHwgS0ZfU1BJTkxPQ0tfU0FGRSkKLUJURl9JRF9GTEFHUyhmdW5jLCBicGZfc3RyZWFtX3ByaW50X3N0YWNrLCBLRl9JTVBMSUNJVF9BUkdTIHwgS0ZfU1BJTkxPQ0tfU0FGRSkKJiM0MztCVEZfSURfRkxBR1MoZnVuYywgYnBmX3N0cmVhbV92cHJpbnRrLCBLRl9JTVBMSUNJVF9BUkdTIHwgS0ZfU1BJTkxPQ0tfU0FGRSB8IEtGX1BFUkZNT04pCiYjNDM7QlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl9zdHJlYW1fcHJpbnRfc3RhY2ssIEtGX0lNUExJQ0lUX0FSR1MgfCBLRl9TUElOTE9DS19TQUZFIHwgS0ZfUEVSRk1PTikKIEJURl9JRF9GTEFHUyhmdW5jLCBicGZfdGFza193b3JrX3NjaGVkdWxlX3NpZ25hbCwgS0ZfSU1QTElDSVRfQVJHUykKIEJURl9JRF9GTEFHUyhmdW5jLCBicGZfdGFza193b3JrX3NjaGVkdWxlX3Jlc3VtZSwgS0ZfSU1QTElDSVRfQVJHUykKIEJURl9JRF9GTEFHUyhmdW5jLCBicGZfZHlucHRyX2Zyb21fZmlsZSkKZGlmZiAtLWdpdCBhL2tlcm5lbC9icGYvdmVyaWZpZXIuYyBiL2tlcm5lbC9icGYvdmVyaWZpZXIuYwppbmRleCA3MmEzZjU5OThkZDI3Li4zNjkyM2NlMDQyNzM0IDEwMDY0NAotLS0gYS9rZXJuZWwvYnBmL3ZlcmlmaWVyLmMKJiM0MzsmIzQzOyYjNDM7IGIva2VybmVsL2JwZi92ZXJpZmllci5jCkBAIC02NDUzLDYgJiM0Mzs2NDUzLDE2IEBAIHN0YXRpYyBpbnQgY2hlY2tfbWVtX2FjY2VzcyhzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52LCBpbnQgaW5zbl9pZHgsIHN0cnVjdCBiCiAJCQlyZXR1cm4gLUVBQ0NFUzsKIAkJfQogCiYjNDM7CQlpZiAocmRvbmx5X3VudHJ1c3RlZCAmYW1wOyZhbXA7ICFlbnYtJmd0O2FsbG93X3B0cl9sZWFrcykgewomIzQzOwkJCXZlcmJvc2UoZW52LCAmIzM0OyVzIGFjY2VzcyBpcyBhbGxvd2VkIG9ubHkgdG8gQ0FQX1BFUkZNT04gYW5kIENBUF9TWVNfQURNSU5cbiYjMzQ7LAomIzQzOwkJCQlyZWdfdHlwZV9zdHIoZW52LCByZWctJmd0O3R5cGUpKTsKJiM0MzsJCQlicGZfZGlhZ19wb2xpY3koCiYjNDM7CQkJCWVudiwgaW5zbl9pZHgsICYjMzQ7cmVhZCBmcm9tIHVudHJ1c3RlZCByZWFkLW9ubHkgbWVtb3J5JiMzNDssCiYjNDM7CQkJCSYjMzQ7dGhlIGFjY2VzcyByZXF1aXJlcyBDQVBfUEVSRk1PTiYjMzQ7LAomIzQzOwkJCQkmIzM0O0xvYWQgdGhlIHByb2dyYW0gd2l0aCBDQVBfUEVSRk1PTiwgb3IgYXZvaWQgZGVyZWZlcmVuY2luZyB1bnRydXN0ZWQgcG9pbnRlcnMuJiMzNDspOwomIzQzOwkJCXJldHVybiAtRVBFUk07CiYjNDM7CQl9CiYjNDM7CiAJCS8qCiAJCSAqIEFjY2Vzc2VzIHRvIHVudHJ1c3RlZCBQVFJfVE9fTUVNIGFyZSBkb25lIHRocm91Z2ggcHJvYmUKIAkJICogaW5zdHJ1Y3Rpb25zLCBoZW5jZSBubyBuZWVkIHRvIGNoZWNrIGJvdW5kcyBpbiB0aGF0IGNhc2UuCkBAIC0xMTM1Niw2ICYjNDM7MTEzNjYsMTEgQEAgc3RhdGljIGJvb2wgaXNfa2Z1bmNfZGVzdHJ1Y3RpdmUoc3RydWN0IGJwZl9jYWxsX2FyZ19tZXRhICptZXRhKQogCXJldHVybiBtZXRhLSZndDtrZnVuY19mbGFncyAmYW1wOyBLRl9ERVNUUlVDVElWRTsKIH0KIAomIzQzO3N0YXRpYyBib29sIGlzX2tmdW5jX3BlcmZtb24oc3RydWN0IGJwZl9jYWxsX2FyZ19tZXRhICptZXRhKQomIzQzO3sKJiM0MzsJcmV0dXJuIG1ldGEtJmd0O2tmdW5jX2ZsYWdzICZhbXA7IEtGX1BFUkZNT047CiYjNDM7fQomIzQzOwogc3RhdGljIGJvb2wgaXNfa2Z1bmNfcmN1KHN0cnVjdCBicGZfY2FsbF9hcmdfbWV0YSAqbWV0YSkKIHsKIAlyZXR1cm4gbWV0YS0mZ3Q7a2Z1bmNfZmxhZ3MgJmFtcDsgS0ZfUkNVOwpAQCAtMTM4MzQsNiAmIzQzOzEzODQ5LDE2IEBAIHN0YXRpYyBpbnQgY2hlY2tfa2Z1bmNfY2FsbChzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52LCBzdHJ1Y3QgYnBmX2luc24gKmluc24sCiAJCXJldHVybiAtRUFDQ0VTOwogCX0KIAomIzQzOwlpZiAoaXNfa2Z1bmNfcGVyZm1vbigmYW1wO21ldGEpICZhbXA7JmFtcDsgIWVudi0mZ3Q7YWxsb3dfcHRyX2xlYWtzKSB7CiYjNDM7CQl2ZXJib3NlKGVudiwgJiMzNDslcyBpcyBhbGxvd2VkIG9ubHkgdG8gQ0FQX1BFUkZNT04gYW5kIENBUF9TWVNfQURNSU5cbiYjMzQ7LAomIzQzOwkJCWZ1bmNfbmFtZSk7CiYjNDM7CQlvcGVyYXRpb24gPSBicGZfZGlhZ19mbXQoZW52LCAmIzM0O2tmdW5jICVzJiMzNDssIGZ1bmNfbmFtZSk7CiYjNDM7CQlicGZfZGlhZ19wb2xpY3koCiYjNDM7CQkJZW52LCBpbnNuX2lkeCwgb3BlcmF0aW9uLCAmIzM0O3RoZSBrZnVuYyByZXF1aXJlcyBDQVBfUEVSRk1PTiYjMzQ7LAomIzQzOwkJCSYjMzQ7TG9hZCB0aGUgcHJvZ3JhbSB3aXRoIENBUF9QRVJGTU9OLCBvciBhdm9pZCB0aGUga2Z1bmMuJiMzNDspOwomIzQzOwkJcmV0dXJuIC1FUEVSTTsKJiM0MzsJfQomIzQzOwogCXNsZWVwYWJsZSA9IGJwZl9pc19rZnVuY19zbGVlcGFibGUoJmFtcDttZXRhKTsKIAlpZiAoc2xlZXBhYmxlICZhbXA7JmFtcDsgIWluX3NsZWVwYWJsZShlbnYpKSB7CiAJCXZlcmJvc2UoZW52LCAmIzM0O3Byb2dyYW0gbXVzdCBiZSBzbGVlcGFibGUgdG8gY2FsbCBzbGVlcGFibGUga2Z1bmMgJXNcbiYjMzQ7LCBmdW5jX25hbWUpOwpkaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvdmVyaWZpZXIuYyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3ZlcmlmaWVyLmMKaW5kZXggNjRhYzQ5YWQ2N2U2My4uZWM5ZTM5MDdjNzVkNiAxMDA2NDQKLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvdmVyaWZpZXIuYwomIzQzOyYjNDM7JiM0MzsgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy92ZXJpZmllci5jCkBAIC01Myw2ICYjNDM7NTMsNyBAQAogI2luY2x1ZGUgJiMzNDt2ZXJpZmllcl9pdGVyYXRpbmdfY2FsbGJhY2tzLnNrZWwuaCYjMzQ7CiAjaW5jbHVkZSAmIzM0O3ZlcmlmaWVyX2plcV9pbmZlcl9ub3RfbnVsbC5za2VsLmgmIzM0OwogI2luY2x1ZGUgJiMzNDt2ZXJpZmllcl9qaXRfY29udmVyZ2VuY2Uuc2tlbC5oJiMzNDsKJiM0MzsjaW5jbHVkZSAmIzM0O3ZlcmlmaWVyX2tmdW5jX3BlcmZtb24uc2tlbC5oJiMzNDsKICNpbmNsdWRlICYjMzQ7dmVyaWZpZXJfbGRfaW5kLnNrZWwuaCYjMzQ7CiAjaW5jbHVkZSAmIzM0O3ZlcmlmaWVyX2xkc3guc2tlbC5oJiMzNDsKICNpbmNsdWRlICYjMzQ7dmVyaWZpZXJfbGVha19wdHIuc2tlbC5oJiMzNDsKQEAgLTIxNiw2ICYjNDM7MjE3LDcgQEAgdm9pZCB0ZXN0X3ZlcmlmaWVyX2ludF9wdHIodm9pZCkgICAgICAgICAgICAgIHsgUlVOKHZlcmlmaWVyX2ludF9wdHIpOyB9CiB2b2lkIHRlc3RfdmVyaWZpZXJfaXRlcmF0aW5nX2NhbGxiYWNrcyh2b2lkKSAgeyBSVU4odmVyaWZpZXJfaXRlcmF0aW5nX2NhbGxiYWNrcyk7IH0KIHZvaWQgdGVzdF92ZXJpZmllcl9qZXFfaW5mZXJfbm90X251bGwodm9pZCkgICB7IFJVTih2ZXJpZmllcl9qZXFfaW5mZXJfbm90X251bGwpOyB9CiB2b2lkIHRlc3RfdmVyaWZpZXJfaml0X2NvbnZlcmdlbmNlKHZvaWQpICAgICAgeyBSVU4odmVyaWZpZXJfaml0X2NvbnZlcmdlbmNlKTsgfQomIzQzO3ZvaWQgdGVzdF92ZXJpZmllcl9rZnVuY19wZXJmbW9uKHZvaWQpICAgICAgICB7IFJVTih2ZXJpZmllcl9rZnVuY19wZXJmbW9uKTsgfQogdm9pZCB0ZXN0X3ZlcmlmaWVyX2xvYWRfYWNxdWlyZSh2b2lkKSAgICAgICAgIHsgUlVOKHZlcmlmaWVyX2xvYWRfYWNxdWlyZSk7IH0KIHZvaWQgdGVzdF92ZXJpZmllcl9sZF9pbmQodm9pZCkgICAgICAgICAgICAgICB7IFJVTih2ZXJpZmllcl9sZF9pbmQpOyB9CiB2b2lkIHRlc3RfdmVyaWZpZXJfbGRzeCh2b2lkKSAgICAgICAgICAgICAgICAgIHsgUlVOKHZlcmlmaWVyX2xkc3gpOyB9CmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvdmVyaWZpZXJfa2Z1bmNfcGVyZm1vbi5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3ZlcmlmaWVyX2tmdW5jX3BlcmZtb24uYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwLi5jNmFkYmI0ODE2Y2VjCi0tLSAvZGV2L251bGwKJiM0MzsmIzQzOyYjNDM7IGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3ZlcmlmaWVyX2tmdW5jX3BlcmZtb24uYwpAQCAtMCwwICYjNDM7MSw2MyBAQAomIzQzOy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wCiYjNDM7CiYjNDM7I2luY2x1ZGUgJmx0O3ZtbGludXguaCZndDsKJiM0MzsjaW5jbHVkZSAmbHQ7YnBmL2JwZl9oZWxwZXJzLmgmZ3Q7CiYjNDM7I2luY2x1ZGUgJiMzNDticGZfbWlzYy5oJiMzNDsKJiM0MzsKJiM0Mzt2b2lkICp1c2VyX3B0cjsKJiM0MztjaGFyIGR5bnB0cl9idWZbOF07CiYjNDM7dTY0IGthZGRyOwomIzQzOwomIzQzO1NFQygmIzM0O3NvY2tldCYjMzQ7KQomIzQzO19fc3VjY2VzcwomIzQzO19fY2Fwc191bnByaXYoQ0FQX0JQRikKJiM0MztfX2ZhaWx1cmVfdW5wcml2CiYjNDM7X19tc2dfdW5wcml2KCYjMzQ7YnBmX3Jkb25seV9jYXN0IGlzIGFsbG93ZWQgb25seSB0byBDQVBfUEVSRk1PTiBhbmQgQ0FQX1NZU19BRE1JTiYjMzQ7KQomIzQzO2ludCByZG9ubHlfY2FzdF9ub3BlcmZtb24odm9pZCAqY3R4KQomIzQzO3sKJiM0MzsJY2hhciAqcCA9IGJwZl9yZG9ubHlfY2FzdCgwLCAwKTsKJiM0MzsKJiM0MzsJcmV0dXJuIHBbMHg3ZmZmXTsKJiM0Mzt9CiYjNDM7CiYjNDM7U0VDKCYjMzQ7c29ja2V0JiMzNDspCiYjNDM7X19zdWNjZXNzCiYjNDM7X19jYXBzX3VucHJpdihDQVBfQlBGKQomIzQzO19fZmFpbHVyZV91bnByaXYKJiM0MztfX21zZ191bnByaXYoJiMzNDticGZfcHJvYmVfcmVhZF9rZXJuZWxfZHlucHRyIGlzIGFsbG93ZWQgb25seSB0byBDQVBfUEVSRk1PTiBhbmQgQ0FQX1NZU19BRE1JTiYjMzQ7KQomIzQzO2ludCBwcm9iZV9yZWFkX2tlcm5lbF9keW5wdHJfbm9wZXJmbW9uKHZvaWQgKmN0eCkKJiM0Mzt7CiYjNDM7CXN0cnVjdCBicGZfZHlucHRyIGRwdHI7CiYjNDM7CiYjNDM7CWJwZl9keW5wdHJfZnJvbV9tZW0oZHlucHRyX2J1Ziwgc2l6ZW9mKGR5bnB0cl9idWYpLCAwLCAmYW1wO2RwdHIpOwomIzQzOwlicGZfcHJvYmVfcmVhZF9rZXJuZWxfZHlucHRyKCZhbXA7ZHB0ciwgMCwgc2l6ZW9mKGR5bnB0cl9idWYpLCB1c2VyX3B0cik7CiYjNDM7CXJldHVybiAwOwomIzQzO30KJiM0MzsKJiM0MztTRUMoJiMzNDtzb2NrZXQmIzM0OykKJiM0MztfX3N1Y2Nlc3MKJiM0MztfX2NhcHNfdW5wcml2KENBUF9CUEYpCiYjNDM7X19mYWlsdXJlX3VucHJpdgomIzQzO19fbXNnX3VucHJpdigmIzM0O2JwZl9zdHJlYW1fdnByaW50ayBpcyBhbGxvd2VkIG9ubHkgdG8gQ0FQX1BFUkZNT04gYW5kIENBUF9TWVNfQURNSU4mIzM0OykKJiM0MztpbnQgc3RyZWFtX3ZwcmludGtfbm9wZXJmbW9uKHZvaWQgKmN0eCkKJiM0Mzt7CiYjNDM7CWJwZl9zdHJlYW1fcHJpbnRrKEJQRl9TVERPVVQsICYjMzQ7JXBCJiMzNDssICh2b2lkICopa2FkZHIpOwomIzQzOwlyZXR1cm4gMDsKJiM0Mzt9CiYjNDM7CiYjNDM7X193ZWFrIGludCBzdWJwcm9nX3VudHJ1c3RlZF9yZWFkKHZvaWQgKnAgX19hcmdfdW50cnVzdGVkKQomIzQzO3sKJiM0MzsJcmV0dXJuICooY2hhciAqKXA7CiYjNDM7fQomIzQzOwomIzQzO1NFQygmIzM0O3NvY2tldCYjMzQ7KQomIzQzO19fc3VjY2VzcwomIzQzO19fY2Fwc191bnByaXYoQ0FQX0JQRikKJiM0MztfX2ZhaWx1cmVfdW5wcml2CiYjNDM7X19tc2dfdW5wcml2KCYjMzQ7cmRvbmx5X3VudHJ1c3RlZF9tZW0gYWNjZXNzIGlzIGFsbG93ZWQgb25seSB0byBDQVBfUEVSRk1PTiBhbmQgQ0FQX1NZU19BRE1JTiYjMzQ7KQomIzQzO2ludCBhcmdfdW50cnVzdGVkX3JlYWRfbm9wZXJmbW9uKHZvaWQgKmN0eCkKJiM0Mzt7CiYjNDM7CXJldHVybiBzdWJwcm9nX3VudHJ1c3RlZF9yZWFkKDApOwomIzQzO30KJiM0MzsKJiM0MztjaGFyIF9saWNlbnNlW10gU0VDKCYjMzQ7bGljZW5zZSYjMzQ7KSA9ICYjMzQ7R1BMJiMzNDs7CjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE5LzM8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMCAxNjoxNjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+a21zYW4tZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA2NzU2CgkJCQkJCQlvdXRwdXQ6IDMzCgkJCQkJCQl0aG91Z2h0czogNzA2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgQlBGIEtmdW5jIFBlcm1pc3Npb24gVGlnaHRlbmluZyBQYXRjaCoqCgpPa2F5LCBsZXQmIzM5O3MgYnJlYWsgZG93biB0aGlzIHBhdGNoLiBNeSBpbW1lZGlhdGUgdGhvdWdodCBpcywgJiMzNDtBaCwgdGhleSYjMzk7cmUgYmVlZmluZyB1cCB0aGUgc2VjdXJpdHkgYXJvdW5kIGNlcnRhaW4gQlBGIGtmdW5jcy4mIzM0OyBTZWVtcyBsaWtlIGEgZ29vZCB0aGluZy4KCkZyb20gdGhlIHBhdGNoIHN1bW1hcnksIEkgc2VlIHRoZXkmIzM5O3ZlIGFkZGVkIGEgYEtGX1BFUkZNT05gIGZsYWcsIGRlZmluZWQgaW4gYGluY2x1ZGUvbGludXgvYnRmLmhgLCBhbmQgdGhlbiBhcHBsaWVkIGl0IHRvIGEgYnVuY2ggb2Yga2Z1bmNzIHdpdGhpbiBga2VybmVsL2JwZi9oZWxwZXJzLmNgLiBTcGVjaWZpY2FsbHksIGZ1bmN0aW9ucyBsaWtlIGBicGZfcmRvbmx5X2Nhc3RgLCBgYnBmX2l0ZXJfYml0c19uZXdgLCBgYnBmX2NvcHlfZnJvbV91c2VyX3N0cmAsIHZhcmlvdXMgYGJwZl9wcm9iZV9yZWFkXypgIGZ1bmN0aW9ucywgYW5kIG90aGVycy4gVGhlIGRvY3VtZW50YXRpb24gdXBkYXRlIGlzIGluIGBEb2N1bWVudGF0aW9uL2JwZi9rZnVuY3MucnN0YCwgc28gaXQgaXMgZWFzeSB0byBmaW5kIHRoZSBpbmZvcm1hdGlvbiBhYm91dCB0aGUgYEtGX1BFUkZNT05gIGZsYWcuCgpUaGUgY29yZSBvZiB0aGUgY2hhbmdlIHNlZW1zIHRvIGJlIGluIGBrZXJuZWwvYnBmL3ZlcmlmaWVyLmNgLiBUaGV5JiMzOTtyZSBhZGRpbmcgY2hlY2tzIGluIGBjaGVja19tZW1fYWNjZXNzYCBhbmQgYGNoZWNrX2tmdW5jX2NhbGxgLiBCYXNpY2FsbHksIGlmIEkgdW5kZXJzdGFuZCB0aGlzIGNvcnJlY3RseSwgdGhlIHZlcmlmaWVyIGlzIG5vdyBlbnN1cmluZyB0aGF0IGlmIHRoZSBjYWxsaW5nIGNvbnRleHQgZG9lc24mIzM5O3QgaGF2ZSBgQ0FQX1BFUkZNT05gIG9yIGBDQVBfU1lTX0FETUlOYCBhbmQgYGVudi0mZ3Q7YWxsb3dfcHRyX2xlYWtzYCBpcyAqbm90KiBzZXQsIHRoZSBgS0ZfUEVSRk1PTmAgZnVuY3Rpb25zIG9yIHJlYWRzIGZyb20gYHJkb25seV91bnRydXN0ZWRgIG1lbW9yeSB3aWxsIHJlc3VsdCBpbiBhbiBgLUVQRVJNYCBlcnJvci4gVGhhdCYjMzk7cyBhIGRpcmVjdCBzZWN1cml0eSBtZWFzdXJlIHRvIHJlc3RyaWN0IGFjY2Vzcy4KCk5vdywgbXkgbWluZCBzdGFydHMgZ29pbmcgdGhyb3VnaCB0aGUgdHlwaWNhbCBzZWN1cml0eSBhdWRpdCBzdGVwcy4gRmlyc3QsIGxldCYjMzk7cyBydWxlIG91dCBzb21lIHBvdGVudGlhbCBpc3N1ZXMuIERvZXMgdGhpcyBwYXRjaCBpbnRyb2R1Y2Ugb3IgbW9kaWZ5IGFueSBrZXJuZWwgc3RydWN0dXJlcyBzZW50IHRvIHVzZXIgc3BhY2Ugd2hlcmUgdW5pbml0aWFsaXplZCBmaWVsZHMgY291bGQgYmUgZXhwb3NlZD8gTm8sIHRoZSBwYXRjaCBkb2VzbiYjMzk7dCBkbyB0aGF0LiBEb2VzIGl0IGNyZWF0ZSBhbnkgY29uZGl0aW9uYWwgbG9naWMgdGhhdCByZWxpZXMgb24gdW5pbml0aWFsaXplZCB2YXJpYWJsZXM/IE5vcGUsIHRoZSB2ZXJpZmllciBzdGF0ZSAoYHJkb25seV91bnRydXN0ZWRgLCBgbWV0YWAsIGFuZCBgZW52LSZndDthbGxvd19wdHJfbGVha3NgKSBhcHBlYXJzIHRvIGJlIGZ1bGx5IGluaXRpYWxpemVkLiBBbnkgYWxsb2NhdGlvbiBvciBpbml0aWFsaXphdGlvbiBvZiBjb21wbGV4IGRhdGEgc3RydWN0dXJlcyB3aXRoIHRoZSBwb3RlbnRpYWwgZm9yIHVuaW5pdGlhbGl6ZWQgcmVhZHMgbGF0ZXI/IE5vIHNpZ24gb2YgdGhhdCBoZXJlLiBGaW5hbGx5LCBhcmUgdGhlcmUgYW55IGJvdW5kcyBjaGVjayBtb2RpZmljYXRpb25zIHRoYXQgY291bGQgZXhwb3NlIHVuaW5pdGlhbGl6ZWQgYnl0ZXM/IEFnYWluLCBuby4KCkp1c3QgdG8gYmUgYWJzb2x1dGVseSBjZXJ0YWluLCBJIG5lZWQgdG8gZG91YmxlLWNoZWNrIHRob3NlIHZlcmlmaWVyIGZ1bmN0aW9ucy4gTXkgcGxhbiBpcyB0byBkaWcgaW50byBga2VybmVsL2JwZi92ZXJpZmllci5jYCBhcm91bmQgbGluZXMgNjQ1MyBhbmQgMTM4NDkgdG8gY29uZmlybSBob3cgYGlzX2tmdW5jX3BlcmZtb24oJmFtcDttZXRhKWAgYW5kIGByZG9ubHlfdW50cnVzdGVkYCBhcmUgdXNlZCBpbiBjb250ZXh0LiBHb3R0YSBtYWtlIHN1cmUgdGhvc2UgY2hlY2tzIGFyZSByb2J1c3QuCgpJbiBjb25jbHVzaW9uLCB0aGlzIGxvb2tzIGxpa2UgYSBzdHJhaWdodGZvcndhcmQgYW5kIHdlbGwtdGFyZ2V0ZWQgc2VjdXJpdHkgaGFyZGVuaW5nIHBhdGNoLiBJdCYjMzk7cyBhIG5pY2UsIGZvY3VzZWQgaW1wcm92ZW1lbnQgaW4gQlBGIGtmdW5jIGFjY2VzcyBjb250cm9sLiBJdCB3aWxsIHJlc3RyaWN0IGNlcnRhaW4gQlBGIHByb2dyYW1zIHdoaWNoIGFyZW4mIzM5O3QgY29uc2lkZXJlZCBzdWZmaWNpZW50bHkgdHJ1c3RlZCBieSB0aGUgc3lzdGVtLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIwLzM8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMCAxNjoxNzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtyZG9ubHlfdW50cnVzdGVkJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7a2VybmVsL2JwZi92ZXJpZmllci5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2tlcm5lbC9icGYvdmVyaWZpZXIuYz02MzgxPXN0YXRpYyBpbnQgY2hlY2tfbWVtX2FjY2VzcyhzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52LCBpbnQgaW5zbl9pZHgsIHN0cnVjdCBicGZfcmVnX3N0YXRlICpyZWcsIGFyZ25vX3QgYXJnbm8sXG4tLVxua2VybmVsL2JwZi92ZXJpZmllci5jLTY0MzItXHRcdGJvb2wgcmRvbmx5X21lbSA9IHR5cGVfaXNfcmRvbmx5X21lbShyZWctXHUwMDNldHlwZSk7XG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6NjQzMzpcdFx0Ym9vbCByZG9ubHlfdW50cnVzdGVkID0gcmRvbmx5X21lbSBcdTAwMjZcdTAwMjYgKHJlZy1cdTAwM2V0eXBlIFx1MDAyNiBQVFJfVU5UUlVTVEVEKTtcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy02NDM0LVxuLS1cbmtlcm5lbC9icGYvdmVyaWZpZXIuYy02NDU1LVxua2VybmVsL2JwZi92ZXJpZmllci5jOjY0NTY6XHRcdGlmIChyZG9ubHlfdW50cnVzdGVkIFx1MDAyNlx1MDAyNiAhZW52LVx1MDAzZWFsbG93X3B0cl9sZWFrcykge1xua2VybmVsL2JwZi92ZXJpZmllci5jLTY0NTctXHRcdFx0dmVyYm9zZShlbnYsIFwmIzM0OyVzIGFjY2VzcyBpcyBhbGxvd2VkIG9ubHkgdG8gQ0FQX1BFUkZNT04gYW5kIENBUF9TWVNfQURNSU5cXG5cJiMzNDssXG4tLVxua2VybmVsL2JwZi92ZXJpZmllci5jLTY0NjktXHRcdCAqL1xua2VybmVsL2JwZi92ZXJpZmllci5jOjY0NzA6XHRcdGlmICghcmRvbmx5X3VudHJ1c3RlZClcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy02NDcxLVx0XHRcdGVyciA9IGNoZWNrX21lbV9yZWdpb25fYWNjZXNzKGVudiwgcmVnLCBhcmdubywgb2ZmLCBzaXplLFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIxLzM8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMCAxNjoxNzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+a21zYW4tZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA4NDM3CgkJCQkJCQlvdXRwdXQ6IDM1CgkJCQkJCQl0aG91Z2h0czogMTMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZSwgcHJlc2VudGVkIGluIHRoZSBmaXJzdCBwZXJzb246CgoqKkNoZWNraW5nIGBpc19rZnVuY19wZXJmbW9uYCoqCgpBbHJpZ2h0LCB0aW1lIHRvIGRpZyBpbi4gVGhlIGluaXRpYWwgdGhvdWdodCwgdGhlIHZlcnkgZmlyc3QgdGhpbmcgSSYjMzk7bSByZWFjaGluZyBmb3IsIGlzIHRvIGltbWVkaWF0ZWx5IGNoZWNrIHRoZSBzdGF0ZSBvZiBgaXNfa2Z1bmNfcGVyZm1vbmAuIFRoYXQmIzM5O3MgKnRoZSoganVtcGluZy1vZmYgcG9pbnQsIGlzbiYjMzk7dCBpdD8gSXQgZGljdGF0ZXMgc28gbXVjaCBvZiB0aGUgcG90ZW50aWFsIGZvbGxvdy11cCBhbmFseXNpcy4gSXMgaXQgZW5hYmxlZD8gRGlzYWJsZWQ/IFdoYXQmIzM5O3MgdGhlIGN1cnJlbnQgY29uZmlndXJhdGlvbj8gVW5kZXJzdGFuZGluZyB0aGF0IGZsYWcgaXMgcGFyYW1vdW50IGJlY2F1c2UgaXQgaW5mb3JtcyBldmVyeXRoaW5nIGVsc2UgdGhhdCBmb2xsb3dzLCBpbmNsdWRpbmcgd2hpY2ggc3Vic2VxdWVudCBjaGVja3MgYXJlIHJlbGV2YW50IGFuZCB3aGF0IHNvcnQgb2YgcGVyZm9ybWFuY2UgZGF0YSBJIHNob3VsZCBleHBlY3QgdG8gYmUgYWNjZXNzaWJsZS4gS25vd2luZyBpdHMgc3RhdGUgd2lsbCBndWlkZSBtZSBvbiB0aGUgbW9zdCBlZmZpY2llbnQgcGF0aC4gSSBuZWVkIHRvIGtub3cgaW1tZWRpYXRlbHkgaWYgcGVyZm1vbiBpcyBldmVuIGFjdGl2ZSBmb3IgdGhpcyBrZnVuYywgb3RoZXJ3aXNlLCBJJiMzOTttIHdhc3RpbmcgbXkgdGltZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMi8zPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTAgMTY6MTc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7aXNfa2Z1bmNfcGVyZm1vbiYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2tlcm5lbC9icGYvdmVyaWZpZXIuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtrZXJuZWwvYnBmL3ZlcmlmaWVyLmM9MTEzNjQ9c3RhdGljIGJvb2wgaXNfa2Z1bmNfZGVzdHJ1Y3RpdmUoc3RydWN0IGJwZl9jYWxsX2FyZ19tZXRhICptZXRhKVxuLS1cbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xMTM2OC1cbmtlcm5lbC9icGYvdmVyaWZpZXIuYzoxMTM2OTpzdGF0aWMgYm9vbCBpc19rZnVuY19wZXJmbW9uKHN0cnVjdCBicGZfY2FsbF9hcmdfbWV0YSAqbWV0YSlcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xMTM3MC17XG4tLVxua2VybmVsL2JwZi92ZXJpZmllci5jPTEzNzcwPXN0YXRpYyBpbnQgY2hlY2tfa2Z1bmNfY2FsbChzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52LCBzdHJ1Y3QgYnBmX2luc24gKmluc24sXG4tLVxua2VybmVsL2JwZi92ZXJpZmllci5jLTEzODUxLVxua2VybmVsL2JwZi92ZXJpZmllci5jOjEzODUyOlx0aWYgKGlzX2tmdW5jX3BlcmZtb24oXHUwMDI2bWV0YSkgXHUwMDI2XHUwMDI2ICFlbnYtXHUwMDNlYWxsb3dfcHRyX2xlYWtzKSB7XG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTM4NTMtXHRcdHZlcmJvc2UoZW52LCBcJiMzNDslcyBpcyBhbGxvd2VkIG9ubHkgdG8gQ0FQX1BFUkZNT04gYW5kIENBUF9TWVNfQURNSU5cXG5cJiMzNDssXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjMvMzwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzEwIDE2OjE3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5rbXNhbi1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDg5MzgKCQkJCQkJCW91dHB1dDogMTU1CgkJCQkJCQl0aG91Z2h0czogMTI3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFzc2Vzc21lbnQgb2YgdGhlIEJQRiBWZXJpZmllciBDaGFuZ2UqKgoKT2theSwgdGhpcyBsb29rcyBwcmV0dHkgY2xlYW4uIFRoZSBwYXRjaCBpcyBhZGRpbmcgYSBuZXcgY2hlY2sgaW4gdGhlIEJQRiB2ZXJpZmllciwgc3BlY2lmaWNhbGx5IGZvciBrZnVuY3MgdGhhdCB0b3VjaCBrZXJuZWwgbWVtb3J5LCBwb3NzaWJseSBleHBvc2luZyBwb2ludGVycyBvciBhbGxvd2luZyByZWFkLW9ubHkgYWNjZXNzIHRvIHVudHJ1c3RlZCBtZW1vcnkgc3BhY2VzIOKAkyBlc3NlbnRpYWxseSBhIGBLRl9QRVJGTU9OYCB0YWcuIFRoZXnigJlyZSBhcHBseWluZyB0aGlzIHRhZyB0byBzZXZlcmFsIGV4aXN0aW5nIGtmdW5jcy4KClRoZSBrZXkgdGhpbmcgaGVyZSwgZnJvbSBhIHNlY3VyaXR5IHN0YW5kcG9pbnQsIGlzIHRoYXQgdGhlcmUgYXJlIG5vIG9idmlvdXMgYXZlbnVlcyBmb3IgdW5pbml0aWFsaXplZCBtZW1vcnkgdG8gY3JlZXAgaW4uIEkmIzM5O3ZlIHJldmlld2VkIHRoZSBjb2RlOyB0aGVyZSYjMzk7cyBubyBjb3B5aW5nIG9mIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHRvIHVzZXJzcGFjZSwgbm8gaW5zdGFuY2VzIG9mIHVuaW5pdGlhbGl6ZWQgc3RydWN0dXJlcyBiZWluZyBjb3BpZWQsIGFuZCBubyB2YXJpYWJsZXMgdGhhdCBnZXQgcmVhZCBiZWZvcmUgaW5pdGlhbGl6YXRpb24uIE5vIG5ldyBtZW1vcnkgYWxsb2NhdGlvbnMgYXJlIGhhcHBlbmluZyB0aGF0IHdvdWxkIGludHJvZHVjZSB0aGlzIHJpc2sgZWl0aGVyLgoKR2l2ZW4gYWxsIG9mIHRoaXMsIEkmIzM5O20gY29uZmlkZW50IGluIGNhbGxpbmcgYE5lZWRzS01TQU4gPSBmYWxzZWAuIFdlIGNhbiBwcm9jZWVkIHRvIGBzZXQtcmVzdWx0c2AuIEl0JiMzOTtzIGEgc29saWQsIGZvY3VzZWQgY2hhbmdlIHdpdGggYSBjbGVhciBzZWN1cml0eSBjb25zaWRlcmF0aW9uLCBhbmQgdGhlIHZlcmlmaWNhdGlvbiBjaGVja3MgYXBwZWFyIHNvdW5kLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI0LzM8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMCAxNjoxNzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtLTVNBTlJlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBpbnRyb2R1Y2VzIHRoZSBLRl9QRVJGTU9OIGtmdW5jIGZsYWcgYW5kIGVuZm9yY2VzIGNhcGFiaWxpdHkgY2hlY2tzIGluIHRoZSBCUEYgdmVyaWZpZXIgKHJlcXVpcmluZyBDQVBfUEVSRk1PTiAvIENBUF9TWVNfQURNSU4gdmlhIGVudi1cdTAwM2VhbGxvd19wdHJfbGVha3MpIGZvciBjZXJ0YWluIGtmdW5jcyBhbmQgdW50cnVzdGVkIHJlYWQtb25seSBtZW1vcnkgYWNjZXNzZXMuXG5cblRoZSBjaGFuZ2VzIGFyZSBlbnRpcmVseSByZXN0cmljdGVkIHRvIEJQRiB2ZXJpZmllciBhY2Nlc3MtY29udHJvbCBjaGVja3MgYW5kIGZsYWcgZGVmaW5pdGlvbnMuIFRoZXkgZG8gbm90IGFsdGVyIG1lbW9yeSBpbml0aWFsaXphdGlvbiwgZG8gbm90IGludHJvZHVjZSBvciBjb3B5IHVuaW5pdGlhbGl6ZWQgZGF0YSBzdHJ1Y3R1cmVzIHRvIHVzZXIgc3BhY2UsIGFuZCBkbyBub3QgaW50cm9kdWNlIGxvZ2ljIHRoYXQgYnJhbmNoZXMgb24gdW5pbml0aWFsaXplZCBtZW1vcnkuIFRodXMsIHRoZXJlIGFyZSBubyB1bmluaXRpYWxpemVkIG1lbW9yeSByaXNrcyB0aGF0IHJlcXVpcmUgYSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uLiYjMzQ7LAogICYjMzQ7TmVlZHNLTVNBTiYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggaW50cm9kdWNlcyB0aGUgS0ZfUEVSRk1PTiBrZnVuYyBmbGFnIGFuZCBlbmZvcmNlcyBjYXBhYmlsaXR5IGNoZWNrcyBpbiB0aGUgQlBGIHZlcmlmaWVyIChyZXF1aXJpbmcgQ0FQX1BFUkZNT04gLyBDQVBfU1lTX0FETUlOIHZpYSBlbnYtXHUwMDNlYWxsb3dfcHRyX2xlYWtzKSBmb3IgY2VydGFpbiBrZnVuY3MgYW5kIHVudHJ1c3RlZCByZWFkLW9ubHkgbWVtb3J5IGFjY2Vzc2VzLlxuXG5UaGUgY2hhbmdlcyBhcmUgZW50aXJlbHkgcmVzdHJpY3RlZCB0byBCUEYgdmVyaWZpZXIgYWNjZXNzLWNvbnRyb2wgY2hlY2tzIGFuZCBmbGFnIGRlZmluaXRpb25zLiBUaGV5IGRvIG5vdCBhbHRlciBtZW1vcnkgaW5pdGlhbGl6YXRpb24sIGRvIG5vdCBpbnRyb2R1Y2Ugb3IgY29weSB1bmluaXRpYWxpemVkIGRhdGEgc3RydWN0dXJlcyB0byB1c2VyIHNwYWNlLCBhbmQgZG8gbm90IGludHJvZHVjZSBsb2dpYyB0aGF0IGJyYW5jaGVzIG9uIHVuaW5pdGlhbGl6ZWQgbWVtb3J5LiBUaHVzLCB0aGVyZSBhcmUgbm8gdW5pbml0aWFsaXplZCBtZW1vcnkgcmlza3MgdGhhdCByZXF1aXJlIGEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbi4mIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgoKCTxkaXYgaWQ9ImxsbV9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+TExNIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgVG9rZW5zPC90aD4KCQkJCQk8dGg+QXZnIFRva2VuczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJsbG1fc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJ0b29sX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5Ub29sIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9InRvb2xfc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJkdXJhdGlvbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+Cgk8ZGl2IGlkPSJ0b2tlbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+CgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9qc2FwaSI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDktMTBUMTY6MTU6NDQuMTY2ODEyNDQ4WiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6ODg4NDA2MjYwODgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiQlBGX1NZU0NBTExcIixcbiAgICBcIkJQRl9FVkVOVFNcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJjaGVja19rZnVuY19jYWxsXCIsXG4gICAgXCJjaGVja19tZW1fYWNjZXNzXCJcbiAgXSxcbiAgXCJLTVNBTlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBpbnRyb2R1Y2VzIHRoZSBLRl9QRVJGTU9OIGtmdW5jIGZsYWcgYW5kIGVuZm9yY2VzIGNhcGFiaWxpdHkgY2hlY2tzIGluIHRoZSBCUEYgdmVyaWZpZXIgKHJlcXVpcmluZyBDQVBfUEVSRk1PTiAvIENBUF9TWVNfQURNSU4gdmlhIGVudi1cXHUwMDNlYWxsb3dfcHRyX2xlYWtzKSBmb3IgY2VydGFpbiBrZnVuY3MgYW5kIHVudHJ1c3RlZCByZWFkLW9ubHkgbWVtb3J5IGFjY2Vzc2VzLlxcblxcblRoZSBjaGFuZ2VzIGFyZSBlbnRpcmVseSByZXN0cmljdGVkIHRvIEJQRiB2ZXJpZmllciBhY2Nlc3MtY29udHJvbCBjaGVja3MgYW5kIGZsYWcgZGVmaW5pdGlvbnMuIFRoZXkgZG8gbm90IGFsdGVyIG1lbW9yeSBpbml0aWFsaXphdGlvbiwgZG8gbm90IGludHJvZHVjZSBvciBjb3B5IHVuaW5pdGlhbGl6ZWQgZGF0YSBzdHJ1Y3R1cmVzIHRvIHVzZXIgc3BhY2UsIGFuZCBkbyBub3QgaW50cm9kdWNlIGxvZ2ljIHRoYXQgYnJhbmNoZXMgb24gdW5pbml0aWFsaXplZCBtZW1vcnkuIFRodXMsIHRoZXJlIGFyZSBubyB1bmluaXRpYWxpemVkIG1lbW9yeSByaXNrcyB0aGF0IHJlcXVpcmUgYSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uLlwiLFxuICBcIk5lZWRzS01TQU5cIjogZmFsc2UsXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGludHJvZHVjZXMgYSBuZXcgS0ZfUEVSRk1PTiBrZnVuYyBmbGFnIGFuZCBlbmZvcmNlcyBDQVBfUEVSRk1PTi9DQVBfU1lTX0FETUlOIHBlcm1pc3Npb24gY2hlY2tzIGluIHRoZSBCUEYgdmVyaWZpZXIgKGNoZWNrX2tmdW5jX2NhbGwgYW5kIGNoZWNrX21lbV9hY2Nlc3MpLiBTaW5jZSB0aGVzZSBjaGFuZ2VzIG1vZGlmeSByZWFjaGFibGUgQlBGIHZlcmlmaWVyIGxvZ2ljIGV4ZWN1dGVkIGR1cmluZyBCUEYgcHJvZ3JhbSB2ZXJpZmljYXRpb24gdmlhIHN5c19icGYsIHRoZXkgd2FycmFudCBmdXp6aW5nLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0xMFQxNjoxNTo0NC4xNjY4MTY3NDhaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE1ODEyNjQ3MTUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCA0NzU0N2VlN2E1NDA5MjNlNjIxOWY0NWJkOGIyNmUyOWRhOGMxZjUwXFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBUaHUgU2VwIDEwIDE2OjE1OjQyIDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vYnBmL2tmdW5jcy5yc3QgYi9Eb2N1bWVudGF0aW9uL2JwZi9rZnVuY3MucnN0XFxuaW5kZXggODVmNzNlMGJiZDBmZi4uNjY5MWZlOGEzMmMzZCAxMDA2NDRcXG4tLS0gYS9Eb2N1bWVudGF0aW9uL2JwZi9rZnVuY3MucnN0XFxuKysrIGIvRG9jdW1lbnRhdGlvbi9icGYva2Z1bmNzLnJzdFxcbkBAIC00ODYsNiArNDg2LDE2IEBAIEV4YW1wbGUgdXNhZ2UgaW4gQlBGIHByb2dyYW06XFxuIFxcdC8qIG5vdGUgdGhhdCB0aGUgbGFzdCBhcmd1bWVudCBpcyBvbWl0dGVkICovXFxuICAgICAgICAgYnBmX3Rhc2tfd29ya19zY2hlZHVsZV9zaWduYWwodGFzaywgXFx1MDAyNndvcmstXFx1MDAzZXR3LCBcXHUwMDI2YXJybWFwLCB0YXNrX3dvcmtfY2FsbGJhY2spO1xcbiBcXG4rMi41LjEwIEtGX1BFUkZNT04gZmxhZ1xcbistLS0tLS0tLS0tLS0tLS0tLS0tLS0tXFxuK1xcbitUaGUgS0ZfUEVSRk1PTiBmbGFnIGlzIHVzZWQgZm9yIGtmdW5jcyB0aGF0IGNhbiBleHBvc2Uga2VybmVsIG1lbW9yeSBvciBrZXJuZWxcXG4rYWRkcmVzc2VzIHRvIHRoZSBCUEYgcHJvZ3JhbSwgZm9yIGV4YW1wbGUgYnkgcmVhZGluZyB0aHJvdWdoIGEgcG9pbnRlciB0aGF0IHRoZVxcbit2ZXJpZmllciBkb2VzIG5vdCBjaGVjay4gQ2FsbGluZyBzdWNoIGEga2Z1bmMgcmVxdWlyZXMgQ0FQX1BFUkZNT04sIG9yXFxuK0NBUF9TWVNfQURNSU4sIGluIHRoZSBzYW1lIHdheSB0aGF0IHRoZSBlcXVpdmFsZW50IEJQRiBoZWxwZXJzIGFyZSBnYXRlZCBpblxcbiticGZfYmFzZV9mdW5jX3Byb3RvKCkuIEEgcHJvZ3JhbSBsb2FkZWQgd2l0aCBDQVBfQlBGIGFsb25lIGlzIHJlamVjdGVkIGF0IGxvYWRcXG4rdGltZS5cXG4rXFxuIDIuNiBSZWdpc3RlcmluZyB0aGUga2Z1bmNzXFxuIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXFxuIFxcbmRpZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4L2J0Zi5oIGIvaW5jbHVkZS9saW51eC9idGYuaFxcbmluZGV4IDg5ZDVhNWM0ZjExNzEuLjdjNjJlYTE3YjExNjMgMTAwNjQ0XFxuLS0tIGEvaW5jbHVkZS9saW51eC9idGYuaFxcbisrKyBiL2luY2x1ZGUvbGludXgvYnRmLmhcXG5AQCAtODAsNiArODAsNyBAQFxcbiAjZGVmaW5lIEtGX0FSRU5BX0FSRzIgICAoMSBcXHUwMDNjXFx1MDAzYyAxNSkgLyoga2Z1bmMgdGFrZXMgYW4gYXJlbmEgcG9pbnRlciBhcyBpdHMgc2Vjb25kIGFyZ3VtZW50ICovXFxuICNkZWZpbmUgS0ZfSU1QTElDSVRfQVJHUyAoMSBcXHUwMDNjXFx1MDAzYyAxNikgLyoga2Z1bmMgaGFzIGltcGxpY2l0IGFyZ3VtZW50cyBzdXBwbGllZCBieSB0aGUgdmVyaWZpZXIgKi9cXG4gI2RlZmluZSBLRl9TUElOTE9DS19TQUZFICgxIFxcdTAwM2NcXHUwMDNjIDE3KSAvKiBrZnVuYyBpcyBhbGxvd2VkIGluc2lkZSBicGZfc3Bpbl9sb2NrLWVkIHJlZ2lvbiAqL1xcbisjZGVmaW5lIEtGX1BFUkZNT04gICAgICAoMSBcXHUwMDNjXFx1MDAzYyAxOCkgLyoga2Z1bmMgcmVxdWlyZXMgQ0FQX1BFUkZNT04gKi9cXG4gXFxuIC8qXFxuICAqIFRhZyBtYXJraW5nIGEga2VybmVsIGZ1bmN0aW9uIGFzIGEga2Z1bmMuIFRoaXMgaXMgbWVhbnQgdG8gbWluaW1pemUgdGhlXFxuZGlmZiAtLWdpdCBhL2tlcm5lbC9icGYvaGVscGVycy5jIGIva2VybmVsL2JwZi9oZWxwZXJzLmNcXG5pbmRleCBiM2NjNWM4ZmM4NzU2Li44YTBlZWI0ZjYyMzZkIDEwMDY0NFxcbi0tLSBhL2tlcm5lbC9icGYvaGVscGVycy5jXFxuKysrIGIva2VybmVsL2JwZi9oZWxwZXJzLmNcXG5AQCAtNDg4Myw3ICs0ODgzLDcgQEAgQlRGX0lEKGZ1bmMsIGJwZl9jZ3JvdXBfcmVsZWFzZV9kdG9yKVxcbiBcXG4gQlRGX0tGVU5DU19TVEFSVChjb21tb25fYnRmX2lkcylcXG4gQlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl9jYXN0X3RvX2tlcm5fY3R4LCBLRl9GQVNUQ0FMTClcXG4tQlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl9yZG9ubHlfY2FzdCwgS0ZfRkFTVENBTEwpXFxuK0JURl9JRF9GTEFHUyhmdW5jLCBicGZfcmRvbmx5X2Nhc3QsIEtGX0ZBU1RDQUxMIHwgS0ZfUEVSRk1PTilcXG4gQlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl9yY3VfcmVhZF9sb2NrKVxcbiBCVEZfSURfRkxBR1MoZnVuYywgYnBmX3JjdV9yZWFkX3VubG9jaylcXG4gQlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl9keW5wdHJfc2xpY2UsIEtGX1JFVF9OVUxMKVxcbkBAIC00OTIwLDExICs0OTIwLDExIEBAIEJURl9JRF9GTEFHUyhmdW5jLCBicGZfd3Ffc2V0X2NhbGxiYWNrLCBLRl9JTVBMSUNJVF9BUkdTKVxcbiBCVEZfSURfRkxBR1MoZnVuYywgYnBmX3dxX3N0YXJ0KVxcbiBCVEZfSURfRkxBR1MoZnVuYywgYnBmX3ByZWVtcHRfZGlzYWJsZSlcXG4gQlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl9wcmVlbXB0X2VuYWJsZSlcXG4tQlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl9pdGVyX2JpdHNfbmV3LCBLRl9JVEVSX05FVylcXG4rQlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl9pdGVyX2JpdHNfbmV3LCBLRl9JVEVSX05FVyB8IEtGX1BFUkZNT04pXFxuIEJURl9JRF9GTEFHUyhmdW5jLCBicGZfaXRlcl9iaXRzX25leHQsIEtGX0lURVJfTkVYVCB8IEtGX1JFVF9OVUxMKVxcbiBCVEZfSURfRkxBR1MoZnVuYywgYnBmX2l0ZXJfYml0c19kZXN0cm95LCBLRl9JVEVSX0RFU1RST1kpXFxuLUJURl9JRF9GTEFHUyhmdW5jLCBicGZfY29weV9mcm9tX3VzZXJfc3RyLCBLRl9TTEVFUEFCTEUpXFxuLUJURl9JRF9GTEFHUyhmdW5jLCBicGZfY29weV9mcm9tX3VzZXJfdGFza19zdHIsIEtGX1NMRUVQQUJMRSlcXG4rQlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl9jb3B5X2Zyb21fdXNlcl9zdHIsIEtGX1NMRUVQQUJMRSB8IEtGX1BFUkZNT04pXFxuK0JURl9JRF9GTEFHUyhmdW5jLCBicGZfY29weV9mcm9tX3VzZXJfdGFza19zdHIsIEtGX1NMRUVQQUJMRSB8IEtGX1BFUkZNT04pXFxuIEJURl9JRF9GTEFHUyhmdW5jLCBicGZfZ2V0X2ttZW1fY2FjaGUpXFxuIEJURl9JRF9GTEFHUyhmdW5jLCBicGZfaXRlcl9rbWVtX2NhY2hlX25ldywgS0ZfSVRFUl9ORVcgfCBLRl9TTEVFUEFCTEUpXFxuIEJURl9JRF9GTEFHUyhmdW5jLCBicGZfaXRlcl9rbWVtX2NhY2hlX25leHQsIEtGX0lURVJfTkVYVCB8IEtGX1JFVF9OVUxMIHwgS0ZfU0xFRVBBQkxFKVxcbkBAIC00OTMyLDE0ICs0OTMyLDE0IEBAIEJURl9JRF9GTEFHUyhmdW5jLCBicGZfaXRlcl9rbWVtX2NhY2hlX2Rlc3Ryb3ksIEtGX0lURVJfREVTVFJPWSB8IEtGX1NMRUVQQUJMRSlcXG4gQlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl9sb2NhbF9pcnFfc2F2ZSlcXG4gQlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl9sb2NhbF9pcnFfcmVzdG9yZSlcXG4gI2lmZGVmIENPTkZJR19CUEZfRVZFTlRTXFxuLUJURl9JRF9GTEFHUyhmdW5jLCBicGZfcHJvYmVfcmVhZF91c2VyX2R5bnB0cilcXG4tQlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl9wcm9iZV9yZWFkX2tlcm5lbF9keW5wdHIpXFxuLUJURl9JRF9GTEFHUyhmdW5jLCBicGZfcHJvYmVfcmVhZF91c2VyX3N0cl9keW5wdHIpXFxuLUJURl9JRF9GTEFHUyhmdW5jLCBicGZfcHJvYmVfcmVhZF9rZXJuZWxfc3RyX2R5bnB0cilcXG4tQlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl9jb3B5X2Zyb21fdXNlcl9keW5wdHIsIEtGX1NMRUVQQUJMRSlcXG4tQlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl9jb3B5X2Zyb21fdXNlcl9zdHJfZHlucHRyLCBLRl9TTEVFUEFCTEUpXFxuLUJURl9JRF9GTEFHUyhmdW5jLCBicGZfY29weV9mcm9tX3VzZXJfdGFza19keW5wdHIsIEtGX1NMRUVQQUJMRSlcXG4tQlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl9jb3B5X2Zyb21fdXNlcl90YXNrX3N0cl9keW5wdHIsIEtGX1NMRUVQQUJMRSlcXG4rQlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl9wcm9iZV9yZWFkX3VzZXJfZHlucHRyLCBLRl9QRVJGTU9OKVxcbitCVEZfSURfRkxBR1MoZnVuYywgYnBmX3Byb2JlX3JlYWRfa2VybmVsX2R5bnB0ciwgS0ZfUEVSRk1PTilcXG4rQlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl9wcm9iZV9yZWFkX3VzZXJfc3RyX2R5bnB0ciwgS0ZfUEVSRk1PTilcXG4rQlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl9wcm9iZV9yZWFkX2tlcm5lbF9zdHJfZHlucHRyLCBLRl9QRVJGTU9OKVxcbitCVEZfSURfRkxBR1MoZnVuYywgYnBmX2NvcHlfZnJvbV91c2VyX2R5bnB0ciwgS0ZfU0xFRVBBQkxFIHwgS0ZfUEVSRk1PTilcXG4rQlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl9jb3B5X2Zyb21fdXNlcl9zdHJfZHlucHRyLCBLRl9TTEVFUEFCTEUgfCBLRl9QRVJGTU9OKVxcbitCVEZfSURfRkxBR1MoZnVuYywgYnBmX2NvcHlfZnJvbV91c2VyX3Rhc2tfZHlucHRyLCBLRl9TTEVFUEFCTEUgfCBLRl9QRVJGTU9OKVxcbitCVEZfSURfRkxBR1MoZnVuYywgYnBmX2NvcHlfZnJvbV91c2VyX3Rhc2tfc3RyX2R5bnB0ciwgS0ZfU0xFRVBBQkxFIHwgS0ZfUEVSRk1PTilcXG4gI2VuZGlmXFxuICNpZmRlZiBDT05GSUdfRE1BX1NIQVJFRF9CVUZGRVJcXG4gQlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl9pdGVyX2RtYWJ1Zl9uZXcsIEtGX0lURVJfTkVXIHwgS0ZfU0xFRVBBQkxFKVxcbkBAIC00OTQ3LDI2ICs0OTQ3LDI2IEBAIEJURl9JRF9GTEFHUyhmdW5jLCBicGZfaXRlcl9kbWFidWZfbmV4dCwgS0ZfSVRFUl9ORVhUIHwgS0ZfUkVUX05VTEwgfCBLRl9TTEVFUEFCXFxuIEJURl9JRF9GTEFHUyhmdW5jLCBicGZfaXRlcl9kbWFidWZfZGVzdHJveSwgS0ZfSVRFUl9ERVNUUk9ZIHwgS0ZfU0xFRVBBQkxFKVxcbiAjZW5kaWZcXG4gQlRGX0lEX0ZMQUdTKGZ1bmMsIF9fYnBmX3RyYXApXFxuLUJURl9JRF9GTEFHUyhmdW5jLCBicGZfc3RyY21wKTtcXG4tQlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl9zdHJjYXNlY21wKTtcXG4tQlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl9zdHJuY2FzZWNtcCk7XFxuLUJURl9JRF9GTEFHUyhmdW5jLCBicGZfc3RyY2hyKTtcXG4tQlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl9zdHJjaHJudWwpO1xcbi1CVEZfSURfRkxBR1MoZnVuYywgYnBmX3N0cm5jaHIpO1xcbi1CVEZfSURfRkxBR1MoZnVuYywgYnBmX3N0cnJjaHIpO1xcbi1CVEZfSURfRkxBR1MoZnVuYywgYnBmX3N0cmxlbik7XFxuLUJURl9JRF9GTEFHUyhmdW5jLCBicGZfc3Rybmxlbik7XFxuLUJURl9JRF9GTEFHUyhmdW5jLCBicGZfc3Ryc3BuKTtcXG4tQlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl9zdHJjc3BuKTtcXG4tQlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl9zdHJzdHIpO1xcbi1CVEZfSURfRkxBR1MoZnVuYywgYnBmX3N0cmNhc2VzdHIpO1xcbi1CVEZfSURfRkxBR1MoZnVuYywgYnBmX3N0cm5zdHIpO1xcbi1CVEZfSURfRkxBR1MoZnVuYywgYnBmX3N0cm5jYXNlc3RyKTtcXG4rQlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl9zdHJjbXAsIEtGX1BFUkZNT04pO1xcbitCVEZfSURfRkxBR1MoZnVuYywgYnBmX3N0cmNhc2VjbXAsIEtGX1BFUkZNT04pO1xcbitCVEZfSURfRkxBR1MoZnVuYywgYnBmX3N0cm5jYXNlY21wLCBLRl9QRVJGTU9OKTtcXG4rQlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl9zdHJjaHIsIEtGX1BFUkZNT04pO1xcbitCVEZfSURfRkxBR1MoZnVuYywgYnBmX3N0cmNocm51bCwgS0ZfUEVSRk1PTik7XFxuK0JURl9JRF9GTEFHUyhmdW5jLCBicGZfc3RybmNociwgS0ZfUEVSRk1PTik7XFxuK0JURl9JRF9GTEFHUyhmdW5jLCBicGZfc3RycmNociwgS0ZfUEVSRk1PTik7XFxuK0JURl9JRF9GTEFHUyhmdW5jLCBicGZfc3RybGVuLCBLRl9QRVJGTU9OKTtcXG4rQlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl9zdHJubGVuLCBLRl9QRVJGTU9OKTtcXG4rQlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl9zdHJzcG4sIEtGX1BFUkZNT04pO1xcbitCVEZfSURfRkxBR1MoZnVuYywgYnBmX3N0cmNzcG4sIEtGX1BFUkZNT04pO1xcbitCVEZfSURfRkxBR1MoZnVuYywgYnBmX3N0cnN0ciwgS0ZfUEVSRk1PTik7XFxuK0JURl9JRF9GTEFHUyhmdW5jLCBicGZfc3RyY2FzZXN0ciwgS0ZfUEVSRk1PTik7XFxuK0JURl9JRF9GTEFHUyhmdW5jLCBicGZfc3RybnN0ciwgS0ZfUEVSRk1PTik7XFxuK0JURl9JRF9GTEFHUyhmdW5jLCBicGZfc3RybmNhc2VzdHIsIEtGX1BFUkZNT04pO1xcbiAjaWYgZGVmaW5lZChDT05GSUdfQlBGX0xTTSkgXFx1MDAyNlxcdTAwMjYgZGVmaW5lZChDT05GSUdfQ0dST1VQUylcXG4gQlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl9jZ3JvdXBfcmVhZF94YXR0ciwgS0ZfUkNVKVxcbiAjZW5kaWZcXG4tQlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl9zdHJlYW1fdnByaW50aywgS0ZfSU1QTElDSVRfQVJHUyB8IEtGX1NQSU5MT0NLX1NBRkUpXFxuLUJURl9JRF9GTEFHUyhmdW5jLCBicGZfc3RyZWFtX3ByaW50X3N0YWNrLCBLRl9JTVBMSUNJVF9BUkdTIHwgS0ZfU1BJTkxPQ0tfU0FGRSlcXG4rQlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl9zdHJlYW1fdnByaW50aywgS0ZfSU1QTElDSVRfQVJHUyB8IEtGX1NQSU5MT0NLX1NBRkUgfCBLRl9QRVJGTU9OKVxcbitCVEZfSURfRkxBR1MoZnVuYywgYnBmX3N0cmVhbV9wcmludF9zdGFjaywgS0ZfSU1QTElDSVRfQVJHUyB8IEtGX1NQSU5MT0NLX1NBRkUgfCBLRl9QRVJGTU9OKVxcbiBCVEZfSURfRkxBR1MoZnVuYywgYnBmX3Rhc2tfd29ya19zY2hlZHVsZV9zaWduYWwsIEtGX0lNUExJQ0lUX0FSR1MpXFxuIEJURl9JRF9GTEFHUyhmdW5jLCBicGZfdGFza193b3JrX3NjaGVkdWxlX3Jlc3VtZSwgS0ZfSU1QTElDSVRfQVJHUylcXG4gQlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl9keW5wdHJfZnJvbV9maWxlKVxcbmRpZmYgLS1naXQgYS9rZXJuZWwvYnBmL3ZlcmlmaWVyLmMgYi9rZXJuZWwvYnBmL3ZlcmlmaWVyLmNcXG5pbmRleCA3MmEzZjU5OThkZDI3Li4zNjkyM2NlMDQyNzM0IDEwMDY0NFxcbi0tLSBhL2tlcm5lbC9icGYvdmVyaWZpZXIuY1xcbisrKyBiL2tlcm5lbC9icGYvdmVyaWZpZXIuY1xcbkBAIC02NDUzLDYgKzY0NTMsMTYgQEAgc3RhdGljIGludCBjaGVja19tZW1fYWNjZXNzKHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYsIGludCBpbnNuX2lkeCwgc3RydWN0IGJcXG4gXFx0XFx0XFx0cmV0dXJuIC1FQUNDRVM7XFxuIFxcdFxcdH1cXG4gXFxuK1xcdFxcdGlmIChyZG9ubHlfdW50cnVzdGVkIFxcdTAwMjZcXHUwMDI2ICFlbnYtXFx1MDAzZWFsbG93X3B0cl9sZWFrcykge1xcbitcXHRcXHRcXHR2ZXJib3NlKGVudiwgXFxcIiVzIGFjY2VzcyBpcyBhbGxvd2VkIG9ubHkgdG8gQ0FQX1BFUkZNT04gYW5kIENBUF9TWVNfQURNSU5cXFxcblxcXCIsXFxuK1xcdFxcdFxcdFxcdHJlZ190eXBlX3N0cihlbnYsIHJlZy1cXHUwMDNldHlwZSkpO1xcbitcXHRcXHRcXHRicGZfZGlhZ19wb2xpY3koXFxuK1xcdFxcdFxcdFxcdGVudiwgaW5zbl9pZHgsIFxcXCJyZWFkIGZyb20gdW50cnVzdGVkIHJlYWQtb25seSBtZW1vcnlcXFwiLFxcbitcXHRcXHRcXHRcXHRcXFwidGhlIGFjY2VzcyByZXF1aXJlcyBDQVBfUEVSRk1PTlxcXCIsXFxuK1xcdFxcdFxcdFxcdFxcXCJMb2FkIHRoZSBwcm9ncmFtIHdpdGggQ0FQX1BFUkZNT04sIG9yIGF2b2lkIGRlcmVmZXJlbmNpbmcgdW50cnVzdGVkIHBvaW50ZXJzLlxcXCIpO1xcbitcXHRcXHRcXHRyZXR1cm4gLUVQRVJNO1xcbitcXHRcXHR9XFxuK1xcbiBcXHRcXHQvKlxcbiBcXHRcXHQgKiBBY2Nlc3NlcyB0byB1bnRydXN0ZWQgUFRSX1RPX01FTSBhcmUgZG9uZSB0aHJvdWdoIHByb2JlXFxuIFxcdFxcdCAqIGluc3RydWN0aW9ucywgaGVuY2Ugbm8gbmVlZCB0byBjaGVjayBib3VuZHMgaW4gdGhhdCBjYXNlLlxcbkBAIC0xMTM1Niw2ICsxMTM2NiwxMSBAQCBzdGF0aWMgYm9vbCBpc19rZnVuY19kZXN0cnVjdGl2ZShzdHJ1Y3QgYnBmX2NhbGxfYXJnX21ldGEgKm1ldGEpXFxuIFxcdHJldHVybiBtZXRhLVxcdTAwM2VrZnVuY19mbGFncyBcXHUwMDI2IEtGX0RFU1RSVUNUSVZFO1xcbiB9XFxuIFxcbitzdGF0aWMgYm9vbCBpc19rZnVuY19wZXJmbW9uKHN0cnVjdCBicGZfY2FsbF9hcmdfbWV0YSAqbWV0YSlcXG4re1xcbitcXHRyZXR1cm4gbWV0YS1cXHUwMDNla2Z1bmNfZmxhZ3MgXFx1MDAyNiBLRl9QRVJGTU9OO1xcbit9XFxuK1xcbiBzdGF0aWMgYm9vbCBpc19rZnVuY19yY3Uoc3RydWN0IGJwZl9jYWxsX2FyZ19tZXRhICptZXRhKVxcbiB7XFxuIFxcdHJldHVybiBtZXRhLVxcdTAwM2VrZnVuY19mbGFncyBcXHUwMDI2IEtGX1JDVTtcXG5AQCAtMTM4MzQsNiArMTM4NDksMTYgQEAgc3RhdGljIGludCBjaGVja19rZnVuY19jYWxsKHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYsIHN0cnVjdCBicGZfaW5zbiAqaW5zbixcXG4gXFx0XFx0cmV0dXJuIC1FQUNDRVM7XFxuIFxcdH1cXG4gXFxuK1xcdGlmIChpc19rZnVuY19wZXJmbW9uKFxcdTAwMjZtZXRhKSBcXHUwMDI2XFx1MDAyNiAhZW52LVxcdTAwM2VhbGxvd19wdHJfbGVha3MpIHtcXG4rXFx0XFx0dmVyYm9zZShlbnYsIFxcXCIlcyBpcyBhbGxvd2VkIG9ubHkgdG8gQ0FQX1BFUkZNT04gYW5kIENBUF9TWVNfQURNSU5cXFxcblxcXCIsXFxuK1xcdFxcdFxcdGZ1bmNfbmFtZSk7XFxuK1xcdFxcdG9wZXJhdGlvbiA9IGJwZl9kaWFnX2ZtdChlbnYsIFxcXCJrZnVuYyAlc1xcXCIsIGZ1bmNfbmFtZSk7XFxuK1xcdFxcdGJwZl9kaWFnX3BvbGljeShcXG4rXFx0XFx0XFx0ZW52LCBpbnNuX2lkeCwgb3BlcmF0aW9uLCBcXFwidGhlIGtmdW5jIHJlcXVpcmVzIENBUF9QRVJGTU9OXFxcIixcXG4rXFx0XFx0XFx0XFxcIkxvYWQgdGhlIHByb2dyYW0gd2l0aCBDQVBfUEVSRk1PTiwgb3IgYXZvaWQgdGhlIGtmdW5jLlxcXCIpO1xcbitcXHRcXHRyZXR1cm4gLUVQRVJNO1xcbitcXHR9XFxuK1xcbiBcXHRzbGVlcGFibGUgPSBicGZfaXNfa2Z1bmNfc2xlZXBhYmxlKFxcdTAwMjZtZXRhKTtcXG4gXFx0aWYgKHNsZWVwYWJsZSBcXHUwMDI2XFx1MDAyNiAhaW5fc2xlZXBhYmxlKGVudikpIHtcXG4gXFx0XFx0dmVyYm9zZShlbnYsIFxcXCJwcm9ncmFtIG11c3QgYmUgc2xlZXBhYmxlIHRvIGNhbGwgc2xlZXBhYmxlIGtmdW5jICVzXFxcXG5cXFwiLCBmdW5jX25hbWUpO1xcbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy92ZXJpZmllci5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvdmVyaWZpZXIuY1xcbmluZGV4IDY0YWM0OWFkNjdlNjMuLmVjOWUzOTA3Yzc1ZDYgMTAwNjQ0XFxuLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvdmVyaWZpZXIuY1xcbisrKyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3ZlcmlmaWVyLmNcXG5AQCAtNTMsNiArNTMsNyBAQFxcbiAjaW5jbHVkZSBcXFwidmVyaWZpZXJfaXRlcmF0aW5nX2NhbGxiYWNrcy5za2VsLmhcXFwiXFxuICNpbmNsdWRlIFxcXCJ2ZXJpZmllcl9qZXFfaW5mZXJfbm90X251bGwuc2tlbC5oXFxcIlxcbiAjaW5jbHVkZSBcXFwidmVyaWZpZXJfaml0X2NvbnZlcmdlbmNlLnNrZWwuaFxcXCJcXG4rI2luY2x1ZGUgXFxcInZlcmlmaWVyX2tmdW5jX3BlcmZtb24uc2tlbC5oXFxcIlxcbiAjaW5jbHVkZSBcXFwidmVyaWZpZXJfbGRfaW5kLnNrZWwuaFxcXCJcXG4gI2luY2x1ZGUgXFxcInZlcmlmaWVyX2xkc3guc2tlbC5oXFxcIlxcbiAjaW5jbHVkZSBcXFwidmVyaWZpZXJfbGVha19wdHIuc2tlbC5oXFxcIlxcbkBAIC0yMTYsNiArMjE3LDcgQEAgdm9pZCB0ZXN0X3ZlcmlmaWVyX2ludF9wdHIodm9pZCkgICAgICAgICAgICAgIHsgUlVOKHZlcmlmaWVyX2ludF9wdHIpOyB9XFxuIHZvaWQgdGVzdF92ZXJpZmllcl9pdGVyYXRpbmdfY2FsbGJhY2tzKHZvaWQpICB7IFJVTih2ZXJpZmllcl9pdGVyYXRpbmdfY2FsbGJhY2tzKTsgfVxcbiB2b2lkIHRlc3RfdmVyaWZpZXJfamVxX2luZmVyX25vdF9udWxsKHZvaWQpICAgeyBSVU4odmVyaWZpZXJfamVxX2luZmVyX25vdF9udWxsKTsgfVxcbiB2b2lkIHRlc3RfdmVyaWZpZXJfaml0X2NvbnZlcmdlbmNlKHZvaWQpICAgICAgeyBSVU4odmVyaWZpZXJfaml0X2NvbnZlcmdlbmNlKTsgfVxcbit2b2lkIHRlc3RfdmVyaWZpZXJfa2Z1bmNfcGVyZm1vbih2b2lkKSAgICAgICAgeyBSVU4odmVyaWZpZXJfa2Z1bmNfcGVyZm1vbik7IH1cXG4gdm9pZCB0ZXN0X3ZlcmlmaWVyX2xvYWRfYWNxdWlyZSh2b2lkKSAgICAgICAgIHsgUlVOKHZlcmlmaWVyX2xvYWRfYWNxdWlyZSk7IH1cXG4gdm9pZCB0ZXN0X3ZlcmlmaWVyX2xkX2luZCh2b2lkKSAgICAgICAgICAgICAgIHsgUlVOKHZlcmlmaWVyX2xkX2luZCk7IH1cXG4gdm9pZCB0ZXN0X3ZlcmlmaWVyX2xkc3godm9pZCkgICAgICAgICAgICAgICAgICB7IFJVTih2ZXJpZmllcl9sZHN4KTsgfVxcbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvdmVyaWZpZXJfa2Z1bmNfcGVyZm1vbi5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3ZlcmlmaWVyX2tmdW5jX3BlcmZtb24uY1xcbm5ldyBmaWxlIG1vZGUgMTAwNjQ0XFxuaW5kZXggMDAwMDAwMDAwMDAwMC4uYzZhZGJiNDgxNmNlY1xcbi0tLSAvZGV2L251bGxcXG4rKysgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvdmVyaWZpZXJfa2Z1bmNfcGVyZm1vbi5jXFxuQEAgLTAsMCArMSw2MyBAQFxcbisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMFxcbitcXG4rI2luY2x1ZGUgXFx1MDAzY3ZtbGludXguaFxcdTAwM2VcXG4rI2luY2x1ZGUgXFx1MDAzY2JwZi9icGZfaGVscGVycy5oXFx1MDAzZVxcbisjaW5jbHVkZSBcXFwiYnBmX21pc2MuaFxcXCJcXG4rXFxuK3ZvaWQgKnVzZXJfcHRyO1xcbitjaGFyIGR5bnB0cl9idWZbOF07XFxuK3U2NCBrYWRkcjtcXG4rXFxuK1NFQyhcXFwic29ja2V0XFxcIilcXG4rX19zdWNjZXNzXFxuK19fY2Fwc191bnByaXYoQ0FQX0JQRilcXG4rX19mYWlsdXJlX3VucHJpdlxcbitfX21zZ191bnByaXYoXFxcImJwZl9yZG9ubHlfY2FzdCBpcyBhbGxvd2VkIG9ubHkgdG8gQ0FQX1BFUkZNT04gYW5kIENBUF9TWVNfQURNSU5cXFwiKVxcbitpbnQgcmRvbmx5X2Nhc3Rfbm9wZXJmbW9uKHZvaWQgKmN0eClcXG4re1xcbitcXHRjaGFyICpwID0gYnBmX3Jkb25seV9jYXN0KDAsIDApO1xcbitcXG4rXFx0cmV0dXJuIHBbMHg3ZmZmXTtcXG4rfVxcbitcXG4rU0VDKFxcXCJzb2NrZXRcXFwiKVxcbitfX3N1Y2Nlc3NcXG4rX19jYXBzX3VucHJpdihDQVBfQlBGKVxcbitfX2ZhaWx1cmVfdW5wcml2XFxuK19fbXNnX3VucHJpdihcXFwiYnBmX3Byb2JlX3JlYWRfa2VybmVsX2R5bnB0ciBpcyBhbGxvd2VkIG9ubHkgdG8gQ0FQX1BFUkZNT04gYW5kIENBUF9TWVNfQURNSU5cXFwiKVxcbitpbnQgcHJvYmVfcmVhZF9rZXJuZWxfZHlucHRyX25vcGVyZm1vbih2b2lkICpjdHgpXFxuK3tcXG4rXFx0c3RydWN0IGJwZl9keW5wdHIgZHB0cjtcXG4rXFxuK1xcdGJwZl9keW5wdHJfZnJvbV9tZW0oZHlucHRyX2J1Ziwgc2l6ZW9mKGR5bnB0cl9idWYpLCAwLCBcXHUwMDI2ZHB0cik7XFxuK1xcdGJwZl9wcm9iZV9yZWFkX2tlcm5lbF9keW5wdHIoXFx1MDAyNmRwdHIsIDAsIHNpemVvZihkeW5wdHJfYnVmKSwgdXNlcl9wdHIpO1xcbitcXHRyZXR1cm4gMDtcXG4rfVxcbitcXG4rU0VDKFxcXCJzb2NrZXRcXFwiKVxcbitfX3N1Y2Nlc3NcXG4rX19jYXBzX3VucHJpdihDQVBfQlBGKVxcbitfX2ZhaWx1cmVfdW5wcml2XFxuK19fbXNnX3VucHJpdihcXFwiYnBmX3N0cmVhbV92cHJpbnRrIGlzIGFsbG93ZWQgb25seSB0byBDQVBfUEVSRk1PTiBhbmQgQ0FQX1NZU19BRE1JTlxcXCIpXFxuK2ludCBzdHJlYW1fdnByaW50a19ub3BlcmZtb24odm9pZCAqY3R4KVxcbit7XFxuK1xcdGJwZl9zdHJlYW1fcHJpbnRrKEJQRl9TVERPVVQsIFxcXCIlcEJcXFwiLCAodm9pZCAqKWthZGRyKTtcXG4rXFx0cmV0dXJuIDA7XFxuK31cXG4rXFxuK19fd2VhayBpbnQgc3VicHJvZ191bnRydXN0ZWRfcmVhZCh2b2lkICpwIF9fYXJnX3VudHJ1c3RlZClcXG4re1xcbitcXHRyZXR1cm4gKihjaGFyICopcDtcXG4rfVxcbitcXG4rU0VDKFxcXCJzb2NrZXRcXFwiKVxcbitfX3N1Y2Nlc3NcXG4rX19jYXBzX3VucHJpdihDQVBfQlBGKVxcbitfX2ZhaWx1cmVfdW5wcml2XFxuK19fbXNnX3VucHJpdihcXFwicmRvbmx5X3VudHJ1c3RlZF9tZW0gYWNjZXNzIGlzIGFsbG93ZWQgb25seSB0byBDQVBfUEVSRk1PTiBhbmQgQ0FQX1NZU19BRE1JTlxcXCIpXFxuK2ludCBhcmdfdW50cnVzdGVkX3JlYWRfbm9wZXJmbW9uKHZvaWQgKmN0eClcXG4re1xcbitcXHRyZXR1cm4gc3VicHJvZ191bnRydXN0ZWRfcmVhZCgwKTtcXG4rfVxcbitcXG4rY2hhciBfbGljZW5zZVtdIFNFQyhcXFwibGljZW5zZVxcXCIpID0gXFxcIkdQTFxcXCI7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTEwVDE2OjE1OjQ1Ljc0ODY5MTQ4M1oiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImNvcmUiLCJEdXJhdGlvbiI6NjI0NTU2MDc3NDMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiQlBGX1NZU0NBTExcIixcbiAgICBcIkJQRl9FVkVOVFNcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJjaGVja19rZnVuY19jYWxsXCIsXG4gICAgXCJjaGVja19tZW1fYWNjZXNzXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggaW50cm9kdWNlcyBhIG5ldyBLRl9QRVJGTU9OIGtmdW5jIGZsYWcgYW5kIGVuZm9yY2VzIENBUF9QRVJGTU9OL0NBUF9TWVNfQURNSU4gcGVybWlzc2lvbiBjaGVja3MgaW4gdGhlIEJQRiB2ZXJpZmllciAoY2hlY2tfa2Z1bmNfY2FsbCBhbmQgY2hlY2tfbWVtX2FjY2VzcykuIFNpbmNlIHRoZXNlIGNoYW5nZXMgbW9kaWZ5IHJlYWNoYWJsZSBCUEYgdmVyaWZpZXIgbG9naWMgZXhlY3V0ZWQgZHVyaW5nIEJQRiBwcm9ncmFtIHZlcmlmaWNhdGlvbiB2aWEgc3lzX2JwZiwgdGhleSB3YXJyYW50IGZ1enppbmcuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyIGFuZCBzZWN1cml0eSBlbmdpbmVlci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZXZhbHVhdGUgd2hldGhlciBpdCB3YXJyYW50cyBmdXp6aW5nIHdpdGggc3l6a2FsbGVyLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiBpbnRlcm5hbCBhc3N1bXB0aW9ucy4gWW91IG11c3QgYWN0aXZlbHkgdXNlIHlvdXIgY29kZSBhY2Nlc3NcbnRvb2xzIHRvIGluc3BlY3QgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSwgY2FsbGVycywgYW5kIHN1cnJvdW5kaW5nIGNvbnRleHQuXG5cbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4xLiBDT1JFIFRSSUFHRSBQSElMT1NPUEhZXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuVGhlIGdvYWwgb2YgcGF0Y2ggZnV6emluZyBpcyB0byBkaXNjb3ZlciBjcmFzaGVzLCByZWdyZXNzaW9ucywgZXhwb3NlZCBsYXRlbnQgYnVncyxcbmFuZCBuZXdseSB0cmlnZ2VyZWQgYXNzZXJ0aW9ucyBpbnRyb2R1Y2VkIGJ5IHRoZSBwYXRjaCBzZXJpZXMuXG5cbi0gUkVBQ0hBQklMSVRZIElTIFRIRSBQUklNQVJZIEdBVEU6XG4gIEZ1enppbmcgY2FuIG9ubHkgZGlzY292ZXIgYnVncyBpbiBjb2RlIHRoYXQgY2FuIGFjdHVhbGx5IGV4ZWN1dGUgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWRcbiAgZW52aXJvbm1lbnRzIChHQ0Ugb3IgUUVNVSwgdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGRldmljZXMgbGlrZSBVU0IgZ2FkZ2V0cywgbmV0ZGV2LCB0dW4vdGFwKS5cbiAgSWYgdGhlIG1vZGlmaWVkIGNvZGUgaXMgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIChzZWUgU2VjdGlvbiAyKSwgaXQgTVVTVCBOT1QgYmUgZnV6emVkLFxuICByZWdhcmRsZXNzIG9mIHdoZXRoZXIgaXQgYWRkcyBhc3NlcnRpb25zIG9yIGNvbXBsZXggbG9naWMuXG5cbi0gRE8gTk9UIEJMSU5ETFkgVFJVU1QgXCJOTyBGVU5DVElPTkFMIENIQU5HRVwiIChORkNJKSBPUiBcIlJFRkFDVE9SSU5HXCIgQ0xBSU1TOlxuICBQYXRjaCBhdXRob3JzIHJvdXRpbmVseSBsYWJlbCBjaGFuZ2VzIGFzIFwiY2xlYW51cHNcIiwgXCJyZWZhY3RvcmluZ3NcIiwgb3Igc3RhdGVcbiAgXCJObyBmdW5jdGlvbmFsIGNoYW5nZSBpbnRlbmRlZFwiLiBEbyBOT1QgdGFrZSB0aGVzZSBjbGFpbXMgYXQgZmFjZSB2YWx1ZS5cbiAgQ29kZSByZWZhY3RvcmluZ3MgdGhhdCByZWFycmFuZ2UgbG9naWMsIGludHJvZHVjZSBoZWxwZXIgZnVuY3Rpb25zLCBvciBhbHRlciBzdGF0ZSBtYW5hZ2VtZW50XG4gIGluIGNvcmUgc3Vic3lzdGVtcyBmcmVxdWVudGx5IGludHJvZHVjZSBzdWJ0bGUgc2VtYW50aWMgc2hpZnRzIG9yIHVuY292ZXIgbGF0ZW50IGtlcm5lbCBidWdzLlxuICBJZiByZWFjaGFibGUgZXhlY3V0YWJsZSBjb2RlIGlzIG1vZGlmaWVkIG9yIHJlZmFjdG9yZWQsIGl0IE1VU1QgYmUgZnV6emVkLlxuXG4tIE5FVyBPUiBNT0RJRklFRCBBU1NFUlRJT05TIElOIFJFQUNIQUJMRSBDT0RFIE1VU1QgQkUgRlVaWkVEOlxuICBXaGVuIGEgcGF0Y2ggaW50cm9kdWNlcyBvciBtb2RpZmllcyBydW50aW1lIGNoZWNrcyBvciBhc3NlcnRpb25zIChlLmcuLCBXQVJOX09OKiwgVk1fV0FSTl9PTiosXG4gIEJVR19PTiosIGxvY2tkZXBfYXNzZXJ0KikgaW4gcmVhY2hhYmxlIGNvZGUgcGF0aHMsIGl0IGVuZm9yY2VzIG5ldyBvciBzdHJpY3RlciBpbnZhcmlhbnRzLlxuICBFdmVuIGlmIHRoZSBhdXRob3IgYmVsaWV2ZXMgdGhlIGludmFyaWFudCBhbHdheXMgaG9sZHMsIGZ1enppbmcgaXMgZXNzZW50aWFsIHRvIHZlcmlmeSB3aGV0aGVyXG4gIGFuIHVudXN1YWwgc2VxdWVuY2Ugb2Ygb3BlcmF0aW9ucyBjYW4gdmlvbGF0ZSBpdC5cblxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbjIuIFdIRU4gVE8gUkVUVVJOIFdvcnRoRnV6emluZz1mYWxzZSAoTkVHQVRJVkUgQ1JJVEVSSUEpXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBPTkxZIElGIGFsbCBtb2RpZmllZCBjb2RlIGZhbGxzIHN0cmljdGx5IGludG8gb25lIG9yIG1vcmUgb2YgdGhlc2UgY2F0ZWdvcmllczpcblxuLSBOb24ta2VybmVsIGFuZCBub24tZXhlY3V0YWJsZSBjaGFuZ2VzOlxuICAqIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIGNvbW1lbnRzLCBvciBzcGVsbGluZyBmaXhlcy5cbiAgKiBVc2VyLXNwYWNlIGRpcmVjdG9yaWVzLCBzZWxmLXRlc3RzLCBzYW1wbGVzLCBvciBzY3JpcHRzIChlLmcuLCB0b29scy8sIHNhbXBsZXMvLCBzY3JpcHRzLywgdXNyLylcbiAgICB0aGF0IGRvIG5vdCBhZmZlY3QgdGhlIGNvbXBpbGVkIGtlcm5lbCBpbWFnZSAodm1saW51eCkgb3Iga2VybmVsIG1vZHVsZXMuXG4gICogUHVyZWx5IGRlY29yYXRpdmUgbG9nZ2luZyAoZS5nLiwgbWVzc2FnZSBzdHJpbmdzIGluIHByX2VyciwgcHJpbnRrLCBkZXZfaW5mbykgb3IgdHJhY2Vwb2ludHNcbiAgICB0aGF0IGRvIG5vdCBhbHRlciBjb250cm9sIGZsb3cgb3IgZGF0YSBzdHJ1Y3R1cmVzLlxuICAqIEJ1aWxkIHN5c3RlbSBvciBLY29uZmlnIGNoYW5nZXMgdGhhdCBkbyBub3QgYWx0ZXIgY29tcGlsZWQgQyBsb2dpYy5cbi0gU3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIGhhcmR3YXJlOlxuICAqIFZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaGVzLCBTbWFydE5JQ3MsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCxcbiAgICBpb25pYywgYW1kZ3B1KSByZXF1aXJpbmcgcGh5c2ljYWwgQVNJQy9QQ0llIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLlxuLSBVbnJlYWNoYWJsZSBleGVjdXRpb24gcGF0aHM6XG4gICogRHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoLnJlbW92ZSwgLnNodXRkb3duLCBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIpIGV4ZWN1dGVkIG9ubHkgZHVyaW5nXG4gICAgcGh5c2ljYWwgUENJIGhvdC11bnBsdWcgb3IgbWFudWFsIHN5c2ZzIGRyaXZlciB1bmJpbmRpbmcuXG4gICogQ29kZSBwYXRocyBleGNsdXNpdmUgdG8gYXJjaGl0ZWN0dXJlcyBvdGhlciB0aGFuIHRoZSB0YXJnZXQgYXJjaGl0ZWN0dXJlLlxuXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuMy4gV0hFTiBUTyBSRVRVUk4gV29ydGhGdXp6aW5nPXRydWUgKFBPU0lUSVZFIENSSVRFUklBKVxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZSB3aGVuZXZlciB0aGUgcGF0Y2ggdG91Y2hlcyByZWFjaGFibGUgZXhlY3V0YWJsZSBjb2RlLCBpbmNsdWRpbmc6XG4tIENvcmUgU3Vic3lzdGVtczpcbiAgKiBBbnkgbG9naWMgbW9kaWZpY2F0aW9ucyBpbiBtZW1vcnkgbWFuYWdlbWVudCAobW0vKSwgc3luY2hyb25pemF0aW9uL2xvY2tpbmcgKGtlcm5lbC9sb2NraW5nLyksXG4gICAgQlBGLCBzY2hlZHVsZXIsIGNvcmUgbmV0d29ya2luZywgVkZTLCBvciBzeXNjYWxsIGhhbmRsaW5nLlxuLSBSZWZhY3RvcmluZ3MgYW5kIENvZGUgQ2xlYW51cHM6XG4gICogQW55IHJlc3RydWN0dXJpbmcgb2YgcmVhY2hhYmxlIGRhdGEgc3RydWN0dXJlcywgaGVscGVyIGFic3RyYWN0aW9ucywgb3IgYWxnb3JpdGhtIGZsb3dzLlxuLSBSdW50aW1lIEFzc2VydGlvbnMgYW5kIERlZmVuc2l2ZSBDaGVja3M6XG4gICogQW55IGludHJvZHVjdGlvbiBvciBhbHRlcmF0aW9uIG9mIGFzc2VydGlvbnMgKFdBUk5fT04qLCBWTV9XQVJOX09OKiwgQlVHX09OKiwgZXRjLikgaW4gcmVhY2hhYmxlIHBhdGhzLlxuLSBSZWFjaGFibGUgRHJpdmVycyBhbmQgUHJvdG9jb2xzOlxuICAqIERyaXZlcnMgYWNjZXNzaWJsZSB2aWEgdmlydHVhbCBidXNlcyAodmlydGlvLCBVU0IgZ2FkZ2V0LCBsb29wYmFjaywgbmV0bGluaywgYmluZGVyLCBzb2NrZXRzLCBldGMuKS5cblxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbjQuIEVYVFJBQ1RJTkcgRm9jdXNTeW1ib2xzIChQUkVWRU5USU5HIERJTFVUSU9OKVxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbldoZW4gV29ydGhGdXp6aW5nPXRydWUsIHlvdSBtdXN0IGV4dHJhY3Qgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyBpbnRvIEZvY3VzU3ltYm9scyB0byBndWlkZSB0aGUgZnV6emVyOlxuXG4tIEFWT0lEIFVCSVFVSVRPVVMgTElGRUNZQ0xFIEhPVC1QQVRIUzpcbiAgRG8gTk9UIGxpc3QgZ2VuZXJpYywgdWJpcXVpdG91cyBmdW5jdGlvbnMgY2FsbGVkIGJ5IGFsbW9zdCBldmVyeSBwcm9ncmFtIGluIHRoZSBjb3JwdXNcbiAgKGluY2x1ZGluZywgYnV0IG5vdCBsaW1pdGVkIHRvOiBnZW5lcmFsIG1lbW9yeSBhbGxvY2F0b3JzIGFuZCBkZWFsbG9jYXRvcnMsIHBhZ2UgZmF1bHRcbiAgYW5kIHRyYXAgaGFuZGxlcnMsIG9yIGNvcmUgc3luY2hyb25pemF0aW9uIHByaW1pdGl2ZXM7IHRoaXMgaXMgbm90IGFuIGV4aGF1c3RpdmUgbGlzdCkuXG4gIExpc3RpbmcgdWJpcXVpdG91cyBmdW5jdGlvbnMgY2F1c2VzIHRoZSBmdXp6ZXIgdG8gY2xhc3NpZnkgdGhvdXNhbmRzIG9mIHVucmVsYXRlZCB0ZXN0cyBhcyBcImZvY3VzZWRcIixcbiAgd2hpY2ggc2V2ZXJlbHkgZGlsdXRlcyBmdXp6aW5nIGVmZm9ydCBhd2F5IGZyb20gdGhlIGFjdHVhbCBjaGFuZ2VzLlxuXG4tIFRBUkdFVCBTUEVDSUZJQyBGRUFUVVJFIExPR0lDIEFORCBFTlRSWVBPSU5UUzpcbiAgTGlzdCBmdW5jdGlvbnMgdGhhdCBzcGVjaWZpY2FsbHkgaW1wbGVtZW50IHRoZSBsb2dpYyBiZWluZyBhZGRlZCBvciBhbHRlcmVkLCBvciBkaXJlY3QgQVBJIGVudHJ5cG9pbnRzXG4gIGZvciB0aGUgc3Vic3lzdGVtIGZlYXR1cmUgdW5kZXIgcmV2aWV3LlxuXG4tIEhBTkRMSU5HIFNUQVRJQyBJTkxJTkUgRlVOQ1RJT05TIElOIEhFQURFUlMgKC5oKTpcbiAgQ29tcGlsZXItaW5saW5lZCBzdGF0aWMgZnVuY3Rpb25zIChzdWNoIGFzIHN0YXRpYyBpbmxpbmVzIGluIG1tLyouaCBvciBpbmNsdWRlL2xpbnV4LyouaCkgbGFja1xuICBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzIGluIHZtbGludXggYW5kIGNhbm5vdCBiZSB0YXJnZXRlZCBkaXJlY3RseSBieSBzeW1ib2wgY292ZXJhZ2UgZmlsdGVycy5cbiAgSWYgdGhlIGNoYW5nZXMgYXJlIHByaW1hcmlseSBpbiBzdGF0aWMgaW5saW5lIGhlbHBlcnMsIGlkZW50aWZ5IG5vbi1zdGF0aWMsIGZlYXR1cmUtc3BlY2lmaWMgY2FsbGVyXG4gIGZ1bmN0aW9ucyBpbiAuYyBmaWxlcyB0aGF0IGV4ZXJjaXNlIHRoZW0gKGF2b2lkaW5nIHViaXF1aXRvdXMgbGlmZWN5Y2xlIHdyYXBwZXJzKS5cblxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbjUuIElERU5USUZZSU5HIEVuYWJsZUNvbmZpZ3Ncbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5JZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IGNvbXBpbGUgYW5kIHJlYWNoIHRoZSBtb2RpZmllZCBjb2RlOlxuLSBJbnNwZWN0IEtjb25maWcgZmlsZXMgYW5kICNpZmRlZiBndWFyZHM7IGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuLSBDaGVjayBcImRlcGVuZHMgb25cIiBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3MgbmVlZGVkLlxuLSBTdHJpcCBhbnkgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiVGFyZ2V0IGFyY2hpdGVjdHVyZTogYW1kNjRcblxuRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgNDc1NDdlZTdhNTQwOTIzZTYyMTlmNDViZDhiMjZlMjlkYThjMWY1MFxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBUaHUgU2VwIDEwIDE2OjE1OjQyIDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9icGYva2Z1bmNzLnJzdCBiL0RvY3VtZW50YXRpb24vYnBmL2tmdW5jcy5yc3RcbmluZGV4IDg1ZjczZTBiYmQwZmYuLjY2OTFmZThhMzJjM2QgMTAwNjQ0XG4tLS0gYS9Eb2N1bWVudGF0aW9uL2JwZi9rZnVuY3MucnN0XG4rKysgYi9Eb2N1bWVudGF0aW9uL2JwZi9rZnVuY3MucnN0XG5AQCAtNDg2LDYgKzQ4NiwxNiBAQCBFeGFtcGxlIHVzYWdlIGluIEJQRiBwcm9ncmFtOlxuIFx0Lyogbm90ZSB0aGF0IHRoZSBsYXN0IGFyZ3VtZW50IGlzIG9taXR0ZWQgKi9cbiAgICAgICAgIGJwZl90YXNrX3dvcmtfc2NoZWR1bGVfc2lnbmFsKHRhc2ssIFx1MDAyNndvcmstXHUwMDNldHcsIFx1MDAyNmFycm1hcCwgdGFza193b3JrX2NhbGxiYWNrKTtcbiBcbisyLjUuMTAgS0ZfUEVSRk1PTiBmbGFnXG4rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuK1xuK1RoZSBLRl9QRVJGTU9OIGZsYWcgaXMgdXNlZCBmb3Iga2Z1bmNzIHRoYXQgY2FuIGV4cG9zZSBrZXJuZWwgbWVtb3J5IG9yIGtlcm5lbFxuK2FkZHJlc3NlcyB0byB0aGUgQlBGIHByb2dyYW0sIGZvciBleGFtcGxlIGJ5IHJlYWRpbmcgdGhyb3VnaCBhIHBvaW50ZXIgdGhhdCB0aGVcbit2ZXJpZmllciBkb2VzIG5vdCBjaGVjay4gQ2FsbGluZyBzdWNoIGEga2Z1bmMgcmVxdWlyZXMgQ0FQX1BFUkZNT04sIG9yXG4rQ0FQX1NZU19BRE1JTiwgaW4gdGhlIHNhbWUgd2F5IHRoYXQgdGhlIGVxdWl2YWxlbnQgQlBGIGhlbHBlcnMgYXJlIGdhdGVkIGluXG4rYnBmX2Jhc2VfZnVuY19wcm90bygpLiBBIHByb2dyYW0gbG9hZGVkIHdpdGggQ0FQX0JQRiBhbG9uZSBpcyByZWplY3RlZCBhdCBsb2FkXG4rdGltZS5cbitcbiAyLjYgUmVnaXN0ZXJpbmcgdGhlIGtmdW5jc1xuIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gXG5kaWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51eC9idGYuaCBiL2luY2x1ZGUvbGludXgvYnRmLmhcbmluZGV4IDg5ZDVhNWM0ZjExNzEuLjdjNjJlYTE3YjExNjMgMTAwNjQ0XG4tLS0gYS9pbmNsdWRlL2xpbnV4L2J0Zi5oXG4rKysgYi9pbmNsdWRlL2xpbnV4L2J0Zi5oXG5AQCAtODAsNiArODAsNyBAQFxuICNkZWZpbmUgS0ZfQVJFTkFfQVJHMiAgICgxIFx1MDAzY1x1MDAzYyAxNSkgLyoga2Z1bmMgdGFrZXMgYW4gYXJlbmEgcG9pbnRlciBhcyBpdHMgc2Vjb25kIGFyZ3VtZW50ICovXG4gI2RlZmluZSBLRl9JTVBMSUNJVF9BUkdTICgxIFx1MDAzY1x1MDAzYyAxNikgLyoga2Z1bmMgaGFzIGltcGxpY2l0IGFyZ3VtZW50cyBzdXBwbGllZCBieSB0aGUgdmVyaWZpZXIgKi9cbiAjZGVmaW5lIEtGX1NQSU5MT0NLX1NBRkUgKDEgXHUwMDNjXHUwMDNjIDE3KSAvKiBrZnVuYyBpcyBhbGxvd2VkIGluc2lkZSBicGZfc3Bpbl9sb2NrLWVkIHJlZ2lvbiAqL1xuKyNkZWZpbmUgS0ZfUEVSRk1PTiAgICAgICgxIFx1MDAzY1x1MDAzYyAxOCkgLyoga2Z1bmMgcmVxdWlyZXMgQ0FQX1BFUkZNT04gKi9cbiBcbiAvKlxuICAqIFRhZyBtYXJraW5nIGEga2VybmVsIGZ1bmN0aW9uIGFzIGEga2Z1bmMuIFRoaXMgaXMgbWVhbnQgdG8gbWluaW1pemUgdGhlXG5kaWZmIC0tZ2l0IGEva2VybmVsL2JwZi9oZWxwZXJzLmMgYi9rZXJuZWwvYnBmL2hlbHBlcnMuY1xuaW5kZXggYjNjYzVjOGZjODc1Ni4uOGEwZWViNGY2MjM2ZCAxMDA2NDRcbi0tLSBhL2tlcm5lbC9icGYvaGVscGVycy5jXG4rKysgYi9rZXJuZWwvYnBmL2hlbHBlcnMuY1xuQEAgLTQ4ODMsNyArNDg4Myw3IEBAIEJURl9JRChmdW5jLCBicGZfY2dyb3VwX3JlbGVhc2VfZHRvcilcbiBcbiBCVEZfS0ZVTkNTX1NUQVJUKGNvbW1vbl9idGZfaWRzKVxuIEJURl9JRF9GTEFHUyhmdW5jLCBicGZfY2FzdF90b19rZXJuX2N0eCwgS0ZfRkFTVENBTEwpXG4tQlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl9yZG9ubHlfY2FzdCwgS0ZfRkFTVENBTEwpXG4rQlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl9yZG9ubHlfY2FzdCwgS0ZfRkFTVENBTEwgfCBLRl9QRVJGTU9OKVxuIEJURl9JRF9GTEFHUyhmdW5jLCBicGZfcmN1X3JlYWRfbG9jaylcbiBCVEZfSURfRkxBR1MoZnVuYywgYnBmX3JjdV9yZWFkX3VubG9jaylcbiBCVEZfSURfRkxBR1MoZnVuYywgYnBmX2R5bnB0cl9zbGljZSwgS0ZfUkVUX05VTEwpXG5AQCAtNDkyMCwxMSArNDkyMCwxMSBAQCBCVEZfSURfRkxBR1MoZnVuYywgYnBmX3dxX3NldF9jYWxsYmFjaywgS0ZfSU1QTElDSVRfQVJHUylcbiBCVEZfSURfRkxBR1MoZnVuYywgYnBmX3dxX3N0YXJ0KVxuIEJURl9JRF9GTEFHUyhmdW5jLCBicGZfcHJlZW1wdF9kaXNhYmxlKVxuIEJURl9JRF9GTEFHUyhmdW5jLCBicGZfcHJlZW1wdF9lbmFibGUpXG4tQlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl9pdGVyX2JpdHNfbmV3LCBLRl9JVEVSX05FVylcbitCVEZfSURfRkxBR1MoZnVuYywgYnBmX2l0ZXJfYml0c19uZXcsIEtGX0lURVJfTkVXIHwgS0ZfUEVSRk1PTilcbiBCVEZfSURfRkxBR1MoZnVuYywgYnBmX2l0ZXJfYml0c19uZXh0LCBLRl9JVEVSX05FWFQgfCBLRl9SRVRfTlVMTClcbiBCVEZfSURfRkxBR1MoZnVuYywgYnBmX2l0ZXJfYml0c19kZXN0cm95LCBLRl9JVEVSX0RFU1RST1kpXG4tQlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl9jb3B5X2Zyb21fdXNlcl9zdHIsIEtGX1NMRUVQQUJMRSlcbi1CVEZfSURfRkxBR1MoZnVuYywgYnBmX2NvcHlfZnJvbV91c2VyX3Rhc2tfc3RyLCBLRl9TTEVFUEFCTEUpXG4rQlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl9jb3B5X2Zyb21fdXNlcl9zdHIsIEtGX1NMRUVQQUJMRSB8IEtGX1BFUkZNT04pXG4rQlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl9jb3B5X2Zyb21fdXNlcl90YXNrX3N0ciwgS0ZfU0xFRVBBQkxFIHwgS0ZfUEVSRk1PTilcbiBCVEZfSURfRkxBR1MoZnVuYywgYnBmX2dldF9rbWVtX2NhY2hlKVxuIEJURl9JRF9GTEFHUyhmdW5jLCBicGZfaXRlcl9rbWVtX2NhY2hlX25ldywgS0ZfSVRFUl9ORVcgfCBLRl9TTEVFUEFCTEUpXG4gQlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl9pdGVyX2ttZW1fY2FjaGVfbmV4dCwgS0ZfSVRFUl9ORVhUIHwgS0ZfUkVUX05VTEwgfCBLRl9TTEVFUEFCTEUpXG5AQCAtNDkzMiwxNCArNDkzMiwxNCBAQCBCVEZfSURfRkxBR1MoZnVuYywgYnBmX2l0ZXJfa21lbV9jYWNoZV9kZXN0cm95LCBLRl9JVEVSX0RFU1RST1kgfCBLRl9TTEVFUEFCTEUpXG4gQlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl9sb2NhbF9pcnFfc2F2ZSlcbiBCVEZfSURfRkxBR1MoZnVuYywgYnBmX2xvY2FsX2lycV9yZXN0b3JlKVxuICNpZmRlZiBDT05GSUdfQlBGX0VWRU5UU1xuLUJURl9JRF9GTEFHUyhmdW5jLCBicGZfcHJvYmVfcmVhZF91c2VyX2R5bnB0cilcbi1CVEZfSURfRkxBR1MoZnVuYywgYnBmX3Byb2JlX3JlYWRfa2VybmVsX2R5bnB0cilcbi1CVEZfSURfRkxBR1MoZnVuYywgYnBmX3Byb2JlX3JlYWRfdXNlcl9zdHJfZHlucHRyKVxuLUJURl9JRF9GTEFHUyhmdW5jLCBicGZfcHJvYmVfcmVhZF9rZXJuZWxfc3RyX2R5bnB0cilcbi1CVEZfSURfRkxBR1MoZnVuYywgYnBmX2NvcHlfZnJvbV91c2VyX2R5bnB0ciwgS0ZfU0xFRVBBQkxFKVxuLUJURl9JRF9GTEFHUyhmdW5jLCBicGZfY29weV9mcm9tX3VzZXJfc3RyX2R5bnB0ciwgS0ZfU0xFRVBBQkxFKVxuLUJURl9JRF9GTEFHUyhmdW5jLCBicGZfY29weV9mcm9tX3VzZXJfdGFza19keW5wdHIsIEtGX1NMRUVQQUJMRSlcbi1CVEZfSURfRkxBR1MoZnVuYywgYnBmX2NvcHlfZnJvbV91c2VyX3Rhc2tfc3RyX2R5bnB0ciwgS0ZfU0xFRVBBQkxFKVxuK0JURl9JRF9GTEFHUyhmdW5jLCBicGZfcHJvYmVfcmVhZF91c2VyX2R5bnB0ciwgS0ZfUEVSRk1PTilcbitCVEZfSURfRkxBR1MoZnVuYywgYnBmX3Byb2JlX3JlYWRfa2VybmVsX2R5bnB0ciwgS0ZfUEVSRk1PTilcbitCVEZfSURfRkxBR1MoZnVuYywgYnBmX3Byb2JlX3JlYWRfdXNlcl9zdHJfZHlucHRyLCBLRl9QRVJGTU9OKVxuK0JURl9JRF9GTEFHUyhmdW5jLCBicGZfcHJvYmVfcmVhZF9rZXJuZWxfc3RyX2R5bnB0ciwgS0ZfUEVSRk1PTilcbitCVEZfSURfRkxBR1MoZnVuYywgYnBmX2NvcHlfZnJvbV91c2VyX2R5bnB0ciwgS0ZfU0xFRVBBQkxFIHwgS0ZfUEVSRk1PTilcbitCVEZfSURfRkxBR1MoZnVuYywgYnBmX2NvcHlfZnJvbV91c2VyX3N0cl9keW5wdHIsIEtGX1NMRUVQQUJMRSB8IEtGX1BFUkZNT04pXG4rQlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl9jb3B5X2Zyb21fdXNlcl90YXNrX2R5bnB0ciwgS0ZfU0xFRVBBQkxFIHwgS0ZfUEVSRk1PTilcbitCVEZfSURfRkxBR1MoZnVuYywgYnBmX2NvcHlfZnJvbV91c2VyX3Rhc2tfc3RyX2R5bnB0ciwgS0ZfU0xFRVBBQkxFIHwgS0ZfUEVSRk1PTilcbiAjZW5kaWZcbiAjaWZkZWYgQ09ORklHX0RNQV9TSEFSRURfQlVGRkVSXG4gQlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl9pdGVyX2RtYWJ1Zl9uZXcsIEtGX0lURVJfTkVXIHwgS0ZfU0xFRVBBQkxFKVxuQEAgLTQ5NDcsMjYgKzQ5NDcsMjYgQEAgQlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl9pdGVyX2RtYWJ1Zl9uZXh0LCBLRl9JVEVSX05FWFQgfCBLRl9SRVRfTlVMTCB8IEtGX1NMRUVQQUJcbiBCVEZfSURfRkxBR1MoZnVuYywgYnBmX2l0ZXJfZG1hYnVmX2Rlc3Ryb3ksIEtGX0lURVJfREVTVFJPWSB8IEtGX1NMRUVQQUJMRSlcbiAjZW5kaWZcbiBCVEZfSURfRkxBR1MoZnVuYywgX19icGZfdHJhcClcbi1CVEZfSURfRkxBR1MoZnVuYywgYnBmX3N0cmNtcCk7XG4tQlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl9zdHJjYXNlY21wKTtcbi1CVEZfSURfRkxBR1MoZnVuYywgYnBmX3N0cm5jYXNlY21wKTtcbi1CVEZfSURfRkxBR1MoZnVuYywgYnBmX3N0cmNocik7XG4tQlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl9zdHJjaHJudWwpO1xuLUJURl9JRF9GTEFHUyhmdW5jLCBicGZfc3RybmNocik7XG4tQlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl9zdHJyY2hyKTtcbi1CVEZfSURfRkxBR1MoZnVuYywgYnBmX3N0cmxlbik7XG4tQlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl9zdHJubGVuKTtcbi1CVEZfSURfRkxBR1MoZnVuYywgYnBmX3N0cnNwbik7XG4tQlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl9zdHJjc3BuKTtcbi1CVEZfSURfRkxBR1MoZnVuYywgYnBmX3N0cnN0cik7XG4tQlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl9zdHJjYXNlc3RyKTtcbi1CVEZfSURfRkxBR1MoZnVuYywgYnBmX3N0cm5zdHIpO1xuLUJURl9JRF9GTEFHUyhmdW5jLCBicGZfc3RybmNhc2VzdHIpO1xuK0JURl9JRF9GTEFHUyhmdW5jLCBicGZfc3RyY21wLCBLRl9QRVJGTU9OKTtcbitCVEZfSURfRkxBR1MoZnVuYywgYnBmX3N0cmNhc2VjbXAsIEtGX1BFUkZNT04pO1xuK0JURl9JRF9GTEFHUyhmdW5jLCBicGZfc3RybmNhc2VjbXAsIEtGX1BFUkZNT04pO1xuK0JURl9JRF9GTEFHUyhmdW5jLCBicGZfc3RyY2hyLCBLRl9QRVJGTU9OKTtcbitCVEZfSURfRkxBR1MoZnVuYywgYnBmX3N0cmNocm51bCwgS0ZfUEVSRk1PTik7XG4rQlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl9zdHJuY2hyLCBLRl9QRVJGTU9OKTtcbitCVEZfSURfRkxBR1MoZnVuYywgYnBmX3N0cnJjaHIsIEtGX1BFUkZNT04pO1xuK0JURl9JRF9GTEFHUyhmdW5jLCBicGZfc3RybGVuLCBLRl9QRVJGTU9OKTtcbitCVEZfSURfRkxBR1MoZnVuYywgYnBmX3N0cm5sZW4sIEtGX1BFUkZNT04pO1xuK0JURl9JRF9GTEFHUyhmdW5jLCBicGZfc3Ryc3BuLCBLRl9QRVJGTU9OKTtcbitCVEZfSURfRkxBR1MoZnVuYywgYnBmX3N0cmNzcG4sIEtGX1BFUkZNT04pO1xuK0JURl9JRF9GTEFHUyhmdW5jLCBicGZfc3Ryc3RyLCBLRl9QRVJGTU9OKTtcbitCVEZfSURfRkxBR1MoZnVuYywgYnBmX3N0cmNhc2VzdHIsIEtGX1BFUkZNT04pO1xuK0JURl9JRF9GTEFHUyhmdW5jLCBicGZfc3RybnN0ciwgS0ZfUEVSRk1PTik7XG4rQlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl9zdHJuY2FzZXN0ciwgS0ZfUEVSRk1PTik7XG4gI2lmIGRlZmluZWQoQ09ORklHX0JQRl9MU00pIFx1MDAyNlx1MDAyNiBkZWZpbmVkKENPTkZJR19DR1JPVVBTKVxuIEJURl9JRF9GTEFHUyhmdW5jLCBicGZfY2dyb3VwX3JlYWRfeGF0dHIsIEtGX1JDVSlcbiAjZW5kaWZcbi1CVEZfSURfRkxBR1MoZnVuYywgYnBmX3N0cmVhbV92cHJpbnRrLCBLRl9JTVBMSUNJVF9BUkdTIHwgS0ZfU1BJTkxPQ0tfU0FGRSlcbi1CVEZfSURfRkxBR1MoZnVuYywgYnBmX3N0cmVhbV9wcmludF9zdGFjaywgS0ZfSU1QTElDSVRfQVJHUyB8IEtGX1NQSU5MT0NLX1NBRkUpXG4rQlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl9zdHJlYW1fdnByaW50aywgS0ZfSU1QTElDSVRfQVJHUyB8IEtGX1NQSU5MT0NLX1NBRkUgfCBLRl9QRVJGTU9OKVxuK0JURl9JRF9GTEFHUyhmdW5jLCBicGZfc3RyZWFtX3ByaW50X3N0YWNrLCBLRl9JTVBMSUNJVF9BUkdTIHwgS0ZfU1BJTkxPQ0tfU0FGRSB8IEtGX1BFUkZNT04pXG4gQlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl90YXNrX3dvcmtfc2NoZWR1bGVfc2lnbmFsLCBLRl9JTVBMSUNJVF9BUkdTKVxuIEJURl9JRF9GTEFHUyhmdW5jLCBicGZfdGFza193b3JrX3NjaGVkdWxlX3Jlc3VtZSwgS0ZfSU1QTElDSVRfQVJHUylcbiBCVEZfSURfRkxBR1MoZnVuYywgYnBmX2R5bnB0cl9mcm9tX2ZpbGUpXG5kaWZmIC0tZ2l0IGEva2VybmVsL2JwZi92ZXJpZmllci5jIGIva2VybmVsL2JwZi92ZXJpZmllci5jXG5pbmRleCA3MmEzZjU5OThkZDI3Li4zNjkyM2NlMDQyNzM0IDEwMDY0NFxuLS0tIGEva2VybmVsL2JwZi92ZXJpZmllci5jXG4rKysgYi9rZXJuZWwvYnBmL3ZlcmlmaWVyLmNcbkBAIC02NDUzLDYgKzY0NTMsMTYgQEAgc3RhdGljIGludCBjaGVja19tZW1fYWNjZXNzKHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYsIGludCBpbnNuX2lkeCwgc3RydWN0IGJcbiBcdFx0XHRyZXR1cm4gLUVBQ0NFUztcbiBcdFx0fVxuIFxuK1x0XHRpZiAocmRvbmx5X3VudHJ1c3RlZCBcdTAwMjZcdTAwMjYgIWVudi1cdTAwM2VhbGxvd19wdHJfbGVha3MpIHtcbitcdFx0XHR2ZXJib3NlKGVudiwgXCIlcyBhY2Nlc3MgaXMgYWxsb3dlZCBvbmx5IHRvIENBUF9QRVJGTU9OIGFuZCBDQVBfU1lTX0FETUlOXFxuXCIsXG4rXHRcdFx0XHRyZWdfdHlwZV9zdHIoZW52LCByZWctXHUwMDNldHlwZSkpO1xuK1x0XHRcdGJwZl9kaWFnX3BvbGljeShcbitcdFx0XHRcdGVudiwgaW5zbl9pZHgsIFwicmVhZCBmcm9tIHVudHJ1c3RlZCByZWFkLW9ubHkgbWVtb3J5XCIsXG4rXHRcdFx0XHRcInRoZSBhY2Nlc3MgcmVxdWlyZXMgQ0FQX1BFUkZNT05cIixcbitcdFx0XHRcdFwiTG9hZCB0aGUgcHJvZ3JhbSB3aXRoIENBUF9QRVJGTU9OLCBvciBhdm9pZCBkZXJlZmVyZW5jaW5nIHVudHJ1c3RlZCBwb2ludGVycy5cIik7XG4rXHRcdFx0cmV0dXJuIC1FUEVSTTtcbitcdFx0fVxuK1xuIFx0XHQvKlxuIFx0XHQgKiBBY2Nlc3NlcyB0byB1bnRydXN0ZWQgUFRSX1RPX01FTSBhcmUgZG9uZSB0aHJvdWdoIHByb2JlXG4gXHRcdCAqIGluc3RydWN0aW9ucywgaGVuY2Ugbm8gbmVlZCB0byBjaGVjayBib3VuZHMgaW4gdGhhdCBjYXNlLlxuQEAgLTExMzU2LDYgKzExMzY2LDExIEBAIHN0YXRpYyBib29sIGlzX2tmdW5jX2Rlc3RydWN0aXZlKHN0cnVjdCBicGZfY2FsbF9hcmdfbWV0YSAqbWV0YSlcbiBcdHJldHVybiBtZXRhLVx1MDAzZWtmdW5jX2ZsYWdzIFx1MDAyNiBLRl9ERVNUUlVDVElWRTtcbiB9XG4gXG4rc3RhdGljIGJvb2wgaXNfa2Z1bmNfcGVyZm1vbihzdHJ1Y3QgYnBmX2NhbGxfYXJnX21ldGEgKm1ldGEpXG4re1xuK1x0cmV0dXJuIG1ldGEtXHUwMDNla2Z1bmNfZmxhZ3MgXHUwMDI2IEtGX1BFUkZNT047XG4rfVxuK1xuIHN0YXRpYyBib29sIGlzX2tmdW5jX3JjdShzdHJ1Y3QgYnBmX2NhbGxfYXJnX21ldGEgKm1ldGEpXG4ge1xuIFx0cmV0dXJuIG1ldGEtXHUwMDNla2Z1bmNfZmxhZ3MgXHUwMDI2IEtGX1JDVTtcbkBAIC0xMzgzNCw2ICsxMzg0OSwxNiBAQCBzdGF0aWMgaW50IGNoZWNrX2tmdW5jX2NhbGwoc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudiwgc3RydWN0IGJwZl9pbnNuICppbnNuLFxuIFx0XHRyZXR1cm4gLUVBQ0NFUztcbiBcdH1cbiBcbitcdGlmIChpc19rZnVuY19wZXJmbW9uKFx1MDAyNm1ldGEpIFx1MDAyNlx1MDAyNiAhZW52LVx1MDAzZWFsbG93X3B0cl9sZWFrcykge1xuK1x0XHR2ZXJib3NlKGVudiwgXCIlcyBpcyBhbGxvd2VkIG9ubHkgdG8gQ0FQX1BFUkZNT04gYW5kIENBUF9TWVNfQURNSU5cXG5cIixcbitcdFx0XHRmdW5jX25hbWUpO1xuK1x0XHRvcGVyYXRpb24gPSBicGZfZGlhZ19mbXQoZW52LCBcImtmdW5jICVzXCIsIGZ1bmNfbmFtZSk7XG4rXHRcdGJwZl9kaWFnX3BvbGljeShcbitcdFx0XHRlbnYsIGluc25faWR4LCBvcGVyYXRpb24sIFwidGhlIGtmdW5jIHJlcXVpcmVzIENBUF9QRVJGTU9OXCIsXG4rXHRcdFx0XCJMb2FkIHRoZSBwcm9ncmFtIHdpdGggQ0FQX1BFUkZNT04sIG9yIGF2b2lkIHRoZSBrZnVuYy5cIik7XG4rXHRcdHJldHVybiAtRVBFUk07XG4rXHR9XG4rXG4gXHRzbGVlcGFibGUgPSBicGZfaXNfa2Z1bmNfc2xlZXBhYmxlKFx1MDAyNm1ldGEpO1xuIFx0aWYgKHNsZWVwYWJsZSBcdTAwMjZcdTAwMjYgIWluX3NsZWVwYWJsZShlbnYpKSB7XG4gXHRcdHZlcmJvc2UoZW52LCBcInByb2dyYW0gbXVzdCBiZSBzbGVlcGFibGUgdG8gY2FsbCBzbGVlcGFibGUga2Z1bmMgJXNcXG5cIiwgZnVuY19uYW1lKTtcbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy92ZXJpZmllci5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvdmVyaWZpZXIuY1xuaW5kZXggNjRhYzQ5YWQ2N2U2My4uZWM5ZTM5MDdjNzVkNiAxMDA2NDRcbi0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3ZlcmlmaWVyLmNcbisrKyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3ZlcmlmaWVyLmNcbkBAIC01Myw2ICs1Myw3IEBAXG4gI2luY2x1ZGUgXCJ2ZXJpZmllcl9pdGVyYXRpbmdfY2FsbGJhY2tzLnNrZWwuaFwiXG4gI2luY2x1ZGUgXCJ2ZXJpZmllcl9qZXFfaW5mZXJfbm90X251bGwuc2tlbC5oXCJcbiAjaW5jbHVkZSBcInZlcmlmaWVyX2ppdF9jb252ZXJnZW5jZS5za2VsLmhcIlxuKyNpbmNsdWRlIFwidmVyaWZpZXJfa2Z1bmNfcGVyZm1vbi5za2VsLmhcIlxuICNpbmNsdWRlIFwidmVyaWZpZXJfbGRfaW5kLnNrZWwuaFwiXG4gI2luY2x1ZGUgXCJ2ZXJpZmllcl9sZHN4LnNrZWwuaFwiXG4gI2luY2x1ZGUgXCJ2ZXJpZmllcl9sZWFrX3B0ci5za2VsLmhcIlxuQEAgLTIxNiw2ICsyMTcsNyBAQCB2b2lkIHRlc3RfdmVyaWZpZXJfaW50X3B0cih2b2lkKSAgICAgICAgICAgICAgeyBSVU4odmVyaWZpZXJfaW50X3B0cik7IH1cbiB2b2lkIHRlc3RfdmVyaWZpZXJfaXRlcmF0aW5nX2NhbGxiYWNrcyh2b2lkKSAgeyBSVU4odmVyaWZpZXJfaXRlcmF0aW5nX2NhbGxiYWNrcyk7IH1cbiB2b2lkIHRlc3RfdmVyaWZpZXJfamVxX2luZmVyX25vdF9udWxsKHZvaWQpICAgeyBSVU4odmVyaWZpZXJfamVxX2luZmVyX25vdF9udWxsKTsgfVxuIHZvaWQgdGVzdF92ZXJpZmllcl9qaXRfY29udmVyZ2VuY2Uodm9pZCkgICAgICB7IFJVTih2ZXJpZmllcl9qaXRfY29udmVyZ2VuY2UpOyB9XG4rdm9pZCB0ZXN0X3ZlcmlmaWVyX2tmdW5jX3BlcmZtb24odm9pZCkgICAgICAgIHsgUlVOKHZlcmlmaWVyX2tmdW5jX3BlcmZtb24pOyB9XG4gdm9pZCB0ZXN0X3ZlcmlmaWVyX2xvYWRfYWNxdWlyZSh2b2lkKSAgICAgICAgIHsgUlVOKHZlcmlmaWVyX2xvYWRfYWNxdWlyZSk7IH1cbiB2b2lkIHRlc3RfdmVyaWZpZXJfbGRfaW5kKHZvaWQpICAgICAgICAgICAgICAgeyBSVU4odmVyaWZpZXJfbGRfaW5kKTsgfVxuIHZvaWQgdGVzdF92ZXJpZmllcl9sZHN4KHZvaWQpICAgICAgICAgICAgICAgICAgeyBSVU4odmVyaWZpZXJfbGRzeCk7IH1cbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvdmVyaWZpZXJfa2Z1bmNfcGVyZm1vbi5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3ZlcmlmaWVyX2tmdW5jX3BlcmZtb24uY1xubmV3IGZpbGUgbW9kZSAxMDA2NDRcbmluZGV4IDAwMDAwMDAwMDAwMDAuLmM2YWRiYjQ4MTZjZWNcbi0tLSAvZGV2L251bGxcbisrKyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy92ZXJpZmllcl9rZnVuY19wZXJmbW9uLmNcbkBAIC0wLDAgKzEsNjMgQEBcbisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMFxuK1xuKyNpbmNsdWRlIFx1MDAzY3ZtbGludXguaFx1MDAzZVxuKyNpbmNsdWRlIFx1MDAzY2JwZi9icGZfaGVscGVycy5oXHUwMDNlXG4rI2luY2x1ZGUgXCJicGZfbWlzYy5oXCJcbitcbit2b2lkICp1c2VyX3B0cjtcbitjaGFyIGR5bnB0cl9idWZbOF07XG4rdTY0IGthZGRyO1xuK1xuK1NFQyhcInNvY2tldFwiKVxuK19fc3VjY2Vzc1xuK19fY2Fwc191bnByaXYoQ0FQX0JQRilcbitfX2ZhaWx1cmVfdW5wcml2XG4rX19tc2dfdW5wcml2KFwiYnBmX3Jkb25seV9jYXN0IGlzIGFsbG93ZWQgb25seSB0byBDQVBfUEVSRk1PTiBhbmQgQ0FQX1NZU19BRE1JTlwiKVxuK2ludCByZG9ubHlfY2FzdF9ub3BlcmZtb24odm9pZCAqY3R4KVxuK3tcbitcdGNoYXIgKnAgPSBicGZfcmRvbmx5X2Nhc3QoMCwgMCk7XG4rXG4rXHRyZXR1cm4gcFsweDdmZmZdO1xuK31cbitcbitTRUMoXCJzb2NrZXRcIilcbitfX3N1Y2Nlc3NcbitfX2NhcHNfdW5wcml2KENBUF9CUEYpXG4rX19mYWlsdXJlX3VucHJpdlxuK19fbXNnX3VucHJpdihcImJwZl9wcm9iZV9yZWFkX2tlcm5lbF9keW5wdHIgaXMgYWxsb3dlZCBvbmx5IHRvIENBUF9QRVJGTU9OIGFuZCBDQVBfU1lTX0FETUlOXCIpXG4raW50IHByb2JlX3JlYWRfa2VybmVsX2R5bnB0cl9ub3BlcmZtb24odm9pZCAqY3R4KVxuK3tcbitcdHN0cnVjdCBicGZfZHlucHRyIGRwdHI7XG4rXG4rXHRicGZfZHlucHRyX2Zyb21fbWVtKGR5bnB0cl9idWYsIHNpemVvZihkeW5wdHJfYnVmKSwgMCwgXHUwMDI2ZHB0cik7XG4rXHRicGZfcHJvYmVfcmVhZF9rZXJuZWxfZHlucHRyKFx1MDAyNmRwdHIsIDAsIHNpemVvZihkeW5wdHJfYnVmKSwgdXNlcl9wdHIpO1xuK1x0cmV0dXJuIDA7XG4rfVxuK1xuK1NFQyhcInNvY2tldFwiKVxuK19fc3VjY2Vzc1xuK19fY2Fwc191bnByaXYoQ0FQX0JQRilcbitfX2ZhaWx1cmVfdW5wcml2XG4rX19tc2dfdW5wcml2KFwiYnBmX3N0cmVhbV92cHJpbnRrIGlzIGFsbG93ZWQgb25seSB0byBDQVBfUEVSRk1PTiBhbmQgQ0FQX1NZU19BRE1JTlwiKVxuK2ludCBzdHJlYW1fdnByaW50a19ub3BlcmZtb24odm9pZCAqY3R4KVxuK3tcbitcdGJwZl9zdHJlYW1fcHJpbnRrKEJQRl9TVERPVVQsIFwiJXBCXCIsICh2b2lkICopa2FkZHIpO1xuK1x0cmV0dXJuIDA7XG4rfVxuK1xuK19fd2VhayBpbnQgc3VicHJvZ191bnRydXN0ZWRfcmVhZCh2b2lkICpwIF9fYXJnX3VudHJ1c3RlZClcbit7XG4rXHRyZXR1cm4gKihjaGFyICopcDtcbit9XG4rXG4rU0VDKFwic29ja2V0XCIpXG4rX19zdWNjZXNzXG4rX19jYXBzX3VucHJpdihDQVBfQlBGKVxuK19fZmFpbHVyZV91bnByaXZcbitfX21zZ191bnByaXYoXCJyZG9ubHlfdW50cnVzdGVkX21lbSBhY2Nlc3MgaXMgYWxsb3dlZCBvbmx5IHRvIENBUF9QRVJGTU9OIGFuZCBDQVBfU1lTX0FETUlOXCIpXG4raW50IGFyZ191bnRydXN0ZWRfcmVhZF9ub3BlcmZtb24odm9pZCAqY3R4KVxuK3tcbitcdHJldHVybiBzdWJwcm9nX3VudHJ1c3RlZF9yZWFkKDApO1xuK31cbitcbitjaGFyIF9saWNlbnNlW10gU0VDKFwibGljZW5zZVwiKSA9IFwiR1BMXCI7XG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0xMFQxNjoxNTo0NS43NDg2OTI3NzNaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjoyMzcyMTE4MjA2MywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXNpcyBvZiBCUEYgS2Z1bmMgUGVybWlzc2lvbnMgUGF0Y2gqKlxuXG5Pa2F5LCBsZXQncyBicmVhayB0aGlzIGRvd24uIFRoaXMgcGF0Y2ggaXMgZm9jdXNlZCBvbiBCUEYga2Z1bmNzLCBzcGVjaWZpY2FsbHkgcmVsYXRlZCB0byB0aGUgdmVyaWZpZXIgYW5kIHBlcm1pc3Npb24gY2hlY2tzLiBNeSBpbml0aWFsIGFzc2Vzc21lbnQgaXMgdGhhdCB0aGlzIHdhcnJhbnRzIGZ1enppbmcgYmFzZWQgb24gdGhlIHBhdGNoJ3MgdG91Y2hlcyB0byBjb3JlIEJQRiB2ZXJpZmllciBsb2dpYywgd2hpY2ggaXMgcmVhY2hhYmxlIHZpYSB0aGUgYGJwZigpYCBzeXNjYWxsIGFuZCBmYWxscyB1bmRlciB0aGUgXCJjb3JlIHN1YnN5c3RlbVwiIGNhdGVnb3J5IGFjY29yZGluZyB0byBzZWN0aW9uIDMuXG5cblRoZSBwYXRjaCBpdHNlbGYgaXMgYWRkaW5nIGEgbmV3IGZsYWcsIGBLRl9QRVJGTU9OYCwgZGVmaW5lZCBpbiBgaW5jbHVkZS9saW51eC9idGYuaGAuIFRoaXMgaXMgaW1tZWRpYXRlbHkgc3VzcGljaW91cyDigJMgaW50cm9kdWNpbmcgYSBuZXcgcGVybWlzc2lvbiByZXF1aXJlbWVudCBzdWdnZXN0cyBhIHBvdGVudGlhbCBhdHRhY2sgc3VyZmFjZS4gVGhpcyBmbGFnIGlzIHRoZW4gYXBwbGllZCB0byBhIHN1YnN0YW50aWFsIG51bWJlciBvZiBrZnVuY3Mgd2l0aGluIGBrZXJuZWwvYnBmL2hlbHBlcnMuY2AuIFNwZWNpZmljYWxseSwgSSBzZWUgaXQgYXBwbGllZCB0byBhIHZhcmlldHkgb2YgcmVhZC93cml0ZSBmdW5jdGlvbnMgYW5kIHN0cmluZyBtYW5pcHVsYXRpb24gZnVuY3Rpb25zLCBpbmNsdWRpbmcgYGJwZl9yZG9ubHlfY2FzdGAsIGEgbnVtYmVyIG9mIGl0ZXJhdG9yIGZ1bmN0aW9ucyBhbmQgc3RyaW5nIGZ1bmN0aW9ucywgYW5kIGBicGZfc3RyZWFtX3ZwcmludGtgLCB3aGljaCBzdGFuZHMgb3V0LlxuXG5UaGUgY29yZSBvZiB0aGUgY2hhbmdlIHJlc2lkZXMgaW4gYGtlcm5lbC9icGYvdmVyaWZpZXIuY2AuICBgY2hlY2tfbWVtX2FjY2VzcygpYCBub3cgaW5jbHVkZXMgYSBjaGVjayBiYXNlZCBvbiB0aGUgbmV3IGBLRl9QRVJGTU9OYCBmbGFnLiBFc3NlbnRpYWxseSwgaWYgYSBwb2ludGVyIGlzIHVudHJ1c3RlZCBhbmQgcmVhZC1vbmx5LCBpdCBub3cgcmVxdWlyZXMgYENBUF9QRVJGTU9OYCAob3IgYENBUF9TWVNfQURNSU5gLCBuYXR1cmFsbHkpIHVubGVzcyBgZW52LVx1MDAzZWFsbG93X3B0cl9sZWFrc2AgaXMgc2V0LiBUaGUgYWRkZWQgYGlzX2tmdW5jX3BlcmZtb24oKWAgaGVscGVyIGlzIHRoZW4gdXNlZCBieSB0aGUgbW9yZSBzaWduaWZpY2FudCBgY2hlY2tfa2Z1bmNfY2FsbCgpYCBmdW5jdGlvbi4gIFRoaXMgZnVuY3Rpb24gd2lsbCBub3cgYmxvY2sgY2FsbHMgdG8gdGhvc2Uga2Z1bmNzIHRoYXQgYXJlIHRhZ2dlZCB3aXRoIHRoZSBgS0ZfUEVSRk1PTmAgZmxhZyB3aXRob3V0IHRoZSBuZWNlc3NhcnkgY2FwYWJpbGl0eS5cblxuRnJvbSBhIGZ1enppbmcgcGVyc3BlY3RpdmUsIEknbSBnb2luZyB0byB3YW50IHRvIGZvY3VzIG9uOlxuXG4qICAgVGhlIGZ1bmN0aW9ucyBtb2RpZmllZCBpbiBga2VybmVsL2JwZi92ZXJpZmllci5jYDogc3BlY2lmaWNhbGx5LCBgY2hlY2tfa2Z1bmNfY2FsbGAgYW5kIGBjaGVja19tZW1fYWNjZXNzYCDigJMgdGhlc2UgYXJlIGNsZWFybHkgdGhlIGdhdGVrZWVwZXJzIGFuZCB0aGUgY3JpdGljYWwgcG9pbnRzIG9mIGVuZm9yY2VtZW50LlxuKiAgIFRoZSBrZnVuY3MgdGhlbXNlbHZlcywgZXNwZWNpYWxseSB0aG9zZSBub3cgcmVxdWlyaW5nIGBDQVBfUEVSRk1PTmAuICBJdCdzIHVzZWZ1bCB0byBrZWVwIHRyYWNrIG9mIHRoZSBoZWxwZXIgZnVuY3Rpb24sIGBpc19rZnVuY19wZXJmbW9uKClgIHRvby5cbiogICBUaGUgb3ZlcmFsbCBlbnRyeXBvaW50IHRvIEJQRiB2ZXJpZmllciwgdGhlIGhlbHBlciBmdW5jdGlvbiBpdHNlbGYgYGJwZl9jaGVja2AuXG5cbkkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBleGFjdCBjb25kaXRpb25zIHVuZGVyIHdoaWNoIGBlbnYtXHUwMDNlYWxsb3dfcHRyX2xlYWtzYCBjYW4gYmUgc2V0LCBhcyB0aGF0IGNvdWxkIGJ5cGFzcyB0aGUgbmV3IHJlc3RyaWN0aW9ucy4gSXQgd291bGQgYmUgcHJ1ZGVudCB0byBpbnNwZWN0IHRoZSBjb2RlIHRvIHVuZGVyc3RhbmQgd2hhdCB2YWx1ZXMgZm9yIHRoZSBhcmd1bWVudHMgZm9yIHRoZXNlIGZ1bmN0aW9ucyB3aWxsIHJlc3VsdCBpbiBhbiBhbGxvd2VkIGNhbGwgdmVyc3VzIGEgYmxvY2tlZCBjYWxsLiBJJ20gZ29pbmcgdG8gdXNlIGdyZXBwZXIgb3IgcmVhZC1maWxlIHRvIGNhcmVmdWxseSBleGFtaW5lIHRoZSBzdXJyb3VuZGluZyBjb2RlIGluIGBrZXJuZWwvYnBmL3ZlcmlmaWVyLmNgIHRvIHVuZGVyc3RhbmQgdGhlIGZsb3cgd2l0aGluIHRoZXNlIGZ1bmN0aW9ucyBhbmQgaG93IHRoZXkgcmVsYXRlIHRvIHRoZSBCUEYgcHJvZ3JhbSBsb2FkaW5nIHByb2Nlc3MuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjc1NDQsIk91dHB1dFRva2VucyI6MzQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMTE4LCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMTBUMTY6MTY6MDkuNDY5ODc3ODg1WiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEwODM0MzE3MiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjaGVja19rZnVuY19jYWxsXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImtlcm5lbC9icGYvdmVyaWZpZXIuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJrZXJuZWwvYnBmL3ZlcmlmaWVyLmM9MTM3Njg9c3RhdGljIGludCBjaGVja19yZXR1cm5fY29kZShzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52LCBpbnQgcmVnbm8sIGNvbnN0IGNoYXIgKnJlZ19uYW1lKTtcXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTM3NjktXFxua2VybmVsL2JwZi92ZXJpZmllci5jOjEzNzcwOnN0YXRpYyBpbnQgY2hlY2tfa2Z1bmNfY2FsbChzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52LCBzdHJ1Y3QgYnBmX2luc24gKmluc24sXFxua2VybmVsL2JwZi92ZXJpZmllci5jLTEzNzcxLVxcdFxcdFxcdCAgICBpbnQgKmluc25faWR4X3ApXFxuLS1cXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM9MTgyNTI9c3RhdGljIGludCBkb19jaGVja19pbnNuKHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYsIGJvb2wgKmRvX3ByaW50X3N0YXRlKVxcbi0tXFxua2VybmVsL2JwZi92ZXJpZmllci5jLTE4MzI0LVxcdFxcdFxcdGlmIChpbnNuLVxcdTAwM2VzcmNfcmVnID09IEJQRl9QU0VVRE9fS0ZVTkNfQ0FMTClcXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6MTgzMjU6XFx0XFx0XFx0XFx0cmV0dXJuIGNoZWNrX2tmdW5jX2NhbGwoZW52LCBpbnNuLCBcXHUwMDI2ZW52LVxcdTAwM2VpbnNuX2lkeCk7XFxua2VybmVsL2JwZi92ZXJpZmllci5jLTE4MzI2LVxcdFxcdFxcdHJldHVybiBjaGVja19oZWxwZXJfY2FsbChlbnYsIGluc24sIFxcdTAwMjZlbnYtXFx1MDAzZWluc25faWR4KTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMTBUMTY6MTY6MDkuNTc4MjI0OTI4WiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6NjQzOTA2MTYyNCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHN1bW1hcnksIGFzIHRob3VnaCBJJ20gdGhpbmtpbmcgdGhyb3VnaCB0aGlzIHByb2Nlc3M6XG5cbioqRGl2aW5nIGludG8gdGhlIEJQRiBWZXJpZmllcioqXG5cbkFscmlnaHQsIHRpbWUgdG8gdHJvdWJsZXNob290IHRoaXMgbWVtb3J5IGFjY2VzcyBpc3N1ZS4gSSBrbm93IGl0J3MgcHJvYmFibHkgc29tZXdoZXJlIGRlZXAgd2l0aGluIHRoZSBCUEYgdmVyaWZpZXIuIExldCdzIHN0YXJ0IGJ5IHplcm9pbmcgaW4gb24gYGNoZWNrX21lbV9hY2Nlc3NgLiBUaGF0IGZ1bmN0aW9uIGluIGBrZXJuZWwvYnBmL3ZlcmlmaWVyLmNgIGlzIHRoZSBwcmltZSBzdXNwZWN0IGZvciBoYW5kbGluZyBtZW1vcnkgc2FmZXR5IGNoZWNrcywgd2hpY2ggaXMgZXhhY3RseSB3aGVyZSBJIGV4cGVjdCB0aGUgcm9vdCBjYXVzZSB0byBiZS4gTGV0IG1lIGdyYWIgdGhlIHNvdXJjZSBhbmQgZ2V0IHRvIGl0LlxuXG5cbiIsIklucHV0VG9rZW5zIjo5NjAwLCJPdXRwdXRUb2tlbnMiOjMzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjIsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMTBUMTY6MTY6MTYuMDE3Mjg4NDkyWiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjcxMDg5MDk3NiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjaGVja19tZW1fYWNjZXNzXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImtlcm5lbC9icGYvdmVyaWZpZXIuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJrZXJuZWwvYnBmL3ZlcmlmaWVyLmM9NTg9c3RhdGljIGJvb2wgYnBmX2dsb2JhbF9wZXJjcHVfbWFfc2V0O1xcbi0tXFxua2VybmVsL2JwZi92ZXJpZmllci5jLTEwNS0gKiBjYW4gYmU6IFBUUl9UT19NQVBfVkFMVUUsIFBUUl9UT19DVFgsIFBUUl9UT19TVEFDSywgUFRSX1RPX1NPQ0tFVC4gVGhlc2UgYXJlXFxua2VybmVsL2JwZi92ZXJpZmllci5jOjEwNjogKiBmb3VyIHBvaW50ZXIgdHlwZXMgcmVjb2duaXplZCBieSBjaGVja19tZW1fYWNjZXNzKCkgZnVuY3Rpb24uXFxua2VybmVsL2JwZi92ZXJpZmllci5jLTEwNy0gKlxcbi0tXFxua2VybmVsL2JwZi92ZXJpZmllci5jPTg0NT1zdGF0aWMgYm9vbCBpc19keW5wdHJfcmVnX3ZhbGlkX3VuaW5pdChzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52LCBzdHJ1Y3QgYnBmX3JlZ19zdGF0ZSAqcmVnKVxcbi0tXFxua2VybmVsL2JwZi92ZXJpZmllci5jLTg1NS1cXHQgKiBlcnJvciBiZWNhdXNlIHRoaXMganVzdCBtZWFucyB0aGUgc3RhY2sgc3RhdGUgaGFzbid0IGJlZW4gdXBkYXRlZCB5ZXQuXFxua2VybmVsL2JwZi92ZXJpZmllci5jOjg1NjpcXHQgKiBXZSB3aWxsIGRvIGNoZWNrX21lbV9hY2Nlc3MgdG8gY2hlY2sgYW5kIHVwZGF0ZSBzdGFjayBib3VuZHMgbGF0ZXIuXFxua2VybmVsL2JwZi92ZXJpZmllci5jLTg1Ny1cXHQgKi9cXG4tLVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYz0xMDA0PXN0YXRpYyBib29sIGlzX2l0ZXJfcmVnX3ZhbGlkX3VuaW5pdChzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52LFxcbi0tXFxua2VybmVsL2JwZi92ZXJpZmllci5jLTEwMTAtXFx0LyogRm9yIC1FUkFOR0UgKGkuZS4gc3BpIG5vdCBmYWxsaW5nIGludG8gYWxsb2NhdGVkIHN0YWNrIHNsb3RzKSwgd2VcXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6MTAxMTpcXHQgKiB3aWxsIGRvIGNoZWNrX21lbV9hY2Nlc3MgdG8gY2hlY2sgYW5kIHVwZGF0ZSBzdGFjayBib3VuZHMgbGF0ZXIsIHNvXFxua2VybmVsL2JwZi92ZXJpZmllci5jLTEwMTItXFx0ICogcmV0dXJuIHRydWUgZm9yIHRoYXQgY2FzZS5cXG4tLVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYz0xMTY0PXN0YXRpYyBib29sIGlzX2lycV9mbGFnX3JlZ192YWxpZF91bmluaXQoc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudiwgc3RydWN0IGJwZl9yZWdfc3RhdGUgKnJlZylcXG4tLVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xMTcwLVxcdC8qIEZvciAtRVJBTkdFIChpLmUuIHNwaSBub3QgZmFsbGluZyBpbnRvIGFsbG9jYXRlZCBzdGFjayBzbG90cyksIHdlXFxua2VybmVsL2JwZi92ZXJpZmllci5jOjExNzE6XFx0ICogd2lsbCBkbyBjaGVja19tZW1fYWNjZXNzIHRvIGNoZWNrIGFuZCB1cGRhdGUgc3RhY2sgYm91bmRzIGxhdGVyLCBzb1xcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xMTcyLVxcdCAqIHJldHVybiB0cnVlIGZvciB0aGF0IGNhc2UuXFxuLS1cXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM9MzUwMT1zdGF0aWMgdm9pZCBzY3J1Yl9zcGVjaWFsX3Nsb3Qoc3RydWN0IGJwZl9mdW5jX3N0YXRlICpzdGF0ZSwgaW50IHNwaSlcXG4tLVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0zNTEzLS8qIGNoZWNrX3N0YWNrX3tyZWFkLHdyaXRlfV9maXhlZF9vZmYgZnVuY3Rpb25zIHRyYWNrIHNwaWxsL2ZpbGwgb2YgcmVnaXN0ZXJzLFxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYzozNTE0OiAqIHN0YWNrIGJvdW5kYXJ5IGFuZCBhbGlnbm1lbnQgYXJlIGNoZWNrZWQgaW4gY2hlY2tfbWVtX2FjY2VzcygpXFxua2VybmVsL2JwZi92ZXJpZmllci5jLTM1MTUtICovXFxuLS1cXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM9NDI5Mj1zdGF0aWMgaW50IGNoZWNrX21hcF9hY2Nlc3NfdHlwZShzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52LCBzdHJ1Y3QgYnBmX3JlZ19zdGF0ZSAqcmVnLFxcbi0tXFxua2VybmVsL2JwZi92ZXJpZmllci5jLTQzMTMtLyogY2hlY2sgcmVhZC93cml0ZSBpbnRvIG1lbW9yeSByZWdpb24gKGUuZy4sIG1hcCB2YWx1ZSwgcmluZ2J1ZiBzYW1wbGUsIGV0YykgKi9cXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6NDMxNDpzdGF0aWMgaW50IF9fY2hlY2tfbWVtX2FjY2VzcyhzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52LCBzdHJ1Y3QgYnBmX3JlZ19zdGF0ZSAqcmVnLCBhcmdub190IGFyZ25vLFxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy00MzE1LVxcdFxcdFxcdCAgICAgIGludCBvZmYsIGludCBzaXplLCB1MzIgbWVtX3NpemUsXFxuLS1cXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM9NDM1Mj1zdGF0aWMgaW50IGNoZWNrX21lbV9yZWdpb25fYWNjZXNzKHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYsIHN0cnVjdCBicGZfcmVnX3N0YXRlICpyZWcsIGFyZ25vX3QgYXJnbm8sXFxuLS1cXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtNDM4Ni1cXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6NDM4NzpcXHRlcnIgPSBfX2NoZWNrX21lbV9hY2Nlc3MoZW52LCByZWcsIGFyZ25vLCByZWdfc21pbihyZWcpICsgb2ZmLCBzaXplLFxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy00Mzg4LVxcdFxcdFxcdFxcdCBtZW1fc2l6ZSwgemVyb19zaXplX2FsbG93ZWQpO1xcbi0tXFxua2VybmVsL2JwZi92ZXJpZmllci5jLTQ0MTUtXFxua2VybmVsL2JwZi92ZXJpZmllci5jOjQ0MTY6XFx0ZXJyID0gX19jaGVja19tZW1fYWNjZXNzKGVudiwgcmVnLCBhcmdubywgcmVnX3VtYXgocmVnKSArIG9mZiwgc2l6ZSxcXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtNDQxNy1cXHRcXHRcXHRcXHQgbWVtX3NpemUsIHplcm9fc2l6ZV9hbGxvd2VkKTtcXG4tLVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYz00ODYxPXN0YXRpYyBpbnQgY2hlY2tfcGFja2V0X2FjY2VzcyhzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52LCBzdHJ1Y3QgYnBmX3JlZ19zdGF0ZSAqcmVnLCBhcmdub190IGFyZ25vLCBpbnQgb2ZmLFxcbi0tXFxua2VybmVsL2JwZi92ZXJpZmllci5jLTQ4NzQtXFxua2VybmVsL2JwZi92ZXJpZmllci5jOjQ4NzU6XFx0LyogX19jaGVja19tZW1fYWNjZXNzIGhhcyBtYWRlIHN1cmUgXFxcIm9mZiArIHNpemUgLSAxXFxcIiBpcyB3aXRoaW4gdTE2Llxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy00ODc2LVxcdCAqIHJlZ191bWF4KHJlZykgY2FuJ3QgYmUgYmlnZ2VyIHRoYW4gTUFYX1BBQ0tFVF9PRkYgd2hpY2ggaXMgMHhmZmZmLFxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy00ODc3LVxcdCAqIG90aGVyd2lzZSBmaW5kX2dvb2RfcGt0X3BvaW50ZXJzIHdvdWxkIGhhdmUgcmVmdXNlZCB0byBzZXQgcmFuZ2UgaW5mb1xcbmtlcm5lbC9icGYvdmVyaWZpZXIuYzo0ODc4OlxcdCAqIHRoYXQgX19jaGVja19tZW1fYWNjZXNzIHdvdWxkIGhhdmUgcmVqZWN0ZWQgdGhpcyBwa3QgYWNjZXNzLlxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy00ODc5LVxcdCAqIFRoZXJlZm9yZSwgXFxcIm9mZiArIHJlZ191bWF4KHJlZykgKyBzaXplIC0gMVxcXCIgd29uJ3Qgb3ZlcmZsb3cgdTMyLlxcbi0tXFxua2VybmVsL2JwZi92ZXJpZmllci5jPTYzMzA9c3RhdGljIGludCBjaGVja19tYXBfbWVtX3JlYWQoc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudiwgc3RydWN0IGJwZl9yZWdfc3RhdGUgKnJlZywgaW50IG9mZixcXG4tLVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy02MzgwLSAqL1xcbmtlcm5lbC9icGYvdmVyaWZpZXIuYzo2MzgxOnN0YXRpYyBpbnQgY2hlY2tfbWVtX2FjY2VzcyhzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52LCBpbnQgaW5zbl9pZHgsIHN0cnVjdCBicGZfcmVnX3N0YXRlICpyZWcsIGFyZ25vX3QgYXJnbm8sXFxua2VybmVsL2JwZi92ZXJpZmllci5jLTYzODItXFx0XFx0XFx0ICAgIGludCBvZmYsIGludCBicGZfc2l6ZSwgZW51bSBicGZfYWNjZXNzX3R5cGUgdCxcXG4tLVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYz02NjQwPXN0YXRpYyBpbnQgY2hlY2tfbG9hZF9tZW0oc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudiwgc3RydWN0IGJwZl9pbnNuICppbnNuLFxcbi0tXFxua2VybmVsL2JwZi92ZXJpZmllci5jLTY2NzQtXFx0YnBmX2RpYWdfbW9kX2JlZ2luKGVudiwgXFx1MDAyNnJlZ3NbaW5zbi1cXHUwMDNlZHN0X3JlZ10sIE5VTEwsIEJQRl9ESUFHX01PRF9XUklURSk7XFxua2VybmVsL2JwZi92ZXJpZmllci5jOjY2NzU6XFx0ZXJyID0gY2hlY2tfbWVtX2FjY2VzcyhlbnYsIGVudi1cXHUwMDNlaW5zbl9pZHgsIHJlZ3MgKyBpbnNuLVxcdTAwM2VzcmNfcmVnLCBhcmdub19mcm9tX3JlZyhpbnNuLVxcdTAwM2VzcmNfcmVnKSwgaW5zbi1cXHUwMDNlb2ZmLFxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy02Njc2LVxcdFxcdFxcdCAgICAgICBCUEZfU0laRShpbnNuLVxcdTAwM2Vjb2RlKSwgQlBGX1JFQUQsIGluc24tXFx1MDAzZWRzdF9yZWcsXFxuLS1cXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM9NjY4Nz1zdGF0aWMgaW50IGNoZWNrX3N0b3JlX3JlZyhzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52LCBzdHJ1Y3QgYnBmX2luc24gKmluc24sXFxuLS1cXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtNjcxNi1cXHQvKiBDaGVjayBpZiAoZHN0X3JlZyArIG9mZikgaXMgd3JpdGVhYmxlLiAqL1xcbmtlcm5lbC9icGYvdmVyaWZpZXIuYzo2NzE3OlxcdGVyciA9IGNoZWNrX21lbV9hY2Nlc3MoZW52LCBlbnYtXFx1MDAzZWluc25faWR4LCByZWdzICsgaW5zbi1cXHUwMDNlZHN0X3JlZywgYXJnbm9fZnJvbV9yZWcoaW5zbi1cXHUwMDNlZHN0X3JlZyksIGluc24tXFx1MDAzZW9mZixcXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtNjcxOC1cXHRcXHRcXHQgICAgICAgQlBGX1NJWkUoaW5zbi1cXHUwMDNlY29kZSksIEJQRl9XUklURSwgaW5zbi1cXHUwMDNlc3JjX3JlZyxcXG4tLVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYz02NzI1PXN0YXRpYyBpbnQgY2hlY2tfYXRvbWljX3JtdyhzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52LFxcbi0tXFxua2VybmVsL2JwZi92ZXJpZmllci5jLTY3ODUtXFx0ICovXFxua2VybmVsL2JwZi92ZXJpZmllci5jOjY3ODY6XFx0ZXJyID0gY2hlY2tfbWVtX2FjY2VzcyhlbnYsIGVudi1cXHUwMDNlaW5zbl9pZHgsIGRzdF9yZWcsIGFyZ25vX2Zyb21fcmVnKGluc24tXFx1MDAzZWRzdF9yZWcpLCBpbnNuLVxcdTAwM2VvZmYsXFxua2VybmVsL2JwZi92ZXJpZmllci5jLTY3ODctXFx0XFx0XFx0ICAgICAgIEJQRl9TSVpFKGluc24tXFx1MDAzZWNvZGUpLCBCUEZfUkVBRCwgLTEsIHRydWUsIGZhbHNlKTtcXG4tLVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy02Nzg5LVxcdFxcdGJwZl9kaWFnX21vZF9iZWdpbihlbnYsIGN1cl9yZWdzKGVudikgKyBsb2FkX3JlZywgTlVMTCwgQlBGX0RJQUdfTU9EX1dSSVRFKTtcXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6Njc5MDpcXHRcXHRlcnIgPSBjaGVja19tZW1fYWNjZXNzKGVudiwgZW52LVxcdTAwM2VpbnNuX2lkeCwgZHN0X3JlZywgYXJnbm9fZnJvbV9yZWcoaW5zbi1cXHUwMDNlZHN0X3JlZyksXFxua2VybmVsL2JwZi92ZXJpZmllci5jLTY3OTEtXFx0XFx0XFx0XFx0ICAgICAgIGluc24tXFx1MDAzZW9mZiwgQlBGX1NJWkUoaW5zbi1cXHUwMDNlY29kZSksXFxuLS1cXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtNjgwMi1cXHQvKiBDaGVjayB3aGV0aGVyIHdlIGNhbiB3cml0ZSBpbnRvIHRoZSBzYW1lIG1lbW9yeS4gKi9cXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6NjgwMzpcXHRlcnIgPSBjaGVja19tZW1fYWNjZXNzKGVudiwgZW52LVxcdTAwM2VpbnNuX2lkeCwgZHN0X3JlZywgYXJnbm9fZnJvbV9yZWcoaW5zbi1cXHUwMDNlZHN0X3JlZyksIGluc24tXFx1MDAzZW9mZixcXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtNjgwNC1cXHRcXHRcXHQgICAgICAgQlBGX1NJWkUoaW5zbi1cXHUwMDNlY29kZSksIEJQRl9XUklURSwgLTEsIHRydWUsIGZhbHNlKTtcXG4tLVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYz03NjA1PXN0YXRpYyBpbnQgcHJvY2Vzc19keW5wdHJfZnVuYyhzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52LCBzdHJ1Y3QgYnBmX3JlZ19zdGF0ZSAqcmVnLFxcbi0tXFxua2VybmVsL2JwZi92ZXJpZmllci5jLTc2NTEtXFx0XFx0Zm9yIChpID0gMDsgaSBcXHUwMDNjIEJQRl9EWU5QVFJfU0laRTsgaSArPSA4KSB7XFxua2VybmVsL2JwZi92ZXJpZmllci5jOjc2NTI6XFx0XFx0XFx0ZXJyID0gY2hlY2tfbWVtX2FjY2VzcyhlbnYsIGluc25faWR4LCByZWcsIGFyZ25vLFxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy03NjUzLVxcdFxcdFxcdFxcdFxcdCAgICAgICBpLCBCUEZfRFcsIEJQRl9XUklURSwgLTEsIGZhbHNlLCBmYWxzZSk7XFxuLS1cXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM9Nzc0ND1zdGF0aWMgaW50IHByb2Nlc3NfaXRlcl9hcmcoc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudiwgc3RydWN0IGJwZl9yZWdfc3RhdGUgKnJlZywgYXJnbm9fdCBhcmdubywgaW50IGluc25faWR4LFxcbi0tXFxua2VybmVsL2JwZi92ZXJpZmllci5jLTc3OTQtXFx0XFx0Zm9yIChpID0gMDsgaSBcXHUwMDNjIG5yX3Nsb3RzICogODsgaSArPSBCUEZfUkVHX1NJWkUpIHtcXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6Nzc5NTpcXHRcXHRcXHRlcnIgPSBjaGVja19tZW1fYWNjZXNzKGVudiwgaW5zbl9pZHgsIHJlZywgYXJnbm8sXFxua2VybmVsL2JwZi92ZXJpZmllci5jLTc3OTYtXFx0XFx0XFx0XFx0XFx0ICAgICAgIGksIEJQRl9EVywgQlBGX1dSSVRFLCAtMSwgZmFsc2UsIGZhbHNlKTtcXG4tLVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYz0xMDgyMz1zdGF0aWMgaW50IGNoZWNrX2hlbHBlcl9jYWxsKHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYsIHN0cnVjdCBicGZfaW5zbiAqaW5zbixcXG4tLVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xMDkyOC1cXHRmb3IgKGkgPSAwOyBpIFxcdTAwM2MgbWV0YS5hcmdfcmF3X21lbS5zaXplOyBpKyspIHtcXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6MTA5Mjk6XFx0XFx0ZXJyID0gY2hlY2tfbWVtX2FjY2VzcyhlbnYsIGluc25faWR4LCByZWdzICsgbWV0YS5hcmdfcmF3X21lbS5yZWdubyxcXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTA5MzAtXFx0XFx0XFx0XFx0ICAgICAgIGFyZ25vX2Zyb21fcmVnKG1ldGEuYXJnX3Jhd19tZW0ucmVnbm8pLCBpLCBCUEZfQixcXG4tLVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xMTE4My1cXHRcXHRcXHRcXHQgKiBpdCB3aWxsIGNvbmZ1c2UgdGhlIGNoZWNrIG9mIFBUUl9UT19CVEZfSUQgaW5cXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6MTExODQ6XFx0XFx0XFx0XFx0ICogY2hlY2tfbWVtX2FjY2VzcygpLlxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xMTE4NS1cXHRcXHRcXHRcXHQgKi9cXG4tLVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYz0xMjE4NT1zdGF0aWMgaW50IHByb2Nlc3NfaXJxX2ZsYWcoc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudiwgc3RydWN0IGJwZl9yZWdfc3RhdGUgKnJlZywgYXJnbm9fdCBhcmdubyxcXG4tLVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xMjIxOC1cXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6MTIyMTk6XFx0XFx0ZXJyID0gY2hlY2tfbWVtX2FjY2VzcyhlbnYsIGVudi1cXHUwMDNlaW5zbl9pZHgsIHJlZywgYXJnbm8sIDAsIEJQRl9EVyxcXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTIyMjAtXFx0XFx0XFx0XFx0ICAgICAgIEJQRl9XUklURSwgLTEsIGZhbHNlLCBmYWxzZSk7XFxuLS1cXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM9MTgyNTI9c3RhdGljIGludCBkb19jaGVja19pbnNuKHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYsIGJvb2wgKmRvX3ByaW50X3N0YXRlKVxcbi0tXFxua2VybmVsL2JwZi92ZXJpZmllci5jLTE4Mjg5LVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYzoxODI5MDpcXHRcXHRlcnIgPSBjaGVja19tZW1fYWNjZXNzKGVudiwgZW52LVxcdTAwM2VpbnNuX2lkeCwgY3VyX3JlZ3MoZW52KSArIGluc24tXFx1MDAzZWRzdF9yZWcsIGFyZ25vX2Zyb21fcmVnKGluc24tXFx1MDAzZWRzdF9yZWcpLFxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xODI5MS1cXHRcXHRcXHRcXHQgICAgICAgaW5zbi1cXHUwMDNlb2ZmLCBCUEZfU0laRShpbnNuLVxcdTAwM2Vjb2RlKSxcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMTBUMTY6MTY6MTYuNzI4MTg2NjI4WiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6MzI0MTI0MjAyNywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHN1bW1hcnksIHRha2luZyBvbiB0aGUgcGVyc29uYSB5b3UndmUgZGVzY3JpYmVkOlxuXG4qKkJQRiBWZXJpZmllciBcdTAwMjYgS2Z1bmMgQ29uZmlndXJhdGlvbiBDaGVjayoqXG5cbkFscmlnaHQsIHRpbWUgdG8gZ2V0IHRoaXMgc29ydGVkLiBGaXJzdCwgSSBuZWVkIHRvIG1ha2UgYWJzb2x1dGVseSBjZXJ0YWluIHRoYXQgdGhlIEJQRiB2ZXJpZmllciBhbmQga2Z1bmNzIGFyZSBjb25maWd1cmVkIGNvcnJlY3RseS4gSSdsbCBuZWVkIHRvIGRvdWJsZS1jaGVjayB0aGVpciBLY29uZmlnIHJlcXVpcmVtZW50cyDigJMgeW91IGtub3csIG1ha2Ugc3VyZSBhbGwgdGhlIGRlcGVuZGVuY2llcyBhcmUgc2F0aXNmaWVkIGFuZCB0aGF0IGV2ZXJ5dGhpbmcgaXMgc2V0IHVwIGZvciB0aGUgYnVpbGQuIEl0J3MgZWFzeSB0byBtaXNzIGEgY3J1Y2lhbCBsaXR0bGUgZmxhZyBhbmQgdGhlbiBzcGVuZCBhZ2VzIGRlYnVnZ2luZyBsYXRlci5cblxuVG8gZG8gdGhpcyBlZmZpY2llbnRseSwgSSdsbCBnbyBkaXJlY3RseSB0byB0aGUgc291cmNlLiBMZXQncyBzdGFydCB3aXRoIGBrZXJuZWwvYnBmL01ha2VmaWxlYCBhbmQgYGtlcm5lbC9icGYvS2NvbmZpZ2AuIFRoZXNlIGFyZSB0aGUgY3J1Y2lhbCBmaWxlcyB0aGF0IGNvbnRyb2wgdGhlIGJ1aWxkIHByb2Nlc3MgYW5kIGRlZmluZSB0aGUgY29uZmlndXJhdGlvbiBvcHRpb25zLiBDaGVja2luZyB0aGVzZSBmaWxlcyBzaG91bGQgZ2l2ZSBtZSBhIGNsZWFyIHBpY3R1cmUgb2Ygd2hhdCdzIGVuYWJsZWQsIHdoYXQncyBkaXNhYmxlZCwgYW5kIGFueSBzcGVjaWZpYyBkZXBlbmRlbmNpZXMgdGhlIEJQRiB2ZXJpZmllciBvciBrZnVuY3MgaGF2ZS4gVGhpcyBpcyBzdGFuZGFyZCBwcm9jZWR1cmUsIGJ1dCBpdCBuZXZlciBodXJ0cyB0byBiZSB0aG9yb3VnaCwgZXNwZWNpYWxseSB3aGVuIGRlYWxpbmcgd2l0aCBzdWNoIGNvcmUgZnVuY3Rpb25hbGl0eS5cblxuXG4iLCJJbnB1dFRva2VucyI6MTI5MjIsIk91dHB1dFRva2VucyI6MjcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0MCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0xMFQxNjoxNjoxOS45Njk0MzA4MzVaIiwiU2VxIjo4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTg2NDA3NjEsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwidmVyaWZpZXIub1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJrZXJuZWwvYnBmXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImtlcm5lbC9icGYvTWFrZWZpbGU9Nz1DRkxBR1NfY29yZS5vICs9IC1Xbm8tb3ZlcnJpZGUtaW5pdCAkKGNmbGFncy1ub2djc2UteXkpXFxua2VybmVsL2JwZi9NYWtlZmlsZS04LVxcbmtlcm5lbC9icGYvTWFrZWZpbGU6OTpvYmotJChDT05GSUdfQlBGX1NZU0NBTEwpICs9IHN5c2NhbGwubyB2ZXJpZmllci5vIGlub2RlLm8gaGVscGVycy5vIHRudW0ubyBjbnVtLm8gbG9nLm8gdG9rZW4ubyBsaXZlbmVzcy5vIGNvbnN0X2ZvbGQubyBkaWFnbm9zdGljcy5vXFxua2VybmVsL2JwZi9NYWtlZmlsZS0xMC1vYmotJChDT05GSUdfQlBGX1NZU0NBTEwpICs9IGJwZl9pdGVyLm8gbWFwX2l0ZXIubyB0YXNrX2l0ZXIubyBwcm9nX2l0ZXIubyBsaW5rX2l0ZXIub1xcbi0tXFxua2VybmVsL2JwZi9icGZfbHNtLmM9NDEzPWNvbnN0IHN0cnVjdCBicGZfcHJvZ19vcHMgbHNtX3Byb2dfb3BzID0ge1xcbi0tXFxua2VybmVsL2JwZi9icGZfbHNtLmMtNDE1LVxcbmtlcm5lbC9icGYvYnBmX2xzbS5jOjQxNjpjb25zdCBzdHJ1Y3QgYnBmX3ZlcmlmaWVyX29wcyBsc21fdmVyaWZpZXJfb3BzID0ge1xcbmtlcm5lbC9icGYvYnBmX2xzbS5jLTQxNy1cXHQuZ2V0X2Z1bmNfcHJvdG8gPSBicGZfbHNtX2Z1bmNfcHJvdG8sXFxuLS1cXG5rZXJuZWwvYnBmL2JwZl9zdHJ1Y3Rfb3BzLmM9NjQ9c3RhdGljIERFRklORV9NVVRFWCh1cGRhdGVfbXV0ZXgpO1xcbi0tXFxua2VybmVsL2JwZi9icGZfc3RydWN0X29wcy5jLTY4LVxcbmtlcm5lbC9icGYvYnBmX3N0cnVjdF9vcHMuYzo2OTpjb25zdCBzdHJ1Y3QgYnBmX3ZlcmlmaWVyX29wcyBicGZfc3RydWN0X29wc192ZXJpZmllcl9vcHMgPSB7XFxua2VybmVsL2JwZi9icGZfc3RydWN0X29wcy5jLTcwLX07XFxuLS1cXG5rZXJuZWwvYnBmL2J0Zi5jPTU5NjQ9c3RhdGljIHN0cnVjdCBidGYgKmJ0Zl9wYXJzZShjb25zdCB1bmlvbiBicGZfYXR0ciAqYXR0ciwgYnBmcHRyX3QgdWF0dHIsXFxuLS1cXG5rZXJuZWwvYnBmL2J0Zi5jLTU5ODAtXFxua2VybmVsL2JwZi9idGYuYzo1OTgxOlxcdC8qIHVzZXIgY291bGQgaGF2ZSByZXF1ZXN0ZWQgdmVyYm9zZSB2ZXJpZmllciBvdXRwdXRcXG5rZXJuZWwvYnBmL2J0Zi5jLTU5ODItXFx0ICogYW5kIHN1cHBsaWVkIGJ1ZmZlciB0byBzdG9yZSB0aGUgdmVyaWZpY2F0aW9uIHRyYWNlXFxuLS1cXG5rZXJuZWwvYnBmL2Nncm91cC5jPTE5MjM9Y29uc3Qgc3RydWN0IGJwZl9wcm9nX29wcyBjZ19kZXZfcHJvZ19vcHMgPSB7XFxuLS1cXG5rZXJuZWwvYnBmL2Nncm91cC5jLTE5MjUtXFxua2VybmVsL2JwZi9jZ3JvdXAuYzoxOTI2OmNvbnN0IHN0cnVjdCBicGZfdmVyaWZpZXJfb3BzIGNnX2Rldl92ZXJpZmllcl9vcHMgPSB7XFxua2VybmVsL2JwZi9jZ3JvdXAuYy0xOTI3LVxcdC5nZXRfZnVuY19wcm90b1xcdFxcdD0gY2dyb3VwX2Rldl9mdW5jX3Byb3RvLFxcbi0tXFxua2VybmVsL2JwZi9jZ3JvdXAuYz0yNDc4PXN0YXRpYyB1MzIgc3lzY3RsX2NvbnZlcnRfY3R4X2FjY2VzcyhlbnVtIGJwZl9hY2Nlc3NfdHlwZSB0eXBlLFxcbi0tXFxua2VybmVsL2JwZi9jZ3JvdXAuYy0yNTQxLVxcbmtlcm5lbC9icGYvY2dyb3VwLmM6MjU0Mjpjb25zdCBzdHJ1Y3QgYnBmX3ZlcmlmaWVyX29wcyBjZ19zeXNjdGxfdmVyaWZpZXJfb3BzID0ge1xcbmtlcm5lbC9icGYvY2dyb3VwLmMtMjU0My1cXHQuZ2V0X2Z1bmNfcHJvdG9cXHRcXHQ9IHN5c2N0bF9mdW5jX3Byb3RvLFxcbi0tXFxua2VybmVsL2JwZi9jZ3JvdXAuYz0yNzU2PXN0YXRpYyBpbnQgY2dfc29ja29wdF9nZXRfcHJvbG9ndWUoc3RydWN0IGJwZl9pbnNuICppbnNuX2J1ZixcXG4tLVxcbmtlcm5lbC9icGYvY2dyb3VwLmMtMjc2NC1cXG5rZXJuZWwvYnBmL2Nncm91cC5jOjI3NjU6Y29uc3Qgc3RydWN0IGJwZl92ZXJpZmllcl9vcHMgY2dfc29ja29wdF92ZXJpZmllcl9vcHMgPSB7XFxua2VybmVsL2JwZi9jZ3JvdXAuYy0yNzY2LVxcdC5nZXRfZnVuY19wcm90b1xcdFxcdD0gY2dfc29ja29wdF9mdW5jX3Byb3RvLFxcbi0tXFxua2VybmVsL2JwZi9maXh1cHMuYz03NDY9aW50IGJwZl9jb252ZXJ0X2N0eF9hY2Nlc3NlcyhzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52KVxcbi0tXFxua2VybmVsL2JwZi9maXh1cHMuYy03NDgtXFx0c3RydWN0IGJwZl9zdWJwcm9nX2luZm8gKnN1YnByb2dzID0gZW52LVxcdTAwM2VzdWJwcm9nX2luZm87XFxua2VybmVsL2JwZi9maXh1cHMuYzo3NDk6XFx0Y29uc3Qgc3RydWN0IGJwZl92ZXJpZmllcl9vcHMgKm9wcyA9IGVudi1cXHUwMDNlb3BzO1xcbmtlcm5lbC9icGYvZml4dXBzLmMtNzUwLVxcdGludCBpLCBjbnQsIHNpemUsIGN0eF9maWVsZF9zaXplLCByZXQsIGRlbHRhID0gMCwgZXBpbG9ndWVfY250ID0gMDtcXG4tLVxcbmtlcm5lbC9icGYvaGVscGVycy5jLTM1LS8qIElmIGtlcm5lbCBzdWJzeXN0ZW0gaXMgYWxsb3dpbmcgZUJQRiBwcm9ncmFtcyB0byBjYWxsIHRoaXMgZnVuY3Rpb24sXFxua2VybmVsL2JwZi9oZWxwZXJzLmM6MzY6ICogaW5zaWRlIGl0cyBvd24gdmVyaWZpZXJfb3BzLVxcdTAwM2VnZXRfZnVuY19wcm90bygpIGNhbGxiYWNrIGl0IHNob3VsZCByZXR1cm5cXG5rZXJuZWwvYnBmL2hlbHBlcnMuYy0zNy0gKiBicGZfbWFwX2xvb2t1cF9lbGVtX3Byb3RvLCBzbyB0aGF0IHZlcmlmaWVyIGNhbiBwcm9wZXJseSBjaGVjayB0aGUgYXJndW1lbnRzXFxuLS1cXG5rZXJuZWwvYnBmL3N5c2NhbGwuYz02NjMwPXN5c2NhbGxfcHJvZ19mdW5jX3Byb3RvKGVudW0gYnBmX2Z1bmNfaWQgZnVuY19pZCwgY29uc3Qgc3RydWN0IGJwZl9wcm9nICpwcm9nKVxcbi0tXFxua2VybmVsL2JwZi9zeXNjYWxsLmMtNjY0Ni1cXG5rZXJuZWwvYnBmL3N5c2NhbGwuYzo2NjQ3OmNvbnN0IHN0cnVjdCBicGZfdmVyaWZpZXJfb3BzIGJwZl9zeXNjYWxsX3ZlcmlmaWVyX29wcyA9IHtcXG5rZXJuZWwvYnBmL3N5c2NhbGwuYy02NjQ4LVxcdC5nZXRfZnVuY19wcm90byAgPSBzeXNjYWxsX3Byb2dfZnVuY19wcm90byxcXG4tLVxcbmtlcm5lbC9icGYvdGFza19pdGVyLmM9OTkyPV9fYnBmX2tmdW5jIHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqYnBmX2l0ZXJfdGFza192bWFfbmV4dChzdHJ1Y3QgYnBmX2l0ZXJfdGFza192bWEgKml0KVxcbi0tXFxua2VybmVsL2JwZi90YXNrX2l0ZXIuYy0xMDEwLVxcdC8qXFxua2VybmVsL2JwZi90YXNrX2l0ZXIuYzoxMDExOlxcdCAqIFRoZSB2ZXJpZmllciBvbmx5IHRydXN0cyB2bV9tbSBhbmQgdm1fZmlsZSAoc2VlXFxua2VybmVsL2JwZi90YXNrX2l0ZXIuYy0xMDEyLVxcdCAqIEJURl9UWVBFX1NBRkVfVFJVU1RFRF9PUl9OVUxMIGluIHZlcmlmaWVyLmMpLiBUYWtlIGEgcmVmZXJlbmNlXFxuLS1cXG5rZXJuZWwvYnBmL3RyYW1wb2xpbmUuYy0xNy0vKiBkdW1teSBfb3BzLiBUaGUgdmVyaWZpZXIgd2lsbCBvcGVyYXRlIG9uIHRhcmdldCBwcm9ncmFtJ3Mgb3BzLiAqL1xcbmtlcm5lbC9icGYvdHJhbXBvbGluZS5jOjE4OmNvbnN0IHN0cnVjdCBicGZfdmVyaWZpZXJfb3BzIGJwZl9leHRlbnNpb25fdmVyaWZpZXJfb3BzID0ge1xcbmtlcm5lbC9icGYvdHJhbXBvbGluZS5jLTE5LX07XFxuLS1cXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMzktXFxua2VybmVsL2JwZi92ZXJpZmllci5jOjQwOnN0YXRpYyBjb25zdCBzdHJ1Y3QgYnBmX3ZlcmlmaWVyX29wcyAqIGNvbnN0IGJwZl92ZXJpZmllcl9vcHNbXSA9IHtcXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtNDEtI2RlZmluZSBCUEZfUFJPR19UWVBFKF9pZCwgX25hbWUsIHByb2dfY3R4X3R5cGUsIGtlcm5fY3R4X3R5cGUpIFxcXFxcXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6NDI6XFx0W19pZF0gPSBcXHUwMDI2IF9uYW1lICMjIF92ZXJpZmllcl9vcHMsXFxua2VybmVsL2JwZi92ZXJpZmllci5jLTQzLSNkZWZpbmUgQlBGX01BUF9UWVBFKF9pZCwgX29wcylcXG4tLVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYz03MjgwPWVudW0ge1xcbi0tXFxua2VybmVsL2JwZi92ZXJpZmllci5jLTcyOTEtICogRm9yIHRyYWRpdGlvbmFsIFBUUl9UT19NQVBfVkFMVUUgb3IgUFRSX1RPX0JURl9JRCB8IE1FTV9BTExPQywgdGhlIHZlcmlmaWVyXFxua2VybmVsL2JwZi92ZXJpZmllci5jOjcyOTI6ICogY2xlYXJzIHJlZy1cXHUwMDNlaWQgYWZ0ZXIgdmFsdWVfb3JfbnVsbC1cXHUwMDNldmFsdWUgdHJhbnNpdGlvbiwgc2luY2UgdGhlIHZlcmlmaWVyIG9ubHlcXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtNzI5My0gKiBjYXJlcyBhYm91dCB0aGUgcmFuZ2Ugb2YgYWNjZXNzIHRvIHZhbGlkIG1hcCB2YWx1ZSBwb2ludGVyIGFuZCBkb2Vzbid0IGNhcmVcXG4tLVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYz0xNDU2NT1zdGF0aWMgaW50IGFkanVzdF9wdHJfbWluX21heF92YWxzKHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYsIHN0cnVjdCBicGZfaW5zbiAqaW5zbixcXG4tLVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xNDczOS1cXHRcXHRcXHRcXHRlbnYsIFxcXCJUaGlzIG9wZXJhdGlvbiBzdWJ0cmFjdHMgcG9pbnRlciByZWdpc3RlciBSJWQgZnJvbSBzY2FsYXIgcmVnaXN0ZXIgUiVkLiBcXFwiXFxua2VybmVsL2JwZi92ZXJpZmllci5jOjE0NzQwOlxcdFxcdFxcdFxcdFxcXCJUaGUgdmVyaWZpZXIgb25seSB0cmFja3MgcG9pbnRlci1taW51cy1zY2FsYXIgYXJpdGhtZXRpYyBmb3IgYWxsb3dlZCBwb2ludGVyIHR5cGVzLlxcXCIsXFxua2VybmVsL2JwZi92ZXJpZmllci5jLTE0NzQxLVxcdFxcdFxcdFxcdHB0cl9yZWdubywgZHN0KTtcXG4tLVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYz0xNzY4Nz1ib29sIGJwZl9nZXRfY2FsbF9zdW1tYXJ5KHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYsIHN0cnVjdCBicGZfaW5zbiAqY2FsbCxcXG4tLVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xNzc1Mi0gKlxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYzoxNzc1MzogKiAtIGlmIHNvLCBhbmQgaWYgdmVyaWZpZXIgb3IgY3VycmVudCBKSVQgaW5saW5lcyB0aGUgY2FsbCB0byB0aGVcXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTc3NTQtICogICBicGZfZmFzdGNhbGwgZnVuY3Rpb24gKGUuZy4gYSBoZWxwZXIgY2FsbCksIGtlcm5lbCByZW1vdmVzIHVubmVjZXNzYXJ5XFxuLS1cXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM9MTk3MzQ9c3RhdGljIGludCBjaGVja19zdHJ1Y3Rfb3BzX2J0Zl9pZChzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52KVxcbi0tXFxua2VybmVsL2JwZi92ZXJpZmllci5jLTE5ODUxLVxcdHByb2ctXFx1MDAzZWF1eC1cXHUwMDNlYXR0YWNoX2Z1bmNfbmFtZSA9IG1uYW1lO1xcbmtlcm5lbC9icGYvdmVyaWZpZXIuYzoxOTg1MjpcXHRlbnYtXFx1MDAzZW9wcyA9IHN0X29wcy1cXHUwMDNldmVyaWZpZXJfb3BzO1xcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xOTg1My1cXG4tLVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYz0yMDQ4NT1zdGF0aWMgaW50IGNoZWNrX2F0dGFjaF9idGZfaWQoc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudilcXG4tLVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0yMDUyNC1cXHRcXHQgKi9cXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6MjA1MjU6XFx0XFx0ZW52LVxcdTAwM2VvcHMgPSBicGZfdmVyaWZpZXJfb3BzW3RndF9wcm9nLVxcdTAwM2V0eXBlXTtcXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMjA1MjYtXFx0XFx0cHJvZy1cXHUwMDNlZXhwZWN0ZWRfYXR0YWNoX3R5cGUgPSB0Z3RfcHJvZy1cXHUwMDNlZXhwZWN0ZWRfYXR0YWNoX3R5cGU7XFxuLS1cXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM9MjExNTc9aW50IGJwZl9jaGVjayhzdHJ1Y3QgYnBmX3Byb2cgKipwcm9nLCB1bmlvbiBicGZfYXR0ciAqYXR0ciwgYnBmcHRyX3QgdWF0dHIsXFxuLS1cXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMjExNjctXFx0Lyogbm8gcHJvZ3JhbSBpcyB2YWxpZCAqL1xcbmtlcm5lbC9icGYvdmVyaWZpZXIuYzoyMTE2ODpcXHRpZiAoQVJSQVlfU0laRShicGZfdmVyaWZpZXJfb3BzKSA9PSAwKVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0yMTE2OS1cXHRcXHRyZXR1cm4gLUVJTlZBTDtcXG4tLVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0yMTE3OS1cXHRlbnYtXFx1MDAzZXByb2cgPSAqcHJvZztcXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6MjExODA6XFx0ZW52LVxcdTAwM2VvcHMgPSBicGZfdmVyaWZpZXJfb3BzW2Vudi1cXHUwMDNlcHJvZy1cXHUwMDNldHlwZV07XFxua2VybmVsL2JwZi92ZXJpZmllci5jLTIxMTgxLVxcbi0tXFxua2VybmVsL2JwZi92ZXJpZmllci5jLTIxMTg4LVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYzoyMTE4OTpcXHQvKiB1c2VyIGNvdWxkIGhhdmUgcmVxdWVzdGVkIHZlcmJvc2UgdmVyaWZpZXIgb3V0cHV0XFxua2VybmVsL2JwZi92ZXJpZmllci5jLTIxMTkwLVxcdCAqIGFuZCBzdXBwbGllZCBidWZmZXIgdG8gc3RvcmUgdGhlIHZlcmlmaWNhdGlvbiB0cmFjZVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0xMFQxNjoxNjoyMC4wMjgwNzU4OTZaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjoxMTY2MzMzMzk3MywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipLZXJuZWwgQ29uZmlndXJhdGlvbiBJbnZlc3RpZ2F0aW9uKipcblxuQWxyaWdodCwgbGV0J3MgZGl2ZSBpbiBhbmQgc2VlIHdoYXQncyBnb2luZyBvbiB3aXRoIHRoZXNlIEJQRiBjb25maWd1cmF0aW9ucy4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRvIGNvbmZpcm0gdGhlIHN0YXR1cyBvZiBgQ09ORklHX0JQRl9TWVNDQUxMYCB3aXRoaW4gdGhlIEtjb25maWcgc3lzdGVtLiBUaGF0IG9uZSdzIHRoZSBsaW5jaHBpbiwgZW5hYmxpbmcgdGhlIGBicGYoKWAgc3lzY2FsbCBhbmQsIGNydWNpYWxseSwgdGhlIEJQRiB2ZXJpZmllci4gQmV5b25kIHRoYXQsIEknbSBhbHNvIHRoaW5raW5nIHdlIHNob3VsZCBkb3VibGUtY2hlY2sgdGhlIHN0YXR1cyBvZiBgQ09ORklHX0JQRl9FVkVOVFNgIGFuZCBgQ09ORklHX0RFQlVHX0lORk9fQlRGYC4gQXJlIHRoZXNlIGVzc2VudGlhbCwgb3IgYXJlIHRoZXkgc3RhbmRhcmQgY29uZmlndXJhdGlvbnMgdGhhdCBtYXkgYmUgZW5hYmxlZCBieSBkZWZhdWx0P1xuXG5JJ2xsIHNwZWNpZmljYWxseSBuZWVkIHRvIGFzY2VydGFpbiB3aGV0aGVyIGBDT05GSUdfQlBGX1NZU0NBTExgIGFuZCBgQ09ORklHX0RFQlVHX0lORk9fQlRGYCBhcmUgbmVjZXNzYXJ5IGRlcGVuZGVuY2llcyBmb3IgdGhpcyB1c2UtY2FzZSwgb3IgaWYgdGhleSdyZSBzdGFuZGFyZCBhbmQgcG90ZW50aWFsbHkgYWxyZWFkeSBpbiB0aGUgZGVzaXJlZCBzdGF0ZS4gSSdsbCBzdGFydCBieSBkb2luZyBhIHF1aWNrIEtjb25maWcgc2VhcmNoIGZvciBgQlBGX1NZU0NBTExgIHRvIGdldCBhbiBvdmVydmlldyBvZiBpdHMgZGVwZW5kZW5jaWVzIGFuZCBpbXBsaWNhdGlvbnMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE1Nzc4LCJPdXRwdXRUb2tlbnMiOjMxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTE2LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTEwVDE2OjE2OjMxLjY5MTQxMzUyOVoiLCJTZXEiOjEwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NzE3NTEwOTA1LCJFcnJvciI6Im5vIG1hdGNoZXMiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgQlBGX1NZU0NBTExcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiaW5pdC9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcImVycm9yXCI6IFwibm8gbWF0Y2hlc1wiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0xMFQxNjoxNjozMi40MDg5MzI1MjRaIiwiU2VxIjoxMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6NjI0NjA1ODUyNiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhlIHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZTpcblxuKipCUEZfU1lTQ0FMTCBMb2NhdGlvbiBRdWVzdCoqXG5cbk9rYXksIHNvIEkgbmVlZCB0byB0cmFjayBkb3duIHRoZSBkZWZpbml0aW9uIG9mIGBCUEZfU1lTQ0FMTGAuIE15IGluaXRpYWwgYXBwcm9hY2ggd291bGQgYmUgdG8gZGl2ZSBpbnRvIHRoZSBrZXJuZWwgc291cmNlLCBwcm9iYWJseSBzdGFydGluZyB3aXRoIHRoZSBoZWFkZXJzIHJlbGF0ZWQgdG8gdGhlIEJQRiBzdWJzeXN0ZW0uIEknZCBhbnRpY2lwYXRlIGl0IGJlaW5nIGRlZmluZWQgaW4gb25lIG9mIHRoZSBjb3JlIEJQRiBoZWFkZXIgZmlsZXMsIHNvbWV0aGluZyBsaWtlIGBsaW51eC9icGYuaGAgb3IgcG90ZW50aWFsbHkgYSBoZWFkZXIgcmVsYXRlZCB0byBzeXN0ZW0gY2FsbCB3cmFwcGVycyBpZiBpdCdzIGludm9sdmVkIGluIHN5c2NhbGwgdHJhY2luZyBvciBpbnRlcmNlcHRpb24uIEdpdmVuIHRoZSBuYW1pbmcsIGl0J3MgaGlnaGx5IGxpa2VseSB0byBiZSBhbiBlbnVtZXJhdGlvbiBvciBtYWNyby4gSSdsbCBuZWVkIHRvIGNoZWNrIGlmIHRoZXJlIGFyZSBwbGF0Zm9ybS1zcGVjaWZpYyB2YXJpYXRpb25zLCBzbyBJIHNob3VsZCBiZSBwcmVwYXJlZCB0byBoYW5kbGUgYCNpZmRlZmAgb3Igc2ltaWxhciBjb25kaXRpb25hbCBjb21waWxhdGlvbiBkaXJlY3RpdmVzIHdpdGhpbiB0aGUgaGVhZGVyIGZpbGVzLiBJIHNob3VsZCBhbHNvIGNvbnNpZGVyIGhvdyB0aGlzIHJlbGF0ZXMgdG8gb3RoZXIgcmVsYXRlZCBjb25zdGFudHMgYW5kIHN0cnVjdHVyZXMsIHN1Y2ggYXMgYGJwZl9wcm9nX3R5cGVgIG9yIGFueSBhc3NvY2lhdGVkIHN5c2NhbGwgbnVtYmVycy4gVGhlIGdvYWwgaXMgdG8gZ2V0IHRoZSBwcmVjaXNlIHZhbHVlIGFuZCB1bmRlcnN0YW5kIHRoZSBjb250ZXh0IHdpdGhpbiB0aGUga2VybmVsJ3MgQlBGIGltcGxlbWVudGF0aW9uLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxNjE1MiwiT3V0cHV0VG9rZW5zIjoyMSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE0LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTEwVDE2OjE2OjM4LjY1NDk5MzQ2WiIsIlNlcSI6MTIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNjE3OTE5MjMwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBCUEZfU1lTQ0FMTFwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJrZXJuZWwvYnBmL0tjb25maWc9MjU9bWVudSBcXFwiQlBGIHN1YnN5c3RlbVxcXCJcXG5rZXJuZWwvYnBmL0tjb25maWctMjYtXFxua2VybmVsL2JwZi9LY29uZmlnOjI3OmNvbmZpZyBCUEZfU1lTQ0FMTFxcbmtlcm5lbC9icGYvS2NvbmZpZy0yOC1cXHRib29sIFxcXCJFbmFibGUgYnBmKCkgc3lzdGVtIGNhbGxcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTEwVDE2OjE2OjQwLjI3MjkxNzU5WiIsIlNlcSI6MTMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjIxNzkwMzg4NjAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6XG5cbioqRXhhbWluaW5nIEJQRiBLY29uZmlnIENvbmZpZ3VyYXRpb24qKlxuXG5Pa2F5LCBJIG5lZWQgdG8gZGl2ZSBpbnRvIHRoZSBrZXJuZWwncyBCUEYgY29uZmlndXJhdGlvbi4gTXkgaW5pdGlhbCBpbnN0aW5jdCBpcyB0byBnbyBzdHJhaWdodCB0byBga2VybmVsL2JwZi9LY29uZmlnYCwgc3BlY2lmaWNhbGx5IGFyb3VuZCBsaW5lIDI3LiBJJ20gcHJvYmFibHkgbG9va2luZyBmb3IgdGhlIGNvcmUgQlBGIGZlYXR1cmUgZW5hYmxlbWVudCBmbGFnLCBvciBtYXliZSBJJ20gdHJ5aW5nIHRvIHJlY2FsbCBhIHJlbGF0ZWQgb3B0aW9uIHRoYXQgSSB3YW50IHRvIGRvdWJsZS1jaGVjay4gQ291bGQgYmUgYW4gZXhwZXJpbWVudGFsIGZlYXR1cmUgZmxhZywgb3Igc29tZXRoaW5nIHRpZWQgdG8gYSBzcGVjaWZpYyBCUEYgaGVscGVyIHZlcnNpb24uIEkgc3VzcGVjdCBsaW5lIDI3IHdpbGwgbGlrZWx5IGxlYWQgbWUgdG8gdGhlIG1haW4gZW50cnkgcG9pbnQgb3IgYSBjcnVjaWFsIGRlcGVuZGVuY3kgaW4gdGhhdCBLY29uZmlnIGZpbGUuIEkgYW0gaG9waW5nIHRvIGdldCB0byB0aGUgcm9vdCBjYXVzZSBvZiBhbiBpc3N1ZSBJJ20gd29ya2luZyB0aHJvdWdoLiBJJ20gZXhwZWN0aW5nIHRoaXMgdG8gcHJvdmlkZSB0aGUgYmFzZSBjb25maWd1cmF0aW9uIHRoYXQgYWxsIGZ1cnRoZXIgY29uZmlndXJhdGlvbiBpcyByZWxpYW50IG9uLiBUaW1lIHRvIHNlZSB3aGF0J3MgdGhlcmUgYW5kIHJlZnJlc2ggbXkgbWVtb3J5IG9uIHRoZSBidWlsZCBvcHRpb25zLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxNjQ5MSwiT3V0cHV0VG9rZW5zIjozNCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE5LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTEwVDE2OjE2OjQyLjQ1MTk1OTcyWiIsIlNlcSI6MTQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjYxNjUwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImtlcm5lbC9icGYvS2NvbmZpZ1wiLFxuICBcIkZpcnN0TGluZVwiOiAyNSxcbiAgXCJMaW5lQ291bnRcIjogNDBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiICAyNTpcXHRtZW51IFxcXCJCUEYgc3Vic3lzdGVtXFxcIlxcbiAgMjY6XFx0XFxuICAyNzpcXHRjb25maWcgQlBGX1NZU0NBTExcXG4gIDI4OlxcdFxcdGJvb2wgXFxcIkVuYWJsZSBicGYoKSBzeXN0ZW0gY2FsbFxcXCJcXG4gIDI5OlxcdFxcdHNlbGVjdCBCUEZcXG4gIDMwOlxcdFxcdHNlbGVjdCBJUlFfV09SS1xcbiAgMzE6XFx0XFx0c2VsZWN0IE5FRURfVEFTS1NfUkNVXFxuICAzMjpcXHRcXHRzZWxlY3QgVEFTS1NfVFJBQ0VfUkNVXFxuICAzMzpcXHRcXHRzZWxlY3QgQklOQVJZX1BSSU5URlxcbiAgMzQ6XFx0XFx0c2VsZWN0IE5FVF9TT0NLX01TRyBpZiBORVRcXG4gIDM1OlxcdFxcdHNlbGVjdCBORVRfWEdSRVNTIGlmIE5FVFxcbiAgMzY6XFx0XFx0c2VsZWN0IFBBR0VfUE9PTCBpZiBORVRcXG4gIDM3OlxcdFxcdGRlZmF1bHQgblxcbiAgMzg6XFx0XFx0aGVscFxcbiAgMzk6XFx0XFx0ICBFbmFibGUgdGhlIGJwZigpIHN5c3RlbSBjYWxsIHRoYXQgYWxsb3dzIHRvIG1hbmlwdWxhdGUgQlBGIHByb2dyYW1zXFxuICA0MDpcXHRcXHQgIGFuZCBtYXBzIHZpYSBmaWxlIGRlc2NyaXB0b3JzLlxcbiAgNDE6XFx0XFxuICA0MjpcXHRjb25maWcgQlBGX0pJVFxcbiAgNDM6XFx0XFx0Ym9vbCBcXFwiRW5hYmxlIEJQRiBKdXN0IEluIFRpbWUgY29tcGlsZXJcXFwiXFxuICA0NDpcXHRcXHRkZXBlbmRzIG9uIEJQRlxcbiAgNDU6XFx0XFx0ZGVwZW5kcyBvbiBIQVZFX0NCUEZfSklUIHx8IEhBVkVfRUJQRl9KSVRcXG4gIDQ2OlxcdFxcdHNlbGVjdCBFWEVDTUVNXFxuICA0NzpcXHRcXHRoZWxwXFxuICA0ODpcXHRcXHQgIEJQRiBwcm9ncmFtcyBhcmUgbm9ybWFsbHkgaGFuZGxlZCBieSBhIEJQRiBpbnRlcnByZXRlci4gVGhpcyBvcHRpb25cXG4gIDQ5OlxcdFxcdCAgYWxsb3dzIHRoZSBrZXJuZWwgdG8gZ2VuZXJhdGUgbmF0aXZlIGNvZGUgd2hlbiBhIHByb2dyYW0gaXMgbG9hZGVkXFxuICA1MDpcXHRcXHQgIGludG8gdGhlIGtlcm5lbC4gVGhpcyB3aWxsIHNpZ25pZmljYW50bHkgc3BlZWQtdXAgcHJvY2Vzc2luZyBvZiBCUEZcXG4gIDUxOlxcdFxcdCAgcHJvZ3JhbXMuXFxuICA1MjpcXHRcXG4gIDUzOlxcdFxcdCAgTm90ZSwgYW4gYWRtaW4gc2hvdWxkIGVuYWJsZSB0aGlzIGZlYXR1cmUgY2hhbmdpbmc6XFxuICA1NDpcXHRcXHQgIC9wcm9jL3N5cy9uZXQvY29yZS9icGZfaml0X2VuYWJsZVxcbiAgNTU6XFx0XFx0ICAvcHJvYy9zeXMvbmV0L2NvcmUvYnBmX2ppdF9oYXJkZW4gICAob3B0aW9uYWwpXFxuICA1NjpcXHRcXHQgIC9wcm9jL3N5cy9uZXQvY29yZS9icGZfaml0X2thbGxzeW1zIChvcHRpb25hbClcXG4gIDU3OlxcdFxcbiAgNTg6XFx0Y29uZmlnIEJQRl9KSVRfQUxXQVlTX09OXFxuICA1OTpcXHRcXHRib29sIFxcXCJQZXJtYW5lbnRseSBlbmFibGUgQlBGIEpJVCBhbmQgcmVtb3ZlIEJQRiBpbnRlcnByZXRlclxcXCJcXG4gIDYwOlxcdFxcdGRlcGVuZHMgb24gQlBGX1NZU0NBTEwgXFx1MDAyNlxcdTAwMjYgSEFWRV9FQlBGX0pJVCBcXHUwMDI2XFx1MDAyNiBCUEZfSklUXFxuICA2MTpcXHRcXHRoZWxwXFxuICA2MjpcXHRcXHQgIEVuYWJsZXMgQlBGIEpJVCBhbmQgcmVtb3ZlcyBCUEYgaW50ZXJwcmV0ZXIgdG8gYXZvaWQgc3BlY3VsYXRpdmVcXG4gIDYzOlxcdFxcdCAgZXhlY3V0aW9uIG9mIEJQRiBpbnN0cnVjdGlvbnMgYnkgdGhlIGludGVycHJldGVyLlxcbiAgNjQ6XFx0XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTEwVDE2OjE2OjQyLjQ1MjAyMjhaIiwiU2VxIjoxNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6NTY3NzQ0NTY0NywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBbmFseXNpcyBvZiB0aGUgQlBGIFBhdGNoKipcblxuT2theSwgbGV0J3MgYnJlYWsgdGhpcyBkb3duLiBNeSBpbml0aWFsIGZvY3VzIGlzIG9uIHRoZSBrZXkgc3ltYm9scywgYXMgdXN1YWw6IGBjaGVja19rZnVuY19jYWxsYCBhbmQgYGNoZWNrX21lbV9hY2Nlc3NgLiBUaGVzZSBhcmUgdGhlIGZ1bmN0aW9ucyB3aXRoaW4gdGhlIEJQRiB2ZXJpZmllciB0aGF0IGFyZSBkaXJlY3RseSBtb2RpZmllZCBieSB0aGlzIHBhdGNoLCBzcGVjaWZpY2FsbHkgd2l0aGluIGBrZXJuZWwvYnBmL3ZlcmlmaWVyLmNgLiBNeSBxdWljayBpbml0aWFsIHNjYW4gZmxhZ2dlZCB0aGVzZSBhcyB0aGUga2V5IHBvaW50cywgYW5kIG5vdyBJJ20gY29uZmlybWluZyB0aGF0LlxuXG5JIHNlZSB0aGF0IHRoZSBjaGFuZ2VzIGludm9sdmUgYWRkaW5nIGNoZWNrcyByZWxhdGVkIHRvIGBLRl9QRVJGTU9OYCBhbmQgYHJkb25seV91bnRydXN0ZWRgIG1lbW9yeSBhY2Nlc3MuIE1ha2VzIHNlbnNlLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgc2NvcGUgb2YgdGhvc2UgZmxhZ3MuIGBpc19rZnVuY19wZXJmbW9uYCBpcyBhIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb24gaW4gdGhlIHZlcmlmaWVyLmMgZmlsZSwgc28gdGhlIHNjb3BlIG1ha2VzIHBlcmZlY3Qgc2Vuc2UuXG5cbkknbSBkb3VibGUtY2hlY2tpbmcgdGhlIHNjb3BlLCB0aGUgc3BlY2lmaWMgbGluZXMgb2YgY29kZSB0aGF0IGhhdmUgYmVlbiBhZGRlZDpcblxuLSAgIGBjaGVja19tZW1fYWNjZXNzYDogSSBzZWUgYSBuZXcgY2hlY2sgZm9yIGByZG9ubHlfdW50cnVzdGVkIFx1MDAyNlx1MDAyNiAhZW52LVx1MDAzZWFsbG93X3B0cl9sZWFrc2AuIFRoYXQncyBpbXBvcnRhbnQgZm9yIG1lbW9yeSBzYWZldHkuXG4tICAgYGlzX2tmdW5jX3BlcmZtb25gOiBBIGhlbHBlciBmdW5jdGlvbiwgdGhlIG5ldyBzdGF0aWMgZnVuY3Rpb24uXG4tICAgYGNoZWNrX2tmdW5jX2NhbGxgOiBUaGVyZSdzIGEgbmV3IGNoZWNrIGZvciBgaXNfa2Z1bmNfcGVyZm1vbihcdTAwMjZtZXRhKSBcdTAwMjZcdTAwMjYgIWVudi1cdTAwM2VhbGxvd19wdHJfbGVha3NgLiBUaGF0IG1ha2VzIHNlbnNlIGluIHRoZSBjYWxsaW5nIGNvbnRleHQuXG5cbkknbSBhbHNvIGNvbnNpZGVyaW5nIHRoZSBicm9hZGVyIGltcGxpY2F0aW9ucy4gVGhlIGBoZWxwZXJzLmNgIGZpbGUgaXMgdG91Y2hlZCwgdGhlIGRpZmYgaXMgYWRkaW5nIG1hY3JvIGRlY2xhcmF0aW9ucyB3aXRoaW4gdGhlIGBjb21tb25fYnRmX2lkc2AgdGFibGUuIEknbSBub3RpbmcgdGhpcywgYnV0IGl0IHNlZW1zIHNlY29uZGFyeSB0byB0aGUgY29yZSB2ZXJpZmljYXRpb24gY2hhbmdlcy5cblxuSSdtIGFsc28gdGhpbmtpbmcgdGhyb3VnaCBhbnkgcmVsZXZhbnQgY29uZmlndXJhdGlvbnMuIEkgc2VlIGBDT05GSUdfQlBGX0VWRU5UU2AsIHdoaWNoIHRyaWdnZXJzIHRoZSBhZGRpdGlvbiBvZiBgS0ZfUEVSRk1PTmAgZmxhZ3MgaW4gdGhlIGBoZWxwZXJzLmNgIGZpbGUuIFRoaXMgdGVsbHMgbWUgdGhhdCBgQlBGX0VWRU5UU2AgbWlnaHQgYmUgcmVsZXZhbnQsIGFuZCBJIHNob3VsZCBjb25zaWRlciBpdCBhcyBhbiBvcHRpb24uXG5cbk5vdyB0aGF0IEkndmUgcmV2aWV3ZWQgZXZlcnl0aGluZywgdGhlIG1haW4gZm9jdXMgc3RpbGwgbGllcyBvbiB0aGUgdmVyaWZpZXIgY2hhbmdlcyByZWxhdGVkIHRvIGBjaGVja19rZnVuY19jYWxsYCBhbmQgYGNoZWNrX21lbV9hY2Nlc3NgLiBZZXMsIHRoaXMgY2hhbmdlIHRvdWNoZXMgdGhlIGNvcmUgQlBGIHZlcmlmaWNhdGlvbiBsb2dpYy4gWWVzLCB0aGlzIGlzIHNvbWV0aGluZyBJIHdhbnQgdG8gYmUgKnZlcnkqIHRob3JvdWdoIGFib3V0LiBUaGlzIGlzIGNlcnRhaW5seSB3b3J0aCBmdXp6aW5nLlxuXG5JJ20gY29uZmlkZW50IGluIG15IGFzc2Vzc21lbnQsIGFuZCBJJ2xsIHByb2NlZWQgd2l0aCBgc2V0LXJlc3VsdHNgLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxNzMyNCwiT3V0cHV0VG9rZW5zIjoxMzcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo2MjMsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0xMFQxNjoxNjo0OC4xMjk0NzEwODdaIiwiU2VxIjoxNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo3NDgyNTYwOCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiQlBGX1NZU0NBTExcIixcbiAgICBcIkJQRl9FVkVOVFNcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJjaGVja19rZnVuY19jYWxsXCIsXG4gICAgXCJjaGVja19tZW1fYWNjZXNzXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggaW50cm9kdWNlcyBhIG5ldyBLRl9QRVJGTU9OIGtmdW5jIGZsYWcgYW5kIGVuZm9yY2VzIENBUF9QRVJGTU9OL0NBUF9TWVNfQURNSU4gcGVybWlzc2lvbiBjaGVja3MgaW4gdGhlIEJQRiB2ZXJpZmllciAoY2hlY2tfa2Z1bmNfY2FsbCBhbmQgY2hlY2tfbWVtX2FjY2VzcykuIFNpbmNlIHRoZXNlIGNoYW5nZXMgbW9kaWZ5IHJlYWNoYWJsZSBCUEYgdmVyaWZpZXIgbG9naWMgZXhlY3V0ZWQgZHVyaW5nIEJQRiBwcm9ncmFtIHZlcmlmaWNhdGlvbiB2aWEgc3lzX2JwZiwgdGhleSB3YXJyYW50IGZ1enppbmcuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiQlBGX1NZU0NBTExcIixcbiAgICBcIkJQRl9FVkVOVFNcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJjaGVja19rZnVuY19jYWxsXCIsXG4gICAgXCJjaGVja19tZW1fYWNjZXNzXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggaW50cm9kdWNlcyBhIG5ldyBLRl9QRVJGTU9OIGtmdW5jIGZsYWcgYW5kIGVuZm9yY2VzIENBUF9QRVJGTU9OL0NBUF9TWVNfQURNSU4gcGVybWlzc2lvbiBjaGVja3MgaW4gdGhlIEJQRiB2ZXJpZmllciAoY2hlY2tfa2Z1bmNfY2FsbCBhbmQgY2hlY2tfbWVtX2FjY2VzcykuIFNpbmNlIHRoZXNlIGNoYW5nZXMgbW9kaWZ5IHJlYWNoYWJsZSBCUEYgdmVyaWZpZXIgbG9naWMgZXhlY3V0ZWQgZHVyaW5nIEJQRiBwcm9ncmFtIHZlcmlmaWNhdGlvbiB2aWEgc3lzX2JwZiwgdGhleSB3YXJyYW50IGZ1enppbmcuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTEwVDE2OjE2OjQ4LjIwNDMwMzI2NloiLCJTZXEiOjE3LCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6IklmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjQ4MDMxMjU1OTAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0xMFQxNjoxNjo0OC4yMDQ3MTYyMTVaIiwiU2VxIjoxOCwiTmVzdGluZyI6MiwiVHlwZSI6ImFnZW50IiwiTmFtZSI6Imttc2FuLWV2YWx1YXRvciIsIk1vZGVsIjoiY29yZSIsIkR1cmF0aW9uIjoyNDgwMjcwODEwMSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggaW50cm9kdWNlcyB0aGUgS0ZfUEVSRk1PTiBrZnVuYyBmbGFnIGFuZCBlbmZvcmNlcyBjYXBhYmlsaXR5IGNoZWNrcyBpbiB0aGUgQlBGIHZlcmlmaWVyIChyZXF1aXJpbmcgQ0FQX1BFUkZNT04gLyBDQVBfU1lTX0FETUlOIHZpYSBlbnYtXFx1MDAzZWFsbG93X3B0cl9sZWFrcykgZm9yIGNlcnRhaW4ga2Z1bmNzIGFuZCB1bnRydXN0ZWQgcmVhZC1vbmx5IG1lbW9yeSBhY2Nlc3Nlcy5cXG5cXG5UaGUgY2hhbmdlcyBhcmUgZW50aXJlbHkgcmVzdHJpY3RlZCB0byBCUEYgdmVyaWZpZXIgYWNjZXNzLWNvbnRyb2wgY2hlY2tzIGFuZCBmbGFnIGRlZmluaXRpb25zLiBUaGV5IGRvIG5vdCBhbHRlciBtZW1vcnkgaW5pdGlhbGl6YXRpb24sIGRvIG5vdCBpbnRyb2R1Y2Ugb3IgY29weSB1bmluaXRpYWxpemVkIGRhdGEgc3RydWN0dXJlcyB0byB1c2VyIHNwYWNlLCBhbmQgZG8gbm90IGludHJvZHVjZSBsb2dpYyB0aGF0IGJyYW5jaGVzIG9uIHVuaW5pdGlhbGl6ZWQgbWVtb3J5LiBUaHVzLCB0aGVyZSBhcmUgbm8gdW5pbml0aWFsaXplZCBtZW1vcnkgcmlza3MgdGhhdCByZXF1aXJlIGEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbi5cIixcbiAgXCJOZWVkc0tNU0FOXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgc2VjdXJpdHkgZW5naW5lZXIgc3BlY2lhbGl6aW5nIGluIGtlcm5lbCBtZW1vcnlcbmVycm9yIGRldGVjdG9ycyAoS0FTQU4gYW5kIEtNU0FOKS4gWW91ciBqb2IgaXMgdG8gcmV2aWV3IHRoZSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kXG5kZXRlcm1pbmUgaWYgdGhlIGNvZGUgY2hhbmdlcyBqdXN0aWZ5IHNwYXduaW5nIGEgZGVkaWNhdGVkIEtNU0FOIChLZXJuZWxNZW1vcnlTYW5pdGl6ZXIpXG5mdXp6aW5nIHNlc3Npb24gaW4gYWRkaXRpb24gdG8gc3RhbmRhcmQgS0FTQU4gZnV6emluZy5cblxuQ1JJVElDQUwgRElTVElOQ1RJT04gQkVUV0VFTiBLQVNBTiBBTkQgS01TQU46XG4tIFN0YW5kYXJkIEtBU0FOIGtlcm5lbCBidWlsZHMgKHVwc3RyZWFtLWFwcGFybW9yLWthc2FuLmNvbmZpZykgYWxyZWFkeSBlbmFibGVcbiAgYSBjb21wcmVoZW5zaXZlIHN1aXRlIG9mIGRlYnVnZ2luZyB0b29scyBhbmQgc2FuaXRpemVycywgaW5jbHVkaW5nIEtBU0FOXG4gIChvdXQtb2YtYm91bmRzIGFjY2Vzc2VzLCB1c2UtYWZ0ZXItZnJlZSwgZG91YmxlIGZyZWUsIGludmFsaWQgZnJlZSksIExPQ0tERVBcbiAgKGxvY2tpbmcgYnVncyBhbmQgZGVhZGxvY2tzKSwgVUItc2FuaXRpemVycywgYW5kIG1lbW9yeSBjb3JydXB0aW9uIGNoZWNrcy5cbi0gS01TQU4gKEtlcm5lbE1lbW9yeVNhbml0aXplcikgZGV0ZWN0cyByZWFkcyBvZiBVTklOSVRJQUxJWkVEIG1lbW9yeSAoc3RhY2ssIGhlYXAsXG4gIG9yIHBhZ2UgYWxsb2NhdGlvbnMpIGFuZCBrZXJuZWwtdG8tdXNlciBtZW1vcnkgaW5mby1sZWFrcy5cblxuUnVsZTogVEhFUkUgSVMgTk8gU0VOU0UgSU4gUlVOTklORyBBIEtNU0FOIFNFU1NJT04gSUYgQSBCVUcgQ0FOIEJFIENBVUdIVCBCWSBLQVNBTixcbkxPQ0tERVAsIE9SIE9USEVSIFNUQU5EQVJEIEJVRyBERVRFQ1RPUlMuXG5BIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaW5jdXJzIHNpZ25pZmljYW50IHJlc291cmNlIGNvc3RzLiBZb3UgbXVzdCBPTkxZXG5zZXQgTmVlZHNLTVNBTj10cnVlIGlmIHRoZSBjb2RlIGNoYW5nZXMgaW50cm9kdWNlIG9yIGV4cG9zZSBVTklOSVRJQUxJWkVEIE1FTU9SWSByaXNrc1xudGhhdCBhcmUgZGV0ZWN0ZWQgT05MWSBieSBLTVNBTi5cblxuTG9vayBob2xpc3RpY2FsbHkgYXQgdGhlIHBhdGNoIHNlcmllcyBhbmQgc3Vycm91bmRpbmcgY29kZS4gRXZlbiBpZiBubyBkaXJlY3RcbnVuaW5pdGlhbGl6ZWQgZmllbGQgYWNjZXNzZXMgb3IgbmV3IGJ1ZmZlciBhbGxvY2F0aW9ucyBhcmUgYWRkZWQgaW4gdGhlIGRpZmYgaXRzZWxmLFxuYSBwYXRjaCBtYXkgYWx0ZXIgY29udHJvbCBmbG93LCBib3VuZHMgY2hlY2tpbmcsIG9yIGRhdGEgbGVuZ3RoIGNhbGN1bGF0aW9ucyBpbiB3YXlzXG50aGF0IGNoYW5nZSBob3cgdGhlIHJlc3Qgb2YgdGhlIGNvZGUgb3BlcmF0ZXMgb24gZXhpc3RpbmcgYnVmZmVycyAoZS5nLiBhbGxvd2luZ1xudW5pbml0aWFsaXplZCBzdGFjay9oZWFwIG1lbW9yeSB0byBiZSByZWFkLCBjb3BpZWQgdG8gdXNlciBzcGFjZSwgb3IgdXNlZCBpbiBjb250cm9sXG5mbG93KS4gRG8gbm90IGhlc2l0YXRlIHRvIHVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGluc3BlY3QgdGhlIHN1cnJvdW5kaW5nIGNvZGUsXG5jYWxsZWQgZnVuY3Rpb25zLCBhbmQgY2FsbGVycy5cblxuU2V0IE5lZWRzS01TQU49dHJ1ZSBPTkxZIElGIHRoZSBwYXRjaCBpbnRyb2R1Y2VzIG9yIG1vZGlmaWVzOlxuMS4gS2VybmVsIHN0cnVjdHVyZXMgc2VudCB0byB1c2VyIHNwYWNlICh2aWEgY29weV90b191c2VyLCBwdXRfdXNlciwgbmV0bGluayBza2JcbiAgIGF0dHJpYnV0ZXMsIGlvY3RsIG91dHB1dCBhcmd1bWVudHMsIHNvY2tldCBvcHRpb25zLCBvciBCUEYgYnVmZmVycykgd2hlcmUgZmllbGRzXG4gICBvciBzdHJ1Y3R1cmUgcGFkZGluZyBtaWdodCBub3QgYmUgZnVsbHkgaW5pdGlhbGl6ZWQvemVyb2VkLlxuMi4gQ29uZGl0aW9uYWwgbG9naWMgb3IgYnJhbmNoaW5nIHRoYXQgZGVwZW5kcyBvbiBwb3RlbnRpYWxseSB1bmluaXRpYWxpemVkIHZhcmlhYmxlc1xuICAgb3Igc3RydWN0IGZpZWxkcy5cbjMuIEFsbG9jYXRpb24gb3IgaW5pdGlhbGl6YXRpb24gb2YgY29tcGxleCBkYXRhIHN0cnVjdHVyZXMgd2hlcmUgdW5pbml0aWFsaXplZCBmaWVsZHNcbiAgIGNvdWxkIGJlIHJlYWQgbGF0ZXIgaW4gcmVhY2hhYmxlIGNvZGUgcGF0aHMuXG40LiBCb3VuZHMgY2hlY2tzLCBsZW5ndGhzLCBvciBsb2dpYyBpbiBhIHdheSB0aGF0IGFsbG93cyBzdXJyb3VuZGluZyBjb2RlIHRvIGFjY2Vzc1xuICAgdW5pbml0aWFsaXplZCBieXRlcyBvZiBleGlzdGluZyBidWZmZXJzLlxuXG5TZXQgTmVlZHNLTVNBTj1mYWxzZSBJRjpcbi0gVGhlIGNvZGUgY2hhbmdlcyBwcmltYXJpbHkgcmlzayBvdXQtb2YtYm91bmRzIGFjY2VzcywgYXJyYXkgb3ZlcmZsb3dzLCBOVUxMIHBvaW50ZXJcbiAgZGVyZWZlcmVuY2VzLCBsb2NraW5nIGRlYWRsb2Nrcywgb3IgdXNlLWFmdGVyLWZyZWUgYnVncyAodGhlc2UgYXJlIGFscmVhZHkgY2F1Z2h0XG4gIGJ5IEtBU0FOLCBMT0NLREVQLCBvciBzdGFuZGFyZCBidWcgZGV0ZWN0b3JzKS5cbi0gQWxsIHN0YWNrL2hlYXAgc3RydWN0dXJlcyB0b3VjaGVkIG9yIGludHJvZHVjZWQgYnkgdGhlIHBhdGNoIGFyZSBmdWxseSB6ZXJvZWRcbiAgb3IgaW5pdGlhbGl6ZWQgKGUuZy4gdXNpbmcgPSB7MH0sIG1lbXNldCwga3phbGxvYykgYmVmb3JlIGJlaW5nIHJlYWQgb3IgY29waWVkLlxuLSBUaGUgcGF0Y2ggZG9lcyBub3QgaW50cm9kdWNlIGFueSByaXNrIG9mIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHVzYWdlIG9yIGluZm8tbGVha3MuXG5cblVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGluc3BlY3QgdGhlIHN1cnJvdW5kaW5nIGNvZGUgaWYgbmVjZXNzYXJ5LCB0aGVuIHByb3ZpZGVcbmRldGFpbGVkIEtNU0FOUmVhc29uaW5nIGNvbnRyYXN0aW5nIEtBU0FOIHZzIEtNU0FOIGFwcGxpY2FiaWxpdHkgZm9yIHRoaXMgcGF0Y2guXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJUYXJnZXQgYXJjaGl0ZWN0dXJlOiBhbWQ2NFxuXG5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCA0NzU0N2VlN2E1NDA5MjNlNjIxOWY0NWJkOGIyNmUyOWRhOGMxZjUwXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFRodSBTZXAgMTAgMTY6MTU6NDIgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2JwZi9rZnVuY3MucnN0IGIvRG9jdW1lbnRhdGlvbi9icGYva2Z1bmNzLnJzdFxuaW5kZXggODVmNzNlMGJiZDBmZi4uNjY5MWZlOGEzMmMzZCAxMDA2NDRcbi0tLSBhL0RvY3VtZW50YXRpb24vYnBmL2tmdW5jcy5yc3RcbisrKyBiL0RvY3VtZW50YXRpb24vYnBmL2tmdW5jcy5yc3RcbkBAIC00ODYsNiArNDg2LDE2IEBAIEV4YW1wbGUgdXNhZ2UgaW4gQlBGIHByb2dyYW06XG4gXHQvKiBub3RlIHRoYXQgdGhlIGxhc3QgYXJndW1lbnQgaXMgb21pdHRlZCAqL1xuICAgICAgICAgYnBmX3Rhc2tfd29ya19zY2hlZHVsZV9zaWduYWwodGFzaywgXHUwMDI2d29yay1cdTAwM2V0dywgXHUwMDI2YXJybWFwLCB0YXNrX3dvcmtfY2FsbGJhY2spO1xuIFxuKzIuNS4xMCBLRl9QRVJGTU9OIGZsYWdcbistLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4rXG4rVGhlIEtGX1BFUkZNT04gZmxhZyBpcyB1c2VkIGZvciBrZnVuY3MgdGhhdCBjYW4gZXhwb3NlIGtlcm5lbCBtZW1vcnkgb3Iga2VybmVsXG4rYWRkcmVzc2VzIHRvIHRoZSBCUEYgcHJvZ3JhbSwgZm9yIGV4YW1wbGUgYnkgcmVhZGluZyB0aHJvdWdoIGEgcG9pbnRlciB0aGF0IHRoZVxuK3ZlcmlmaWVyIGRvZXMgbm90IGNoZWNrLiBDYWxsaW5nIHN1Y2ggYSBrZnVuYyByZXF1aXJlcyBDQVBfUEVSRk1PTiwgb3JcbitDQVBfU1lTX0FETUlOLCBpbiB0aGUgc2FtZSB3YXkgdGhhdCB0aGUgZXF1aXZhbGVudCBCUEYgaGVscGVycyBhcmUgZ2F0ZWQgaW5cbiticGZfYmFzZV9mdW5jX3Byb3RvKCkuIEEgcHJvZ3JhbSBsb2FkZWQgd2l0aCBDQVBfQlBGIGFsb25lIGlzIHJlamVjdGVkIGF0IGxvYWRcbit0aW1lLlxuK1xuIDIuNiBSZWdpc3RlcmluZyB0aGUga2Z1bmNzXG4gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiBcbmRpZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4L2J0Zi5oIGIvaW5jbHVkZS9saW51eC9idGYuaFxuaW5kZXggODlkNWE1YzRmMTE3MS4uN2M2MmVhMTdiMTE2MyAxMDA2NDRcbi0tLSBhL2luY2x1ZGUvbGludXgvYnRmLmhcbisrKyBiL2luY2x1ZGUvbGludXgvYnRmLmhcbkBAIC04MCw2ICs4MCw3IEBAXG4gI2RlZmluZSBLRl9BUkVOQV9BUkcyICAgKDEgXHUwMDNjXHUwMDNjIDE1KSAvKiBrZnVuYyB0YWtlcyBhbiBhcmVuYSBwb2ludGVyIGFzIGl0cyBzZWNvbmQgYXJndW1lbnQgKi9cbiAjZGVmaW5lIEtGX0lNUExJQ0lUX0FSR1MgKDEgXHUwMDNjXHUwMDNjIDE2KSAvKiBrZnVuYyBoYXMgaW1wbGljaXQgYXJndW1lbnRzIHN1cHBsaWVkIGJ5IHRoZSB2ZXJpZmllciAqL1xuICNkZWZpbmUgS0ZfU1BJTkxPQ0tfU0FGRSAoMSBcdTAwM2NcdTAwM2MgMTcpIC8qIGtmdW5jIGlzIGFsbG93ZWQgaW5zaWRlIGJwZl9zcGluX2xvY2stZWQgcmVnaW9uICovXG4rI2RlZmluZSBLRl9QRVJGTU9OICAgICAgKDEgXHUwMDNjXHUwMDNjIDE4KSAvKiBrZnVuYyByZXF1aXJlcyBDQVBfUEVSRk1PTiAqL1xuIFxuIC8qXG4gICogVGFnIG1hcmtpbmcgYSBrZXJuZWwgZnVuY3Rpb24gYXMgYSBrZnVuYy4gVGhpcyBpcyBtZWFudCB0byBtaW5pbWl6ZSB0aGVcbmRpZmYgLS1naXQgYS9rZXJuZWwvYnBmL2hlbHBlcnMuYyBiL2tlcm5lbC9icGYvaGVscGVycy5jXG5pbmRleCBiM2NjNWM4ZmM4NzU2Li44YTBlZWI0ZjYyMzZkIDEwMDY0NFxuLS0tIGEva2VybmVsL2JwZi9oZWxwZXJzLmNcbisrKyBiL2tlcm5lbC9icGYvaGVscGVycy5jXG5AQCAtNDg4Myw3ICs0ODgzLDcgQEAgQlRGX0lEKGZ1bmMsIGJwZl9jZ3JvdXBfcmVsZWFzZV9kdG9yKVxuIFxuIEJURl9LRlVOQ1NfU1RBUlQoY29tbW9uX2J0Zl9pZHMpXG4gQlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl9jYXN0X3RvX2tlcm5fY3R4LCBLRl9GQVNUQ0FMTClcbi1CVEZfSURfRkxBR1MoZnVuYywgYnBmX3Jkb25seV9jYXN0LCBLRl9GQVNUQ0FMTClcbitCVEZfSURfRkxBR1MoZnVuYywgYnBmX3Jkb25seV9jYXN0LCBLRl9GQVNUQ0FMTCB8IEtGX1BFUkZNT04pXG4gQlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl9yY3VfcmVhZF9sb2NrKVxuIEJURl9JRF9GTEFHUyhmdW5jLCBicGZfcmN1X3JlYWRfdW5sb2NrKVxuIEJURl9JRF9GTEFHUyhmdW5jLCBicGZfZHlucHRyX3NsaWNlLCBLRl9SRVRfTlVMTClcbkBAIC00OTIwLDExICs0OTIwLDExIEBAIEJURl9JRF9GTEFHUyhmdW5jLCBicGZfd3Ffc2V0X2NhbGxiYWNrLCBLRl9JTVBMSUNJVF9BUkdTKVxuIEJURl9JRF9GTEFHUyhmdW5jLCBicGZfd3Ffc3RhcnQpXG4gQlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl9wcmVlbXB0X2Rpc2FibGUpXG4gQlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl9wcmVlbXB0X2VuYWJsZSlcbi1CVEZfSURfRkxBR1MoZnVuYywgYnBmX2l0ZXJfYml0c19uZXcsIEtGX0lURVJfTkVXKVxuK0JURl9JRF9GTEFHUyhmdW5jLCBicGZfaXRlcl9iaXRzX25ldywgS0ZfSVRFUl9ORVcgfCBLRl9QRVJGTU9OKVxuIEJURl9JRF9GTEFHUyhmdW5jLCBicGZfaXRlcl9iaXRzX25leHQsIEtGX0lURVJfTkVYVCB8IEtGX1JFVF9OVUxMKVxuIEJURl9JRF9GTEFHUyhmdW5jLCBicGZfaXRlcl9iaXRzX2Rlc3Ryb3ksIEtGX0lURVJfREVTVFJPWSlcbi1CVEZfSURfRkxBR1MoZnVuYywgYnBmX2NvcHlfZnJvbV91c2VyX3N0ciwgS0ZfU0xFRVBBQkxFKVxuLUJURl9JRF9GTEFHUyhmdW5jLCBicGZfY29weV9mcm9tX3VzZXJfdGFza19zdHIsIEtGX1NMRUVQQUJMRSlcbitCVEZfSURfRkxBR1MoZnVuYywgYnBmX2NvcHlfZnJvbV91c2VyX3N0ciwgS0ZfU0xFRVBBQkxFIHwgS0ZfUEVSRk1PTilcbitCVEZfSURfRkxBR1MoZnVuYywgYnBmX2NvcHlfZnJvbV91c2VyX3Rhc2tfc3RyLCBLRl9TTEVFUEFCTEUgfCBLRl9QRVJGTU9OKVxuIEJURl9JRF9GTEFHUyhmdW5jLCBicGZfZ2V0X2ttZW1fY2FjaGUpXG4gQlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl9pdGVyX2ttZW1fY2FjaGVfbmV3LCBLRl9JVEVSX05FVyB8IEtGX1NMRUVQQUJMRSlcbiBCVEZfSURfRkxBR1MoZnVuYywgYnBmX2l0ZXJfa21lbV9jYWNoZV9uZXh0LCBLRl9JVEVSX05FWFQgfCBLRl9SRVRfTlVMTCB8IEtGX1NMRUVQQUJMRSlcbkBAIC00OTMyLDE0ICs0OTMyLDE0IEBAIEJURl9JRF9GTEFHUyhmdW5jLCBicGZfaXRlcl9rbWVtX2NhY2hlX2Rlc3Ryb3ksIEtGX0lURVJfREVTVFJPWSB8IEtGX1NMRUVQQUJMRSlcbiBCVEZfSURfRkxBR1MoZnVuYywgYnBmX2xvY2FsX2lycV9zYXZlKVxuIEJURl9JRF9GTEFHUyhmdW5jLCBicGZfbG9jYWxfaXJxX3Jlc3RvcmUpXG4gI2lmZGVmIENPTkZJR19CUEZfRVZFTlRTXG4tQlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl9wcm9iZV9yZWFkX3VzZXJfZHlucHRyKVxuLUJURl9JRF9GTEFHUyhmdW5jLCBicGZfcHJvYmVfcmVhZF9rZXJuZWxfZHlucHRyKVxuLUJURl9JRF9GTEFHUyhmdW5jLCBicGZfcHJvYmVfcmVhZF91c2VyX3N0cl9keW5wdHIpXG4tQlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl9wcm9iZV9yZWFkX2tlcm5lbF9zdHJfZHlucHRyKVxuLUJURl9JRF9GTEFHUyhmdW5jLCBicGZfY29weV9mcm9tX3VzZXJfZHlucHRyLCBLRl9TTEVFUEFCTEUpXG4tQlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl9jb3B5X2Zyb21fdXNlcl9zdHJfZHlucHRyLCBLRl9TTEVFUEFCTEUpXG4tQlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl9jb3B5X2Zyb21fdXNlcl90YXNrX2R5bnB0ciwgS0ZfU0xFRVBBQkxFKVxuLUJURl9JRF9GTEFHUyhmdW5jLCBicGZfY29weV9mcm9tX3VzZXJfdGFza19zdHJfZHlucHRyLCBLRl9TTEVFUEFCTEUpXG4rQlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl9wcm9iZV9yZWFkX3VzZXJfZHlucHRyLCBLRl9QRVJGTU9OKVxuK0JURl9JRF9GTEFHUyhmdW5jLCBicGZfcHJvYmVfcmVhZF9rZXJuZWxfZHlucHRyLCBLRl9QRVJGTU9OKVxuK0JURl9JRF9GTEFHUyhmdW5jLCBicGZfcHJvYmVfcmVhZF91c2VyX3N0cl9keW5wdHIsIEtGX1BFUkZNT04pXG4rQlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl9wcm9iZV9yZWFkX2tlcm5lbF9zdHJfZHlucHRyLCBLRl9QRVJGTU9OKVxuK0JURl9JRF9GTEFHUyhmdW5jLCBicGZfY29weV9mcm9tX3VzZXJfZHlucHRyLCBLRl9TTEVFUEFCTEUgfCBLRl9QRVJGTU9OKVxuK0JURl9JRF9GTEFHUyhmdW5jLCBicGZfY29weV9mcm9tX3VzZXJfc3RyX2R5bnB0ciwgS0ZfU0xFRVBBQkxFIHwgS0ZfUEVSRk1PTilcbitCVEZfSURfRkxBR1MoZnVuYywgYnBmX2NvcHlfZnJvbV91c2VyX3Rhc2tfZHlucHRyLCBLRl9TTEVFUEFCTEUgfCBLRl9QRVJGTU9OKVxuK0JURl9JRF9GTEFHUyhmdW5jLCBicGZfY29weV9mcm9tX3VzZXJfdGFza19zdHJfZHlucHRyLCBLRl9TTEVFUEFCTEUgfCBLRl9QRVJGTU9OKVxuICNlbmRpZlxuICNpZmRlZiBDT05GSUdfRE1BX1NIQVJFRF9CVUZGRVJcbiBCVEZfSURfRkxBR1MoZnVuYywgYnBmX2l0ZXJfZG1hYnVmX25ldywgS0ZfSVRFUl9ORVcgfCBLRl9TTEVFUEFCTEUpXG5AQCAtNDk0NywyNiArNDk0NywyNiBAQCBCVEZfSURfRkxBR1MoZnVuYywgYnBmX2l0ZXJfZG1hYnVmX25leHQsIEtGX0lURVJfTkVYVCB8IEtGX1JFVF9OVUxMIHwgS0ZfU0xFRVBBQlxuIEJURl9JRF9GTEFHUyhmdW5jLCBicGZfaXRlcl9kbWFidWZfZGVzdHJveSwgS0ZfSVRFUl9ERVNUUk9ZIHwgS0ZfU0xFRVBBQkxFKVxuICNlbmRpZlxuIEJURl9JRF9GTEFHUyhmdW5jLCBfX2JwZl90cmFwKVxuLUJURl9JRF9GTEFHUyhmdW5jLCBicGZfc3RyY21wKTtcbi1CVEZfSURfRkxBR1MoZnVuYywgYnBmX3N0cmNhc2VjbXApO1xuLUJURl9JRF9GTEFHUyhmdW5jLCBicGZfc3RybmNhc2VjbXApO1xuLUJURl9JRF9GTEFHUyhmdW5jLCBicGZfc3RyY2hyKTtcbi1CVEZfSURfRkxBR1MoZnVuYywgYnBmX3N0cmNocm51bCk7XG4tQlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl9zdHJuY2hyKTtcbi1CVEZfSURfRkxBR1MoZnVuYywgYnBmX3N0cnJjaHIpO1xuLUJURl9JRF9GTEFHUyhmdW5jLCBicGZfc3RybGVuKTtcbi1CVEZfSURfRkxBR1MoZnVuYywgYnBmX3N0cm5sZW4pO1xuLUJURl9JRF9GTEFHUyhmdW5jLCBicGZfc3Ryc3BuKTtcbi1CVEZfSURfRkxBR1MoZnVuYywgYnBmX3N0cmNzcG4pO1xuLUJURl9JRF9GTEFHUyhmdW5jLCBicGZfc3Ryc3RyKTtcbi1CVEZfSURfRkxBR1MoZnVuYywgYnBmX3N0cmNhc2VzdHIpO1xuLUJURl9JRF9GTEFHUyhmdW5jLCBicGZfc3RybnN0cik7XG4tQlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl9zdHJuY2FzZXN0cik7XG4rQlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl9zdHJjbXAsIEtGX1BFUkZNT04pO1xuK0JURl9JRF9GTEFHUyhmdW5jLCBicGZfc3RyY2FzZWNtcCwgS0ZfUEVSRk1PTik7XG4rQlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl9zdHJuY2FzZWNtcCwgS0ZfUEVSRk1PTik7XG4rQlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl9zdHJjaHIsIEtGX1BFUkZNT04pO1xuK0JURl9JRF9GTEFHUyhmdW5jLCBicGZfc3RyY2hybnVsLCBLRl9QRVJGTU9OKTtcbitCVEZfSURfRkxBR1MoZnVuYywgYnBmX3N0cm5jaHIsIEtGX1BFUkZNT04pO1xuK0JURl9JRF9GTEFHUyhmdW5jLCBicGZfc3RycmNociwgS0ZfUEVSRk1PTik7XG4rQlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl9zdHJsZW4sIEtGX1BFUkZNT04pO1xuK0JURl9JRF9GTEFHUyhmdW5jLCBicGZfc3RybmxlbiwgS0ZfUEVSRk1PTik7XG4rQlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl9zdHJzcG4sIEtGX1BFUkZNT04pO1xuK0JURl9JRF9GTEFHUyhmdW5jLCBicGZfc3RyY3NwbiwgS0ZfUEVSRk1PTik7XG4rQlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl9zdHJzdHIsIEtGX1BFUkZNT04pO1xuK0JURl9JRF9GTEFHUyhmdW5jLCBicGZfc3RyY2FzZXN0ciwgS0ZfUEVSRk1PTik7XG4rQlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl9zdHJuc3RyLCBLRl9QRVJGTU9OKTtcbitCVEZfSURfRkxBR1MoZnVuYywgYnBmX3N0cm5jYXNlc3RyLCBLRl9QRVJGTU9OKTtcbiAjaWYgZGVmaW5lZChDT05GSUdfQlBGX0xTTSkgXHUwMDI2XHUwMDI2IGRlZmluZWQoQ09ORklHX0NHUk9VUFMpXG4gQlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl9jZ3JvdXBfcmVhZF94YXR0ciwgS0ZfUkNVKVxuICNlbmRpZlxuLUJURl9JRF9GTEFHUyhmdW5jLCBicGZfc3RyZWFtX3ZwcmludGssIEtGX0lNUExJQ0lUX0FSR1MgfCBLRl9TUElOTE9DS19TQUZFKVxuLUJURl9JRF9GTEFHUyhmdW5jLCBicGZfc3RyZWFtX3ByaW50X3N0YWNrLCBLRl9JTVBMSUNJVF9BUkdTIHwgS0ZfU1BJTkxPQ0tfU0FGRSlcbitCVEZfSURfRkxBR1MoZnVuYywgYnBmX3N0cmVhbV92cHJpbnRrLCBLRl9JTVBMSUNJVF9BUkdTIHwgS0ZfU1BJTkxPQ0tfU0FGRSB8IEtGX1BFUkZNT04pXG4rQlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl9zdHJlYW1fcHJpbnRfc3RhY2ssIEtGX0lNUExJQ0lUX0FSR1MgfCBLRl9TUElOTE9DS19TQUZFIHwgS0ZfUEVSRk1PTilcbiBCVEZfSURfRkxBR1MoZnVuYywgYnBmX3Rhc2tfd29ya19zY2hlZHVsZV9zaWduYWwsIEtGX0lNUExJQ0lUX0FSR1MpXG4gQlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl90YXNrX3dvcmtfc2NoZWR1bGVfcmVzdW1lLCBLRl9JTVBMSUNJVF9BUkdTKVxuIEJURl9JRF9GTEFHUyhmdW5jLCBicGZfZHlucHRyX2Zyb21fZmlsZSlcbmRpZmYgLS1naXQgYS9rZXJuZWwvYnBmL3ZlcmlmaWVyLmMgYi9rZXJuZWwvYnBmL3ZlcmlmaWVyLmNcbmluZGV4IDcyYTNmNTk5OGRkMjcuLjM2OTIzY2UwNDI3MzQgMTAwNjQ0XG4tLS0gYS9rZXJuZWwvYnBmL3ZlcmlmaWVyLmNcbisrKyBiL2tlcm5lbC9icGYvdmVyaWZpZXIuY1xuQEAgLTY0NTMsNiArNjQ1MywxNiBAQCBzdGF0aWMgaW50IGNoZWNrX21lbV9hY2Nlc3Moc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudiwgaW50IGluc25faWR4LCBzdHJ1Y3QgYlxuIFx0XHRcdHJldHVybiAtRUFDQ0VTO1xuIFx0XHR9XG4gXG4rXHRcdGlmIChyZG9ubHlfdW50cnVzdGVkIFx1MDAyNlx1MDAyNiAhZW52LVx1MDAzZWFsbG93X3B0cl9sZWFrcykge1xuK1x0XHRcdHZlcmJvc2UoZW52LCBcIiVzIGFjY2VzcyBpcyBhbGxvd2VkIG9ubHkgdG8gQ0FQX1BFUkZNT04gYW5kIENBUF9TWVNfQURNSU5cXG5cIixcbitcdFx0XHRcdHJlZ190eXBlX3N0cihlbnYsIHJlZy1cdTAwM2V0eXBlKSk7XG4rXHRcdFx0YnBmX2RpYWdfcG9saWN5KFxuK1x0XHRcdFx0ZW52LCBpbnNuX2lkeCwgXCJyZWFkIGZyb20gdW50cnVzdGVkIHJlYWQtb25seSBtZW1vcnlcIixcbitcdFx0XHRcdFwidGhlIGFjY2VzcyByZXF1aXJlcyBDQVBfUEVSRk1PTlwiLFxuK1x0XHRcdFx0XCJMb2FkIHRoZSBwcm9ncmFtIHdpdGggQ0FQX1BFUkZNT04sIG9yIGF2b2lkIGRlcmVmZXJlbmNpbmcgdW50cnVzdGVkIHBvaW50ZXJzLlwiKTtcbitcdFx0XHRyZXR1cm4gLUVQRVJNO1xuK1x0XHR9XG4rXG4gXHRcdC8qXG4gXHRcdCAqIEFjY2Vzc2VzIHRvIHVudHJ1c3RlZCBQVFJfVE9fTUVNIGFyZSBkb25lIHRocm91Z2ggcHJvYmVcbiBcdFx0ICogaW5zdHJ1Y3Rpb25zLCBoZW5jZSBubyBuZWVkIHRvIGNoZWNrIGJvdW5kcyBpbiB0aGF0IGNhc2UuXG5AQCAtMTEzNTYsNiArMTEzNjYsMTEgQEAgc3RhdGljIGJvb2wgaXNfa2Z1bmNfZGVzdHJ1Y3RpdmUoc3RydWN0IGJwZl9jYWxsX2FyZ19tZXRhICptZXRhKVxuIFx0cmV0dXJuIG1ldGEtXHUwMDNla2Z1bmNfZmxhZ3MgXHUwMDI2IEtGX0RFU1RSVUNUSVZFO1xuIH1cbiBcbitzdGF0aWMgYm9vbCBpc19rZnVuY19wZXJmbW9uKHN0cnVjdCBicGZfY2FsbF9hcmdfbWV0YSAqbWV0YSlcbit7XG4rXHRyZXR1cm4gbWV0YS1cdTAwM2VrZnVuY19mbGFncyBcdTAwMjYgS0ZfUEVSRk1PTjtcbit9XG4rXG4gc3RhdGljIGJvb2wgaXNfa2Z1bmNfcmN1KHN0cnVjdCBicGZfY2FsbF9hcmdfbWV0YSAqbWV0YSlcbiB7XG4gXHRyZXR1cm4gbWV0YS1cdTAwM2VrZnVuY19mbGFncyBcdTAwMjYgS0ZfUkNVO1xuQEAgLTEzODM0LDYgKzEzODQ5LDE2IEBAIHN0YXRpYyBpbnQgY2hlY2tfa2Z1bmNfY2FsbChzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52LCBzdHJ1Y3QgYnBmX2luc24gKmluc24sXG4gXHRcdHJldHVybiAtRUFDQ0VTO1xuIFx0fVxuIFxuK1x0aWYgKGlzX2tmdW5jX3BlcmZtb24oXHUwMDI2bWV0YSkgXHUwMDI2XHUwMDI2ICFlbnYtXHUwMDNlYWxsb3dfcHRyX2xlYWtzKSB7XG4rXHRcdHZlcmJvc2UoZW52LCBcIiVzIGlzIGFsbG93ZWQgb25seSB0byBDQVBfUEVSRk1PTiBhbmQgQ0FQX1NZU19BRE1JTlxcblwiLFxuK1x0XHRcdGZ1bmNfbmFtZSk7XG4rXHRcdG9wZXJhdGlvbiA9IGJwZl9kaWFnX2ZtdChlbnYsIFwia2Z1bmMgJXNcIiwgZnVuY19uYW1lKTtcbitcdFx0YnBmX2RpYWdfcG9saWN5KFxuK1x0XHRcdGVudiwgaW5zbl9pZHgsIG9wZXJhdGlvbiwgXCJ0aGUga2Z1bmMgcmVxdWlyZXMgQ0FQX1BFUkZNT05cIixcbitcdFx0XHRcIkxvYWQgdGhlIHByb2dyYW0gd2l0aCBDQVBfUEVSRk1PTiwgb3IgYXZvaWQgdGhlIGtmdW5jLlwiKTtcbitcdFx0cmV0dXJuIC1FUEVSTTtcbitcdH1cbitcbiBcdHNsZWVwYWJsZSA9IGJwZl9pc19rZnVuY19zbGVlcGFibGUoXHUwMDI2bWV0YSk7XG4gXHRpZiAoc2xlZXBhYmxlIFx1MDAyNlx1MDAyNiAhaW5fc2xlZXBhYmxlKGVudikpIHtcbiBcdFx0dmVyYm9zZShlbnYsIFwicHJvZ3JhbSBtdXN0IGJlIHNsZWVwYWJsZSB0byBjYWxsIHNsZWVwYWJsZSBrZnVuYyAlc1xcblwiLCBmdW5jX25hbWUpO1xuZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3ZlcmlmaWVyLmMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy92ZXJpZmllci5jXG5pbmRleCA2NGFjNDlhZDY3ZTYzLi5lYzllMzkwN2M3NWQ2IDEwMDY0NFxuLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvdmVyaWZpZXIuY1xuKysrIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvdmVyaWZpZXIuY1xuQEAgLTUzLDYgKzUzLDcgQEBcbiAjaW5jbHVkZSBcInZlcmlmaWVyX2l0ZXJhdGluZ19jYWxsYmFja3Muc2tlbC5oXCJcbiAjaW5jbHVkZSBcInZlcmlmaWVyX2plcV9pbmZlcl9ub3RfbnVsbC5za2VsLmhcIlxuICNpbmNsdWRlIFwidmVyaWZpZXJfaml0X2NvbnZlcmdlbmNlLnNrZWwuaFwiXG4rI2luY2x1ZGUgXCJ2ZXJpZmllcl9rZnVuY19wZXJmbW9uLnNrZWwuaFwiXG4gI2luY2x1ZGUgXCJ2ZXJpZmllcl9sZF9pbmQuc2tlbC5oXCJcbiAjaW5jbHVkZSBcInZlcmlmaWVyX2xkc3guc2tlbC5oXCJcbiAjaW5jbHVkZSBcInZlcmlmaWVyX2xlYWtfcHRyLnNrZWwuaFwiXG5AQCAtMjE2LDYgKzIxNyw3IEBAIHZvaWQgdGVzdF92ZXJpZmllcl9pbnRfcHRyKHZvaWQpICAgICAgICAgICAgICB7IFJVTih2ZXJpZmllcl9pbnRfcHRyKTsgfVxuIHZvaWQgdGVzdF92ZXJpZmllcl9pdGVyYXRpbmdfY2FsbGJhY2tzKHZvaWQpICB7IFJVTih2ZXJpZmllcl9pdGVyYXRpbmdfY2FsbGJhY2tzKTsgfVxuIHZvaWQgdGVzdF92ZXJpZmllcl9qZXFfaW5mZXJfbm90X251bGwodm9pZCkgICB7IFJVTih2ZXJpZmllcl9qZXFfaW5mZXJfbm90X251bGwpOyB9XG4gdm9pZCB0ZXN0X3ZlcmlmaWVyX2ppdF9jb252ZXJnZW5jZSh2b2lkKSAgICAgIHsgUlVOKHZlcmlmaWVyX2ppdF9jb252ZXJnZW5jZSk7IH1cbit2b2lkIHRlc3RfdmVyaWZpZXJfa2Z1bmNfcGVyZm1vbih2b2lkKSAgICAgICAgeyBSVU4odmVyaWZpZXJfa2Z1bmNfcGVyZm1vbik7IH1cbiB2b2lkIHRlc3RfdmVyaWZpZXJfbG9hZF9hY3F1aXJlKHZvaWQpICAgICAgICAgeyBSVU4odmVyaWZpZXJfbG9hZF9hY3F1aXJlKTsgfVxuIHZvaWQgdGVzdF92ZXJpZmllcl9sZF9pbmQodm9pZCkgICAgICAgICAgICAgICB7IFJVTih2ZXJpZmllcl9sZF9pbmQpOyB9XG4gdm9pZCB0ZXN0X3ZlcmlmaWVyX2xkc3godm9pZCkgICAgICAgICAgICAgICAgICB7IFJVTih2ZXJpZmllcl9sZHN4KTsgfVxuZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy92ZXJpZmllcl9rZnVuY19wZXJmbW9uLmMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvdmVyaWZpZXJfa2Z1bmNfcGVyZm1vbi5jXG5uZXcgZmlsZSBtb2RlIDEwMDY0NFxuaW5kZXggMDAwMDAwMDAwMDAwMC4uYzZhZGJiNDgxNmNlY1xuLS0tIC9kZXYvbnVsbFxuKysrIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3ZlcmlmaWVyX2tmdW5jX3BlcmZtb24uY1xuQEAgLTAsMCArMSw2MyBAQFxuKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wXG4rXG4rI2luY2x1ZGUgXHUwMDNjdm1saW51eC5oXHUwMDNlXG4rI2luY2x1ZGUgXHUwMDNjYnBmL2JwZl9oZWxwZXJzLmhcdTAwM2VcbisjaW5jbHVkZSBcImJwZl9taXNjLmhcIlxuK1xuK3ZvaWQgKnVzZXJfcHRyO1xuK2NoYXIgZHlucHRyX2J1Zls4XTtcbit1NjQga2FkZHI7XG4rXG4rU0VDKFwic29ja2V0XCIpXG4rX19zdWNjZXNzXG4rX19jYXBzX3VucHJpdihDQVBfQlBGKVxuK19fZmFpbHVyZV91bnByaXZcbitfX21zZ191bnByaXYoXCJicGZfcmRvbmx5X2Nhc3QgaXMgYWxsb3dlZCBvbmx5IHRvIENBUF9QRVJGTU9OIGFuZCBDQVBfU1lTX0FETUlOXCIpXG4raW50IHJkb25seV9jYXN0X25vcGVyZm1vbih2b2lkICpjdHgpXG4re1xuK1x0Y2hhciAqcCA9IGJwZl9yZG9ubHlfY2FzdCgwLCAwKTtcbitcbitcdHJldHVybiBwWzB4N2ZmZl07XG4rfVxuK1xuK1NFQyhcInNvY2tldFwiKVxuK19fc3VjY2Vzc1xuK19fY2Fwc191bnByaXYoQ0FQX0JQRilcbitfX2ZhaWx1cmVfdW5wcml2XG4rX19tc2dfdW5wcml2KFwiYnBmX3Byb2JlX3JlYWRfa2VybmVsX2R5bnB0ciBpcyBhbGxvd2VkIG9ubHkgdG8gQ0FQX1BFUkZNT04gYW5kIENBUF9TWVNfQURNSU5cIilcbitpbnQgcHJvYmVfcmVhZF9rZXJuZWxfZHlucHRyX25vcGVyZm1vbih2b2lkICpjdHgpXG4re1xuK1x0c3RydWN0IGJwZl9keW5wdHIgZHB0cjtcbitcbitcdGJwZl9keW5wdHJfZnJvbV9tZW0oZHlucHRyX2J1Ziwgc2l6ZW9mKGR5bnB0cl9idWYpLCAwLCBcdTAwMjZkcHRyKTtcbitcdGJwZl9wcm9iZV9yZWFkX2tlcm5lbF9keW5wdHIoXHUwMDI2ZHB0ciwgMCwgc2l6ZW9mKGR5bnB0cl9idWYpLCB1c2VyX3B0cik7XG4rXHRyZXR1cm4gMDtcbit9XG4rXG4rU0VDKFwic29ja2V0XCIpXG4rX19zdWNjZXNzXG4rX19jYXBzX3VucHJpdihDQVBfQlBGKVxuK19fZmFpbHVyZV91bnByaXZcbitfX21zZ191bnByaXYoXCJicGZfc3RyZWFtX3ZwcmludGsgaXMgYWxsb3dlZCBvbmx5IHRvIENBUF9QRVJGTU9OIGFuZCBDQVBfU1lTX0FETUlOXCIpXG4raW50IHN0cmVhbV92cHJpbnRrX25vcGVyZm1vbih2b2lkICpjdHgpXG4re1xuK1x0YnBmX3N0cmVhbV9wcmludGsoQlBGX1NURE9VVCwgXCIlcEJcIiwgKHZvaWQgKilrYWRkcik7XG4rXHRyZXR1cm4gMDtcbit9XG4rXG4rX193ZWFrIGludCBzdWJwcm9nX3VudHJ1c3RlZF9yZWFkKHZvaWQgKnAgX19hcmdfdW50cnVzdGVkKVxuK3tcbitcdHJldHVybiAqKGNoYXIgKilwO1xuK31cbitcbitTRUMoXCJzb2NrZXRcIilcbitfX3N1Y2Nlc3NcbitfX2NhcHNfdW5wcml2KENBUF9CUEYpXG4rX19mYWlsdXJlX3VucHJpdlxuK19fbXNnX3VucHJpdihcInJkb25seV91bnRydXN0ZWRfbWVtIGFjY2VzcyBpcyBhbGxvd2VkIG9ubHkgdG8gQ0FQX1BFUkZNT04gYW5kIENBUF9TWVNfQURNSU5cIilcbitpbnQgYXJnX3VudHJ1c3RlZF9yZWFkX25vcGVyZm1vbih2b2lkICpjdHgpXG4re1xuK1x0cmV0dXJuIHN1YnByb2dfdW50cnVzdGVkX3JlYWQoMCk7XG4rfVxuK1xuK2NoYXIgX2xpY2Vuc2VbXSBTRUMoXCJsaWNlbnNlXCIpID0gXCJHUExcIjtcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTEwVDE2OjE2OjQ4LjIwNDcxNzE0NVoiLCJTZXEiOjE5LCJOZXN0aW5nIjozLCJUeXBlIjoibGxtIiwiTmFtZSI6Imttc2FuLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjoxMzU3MjQzMjUxNiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIEJQRiBLZnVuYyBQZXJtaXNzaW9uIFRpZ2h0ZW5pbmcgUGF0Y2gqKlxuXG5Pa2F5LCBsZXQncyBicmVhayBkb3duIHRoaXMgcGF0Y2guIE15IGltbWVkaWF0ZSB0aG91Z2h0IGlzLCBcIkFoLCB0aGV5J3JlIGJlZWZpbmcgdXAgdGhlIHNlY3VyaXR5IGFyb3VuZCBjZXJ0YWluIEJQRiBrZnVuY3MuXCIgU2VlbXMgbGlrZSBhIGdvb2QgdGhpbmcuXG5cbkZyb20gdGhlIHBhdGNoIHN1bW1hcnksIEkgc2VlIHRoZXkndmUgYWRkZWQgYSBgS0ZfUEVSRk1PTmAgZmxhZywgZGVmaW5lZCBpbiBgaW5jbHVkZS9saW51eC9idGYuaGAsIGFuZCB0aGVuIGFwcGxpZWQgaXQgdG8gYSBidW5jaCBvZiBrZnVuY3Mgd2l0aGluIGBrZXJuZWwvYnBmL2hlbHBlcnMuY2AuIFNwZWNpZmljYWxseSwgZnVuY3Rpb25zIGxpa2UgYGJwZl9yZG9ubHlfY2FzdGAsIGBicGZfaXRlcl9iaXRzX25ld2AsIGBicGZfY29weV9mcm9tX3VzZXJfc3RyYCwgdmFyaW91cyBgYnBmX3Byb2JlX3JlYWRfKmAgZnVuY3Rpb25zLCBhbmQgb3RoZXJzLiBUaGUgZG9jdW1lbnRhdGlvbiB1cGRhdGUgaXMgaW4gYERvY3VtZW50YXRpb24vYnBmL2tmdW5jcy5yc3RgLCBzbyBpdCBpcyBlYXN5IHRvIGZpbmQgdGhlIGluZm9ybWF0aW9uIGFib3V0IHRoZSBgS0ZfUEVSRk1PTmAgZmxhZy5cblxuVGhlIGNvcmUgb2YgdGhlIGNoYW5nZSBzZWVtcyB0byBiZSBpbiBga2VybmVsL2JwZi92ZXJpZmllci5jYC4gVGhleSdyZSBhZGRpbmcgY2hlY2tzIGluIGBjaGVja19tZW1fYWNjZXNzYCBhbmQgYGNoZWNrX2tmdW5jX2NhbGxgLiBCYXNpY2FsbHksIGlmIEkgdW5kZXJzdGFuZCB0aGlzIGNvcnJlY3RseSwgdGhlIHZlcmlmaWVyIGlzIG5vdyBlbnN1cmluZyB0aGF0IGlmIHRoZSBjYWxsaW5nIGNvbnRleHQgZG9lc24ndCBoYXZlIGBDQVBfUEVSRk1PTmAgb3IgYENBUF9TWVNfQURNSU5gIGFuZCBgZW52LVx1MDAzZWFsbG93X3B0cl9sZWFrc2AgaXMgKm5vdCogc2V0LCB0aGUgYEtGX1BFUkZNT05gIGZ1bmN0aW9ucyBvciByZWFkcyBmcm9tIGByZG9ubHlfdW50cnVzdGVkYCBtZW1vcnkgd2lsbCByZXN1bHQgaW4gYW4gYC1FUEVSTWAgZXJyb3IuIFRoYXQncyBhIGRpcmVjdCBzZWN1cml0eSBtZWFzdXJlIHRvIHJlc3RyaWN0IGFjY2Vzcy5cblxuTm93LCBteSBtaW5kIHN0YXJ0cyBnb2luZyB0aHJvdWdoIHRoZSB0eXBpY2FsIHNlY3VyaXR5IGF1ZGl0IHN0ZXBzLiBGaXJzdCwgbGV0J3MgcnVsZSBvdXQgc29tZSBwb3RlbnRpYWwgaXNzdWVzLiBEb2VzIHRoaXMgcGF0Y2ggaW50cm9kdWNlIG9yIG1vZGlmeSBhbnkga2VybmVsIHN0cnVjdHVyZXMgc2VudCB0byB1c2VyIHNwYWNlIHdoZXJlIHVuaW5pdGlhbGl6ZWQgZmllbGRzIGNvdWxkIGJlIGV4cG9zZWQ/IE5vLCB0aGUgcGF0Y2ggZG9lc24ndCBkbyB0aGF0LiBEb2VzIGl0IGNyZWF0ZSBhbnkgY29uZGl0aW9uYWwgbG9naWMgdGhhdCByZWxpZXMgb24gdW5pbml0aWFsaXplZCB2YXJpYWJsZXM/IE5vcGUsIHRoZSB2ZXJpZmllciBzdGF0ZSAoYHJkb25seV91bnRydXN0ZWRgLCBgbWV0YWAsIGFuZCBgZW52LVx1MDAzZWFsbG93X3B0cl9sZWFrc2ApIGFwcGVhcnMgdG8gYmUgZnVsbHkgaW5pdGlhbGl6ZWQuIEFueSBhbGxvY2F0aW9uIG9yIGluaXRpYWxpemF0aW9uIG9mIGNvbXBsZXggZGF0YSBzdHJ1Y3R1cmVzIHdpdGggdGhlIHBvdGVudGlhbCBmb3IgdW5pbml0aWFsaXplZCByZWFkcyBsYXRlcj8gTm8gc2lnbiBvZiB0aGF0IGhlcmUuIEZpbmFsbHksIGFyZSB0aGVyZSBhbnkgYm91bmRzIGNoZWNrIG1vZGlmaWNhdGlvbnMgdGhhdCBjb3VsZCBleHBvc2UgdW5pbml0aWFsaXplZCBieXRlcz8gQWdhaW4sIG5vLlxuXG5KdXN0IHRvIGJlIGFic29sdXRlbHkgY2VydGFpbiwgSSBuZWVkIHRvIGRvdWJsZS1jaGVjayB0aG9zZSB2ZXJpZmllciBmdW5jdGlvbnMuIE15IHBsYW4gaXMgdG8gZGlnIGludG8gYGtlcm5lbC9icGYvdmVyaWZpZXIuY2AgYXJvdW5kIGxpbmVzIDY0NTMgYW5kIDEzODQ5IHRvIGNvbmZpcm0gaG93IGBpc19rZnVuY19wZXJmbW9uKFx1MDAyNm1ldGEpYCBhbmQgYHJkb25seV91bnRydXN0ZWRgIGFyZSB1c2VkIGluIGNvbnRleHQuIEdvdHRhIG1ha2Ugc3VyZSB0aG9zZSBjaGVja3MgYXJlIHJvYnVzdC5cblxuSW4gY29uY2x1c2lvbiwgdGhpcyBsb29rcyBsaWtlIGEgc3RyYWlnaHRmb3J3YXJkIGFuZCB3ZWxsLXRhcmdldGVkIHNlY3VyaXR5IGhhcmRlbmluZyBwYXRjaC4gSXQncyBhIG5pY2UsIGZvY3VzZWQgaW1wcm92ZW1lbnQgaW4gQlBGIGtmdW5jIGFjY2VzcyBjb250cm9sLiBJdCB3aWxsIHJlc3RyaWN0IGNlcnRhaW4gQlBGIHByb2dyYW1zIHdoaWNoIGFyZW4ndCBjb25zaWRlcmVkIHN1ZmZpY2llbnRseSB0cnVzdGVkIGJ5IHRoZSBzeXN0ZW0uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjY3NTYsIk91dHB1dFRva2VucyI6MzMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo3MDYsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0xMFQxNjoxNzowMS43NzcxNTM0NDFaIiwiU2VxIjoyMCwiTmVzdGluZyI6MywiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjc4Mzc3MTk3LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInJkb25seV91bnRydXN0ZWRcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwia2VybmVsL2JwZi92ZXJpZmllci5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImtlcm5lbC9icGYvdmVyaWZpZXIuYz02MzgxPXN0YXRpYyBpbnQgY2hlY2tfbWVtX2FjY2VzcyhzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52LCBpbnQgaW5zbl9pZHgsIHN0cnVjdCBicGZfcmVnX3N0YXRlICpyZWcsIGFyZ25vX3QgYXJnbm8sXFxuLS1cXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtNjQzMi1cXHRcXHRib29sIHJkb25seV9tZW0gPSB0eXBlX2lzX3Jkb25seV9tZW0ocmVnLVxcdTAwM2V0eXBlKTtcXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6NjQzMzpcXHRcXHRib29sIHJkb25seV91bnRydXN0ZWQgPSByZG9ubHlfbWVtIFxcdTAwMjZcXHUwMDI2IChyZWctXFx1MDAzZXR5cGUgXFx1MDAyNiBQVFJfVU5UUlVTVEVEKTtcXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtNjQzNC1cXG4tLVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy02NDU1LVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYzo2NDU2OlxcdFxcdGlmIChyZG9ubHlfdW50cnVzdGVkIFxcdTAwMjZcXHUwMDI2ICFlbnYtXFx1MDAzZWFsbG93X3B0cl9sZWFrcykge1xcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy02NDU3LVxcdFxcdFxcdHZlcmJvc2UoZW52LCBcXFwiJXMgYWNjZXNzIGlzIGFsbG93ZWQgb25seSB0byBDQVBfUEVSRk1PTiBhbmQgQ0FQX1NZU19BRE1JTlxcXFxuXFxcIixcXG4tLVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy02NDY5LVxcdFxcdCAqL1xcbmtlcm5lbC9icGYvdmVyaWZpZXIuYzo2NDcwOlxcdFxcdGlmICghcmRvbmx5X3VudHJ1c3RlZClcXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtNjQ3MS1cXHRcXHRcXHRlcnIgPSBjaGVja19tZW1fcmVnaW9uX2FjY2VzcyhlbnYsIHJlZywgYXJnbm8sIG9mZiwgc2l6ZSxcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMTBUMTY6MTc6MDEuODU1NTM2MTM5WiIsIlNlcSI6MjEsIk5lc3RpbmciOjMsIlR5cGUiOiJsbG0iLCJOYW1lIjoia21zYW4tZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjY4NzIxMjM0ODQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlLCBwcmVzZW50ZWQgaW4gdGhlIGZpcnN0IHBlcnNvbjpcblxuKipDaGVja2luZyBgaXNfa2Z1bmNfcGVyZm1vbmAqKlxuXG5BbHJpZ2h0LCB0aW1lIHRvIGRpZyBpbi4gVGhlIGluaXRpYWwgdGhvdWdodCwgdGhlIHZlcnkgZmlyc3QgdGhpbmcgSSdtIHJlYWNoaW5nIGZvciwgaXMgdG8gaW1tZWRpYXRlbHkgY2hlY2sgdGhlIHN0YXRlIG9mIGBpc19rZnVuY19wZXJmbW9uYC4gVGhhdCdzICp0aGUqIGp1bXBpbmctb2ZmIHBvaW50LCBpc24ndCBpdD8gSXQgZGljdGF0ZXMgc28gbXVjaCBvZiB0aGUgcG90ZW50aWFsIGZvbGxvdy11cCBhbmFseXNpcy4gSXMgaXQgZW5hYmxlZD8gRGlzYWJsZWQ/IFdoYXQncyB0aGUgY3VycmVudCBjb25maWd1cmF0aW9uPyBVbmRlcnN0YW5kaW5nIHRoYXQgZmxhZyBpcyBwYXJhbW91bnQgYmVjYXVzZSBpdCBpbmZvcm1zIGV2ZXJ5dGhpbmcgZWxzZSB0aGF0IGZvbGxvd3MsIGluY2x1ZGluZyB3aGljaCBzdWJzZXF1ZW50IGNoZWNrcyBhcmUgcmVsZXZhbnQgYW5kIHdoYXQgc29ydCBvZiBwZXJmb3JtYW5jZSBkYXRhIEkgc2hvdWxkIGV4cGVjdCB0byBiZSBhY2Nlc3NpYmxlLiBLbm93aW5nIGl0cyBzdGF0ZSB3aWxsIGd1aWRlIG1lIG9uIHRoZSBtb3N0IGVmZmljaWVudCBwYXRoLiBJIG5lZWQgdG8ga25vdyBpbW1lZGlhdGVseSBpZiBwZXJmbW9uIGlzIGV2ZW4gYWN0aXZlIGZvciB0aGlzIGtmdW5jLCBvdGhlcndpc2UsIEknbSB3YXN0aW5nIG15IHRpbWUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjg0MzcsIk91dHB1dFRva2VucyI6MzUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0xMFQxNjoxNzowOC43Mjc2NjE1MDJaIiwiU2VxIjoyMiwiTmVzdGluZyI6MywiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ2MzEzMDczLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImlzX2tmdW5jX3BlcmZtb25cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwia2VybmVsL2JwZi92ZXJpZmllci5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImtlcm5lbC9icGYvdmVyaWZpZXIuYz0xMTM2ND1zdGF0aWMgYm9vbCBpc19rZnVuY19kZXN0cnVjdGl2ZShzdHJ1Y3QgYnBmX2NhbGxfYXJnX21ldGEgKm1ldGEpXFxuLS1cXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTEzNjgtXFxua2VybmVsL2JwZi92ZXJpZmllci5jOjExMzY5OnN0YXRpYyBib29sIGlzX2tmdW5jX3BlcmZtb24oc3RydWN0IGJwZl9jYWxsX2FyZ19tZXRhICptZXRhKVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xMTM3MC17XFxuLS1cXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM9MTM3NzA9c3RhdGljIGludCBjaGVja19rZnVuY19jYWxsKHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYsIHN0cnVjdCBicGZfaW5zbiAqaW5zbixcXG4tLVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xMzg1MS1cXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6MTM4NTI6XFx0aWYgKGlzX2tmdW5jX3BlcmZtb24oXFx1MDAyNm1ldGEpIFxcdTAwMjZcXHUwMDI2ICFlbnYtXFx1MDAzZWFsbG93X3B0cl9sZWFrcykge1xcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xMzg1My1cXHRcXHR2ZXJib3NlKGVudiwgXFxcIiVzIGlzIGFsbG93ZWQgb25seSB0byBDQVBfUEVSRk1PTiBhbmQgQ0FQX1NZU19BRE1JTlxcXFxuXFxcIixcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMTBUMTY6MTc6MDguNzczOTc4NjY0WiIsIlNlcSI6MjMsIk5lc3RpbmciOjMsIlR5cGUiOiJsbG0iLCJOYW1lIjoia21zYW4tZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjQyMzM0MjU3MTIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQXNzZXNzbWVudCBvZiB0aGUgQlBGIFZlcmlmaWVyIENoYW5nZSoqXG5cbk9rYXksIHRoaXMgbG9va3MgcHJldHR5IGNsZWFuLiBUaGUgcGF0Y2ggaXMgYWRkaW5nIGEgbmV3IGNoZWNrIGluIHRoZSBCUEYgdmVyaWZpZXIsIHNwZWNpZmljYWxseSBmb3Iga2Z1bmNzIHRoYXQgdG91Y2gga2VybmVsIG1lbW9yeSwgcG9zc2libHkgZXhwb3NpbmcgcG9pbnRlcnMgb3IgYWxsb3dpbmcgcmVhZC1vbmx5IGFjY2VzcyB0byB1bnRydXN0ZWQgbWVtb3J5IHNwYWNlcyDigJMgZXNzZW50aWFsbHkgYSBgS0ZfUEVSRk1PTmAgdGFnLiBUaGV54oCZcmUgYXBwbHlpbmcgdGhpcyB0YWcgdG8gc2V2ZXJhbCBleGlzdGluZyBrZnVuY3MuXG5cblRoZSBrZXkgdGhpbmcgaGVyZSwgZnJvbSBhIHNlY3VyaXR5IHN0YW5kcG9pbnQsIGlzIHRoYXQgdGhlcmUgYXJlIG5vIG9idmlvdXMgYXZlbnVlcyBmb3IgdW5pbml0aWFsaXplZCBtZW1vcnkgdG8gY3JlZXAgaW4uIEkndmUgcmV2aWV3ZWQgdGhlIGNvZGU7IHRoZXJlJ3Mgbm8gY29weWluZyBvZiB1bmluaXRpYWxpemVkIG1lbW9yeSB0byB1c2Vyc3BhY2UsIG5vIGluc3RhbmNlcyBvZiB1bmluaXRpYWxpemVkIHN0cnVjdHVyZXMgYmVpbmcgY29waWVkLCBhbmQgbm8gdmFyaWFibGVzIHRoYXQgZ2V0IHJlYWQgYmVmb3JlIGluaXRpYWxpemF0aW9uLiBObyBuZXcgbWVtb3J5IGFsbG9jYXRpb25zIGFyZSBoYXBwZW5pbmcgdGhhdCB3b3VsZCBpbnRyb2R1Y2UgdGhpcyByaXNrIGVpdGhlci5cblxuR2l2ZW4gYWxsIG9mIHRoaXMsIEknbSBjb25maWRlbnQgaW4gY2FsbGluZyBgTmVlZHNLTVNBTiA9IGZhbHNlYC4gV2UgY2FuIHByb2NlZWQgdG8gYHNldC1yZXN1bHRzYC4gSXQncyBhIHNvbGlkLCBmb2N1c2VkIGNoYW5nZSB3aXRoIGEgY2xlYXIgc2VjdXJpdHkgY29uc2lkZXJhdGlvbiwgYW5kIHRoZSB2ZXJpZmljYXRpb24gY2hlY2tzIGFwcGVhciBzb3VuZC5cblxuXG4iLCJJbnB1dFRva2VucyI6ODkzOCwiT3V0cHV0VG9rZW5zIjoxNTUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMjcsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMTBUMTY6MTc6MTMuMDA3NDA3NTQ2WiIsIlNlcSI6MjQsIk5lc3RpbmciOjMsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTU0OTAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJLTVNBTlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBpbnRyb2R1Y2VzIHRoZSBLRl9QRVJGTU9OIGtmdW5jIGZsYWcgYW5kIGVuZm9yY2VzIGNhcGFiaWxpdHkgY2hlY2tzIGluIHRoZSBCUEYgdmVyaWZpZXIgKHJlcXVpcmluZyBDQVBfUEVSRk1PTiAvIENBUF9TWVNfQURNSU4gdmlhIGVudi1cXHUwMDNlYWxsb3dfcHRyX2xlYWtzKSBmb3IgY2VydGFpbiBrZnVuY3MgYW5kIHVudHJ1c3RlZCByZWFkLW9ubHkgbWVtb3J5IGFjY2Vzc2VzLlxcblxcblRoZSBjaGFuZ2VzIGFyZSBlbnRpcmVseSByZXN0cmljdGVkIHRvIEJQRiB2ZXJpZmllciBhY2Nlc3MtY29udHJvbCBjaGVja3MgYW5kIGZsYWcgZGVmaW5pdGlvbnMuIFRoZXkgZG8gbm90IGFsdGVyIG1lbW9yeSBpbml0aWFsaXphdGlvbiwgZG8gbm90IGludHJvZHVjZSBvciBjb3B5IHVuaW5pdGlhbGl6ZWQgZGF0YSBzdHJ1Y3R1cmVzIHRvIHVzZXIgc3BhY2UsIGFuZCBkbyBub3QgaW50cm9kdWNlIGxvZ2ljIHRoYXQgYnJhbmNoZXMgb24gdW5pbml0aWFsaXplZCBtZW1vcnkuIFRodXMsIHRoZXJlIGFyZSBubyB1bmluaXRpYWxpemVkIG1lbW9yeSByaXNrcyB0aGF0IHJlcXVpcmUgYSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uLlwiLFxuICBcIk5lZWRzS01TQU5cIjogZmFsc2Vcbn0iLCJSZXN1bHRzIjoie1xuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGludHJvZHVjZXMgdGhlIEtGX1BFUkZNT04ga2Z1bmMgZmxhZyBhbmQgZW5mb3JjZXMgY2FwYWJpbGl0eSBjaGVja3MgaW4gdGhlIEJQRiB2ZXJpZmllciAocmVxdWlyaW5nIENBUF9QRVJGTU9OIC8gQ0FQX1NZU19BRE1JTiB2aWEgZW52LVxcdTAwM2VhbGxvd19wdHJfbGVha3MpIGZvciBjZXJ0YWluIGtmdW5jcyBhbmQgdW50cnVzdGVkIHJlYWQtb25seSBtZW1vcnkgYWNjZXNzZXMuXFxuXFxuVGhlIGNoYW5nZXMgYXJlIGVudGlyZWx5IHJlc3RyaWN0ZWQgdG8gQlBGIHZlcmlmaWVyIGFjY2Vzcy1jb250cm9sIGNoZWNrcyBhbmQgZmxhZyBkZWZpbml0aW9ucy4gVGhleSBkbyBub3QgYWx0ZXIgbWVtb3J5IGluaXRpYWxpemF0aW9uLCBkbyBub3QgaW50cm9kdWNlIG9yIGNvcHkgdW5pbml0aWFsaXplZCBkYXRhIHN0cnVjdHVyZXMgdG8gdXNlciBzcGFjZSwgYW5kIGRvIG5vdCBpbnRyb2R1Y2UgbG9naWMgdGhhdCBicmFuY2hlcyBvbiB1bmluaXRpYWxpemVkIG1lbW9yeS4gVGh1cywgdGhlcmUgYXJlIG5vIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHJpc2tzIHRoYXQgcmVxdWlyZSBhIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24uXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLmR1cmF0aW9uIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnTGxtVG9rZW4gPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS50b2tlbnMgLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdUb29sRHVyID0gc3RhdHMudG9vbC5jb3VudCA+IDAgPyAoc3RhdHMudG9vbC5kdXJhdGlvbiAvIHN0YXRzLnRvb2wuY291bnQpLnRvRml4ZWQoMikgOiAwOwoKCQkJY29uc3QgbGxtU3VtYXJ5Q2VsbHMgPSBbc3RhdHMubGxtLmNvdW50LCBzdGF0cy5sbG0udG9rZW5zLCBhdmdMbG1Ub2tlbiwgc3RhdHMubGxtLmR1cmF0aW9uLCBhdmdMbG1EdXJdOwoJCQljb25zdCB0b29sU3VtbWFyeUNlbGxzID0gW3N0YXRzLnRvb2wuY291bnQsIHN0YXRzLnRvb2wuZHVyYXRpb24sIGF2Z1Rvb2xEdXJdOwoKCQkJY29uc3QgbGxtU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbGxtX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQlsbG1TdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgbGxtVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQlsbG1TdW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJbGxtVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJbGxtU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQobGxtVHIpOwoKCQkJY29uc3QgdG9vbFN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rvb2xfc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgdG9vbFRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJdG9vbFN1bW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJdG9vbFRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZCh0b29sVHIpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBmaWx0ZXJlZFN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBbImxsbSIsICJ0b29sIl0uaW5jbHVkZXMoZC5UeXBlKSk7CgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ0R1cmF0aW9uJyk7CgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7IAoKCQkJZmlsdGVyZWRTdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJCgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsKCQkJCWxldCB0b29sdGlwID0gcy5OYW1lOwoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIgJiYgcy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoJCQkJZGF0YS5hZGRSb3coW2Ake3MuU2VxfWAsIGR1ciwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1RpbWUgQ29uc3VtcHRpb24gb2YgTExNL1Rvb2wgQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTS9Ub29sIFN0ZXBzJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ1NlY29uZHMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2R1cmF0aW9uX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBsbG1TdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gZC5UeXBlID09PSAibGxtIik7CgkJCWlmIChsbG1TdGVwcy5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwkJCQoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ1Rva2VucycpOwkJCQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICdzdHlsZSd9KTsJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7CQoKCQkJY29uc3QgYWdlbnRDb2xvcnMgPSB7fTsKCQkJY29uc3QgcGFsZXR0ZSA9IFsnIzQyODVGNCcsICcjREI0NDM3JywgJyNGNEI0MDAnLCAnIzBGOUQ1OCcsICcjQUI0N0JDJywgJyMwMEFDQzEnXTsKCQkJbGV0IGNvbG9ySWR4ID0gMDsKCQkJY29uc3QgYWdlbnRMTE1Db3VudHMgPSB7fTsKCQkJbGxtU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCWlmICghYWdlbnRDb2xvcnNbcy5OYW1lXSkgewoJCQkJCWFnZW50Q29sb3JzW3MuTmFtZV0gPSBwYWxldHRlW2NvbG9ySWR4ICUgcGFsZXR0ZS5sZW5ndGhdOwoJCQkJCWNvbG9ySWR4Kys7CgkJCQl9CgoJCQkJYWdlbnRMTE1Db3VudHNbcy5OYW1lXSA9IChhZ2VudExMTUNvdW50c1tzLk5hbWVdIHx8IDApICsgMTsKCQkJCWNvbnN0IGxhYmVsID0gYCR7cy5OYW1lfS0ke2FnZW50TExNQ291bnRzW3MuTmFtZV19YDsKCQkJCWNvbnN0IHRvdGFsVG9rZW5zID0gcy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2VuczsKCQkJCWNvbnN0IHN0eWxlID0gYGNvbG9yOiAke2FnZW50Q29sb3JzW3MuTmFtZV19YDsKCQkJCWxldCB0b29sdGlwID0gYFRvdGFsIFRva2VuczogJHt0b3RhbFRva2Vuc31cbihJbjogJHtzLklucHV0VG9rZW5zfSwgT3V0OiAke3MuT3V0cHV0VG9rZW5zfSwgVGhvdWdodHM6ICR7cy5PdXRwdXRUaG91Z2h0c1Rva2Vuc30pYDsKCQkJCWlmIChzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgoJCQkJZGF0YS5hZGRSb3coW2xhYmVsLCB0b3RhbFRva2Vucywgc3R5bGUsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUb2tlbiBDb25zdW1wdGlvbiBieSBMTE0gQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTSBDYWxsIFNlcXVlbmNlJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ0NvbnN1bWVkIFRva2VucycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9rZW5fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCQlsZXQgYWxsRXhwYW5kZWQgPSBmYWxzZTsKCQlmdW5jdGlvbiB0b2dnbGVBbGxEZXRhaWxzKCkgewoJCQlhbGxFeHBhbmRlZCA9ICFhbGxFeHBhbmRlZDsKCQkJZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnZGV0YWlscycpLmZvckVhY2goZCA9PiB7CgkJCQlpZiAoYWxsRXhwYW5kZWQpIGQuc2V0QXR0cmlidXRlKCdvcGVuJywgJycpOwoJCQkJZWxzZSBkLnJlbW92ZUF0dHJpYnV0ZSgnb3BlbicpOwoJCQl9KTsKCQl9Cgk8L3NjcmlwdD4KCgo8L2JvZHk+CjwvaHRtbD4K" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowwwtg6[0].run-triage(0) Phase: Succeeded StartedAt: 2026-09-10 16:14:08 +0000 UTC FinishedAt: 2026-09-10 16:17:14 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "bpf", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git", "commit_hash": "e4a62833adff6ef0fe7c0b90393204fe3c26b5c5", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "BPF_SYSCALL", "BPF_EVENTS" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "bpf", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git", "commit_hash": "e4a62833adff6ef0fe7c0b90393204fe3c26b5c5", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "BPF_SYSCALL", "BPF_EVENTS" ], "series_id": "ce442b8d-4868-46a3-8d35-6f7f39f3cf22" }, "track": "KASAN", "fuzz": { "focus": [ "bpf" ], "focus_symbols": [ "check_kfunc_call", "check_mem_access" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-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+CgkJCTx0ZD4yMDI2LzA5LzEwIDE2OjE1PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0JQRl9TWVNDQUxMJiMzNDssCiAgICAmIzM0O0JQRl9FVkVOVFMmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtjaGVja19rZnVuY19jYWxsJiMzNDssCiAgICAmIzM0O2NoZWNrX21lbV9hY2Nlc3MmIzM0OwogIF0sCiAgJiMzNDtLTVNBTlJlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBpbnRyb2R1Y2VzIHRoZSBLRl9QRVJGTU9OIGtmdW5jIGZsYWcgYW5kIGVuZm9yY2VzIGNhcGFiaWxpdHkgY2hlY2tzIGluIHRoZSBCUEYgdmVyaWZpZXIgKHJlcXVpcmluZyBDQVBfUEVSRk1PTiAvIENBUF9TWVNfQURNSU4gdmlhIGVudi1cdTAwM2VhbGxvd19wdHJfbGVha3MpIGZvciBjZXJ0YWluIGtmdW5jcyBhbmQgdW50cnVzdGVkIHJlYWQtb25seSBtZW1vcnkgYWNjZXNzZXMuXG5cblRoZSBjaGFuZ2VzIGFyZSBlbnRpcmVseSByZXN0cmljdGVkIHRvIEJQRiB2ZXJpZmllciBhY2Nlc3MtY29udHJvbCBjaGVja3MgYW5kIGZsYWcgZGVmaW5pdGlvbnMuIFRoZXkgZG8gbm90IGFsdGVyIG1lbW9yeSBpbml0aWFsaXphdGlvbiwgZG8gbm90IGludHJvZHVjZSBvciBjb3B5IHVuaW5pdGlhbGl6ZWQgZGF0YSBzdHJ1Y3R1cmVzIHRvIHVzZXIgc3BhY2UsIGFuZCBkbyBub3QgaW50cm9kdWNlIGxvZ2ljIHRoYXQgYnJhbmNoZXMgb24gdW5pbml0aWFsaXplZCBtZW1vcnkuIFRodXMsIHRoZXJlIGFyZSBubyB1bmluaXRpYWxpemVkIG1lbW9yeSByaXNrcyB0aGF0IHJlcXVpcmUgYSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uLiYjMzQ7LAogICYjMzQ7TmVlZHNLTVNBTiYjMzQ7OiBmYWxzZSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBpbnRyb2R1Y2VzIGEgbmV3IEtGX1BFUkZNT04ga2Z1bmMgZmxhZyBhbmQgZW5mb3JjZXMgQ0FQX1BFUkZNT04vQ0FQX1NZU19BRE1JTiBwZXJtaXNzaW9uIGNoZWNrcyBpbiB0aGUgQlBGIHZlcmlmaWVyIChjaGVja19rZnVuY19jYWxsIGFuZCBjaGVja19tZW1fYWNjZXNzKS4gU2luY2UgdGhlc2UgY2hhbmdlcyBtb2RpZnkgcmVhY2hhYmxlIEJQRiB2ZXJpZmllciBsb2dpYyBleGVjdXRlZCBkdXJpbmcgQlBGIHByb2dyYW0gdmVyaWZpY2F0aW9uIHZpYSBzeXNfYnBmLCB0aGV5IHdhcnJhbnQgZnV6emluZy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMCAxNjoxNTwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IDQ3NTQ3ZWU3YTU0MDkyM2U2MjE5ZjQ1YmQ4YjI2ZTI5ZGE4YzFmNTBcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgVGh1IFNlcCAxMCAxNjoxNTo0MiAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2JwZi9rZnVuY3MucnN0IGIvRG9jdW1lbnRhdGlvbi9icGYva2Z1bmNzLnJzdFxuaW5kZXggODVmNzNlMGJiZDBmZi4uNjY5MWZlOGEzMmMzZCAxMDA2NDRcbi0tLSBhL0RvY3VtZW50YXRpb24vYnBmL2tmdW5jcy5yc3RcbiYjNDM7JiM0MzsmIzQzOyBiL0RvY3VtZW50YXRpb24vYnBmL2tmdW5jcy5yc3RcbkBAIC00ODYsNiAmIzQzOzQ4NiwxNiBAQCBFeGFtcGxlIHVzYWdlIGluIEJQRiBwcm9ncmFtOlxuIFx0Lyogbm90ZSB0aGF0IHRoZSBsYXN0IGFyZ3VtZW50IGlzIG9taXR0ZWQgKi9cbiAgICAgICAgIGJwZl90YXNrX3dvcmtfc2NoZWR1bGVfc2lnbmFsKHRhc2ssIFx1MDAyNndvcmstXHUwMDNldHcsIFx1MDAyNmFycm1hcCwgdGFza193b3JrX2NhbGxiYWNrKTtcbiBcbiYjNDM7Mi41LjEwIEtGX1BFUkZNT04gZmxhZ1xuJiM0MzstLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4mIzQzO1xuJiM0MztUaGUgS0ZfUEVSRk1PTiBmbGFnIGlzIHVzZWQgZm9yIGtmdW5jcyB0aGF0IGNhbiBleHBvc2Uga2VybmVsIG1lbW9yeSBvciBrZXJuZWxcbiYjNDM7YWRkcmVzc2VzIHRvIHRoZSBCUEYgcHJvZ3JhbSwgZm9yIGV4YW1wbGUgYnkgcmVhZGluZyB0aHJvdWdoIGEgcG9pbnRlciB0aGF0IHRoZVxuJiM0Mzt2ZXJpZmllciBkb2VzIG5vdCBjaGVjay4gQ2FsbGluZyBzdWNoIGEga2Z1bmMgcmVxdWlyZXMgQ0FQX1BFUkZNT04sIG9yXG4mIzQzO0NBUF9TWVNfQURNSU4sIGluIHRoZSBzYW1lIHdheSB0aGF0IHRoZSBlcXVpdmFsZW50IEJQRiBoZWxwZXJzIGFyZSBnYXRlZCBpblxuJiM0MzticGZfYmFzZV9mdW5jX3Byb3RvKCkuIEEgcHJvZ3JhbSBsb2FkZWQgd2l0aCBDQVBfQlBGIGFsb25lIGlzIHJlamVjdGVkIGF0IGxvYWRcbiYjNDM7dGltZS5cbiYjNDM7XG4gMi42IFJlZ2lzdGVyaW5nIHRoZSBrZnVuY3NcbiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuIFxuZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgvYnRmLmggYi9pbmNsdWRlL2xpbnV4L2J0Zi5oXG5pbmRleCA4OWQ1YTVjNGYxMTcxLi43YzYyZWExN2IxMTYzIDEwMDY0NFxuLS0tIGEvaW5jbHVkZS9saW51eC9idGYuaFxuJiM0MzsmIzQzOyYjNDM7IGIvaW5jbHVkZS9saW51eC9idGYuaFxuQEAgLTgwLDYgJiM0Mzs4MCw3IEBAXG4gI2RlZmluZSBLRl9BUkVOQV9BUkcyICAgKDEgXHUwMDNjXHUwMDNjIDE1KSAvKiBrZnVuYyB0YWtlcyBhbiBhcmVuYSBwb2ludGVyIGFzIGl0cyBzZWNvbmQgYXJndW1lbnQgKi9cbiAjZGVmaW5lIEtGX0lNUExJQ0lUX0FSR1MgKDEgXHUwMDNjXHUwMDNjIDE2KSAvKiBrZnVuYyBoYXMgaW1wbGljaXQgYXJndW1lbnRzIHN1cHBsaWVkIGJ5IHRoZSB2ZXJpZmllciAqL1xuICNkZWZpbmUgS0ZfU1BJTkxPQ0tfU0FGRSAoMSBcdTAwM2NcdTAwM2MgMTcpIC8qIGtmdW5jIGlzIGFsbG93ZWQgaW5zaWRlIGJwZl9zcGluX2xvY2stZWQgcmVnaW9uICovXG4mIzQzOyNkZWZpbmUgS0ZfUEVSRk1PTiAgICAgICgxIFx1MDAzY1x1MDAzYyAxOCkgLyoga2Z1bmMgcmVxdWlyZXMgQ0FQX1BFUkZNT04gKi9cbiBcbiAvKlxuICAqIFRhZyBtYXJraW5nIGEga2VybmVsIGZ1bmN0aW9uIGFzIGEga2Z1bmMuIFRoaXMgaXMgbWVhbnQgdG8gbWluaW1pemUgdGhlXG5kaWZmIC0tZ2l0IGEva2VybmVsL2JwZi9oZWxwZXJzLmMgYi9rZXJuZWwvYnBmL2hlbHBlcnMuY1xuaW5kZXggYjNjYzVjOGZjODc1Ni4uOGEwZWViNGY2MjM2ZCAxMDA2NDRcbi0tLSBhL2tlcm5lbC9icGYvaGVscGVycy5jXG4mIzQzOyYjNDM7JiM0MzsgYi9rZXJuZWwvYnBmL2hlbHBlcnMuY1xuQEAgLTQ4ODMsNyAmIzQzOzQ4ODMsNyBAQCBCVEZfSUQoZnVuYywgYnBmX2Nncm91cF9yZWxlYXNlX2R0b3IpXG4gXG4gQlRGX0tGVU5DU19TVEFSVChjb21tb25fYnRmX2lkcylcbiBCVEZfSURfRkxBR1MoZnVuYywgYnBmX2Nhc3RfdG9fa2Vybl9jdHgsIEtGX0ZBU1RDQUxMKVxuLUJURl9JRF9GTEFHUyhmdW5jLCBicGZfcmRvbmx5X2Nhc3QsIEtGX0ZBU1RDQUxMKVxuJiM0MztCVEZfSURfRkxBR1MoZnVuYywgYnBmX3Jkb25seV9jYXN0LCBLRl9GQVNUQ0FMTCB8IEtGX1BFUkZNT04pXG4gQlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl9yY3VfcmVhZF9sb2NrKVxuIEJURl9JRF9GTEFHUyhmdW5jLCBicGZfcmN1X3JlYWRfdW5sb2NrKVxuIEJURl9JRF9GTEFHUyhmdW5jLCBicGZfZHlucHRyX3NsaWNlLCBLRl9SRVRfTlVMTClcbkBAIC00OTIwLDExICYjNDM7NDkyMCwxMSBAQCBCVEZfSURfRkxBR1MoZnVuYywgYnBmX3dxX3NldF9jYWxsYmFjaywgS0ZfSU1QTElDSVRfQVJHUylcbiBCVEZfSURfRkxBR1MoZnVuYywgYnBmX3dxX3N0YXJ0KVxuIEJURl9JRF9GTEFHUyhmdW5jLCBicGZfcHJlZW1wdF9kaXNhYmxlKVxuIEJURl9JRF9GTEFHUyhmdW5jLCBicGZfcHJlZW1wdF9lbmFibGUpXG4tQlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl9pdGVyX2JpdHNfbmV3LCBLRl9JVEVSX05FVylcbiYjNDM7QlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl9pdGVyX2JpdHNfbmV3LCBLRl9JVEVSX05FVyB8IEtGX1BFUkZNT04pXG4gQlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl9pdGVyX2JpdHNfbmV4dCwgS0ZfSVRFUl9ORVhUIHwgS0ZfUkVUX05VTEwpXG4gQlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl9pdGVyX2JpdHNfZGVzdHJveSwgS0ZfSVRFUl9ERVNUUk9ZKVxuLUJURl9JRF9GTEFHUyhmdW5jLCBicGZfY29weV9mcm9tX3VzZXJfc3RyLCBLRl9TTEVFUEFCTEUpXG4tQlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl9jb3B5X2Zyb21fdXNlcl90YXNrX3N0ciwgS0ZfU0xFRVBBQkxFKVxuJiM0MztCVEZfSURfRkxBR1MoZnVuYywgYnBmX2NvcHlfZnJvbV91c2VyX3N0ciwgS0ZfU0xFRVBBQkxFIHwgS0ZfUEVSRk1PTilcbiYjNDM7QlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl9jb3B5X2Zyb21fdXNlcl90YXNrX3N0ciwgS0ZfU0xFRVBBQkxFIHwgS0ZfUEVSRk1PTilcbiBCVEZfSURfRkxBR1MoZnVuYywgYnBmX2dldF9rbWVtX2NhY2hlKVxuIEJURl9JRF9GTEFHUyhmdW5jLCBicGZfaXRlcl9rbWVtX2NhY2hlX25ldywgS0ZfSVRFUl9ORVcgfCBLRl9TTEVFUEFCTEUpXG4gQlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl9pdGVyX2ttZW1fY2FjaGVfbmV4dCwgS0ZfSVRFUl9ORVhUIHwgS0ZfUkVUX05VTEwgfCBLRl9TTEVFUEFCTEUpXG5AQCAtNDkzMiwxNCAmIzQzOzQ5MzIsMTQgQEAgQlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl9pdGVyX2ttZW1fY2FjaGVfZGVzdHJveSwgS0ZfSVRFUl9ERVNUUk9ZIHwgS0ZfU0xFRVBBQkxFKVxuIEJURl9JRF9GTEFHUyhmdW5jLCBicGZfbG9jYWxfaXJxX3NhdmUpXG4gQlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl9sb2NhbF9pcnFfcmVzdG9yZSlcbiAjaWZkZWYgQ09ORklHX0JQRl9FVkVOVFNcbi1CVEZfSURfRkxBR1MoZnVuYywgYnBmX3Byb2JlX3JlYWRfdXNlcl9keW5wdHIpXG4tQlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl9wcm9iZV9yZWFkX2tlcm5lbF9keW5wdHIpXG4tQlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl9wcm9iZV9yZWFkX3VzZXJfc3RyX2R5bnB0cilcbi1CVEZfSURfRkxBR1MoZnVuYywgYnBmX3Byb2JlX3JlYWRfa2VybmVsX3N0cl9keW5wdHIpXG4tQlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl9jb3B5X2Zyb21fdXNlcl9keW5wdHIsIEtGX1NMRUVQQUJMRSlcbi1CVEZfSURfRkxBR1MoZnVuYywgYnBmX2NvcHlfZnJvbV91c2VyX3N0cl9keW5wdHIsIEtGX1NMRUVQQUJMRSlcbi1CVEZfSURfRkxBR1MoZnVuYywgYnBmX2NvcHlfZnJvbV91c2VyX3Rhc2tfZHlucHRyLCBLRl9TTEVFUEFCTEUpXG4tQlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl9jb3B5X2Zyb21fdXNlcl90YXNrX3N0cl9keW5wdHIsIEtGX1NMRUVQQUJMRSlcbiYjNDM7QlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl9wcm9iZV9yZWFkX3VzZXJfZHlucHRyLCBLRl9QRVJGTU9OKVxuJiM0MztCVEZfSURfRkxBR1MoZnVuYywgYnBmX3Byb2JlX3JlYWRfa2VybmVsX2R5bnB0ciwgS0ZfUEVSRk1PTilcbiYjNDM7QlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl9wcm9iZV9yZWFkX3VzZXJfc3RyX2R5bnB0ciwgS0ZfUEVSRk1PTilcbiYjNDM7QlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl9wcm9iZV9yZWFkX2tlcm5lbF9zdHJfZHlucHRyLCBLRl9QRVJGTU9OKVxuJiM0MztCVEZfSURfRkxBR1MoZnVuYywgYnBmX2NvcHlfZnJvbV91c2VyX2R5bnB0ciwgS0ZfU0xFRVBBQkxFIHwgS0ZfUEVSRk1PTilcbiYjNDM7QlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl9jb3B5X2Zyb21fdXNlcl9zdHJfZHlucHRyLCBLRl9TTEVFUEFCTEUgfCBLRl9QRVJGTU9OKVxuJiM0MztCVEZfSURfRkxBR1MoZnVuYywgYnBmX2NvcHlfZnJvbV91c2VyX3Rhc2tfZHlucHRyLCBLRl9TTEVFUEFCTEUgfCBLRl9QRVJGTU9OKVxuJiM0MztCVEZfSURfRkxBR1MoZnVuYywgYnBmX2NvcHlfZnJvbV91c2VyX3Rhc2tfc3RyX2R5bnB0ciwgS0ZfU0xFRVBBQkxFIHwgS0ZfUEVSRk1PTilcbiAjZW5kaWZcbiAjaWZkZWYgQ09ORklHX0RNQV9TSEFSRURfQlVGRkVSXG4gQlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl9pdGVyX2RtYWJ1Zl9uZXcsIEtGX0lURVJfTkVXIHwgS0ZfU0xFRVBBQkxFKVxuQEAgLTQ5NDcsMjYgJiM0Mzs0OTQ3LDI2IEBAIEJURl9JRF9GTEFHUyhmdW5jLCBicGZfaXRlcl9kbWFidWZfbmV4dCwgS0ZfSVRFUl9ORVhUIHwgS0ZfUkVUX05VTEwgfCBLRl9TTEVFUEFCXG4gQlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl9pdGVyX2RtYWJ1Zl9kZXN0cm95LCBLRl9JVEVSX0RFU1RST1kgfCBLRl9TTEVFUEFCTEUpXG4gI2VuZGlmXG4gQlRGX0lEX0ZMQUdTKGZ1bmMsIF9fYnBmX3RyYXApXG4tQlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl9zdHJjbXApO1xuLUJURl9JRF9GTEFHUyhmdW5jLCBicGZfc3RyY2FzZWNtcCk7XG4tQlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl9zdHJuY2FzZWNtcCk7XG4tQlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl9zdHJjaHIpO1xuLUJURl9JRF9GTEFHUyhmdW5jLCBicGZfc3RyY2hybnVsKTtcbi1CVEZfSURfRkxBR1MoZnVuYywgYnBmX3N0cm5jaHIpO1xuLUJURl9JRF9GTEFHUyhmdW5jLCBicGZfc3RycmNocik7XG4tQlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl9zdHJsZW4pO1xuLUJURl9JRF9GTEFHUyhmdW5jLCBicGZfc3Rybmxlbik7XG4tQlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl9zdHJzcG4pO1xuLUJURl9JRF9GTEFHUyhmdW5jLCBicGZfc3RyY3Nwbik7XG4tQlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl9zdHJzdHIpO1xuLUJURl9JRF9GTEFHUyhmdW5jLCBicGZfc3RyY2FzZXN0cik7XG4tQlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl9zdHJuc3RyKTtcbi1CVEZfSURfRkxBR1MoZnVuYywgYnBmX3N0cm5jYXNlc3RyKTtcbiYjNDM7QlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl9zdHJjbXAsIEtGX1BFUkZNT04pO1xuJiM0MztCVEZfSURfRkxBR1MoZnVuYywgYnBmX3N0cmNhc2VjbXAsIEtGX1BFUkZNT04pO1xuJiM0MztCVEZfSURfRkxBR1MoZnVuYywgYnBmX3N0cm5jYXNlY21wLCBLRl9QRVJGTU9OKTtcbiYjNDM7QlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl9zdHJjaHIsIEtGX1BFUkZNT04pO1xuJiM0MztCVEZfSURfRkxBR1MoZnVuYywgYnBmX3N0cmNocm51bCwgS0ZfUEVSRk1PTik7XG4mIzQzO0JURl9JRF9GTEFHUyhmdW5jLCBicGZfc3RybmNociwgS0ZfUEVSRk1PTik7XG4mIzQzO0JURl9JRF9GTEFHUyhmdW5jLCBicGZfc3RycmNociwgS0ZfUEVSRk1PTik7XG4mIzQzO0JURl9JRF9GTEFHUyhmdW5jLCBicGZfc3RybGVuLCBLRl9QRVJGTU9OKTtcbiYjNDM7QlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl9zdHJubGVuLCBLRl9QRVJGTU9OKTtcbiYjNDM7QlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl9zdHJzcG4sIEtGX1BFUkZNT04pO1xuJiM0MztCVEZfSURfRkxBR1MoZnVuYywgYnBmX3N0cmNzcG4sIEtGX1BFUkZNT04pO1xuJiM0MztCVEZfSURfRkxBR1MoZnVuYywgYnBmX3N0cnN0ciwgS0ZfUEVSRk1PTik7XG4mIzQzO0JURl9JRF9GTEFHUyhmdW5jLCBicGZfc3RyY2FzZXN0ciwgS0ZfUEVSRk1PTik7XG4mIzQzO0JURl9JRF9GTEFHUyhmdW5jLCBicGZfc3RybnN0ciwgS0ZfUEVSRk1PTik7XG4mIzQzO0JURl9JRF9GTEFHUyhmdW5jLCBicGZfc3RybmNhc2VzdHIsIEtGX1BFUkZNT04pO1xuICNpZiBkZWZpbmVkKENPTkZJR19CUEZfTFNNKSBcdTAwMjZcdTAwMjYgZGVmaW5lZChDT05GSUdfQ0dST1VQUylcbiBCVEZfSURfRkxBR1MoZnVuYywgYnBmX2Nncm91cF9yZWFkX3hhdHRyLCBLRl9SQ1UpXG4gI2VuZGlmXG4tQlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl9zdHJlYW1fdnByaW50aywgS0ZfSU1QTElDSVRfQVJHUyB8IEtGX1NQSU5MT0NLX1NBRkUpXG4tQlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl9zdHJlYW1fcHJpbnRfc3RhY2ssIEtGX0lNUExJQ0lUX0FSR1MgfCBLRl9TUElOTE9DS19TQUZFKVxuJiM0MztCVEZfSURfRkxBR1MoZnVuYywgYnBmX3N0cmVhbV92cHJpbnRrLCBLRl9JTVBMSUNJVF9BUkdTIHwgS0ZfU1BJTkxPQ0tfU0FGRSB8IEtGX1BFUkZNT04pXG4mIzQzO0JURl9JRF9GTEFHUyhmdW5jLCBicGZfc3RyZWFtX3ByaW50X3N0YWNrLCBLRl9JTVBMSUNJVF9BUkdTIHwgS0ZfU1BJTkxPQ0tfU0FGRSB8IEtGX1BFUkZNT04pXG4gQlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl90YXNrX3dvcmtfc2NoZWR1bGVfc2lnbmFsLCBLRl9JTVBMSUNJVF9BUkdTKVxuIEJURl9JRF9GTEFHUyhmdW5jLCBicGZfdGFza193b3JrX3NjaGVkdWxlX3Jlc3VtZSwgS0ZfSU1QTElDSVRfQVJHUylcbiBCVEZfSURfRkxBR1MoZnVuYywgYnBmX2R5bnB0cl9mcm9tX2ZpbGUpXG5kaWZmIC0tZ2l0IGEva2VybmVsL2JwZi92ZXJpZmllci5jIGIva2VybmVsL2JwZi92ZXJpZmllci5jXG5pbmRleCA3MmEzZjU5OThkZDI3Li4zNjkyM2NlMDQyNzM0IDEwMDY0NFxuLS0tIGEva2VybmVsL2JwZi92ZXJpZmllci5jXG4mIzQzOyYjNDM7JiM0MzsgYi9rZXJuZWwvYnBmL3ZlcmlmaWVyLmNcbkBAIC02NDUzLDYgJiM0Mzs2NDUzLDE2IEBAIHN0YXRpYyBpbnQgY2hlY2tfbWVtX2FjY2VzcyhzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52LCBpbnQgaW5zbl9pZHgsIHN0cnVjdCBiXG4gXHRcdFx0cmV0dXJuIC1FQUNDRVM7XG4gXHRcdH1cbiBcbiYjNDM7XHRcdGlmIChyZG9ubHlfdW50cnVzdGVkIFx1MDAyNlx1MDAyNiAhZW52LVx1MDAzZWFsbG93X3B0cl9sZWFrcykge1xuJiM0MztcdFx0XHR2ZXJib3NlKGVudiwgXCYjMzQ7JXMgYWNjZXNzIGlzIGFsbG93ZWQgb25seSB0byBDQVBfUEVSRk1PTiBhbmQgQ0FQX1NZU19BRE1JTlxcblwmIzM0OyxcbiYjNDM7XHRcdFx0XHRyZWdfdHlwZV9zdHIoZW52LCByZWctXHUwMDNldHlwZSkpO1xuJiM0MztcdFx0XHRicGZfZGlhZ19wb2xpY3koXG4mIzQzO1x0XHRcdFx0ZW52LCBpbnNuX2lkeCwgXCYjMzQ7cmVhZCBmcm9tIHVudHJ1c3RlZCByZWFkLW9ubHkgbWVtb3J5XCYjMzQ7LFxuJiM0MztcdFx0XHRcdFwmIzM0O3RoZSBhY2Nlc3MgcmVxdWlyZXMgQ0FQX1BFUkZNT05cJiMzNDssXG4mIzQzO1x0XHRcdFx0XCYjMzQ7TG9hZCB0aGUgcHJvZ3JhbSB3aXRoIENBUF9QRVJGTU9OLCBvciBhdm9pZCBkZXJlZmVyZW5jaW5nIHVudHJ1c3RlZCBwb2ludGVycy5cJiMzNDspO1xuJiM0MztcdFx0XHRyZXR1cm4gLUVQRVJNO1xuJiM0MztcdFx0fVxuJiM0MztcbiBcdFx0LypcbiBcdFx0ICogQWNjZXNzZXMgdG8gdW50cnVzdGVkIFBUUl9UT19NRU0gYXJlIGRvbmUgdGhyb3VnaCBwcm9iZVxuIFx0XHQgKiBpbnN0cnVjdGlvbnMsIGhlbmNlIG5vIG5lZWQgdG8gY2hlY2sgYm91bmRzIGluIHRoYXQgY2FzZS5cbkBAIC0xMTM1Niw2ICYjNDM7MTEzNjYsMTEgQEAgc3RhdGljIGJvb2wgaXNfa2Z1bmNfZGVzdHJ1Y3RpdmUoc3RydWN0IGJwZl9jYWxsX2FyZ19tZXRhICptZXRhKVxuIFx0cmV0dXJuIG1ldGEtXHUwMDNla2Z1bmNfZmxhZ3MgXHUwMDI2IEtGX0RFU1RSVUNUSVZFO1xuIH1cbiBcbiYjNDM7c3RhdGljIGJvb2wgaXNfa2Z1bmNfcGVyZm1vbihzdHJ1Y3QgYnBmX2NhbGxfYXJnX21ldGEgKm1ldGEpXG4mIzQzO3tcbiYjNDM7XHRyZXR1cm4gbWV0YS1cdTAwM2VrZnVuY19mbGFncyBcdTAwMjYgS0ZfUEVSRk1PTjtcbiYjNDM7fVxuJiM0MztcbiBzdGF0aWMgYm9vbCBpc19rZnVuY19yY3Uoc3RydWN0IGJwZl9jYWxsX2FyZ19tZXRhICptZXRhKVxuIHtcbiBcdHJldHVybiBtZXRhLVx1MDAzZWtmdW5jX2ZsYWdzIFx1MDAyNiBLRl9SQ1U7XG5AQCAtMTM4MzQsNiAmIzQzOzEzODQ5LDE2IEBAIHN0YXRpYyBpbnQgY2hlY2tfa2Z1bmNfY2FsbChzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52LCBzdHJ1Y3QgYnBmX2luc24gKmluc24sXG4gXHRcdHJldHVybiAtRUFDQ0VTO1xuIFx0fVxuIFxuJiM0MztcdGlmIChpc19rZnVuY19wZXJmbW9uKFx1MDAyNm1ldGEpIFx1MDAyNlx1MDAyNiAhZW52LVx1MDAzZWFsbG93X3B0cl9sZWFrcykge1xuJiM0MztcdFx0dmVyYm9zZShlbnYsIFwmIzM0OyVzIGlzIGFsbG93ZWQgb25seSB0byBDQVBfUEVSRk1PTiBhbmQgQ0FQX1NZU19BRE1JTlxcblwmIzM0OyxcbiYjNDM7XHRcdFx0ZnVuY19uYW1lKTtcbiYjNDM7XHRcdG9wZXJhdGlvbiA9IGJwZl9kaWFnX2ZtdChlbnYsIFwmIzM0O2tmdW5jICVzXCYjMzQ7LCBmdW5jX25hbWUpO1xuJiM0MztcdFx0YnBmX2RpYWdfcG9saWN5KFxuJiM0MztcdFx0XHRlbnYsIGluc25faWR4LCBvcGVyYXRpb24sIFwmIzM0O3RoZSBrZnVuYyByZXF1aXJlcyBDQVBfUEVSRk1PTlwmIzM0OyxcbiYjNDM7XHRcdFx0XCYjMzQ7TG9hZCB0aGUgcHJvZ3JhbSB3aXRoIENBUF9QRVJGTU9OLCBvciBhdm9pZCB0aGUga2Z1bmMuXCYjMzQ7KTtcbiYjNDM7XHRcdHJldHVybiAtRVBFUk07XG4mIzQzO1x0fVxuJiM0MztcbiBcdHNsZWVwYWJsZSA9IGJwZl9pc19rZnVuY19zbGVlcGFibGUoXHUwMDI2bWV0YSk7XG4gXHRpZiAoc2xlZXBhYmxlIFx1MDAyNlx1MDAyNiAhaW5fc2xlZXBhYmxlKGVudikpIHtcbiBcdFx0dmVyYm9zZShlbnYsIFwmIzM0O3Byb2dyYW0gbXVzdCBiZSBzbGVlcGFibGUgdG8gY2FsbCBzbGVlcGFibGUga2Z1bmMgJXNcXG5cJiMzNDssIGZ1bmNfbmFtZSk7XG5kaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvdmVyaWZpZXIuYyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3ZlcmlmaWVyLmNcbmluZGV4IDY0YWM0OWFkNjdlNjMuLmVjOWUzOTA3Yzc1ZDYgMTAwNjQ0XG4tLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy92ZXJpZmllci5jXG4mIzQzOyYjNDM7JiM0MzsgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy92ZXJpZmllci5jXG5AQCAtNTMsNiAmIzQzOzUzLDcgQEBcbiAjaW5jbHVkZSBcJiMzNDt2ZXJpZmllcl9pdGVyYXRpbmdfY2FsbGJhY2tzLnNrZWwuaFwmIzM0O1xuICNpbmNsdWRlIFwmIzM0O3ZlcmlmaWVyX2plcV9pbmZlcl9ub3RfbnVsbC5za2VsLmhcJiMzNDtcbiAjaW5jbHVkZSBcJiMzNDt2ZXJpZmllcl9qaXRfY29udmVyZ2VuY2Uuc2tlbC5oXCYjMzQ7XG4mIzQzOyNpbmNsdWRlIFwmIzM0O3ZlcmlmaWVyX2tmdW5jX3BlcmZtb24uc2tlbC5oXCYjMzQ7XG4gI2luY2x1ZGUgXCYjMzQ7dmVyaWZpZXJfbGRfaW5kLnNrZWwuaFwmIzM0O1xuICNpbmNsdWRlIFwmIzM0O3ZlcmlmaWVyX2xkc3guc2tlbC5oXCYjMzQ7XG4gI2luY2x1ZGUgXCYjMzQ7dmVyaWZpZXJfbGVha19wdHIuc2tlbC5oXCYjMzQ7XG5AQCAtMjE2LDYgJiM0MzsyMTcsNyBAQCB2b2lkIHRlc3RfdmVyaWZpZXJfaW50X3B0cih2b2lkKSAgICAgICAgICAgICAgeyBSVU4odmVyaWZpZXJfaW50X3B0cik7IH1cbiB2b2lkIHRlc3RfdmVyaWZpZXJfaXRlcmF0aW5nX2NhbGxiYWNrcyh2b2lkKSAgeyBSVU4odmVyaWZpZXJfaXRlcmF0aW5nX2NhbGxiYWNrcyk7IH1cbiB2b2lkIHRlc3RfdmVyaWZpZXJfamVxX2luZmVyX25vdF9udWxsKHZvaWQpICAgeyBSVU4odmVyaWZpZXJfamVxX2luZmVyX25vdF9udWxsKTsgfVxuIHZvaWQgdGVzdF92ZXJpZmllcl9qaXRfY29udmVyZ2VuY2Uodm9pZCkgICAgICB7IFJVTih2ZXJpZmllcl9qaXRfY29udmVyZ2VuY2UpOyB9XG4mIzQzO3ZvaWQgdGVzdF92ZXJpZmllcl9rZnVuY19wZXJmbW9uKHZvaWQpICAgICAgICB7IFJVTih2ZXJpZmllcl9rZnVuY19wZXJmbW9uKTsgfVxuIHZvaWQgdGVzdF92ZXJpZmllcl9sb2FkX2FjcXVpcmUodm9pZCkgICAgICAgICB7IFJVTih2ZXJpZmllcl9sb2FkX2FjcXVpcmUpOyB9XG4gdm9pZCB0ZXN0X3ZlcmlmaWVyX2xkX2luZCh2b2lkKSAgICAgICAgICAgICAgIHsgUlVOKHZlcmlmaWVyX2xkX2luZCk7IH1cbiB2b2lkIHRlc3RfdmVyaWZpZXJfbGRzeCh2b2lkKSAgICAgICAgICAgICAgICAgIHsgUlVOKHZlcmlmaWVyX2xkc3gpOyB9XG5kaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3ZlcmlmaWVyX2tmdW5jX3BlcmZtb24uYyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy92ZXJpZmllcl9rZnVuY19wZXJmbW9uLmNcbm5ldyBmaWxlIG1vZGUgMTAwNjQ0XG5pbmRleCAwMDAwMDAwMDAwMDAwLi5jNmFkYmI0ODE2Y2VjXG4tLS0gL2Rldi9udWxsXG4mIzQzOyYjNDM7JiM0MzsgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvdmVyaWZpZXJfa2Z1bmNfcGVyZm1vbi5jXG5AQCAtMCwwICYjNDM7MSw2MyBAQFxuJiM0MzsvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMFxuJiM0MztcbiYjNDM7I2luY2x1ZGUgXHUwMDNjdm1saW51eC5oXHUwMDNlXG4mIzQzOyNpbmNsdWRlIFx1MDAzY2JwZi9icGZfaGVscGVycy5oXHUwMDNlXG4mIzQzOyNpbmNsdWRlIFwmIzM0O2JwZl9taXNjLmhcJiMzNDtcbiYjNDM7XG4mIzQzO3ZvaWQgKnVzZXJfcHRyO1xuJiM0MztjaGFyIGR5bnB0cl9idWZbOF07XG4mIzQzO3U2NCBrYWRkcjtcbiYjNDM7XG4mIzQzO1NFQyhcJiMzNDtzb2NrZXRcJiMzNDspXG4mIzQzO19fc3VjY2Vzc1xuJiM0MztfX2NhcHNfdW5wcml2KENBUF9CUEYpXG4mIzQzO19fZmFpbHVyZV91bnByaXZcbiYjNDM7X19tc2dfdW5wcml2KFwmIzM0O2JwZl9yZG9ubHlfY2FzdCBpcyBhbGxvd2VkIG9ubHkgdG8gQ0FQX1BFUkZNT04gYW5kIENBUF9TWVNfQURNSU5cJiMzNDspXG4mIzQzO2ludCByZG9ubHlfY2FzdF9ub3BlcmZtb24odm9pZCAqY3R4KVxuJiM0Mzt7XG4mIzQzO1x0Y2hhciAqcCA9IGJwZl9yZG9ubHlfY2FzdCgwLCAwKTtcbiYjNDM7XG4mIzQzO1x0cmV0dXJuIHBbMHg3ZmZmXTtcbiYjNDM7fVxuJiM0MztcbiYjNDM7U0VDKFwmIzM0O3NvY2tldFwmIzM0OylcbiYjNDM7X19zdWNjZXNzXG4mIzQzO19fY2Fwc191bnByaXYoQ0FQX0JQRilcbiYjNDM7X19mYWlsdXJlX3VucHJpdlxuJiM0MztfX21zZ191bnByaXYoXCYjMzQ7YnBmX3Byb2JlX3JlYWRfa2VybmVsX2R5bnB0ciBpcyBhbGxvd2VkIG9ubHkgdG8gQ0FQX1BFUkZNT04gYW5kIENBUF9TWVNfQURNSU5cJiMzNDspXG4mIzQzO2ludCBwcm9iZV9yZWFkX2tlcm5lbF9keW5wdHJfbm9wZXJmbW9uKHZvaWQgKmN0eClcbiYjNDM7e1xuJiM0MztcdHN0cnVjdCBicGZfZHlucHRyIGRwdHI7XG4mIzQzO1xuJiM0MztcdGJwZl9keW5wdHJfZnJvbV9tZW0oZHlucHRyX2J1Ziwgc2l6ZW9mKGR5bnB0cl9idWYpLCAwLCBcdTAwMjZkcHRyKTtcbiYjNDM7XHRicGZfcHJvYmVfcmVhZF9rZXJuZWxfZHlucHRyKFx1MDAyNmRwdHIsIDAsIHNpemVvZihkeW5wdHJfYnVmKSwgdXNlcl9wdHIpO1xuJiM0MztcdHJldHVybiAwO1xuJiM0Mzt9XG4mIzQzO1xuJiM0MztTRUMoXCYjMzQ7c29ja2V0XCYjMzQ7KVxuJiM0MztfX3N1Y2Nlc3NcbiYjNDM7X19jYXBzX3VucHJpdihDQVBfQlBGKVxuJiM0MztfX2ZhaWx1cmVfdW5wcml2XG4mIzQzO19fbXNnX3VucHJpdihcJiMzNDticGZfc3RyZWFtX3ZwcmludGsgaXMgYWxsb3dlZCBvbmx5IHRvIENBUF9QRVJGTU9OIGFuZCBDQVBfU1lTX0FETUlOXCYjMzQ7KVxuJiM0MztpbnQgc3RyZWFtX3ZwcmludGtfbm9wZXJmbW9uKHZvaWQgKmN0eClcbiYjNDM7e1xuJiM0MztcdGJwZl9zdHJlYW1fcHJpbnRrKEJQRl9TVERPVVQsIFwmIzM0OyVwQlwmIzM0OywgKHZvaWQgKilrYWRkcik7XG4mIzQzO1x0cmV0dXJuIDA7XG4mIzQzO31cbiYjNDM7XG4mIzQzO19fd2VhayBpbnQgc3VicHJvZ191bnRydXN0ZWRfcmVhZCh2b2lkICpwIF9fYXJnX3VudHJ1c3RlZClcbiYjNDM7e1xuJiM0MztcdHJldHVybiAqKGNoYXIgKilwO1xuJiM0Mzt9XG4mIzQzO1xuJiM0MztTRUMoXCYjMzQ7c29ja2V0XCYjMzQ7KVxuJiM0MztfX3N1Y2Nlc3NcbiYjNDM7X19jYXBzX3VucHJpdihDQVBfQlBGKVxuJiM0MztfX2ZhaWx1cmVfdW5wcml2XG4mIzQzO19fbXNnX3VucHJpdihcJiMzNDtyZG9ubHlfdW50cnVzdGVkX21lbSBhY2Nlc3MgaXMgYWxsb3dlZCBvbmx5IHRvIENBUF9QRVJGTU9OIGFuZCBDQVBfU1lTX0FETUlOXCYjMzQ7KVxuJiM0MztpbnQgYXJnX3VudHJ1c3RlZF9yZWFkX25vcGVyZm1vbih2b2lkICpjdHgpXG4mIzQzO3tcbiYjNDM7XHRyZXR1cm4gc3VicHJvZ191bnRydXN0ZWRfcmVhZCgwKTtcbiYjNDM7fVxuJiM0MztcbiYjNDM7Y2hhciBfbGljZW5zZVtdIFNFQyhcJiMzNDtsaWNlbnNlXCYjMzQ7KSA9IFwmIzM0O0dQTFwmIzM0OztcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMCAxNjoxNTwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4xbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5jb3JlPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtCUEZfU1lTQ0FMTCYjMzQ7LAogICAgJiMzNDtCUEZfRVZFTlRTJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7Y2hlY2tfa2Z1bmNfY2FsbCYjMzQ7LAogICAgJiMzNDtjaGVja19tZW1fYWNjZXNzJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGludHJvZHVjZXMgYSBuZXcgS0ZfUEVSRk1PTiBrZnVuYyBmbGFnIGFuZCBlbmZvcmNlcyBDQVBfUEVSRk1PTi9DQVBfU1lTX0FETUlOIHBlcm1pc3Npb24gY2hlY2tzIGluIHRoZSBCUEYgdmVyaWZpZXIgKGNoZWNrX2tmdW5jX2NhbGwgYW5kIGNoZWNrX21lbV9hY2Nlc3MpLiBTaW5jZSB0aGVzZSBjaGFuZ2VzIG1vZGlmeSByZWFjaGFibGUgQlBGIHZlcmlmaWVyIGxvZ2ljIGV4ZWN1dGVkIGR1cmluZyBCUEYgcHJvZ3JhbSB2ZXJpZmljYXRpb24gdmlhIHN5c19icGYsIHRoZXkgd2FycmFudCBmdXp6aW5nLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lciBhbmQgc2VjdXJpdHkgZW5naW5lZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZXZhbHVhdGUgd2hldGhlciBpdCB3YXJyYW50cyBmdXp6aW5nIHdpdGggc3l6a2FsbGVyLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiBpbnRlcm5hbCBhc3N1bXB0aW9ucy4gWW91IG11c3QgYWN0aXZlbHkgdXNlIHlvdXIgY29kZSBhY2Nlc3MKdG9vbHMgdG8gaW5zcGVjdCB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlLCBjYWxsZXJzLCBhbmQgc3Vycm91bmRpbmcgY29udGV4dC4KCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CjEuIENPUkUgVFJJQUdFIFBISUxPU09QSFkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KVGhlIGdvYWwgb2YgcGF0Y2ggZnV6emluZyBpcyB0byBkaXNjb3ZlciBjcmFzaGVzLCByZWdyZXNzaW9ucywgZXhwb3NlZCBsYXRlbnQgYnVncywKYW5kIG5ld2x5IHRyaWdnZXJlZCBhc3NlcnRpb25zIGludHJvZHVjZWQgYnkgdGhlIHBhdGNoIHNlcmllcy4KCi0gUkVBQ0hBQklMSVRZIElTIFRIRSBQUklNQVJZIEdBVEU6CiAgRnV6emluZyBjYW4gb25seSBkaXNjb3ZlciBidWdzIGluIGNvZGUgdGhhdCBjYW4gYWN0dWFsbHkgZXhlY3V0ZSBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZAogIGVudmlyb25tZW50cyAoR0NFIG9yIFFFTVUsIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBkZXZpY2VzIGxpa2UgVVNCIGdhZGdldHMsIG5ldGRldiwgdHVuL3RhcCkuCiAgSWYgdGhlIG1vZGlmaWVkIGNvZGUgaXMgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIChzZWUgU2VjdGlvbiAyKSwgaXQgTVVTVCBOT1QgYmUgZnV6emVkLAogIHJlZ2FyZGxlc3Mgb2Ygd2hldGhlciBpdCBhZGRzIGFzc2VydGlvbnMgb3IgY29tcGxleCBsb2dpYy4KCi0gRE8gTk9UIEJMSU5ETFkgVFJVU1QgJiMzNDtOTyBGVU5DVElPTkFMIENIQU5HRSYjMzQ7IChORkNJKSBPUiAmIzM0O1JFRkFDVE9SSU5HJiMzNDsgQ0xBSU1TOgogIFBhdGNoIGF1dGhvcnMgcm91dGluZWx5IGxhYmVsIGNoYW5nZXMgYXMgJiMzNDtjbGVhbnVwcyYjMzQ7LCAmIzM0O3JlZmFjdG9yaW5ncyYjMzQ7LCBvciBzdGF0ZQogICYjMzQ7Tm8gZnVuY3Rpb25hbCBjaGFuZ2UgaW50ZW5kZWQmIzM0Oy4gRG8gTk9UIHRha2UgdGhlc2UgY2xhaW1zIGF0IGZhY2UgdmFsdWUuCiAgQ29kZSByZWZhY3RvcmluZ3MgdGhhdCByZWFycmFuZ2UgbG9naWMsIGludHJvZHVjZSBoZWxwZXIgZnVuY3Rpb25zLCBvciBhbHRlciBzdGF0ZSBtYW5hZ2VtZW50CiAgaW4gY29yZSBzdWJzeXN0ZW1zIGZyZXF1ZW50bHkgaW50cm9kdWNlIHN1YnRsZSBzZW1hbnRpYyBzaGlmdHMgb3IgdW5jb3ZlciBsYXRlbnQga2VybmVsIGJ1Z3MuCiAgSWYgcmVhY2hhYmxlIGV4ZWN1dGFibGUgY29kZSBpcyBtb2RpZmllZCBvciByZWZhY3RvcmVkLCBpdCBNVVNUIGJlIGZ1enplZC4KCi0gTkVXIE9SIE1PRElGSUVEIEFTU0VSVElPTlMgSU4gUkVBQ0hBQkxFIENPREUgTVVTVCBCRSBGVVpaRUQ6CiAgV2hlbiBhIHBhdGNoIGludHJvZHVjZXMgb3IgbW9kaWZpZXMgcnVudGltZSBjaGVja3Mgb3IgYXNzZXJ0aW9ucyAoZS5nLiwgV0FSTl9PTiosIFZNX1dBUk5fT04qLAogIEJVR19PTiosIGxvY2tkZXBfYXNzZXJ0KikgaW4gcmVhY2hhYmxlIGNvZGUgcGF0aHMsIGl0IGVuZm9yY2VzIG5ldyBvciBzdHJpY3RlciBpbnZhcmlhbnRzLgogIEV2ZW4gaWYgdGhlIGF1dGhvciBiZWxpZXZlcyB0aGUgaW52YXJpYW50IGFsd2F5cyBob2xkcywgZnV6emluZyBpcyBlc3NlbnRpYWwgdG8gdmVyaWZ5IHdoZXRoZXIKICBhbiB1bnVzdWFsIHNlcXVlbmNlIG9mIG9wZXJhdGlvbnMgY2FuIHZpb2xhdGUgaXQuCgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQoyLiBXSEVOIFRPIFJFVFVSTiBXb3J0aEZ1enppbmc9ZmFsc2UgKE5FR0FUSVZFIENSSVRFUklBKQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIE9OTFkgSUYgYWxsIG1vZGlmaWVkIGNvZGUgZmFsbHMgc3RyaWN0bHkgaW50byBvbmUgb3IgbW9yZSBvZiB0aGVzZSBjYXRlZ29yaWVzOgoKLSBOb24ta2VybmVsIGFuZCBub24tZXhlY3V0YWJsZSBjaGFuZ2VzOgogICogTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgY29tbWVudHMsIG9yIHNwZWxsaW5nIGZpeGVzLgogICogVXNlci1zcGFjZSBkaXJlY3Rvcmllcywgc2VsZi10ZXN0cywgc2FtcGxlcywgb3Igc2NyaXB0cyAoZS5nLiwgdG9vbHMvLCBzYW1wbGVzLywgc2NyaXB0cy8sIHVzci8pCiAgICB0aGF0IGRvIG5vdCBhZmZlY3QgdGhlIGNvbXBpbGVkIGtlcm5lbCBpbWFnZSAodm1saW51eCkgb3Iga2VybmVsIG1vZHVsZXMuCiAgKiBQdXJlbHkgZGVjb3JhdGl2ZSBsb2dnaW5nIChlLmcuLCBtZXNzYWdlIHN0cmluZ3MgaW4gcHJfZXJyLCBwcmludGssIGRldl9pbmZvKSBvciB0cmFjZXBvaW50cwogICAgdGhhdCBkbyBub3QgYWx0ZXIgY29udHJvbCBmbG93IG9yIGRhdGEgc3RydWN0dXJlcy4KICAqIEJ1aWxkIHN5c3RlbSBvciBLY29uZmlnIGNoYW5nZXMgdGhhdCBkbyBub3QgYWx0ZXIgY29tcGlsZWQgQyBsb2dpYy4KLSBTdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgaGFyZHdhcmU6CiAgKiBWZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2hlcywgU21hcnROSUNzLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsCiAgICBpb25pYywgYW1kZ3B1KSByZXF1aXJpbmcgcGh5c2ljYWwgQVNJQy9QQ0llIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLgotIFVucmVhY2hhYmxlIGV4ZWN1dGlvbiBwYXRoczoKICAqIERyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKC5yZW1vdmUsIC5zaHV0ZG93biwgcGNpX3VucmVnaXN0ZXJfZHJpdmVyKSBleGVjdXRlZCBvbmx5IGR1cmluZwogICAgcGh5c2ljYWwgUENJIGhvdC11bnBsdWcgb3IgbWFudWFsIHN5c2ZzIGRyaXZlciB1bmJpbmRpbmcuCiAgKiBDb2RlIHBhdGhzIGV4Y2x1c2l2ZSB0byBhcmNoaXRlY3R1cmVzIG90aGVyIHRoYW4gdGhlIHRhcmdldCBhcmNoaXRlY3R1cmUuCgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQozLiBXSEVOIFRPIFJFVFVSTiBXb3J0aEZ1enppbmc9dHJ1ZSAoUE9TSVRJVkUgQ1JJVEVSSUEpCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZSB3aGVuZXZlciB0aGUgcGF0Y2ggdG91Y2hlcyByZWFjaGFibGUgZXhlY3V0YWJsZSBjb2RlLCBpbmNsdWRpbmc6Ci0gQ29yZSBTdWJzeXN0ZW1zOgogICogQW55IGxvZ2ljIG1vZGlmaWNhdGlvbnMgaW4gbWVtb3J5IG1hbmFnZW1lbnQgKG1tLyksIHN5bmNocm9uaXphdGlvbi9sb2NraW5nIChrZXJuZWwvbG9ja2luZy8pLAogICAgQlBGLCBzY2hlZHVsZXIsIGNvcmUgbmV0d29ya2luZywgVkZTLCBvciBzeXNjYWxsIGhhbmRsaW5nLgotIFJlZmFjdG9yaW5ncyBhbmQgQ29kZSBDbGVhbnVwczoKICAqIEFueSByZXN0cnVjdHVyaW5nIG9mIHJlYWNoYWJsZSBkYXRhIHN0cnVjdHVyZXMsIGhlbHBlciBhYnN0cmFjdGlvbnMsIG9yIGFsZ29yaXRobSBmbG93cy4KLSBSdW50aW1lIEFzc2VydGlvbnMgYW5kIERlZmVuc2l2ZSBDaGVja3M6CiAgKiBBbnkgaW50cm9kdWN0aW9uIG9yIGFsdGVyYXRpb24gb2YgYXNzZXJ0aW9ucyAoV0FSTl9PTiosIFZNX1dBUk5fT04qLCBCVUdfT04qLCBldGMuKSBpbiByZWFjaGFibGUgcGF0aHMuCi0gUmVhY2hhYmxlIERyaXZlcnMgYW5kIFByb3RvY29sczoKICAqIERyaXZlcnMgYWNjZXNzaWJsZSB2aWEgdmlydHVhbCBidXNlcyAodmlydGlvLCBVU0IgZ2FkZ2V0LCBsb29wYmFjaywgbmV0bGluaywgYmluZGVyLCBzb2NrZXRzLCBldGMuKS4KCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CjQuIEVYVFJBQ1RJTkcgRm9jdXNTeW1ib2xzIChQUkVWRU5USU5HIERJTFVUSU9OKQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpXaGVuIFdvcnRoRnV6emluZz10cnVlLCB5b3UgbXVzdCBleHRyYWN0IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgaW50byBGb2N1c1N5bWJvbHMgdG8gZ3VpZGUgdGhlIGZ1enplcjoKCi0gQVZPSUQgVUJJUVVJVE9VUyBMSUZFQ1lDTEUgSE9ULVBBVEhTOgogIERvIE5PVCBsaXN0IGdlbmVyaWMsIHViaXF1aXRvdXMgZnVuY3Rpb25zIGNhbGxlZCBieSBhbG1vc3QgZXZlcnkgcHJvZ3JhbSBpbiB0aGUgY29ycHVzCiAgKGluY2x1ZGluZywgYnV0IG5vdCBsaW1pdGVkIHRvOiBnZW5lcmFsIG1lbW9yeSBhbGxvY2F0b3JzIGFuZCBkZWFsbG9jYXRvcnMsIHBhZ2UgZmF1bHQKICBhbmQgdHJhcCBoYW5kbGVycywgb3IgY29yZSBzeW5jaHJvbml6YXRpb24gcHJpbWl0aXZlczsgdGhpcyBpcyBub3QgYW4gZXhoYXVzdGl2ZSBsaXN0KS4KICBMaXN0aW5nIHViaXF1aXRvdXMgZnVuY3Rpb25zIGNhdXNlcyB0aGUgZnV6emVyIHRvIGNsYXNzaWZ5IHRob3VzYW5kcyBvZiB1bnJlbGF0ZWQgdGVzdHMgYXMgJiMzNDtmb2N1c2VkJiMzNDssCiAgd2hpY2ggc2V2ZXJlbHkgZGlsdXRlcyBmdXp6aW5nIGVmZm9ydCBhd2F5IGZyb20gdGhlIGFjdHVhbCBjaGFuZ2VzLgoKLSBUQVJHRVQgU1BFQ0lGSUMgRkVBVFVSRSBMT0dJQyBBTkQgRU5UUllQT0lOVFM6CiAgTGlzdCBmdW5jdGlvbnMgdGhhdCBzcGVjaWZpY2FsbHkgaW1wbGVtZW50IHRoZSBsb2dpYyBiZWluZyBhZGRlZCBvciBhbHRlcmVkLCBvciBkaXJlY3QgQVBJIGVudHJ5cG9pbnRzCiAgZm9yIHRoZSBzdWJzeXN0ZW0gZmVhdHVyZSB1bmRlciByZXZpZXcuCgotIEhBTkRMSU5HIFNUQVRJQyBJTkxJTkUgRlVOQ1RJT05TIElOIEhFQURFUlMgKC5oKToKICBDb21waWxlci1pbmxpbmVkIHN0YXRpYyBmdW5jdGlvbnMgKHN1Y2ggYXMgc3RhdGljIGlubGluZXMgaW4gbW0vKi5oIG9yIGluY2x1ZGUvbGludXgvKi5oKSBsYWNrCiAgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcyBpbiB2bWxpbnV4IGFuZCBjYW5ub3QgYmUgdGFyZ2V0ZWQgZGlyZWN0bHkgYnkgc3ltYm9sIGNvdmVyYWdlIGZpbHRlcnMuCiAgSWYgdGhlIGNoYW5nZXMgYXJlIHByaW1hcmlseSBpbiBzdGF0aWMgaW5saW5lIGhlbHBlcnMsIGlkZW50aWZ5IG5vbi1zdGF0aWMsIGZlYXR1cmUtc3BlY2lmaWMgY2FsbGVyCiAgZnVuY3Rpb25zIGluIC5jIGZpbGVzIHRoYXQgZXhlcmNpc2UgdGhlbSAoYXZvaWRpbmcgdWJpcXVpdG91cyBsaWZlY3ljbGUgd3JhcHBlcnMpLgoKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KNS4gSURFTlRJRllJTkcgRW5hYmxlQ29uZmlncwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IGNvbXBpbGUgYW5kIHJlYWNoIHRoZSBtb2RpZmllZCBjb2RlOgotIEluc3BlY3QgS2NvbmZpZyBmaWxlcyBhbmQgI2lmZGVmIGd1YXJkczsgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCi0gQ2hlY2sgJiMzNDtkZXBlbmRzIG9uJiMzNDsgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzIG5lZWRlZC4KLSBTdHJpcCBhbnkgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+VGFyZ2V0IGFyY2hpdGVjdHVyZTogYW1kNjQKCkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgNDc1NDdlZTdhNTQwOTIzZTYyMTlmNDViZDhiMjZlMjlkYThjMWY1MApBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBUaHUgU2VwIDEwIDE2OjE1OjQyIDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9icGYva2Z1bmNzLnJzdCBiL0RvY3VtZW50YXRpb24vYnBmL2tmdW5jcy5yc3QKaW5kZXggODVmNzNlMGJiZDBmZi4uNjY5MWZlOGEzMmMzZCAxMDA2NDQKLS0tIGEvRG9jdW1lbnRhdGlvbi9icGYva2Z1bmNzLnJzdAomIzQzOyYjNDM7JiM0MzsgYi9Eb2N1bWVudGF0aW9uL2JwZi9rZnVuY3MucnN0CkBAIC00ODYsNiAmIzQzOzQ4NiwxNiBAQCBFeGFtcGxlIHVzYWdlIGluIEJQRiBwcm9ncmFtOgogCS8qIG5vdGUgdGhhdCB0aGUgbGFzdCBhcmd1bWVudCBpcyBvbWl0dGVkICovCiAgICAgICAgIGJwZl90YXNrX3dvcmtfc2NoZWR1bGVfc2lnbmFsKHRhc2ssICZhbXA7d29yay0mZ3Q7dHcsICZhbXA7YXJybWFwLCB0YXNrX3dvcmtfY2FsbGJhY2spOwogCiYjNDM7Mi41LjEwIEtGX1BFUkZNT04gZmxhZwomIzQzOy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KJiM0MzsKJiM0MztUaGUgS0ZfUEVSRk1PTiBmbGFnIGlzIHVzZWQgZm9yIGtmdW5jcyB0aGF0IGNhbiBleHBvc2Uga2VybmVsIG1lbW9yeSBvciBrZXJuZWwKJiM0MzthZGRyZXNzZXMgdG8gdGhlIEJQRiBwcm9ncmFtLCBmb3IgZXhhbXBsZSBieSByZWFkaW5nIHRocm91Z2ggYSBwb2ludGVyIHRoYXQgdGhlCiYjNDM7dmVyaWZpZXIgZG9lcyBub3QgY2hlY2suIENhbGxpbmcgc3VjaCBhIGtmdW5jIHJlcXVpcmVzIENBUF9QRVJGTU9OLCBvcgomIzQzO0NBUF9TWVNfQURNSU4sIGluIHRoZSBzYW1lIHdheSB0aGF0IHRoZSBlcXVpdmFsZW50IEJQRiBoZWxwZXJzIGFyZSBnYXRlZCBpbgomIzQzO2JwZl9iYXNlX2Z1bmNfcHJvdG8oKS4gQSBwcm9ncmFtIGxvYWRlZCB3aXRoIENBUF9CUEYgYWxvbmUgaXMgcmVqZWN0ZWQgYXQgbG9hZAomIzQzO3RpbWUuCiYjNDM7CiAyLjYgUmVnaXN0ZXJpbmcgdGhlIGtmdW5jcwogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51eC9idGYuaCBiL2luY2x1ZGUvbGludXgvYnRmLmgKaW5kZXggODlkNWE1YzRmMTE3MS4uN2M2MmVhMTdiMTE2MyAxMDA2NDQKLS0tIGEvaW5jbHVkZS9saW51eC9idGYuaAomIzQzOyYjNDM7JiM0MzsgYi9pbmNsdWRlL2xpbnV4L2J0Zi5oCkBAIC04MCw2ICYjNDM7ODAsNyBAQAogI2RlZmluZSBLRl9BUkVOQV9BUkcyICAgKDEgJmx0OyZsdDsgMTUpIC8qIGtmdW5jIHRha2VzIGFuIGFyZW5hIHBvaW50ZXIgYXMgaXRzIHNlY29uZCBhcmd1bWVudCAqLwogI2RlZmluZSBLRl9JTVBMSUNJVF9BUkdTICgxICZsdDsmbHQ7IDE2KSAvKiBrZnVuYyBoYXMgaW1wbGljaXQgYXJndW1lbnRzIHN1cHBsaWVkIGJ5IHRoZSB2ZXJpZmllciAqLwogI2RlZmluZSBLRl9TUElOTE9DS19TQUZFICgxICZsdDsmbHQ7IDE3KSAvKiBrZnVuYyBpcyBhbGxvd2VkIGluc2lkZSBicGZfc3Bpbl9sb2NrLWVkIHJlZ2lvbiAqLwomIzQzOyNkZWZpbmUgS0ZfUEVSRk1PTiAgICAgICgxICZsdDsmbHQ7IDE4KSAvKiBrZnVuYyByZXF1aXJlcyBDQVBfUEVSRk1PTiAqLwogCiAvKgogICogVGFnIG1hcmtpbmcgYSBrZXJuZWwgZnVuY3Rpb24gYXMgYSBrZnVuYy4gVGhpcyBpcyBtZWFudCB0byBtaW5pbWl6ZSB0aGUKZGlmZiAtLWdpdCBhL2tlcm5lbC9icGYvaGVscGVycy5jIGIva2VybmVsL2JwZi9oZWxwZXJzLmMKaW5kZXggYjNjYzVjOGZjODc1Ni4uOGEwZWViNGY2MjM2ZCAxMDA2NDQKLS0tIGEva2VybmVsL2JwZi9oZWxwZXJzLmMKJiM0MzsmIzQzOyYjNDM7IGIva2VybmVsL2JwZi9oZWxwZXJzLmMKQEAgLTQ4ODMsNyAmIzQzOzQ4ODMsNyBAQCBCVEZfSUQoZnVuYywgYnBmX2Nncm91cF9yZWxlYXNlX2R0b3IpCiAKIEJURl9LRlVOQ1NfU1RBUlQoY29tbW9uX2J0Zl9pZHMpCiBCVEZfSURfRkxBR1MoZnVuYywgYnBmX2Nhc3RfdG9fa2Vybl9jdHgsIEtGX0ZBU1RDQUxMKQotQlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl9yZG9ubHlfY2FzdCwgS0ZfRkFTVENBTEwpCiYjNDM7QlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl9yZG9ubHlfY2FzdCwgS0ZfRkFTVENBTEwgfCBLRl9QRVJGTU9OKQogQlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl9yY3VfcmVhZF9sb2NrKQogQlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl9yY3VfcmVhZF91bmxvY2spCiBCVEZfSURfRkxBR1MoZnVuYywgYnBmX2R5bnB0cl9zbGljZSwgS0ZfUkVUX05VTEwpCkBAIC00OTIwLDExICYjNDM7NDkyMCwxMSBAQCBCVEZfSURfRkxBR1MoZnVuYywgYnBmX3dxX3NldF9jYWxsYmFjaywgS0ZfSU1QTElDSVRfQVJHUykKIEJURl9JRF9GTEFHUyhmdW5jLCBicGZfd3Ffc3RhcnQpCiBCVEZfSURfRkxBR1MoZnVuYywgYnBmX3ByZWVtcHRfZGlzYWJsZSkKIEJURl9JRF9GTEFHUyhmdW5jLCBicGZfcHJlZW1wdF9lbmFibGUpCi1CVEZfSURfRkxBR1MoZnVuYywgYnBmX2l0ZXJfYml0c19uZXcsIEtGX0lURVJfTkVXKQomIzQzO0JURl9JRF9GTEFHUyhmdW5jLCBicGZfaXRlcl9iaXRzX25ldywgS0ZfSVRFUl9ORVcgfCBLRl9QRVJGTU9OKQogQlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl9pdGVyX2JpdHNfbmV4dCwgS0ZfSVRFUl9ORVhUIHwgS0ZfUkVUX05VTEwpCiBCVEZfSURfRkxBR1MoZnVuYywgYnBmX2l0ZXJfYml0c19kZXN0cm95LCBLRl9JVEVSX0RFU1RST1kpCi1CVEZfSURfRkxBR1MoZnVuYywgYnBmX2NvcHlfZnJvbV91c2VyX3N0ciwgS0ZfU0xFRVBBQkxFKQotQlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl9jb3B5X2Zyb21fdXNlcl90YXNrX3N0ciwgS0ZfU0xFRVBBQkxFKQomIzQzO0JURl9JRF9GTEFHUyhmdW5jLCBicGZfY29weV9mcm9tX3VzZXJfc3RyLCBLRl9TTEVFUEFCTEUgfCBLRl9QRVJGTU9OKQomIzQzO0JURl9JRF9GTEFHUyhmdW5jLCBicGZfY29weV9mcm9tX3VzZXJfdGFza19zdHIsIEtGX1NMRUVQQUJMRSB8IEtGX1BFUkZNT04pCiBCVEZfSURfRkxBR1MoZnVuYywgYnBmX2dldF9rbWVtX2NhY2hlKQogQlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl9pdGVyX2ttZW1fY2FjaGVfbmV3LCBLRl9JVEVSX05FVyB8IEtGX1NMRUVQQUJMRSkKIEJURl9JRF9GTEFHUyhmdW5jLCBicGZfaXRlcl9rbWVtX2NhY2hlX25leHQsIEtGX0lURVJfTkVYVCB8IEtGX1JFVF9OVUxMIHwgS0ZfU0xFRVBBQkxFKQpAQCAtNDkzMiwxNCAmIzQzOzQ5MzIsMTQgQEAgQlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl9pdGVyX2ttZW1fY2FjaGVfZGVzdHJveSwgS0ZfSVRFUl9ERVNUUk9ZIHwgS0ZfU0xFRVBBQkxFKQogQlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl9sb2NhbF9pcnFfc2F2ZSkKIEJURl9JRF9GTEFHUyhmdW5jLCBicGZfbG9jYWxfaXJxX3Jlc3RvcmUpCiAjaWZkZWYgQ09ORklHX0JQRl9FVkVOVFMKLUJURl9JRF9GTEFHUyhmdW5jLCBicGZfcHJvYmVfcmVhZF91c2VyX2R5bnB0cikKLUJURl9JRF9GTEFHUyhmdW5jLCBicGZfcHJvYmVfcmVhZF9rZXJuZWxfZHlucHRyKQotQlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl9wcm9iZV9yZWFkX3VzZXJfc3RyX2R5bnB0cikKLUJURl9JRF9GTEFHUyhmdW5jLCBicGZfcHJvYmVfcmVhZF9rZXJuZWxfc3RyX2R5bnB0cikKLUJURl9JRF9GTEFHUyhmdW5jLCBicGZfY29weV9mcm9tX3VzZXJfZHlucHRyLCBLRl9TTEVFUEFCTEUpCi1CVEZfSURfRkxBR1MoZnVuYywgYnBmX2NvcHlfZnJvbV91c2VyX3N0cl9keW5wdHIsIEtGX1NMRUVQQUJMRSkKLUJURl9JRF9GTEFHUyhmdW5jLCBicGZfY29weV9mcm9tX3VzZXJfdGFza19keW5wdHIsIEtGX1NMRUVQQUJMRSkKLUJURl9JRF9GTEFHUyhmdW5jLCBicGZfY29weV9mcm9tX3VzZXJfdGFza19zdHJfZHlucHRyLCBLRl9TTEVFUEFCTEUpCiYjNDM7QlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl9wcm9iZV9yZWFkX3VzZXJfZHlucHRyLCBLRl9QRVJGTU9OKQomIzQzO0JURl9JRF9GTEFHUyhmdW5jLCBicGZfcHJvYmVfcmVhZF9rZXJuZWxfZHlucHRyLCBLRl9QRVJGTU9OKQomIzQzO0JURl9JRF9GTEFHUyhmdW5jLCBicGZfcHJvYmVfcmVhZF91c2VyX3N0cl9keW5wdHIsIEtGX1BFUkZNT04pCiYjNDM7QlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl9wcm9iZV9yZWFkX2tlcm5lbF9zdHJfZHlucHRyLCBLRl9QRVJGTU9OKQomIzQzO0JURl9JRF9GTEFHUyhmdW5jLCBicGZfY29weV9mcm9tX3VzZXJfZHlucHRyLCBLRl9TTEVFUEFCTEUgfCBLRl9QRVJGTU9OKQomIzQzO0JURl9JRF9GTEFHUyhmdW5jLCBicGZfY29weV9mcm9tX3VzZXJfc3RyX2R5bnB0ciwgS0ZfU0xFRVBBQkxFIHwgS0ZfUEVSRk1PTikKJiM0MztCVEZfSURfRkxBR1MoZnVuYywgYnBmX2NvcHlfZnJvbV91c2VyX3Rhc2tfZHlucHRyLCBLRl9TTEVFUEFCTEUgfCBLRl9QRVJGTU9OKQomIzQzO0JURl9JRF9GTEFHUyhmdW5jLCBicGZfY29weV9mcm9tX3VzZXJfdGFza19zdHJfZHlucHRyLCBLRl9TTEVFUEFCTEUgfCBLRl9QRVJGTU9OKQogI2VuZGlmCiAjaWZkZWYgQ09ORklHX0RNQV9TSEFSRURfQlVGRkVSCiBCVEZfSURfRkxBR1MoZnVuYywgYnBmX2l0ZXJfZG1hYnVmX25ldywgS0ZfSVRFUl9ORVcgfCBLRl9TTEVFUEFCTEUpCkBAIC00OTQ3LDI2ICYjNDM7NDk0NywyNiBAQCBCVEZfSURfRkxBR1MoZnVuYywgYnBmX2l0ZXJfZG1hYnVmX25leHQsIEtGX0lURVJfTkVYVCB8IEtGX1JFVF9OVUxMIHwgS0ZfU0xFRVBBQgogQlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl9pdGVyX2RtYWJ1Zl9kZXN0cm95LCBLRl9JVEVSX0RFU1RST1kgfCBLRl9TTEVFUEFCTEUpCiAjZW5kaWYKIEJURl9JRF9GTEFHUyhmdW5jLCBfX2JwZl90cmFwKQotQlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl9zdHJjbXApOwotQlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl9zdHJjYXNlY21wKTsKLUJURl9JRF9GTEFHUyhmdW5jLCBicGZfc3RybmNhc2VjbXApOwotQlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl9zdHJjaHIpOwotQlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl9zdHJjaHJudWwpOwotQlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl9zdHJuY2hyKTsKLUJURl9JRF9GTEFHUyhmdW5jLCBicGZfc3RycmNocik7Ci1CVEZfSURfRkxBR1MoZnVuYywgYnBmX3N0cmxlbik7Ci1CVEZfSURfRkxBR1MoZnVuYywgYnBmX3N0cm5sZW4pOwotQlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl9zdHJzcG4pOwotQlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl9zdHJjc3BuKTsKLUJURl9JRF9GTEFHUyhmdW5jLCBicGZfc3Ryc3RyKTsKLUJURl9JRF9GTEFHUyhmdW5jLCBicGZfc3RyY2FzZXN0cik7Ci1CVEZfSURfRkxBR1MoZnVuYywgYnBmX3N0cm5zdHIpOwotQlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl9zdHJuY2FzZXN0cik7CiYjNDM7QlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl9zdHJjbXAsIEtGX1BFUkZNT04pOwomIzQzO0JURl9JRF9GTEFHUyhmdW5jLCBicGZfc3RyY2FzZWNtcCwgS0ZfUEVSRk1PTik7CiYjNDM7QlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl9zdHJuY2FzZWNtcCwgS0ZfUEVSRk1PTik7CiYjNDM7QlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl9zdHJjaHIsIEtGX1BFUkZNT04pOwomIzQzO0JURl9JRF9GTEFHUyhmdW5jLCBicGZfc3RyY2hybnVsLCBLRl9QRVJGTU9OKTsKJiM0MztCVEZfSURfRkxBR1MoZnVuYywgYnBmX3N0cm5jaHIsIEtGX1BFUkZNT04pOwomIzQzO0JURl9JRF9GTEFHUyhmdW5jLCBicGZfc3RycmNociwgS0ZfUEVSRk1PTik7CiYjNDM7QlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl9zdHJsZW4sIEtGX1BFUkZNT04pOwomIzQzO0JURl9JRF9GTEFHUyhmdW5jLCBicGZfc3RybmxlbiwgS0ZfUEVSRk1PTik7CiYjNDM7QlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl9zdHJzcG4sIEtGX1BFUkZNT04pOwomIzQzO0JURl9JRF9GTEFHUyhmdW5jLCBicGZfc3RyY3NwbiwgS0ZfUEVSRk1PTik7CiYjNDM7QlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl9zdHJzdHIsIEtGX1BFUkZNT04pOwomIzQzO0JURl9JRF9GTEFHUyhmdW5jLCBicGZfc3RyY2FzZXN0ciwgS0ZfUEVSRk1PTik7CiYjNDM7QlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl9zdHJuc3RyLCBLRl9QRVJGTU9OKTsKJiM0MztCVEZfSURfRkxBR1MoZnVuYywgYnBmX3N0cm5jYXNlc3RyLCBLRl9QRVJGTU9OKTsKICNpZiBkZWZpbmVkKENPTkZJR19CUEZfTFNNKSAmYW1wOyZhbXA7IGRlZmluZWQoQ09ORklHX0NHUk9VUFMpCiBCVEZfSURfRkxBR1MoZnVuYywgYnBmX2Nncm91cF9yZWFkX3hhdHRyLCBLRl9SQ1UpCiAjZW5kaWYKLUJURl9JRF9GTEFHUyhmdW5jLCBicGZfc3RyZWFtX3ZwcmludGssIEtGX0lNUExJQ0lUX0FSR1MgfCBLRl9TUElOTE9DS19TQUZFKQotQlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl9zdHJlYW1fcHJpbnRfc3RhY2ssIEtGX0lNUExJQ0lUX0FSR1MgfCBLRl9TUElOTE9DS19TQUZFKQomIzQzO0JURl9JRF9GTEFHUyhmdW5jLCBicGZfc3RyZWFtX3ZwcmludGssIEtGX0lNUExJQ0lUX0FSR1MgfCBLRl9TUElOTE9DS19TQUZFIHwgS0ZfUEVSRk1PTikKJiM0MztCVEZfSURfRkxBR1MoZnVuYywgYnBmX3N0cmVhbV9wcmludF9zdGFjaywgS0ZfSU1QTElDSVRfQVJHUyB8IEtGX1NQSU5MT0NLX1NBRkUgfCBLRl9QRVJGTU9OKQogQlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl90YXNrX3dvcmtfc2NoZWR1bGVfc2lnbmFsLCBLRl9JTVBMSUNJVF9BUkdTKQogQlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl90YXNrX3dvcmtfc2NoZWR1bGVfcmVzdW1lLCBLRl9JTVBMSUNJVF9BUkdTKQogQlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl9keW5wdHJfZnJvbV9maWxlKQpkaWZmIC0tZ2l0IGEva2VybmVsL2JwZi92ZXJpZmllci5jIGIva2VybmVsL2JwZi92ZXJpZmllci5jCmluZGV4IDcyYTNmNTk5OGRkMjcuLjM2OTIzY2UwNDI3MzQgMTAwNjQ0Ci0tLSBhL2tlcm5lbC9icGYvdmVyaWZpZXIuYwomIzQzOyYjNDM7JiM0MzsgYi9rZXJuZWwvYnBmL3ZlcmlmaWVyLmMKQEAgLTY0NTMsNiAmIzQzOzY0NTMsMTYgQEAgc3RhdGljIGludCBjaGVja19tZW1fYWNjZXNzKHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYsIGludCBpbnNuX2lkeCwgc3RydWN0IGIKIAkJCXJldHVybiAtRUFDQ0VTOwogCQl9CiAKJiM0MzsJCWlmIChyZG9ubHlfdW50cnVzdGVkICZhbXA7JmFtcDsgIWVudi0mZ3Q7YWxsb3dfcHRyX2xlYWtzKSB7CiYjNDM7CQkJdmVyYm9zZShlbnYsICYjMzQ7JXMgYWNjZXNzIGlzIGFsbG93ZWQgb25seSB0byBDQVBfUEVSRk1PTiBhbmQgQ0FQX1NZU19BRE1JTlxuJiMzNDssCiYjNDM7CQkJCXJlZ190eXBlX3N0cihlbnYsIHJlZy0mZ3Q7dHlwZSkpOwomIzQzOwkJCWJwZl9kaWFnX3BvbGljeSgKJiM0MzsJCQkJZW52LCBpbnNuX2lkeCwgJiMzNDtyZWFkIGZyb20gdW50cnVzdGVkIHJlYWQtb25seSBtZW1vcnkmIzM0OywKJiM0MzsJCQkJJiMzNDt0aGUgYWNjZXNzIHJlcXVpcmVzIENBUF9QRVJGTU9OJiMzNDssCiYjNDM7CQkJCSYjMzQ7TG9hZCB0aGUgcHJvZ3JhbSB3aXRoIENBUF9QRVJGTU9OLCBvciBhdm9pZCBkZXJlZmVyZW5jaW5nIHVudHJ1c3RlZCBwb2ludGVycy4mIzM0Oyk7CiYjNDM7CQkJcmV0dXJuIC1FUEVSTTsKJiM0MzsJCX0KJiM0MzsKIAkJLyoKIAkJICogQWNjZXNzZXMgdG8gdW50cnVzdGVkIFBUUl9UT19NRU0gYXJlIGRvbmUgdGhyb3VnaCBwcm9iZQogCQkgKiBpbnN0cnVjdGlvbnMsIGhlbmNlIG5vIG5lZWQgdG8gY2hlY2sgYm91bmRzIGluIHRoYXQgY2FzZS4KQEAgLTExMzU2LDYgJiM0MzsxMTM2NiwxMSBAQCBzdGF0aWMgYm9vbCBpc19rZnVuY19kZXN0cnVjdGl2ZShzdHJ1Y3QgYnBmX2NhbGxfYXJnX21ldGEgKm1ldGEpCiAJcmV0dXJuIG1ldGEtJmd0O2tmdW5jX2ZsYWdzICZhbXA7IEtGX0RFU1RSVUNUSVZFOwogfQogCiYjNDM7c3RhdGljIGJvb2wgaXNfa2Z1bmNfcGVyZm1vbihzdHJ1Y3QgYnBmX2NhbGxfYXJnX21ldGEgKm1ldGEpCiYjNDM7ewomIzQzOwlyZXR1cm4gbWV0YS0mZ3Q7a2Z1bmNfZmxhZ3MgJmFtcDsgS0ZfUEVSRk1PTjsKJiM0Mzt9CiYjNDM7CiBzdGF0aWMgYm9vbCBpc19rZnVuY19yY3Uoc3RydWN0IGJwZl9jYWxsX2FyZ19tZXRhICptZXRhKQogewogCXJldHVybiBtZXRhLSZndDtrZnVuY19mbGFncyAmYW1wOyBLRl9SQ1U7CkBAIC0xMzgzNCw2ICYjNDM7MTM4NDksMTYgQEAgc3RhdGljIGludCBjaGVja19rZnVuY19jYWxsKHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYsIHN0cnVjdCBicGZfaW5zbiAqaW5zbiwKIAkJcmV0dXJuIC1FQUNDRVM7CiAJfQogCiYjNDM7CWlmIChpc19rZnVuY19wZXJmbW9uKCZhbXA7bWV0YSkgJmFtcDsmYW1wOyAhZW52LSZndDthbGxvd19wdHJfbGVha3MpIHsKJiM0MzsJCXZlcmJvc2UoZW52LCAmIzM0OyVzIGlzIGFsbG93ZWQgb25seSB0byBDQVBfUEVSRk1PTiBhbmQgQ0FQX1NZU19BRE1JTlxuJiMzNDssCiYjNDM7CQkJZnVuY19uYW1lKTsKJiM0MzsJCW9wZXJhdGlvbiA9IGJwZl9kaWFnX2ZtdChlbnYsICYjMzQ7a2Z1bmMgJXMmIzM0OywgZnVuY19uYW1lKTsKJiM0MzsJCWJwZl9kaWFnX3BvbGljeSgKJiM0MzsJCQllbnYsIGluc25faWR4LCBvcGVyYXRpb24sICYjMzQ7dGhlIGtmdW5jIHJlcXVpcmVzIENBUF9QRVJGTU9OJiMzNDssCiYjNDM7CQkJJiMzNDtMb2FkIHRoZSBwcm9ncmFtIHdpdGggQ0FQX1BFUkZNT04sIG9yIGF2b2lkIHRoZSBrZnVuYy4mIzM0Oyk7CiYjNDM7CQlyZXR1cm4gLUVQRVJNOwomIzQzOwl9CiYjNDM7CiAJc2xlZXBhYmxlID0gYnBmX2lzX2tmdW5jX3NsZWVwYWJsZSgmYW1wO21ldGEpOwogCWlmIChzbGVlcGFibGUgJmFtcDsmYW1wOyAhaW5fc2xlZXBhYmxlKGVudikpIHsKIAkJdmVyYm9zZShlbnYsICYjMzQ7cHJvZ3JhbSBtdXN0IGJlIHNsZWVwYWJsZSB0byBjYWxsIHNsZWVwYWJsZSBrZnVuYyAlc1xuJiMzNDssIGZ1bmNfbmFtZSk7CmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy92ZXJpZmllci5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvdmVyaWZpZXIuYwppbmRleCA2NGFjNDlhZDY3ZTYzLi5lYzllMzkwN2M3NWQ2IDEwMDY0NAotLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy92ZXJpZmllci5jCiYjNDM7JiM0MzsmIzQzOyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3ZlcmlmaWVyLmMKQEAgLTUzLDYgJiM0Mzs1Myw3IEBACiAjaW5jbHVkZSAmIzM0O3ZlcmlmaWVyX2l0ZXJhdGluZ19jYWxsYmFja3Muc2tlbC5oJiMzNDsKICNpbmNsdWRlICYjMzQ7dmVyaWZpZXJfamVxX2luZmVyX25vdF9udWxsLnNrZWwuaCYjMzQ7CiAjaW5jbHVkZSAmIzM0O3ZlcmlmaWVyX2ppdF9jb252ZXJnZW5jZS5za2VsLmgmIzM0OwomIzQzOyNpbmNsdWRlICYjMzQ7dmVyaWZpZXJfa2Z1bmNfcGVyZm1vbi5za2VsLmgmIzM0OwogI2luY2x1ZGUgJiMzNDt2ZXJpZmllcl9sZF9pbmQuc2tlbC5oJiMzNDsKICNpbmNsdWRlICYjMzQ7dmVyaWZpZXJfbGRzeC5za2VsLmgmIzM0OwogI2luY2x1ZGUgJiMzNDt2ZXJpZmllcl9sZWFrX3B0ci5za2VsLmgmIzM0OwpAQCAtMjE2LDYgJiM0MzsyMTcsNyBAQCB2b2lkIHRlc3RfdmVyaWZpZXJfaW50X3B0cih2b2lkKSAgICAgICAgICAgICAgeyBSVU4odmVyaWZpZXJfaW50X3B0cik7IH0KIHZvaWQgdGVzdF92ZXJpZmllcl9pdGVyYXRpbmdfY2FsbGJhY2tzKHZvaWQpICB7IFJVTih2ZXJpZmllcl9pdGVyYXRpbmdfY2FsbGJhY2tzKTsgfQogdm9pZCB0ZXN0X3ZlcmlmaWVyX2plcV9pbmZlcl9ub3RfbnVsbCh2b2lkKSAgIHsgUlVOKHZlcmlmaWVyX2plcV9pbmZlcl9ub3RfbnVsbCk7IH0KIHZvaWQgdGVzdF92ZXJpZmllcl9qaXRfY29udmVyZ2VuY2Uodm9pZCkgICAgICB7IFJVTih2ZXJpZmllcl9qaXRfY29udmVyZ2VuY2UpOyB9CiYjNDM7dm9pZCB0ZXN0X3ZlcmlmaWVyX2tmdW5jX3BlcmZtb24odm9pZCkgICAgICAgIHsgUlVOKHZlcmlmaWVyX2tmdW5jX3BlcmZtb24pOyB9CiB2b2lkIHRlc3RfdmVyaWZpZXJfbG9hZF9hY3F1aXJlKHZvaWQpICAgICAgICAgeyBSVU4odmVyaWZpZXJfbG9hZF9hY3F1aXJlKTsgfQogdm9pZCB0ZXN0X3ZlcmlmaWVyX2xkX2luZCh2b2lkKSAgICAgICAgICAgICAgIHsgUlVOKHZlcmlmaWVyX2xkX2luZCk7IH0KIHZvaWQgdGVzdF92ZXJpZmllcl9sZHN4KHZvaWQpICAgICAgICAgICAgICAgICAgeyBSVU4odmVyaWZpZXJfbGRzeCk7IH0KZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy92ZXJpZmllcl9rZnVuY19wZXJmbW9uLmMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvdmVyaWZpZXJfa2Z1bmNfcGVyZm1vbi5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAuLmM2YWRiYjQ4MTZjZWMKLS0tIC9kZXYvbnVsbAomIzQzOyYjNDM7JiM0MzsgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvdmVyaWZpZXJfa2Z1bmNfcGVyZm1vbi5jCkBAIC0wLDAgJiM0MzsxLDYzIEBACiYjNDM7Ly8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAKJiM0MzsKJiM0MzsjaW5jbHVkZSAmbHQ7dm1saW51eC5oJmd0OwomIzQzOyNpbmNsdWRlICZsdDticGYvYnBmX2hlbHBlcnMuaCZndDsKJiM0MzsjaW5jbHVkZSAmIzM0O2JwZl9taXNjLmgmIzM0OwomIzQzOwomIzQzO3ZvaWQgKnVzZXJfcHRyOwomIzQzO2NoYXIgZHlucHRyX2J1Zls4XTsKJiM0Mzt1NjQga2FkZHI7CiYjNDM7CiYjNDM7U0VDKCYjMzQ7c29ja2V0JiMzNDspCiYjNDM7X19zdWNjZXNzCiYjNDM7X19jYXBzX3VucHJpdihDQVBfQlBGKQomIzQzO19fZmFpbHVyZV91bnByaXYKJiM0MztfX21zZ191bnByaXYoJiMzNDticGZfcmRvbmx5X2Nhc3QgaXMgYWxsb3dlZCBvbmx5IHRvIENBUF9QRVJGTU9OIGFuZCBDQVBfU1lTX0FETUlOJiMzNDspCiYjNDM7aW50IHJkb25seV9jYXN0X25vcGVyZm1vbih2b2lkICpjdHgpCiYjNDM7ewomIzQzOwljaGFyICpwID0gYnBmX3Jkb25seV9jYXN0KDAsIDApOwomIzQzOwomIzQzOwlyZXR1cm4gcFsweDdmZmZdOwomIzQzO30KJiM0MzsKJiM0MztTRUMoJiMzNDtzb2NrZXQmIzM0OykKJiM0MztfX3N1Y2Nlc3MKJiM0MztfX2NhcHNfdW5wcml2KENBUF9CUEYpCiYjNDM7X19mYWlsdXJlX3VucHJpdgomIzQzO19fbXNnX3VucHJpdigmIzM0O2JwZl9wcm9iZV9yZWFkX2tlcm5lbF9keW5wdHIgaXMgYWxsb3dlZCBvbmx5IHRvIENBUF9QRVJGTU9OIGFuZCBDQVBfU1lTX0FETUlOJiMzNDspCiYjNDM7aW50IHByb2JlX3JlYWRfa2VybmVsX2R5bnB0cl9ub3BlcmZtb24odm9pZCAqY3R4KQomIzQzO3sKJiM0MzsJc3RydWN0IGJwZl9keW5wdHIgZHB0cjsKJiM0MzsKJiM0MzsJYnBmX2R5bnB0cl9mcm9tX21lbShkeW5wdHJfYnVmLCBzaXplb2YoZHlucHRyX2J1ZiksIDAsICZhbXA7ZHB0cik7CiYjNDM7CWJwZl9wcm9iZV9yZWFkX2tlcm5lbF9keW5wdHIoJmFtcDtkcHRyLCAwLCBzaXplb2YoZHlucHRyX2J1ZiksIHVzZXJfcHRyKTsKJiM0MzsJcmV0dXJuIDA7CiYjNDM7fQomIzQzOwomIzQzO1NFQygmIzM0O3NvY2tldCYjMzQ7KQomIzQzO19fc3VjY2VzcwomIzQzO19fY2Fwc191bnByaXYoQ0FQX0JQRikKJiM0MztfX2ZhaWx1cmVfdW5wcml2CiYjNDM7X19tc2dfdW5wcml2KCYjMzQ7YnBmX3N0cmVhbV92cHJpbnRrIGlzIGFsbG93ZWQgb25seSB0byBDQVBfUEVSRk1PTiBhbmQgQ0FQX1NZU19BRE1JTiYjMzQ7KQomIzQzO2ludCBzdHJlYW1fdnByaW50a19ub3BlcmZtb24odm9pZCAqY3R4KQomIzQzO3sKJiM0MzsJYnBmX3N0cmVhbV9wcmludGsoQlBGX1NURE9VVCwgJiMzNDslcEImIzM0OywgKHZvaWQgKilrYWRkcik7CiYjNDM7CXJldHVybiAwOwomIzQzO30KJiM0MzsKJiM0MztfX3dlYWsgaW50IHN1YnByb2dfdW50cnVzdGVkX3JlYWQodm9pZCAqcCBfX2FyZ191bnRydXN0ZWQpCiYjNDM7ewomIzQzOwlyZXR1cm4gKihjaGFyICopcDsKJiM0Mzt9CiYjNDM7CiYjNDM7U0VDKCYjMzQ7c29ja2V0JiMzNDspCiYjNDM7X19zdWNjZXNzCiYjNDM7X19jYXBzX3VucHJpdihDQVBfQlBGKQomIzQzO19fZmFpbHVyZV91bnByaXYKJiM0MztfX21zZ191bnByaXYoJiMzNDtyZG9ubHlfdW50cnVzdGVkX21lbSBhY2Nlc3MgaXMgYWxsb3dlZCBvbmx5IHRvIENBUF9QRVJGTU9OIGFuZCBDQVBfU1lTX0FETUlOJiMzNDspCiYjNDM7aW50IGFyZ191bnRydXN0ZWRfcmVhZF9ub3BlcmZtb24odm9pZCAqY3R4KQomIzQzO3sKJiM0MzsJcmV0dXJuIHN1YnByb2dfdW50cnVzdGVkX3JlYWQoMCk7CiYjNDM7fQomIzQzOwomIzQzO2NoYXIgX2xpY2Vuc2VbXSBTRUMoJiMzNDtsaWNlbnNlJiMzNDspID0gJiMzNDtHUEwmIzM0OzsKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTAgMTY6MTU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNzU0NAoJCQkJCQkJb3V0cHV0OiAzNAoJCQkJCQkJdGhvdWdodHM6IDExMTgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHlzaXMgb2YgQlBGIEtmdW5jIFBlcm1pc3Npb25zIFBhdGNoKioKCk9rYXksIGxldCYjMzk7cyBicmVhayB0aGlzIGRvd24uIFRoaXMgcGF0Y2ggaXMgZm9jdXNlZCBvbiBCUEYga2Z1bmNzLCBzcGVjaWZpY2FsbHkgcmVsYXRlZCB0byB0aGUgdmVyaWZpZXIgYW5kIHBlcm1pc3Npb24gY2hlY2tzLiBNeSBpbml0aWFsIGFzc2Vzc21lbnQgaXMgdGhhdCB0aGlzIHdhcnJhbnRzIGZ1enppbmcgYmFzZWQgb24gdGhlIHBhdGNoJiMzOTtzIHRvdWNoZXMgdG8gY29yZSBCUEYgdmVyaWZpZXIgbG9naWMsIHdoaWNoIGlzIHJlYWNoYWJsZSB2aWEgdGhlIGBicGYoKWAgc3lzY2FsbCBhbmQgZmFsbHMgdW5kZXIgdGhlICYjMzQ7Y29yZSBzdWJzeXN0ZW0mIzM0OyBjYXRlZ29yeSBhY2NvcmRpbmcgdG8gc2VjdGlvbiAzLgoKVGhlIHBhdGNoIGl0c2VsZiBpcyBhZGRpbmcgYSBuZXcgZmxhZywgYEtGX1BFUkZNT05gLCBkZWZpbmVkIGluIGBpbmNsdWRlL2xpbnV4L2J0Zi5oYC4gVGhpcyBpcyBpbW1lZGlhdGVseSBzdXNwaWNpb3VzIOKAkyBpbnRyb2R1Y2luZyBhIG5ldyBwZXJtaXNzaW9uIHJlcXVpcmVtZW50IHN1Z2dlc3RzIGEgcG90ZW50aWFsIGF0dGFjayBzdXJmYWNlLiBUaGlzIGZsYWcgaXMgdGhlbiBhcHBsaWVkIHRvIGEgc3Vic3RhbnRpYWwgbnVtYmVyIG9mIGtmdW5jcyB3aXRoaW4gYGtlcm5lbC9icGYvaGVscGVycy5jYC4gU3BlY2lmaWNhbGx5LCBJIHNlZSBpdCBhcHBsaWVkIHRvIGEgdmFyaWV0eSBvZiByZWFkL3dyaXRlIGZ1bmN0aW9ucyBhbmQgc3RyaW5nIG1hbmlwdWxhdGlvbiBmdW5jdGlvbnMsIGluY2x1ZGluZyBgYnBmX3Jkb25seV9jYXN0YCwgYSBudW1iZXIgb2YgaXRlcmF0b3IgZnVuY3Rpb25zIGFuZCBzdHJpbmcgZnVuY3Rpb25zLCBhbmQgYGJwZl9zdHJlYW1fdnByaW50a2AsIHdoaWNoIHN0YW5kcyBvdXQuCgpUaGUgY29yZSBvZiB0aGUgY2hhbmdlIHJlc2lkZXMgaW4gYGtlcm5lbC9icGYvdmVyaWZpZXIuY2AuICBgY2hlY2tfbWVtX2FjY2VzcygpYCBub3cgaW5jbHVkZXMgYSBjaGVjayBiYXNlZCBvbiB0aGUgbmV3IGBLRl9QRVJGTU9OYCBmbGFnLiBFc3NlbnRpYWxseSwgaWYgYSBwb2ludGVyIGlzIHVudHJ1c3RlZCBhbmQgcmVhZC1vbmx5LCBpdCBub3cgcmVxdWlyZXMgYENBUF9QRVJGTU9OYCAob3IgYENBUF9TWVNfQURNSU5gLCBuYXR1cmFsbHkpIHVubGVzcyBgZW52LSZndDthbGxvd19wdHJfbGVha3NgIGlzIHNldC4gVGhlIGFkZGVkIGBpc19rZnVuY19wZXJmbW9uKClgIGhlbHBlciBpcyB0aGVuIHVzZWQgYnkgdGhlIG1vcmUgc2lnbmlmaWNhbnQgYGNoZWNrX2tmdW5jX2NhbGwoKWAgZnVuY3Rpb24uICBUaGlzIGZ1bmN0aW9uIHdpbGwgbm93IGJsb2NrIGNhbGxzIHRvIHRob3NlIGtmdW5jcyB0aGF0IGFyZSB0YWdnZWQgd2l0aCB0aGUgYEtGX1BFUkZNT05gIGZsYWcgd2l0aG91dCB0aGUgbmVjZXNzYXJ5IGNhcGFiaWxpdHkuCgpGcm9tIGEgZnV6emluZyBwZXJzcGVjdGl2ZSwgSSYjMzk7bSBnb2luZyB0byB3YW50IHRvIGZvY3VzIG9uOgoKKiAgIFRoZSBmdW5jdGlvbnMgbW9kaWZpZWQgaW4gYGtlcm5lbC9icGYvdmVyaWZpZXIuY2A6IHNwZWNpZmljYWxseSwgYGNoZWNrX2tmdW5jX2NhbGxgIGFuZCBgY2hlY2tfbWVtX2FjY2Vzc2Ag4oCTIHRoZXNlIGFyZSBjbGVhcmx5IHRoZSBnYXRla2VlcGVycyBhbmQgdGhlIGNyaXRpY2FsIHBvaW50cyBvZiBlbmZvcmNlbWVudC4KKiAgIFRoZSBrZnVuY3MgdGhlbXNlbHZlcywgZXNwZWNpYWxseSB0aG9zZSBub3cgcmVxdWlyaW5nIGBDQVBfUEVSRk1PTmAuICBJdCYjMzk7cyB1c2VmdWwgdG8ga2VlcCB0cmFjayBvZiB0aGUgaGVscGVyIGZ1bmN0aW9uLCBgaXNfa2Z1bmNfcGVyZm1vbigpYCB0b28uCiogICBUaGUgb3ZlcmFsbCBlbnRyeXBvaW50IHRvIEJQRiB2ZXJpZmllciwgdGhlIGhlbHBlciBmdW5jdGlvbiBpdHNlbGYgYGJwZl9jaGVja2AuCgpJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgZXhhY3QgY29uZGl0aW9ucyB1bmRlciB3aGljaCBgZW52LSZndDthbGxvd19wdHJfbGVha3NgIGNhbiBiZSBzZXQsIGFzIHRoYXQgY291bGQgYnlwYXNzIHRoZSBuZXcgcmVzdHJpY3Rpb25zLiBJdCB3b3VsZCBiZSBwcnVkZW50IHRvIGluc3BlY3QgdGhlIGNvZGUgdG8gdW5kZXJzdGFuZCB3aGF0IHZhbHVlcyBmb3IgdGhlIGFyZ3VtZW50cyBmb3IgdGhlc2UgZnVuY3Rpb25zIHdpbGwgcmVzdWx0IGluIGFuIGFsbG93ZWQgY2FsbCB2ZXJzdXMgYSBibG9ja2VkIGNhbGwuIEkmIzM5O20gZ29pbmcgdG8gdXNlIGdyZXBwZXIgb3IgcmVhZC1maWxlIHRvIGNhcmVmdWxseSBleGFtaW5lIHRoZSBzdXJyb3VuZGluZyBjb2RlIGluIGBrZXJuZWwvYnBmL3ZlcmlmaWVyLmNgIHRvIHVuZGVyc3RhbmQgdGhlIGZsb3cgd2l0aGluIHRoZXNlIGZ1bmN0aW9ucyBhbmQgaG93IHRoZXkgcmVsYXRlIHRvIHRoZSBCUEYgcHJvZ3JhbSBsb2FkaW5nIHByb2Nlc3MuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTAgMTY6MTY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y2hlY2tfa2Z1bmNfY2FsbCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2tlcm5lbC9icGYvdmVyaWZpZXIuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtrZXJuZWwvYnBmL3ZlcmlmaWVyLmM9MTM3Njg9c3RhdGljIGludCBjaGVja19yZXR1cm5fY29kZShzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52LCBpbnQgcmVnbm8sIGNvbnN0IGNoYXIgKnJlZ19uYW1lKTtcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xMzc2OS1cbmtlcm5lbC9icGYvdmVyaWZpZXIuYzoxMzc3MDpzdGF0aWMgaW50IGNoZWNrX2tmdW5jX2NhbGwoc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudiwgc3RydWN0IGJwZl9pbnNuICppbnNuLFxua2VybmVsL2JwZi92ZXJpZmllci5jLTEzNzcxLVx0XHRcdCAgICBpbnQgKmluc25faWR4X3ApXG4tLVxua2VybmVsL2JwZi92ZXJpZmllci5jPTE4MjUyPXN0YXRpYyBpbnQgZG9fY2hlY2tfaW5zbihzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52LCBib29sICpkb19wcmludF9zdGF0ZSlcbi0tXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTgzMjQtXHRcdFx0aWYgKGluc24tXHUwMDNlc3JjX3JlZyA9PSBCUEZfUFNFVURPX0tGVU5DX0NBTEwpXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6MTgzMjU6XHRcdFx0XHRyZXR1cm4gY2hlY2tfa2Z1bmNfY2FsbChlbnYsIGluc24sIFx1MDAyNmVudi1cdTAwM2VpbnNuX2lkeCk7XG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTgzMjYtXHRcdFx0cmV0dXJuIGNoZWNrX2hlbHBlcl9jYWxsKGVudiwgaW5zbiwgXHUwMDI2ZW52LVx1MDAzZWluc25faWR4KTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMCAxNjoxNjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA5NjAwCgkJCQkJCQlvdXRwdXQ6IDMzCgkJCQkJCQl0aG91Z2h0czogMjIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgc3VtbWFyeSwgYXMgdGhvdWdoIEkmIzM5O20gdGhpbmtpbmcgdGhyb3VnaCB0aGlzIHByb2Nlc3M6CgoqKkRpdmluZyBpbnRvIHRoZSBCUEYgVmVyaWZpZXIqKgoKQWxyaWdodCwgdGltZSB0byB0cm91Ymxlc2hvb3QgdGhpcyBtZW1vcnkgYWNjZXNzIGlzc3VlLiBJIGtub3cgaXQmIzM5O3MgcHJvYmFibHkgc29tZXdoZXJlIGRlZXAgd2l0aGluIHRoZSBCUEYgdmVyaWZpZXIuIExldCYjMzk7cyBzdGFydCBieSB6ZXJvaW5nIGluIG9uIGBjaGVja19tZW1fYWNjZXNzYC4gVGhhdCBmdW5jdGlvbiBpbiBga2VybmVsL2JwZi92ZXJpZmllci5jYCBpcyB0aGUgcHJpbWUgc3VzcGVjdCBmb3IgaGFuZGxpbmcgbWVtb3J5IHNhZmV0eSBjaGVja3MsIHdoaWNoIGlzIGV4YWN0bHkgd2hlcmUgSSBleHBlY3QgdGhlIHJvb3QgY2F1c2UgdG8gYmUuIExldCBtZSBncmFiIHRoZSBzb3VyY2UgYW5kIGdldCB0byBpdC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMCAxNjoxNjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjaGVja19tZW1fYWNjZXNzJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7a2VybmVsL2JwZi92ZXJpZmllci5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2tlcm5lbC9icGYvdmVyaWZpZXIuYz01OD1zdGF0aWMgYm9vbCBicGZfZ2xvYmFsX3BlcmNwdV9tYV9zZXQ7XG4tLVxua2VybmVsL2JwZi92ZXJpZmllci5jLTEwNS0gKiBjYW4gYmU6IFBUUl9UT19NQVBfVkFMVUUsIFBUUl9UT19DVFgsIFBUUl9UT19TVEFDSywgUFRSX1RPX1NPQ0tFVC4gVGhlc2UgYXJlXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6MTA2OiAqIGZvdXIgcG9pbnRlciB0eXBlcyByZWNvZ25pemVkIGJ5IGNoZWNrX21lbV9hY2Nlc3MoKSBmdW5jdGlvbi5cbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xMDctICpcbi0tXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM9ODQ1PXN0YXRpYyBib29sIGlzX2R5bnB0cl9yZWdfdmFsaWRfdW5pbml0KHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYsIHN0cnVjdCBicGZfcmVnX3N0YXRlICpyZWcpXG4tLVxua2VybmVsL2JwZi92ZXJpZmllci5jLTg1NS1cdCAqIGVycm9yIGJlY2F1c2UgdGhpcyBqdXN0IG1lYW5zIHRoZSBzdGFjayBzdGF0ZSBoYXNuJiMzOTt0IGJlZW4gdXBkYXRlZCB5ZXQuXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6ODU2Olx0ICogV2Ugd2lsbCBkbyBjaGVja19tZW1fYWNjZXNzIHRvIGNoZWNrIGFuZCB1cGRhdGUgc3RhY2sgYm91bmRzIGxhdGVyLlxua2VybmVsL2JwZi92ZXJpZmllci5jLTg1Ny1cdCAqL1xuLS1cbmtlcm5lbC9icGYvdmVyaWZpZXIuYz0xMDA0PXN0YXRpYyBib29sIGlzX2l0ZXJfcmVnX3ZhbGlkX3VuaW5pdChzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52LFxuLS1cbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xMDEwLVx0LyogRm9yIC1FUkFOR0UgKGkuZS4gc3BpIG5vdCBmYWxsaW5nIGludG8gYWxsb2NhdGVkIHN0YWNrIHNsb3RzKSwgd2Vcbmtlcm5lbC9icGYvdmVyaWZpZXIuYzoxMDExOlx0ICogd2lsbCBkbyBjaGVja19tZW1fYWNjZXNzIHRvIGNoZWNrIGFuZCB1cGRhdGUgc3RhY2sgYm91bmRzIGxhdGVyLCBzb1xua2VybmVsL2JwZi92ZXJpZmllci5jLTEwMTItXHQgKiByZXR1cm4gdHJ1ZSBmb3IgdGhhdCBjYXNlLlxuLS1cbmtlcm5lbC9icGYvdmVyaWZpZXIuYz0xMTY0PXN0YXRpYyBib29sIGlzX2lycV9mbGFnX3JlZ192YWxpZF91bmluaXQoc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudiwgc3RydWN0IGJwZl9yZWdfc3RhdGUgKnJlZylcbi0tXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTE3MC1cdC8qIEZvciAtRVJBTkdFIChpLmUuIHNwaSBub3QgZmFsbGluZyBpbnRvIGFsbG9jYXRlZCBzdGFjayBzbG90cyksIHdlXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6MTE3MTpcdCAqIHdpbGwgZG8gY2hlY2tfbWVtX2FjY2VzcyB0byBjaGVjayBhbmQgdXBkYXRlIHN0YWNrIGJvdW5kcyBsYXRlciwgc29cbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xMTcyLVx0ICogcmV0dXJuIHRydWUgZm9yIHRoYXQgY2FzZS5cbi0tXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM9MzUwMT1zdGF0aWMgdm9pZCBzY3J1Yl9zcGVjaWFsX3Nsb3Qoc3RydWN0IGJwZl9mdW5jX3N0YXRlICpzdGF0ZSwgaW50IHNwaSlcbi0tXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMzUxMy0vKiBjaGVja19zdGFja197cmVhZCx3cml0ZX1fZml4ZWRfb2ZmIGZ1bmN0aW9ucyB0cmFjayBzcGlsbC9maWxsIG9mIHJlZ2lzdGVycyxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYzozNTE0OiAqIHN0YWNrIGJvdW5kYXJ5IGFuZCBhbGlnbm1lbnQgYXJlIGNoZWNrZWQgaW4gY2hlY2tfbWVtX2FjY2VzcygpXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMzUxNS0gKi9cbi0tXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM9NDI5Mj1zdGF0aWMgaW50IGNoZWNrX21hcF9hY2Nlc3NfdHlwZShzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52LCBzdHJ1Y3QgYnBmX3JlZ19zdGF0ZSAqcmVnLFxuLS1cbmtlcm5lbC9icGYvdmVyaWZpZXIuYy00MzEzLS8qIGNoZWNrIHJlYWQvd3JpdGUgaW50byBtZW1vcnkgcmVnaW9uIChlLmcuLCBtYXAgdmFsdWUsIHJpbmdidWYgc2FtcGxlLCBldGMpICovXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6NDMxNDpzdGF0aWMgaW50IF9fY2hlY2tfbWVtX2FjY2VzcyhzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52LCBzdHJ1Y3QgYnBmX3JlZ19zdGF0ZSAqcmVnLCBhcmdub190IGFyZ25vLFxua2VybmVsL2JwZi92ZXJpZmllci5jLTQzMTUtXHRcdFx0ICAgICAgaW50IG9mZiwgaW50IHNpemUsIHUzMiBtZW1fc2l6ZSxcbi0tXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM9NDM1Mj1zdGF0aWMgaW50IGNoZWNrX21lbV9yZWdpb25fYWNjZXNzKHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYsIHN0cnVjdCBicGZfcmVnX3N0YXRlICpyZWcsIGFyZ25vX3QgYXJnbm8sXG4tLVxua2VybmVsL2JwZi92ZXJpZmllci5jLTQzODYtXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6NDM4NzpcdGVyciA9IF9fY2hlY2tfbWVtX2FjY2VzcyhlbnYsIHJlZywgYXJnbm8sIHJlZ19zbWluKHJlZykgJiM0Mzsgb2ZmLCBzaXplLFxua2VybmVsL2JwZi92ZXJpZmllci5jLTQzODgtXHRcdFx0XHQgbWVtX3NpemUsIHplcm9fc2l6ZV9hbGxvd2VkKTtcbi0tXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtNDQxNS1cbmtlcm5lbC9icGYvdmVyaWZpZXIuYzo0NDE2Olx0ZXJyID0gX19jaGVja19tZW1fYWNjZXNzKGVudiwgcmVnLCBhcmdubywgcmVnX3VtYXgocmVnKSAmIzQzOyBvZmYsIHNpemUsXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtNDQxNy1cdFx0XHRcdCBtZW1fc2l6ZSwgemVyb19zaXplX2FsbG93ZWQpO1xuLS1cbmtlcm5lbC9icGYvdmVyaWZpZXIuYz00ODYxPXN0YXRpYyBpbnQgY2hlY2tfcGFja2V0X2FjY2VzcyhzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52LCBzdHJ1Y3QgYnBmX3JlZ19zdGF0ZSAqcmVnLCBhcmdub190IGFyZ25vLCBpbnQgb2ZmLFxuLS1cbmtlcm5lbC9icGYvdmVyaWZpZXIuYy00ODc0LVxua2VybmVsL2JwZi92ZXJpZmllci5jOjQ4NzU6XHQvKiBfX2NoZWNrX21lbV9hY2Nlc3MgaGFzIG1hZGUgc3VyZSBcJiMzNDtvZmYgJiM0Mzsgc2l6ZSAtIDFcJiMzNDsgaXMgd2l0aGluIHUxNi5cbmtlcm5lbC9icGYvdmVyaWZpZXIuYy00ODc2LVx0ICogcmVnX3VtYXgocmVnKSBjYW4mIzM5O3QgYmUgYmlnZ2VyIHRoYW4gTUFYX1BBQ0tFVF9PRkYgd2hpY2ggaXMgMHhmZmZmLFxua2VybmVsL2JwZi92ZXJpZmllci5jLTQ4NzctXHQgKiBvdGhlcndpc2UgZmluZF9nb29kX3BrdF9wb2ludGVycyB3b3VsZCBoYXZlIHJlZnVzZWQgdG8gc2V0IHJhbmdlIGluZm9cbmtlcm5lbC9icGYvdmVyaWZpZXIuYzo0ODc4Olx0ICogdGhhdCBfX2NoZWNrX21lbV9hY2Nlc3Mgd291bGQgaGF2ZSByZWplY3RlZCB0aGlzIHBrdCBhY2Nlc3MuXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtNDg3OS1cdCAqIFRoZXJlZm9yZSwgXCYjMzQ7b2ZmICYjNDM7IHJlZ191bWF4KHJlZykgJiM0Mzsgc2l6ZSAtIDFcJiMzNDsgd29uJiMzOTt0IG92ZXJmbG93IHUzMi5cbi0tXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM9NjMzMD1zdGF0aWMgaW50IGNoZWNrX21hcF9tZW1fcmVhZChzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52LCBzdHJ1Y3QgYnBmX3JlZ19zdGF0ZSAqcmVnLCBpbnQgb2ZmLFxuLS1cbmtlcm5lbC9icGYvdmVyaWZpZXIuYy02MzgwLSAqL1xua2VybmVsL2JwZi92ZXJpZmllci5jOjYzODE6c3RhdGljIGludCBjaGVja19tZW1fYWNjZXNzKHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYsIGludCBpbnNuX2lkeCwgc3RydWN0IGJwZl9yZWdfc3RhdGUgKnJlZywgYXJnbm9fdCBhcmdubyxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy02MzgyLVx0XHRcdCAgICBpbnQgb2ZmLCBpbnQgYnBmX3NpemUsIGVudW0gYnBmX2FjY2Vzc190eXBlIHQsXG4tLVxua2VybmVsL2JwZi92ZXJpZmllci5jPTY2NDA9c3RhdGljIGludCBjaGVja19sb2FkX21lbShzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52LCBzdHJ1Y3QgYnBmX2luc24gKmluc24sXG4tLVxua2VybmVsL2JwZi92ZXJpZmllci5jLTY2NzQtXHRicGZfZGlhZ19tb2RfYmVnaW4oZW52LCBcdTAwMjZyZWdzW2luc24tXHUwMDNlZHN0X3JlZ10sIE5VTEwsIEJQRl9ESUFHX01PRF9XUklURSk7XG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6NjY3NTpcdGVyciA9IGNoZWNrX21lbV9hY2Nlc3MoZW52LCBlbnYtXHUwMDNlaW5zbl9pZHgsIHJlZ3MgJiM0MzsgaW5zbi1cdTAwM2VzcmNfcmVnLCBhcmdub19mcm9tX3JlZyhpbnNuLVx1MDAzZXNyY19yZWcpLCBpbnNuLVx1MDAzZW9mZixcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy02Njc2LVx0XHRcdCAgICAgICBCUEZfU0laRShpbnNuLVx1MDAzZWNvZGUpLCBCUEZfUkVBRCwgaW5zbi1cdTAwM2Vkc3RfcmVnLFxuLS1cbmtlcm5lbC9icGYvdmVyaWZpZXIuYz02Njg3PXN0YXRpYyBpbnQgY2hlY2tfc3RvcmVfcmVnKHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYsIHN0cnVjdCBicGZfaW5zbiAqaW5zbixcbi0tXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtNjcxNi1cdC8qIENoZWNrIGlmIChkc3RfcmVnICYjNDM7IG9mZikgaXMgd3JpdGVhYmxlLiAqL1xua2VybmVsL2JwZi92ZXJpZmllci5jOjY3MTc6XHRlcnIgPSBjaGVja19tZW1fYWNjZXNzKGVudiwgZW52LVx1MDAzZWluc25faWR4LCByZWdzICYjNDM7IGluc24tXHUwMDNlZHN0X3JlZywgYXJnbm9fZnJvbV9yZWcoaW5zbi1cdTAwM2Vkc3RfcmVnKSwgaW5zbi1cdTAwM2VvZmYsXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtNjcxOC1cdFx0XHQgICAgICAgQlBGX1NJWkUoaW5zbi1cdTAwM2Vjb2RlKSwgQlBGX1dSSVRFLCBpbnNuLVx1MDAzZXNyY19yZWcsXG4tLVxua2VybmVsL2JwZi92ZXJpZmllci5jPTY3MjU9c3RhdGljIGludCBjaGVja19hdG9taWNfcm13KHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYsXG4tLVxua2VybmVsL2JwZi92ZXJpZmllci5jLTY3ODUtXHQgKi9cbmtlcm5lbC9icGYvdmVyaWZpZXIuYzo2Nzg2Olx0ZXJyID0gY2hlY2tfbWVtX2FjY2VzcyhlbnYsIGVudi1cdTAwM2VpbnNuX2lkeCwgZHN0X3JlZywgYXJnbm9fZnJvbV9yZWcoaW5zbi1cdTAwM2Vkc3RfcmVnKSwgaW5zbi1cdTAwM2VvZmYsXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtNjc4Ny1cdFx0XHQgICAgICAgQlBGX1NJWkUoaW5zbi1cdTAwM2Vjb2RlKSwgQlBGX1JFQUQsIC0xLCB0cnVlLCBmYWxzZSk7XG4tLVxua2VybmVsL2JwZi92ZXJpZmllci5jLTY3ODktXHRcdGJwZl9kaWFnX21vZF9iZWdpbihlbnYsIGN1cl9yZWdzKGVudikgJiM0MzsgbG9hZF9yZWcsIE5VTEwsIEJQRl9ESUFHX01PRF9XUklURSk7XG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6Njc5MDpcdFx0ZXJyID0gY2hlY2tfbWVtX2FjY2VzcyhlbnYsIGVudi1cdTAwM2VpbnNuX2lkeCwgZHN0X3JlZywgYXJnbm9fZnJvbV9yZWcoaW5zbi1cdTAwM2Vkc3RfcmVnKSxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy02NzkxLVx0XHRcdFx0ICAgICAgIGluc24tXHUwMDNlb2ZmLCBCUEZfU0laRShpbnNuLVx1MDAzZWNvZGUpLFxuLS1cbmtlcm5lbC9icGYvdmVyaWZpZXIuYy02ODAyLVx0LyogQ2hlY2sgd2hldGhlciB3ZSBjYW4gd3JpdGUgaW50byB0aGUgc2FtZSBtZW1vcnkuICovXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6NjgwMzpcdGVyciA9IGNoZWNrX21lbV9hY2Nlc3MoZW52LCBlbnYtXHUwMDNlaW5zbl9pZHgsIGRzdF9yZWcsIGFyZ25vX2Zyb21fcmVnKGluc24tXHUwMDNlZHN0X3JlZyksIGluc24tXHUwMDNlb2ZmLFxua2VybmVsL2JwZi92ZXJpZmllci5jLTY4MDQtXHRcdFx0ICAgICAgIEJQRl9TSVpFKGluc24tXHUwMDNlY29kZSksIEJQRl9XUklURSwgLTEsIHRydWUsIGZhbHNlKTtcbi0tXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM9NzYwNT1zdGF0aWMgaW50IHByb2Nlc3NfZHlucHRyX2Z1bmMoc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudiwgc3RydWN0IGJwZl9yZWdfc3RhdGUgKnJlZyxcbi0tXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtNzY1MS1cdFx0Zm9yIChpID0gMDsgaSBcdTAwM2MgQlBGX0RZTlBUUl9TSVpFOyBpICYjNDM7PSA4KSB7XG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6NzY1MjpcdFx0XHRlcnIgPSBjaGVja19tZW1fYWNjZXNzKGVudiwgaW5zbl9pZHgsIHJlZywgYXJnbm8sXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtNzY1My1cdFx0XHRcdFx0ICAgICAgIGksIEJQRl9EVywgQlBGX1dSSVRFLCAtMSwgZmFsc2UsIGZhbHNlKTtcbi0tXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM9Nzc0ND1zdGF0aWMgaW50IHByb2Nlc3NfaXRlcl9hcmcoc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudiwgc3RydWN0IGJwZl9yZWdfc3RhdGUgKnJlZywgYXJnbm9fdCBhcmdubywgaW50IGluc25faWR4LFxuLS1cbmtlcm5lbC9icGYvdmVyaWZpZXIuYy03Nzk0LVx0XHRmb3IgKGkgPSAwOyBpIFx1MDAzYyBucl9zbG90cyAqIDg7IGkgJiM0Mzs9IEJQRl9SRUdfU0laRSkge1xua2VybmVsL2JwZi92ZXJpZmllci5jOjc3OTU6XHRcdFx0ZXJyID0gY2hlY2tfbWVtX2FjY2VzcyhlbnYsIGluc25faWR4LCByZWcsIGFyZ25vLFxua2VybmVsL2JwZi92ZXJpZmllci5jLTc3OTYtXHRcdFx0XHRcdCAgICAgICBpLCBCUEZfRFcsIEJQRl9XUklURSwgLTEsIGZhbHNlLCBmYWxzZSk7XG4tLVxua2VybmVsL2JwZi92ZXJpZmllci5jPTEwODIzPXN0YXRpYyBpbnQgY2hlY2tfaGVscGVyX2NhbGwoc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudiwgc3RydWN0IGJwZl9pbnNuICppbnNuLFxuLS1cbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xMDkyOC1cdGZvciAoaSA9IDA7IGkgXHUwMDNjIG1ldGEuYXJnX3Jhd19tZW0uc2l6ZTsgaSYjNDM7JiM0MzspIHtcbmtlcm5lbC9icGYvdmVyaWZpZXIuYzoxMDkyOTpcdFx0ZXJyID0gY2hlY2tfbWVtX2FjY2VzcyhlbnYsIGluc25faWR4LCByZWdzICYjNDM7IG1ldGEuYXJnX3Jhd19tZW0ucmVnbm8sXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTA5MzAtXHRcdFx0XHQgICAgICAgYXJnbm9fZnJvbV9yZWcobWV0YS5hcmdfcmF3X21lbS5yZWdubyksIGksIEJQRl9CLFxuLS1cbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xMTE4My1cdFx0XHRcdCAqIGl0IHdpbGwgY29uZnVzZSB0aGUgY2hlY2sgb2YgUFRSX1RPX0JURl9JRCBpblxua2VybmVsL2JwZi92ZXJpZmllci5jOjExMTg0Olx0XHRcdFx0ICogY2hlY2tfbWVtX2FjY2VzcygpLlxua2VybmVsL2JwZi92ZXJpZmllci5jLTExMTg1LVx0XHRcdFx0ICovXG4tLVxua2VybmVsL2JwZi92ZXJpZmllci5jPTEyMTg1PXN0YXRpYyBpbnQgcHJvY2Vzc19pcnFfZmxhZyhzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52LCBzdHJ1Y3QgYnBmX3JlZ19zdGF0ZSAqcmVnLCBhcmdub190IGFyZ25vLFxuLS1cbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xMjIxOC1cbmtlcm5lbC9icGYvdmVyaWZpZXIuYzoxMjIxOTpcdFx0ZXJyID0gY2hlY2tfbWVtX2FjY2VzcyhlbnYsIGVudi1cdTAwM2VpbnNuX2lkeCwgcmVnLCBhcmdubywgMCwgQlBGX0RXLFxua2VybmVsL2JwZi92ZXJpZmllci5jLTEyMjIwLVx0XHRcdFx0ICAgICAgIEJQRl9XUklURSwgLTEsIGZhbHNlLCBmYWxzZSk7XG4tLVxua2VybmVsL2JwZi92ZXJpZmllci5jPTE4MjUyPXN0YXRpYyBpbnQgZG9fY2hlY2tfaW5zbihzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52LCBib29sICpkb19wcmludF9zdGF0ZSlcbi0tXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTgyODktXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6MTgyOTA6XHRcdGVyciA9IGNoZWNrX21lbV9hY2Nlc3MoZW52LCBlbnYtXHUwMDNlaW5zbl9pZHgsIGN1cl9yZWdzKGVudikgJiM0MzsgaW5zbi1cdTAwM2Vkc3RfcmVnLCBhcmdub19mcm9tX3JlZyhpbnNuLVx1MDAzZWRzdF9yZWcpLFxua2VybmVsL2JwZi92ZXJpZmllci5jLTE4MjkxLVx0XHRcdFx0ICAgICAgIGluc24tXHUwMDNlb2ZmLCBCUEZfU0laRShpbnNuLVx1MDAzZWNvZGUpLFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzEwIDE2OjE2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDEyOTIyCgkJCQkJCQlvdXRwdXQ6IDI3CgkJCQkJCQl0aG91Z2h0czogNDAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgc3VtbWFyeSwgdGFraW5nIG9uIHRoZSBwZXJzb25hIHlvdSYjMzk7dmUgZGVzY3JpYmVkOgoKKipCUEYgVmVyaWZpZXIgJmFtcDsgS2Z1bmMgQ29uZmlndXJhdGlvbiBDaGVjayoqCgpBbHJpZ2h0LCB0aW1lIHRvIGdldCB0aGlzIHNvcnRlZC4gRmlyc3QsIEkgbmVlZCB0byBtYWtlIGFic29sdXRlbHkgY2VydGFpbiB0aGF0IHRoZSBCUEYgdmVyaWZpZXIgYW5kIGtmdW5jcyBhcmUgY29uZmlndXJlZCBjb3JyZWN0bHkuIEkmIzM5O2xsIG5lZWQgdG8gZG91YmxlLWNoZWNrIHRoZWlyIEtjb25maWcgcmVxdWlyZW1lbnRzIOKAkyB5b3Uga25vdywgbWFrZSBzdXJlIGFsbCB0aGUgZGVwZW5kZW5jaWVzIGFyZSBzYXRpc2ZpZWQgYW5kIHRoYXQgZXZlcnl0aGluZyBpcyBzZXQgdXAgZm9yIHRoZSBidWlsZC4gSXQmIzM5O3MgZWFzeSB0byBtaXNzIGEgY3J1Y2lhbCBsaXR0bGUgZmxhZyBhbmQgdGhlbiBzcGVuZCBhZ2VzIGRlYnVnZ2luZyBsYXRlci4KClRvIGRvIHRoaXMgZWZmaWNpZW50bHksIEkmIzM5O2xsIGdvIGRpcmVjdGx5IHRvIHRoZSBzb3VyY2UuIExldCYjMzk7cyBzdGFydCB3aXRoIGBrZXJuZWwvYnBmL01ha2VmaWxlYCBhbmQgYGtlcm5lbC9icGYvS2NvbmZpZ2AuIFRoZXNlIGFyZSB0aGUgY3J1Y2lhbCBmaWxlcyB0aGF0IGNvbnRyb2wgdGhlIGJ1aWxkIHByb2Nlc3MgYW5kIGRlZmluZSB0aGUgY29uZmlndXJhdGlvbiBvcHRpb25zLiBDaGVja2luZyB0aGVzZSBmaWxlcyBzaG91bGQgZ2l2ZSBtZSBhIGNsZWFyIHBpY3R1cmUgb2Ygd2hhdCYjMzk7cyBlbmFibGVkLCB3aGF0JiMzOTtzIGRpc2FibGVkLCBhbmQgYW55IHNwZWNpZmljIGRlcGVuZGVuY2llcyB0aGUgQlBGIHZlcmlmaWVyIG9yIGtmdW5jcyBoYXZlLiBUaGlzIGlzIHN0YW5kYXJkIHByb2NlZHVyZSwgYnV0IGl0IG5ldmVyIGh1cnRzIHRvIGJlIHRob3JvdWdoLCBlc3BlY2lhbGx5IHdoZW4gZGVhbGluZyB3aXRoIHN1Y2ggY29yZSBmdW5jdGlvbmFsaXR5LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzEwIDE2OjE2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3ZlcmlmaWVyLm8mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtrZXJuZWwvYnBmJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2tlcm5lbC9icGYvTWFrZWZpbGU9Nz1DRkxBR1NfY29yZS5vICYjNDM7PSAtV25vLW92ZXJyaWRlLWluaXQgJChjZmxhZ3Mtbm9nY3NlLXl5KVxua2VybmVsL2JwZi9NYWtlZmlsZS04LVxua2VybmVsL2JwZi9NYWtlZmlsZTo5Om9iai0kKENPTkZJR19CUEZfU1lTQ0FMTCkgJiM0Mzs9IHN5c2NhbGwubyB2ZXJpZmllci5vIGlub2RlLm8gaGVscGVycy5vIHRudW0ubyBjbnVtLm8gbG9nLm8gdG9rZW4ubyBsaXZlbmVzcy5vIGNvbnN0X2ZvbGQubyBkaWFnbm9zdGljcy5vXG5rZXJuZWwvYnBmL01ha2VmaWxlLTEwLW9iai0kKENPTkZJR19CUEZfU1lTQ0FMTCkgJiM0Mzs9IGJwZl9pdGVyLm8gbWFwX2l0ZXIubyB0YXNrX2l0ZXIubyBwcm9nX2l0ZXIubyBsaW5rX2l0ZXIub1xuLS1cbmtlcm5lbC9icGYvYnBmX2xzbS5jPTQxMz1jb25zdCBzdHJ1Y3QgYnBmX3Byb2dfb3BzIGxzbV9wcm9nX29wcyA9IHtcbi0tXG5rZXJuZWwvYnBmL2JwZl9sc20uYy00MTUtXG5rZXJuZWwvYnBmL2JwZl9sc20uYzo0MTY6Y29uc3Qgc3RydWN0IGJwZl92ZXJpZmllcl9vcHMgbHNtX3ZlcmlmaWVyX29wcyA9IHtcbmtlcm5lbC9icGYvYnBmX2xzbS5jLTQxNy1cdC5nZXRfZnVuY19wcm90byA9IGJwZl9sc21fZnVuY19wcm90byxcbi0tXG5rZXJuZWwvYnBmL2JwZl9zdHJ1Y3Rfb3BzLmM9NjQ9c3RhdGljIERFRklORV9NVVRFWCh1cGRhdGVfbXV0ZXgpO1xuLS1cbmtlcm5lbC9icGYvYnBmX3N0cnVjdF9vcHMuYy02OC1cbmtlcm5lbC9icGYvYnBmX3N0cnVjdF9vcHMuYzo2OTpjb25zdCBzdHJ1Y3QgYnBmX3ZlcmlmaWVyX29wcyBicGZfc3RydWN0X29wc192ZXJpZmllcl9vcHMgPSB7XG5rZXJuZWwvYnBmL2JwZl9zdHJ1Y3Rfb3BzLmMtNzAtfTtcbi0tXG5rZXJuZWwvYnBmL2J0Zi5jPTU5NjQ9c3RhdGljIHN0cnVjdCBidGYgKmJ0Zl9wYXJzZShjb25zdCB1bmlvbiBicGZfYXR0ciAqYXR0ciwgYnBmcHRyX3QgdWF0dHIsXG4tLVxua2VybmVsL2JwZi9idGYuYy01OTgwLVxua2VybmVsL2JwZi9idGYuYzo1OTgxOlx0LyogdXNlciBjb3VsZCBoYXZlIHJlcXVlc3RlZCB2ZXJib3NlIHZlcmlmaWVyIG91dHB1dFxua2VybmVsL2JwZi9idGYuYy01OTgyLVx0ICogYW5kIHN1cHBsaWVkIGJ1ZmZlciB0byBzdG9yZSB0aGUgdmVyaWZpY2F0aW9uIHRyYWNlXG4tLVxua2VybmVsL2JwZi9jZ3JvdXAuYz0xOTIzPWNvbnN0IHN0cnVjdCBicGZfcHJvZ19vcHMgY2dfZGV2X3Byb2dfb3BzID0ge1xuLS1cbmtlcm5lbC9icGYvY2dyb3VwLmMtMTkyNS1cbmtlcm5lbC9icGYvY2dyb3VwLmM6MTkyNjpjb25zdCBzdHJ1Y3QgYnBmX3ZlcmlmaWVyX29wcyBjZ19kZXZfdmVyaWZpZXJfb3BzID0ge1xua2VybmVsL2JwZi9jZ3JvdXAuYy0xOTI3LVx0LmdldF9mdW5jX3Byb3RvXHRcdD0gY2dyb3VwX2Rldl9mdW5jX3Byb3RvLFxuLS1cbmtlcm5lbC9icGYvY2dyb3VwLmM9MjQ3OD1zdGF0aWMgdTMyIHN5c2N0bF9jb252ZXJ0X2N0eF9hY2Nlc3MoZW51bSBicGZfYWNjZXNzX3R5cGUgdHlwZSxcbi0tXG5rZXJuZWwvYnBmL2Nncm91cC5jLTI1NDEtXG5rZXJuZWwvYnBmL2Nncm91cC5jOjI1NDI6Y29uc3Qgc3RydWN0IGJwZl92ZXJpZmllcl9vcHMgY2dfc3lzY3RsX3ZlcmlmaWVyX29wcyA9IHtcbmtlcm5lbC9icGYvY2dyb3VwLmMtMjU0My1cdC5nZXRfZnVuY19wcm90b1x0XHQ9IHN5c2N0bF9mdW5jX3Byb3RvLFxuLS1cbmtlcm5lbC9icGYvY2dyb3VwLmM9Mjc1Nj1zdGF0aWMgaW50IGNnX3NvY2tvcHRfZ2V0X3Byb2xvZ3VlKHN0cnVjdCBicGZfaW5zbiAqaW5zbl9idWYsXG4tLVxua2VybmVsL2JwZi9jZ3JvdXAuYy0yNzY0LVxua2VybmVsL2JwZi9jZ3JvdXAuYzoyNzY1OmNvbnN0IHN0cnVjdCBicGZfdmVyaWZpZXJfb3BzIGNnX3NvY2tvcHRfdmVyaWZpZXJfb3BzID0ge1xua2VybmVsL2JwZi9jZ3JvdXAuYy0yNzY2LVx0LmdldF9mdW5jX3Byb3RvXHRcdD0gY2dfc29ja29wdF9mdW5jX3Byb3RvLFxuLS1cbmtlcm5lbC9icGYvZml4dXBzLmM9NzQ2PWludCBicGZfY29udmVydF9jdHhfYWNjZXNzZXMoc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudilcbi0tXG5rZXJuZWwvYnBmL2ZpeHVwcy5jLTc0OC1cdHN0cnVjdCBicGZfc3VicHJvZ19pbmZvICpzdWJwcm9ncyA9IGVudi1cdTAwM2VzdWJwcm9nX2luZm87XG5rZXJuZWwvYnBmL2ZpeHVwcy5jOjc0OTpcdGNvbnN0IHN0cnVjdCBicGZfdmVyaWZpZXJfb3BzICpvcHMgPSBlbnYtXHUwMDNlb3BzO1xua2VybmVsL2JwZi9maXh1cHMuYy03NTAtXHRpbnQgaSwgY250LCBzaXplLCBjdHhfZmllbGRfc2l6ZSwgcmV0LCBkZWx0YSA9IDAsIGVwaWxvZ3VlX2NudCA9IDA7XG4tLVxua2VybmVsL2JwZi9oZWxwZXJzLmMtMzUtLyogSWYga2VybmVsIHN1YnN5c3RlbSBpcyBhbGxvd2luZyBlQlBGIHByb2dyYW1zIHRvIGNhbGwgdGhpcyBmdW5jdGlvbixcbmtlcm5lbC9icGYvaGVscGVycy5jOjM2OiAqIGluc2lkZSBpdHMgb3duIHZlcmlmaWVyX29wcy1cdTAwM2VnZXRfZnVuY19wcm90bygpIGNhbGxiYWNrIGl0IHNob3VsZCByZXR1cm5cbmtlcm5lbC9icGYvaGVscGVycy5jLTM3LSAqIGJwZl9tYXBfbG9va3VwX2VsZW1fcHJvdG8sIHNvIHRoYXQgdmVyaWZpZXIgY2FuIHByb3Blcmx5IGNoZWNrIHRoZSBhcmd1bWVudHNcbi0tXG5rZXJuZWwvYnBmL3N5c2NhbGwuYz02NjMwPXN5c2NhbGxfcHJvZ19mdW5jX3Byb3RvKGVudW0gYnBmX2Z1bmNfaWQgZnVuY19pZCwgY29uc3Qgc3RydWN0IGJwZl9wcm9nICpwcm9nKVxuLS1cbmtlcm5lbC9icGYvc3lzY2FsbC5jLTY2NDYtXG5rZXJuZWwvYnBmL3N5c2NhbGwuYzo2NjQ3OmNvbnN0IHN0cnVjdCBicGZfdmVyaWZpZXJfb3BzIGJwZl9zeXNjYWxsX3ZlcmlmaWVyX29wcyA9IHtcbmtlcm5lbC9icGYvc3lzY2FsbC5jLTY2NDgtXHQuZ2V0X2Z1bmNfcHJvdG8gID0gc3lzY2FsbF9wcm9nX2Z1bmNfcHJvdG8sXG4tLVxua2VybmVsL2JwZi90YXNrX2l0ZXIuYz05OTI9X19icGZfa2Z1bmMgc3RydWN0IHZtX2FyZWFfc3RydWN0ICpicGZfaXRlcl90YXNrX3ZtYV9uZXh0KHN0cnVjdCBicGZfaXRlcl90YXNrX3ZtYSAqaXQpXG4tLVxua2VybmVsL2JwZi90YXNrX2l0ZXIuYy0xMDEwLVx0Lypcbmtlcm5lbC9icGYvdGFza19pdGVyLmM6MTAxMTpcdCAqIFRoZSB2ZXJpZmllciBvbmx5IHRydXN0cyB2bV9tbSBhbmQgdm1fZmlsZSAoc2VlXG5rZXJuZWwvYnBmL3Rhc2tfaXRlci5jLTEwMTItXHQgKiBCVEZfVFlQRV9TQUZFX1RSVVNURURfT1JfTlVMTCBpbiB2ZXJpZmllci5jKS4gVGFrZSBhIHJlZmVyZW5jZVxuLS1cbmtlcm5lbC9icGYvdHJhbXBvbGluZS5jLTE3LS8qIGR1bW15IF9vcHMuIFRoZSB2ZXJpZmllciB3aWxsIG9wZXJhdGUgb24gdGFyZ2V0IHByb2dyYW0mIzM5O3Mgb3BzLiAqL1xua2VybmVsL2JwZi90cmFtcG9saW5lLmM6MTg6Y29uc3Qgc3RydWN0IGJwZl92ZXJpZmllcl9vcHMgYnBmX2V4dGVuc2lvbl92ZXJpZmllcl9vcHMgPSB7XG5rZXJuZWwvYnBmL3RyYW1wb2xpbmUuYy0xOS19O1xuLS1cbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0zOS1cbmtlcm5lbC9icGYvdmVyaWZpZXIuYzo0MDpzdGF0aWMgY29uc3Qgc3RydWN0IGJwZl92ZXJpZmllcl9vcHMgKiBjb25zdCBicGZfdmVyaWZpZXJfb3BzW10gPSB7XG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtNDEtI2RlZmluZSBCUEZfUFJPR19UWVBFKF9pZCwgX25hbWUsIHByb2dfY3R4X3R5cGUsIGtlcm5fY3R4X3R5cGUpIFxcXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6NDI6XHRbX2lkXSA9IFx1MDAyNiBfbmFtZSAjIyBfdmVyaWZpZXJfb3BzLFxua2VybmVsL2JwZi92ZXJpZmllci5jLTQzLSNkZWZpbmUgQlBGX01BUF9UWVBFKF9pZCwgX29wcylcbi0tXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM9NzI4MD1lbnVtIHtcbi0tXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtNzI5MS0gKiBGb3IgdHJhZGl0aW9uYWwgUFRSX1RPX01BUF9WQUxVRSBvciBQVFJfVE9fQlRGX0lEIHwgTUVNX0FMTE9DLCB0aGUgdmVyaWZpZXJcbmtlcm5lbC9icGYvdmVyaWZpZXIuYzo3MjkyOiAqIGNsZWFycyByZWctXHUwMDNlaWQgYWZ0ZXIgdmFsdWVfb3JfbnVsbC1cdTAwM2V2YWx1ZSB0cmFuc2l0aW9uLCBzaW5jZSB0aGUgdmVyaWZpZXIgb25seVxua2VybmVsL2JwZi92ZXJpZmllci5jLTcyOTMtICogY2FyZXMgYWJvdXQgdGhlIHJhbmdlIG9mIGFjY2VzcyB0byB2YWxpZCBtYXAgdmFsdWUgcG9pbnRlciBhbmQgZG9lc24mIzM5O3QgY2FyZVxuLS1cbmtlcm5lbC9icGYvdmVyaWZpZXIuYz0xNDU2NT1zdGF0aWMgaW50IGFkanVzdF9wdHJfbWluX21heF92YWxzKHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYsIHN0cnVjdCBicGZfaW5zbiAqaW5zbixcbi0tXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTQ3MzktXHRcdFx0XHRlbnYsIFwmIzM0O1RoaXMgb3BlcmF0aW9uIHN1YnRyYWN0cyBwb2ludGVyIHJlZ2lzdGVyIFIlZCBmcm9tIHNjYWxhciByZWdpc3RlciBSJWQuIFwmIzM0O1xua2VybmVsL2JwZi92ZXJpZmllci5jOjE0NzQwOlx0XHRcdFx0XCYjMzQ7VGhlIHZlcmlmaWVyIG9ubHkgdHJhY2tzIHBvaW50ZXItbWludXMtc2NhbGFyIGFyaXRobWV0aWMgZm9yIGFsbG93ZWQgcG9pbnRlciB0eXBlcy5cJiMzNDssXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTQ3NDEtXHRcdFx0XHRwdHJfcmVnbm8sIGRzdCk7XG4tLVxua2VybmVsL2JwZi92ZXJpZmllci5jPTE3Njg3PWJvb2wgYnBmX2dldF9jYWxsX3N1bW1hcnkoc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudiwgc3RydWN0IGJwZl9pbnNuICpjYWxsLFxuLS1cbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xNzc1Mi0gKlxua2VybmVsL2JwZi92ZXJpZmllci5jOjE3NzUzOiAqIC0gaWYgc28sIGFuZCBpZiB2ZXJpZmllciBvciBjdXJyZW50IEpJVCBpbmxpbmVzIHRoZSBjYWxsIHRvIHRoZVxua2VybmVsL2JwZi92ZXJpZmllci5jLTE3NzU0LSAqICAgYnBmX2Zhc3RjYWxsIGZ1bmN0aW9uIChlLmcuIGEgaGVscGVyIGNhbGwpLCBrZXJuZWwgcmVtb3ZlcyB1bm5lY2Vzc2FyeVxuLS1cbmtlcm5lbC9icGYvdmVyaWZpZXIuYz0xOTczND1zdGF0aWMgaW50IGNoZWNrX3N0cnVjdF9vcHNfYnRmX2lkKHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYpXG4tLVxua2VybmVsL2JwZi92ZXJpZmllci5jLTE5ODUxLVx0cHJvZy1cdTAwM2VhdXgtXHUwMDNlYXR0YWNoX2Z1bmNfbmFtZSA9IG1uYW1lO1xua2VybmVsL2JwZi92ZXJpZmllci5jOjE5ODUyOlx0ZW52LVx1MDAzZW9wcyA9IHN0X29wcy1cdTAwM2V2ZXJpZmllcl9vcHM7XG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTk4NTMtXG4tLVxua2VybmVsL2JwZi92ZXJpZmllci5jPTIwNDg1PXN0YXRpYyBpbnQgY2hlY2tfYXR0YWNoX2J0Zl9pZChzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52KVxuLS1cbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0yMDUyNC1cdFx0ICovXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6MjA1MjU6XHRcdGVudi1cdTAwM2VvcHMgPSBicGZfdmVyaWZpZXJfb3BzW3RndF9wcm9nLVx1MDAzZXR5cGVdO1xua2VybmVsL2JwZi92ZXJpZmllci5jLTIwNTI2LVx0XHRwcm9nLVx1MDAzZWV4cGVjdGVkX2F0dGFjaF90eXBlID0gdGd0X3Byb2ctXHUwMDNlZXhwZWN0ZWRfYXR0YWNoX3R5cGU7XG4tLVxua2VybmVsL2JwZi92ZXJpZmllci5jPTIxMTU3PWludCBicGZfY2hlY2soc3RydWN0IGJwZl9wcm9nICoqcHJvZywgdW5pb24gYnBmX2F0dHIgKmF0dHIsIGJwZnB0cl90IHVhdHRyLFxuLS1cbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0yMTE2Ny1cdC8qIG5vIHByb2dyYW0gaXMgdmFsaWQgKi9cbmtlcm5lbC9icGYvdmVyaWZpZXIuYzoyMTE2ODpcdGlmIChBUlJBWV9TSVpFKGJwZl92ZXJpZmllcl9vcHMpID09IDApXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMjExNjktXHRcdHJldHVybiAtRUlOVkFMO1xuLS1cbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0yMTE3OS1cdGVudi1cdTAwM2Vwcm9nID0gKnByb2c7XG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6MjExODA6XHRlbnYtXHUwMDNlb3BzID0gYnBmX3ZlcmlmaWVyX29wc1tlbnYtXHUwMDNlcHJvZy1cdTAwM2V0eXBlXTtcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0yMTE4MS1cbi0tXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMjExODgtXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6MjExODk6XHQvKiB1c2VyIGNvdWxkIGhhdmUgcmVxdWVzdGVkIHZlcmJvc2UgdmVyaWZpZXIgb3V0cHV0XG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMjExOTAtXHQgKiBhbmQgc3VwcGxpZWQgYnVmZmVyIHRvIHN0b3JlIHRoZSB2ZXJpZmljYXRpb24gdHJhY2VcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD45LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMCAxNjoxNjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxNTc3OAoJCQkJCQkJb3V0cHV0OiAzMQoJCQkJCQkJdGhvdWdodHM6IDExNgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipLZXJuZWwgQ29uZmlndXJhdGlvbiBJbnZlc3RpZ2F0aW9uKioKCkFscmlnaHQsIGxldCYjMzk7cyBkaXZlIGluIGFuZCBzZWUgd2hhdCYjMzk7cyBnb2luZyBvbiB3aXRoIHRoZXNlIEJQRiBjb25maWd1cmF0aW9ucy4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRvIGNvbmZpcm0gdGhlIHN0YXR1cyBvZiBgQ09ORklHX0JQRl9TWVNDQUxMYCB3aXRoaW4gdGhlIEtjb25maWcgc3lzdGVtLiBUaGF0IG9uZSYjMzk7cyB0aGUgbGluY2hwaW4sIGVuYWJsaW5nIHRoZSBgYnBmKClgIHN5c2NhbGwgYW5kLCBjcnVjaWFsbHksIHRoZSBCUEYgdmVyaWZpZXIuIEJleW9uZCB0aGF0LCBJJiMzOTttIGFsc28gdGhpbmtpbmcgd2Ugc2hvdWxkIGRvdWJsZS1jaGVjayB0aGUgc3RhdHVzIG9mIGBDT05GSUdfQlBGX0VWRU5UU2AgYW5kIGBDT05GSUdfREVCVUdfSU5GT19CVEZgLiBBcmUgdGhlc2UgZXNzZW50aWFsLCBvciBhcmUgdGhleSBzdGFuZGFyZCBjb25maWd1cmF0aW9ucyB0aGF0IG1heSBiZSBlbmFibGVkIGJ5IGRlZmF1bHQ/CgpJJiMzOTtsbCBzcGVjaWZpY2FsbHkgbmVlZCB0byBhc2NlcnRhaW4gd2hldGhlciBgQ09ORklHX0JQRl9TWVNDQUxMYCBhbmQgYENPTkZJR19ERUJVR19JTkZPX0JURmAgYXJlIG5lY2Vzc2FyeSBkZXBlbmRlbmNpZXMgZm9yIHRoaXMgdXNlLWNhc2UsIG9yIGlmIHRoZXkmIzM5O3JlIHN0YW5kYXJkIGFuZCBwb3RlbnRpYWxseSBhbHJlYWR5IGluIHRoZSBkZXNpcmVkIHN0YXRlLiBJJiMzOTtsbCBzdGFydCBieSBkb2luZyBhIHF1aWNrIEtjb25maWcgc2VhcmNoIGZvciBgQlBGX1NZU0NBTExgIHRvIGdldCBhbiBvdmVydmlldyBvZiBpdHMgZGVwZW5kZW5jaWVzIGFuZCBpbXBsaWNhdGlvbnMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzEwIDE2OjE2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5FcnJvcjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm5vIG1hdGNoZXM8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIEJQRl9TWVNDQUxMJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7aW5pdC9LY29uZmlnJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O2Vycm9yJiMzNDs6ICYjMzQ7bm8gbWF0Y2hlcyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTAgMTY6MTY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTYxNTIKCQkJCQkJCW91dHB1dDogMjEKCQkJCQkJCXRob3VnaHRzOiAxNAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6CgoqKkJQRl9TWVNDQUxMIExvY2F0aW9uIFF1ZXN0KioKCk9rYXksIHNvIEkgbmVlZCB0byB0cmFjayBkb3duIHRoZSBkZWZpbml0aW9uIG9mIGBCUEZfU1lTQ0FMTGAuIE15IGluaXRpYWwgYXBwcm9hY2ggd291bGQgYmUgdG8gZGl2ZSBpbnRvIHRoZSBrZXJuZWwgc291cmNlLCBwcm9iYWJseSBzdGFydGluZyB3aXRoIHRoZSBoZWFkZXJzIHJlbGF0ZWQgdG8gdGhlIEJQRiBzdWJzeXN0ZW0uIEkmIzM5O2QgYW50aWNpcGF0ZSBpdCBiZWluZyBkZWZpbmVkIGluIG9uZSBvZiB0aGUgY29yZSBCUEYgaGVhZGVyIGZpbGVzLCBzb21ldGhpbmcgbGlrZSBgbGludXgvYnBmLmhgIG9yIHBvdGVudGlhbGx5IGEgaGVhZGVyIHJlbGF0ZWQgdG8gc3lzdGVtIGNhbGwgd3JhcHBlcnMgaWYgaXQmIzM5O3MgaW52b2x2ZWQgaW4gc3lzY2FsbCB0cmFjaW5nIG9yIGludGVyY2VwdGlvbi4gR2l2ZW4gdGhlIG5hbWluZywgaXQmIzM5O3MgaGlnaGx5IGxpa2VseSB0byBiZSBhbiBlbnVtZXJhdGlvbiBvciBtYWNyby4gSSYjMzk7bGwgbmVlZCB0byBjaGVjayBpZiB0aGVyZSBhcmUgcGxhdGZvcm0tc3BlY2lmaWMgdmFyaWF0aW9ucywgc28gSSBzaG91bGQgYmUgcHJlcGFyZWQgdG8gaGFuZGxlIGAjaWZkZWZgIG9yIHNpbWlsYXIgY29uZGl0aW9uYWwgY29tcGlsYXRpb24gZGlyZWN0aXZlcyB3aXRoaW4gdGhlIGhlYWRlciBmaWxlcy4gSSBzaG91bGQgYWxzbyBjb25zaWRlciBob3cgdGhpcyByZWxhdGVzIHRvIG90aGVyIHJlbGF0ZWQgY29uc3RhbnRzIGFuZCBzdHJ1Y3R1cmVzLCBzdWNoIGFzIGBicGZfcHJvZ190eXBlYCBvciBhbnkgYXNzb2NpYXRlZCBzeXNjYWxsIG51bWJlcnMuIFRoZSBnb2FsIGlzIHRvIGdldCB0aGUgcHJlY2lzZSB2YWx1ZSBhbmQgdW5kZXJzdGFuZCB0aGUgY29udGV4dCB3aXRoaW4gdGhlIGtlcm5lbCYjMzk7cyBCUEYgaW1wbGVtZW50YXRpb24uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzEwIDE2OjE2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBCUEZfU1lTQ0FMTCYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtrZXJuZWwvYnBmL0tjb25maWc9MjU9bWVudSBcJiMzNDtCUEYgc3Vic3lzdGVtXCYjMzQ7XG5rZXJuZWwvYnBmL0tjb25maWctMjYtXG5rZXJuZWwvYnBmL0tjb25maWc6Mjc6Y29uZmlnIEJQRl9TWVNDQUxMXG5rZXJuZWwvYnBmL0tjb25maWctMjgtXHRib29sIFwmIzM0O0VuYWJsZSBicGYoKSBzeXN0ZW0gY2FsbFwmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMCAxNjoxNjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxNjQ5MQoJCQkJCQkJb3V0cHV0OiAzNAoJCQkJCQkJdGhvdWdodHM6IDE5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhlIHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZToKCioqRXhhbWluaW5nIEJQRiBLY29uZmlnIENvbmZpZ3VyYXRpb24qKgoKT2theSwgSSBuZWVkIHRvIGRpdmUgaW50byB0aGUga2VybmVsJiMzOTtzIEJQRiBjb25maWd1cmF0aW9uLiBNeSBpbml0aWFsIGluc3RpbmN0IGlzIHRvIGdvIHN0cmFpZ2h0IHRvIGBrZXJuZWwvYnBmL0tjb25maWdgLCBzcGVjaWZpY2FsbHkgYXJvdW5kIGxpbmUgMjcuIEkmIzM5O20gcHJvYmFibHkgbG9va2luZyBmb3IgdGhlIGNvcmUgQlBGIGZlYXR1cmUgZW5hYmxlbWVudCBmbGFnLCBvciBtYXliZSBJJiMzOTttIHRyeWluZyB0byByZWNhbGwgYSByZWxhdGVkIG9wdGlvbiB0aGF0IEkgd2FudCB0byBkb3VibGUtY2hlY2suIENvdWxkIGJlIGFuIGV4cGVyaW1lbnRhbCBmZWF0dXJlIGZsYWcsIG9yIHNvbWV0aGluZyB0aWVkIHRvIGEgc3BlY2lmaWMgQlBGIGhlbHBlciB2ZXJzaW9uLiBJIHN1c3BlY3QgbGluZSAyNyB3aWxsIGxpa2VseSBsZWFkIG1lIHRvIHRoZSBtYWluIGVudHJ5IHBvaW50IG9yIGEgY3J1Y2lhbCBkZXBlbmRlbmN5IGluIHRoYXQgS2NvbmZpZyBmaWxlLiBJIGFtIGhvcGluZyB0byBnZXQgdG8gdGhlIHJvb3QgY2F1c2Ugb2YgYW4gaXNzdWUgSSYjMzk7bSB3b3JraW5nIHRocm91Z2guIEkmIzM5O20gZXhwZWN0aW5nIHRoaXMgdG8gcHJvdmlkZSB0aGUgYmFzZSBjb25maWd1cmF0aW9uIHRoYXQgYWxsIGZ1cnRoZXIgY29uZmlndXJhdGlvbiBpcyByZWxpYW50IG9uLiBUaW1lIHRvIHNlZSB3aGF0JiMzOTtzIHRoZXJlIGFuZCByZWZyZXNoIG15IG1lbW9yeSBvbiB0aGUgYnVpbGQgb3B0aW9ucy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTAgMTY6MTY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtrZXJuZWwvYnBmL0tjb25maWcmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAyNSwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiA0MAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgIDI1Olx0bWVudSBcJiMzNDtCUEYgc3Vic3lzdGVtXCYjMzQ7XG4gIDI2Olx0XG4gIDI3Olx0Y29uZmlnIEJQRl9TWVNDQUxMXG4gIDI4Olx0XHRib29sIFwmIzM0O0VuYWJsZSBicGYoKSBzeXN0ZW0gY2FsbFwmIzM0O1xuICAyOTpcdFx0c2VsZWN0IEJQRlxuICAzMDpcdFx0c2VsZWN0IElSUV9XT1JLXG4gIDMxOlx0XHRzZWxlY3QgTkVFRF9UQVNLU19SQ1VcbiAgMzI6XHRcdHNlbGVjdCBUQVNLU19UUkFDRV9SQ1VcbiAgMzM6XHRcdHNlbGVjdCBCSU5BUllfUFJJTlRGXG4gIDM0Olx0XHRzZWxlY3QgTkVUX1NPQ0tfTVNHIGlmIE5FVFxuICAzNTpcdFx0c2VsZWN0IE5FVF9YR1JFU1MgaWYgTkVUXG4gIDM2Olx0XHRzZWxlY3QgUEFHRV9QT09MIGlmIE5FVFxuICAzNzpcdFx0ZGVmYXVsdCBuXG4gIDM4Olx0XHRoZWxwXG4gIDM5Olx0XHQgIEVuYWJsZSB0aGUgYnBmKCkgc3lzdGVtIGNhbGwgdGhhdCBhbGxvd3MgdG8gbWFuaXB1bGF0ZSBCUEYgcHJvZ3JhbXNcbiAgNDA6XHRcdCAgYW5kIG1hcHMgdmlhIGZpbGUgZGVzY3JpcHRvcnMuXG4gIDQxOlx0XG4gIDQyOlx0Y29uZmlnIEJQRl9KSVRcbiAgNDM6XHRcdGJvb2wgXCYjMzQ7RW5hYmxlIEJQRiBKdXN0IEluIFRpbWUgY29tcGlsZXJcJiMzNDtcbiAgNDQ6XHRcdGRlcGVuZHMgb24gQlBGXG4gIDQ1Olx0XHRkZXBlbmRzIG9uIEhBVkVfQ0JQRl9KSVQgfHwgSEFWRV9FQlBGX0pJVFxuICA0NjpcdFx0c2VsZWN0IEVYRUNNRU1cbiAgNDc6XHRcdGhlbHBcbiAgNDg6XHRcdCAgQlBGIHByb2dyYW1zIGFyZSBub3JtYWxseSBoYW5kbGVkIGJ5IGEgQlBGIGludGVycHJldGVyLiBUaGlzIG9wdGlvblxuICA0OTpcdFx0ICBhbGxvd3MgdGhlIGtlcm5lbCB0byBnZW5lcmF0ZSBuYXRpdmUgY29kZSB3aGVuIGEgcHJvZ3JhbSBpcyBsb2FkZWRcbiAgNTA6XHRcdCAgaW50byB0aGUga2VybmVsLiBUaGlzIHdpbGwgc2lnbmlmaWNhbnRseSBzcGVlZC11cCBwcm9jZXNzaW5nIG9mIEJQRlxuICA1MTpcdFx0ICBwcm9ncmFtcy5cbiAgNTI6XHRcbiAgNTM6XHRcdCAgTm90ZSwgYW4gYWRtaW4gc2hvdWxkIGVuYWJsZSB0aGlzIGZlYXR1cmUgY2hhbmdpbmc6XG4gIDU0Olx0XHQgIC9wcm9jL3N5cy9uZXQvY29yZS9icGZfaml0X2VuYWJsZVxuICA1NTpcdFx0ICAvcHJvYy9zeXMvbmV0L2NvcmUvYnBmX2ppdF9oYXJkZW4gICAob3B0aW9uYWwpXG4gIDU2Olx0XHQgIC9wcm9jL3N5cy9uZXQvY29yZS9icGZfaml0X2thbGxzeW1zIChvcHRpb25hbClcbiAgNTc6XHRcbiAgNTg6XHRjb25maWcgQlBGX0pJVF9BTFdBWVNfT05cbiAgNTk6XHRcdGJvb2wgXCYjMzQ7UGVybWFuZW50bHkgZW5hYmxlIEJQRiBKSVQgYW5kIHJlbW92ZSBCUEYgaW50ZXJwcmV0ZXJcJiMzNDtcbiAgNjA6XHRcdGRlcGVuZHMgb24gQlBGX1NZU0NBTEwgXHUwMDI2XHUwMDI2IEhBVkVfRUJQRl9KSVQgXHUwMDI2XHUwMDI2IEJQRl9KSVRcbiAgNjE6XHRcdGhlbHBcbiAgNjI6XHRcdCAgRW5hYmxlcyBCUEYgSklUIGFuZCByZW1vdmVzIEJQRiBpbnRlcnByZXRlciB0byBhdm9pZCBzcGVjdWxhdGl2ZVxuICA2MzpcdFx0ICBleGVjdXRpb24gb2YgQlBGIGluc3RydWN0aW9ucyBieSB0aGUgaW50ZXJwcmV0ZXIuXG4gIDY0Olx0XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzEwIDE2OjE2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE3MzI0CgkJCQkJCQlvdXRwdXQ6IDEzNwoJCQkJCQkJdGhvdWdodHM6IDYyMwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBBbmFseXNpcyBvZiB0aGUgQlBGIFBhdGNoKioKCk9rYXksIGxldCYjMzk7cyBicmVhayB0aGlzIGRvd24uIE15IGluaXRpYWwgZm9jdXMgaXMgb24gdGhlIGtleSBzeW1ib2xzLCBhcyB1c3VhbDogYGNoZWNrX2tmdW5jX2NhbGxgIGFuZCBgY2hlY2tfbWVtX2FjY2Vzc2AuIFRoZXNlIGFyZSB0aGUgZnVuY3Rpb25zIHdpdGhpbiB0aGUgQlBGIHZlcmlmaWVyIHRoYXQgYXJlIGRpcmVjdGx5IG1vZGlmaWVkIGJ5IHRoaXMgcGF0Y2gsIHNwZWNpZmljYWxseSB3aXRoaW4gYGtlcm5lbC9icGYvdmVyaWZpZXIuY2AuIE15IHF1aWNrIGluaXRpYWwgc2NhbiBmbGFnZ2VkIHRoZXNlIGFzIHRoZSBrZXkgcG9pbnRzLCBhbmQgbm93IEkmIzM5O20gY29uZmlybWluZyB0aGF0LgoKSSBzZWUgdGhhdCB0aGUgY2hhbmdlcyBpbnZvbHZlIGFkZGluZyBjaGVja3MgcmVsYXRlZCB0byBgS0ZfUEVSRk1PTmAgYW5kIGByZG9ubHlfdW50cnVzdGVkYCBtZW1vcnkgYWNjZXNzLiBNYWtlcyBzZW5zZS4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIHNjb3BlIG9mIHRob3NlIGZsYWdzLiBgaXNfa2Z1bmNfcGVyZm1vbmAgaXMgYSBzdGF0aWMgaGVscGVyIGZ1bmN0aW9uIGluIHRoZSB2ZXJpZmllci5jIGZpbGUsIHNvIHRoZSBzY29wZSBtYWtlcyBwZXJmZWN0IHNlbnNlLgoKSSYjMzk7bSBkb3VibGUtY2hlY2tpbmcgdGhlIHNjb3BlLCB0aGUgc3BlY2lmaWMgbGluZXMgb2YgY29kZSB0aGF0IGhhdmUgYmVlbiBhZGRlZDoKCi0gICBgY2hlY2tfbWVtX2FjY2Vzc2A6IEkgc2VlIGEgbmV3IGNoZWNrIGZvciBgcmRvbmx5X3VudHJ1c3RlZCAmYW1wOyZhbXA7ICFlbnYtJmd0O2FsbG93X3B0cl9sZWFrc2AuIFRoYXQmIzM5O3MgaW1wb3J0YW50IGZvciBtZW1vcnkgc2FmZXR5LgotICAgYGlzX2tmdW5jX3BlcmZtb25gOiBBIGhlbHBlciBmdW5jdGlvbiwgdGhlIG5ldyBzdGF0aWMgZnVuY3Rpb24uCi0gICBgY2hlY2tfa2Z1bmNfY2FsbGA6IFRoZXJlJiMzOTtzIGEgbmV3IGNoZWNrIGZvciBgaXNfa2Z1bmNfcGVyZm1vbigmYW1wO21ldGEpICZhbXA7JmFtcDsgIWVudi0mZ3Q7YWxsb3dfcHRyX2xlYWtzYC4gVGhhdCBtYWtlcyBzZW5zZSBpbiB0aGUgY2FsbGluZyBjb250ZXh0LgoKSSYjMzk7bSBhbHNvIGNvbnNpZGVyaW5nIHRoZSBicm9hZGVyIGltcGxpY2F0aW9ucy4gVGhlIGBoZWxwZXJzLmNgIGZpbGUgaXMgdG91Y2hlZCwgdGhlIGRpZmYgaXMgYWRkaW5nIG1hY3JvIGRlY2xhcmF0aW9ucyB3aXRoaW4gdGhlIGBjb21tb25fYnRmX2lkc2AgdGFibGUuIEkmIzM5O20gbm90aW5nIHRoaXMsIGJ1dCBpdCBzZWVtcyBzZWNvbmRhcnkgdG8gdGhlIGNvcmUgdmVyaWZpY2F0aW9uIGNoYW5nZXMuCgpJJiMzOTttIGFsc28gdGhpbmtpbmcgdGhyb3VnaCBhbnkgcmVsZXZhbnQgY29uZmlndXJhdGlvbnMuIEkgc2VlIGBDT05GSUdfQlBGX0VWRU5UU2AsIHdoaWNoIHRyaWdnZXJzIHRoZSBhZGRpdGlvbiBvZiBgS0ZfUEVSRk1PTmAgZmxhZ3MgaW4gdGhlIGBoZWxwZXJzLmNgIGZpbGUuIFRoaXMgdGVsbHMgbWUgdGhhdCBgQlBGX0VWRU5UU2AgbWlnaHQgYmUgcmVsZXZhbnQsIGFuZCBJIHNob3VsZCBjb25zaWRlciBpdCBhcyBhbiBvcHRpb24uCgpOb3cgdGhhdCBJJiMzOTt2ZSByZXZpZXdlZCBldmVyeXRoaW5nLCB0aGUgbWFpbiBmb2N1cyBzdGlsbCBsaWVzIG9uIHRoZSB2ZXJpZmllciBjaGFuZ2VzIHJlbGF0ZWQgdG8gYGNoZWNrX2tmdW5jX2NhbGxgIGFuZCBgY2hlY2tfbWVtX2FjY2Vzc2AuIFllcywgdGhpcyBjaGFuZ2UgdG91Y2hlcyB0aGUgY29yZSBCUEYgdmVyaWZpY2F0aW9uIGxvZ2ljLiBZZXMsIHRoaXMgaXMgc29tZXRoaW5nIEkgd2FudCB0byBiZSAqdmVyeSogdGhvcm91Z2ggYWJvdXQuIFRoaXMgaXMgY2VydGFpbmx5IHdvcnRoIGZ1enppbmcuCgpJJiMzOTttIGNvbmZpZGVudCBpbiBteSBhc3Nlc3NtZW50LCBhbmQgSSYjMzk7bGwgcHJvY2VlZCB3aXRoIGBzZXQtcmVzdWx0c2AuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzEwIDE2OjE2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtCUEZfU1lTQ0FMTCYjMzQ7LAogICAgJiMzNDtCUEZfRVZFTlRTJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7Y2hlY2tfa2Z1bmNfY2FsbCYjMzQ7LAogICAgJiMzNDtjaGVja19tZW1fYWNjZXNzJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGludHJvZHVjZXMgYSBuZXcgS0ZfUEVSRk1PTiBrZnVuYyBmbGFnIGFuZCBlbmZvcmNlcyBDQVBfUEVSRk1PTi9DQVBfU1lTX0FETUlOIHBlcm1pc3Npb24gY2hlY2tzIGluIHRoZSBCUEYgdmVyaWZpZXIgKGNoZWNrX2tmdW5jX2NhbGwgYW5kIGNoZWNrX21lbV9hY2Nlc3MpLiBTaW5jZSB0aGVzZSBjaGFuZ2VzIG1vZGlmeSByZWFjaGFibGUgQlBGIHZlcmlmaWVyIGxvZ2ljIGV4ZWN1dGVkIGR1cmluZyBCUEYgcHJvZ3JhbSB2ZXJpZmljYXRpb24gdmlhIHN5c19icGYsIHRoZXkgd2FycmFudCBmdXp6aW5nLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtCUEZfU1lTQ0FMTCYjMzQ7LAogICAgJiMzNDtCUEZfRVZFTlRTJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7Y2hlY2tfa2Z1bmNfY2FsbCYjMzQ7LAogICAgJiMzNDtjaGVja19tZW1fYWNjZXNzJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGludHJvZHVjZXMgYSBuZXcgS0ZfUEVSRk1PTiBrZnVuYyBmbGFnIGFuZCBlbmZvcmNlcyBDQVBfUEVSRk1PTi9DQVBfU1lTX0FETUlOIHBlcm1pc3Npb24gY2hlY2tzIGluIHRoZSBCUEYgdmVyaWZpZXIgKGNoZWNrX2tmdW5jX2NhbGwgYW5kIGNoZWNrX21lbV9hY2Nlc3MpLiBTaW5jZSB0aGVzZSBjaGFuZ2VzIG1vZGlmeSByZWFjaGFibGUgQlBGIHZlcmlmaWVyIGxvZ2ljIGV4ZWN1dGVkIGR1cmluZyBCUEYgcHJvZ3JhbSB2ZXJpZmljYXRpb24gdmlhIHN5c19icGYsIHRoZXkgd2FycmFudCBmdXp6aW5nLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE3LzE8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMCAxNjoxNjwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+SWY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzEwIDE2OjE2PC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPmttc2FuLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmNvcmU8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggaW50cm9kdWNlcyB0aGUgS0ZfUEVSRk1PTiBrZnVuYyBmbGFnIGFuZCBlbmZvcmNlcyBjYXBhYmlsaXR5IGNoZWNrcyBpbiB0aGUgQlBGIHZlcmlmaWVyIChyZXF1aXJpbmcgQ0FQX1BFUkZNT04gLyBDQVBfU1lTX0FETUlOIHZpYSBlbnYtXHUwMDNlYWxsb3dfcHRyX2xlYWtzKSBmb3IgY2VydGFpbiBrZnVuY3MgYW5kIHVudHJ1c3RlZCByZWFkLW9ubHkgbWVtb3J5IGFjY2Vzc2VzLlxuXG5UaGUgY2hhbmdlcyBhcmUgZW50aXJlbHkgcmVzdHJpY3RlZCB0byBCUEYgdmVyaWZpZXIgYWNjZXNzLWNvbnRyb2wgY2hlY2tzIGFuZCBmbGFnIGRlZmluaXRpb25zLiBUaGV5IGRvIG5vdCBhbHRlciBtZW1vcnkgaW5pdGlhbGl6YXRpb24sIGRvIG5vdCBpbnRyb2R1Y2Ugb3IgY29weSB1bmluaXRpYWxpemVkIGRhdGEgc3RydWN0dXJlcyB0byB1c2VyIHNwYWNlLCBhbmQgZG8gbm90IGludHJvZHVjZSBsb2dpYyB0aGF0IGJyYW5jaGVzIG9uIHVuaW5pdGlhbGl6ZWQgbWVtb3J5LiBUaHVzLCB0aGVyZSBhcmUgbm8gdW5pbml0aWFsaXplZCBtZW1vcnkgcmlza3MgdGhhdCByZXF1aXJlIGEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbi4mIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgc2VjdXJpdHkgZW5naW5lZXIgc3BlY2lhbGl6aW5nIGluIGtlcm5lbCBtZW1vcnkKZXJyb3IgZGV0ZWN0b3JzIChLQVNBTiBhbmQgS01TQU4pLiBZb3VyIGpvYiBpcyB0byByZXZpZXcgdGhlIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQKZGV0ZXJtaW5lIGlmIHRoZSBjb2RlIGNoYW5nZXMganVzdGlmeSBzcGF3bmluZyBhIGRlZGljYXRlZCBLTVNBTiAoS2VybmVsTWVtb3J5U2FuaXRpemVyKQpmdXp6aW5nIHNlc3Npb24gaW4gYWRkaXRpb24gdG8gc3RhbmRhcmQgS0FTQU4gZnV6emluZy4KCkNSSVRJQ0FMIERJU1RJTkNUSU9OIEJFVFdFRU4gS0FTQU4gQU5EIEtNU0FOOgotIFN0YW5kYXJkIEtBU0FOIGtlcm5lbCBidWlsZHMgKHVwc3RyZWFtLWFwcGFybW9yLWthc2FuLmNvbmZpZykgYWxyZWFkeSBlbmFibGUKICBhIGNvbXByZWhlbnNpdmUgc3VpdGUgb2YgZGVidWdnaW5nIHRvb2xzIGFuZCBzYW5pdGl6ZXJzLCBpbmNsdWRpbmcgS0FTQU4KICAob3V0LW9mLWJvdW5kcyBhY2Nlc3NlcywgdXNlLWFmdGVyLWZyZWUsIGRvdWJsZSBmcmVlLCBpbnZhbGlkIGZyZWUpLCBMT0NLREVQCiAgKGxvY2tpbmcgYnVncyBhbmQgZGVhZGxvY2tzKSwgVUItc2FuaXRpemVycywgYW5kIG1lbW9yeSBjb3JydXB0aW9uIGNoZWNrcy4KLSBLTVNBTiAoS2VybmVsTWVtb3J5U2FuaXRpemVyKSBkZXRlY3RzIHJlYWRzIG9mIFVOSU5JVElBTElaRUQgbWVtb3J5IChzdGFjaywgaGVhcCwKICBvciBwYWdlIGFsbG9jYXRpb25zKSBhbmQga2VybmVsLXRvLXVzZXIgbWVtb3J5IGluZm8tbGVha3MuCgpSdWxlOiBUSEVSRSBJUyBOTyBTRU5TRSBJTiBSVU5OSU5HIEEgS01TQU4gU0VTU0lPTiBJRiBBIEJVRyBDQU4gQkUgQ0FVR0hUIEJZIEtBU0FOLApMT0NLREVQLCBPUiBPVEhFUiBTVEFOREFSRCBCVUcgREVURUNUT1JTLgpBIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaW5jdXJzIHNpZ25pZmljYW50IHJlc291cmNlIGNvc3RzLiBZb3UgbXVzdCBPTkxZCnNldCBOZWVkc0tNU0FOPXRydWUgaWYgdGhlIGNvZGUgY2hhbmdlcyBpbnRyb2R1Y2Ugb3IgZXhwb3NlIFVOSU5JVElBTElaRUQgTUVNT1JZIHJpc2tzCnRoYXQgYXJlIGRldGVjdGVkIE9OTFkgYnkgS01TQU4uCgpMb29rIGhvbGlzdGljYWxseSBhdCB0aGUgcGF0Y2ggc2VyaWVzIGFuZCBzdXJyb3VuZGluZyBjb2RlLiBFdmVuIGlmIG5vIGRpcmVjdAp1bmluaXRpYWxpemVkIGZpZWxkIGFjY2Vzc2VzIG9yIG5ldyBidWZmZXIgYWxsb2NhdGlvbnMgYXJlIGFkZGVkIGluIHRoZSBkaWZmIGl0c2VsZiwKYSBwYXRjaCBtYXkgYWx0ZXIgY29udHJvbCBmbG93LCBib3VuZHMgY2hlY2tpbmcsIG9yIGRhdGEgbGVuZ3RoIGNhbGN1bGF0aW9ucyBpbiB3YXlzCnRoYXQgY2hhbmdlIGhvdyB0aGUgcmVzdCBvZiB0aGUgY29kZSBvcGVyYXRlcyBvbiBleGlzdGluZyBidWZmZXJzIChlLmcuIGFsbG93aW5nCnVuaW5pdGlhbGl6ZWQgc3RhY2svaGVhcCBtZW1vcnkgdG8gYmUgcmVhZCwgY29waWVkIHRvIHVzZXIgc3BhY2UsIG9yIHVzZWQgaW4gY29udHJvbApmbG93KS4gRG8gbm90IGhlc2l0YXRlIHRvIHVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGluc3BlY3QgdGhlIHN1cnJvdW5kaW5nIGNvZGUsCmNhbGxlZCBmdW5jdGlvbnMsIGFuZCBjYWxsZXJzLgoKU2V0IE5lZWRzS01TQU49dHJ1ZSBPTkxZIElGIHRoZSBwYXRjaCBpbnRyb2R1Y2VzIG9yIG1vZGlmaWVzOgoxLiBLZXJuZWwgc3RydWN0dXJlcyBzZW50IHRvIHVzZXIgc3BhY2UgKHZpYSBjb3B5X3RvX3VzZXIsIHB1dF91c2VyLCBuZXRsaW5rIHNrYgogICBhdHRyaWJ1dGVzLCBpb2N0bCBvdXRwdXQgYXJndW1lbnRzLCBzb2NrZXQgb3B0aW9ucywgb3IgQlBGIGJ1ZmZlcnMpIHdoZXJlIGZpZWxkcwogICBvciBzdHJ1Y3R1cmUgcGFkZGluZyBtaWdodCBub3QgYmUgZnVsbHkgaW5pdGlhbGl6ZWQvemVyb2VkLgoyLiBDb25kaXRpb25hbCBsb2dpYyBvciBicmFuY2hpbmcgdGhhdCBkZXBlbmRzIG9uIHBvdGVudGlhbGx5IHVuaW5pdGlhbGl6ZWQgdmFyaWFibGVzCiAgIG9yIHN0cnVjdCBmaWVsZHMuCjMuIEFsbG9jYXRpb24gb3IgaW5pdGlhbGl6YXRpb24gb2YgY29tcGxleCBkYXRhIHN0cnVjdHVyZXMgd2hlcmUgdW5pbml0aWFsaXplZCBmaWVsZHMKICAgY291bGQgYmUgcmVhZCBsYXRlciBpbiByZWFjaGFibGUgY29kZSBwYXRocy4KNC4gQm91bmRzIGNoZWNrcywgbGVuZ3Rocywgb3IgbG9naWMgaW4gYSB3YXkgdGhhdCBhbGxvd3Mgc3Vycm91bmRpbmcgY29kZSB0byBhY2Nlc3MKICAgdW5pbml0aWFsaXplZCBieXRlcyBvZiBleGlzdGluZyBidWZmZXJzLgoKU2V0IE5lZWRzS01TQU49ZmFsc2UgSUY6Ci0gVGhlIGNvZGUgY2hhbmdlcyBwcmltYXJpbHkgcmlzayBvdXQtb2YtYm91bmRzIGFjY2VzcywgYXJyYXkgb3ZlcmZsb3dzLCBOVUxMIHBvaW50ZXIKICBkZXJlZmVyZW5jZXMsIGxvY2tpbmcgZGVhZGxvY2tzLCBvciB1c2UtYWZ0ZXItZnJlZSBidWdzICh0aGVzZSBhcmUgYWxyZWFkeSBjYXVnaHQKICBieSBLQVNBTiwgTE9DS0RFUCwgb3Igc3RhbmRhcmQgYnVnIGRldGVjdG9ycykuCi0gQWxsIHN0YWNrL2hlYXAgc3RydWN0dXJlcyB0b3VjaGVkIG9yIGludHJvZHVjZWQgYnkgdGhlIHBhdGNoIGFyZSBmdWxseSB6ZXJvZWQKICBvciBpbml0aWFsaXplZCAoZS5nLiB1c2luZyA9IHswfSwgbWVtc2V0LCBremFsbG9jKSBiZWZvcmUgYmVpbmcgcmVhZCBvciBjb3BpZWQuCi0gVGhlIHBhdGNoIGRvZXMgbm90IGludHJvZHVjZSBhbnkgcmlzayBvZiB1bmluaXRpYWxpemVkIG1lbW9yeSB1c2FnZSBvciBpbmZvLWxlYWtzLgoKVXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gaW5zcGVjdCB0aGUgc3Vycm91bmRpbmcgY29kZSBpZiBuZWNlc3NhcnksIHRoZW4gcHJvdmlkZQpkZXRhaWxlZCBLTVNBTlJlYXNvbmluZyBjb250cmFzdGluZyBLQVNBTiB2cyBLTVNBTiBhcHBsaWNhYmlsaXR5IGZvciB0aGlzIHBhdGNoLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPlRhcmdldCBhcmNoaXRlY3R1cmU6IGFtZDY0CgpGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IDQ3NTQ3ZWU3YTU0MDkyM2U2MjE5ZjQ1YmQ4YjI2ZTI5ZGE4YzFmNTAKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgVGh1IFNlcCAxMCAxNjoxNTo0MiAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vYnBmL2tmdW5jcy5yc3QgYi9Eb2N1bWVudGF0aW9uL2JwZi9rZnVuY3MucnN0CmluZGV4IDg1ZjczZTBiYmQwZmYuLjY2OTFmZThhMzJjM2QgMTAwNjQ0Ci0tLSBhL0RvY3VtZW50YXRpb24vYnBmL2tmdW5jcy5yc3QKJiM0MzsmIzQzOyYjNDM7IGIvRG9jdW1lbnRhdGlvbi9icGYva2Z1bmNzLnJzdApAQCAtNDg2LDYgJiM0Mzs0ODYsMTYgQEAgRXhhbXBsZSB1c2FnZSBpbiBCUEYgcHJvZ3JhbToKIAkvKiBub3RlIHRoYXQgdGhlIGxhc3QgYXJndW1lbnQgaXMgb21pdHRlZCAqLwogICAgICAgICBicGZfdGFza193b3JrX3NjaGVkdWxlX3NpZ25hbCh0YXNrLCAmYW1wO3dvcmstJmd0O3R3LCAmYW1wO2Fycm1hcCwgdGFza193b3JrX2NhbGxiYWNrKTsKIAomIzQzOzIuNS4xMCBLRl9QRVJGTU9OIGZsYWcKJiM0MzstLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiYjNDM7CiYjNDM7VGhlIEtGX1BFUkZNT04gZmxhZyBpcyB1c2VkIGZvciBrZnVuY3MgdGhhdCBjYW4gZXhwb3NlIGtlcm5lbCBtZW1vcnkgb3Iga2VybmVsCiYjNDM7YWRkcmVzc2VzIHRvIHRoZSBCUEYgcHJvZ3JhbSwgZm9yIGV4YW1wbGUgYnkgcmVhZGluZyB0aHJvdWdoIGEgcG9pbnRlciB0aGF0IHRoZQomIzQzO3ZlcmlmaWVyIGRvZXMgbm90IGNoZWNrLiBDYWxsaW5nIHN1Y2ggYSBrZnVuYyByZXF1aXJlcyBDQVBfUEVSRk1PTiwgb3IKJiM0MztDQVBfU1lTX0FETUlOLCBpbiB0aGUgc2FtZSB3YXkgdGhhdCB0aGUgZXF1aXZhbGVudCBCUEYgaGVscGVycyBhcmUgZ2F0ZWQgaW4KJiM0MzticGZfYmFzZV9mdW5jX3Byb3RvKCkuIEEgcHJvZ3JhbSBsb2FkZWQgd2l0aCBDQVBfQlBGIGFsb25lIGlzIHJlamVjdGVkIGF0IGxvYWQKJiM0Mzt0aW1lLgomIzQzOwogMi42IFJlZ2lzdGVyaW5nIHRoZSBrZnVuY3MKIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgvYnRmLmggYi9pbmNsdWRlL2xpbnV4L2J0Zi5oCmluZGV4IDg5ZDVhNWM0ZjExNzEuLjdjNjJlYTE3YjExNjMgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvbGludXgvYnRmLmgKJiM0MzsmIzQzOyYjNDM7IGIvaW5jbHVkZS9saW51eC9idGYuaApAQCAtODAsNiAmIzQzOzgwLDcgQEAKICNkZWZpbmUgS0ZfQVJFTkFfQVJHMiAgICgxICZsdDsmbHQ7IDE1KSAvKiBrZnVuYyB0YWtlcyBhbiBhcmVuYSBwb2ludGVyIGFzIGl0cyBzZWNvbmQgYXJndW1lbnQgKi8KICNkZWZpbmUgS0ZfSU1QTElDSVRfQVJHUyAoMSAmbHQ7Jmx0OyAxNikgLyoga2Z1bmMgaGFzIGltcGxpY2l0IGFyZ3VtZW50cyBzdXBwbGllZCBieSB0aGUgdmVyaWZpZXIgKi8KICNkZWZpbmUgS0ZfU1BJTkxPQ0tfU0FGRSAoMSAmbHQ7Jmx0OyAxNykgLyoga2Z1bmMgaXMgYWxsb3dlZCBpbnNpZGUgYnBmX3NwaW5fbG9jay1lZCByZWdpb24gKi8KJiM0MzsjZGVmaW5lIEtGX1BFUkZNT04gICAgICAoMSAmbHQ7Jmx0OyAxOCkgLyoga2Z1bmMgcmVxdWlyZXMgQ0FQX1BFUkZNT04gKi8KIAogLyoKICAqIFRhZyBtYXJraW5nIGEga2VybmVsIGZ1bmN0aW9uIGFzIGEga2Z1bmMuIFRoaXMgaXMgbWVhbnQgdG8gbWluaW1pemUgdGhlCmRpZmYgLS1naXQgYS9rZXJuZWwvYnBmL2hlbHBlcnMuYyBiL2tlcm5lbC9icGYvaGVscGVycy5jCmluZGV4IGIzY2M1YzhmYzg3NTYuLjhhMGVlYjRmNjIzNmQgMTAwNjQ0Ci0tLSBhL2tlcm5lbC9icGYvaGVscGVycy5jCiYjNDM7JiM0MzsmIzQzOyBiL2tlcm5lbC9icGYvaGVscGVycy5jCkBAIC00ODgzLDcgJiM0Mzs0ODgzLDcgQEAgQlRGX0lEKGZ1bmMsIGJwZl9jZ3JvdXBfcmVsZWFzZV9kdG9yKQogCiBCVEZfS0ZVTkNTX1NUQVJUKGNvbW1vbl9idGZfaWRzKQogQlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl9jYXN0X3RvX2tlcm5fY3R4LCBLRl9GQVNUQ0FMTCkKLUJURl9JRF9GTEFHUyhmdW5jLCBicGZfcmRvbmx5X2Nhc3QsIEtGX0ZBU1RDQUxMKQomIzQzO0JURl9JRF9GTEFHUyhmdW5jLCBicGZfcmRvbmx5X2Nhc3QsIEtGX0ZBU1RDQUxMIHwgS0ZfUEVSRk1PTikKIEJURl9JRF9GTEFHUyhmdW5jLCBicGZfcmN1X3JlYWRfbG9jaykKIEJURl9JRF9GTEFHUyhmdW5jLCBicGZfcmN1X3JlYWRfdW5sb2NrKQogQlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl9keW5wdHJfc2xpY2UsIEtGX1JFVF9OVUxMKQpAQCAtNDkyMCwxMSAmIzQzOzQ5MjAsMTEgQEAgQlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl93cV9zZXRfY2FsbGJhY2ssIEtGX0lNUExJQ0lUX0FSR1MpCiBCVEZfSURfRkxBR1MoZnVuYywgYnBmX3dxX3N0YXJ0KQogQlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl9wcmVlbXB0X2Rpc2FibGUpCiBCVEZfSURfRkxBR1MoZnVuYywgYnBmX3ByZWVtcHRfZW5hYmxlKQotQlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl9pdGVyX2JpdHNfbmV3LCBLRl9JVEVSX05FVykKJiM0MztCVEZfSURfRkxBR1MoZnVuYywgYnBmX2l0ZXJfYml0c19uZXcsIEtGX0lURVJfTkVXIHwgS0ZfUEVSRk1PTikKIEJURl9JRF9GTEFHUyhmdW5jLCBicGZfaXRlcl9iaXRzX25leHQsIEtGX0lURVJfTkVYVCB8IEtGX1JFVF9OVUxMKQogQlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl9pdGVyX2JpdHNfZGVzdHJveSwgS0ZfSVRFUl9ERVNUUk9ZKQotQlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl9jb3B5X2Zyb21fdXNlcl9zdHIsIEtGX1NMRUVQQUJMRSkKLUJURl9JRF9GTEFHUyhmdW5jLCBicGZfY29weV9mcm9tX3VzZXJfdGFza19zdHIsIEtGX1NMRUVQQUJMRSkKJiM0MztCVEZfSURfRkxBR1MoZnVuYywgYnBmX2NvcHlfZnJvbV91c2VyX3N0ciwgS0ZfU0xFRVBBQkxFIHwgS0ZfUEVSRk1PTikKJiM0MztCVEZfSURfRkxBR1MoZnVuYywgYnBmX2NvcHlfZnJvbV91c2VyX3Rhc2tfc3RyLCBLRl9TTEVFUEFCTEUgfCBLRl9QRVJGTU9OKQogQlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl9nZXRfa21lbV9jYWNoZSkKIEJURl9JRF9GTEFHUyhmdW5jLCBicGZfaXRlcl9rbWVtX2NhY2hlX25ldywgS0ZfSVRFUl9ORVcgfCBLRl9TTEVFUEFCTEUpCiBCVEZfSURfRkxBR1MoZnVuYywgYnBmX2l0ZXJfa21lbV9jYWNoZV9uZXh0LCBLRl9JVEVSX05FWFQgfCBLRl9SRVRfTlVMTCB8IEtGX1NMRUVQQUJMRSkKQEAgLTQ5MzIsMTQgJiM0Mzs0OTMyLDE0IEBAIEJURl9JRF9GTEFHUyhmdW5jLCBicGZfaXRlcl9rbWVtX2NhY2hlX2Rlc3Ryb3ksIEtGX0lURVJfREVTVFJPWSB8IEtGX1NMRUVQQUJMRSkKIEJURl9JRF9GTEFHUyhmdW5jLCBicGZfbG9jYWxfaXJxX3NhdmUpCiBCVEZfSURfRkxBR1MoZnVuYywgYnBmX2xvY2FsX2lycV9yZXN0b3JlKQogI2lmZGVmIENPTkZJR19CUEZfRVZFTlRTCi1CVEZfSURfRkxBR1MoZnVuYywgYnBmX3Byb2JlX3JlYWRfdXNlcl9keW5wdHIpCi1CVEZfSURfRkxBR1MoZnVuYywgYnBmX3Byb2JlX3JlYWRfa2VybmVsX2R5bnB0cikKLUJURl9JRF9GTEFHUyhmdW5jLCBicGZfcHJvYmVfcmVhZF91c2VyX3N0cl9keW5wdHIpCi1CVEZfSURfRkxBR1MoZnVuYywgYnBmX3Byb2JlX3JlYWRfa2VybmVsX3N0cl9keW5wdHIpCi1CVEZfSURfRkxBR1MoZnVuYywgYnBmX2NvcHlfZnJvbV91c2VyX2R5bnB0ciwgS0ZfU0xFRVBBQkxFKQotQlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl9jb3B5X2Zyb21fdXNlcl9zdHJfZHlucHRyLCBLRl9TTEVFUEFCTEUpCi1CVEZfSURfRkxBR1MoZnVuYywgYnBmX2NvcHlfZnJvbV91c2VyX3Rhc2tfZHlucHRyLCBLRl9TTEVFUEFCTEUpCi1CVEZfSURfRkxBR1MoZnVuYywgYnBmX2NvcHlfZnJvbV91c2VyX3Rhc2tfc3RyX2R5bnB0ciwgS0ZfU0xFRVBBQkxFKQomIzQzO0JURl9JRF9GTEFHUyhmdW5jLCBicGZfcHJvYmVfcmVhZF91c2VyX2R5bnB0ciwgS0ZfUEVSRk1PTikKJiM0MztCVEZfSURfRkxBR1MoZnVuYywgYnBmX3Byb2JlX3JlYWRfa2VybmVsX2R5bnB0ciwgS0ZfUEVSRk1PTikKJiM0MztCVEZfSURfRkxBR1MoZnVuYywgYnBmX3Byb2JlX3JlYWRfdXNlcl9zdHJfZHlucHRyLCBLRl9QRVJGTU9OKQomIzQzO0JURl9JRF9GTEFHUyhmdW5jLCBicGZfcHJvYmVfcmVhZF9rZXJuZWxfc3RyX2R5bnB0ciwgS0ZfUEVSRk1PTikKJiM0MztCVEZfSURfRkxBR1MoZnVuYywgYnBmX2NvcHlfZnJvbV91c2VyX2R5bnB0ciwgS0ZfU0xFRVBBQkxFIHwgS0ZfUEVSRk1PTikKJiM0MztCVEZfSURfRkxBR1MoZnVuYywgYnBmX2NvcHlfZnJvbV91c2VyX3N0cl9keW5wdHIsIEtGX1NMRUVQQUJMRSB8IEtGX1BFUkZNT04pCiYjNDM7QlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl9jb3B5X2Zyb21fdXNlcl90YXNrX2R5bnB0ciwgS0ZfU0xFRVBBQkxFIHwgS0ZfUEVSRk1PTikKJiM0MztCVEZfSURfRkxBR1MoZnVuYywgYnBmX2NvcHlfZnJvbV91c2VyX3Rhc2tfc3RyX2R5bnB0ciwgS0ZfU0xFRVBBQkxFIHwgS0ZfUEVSRk1PTikKICNlbmRpZgogI2lmZGVmIENPTkZJR19ETUFfU0hBUkVEX0JVRkZFUgogQlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl9pdGVyX2RtYWJ1Zl9uZXcsIEtGX0lURVJfTkVXIHwgS0ZfU0xFRVBBQkxFKQpAQCAtNDk0NywyNiAmIzQzOzQ5NDcsMjYgQEAgQlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl9pdGVyX2RtYWJ1Zl9uZXh0LCBLRl9JVEVSX05FWFQgfCBLRl9SRVRfTlVMTCB8IEtGX1NMRUVQQUIKIEJURl9JRF9GTEFHUyhmdW5jLCBicGZfaXRlcl9kbWFidWZfZGVzdHJveSwgS0ZfSVRFUl9ERVNUUk9ZIHwgS0ZfU0xFRVBBQkxFKQogI2VuZGlmCiBCVEZfSURfRkxBR1MoZnVuYywgX19icGZfdHJhcCkKLUJURl9JRF9GTEFHUyhmdW5jLCBicGZfc3RyY21wKTsKLUJURl9JRF9GTEFHUyhmdW5jLCBicGZfc3RyY2FzZWNtcCk7Ci1CVEZfSURfRkxBR1MoZnVuYywgYnBmX3N0cm5jYXNlY21wKTsKLUJURl9JRF9GTEFHUyhmdW5jLCBicGZfc3RyY2hyKTsKLUJURl9JRF9GTEFHUyhmdW5jLCBicGZfc3RyY2hybnVsKTsKLUJURl9JRF9GTEFHUyhmdW5jLCBicGZfc3RybmNocik7Ci1CVEZfSURfRkxBR1MoZnVuYywgYnBmX3N0cnJjaHIpOwotQlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl9zdHJsZW4pOwotQlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl9zdHJubGVuKTsKLUJURl9JRF9GTEFHUyhmdW5jLCBicGZfc3Ryc3BuKTsKLUJURl9JRF9GTEFHUyhmdW5jLCBicGZfc3RyY3Nwbik7Ci1CVEZfSURfRkxBR1MoZnVuYywgYnBmX3N0cnN0cik7Ci1CVEZfSURfRkxBR1MoZnVuYywgYnBmX3N0cmNhc2VzdHIpOwotQlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl9zdHJuc3RyKTsKLUJURl9JRF9GTEFHUyhmdW5jLCBicGZfc3RybmNhc2VzdHIpOwomIzQzO0JURl9JRF9GTEFHUyhmdW5jLCBicGZfc3RyY21wLCBLRl9QRVJGTU9OKTsKJiM0MztCVEZfSURfRkxBR1MoZnVuYywgYnBmX3N0cmNhc2VjbXAsIEtGX1BFUkZNT04pOwomIzQzO0JURl9JRF9GTEFHUyhmdW5jLCBicGZfc3RybmNhc2VjbXAsIEtGX1BFUkZNT04pOwomIzQzO0JURl9JRF9GTEFHUyhmdW5jLCBicGZfc3RyY2hyLCBLRl9QRVJGTU9OKTsKJiM0MztCVEZfSURfRkxBR1MoZnVuYywgYnBmX3N0cmNocm51bCwgS0ZfUEVSRk1PTik7CiYjNDM7QlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl9zdHJuY2hyLCBLRl9QRVJGTU9OKTsKJiM0MztCVEZfSURfRkxBR1MoZnVuYywgYnBmX3N0cnJjaHIsIEtGX1BFUkZNT04pOwomIzQzO0JURl9JRF9GTEFHUyhmdW5jLCBicGZfc3RybGVuLCBLRl9QRVJGTU9OKTsKJiM0MztCVEZfSURfRkxBR1MoZnVuYywgYnBmX3N0cm5sZW4sIEtGX1BFUkZNT04pOwomIzQzO0JURl9JRF9GTEFHUyhmdW5jLCBicGZfc3Ryc3BuLCBLRl9QRVJGTU9OKTsKJiM0MztCVEZfSURfRkxBR1MoZnVuYywgYnBmX3N0cmNzcG4sIEtGX1BFUkZNT04pOwomIzQzO0JURl9JRF9GTEFHUyhmdW5jLCBicGZfc3Ryc3RyLCBLRl9QRVJGTU9OKTsKJiM0MztCVEZfSURfRkxBR1MoZnVuYywgYnBmX3N0cmNhc2VzdHIsIEtGX1BFUkZNT04pOwomIzQzO0JURl9JRF9GTEFHUyhmdW5jLCBicGZfc3RybnN0ciwgS0ZfUEVSRk1PTik7CiYjNDM7QlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl9zdHJuY2FzZXN0ciwgS0ZfUEVSRk1PTik7CiAjaWYgZGVmaW5lZChDT05GSUdfQlBGX0xTTSkgJmFtcDsmYW1wOyBkZWZpbmVkKENPTkZJR19DR1JPVVBTKQogQlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl9jZ3JvdXBfcmVhZF94YXR0ciwgS0ZfUkNVKQogI2VuZGlmCi1CVEZfSURfRkxBR1MoZnVuYywgYnBmX3N0cmVhbV92cHJpbnRrLCBLRl9JTVBMSUNJVF9BUkdTIHwgS0ZfU1BJTkxPQ0tfU0FGRSkKLUJURl9JRF9GTEFHUyhmdW5jLCBicGZfc3RyZWFtX3ByaW50X3N0YWNrLCBLRl9JTVBMSUNJVF9BUkdTIHwgS0ZfU1BJTkxPQ0tfU0FGRSkKJiM0MztCVEZfSURfRkxBR1MoZnVuYywgYnBmX3N0cmVhbV92cHJpbnRrLCBLRl9JTVBMSUNJVF9BUkdTIHwgS0ZfU1BJTkxPQ0tfU0FGRSB8IEtGX1BFUkZNT04pCiYjNDM7QlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl9zdHJlYW1fcHJpbnRfc3RhY2ssIEtGX0lNUExJQ0lUX0FSR1MgfCBLRl9TUElOTE9DS19TQUZFIHwgS0ZfUEVSRk1PTikKIEJURl9JRF9GTEFHUyhmdW5jLCBicGZfdGFza193b3JrX3NjaGVkdWxlX3NpZ25hbCwgS0ZfSU1QTElDSVRfQVJHUykKIEJURl9JRF9GTEFHUyhmdW5jLCBicGZfdGFza193b3JrX3NjaGVkdWxlX3Jlc3VtZSwgS0ZfSU1QTElDSVRfQVJHUykKIEJURl9JRF9GTEFHUyhmdW5jLCBicGZfZHlucHRyX2Zyb21fZmlsZSkKZGlmZiAtLWdpdCBhL2tlcm5lbC9icGYvdmVyaWZpZXIuYyBiL2tlcm5lbC9icGYvdmVyaWZpZXIuYwppbmRleCA3MmEzZjU5OThkZDI3Li4zNjkyM2NlMDQyNzM0IDEwMDY0NAotLS0gYS9rZXJuZWwvYnBmL3ZlcmlmaWVyLmMKJiM0MzsmIzQzOyYjNDM7IGIva2VybmVsL2JwZi92ZXJpZmllci5jCkBAIC02NDUzLDYgJiM0Mzs2NDUzLDE2IEBAIHN0YXRpYyBpbnQgY2hlY2tfbWVtX2FjY2VzcyhzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52LCBpbnQgaW5zbl9pZHgsIHN0cnVjdCBiCiAJCQlyZXR1cm4gLUVBQ0NFUzsKIAkJfQogCiYjNDM7CQlpZiAocmRvbmx5X3VudHJ1c3RlZCAmYW1wOyZhbXA7ICFlbnYtJmd0O2FsbG93X3B0cl9sZWFrcykgewomIzQzOwkJCXZlcmJvc2UoZW52LCAmIzM0OyVzIGFjY2VzcyBpcyBhbGxvd2VkIG9ubHkgdG8gQ0FQX1BFUkZNT04gYW5kIENBUF9TWVNfQURNSU5cbiYjMzQ7LAomIzQzOwkJCQlyZWdfdHlwZV9zdHIoZW52LCByZWctJmd0O3R5cGUpKTsKJiM0MzsJCQlicGZfZGlhZ19wb2xpY3koCiYjNDM7CQkJCWVudiwgaW5zbl9pZHgsICYjMzQ7cmVhZCBmcm9tIHVudHJ1c3RlZCByZWFkLW9ubHkgbWVtb3J5JiMzNDssCiYjNDM7CQkJCSYjMzQ7dGhlIGFjY2VzcyByZXF1aXJlcyBDQVBfUEVSRk1PTiYjMzQ7LAomIzQzOwkJCQkmIzM0O0xvYWQgdGhlIHByb2dyYW0gd2l0aCBDQVBfUEVSRk1PTiwgb3IgYXZvaWQgZGVyZWZlcmVuY2luZyB1bnRydXN0ZWQgcG9pbnRlcnMuJiMzNDspOwomIzQzOwkJCXJldHVybiAtRVBFUk07CiYjNDM7CQl9CiYjNDM7CiAJCS8qCiAJCSAqIEFjY2Vzc2VzIHRvIHVudHJ1c3RlZCBQVFJfVE9fTUVNIGFyZSBkb25lIHRocm91Z2ggcHJvYmUKIAkJICogaW5zdHJ1Y3Rpb25zLCBoZW5jZSBubyBuZWVkIHRvIGNoZWNrIGJvdW5kcyBpbiB0aGF0IGNhc2UuCkBAIC0xMTM1Niw2ICYjNDM7MTEzNjYsMTEgQEAgc3RhdGljIGJvb2wgaXNfa2Z1bmNfZGVzdHJ1Y3RpdmUoc3RydWN0IGJwZl9jYWxsX2FyZ19tZXRhICptZXRhKQogCXJldHVybiBtZXRhLSZndDtrZnVuY19mbGFncyAmYW1wOyBLRl9ERVNUUlVDVElWRTsKIH0KIAomIzQzO3N0YXRpYyBib29sIGlzX2tmdW5jX3BlcmZtb24oc3RydWN0IGJwZl9jYWxsX2FyZ19tZXRhICptZXRhKQomIzQzO3sKJiM0MzsJcmV0dXJuIG1ldGEtJmd0O2tmdW5jX2ZsYWdzICZhbXA7IEtGX1BFUkZNT047CiYjNDM7fQomIzQzOwogc3RhdGljIGJvb2wgaXNfa2Z1bmNfcmN1KHN0cnVjdCBicGZfY2FsbF9hcmdfbWV0YSAqbWV0YSkKIHsKIAlyZXR1cm4gbWV0YS0mZ3Q7a2Z1bmNfZmxhZ3MgJmFtcDsgS0ZfUkNVOwpAQCAtMTM4MzQsNiAmIzQzOzEzODQ5LDE2IEBAIHN0YXRpYyBpbnQgY2hlY2tfa2Z1bmNfY2FsbChzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52LCBzdHJ1Y3QgYnBmX2luc24gKmluc24sCiAJCXJldHVybiAtRUFDQ0VTOwogCX0KIAomIzQzOwlpZiAoaXNfa2Z1bmNfcGVyZm1vbigmYW1wO21ldGEpICZhbXA7JmFtcDsgIWVudi0mZ3Q7YWxsb3dfcHRyX2xlYWtzKSB7CiYjNDM7CQl2ZXJib3NlKGVudiwgJiMzNDslcyBpcyBhbGxvd2VkIG9ubHkgdG8gQ0FQX1BFUkZNT04gYW5kIENBUF9TWVNfQURNSU5cbiYjMzQ7LAomIzQzOwkJCWZ1bmNfbmFtZSk7CiYjNDM7CQlvcGVyYXRpb24gPSBicGZfZGlhZ19mbXQoZW52LCAmIzM0O2tmdW5jICVzJiMzNDssIGZ1bmNfbmFtZSk7CiYjNDM7CQlicGZfZGlhZ19wb2xpY3koCiYjNDM7CQkJZW52LCBpbnNuX2lkeCwgb3BlcmF0aW9uLCAmIzM0O3RoZSBrZnVuYyByZXF1aXJlcyBDQVBfUEVSRk1PTiYjMzQ7LAomIzQzOwkJCSYjMzQ7TG9hZCB0aGUgcHJvZ3JhbSB3aXRoIENBUF9QRVJGTU9OLCBvciBhdm9pZCB0aGUga2Z1bmMuJiMzNDspOwomIzQzOwkJcmV0dXJuIC1FUEVSTTsKJiM0MzsJfQomIzQzOwogCXNsZWVwYWJsZSA9IGJwZl9pc19rZnVuY19zbGVlcGFibGUoJmFtcDttZXRhKTsKIAlpZiAoc2xlZXBhYmxlICZhbXA7JmFtcDsgIWluX3NsZWVwYWJsZShlbnYpKSB7CiAJCXZlcmJvc2UoZW52LCAmIzM0O3Byb2dyYW0gbXVzdCBiZSBzbGVlcGFibGUgdG8gY2FsbCBzbGVlcGFibGUga2Z1bmMgJXNcbiYjMzQ7LCBmdW5jX25hbWUpOwpkaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvdmVyaWZpZXIuYyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3ZlcmlmaWVyLmMKaW5kZXggNjRhYzQ5YWQ2N2U2My4uZWM5ZTM5MDdjNzVkNiAxMDA2NDQKLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvdmVyaWZpZXIuYwomIzQzOyYjNDM7JiM0MzsgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy92ZXJpZmllci5jCkBAIC01Myw2ICYjNDM7NTMsNyBAQAogI2luY2x1ZGUgJiMzNDt2ZXJpZmllcl9pdGVyYXRpbmdfY2FsbGJhY2tzLnNrZWwuaCYjMzQ7CiAjaW5jbHVkZSAmIzM0O3ZlcmlmaWVyX2plcV9pbmZlcl9ub3RfbnVsbC5za2VsLmgmIzM0OwogI2luY2x1ZGUgJiMzNDt2ZXJpZmllcl9qaXRfY29udmVyZ2VuY2Uuc2tlbC5oJiMzNDsKJiM0MzsjaW5jbHVkZSAmIzM0O3ZlcmlmaWVyX2tmdW5jX3BlcmZtb24uc2tlbC5oJiMzNDsKICNpbmNsdWRlICYjMzQ7dmVyaWZpZXJfbGRfaW5kLnNrZWwuaCYjMzQ7CiAjaW5jbHVkZSAmIzM0O3ZlcmlmaWVyX2xkc3guc2tlbC5oJiMzNDsKICNpbmNsdWRlICYjMzQ7dmVyaWZpZXJfbGVha19wdHIuc2tlbC5oJiMzNDsKQEAgLTIxNiw2ICYjNDM7MjE3LDcgQEAgdm9pZCB0ZXN0X3ZlcmlmaWVyX2ludF9wdHIodm9pZCkgICAgICAgICAgICAgIHsgUlVOKHZlcmlmaWVyX2ludF9wdHIpOyB9CiB2b2lkIHRlc3RfdmVyaWZpZXJfaXRlcmF0aW5nX2NhbGxiYWNrcyh2b2lkKSAgeyBSVU4odmVyaWZpZXJfaXRlcmF0aW5nX2NhbGxiYWNrcyk7IH0KIHZvaWQgdGVzdF92ZXJpZmllcl9qZXFfaW5mZXJfbm90X251bGwodm9pZCkgICB7IFJVTih2ZXJpZmllcl9qZXFfaW5mZXJfbm90X251bGwpOyB9CiB2b2lkIHRlc3RfdmVyaWZpZXJfaml0X2NvbnZlcmdlbmNlKHZvaWQpICAgICAgeyBSVU4odmVyaWZpZXJfaml0X2NvbnZlcmdlbmNlKTsgfQomIzQzO3ZvaWQgdGVzdF92ZXJpZmllcl9rZnVuY19wZXJmbW9uKHZvaWQpICAgICAgICB7IFJVTih2ZXJpZmllcl9rZnVuY19wZXJmbW9uKTsgfQogdm9pZCB0ZXN0X3ZlcmlmaWVyX2xvYWRfYWNxdWlyZSh2b2lkKSAgICAgICAgIHsgUlVOKHZlcmlmaWVyX2xvYWRfYWNxdWlyZSk7IH0KIHZvaWQgdGVzdF92ZXJpZmllcl9sZF9pbmQodm9pZCkgICAgICAgICAgICAgICB7IFJVTih2ZXJpZmllcl9sZF9pbmQpOyB9CiB2b2lkIHRlc3RfdmVyaWZpZXJfbGRzeCh2b2lkKSAgICAgICAgICAgICAgICAgIHsgUlVOKHZlcmlmaWVyX2xkc3gpOyB9CmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvdmVyaWZpZXJfa2Z1bmNfcGVyZm1vbi5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3ZlcmlmaWVyX2tmdW5jX3BlcmZtb24uYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwLi5jNmFkYmI0ODE2Y2VjCi0tLSAvZGV2L251bGwKJiM0MzsmIzQzOyYjNDM7IGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3ZlcmlmaWVyX2tmdW5jX3BlcmZtb24uYwpAQCAtMCwwICYjNDM7MSw2MyBAQAomIzQzOy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wCiYjNDM7CiYjNDM7I2luY2x1ZGUgJmx0O3ZtbGludXguaCZndDsKJiM0MzsjaW5jbHVkZSAmbHQ7YnBmL2JwZl9oZWxwZXJzLmgmZ3Q7CiYjNDM7I2luY2x1ZGUgJiMzNDticGZfbWlzYy5oJiMzNDsKJiM0MzsKJiM0Mzt2b2lkICp1c2VyX3B0cjsKJiM0MztjaGFyIGR5bnB0cl9idWZbOF07CiYjNDM7dTY0IGthZGRyOwomIzQzOwomIzQzO1NFQygmIzM0O3NvY2tldCYjMzQ7KQomIzQzO19fc3VjY2VzcwomIzQzO19fY2Fwc191bnByaXYoQ0FQX0JQRikKJiM0MztfX2ZhaWx1cmVfdW5wcml2CiYjNDM7X19tc2dfdW5wcml2KCYjMzQ7YnBmX3Jkb25seV9jYXN0IGlzIGFsbG93ZWQgb25seSB0byBDQVBfUEVSRk1PTiBhbmQgQ0FQX1NZU19BRE1JTiYjMzQ7KQomIzQzO2ludCByZG9ubHlfY2FzdF9ub3BlcmZtb24odm9pZCAqY3R4KQomIzQzO3sKJiM0MzsJY2hhciAqcCA9IGJwZl9yZG9ubHlfY2FzdCgwLCAwKTsKJiM0MzsKJiM0MzsJcmV0dXJuIHBbMHg3ZmZmXTsKJiM0Mzt9CiYjNDM7CiYjNDM7U0VDKCYjMzQ7c29ja2V0JiMzNDspCiYjNDM7X19zdWNjZXNzCiYjNDM7X19jYXBzX3VucHJpdihDQVBfQlBGKQomIzQzO19fZmFpbHVyZV91bnByaXYKJiM0MztfX21zZ191bnByaXYoJiMzNDticGZfcHJvYmVfcmVhZF9rZXJuZWxfZHlucHRyIGlzIGFsbG93ZWQgb25seSB0byBDQVBfUEVSRk1PTiBhbmQgQ0FQX1NZU19BRE1JTiYjMzQ7KQomIzQzO2ludCBwcm9iZV9yZWFkX2tlcm5lbF9keW5wdHJfbm9wZXJmbW9uKHZvaWQgKmN0eCkKJiM0Mzt7CiYjNDM7CXN0cnVjdCBicGZfZHlucHRyIGRwdHI7CiYjNDM7CiYjNDM7CWJwZl9keW5wdHJfZnJvbV9tZW0oZHlucHRyX2J1Ziwgc2l6ZW9mKGR5bnB0cl9idWYpLCAwLCAmYW1wO2RwdHIpOwomIzQzOwlicGZfcHJvYmVfcmVhZF9rZXJuZWxfZHlucHRyKCZhbXA7ZHB0ciwgMCwgc2l6ZW9mKGR5bnB0cl9idWYpLCB1c2VyX3B0cik7CiYjNDM7CXJldHVybiAwOwomIzQzO30KJiM0MzsKJiM0MztTRUMoJiMzNDtzb2NrZXQmIzM0OykKJiM0MztfX3N1Y2Nlc3MKJiM0MztfX2NhcHNfdW5wcml2KENBUF9CUEYpCiYjNDM7X19mYWlsdXJlX3VucHJpdgomIzQzO19fbXNnX3VucHJpdigmIzM0O2JwZl9zdHJlYW1fdnByaW50ayBpcyBhbGxvd2VkIG9ubHkgdG8gQ0FQX1BFUkZNT04gYW5kIENBUF9TWVNfQURNSU4mIzM0OykKJiM0MztpbnQgc3RyZWFtX3ZwcmludGtfbm9wZXJmbW9uKHZvaWQgKmN0eCkKJiM0Mzt7CiYjNDM7CWJwZl9zdHJlYW1fcHJpbnRrKEJQRl9TVERPVVQsICYjMzQ7JXBCJiMzNDssICh2b2lkICopa2FkZHIpOwomIzQzOwlyZXR1cm4gMDsKJiM0Mzt9CiYjNDM7CiYjNDM7X193ZWFrIGludCBzdWJwcm9nX3VudHJ1c3RlZF9yZWFkKHZvaWQgKnAgX19hcmdfdW50cnVzdGVkKQomIzQzO3sKJiM0MzsJcmV0dXJuICooY2hhciAqKXA7CiYjNDM7fQomIzQzOwomIzQzO1NFQygmIzM0O3NvY2tldCYjMzQ7KQomIzQzO19fc3VjY2VzcwomIzQzO19fY2Fwc191bnByaXYoQ0FQX0JQRikKJiM0MztfX2ZhaWx1cmVfdW5wcml2CiYjNDM7X19tc2dfdW5wcml2KCYjMzQ7cmRvbmx5X3VudHJ1c3RlZF9tZW0gYWNjZXNzIGlzIGFsbG93ZWQgb25seSB0byBDQVBfUEVSRk1PTiBhbmQgQ0FQX1NZU19BRE1JTiYjMzQ7KQomIzQzO2ludCBhcmdfdW50cnVzdGVkX3JlYWRfbm9wZXJmbW9uKHZvaWQgKmN0eCkKJiM0Mzt7CiYjNDM7CXJldHVybiBzdWJwcm9nX3VudHJ1c3RlZF9yZWFkKDApOwomIzQzO30KJiM0MzsKJiM0MztjaGFyIF9saWNlbnNlW10gU0VDKCYjMzQ7bGljZW5zZSYjMzQ7KSA9ICYjMzQ7R1BMJiMzNDs7CjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE5LzM8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMCAxNjoxNjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+a21zYW4tZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA2NzU2CgkJCQkJCQlvdXRwdXQ6IDMzCgkJCQkJCQl0aG91Z2h0czogNzA2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgQlBGIEtmdW5jIFBlcm1pc3Npb24gVGlnaHRlbmluZyBQYXRjaCoqCgpPa2F5LCBsZXQmIzM5O3MgYnJlYWsgZG93biB0aGlzIHBhdGNoLiBNeSBpbW1lZGlhdGUgdGhvdWdodCBpcywgJiMzNDtBaCwgdGhleSYjMzk7cmUgYmVlZmluZyB1cCB0aGUgc2VjdXJpdHkgYXJvdW5kIGNlcnRhaW4gQlBGIGtmdW5jcy4mIzM0OyBTZWVtcyBsaWtlIGEgZ29vZCB0aGluZy4KCkZyb20gdGhlIHBhdGNoIHN1bW1hcnksIEkgc2VlIHRoZXkmIzM5O3ZlIGFkZGVkIGEgYEtGX1BFUkZNT05gIGZsYWcsIGRlZmluZWQgaW4gYGluY2x1ZGUvbGludXgvYnRmLmhgLCBhbmQgdGhlbiBhcHBsaWVkIGl0IHRvIGEgYnVuY2ggb2Yga2Z1bmNzIHdpdGhpbiBga2VybmVsL2JwZi9oZWxwZXJzLmNgLiBTcGVjaWZpY2FsbHksIGZ1bmN0aW9ucyBsaWtlIGBicGZfcmRvbmx5X2Nhc3RgLCBgYnBmX2l0ZXJfYml0c19uZXdgLCBgYnBmX2NvcHlfZnJvbV91c2VyX3N0cmAsIHZhcmlvdXMgYGJwZl9wcm9iZV9yZWFkXypgIGZ1bmN0aW9ucywgYW5kIG90aGVycy4gVGhlIGRvY3VtZW50YXRpb24gdXBkYXRlIGlzIGluIGBEb2N1bWVudGF0aW9uL2JwZi9rZnVuY3MucnN0YCwgc28gaXQgaXMgZWFzeSB0byBmaW5kIHRoZSBpbmZvcm1hdGlvbiBhYm91dCB0aGUgYEtGX1BFUkZNT05gIGZsYWcuCgpUaGUgY29yZSBvZiB0aGUgY2hhbmdlIHNlZW1zIHRvIGJlIGluIGBrZXJuZWwvYnBmL3ZlcmlmaWVyLmNgLiBUaGV5JiMzOTtyZSBhZGRpbmcgY2hlY2tzIGluIGBjaGVja19tZW1fYWNjZXNzYCBhbmQgYGNoZWNrX2tmdW5jX2NhbGxgLiBCYXNpY2FsbHksIGlmIEkgdW5kZXJzdGFuZCB0aGlzIGNvcnJlY3RseSwgdGhlIHZlcmlmaWVyIGlzIG5vdyBlbnN1cmluZyB0aGF0IGlmIHRoZSBjYWxsaW5nIGNvbnRleHQgZG9lc24mIzM5O3QgaGF2ZSBgQ0FQX1BFUkZNT05gIG9yIGBDQVBfU1lTX0FETUlOYCBhbmQgYGVudi0mZ3Q7YWxsb3dfcHRyX2xlYWtzYCBpcyAqbm90KiBzZXQsIHRoZSBgS0ZfUEVSRk1PTmAgZnVuY3Rpb25zIG9yIHJlYWRzIGZyb20gYHJkb25seV91bnRydXN0ZWRgIG1lbW9yeSB3aWxsIHJlc3VsdCBpbiBhbiBgLUVQRVJNYCBlcnJvci4gVGhhdCYjMzk7cyBhIGRpcmVjdCBzZWN1cml0eSBtZWFzdXJlIHRvIHJlc3RyaWN0IGFjY2Vzcy4KCk5vdywgbXkgbWluZCBzdGFydHMgZ29pbmcgdGhyb3VnaCB0aGUgdHlwaWNhbCBzZWN1cml0eSBhdWRpdCBzdGVwcy4gRmlyc3QsIGxldCYjMzk7cyBydWxlIG91dCBzb21lIHBvdGVudGlhbCBpc3N1ZXMuIERvZXMgdGhpcyBwYXRjaCBpbnRyb2R1Y2Ugb3IgbW9kaWZ5IGFueSBrZXJuZWwgc3RydWN0dXJlcyBzZW50IHRvIHVzZXIgc3BhY2Ugd2hlcmUgdW5pbml0aWFsaXplZCBmaWVsZHMgY291bGQgYmUgZXhwb3NlZD8gTm8sIHRoZSBwYXRjaCBkb2VzbiYjMzk7dCBkbyB0aGF0LiBEb2VzIGl0IGNyZWF0ZSBhbnkgY29uZGl0aW9uYWwgbG9naWMgdGhhdCByZWxpZXMgb24gdW5pbml0aWFsaXplZCB2YXJpYWJsZXM/IE5vcGUsIHRoZSB2ZXJpZmllciBzdGF0ZSAoYHJkb25seV91bnRydXN0ZWRgLCBgbWV0YWAsIGFuZCBgZW52LSZndDthbGxvd19wdHJfbGVha3NgKSBhcHBlYXJzIHRvIGJlIGZ1bGx5IGluaXRpYWxpemVkLiBBbnkgYWxsb2NhdGlvbiBvciBpbml0aWFsaXphdGlvbiBvZiBjb21wbGV4IGRhdGEgc3RydWN0dXJlcyB3aXRoIHRoZSBwb3RlbnRpYWwgZm9yIHVuaW5pdGlhbGl6ZWQgcmVhZHMgbGF0ZXI/IE5vIHNpZ24gb2YgdGhhdCBoZXJlLiBGaW5hbGx5LCBhcmUgdGhlcmUgYW55IGJvdW5kcyBjaGVjayBtb2RpZmljYXRpb25zIHRoYXQgY291bGQgZXhwb3NlIHVuaW5pdGlhbGl6ZWQgYnl0ZXM/IEFnYWluLCBuby4KCkp1c3QgdG8gYmUgYWJzb2x1dGVseSBjZXJ0YWluLCBJIG5lZWQgdG8gZG91YmxlLWNoZWNrIHRob3NlIHZlcmlmaWVyIGZ1bmN0aW9ucy4gTXkgcGxhbiBpcyB0byBkaWcgaW50byBga2VybmVsL2JwZi92ZXJpZmllci5jYCBhcm91bmQgbGluZXMgNjQ1MyBhbmQgMTM4NDkgdG8gY29uZmlybSBob3cgYGlzX2tmdW5jX3BlcmZtb24oJmFtcDttZXRhKWAgYW5kIGByZG9ubHlfdW50cnVzdGVkYCBhcmUgdXNlZCBpbiBjb250ZXh0LiBHb3R0YSBtYWtlIHN1cmUgdGhvc2UgY2hlY2tzIGFyZSByb2J1c3QuCgpJbiBjb25jbHVzaW9uLCB0aGlzIGxvb2tzIGxpa2UgYSBzdHJhaWdodGZvcndhcmQgYW5kIHdlbGwtdGFyZ2V0ZWQgc2VjdXJpdHkgaGFyZGVuaW5nIHBhdGNoLiBJdCYjMzk7cyBhIG5pY2UsIGZvY3VzZWQgaW1wcm92ZW1lbnQgaW4gQlBGIGtmdW5jIGFjY2VzcyBjb250cm9sLiBJdCB3aWxsIHJlc3RyaWN0IGNlcnRhaW4gQlBGIHByb2dyYW1zIHdoaWNoIGFyZW4mIzM5O3QgY29uc2lkZXJlZCBzdWZmaWNpZW50bHkgdHJ1c3RlZCBieSB0aGUgc3lzdGVtLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIwLzM8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMCAxNjoxNzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtyZG9ubHlfdW50cnVzdGVkJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7a2VybmVsL2JwZi92ZXJpZmllci5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2tlcm5lbC9icGYvdmVyaWZpZXIuYz02MzgxPXN0YXRpYyBpbnQgY2hlY2tfbWVtX2FjY2VzcyhzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52LCBpbnQgaW5zbl9pZHgsIHN0cnVjdCBicGZfcmVnX3N0YXRlICpyZWcsIGFyZ25vX3QgYXJnbm8sXG4tLVxua2VybmVsL2JwZi92ZXJpZmllci5jLTY0MzItXHRcdGJvb2wgcmRvbmx5X21lbSA9IHR5cGVfaXNfcmRvbmx5X21lbShyZWctXHUwMDNldHlwZSk7XG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6NjQzMzpcdFx0Ym9vbCByZG9ubHlfdW50cnVzdGVkID0gcmRvbmx5X21lbSBcdTAwMjZcdTAwMjYgKHJlZy1cdTAwM2V0eXBlIFx1MDAyNiBQVFJfVU5UUlVTVEVEKTtcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy02NDM0LVxuLS1cbmtlcm5lbC9icGYvdmVyaWZpZXIuYy02NDU1LVxua2VybmVsL2JwZi92ZXJpZmllci5jOjY0NTY6XHRcdGlmIChyZG9ubHlfdW50cnVzdGVkIFx1MDAyNlx1MDAyNiAhZW52LVx1MDAzZWFsbG93X3B0cl9sZWFrcykge1xua2VybmVsL2JwZi92ZXJpZmllci5jLTY0NTctXHRcdFx0dmVyYm9zZShlbnYsIFwmIzM0OyVzIGFjY2VzcyBpcyBhbGxvd2VkIG9ubHkgdG8gQ0FQX1BFUkZNT04gYW5kIENBUF9TWVNfQURNSU5cXG5cJiMzNDssXG4tLVxua2VybmVsL2JwZi92ZXJpZmllci5jLTY0NjktXHRcdCAqL1xua2VybmVsL2JwZi92ZXJpZmllci5jOjY0NzA6XHRcdGlmICghcmRvbmx5X3VudHJ1c3RlZClcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy02NDcxLVx0XHRcdGVyciA9IGNoZWNrX21lbV9yZWdpb25fYWNjZXNzKGVudiwgcmVnLCBhcmdubywgb2ZmLCBzaXplLFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIxLzM8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMCAxNjoxNzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+a21zYW4tZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA4NDM3CgkJCQkJCQlvdXRwdXQ6IDM1CgkJCQkJCQl0aG91Z2h0czogMTMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZSwgcHJlc2VudGVkIGluIHRoZSBmaXJzdCBwZXJzb246CgoqKkNoZWNraW5nIGBpc19rZnVuY19wZXJmbW9uYCoqCgpBbHJpZ2h0LCB0aW1lIHRvIGRpZyBpbi4gVGhlIGluaXRpYWwgdGhvdWdodCwgdGhlIHZlcnkgZmlyc3QgdGhpbmcgSSYjMzk7bSByZWFjaGluZyBmb3IsIGlzIHRvIGltbWVkaWF0ZWx5IGNoZWNrIHRoZSBzdGF0ZSBvZiBgaXNfa2Z1bmNfcGVyZm1vbmAuIFRoYXQmIzM5O3MgKnRoZSoganVtcGluZy1vZmYgcG9pbnQsIGlzbiYjMzk7dCBpdD8gSXQgZGljdGF0ZXMgc28gbXVjaCBvZiB0aGUgcG90ZW50aWFsIGZvbGxvdy11cCBhbmFseXNpcy4gSXMgaXQgZW5hYmxlZD8gRGlzYWJsZWQ/IFdoYXQmIzM5O3MgdGhlIGN1cnJlbnQgY29uZmlndXJhdGlvbj8gVW5kZXJzdGFuZGluZyB0aGF0IGZsYWcgaXMgcGFyYW1vdW50IGJlY2F1c2UgaXQgaW5mb3JtcyBldmVyeXRoaW5nIGVsc2UgdGhhdCBmb2xsb3dzLCBpbmNsdWRpbmcgd2hpY2ggc3Vic2VxdWVudCBjaGVja3MgYXJlIHJlbGV2YW50IGFuZCB3aGF0IHNvcnQgb2YgcGVyZm9ybWFuY2UgZGF0YSBJIHNob3VsZCBleHBlY3QgdG8gYmUgYWNjZXNzaWJsZS4gS25vd2luZyBpdHMgc3RhdGUgd2lsbCBndWlkZSBtZSBvbiB0aGUgbW9zdCBlZmZpY2llbnQgcGF0aC4gSSBuZWVkIHRvIGtub3cgaW1tZWRpYXRlbHkgaWYgcGVyZm1vbiBpcyBldmVuIGFjdGl2ZSBmb3IgdGhpcyBrZnVuYywgb3RoZXJ3aXNlLCBJJiMzOTttIHdhc3RpbmcgbXkgdGltZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMi8zPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTAgMTY6MTc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7aXNfa2Z1bmNfcGVyZm1vbiYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2tlcm5lbC9icGYvdmVyaWZpZXIuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtrZXJuZWwvYnBmL3ZlcmlmaWVyLmM9MTEzNjQ9c3RhdGljIGJvb2wgaXNfa2Z1bmNfZGVzdHJ1Y3RpdmUoc3RydWN0IGJwZl9jYWxsX2FyZ19tZXRhICptZXRhKVxuLS1cbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xMTM2OC1cbmtlcm5lbC9icGYvdmVyaWZpZXIuYzoxMTM2OTpzdGF0aWMgYm9vbCBpc19rZnVuY19wZXJmbW9uKHN0cnVjdCBicGZfY2FsbF9hcmdfbWV0YSAqbWV0YSlcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xMTM3MC17XG4tLVxua2VybmVsL2JwZi92ZXJpZmllci5jPTEzNzcwPXN0YXRpYyBpbnQgY2hlY2tfa2Z1bmNfY2FsbChzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52LCBzdHJ1Y3QgYnBmX2luc24gKmluc24sXG4tLVxua2VybmVsL2JwZi92ZXJpZmllci5jLTEzODUxLVxua2VybmVsL2JwZi92ZXJpZmllci5jOjEzODUyOlx0aWYgKGlzX2tmdW5jX3BlcmZtb24oXHUwMDI2bWV0YSkgXHUwMDI2XHUwMDI2ICFlbnYtXHUwMDNlYWxsb3dfcHRyX2xlYWtzKSB7XG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTM4NTMtXHRcdHZlcmJvc2UoZW52LCBcJiMzNDslcyBpcyBhbGxvd2VkIG9ubHkgdG8gQ0FQX1BFUkZNT04gYW5kIENBUF9TWVNfQURNSU5cXG5cJiMzNDssXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjMvMzwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzEwIDE2OjE3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5rbXNhbi1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDg5MzgKCQkJCQkJCW91dHB1dDogMTU1CgkJCQkJCQl0aG91Z2h0czogMTI3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFzc2Vzc21lbnQgb2YgdGhlIEJQRiBWZXJpZmllciBDaGFuZ2UqKgoKT2theSwgdGhpcyBsb29rcyBwcmV0dHkgY2xlYW4uIFRoZSBwYXRjaCBpcyBhZGRpbmcgYSBuZXcgY2hlY2sgaW4gdGhlIEJQRiB2ZXJpZmllciwgc3BlY2lmaWNhbGx5IGZvciBrZnVuY3MgdGhhdCB0b3VjaCBrZXJuZWwgbWVtb3J5LCBwb3NzaWJseSBleHBvc2luZyBwb2ludGVycyBvciBhbGxvd2luZyByZWFkLW9ubHkgYWNjZXNzIHRvIHVudHJ1c3RlZCBtZW1vcnkgc3BhY2VzIOKAkyBlc3NlbnRpYWxseSBhIGBLRl9QRVJGTU9OYCB0YWcuIFRoZXnigJlyZSBhcHBseWluZyB0aGlzIHRhZyB0byBzZXZlcmFsIGV4aXN0aW5nIGtmdW5jcy4KClRoZSBrZXkgdGhpbmcgaGVyZSwgZnJvbSBhIHNlY3VyaXR5IHN0YW5kcG9pbnQsIGlzIHRoYXQgdGhlcmUgYXJlIG5vIG9idmlvdXMgYXZlbnVlcyBmb3IgdW5pbml0aWFsaXplZCBtZW1vcnkgdG8gY3JlZXAgaW4uIEkmIzM5O3ZlIHJldmlld2VkIHRoZSBjb2RlOyB0aGVyZSYjMzk7cyBubyBjb3B5aW5nIG9mIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHRvIHVzZXJzcGFjZSwgbm8gaW5zdGFuY2VzIG9mIHVuaW5pdGlhbGl6ZWQgc3RydWN0dXJlcyBiZWluZyBjb3BpZWQsIGFuZCBubyB2YXJpYWJsZXMgdGhhdCBnZXQgcmVhZCBiZWZvcmUgaW5pdGlhbGl6YXRpb24uIE5vIG5ldyBtZW1vcnkgYWxsb2NhdGlvbnMgYXJlIGhhcHBlbmluZyB0aGF0IHdvdWxkIGludHJvZHVjZSB0aGlzIHJpc2sgZWl0aGVyLgoKR2l2ZW4gYWxsIG9mIHRoaXMsIEkmIzM5O20gY29uZmlkZW50IGluIGNhbGxpbmcgYE5lZWRzS01TQU4gPSBmYWxzZWAuIFdlIGNhbiBwcm9jZWVkIHRvIGBzZXQtcmVzdWx0c2AuIEl0JiMzOTtzIGEgc29saWQsIGZvY3VzZWQgY2hhbmdlIHdpdGggYSBjbGVhciBzZWN1cml0eSBjb25zaWRlcmF0aW9uLCBhbmQgdGhlIHZlcmlmaWNhdGlvbiBjaGVja3MgYXBwZWFyIHNvdW5kLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI0LzM8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMCAxNjoxNzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtLTVNBTlJlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBpbnRyb2R1Y2VzIHRoZSBLRl9QRVJGTU9OIGtmdW5jIGZsYWcgYW5kIGVuZm9yY2VzIGNhcGFiaWxpdHkgY2hlY2tzIGluIHRoZSBCUEYgdmVyaWZpZXIgKHJlcXVpcmluZyBDQVBfUEVSRk1PTiAvIENBUF9TWVNfQURNSU4gdmlhIGVudi1cdTAwM2VhbGxvd19wdHJfbGVha3MpIGZvciBjZXJ0YWluIGtmdW5jcyBhbmQgdW50cnVzdGVkIHJlYWQtb25seSBtZW1vcnkgYWNjZXNzZXMuXG5cblRoZSBjaGFuZ2VzIGFyZSBlbnRpcmVseSByZXN0cmljdGVkIHRvIEJQRiB2ZXJpZmllciBhY2Nlc3MtY29udHJvbCBjaGVja3MgYW5kIGZsYWcgZGVmaW5pdGlvbnMuIFRoZXkgZG8gbm90IGFsdGVyIG1lbW9yeSBpbml0aWFsaXphdGlvbiwgZG8gbm90IGludHJvZHVjZSBvciBjb3B5IHVuaW5pdGlhbGl6ZWQgZGF0YSBzdHJ1Y3R1cmVzIHRvIHVzZXIgc3BhY2UsIGFuZCBkbyBub3QgaW50cm9kdWNlIGxvZ2ljIHRoYXQgYnJhbmNoZXMgb24gdW5pbml0aWFsaXplZCBtZW1vcnkuIFRodXMsIHRoZXJlIGFyZSBubyB1bmluaXRpYWxpemVkIG1lbW9yeSByaXNrcyB0aGF0IHJlcXVpcmUgYSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uLiYjMzQ7LAogICYjMzQ7TmVlZHNLTVNBTiYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggaW50cm9kdWNlcyB0aGUgS0ZfUEVSRk1PTiBrZnVuYyBmbGFnIGFuZCBlbmZvcmNlcyBjYXBhYmlsaXR5IGNoZWNrcyBpbiB0aGUgQlBGIHZlcmlmaWVyIChyZXF1aXJpbmcgQ0FQX1BFUkZNT04gLyBDQVBfU1lTX0FETUlOIHZpYSBlbnYtXHUwMDNlYWxsb3dfcHRyX2xlYWtzKSBmb3IgY2VydGFpbiBrZnVuY3MgYW5kIHVudHJ1c3RlZCByZWFkLW9ubHkgbWVtb3J5IGFjY2Vzc2VzLlxuXG5UaGUgY2hhbmdlcyBhcmUgZW50aXJlbHkgcmVzdHJpY3RlZCB0byBCUEYgdmVyaWZpZXIgYWNjZXNzLWNvbnRyb2wgY2hlY2tzIGFuZCBmbGFnIGRlZmluaXRpb25zLiBUaGV5IGRvIG5vdCBhbHRlciBtZW1vcnkgaW5pdGlhbGl6YXRpb24sIGRvIG5vdCBpbnRyb2R1Y2Ugb3IgY29weSB1bmluaXRpYWxpemVkIGRhdGEgc3RydWN0dXJlcyB0byB1c2VyIHNwYWNlLCBhbmQgZG8gbm90IGludHJvZHVjZSBsb2dpYyB0aGF0IGJyYW5jaGVzIG9uIHVuaW5pdGlhbGl6ZWQgbWVtb3J5LiBUaHVzLCB0aGVyZSBhcmUgbm8gdW5pbml0aWFsaXplZCBtZW1vcnkgcmlza3MgdGhhdCByZXF1aXJlIGEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbi4mIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgoKCTxkaXYgaWQ9ImxsbV9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+TExNIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgVG9rZW5zPC90aD4KCQkJCQk8dGg+QXZnIFRva2VuczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJsbG1fc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJ0b29sX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5Ub29sIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9InRvb2xfc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJkdXJhdGlvbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+Cgk8ZGl2IGlkPSJ0b2tlbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+CgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9qc2FwaSI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDktMTBUMTY6MTU6NDQuMTY2ODEyNDQ4WiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6ODg4NDA2MjYwODgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiQlBGX1NZU0NBTExcIixcbiAgICBcIkJQRl9FVkVOVFNcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJjaGVja19rZnVuY19jYWxsXCIsXG4gICAgXCJjaGVja19tZW1fYWNjZXNzXCJcbiAgXSxcbiAgXCJLTVNBTlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBpbnRyb2R1Y2VzIHRoZSBLRl9QRVJGTU9OIGtmdW5jIGZsYWcgYW5kIGVuZm9yY2VzIGNhcGFiaWxpdHkgY2hlY2tzIGluIHRoZSBCUEYgdmVyaWZpZXIgKHJlcXVpcmluZyBDQVBfUEVSRk1PTiAvIENBUF9TWVNfQURNSU4gdmlhIGVudi1cXHUwMDNlYWxsb3dfcHRyX2xlYWtzKSBmb3IgY2VydGFpbiBrZnVuY3MgYW5kIHVudHJ1c3RlZCByZWFkLW9ubHkgbWVtb3J5IGFjY2Vzc2VzLlxcblxcblRoZSBjaGFuZ2VzIGFyZSBlbnRpcmVseSByZXN0cmljdGVkIHRvIEJQRiB2ZXJpZmllciBhY2Nlc3MtY29udHJvbCBjaGVja3MgYW5kIGZsYWcgZGVmaW5pdGlvbnMuIFRoZXkgZG8gbm90IGFsdGVyIG1lbW9yeSBpbml0aWFsaXphdGlvbiwgZG8gbm90IGludHJvZHVjZSBvciBjb3B5IHVuaW5pdGlhbGl6ZWQgZGF0YSBzdHJ1Y3R1cmVzIHRvIHVzZXIgc3BhY2UsIGFuZCBkbyBub3QgaW50cm9kdWNlIGxvZ2ljIHRoYXQgYnJhbmNoZXMgb24gdW5pbml0aWFsaXplZCBtZW1vcnkuIFRodXMsIHRoZXJlIGFyZSBubyB1bmluaXRpYWxpemVkIG1lbW9yeSByaXNrcyB0aGF0IHJlcXVpcmUgYSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uLlwiLFxuICBcIk5lZWRzS01TQU5cIjogZmFsc2UsXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGludHJvZHVjZXMgYSBuZXcgS0ZfUEVSRk1PTiBrZnVuYyBmbGFnIGFuZCBlbmZvcmNlcyBDQVBfUEVSRk1PTi9DQVBfU1lTX0FETUlOIHBlcm1pc3Npb24gY2hlY2tzIGluIHRoZSBCUEYgdmVyaWZpZXIgKGNoZWNrX2tmdW5jX2NhbGwgYW5kIGNoZWNrX21lbV9hY2Nlc3MpLiBTaW5jZSB0aGVzZSBjaGFuZ2VzIG1vZGlmeSByZWFjaGFibGUgQlBGIHZlcmlmaWVyIGxvZ2ljIGV4ZWN1dGVkIGR1cmluZyBCUEYgcHJvZ3JhbSB2ZXJpZmljYXRpb24gdmlhIHN5c19icGYsIHRoZXkgd2FycmFudCBmdXp6aW5nLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0xMFQxNjoxNTo0NC4xNjY4MTY3NDhaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE1ODEyNjQ3MTUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCA0NzU0N2VlN2E1NDA5MjNlNjIxOWY0NWJkOGIyNmUyOWRhOGMxZjUwXFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBUaHUgU2VwIDEwIDE2OjE1OjQyIDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vYnBmL2tmdW5jcy5yc3QgYi9Eb2N1bWVudGF0aW9uL2JwZi9rZnVuY3MucnN0XFxuaW5kZXggODVmNzNlMGJiZDBmZi4uNjY5MWZlOGEzMmMzZCAxMDA2NDRcXG4tLS0gYS9Eb2N1bWVudGF0aW9uL2JwZi9rZnVuY3MucnN0XFxuKysrIGIvRG9jdW1lbnRhdGlvbi9icGYva2Z1bmNzLnJzdFxcbkBAIC00ODYsNiArNDg2LDE2IEBAIEV4YW1wbGUgdXNhZ2UgaW4gQlBGIHByb2dyYW06XFxuIFxcdC8qIG5vdGUgdGhhdCB0aGUgbGFzdCBhcmd1bWVudCBpcyBvbWl0dGVkICovXFxuICAgICAgICAgYnBmX3Rhc2tfd29ya19zY2hlZHVsZV9zaWduYWwodGFzaywgXFx1MDAyNndvcmstXFx1MDAzZXR3LCBcXHUwMDI2YXJybWFwLCB0YXNrX3dvcmtfY2FsbGJhY2spO1xcbiBcXG4rMi41LjEwIEtGX1BFUkZNT04gZmxhZ1xcbistLS0tLS0tLS0tLS0tLS0tLS0tLS0tXFxuK1xcbitUaGUgS0ZfUEVSRk1PTiBmbGFnIGlzIHVzZWQgZm9yIGtmdW5jcyB0aGF0IGNhbiBleHBvc2Uga2VybmVsIG1lbW9yeSBvciBrZXJuZWxcXG4rYWRkcmVzc2VzIHRvIHRoZSBCUEYgcHJvZ3JhbSwgZm9yIGV4YW1wbGUgYnkgcmVhZGluZyB0aHJvdWdoIGEgcG9pbnRlciB0aGF0IHRoZVxcbit2ZXJpZmllciBkb2VzIG5vdCBjaGVjay4gQ2FsbGluZyBzdWNoIGEga2Z1bmMgcmVxdWlyZXMgQ0FQX1BFUkZNT04sIG9yXFxuK0NBUF9TWVNfQURNSU4sIGluIHRoZSBzYW1lIHdheSB0aGF0IHRoZSBlcXVpdmFsZW50IEJQRiBoZWxwZXJzIGFyZSBnYXRlZCBpblxcbiticGZfYmFzZV9mdW5jX3Byb3RvKCkuIEEgcHJvZ3JhbSBsb2FkZWQgd2l0aCBDQVBfQlBGIGFsb25lIGlzIHJlamVjdGVkIGF0IGxvYWRcXG4rdGltZS5cXG4rXFxuIDIuNiBSZWdpc3RlcmluZyB0aGUga2Z1bmNzXFxuIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXFxuIFxcbmRpZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4L2J0Zi5oIGIvaW5jbHVkZS9saW51eC9idGYuaFxcbmluZGV4IDg5ZDVhNWM0ZjExNzEuLjdjNjJlYTE3YjExNjMgMTAwNjQ0XFxuLS0tIGEvaW5jbHVkZS9saW51eC9idGYuaFxcbisrKyBiL2luY2x1ZGUvbGludXgvYnRmLmhcXG5AQCAtODAsNiArODAsNyBAQFxcbiAjZGVmaW5lIEtGX0FSRU5BX0FSRzIgICAoMSBcXHUwMDNjXFx1MDAzYyAxNSkgLyoga2Z1bmMgdGFrZXMgYW4gYXJlbmEgcG9pbnRlciBhcyBpdHMgc2Vjb25kIGFyZ3VtZW50ICovXFxuICNkZWZpbmUgS0ZfSU1QTElDSVRfQVJHUyAoMSBcXHUwMDNjXFx1MDAzYyAxNikgLyoga2Z1bmMgaGFzIGltcGxpY2l0IGFyZ3VtZW50cyBzdXBwbGllZCBieSB0aGUgdmVyaWZpZXIgKi9cXG4gI2RlZmluZSBLRl9TUElOTE9DS19TQUZFICgxIFxcdTAwM2NcXHUwMDNjIDE3KSAvKiBrZnVuYyBpcyBhbGxvd2VkIGluc2lkZSBicGZfc3Bpbl9sb2NrLWVkIHJlZ2lvbiAqL1xcbisjZGVmaW5lIEtGX1BFUkZNT04gICAgICAoMSBcXHUwMDNjXFx1MDAzYyAxOCkgLyoga2Z1bmMgcmVxdWlyZXMgQ0FQX1BFUkZNT04gKi9cXG4gXFxuIC8qXFxuICAqIFRhZyBtYXJraW5nIGEga2VybmVsIGZ1bmN0aW9uIGFzIGEga2Z1bmMuIFRoaXMgaXMgbWVhbnQgdG8gbWluaW1pemUgdGhlXFxuZGlmZiAtLWdpdCBhL2tlcm5lbC9icGYvaGVscGVycy5jIGIva2VybmVsL2JwZi9oZWxwZXJzLmNcXG5pbmRleCBiM2NjNWM4ZmM4NzU2Li44YTBlZWI0ZjYyMzZkIDEwMDY0NFxcbi0tLSBhL2tlcm5lbC9icGYvaGVscGVycy5jXFxuKysrIGIva2VybmVsL2JwZi9oZWxwZXJzLmNcXG5AQCAtNDg4Myw3ICs0ODgzLDcgQEAgQlRGX0lEKGZ1bmMsIGJwZl9jZ3JvdXBfcmVsZWFzZV9kdG9yKVxcbiBcXG4gQlRGX0tGVU5DU19TVEFSVChjb21tb25fYnRmX2lkcylcXG4gQlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl9jYXN0X3RvX2tlcm5fY3R4LCBLRl9GQVNUQ0FMTClcXG4tQlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl9yZG9ubHlfY2FzdCwgS0ZfRkFTVENBTEwpXFxuK0JURl9JRF9GTEFHUyhmdW5jLCBicGZfcmRvbmx5X2Nhc3QsIEtGX0ZBU1RDQUxMIHwgS0ZfUEVSRk1PTilcXG4gQlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl9yY3VfcmVhZF9sb2NrKVxcbiBCVEZfSURfRkxBR1MoZnVuYywgYnBmX3JjdV9yZWFkX3VubG9jaylcXG4gQlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl9keW5wdHJfc2xpY2UsIEtGX1JFVF9OVUxMKVxcbkBAIC00OTIwLDExICs0OTIwLDExIEBAIEJURl9JRF9GTEFHUyhmdW5jLCBicGZfd3Ffc2V0X2NhbGxiYWNrLCBLRl9JTVBMSUNJVF9BUkdTKVxcbiBCVEZfSURfRkxBR1MoZnVuYywgYnBmX3dxX3N0YXJ0KVxcbiBCVEZfSURfRkxBR1MoZnVuYywgYnBmX3ByZWVtcHRfZGlzYWJsZSlcXG4gQlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl9wcmVlbXB0X2VuYWJsZSlcXG4tQlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl9pdGVyX2JpdHNfbmV3LCBLRl9JVEVSX05FVylcXG4rQlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl9pdGVyX2JpdHNfbmV3LCBLRl9JVEVSX05FVyB8IEtGX1BFUkZNT04pXFxuIEJURl9JRF9GTEFHUyhmdW5jLCBicGZfaXRlcl9iaXRzX25leHQsIEtGX0lURVJfTkVYVCB8IEtGX1JFVF9OVUxMKVxcbiBCVEZfSURfRkxBR1MoZnVuYywgYnBmX2l0ZXJfYml0c19kZXN0cm95LCBLRl9JVEVSX0RFU1RST1kpXFxuLUJURl9JRF9GTEFHUyhmdW5jLCBicGZfY29weV9mcm9tX3VzZXJfc3RyLCBLRl9TTEVFUEFCTEUpXFxuLUJURl9JRF9GTEFHUyhmdW5jLCBicGZfY29weV9mcm9tX3VzZXJfdGFza19zdHIsIEtGX1NMRUVQQUJMRSlcXG4rQlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl9jb3B5X2Zyb21fdXNlcl9zdHIsIEtGX1NMRUVQQUJMRSB8IEtGX1BFUkZNT04pXFxuK0JURl9JRF9GTEFHUyhmdW5jLCBicGZfY29weV9mcm9tX3VzZXJfdGFza19zdHIsIEtGX1NMRUVQQUJMRSB8IEtGX1BFUkZNT04pXFxuIEJURl9JRF9GTEFHUyhmdW5jLCBicGZfZ2V0X2ttZW1fY2FjaGUpXFxuIEJURl9JRF9GTEFHUyhmdW5jLCBicGZfaXRlcl9rbWVtX2NhY2hlX25ldywgS0ZfSVRFUl9ORVcgfCBLRl9TTEVFUEFCTEUpXFxuIEJURl9JRF9GTEFHUyhmdW5jLCBicGZfaXRlcl9rbWVtX2NhY2hlX25leHQsIEtGX0lURVJfTkVYVCB8IEtGX1JFVF9OVUxMIHwgS0ZfU0xFRVBBQkxFKVxcbkBAIC00OTMyLDE0ICs0OTMyLDE0IEBAIEJURl9JRF9GTEFHUyhmdW5jLCBicGZfaXRlcl9rbWVtX2NhY2hlX2Rlc3Ryb3ksIEtGX0lURVJfREVTVFJPWSB8IEtGX1NMRUVQQUJMRSlcXG4gQlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl9sb2NhbF9pcnFfc2F2ZSlcXG4gQlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl9sb2NhbF9pcnFfcmVzdG9yZSlcXG4gI2lmZGVmIENPTkZJR19CUEZfRVZFTlRTXFxuLUJURl9JRF9GTEFHUyhmdW5jLCBicGZfcHJvYmVfcmVhZF91c2VyX2R5bnB0cilcXG4tQlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl9wcm9iZV9yZWFkX2tlcm5lbF9keW5wdHIpXFxuLUJURl9JRF9GTEFHUyhmdW5jLCBicGZfcHJvYmVfcmVhZF91c2VyX3N0cl9keW5wdHIpXFxuLUJURl9JRF9GTEFHUyhmdW5jLCBicGZfcHJvYmVfcmVhZF9rZXJuZWxfc3RyX2R5bnB0cilcXG4tQlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl9jb3B5X2Zyb21fdXNlcl9keW5wdHIsIEtGX1NMRUVQQUJMRSlcXG4tQlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl9jb3B5X2Zyb21fdXNlcl9zdHJfZHlucHRyLCBLRl9TTEVFUEFCTEUpXFxuLUJURl9JRF9GTEFHUyhmdW5jLCBicGZfY29weV9mcm9tX3VzZXJfdGFza19keW5wdHIsIEtGX1NMRUVQQUJMRSlcXG4tQlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl9jb3B5X2Zyb21fdXNlcl90YXNrX3N0cl9keW5wdHIsIEtGX1NMRUVQQUJMRSlcXG4rQlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl9wcm9iZV9yZWFkX3VzZXJfZHlucHRyLCBLRl9QRVJGTU9OKVxcbitCVEZfSURfRkxBR1MoZnVuYywgYnBmX3Byb2JlX3JlYWRfa2VybmVsX2R5bnB0ciwgS0ZfUEVSRk1PTilcXG4rQlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl9wcm9iZV9yZWFkX3VzZXJfc3RyX2R5bnB0ciwgS0ZfUEVSRk1PTilcXG4rQlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl9wcm9iZV9yZWFkX2tlcm5lbF9zdHJfZHlucHRyLCBLRl9QRVJGTU9OKVxcbitCVEZfSURfRkxBR1MoZnVuYywgYnBmX2NvcHlfZnJvbV91c2VyX2R5bnB0ciwgS0ZfU0xFRVBBQkxFIHwgS0ZfUEVSRk1PTilcXG4rQlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl9jb3B5X2Zyb21fdXNlcl9zdHJfZHlucHRyLCBLRl9TTEVFUEFCTEUgfCBLRl9QRVJGTU9OKVxcbitCVEZfSURfRkxBR1MoZnVuYywgYnBmX2NvcHlfZnJvbV91c2VyX3Rhc2tfZHlucHRyLCBLRl9TTEVFUEFCTEUgfCBLRl9QRVJGTU9OKVxcbitCVEZfSURfRkxBR1MoZnVuYywgYnBmX2NvcHlfZnJvbV91c2VyX3Rhc2tfc3RyX2R5bnB0ciwgS0ZfU0xFRVBBQkxFIHwgS0ZfUEVSRk1PTilcXG4gI2VuZGlmXFxuICNpZmRlZiBDT05GSUdfRE1BX1NIQVJFRF9CVUZGRVJcXG4gQlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl9pdGVyX2RtYWJ1Zl9uZXcsIEtGX0lURVJfTkVXIHwgS0ZfU0xFRVBBQkxFKVxcbkBAIC00OTQ3LDI2ICs0OTQ3LDI2IEBAIEJURl9JRF9GTEFHUyhmdW5jLCBicGZfaXRlcl9kbWFidWZfbmV4dCwgS0ZfSVRFUl9ORVhUIHwgS0ZfUkVUX05VTEwgfCBLRl9TTEVFUEFCXFxuIEJURl9JRF9GTEFHUyhmdW5jLCBicGZfaXRlcl9kbWFidWZfZGVzdHJveSwgS0ZfSVRFUl9ERVNUUk9ZIHwgS0ZfU0xFRVBBQkxFKVxcbiAjZW5kaWZcXG4gQlRGX0lEX0ZMQUdTKGZ1bmMsIF9fYnBmX3RyYXApXFxuLUJURl9JRF9GTEFHUyhmdW5jLCBicGZfc3RyY21wKTtcXG4tQlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl9zdHJjYXNlY21wKTtcXG4tQlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl9zdHJuY2FzZWNtcCk7XFxuLUJURl9JRF9GTEFHUyhmdW5jLCBicGZfc3RyY2hyKTtcXG4tQlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl9zdHJjaHJudWwpO1xcbi1CVEZfSURfRkxBR1MoZnVuYywgYnBmX3N0cm5jaHIpO1xcbi1CVEZfSURfRkxBR1MoZnVuYywgYnBmX3N0cnJjaHIpO1xcbi1CVEZfSURfRkxBR1MoZnVuYywgYnBmX3N0cmxlbik7XFxuLUJURl9JRF9GTEFHUyhmdW5jLCBicGZfc3Rybmxlbik7XFxuLUJURl9JRF9GTEFHUyhmdW5jLCBicGZfc3Ryc3BuKTtcXG4tQlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl9zdHJjc3BuKTtcXG4tQlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl9zdHJzdHIpO1xcbi1CVEZfSURfRkxBR1MoZnVuYywgYnBmX3N0cmNhc2VzdHIpO1xcbi1CVEZfSURfRkxBR1MoZnVuYywgYnBmX3N0cm5zdHIpO1xcbi1CVEZfSURfRkxBR1MoZnVuYywgYnBmX3N0cm5jYXNlc3RyKTtcXG4rQlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl9zdHJjbXAsIEtGX1BFUkZNT04pO1xcbitCVEZfSURfRkxBR1MoZnVuYywgYnBmX3N0cmNhc2VjbXAsIEtGX1BFUkZNT04pO1xcbitCVEZfSURfRkxBR1MoZnVuYywgYnBmX3N0cm5jYXNlY21wLCBLRl9QRVJGTU9OKTtcXG4rQlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl9zdHJjaHIsIEtGX1BFUkZNT04pO1xcbitCVEZfSURfRkxBR1MoZnVuYywgYnBmX3N0cmNocm51bCwgS0ZfUEVSRk1PTik7XFxuK0JURl9JRF9GTEFHUyhmdW5jLCBicGZfc3RybmNociwgS0ZfUEVSRk1PTik7XFxuK0JURl9JRF9GTEFHUyhmdW5jLCBicGZfc3RycmNociwgS0ZfUEVSRk1PTik7XFxuK0JURl9JRF9GTEFHUyhmdW5jLCBicGZfc3RybGVuLCBLRl9QRVJGTU9OKTtcXG4rQlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl9zdHJubGVuLCBLRl9QRVJGTU9OKTtcXG4rQlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl9zdHJzcG4sIEtGX1BFUkZNT04pO1xcbitCVEZfSURfRkxBR1MoZnVuYywgYnBmX3N0cmNzcG4sIEtGX1BFUkZNT04pO1xcbitCVEZfSURfRkxBR1MoZnVuYywgYnBmX3N0cnN0ciwgS0ZfUEVSRk1PTik7XFxuK0JURl9JRF9GTEFHUyhmdW5jLCBicGZfc3RyY2FzZXN0ciwgS0ZfUEVSRk1PTik7XFxuK0JURl9JRF9GTEFHUyhmdW5jLCBicGZfc3RybnN0ciwgS0ZfUEVSRk1PTik7XFxuK0JURl9JRF9GTEFHUyhmdW5jLCBicGZfc3RybmNhc2VzdHIsIEtGX1BFUkZNT04pO1xcbiAjaWYgZGVmaW5lZChDT05GSUdfQlBGX0xTTSkgXFx1MDAyNlxcdTAwMjYgZGVmaW5lZChDT05GSUdfQ0dST1VQUylcXG4gQlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl9jZ3JvdXBfcmVhZF94YXR0ciwgS0ZfUkNVKVxcbiAjZW5kaWZcXG4tQlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl9zdHJlYW1fdnByaW50aywgS0ZfSU1QTElDSVRfQVJHUyB8IEtGX1NQSU5MT0NLX1NBRkUpXFxuLUJURl9JRF9GTEFHUyhmdW5jLCBicGZfc3RyZWFtX3ByaW50X3N0YWNrLCBLRl9JTVBMSUNJVF9BUkdTIHwgS0ZfU1BJTkxPQ0tfU0FGRSlcXG4rQlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl9zdHJlYW1fdnByaW50aywgS0ZfSU1QTElDSVRfQVJHUyB8IEtGX1NQSU5MT0NLX1NBRkUgfCBLRl9QRVJGTU9OKVxcbitCVEZfSURfRkxBR1MoZnVuYywgYnBmX3N0cmVhbV9wcmludF9zdGFjaywgS0ZfSU1QTElDSVRfQVJHUyB8IEtGX1NQSU5MT0NLX1NBRkUgfCBLRl9QRVJGTU9OKVxcbiBCVEZfSURfRkxBR1MoZnVuYywgYnBmX3Rhc2tfd29ya19zY2hlZHVsZV9zaWduYWwsIEtGX0lNUExJQ0lUX0FSR1MpXFxuIEJURl9JRF9GTEFHUyhmdW5jLCBicGZfdGFza193b3JrX3NjaGVkdWxlX3Jlc3VtZSwgS0ZfSU1QTElDSVRfQVJHUylcXG4gQlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl9keW5wdHJfZnJvbV9maWxlKVxcbmRpZmYgLS1naXQgYS9rZXJuZWwvYnBmL3ZlcmlmaWVyLmMgYi9rZXJuZWwvYnBmL3ZlcmlmaWVyLmNcXG5pbmRleCA3MmEzZjU5OThkZDI3Li4zNjkyM2NlMDQyNzM0IDEwMDY0NFxcbi0tLSBhL2tlcm5lbC9icGYvdmVyaWZpZXIuY1xcbisrKyBiL2tlcm5lbC9icGYvdmVyaWZpZXIuY1xcbkBAIC02NDUzLDYgKzY0NTMsMTYgQEAgc3RhdGljIGludCBjaGVja19tZW1fYWNjZXNzKHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYsIGludCBpbnNuX2lkeCwgc3RydWN0IGJcXG4gXFx0XFx0XFx0cmV0dXJuIC1FQUNDRVM7XFxuIFxcdFxcdH1cXG4gXFxuK1xcdFxcdGlmIChyZG9ubHlfdW50cnVzdGVkIFxcdTAwMjZcXHUwMDI2ICFlbnYtXFx1MDAzZWFsbG93X3B0cl9sZWFrcykge1xcbitcXHRcXHRcXHR2ZXJib3NlKGVudiwgXFxcIiVzIGFjY2VzcyBpcyBhbGxvd2VkIG9ubHkgdG8gQ0FQX1BFUkZNT04gYW5kIENBUF9TWVNfQURNSU5cXFxcblxcXCIsXFxuK1xcdFxcdFxcdFxcdHJlZ190eXBlX3N0cihlbnYsIHJlZy1cXHUwMDNldHlwZSkpO1xcbitcXHRcXHRcXHRicGZfZGlhZ19wb2xpY3koXFxuK1xcdFxcdFxcdFxcdGVudiwgaW5zbl9pZHgsIFxcXCJyZWFkIGZyb20gdW50cnVzdGVkIHJlYWQtb25seSBtZW1vcnlcXFwiLFxcbitcXHRcXHRcXHRcXHRcXFwidGhlIGFjY2VzcyByZXF1aXJlcyBDQVBfUEVSRk1PTlxcXCIsXFxuK1xcdFxcdFxcdFxcdFxcXCJMb2FkIHRoZSBwcm9ncmFtIHdpdGggQ0FQX1BFUkZNT04sIG9yIGF2b2lkIGRlcmVmZXJlbmNpbmcgdW50cnVzdGVkIHBvaW50ZXJzLlxcXCIpO1xcbitcXHRcXHRcXHRyZXR1cm4gLUVQRVJNO1xcbitcXHRcXHR9XFxuK1xcbiBcXHRcXHQvKlxcbiBcXHRcXHQgKiBBY2Nlc3NlcyB0byB1bnRydXN0ZWQgUFRSX1RPX01FTSBhcmUgZG9uZSB0aHJvdWdoIHByb2JlXFxuIFxcdFxcdCAqIGluc3RydWN0aW9ucywgaGVuY2Ugbm8gbmVlZCB0byBjaGVjayBib3VuZHMgaW4gdGhhdCBjYXNlLlxcbkBAIC0xMTM1Niw2ICsxMTM2NiwxMSBAQCBzdGF0aWMgYm9vbCBpc19rZnVuY19kZXN0cnVjdGl2ZShzdHJ1Y3QgYnBmX2NhbGxfYXJnX21ldGEgKm1ldGEpXFxuIFxcdHJldHVybiBtZXRhLVxcdTAwM2VrZnVuY19mbGFncyBcXHUwMDI2IEtGX0RFU1RSVUNUSVZFO1xcbiB9XFxuIFxcbitzdGF0aWMgYm9vbCBpc19rZnVuY19wZXJmbW9uKHN0cnVjdCBicGZfY2FsbF9hcmdfbWV0YSAqbWV0YSlcXG4re1xcbitcXHRyZXR1cm4gbWV0YS1cXHUwMDNla2Z1bmNfZmxhZ3MgXFx1MDAyNiBLRl9QRVJGTU9OO1xcbit9XFxuK1xcbiBzdGF0aWMgYm9vbCBpc19rZnVuY19yY3Uoc3RydWN0IGJwZl9jYWxsX2FyZ19tZXRhICptZXRhKVxcbiB7XFxuIFxcdHJldHVybiBtZXRhLVxcdTAwM2VrZnVuY19mbGFncyBcXHUwMDI2IEtGX1JDVTtcXG5AQCAtMTM4MzQsNiArMTM4NDksMTYgQEAgc3RhdGljIGludCBjaGVja19rZnVuY19jYWxsKHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYsIHN0cnVjdCBicGZfaW5zbiAqaW5zbixcXG4gXFx0XFx0cmV0dXJuIC1FQUNDRVM7XFxuIFxcdH1cXG4gXFxuK1xcdGlmIChpc19rZnVuY19wZXJmbW9uKFxcdTAwMjZtZXRhKSBcXHUwMDI2XFx1MDAyNiAhZW52LVxcdTAwM2VhbGxvd19wdHJfbGVha3MpIHtcXG4rXFx0XFx0dmVyYm9zZShlbnYsIFxcXCIlcyBpcyBhbGxvd2VkIG9ubHkgdG8gQ0FQX1BFUkZNT04gYW5kIENBUF9TWVNfQURNSU5cXFxcblxcXCIsXFxuK1xcdFxcdFxcdGZ1bmNfbmFtZSk7XFxuK1xcdFxcdG9wZXJhdGlvbiA9IGJwZl9kaWFnX2ZtdChlbnYsIFxcXCJrZnVuYyAlc1xcXCIsIGZ1bmNfbmFtZSk7XFxuK1xcdFxcdGJwZl9kaWFnX3BvbGljeShcXG4rXFx0XFx0XFx0ZW52LCBpbnNuX2lkeCwgb3BlcmF0aW9uLCBcXFwidGhlIGtmdW5jIHJlcXVpcmVzIENBUF9QRVJGTU9OXFxcIixcXG4rXFx0XFx0XFx0XFxcIkxvYWQgdGhlIHByb2dyYW0gd2l0aCBDQVBfUEVSRk1PTiwgb3IgYXZvaWQgdGhlIGtmdW5jLlxcXCIpO1xcbitcXHRcXHRyZXR1cm4gLUVQRVJNO1xcbitcXHR9XFxuK1xcbiBcXHRzbGVlcGFibGUgPSBicGZfaXNfa2Z1bmNfc2xlZXBhYmxlKFxcdTAwMjZtZXRhKTtcXG4gXFx0aWYgKHNsZWVwYWJsZSBcXHUwMDI2XFx1MDAyNiAhaW5fc2xlZXBhYmxlKGVudikpIHtcXG4gXFx0XFx0dmVyYm9zZShlbnYsIFxcXCJwcm9ncmFtIG11c3QgYmUgc2xlZXBhYmxlIHRvIGNhbGwgc2xlZXBhYmxlIGtmdW5jICVzXFxcXG5cXFwiLCBmdW5jX25hbWUpO1xcbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy92ZXJpZmllci5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvdmVyaWZpZXIuY1xcbmluZGV4IDY0YWM0OWFkNjdlNjMuLmVjOWUzOTA3Yzc1ZDYgMTAwNjQ0XFxuLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvdmVyaWZpZXIuY1xcbisrKyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3ZlcmlmaWVyLmNcXG5AQCAtNTMsNiArNTMsNyBAQFxcbiAjaW5jbHVkZSBcXFwidmVyaWZpZXJfaXRlcmF0aW5nX2NhbGxiYWNrcy5za2VsLmhcXFwiXFxuICNpbmNsdWRlIFxcXCJ2ZXJpZmllcl9qZXFfaW5mZXJfbm90X251bGwuc2tlbC5oXFxcIlxcbiAjaW5jbHVkZSBcXFwidmVyaWZpZXJfaml0X2NvbnZlcmdlbmNlLnNrZWwuaFxcXCJcXG4rI2luY2x1ZGUgXFxcInZlcmlmaWVyX2tmdW5jX3BlcmZtb24uc2tlbC5oXFxcIlxcbiAjaW5jbHVkZSBcXFwidmVyaWZpZXJfbGRfaW5kLnNrZWwuaFxcXCJcXG4gI2luY2x1ZGUgXFxcInZlcmlmaWVyX2xkc3guc2tlbC5oXFxcIlxcbiAjaW5jbHVkZSBcXFwidmVyaWZpZXJfbGVha19wdHIuc2tlbC5oXFxcIlxcbkBAIC0yMTYsNiArMjE3LDcgQEAgdm9pZCB0ZXN0X3ZlcmlmaWVyX2ludF9wdHIodm9pZCkgICAgICAgICAgICAgIHsgUlVOKHZlcmlmaWVyX2ludF9wdHIpOyB9XFxuIHZvaWQgdGVzdF92ZXJpZmllcl9pdGVyYXRpbmdfY2FsbGJhY2tzKHZvaWQpICB7IFJVTih2ZXJpZmllcl9pdGVyYXRpbmdfY2FsbGJhY2tzKTsgfVxcbiB2b2lkIHRlc3RfdmVyaWZpZXJfamVxX2luZmVyX25vdF9udWxsKHZvaWQpICAgeyBSVU4odmVyaWZpZXJfamVxX2luZmVyX25vdF9udWxsKTsgfVxcbiB2b2lkIHRlc3RfdmVyaWZpZXJfaml0X2NvbnZlcmdlbmNlKHZvaWQpICAgICAgeyBSVU4odmVyaWZpZXJfaml0X2NvbnZlcmdlbmNlKTsgfVxcbit2b2lkIHRlc3RfdmVyaWZpZXJfa2Z1bmNfcGVyZm1vbih2b2lkKSAgICAgICAgeyBSVU4odmVyaWZpZXJfa2Z1bmNfcGVyZm1vbik7IH1cXG4gdm9pZCB0ZXN0X3ZlcmlmaWVyX2xvYWRfYWNxdWlyZSh2b2lkKSAgICAgICAgIHsgUlVOKHZlcmlmaWVyX2xvYWRfYWNxdWlyZSk7IH1cXG4gdm9pZCB0ZXN0X3ZlcmlmaWVyX2xkX2luZCh2b2lkKSAgICAgICAgICAgICAgIHsgUlVOKHZlcmlmaWVyX2xkX2luZCk7IH1cXG4gdm9pZCB0ZXN0X3ZlcmlmaWVyX2xkc3godm9pZCkgICAgICAgICAgICAgICAgICB7IFJVTih2ZXJpZmllcl9sZHN4KTsgfVxcbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvdmVyaWZpZXJfa2Z1bmNfcGVyZm1vbi5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3ZlcmlmaWVyX2tmdW5jX3BlcmZtb24uY1xcbm5ldyBmaWxlIG1vZGUgMTAwNjQ0XFxuaW5kZXggMDAwMDAwMDAwMDAwMC4uYzZhZGJiNDgxNmNlY1xcbi0tLSAvZGV2L251bGxcXG4rKysgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvdmVyaWZpZXJfa2Z1bmNfcGVyZm1vbi5jXFxuQEAgLTAsMCArMSw2MyBAQFxcbisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMFxcbitcXG4rI2luY2x1ZGUgXFx1MDAzY3ZtbGludXguaFxcdTAwM2VcXG4rI2luY2x1ZGUgXFx1MDAzY2JwZi9icGZfaGVscGVycy5oXFx1MDAzZVxcbisjaW5jbHVkZSBcXFwiYnBmX21pc2MuaFxcXCJcXG4rXFxuK3ZvaWQgKnVzZXJfcHRyO1xcbitjaGFyIGR5bnB0cl9idWZbOF07XFxuK3U2NCBrYWRkcjtcXG4rXFxuK1NFQyhcXFwic29ja2V0XFxcIilcXG4rX19zdWNjZXNzXFxuK19fY2Fwc191bnByaXYoQ0FQX0JQRilcXG4rX19mYWlsdXJlX3VucHJpdlxcbitfX21zZ191bnByaXYoXFxcImJwZl9yZG9ubHlfY2FzdCBpcyBhbGxvd2VkIG9ubHkgdG8gQ0FQX1BFUkZNT04gYW5kIENBUF9TWVNfQURNSU5cXFwiKVxcbitpbnQgcmRvbmx5X2Nhc3Rfbm9wZXJmbW9uKHZvaWQgKmN0eClcXG4re1xcbitcXHRjaGFyICpwID0gYnBmX3Jkb25seV9jYXN0KDAsIDApO1xcbitcXG4rXFx0cmV0dXJuIHBbMHg3ZmZmXTtcXG4rfVxcbitcXG4rU0VDKFxcXCJzb2NrZXRcXFwiKVxcbitfX3N1Y2Nlc3NcXG4rX19jYXBzX3VucHJpdihDQVBfQlBGKVxcbitfX2ZhaWx1cmVfdW5wcml2XFxuK19fbXNnX3VucHJpdihcXFwiYnBmX3Byb2JlX3JlYWRfa2VybmVsX2R5bnB0ciBpcyBhbGxvd2VkIG9ubHkgdG8gQ0FQX1BFUkZNT04gYW5kIENBUF9TWVNfQURNSU5cXFwiKVxcbitpbnQgcHJvYmVfcmVhZF9rZXJuZWxfZHlucHRyX25vcGVyZm1vbih2b2lkICpjdHgpXFxuK3tcXG4rXFx0c3RydWN0IGJwZl9keW5wdHIgZHB0cjtcXG4rXFxuK1xcdGJwZl9keW5wdHJfZnJvbV9tZW0oZHlucHRyX2J1Ziwgc2l6ZW9mKGR5bnB0cl9idWYpLCAwLCBcXHUwMDI2ZHB0cik7XFxuK1xcdGJwZl9wcm9iZV9yZWFkX2tlcm5lbF9keW5wdHIoXFx1MDAyNmRwdHIsIDAsIHNpemVvZihkeW5wdHJfYnVmKSwgdXNlcl9wdHIpO1xcbitcXHRyZXR1cm4gMDtcXG4rfVxcbitcXG4rU0VDKFxcXCJzb2NrZXRcXFwiKVxcbitfX3N1Y2Nlc3NcXG4rX19jYXBzX3VucHJpdihDQVBfQlBGKVxcbitfX2ZhaWx1cmVfdW5wcml2XFxuK19fbXNnX3VucHJpdihcXFwiYnBmX3N0cmVhbV92cHJpbnRrIGlzIGFsbG93ZWQgb25seSB0byBDQVBfUEVSRk1PTiBhbmQgQ0FQX1NZU19BRE1JTlxcXCIpXFxuK2ludCBzdHJlYW1fdnByaW50a19ub3BlcmZtb24odm9pZCAqY3R4KVxcbit7XFxuK1xcdGJwZl9zdHJlYW1fcHJpbnRrKEJQRl9TVERPVVQsIFxcXCIlcEJcXFwiLCAodm9pZCAqKWthZGRyKTtcXG4rXFx0cmV0dXJuIDA7XFxuK31cXG4rXFxuK19fd2VhayBpbnQgc3VicHJvZ191bnRydXN0ZWRfcmVhZCh2b2lkICpwIF9fYXJnX3VudHJ1c3RlZClcXG4re1xcbitcXHRyZXR1cm4gKihjaGFyICopcDtcXG4rfVxcbitcXG4rU0VDKFxcXCJzb2NrZXRcXFwiKVxcbitfX3N1Y2Nlc3NcXG4rX19jYXBzX3VucHJpdihDQVBfQlBGKVxcbitfX2ZhaWx1cmVfdW5wcml2XFxuK19fbXNnX3VucHJpdihcXFwicmRvbmx5X3VudHJ1c3RlZF9tZW0gYWNjZXNzIGlzIGFsbG93ZWQgb25seSB0byBDQVBfUEVSRk1PTiBhbmQgQ0FQX1NZU19BRE1JTlxcXCIpXFxuK2ludCBhcmdfdW50cnVzdGVkX3JlYWRfbm9wZXJmbW9uKHZvaWQgKmN0eClcXG4re1xcbitcXHRyZXR1cm4gc3VicHJvZ191bnRydXN0ZWRfcmVhZCgwKTtcXG4rfVxcbitcXG4rY2hhciBfbGljZW5zZVtdIFNFQyhcXFwibGljZW5zZVxcXCIpID0gXFxcIkdQTFxcXCI7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTEwVDE2OjE1OjQ1Ljc0ODY5MTQ4M1oiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImNvcmUiLCJEdXJhdGlvbiI6NjI0NTU2MDc3NDMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiQlBGX1NZU0NBTExcIixcbiAgICBcIkJQRl9FVkVOVFNcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJjaGVja19rZnVuY19jYWxsXCIsXG4gICAgXCJjaGVja19tZW1fYWNjZXNzXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggaW50cm9kdWNlcyBhIG5ldyBLRl9QRVJGTU9OIGtmdW5jIGZsYWcgYW5kIGVuZm9yY2VzIENBUF9QRVJGTU9OL0NBUF9TWVNfQURNSU4gcGVybWlzc2lvbiBjaGVja3MgaW4gdGhlIEJQRiB2ZXJpZmllciAoY2hlY2tfa2Z1bmNfY2FsbCBhbmQgY2hlY2tfbWVtX2FjY2VzcykuIFNpbmNlIHRoZXNlIGNoYW5nZXMgbW9kaWZ5IHJlYWNoYWJsZSBCUEYgdmVyaWZpZXIgbG9naWMgZXhlY3V0ZWQgZHVyaW5nIEJQRiBwcm9ncmFtIHZlcmlmaWNhdGlvbiB2aWEgc3lzX2JwZiwgdGhleSB3YXJyYW50IGZ1enppbmcuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyIGFuZCBzZWN1cml0eSBlbmdpbmVlci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZXZhbHVhdGUgd2hldGhlciBpdCB3YXJyYW50cyBmdXp6aW5nIHdpdGggc3l6a2FsbGVyLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiBpbnRlcm5hbCBhc3N1bXB0aW9ucy4gWW91IG11c3QgYWN0aXZlbHkgdXNlIHlvdXIgY29kZSBhY2Nlc3NcbnRvb2xzIHRvIGluc3BlY3QgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSwgY2FsbGVycywgYW5kIHN1cnJvdW5kaW5nIGNvbnRleHQuXG5cbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4xLiBDT1JFIFRSSUFHRSBQSElMT1NPUEhZXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuVGhlIGdvYWwgb2YgcGF0Y2ggZnV6emluZyBpcyB0byBkaXNjb3ZlciBjcmFzaGVzLCByZWdyZXNzaW9ucywgZXhwb3NlZCBsYXRlbnQgYnVncyxcbmFuZCBuZXdseSB0cmlnZ2VyZWQgYXNzZXJ0aW9ucyBpbnRyb2R1Y2VkIGJ5IHRoZSBwYXRjaCBzZXJpZXMuXG5cbi0gUkVBQ0hBQklMSVRZIElTIFRIRSBQUklNQVJZIEdBVEU6XG4gIEZ1enppbmcgY2FuIG9ubHkgZGlzY292ZXIgYnVncyBpbiBjb2RlIHRoYXQgY2FuIGFjdHVhbGx5IGV4ZWN1dGUgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWRcbiAgZW52aXJvbm1lbnRzIChHQ0Ugb3IgUUVNVSwgdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGRldmljZXMgbGlrZSBVU0IgZ2FkZ2V0cywgbmV0ZGV2LCB0dW4vdGFwKS5cbiAgSWYgdGhlIG1vZGlmaWVkIGNvZGUgaXMgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIChzZWUgU2VjdGlvbiAyKSwgaXQgTVVTVCBOT1QgYmUgZnV6emVkLFxuICByZWdhcmRsZXNzIG9mIHdoZXRoZXIgaXQgYWRkcyBhc3NlcnRpb25zIG9yIGNvbXBsZXggbG9naWMuXG5cbi0gRE8gTk9UIEJMSU5ETFkgVFJVU1QgXCJOTyBGVU5DVElPTkFMIENIQU5HRVwiIChORkNJKSBPUiBcIlJFRkFDVE9SSU5HXCIgQ0xBSU1TOlxuICBQYXRjaCBhdXRob3JzIHJvdXRpbmVseSBsYWJlbCBjaGFuZ2VzIGFzIFwiY2xlYW51cHNcIiwgXCJyZWZhY3RvcmluZ3NcIiwgb3Igc3RhdGVcbiAgXCJObyBmdW5jdGlvbmFsIGNoYW5nZSBpbnRlbmRlZFwiLiBEbyBOT1QgdGFrZSB0aGVzZSBjbGFpbXMgYXQgZmFjZSB2YWx1ZS5cbiAgQ29kZSByZWZhY3RvcmluZ3MgdGhhdCByZWFycmFuZ2UgbG9naWMsIGludHJvZHVjZSBoZWxwZXIgZnVuY3Rpb25zLCBvciBhbHRlciBzdGF0ZSBtYW5hZ2VtZW50XG4gIGluIGNvcmUgc3Vic3lzdGVtcyBmcmVxdWVudGx5IGludHJvZHVjZSBzdWJ0bGUgc2VtYW50aWMgc2hpZnRzIG9yIHVuY292ZXIgbGF0ZW50IGtlcm5lbCBidWdzLlxuICBJZiByZWFjaGFibGUgZXhlY3V0YWJsZSBjb2RlIGlzIG1vZGlmaWVkIG9yIHJlZmFjdG9yZWQsIGl0IE1VU1QgYmUgZnV6emVkLlxuXG4tIE5FVyBPUiBNT0RJRklFRCBBU1NFUlRJT05TIElOIFJFQUNIQUJMRSBDT0RFIE1VU1QgQkUgRlVaWkVEOlxuICBXaGVuIGEgcGF0Y2ggaW50cm9kdWNlcyBvciBtb2RpZmllcyBydW50aW1lIGNoZWNrcyBvciBhc3NlcnRpb25zIChlLmcuLCBXQVJOX09OKiwgVk1fV0FSTl9PTiosXG4gIEJVR19PTiosIGxvY2tkZXBfYXNzZXJ0KikgaW4gcmVhY2hhYmxlIGNvZGUgcGF0aHMsIGl0IGVuZm9yY2VzIG5ldyBvciBzdHJpY3RlciBpbnZhcmlhbnRzLlxuICBFdmVuIGlmIHRoZSBhdXRob3IgYmVsaWV2ZXMgdGhlIGludmFyaWFudCBhbHdheXMgaG9sZHMsIGZ1enppbmcgaXMgZXNzZW50aWFsIHRvIHZlcmlmeSB3aGV0aGVyXG4gIGFuIHVudXN1YWwgc2VxdWVuY2Ugb2Ygb3BlcmF0aW9ucyBjYW4gdmlvbGF0ZSBpdC5cblxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbjIuIFdIRU4gVE8gUkVUVVJOIFdvcnRoRnV6emluZz1mYWxzZSAoTkVHQVRJVkUgQ1JJVEVSSUEpXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBPTkxZIElGIGFsbCBtb2RpZmllZCBjb2RlIGZhbGxzIHN0cmljdGx5IGludG8gb25lIG9yIG1vcmUgb2YgdGhlc2UgY2F0ZWdvcmllczpcblxuLSBOb24ta2VybmVsIGFuZCBub24tZXhlY3V0YWJsZSBjaGFuZ2VzOlxuICAqIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIGNvbW1lbnRzLCBvciBzcGVsbGluZyBmaXhlcy5cbiAgKiBVc2VyLXNwYWNlIGRpcmVjdG9yaWVzLCBzZWxmLXRlc3RzLCBzYW1wbGVzLCBvciBzY3JpcHRzIChlLmcuLCB0b29scy8sIHNhbXBsZXMvLCBzY3JpcHRzLywgdXNyLylcbiAgICB0aGF0IGRvIG5vdCBhZmZlY3QgdGhlIGNvbXBpbGVkIGtlcm5lbCBpbWFnZSAodm1saW51eCkgb3Iga2VybmVsIG1vZHVsZXMuXG4gICogUHVyZWx5IGRlY29yYXRpdmUgbG9nZ2luZyAoZS5nLiwgbWVzc2FnZSBzdHJpbmdzIGluIHByX2VyciwgcHJpbnRrLCBkZXZfaW5mbykgb3IgdHJhY2Vwb2ludHNcbiAgICB0aGF0IGRvIG5vdCBhbHRlciBjb250cm9sIGZsb3cgb3IgZGF0YSBzdHJ1Y3R1cmVzLlxuICAqIEJ1aWxkIHN5c3RlbSBvciBLY29uZmlnIGNoYW5nZXMgdGhhdCBkbyBub3QgYWx0ZXIgY29tcGlsZWQgQyBsb2dpYy5cbi0gU3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIGhhcmR3YXJlOlxuICAqIFZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaGVzLCBTbWFydE5JQ3MsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCxcbiAgICBpb25pYywgYW1kZ3B1KSByZXF1aXJpbmcgcGh5c2ljYWwgQVNJQy9QQ0llIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLlxuLSBVbnJlYWNoYWJsZSBleGVjdXRpb24gcGF0aHM6XG4gICogRHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoLnJlbW92ZSwgLnNodXRkb3duLCBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIpIGV4ZWN1dGVkIG9ubHkgZHVyaW5nXG4gICAgcGh5c2ljYWwgUENJIGhvdC11bnBsdWcgb3IgbWFudWFsIHN5c2ZzIGRyaXZlciB1bmJpbmRpbmcuXG4gICogQ29kZSBwYXRocyBleGNsdXNpdmUgdG8gYXJjaGl0ZWN0dXJlcyBvdGhlciB0aGFuIHRoZSB0YXJnZXQgYXJjaGl0ZWN0dXJlLlxuXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuMy4gV0hFTiBUTyBSRVRVUk4gV29ydGhGdXp6aW5nPXRydWUgKFBPU0lUSVZFIENSSVRFUklBKVxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZSB3aGVuZXZlciB0aGUgcGF0Y2ggdG91Y2hlcyByZWFjaGFibGUgZXhlY3V0YWJsZSBjb2RlLCBpbmNsdWRpbmc6XG4tIENvcmUgU3Vic3lzdGVtczpcbiAgKiBBbnkgbG9naWMgbW9kaWZpY2F0aW9ucyBpbiBtZW1vcnkgbWFuYWdlbWVudCAobW0vKSwgc3luY2hyb25pemF0aW9uL2xvY2tpbmcgKGtlcm5lbC9sb2NraW5nLyksXG4gICAgQlBGLCBzY2hlZHVsZXIsIGNvcmUgbmV0d29ya2luZywgVkZTLCBvciBzeXNjYWxsIGhhbmRsaW5nLlxuLSBSZWZhY3RvcmluZ3MgYW5kIENvZGUgQ2xlYW51cHM6XG4gICogQW55IHJlc3RydWN0dXJpbmcgb2YgcmVhY2hhYmxlIGRhdGEgc3RydWN0dXJlcywgaGVscGVyIGFic3RyYWN0aW9ucywgb3IgYWxnb3JpdGhtIGZsb3dzLlxuLSBSdW50aW1lIEFzc2VydGlvbnMgYW5kIERlZmVuc2l2ZSBDaGVja3M6XG4gICogQW55IGludHJvZHVjdGlvbiBvciBhbHRlcmF0aW9uIG9mIGFzc2VydGlvbnMgKFdBUk5fT04qLCBWTV9XQVJOX09OKiwgQlVHX09OKiwgZXRjLikgaW4gcmVhY2hhYmxlIHBhdGhzLlxuLSBSZWFjaGFibGUgRHJpdmVycyBhbmQgUHJvdG9jb2xzOlxuICAqIERyaXZlcnMgYWNjZXNzaWJsZSB2aWEgdmlydHVhbCBidXNlcyAodmlydGlvLCBVU0IgZ2FkZ2V0LCBsb29wYmFjaywgbmV0bGluaywgYmluZGVyLCBzb2NrZXRzLCBldGMuKS5cblxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbjQuIEVYVFJBQ1RJTkcgRm9jdXNTeW1ib2xzIChQUkVWRU5USU5HIERJTFVUSU9OKVxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbldoZW4gV29ydGhGdXp6aW5nPXRydWUsIHlvdSBtdXN0IGV4dHJhY3Qgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyBpbnRvIEZvY3VzU3ltYm9scyB0byBndWlkZSB0aGUgZnV6emVyOlxuXG4tIEFWT0lEIFVCSVFVSVRPVVMgTElGRUNZQ0xFIEhPVC1QQVRIUzpcbiAgRG8gTk9UIGxpc3QgZ2VuZXJpYywgdWJpcXVpdG91cyBmdW5jdGlvbnMgY2FsbGVkIGJ5IGFsbW9zdCBldmVyeSBwcm9ncmFtIGluIHRoZSBjb3JwdXNcbiAgKGluY2x1ZGluZywgYnV0IG5vdCBsaW1pdGVkIHRvOiBnZW5lcmFsIG1lbW9yeSBhbGxvY2F0b3JzIGFuZCBkZWFsbG9jYXRvcnMsIHBhZ2UgZmF1bHRcbiAgYW5kIHRyYXAgaGFuZGxlcnMsIG9yIGNvcmUgc3luY2hyb25pemF0aW9uIHByaW1pdGl2ZXM7IHRoaXMgaXMgbm90IGFuIGV4aGF1c3RpdmUgbGlzdCkuXG4gIExpc3RpbmcgdWJpcXVpdG91cyBmdW5jdGlvbnMgY2F1c2VzIHRoZSBmdXp6ZXIgdG8gY2xhc3NpZnkgdGhvdXNhbmRzIG9mIHVucmVsYXRlZCB0ZXN0cyBhcyBcImZvY3VzZWRcIixcbiAgd2hpY2ggc2V2ZXJlbHkgZGlsdXRlcyBmdXp6aW5nIGVmZm9ydCBhd2F5IGZyb20gdGhlIGFjdHVhbCBjaGFuZ2VzLlxuXG4tIFRBUkdFVCBTUEVDSUZJQyBGRUFUVVJFIExPR0lDIEFORCBFTlRSWVBPSU5UUzpcbiAgTGlzdCBmdW5jdGlvbnMgdGhhdCBzcGVjaWZpY2FsbHkgaW1wbGVtZW50IHRoZSBsb2dpYyBiZWluZyBhZGRlZCBvciBhbHRlcmVkLCBvciBkaXJlY3QgQVBJIGVudHJ5cG9pbnRzXG4gIGZvciB0aGUgc3Vic3lzdGVtIGZlYXR1cmUgdW5kZXIgcmV2aWV3LlxuXG4tIEhBTkRMSU5HIFNUQVRJQyBJTkxJTkUgRlVOQ1RJT05TIElOIEhFQURFUlMgKC5oKTpcbiAgQ29tcGlsZXItaW5saW5lZCBzdGF0aWMgZnVuY3Rpb25zIChzdWNoIGFzIHN0YXRpYyBpbmxpbmVzIGluIG1tLyouaCBvciBpbmNsdWRlL2xpbnV4LyouaCkgbGFja1xuICBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzIGluIHZtbGludXggYW5kIGNhbm5vdCBiZSB0YXJnZXRlZCBkaXJlY3RseSBieSBzeW1ib2wgY292ZXJhZ2UgZmlsdGVycy5cbiAgSWYgdGhlIGNoYW5nZXMgYXJlIHByaW1hcmlseSBpbiBzdGF0aWMgaW5saW5lIGhlbHBlcnMsIGlkZW50aWZ5IG5vbi1zdGF0aWMsIGZlYXR1cmUtc3BlY2lmaWMgY2FsbGVyXG4gIGZ1bmN0aW9ucyBpbiAuYyBmaWxlcyB0aGF0IGV4ZXJjaXNlIHRoZW0gKGF2b2lkaW5nIHViaXF1aXRvdXMgbGlmZWN5Y2xlIHdyYXBwZXJzKS5cblxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbjUuIElERU5USUZZSU5HIEVuYWJsZUNvbmZpZ3Ncbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5JZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IGNvbXBpbGUgYW5kIHJlYWNoIHRoZSBtb2RpZmllZCBjb2RlOlxuLSBJbnNwZWN0IEtjb25maWcgZmlsZXMgYW5kICNpZmRlZiBndWFyZHM7IGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuLSBDaGVjayBcImRlcGVuZHMgb25cIiBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3MgbmVlZGVkLlxuLSBTdHJpcCBhbnkgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiVGFyZ2V0IGFyY2hpdGVjdHVyZTogYW1kNjRcblxuRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgNDc1NDdlZTdhNTQwOTIzZTYyMTlmNDViZDhiMjZlMjlkYThjMWY1MFxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBUaHUgU2VwIDEwIDE2OjE1OjQyIDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9icGYva2Z1bmNzLnJzdCBiL0RvY3VtZW50YXRpb24vYnBmL2tmdW5jcy5yc3RcbmluZGV4IDg1ZjczZTBiYmQwZmYuLjY2OTFmZThhMzJjM2QgMTAwNjQ0XG4tLS0gYS9Eb2N1bWVudGF0aW9uL2JwZi9rZnVuY3MucnN0XG4rKysgYi9Eb2N1bWVudGF0aW9uL2JwZi9rZnVuY3MucnN0XG5AQCAtNDg2LDYgKzQ4NiwxNiBAQCBFeGFtcGxlIHVzYWdlIGluIEJQRiBwcm9ncmFtOlxuIFx0Lyogbm90ZSB0aGF0IHRoZSBsYXN0IGFyZ3VtZW50IGlzIG9taXR0ZWQgKi9cbiAgICAgICAgIGJwZl90YXNrX3dvcmtfc2NoZWR1bGVfc2lnbmFsKHRhc2ssIFx1MDAyNndvcmstXHUwMDNldHcsIFx1MDAyNmFycm1hcCwgdGFza193b3JrX2NhbGxiYWNrKTtcbiBcbisyLjUuMTAgS0ZfUEVSRk1PTiBmbGFnXG4rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuK1xuK1RoZSBLRl9QRVJGTU9OIGZsYWcgaXMgdXNlZCBmb3Iga2Z1bmNzIHRoYXQgY2FuIGV4cG9zZSBrZXJuZWwgbWVtb3J5IG9yIGtlcm5lbFxuK2FkZHJlc3NlcyB0byB0aGUgQlBGIHByb2dyYW0sIGZvciBleGFtcGxlIGJ5IHJlYWRpbmcgdGhyb3VnaCBhIHBvaW50ZXIgdGhhdCB0aGVcbit2ZXJpZmllciBkb2VzIG5vdCBjaGVjay4gQ2FsbGluZyBzdWNoIGEga2Z1bmMgcmVxdWlyZXMgQ0FQX1BFUkZNT04sIG9yXG4rQ0FQX1NZU19BRE1JTiwgaW4gdGhlIHNhbWUgd2F5IHRoYXQgdGhlIGVxdWl2YWxlbnQgQlBGIGhlbHBlcnMgYXJlIGdhdGVkIGluXG4rYnBmX2Jhc2VfZnVuY19wcm90bygpLiBBIHByb2dyYW0gbG9hZGVkIHdpdGggQ0FQX0JQRiBhbG9uZSBpcyByZWplY3RlZCBhdCBsb2FkXG4rdGltZS5cbitcbiAyLjYgUmVnaXN0ZXJpbmcgdGhlIGtmdW5jc1xuIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gXG5kaWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51eC9idGYuaCBiL2luY2x1ZGUvbGludXgvYnRmLmhcbmluZGV4IDg5ZDVhNWM0ZjExNzEuLjdjNjJlYTE3YjExNjMgMTAwNjQ0XG4tLS0gYS9pbmNsdWRlL2xpbnV4L2J0Zi5oXG4rKysgYi9pbmNsdWRlL2xpbnV4L2J0Zi5oXG5AQCAtODAsNiArODAsNyBAQFxuICNkZWZpbmUgS0ZfQVJFTkFfQVJHMiAgICgxIFx1MDAzY1x1MDAzYyAxNSkgLyoga2Z1bmMgdGFrZXMgYW4gYXJlbmEgcG9pbnRlciBhcyBpdHMgc2Vjb25kIGFyZ3VtZW50ICovXG4gI2RlZmluZSBLRl9JTVBMSUNJVF9BUkdTICgxIFx1MDAzY1x1MDAzYyAxNikgLyoga2Z1bmMgaGFzIGltcGxpY2l0IGFyZ3VtZW50cyBzdXBwbGllZCBieSB0aGUgdmVyaWZpZXIgKi9cbiAjZGVmaW5lIEtGX1NQSU5MT0NLX1NBRkUgKDEgXHUwMDNjXHUwMDNjIDE3KSAvKiBrZnVuYyBpcyBhbGxvd2VkIGluc2lkZSBicGZfc3Bpbl9sb2NrLWVkIHJlZ2lvbiAqL1xuKyNkZWZpbmUgS0ZfUEVSRk1PTiAgICAgICgxIFx1MDAzY1x1MDAzYyAxOCkgLyoga2Z1bmMgcmVxdWlyZXMgQ0FQX1BFUkZNT04gKi9cbiBcbiAvKlxuICAqIFRhZyBtYXJraW5nIGEga2VybmVsIGZ1bmN0aW9uIGFzIGEga2Z1bmMuIFRoaXMgaXMgbWVhbnQgdG8gbWluaW1pemUgdGhlXG5kaWZmIC0tZ2l0IGEva2VybmVsL2JwZi9oZWxwZXJzLmMgYi9rZXJuZWwvYnBmL2hlbHBlcnMuY1xuaW5kZXggYjNjYzVjOGZjODc1Ni4uOGEwZWViNGY2MjM2ZCAxMDA2NDRcbi0tLSBhL2tlcm5lbC9icGYvaGVscGVycy5jXG4rKysgYi9rZXJuZWwvYnBmL2hlbHBlcnMuY1xuQEAgLTQ4ODMsNyArNDg4Myw3IEBAIEJURl9JRChmdW5jLCBicGZfY2dyb3VwX3JlbGVhc2VfZHRvcilcbiBcbiBCVEZfS0ZVTkNTX1NUQVJUKGNvbW1vbl9idGZfaWRzKVxuIEJURl9JRF9GTEFHUyhmdW5jLCBicGZfY2FzdF90b19rZXJuX2N0eCwgS0ZfRkFTVENBTEwpXG4tQlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl9yZG9ubHlfY2FzdCwgS0ZfRkFTVENBTEwpXG4rQlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl9yZG9ubHlfY2FzdCwgS0ZfRkFTVENBTEwgfCBLRl9QRVJGTU9OKVxuIEJURl9JRF9GTEFHUyhmdW5jLCBicGZfcmN1X3JlYWRfbG9jaylcbiBCVEZfSURfRkxBR1MoZnVuYywgYnBmX3JjdV9yZWFkX3VubG9jaylcbiBCVEZfSURfRkxBR1MoZnVuYywgYnBmX2R5bnB0cl9zbGljZSwgS0ZfUkVUX05VTEwpXG5AQCAtNDkyMCwxMSArNDkyMCwxMSBAQCBCVEZfSURfRkxBR1MoZnVuYywgYnBmX3dxX3NldF9jYWxsYmFjaywgS0ZfSU1QTElDSVRfQVJHUylcbiBCVEZfSURfRkxBR1MoZnVuYywgYnBmX3dxX3N0YXJ0KVxuIEJURl9JRF9GTEFHUyhmdW5jLCBicGZfcHJlZW1wdF9kaXNhYmxlKVxuIEJURl9JRF9GTEFHUyhmdW5jLCBicGZfcHJlZW1wdF9lbmFibGUpXG4tQlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl9pdGVyX2JpdHNfbmV3LCBLRl9JVEVSX05FVylcbitCVEZfSURfRkxBR1MoZnVuYywgYnBmX2l0ZXJfYml0c19uZXcsIEtGX0lURVJfTkVXIHwgS0ZfUEVSRk1PTilcbiBCVEZfSURfRkxBR1MoZnVuYywgYnBmX2l0ZXJfYml0c19uZXh0LCBLRl9JVEVSX05FWFQgfCBLRl9SRVRfTlVMTClcbiBCVEZfSURfRkxBR1MoZnVuYywgYnBmX2l0ZXJfYml0c19kZXN0cm95LCBLRl9JVEVSX0RFU1RST1kpXG4tQlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl9jb3B5X2Zyb21fdXNlcl9zdHIsIEtGX1NMRUVQQUJMRSlcbi1CVEZfSURfRkxBR1MoZnVuYywgYnBmX2NvcHlfZnJvbV91c2VyX3Rhc2tfc3RyLCBLRl9TTEVFUEFCTEUpXG4rQlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl9jb3B5X2Zyb21fdXNlcl9zdHIsIEtGX1NMRUVQQUJMRSB8IEtGX1BFUkZNT04pXG4rQlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl9jb3B5X2Zyb21fdXNlcl90YXNrX3N0ciwgS0ZfU0xFRVBBQkxFIHwgS0ZfUEVSRk1PTilcbiBCVEZfSURfRkxBR1MoZnVuYywgYnBmX2dldF9rbWVtX2NhY2hlKVxuIEJURl9JRF9GTEFHUyhmdW5jLCBicGZfaXRlcl9rbWVtX2NhY2hlX25ldywgS0ZfSVRFUl9ORVcgfCBLRl9TTEVFUEFCTEUpXG4gQlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl9pdGVyX2ttZW1fY2FjaGVfbmV4dCwgS0ZfSVRFUl9ORVhUIHwgS0ZfUkVUX05VTEwgfCBLRl9TTEVFUEFCTEUpXG5AQCAtNDkzMiwxNCArNDkzMiwxNCBAQCBCVEZfSURfRkxBR1MoZnVuYywgYnBmX2l0ZXJfa21lbV9jYWNoZV9kZXN0cm95LCBLRl9JVEVSX0RFU1RST1kgfCBLRl9TTEVFUEFCTEUpXG4gQlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl9sb2NhbF9pcnFfc2F2ZSlcbiBCVEZfSURfRkxBR1MoZnVuYywgYnBmX2xvY2FsX2lycV9yZXN0b3JlKVxuICNpZmRlZiBDT05GSUdfQlBGX0VWRU5UU1xuLUJURl9JRF9GTEFHUyhmdW5jLCBicGZfcHJvYmVfcmVhZF91c2VyX2R5bnB0cilcbi1CVEZfSURfRkxBR1MoZnVuYywgYnBmX3Byb2JlX3JlYWRfa2VybmVsX2R5bnB0cilcbi1CVEZfSURfRkxBR1MoZnVuYywgYnBmX3Byb2JlX3JlYWRfdXNlcl9zdHJfZHlucHRyKVxuLUJURl9JRF9GTEFHUyhmdW5jLCBicGZfcHJvYmVfcmVhZF9rZXJuZWxfc3RyX2R5bnB0cilcbi1CVEZfSURfRkxBR1MoZnVuYywgYnBmX2NvcHlfZnJvbV91c2VyX2R5bnB0ciwgS0ZfU0xFRVBBQkxFKVxuLUJURl9JRF9GTEFHUyhmdW5jLCBicGZfY29weV9mcm9tX3VzZXJfc3RyX2R5bnB0ciwgS0ZfU0xFRVBBQkxFKVxuLUJURl9JRF9GTEFHUyhmdW5jLCBicGZfY29weV9mcm9tX3VzZXJfdGFza19keW5wdHIsIEtGX1NMRUVQQUJMRSlcbi1CVEZfSURfRkxBR1MoZnVuYywgYnBmX2NvcHlfZnJvbV91c2VyX3Rhc2tfc3RyX2R5bnB0ciwgS0ZfU0xFRVBBQkxFKVxuK0JURl9JRF9GTEFHUyhmdW5jLCBicGZfcHJvYmVfcmVhZF91c2VyX2R5bnB0ciwgS0ZfUEVSRk1PTilcbitCVEZfSURfRkxBR1MoZnVuYywgYnBmX3Byb2JlX3JlYWRfa2VybmVsX2R5bnB0ciwgS0ZfUEVSRk1PTilcbitCVEZfSURfRkxBR1MoZnVuYywgYnBmX3Byb2JlX3JlYWRfdXNlcl9zdHJfZHlucHRyLCBLRl9QRVJGTU9OKVxuK0JURl9JRF9GTEFHUyhmdW5jLCBicGZfcHJvYmVfcmVhZF9rZXJuZWxfc3RyX2R5bnB0ciwgS0ZfUEVSRk1PTilcbitCVEZfSURfRkxBR1MoZnVuYywgYnBmX2NvcHlfZnJvbV91c2VyX2R5bnB0ciwgS0ZfU0xFRVBBQkxFIHwgS0ZfUEVSRk1PTilcbitCVEZfSURfRkxBR1MoZnVuYywgYnBmX2NvcHlfZnJvbV91c2VyX3N0cl9keW5wdHIsIEtGX1NMRUVQQUJMRSB8IEtGX1BFUkZNT04pXG4rQlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl9jb3B5X2Zyb21fdXNlcl90YXNrX2R5bnB0ciwgS0ZfU0xFRVBBQkxFIHwgS0ZfUEVSRk1PTilcbitCVEZfSURfRkxBR1MoZnVuYywgYnBmX2NvcHlfZnJvbV91c2VyX3Rhc2tfc3RyX2R5bnB0ciwgS0ZfU0xFRVBBQkxFIHwgS0ZfUEVSRk1PTilcbiAjZW5kaWZcbiAjaWZkZWYgQ09ORklHX0RNQV9TSEFSRURfQlVGRkVSXG4gQlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl9pdGVyX2RtYWJ1Zl9uZXcsIEtGX0lURVJfTkVXIHwgS0ZfU0xFRVBBQkxFKVxuQEAgLTQ5NDcsMjYgKzQ5NDcsMjYgQEAgQlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl9pdGVyX2RtYWJ1Zl9uZXh0LCBLRl9JVEVSX05FWFQgfCBLRl9SRVRfTlVMTCB8IEtGX1NMRUVQQUJcbiBCVEZfSURfRkxBR1MoZnVuYywgYnBmX2l0ZXJfZG1hYnVmX2Rlc3Ryb3ksIEtGX0lURVJfREVTVFJPWSB8IEtGX1NMRUVQQUJMRSlcbiAjZW5kaWZcbiBCVEZfSURfRkxBR1MoZnVuYywgX19icGZfdHJhcClcbi1CVEZfSURfRkxBR1MoZnVuYywgYnBmX3N0cmNtcCk7XG4tQlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl9zdHJjYXNlY21wKTtcbi1CVEZfSURfRkxBR1MoZnVuYywgYnBmX3N0cm5jYXNlY21wKTtcbi1CVEZfSURfRkxBR1MoZnVuYywgYnBmX3N0cmNocik7XG4tQlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl9zdHJjaHJudWwpO1xuLUJURl9JRF9GTEFHUyhmdW5jLCBicGZfc3RybmNocik7XG4tQlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl9zdHJyY2hyKTtcbi1CVEZfSURfRkxBR1MoZnVuYywgYnBmX3N0cmxlbik7XG4tQlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl9zdHJubGVuKTtcbi1CVEZfSURfRkxBR1MoZnVuYywgYnBmX3N0cnNwbik7XG4tQlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl9zdHJjc3BuKTtcbi1CVEZfSURfRkxBR1MoZnVuYywgYnBmX3N0cnN0cik7XG4tQlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl9zdHJjYXNlc3RyKTtcbi1CVEZfSURfRkxBR1MoZnVuYywgYnBmX3N0cm5zdHIpO1xuLUJURl9JRF9GTEFHUyhmdW5jLCBicGZfc3RybmNhc2VzdHIpO1xuK0JURl9JRF9GTEFHUyhmdW5jLCBicGZfc3RyY21wLCBLRl9QRVJGTU9OKTtcbitCVEZfSURfRkxBR1MoZnVuYywgYnBmX3N0cmNhc2VjbXAsIEtGX1BFUkZNT04pO1xuK0JURl9JRF9GTEFHUyhmdW5jLCBicGZfc3RybmNhc2VjbXAsIEtGX1BFUkZNT04pO1xuK0JURl9JRF9GTEFHUyhmdW5jLCBicGZfc3RyY2hyLCBLRl9QRVJGTU9OKTtcbitCVEZfSURfRkxBR1MoZnVuYywgYnBmX3N0cmNocm51bCwgS0ZfUEVSRk1PTik7XG4rQlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl9zdHJuY2hyLCBLRl9QRVJGTU9OKTtcbitCVEZfSURfRkxBR1MoZnVuYywgYnBmX3N0cnJjaHIsIEtGX1BFUkZNT04pO1xuK0JURl9JRF9GTEFHUyhmdW5jLCBicGZfc3RybGVuLCBLRl9QRVJGTU9OKTtcbitCVEZfSURfRkxBR1MoZnVuYywgYnBmX3N0cm5sZW4sIEtGX1BFUkZNT04pO1xuK0JURl9JRF9GTEFHUyhmdW5jLCBicGZfc3Ryc3BuLCBLRl9QRVJGTU9OKTtcbitCVEZfSURfRkxBR1MoZnVuYywgYnBmX3N0cmNzcG4sIEtGX1BFUkZNT04pO1xuK0JURl9JRF9GTEFHUyhmdW5jLCBicGZfc3Ryc3RyLCBLRl9QRVJGTU9OKTtcbitCVEZfSURfRkxBR1MoZnVuYywgYnBmX3N0cmNhc2VzdHIsIEtGX1BFUkZNT04pO1xuK0JURl9JRF9GTEFHUyhmdW5jLCBicGZfc3RybnN0ciwgS0ZfUEVSRk1PTik7XG4rQlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl9zdHJuY2FzZXN0ciwgS0ZfUEVSRk1PTik7XG4gI2lmIGRlZmluZWQoQ09ORklHX0JQRl9MU00pIFx1MDAyNlx1MDAyNiBkZWZpbmVkKENPTkZJR19DR1JPVVBTKVxuIEJURl9JRF9GTEFHUyhmdW5jLCBicGZfY2dyb3VwX3JlYWRfeGF0dHIsIEtGX1JDVSlcbiAjZW5kaWZcbi1CVEZfSURfRkxBR1MoZnVuYywgYnBmX3N0cmVhbV92cHJpbnRrLCBLRl9JTVBMSUNJVF9BUkdTIHwgS0ZfU1BJTkxPQ0tfU0FGRSlcbi1CVEZfSURfRkxBR1MoZnVuYywgYnBmX3N0cmVhbV9wcmludF9zdGFjaywgS0ZfSU1QTElDSVRfQVJHUyB8IEtGX1NQSU5MT0NLX1NBRkUpXG4rQlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl9zdHJlYW1fdnByaW50aywgS0ZfSU1QTElDSVRfQVJHUyB8IEtGX1NQSU5MT0NLX1NBRkUgfCBLRl9QRVJGTU9OKVxuK0JURl9JRF9GTEFHUyhmdW5jLCBicGZfc3RyZWFtX3ByaW50X3N0YWNrLCBLRl9JTVBMSUNJVF9BUkdTIHwgS0ZfU1BJTkxPQ0tfU0FGRSB8IEtGX1BFUkZNT04pXG4gQlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl90YXNrX3dvcmtfc2NoZWR1bGVfc2lnbmFsLCBLRl9JTVBMSUNJVF9BUkdTKVxuIEJURl9JRF9GTEFHUyhmdW5jLCBicGZfdGFza193b3JrX3NjaGVkdWxlX3Jlc3VtZSwgS0ZfSU1QTElDSVRfQVJHUylcbiBCVEZfSURfRkxBR1MoZnVuYywgYnBmX2R5bnB0cl9mcm9tX2ZpbGUpXG5kaWZmIC0tZ2l0IGEva2VybmVsL2JwZi92ZXJpZmllci5jIGIva2VybmVsL2JwZi92ZXJpZmllci5jXG5pbmRleCA3MmEzZjU5OThkZDI3Li4zNjkyM2NlMDQyNzM0IDEwMDY0NFxuLS0tIGEva2VybmVsL2JwZi92ZXJpZmllci5jXG4rKysgYi9rZXJuZWwvYnBmL3ZlcmlmaWVyLmNcbkBAIC02NDUzLDYgKzY0NTMsMTYgQEAgc3RhdGljIGludCBjaGVja19tZW1fYWNjZXNzKHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYsIGludCBpbnNuX2lkeCwgc3RydWN0IGJcbiBcdFx0XHRyZXR1cm4gLUVBQ0NFUztcbiBcdFx0fVxuIFxuK1x0XHRpZiAocmRvbmx5X3VudHJ1c3RlZCBcdTAwMjZcdTAwMjYgIWVudi1cdTAwM2VhbGxvd19wdHJfbGVha3MpIHtcbitcdFx0XHR2ZXJib3NlKGVudiwgXCIlcyBhY2Nlc3MgaXMgYWxsb3dlZCBvbmx5IHRvIENBUF9QRVJGTU9OIGFuZCBDQVBfU1lTX0FETUlOXFxuXCIsXG4rXHRcdFx0XHRyZWdfdHlwZV9zdHIoZW52LCByZWctXHUwMDNldHlwZSkpO1xuK1x0XHRcdGJwZl9kaWFnX3BvbGljeShcbitcdFx0XHRcdGVudiwgaW5zbl9pZHgsIFwicmVhZCBmcm9tIHVudHJ1c3RlZCByZWFkLW9ubHkgbWVtb3J5XCIsXG4rXHRcdFx0XHRcInRoZSBhY2Nlc3MgcmVxdWlyZXMgQ0FQX1BFUkZNT05cIixcbitcdFx0XHRcdFwiTG9hZCB0aGUgcHJvZ3JhbSB3aXRoIENBUF9QRVJGTU9OLCBvciBhdm9pZCBkZXJlZmVyZW5jaW5nIHVudHJ1c3RlZCBwb2ludGVycy5cIik7XG4rXHRcdFx0cmV0dXJuIC1FUEVSTTtcbitcdFx0fVxuK1xuIFx0XHQvKlxuIFx0XHQgKiBBY2Nlc3NlcyB0byB1bnRydXN0ZWQgUFRSX1RPX01FTSBhcmUgZG9uZSB0aHJvdWdoIHByb2JlXG4gXHRcdCAqIGluc3RydWN0aW9ucywgaGVuY2Ugbm8gbmVlZCB0byBjaGVjayBib3VuZHMgaW4gdGhhdCBjYXNlLlxuQEAgLTExMzU2LDYgKzExMzY2LDExIEBAIHN0YXRpYyBib29sIGlzX2tmdW5jX2Rlc3RydWN0aXZlKHN0cnVjdCBicGZfY2FsbF9hcmdfbWV0YSAqbWV0YSlcbiBcdHJldHVybiBtZXRhLVx1MDAzZWtmdW5jX2ZsYWdzIFx1MDAyNiBLRl9ERVNUUlVDVElWRTtcbiB9XG4gXG4rc3RhdGljIGJvb2wgaXNfa2Z1bmNfcGVyZm1vbihzdHJ1Y3QgYnBmX2NhbGxfYXJnX21ldGEgKm1ldGEpXG4re1xuK1x0cmV0dXJuIG1ldGEtXHUwMDNla2Z1bmNfZmxhZ3MgXHUwMDI2IEtGX1BFUkZNT047XG4rfVxuK1xuIHN0YXRpYyBib29sIGlzX2tmdW5jX3JjdShzdHJ1Y3QgYnBmX2NhbGxfYXJnX21ldGEgKm1ldGEpXG4ge1xuIFx0cmV0dXJuIG1ldGEtXHUwMDNla2Z1bmNfZmxhZ3MgXHUwMDI2IEtGX1JDVTtcbkBAIC0xMzgzNCw2ICsxMzg0OSwxNiBAQCBzdGF0aWMgaW50IGNoZWNrX2tmdW5jX2NhbGwoc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudiwgc3RydWN0IGJwZl9pbnNuICppbnNuLFxuIFx0XHRyZXR1cm4gLUVBQ0NFUztcbiBcdH1cbiBcbitcdGlmIChpc19rZnVuY19wZXJmbW9uKFx1MDAyNm1ldGEpIFx1MDAyNlx1MDAyNiAhZW52LVx1MDAzZWFsbG93X3B0cl9sZWFrcykge1xuK1x0XHR2ZXJib3NlKGVudiwgXCIlcyBpcyBhbGxvd2VkIG9ubHkgdG8gQ0FQX1BFUkZNT04gYW5kIENBUF9TWVNfQURNSU5cXG5cIixcbitcdFx0XHRmdW5jX25hbWUpO1xuK1x0XHRvcGVyYXRpb24gPSBicGZfZGlhZ19mbXQoZW52LCBcImtmdW5jICVzXCIsIGZ1bmNfbmFtZSk7XG4rXHRcdGJwZl9kaWFnX3BvbGljeShcbitcdFx0XHRlbnYsIGluc25faWR4LCBvcGVyYXRpb24sIFwidGhlIGtmdW5jIHJlcXVpcmVzIENBUF9QRVJGTU9OXCIsXG4rXHRcdFx0XCJMb2FkIHRoZSBwcm9ncmFtIHdpdGggQ0FQX1BFUkZNT04sIG9yIGF2b2lkIHRoZSBrZnVuYy5cIik7XG4rXHRcdHJldHVybiAtRVBFUk07XG4rXHR9XG4rXG4gXHRzbGVlcGFibGUgPSBicGZfaXNfa2Z1bmNfc2xlZXBhYmxlKFx1MDAyNm1ldGEpO1xuIFx0aWYgKHNsZWVwYWJsZSBcdTAwMjZcdTAwMjYgIWluX3NsZWVwYWJsZShlbnYpKSB7XG4gXHRcdHZlcmJvc2UoZW52LCBcInByb2dyYW0gbXVzdCBiZSBzbGVlcGFibGUgdG8gY2FsbCBzbGVlcGFibGUga2Z1bmMgJXNcXG5cIiwgZnVuY19uYW1lKTtcbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy92ZXJpZmllci5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvdmVyaWZpZXIuY1xuaW5kZXggNjRhYzQ5YWQ2N2U2My4uZWM5ZTM5MDdjNzVkNiAxMDA2NDRcbi0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3ZlcmlmaWVyLmNcbisrKyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3ZlcmlmaWVyLmNcbkBAIC01Myw2ICs1Myw3IEBAXG4gI2luY2x1ZGUgXCJ2ZXJpZmllcl9pdGVyYXRpbmdfY2FsbGJhY2tzLnNrZWwuaFwiXG4gI2luY2x1ZGUgXCJ2ZXJpZmllcl9qZXFfaW5mZXJfbm90X251bGwuc2tlbC5oXCJcbiAjaW5jbHVkZSBcInZlcmlmaWVyX2ppdF9jb252ZXJnZW5jZS5za2VsLmhcIlxuKyNpbmNsdWRlIFwidmVyaWZpZXJfa2Z1bmNfcGVyZm1vbi5za2VsLmhcIlxuICNpbmNsdWRlIFwidmVyaWZpZXJfbGRfaW5kLnNrZWwuaFwiXG4gI2luY2x1ZGUgXCJ2ZXJpZmllcl9sZHN4LnNrZWwuaFwiXG4gI2luY2x1ZGUgXCJ2ZXJpZmllcl9sZWFrX3B0ci5za2VsLmhcIlxuQEAgLTIxNiw2ICsyMTcsNyBAQCB2b2lkIHRlc3RfdmVyaWZpZXJfaW50X3B0cih2b2lkKSAgICAgICAgICAgICAgeyBSVU4odmVyaWZpZXJfaW50X3B0cik7IH1cbiB2b2lkIHRlc3RfdmVyaWZpZXJfaXRlcmF0aW5nX2NhbGxiYWNrcyh2b2lkKSAgeyBSVU4odmVyaWZpZXJfaXRlcmF0aW5nX2NhbGxiYWNrcyk7IH1cbiB2b2lkIHRlc3RfdmVyaWZpZXJfamVxX2luZmVyX25vdF9udWxsKHZvaWQpICAgeyBSVU4odmVyaWZpZXJfamVxX2luZmVyX25vdF9udWxsKTsgfVxuIHZvaWQgdGVzdF92ZXJpZmllcl9qaXRfY29udmVyZ2VuY2Uodm9pZCkgICAgICB7IFJVTih2ZXJpZmllcl9qaXRfY29udmVyZ2VuY2UpOyB9XG4rdm9pZCB0ZXN0X3ZlcmlmaWVyX2tmdW5jX3BlcmZtb24odm9pZCkgICAgICAgIHsgUlVOKHZlcmlmaWVyX2tmdW5jX3BlcmZtb24pOyB9XG4gdm9pZCB0ZXN0X3ZlcmlmaWVyX2xvYWRfYWNxdWlyZSh2b2lkKSAgICAgICAgIHsgUlVOKHZlcmlmaWVyX2xvYWRfYWNxdWlyZSk7IH1cbiB2b2lkIHRlc3RfdmVyaWZpZXJfbGRfaW5kKHZvaWQpICAgICAgICAgICAgICAgeyBSVU4odmVyaWZpZXJfbGRfaW5kKTsgfVxuIHZvaWQgdGVzdF92ZXJpZmllcl9sZHN4KHZvaWQpICAgICAgICAgICAgICAgICAgeyBSVU4odmVyaWZpZXJfbGRzeCk7IH1cbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvdmVyaWZpZXJfa2Z1bmNfcGVyZm1vbi5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3ZlcmlmaWVyX2tmdW5jX3BlcmZtb24uY1xubmV3IGZpbGUgbW9kZSAxMDA2NDRcbmluZGV4IDAwMDAwMDAwMDAwMDAuLmM2YWRiYjQ4MTZjZWNcbi0tLSAvZGV2L251bGxcbisrKyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy92ZXJpZmllcl9rZnVuY19wZXJmbW9uLmNcbkBAIC0wLDAgKzEsNjMgQEBcbisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMFxuK1xuKyNpbmNsdWRlIFx1MDAzY3ZtbGludXguaFx1MDAzZVxuKyNpbmNsdWRlIFx1MDAzY2JwZi9icGZfaGVscGVycy5oXHUwMDNlXG4rI2luY2x1ZGUgXCJicGZfbWlzYy5oXCJcbitcbit2b2lkICp1c2VyX3B0cjtcbitjaGFyIGR5bnB0cl9idWZbOF07XG4rdTY0IGthZGRyO1xuK1xuK1NFQyhcInNvY2tldFwiKVxuK19fc3VjY2Vzc1xuK19fY2Fwc191bnByaXYoQ0FQX0JQRilcbitfX2ZhaWx1cmVfdW5wcml2XG4rX19tc2dfdW5wcml2KFwiYnBmX3Jkb25seV9jYXN0IGlzIGFsbG93ZWQgb25seSB0byBDQVBfUEVSRk1PTiBhbmQgQ0FQX1NZU19BRE1JTlwiKVxuK2ludCByZG9ubHlfY2FzdF9ub3BlcmZtb24odm9pZCAqY3R4KVxuK3tcbitcdGNoYXIgKnAgPSBicGZfcmRvbmx5X2Nhc3QoMCwgMCk7XG4rXG4rXHRyZXR1cm4gcFsweDdmZmZdO1xuK31cbitcbitTRUMoXCJzb2NrZXRcIilcbitfX3N1Y2Nlc3NcbitfX2NhcHNfdW5wcml2KENBUF9CUEYpXG4rX19mYWlsdXJlX3VucHJpdlxuK19fbXNnX3VucHJpdihcImJwZl9wcm9iZV9yZWFkX2tlcm5lbF9keW5wdHIgaXMgYWxsb3dlZCBvbmx5IHRvIENBUF9QRVJGTU9OIGFuZCBDQVBfU1lTX0FETUlOXCIpXG4raW50IHByb2JlX3JlYWRfa2VybmVsX2R5bnB0cl9ub3BlcmZtb24odm9pZCAqY3R4KVxuK3tcbitcdHN0cnVjdCBicGZfZHlucHRyIGRwdHI7XG4rXG4rXHRicGZfZHlucHRyX2Zyb21fbWVtKGR5bnB0cl9idWYsIHNpemVvZihkeW5wdHJfYnVmKSwgMCwgXHUwMDI2ZHB0cik7XG4rXHRicGZfcHJvYmVfcmVhZF9rZXJuZWxfZHlucHRyKFx1MDAyNmRwdHIsIDAsIHNpemVvZihkeW5wdHJfYnVmKSwgdXNlcl9wdHIpO1xuK1x0cmV0dXJuIDA7XG4rfVxuK1xuK1NFQyhcInNvY2tldFwiKVxuK19fc3VjY2Vzc1xuK19fY2Fwc191bnByaXYoQ0FQX0JQRilcbitfX2ZhaWx1cmVfdW5wcml2XG4rX19tc2dfdW5wcml2KFwiYnBmX3N0cmVhbV92cHJpbnRrIGlzIGFsbG93ZWQgb25seSB0byBDQVBfUEVSRk1PTiBhbmQgQ0FQX1NZU19BRE1JTlwiKVxuK2ludCBzdHJlYW1fdnByaW50a19ub3BlcmZtb24odm9pZCAqY3R4KVxuK3tcbitcdGJwZl9zdHJlYW1fcHJpbnRrKEJQRl9TVERPVVQsIFwiJXBCXCIsICh2b2lkICopa2FkZHIpO1xuK1x0cmV0dXJuIDA7XG4rfVxuK1xuK19fd2VhayBpbnQgc3VicHJvZ191bnRydXN0ZWRfcmVhZCh2b2lkICpwIF9fYXJnX3VudHJ1c3RlZClcbit7XG4rXHRyZXR1cm4gKihjaGFyICopcDtcbit9XG4rXG4rU0VDKFwic29ja2V0XCIpXG4rX19zdWNjZXNzXG4rX19jYXBzX3VucHJpdihDQVBfQlBGKVxuK19fZmFpbHVyZV91bnByaXZcbitfX21zZ191bnByaXYoXCJyZG9ubHlfdW50cnVzdGVkX21lbSBhY2Nlc3MgaXMgYWxsb3dlZCBvbmx5IHRvIENBUF9QRVJGTU9OIGFuZCBDQVBfU1lTX0FETUlOXCIpXG4raW50IGFyZ191bnRydXN0ZWRfcmVhZF9ub3BlcmZtb24odm9pZCAqY3R4KVxuK3tcbitcdHJldHVybiBzdWJwcm9nX3VudHJ1c3RlZF9yZWFkKDApO1xuK31cbitcbitjaGFyIF9saWNlbnNlW10gU0VDKFwibGljZW5zZVwiKSA9IFwiR1BMXCI7XG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0xMFQxNjoxNTo0NS43NDg2OTI3NzNaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjoyMzcyMTE4MjA2MywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXNpcyBvZiBCUEYgS2Z1bmMgUGVybWlzc2lvbnMgUGF0Y2gqKlxuXG5Pa2F5LCBsZXQncyBicmVhayB0aGlzIGRvd24uIFRoaXMgcGF0Y2ggaXMgZm9jdXNlZCBvbiBCUEYga2Z1bmNzLCBzcGVjaWZpY2FsbHkgcmVsYXRlZCB0byB0aGUgdmVyaWZpZXIgYW5kIHBlcm1pc3Npb24gY2hlY2tzLiBNeSBpbml0aWFsIGFzc2Vzc21lbnQgaXMgdGhhdCB0aGlzIHdhcnJhbnRzIGZ1enppbmcgYmFzZWQgb24gdGhlIHBhdGNoJ3MgdG91Y2hlcyB0byBjb3JlIEJQRiB2ZXJpZmllciBsb2dpYywgd2hpY2ggaXMgcmVhY2hhYmxlIHZpYSB0aGUgYGJwZigpYCBzeXNjYWxsIGFuZCBmYWxscyB1bmRlciB0aGUgXCJjb3JlIHN1YnN5c3RlbVwiIGNhdGVnb3J5IGFjY29yZGluZyB0byBzZWN0aW9uIDMuXG5cblRoZSBwYXRjaCBpdHNlbGYgaXMgYWRkaW5nIGEgbmV3IGZsYWcsIGBLRl9QRVJGTU9OYCwgZGVmaW5lZCBpbiBgaW5jbHVkZS9saW51eC9idGYuaGAuIFRoaXMgaXMgaW1tZWRpYXRlbHkgc3VzcGljaW91cyDigJMgaW50cm9kdWNpbmcgYSBuZXcgcGVybWlzc2lvbiByZXF1aXJlbWVudCBzdWdnZXN0cyBhIHBvdGVudGlhbCBhdHRhY2sgc3VyZmFjZS4gVGhpcyBmbGFnIGlzIHRoZW4gYXBwbGllZCB0byBhIHN1YnN0YW50aWFsIG51bWJlciBvZiBrZnVuY3Mgd2l0aGluIGBrZXJuZWwvYnBmL2hlbHBlcnMuY2AuIFNwZWNpZmljYWxseSwgSSBzZWUgaXQgYXBwbGllZCB0byBhIHZhcmlldHkgb2YgcmVhZC93cml0ZSBmdW5jdGlvbnMgYW5kIHN0cmluZyBtYW5pcHVsYXRpb24gZnVuY3Rpb25zLCBpbmNsdWRpbmcgYGJwZl9yZG9ubHlfY2FzdGAsIGEgbnVtYmVyIG9mIGl0ZXJhdG9yIGZ1bmN0aW9ucyBhbmQgc3RyaW5nIGZ1bmN0aW9ucywgYW5kIGBicGZfc3RyZWFtX3ZwcmludGtgLCB3aGljaCBzdGFuZHMgb3V0LlxuXG5UaGUgY29yZSBvZiB0aGUgY2hhbmdlIHJlc2lkZXMgaW4gYGtlcm5lbC9icGYvdmVyaWZpZXIuY2AuICBgY2hlY2tfbWVtX2FjY2VzcygpYCBub3cgaW5jbHVkZXMgYSBjaGVjayBiYXNlZCBvbiB0aGUgbmV3IGBLRl9QRVJGTU9OYCBmbGFnLiBFc3NlbnRpYWxseSwgaWYgYSBwb2ludGVyIGlzIHVudHJ1c3RlZCBhbmQgcmVhZC1vbmx5LCBpdCBub3cgcmVxdWlyZXMgYENBUF9QRVJGTU9OYCAob3IgYENBUF9TWVNfQURNSU5gLCBuYXR1cmFsbHkpIHVubGVzcyBgZW52LVx1MDAzZWFsbG93X3B0cl9sZWFrc2AgaXMgc2V0LiBUaGUgYWRkZWQgYGlzX2tmdW5jX3BlcmZtb24oKWAgaGVscGVyIGlzIHRoZW4gdXNlZCBieSB0aGUgbW9yZSBzaWduaWZpY2FudCBgY2hlY2tfa2Z1bmNfY2FsbCgpYCBmdW5jdGlvbi4gIFRoaXMgZnVuY3Rpb24gd2lsbCBub3cgYmxvY2sgY2FsbHMgdG8gdGhvc2Uga2Z1bmNzIHRoYXQgYXJlIHRhZ2dlZCB3aXRoIHRoZSBgS0ZfUEVSRk1PTmAgZmxhZyB3aXRob3V0IHRoZSBuZWNlc3NhcnkgY2FwYWJpbGl0eS5cblxuRnJvbSBhIGZ1enppbmcgcGVyc3BlY3RpdmUsIEknbSBnb2luZyB0byB3YW50IHRvIGZvY3VzIG9uOlxuXG4qICAgVGhlIGZ1bmN0aW9ucyBtb2RpZmllZCBpbiBga2VybmVsL2JwZi92ZXJpZmllci5jYDogc3BlY2lmaWNhbGx5LCBgY2hlY2tfa2Z1bmNfY2FsbGAgYW5kIGBjaGVja19tZW1fYWNjZXNzYCDigJMgdGhlc2UgYXJlIGNsZWFybHkgdGhlIGdhdGVrZWVwZXJzIGFuZCB0aGUgY3JpdGljYWwgcG9pbnRzIG9mIGVuZm9yY2VtZW50LlxuKiAgIFRoZSBrZnVuY3MgdGhlbXNlbHZlcywgZXNwZWNpYWxseSB0aG9zZSBub3cgcmVxdWlyaW5nIGBDQVBfUEVSRk1PTmAuICBJdCdzIHVzZWZ1bCB0byBrZWVwIHRyYWNrIG9mIHRoZSBoZWxwZXIgZnVuY3Rpb24sIGBpc19rZnVuY19wZXJmbW9uKClgIHRvby5cbiogICBUaGUgb3ZlcmFsbCBlbnRyeXBvaW50IHRvIEJQRiB2ZXJpZmllciwgdGhlIGhlbHBlciBmdW5jdGlvbiBpdHNlbGYgYGJwZl9jaGVja2AuXG5cbkkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBleGFjdCBjb25kaXRpb25zIHVuZGVyIHdoaWNoIGBlbnYtXHUwMDNlYWxsb3dfcHRyX2xlYWtzYCBjYW4gYmUgc2V0LCBhcyB0aGF0IGNvdWxkIGJ5cGFzcyB0aGUgbmV3IHJlc3RyaWN0aW9ucy4gSXQgd291bGQgYmUgcHJ1ZGVudCB0byBpbnNwZWN0IHRoZSBjb2RlIHRvIHVuZGVyc3RhbmQgd2hhdCB2YWx1ZXMgZm9yIHRoZSBhcmd1bWVudHMgZm9yIHRoZXNlIGZ1bmN0aW9ucyB3aWxsIHJlc3VsdCBpbiBhbiBhbGxvd2VkIGNhbGwgdmVyc3VzIGEgYmxvY2tlZCBjYWxsLiBJJ20gZ29pbmcgdG8gdXNlIGdyZXBwZXIgb3IgcmVhZC1maWxlIHRvIGNhcmVmdWxseSBleGFtaW5lIHRoZSBzdXJyb3VuZGluZyBjb2RlIGluIGBrZXJuZWwvYnBmL3ZlcmlmaWVyLmNgIHRvIHVuZGVyc3RhbmQgdGhlIGZsb3cgd2l0aGluIHRoZXNlIGZ1bmN0aW9ucyBhbmQgaG93IHRoZXkgcmVsYXRlIHRvIHRoZSBCUEYgcHJvZ3JhbSBsb2FkaW5nIHByb2Nlc3MuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjc1NDQsIk91dHB1dFRva2VucyI6MzQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMTE4LCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMTBUMTY6MTY6MDkuNDY5ODc3ODg1WiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEwODM0MzE3MiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjaGVja19rZnVuY19jYWxsXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImtlcm5lbC9icGYvdmVyaWZpZXIuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJrZXJuZWwvYnBmL3ZlcmlmaWVyLmM9MTM3Njg9c3RhdGljIGludCBjaGVja19yZXR1cm5fY29kZShzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52LCBpbnQgcmVnbm8sIGNvbnN0IGNoYXIgKnJlZ19uYW1lKTtcXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTM3NjktXFxua2VybmVsL2JwZi92ZXJpZmllci5jOjEzNzcwOnN0YXRpYyBpbnQgY2hlY2tfa2Z1bmNfY2FsbChzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52LCBzdHJ1Y3QgYnBmX2luc24gKmluc24sXFxua2VybmVsL2JwZi92ZXJpZmllci5jLTEzNzcxLVxcdFxcdFxcdCAgICBpbnQgKmluc25faWR4X3ApXFxuLS1cXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM9MTgyNTI9c3RhdGljIGludCBkb19jaGVja19pbnNuKHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYsIGJvb2wgKmRvX3ByaW50X3N0YXRlKVxcbi0tXFxua2VybmVsL2JwZi92ZXJpZmllci5jLTE4MzI0LVxcdFxcdFxcdGlmIChpbnNuLVxcdTAwM2VzcmNfcmVnID09IEJQRl9QU0VVRE9fS0ZVTkNfQ0FMTClcXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6MTgzMjU6XFx0XFx0XFx0XFx0cmV0dXJuIGNoZWNrX2tmdW5jX2NhbGwoZW52LCBpbnNuLCBcXHUwMDI2ZW52LVxcdTAwM2VpbnNuX2lkeCk7XFxua2VybmVsL2JwZi92ZXJpZmllci5jLTE4MzI2LVxcdFxcdFxcdHJldHVybiBjaGVja19oZWxwZXJfY2FsbChlbnYsIGluc24sIFxcdTAwMjZlbnYtXFx1MDAzZWluc25faWR4KTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMTBUMTY6MTY6MDkuNTc4MjI0OTI4WiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6NjQzOTA2MTYyNCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHN1bW1hcnksIGFzIHRob3VnaCBJJ20gdGhpbmtpbmcgdGhyb3VnaCB0aGlzIHByb2Nlc3M6XG5cbioqRGl2aW5nIGludG8gdGhlIEJQRiBWZXJpZmllcioqXG5cbkFscmlnaHQsIHRpbWUgdG8gdHJvdWJsZXNob290IHRoaXMgbWVtb3J5IGFjY2VzcyBpc3N1ZS4gSSBrbm93IGl0J3MgcHJvYmFibHkgc29tZXdoZXJlIGRlZXAgd2l0aGluIHRoZSBCUEYgdmVyaWZpZXIuIExldCdzIHN0YXJ0IGJ5IHplcm9pbmcgaW4gb24gYGNoZWNrX21lbV9hY2Nlc3NgLiBUaGF0IGZ1bmN0aW9uIGluIGBrZXJuZWwvYnBmL3ZlcmlmaWVyLmNgIGlzIHRoZSBwcmltZSBzdXNwZWN0IGZvciBoYW5kbGluZyBtZW1vcnkgc2FmZXR5IGNoZWNrcywgd2hpY2ggaXMgZXhhY3RseSB3aGVyZSBJIGV4cGVjdCB0aGUgcm9vdCBjYXVzZSB0byBiZS4gTGV0IG1lIGdyYWIgdGhlIHNvdXJjZSBhbmQgZ2V0IHRvIGl0LlxuXG5cbiIsIklucHV0VG9rZW5zIjo5NjAwLCJPdXRwdXRUb2tlbnMiOjMzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjIsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMTBUMTY6MTY6MTYuMDE3Mjg4NDkyWiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjcxMDg5MDk3NiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjaGVja19tZW1fYWNjZXNzXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImtlcm5lbC9icGYvdmVyaWZpZXIuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJrZXJuZWwvYnBmL3ZlcmlmaWVyLmM9NTg9c3RhdGljIGJvb2wgYnBmX2dsb2JhbF9wZXJjcHVfbWFfc2V0O1xcbi0tXFxua2VybmVsL2JwZi92ZXJpZmllci5jLTEwNS0gKiBjYW4gYmU6IFBUUl9UT19NQVBfVkFMVUUsIFBUUl9UT19DVFgsIFBUUl9UT19TVEFDSywgUFRSX1RPX1NPQ0tFVC4gVGhlc2UgYXJlXFxua2VybmVsL2JwZi92ZXJpZmllci5jOjEwNjogKiBmb3VyIHBvaW50ZXIgdHlwZXMgcmVjb2duaXplZCBieSBjaGVja19tZW1fYWNjZXNzKCkgZnVuY3Rpb24uXFxua2VybmVsL2JwZi92ZXJpZmllci5jLTEwNy0gKlxcbi0tXFxua2VybmVsL2JwZi92ZXJpZmllci5jPTg0NT1zdGF0aWMgYm9vbCBpc19keW5wdHJfcmVnX3ZhbGlkX3VuaW5pdChzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52LCBzdHJ1Y3QgYnBmX3JlZ19zdGF0ZSAqcmVnKVxcbi0tXFxua2VybmVsL2JwZi92ZXJpZmllci5jLTg1NS1cXHQgKiBlcnJvciBiZWNhdXNlIHRoaXMganVzdCBtZWFucyB0aGUgc3RhY2sgc3RhdGUgaGFzbid0IGJlZW4gdXBkYXRlZCB5ZXQuXFxua2VybmVsL2JwZi92ZXJpZmllci5jOjg1NjpcXHQgKiBXZSB3aWxsIGRvIGNoZWNrX21lbV9hY2Nlc3MgdG8gY2hlY2sgYW5kIHVwZGF0ZSBzdGFjayBib3VuZHMgbGF0ZXIuXFxua2VybmVsL2JwZi92ZXJpZmllci5jLTg1Ny1cXHQgKi9cXG4tLVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYz0xMDA0PXN0YXRpYyBib29sIGlzX2l0ZXJfcmVnX3ZhbGlkX3VuaW5pdChzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52LFxcbi0tXFxua2VybmVsL2JwZi92ZXJpZmllci5jLTEwMTAtXFx0LyogRm9yIC1FUkFOR0UgKGkuZS4gc3BpIG5vdCBmYWxsaW5nIGludG8gYWxsb2NhdGVkIHN0YWNrIHNsb3RzKSwgd2VcXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6MTAxMTpcXHQgKiB3aWxsIGRvIGNoZWNrX21lbV9hY2Nlc3MgdG8gY2hlY2sgYW5kIHVwZGF0ZSBzdGFjayBib3VuZHMgbGF0ZXIsIHNvXFxua2VybmVsL2JwZi92ZXJpZmllci5jLTEwMTItXFx0ICogcmV0dXJuIHRydWUgZm9yIHRoYXQgY2FzZS5cXG4tLVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYz0xMTY0PXN0YXRpYyBib29sIGlzX2lycV9mbGFnX3JlZ192YWxpZF91bmluaXQoc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudiwgc3RydWN0IGJwZl9yZWdfc3RhdGUgKnJlZylcXG4tLVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xMTcwLVxcdC8qIEZvciAtRVJBTkdFIChpLmUuIHNwaSBub3QgZmFsbGluZyBpbnRvIGFsbG9jYXRlZCBzdGFjayBzbG90cyksIHdlXFxua2VybmVsL2JwZi92ZXJpZmllci5jOjExNzE6XFx0ICogd2lsbCBkbyBjaGVja19tZW1fYWNjZXNzIHRvIGNoZWNrIGFuZCB1cGRhdGUgc3RhY2sgYm91bmRzIGxhdGVyLCBzb1xcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xMTcyLVxcdCAqIHJldHVybiB0cnVlIGZvciB0aGF0IGNhc2UuXFxuLS1cXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM9MzUwMT1zdGF0aWMgdm9pZCBzY3J1Yl9zcGVjaWFsX3Nsb3Qoc3RydWN0IGJwZl9mdW5jX3N0YXRlICpzdGF0ZSwgaW50IHNwaSlcXG4tLVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0zNTEzLS8qIGNoZWNrX3N0YWNrX3tyZWFkLHdyaXRlfV9maXhlZF9vZmYgZnVuY3Rpb25zIHRyYWNrIHNwaWxsL2ZpbGwgb2YgcmVnaXN0ZXJzLFxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYzozNTE0OiAqIHN0YWNrIGJvdW5kYXJ5IGFuZCBhbGlnbm1lbnQgYXJlIGNoZWNrZWQgaW4gY2hlY2tfbWVtX2FjY2VzcygpXFxua2VybmVsL2JwZi92ZXJpZmllci5jLTM1MTUtICovXFxuLS1cXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM9NDI5Mj1zdGF0aWMgaW50IGNoZWNrX21hcF9hY2Nlc3NfdHlwZShzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52LCBzdHJ1Y3QgYnBmX3JlZ19zdGF0ZSAqcmVnLFxcbi0tXFxua2VybmVsL2JwZi92ZXJpZmllci5jLTQzMTMtLyogY2hlY2sgcmVhZC93cml0ZSBpbnRvIG1lbW9yeSByZWdpb24gKGUuZy4sIG1hcCB2YWx1ZSwgcmluZ2J1ZiBzYW1wbGUsIGV0YykgKi9cXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6NDMxNDpzdGF0aWMgaW50IF9fY2hlY2tfbWVtX2FjY2VzcyhzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52LCBzdHJ1Y3QgYnBmX3JlZ19zdGF0ZSAqcmVnLCBhcmdub190IGFyZ25vLFxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy00MzE1LVxcdFxcdFxcdCAgICAgIGludCBvZmYsIGludCBzaXplLCB1MzIgbWVtX3NpemUsXFxuLS1cXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM9NDM1Mj1zdGF0aWMgaW50IGNoZWNrX21lbV9yZWdpb25fYWNjZXNzKHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYsIHN0cnVjdCBicGZfcmVnX3N0YXRlICpyZWcsIGFyZ25vX3QgYXJnbm8sXFxuLS1cXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtNDM4Ni1cXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6NDM4NzpcXHRlcnIgPSBfX2NoZWNrX21lbV9hY2Nlc3MoZW52LCByZWcsIGFyZ25vLCByZWdfc21pbihyZWcpICsgb2ZmLCBzaXplLFxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy00Mzg4LVxcdFxcdFxcdFxcdCBtZW1fc2l6ZSwgemVyb19zaXplX2FsbG93ZWQpO1xcbi0tXFxua2VybmVsL2JwZi92ZXJpZmllci5jLTQ0MTUtXFxua2VybmVsL2JwZi92ZXJpZmllci5jOjQ0MTY6XFx0ZXJyID0gX19jaGVja19tZW1fYWNjZXNzKGVudiwgcmVnLCBhcmdubywgcmVnX3VtYXgocmVnKSArIG9mZiwgc2l6ZSxcXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtNDQxNy1cXHRcXHRcXHRcXHQgbWVtX3NpemUsIHplcm9fc2l6ZV9hbGxvd2VkKTtcXG4tLVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYz00ODYxPXN0YXRpYyBpbnQgY2hlY2tfcGFja2V0X2FjY2VzcyhzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52LCBzdHJ1Y3QgYnBmX3JlZ19zdGF0ZSAqcmVnLCBhcmdub190IGFyZ25vLCBpbnQgb2ZmLFxcbi0tXFxua2VybmVsL2JwZi92ZXJpZmllci5jLTQ4NzQtXFxua2VybmVsL2JwZi92ZXJpZmllci5jOjQ4NzU6XFx0LyogX19jaGVja19tZW1fYWNjZXNzIGhhcyBtYWRlIHN1cmUgXFxcIm9mZiArIHNpemUgLSAxXFxcIiBpcyB3aXRoaW4gdTE2Llxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy00ODc2LVxcdCAqIHJlZ191bWF4KHJlZykgY2FuJ3QgYmUgYmlnZ2VyIHRoYW4gTUFYX1BBQ0tFVF9PRkYgd2hpY2ggaXMgMHhmZmZmLFxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy00ODc3LVxcdCAqIG90aGVyd2lzZSBmaW5kX2dvb2RfcGt0X3BvaW50ZXJzIHdvdWxkIGhhdmUgcmVmdXNlZCB0byBzZXQgcmFuZ2UgaW5mb1xcbmtlcm5lbC9icGYvdmVyaWZpZXIuYzo0ODc4OlxcdCAqIHRoYXQgX19jaGVja19tZW1fYWNjZXNzIHdvdWxkIGhhdmUgcmVqZWN0ZWQgdGhpcyBwa3QgYWNjZXNzLlxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy00ODc5LVxcdCAqIFRoZXJlZm9yZSwgXFxcIm9mZiArIHJlZ191bWF4KHJlZykgKyBzaXplIC0gMVxcXCIgd29uJ3Qgb3ZlcmZsb3cgdTMyLlxcbi0tXFxua2VybmVsL2JwZi92ZXJpZmllci5jPTYzMzA9c3RhdGljIGludCBjaGVja19tYXBfbWVtX3JlYWQoc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudiwgc3RydWN0IGJwZl9yZWdfc3RhdGUgKnJlZywgaW50IG9mZixcXG4tLVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy02MzgwLSAqL1xcbmtlcm5lbC9icGYvdmVyaWZpZXIuYzo2MzgxOnN0YXRpYyBpbnQgY2hlY2tfbWVtX2FjY2VzcyhzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52LCBpbnQgaW5zbl9pZHgsIHN0cnVjdCBicGZfcmVnX3N0YXRlICpyZWcsIGFyZ25vX3QgYXJnbm8sXFxua2VybmVsL2JwZi92ZXJpZmllci5jLTYzODItXFx0XFx0XFx0ICAgIGludCBvZmYsIGludCBicGZfc2l6ZSwgZW51bSBicGZfYWNjZXNzX3R5cGUgdCxcXG4tLVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYz02NjQwPXN0YXRpYyBpbnQgY2hlY2tfbG9hZF9tZW0oc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudiwgc3RydWN0IGJwZl9pbnNuICppbnNuLFxcbi0tXFxua2VybmVsL2JwZi92ZXJpZmllci5jLTY2NzQtXFx0YnBmX2RpYWdfbW9kX2JlZ2luKGVudiwgXFx1MDAyNnJlZ3NbaW5zbi1cXHUwMDNlZHN0X3JlZ10sIE5VTEwsIEJQRl9ESUFHX01PRF9XUklURSk7XFxua2VybmVsL2JwZi92ZXJpZmllci5jOjY2NzU6XFx0ZXJyID0gY2hlY2tfbWVtX2FjY2VzcyhlbnYsIGVudi1cXHUwMDNlaW5zbl9pZHgsIHJlZ3MgKyBpbnNuLVxcdTAwM2VzcmNfcmVnLCBhcmdub19mcm9tX3JlZyhpbnNuLVxcdTAwM2VzcmNfcmVnKSwgaW5zbi1cXHUwMDNlb2ZmLFxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy02Njc2LVxcdFxcdFxcdCAgICAgICBCUEZfU0laRShpbnNuLVxcdTAwM2Vjb2RlKSwgQlBGX1JFQUQsIGluc24tXFx1MDAzZWRzdF9yZWcsXFxuLS1cXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM9NjY4Nz1zdGF0aWMgaW50IGNoZWNrX3N0b3JlX3JlZyhzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52LCBzdHJ1Y3QgYnBmX2luc24gKmluc24sXFxuLS1cXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtNjcxNi1cXHQvKiBDaGVjayBpZiAoZHN0X3JlZyArIG9mZikgaXMgd3JpdGVhYmxlLiAqL1xcbmtlcm5lbC9icGYvdmVyaWZpZXIuYzo2NzE3OlxcdGVyciA9IGNoZWNrX21lbV9hY2Nlc3MoZW52LCBlbnYtXFx1MDAzZWluc25faWR4LCByZWdzICsgaW5zbi1cXHUwMDNlZHN0X3JlZywgYXJnbm9fZnJvbV9yZWcoaW5zbi1cXHUwMDNlZHN0X3JlZyksIGluc24tXFx1MDAzZW9mZixcXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtNjcxOC1cXHRcXHRcXHQgICAgICAgQlBGX1NJWkUoaW5zbi1cXHUwMDNlY29kZSksIEJQRl9XUklURSwgaW5zbi1cXHUwMDNlc3JjX3JlZyxcXG4tLVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYz02NzI1PXN0YXRpYyBpbnQgY2hlY2tfYXRvbWljX3JtdyhzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52LFxcbi0tXFxua2VybmVsL2JwZi92ZXJpZmllci5jLTY3ODUtXFx0ICovXFxua2VybmVsL2JwZi92ZXJpZmllci5jOjY3ODY6XFx0ZXJyID0gY2hlY2tfbWVtX2FjY2VzcyhlbnYsIGVudi1cXHUwMDNlaW5zbl9pZHgsIGRzdF9yZWcsIGFyZ25vX2Zyb21fcmVnKGluc24tXFx1MDAzZWRzdF9yZWcpLCBpbnNuLVxcdTAwM2VvZmYsXFxua2VybmVsL2JwZi92ZXJpZmllci5jLTY3ODctXFx0XFx0XFx0ICAgICAgIEJQRl9TSVpFKGluc24tXFx1MDAzZWNvZGUpLCBCUEZfUkVBRCwgLTEsIHRydWUsIGZhbHNlKTtcXG4tLVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy02Nzg5LVxcdFxcdGJwZl9kaWFnX21vZF9iZWdpbihlbnYsIGN1cl9yZWdzKGVudikgKyBsb2FkX3JlZywgTlVMTCwgQlBGX0RJQUdfTU9EX1dSSVRFKTtcXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6Njc5MDpcXHRcXHRlcnIgPSBjaGVja19tZW1fYWNjZXNzKGVudiwgZW52LVxcdTAwM2VpbnNuX2lkeCwgZHN0X3JlZywgYXJnbm9fZnJvbV9yZWcoaW5zbi1cXHUwMDNlZHN0X3JlZyksXFxua2VybmVsL2JwZi92ZXJpZmllci5jLTY3OTEtXFx0XFx0XFx0XFx0ICAgICAgIGluc24tXFx1MDAzZW9mZiwgQlBGX1NJWkUoaW5zbi1cXHUwMDNlY29kZSksXFxuLS1cXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtNjgwMi1cXHQvKiBDaGVjayB3aGV0aGVyIHdlIGNhbiB3cml0ZSBpbnRvIHRoZSBzYW1lIG1lbW9yeS4gKi9cXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6NjgwMzpcXHRlcnIgPSBjaGVja19tZW1fYWNjZXNzKGVudiwgZW52LVxcdTAwM2VpbnNuX2lkeCwgZHN0X3JlZywgYXJnbm9fZnJvbV9yZWcoaW5zbi1cXHUwMDNlZHN0X3JlZyksIGluc24tXFx1MDAzZW9mZixcXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtNjgwNC1cXHRcXHRcXHQgICAgICAgQlBGX1NJWkUoaW5zbi1cXHUwMDNlY29kZSksIEJQRl9XUklURSwgLTEsIHRydWUsIGZhbHNlKTtcXG4tLVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYz03NjA1PXN0YXRpYyBpbnQgcHJvY2Vzc19keW5wdHJfZnVuYyhzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52LCBzdHJ1Y3QgYnBmX3JlZ19zdGF0ZSAqcmVnLFxcbi0tXFxua2VybmVsL2JwZi92ZXJpZmllci5jLTc2NTEtXFx0XFx0Zm9yIChpID0gMDsgaSBcXHUwMDNjIEJQRl9EWU5QVFJfU0laRTsgaSArPSA4KSB7XFxua2VybmVsL2JwZi92ZXJpZmllci5jOjc2NTI6XFx0XFx0XFx0ZXJyID0gY2hlY2tfbWVtX2FjY2VzcyhlbnYsIGluc25faWR4LCByZWcsIGFyZ25vLFxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy03NjUzLVxcdFxcdFxcdFxcdFxcdCAgICAgICBpLCBCUEZfRFcsIEJQRl9XUklURSwgLTEsIGZhbHNlLCBmYWxzZSk7XFxuLS1cXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM9Nzc0ND1zdGF0aWMgaW50IHByb2Nlc3NfaXRlcl9hcmcoc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudiwgc3RydWN0IGJwZl9yZWdfc3RhdGUgKnJlZywgYXJnbm9fdCBhcmdubywgaW50IGluc25faWR4LFxcbi0tXFxua2VybmVsL2JwZi92ZXJpZmllci5jLTc3OTQtXFx0XFx0Zm9yIChpID0gMDsgaSBcXHUwMDNjIG5yX3Nsb3RzICogODsgaSArPSBCUEZfUkVHX1NJWkUpIHtcXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6Nzc5NTpcXHRcXHRcXHRlcnIgPSBjaGVja19tZW1fYWNjZXNzKGVudiwgaW5zbl9pZHgsIHJlZywgYXJnbm8sXFxua2VybmVsL2JwZi92ZXJpZmllci5jLTc3OTYtXFx0XFx0XFx0XFx0XFx0ICAgICAgIGksIEJQRl9EVywgQlBGX1dSSVRFLCAtMSwgZmFsc2UsIGZhbHNlKTtcXG4tLVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYz0xMDgyMz1zdGF0aWMgaW50IGNoZWNrX2hlbHBlcl9jYWxsKHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYsIHN0cnVjdCBicGZfaW5zbiAqaW5zbixcXG4tLVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xMDkyOC1cXHRmb3IgKGkgPSAwOyBpIFxcdTAwM2MgbWV0YS5hcmdfcmF3X21lbS5zaXplOyBpKyspIHtcXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6MTA5Mjk6XFx0XFx0ZXJyID0gY2hlY2tfbWVtX2FjY2VzcyhlbnYsIGluc25faWR4LCByZWdzICsgbWV0YS5hcmdfcmF3X21lbS5yZWdubyxcXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTA5MzAtXFx0XFx0XFx0XFx0ICAgICAgIGFyZ25vX2Zyb21fcmVnKG1ldGEuYXJnX3Jhd19tZW0ucmVnbm8pLCBpLCBCUEZfQixcXG4tLVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xMTE4My1cXHRcXHRcXHRcXHQgKiBpdCB3aWxsIGNvbmZ1c2UgdGhlIGNoZWNrIG9mIFBUUl9UT19CVEZfSUQgaW5cXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6MTExODQ6XFx0XFx0XFx0XFx0ICogY2hlY2tfbWVtX2FjY2VzcygpLlxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xMTE4NS1cXHRcXHRcXHRcXHQgKi9cXG4tLVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYz0xMjE4NT1zdGF0aWMgaW50IHByb2Nlc3NfaXJxX2ZsYWcoc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudiwgc3RydWN0IGJwZl9yZWdfc3RhdGUgKnJlZywgYXJnbm9fdCBhcmdubyxcXG4tLVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xMjIxOC1cXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6MTIyMTk6XFx0XFx0ZXJyID0gY2hlY2tfbWVtX2FjY2VzcyhlbnYsIGVudi1cXHUwMDNlaW5zbl9pZHgsIHJlZywgYXJnbm8sIDAsIEJQRl9EVyxcXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTIyMjAtXFx0XFx0XFx0XFx0ICAgICAgIEJQRl9XUklURSwgLTEsIGZhbHNlLCBmYWxzZSk7XFxuLS1cXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM9MTgyNTI9c3RhdGljIGludCBkb19jaGVja19pbnNuKHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYsIGJvb2wgKmRvX3ByaW50X3N0YXRlKVxcbi0tXFxua2VybmVsL2JwZi92ZXJpZmllci5jLTE4Mjg5LVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYzoxODI5MDpcXHRcXHRlcnIgPSBjaGVja19tZW1fYWNjZXNzKGVudiwgZW52LVxcdTAwM2VpbnNuX2lkeCwgY3VyX3JlZ3MoZW52KSArIGluc24tXFx1MDAzZWRzdF9yZWcsIGFyZ25vX2Zyb21fcmVnKGluc24tXFx1MDAzZWRzdF9yZWcpLFxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xODI5MS1cXHRcXHRcXHRcXHQgICAgICAgaW5zbi1cXHUwMDNlb2ZmLCBCUEZfU0laRShpbnNuLVxcdTAwM2Vjb2RlKSxcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMTBUMTY6MTY6MTYuNzI4MTg2NjI4WiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6MzI0MTI0MjAyNywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHN1bW1hcnksIHRha2luZyBvbiB0aGUgcGVyc29uYSB5b3UndmUgZGVzY3JpYmVkOlxuXG4qKkJQRiBWZXJpZmllciBcdTAwMjYgS2Z1bmMgQ29uZmlndXJhdGlvbiBDaGVjayoqXG5cbkFscmlnaHQsIHRpbWUgdG8gZ2V0IHRoaXMgc29ydGVkLiBGaXJzdCwgSSBuZWVkIHRvIG1ha2UgYWJzb2x1dGVseSBjZXJ0YWluIHRoYXQgdGhlIEJQRiB2ZXJpZmllciBhbmQga2Z1bmNzIGFyZSBjb25maWd1cmVkIGNvcnJlY3RseS4gSSdsbCBuZWVkIHRvIGRvdWJsZS1jaGVjayB0aGVpciBLY29uZmlnIHJlcXVpcmVtZW50cyDigJMgeW91IGtub3csIG1ha2Ugc3VyZSBhbGwgdGhlIGRlcGVuZGVuY2llcyBhcmUgc2F0aXNmaWVkIGFuZCB0aGF0IGV2ZXJ5dGhpbmcgaXMgc2V0IHVwIGZvciB0aGUgYnVpbGQuIEl0J3MgZWFzeSB0byBtaXNzIGEgY3J1Y2lhbCBsaXR0bGUgZmxhZyBhbmQgdGhlbiBzcGVuZCBhZ2VzIGRlYnVnZ2luZyBsYXRlci5cblxuVG8gZG8gdGhpcyBlZmZpY2llbnRseSwgSSdsbCBnbyBkaXJlY3RseSB0byB0aGUgc291cmNlLiBMZXQncyBzdGFydCB3aXRoIGBrZXJuZWwvYnBmL01ha2VmaWxlYCBhbmQgYGtlcm5lbC9icGYvS2NvbmZpZ2AuIFRoZXNlIGFyZSB0aGUgY3J1Y2lhbCBmaWxlcyB0aGF0IGNvbnRyb2wgdGhlIGJ1aWxkIHByb2Nlc3MgYW5kIGRlZmluZSB0aGUgY29uZmlndXJhdGlvbiBvcHRpb25zLiBDaGVja2luZyB0aGVzZSBmaWxlcyBzaG91bGQgZ2l2ZSBtZSBhIGNsZWFyIHBpY3R1cmUgb2Ygd2hhdCdzIGVuYWJsZWQsIHdoYXQncyBkaXNhYmxlZCwgYW5kIGFueSBzcGVjaWZpYyBkZXBlbmRlbmNpZXMgdGhlIEJQRiB2ZXJpZmllciBvciBrZnVuY3MgaGF2ZS4gVGhpcyBpcyBzdGFuZGFyZCBwcm9jZWR1cmUsIGJ1dCBpdCBuZXZlciBodXJ0cyB0byBiZSB0aG9yb3VnaCwgZXNwZWNpYWxseSB3aGVuIGRlYWxpbmcgd2l0aCBzdWNoIGNvcmUgZnVuY3Rpb25hbGl0eS5cblxuXG4iLCJJbnB1dFRva2VucyI6MTI5MjIsIk91dHB1dFRva2VucyI6MjcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0MCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0xMFQxNjoxNjoxOS45Njk0MzA4MzVaIiwiU2VxIjo4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTg2NDA3NjEsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwidmVyaWZpZXIub1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJrZXJuZWwvYnBmXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImtlcm5lbC9icGYvTWFrZWZpbGU9Nz1DRkxBR1NfY29yZS5vICs9IC1Xbm8tb3ZlcnJpZGUtaW5pdCAkKGNmbGFncy1ub2djc2UteXkpXFxua2VybmVsL2JwZi9NYWtlZmlsZS04LVxcbmtlcm5lbC9icGYvTWFrZWZpbGU6OTpvYmotJChDT05GSUdfQlBGX1NZU0NBTEwpICs9IHN5c2NhbGwubyB2ZXJpZmllci5vIGlub2RlLm8gaGVscGVycy5vIHRudW0ubyBjbnVtLm8gbG9nLm8gdG9rZW4ubyBsaXZlbmVzcy5vIGNvbnN0X2ZvbGQubyBkaWFnbm9zdGljcy5vXFxua2VybmVsL2JwZi9NYWtlZmlsZS0xMC1vYmotJChDT05GSUdfQlBGX1NZU0NBTEwpICs9IGJwZl9pdGVyLm8gbWFwX2l0ZXIubyB0YXNrX2l0ZXIubyBwcm9nX2l0ZXIubyBsaW5rX2l0ZXIub1xcbi0tXFxua2VybmVsL2JwZi9icGZfbHNtLmM9NDEzPWNvbnN0IHN0cnVjdCBicGZfcHJvZ19vcHMgbHNtX3Byb2dfb3BzID0ge1xcbi0tXFxua2VybmVsL2JwZi9icGZfbHNtLmMtNDE1LVxcbmtlcm5lbC9icGYvYnBmX2xzbS5jOjQxNjpjb25zdCBzdHJ1Y3QgYnBmX3ZlcmlmaWVyX29wcyBsc21fdmVyaWZpZXJfb3BzID0ge1xcbmtlcm5lbC9icGYvYnBmX2xzbS5jLTQxNy1cXHQuZ2V0X2Z1bmNfcHJvdG8gPSBicGZfbHNtX2Z1bmNfcHJvdG8sXFxuLS1cXG5rZXJuZWwvYnBmL2JwZl9zdHJ1Y3Rfb3BzLmM9NjQ9c3RhdGljIERFRklORV9NVVRFWCh1cGRhdGVfbXV0ZXgpO1xcbi0tXFxua2VybmVsL2JwZi9icGZfc3RydWN0X29wcy5jLTY4LVxcbmtlcm5lbC9icGYvYnBmX3N0cnVjdF9vcHMuYzo2OTpjb25zdCBzdHJ1Y3QgYnBmX3ZlcmlmaWVyX29wcyBicGZfc3RydWN0X29wc192ZXJpZmllcl9vcHMgPSB7XFxua2VybmVsL2JwZi9icGZfc3RydWN0X29wcy5jLTcwLX07XFxuLS1cXG5rZXJuZWwvYnBmL2J0Zi5jPTU5NjQ9c3RhdGljIHN0cnVjdCBidGYgKmJ0Zl9wYXJzZShjb25zdCB1bmlvbiBicGZfYXR0ciAqYXR0ciwgYnBmcHRyX3QgdWF0dHIsXFxuLS1cXG5rZXJuZWwvYnBmL2J0Zi5jLTU5ODAtXFxua2VybmVsL2JwZi9idGYuYzo1OTgxOlxcdC8qIHVzZXIgY291bGQgaGF2ZSByZXF1ZXN0ZWQgdmVyYm9zZSB2ZXJpZmllciBvdXRwdXRcXG5rZXJuZWwvYnBmL2J0Zi5jLTU5ODItXFx0ICogYW5kIHN1cHBsaWVkIGJ1ZmZlciB0byBzdG9yZSB0aGUgdmVyaWZpY2F0aW9uIHRyYWNlXFxuLS1cXG5rZXJuZWwvYnBmL2Nncm91cC5jPTE5MjM9Y29uc3Qgc3RydWN0IGJwZl9wcm9nX29wcyBjZ19kZXZfcHJvZ19vcHMgPSB7XFxuLS1cXG5rZXJuZWwvYnBmL2Nncm91cC5jLTE5MjUtXFxua2VybmVsL2JwZi9jZ3JvdXAuYzoxOTI2OmNvbnN0IHN0cnVjdCBicGZfdmVyaWZpZXJfb3BzIGNnX2Rldl92ZXJpZmllcl9vcHMgPSB7XFxua2VybmVsL2JwZi9jZ3JvdXAuYy0xOTI3LVxcdC5nZXRfZnVuY19wcm90b1xcdFxcdD0gY2dyb3VwX2Rldl9mdW5jX3Byb3RvLFxcbi0tXFxua2VybmVsL2JwZi9jZ3JvdXAuYz0yNDc4PXN0YXRpYyB1MzIgc3lzY3RsX2NvbnZlcnRfY3R4X2FjY2VzcyhlbnVtIGJwZl9hY2Nlc3NfdHlwZSB0eXBlLFxcbi0tXFxua2VybmVsL2JwZi9jZ3JvdXAuYy0yNTQxLVxcbmtlcm5lbC9icGYvY2dyb3VwLmM6MjU0Mjpjb25zdCBzdHJ1Y3QgYnBmX3ZlcmlmaWVyX29wcyBjZ19zeXNjdGxfdmVyaWZpZXJfb3BzID0ge1xcbmtlcm5lbC9icGYvY2dyb3VwLmMtMjU0My1cXHQuZ2V0X2Z1bmNfcHJvdG9cXHRcXHQ9IHN5c2N0bF9mdW5jX3Byb3RvLFxcbi0tXFxua2VybmVsL2JwZi9jZ3JvdXAuYz0yNzU2PXN0YXRpYyBpbnQgY2dfc29ja29wdF9nZXRfcHJvbG9ndWUoc3RydWN0IGJwZl9pbnNuICppbnNuX2J1ZixcXG4tLVxcbmtlcm5lbC9icGYvY2dyb3VwLmMtMjc2NC1cXG5rZXJuZWwvYnBmL2Nncm91cC5jOjI3NjU6Y29uc3Qgc3RydWN0IGJwZl92ZXJpZmllcl9vcHMgY2dfc29ja29wdF92ZXJpZmllcl9vcHMgPSB7XFxua2VybmVsL2JwZi9jZ3JvdXAuYy0yNzY2LVxcdC5nZXRfZnVuY19wcm90b1xcdFxcdD0gY2dfc29ja29wdF9mdW5jX3Byb3RvLFxcbi0tXFxua2VybmVsL2JwZi9maXh1cHMuYz03NDY9aW50IGJwZl9jb252ZXJ0X2N0eF9hY2Nlc3NlcyhzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52KVxcbi0tXFxua2VybmVsL2JwZi9maXh1cHMuYy03NDgtXFx0c3RydWN0IGJwZl9zdWJwcm9nX2luZm8gKnN1YnByb2dzID0gZW52LVxcdTAwM2VzdWJwcm9nX2luZm87XFxua2VybmVsL2JwZi9maXh1cHMuYzo3NDk6XFx0Y29uc3Qgc3RydWN0IGJwZl92ZXJpZmllcl9vcHMgKm9wcyA9IGVudi1cXHUwMDNlb3BzO1xcbmtlcm5lbC9icGYvZml4dXBzLmMtNzUwLVxcdGludCBpLCBjbnQsIHNpemUsIGN0eF9maWVsZF9zaXplLCByZXQsIGRlbHRhID0gMCwgZXBpbG9ndWVfY250ID0gMDtcXG4tLVxcbmtlcm5lbC9icGYvaGVscGVycy5jLTM1LS8qIElmIGtlcm5lbCBzdWJzeXN0ZW0gaXMgYWxsb3dpbmcgZUJQRiBwcm9ncmFtcyB0byBjYWxsIHRoaXMgZnVuY3Rpb24sXFxua2VybmVsL2JwZi9oZWxwZXJzLmM6MzY6ICogaW5zaWRlIGl0cyBvd24gdmVyaWZpZXJfb3BzLVxcdTAwM2VnZXRfZnVuY19wcm90bygpIGNhbGxiYWNrIGl0IHNob3VsZCByZXR1cm5cXG5rZXJuZWwvYnBmL2hlbHBlcnMuYy0zNy0gKiBicGZfbWFwX2xvb2t1cF9lbGVtX3Byb3RvLCBzbyB0aGF0IHZlcmlmaWVyIGNhbiBwcm9wZXJseSBjaGVjayB0aGUgYXJndW1lbnRzXFxuLS1cXG5rZXJuZWwvYnBmL3N5c2NhbGwuYz02NjMwPXN5c2NhbGxfcHJvZ19mdW5jX3Byb3RvKGVudW0gYnBmX2Z1bmNfaWQgZnVuY19pZCwgY29uc3Qgc3RydWN0IGJwZl9wcm9nICpwcm9nKVxcbi0tXFxua2VybmVsL2JwZi9zeXNjYWxsLmMtNjY0Ni1cXG5rZXJuZWwvYnBmL3N5c2NhbGwuYzo2NjQ3OmNvbnN0IHN0cnVjdCBicGZfdmVyaWZpZXJfb3BzIGJwZl9zeXNjYWxsX3ZlcmlmaWVyX29wcyA9IHtcXG5rZXJuZWwvYnBmL3N5c2NhbGwuYy02NjQ4LVxcdC5nZXRfZnVuY19wcm90byAgPSBzeXNjYWxsX3Byb2dfZnVuY19wcm90byxcXG4tLVxcbmtlcm5lbC9icGYvdGFza19pdGVyLmM9OTkyPV9fYnBmX2tmdW5jIHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqYnBmX2l0ZXJfdGFza192bWFfbmV4dChzdHJ1Y3QgYnBmX2l0ZXJfdGFza192bWEgKml0KVxcbi0tXFxua2VybmVsL2JwZi90YXNrX2l0ZXIuYy0xMDEwLVxcdC8qXFxua2VybmVsL2JwZi90YXNrX2l0ZXIuYzoxMDExOlxcdCAqIFRoZSB2ZXJpZmllciBvbmx5IHRydXN0cyB2bV9tbSBhbmQgdm1fZmlsZSAoc2VlXFxua2VybmVsL2JwZi90YXNrX2l0ZXIuYy0xMDEyLVxcdCAqIEJURl9UWVBFX1NBRkVfVFJVU1RFRF9PUl9OVUxMIGluIHZlcmlmaWVyLmMpLiBUYWtlIGEgcmVmZXJlbmNlXFxuLS1cXG5rZXJuZWwvYnBmL3RyYW1wb2xpbmUuYy0xNy0vKiBkdW1teSBfb3BzLiBUaGUgdmVyaWZpZXIgd2lsbCBvcGVyYXRlIG9uIHRhcmdldCBwcm9ncmFtJ3Mgb3BzLiAqL1xcbmtlcm5lbC9icGYvdHJhbXBvbGluZS5jOjE4OmNvbnN0IHN0cnVjdCBicGZfdmVyaWZpZXJfb3BzIGJwZl9leHRlbnNpb25fdmVyaWZpZXJfb3BzID0ge1xcbmtlcm5lbC9icGYvdHJhbXBvbGluZS5jLTE5LX07XFxuLS1cXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMzktXFxua2VybmVsL2JwZi92ZXJpZmllci5jOjQwOnN0YXRpYyBjb25zdCBzdHJ1Y3QgYnBmX3ZlcmlmaWVyX29wcyAqIGNvbnN0IGJwZl92ZXJpZmllcl9vcHNbXSA9IHtcXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtNDEtI2RlZmluZSBCUEZfUFJPR19UWVBFKF9pZCwgX25hbWUsIHByb2dfY3R4X3R5cGUsIGtlcm5fY3R4X3R5cGUpIFxcXFxcXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6NDI6XFx0W19pZF0gPSBcXHUwMDI2IF9uYW1lICMjIF92ZXJpZmllcl9vcHMsXFxua2VybmVsL2JwZi92ZXJpZmllci5jLTQzLSNkZWZpbmUgQlBGX01BUF9UWVBFKF9pZCwgX29wcylcXG4tLVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYz03MjgwPWVudW0ge1xcbi0tXFxua2VybmVsL2JwZi92ZXJpZmllci5jLTcyOTEtICogRm9yIHRyYWRpdGlvbmFsIFBUUl9UT19NQVBfVkFMVUUgb3IgUFRSX1RPX0JURl9JRCB8IE1FTV9BTExPQywgdGhlIHZlcmlmaWVyXFxua2VybmVsL2JwZi92ZXJpZmllci5jOjcyOTI6ICogY2xlYXJzIHJlZy1cXHUwMDNlaWQgYWZ0ZXIgdmFsdWVfb3JfbnVsbC1cXHUwMDNldmFsdWUgdHJhbnNpdGlvbiwgc2luY2UgdGhlIHZlcmlmaWVyIG9ubHlcXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtNzI5My0gKiBjYXJlcyBhYm91dCB0aGUgcmFuZ2Ugb2YgYWNjZXNzIHRvIHZhbGlkIG1hcCB2YWx1ZSBwb2ludGVyIGFuZCBkb2Vzbid0IGNhcmVcXG4tLVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYz0xNDU2NT1zdGF0aWMgaW50IGFkanVzdF9wdHJfbWluX21heF92YWxzKHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYsIHN0cnVjdCBicGZfaW5zbiAqaW5zbixcXG4tLVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xNDczOS1cXHRcXHRcXHRcXHRlbnYsIFxcXCJUaGlzIG9wZXJhdGlvbiBzdWJ0cmFjdHMgcG9pbnRlciByZWdpc3RlciBSJWQgZnJvbSBzY2FsYXIgcmVnaXN0ZXIgUiVkLiBcXFwiXFxua2VybmVsL2JwZi92ZXJpZmllci5jOjE0NzQwOlxcdFxcdFxcdFxcdFxcXCJUaGUgdmVyaWZpZXIgb25seSB0cmFja3MgcG9pbnRlci1taW51cy1zY2FsYXIgYXJpdGhtZXRpYyBmb3IgYWxsb3dlZCBwb2ludGVyIHR5cGVzLlxcXCIsXFxua2VybmVsL2JwZi92ZXJpZmllci5jLTE0NzQxLVxcdFxcdFxcdFxcdHB0cl9yZWdubywgZHN0KTtcXG4tLVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYz0xNzY4Nz1ib29sIGJwZl9nZXRfY2FsbF9zdW1tYXJ5KHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYsIHN0cnVjdCBicGZfaW5zbiAqY2FsbCxcXG4tLVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xNzc1Mi0gKlxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYzoxNzc1MzogKiAtIGlmIHNvLCBhbmQgaWYgdmVyaWZpZXIgb3IgY3VycmVudCBKSVQgaW5saW5lcyB0aGUgY2FsbCB0byB0aGVcXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTc3NTQtICogICBicGZfZmFzdGNhbGwgZnVuY3Rpb24gKGUuZy4gYSBoZWxwZXIgY2FsbCksIGtlcm5lbCByZW1vdmVzIHVubmVjZXNzYXJ5XFxuLS1cXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM9MTk3MzQ9c3RhdGljIGludCBjaGVja19zdHJ1Y3Rfb3BzX2J0Zl9pZChzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52KVxcbi0tXFxua2VybmVsL2JwZi92ZXJpZmllci5jLTE5ODUxLVxcdHByb2ctXFx1MDAzZWF1eC1cXHUwMDNlYXR0YWNoX2Z1bmNfbmFtZSA9IG1uYW1lO1xcbmtlcm5lbC9icGYvdmVyaWZpZXIuYzoxOTg1MjpcXHRlbnYtXFx1MDAzZW9wcyA9IHN0X29wcy1cXHUwMDNldmVyaWZpZXJfb3BzO1xcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xOTg1My1cXG4tLVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYz0yMDQ4NT1zdGF0aWMgaW50IGNoZWNrX2F0dGFjaF9idGZfaWQoc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudilcXG4tLVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0yMDUyNC1cXHRcXHQgKi9cXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6MjA1MjU6XFx0XFx0ZW52LVxcdTAwM2VvcHMgPSBicGZfdmVyaWZpZXJfb3BzW3RndF9wcm9nLVxcdTAwM2V0eXBlXTtcXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMjA1MjYtXFx0XFx0cHJvZy1cXHUwMDNlZXhwZWN0ZWRfYXR0YWNoX3R5cGUgPSB0Z3RfcHJvZy1cXHUwMDNlZXhwZWN0ZWRfYXR0YWNoX3R5cGU7XFxuLS1cXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM9MjExNTc9aW50IGJwZl9jaGVjayhzdHJ1Y3QgYnBmX3Byb2cgKipwcm9nLCB1bmlvbiBicGZfYXR0ciAqYXR0ciwgYnBmcHRyX3QgdWF0dHIsXFxuLS1cXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMjExNjctXFx0Lyogbm8gcHJvZ3JhbSBpcyB2YWxpZCAqL1xcbmtlcm5lbC9icGYvdmVyaWZpZXIuYzoyMTE2ODpcXHRpZiAoQVJSQVlfU0laRShicGZfdmVyaWZpZXJfb3BzKSA9PSAwKVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0yMTE2OS1cXHRcXHRyZXR1cm4gLUVJTlZBTDtcXG4tLVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0yMTE3OS1cXHRlbnYtXFx1MDAzZXByb2cgPSAqcHJvZztcXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6MjExODA6XFx0ZW52LVxcdTAwM2VvcHMgPSBicGZfdmVyaWZpZXJfb3BzW2Vudi1cXHUwMDNlcHJvZy1cXHUwMDNldHlwZV07XFxua2VybmVsL2JwZi92ZXJpZmllci5jLTIxMTgxLVxcbi0tXFxua2VybmVsL2JwZi92ZXJpZmllci5jLTIxMTg4LVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYzoyMTE4OTpcXHQvKiB1c2VyIGNvdWxkIGhhdmUgcmVxdWVzdGVkIHZlcmJvc2UgdmVyaWZpZXIgb3V0cHV0XFxua2VybmVsL2JwZi92ZXJpZmllci5jLTIxMTkwLVxcdCAqIGFuZCBzdXBwbGllZCBidWZmZXIgdG8gc3RvcmUgdGhlIHZlcmlmaWNhdGlvbiB0cmFjZVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0xMFQxNjoxNjoyMC4wMjgwNzU4OTZaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjoxMTY2MzMzMzk3MywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipLZXJuZWwgQ29uZmlndXJhdGlvbiBJbnZlc3RpZ2F0aW9uKipcblxuQWxyaWdodCwgbGV0J3MgZGl2ZSBpbiBhbmQgc2VlIHdoYXQncyBnb2luZyBvbiB3aXRoIHRoZXNlIEJQRiBjb25maWd1cmF0aW9ucy4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRvIGNvbmZpcm0gdGhlIHN0YXR1cyBvZiBgQ09ORklHX0JQRl9TWVNDQUxMYCB3aXRoaW4gdGhlIEtjb25maWcgc3lzdGVtLiBUaGF0IG9uZSdzIHRoZSBsaW5jaHBpbiwgZW5hYmxpbmcgdGhlIGBicGYoKWAgc3lzY2FsbCBhbmQsIGNydWNpYWxseSwgdGhlIEJQRiB2ZXJpZmllci4gQmV5b25kIHRoYXQsIEknbSBhbHNvIHRoaW5raW5nIHdlIHNob3VsZCBkb3VibGUtY2hlY2sgdGhlIHN0YXR1cyBvZiBgQ09ORklHX0JQRl9FVkVOVFNgIGFuZCBgQ09ORklHX0RFQlVHX0lORk9fQlRGYC4gQXJlIHRoZXNlIGVzc2VudGlhbCwgb3IgYXJlIHRoZXkgc3RhbmRhcmQgY29uZmlndXJhdGlvbnMgdGhhdCBtYXkgYmUgZW5hYmxlZCBieSBkZWZhdWx0P1xuXG5JJ2xsIHNwZWNpZmljYWxseSBuZWVkIHRvIGFzY2VydGFpbiB3aGV0aGVyIGBDT05GSUdfQlBGX1NZU0NBTExgIGFuZCBgQ09ORklHX0RFQlVHX0lORk9fQlRGYCBhcmUgbmVjZXNzYXJ5IGRlcGVuZGVuY2llcyBmb3IgdGhpcyB1c2UtY2FzZSwgb3IgaWYgdGhleSdyZSBzdGFuZGFyZCBhbmQgcG90ZW50aWFsbHkgYWxyZWFkeSBpbiB0aGUgZGVzaXJlZCBzdGF0ZS4gSSdsbCBzdGFydCBieSBkb2luZyBhIHF1aWNrIEtjb25maWcgc2VhcmNoIGZvciBgQlBGX1NZU0NBTExgIHRvIGdldCBhbiBvdmVydmlldyBvZiBpdHMgZGVwZW5kZW5jaWVzIGFuZCBpbXBsaWNhdGlvbnMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE1Nzc4LCJPdXRwdXRUb2tlbnMiOjMxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTE2LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTEwVDE2OjE2OjMxLjY5MTQxMzUyOVoiLCJTZXEiOjEwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NzE3NTEwOTA1LCJFcnJvciI6Im5vIG1hdGNoZXMiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgQlBGX1NZU0NBTExcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiaW5pdC9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcImVycm9yXCI6IFwibm8gbWF0Y2hlc1wiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0xMFQxNjoxNjozMi40MDg5MzI1MjRaIiwiU2VxIjoxMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6NjI0NjA1ODUyNiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhlIHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZTpcblxuKipCUEZfU1lTQ0FMTCBMb2NhdGlvbiBRdWVzdCoqXG5cbk9rYXksIHNvIEkgbmVlZCB0byB0cmFjayBkb3duIHRoZSBkZWZpbml0aW9uIG9mIGBCUEZfU1lTQ0FMTGAuIE15IGluaXRpYWwgYXBwcm9hY2ggd291bGQgYmUgdG8gZGl2ZSBpbnRvIHRoZSBrZXJuZWwgc291cmNlLCBwcm9iYWJseSBzdGFydGluZyB3aXRoIHRoZSBoZWFkZXJzIHJlbGF0ZWQgdG8gdGhlIEJQRiBzdWJzeXN0ZW0uIEknZCBhbnRpY2lwYXRlIGl0IGJlaW5nIGRlZmluZWQgaW4gb25lIG9mIHRoZSBjb3JlIEJQRiBoZWFkZXIgZmlsZXMsIHNvbWV0aGluZyBsaWtlIGBsaW51eC9icGYuaGAgb3IgcG90ZW50aWFsbHkgYSBoZWFkZXIgcmVsYXRlZCB0byBzeXN0ZW0gY2FsbCB3cmFwcGVycyBpZiBpdCdzIGludm9sdmVkIGluIHN5c2NhbGwgdHJhY2luZyBvciBpbnRlcmNlcHRpb24uIEdpdmVuIHRoZSBuYW1pbmcsIGl0J3MgaGlnaGx5IGxpa2VseSB0byBiZSBhbiBlbnVtZXJhdGlvbiBvciBtYWNyby4gSSdsbCBuZWVkIHRvIGNoZWNrIGlmIHRoZXJlIGFyZSBwbGF0Zm9ybS1zcGVjaWZpYyB2YXJpYXRpb25zLCBzbyBJIHNob3VsZCBiZSBwcmVwYXJlZCB0byBoYW5kbGUgYCNpZmRlZmAgb3Igc2ltaWxhciBjb25kaXRpb25hbCBjb21waWxhdGlvbiBkaXJlY3RpdmVzIHdpdGhpbiB0aGUgaGVhZGVyIGZpbGVzLiBJIHNob3VsZCBhbHNvIGNvbnNpZGVyIGhvdyB0aGlzIHJlbGF0ZXMgdG8gb3RoZXIgcmVsYXRlZCBjb25zdGFudHMgYW5kIHN0cnVjdHVyZXMsIHN1Y2ggYXMgYGJwZl9wcm9nX3R5cGVgIG9yIGFueSBhc3NvY2lhdGVkIHN5c2NhbGwgbnVtYmVycy4gVGhlIGdvYWwgaXMgdG8gZ2V0IHRoZSBwcmVjaXNlIHZhbHVlIGFuZCB1bmRlcnN0YW5kIHRoZSBjb250ZXh0IHdpdGhpbiB0aGUga2VybmVsJ3MgQlBGIGltcGxlbWVudGF0aW9uLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxNjE1MiwiT3V0cHV0VG9rZW5zIjoyMSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE0LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTEwVDE2OjE2OjM4LjY1NDk5MzQ2WiIsIlNlcSI6MTIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNjE3OTE5MjMwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBCUEZfU1lTQ0FMTFwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJrZXJuZWwvYnBmL0tjb25maWc9MjU9bWVudSBcXFwiQlBGIHN1YnN5c3RlbVxcXCJcXG5rZXJuZWwvYnBmL0tjb25maWctMjYtXFxua2VybmVsL2JwZi9LY29uZmlnOjI3OmNvbmZpZyBCUEZfU1lTQ0FMTFxcbmtlcm5lbC9icGYvS2NvbmZpZy0yOC1cXHRib29sIFxcXCJFbmFibGUgYnBmKCkgc3lzdGVtIGNhbGxcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTEwVDE2OjE2OjQwLjI3MjkxNzU5WiIsIlNlcSI6MTMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjIxNzkwMzg4NjAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6XG5cbioqRXhhbWluaW5nIEJQRiBLY29uZmlnIENvbmZpZ3VyYXRpb24qKlxuXG5Pa2F5LCBJIG5lZWQgdG8gZGl2ZSBpbnRvIHRoZSBrZXJuZWwncyBCUEYgY29uZmlndXJhdGlvbi4gTXkgaW5pdGlhbCBpbnN0aW5jdCBpcyB0byBnbyBzdHJhaWdodCB0byBga2VybmVsL2JwZi9LY29uZmlnYCwgc3BlY2lmaWNhbGx5IGFyb3VuZCBsaW5lIDI3LiBJJ20gcHJvYmFibHkgbG9va2luZyBmb3IgdGhlIGNvcmUgQlBGIGZlYXR1cmUgZW5hYmxlbWVudCBmbGFnLCBvciBtYXliZSBJJ20gdHJ5aW5nIHRvIHJlY2FsbCBhIHJlbGF0ZWQgb3B0aW9uIHRoYXQgSSB3YW50IHRvIGRvdWJsZS1jaGVjay4gQ291bGQgYmUgYW4gZXhwZXJpbWVudGFsIGZlYXR1cmUgZmxhZywgb3Igc29tZXRoaW5nIHRpZWQgdG8gYSBzcGVjaWZpYyBCUEYgaGVscGVyIHZlcnNpb24uIEkgc3VzcGVjdCBsaW5lIDI3IHdpbGwgbGlrZWx5IGxlYWQgbWUgdG8gdGhlIG1haW4gZW50cnkgcG9pbnQgb3IgYSBjcnVjaWFsIGRlcGVuZGVuY3kgaW4gdGhhdCBLY29uZmlnIGZpbGUuIEkgYW0gaG9waW5nIHRvIGdldCB0byB0aGUgcm9vdCBjYXVzZSBvZiBhbiBpc3N1ZSBJJ20gd29ya2luZyB0aHJvdWdoLiBJJ20gZXhwZWN0aW5nIHRoaXMgdG8gcHJvdmlkZSB0aGUgYmFzZSBjb25maWd1cmF0aW9uIHRoYXQgYWxsIGZ1cnRoZXIgY29uZmlndXJhdGlvbiBpcyByZWxpYW50IG9uLiBUaW1lIHRvIHNlZSB3aGF0J3MgdGhlcmUgYW5kIHJlZnJlc2ggbXkgbWVtb3J5IG9uIHRoZSBidWlsZCBvcHRpb25zLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxNjQ5MSwiT3V0cHV0VG9rZW5zIjozNCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE5LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTEwVDE2OjE2OjQyLjQ1MTk1OTcyWiIsIlNlcSI6MTQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjYxNjUwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImtlcm5lbC9icGYvS2NvbmZpZ1wiLFxuICBcIkZpcnN0TGluZVwiOiAyNSxcbiAgXCJMaW5lQ291bnRcIjogNDBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiICAyNTpcXHRtZW51IFxcXCJCUEYgc3Vic3lzdGVtXFxcIlxcbiAgMjY6XFx0XFxuICAyNzpcXHRjb25maWcgQlBGX1NZU0NBTExcXG4gIDI4OlxcdFxcdGJvb2wgXFxcIkVuYWJsZSBicGYoKSBzeXN0ZW0gY2FsbFxcXCJcXG4gIDI5OlxcdFxcdHNlbGVjdCBCUEZcXG4gIDMwOlxcdFxcdHNlbGVjdCBJUlFfV09SS1xcbiAgMzE6XFx0XFx0c2VsZWN0IE5FRURfVEFTS1NfUkNVXFxuICAzMjpcXHRcXHRzZWxlY3QgVEFTS1NfVFJBQ0VfUkNVXFxuICAzMzpcXHRcXHRzZWxlY3QgQklOQVJZX1BSSU5URlxcbiAgMzQ6XFx0XFx0c2VsZWN0IE5FVF9TT0NLX01TRyBpZiBORVRcXG4gIDM1OlxcdFxcdHNlbGVjdCBORVRfWEdSRVNTIGlmIE5FVFxcbiAgMzY6XFx0XFx0c2VsZWN0IFBBR0VfUE9PTCBpZiBORVRcXG4gIDM3OlxcdFxcdGRlZmF1bHQgblxcbiAgMzg6XFx0XFx0aGVscFxcbiAgMzk6XFx0XFx0ICBFbmFibGUgdGhlIGJwZigpIHN5c3RlbSBjYWxsIHRoYXQgYWxsb3dzIHRvIG1hbmlwdWxhdGUgQlBGIHByb2dyYW1zXFxuICA0MDpcXHRcXHQgIGFuZCBtYXBzIHZpYSBmaWxlIGRlc2NyaXB0b3JzLlxcbiAgNDE6XFx0XFxuICA0MjpcXHRjb25maWcgQlBGX0pJVFxcbiAgNDM6XFx0XFx0Ym9vbCBcXFwiRW5hYmxlIEJQRiBKdXN0IEluIFRpbWUgY29tcGlsZXJcXFwiXFxuICA0NDpcXHRcXHRkZXBlbmRzIG9uIEJQRlxcbiAgNDU6XFx0XFx0ZGVwZW5kcyBvbiBIQVZFX0NCUEZfSklUIHx8IEhBVkVfRUJQRl9KSVRcXG4gIDQ2OlxcdFxcdHNlbGVjdCBFWEVDTUVNXFxuICA0NzpcXHRcXHRoZWxwXFxuICA0ODpcXHRcXHQgIEJQRiBwcm9ncmFtcyBhcmUgbm9ybWFsbHkgaGFuZGxlZCBieSBhIEJQRiBpbnRlcnByZXRlci4gVGhpcyBvcHRpb25cXG4gIDQ5OlxcdFxcdCAgYWxsb3dzIHRoZSBrZXJuZWwgdG8gZ2VuZXJhdGUgbmF0aXZlIGNvZGUgd2hlbiBhIHByb2dyYW0gaXMgbG9hZGVkXFxuICA1MDpcXHRcXHQgIGludG8gdGhlIGtlcm5lbC4gVGhpcyB3aWxsIHNpZ25pZmljYW50bHkgc3BlZWQtdXAgcHJvY2Vzc2luZyBvZiBCUEZcXG4gIDUxOlxcdFxcdCAgcHJvZ3JhbXMuXFxuICA1MjpcXHRcXG4gIDUzOlxcdFxcdCAgTm90ZSwgYW4gYWRtaW4gc2hvdWxkIGVuYWJsZSB0aGlzIGZlYXR1cmUgY2hhbmdpbmc6XFxuICA1NDpcXHRcXHQgIC9wcm9jL3N5cy9uZXQvY29yZS9icGZfaml0X2VuYWJsZVxcbiAgNTU6XFx0XFx0ICAvcHJvYy9zeXMvbmV0L2NvcmUvYnBmX2ppdF9oYXJkZW4gICAob3B0aW9uYWwpXFxuICA1NjpcXHRcXHQgIC9wcm9jL3N5cy9uZXQvY29yZS9icGZfaml0X2thbGxzeW1zIChvcHRpb25hbClcXG4gIDU3OlxcdFxcbiAgNTg6XFx0Y29uZmlnIEJQRl9KSVRfQUxXQVlTX09OXFxuICA1OTpcXHRcXHRib29sIFxcXCJQZXJtYW5lbnRseSBlbmFibGUgQlBGIEpJVCBhbmQgcmVtb3ZlIEJQRiBpbnRlcnByZXRlclxcXCJcXG4gIDYwOlxcdFxcdGRlcGVuZHMgb24gQlBGX1NZU0NBTEwgXFx1MDAyNlxcdTAwMjYgSEFWRV9FQlBGX0pJVCBcXHUwMDI2XFx1MDAyNiBCUEZfSklUXFxuICA2MTpcXHRcXHRoZWxwXFxuICA2MjpcXHRcXHQgIEVuYWJsZXMgQlBGIEpJVCBhbmQgcmVtb3ZlcyBCUEYgaW50ZXJwcmV0ZXIgdG8gYXZvaWQgc3BlY3VsYXRpdmVcXG4gIDYzOlxcdFxcdCAgZXhlY3V0aW9uIG9mIEJQRiBpbnN0cnVjdGlvbnMgYnkgdGhlIGludGVycHJldGVyLlxcbiAgNjQ6XFx0XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTEwVDE2OjE2OjQyLjQ1MjAyMjhaIiwiU2VxIjoxNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6NTY3NzQ0NTY0NywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBbmFseXNpcyBvZiB0aGUgQlBGIFBhdGNoKipcblxuT2theSwgbGV0J3MgYnJlYWsgdGhpcyBkb3duLiBNeSBpbml0aWFsIGZvY3VzIGlzIG9uIHRoZSBrZXkgc3ltYm9scywgYXMgdXN1YWw6IGBjaGVja19rZnVuY19jYWxsYCBhbmQgYGNoZWNrX21lbV9hY2Nlc3NgLiBUaGVzZSBhcmUgdGhlIGZ1bmN0aW9ucyB3aXRoaW4gdGhlIEJQRiB2ZXJpZmllciB0aGF0IGFyZSBkaXJlY3RseSBtb2RpZmllZCBieSB0aGlzIHBhdGNoLCBzcGVjaWZpY2FsbHkgd2l0aGluIGBrZXJuZWwvYnBmL3ZlcmlmaWVyLmNgLiBNeSBxdWljayBpbml0aWFsIHNjYW4gZmxhZ2dlZCB0aGVzZSBhcyB0aGUga2V5IHBvaW50cywgYW5kIG5vdyBJJ20gY29uZmlybWluZyB0aGF0LlxuXG5JIHNlZSB0aGF0IHRoZSBjaGFuZ2VzIGludm9sdmUgYWRkaW5nIGNoZWNrcyByZWxhdGVkIHRvIGBLRl9QRVJGTU9OYCBhbmQgYHJkb25seV91bnRydXN0ZWRgIG1lbW9yeSBhY2Nlc3MuIE1ha2VzIHNlbnNlLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgc2NvcGUgb2YgdGhvc2UgZmxhZ3MuIGBpc19rZnVuY19wZXJmbW9uYCBpcyBhIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb24gaW4gdGhlIHZlcmlmaWVyLmMgZmlsZSwgc28gdGhlIHNjb3BlIG1ha2VzIHBlcmZlY3Qgc2Vuc2UuXG5cbkknbSBkb3VibGUtY2hlY2tpbmcgdGhlIHNjb3BlLCB0aGUgc3BlY2lmaWMgbGluZXMgb2YgY29kZSB0aGF0IGhhdmUgYmVlbiBhZGRlZDpcblxuLSAgIGBjaGVja19tZW1fYWNjZXNzYDogSSBzZWUgYSBuZXcgY2hlY2sgZm9yIGByZG9ubHlfdW50cnVzdGVkIFx1MDAyNlx1MDAyNiAhZW52LVx1MDAzZWFsbG93X3B0cl9sZWFrc2AuIFRoYXQncyBpbXBvcnRhbnQgZm9yIG1lbW9yeSBzYWZldHkuXG4tICAgYGlzX2tmdW5jX3BlcmZtb25gOiBBIGhlbHBlciBmdW5jdGlvbiwgdGhlIG5ldyBzdGF0aWMgZnVuY3Rpb24uXG4tICAgYGNoZWNrX2tmdW5jX2NhbGxgOiBUaGVyZSdzIGEgbmV3IGNoZWNrIGZvciBgaXNfa2Z1bmNfcGVyZm1vbihcdTAwMjZtZXRhKSBcdTAwMjZcdTAwMjYgIWVudi1cdTAwM2VhbGxvd19wdHJfbGVha3NgLiBUaGF0IG1ha2VzIHNlbnNlIGluIHRoZSBjYWxsaW5nIGNvbnRleHQuXG5cbkknbSBhbHNvIGNvbnNpZGVyaW5nIHRoZSBicm9hZGVyIGltcGxpY2F0aW9ucy4gVGhlIGBoZWxwZXJzLmNgIGZpbGUgaXMgdG91Y2hlZCwgdGhlIGRpZmYgaXMgYWRkaW5nIG1hY3JvIGRlY2xhcmF0aW9ucyB3aXRoaW4gdGhlIGBjb21tb25fYnRmX2lkc2AgdGFibGUuIEknbSBub3RpbmcgdGhpcywgYnV0IGl0IHNlZW1zIHNlY29uZGFyeSB0byB0aGUgY29yZSB2ZXJpZmljYXRpb24gY2hhbmdlcy5cblxuSSdtIGFsc28gdGhpbmtpbmcgdGhyb3VnaCBhbnkgcmVsZXZhbnQgY29uZmlndXJhdGlvbnMuIEkgc2VlIGBDT05GSUdfQlBGX0VWRU5UU2AsIHdoaWNoIHRyaWdnZXJzIHRoZSBhZGRpdGlvbiBvZiBgS0ZfUEVSRk1PTmAgZmxhZ3MgaW4gdGhlIGBoZWxwZXJzLmNgIGZpbGUuIFRoaXMgdGVsbHMgbWUgdGhhdCBgQlBGX0VWRU5UU2AgbWlnaHQgYmUgcmVsZXZhbnQsIGFuZCBJIHNob3VsZCBjb25zaWRlciBpdCBhcyBhbiBvcHRpb24uXG5cbk5vdyB0aGF0IEkndmUgcmV2aWV3ZWQgZXZlcnl0aGluZywgdGhlIG1haW4gZm9jdXMgc3RpbGwgbGllcyBvbiB0aGUgdmVyaWZpZXIgY2hhbmdlcyByZWxhdGVkIHRvIGBjaGVja19rZnVuY19jYWxsYCBhbmQgYGNoZWNrX21lbV9hY2Nlc3NgLiBZZXMsIHRoaXMgY2hhbmdlIHRvdWNoZXMgdGhlIGNvcmUgQlBGIHZlcmlmaWNhdGlvbiBsb2dpYy4gWWVzLCB0aGlzIGlzIHNvbWV0aGluZyBJIHdhbnQgdG8gYmUgKnZlcnkqIHRob3JvdWdoIGFib3V0LiBUaGlzIGlzIGNlcnRhaW5seSB3b3J0aCBmdXp6aW5nLlxuXG5JJ20gY29uZmlkZW50IGluIG15IGFzc2Vzc21lbnQsIGFuZCBJJ2xsIHByb2NlZWQgd2l0aCBgc2V0LXJlc3VsdHNgLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxNzMyNCwiT3V0cHV0VG9rZW5zIjoxMzcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo2MjMsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0xMFQxNjoxNjo0OC4xMjk0NzEwODdaIiwiU2VxIjoxNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo3NDgyNTYwOCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiQlBGX1NZU0NBTExcIixcbiAgICBcIkJQRl9FVkVOVFNcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJjaGVja19rZnVuY19jYWxsXCIsXG4gICAgXCJjaGVja19tZW1fYWNjZXNzXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggaW50cm9kdWNlcyBhIG5ldyBLRl9QRVJGTU9OIGtmdW5jIGZsYWcgYW5kIGVuZm9yY2VzIENBUF9QRVJGTU9OL0NBUF9TWVNfQURNSU4gcGVybWlzc2lvbiBjaGVja3MgaW4gdGhlIEJQRiB2ZXJpZmllciAoY2hlY2tfa2Z1bmNfY2FsbCBhbmQgY2hlY2tfbWVtX2FjY2VzcykuIFNpbmNlIHRoZXNlIGNoYW5nZXMgbW9kaWZ5IHJlYWNoYWJsZSBCUEYgdmVyaWZpZXIgbG9naWMgZXhlY3V0ZWQgZHVyaW5nIEJQRiBwcm9ncmFtIHZlcmlmaWNhdGlvbiB2aWEgc3lzX2JwZiwgdGhleSB3YXJyYW50IGZ1enppbmcuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiQlBGX1NZU0NBTExcIixcbiAgICBcIkJQRl9FVkVOVFNcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJjaGVja19rZnVuY19jYWxsXCIsXG4gICAgXCJjaGVja19tZW1fYWNjZXNzXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggaW50cm9kdWNlcyBhIG5ldyBLRl9QRVJGTU9OIGtmdW5jIGZsYWcgYW5kIGVuZm9yY2VzIENBUF9QRVJGTU9OL0NBUF9TWVNfQURNSU4gcGVybWlzc2lvbiBjaGVja3MgaW4gdGhlIEJQRiB2ZXJpZmllciAoY2hlY2tfa2Z1bmNfY2FsbCBhbmQgY2hlY2tfbWVtX2FjY2VzcykuIFNpbmNlIHRoZXNlIGNoYW5nZXMgbW9kaWZ5IHJlYWNoYWJsZSBCUEYgdmVyaWZpZXIgbG9naWMgZXhlY3V0ZWQgZHVyaW5nIEJQRiBwcm9ncmFtIHZlcmlmaWNhdGlvbiB2aWEgc3lzX2JwZiwgdGhleSB3YXJyYW50IGZ1enppbmcuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTEwVDE2OjE2OjQ4LjIwNDMwMzI2NloiLCJTZXEiOjE3LCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6IklmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjQ4MDMxMjU1OTAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0xMFQxNjoxNjo0OC4yMDQ3MTYyMTVaIiwiU2VxIjoxOCwiTmVzdGluZyI6MiwiVHlwZSI6ImFnZW50IiwiTmFtZSI6Imttc2FuLWV2YWx1YXRvciIsIk1vZGVsIjoiY29yZSIsIkR1cmF0aW9uIjoyNDgwMjcwODEwMSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggaW50cm9kdWNlcyB0aGUgS0ZfUEVSRk1PTiBrZnVuYyBmbGFnIGFuZCBlbmZvcmNlcyBjYXBhYmlsaXR5IGNoZWNrcyBpbiB0aGUgQlBGIHZlcmlmaWVyIChyZXF1aXJpbmcgQ0FQX1BFUkZNT04gLyBDQVBfU1lTX0FETUlOIHZpYSBlbnYtXFx1MDAzZWFsbG93X3B0cl9sZWFrcykgZm9yIGNlcnRhaW4ga2Z1bmNzIGFuZCB1bnRydXN0ZWQgcmVhZC1vbmx5IG1lbW9yeSBhY2Nlc3Nlcy5cXG5cXG5UaGUgY2hhbmdlcyBhcmUgZW50aXJlbHkgcmVzdHJpY3RlZCB0byBCUEYgdmVyaWZpZXIgYWNjZXNzLWNvbnRyb2wgY2hlY2tzIGFuZCBmbGFnIGRlZmluaXRpb25zLiBUaGV5IGRvIG5vdCBhbHRlciBtZW1vcnkgaW5pdGlhbGl6YXRpb24sIGRvIG5vdCBpbnRyb2R1Y2Ugb3IgY29weSB1bmluaXRpYWxpemVkIGRhdGEgc3RydWN0dXJlcyB0byB1c2VyIHNwYWNlLCBhbmQgZG8gbm90IGludHJvZHVjZSBsb2dpYyB0aGF0IGJyYW5jaGVzIG9uIHVuaW5pdGlhbGl6ZWQgbWVtb3J5LiBUaHVzLCB0aGVyZSBhcmUgbm8gdW5pbml0aWFsaXplZCBtZW1vcnkgcmlza3MgdGhhdCByZXF1aXJlIGEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbi5cIixcbiAgXCJOZWVkc0tNU0FOXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgc2VjdXJpdHkgZW5naW5lZXIgc3BlY2lhbGl6aW5nIGluIGtlcm5lbCBtZW1vcnlcbmVycm9yIGRldGVjdG9ycyAoS0FTQU4gYW5kIEtNU0FOKS4gWW91ciBqb2IgaXMgdG8gcmV2aWV3IHRoZSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kXG5kZXRlcm1pbmUgaWYgdGhlIGNvZGUgY2hhbmdlcyBqdXN0aWZ5IHNwYXduaW5nIGEgZGVkaWNhdGVkIEtNU0FOIChLZXJuZWxNZW1vcnlTYW5pdGl6ZXIpXG5mdXp6aW5nIHNlc3Npb24gaW4gYWRkaXRpb24gdG8gc3RhbmRhcmQgS0FTQU4gZnV6emluZy5cblxuQ1JJVElDQUwgRElTVElOQ1RJT04gQkVUV0VFTiBLQVNBTiBBTkQgS01TQU46XG4tIFN0YW5kYXJkIEtBU0FOIGtlcm5lbCBidWlsZHMgKHVwc3RyZWFtLWFwcGFybW9yLWthc2FuLmNvbmZpZykgYWxyZWFkeSBlbmFibGVcbiAgYSBjb21wcmVoZW5zaXZlIHN1aXRlIG9mIGRlYnVnZ2luZyB0b29scyBhbmQgc2FuaXRpemVycywgaW5jbHVkaW5nIEtBU0FOXG4gIChvdXQtb2YtYm91bmRzIGFjY2Vzc2VzLCB1c2UtYWZ0ZXItZnJlZSwgZG91YmxlIGZyZWUsIGludmFsaWQgZnJlZSksIExPQ0tERVBcbiAgKGxvY2tpbmcgYnVncyBhbmQgZGVhZGxvY2tzKSwgVUItc2FuaXRpemVycywgYW5kIG1lbW9yeSBjb3JydXB0aW9uIGNoZWNrcy5cbi0gS01TQU4gKEtlcm5lbE1lbW9yeVNhbml0aXplcikgZGV0ZWN0cyByZWFkcyBvZiBVTklOSVRJQUxJWkVEIG1lbW9yeSAoc3RhY2ssIGhlYXAsXG4gIG9yIHBhZ2UgYWxsb2NhdGlvbnMpIGFuZCBrZXJuZWwtdG8tdXNlciBtZW1vcnkgaW5mby1sZWFrcy5cblxuUnVsZTogVEhFUkUgSVMgTk8gU0VOU0UgSU4gUlVOTklORyBBIEtNU0FOIFNFU1NJT04gSUYgQSBCVUcgQ0FOIEJFIENBVUdIVCBCWSBLQVNBTixcbkxPQ0tERVAsIE9SIE9USEVSIFNUQU5EQVJEIEJVRyBERVRFQ1RPUlMuXG5BIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaW5jdXJzIHNpZ25pZmljYW50IHJlc291cmNlIGNvc3RzLiBZb3UgbXVzdCBPTkxZXG5zZXQgTmVlZHNLTVNBTj10cnVlIGlmIHRoZSBjb2RlIGNoYW5nZXMgaW50cm9kdWNlIG9yIGV4cG9zZSBVTklOSVRJQUxJWkVEIE1FTU9SWSByaXNrc1xudGhhdCBhcmUgZGV0ZWN0ZWQgT05MWSBieSBLTVNBTi5cblxuTG9vayBob2xpc3RpY2FsbHkgYXQgdGhlIHBhdGNoIHNlcmllcyBhbmQgc3Vycm91bmRpbmcgY29kZS4gRXZlbiBpZiBubyBkaXJlY3RcbnVuaW5pdGlhbGl6ZWQgZmllbGQgYWNjZXNzZXMgb3IgbmV3IGJ1ZmZlciBhbGxvY2F0aW9ucyBhcmUgYWRkZWQgaW4gdGhlIGRpZmYgaXRzZWxmLFxuYSBwYXRjaCBtYXkgYWx0ZXIgY29udHJvbCBmbG93LCBib3VuZHMgY2hlY2tpbmcsIG9yIGRhdGEgbGVuZ3RoIGNhbGN1bGF0aW9ucyBpbiB3YXlzXG50aGF0IGNoYW5nZSBob3cgdGhlIHJlc3Qgb2YgdGhlIGNvZGUgb3BlcmF0ZXMgb24gZXhpc3RpbmcgYnVmZmVycyAoZS5nLiBhbGxvd2luZ1xudW5pbml0aWFsaXplZCBzdGFjay9oZWFwIG1lbW9yeSB0byBiZSByZWFkLCBjb3BpZWQgdG8gdXNlciBzcGFjZSwgb3IgdXNlZCBpbiBjb250cm9sXG5mbG93KS4gRG8gbm90IGhlc2l0YXRlIHRvIHVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGluc3BlY3QgdGhlIHN1cnJvdW5kaW5nIGNvZGUsXG5jYWxsZWQgZnVuY3Rpb25zLCBhbmQgY2FsbGVycy5cblxuU2V0IE5lZWRzS01TQU49dHJ1ZSBPTkxZIElGIHRoZSBwYXRjaCBpbnRyb2R1Y2VzIG9yIG1vZGlmaWVzOlxuMS4gS2VybmVsIHN0cnVjdHVyZXMgc2VudCB0byB1c2VyIHNwYWNlICh2aWEgY29weV90b191c2VyLCBwdXRfdXNlciwgbmV0bGluayBza2JcbiAgIGF0dHJpYnV0ZXMsIGlvY3RsIG91dHB1dCBhcmd1bWVudHMsIHNvY2tldCBvcHRpb25zLCBvciBCUEYgYnVmZmVycykgd2hlcmUgZmllbGRzXG4gICBvciBzdHJ1Y3R1cmUgcGFkZGluZyBtaWdodCBub3QgYmUgZnVsbHkgaW5pdGlhbGl6ZWQvemVyb2VkLlxuMi4gQ29uZGl0aW9uYWwgbG9naWMgb3IgYnJhbmNoaW5nIHRoYXQgZGVwZW5kcyBvbiBwb3RlbnRpYWxseSB1bmluaXRpYWxpemVkIHZhcmlhYmxlc1xuICAgb3Igc3RydWN0IGZpZWxkcy5cbjMuIEFsbG9jYXRpb24gb3IgaW5pdGlhbGl6YXRpb24gb2YgY29tcGxleCBkYXRhIHN0cnVjdHVyZXMgd2hlcmUgdW5pbml0aWFsaXplZCBmaWVsZHNcbiAgIGNvdWxkIGJlIHJlYWQgbGF0ZXIgaW4gcmVhY2hhYmxlIGNvZGUgcGF0aHMuXG40LiBCb3VuZHMgY2hlY2tzLCBsZW5ndGhzLCBvciBsb2dpYyBpbiBhIHdheSB0aGF0IGFsbG93cyBzdXJyb3VuZGluZyBjb2RlIHRvIGFjY2Vzc1xuICAgdW5pbml0aWFsaXplZCBieXRlcyBvZiBleGlzdGluZyBidWZmZXJzLlxuXG5TZXQgTmVlZHNLTVNBTj1mYWxzZSBJRjpcbi0gVGhlIGNvZGUgY2hhbmdlcyBwcmltYXJpbHkgcmlzayBvdXQtb2YtYm91bmRzIGFjY2VzcywgYXJyYXkgb3ZlcmZsb3dzLCBOVUxMIHBvaW50ZXJcbiAgZGVyZWZlcmVuY2VzLCBsb2NraW5nIGRlYWRsb2Nrcywgb3IgdXNlLWFmdGVyLWZyZWUgYnVncyAodGhlc2UgYXJlIGFscmVhZHkgY2F1Z2h0XG4gIGJ5IEtBU0FOLCBMT0NLREVQLCBvciBzdGFuZGFyZCBidWcgZGV0ZWN0b3JzKS5cbi0gQWxsIHN0YWNrL2hlYXAgc3RydWN0dXJlcyB0b3VjaGVkIG9yIGludHJvZHVjZWQgYnkgdGhlIHBhdGNoIGFyZSBmdWxseSB6ZXJvZWRcbiAgb3IgaW5pdGlhbGl6ZWQgKGUuZy4gdXNpbmcgPSB7MH0sIG1lbXNldCwga3phbGxvYykgYmVmb3JlIGJlaW5nIHJlYWQgb3IgY29waWVkLlxuLSBUaGUgcGF0Y2ggZG9lcyBub3QgaW50cm9kdWNlIGFueSByaXNrIG9mIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHVzYWdlIG9yIGluZm8tbGVha3MuXG5cblVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGluc3BlY3QgdGhlIHN1cnJvdW5kaW5nIGNvZGUgaWYgbmVjZXNzYXJ5LCB0aGVuIHByb3ZpZGVcbmRldGFpbGVkIEtNU0FOUmVhc29uaW5nIGNvbnRyYXN0aW5nIEtBU0FOIHZzIEtNU0FOIGFwcGxpY2FiaWxpdHkgZm9yIHRoaXMgcGF0Y2guXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJUYXJnZXQgYXJjaGl0ZWN0dXJlOiBhbWQ2NFxuXG5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCA0NzU0N2VlN2E1NDA5MjNlNjIxOWY0NWJkOGIyNmUyOWRhOGMxZjUwXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFRodSBTZXAgMTAgMTY6MTU6NDIgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2JwZi9rZnVuY3MucnN0IGIvRG9jdW1lbnRhdGlvbi9icGYva2Z1bmNzLnJzdFxuaW5kZXggODVmNzNlMGJiZDBmZi4uNjY5MWZlOGEzMmMzZCAxMDA2NDRcbi0tLSBhL0RvY3VtZW50YXRpb24vYnBmL2tmdW5jcy5yc3RcbisrKyBiL0RvY3VtZW50YXRpb24vYnBmL2tmdW5jcy5yc3RcbkBAIC00ODYsNiArNDg2LDE2IEBAIEV4YW1wbGUgdXNhZ2UgaW4gQlBGIHByb2dyYW06XG4gXHQvKiBub3RlIHRoYXQgdGhlIGxhc3QgYXJndW1lbnQgaXMgb21pdHRlZCAqL1xuICAgICAgICAgYnBmX3Rhc2tfd29ya19zY2hlZHVsZV9zaWduYWwodGFzaywgXHUwMDI2d29yay1cdTAwM2V0dywgXHUwMDI2YXJybWFwLCB0YXNrX3dvcmtfY2FsbGJhY2spO1xuIFxuKzIuNS4xMCBLRl9QRVJGTU9OIGZsYWdcbistLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4rXG4rVGhlIEtGX1BFUkZNT04gZmxhZyBpcyB1c2VkIGZvciBrZnVuY3MgdGhhdCBjYW4gZXhwb3NlIGtlcm5lbCBtZW1vcnkgb3Iga2VybmVsXG4rYWRkcmVzc2VzIHRvIHRoZSBCUEYgcHJvZ3JhbSwgZm9yIGV4YW1wbGUgYnkgcmVhZGluZyB0aHJvdWdoIGEgcG9pbnRlciB0aGF0IHRoZVxuK3ZlcmlmaWVyIGRvZXMgbm90IGNoZWNrLiBDYWxsaW5nIHN1Y2ggYSBrZnVuYyByZXF1aXJlcyBDQVBfUEVSRk1PTiwgb3JcbitDQVBfU1lTX0FETUlOLCBpbiB0aGUgc2FtZSB3YXkgdGhhdCB0aGUgZXF1aXZhbGVudCBCUEYgaGVscGVycyBhcmUgZ2F0ZWQgaW5cbiticGZfYmFzZV9mdW5jX3Byb3RvKCkuIEEgcHJvZ3JhbSBsb2FkZWQgd2l0aCBDQVBfQlBGIGFsb25lIGlzIHJlamVjdGVkIGF0IGxvYWRcbit0aW1lLlxuK1xuIDIuNiBSZWdpc3RlcmluZyB0aGUga2Z1bmNzXG4gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiBcbmRpZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4L2J0Zi5oIGIvaW5jbHVkZS9saW51eC9idGYuaFxuaW5kZXggODlkNWE1YzRmMTE3MS4uN2M2MmVhMTdiMTE2MyAxMDA2NDRcbi0tLSBhL2luY2x1ZGUvbGludXgvYnRmLmhcbisrKyBiL2luY2x1ZGUvbGludXgvYnRmLmhcbkBAIC04MCw2ICs4MCw3IEBAXG4gI2RlZmluZSBLRl9BUkVOQV9BUkcyICAgKDEgXHUwMDNjXHUwMDNjIDE1KSAvKiBrZnVuYyB0YWtlcyBhbiBhcmVuYSBwb2ludGVyIGFzIGl0cyBzZWNvbmQgYXJndW1lbnQgKi9cbiAjZGVmaW5lIEtGX0lNUExJQ0lUX0FSR1MgKDEgXHUwMDNjXHUwMDNjIDE2KSAvKiBrZnVuYyBoYXMgaW1wbGljaXQgYXJndW1lbnRzIHN1cHBsaWVkIGJ5IHRoZSB2ZXJpZmllciAqL1xuICNkZWZpbmUgS0ZfU1BJTkxPQ0tfU0FGRSAoMSBcdTAwM2NcdTAwM2MgMTcpIC8qIGtmdW5jIGlzIGFsbG93ZWQgaW5zaWRlIGJwZl9zcGluX2xvY2stZWQgcmVnaW9uICovXG4rI2RlZmluZSBLRl9QRVJGTU9OICAgICAgKDEgXHUwMDNjXHUwMDNjIDE4KSAvKiBrZnVuYyByZXF1aXJlcyBDQVBfUEVSRk1PTiAqL1xuIFxuIC8qXG4gICogVGFnIG1hcmtpbmcgYSBrZXJuZWwgZnVuY3Rpb24gYXMgYSBrZnVuYy4gVGhpcyBpcyBtZWFudCB0byBtaW5pbWl6ZSB0aGVcbmRpZmYgLS1naXQgYS9rZXJuZWwvYnBmL2hlbHBlcnMuYyBiL2tlcm5lbC9icGYvaGVscGVycy5jXG5pbmRleCBiM2NjNWM4ZmM4NzU2Li44YTBlZWI0ZjYyMzZkIDEwMDY0NFxuLS0tIGEva2VybmVsL2JwZi9oZWxwZXJzLmNcbisrKyBiL2tlcm5lbC9icGYvaGVscGVycy5jXG5AQCAtNDg4Myw3ICs0ODgzLDcgQEAgQlRGX0lEKGZ1bmMsIGJwZl9jZ3JvdXBfcmVsZWFzZV9kdG9yKVxuIFxuIEJURl9LRlVOQ1NfU1RBUlQoY29tbW9uX2J0Zl9pZHMpXG4gQlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl9jYXN0X3RvX2tlcm5fY3R4LCBLRl9GQVNUQ0FMTClcbi1CVEZfSURfRkxBR1MoZnVuYywgYnBmX3Jkb25seV9jYXN0LCBLRl9GQVNUQ0FMTClcbitCVEZfSURfRkxBR1MoZnVuYywgYnBmX3Jkb25seV9jYXN0LCBLRl9GQVNUQ0FMTCB8IEtGX1BFUkZNT04pXG4gQlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl9yY3VfcmVhZF9sb2NrKVxuIEJURl9JRF9GTEFHUyhmdW5jLCBicGZfcmN1X3JlYWRfdW5sb2NrKVxuIEJURl9JRF9GTEFHUyhmdW5jLCBicGZfZHlucHRyX3NsaWNlLCBLRl9SRVRfTlVMTClcbkBAIC00OTIwLDExICs0OTIwLDExIEBAIEJURl9JRF9GTEFHUyhmdW5jLCBicGZfd3Ffc2V0X2NhbGxiYWNrLCBLRl9JTVBMSUNJVF9BUkdTKVxuIEJURl9JRF9GTEFHUyhmdW5jLCBicGZfd3Ffc3RhcnQpXG4gQlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl9wcmVlbXB0X2Rpc2FibGUpXG4gQlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl9wcmVlbXB0X2VuYWJsZSlcbi1CVEZfSURfRkxBR1MoZnVuYywgYnBmX2l0ZXJfYml0c19uZXcsIEtGX0lURVJfTkVXKVxuK0JURl9JRF9GTEFHUyhmdW5jLCBicGZfaXRlcl9iaXRzX25ldywgS0ZfSVRFUl9ORVcgfCBLRl9QRVJGTU9OKVxuIEJURl9JRF9GTEFHUyhmdW5jLCBicGZfaXRlcl9iaXRzX25leHQsIEtGX0lURVJfTkVYVCB8IEtGX1JFVF9OVUxMKVxuIEJURl9JRF9GTEFHUyhmdW5jLCBicGZfaXRlcl9iaXRzX2Rlc3Ryb3ksIEtGX0lURVJfREVTVFJPWSlcbi1CVEZfSURfRkxBR1MoZnVuYywgYnBmX2NvcHlfZnJvbV91c2VyX3N0ciwgS0ZfU0xFRVBBQkxFKVxuLUJURl9JRF9GTEFHUyhmdW5jLCBicGZfY29weV9mcm9tX3VzZXJfdGFza19zdHIsIEtGX1NMRUVQQUJMRSlcbitCVEZfSURfRkxBR1MoZnVuYywgYnBmX2NvcHlfZnJvbV91c2VyX3N0ciwgS0ZfU0xFRVBBQkxFIHwgS0ZfUEVSRk1PTilcbitCVEZfSURfRkxBR1MoZnVuYywgYnBmX2NvcHlfZnJvbV91c2VyX3Rhc2tfc3RyLCBLRl9TTEVFUEFCTEUgfCBLRl9QRVJGTU9OKVxuIEJURl9JRF9GTEFHUyhmdW5jLCBicGZfZ2V0X2ttZW1fY2FjaGUpXG4gQlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl9pdGVyX2ttZW1fY2FjaGVfbmV3LCBLRl9JVEVSX05FVyB8IEtGX1NMRUVQQUJMRSlcbiBCVEZfSURfRkxBR1MoZnVuYywgYnBmX2l0ZXJfa21lbV9jYWNoZV9uZXh0LCBLRl9JVEVSX05FWFQgfCBLRl9SRVRfTlVMTCB8IEtGX1NMRUVQQUJMRSlcbkBAIC00OTMyLDE0ICs0OTMyLDE0IEBAIEJURl9JRF9GTEFHUyhmdW5jLCBicGZfaXRlcl9rbWVtX2NhY2hlX2Rlc3Ryb3ksIEtGX0lURVJfREVTVFJPWSB8IEtGX1NMRUVQQUJMRSlcbiBCVEZfSURfRkxBR1MoZnVuYywgYnBmX2xvY2FsX2lycV9zYXZlKVxuIEJURl9JRF9GTEFHUyhmdW5jLCBicGZfbG9jYWxfaXJxX3Jlc3RvcmUpXG4gI2lmZGVmIENPTkZJR19CUEZfRVZFTlRTXG4tQlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl9wcm9iZV9yZWFkX3VzZXJfZHlucHRyKVxuLUJURl9JRF9GTEFHUyhmdW5jLCBicGZfcHJvYmVfcmVhZF9rZXJuZWxfZHlucHRyKVxuLUJURl9JRF9GTEFHUyhmdW5jLCBicGZfcHJvYmVfcmVhZF91c2VyX3N0cl9keW5wdHIpXG4tQlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl9wcm9iZV9yZWFkX2tlcm5lbF9zdHJfZHlucHRyKVxuLUJURl9JRF9GTEFHUyhmdW5jLCBicGZfY29weV9mcm9tX3VzZXJfZHlucHRyLCBLRl9TTEVFUEFCTEUpXG4tQlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl9jb3B5X2Zyb21fdXNlcl9zdHJfZHlucHRyLCBLRl9TTEVFUEFCTEUpXG4tQlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl9jb3B5X2Zyb21fdXNlcl90YXNrX2R5bnB0ciwgS0ZfU0xFRVBBQkxFKVxuLUJURl9JRF9GTEFHUyhmdW5jLCBicGZfY29weV9mcm9tX3VzZXJfdGFza19zdHJfZHlucHRyLCBLRl9TTEVFUEFCTEUpXG4rQlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl9wcm9iZV9yZWFkX3VzZXJfZHlucHRyLCBLRl9QRVJGTU9OKVxuK0JURl9JRF9GTEFHUyhmdW5jLCBicGZfcHJvYmVfcmVhZF9rZXJuZWxfZHlucHRyLCBLRl9QRVJGTU9OKVxuK0JURl9JRF9GTEFHUyhmdW5jLCBicGZfcHJvYmVfcmVhZF91c2VyX3N0cl9keW5wdHIsIEtGX1BFUkZNT04pXG4rQlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl9wcm9iZV9yZWFkX2tlcm5lbF9zdHJfZHlucHRyLCBLRl9QRVJGTU9OKVxuK0JURl9JRF9GTEFHUyhmdW5jLCBicGZfY29weV9mcm9tX3VzZXJfZHlucHRyLCBLRl9TTEVFUEFCTEUgfCBLRl9QRVJGTU9OKVxuK0JURl9JRF9GTEFHUyhmdW5jLCBicGZfY29weV9mcm9tX3VzZXJfc3RyX2R5bnB0ciwgS0ZfU0xFRVBBQkxFIHwgS0ZfUEVSRk1PTilcbitCVEZfSURfRkxBR1MoZnVuYywgYnBmX2NvcHlfZnJvbV91c2VyX3Rhc2tfZHlucHRyLCBLRl9TTEVFUEFCTEUgfCBLRl9QRVJGTU9OKVxuK0JURl9JRF9GTEFHUyhmdW5jLCBicGZfY29weV9mcm9tX3VzZXJfdGFza19zdHJfZHlucHRyLCBLRl9TTEVFUEFCTEUgfCBLRl9QRVJGTU9OKVxuICNlbmRpZlxuICNpZmRlZiBDT05GSUdfRE1BX1NIQVJFRF9CVUZGRVJcbiBCVEZfSURfRkxBR1MoZnVuYywgYnBmX2l0ZXJfZG1hYnVmX25ldywgS0ZfSVRFUl9ORVcgfCBLRl9TTEVFUEFCTEUpXG5AQCAtNDk0NywyNiArNDk0NywyNiBAQCBCVEZfSURfRkxBR1MoZnVuYywgYnBmX2l0ZXJfZG1hYnVmX25leHQsIEtGX0lURVJfTkVYVCB8IEtGX1JFVF9OVUxMIHwgS0ZfU0xFRVBBQlxuIEJURl9JRF9GTEFHUyhmdW5jLCBicGZfaXRlcl9kbWFidWZfZGVzdHJveSwgS0ZfSVRFUl9ERVNUUk9ZIHwgS0ZfU0xFRVBBQkxFKVxuICNlbmRpZlxuIEJURl9JRF9GTEFHUyhmdW5jLCBfX2JwZl90cmFwKVxuLUJURl9JRF9GTEFHUyhmdW5jLCBicGZfc3RyY21wKTtcbi1CVEZfSURfRkxBR1MoZnVuYywgYnBmX3N0cmNhc2VjbXApO1xuLUJURl9JRF9GTEFHUyhmdW5jLCBicGZfc3RybmNhc2VjbXApO1xuLUJURl9JRF9GTEFHUyhmdW5jLCBicGZfc3RyY2hyKTtcbi1CVEZfSURfRkxBR1MoZnVuYywgYnBmX3N0cmNocm51bCk7XG4tQlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl9zdHJuY2hyKTtcbi1CVEZfSURfRkxBR1MoZnVuYywgYnBmX3N0cnJjaHIpO1xuLUJURl9JRF9GTEFHUyhmdW5jLCBicGZfc3RybGVuKTtcbi1CVEZfSURfRkxBR1MoZnVuYywgYnBmX3N0cm5sZW4pO1xuLUJURl9JRF9GTEFHUyhmdW5jLCBicGZfc3Ryc3BuKTtcbi1CVEZfSURfRkxBR1MoZnVuYywgYnBmX3N0cmNzcG4pO1xuLUJURl9JRF9GTEFHUyhmdW5jLCBicGZfc3Ryc3RyKTtcbi1CVEZfSURfRkxBR1MoZnVuYywgYnBmX3N0cmNhc2VzdHIpO1xuLUJURl9JRF9GTEFHUyhmdW5jLCBicGZfc3RybnN0cik7XG4tQlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl9zdHJuY2FzZXN0cik7XG4rQlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl9zdHJjbXAsIEtGX1BFUkZNT04pO1xuK0JURl9JRF9GTEFHUyhmdW5jLCBicGZfc3RyY2FzZWNtcCwgS0ZfUEVSRk1PTik7XG4rQlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl9zdHJuY2FzZWNtcCwgS0ZfUEVSRk1PTik7XG4rQlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl9zdHJjaHIsIEtGX1BFUkZNT04pO1xuK0JURl9JRF9GTEFHUyhmdW5jLCBicGZfc3RyY2hybnVsLCBLRl9QRVJGTU9OKTtcbitCVEZfSURfRkxBR1MoZnVuYywgYnBmX3N0cm5jaHIsIEtGX1BFUkZNT04pO1xuK0JURl9JRF9GTEFHUyhmdW5jLCBicGZfc3RycmNociwgS0ZfUEVSRk1PTik7XG4rQlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl9zdHJsZW4sIEtGX1BFUkZNT04pO1xuK0JURl9JRF9GTEFHUyhmdW5jLCBicGZfc3RybmxlbiwgS0ZfUEVSRk1PTik7XG4rQlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl9zdHJzcG4sIEtGX1BFUkZNT04pO1xuK0JURl9JRF9GTEFHUyhmdW5jLCBicGZfc3RyY3NwbiwgS0ZfUEVSRk1PTik7XG4rQlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl9zdHJzdHIsIEtGX1BFUkZNT04pO1xuK0JURl9JRF9GTEFHUyhmdW5jLCBicGZfc3RyY2FzZXN0ciwgS0ZfUEVSRk1PTik7XG4rQlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl9zdHJuc3RyLCBLRl9QRVJGTU9OKTtcbitCVEZfSURfRkxBR1MoZnVuYywgYnBmX3N0cm5jYXNlc3RyLCBLRl9QRVJGTU9OKTtcbiAjaWYgZGVmaW5lZChDT05GSUdfQlBGX0xTTSkgXHUwMDI2XHUwMDI2IGRlZmluZWQoQ09ORklHX0NHUk9VUFMpXG4gQlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl9jZ3JvdXBfcmVhZF94YXR0ciwgS0ZfUkNVKVxuICNlbmRpZlxuLUJURl9JRF9GTEFHUyhmdW5jLCBicGZfc3RyZWFtX3ZwcmludGssIEtGX0lNUExJQ0lUX0FSR1MgfCBLRl9TUElOTE9DS19TQUZFKVxuLUJURl9JRF9GTEFHUyhmdW5jLCBicGZfc3RyZWFtX3ByaW50X3N0YWNrLCBLRl9JTVBMSUNJVF9BUkdTIHwgS0ZfU1BJTkxPQ0tfU0FGRSlcbitCVEZfSURfRkxBR1MoZnVuYywgYnBmX3N0cmVhbV92cHJpbnRrLCBLRl9JTVBMSUNJVF9BUkdTIHwgS0ZfU1BJTkxPQ0tfU0FGRSB8IEtGX1BFUkZNT04pXG4rQlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl9zdHJlYW1fcHJpbnRfc3RhY2ssIEtGX0lNUExJQ0lUX0FSR1MgfCBLRl9TUElOTE9DS19TQUZFIHwgS0ZfUEVSRk1PTilcbiBCVEZfSURfRkxBR1MoZnVuYywgYnBmX3Rhc2tfd29ya19zY2hlZHVsZV9zaWduYWwsIEtGX0lNUExJQ0lUX0FSR1MpXG4gQlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl90YXNrX3dvcmtfc2NoZWR1bGVfcmVzdW1lLCBLRl9JTVBMSUNJVF9BUkdTKVxuIEJURl9JRF9GTEFHUyhmdW5jLCBicGZfZHlucHRyX2Zyb21fZmlsZSlcbmRpZmYgLS1naXQgYS9rZXJuZWwvYnBmL3ZlcmlmaWVyLmMgYi9rZXJuZWwvYnBmL3ZlcmlmaWVyLmNcbmluZGV4IDcyYTNmNTk5OGRkMjcuLjM2OTIzY2UwNDI3MzQgMTAwNjQ0XG4tLS0gYS9rZXJuZWwvYnBmL3ZlcmlmaWVyLmNcbisrKyBiL2tlcm5lbC9icGYvdmVyaWZpZXIuY1xuQEAgLTY0NTMsNiArNjQ1MywxNiBAQCBzdGF0aWMgaW50IGNoZWNrX21lbV9hY2Nlc3Moc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudiwgaW50IGluc25faWR4LCBzdHJ1Y3QgYlxuIFx0XHRcdHJldHVybiAtRUFDQ0VTO1xuIFx0XHR9XG4gXG4rXHRcdGlmIChyZG9ubHlfdW50cnVzdGVkIFx1MDAyNlx1MDAyNiAhZW52LVx1MDAzZWFsbG93X3B0cl9sZWFrcykge1xuK1x0XHRcdHZlcmJvc2UoZW52LCBcIiVzIGFjY2VzcyBpcyBhbGxvd2VkIG9ubHkgdG8gQ0FQX1BFUkZNT04gYW5kIENBUF9TWVNfQURNSU5cXG5cIixcbitcdFx0XHRcdHJlZ190eXBlX3N0cihlbnYsIHJlZy1cdTAwM2V0eXBlKSk7XG4rXHRcdFx0YnBmX2RpYWdfcG9saWN5KFxuK1x0XHRcdFx0ZW52LCBpbnNuX2lkeCwgXCJyZWFkIGZyb20gdW50cnVzdGVkIHJlYWQtb25seSBtZW1vcnlcIixcbitcdFx0XHRcdFwidGhlIGFjY2VzcyByZXF1aXJlcyBDQVBfUEVSRk1PTlwiLFxuK1x0XHRcdFx0XCJMb2FkIHRoZSBwcm9ncmFtIHdpdGggQ0FQX1BFUkZNT04sIG9yIGF2b2lkIGRlcmVmZXJlbmNpbmcgdW50cnVzdGVkIHBvaW50ZXJzLlwiKTtcbitcdFx0XHRyZXR1cm4gLUVQRVJNO1xuK1x0XHR9XG4rXG4gXHRcdC8qXG4gXHRcdCAqIEFjY2Vzc2VzIHRvIHVudHJ1c3RlZCBQVFJfVE9fTUVNIGFyZSBkb25lIHRocm91Z2ggcHJvYmVcbiBcdFx0ICogaW5zdHJ1Y3Rpb25zLCBoZW5jZSBubyBuZWVkIHRvIGNoZWNrIGJvdW5kcyBpbiB0aGF0IGNhc2UuXG5AQCAtMTEzNTYsNiArMTEzNjYsMTEgQEAgc3RhdGljIGJvb2wgaXNfa2Z1bmNfZGVzdHJ1Y3RpdmUoc3RydWN0IGJwZl9jYWxsX2FyZ19tZXRhICptZXRhKVxuIFx0cmV0dXJuIG1ldGEtXHUwMDNla2Z1bmNfZmxhZ3MgXHUwMDI2IEtGX0RFU1RSVUNUSVZFO1xuIH1cbiBcbitzdGF0aWMgYm9vbCBpc19rZnVuY19wZXJmbW9uKHN0cnVjdCBicGZfY2FsbF9hcmdfbWV0YSAqbWV0YSlcbit7XG4rXHRyZXR1cm4gbWV0YS1cdTAwM2VrZnVuY19mbGFncyBcdTAwMjYgS0ZfUEVSRk1PTjtcbit9XG4rXG4gc3RhdGljIGJvb2wgaXNfa2Z1bmNfcmN1KHN0cnVjdCBicGZfY2FsbF9hcmdfbWV0YSAqbWV0YSlcbiB7XG4gXHRyZXR1cm4gbWV0YS1cdTAwM2VrZnVuY19mbGFncyBcdTAwMjYgS0ZfUkNVO1xuQEAgLTEzODM0LDYgKzEzODQ5LDE2IEBAIHN0YXRpYyBpbnQgY2hlY2tfa2Z1bmNfY2FsbChzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52LCBzdHJ1Y3QgYnBmX2luc24gKmluc24sXG4gXHRcdHJldHVybiAtRUFDQ0VTO1xuIFx0fVxuIFxuK1x0aWYgKGlzX2tmdW5jX3BlcmZtb24oXHUwMDI2bWV0YSkgXHUwMDI2XHUwMDI2ICFlbnYtXHUwMDNlYWxsb3dfcHRyX2xlYWtzKSB7XG4rXHRcdHZlcmJvc2UoZW52LCBcIiVzIGlzIGFsbG93ZWQgb25seSB0byBDQVBfUEVSRk1PTiBhbmQgQ0FQX1NZU19BRE1JTlxcblwiLFxuK1x0XHRcdGZ1bmNfbmFtZSk7XG4rXHRcdG9wZXJhdGlvbiA9IGJwZl9kaWFnX2ZtdChlbnYsIFwia2Z1bmMgJXNcIiwgZnVuY19uYW1lKTtcbitcdFx0YnBmX2RpYWdfcG9saWN5KFxuK1x0XHRcdGVudiwgaW5zbl9pZHgsIG9wZXJhdGlvbiwgXCJ0aGUga2Z1bmMgcmVxdWlyZXMgQ0FQX1BFUkZNT05cIixcbitcdFx0XHRcIkxvYWQgdGhlIHByb2dyYW0gd2l0aCBDQVBfUEVSRk1PTiwgb3IgYXZvaWQgdGhlIGtmdW5jLlwiKTtcbitcdFx0cmV0dXJuIC1FUEVSTTtcbitcdH1cbitcbiBcdHNsZWVwYWJsZSA9IGJwZl9pc19rZnVuY19zbGVlcGFibGUoXHUwMDI2bWV0YSk7XG4gXHRpZiAoc2xlZXBhYmxlIFx1MDAyNlx1MDAyNiAhaW5fc2xlZXBhYmxlKGVudikpIHtcbiBcdFx0dmVyYm9zZShlbnYsIFwicHJvZ3JhbSBtdXN0IGJlIHNsZWVwYWJsZSB0byBjYWxsIHNsZWVwYWJsZSBrZnVuYyAlc1xcblwiLCBmdW5jX25hbWUpO1xuZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3ZlcmlmaWVyLmMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy92ZXJpZmllci5jXG5pbmRleCA2NGFjNDlhZDY3ZTYzLi5lYzllMzkwN2M3NWQ2IDEwMDY0NFxuLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvdmVyaWZpZXIuY1xuKysrIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvdmVyaWZpZXIuY1xuQEAgLTUzLDYgKzUzLDcgQEBcbiAjaW5jbHVkZSBcInZlcmlmaWVyX2l0ZXJhdGluZ19jYWxsYmFja3Muc2tlbC5oXCJcbiAjaW5jbHVkZSBcInZlcmlmaWVyX2plcV9pbmZlcl9ub3RfbnVsbC5za2VsLmhcIlxuICNpbmNsdWRlIFwidmVyaWZpZXJfaml0X2NvbnZlcmdlbmNlLnNrZWwuaFwiXG4rI2luY2x1ZGUgXCJ2ZXJpZmllcl9rZnVuY19wZXJmbW9uLnNrZWwuaFwiXG4gI2luY2x1ZGUgXCJ2ZXJpZmllcl9sZF9pbmQuc2tlbC5oXCJcbiAjaW5jbHVkZSBcInZlcmlmaWVyX2xkc3guc2tlbC5oXCJcbiAjaW5jbHVkZSBcInZlcmlmaWVyX2xlYWtfcHRyLnNrZWwuaFwiXG5AQCAtMjE2LDYgKzIxNyw3IEBAIHZvaWQgdGVzdF92ZXJpZmllcl9pbnRfcHRyKHZvaWQpICAgICAgICAgICAgICB7IFJVTih2ZXJpZmllcl9pbnRfcHRyKTsgfVxuIHZvaWQgdGVzdF92ZXJpZmllcl9pdGVyYXRpbmdfY2FsbGJhY2tzKHZvaWQpICB7IFJVTih2ZXJpZmllcl9pdGVyYXRpbmdfY2FsbGJhY2tzKTsgfVxuIHZvaWQgdGVzdF92ZXJpZmllcl9qZXFfaW5mZXJfbm90X251bGwodm9pZCkgICB7IFJVTih2ZXJpZmllcl9qZXFfaW5mZXJfbm90X251bGwpOyB9XG4gdm9pZCB0ZXN0X3ZlcmlmaWVyX2ppdF9jb252ZXJnZW5jZSh2b2lkKSAgICAgIHsgUlVOKHZlcmlmaWVyX2ppdF9jb252ZXJnZW5jZSk7IH1cbit2b2lkIHRlc3RfdmVyaWZpZXJfa2Z1bmNfcGVyZm1vbih2b2lkKSAgICAgICAgeyBSVU4odmVyaWZpZXJfa2Z1bmNfcGVyZm1vbik7IH1cbiB2b2lkIHRlc3RfdmVyaWZpZXJfbG9hZF9hY3F1aXJlKHZvaWQpICAgICAgICAgeyBSVU4odmVyaWZpZXJfbG9hZF9hY3F1aXJlKTsgfVxuIHZvaWQgdGVzdF92ZXJpZmllcl9sZF9pbmQodm9pZCkgICAgICAgICAgICAgICB7IFJVTih2ZXJpZmllcl9sZF9pbmQpOyB9XG4gdm9pZCB0ZXN0X3ZlcmlmaWVyX2xkc3godm9pZCkgICAgICAgICAgICAgICAgICB7IFJVTih2ZXJpZmllcl9sZHN4KTsgfVxuZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy92ZXJpZmllcl9rZnVuY19wZXJmbW9uLmMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvdmVyaWZpZXJfa2Z1bmNfcGVyZm1vbi5jXG5uZXcgZmlsZSBtb2RlIDEwMDY0NFxuaW5kZXggMDAwMDAwMDAwMDAwMC4uYzZhZGJiNDgxNmNlY1xuLS0tIC9kZXYvbnVsbFxuKysrIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3ZlcmlmaWVyX2tmdW5jX3BlcmZtb24uY1xuQEAgLTAsMCArMSw2MyBAQFxuKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wXG4rXG4rI2luY2x1ZGUgXHUwMDNjdm1saW51eC5oXHUwMDNlXG4rI2luY2x1ZGUgXHUwMDNjYnBmL2JwZl9oZWxwZXJzLmhcdTAwM2VcbisjaW5jbHVkZSBcImJwZl9taXNjLmhcIlxuK1xuK3ZvaWQgKnVzZXJfcHRyO1xuK2NoYXIgZHlucHRyX2J1Zls4XTtcbit1NjQga2FkZHI7XG4rXG4rU0VDKFwic29ja2V0XCIpXG4rX19zdWNjZXNzXG4rX19jYXBzX3VucHJpdihDQVBfQlBGKVxuK19fZmFpbHVyZV91bnByaXZcbitfX21zZ191bnByaXYoXCJicGZfcmRvbmx5X2Nhc3QgaXMgYWxsb3dlZCBvbmx5IHRvIENBUF9QRVJGTU9OIGFuZCBDQVBfU1lTX0FETUlOXCIpXG4raW50IHJkb25seV9jYXN0X25vcGVyZm1vbih2b2lkICpjdHgpXG4re1xuK1x0Y2hhciAqcCA9IGJwZl9yZG9ubHlfY2FzdCgwLCAwKTtcbitcbitcdHJldHVybiBwWzB4N2ZmZl07XG4rfVxuK1xuK1NFQyhcInNvY2tldFwiKVxuK19fc3VjY2Vzc1xuK19fY2Fwc191bnByaXYoQ0FQX0JQRilcbitfX2ZhaWx1cmVfdW5wcml2XG4rX19tc2dfdW5wcml2KFwiYnBmX3Byb2JlX3JlYWRfa2VybmVsX2R5bnB0ciBpcyBhbGxvd2VkIG9ubHkgdG8gQ0FQX1BFUkZNT04gYW5kIENBUF9TWVNfQURNSU5cIilcbitpbnQgcHJvYmVfcmVhZF9rZXJuZWxfZHlucHRyX25vcGVyZm1vbih2b2lkICpjdHgpXG4re1xuK1x0c3RydWN0IGJwZl9keW5wdHIgZHB0cjtcbitcbitcdGJwZl9keW5wdHJfZnJvbV9tZW0oZHlucHRyX2J1Ziwgc2l6ZW9mKGR5bnB0cl9idWYpLCAwLCBcdTAwMjZkcHRyKTtcbitcdGJwZl9wcm9iZV9yZWFkX2tlcm5lbF9keW5wdHIoXHUwMDI2ZHB0ciwgMCwgc2l6ZW9mKGR5bnB0cl9idWYpLCB1c2VyX3B0cik7XG4rXHRyZXR1cm4gMDtcbit9XG4rXG4rU0VDKFwic29ja2V0XCIpXG4rX19zdWNjZXNzXG4rX19jYXBzX3VucHJpdihDQVBfQlBGKVxuK19fZmFpbHVyZV91bnByaXZcbitfX21zZ191bnByaXYoXCJicGZfc3RyZWFtX3ZwcmludGsgaXMgYWxsb3dlZCBvbmx5IHRvIENBUF9QRVJGTU9OIGFuZCBDQVBfU1lTX0FETUlOXCIpXG4raW50IHN0cmVhbV92cHJpbnRrX25vcGVyZm1vbih2b2lkICpjdHgpXG4re1xuK1x0YnBmX3N0cmVhbV9wcmludGsoQlBGX1NURE9VVCwgXCIlcEJcIiwgKHZvaWQgKilrYWRkcik7XG4rXHRyZXR1cm4gMDtcbit9XG4rXG4rX193ZWFrIGludCBzdWJwcm9nX3VudHJ1c3RlZF9yZWFkKHZvaWQgKnAgX19hcmdfdW50cnVzdGVkKVxuK3tcbitcdHJldHVybiAqKGNoYXIgKilwO1xuK31cbitcbitTRUMoXCJzb2NrZXRcIilcbitfX3N1Y2Nlc3NcbitfX2NhcHNfdW5wcml2KENBUF9CUEYpXG4rX19mYWlsdXJlX3VucHJpdlxuK19fbXNnX3VucHJpdihcInJkb25seV91bnRydXN0ZWRfbWVtIGFjY2VzcyBpcyBhbGxvd2VkIG9ubHkgdG8gQ0FQX1BFUkZNT04gYW5kIENBUF9TWVNfQURNSU5cIilcbitpbnQgYXJnX3VudHJ1c3RlZF9yZWFkX25vcGVyZm1vbih2b2lkICpjdHgpXG4re1xuK1x0cmV0dXJuIHN1YnByb2dfdW50cnVzdGVkX3JlYWQoMCk7XG4rfVxuK1xuK2NoYXIgX2xpY2Vuc2VbXSBTRUMoXCJsaWNlbnNlXCIpID0gXCJHUExcIjtcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTEwVDE2OjE2OjQ4LjIwNDcxNzE0NVoiLCJTZXEiOjE5LCJOZXN0aW5nIjozLCJUeXBlIjoibGxtIiwiTmFtZSI6Imttc2FuLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjoxMzU3MjQzMjUxNiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIEJQRiBLZnVuYyBQZXJtaXNzaW9uIFRpZ2h0ZW5pbmcgUGF0Y2gqKlxuXG5Pa2F5LCBsZXQncyBicmVhayBkb3duIHRoaXMgcGF0Y2guIE15IGltbWVkaWF0ZSB0aG91Z2h0IGlzLCBcIkFoLCB0aGV5J3JlIGJlZWZpbmcgdXAgdGhlIHNlY3VyaXR5IGFyb3VuZCBjZXJ0YWluIEJQRiBrZnVuY3MuXCIgU2VlbXMgbGlrZSBhIGdvb2QgdGhpbmcuXG5cbkZyb20gdGhlIHBhdGNoIHN1bW1hcnksIEkgc2VlIHRoZXkndmUgYWRkZWQgYSBgS0ZfUEVSRk1PTmAgZmxhZywgZGVmaW5lZCBpbiBgaW5jbHVkZS9saW51eC9idGYuaGAsIGFuZCB0aGVuIGFwcGxpZWQgaXQgdG8gYSBidW5jaCBvZiBrZnVuY3Mgd2l0aGluIGBrZXJuZWwvYnBmL2hlbHBlcnMuY2AuIFNwZWNpZmljYWxseSwgZnVuY3Rpb25zIGxpa2UgYGJwZl9yZG9ubHlfY2FzdGAsIGBicGZfaXRlcl9iaXRzX25ld2AsIGBicGZfY29weV9mcm9tX3VzZXJfc3RyYCwgdmFyaW91cyBgYnBmX3Byb2JlX3JlYWRfKmAgZnVuY3Rpb25zLCBhbmQgb3RoZXJzLiBUaGUgZG9jdW1lbnRhdGlvbiB1cGRhdGUgaXMgaW4gYERvY3VtZW50YXRpb24vYnBmL2tmdW5jcy5yc3RgLCBzbyBpdCBpcyBlYXN5IHRvIGZpbmQgdGhlIGluZm9ybWF0aW9uIGFib3V0IHRoZSBgS0ZfUEVSRk1PTmAgZmxhZy5cblxuVGhlIGNvcmUgb2YgdGhlIGNoYW5nZSBzZWVtcyB0byBiZSBpbiBga2VybmVsL2JwZi92ZXJpZmllci5jYC4gVGhleSdyZSBhZGRpbmcgY2hlY2tzIGluIGBjaGVja19tZW1fYWNjZXNzYCBhbmQgYGNoZWNrX2tmdW5jX2NhbGxgLiBCYXNpY2FsbHksIGlmIEkgdW5kZXJzdGFuZCB0aGlzIGNvcnJlY3RseSwgdGhlIHZlcmlmaWVyIGlzIG5vdyBlbnN1cmluZyB0aGF0IGlmIHRoZSBjYWxsaW5nIGNvbnRleHQgZG9lc24ndCBoYXZlIGBDQVBfUEVSRk1PTmAgb3IgYENBUF9TWVNfQURNSU5gIGFuZCBgZW52LVx1MDAzZWFsbG93X3B0cl9sZWFrc2AgaXMgKm5vdCogc2V0LCB0aGUgYEtGX1BFUkZNT05gIGZ1bmN0aW9ucyBvciByZWFkcyBmcm9tIGByZG9ubHlfdW50cnVzdGVkYCBtZW1vcnkgd2lsbCByZXN1bHQgaW4gYW4gYC1FUEVSTWAgZXJyb3IuIFRoYXQncyBhIGRpcmVjdCBzZWN1cml0eSBtZWFzdXJlIHRvIHJlc3RyaWN0IGFjY2Vzcy5cblxuTm93LCBteSBtaW5kIHN0YXJ0cyBnb2luZyB0aHJvdWdoIHRoZSB0eXBpY2FsIHNlY3VyaXR5IGF1ZGl0IHN0ZXBzLiBGaXJzdCwgbGV0J3MgcnVsZSBvdXQgc29tZSBwb3RlbnRpYWwgaXNzdWVzLiBEb2VzIHRoaXMgcGF0Y2ggaW50cm9kdWNlIG9yIG1vZGlmeSBhbnkga2VybmVsIHN0cnVjdHVyZXMgc2VudCB0byB1c2VyIHNwYWNlIHdoZXJlIHVuaW5pdGlhbGl6ZWQgZmllbGRzIGNvdWxkIGJlIGV4cG9zZWQ/IE5vLCB0aGUgcGF0Y2ggZG9lc24ndCBkbyB0aGF0LiBEb2VzIGl0IGNyZWF0ZSBhbnkgY29uZGl0aW9uYWwgbG9naWMgdGhhdCByZWxpZXMgb24gdW5pbml0aWFsaXplZCB2YXJpYWJsZXM/IE5vcGUsIHRoZSB2ZXJpZmllciBzdGF0ZSAoYHJkb25seV91bnRydXN0ZWRgLCBgbWV0YWAsIGFuZCBgZW52LVx1MDAzZWFsbG93X3B0cl9sZWFrc2ApIGFwcGVhcnMgdG8gYmUgZnVsbHkgaW5pdGlhbGl6ZWQuIEFueSBhbGxvY2F0aW9uIG9yIGluaXRpYWxpemF0aW9uIG9mIGNvbXBsZXggZGF0YSBzdHJ1Y3R1cmVzIHdpdGggdGhlIHBvdGVudGlhbCBmb3IgdW5pbml0aWFsaXplZCByZWFkcyBsYXRlcj8gTm8gc2lnbiBvZiB0aGF0IGhlcmUuIEZpbmFsbHksIGFyZSB0aGVyZSBhbnkgYm91bmRzIGNoZWNrIG1vZGlmaWNhdGlvbnMgdGhhdCBjb3VsZCBleHBvc2UgdW5pbml0aWFsaXplZCBieXRlcz8gQWdhaW4sIG5vLlxuXG5KdXN0IHRvIGJlIGFic29sdXRlbHkgY2VydGFpbiwgSSBuZWVkIHRvIGRvdWJsZS1jaGVjayB0aG9zZSB2ZXJpZmllciBmdW5jdGlvbnMuIE15IHBsYW4gaXMgdG8gZGlnIGludG8gYGtlcm5lbC9icGYvdmVyaWZpZXIuY2AgYXJvdW5kIGxpbmVzIDY0NTMgYW5kIDEzODQ5IHRvIGNvbmZpcm0gaG93IGBpc19rZnVuY19wZXJmbW9uKFx1MDAyNm1ldGEpYCBhbmQgYHJkb25seV91bnRydXN0ZWRgIGFyZSB1c2VkIGluIGNvbnRleHQuIEdvdHRhIG1ha2Ugc3VyZSB0aG9zZSBjaGVja3MgYXJlIHJvYnVzdC5cblxuSW4gY29uY2x1c2lvbiwgdGhpcyBsb29rcyBsaWtlIGEgc3RyYWlnaHRmb3J3YXJkIGFuZCB3ZWxsLXRhcmdldGVkIHNlY3VyaXR5IGhhcmRlbmluZyBwYXRjaC4gSXQncyBhIG5pY2UsIGZvY3VzZWQgaW1wcm92ZW1lbnQgaW4gQlBGIGtmdW5jIGFjY2VzcyBjb250cm9sLiBJdCB3aWxsIHJlc3RyaWN0IGNlcnRhaW4gQlBGIHByb2dyYW1zIHdoaWNoIGFyZW4ndCBjb25zaWRlcmVkIHN1ZmZpY2llbnRseSB0cnVzdGVkIGJ5IHRoZSBzeXN0ZW0uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjY3NTYsIk91dHB1dFRva2VucyI6MzMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo3MDYsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0xMFQxNjoxNzowMS43NzcxNTM0NDFaIiwiU2VxIjoyMCwiTmVzdGluZyI6MywiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjc4Mzc3MTk3LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInJkb25seV91bnRydXN0ZWRcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwia2VybmVsL2JwZi92ZXJpZmllci5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImtlcm5lbC9icGYvdmVyaWZpZXIuYz02MzgxPXN0YXRpYyBpbnQgY2hlY2tfbWVtX2FjY2VzcyhzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52LCBpbnQgaW5zbl9pZHgsIHN0cnVjdCBicGZfcmVnX3N0YXRlICpyZWcsIGFyZ25vX3QgYXJnbm8sXFxuLS1cXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtNjQzMi1cXHRcXHRib29sIHJkb25seV9tZW0gPSB0eXBlX2lzX3Jkb25seV9tZW0ocmVnLVxcdTAwM2V0eXBlKTtcXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6NjQzMzpcXHRcXHRib29sIHJkb25seV91bnRydXN0ZWQgPSByZG9ubHlfbWVtIFxcdTAwMjZcXHUwMDI2IChyZWctXFx1MDAzZXR5cGUgXFx1MDAyNiBQVFJfVU5UUlVTVEVEKTtcXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtNjQzNC1cXG4tLVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy02NDU1LVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYzo2NDU2OlxcdFxcdGlmIChyZG9ubHlfdW50cnVzdGVkIFxcdTAwMjZcXHUwMDI2ICFlbnYtXFx1MDAzZWFsbG93X3B0cl9sZWFrcykge1xcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy02NDU3LVxcdFxcdFxcdHZlcmJvc2UoZW52LCBcXFwiJXMgYWNjZXNzIGlzIGFsbG93ZWQgb25seSB0byBDQVBfUEVSRk1PTiBhbmQgQ0FQX1NZU19BRE1JTlxcXFxuXFxcIixcXG4tLVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy02NDY5LVxcdFxcdCAqL1xcbmtlcm5lbC9icGYvdmVyaWZpZXIuYzo2NDcwOlxcdFxcdGlmICghcmRvbmx5X3VudHJ1c3RlZClcXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtNjQ3MS1cXHRcXHRcXHRlcnIgPSBjaGVja19tZW1fcmVnaW9uX2FjY2VzcyhlbnYsIHJlZywgYXJnbm8sIG9mZiwgc2l6ZSxcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMTBUMTY6MTc6MDEuODU1NTM2MTM5WiIsIlNlcSI6MjEsIk5lc3RpbmciOjMsIlR5cGUiOiJsbG0iLCJOYW1lIjoia21zYW4tZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjY4NzIxMjM0ODQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlLCBwcmVzZW50ZWQgaW4gdGhlIGZpcnN0IHBlcnNvbjpcblxuKipDaGVja2luZyBgaXNfa2Z1bmNfcGVyZm1vbmAqKlxuXG5BbHJpZ2h0LCB0aW1lIHRvIGRpZyBpbi4gVGhlIGluaXRpYWwgdGhvdWdodCwgdGhlIHZlcnkgZmlyc3QgdGhpbmcgSSdtIHJlYWNoaW5nIGZvciwgaXMgdG8gaW1tZWRpYXRlbHkgY2hlY2sgdGhlIHN0YXRlIG9mIGBpc19rZnVuY19wZXJmbW9uYC4gVGhhdCdzICp0aGUqIGp1bXBpbmctb2ZmIHBvaW50LCBpc24ndCBpdD8gSXQgZGljdGF0ZXMgc28gbXVjaCBvZiB0aGUgcG90ZW50aWFsIGZvbGxvdy11cCBhbmFseXNpcy4gSXMgaXQgZW5hYmxlZD8gRGlzYWJsZWQ/IFdoYXQncyB0aGUgY3VycmVudCBjb25maWd1cmF0aW9uPyBVbmRlcnN0YW5kaW5nIHRoYXQgZmxhZyBpcyBwYXJhbW91bnQgYmVjYXVzZSBpdCBpbmZvcm1zIGV2ZXJ5dGhpbmcgZWxzZSB0aGF0IGZvbGxvd3MsIGluY2x1ZGluZyB3aGljaCBzdWJzZXF1ZW50IGNoZWNrcyBhcmUgcmVsZXZhbnQgYW5kIHdoYXQgc29ydCBvZiBwZXJmb3JtYW5jZSBkYXRhIEkgc2hvdWxkIGV4cGVjdCB0byBiZSBhY2Nlc3NpYmxlLiBLbm93aW5nIGl0cyBzdGF0ZSB3aWxsIGd1aWRlIG1lIG9uIHRoZSBtb3N0IGVmZmljaWVudCBwYXRoLiBJIG5lZWQgdG8ga25vdyBpbW1lZGlhdGVseSBpZiBwZXJmbW9uIGlzIGV2ZW4gYWN0aXZlIGZvciB0aGlzIGtmdW5jLCBvdGhlcndpc2UsIEknbSB3YXN0aW5nIG15IHRpbWUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjg0MzcsIk91dHB1dFRva2VucyI6MzUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0xMFQxNjoxNzowOC43Mjc2NjE1MDJaIiwiU2VxIjoyMiwiTmVzdGluZyI6MywiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ2MzEzMDczLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImlzX2tmdW5jX3BlcmZtb25cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwia2VybmVsL2JwZi92ZXJpZmllci5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImtlcm5lbC9icGYvdmVyaWZpZXIuYz0xMTM2ND1zdGF0aWMgYm9vbCBpc19rZnVuY19kZXN0cnVjdGl2ZShzdHJ1Y3QgYnBmX2NhbGxfYXJnX21ldGEgKm1ldGEpXFxuLS1cXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTEzNjgtXFxua2VybmVsL2JwZi92ZXJpZmllci5jOjExMzY5OnN0YXRpYyBib29sIGlzX2tmdW5jX3BlcmZtb24oc3RydWN0IGJwZl9jYWxsX2FyZ19tZXRhICptZXRhKVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xMTM3MC17XFxuLS1cXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM9MTM3NzA9c3RhdGljIGludCBjaGVja19rZnVuY19jYWxsKHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYsIHN0cnVjdCBicGZfaW5zbiAqaW5zbixcXG4tLVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xMzg1MS1cXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6MTM4NTI6XFx0aWYgKGlzX2tmdW5jX3BlcmZtb24oXFx1MDAyNm1ldGEpIFxcdTAwMjZcXHUwMDI2ICFlbnYtXFx1MDAzZWFsbG93X3B0cl9sZWFrcykge1xcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xMzg1My1cXHRcXHR2ZXJib3NlKGVudiwgXFxcIiVzIGlzIGFsbG93ZWQgb25seSB0byBDQVBfUEVSRk1PTiBhbmQgQ0FQX1NZU19BRE1JTlxcXFxuXFxcIixcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMTBUMTY6MTc6MDguNzczOTc4NjY0WiIsIlNlcSI6MjMsIk5lc3RpbmciOjMsIlR5cGUiOiJsbG0iLCJOYW1lIjoia21zYW4tZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjQyMzM0MjU3MTIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQXNzZXNzbWVudCBvZiB0aGUgQlBGIFZlcmlmaWVyIENoYW5nZSoqXG5cbk9rYXksIHRoaXMgbG9va3MgcHJldHR5IGNsZWFuLiBUaGUgcGF0Y2ggaXMgYWRkaW5nIGEgbmV3IGNoZWNrIGluIHRoZSBCUEYgdmVyaWZpZXIsIHNwZWNpZmljYWxseSBmb3Iga2Z1bmNzIHRoYXQgdG91Y2gga2VybmVsIG1lbW9yeSwgcG9zc2libHkgZXhwb3NpbmcgcG9pbnRlcnMgb3IgYWxsb3dpbmcgcmVhZC1vbmx5IGFjY2VzcyB0byB1bnRydXN0ZWQgbWVtb3J5IHNwYWNlcyDigJMgZXNzZW50aWFsbHkgYSBgS0ZfUEVSRk1PTmAgdGFnLiBUaGV54oCZcmUgYXBwbHlpbmcgdGhpcyB0YWcgdG8gc2V2ZXJhbCBleGlzdGluZyBrZnVuY3MuXG5cblRoZSBrZXkgdGhpbmcgaGVyZSwgZnJvbSBhIHNlY3VyaXR5IHN0YW5kcG9pbnQsIGlzIHRoYXQgdGhlcmUgYXJlIG5vIG9idmlvdXMgYXZlbnVlcyBmb3IgdW5pbml0aWFsaXplZCBtZW1vcnkgdG8gY3JlZXAgaW4uIEkndmUgcmV2aWV3ZWQgdGhlIGNvZGU7IHRoZXJlJ3Mgbm8gY29weWluZyBvZiB1bmluaXRpYWxpemVkIG1lbW9yeSB0byB1c2Vyc3BhY2UsIG5vIGluc3RhbmNlcyBvZiB1bmluaXRpYWxpemVkIHN0cnVjdHVyZXMgYmVpbmcgY29waWVkLCBhbmQgbm8gdmFyaWFibGVzIHRoYXQgZ2V0IHJlYWQgYmVmb3JlIGluaXRpYWxpemF0aW9uLiBObyBuZXcgbWVtb3J5IGFsbG9jYXRpb25zIGFyZSBoYXBwZW5pbmcgdGhhdCB3b3VsZCBpbnRyb2R1Y2UgdGhpcyByaXNrIGVpdGhlci5cblxuR2l2ZW4gYWxsIG9mIHRoaXMsIEknbSBjb25maWRlbnQgaW4gY2FsbGluZyBgTmVlZHNLTVNBTiA9IGZhbHNlYC4gV2UgY2FuIHByb2NlZWQgdG8gYHNldC1yZXN1bHRzYC4gSXQncyBhIHNvbGlkLCBmb2N1c2VkIGNoYW5nZSB3aXRoIGEgY2xlYXIgc2VjdXJpdHkgY29uc2lkZXJhdGlvbiwgYW5kIHRoZSB2ZXJpZmljYXRpb24gY2hlY2tzIGFwcGVhciBzb3VuZC5cblxuXG4iLCJJbnB1dFRva2VucyI6ODkzOCwiT3V0cHV0VG9rZW5zIjoxNTUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMjcsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMTBUMTY6MTc6MTMuMDA3NDA3NTQ2WiIsIlNlcSI6MjQsIk5lc3RpbmciOjMsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTU0OTAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJLTVNBTlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBpbnRyb2R1Y2VzIHRoZSBLRl9QRVJGTU9OIGtmdW5jIGZsYWcgYW5kIGVuZm9yY2VzIGNhcGFiaWxpdHkgY2hlY2tzIGluIHRoZSBCUEYgdmVyaWZpZXIgKHJlcXVpcmluZyBDQVBfUEVSRk1PTiAvIENBUF9TWVNfQURNSU4gdmlhIGVudi1cXHUwMDNlYWxsb3dfcHRyX2xlYWtzKSBmb3IgY2VydGFpbiBrZnVuY3MgYW5kIHVudHJ1c3RlZCByZWFkLW9ubHkgbWVtb3J5IGFjY2Vzc2VzLlxcblxcblRoZSBjaGFuZ2VzIGFyZSBlbnRpcmVseSByZXN0cmljdGVkIHRvIEJQRiB2ZXJpZmllciBhY2Nlc3MtY29udHJvbCBjaGVja3MgYW5kIGZsYWcgZGVmaW5pdGlvbnMuIFRoZXkgZG8gbm90IGFsdGVyIG1lbW9yeSBpbml0aWFsaXphdGlvbiwgZG8gbm90IGludHJvZHVjZSBvciBjb3B5IHVuaW5pdGlhbGl6ZWQgZGF0YSBzdHJ1Y3R1cmVzIHRvIHVzZXIgc3BhY2UsIGFuZCBkbyBub3QgaW50cm9kdWNlIGxvZ2ljIHRoYXQgYnJhbmNoZXMgb24gdW5pbml0aWFsaXplZCBtZW1vcnkuIFRodXMsIHRoZXJlIGFyZSBubyB1bmluaXRpYWxpemVkIG1lbW9yeSByaXNrcyB0aGF0IHJlcXVpcmUgYSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uLlwiLFxuICBcIk5lZWRzS01TQU5cIjogZmFsc2Vcbn0iLCJSZXN1bHRzIjoie1xuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGludHJvZHVjZXMgdGhlIEtGX1BFUkZNT04ga2Z1bmMgZmxhZyBhbmQgZW5mb3JjZXMgY2FwYWJpbGl0eSBjaGVja3MgaW4gdGhlIEJQRiB2ZXJpZmllciAocmVxdWlyaW5nIENBUF9QRVJGTU9OIC8gQ0FQX1NZU19BRE1JTiB2aWEgZW52LVxcdTAwM2VhbGxvd19wdHJfbGVha3MpIGZvciBjZXJ0YWluIGtmdW5jcyBhbmQgdW50cnVzdGVkIHJlYWQtb25seSBtZW1vcnkgYWNjZXNzZXMuXFxuXFxuVGhlIGNoYW5nZXMgYXJlIGVudGlyZWx5IHJlc3RyaWN0ZWQgdG8gQlBGIHZlcmlmaWVyIGFjY2Vzcy1jb250cm9sIGNoZWNrcyBhbmQgZmxhZyBkZWZpbml0aW9ucy4gVGhleSBkbyBub3QgYWx0ZXIgbWVtb3J5IGluaXRpYWxpemF0aW9uLCBkbyBub3QgaW50cm9kdWNlIG9yIGNvcHkgdW5pbml0aWFsaXplZCBkYXRhIHN0cnVjdHVyZXMgdG8gdXNlciBzcGFjZSwgYW5kIGRvIG5vdCBpbnRyb2R1Y2UgbG9naWMgdGhhdCBicmFuY2hlcyBvbiB1bmluaXRpYWxpemVkIG1lbW9yeS4gVGh1cywgdGhlcmUgYXJlIG5vIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHJpc2tzIHRoYXQgcmVxdWlyZSBhIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24uXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLmR1cmF0aW9uIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnTGxtVG9rZW4gPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS50b2tlbnMgLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdUb29sRHVyID0gc3RhdHMudG9vbC5jb3VudCA+IDAgPyAoc3RhdHMudG9vbC5kdXJhdGlvbiAvIHN0YXRzLnRvb2wuY291bnQpLnRvRml4ZWQoMikgOiAwOwoKCQkJY29uc3QgbGxtU3VtYXJ5Q2VsbHMgPSBbc3RhdHMubGxtLmNvdW50LCBzdGF0cy5sbG0udG9rZW5zLCBhdmdMbG1Ub2tlbiwgc3RhdHMubGxtLmR1cmF0aW9uLCBhdmdMbG1EdXJdOwoJCQljb25zdCB0b29sU3VtbWFyeUNlbGxzID0gW3N0YXRzLnRvb2wuY291bnQsIHN0YXRzLnRvb2wuZHVyYXRpb24sIGF2Z1Rvb2xEdXJdOwoKCQkJY29uc3QgbGxtU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbGxtX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQlsbG1TdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgbGxtVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQlsbG1TdW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJbGxtVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJbGxtU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQobGxtVHIpOwoKCQkJY29uc3QgdG9vbFN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rvb2xfc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgdG9vbFRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJdG9vbFN1bW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJdG9vbFRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZCh0b29sVHIpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBmaWx0ZXJlZFN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBbImxsbSIsICJ0b29sIl0uaW5jbHVkZXMoZC5UeXBlKSk7CgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ0R1cmF0aW9uJyk7CgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7IAoKCQkJZmlsdGVyZWRTdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJCgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsKCQkJCWxldCB0b29sdGlwID0gcy5OYW1lOwoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIgJiYgcy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoJCQkJZGF0YS5hZGRSb3coW2Ake3MuU2VxfWAsIGR1ciwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1RpbWUgQ29uc3VtcHRpb24gb2YgTExNL1Rvb2wgQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTS9Ub29sIFN0ZXBzJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ1NlY29uZHMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2R1cmF0aW9uX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBsbG1TdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gZC5UeXBlID09PSAibGxtIik7CgkJCWlmIChsbG1TdGVwcy5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwkJCQoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ1Rva2VucycpOwkJCQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICdzdHlsZSd9KTsJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7CQoKCQkJY29uc3QgYWdlbnRDb2xvcnMgPSB7fTsKCQkJY29uc3QgcGFsZXR0ZSA9IFsnIzQyODVGNCcsICcjREI0NDM3JywgJyNGNEI0MDAnLCAnIzBGOUQ1OCcsICcjQUI0N0JDJywgJyMwMEFDQzEnXTsKCQkJbGV0IGNvbG9ySWR4ID0gMDsKCQkJY29uc3QgYWdlbnRMTE1Db3VudHMgPSB7fTsKCQkJbGxtU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCWlmICghYWdlbnRDb2xvcnNbcy5OYW1lXSkgewoJCQkJCWFnZW50Q29sb3JzW3MuTmFtZV0gPSBwYWxldHRlW2NvbG9ySWR4ICUgcGFsZXR0ZS5sZW5ndGhdOwoJCQkJCWNvbG9ySWR4Kys7CgkJCQl9CgoJCQkJYWdlbnRMTE1Db3VudHNbcy5OYW1lXSA9IChhZ2VudExMTUNvdW50c1tzLk5hbWVdIHx8IDApICsgMTsKCQkJCWNvbnN0IGxhYmVsID0gYCR7cy5OYW1lfS0ke2FnZW50TExNQ291bnRzW3MuTmFtZV19YDsKCQkJCWNvbnN0IHRvdGFsVG9rZW5zID0gcy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2VuczsKCQkJCWNvbnN0IHN0eWxlID0gYGNvbG9yOiAke2FnZW50Q29sb3JzW3MuTmFtZV19YDsKCQkJCWxldCB0b29sdGlwID0gYFRvdGFsIFRva2VuczogJHt0b3RhbFRva2Vuc31cbihJbjogJHtzLklucHV0VG9rZW5zfSwgT3V0OiAke3MuT3V0cHV0VG9rZW5zfSwgVGhvdWdodHM6ICR7cy5PdXRwdXRUaG91Z2h0c1Rva2Vuc30pYDsKCQkJCWlmIChzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgoJCQkJZGF0YS5hZGRSb3coW2xhYmVsLCB0b3RhbFRva2Vucywgc3R5bGUsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUb2tlbiBDb25zdW1wdGlvbiBieSBMTE0gQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTSBDYWxsIFNlcXVlbmNlJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ0NvbnN1bWVkIFRva2VucycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9rZW5fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCQlsZXQgYWxsRXhwYW5kZWQgPSBmYWxzZTsKCQlmdW5jdGlvbiB0b2dnbGVBbGxEZXRhaWxzKCkgewoJCQlhbGxFeHBhbmRlZCA9ICFhbGxFeHBhbmRlZDsKCQkJZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnZGV0YWlscycpLmZvckVhY2goZCA9PiB7CgkJCQlpZiAoYWxsRXhwYW5kZWQpIGQuc2V0QXR0cmlidXRlKCdvcGVuJywgJycpOwoJCQkJZWxzZSBkLnJlbW92ZUF0dHJpYnV0ZSgnb3BlbicpOwoJCQl9KTsKCQl9Cgk8L3NjcmlwdD4KCgo8L2JvZHk+CjwvaHRtbD4K" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowwwtg6[1] Phase: Succeeded StartedAt: 2026-09-10 16:17:24 +0000 UTC FinishedAt: 2026-09-10 16:17:24 +0000 UTC Input: nil Output: nil --------- Name: series-workflowwwtg6[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-09-10 16:17:24 +0000 UTC FinishedAt: 2026-09-10 16:17:24 +0000 UTC Input: nil Output: nil --------- Name: series-workflowwwtg6[2] Phase: Succeeded StartedAt: 2026-09-10 16:17:24 +0000 UTC FinishedAt: 2026-09-10 19:56:25 +0000 UTC Input: nil Output: nil --------- Name: series-workflowwwtg6[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"e4a62833adff6ef0fe7c0b90393204fe3c26b5c5","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_EVENTS"],"series_id":"","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["check_kfunc_call","check_mem_access"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"e4a62833adff6ef0fe7c0b90393204fe3c26b5c5","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_EVENTS"],"series_id":"ce442b8d-4868-46a3-8d35-6f7f39f3cf22","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},retest:null,track:KASAN) Phase: Succeeded StartedAt: 2026-09-10 16:17:24 +0000 UTC FinishedAt: 2026-09-10 19:56:25 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"e4a62833adff6ef0fe7c0b90393204fe3c26b5c5","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_EVENTS"],"series_id":"","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},"fuzz":{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["check_kfunc_call","check_mem_access"],"skip_cover_check":false},"patched":{"arch":"amd64","commit_hash":"e4a62833adff6ef0fe7c0b90393204fe3c26b5c5","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_EVENTS"],"series_id":"ce442b8d-4868-46a3-8d35-6f7f39f3cf22","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},"retest":null,"track":"KASAN"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: nil --------- Name: series-workflowwwtg6[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"e4a62833adff6ef0fe7c0b90393204fe3c26b5c5","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_EVENTS"],"series_id":"","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["check_kfunc_call","check_mem_access"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"e4a62833adff6ef0fe7c0b90393204fe3c26b5c5","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_EVENTS"],"series_id":"ce442b8d-4868-46a3-8d35-6f7f39f3cf22","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},retest:null,track:KASAN)[0] Phase: Succeeded StartedAt: 2026-09-10 16:17:24 +0000 UTC FinishedAt: 2026-09-10 16:17:34 +0000 UTC Input: nil Output: nil --------- Name: series-workflowwwtg6[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"e4a62833adff6ef0fe7c0b90393204fe3c26b5c5","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_EVENTS"],"series_id":"","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["check_kfunc_call","check_mem_access"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"e4a62833adff6ef0fe7c0b90393204fe3c26b5c5","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_EVENTS"],"series_id":"ce442b8d-4868-46a3-8d35-6f7f39f3cf22","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},retest:null,track:KASAN)[0].save-base-req Phase: Succeeded StartedAt: 2026-09-10 16:17:24 +0000 UTC FinishedAt: 2026-09-10 16:17:29 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"e4a62833adff6ef0fe7c0b90393204fe3c26b5c5","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_EVENTS"],"series_id":"","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.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-workflowwwtg6/series-workflowwwtg6-convert-artifact-496005727/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowwwtg6[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"e4a62833adff6ef0fe7c0b90393204fe3c26b5c5","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_EVENTS"],"series_id":"","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["check_kfunc_call","check_mem_access"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"e4a62833adff6ef0fe7c0b90393204fe3c26b5c5","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_EVENTS"],"series_id":"ce442b8d-4868-46a3-8d35-6f7f39f3cf22","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},retest:null,track:KASAN)[1] Phase: Succeeded StartedAt: 2026-09-10 16:17:34 +0000 UTC FinishedAt: 2026-09-10 16:33:33 +0000 UTC Input: nil Output: nil --------- Name: series-workflowwwtg6[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"e4a62833adff6ef0fe7c0b90393204fe3c26b5c5","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_EVENTS"],"series_id":"","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["check_kfunc_call","check_mem_access"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"e4a62833adff6ef0fe7c0b90393204fe3c26b5c5","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_EVENTS"],"series_id":"ce442b8d-4868-46a3-8d35-6f7f39f3cf22","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},retest:null,track:KASAN)[1].base-build Phase: Succeeded StartedAt: 2026-09-10 16:17:34 +0000 UTC FinishedAt: 2026-09-10 16:33:33 +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:*ac144724-202a-4e7e-9060-881901200e7b,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-workflowwwtg6/series-workflowwwtg6-convert-artifact-496005727/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": "6c5eed60-747d-4504-b712-4380d2a79f7c", "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-workflowwwtg6/series-workflowwwtg6-build-action-2862831461/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowwwtg6[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"e4a62833adff6ef0fe7c0b90393204fe3c26b5c5","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_EVENTS"],"series_id":"","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["check_kfunc_call","check_mem_access"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"e4a62833adff6ef0fe7c0b90393204fe3c26b5c5","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_EVENTS"],"series_id":"ce442b8d-4868-46a3-8d35-6f7f39f3cf22","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},retest:null,track:KASAN)[1].base-build(0) Phase: Succeeded StartedAt: 2026-09-10 16:17:34 +0000 UTC FinishedAt: 2026-09-10 16:33:23 +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:*ac144724-202a-4e7e-9060-881901200e7b,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-workflowwwtg6/series-workflowwwtg6-convert-artifact-496005727/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": "6c5eed60-747d-4504-b712-4380d2a79f7c", "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-workflowwwtg6/series-workflowwwtg6-build-action-2862831461/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowwwtg6[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"e4a62833adff6ef0fe7c0b90393204fe3c26b5c5","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_EVENTS"],"series_id":"","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["check_kfunc_call","check_mem_access"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"e4a62833adff6ef0fe7c0b90393204fe3c26b5c5","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_EVENTS"],"series_id":"ce442b8d-4868-46a3-8d35-6f7f39f3cf22","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},retest:null,track:KASAN)[2] Phase: Succeeded StartedAt: 2026-09-10 16:33:33 +0000 UTC FinishedAt: 2026-09-10 16:33:33 +0000 UTC Input: nil Output: nil --------- Name: series-workflowwwtg6[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"e4a62833adff6ef0fe7c0b90393204fe3c26b5c5","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_EVENTS"],"series_id":"","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["check_kfunc_call","check_mem_access"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"e4a62833adff6ef0fe7c0b90393204fe3c26b5c5","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_EVENTS"],"series_id":"ce442b8d-4868-46a3-8d35-6f7f39f3cf22","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},retest:null,track:KASAN)[2].abort-if-base-build-failed Phase: Skipped StartedAt: 2026-09-10 16:33:33 +0000 UTC FinishedAt: 2026-09-10 16:33:33 +0000 UTC Input: nil Output: nil --------- Name: series-workflowwwtg6[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"e4a62833adff6ef0fe7c0b90393204fe3c26b5c5","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_EVENTS"],"series_id":"","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["check_kfunc_call","check_mem_access"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"e4a62833adff6ef0fe7c0b90393204fe3c26b5c5","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_EVENTS"],"series_id":"ce442b8d-4868-46a3-8d35-6f7f39f3cf22","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},retest:null,track:KASAN)[3] Phase: Succeeded StartedAt: 2026-09-10 16:33:33 +0000 UTC FinishedAt: 2026-09-10 16:33:43 +0000 UTC Input: nil Output: nil --------- Name: series-workflowwwtg6[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"e4a62833adff6ef0fe7c0b90393204fe3c26b5c5","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_EVENTS"],"series_id":"","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["check_kfunc_call","check_mem_access"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"e4a62833adff6ef0fe7c0b90393204fe3c26b5c5","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_EVENTS"],"series_id":"ce442b8d-4868-46a3-8d35-6f7f39f3cf22","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},retest:null,track:KASAN)[3].save-patched-req Phase: Succeeded StartedAt: 2026-09-10 16:33:33 +0000 UTC FinishedAt: 2026-09-10 16:33:37 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"e4a62833adff6ef0fe7c0b90393204fe3c26b5c5","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_EVENTS"],"series_id":"ce442b8d-4868-46a3-8d35-6f7f39f3cf22","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.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-workflowwwtg6/series-workflowwwtg6-convert-artifact-786865902/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowwwtg6[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"e4a62833adff6ef0fe7c0b90393204fe3c26b5c5","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_EVENTS"],"series_id":"","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["check_kfunc_call","check_mem_access"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"e4a62833adff6ef0fe7c0b90393204fe3c26b5c5","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_EVENTS"],"series_id":"ce442b8d-4868-46a3-8d35-6f7f39f3cf22","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},retest:null,track:KASAN)[4] Phase: Succeeded StartedAt: 2026-09-10 16:33:43 +0000 UTC FinishedAt: 2026-09-10 16:35:40 +0000 UTC Input: nil Output: nil --------- Name: series-workflowwwtg6[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"e4a62833adff6ef0fe7c0b90393204fe3c26b5c5","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_EVENTS"],"series_id":"","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["check_kfunc_call","check_mem_access"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"e4a62833adff6ef0fe7c0b90393204fe3c26b5c5","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_EVENTS"],"series_id":"ce442b8d-4868-46a3-8d35-6f7f39f3cf22","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},retest:null,track:KASAN)[4].boot-test-base Phase: Succeeded StartedAt: 2026-09-10 16:33:43 +0000 UTC FinishedAt: 2026-09-10 16:35:30 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*6c5eed60-747d-4504-b712-4380d2a79f7c,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-workflowwwtg6/series-workflowwwtg6-build-action-2862831461/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-workflowwwtg6[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"e4a62833adff6ef0fe7c0b90393204fe3c26b5c5","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_EVENTS"],"series_id":"","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["check_kfunc_call","check_mem_access"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"e4a62833adff6ef0fe7c0b90393204fe3c26b5c5","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_EVENTS"],"series_id":"ce442b8d-4868-46a3-8d35-6f7f39f3cf22","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},retest:null,track:KASAN)[5] Phase: Succeeded StartedAt: 2026-09-10 16:35:40 +0000 UTC FinishedAt: 2026-09-10 16:35:40 +0000 UTC Input: nil Output: nil --------- Name: series-workflowwwtg6[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"e4a62833adff6ef0fe7c0b90393204fe3c26b5c5","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_EVENTS"],"series_id":"","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["check_kfunc_call","check_mem_access"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"e4a62833adff6ef0fe7c0b90393204fe3c26b5c5","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_EVENTS"],"series_id":"ce442b8d-4868-46a3-8d35-6f7f39f3cf22","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},retest:null,track:KASAN)[5].abort-if-base-boot-failed Phase: Skipped StartedAt: 2026-09-10 16:35:40 +0000 UTC FinishedAt: 2026-09-10 16:35:40 +0000 UTC Input: nil Output: nil --------- Name: series-workflowwwtg6[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"e4a62833adff6ef0fe7c0b90393204fe3c26b5c5","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_EVENTS"],"series_id":"","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["check_kfunc_call","check_mem_access"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"e4a62833adff6ef0fe7c0b90393204fe3c26b5c5","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_EVENTS"],"series_id":"ce442b8d-4868-46a3-8d35-6f7f39f3cf22","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},retest:null,track:KASAN)[6] Phase: Succeeded StartedAt: 2026-09-10 16:35:40 +0000 UTC FinishedAt: 2026-09-10 16:51:45 +0000 UTC Input: nil Output: nil --------- Name: series-workflowwwtg6[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"e4a62833adff6ef0fe7c0b90393204fe3c26b5c5","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_EVENTS"],"series_id":"","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["check_kfunc_call","check_mem_access"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"e4a62833adff6ef0fe7c0b90393204fe3c26b5c5","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_EVENTS"],"series_id":"ce442b8d-4868-46a3-8d35-6f7f39f3cf22","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},retest:null,track:KASAN)[6].patched-build Phase: Succeeded StartedAt: 2026-09-10 16:35:40 +0000 UTC FinishedAt: 2026-09-10 16:51:45 +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:*ac144724-202a-4e7e-9060-881901200e7b,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-workflowwwtg6/series-workflowwwtg6-convert-artifact-786865902/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": "1aef5a15-b94e-4dac-a02b-928e57c463a8", "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-workflowwwtg6/series-workflowwwtg6-build-action-621834242/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowwwtg6[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"e4a62833adff6ef0fe7c0b90393204fe3c26b5c5","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_EVENTS"],"series_id":"","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["check_kfunc_call","check_mem_access"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"e4a62833adff6ef0fe7c0b90393204fe3c26b5c5","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_EVENTS"],"series_id":"ce442b8d-4868-46a3-8d35-6f7f39f3cf22","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},retest:null,track:KASAN)[6].patched-build(0) Phase: Succeeded StartedAt: 2026-09-10 16:35:40 +0000 UTC FinishedAt: 2026-09-10 16:51:35 +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:*ac144724-202a-4e7e-9060-881901200e7b,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-workflowwwtg6/series-workflowwwtg6-convert-artifact-786865902/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": "1aef5a15-b94e-4dac-a02b-928e57c463a8", "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-workflowwwtg6/series-workflowwwtg6-build-action-621834242/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowwwtg6[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"e4a62833adff6ef0fe7c0b90393204fe3c26b5c5","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_EVENTS"],"series_id":"","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["check_kfunc_call","check_mem_access"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"e4a62833adff6ef0fe7c0b90393204fe3c26b5c5","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_EVENTS"],"series_id":"ce442b8d-4868-46a3-8d35-6f7f39f3cf22","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},retest:null,track:KASAN)[7] Phase: Succeeded StartedAt: 2026-09-10 16:51:45 +0000 UTC FinishedAt: 2026-09-10 16:51:45 +0000 UTC Input: nil Output: nil --------- Name: series-workflowwwtg6[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"e4a62833adff6ef0fe7c0b90393204fe3c26b5c5","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_EVENTS"],"series_id":"","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["check_kfunc_call","check_mem_access"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"e4a62833adff6ef0fe7c0b90393204fe3c26b5c5","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_EVENTS"],"series_id":"ce442b8d-4868-46a3-8d35-6f7f39f3cf22","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},retest:null,track:KASAN)[7].abort-if-patched-build-failed Phase: Skipped StartedAt: 2026-09-10 16:51:45 +0000 UTC FinishedAt: 2026-09-10 16:51:45 +0000 UTC Input: nil Output: nil --------- Name: series-workflowwwtg6[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"e4a62833adff6ef0fe7c0b90393204fe3c26b5c5","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_EVENTS"],"series_id":"","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["check_kfunc_call","check_mem_access"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"e4a62833adff6ef0fe7c0b90393204fe3c26b5c5","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_EVENTS"],"series_id":"ce442b8d-4868-46a3-8d35-6f7f39f3cf22","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},retest:null,track:KASAN)[8] Phase: Succeeded StartedAt: 2026-09-10 16:51:45 +0000 UTC FinishedAt: 2026-09-10 16:53:37 +0000 UTC Input: nil Output: nil --------- Name: series-workflowwwtg6[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"e4a62833adff6ef0fe7c0b90393204fe3c26b5c5","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_EVENTS"],"series_id":"","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["check_kfunc_call","check_mem_access"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"e4a62833adff6ef0fe7c0b90393204fe3c26b5c5","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_EVENTS"],"series_id":"ce442b8d-4868-46a3-8d35-6f7f39f3cf22","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},retest:null,track:KASAN)[8].boot-test-patched Phase: Succeeded StartedAt: 2026-09-10 16:51:45 +0000 UTC FinishedAt: 2026-09-10 16:53:27 +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:*1aef5a15-b94e-4dac-a02b-928e57c463a8,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-workflowwwtg6/series-workflowwwtg6-build-action-621834242/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-workflowwwtg6[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"e4a62833adff6ef0fe7c0b90393204fe3c26b5c5","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_EVENTS"],"series_id":"","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["check_kfunc_call","check_mem_access"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"e4a62833adff6ef0fe7c0b90393204fe3c26b5c5","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_EVENTS"],"series_id":"ce442b8d-4868-46a3-8d35-6f7f39f3cf22","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},retest:null,track:KASAN)[10] Phase: Succeeded StartedAt: 2026-09-10 16:53:37 +0000 UTC FinishedAt: 2026-09-10 19:56:25 +0000 UTC Input: nil Output: nil --------- Name: series-workflowwwtg6[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"e4a62833adff6ef0fe7c0b90393204fe3c26b5c5","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_EVENTS"],"series_id":"","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["check_kfunc_call","check_mem_access"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"e4a62833adff6ef0fe7c0b90393204fe3c26b5c5","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_EVENTS"],"series_id":"ce442b8d-4868-46a3-8d35-6f7f39f3cf22","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},retest:null,track:KASAN)[10].run-fuzz Phase: Succeeded StartedAt: 2026-09-10 16:53:37 +0000 UTC FinishedAt: 2026-09-10 19:56:25 +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-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["check_kfunc_call","check_mem_access"],"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:*6c5eed60-747d-4504-b712-4380d2a79f7c,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*1aef5a15-b94e-4dac-a02b-928e57c463a8,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-workflowwwtg6/series-workflowwwtg6-build-action-2862831461/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-workflowwwtg6/series-workflowwwtg6-build-action-621834242/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflowwwtg6[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"e4a62833adff6ef0fe7c0b90393204fe3c26b5c5","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_EVENTS"],"series_id":"","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["check_kfunc_call","check_mem_access"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"e4a62833adff6ef0fe7c0b90393204fe3c26b5c5","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_EVENTS"],"series_id":"ce442b8d-4868-46a3-8d35-6f7f39f3cf22","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},retest:null,track:KASAN)[10].run-fuzz[0] Phase: Succeeded StartedAt: 2026-09-10 16:53:37 +0000 UTC FinishedAt: 2026-09-10 16:53:48 +0000 UTC Input: nil Output: nil --------- Name: series-workflowwwtg6[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"e4a62833adff6ef0fe7c0b90393204fe3c26b5c5","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_EVENTS"],"series_id":"","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["check_kfunc_call","check_mem_access"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"e4a62833adff6ef0fe7c0b90393204fe3c26b5c5","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_EVENTS"],"series_id":"ce442b8d-4868-46a3-8d35-6f7f39f3cf22","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},retest:null,track:KASAN)[10].run-fuzz[0].save-fuzz-config Phase: Succeeded StartedAt: 2026-09-10 16:53:37 +0000 UTC FinishedAt: 2026-09-10 16:53:43 +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-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["check_kfunc_call","check_mem_access"],"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-workflowwwtg6/series-workflowwwtg6-convert-artifact-1092977555/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowwwtg6[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"e4a62833adff6ef0fe7c0b90393204fe3c26b5c5","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_EVENTS"],"series_id":"","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["check_kfunc_call","check_mem_access"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"e4a62833adff6ef0fe7c0b90393204fe3c26b5c5","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_EVENTS"],"series_id":"ce442b8d-4868-46a3-8d35-6f7f39f3cf22","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},retest:null,track:KASAN)[9] Phase: Succeeded StartedAt: 2026-09-10 16:53:37 +0000 UTC FinishedAt: 2026-09-10 16:53:37 +0000 UTC Input: nil Output: nil --------- Name: series-workflowwwtg6[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"e4a62833adff6ef0fe7c0b90393204fe3c26b5c5","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_EVENTS"],"series_id":"","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["check_kfunc_call","check_mem_access"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"e4a62833adff6ef0fe7c0b90393204fe3c26b5c5","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_EVENTS"],"series_id":"ce442b8d-4868-46a3-8d35-6f7f39f3cf22","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},retest:null,track:KASAN)[9].abort-if-patched-boot-failed Phase: Skipped StartedAt: 2026-09-10 16:53:37 +0000 UTC FinishedAt: 2026-09-10 16:53:37 +0000 UTC Input: nil Output: nil --------- Name: series-workflowwwtg6[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"e4a62833adff6ef0fe7c0b90393204fe3c26b5c5","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_EVENTS"],"series_id":"","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["check_kfunc_call","check_mem_access"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"e4a62833adff6ef0fe7c0b90393204fe3c26b5c5","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_EVENTS"],"series_id":"ce442b8d-4868-46a3-8d35-6f7f39f3cf22","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},retest:null,track:KASAN)[10].run-retest Phase: Skipped StartedAt: 2026-09-10 16:53:38 +0000 UTC FinishedAt: 2026-09-10 16:53:38 +0000 UTC Input: nil Output: nil --------- Name: series-workflowwwtg6[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"e4a62833adff6ef0fe7c0b90393204fe3c26b5c5","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_EVENTS"],"series_id":"","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["check_kfunc_call","check_mem_access"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"e4a62833adff6ef0fe7c0b90393204fe3c26b5c5","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_EVENTS"],"series_id":"ce442b8d-4868-46a3-8d35-6f7f39f3cf22","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},retest:null,track:KASAN)[10].run-fuzz[1] Phase: Succeeded StartedAt: 2026-09-10 16:53:48 +0000 UTC FinishedAt: 2026-09-10 19:56:25 +0000 UTC Input: nil Output: nil --------- Name: series-workflowwwtg6[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"e4a62833adff6ef0fe7c0b90393204fe3c26b5c5","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_EVENTS"],"series_id":"","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["check_kfunc_call","check_mem_access"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"e4a62833adff6ef0fe7c0b90393204fe3c26b5c5","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_EVENTS"],"series_id":"ce442b8d-4868-46a3-8d35-6f7f39f3cf22","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},retest:null,track:KASAN)[10].run-fuzz[1].fuzz Phase: Succeeded StartedAt: 2026-09-10 16:53:48 +0000 UTC FinishedAt: 2026-09-10 19:56:15 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*6c5eed60-747d-4504-b712-4380d2a79f7c,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*1aef5a15-b94e-4dac-a02b-928e57c463a8,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-workflowwwtg6/series-workflowwwtg6-build-action-2862831461/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-workflowwwtg6/series-workflowwwtg6-build-action-621834242/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-workflowwwtg6/series-workflowwwtg6-convert-artifact-1092977555/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,}