Name: series-workflowlk68m Phase: Succeeded StartedAt: 2026-08-08 07:05:54 +0000 UTC FinishedAt: 2026-08-08 11:12:39 +0000 UTC Input: nil Output: nil --------- Name: series-workflowlk68m[0] Phase: Succeeded StartedAt: 2026-08-08 07:05:54 +0000 UTC FinishedAt: 2026-08-08 07:28:53 +0000 UTC Input: nil Output: nil --------- Name: series-workflowlk68m[0].run-triage Phase: Succeeded StartedAt: 2026-08-08 07:05:54 +0000 UTC FinishedAt: 2026-08-08 07:28:53 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "net-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git", "commit_hash": "ee78f7f8d894926003943240127a886653084cb1", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "NVME_TCP", "NVME_TARGET_TCP", "NVME_TARGET", "IPV6" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "net-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git", "commit_hash": "ee78f7f8d894926003943240127a886653084cb1", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "NVME_TCP", "NVME_TARGET_TCP", "NVME_TARGET", "IPV6" ], "series_id": "71d137bf-d5fc-4c33-8df6-32cb960cb9b6" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "nvmf_dev_write", "nvme_tcp_create_ctrl", "nvmet_tcp_accept_work", "do_ipv6_setsockopt", "ip6_sock_set_tclass" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db" ], "skip_cover_check": false, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA4IDA3OjI2PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+Mm08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O05WTUVfVENQJiMzNDssCiAgICAmIzM0O05WTUVfVEFSR0VUX1RDUCYjMzQ7LAogICAgJiMzNDtOVk1FX1RBUkdFVCYjMzQ7LAogICAgJiMzNDtJUFY2JiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7bnZtZl9kZXZfd3JpdGUmIzM0OywKICAgICYjMzQ7bnZtZV90Y3BfY3JlYXRlX2N0cmwmIzM0OywKICAgICYjMzQ7bnZtZXRfdGNwX2FjY2VwdF93b3JrJiMzNDssCiAgICAmIzM0O2RvX2lwdjZfc2V0c29ja29wdCYjMzQ7LAogICAgJiMzNDtpcDZfc29ja19zZXRfdGNsYXNzJiMzNDsKICBdLAogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggaW50cm9kdWNlcyBwYXJzaW5nIGZvciBhIG5ldyBOVk1lLW9GIFRDUCBvcHRpb24gKGB0Y2xhc3NgKSBhbmQgYXBwbGllcyBpdCB0byB0aGUgdW5kZXJseWluZyBzb2NrZXQgdXNpbmcgc3RhbmRhcmQgSVB2NiBzb2NrZXQgb3B0aW9uIGhlbHBlcnMuIEl0IGV4dHJhY3RzIHRoZSB0cmFmZmljIGNsYXNzIHNldHRpbmcgbG9naWMgaW50byBhIG5ldyBoZWxwZXIgZnVuY3Rpb24gYGlwNl9zb2NrX3NldF90Y2xhc3NgLiBObyBuZXcgZGF0YSBzdHJ1Y3R1cmVzIGFyZSBhbGxvY2F0ZWQsIGNvcGllZCB0byB1c2VyIHNwYWNlLCBvciBzZW50IG92ZXIgdGhlIG5ldHdvcmsgaW4gYSB3YXkgdGhhdCBjb3VsZCBleHBvc2UgdW5pbml0aWFsaXplZCBtZW1vcnkuIFRoZSB2YXJpYWJsZXMgYW5kIGZpZWxkcyBpbnZvbHZlZCBhcmUgc2ltcGxlIGludGVnZXJzIGFuZCBhcmUgcHJvcGVybHkgaW5pdGlhbGl6ZWQuIFN0YW5kYXJkIEtBU0FOIGZ1enppbmcgaXMgc3VmZmljaWVudCB0byBjYXRjaCBhbnkgcG90ZW50aWFsIG1lbW9yeSBjb3JydXB0aW9uLCBvdXQtb2YtYm91bmRzLCBvciB1c2UtYWZ0ZXItZnJlZSBidWdzLiYjMzQ7LAogICYjMzQ7TmVlZHNLTVNBTiYjMzQ7OiBmYWxzZSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBhZGRzIHN1cHBvcnQgZm9yIHRoZSBgdGNsYXNzYCAoSVB2NiB0cmFmZmljIGNsYXNzKSBvcHRpb24gdG8gdGhlIE5WTWUgb3ZlciBUQ1AgaG9zdCBhbmQgdGFyZ2V0IGRyaXZlcnMuIEl0IG1vZGlmaWVzIHRoZSBOVk1lIGZhYnJpY3Mgb3B0aW9uIHBhcnNpbmcsIHNldHMgdGhlIHRyYWZmaWMgY2xhc3Mgb24gdGhlIFRDUCBzb2NrZXRzIHVzaW5nIGBpcDZfc29ja19zZXRfdGNsYXNzYCwgYW5kIHJlZmFjdG9ycyBJUHY2IHNvY2tldCBnbHVlIHRvIGV4cG9ydCB0aGlzIGZ1bmN0aW9uLiBUaGVzZSBhcmUgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHJlYWNoYWJsZSBjb3JlIG5ldHdvcmtpbmcgYW5kIE5WTWUgZHJpdmVycywgd2hpY2ggY2FuIGJlIHRlc3RlZCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgdXNpbmcgbG9vcGJhY2sgb3IgdmlydHVhbCBuZXR3b3JrIGludGVyZmFjZXMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDggMDc6MjY8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCA4NDc3M2MwNGU2ZGExNGUzNDBhMGVkMGExNjU2ZmYyNzFmMTEzZDM4XG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFNhdCBBdWcgOCAwNzoyNjoyMSAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL252bWUvaG9zdC9mYWJyaWNzLmMgYi9kcml2ZXJzL252bWUvaG9zdC9mYWJyaWNzLmNcbmluZGV4IGFjM2Q0ZjQwMDYwMWYuLjY0M2MwM2RjN2JjYjMgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL252bWUvaG9zdC9mYWJyaWNzLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbnZtZS9ob3N0L2ZhYnJpY3MuY1xuQEAgLTY5NSw2ICYjNDM7Njk1LDcgQEAgc3RhdGljIGNvbnN0IG1hdGNoX3RhYmxlX3Qgb3B0X3Rva2VucyA9IHtcbiBcdHsgTlZNRl9PUFRfTlJfV1JJVEVfUVVFVUVTLFx0XCYjMzQ7bnJfd3JpdGVfcXVldWVzPSVkXCYjMzQ7XHR9LFxuIFx0eyBOVk1GX09QVF9OUl9QT0xMX1FVRVVFUyxcdFwmIzM0O25yX3BvbGxfcXVldWVzPSVkXCYjMzQ7XHR9LFxuIFx0eyBOVk1GX09QVF9UT1MsXHRcdFx0XCYjMzQ7dG9zPSVkXCYjMzQ7XHRcdH0sXG4mIzQzO1x0eyBOVk1GX09QVF9UQ0xBU1MsXHRcdFwmIzM0O3RjbGFzcz0lZFwmIzM0O1x0XHR9LFxuICNpZmRlZiBDT05GSUdfTlZNRV9UQ1BfVExTXG4gXHR7IE5WTUZfT1BUX0tFWVJJTkcsXHRcdFwmIzM0O2tleXJpbmc9JWRcJiMzNDtcdFx0fSxcbiBcdHsgTlZNRl9PUFRfVExTX0tFWSxcdFx0XCYjMzQ7dGxzX2tleT0lZFwmIzM0O1x0XHR9LFxuQEAgLTczNCw2ICYjNDM7NzM1LDcgQEAgc3RhdGljIGludCBudm1mX3BhcnNlX29wdGlvbnMoc3RydWN0IG52bWZfY3RybF9vcHRpb25zICpvcHRzLFxuIFx0b3B0cy1cdTAwM2VoZHJfZGlnZXN0ID0gZmFsc2U7XG4gXHRvcHRzLVx1MDAzZWRhdGFfZGlnZXN0ID0gZmFsc2U7XG4gXHRvcHRzLVx1MDAzZXRvcyA9IC0xOyAvKiBcdTAwM2MgMCA9PSB1c2UgdHJhbnNwb3J0IGRlZmF1bHQgKi9cbiYjNDM7XHRvcHRzLVx1MDAzZXRjbGFzcyA9IC0xOyAvKiBcdTAwM2MgMCA9PSB1c2UgdHJhbnNwb3J0IGRlZmF1bHQgKi9cbiBcdG9wdHMtXHUwMDNldGxzID0gZmFsc2U7XG4gXHRvcHRzLVx1MDAzZXRsc19rZXkgPSBOVUxMO1xuIFx0b3B0cy1cdTAwM2VrZXlyaW5nID0gTlVMTDtcbkBAIC05OTEsNiAmIzQzOzk5MywyMiBAQCBzdGF0aWMgaW50IG52bWZfcGFyc2Vfb3B0aW9ucyhzdHJ1Y3QgbnZtZl9jdHJsX29wdGlvbnMgKm9wdHMsXG4gXHRcdFx0fVxuIFx0XHRcdG9wdHMtXHUwMDNldG9zID0gdG9rZW47XG4gXHRcdFx0YnJlYWs7XG4mIzQzO1x0XHRjYXNlIE5WTUZfT1BUX1RDTEFTUzpcbiYjNDM7XHRcdFx0aWYgKG1hdGNoX2ludChhcmdzLCBcdTAwMjZ0b2tlbikpIHtcbiYjNDM7XHRcdFx0XHRyZXQgPSAtRUlOVkFMO1xuJiM0MztcdFx0XHRcdGdvdG8gb3V0O1xuJiM0MztcdFx0XHR9XG4mIzQzO1x0XHRcdGlmICh0b2tlbiBcdTAwM2MgMCkge1xuJiM0MztcdFx0XHRcdHByX2VycihcJiMzNDtJbnZhbGlkIHRyYWZmaWMgY2xhc3MgJWRcXG5cJiMzNDssIHRva2VuKTtcbiYjNDM7XHRcdFx0XHRyZXQgPSAtRUlOVkFMO1xuJiM0MztcdFx0XHRcdGdvdG8gb3V0O1xuJiM0MztcdFx0XHR9XG4mIzQzO1x0XHRcdGlmICh0b2tlbiBcdTAwM2UgMjU1KSB7XG4mIzQzO1x0XHRcdFx0cHJfd2FybihcJiMzNDtDbGFtcGluZyB0cmFmZmljIGNsYXNzIHRvIDI1NVxcblwmIzM0Oyk7XG4mIzQzO1x0XHRcdFx0dG9rZW4gPSAyNTU7XG4mIzQzO1x0XHRcdH1cbiYjNDM7XHRcdFx0b3B0cy1cdTAwM2V0Y2xhc3MgPSB0b2tlbjtcbiYjNDM7XHRcdFx0YnJlYWs7XG4gXHRcdGNhc2UgTlZNRl9PUFRfS0VZUklORzpcbiBcdFx0XHRpZiAobWF0Y2hfaW50KGFyZ3MsIFx1MDAyNmtleV9pZCkgfHwga2V5X2lkIFx1MDAzYz0gMCkge1xuIFx0XHRcdFx0cmV0ID0gLUVJTlZBTDtcbmRpZmYgLS1naXQgYS9kcml2ZXJzL252bWUvaG9zdC9mYWJyaWNzLmggYi9kcml2ZXJzL252bWUvaG9zdC9mYWJyaWNzLmhcbmluZGV4IGNhZjU1MDNkMDgzMzIuLjNkZmQ0MGJkODk2MDUgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL252bWUvaG9zdC9mYWJyaWNzLmhcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbnZtZS9ob3N0L2ZhYnJpY3MuaFxuQEAgLTY3LDYgJiM0Mzs2Nyw3IEBAIGVudW0ge1xuIFx0TlZNRl9PUFRfS0VZUklOR1x0PSAxIFx1MDAzY1x1MDAzYyAyNixcbiBcdE5WTUZfT1BUX1RMU19LRVlcdD0gMSBcdTAwM2NcdTAwM2MgMjcsXG4gXHROVk1GX09QVF9DT05DQVRcdFx0PSAxIFx1MDAzY1x1MDAzYyAyOCxcbiYjNDM7XHROVk1GX09QVF9UQ0xBU1NcdFx0PSAxIFx1MDAzY1x1MDAzYyAyOSxcbiB9O1xuIFxuIC8qKlxuQEAgLTEwOSw2ICYjNDM7MTEwLDcgQEAgZW51bSB7XG4gICogQG5yX3dyaXRlX3F1ZXVlczogbnVtYmVyIG9mIHF1ZXVlcyBmb3Igd3JpdGUgSS9PXG4gICogQG5yX3BvbGxfcXVldWVzOiBudW1iZXIgb2YgcXVldWVzIGZvciBwb2xsaW5nIEkvT1xuICAqIEB0b3M6IHR5cGUgb2Ygc2VydmljZVxuJiM0MzsgKiBAdGNsYXNzOiBJUHY2IHRyYWZmaWMgY2xhc3NcbiAgKiBAZmFzdF9pb19mYWlsX3RtbzogRmFzdCBJL08gZmFpbCB0aW1lb3V0IGluIHNlY29uZHNcbiAgKi9cbiBzdHJ1Y3QgbnZtZl9jdHJsX29wdGlvbnMge1xuQEAgLTEzOSw2ICYjNDM7MTQxLDcgQEAgc3RydWN0IG52bWZfY3RybF9vcHRpb25zIHtcbiBcdHVuc2lnbmVkIGludFx0XHRucl93cml0ZV9xdWV1ZXM7XG4gXHR1bnNpZ25lZCBpbnRcdFx0bnJfcG9sbF9xdWV1ZXM7XG4gXHRpbnRcdFx0XHR0b3M7XG4mIzQzO1x0aW50XHRcdFx0dGNsYXNzO1xuIFx0aW50XHRcdFx0ZmFzdF9pb19mYWlsX3RtbztcbiB9O1xuIFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbnZtZS9ob3N0L3RjcC5jIGIvZHJpdmVycy9udm1lL2hvc3QvdGNwLmNcbmluZGV4IGJhNWM3YjNlMmE3YzYuLmNhYmJmNjdkMjRmODggMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL252bWUvaG9zdC90Y3AuY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9udm1lL2hvc3QvdGNwLmNcbkBAIC0xODM3LDYgJiM0MzsxODM3LDExIEBAIHN0YXRpYyBpbnQgbnZtZV90Y3BfYWxsb2NfcXVldWUoc3RydWN0IG52bWVfY3RybCAqbmN0cmwsIGludCBxaWQsXG4gXHQvKiBTZXQgc29ja2V0IHR5cGUgb2Ygc2VydmljZSAqL1xuIFx0aWYgKG5jdHJsLVx1MDAzZW9wdHMtXHUwMDNldG9zIFx1MDAzZT0gMClcbiBcdFx0aXBfc29ja19zZXRfdG9zKHF1ZXVlLVx1MDAzZXNvY2stXHUwMDNlc2ssIG5jdHJsLVx1MDAzZW9wdHMtXHUwMDNldG9zKTtcbiYjNDM7I2lmIElTX0VOQUJMRUQoQ09ORklHX0lQVjYpXG4mIzQzO1x0aWYgKG5jdHJsLVx1MDAzZW9wdHMtXHUwMDNldGNsYXNzIFx1MDAzZT0gMCBcdTAwMjZcdTAwMjZcbiYjNDM7XHQgICAgcXVldWUtXHUwMDNlc29jay1cdTAwM2Vzay1cdTAwM2Vza19mYW1pbHkgPT0gQUZfSU5FVDYpXG4mIzQzO1x0XHRpcDZfc29ja19zZXRfdGNsYXNzKHF1ZXVlLVx1MDAzZXNvY2stXHUwMDNlc2ssIG5jdHJsLVx1MDAzZW9wdHMtXHUwMDNldGNsYXNzKTtcbiYjNDM7I2VuZGlmXG4gXG4gXHQvKiBTZXQgMTAgc2Vjb25kcyB0aW1lb3V0IGZvciBpY3Jlc3AgcmVjdm1zZyAqL1xuIFx0cXVldWUtXHUwMDNlc29jay1cdTAwM2Vzay1cdTAwM2Vza19yY3Z0aW1lbyA9IDEwICogSFo7XG5AQCAtMzA0MSw3ICYjNDM7MzA0Niw4IEBAIHN0YXRpYyBzdHJ1Y3QgbnZtZl90cmFuc3BvcnRfb3BzIG52bWVfdGNwX3RyYW5zcG9ydCA9IHtcbiBcdFx0XHQgIE5WTUZfT1BUX0hPU1RfVFJBRERSIHwgTlZNRl9PUFRfQ1RSTF9MT1NTX1RNTyB8XG4gXHRcdFx0ICBOVk1GX09QVF9IRFJfRElHRVNUIHwgTlZNRl9PUFRfREFUQV9ESUdFU1QgfFxuIFx0XHRcdCAgTlZNRl9PUFRfTlJfV1JJVEVfUVVFVUVTIHwgTlZNRl9PUFRfTlJfUE9MTF9RVUVVRVMgfFxuLVx0XHRcdCAgTlZNRl9PUFRfVE9TIHwgTlZNRl9PUFRfSE9TVF9JRkFDRSB8IE5WTUZfT1BUX1RMUyB8XG4mIzQzO1x0XHRcdCAgTlZNRl9PUFRfVE9TIHwgTlZNRl9PUFRfVENMQVNTIHxcbiYjNDM7XHRcdFx0ICBOVk1GX09QVF9IT1NUX0lGQUNFIHwgTlZNRl9PUFRfVExTIHxcbiBcdFx0XHQgIE5WTUZfT1BUX0tFWVJJTkcgfCBOVk1GX09QVF9UTFNfS0VZIHwgTlZNRl9PUFRfQ09OQ0FULFxuIFx0LmNyZWF0ZV9jdHJsXHQ9IG52bWVfdGNwX2NyZWF0ZV9jdHJsLFxuIH07XG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9udm1lL3RhcmdldC90Y3AuYyBiL2RyaXZlcnMvbnZtZS90YXJnZXQvdGNwLmNcbmluZGV4IDc1YTI3NmQ3M2JlM2UuLjFkNjU1MTllYmMwZmIgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL252bWUvdGFyZ2V0L3RjcC5jXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL252bWUvdGFyZ2V0L3RjcC5jXG5AQCAtMTcyNSw2ICYjNDM7MTcyNSwxNCBAQCBzdGF0aWMgaW50IG52bWV0X3RjcF9zZXRfcXVldWVfc29jayhzdHJ1Y3QgbnZtZXRfdGNwX3F1ZXVlICpxdWV1ZSlcbiBcdC8qIFNldCBzb2NrZXQgdHlwZSBvZiBzZXJ2aWNlICovXG4gXHRpZiAoaW5ldC1cdTAwM2VyY3ZfdG9zIFx1MDAzZSAwKVxuIFx0XHRpcF9zb2NrX3NldF90b3Moc29jay1cdTAwM2VzaywgaW5ldC1cdTAwM2VyY3ZfdG9zKTtcbiYjNDM7I2lmIElTX0VOQUJMRUQoQ09ORklHX0lQVjYpXG4mIzQzO1x0aWYgKHNvY2stXHUwMDNlc2stXHUwMDNlc2tfZmFtaWx5ID09IEFGX0lORVQ2KSB7XG4mIzQzO1x0XHR1OCByY3ZfdGNsYXNzID0gaXA2X3RjbGFzcyhpbmV0Nl9zayhzb2NrLVx1MDAzZXNrKS1cdTAwM2VyY3ZfZmxvd2luZm8pO1xuJiM0MztcbiYjNDM7XHRcdGlmIChyY3ZfdGNsYXNzIFx1MDAzZSAwKVxuJiM0MztcdFx0XHRpcDZfc29ja19zZXRfdGNsYXNzKHNvY2stXHUwMDNlc2ssIHJjdl90Y2xhc3MpO1xuJiM0MztcdH1cbiYjNDM7I2VuZGlmXG4gXG4gXHRyZXQgPSAwO1xuIFx0d3JpdGVfbG9ja19iaChcdTAwMjZzb2NrLVx1MDAzZXNrLVx1MDAzZXNrX2NhbGxiYWNrX2xvY2spO1xuZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmV0L2lwdjYuaCBiL2luY2x1ZGUvbmV0L2lwdjYuaFxuaW5kZXggM2RlMDdlNzM4NTM4Zi4uODJlNTdiMzRiYTU3ZiAxMDA2NDRcbi0tLSBhL2luY2x1ZGUvbmV0L2lwdjYuaFxuJiM0MzsmIzQzOyYjNDM7IGIvaW5jbHVkZS9uZXQvaXB2Ni5oXG5AQCAtMTI1Miw2ICYjNDM7MTI1Miw5IEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBpcDZfc29ja19zZXRfcmVjdmVycihzdHJ1Y3Qgc29jayAqc2spXG4gXHRpbmV0Nl9zZXRfYml0KFJFQ1ZFUlI2LCBzayk7XG4gfVxuIFxuJiM0Mzt2b2lkIF9faXA2X3NvY2tfc2V0X3RjbGFzcyhzdHJ1Y3Qgc29jayAqc2ssIGludCB2YWwpO1xuJiM0Mzt2b2lkIGlwNl9zb2NrX3NldF90Y2xhc3Moc3RydWN0IHNvY2sgKnNrLCBpbnQgdmFsKTtcbiYjNDM7XG4gI2RlZmluZSBJUFY2X1BSRUZFUl9TUkNfTUFTSyAoSVBWNl9QUkVGRVJfU1JDX1RNUCB8IElQVjZfUFJFRkVSX1NSQ19QVUJMSUMgfCBcXFxuIFx0XHRcdCAgICAgIElQVjZfUFJFRkVSX1NSQ19DT0EpXG4gXG5kaWZmIC0tZ2l0IGEvbmV0L2lwdjYvaXB2Nl9zb2NrZ2x1ZS5jIGIvbmV0L2lwdjYvaXB2Nl9zb2NrZ2x1ZS5jXG5pbmRleCBiNGM5Nzc0MzRjMmUwLi5jNTlmMjVmYmIzMzZkIDEwMDY0NFxuLS0tIGEvbmV0L2lwdjYvaXB2Nl9zb2NrZ2x1ZS5jXG4mIzQzOyYjNDM7JiM0MzsgYi9uZXQvaXB2Ni9pcHY2X3NvY2tnbHVlLmNcbkBAIC0zNzMsNiAmIzQzOzM3MywyOCBAQCBzdGF0aWMgaW50IGlwdjZfc2V0X29wdF9oZHIoc3RydWN0IHNvY2sgKnNrLCBpbnQgb3B0bmFtZSwgc29ja3B0cl90IG9wdHZhbCxcbiBcdHJldHVybiBlcnI7XG4gfVxuIFxuJiM0Mzt2b2lkIF9faXA2X3NvY2tfc2V0X3RjbGFzcyhzdHJ1Y3Qgc29jayAqc2ssIGludCB2YWwpXG4mIzQzO3tcbiYjNDM7XHR1OCBvbGRfdGNsYXNzID0gaW5ldDZfc2soc2spLVx1MDAzZXRjbGFzcztcbiYjNDM7XG4mIzQzO1x0aWYgKHNrLVx1MDAzZXNrX3R5cGUgPT0gU09DS19TVFJFQU0pIHtcbiYjNDM7XHRcdHZhbCBcdTAwMjY9IH5JTkVUX0VDTl9NQVNLO1xuJiM0MztcdFx0dmFsIHw9IG9sZF90Y2xhc3MgXHUwMDI2IElORVRfRUNOX01BU0s7XG4mIzQzO1x0fVxuJiM0MztcdGlmIChvbGRfdGNsYXNzICE9IHZhbCkge1xuJiM0MztcdFx0V1JJVEVfT05DRShpbmV0Nl9zayhzayktXHUwMDNldGNsYXNzLCB2YWwpO1xuJiM0MztcdFx0c2tfZHN0X3Jlc2V0KHNrKTtcbiYjNDM7XHR9XG4mIzQzO31cbiYjNDM7XG4mIzQzO3ZvaWQgaXA2X3NvY2tfc2V0X3RjbGFzcyhzdHJ1Y3Qgc29jayAqc2ssIGludCB2YWwpXG4mIzQzO3tcbiYjNDM7XHRzb2Nrb3B0X2xvY2tfc29jayhzayk7XG4mIzQzO1x0X19pcDZfc29ja19zZXRfdGNsYXNzKHNrLCB2YWwpO1xuJiM0MztcdHNvY2tvcHRfcmVsZWFzZV9zb2NrKHNrKTtcbiYjNDM7fVxuJiM0MztFWFBPUlRfU1lNQk9MKGlwNl9zb2NrX3NldF90Y2xhc3MpO1xuJiM0MztcbiBpbnQgZG9faXB2Nl9zZXRzb2Nrb3B0KHN0cnVjdCBzb2NrICpzaywgaW50IGxldmVsLCBpbnQgb3B0bmFtZSxcbiBcdFx0ICAgICAgIHNvY2twdHJfdCBvcHR2YWwsIHVuc2lnbmVkIGludCBvcHRsZW4pXG4ge1xuQEAgLTcxMywxNCAmIzQzOzczNSw3IEBAIGludCBkb19pcHY2X3NldHNvY2tvcHQoc3RydWN0IHNvY2sgKnNrLCBpbnQgbGV2ZWwsIGludCBvcHRuYW1lLFxuIFx0XHQvKiBSRkMgMzU0MiwgNi41OiBkZWZhdWx0IHRyYWZmaWMgY2xhc3Mgb2YgMHgwICovXG4gXHRcdGlmICh2YWwgPT0gLTEpXG4gXHRcdFx0dmFsID0gMDtcbi1cdFx0aWYgKHNrLVx1MDAzZXNrX3R5cGUgPT0gU09DS19TVFJFQU0pIHtcbi1cdFx0XHR2YWwgXHUwMDI2PSB+SU5FVF9FQ05fTUFTSztcbi1cdFx0XHR2YWwgfD0gbnAtXHUwMDNldGNsYXNzIFx1MDAyNiBJTkVUX0VDTl9NQVNLO1xuLVx0XHR9XG4tXHRcdGlmIChucC1cdTAwM2V0Y2xhc3MgIT0gdmFsKSB7XG4tXHRcdFx0bnAtXHUwMDNldGNsYXNzID0gdmFsO1xuLVx0XHRcdHNrX2RzdF9yZXNldChzayk7XG4tXHRcdH1cbiYjNDM7XHRcdF9faXA2X3NvY2tfc2V0X3RjbGFzcyhzaywgdmFsKTtcbiBcdFx0cmV0diA9IDA7XG4gXHRcdGJyZWFrO1xuIFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA4IDA3OjI2PC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjJtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmJlc3QtZXhwZW5zaXZlPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtOVk1FX1RDUCYjMzQ7LAogICAgJiMzNDtOVk1FX1RBUkdFVF9UQ1AmIzM0OywKICAgICYjMzQ7TlZNRV9UQVJHRVQmIzM0OywKICAgICYjMzQ7SVBWNiYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O252bWZfZGV2X3dyaXRlJiMzNDssCiAgICAmIzM0O252bWVfdGNwX2NyZWF0ZV9jdHJsJiMzNDssCiAgICAmIzM0O252bWV0X3RjcF9hY2NlcHRfd29yayYjMzQ7LAogICAgJiMzNDtkb19pcHY2X3NldHNvY2tvcHQmIzM0OywKICAgICYjMzQ7aXA2X3NvY2tfc2V0X3RjbGFzcyYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBhZGRzIHN1cHBvcnQgZm9yIHRoZSBgdGNsYXNzYCAoSVB2NiB0cmFmZmljIGNsYXNzKSBvcHRpb24gdG8gdGhlIE5WTWUgb3ZlciBUQ1AgaG9zdCBhbmQgdGFyZ2V0IGRyaXZlcnMuIEl0IG1vZGlmaWVzIHRoZSBOVk1lIGZhYnJpY3Mgb3B0aW9uIHBhcnNpbmcsIHNldHMgdGhlIHRyYWZmaWMgY2xhc3Mgb24gdGhlIFRDUCBzb2NrZXRzIHVzaW5nIGBpcDZfc29ja19zZXRfdGNsYXNzYCwgYW5kIHJlZmFjdG9ycyBJUHY2IHNvY2tldCBnbHVlIHRvIGV4cG9ydCB0aGlzIGZ1bmN0aW9uLiBUaGVzZSBhcmUgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHJlYWNoYWJsZSBjb3JlIG5ldHdvcmtpbmcgYW5kIE5WTWUgZHJpdmVycywgd2hpY2ggY2FuIGJlIHRlc3RlZCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgdXNpbmcgbG9vcGJhY2sgb3IgdmlydHVhbCBuZXR3b3JrIGludGVyZmFjZXMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZQppZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5CnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuCgpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOgotIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuCi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuCi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LgotIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwKICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuCi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsCiAgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuCi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSkKICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuCgpJZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoCnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLgoKV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086CjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuCiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLgogICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnMKICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuCjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLgogICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCiAgIEFsc28gY2hlY2sgJiMzNDtkZXBlbmRzIG9uJiMzNDsgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzCiAgIG5lZWRlZCBmb3IgS2J1aWxkIHRvIGNvbXBpbGUgdGhlIGNvZGUgc3RhdGljYWxseSBpbnRvIHZtbGludXguIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncwogICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCA4NDc3M2MwNGU2ZGExNGUzNDBhMGVkMGExNjU2ZmYyNzFmMTEzZDM4CkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIFNhdCBBdWcgOCAwNzoyNjoyMSAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbnZtZS9ob3N0L2ZhYnJpY3MuYyBiL2RyaXZlcnMvbnZtZS9ob3N0L2ZhYnJpY3MuYwppbmRleCBhYzNkNGY0MDA2MDFmLi42NDNjMDNkYzdiY2IzIDEwMDY0NAotLS0gYS9kcml2ZXJzL252bWUvaG9zdC9mYWJyaWNzLmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9udm1lL2hvc3QvZmFicmljcy5jCkBAIC02OTUsNiAmIzQzOzY5NSw3IEBAIHN0YXRpYyBjb25zdCBtYXRjaF90YWJsZV90IG9wdF90b2tlbnMgPSB7CiAJeyBOVk1GX09QVF9OUl9XUklURV9RVUVVRVMsCSYjMzQ7bnJfd3JpdGVfcXVldWVzPSVkJiMzNDsJfSwKIAl7IE5WTUZfT1BUX05SX1BPTExfUVVFVUVTLAkmIzM0O25yX3BvbGxfcXVldWVzPSVkJiMzNDsJfSwKIAl7IE5WTUZfT1BUX1RPUywJCQkmIzM0O3Rvcz0lZCYjMzQ7CQl9LAomIzQzOwl7IE5WTUZfT1BUX1RDTEFTUywJCSYjMzQ7dGNsYXNzPSVkJiMzNDsJCX0sCiAjaWZkZWYgQ09ORklHX05WTUVfVENQX1RMUwogCXsgTlZNRl9PUFRfS0VZUklORywJCSYjMzQ7a2V5cmluZz0lZCYjMzQ7CQl9LAogCXsgTlZNRl9PUFRfVExTX0tFWSwJCSYjMzQ7dGxzX2tleT0lZCYjMzQ7CQl9LApAQCAtNzM0LDYgJiM0Mzs3MzUsNyBAQCBzdGF0aWMgaW50IG52bWZfcGFyc2Vfb3B0aW9ucyhzdHJ1Y3QgbnZtZl9jdHJsX29wdGlvbnMgKm9wdHMsCiAJb3B0cy0mZ3Q7aGRyX2RpZ2VzdCA9IGZhbHNlOwogCW9wdHMtJmd0O2RhdGFfZGlnZXN0ID0gZmFsc2U7CiAJb3B0cy0mZ3Q7dG9zID0gLTE7IC8qICZsdDsgMCA9PSB1c2UgdHJhbnNwb3J0IGRlZmF1bHQgKi8KJiM0MzsJb3B0cy0mZ3Q7dGNsYXNzID0gLTE7IC8qICZsdDsgMCA9PSB1c2UgdHJhbnNwb3J0IGRlZmF1bHQgKi8KIAlvcHRzLSZndDt0bHMgPSBmYWxzZTsKIAlvcHRzLSZndDt0bHNfa2V5ID0gTlVMTDsKIAlvcHRzLSZndDtrZXlyaW5nID0gTlVMTDsKQEAgLTk5MSw2ICYjNDM7OTkzLDIyIEBAIHN0YXRpYyBpbnQgbnZtZl9wYXJzZV9vcHRpb25zKHN0cnVjdCBudm1mX2N0cmxfb3B0aW9ucyAqb3B0cywKIAkJCX0KIAkJCW9wdHMtJmd0O3RvcyA9IHRva2VuOwogCQkJYnJlYWs7CiYjNDM7CQljYXNlIE5WTUZfT1BUX1RDTEFTUzoKJiM0MzsJCQlpZiAobWF0Y2hfaW50KGFyZ3MsICZhbXA7dG9rZW4pKSB7CiYjNDM7CQkJCXJldCA9IC1FSU5WQUw7CiYjNDM7CQkJCWdvdG8gb3V0OwomIzQzOwkJCX0KJiM0MzsJCQlpZiAodG9rZW4gJmx0OyAwKSB7CiYjNDM7CQkJCXByX2VycigmIzM0O0ludmFsaWQgdHJhZmZpYyBjbGFzcyAlZFxuJiMzNDssIHRva2VuKTsKJiM0MzsJCQkJcmV0ID0gLUVJTlZBTDsKJiM0MzsJCQkJZ290byBvdXQ7CiYjNDM7CQkJfQomIzQzOwkJCWlmICh0b2tlbiAmZ3Q7IDI1NSkgewomIzQzOwkJCQlwcl93YXJuKCYjMzQ7Q2xhbXBpbmcgdHJhZmZpYyBjbGFzcyB0byAyNTVcbiYjMzQ7KTsKJiM0MzsJCQkJdG9rZW4gPSAyNTU7CiYjNDM7CQkJfQomIzQzOwkJCW9wdHMtJmd0O3RjbGFzcyA9IHRva2VuOwomIzQzOwkJCWJyZWFrOwogCQljYXNlIE5WTUZfT1BUX0tFWVJJTkc6CiAJCQlpZiAobWF0Y2hfaW50KGFyZ3MsICZhbXA7a2V5X2lkKSB8fCBrZXlfaWQgJmx0Oz0gMCkgewogCQkJCXJldCA9IC1FSU5WQUw7CmRpZmYgLS1naXQgYS9kcml2ZXJzL252bWUvaG9zdC9mYWJyaWNzLmggYi9kcml2ZXJzL252bWUvaG9zdC9mYWJyaWNzLmgKaW5kZXggY2FmNTUwM2QwODMzMi4uM2RmZDQwYmQ4OTYwNSAxMDA2NDQKLS0tIGEvZHJpdmVycy9udm1lL2hvc3QvZmFicmljcy5oCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbnZtZS9ob3N0L2ZhYnJpY3MuaApAQCAtNjcsNiAmIzQzOzY3LDcgQEAgZW51bSB7CiAJTlZNRl9PUFRfS0VZUklORwk9IDEgJmx0OyZsdDsgMjYsCiAJTlZNRl9PUFRfVExTX0tFWQk9IDEgJmx0OyZsdDsgMjcsCiAJTlZNRl9PUFRfQ09OQ0FUCQk9IDEgJmx0OyZsdDsgMjgsCiYjNDM7CU5WTUZfT1BUX1RDTEFTUwkJPSAxICZsdDsmbHQ7IDI5LAogfTsKIAogLyoqCkBAIC0xMDksNiAmIzQzOzExMCw3IEBAIGVudW0gewogICogQG5yX3dyaXRlX3F1ZXVlczogbnVtYmVyIG9mIHF1ZXVlcyBmb3Igd3JpdGUgSS9PCiAgKiBAbnJfcG9sbF9xdWV1ZXM6IG51bWJlciBvZiBxdWV1ZXMgZm9yIHBvbGxpbmcgSS9PCiAgKiBAdG9zOiB0eXBlIG9mIHNlcnZpY2UKJiM0MzsgKiBAdGNsYXNzOiBJUHY2IHRyYWZmaWMgY2xhc3MKICAqIEBmYXN0X2lvX2ZhaWxfdG1vOiBGYXN0IEkvTyBmYWlsIHRpbWVvdXQgaW4gc2Vjb25kcwogICovCiBzdHJ1Y3QgbnZtZl9jdHJsX29wdGlvbnMgewpAQCAtMTM5LDYgJiM0MzsxNDEsNyBAQCBzdHJ1Y3QgbnZtZl9jdHJsX29wdGlvbnMgewogCXVuc2lnbmVkIGludAkJbnJfd3JpdGVfcXVldWVzOwogCXVuc2lnbmVkIGludAkJbnJfcG9sbF9xdWV1ZXM7CiAJaW50CQkJdG9zOwomIzQzOwlpbnQJCQl0Y2xhc3M7CiAJaW50CQkJZmFzdF9pb19mYWlsX3RtbzsKIH07CiAKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbnZtZS9ob3N0L3RjcC5jIGIvZHJpdmVycy9udm1lL2hvc3QvdGNwLmMKaW5kZXggYmE1YzdiM2UyYTdjNi4uY2FiYmY2N2QyNGY4OCAxMDA2NDQKLS0tIGEvZHJpdmVycy9udm1lL2hvc3QvdGNwLmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9udm1lL2hvc3QvdGNwLmMKQEAgLTE4MzcsNiAmIzQzOzE4MzcsMTEgQEAgc3RhdGljIGludCBudm1lX3RjcF9hbGxvY19xdWV1ZShzdHJ1Y3QgbnZtZV9jdHJsICpuY3RybCwgaW50IHFpZCwKIAkvKiBTZXQgc29ja2V0IHR5cGUgb2Ygc2VydmljZSAqLwogCWlmIChuY3RybC0mZ3Q7b3B0cy0mZ3Q7dG9zICZndDs9IDApCiAJCWlwX3NvY2tfc2V0X3RvcyhxdWV1ZS0mZ3Q7c29jay0mZ3Q7c2ssIG5jdHJsLSZndDtvcHRzLSZndDt0b3MpOwomIzQzOyNpZiBJU19FTkFCTEVEKENPTkZJR19JUFY2KQomIzQzOwlpZiAobmN0cmwtJmd0O29wdHMtJmd0O3RjbGFzcyAmZ3Q7PSAwICZhbXA7JmFtcDsKJiM0MzsJICAgIHF1ZXVlLSZndDtzb2NrLSZndDtzay0mZ3Q7c2tfZmFtaWx5ID09IEFGX0lORVQ2KQomIzQzOwkJaXA2X3NvY2tfc2V0X3RjbGFzcyhxdWV1ZS0mZ3Q7c29jay0mZ3Q7c2ssIG5jdHJsLSZndDtvcHRzLSZndDt0Y2xhc3MpOwomIzQzOyNlbmRpZgogCiAJLyogU2V0IDEwIHNlY29uZHMgdGltZW91dCBmb3IgaWNyZXNwIHJlY3Ztc2cgKi8KIAlxdWV1ZS0mZ3Q7c29jay0mZ3Q7c2stJmd0O3NrX3JjdnRpbWVvID0gMTAgKiBIWjsKQEAgLTMwNDEsNyAmIzQzOzMwNDYsOCBAQCBzdGF0aWMgc3RydWN0IG52bWZfdHJhbnNwb3J0X29wcyBudm1lX3RjcF90cmFuc3BvcnQgPSB7CiAJCQkgIE5WTUZfT1BUX0hPU1RfVFJBRERSIHwgTlZNRl9PUFRfQ1RSTF9MT1NTX1RNTyB8CiAJCQkgIE5WTUZfT1BUX0hEUl9ESUdFU1QgfCBOVk1GX09QVF9EQVRBX0RJR0VTVCB8CiAJCQkgIE5WTUZfT1BUX05SX1dSSVRFX1FVRVVFUyB8IE5WTUZfT1BUX05SX1BPTExfUVVFVUVTIHwKLQkJCSAgTlZNRl9PUFRfVE9TIHwgTlZNRl9PUFRfSE9TVF9JRkFDRSB8IE5WTUZfT1BUX1RMUyB8CiYjNDM7CQkJICBOVk1GX09QVF9UT1MgfCBOVk1GX09QVF9UQ0xBU1MgfAomIzQzOwkJCSAgTlZNRl9PUFRfSE9TVF9JRkFDRSB8IE5WTUZfT1BUX1RMUyB8CiAJCQkgIE5WTUZfT1BUX0tFWVJJTkcgfCBOVk1GX09QVF9UTFNfS0VZIHwgTlZNRl9PUFRfQ09OQ0FULAogCS5jcmVhdGVfY3RybAk9IG52bWVfdGNwX2NyZWF0ZV9jdHJsLAogfTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbnZtZS90YXJnZXQvdGNwLmMgYi9kcml2ZXJzL252bWUvdGFyZ2V0L3RjcC5jCmluZGV4IDc1YTI3NmQ3M2JlM2UuLjFkNjU1MTllYmMwZmIgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbnZtZS90YXJnZXQvdGNwLmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9udm1lL3RhcmdldC90Y3AuYwpAQCAtMTcyNSw2ICYjNDM7MTcyNSwxNCBAQCBzdGF0aWMgaW50IG52bWV0X3RjcF9zZXRfcXVldWVfc29jayhzdHJ1Y3QgbnZtZXRfdGNwX3F1ZXVlICpxdWV1ZSkKIAkvKiBTZXQgc29ja2V0IHR5cGUgb2Ygc2VydmljZSAqLwogCWlmIChpbmV0LSZndDtyY3ZfdG9zICZndDsgMCkKIAkJaXBfc29ja19zZXRfdG9zKHNvY2stJmd0O3NrLCBpbmV0LSZndDtyY3ZfdG9zKTsKJiM0MzsjaWYgSVNfRU5BQkxFRChDT05GSUdfSVBWNikKJiM0MzsJaWYgKHNvY2stJmd0O3NrLSZndDtza19mYW1pbHkgPT0gQUZfSU5FVDYpIHsKJiM0MzsJCXU4IHJjdl90Y2xhc3MgPSBpcDZfdGNsYXNzKGluZXQ2X3NrKHNvY2stJmd0O3NrKS0mZ3Q7cmN2X2Zsb3dpbmZvKTsKJiM0MzsKJiM0MzsJCWlmIChyY3ZfdGNsYXNzICZndDsgMCkKJiM0MzsJCQlpcDZfc29ja19zZXRfdGNsYXNzKHNvY2stJmd0O3NrLCByY3ZfdGNsYXNzKTsKJiM0MzsJfQomIzQzOyNlbmRpZgogCiAJcmV0ID0gMDsKIAl3cml0ZV9sb2NrX2JoKCZhbXA7c29jay0mZ3Q7c2stJmd0O3NrX2NhbGxiYWNrX2xvY2spOwpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZXQvaXB2Ni5oIGIvaW5jbHVkZS9uZXQvaXB2Ni5oCmluZGV4IDNkZTA3ZTczODUzOGYuLjgyZTU3YjM0YmE1N2YgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvbmV0L2lwdjYuaAomIzQzOyYjNDM7JiM0MzsgYi9pbmNsdWRlL25ldC9pcHY2LmgKQEAgLTEyNTIsNiAmIzQzOzEyNTIsOSBAQCBzdGF0aWMgaW5saW5lIHZvaWQgaXA2X3NvY2tfc2V0X3JlY3ZlcnIoc3RydWN0IHNvY2sgKnNrKQogCWluZXQ2X3NldF9iaXQoUkVDVkVSUjYsIHNrKTsKIH0KIAomIzQzO3ZvaWQgX19pcDZfc29ja19zZXRfdGNsYXNzKHN0cnVjdCBzb2NrICpzaywgaW50IHZhbCk7CiYjNDM7dm9pZCBpcDZfc29ja19zZXRfdGNsYXNzKHN0cnVjdCBzb2NrICpzaywgaW50IHZhbCk7CiYjNDM7CiAjZGVmaW5lIElQVjZfUFJFRkVSX1NSQ19NQVNLIChJUFY2X1BSRUZFUl9TUkNfVE1QIHwgSVBWNl9QUkVGRVJfU1JDX1BVQkxJQyB8IFwKIAkJCSAgICAgIElQVjZfUFJFRkVSX1NSQ19DT0EpCiAKZGlmZiAtLWdpdCBhL25ldC9pcHY2L2lwdjZfc29ja2dsdWUuYyBiL25ldC9pcHY2L2lwdjZfc29ja2dsdWUuYwppbmRleCBiNGM5Nzc0MzRjMmUwLi5jNTlmMjVmYmIzMzZkIDEwMDY0NAotLS0gYS9uZXQvaXB2Ni9pcHY2X3NvY2tnbHVlLmMKJiM0MzsmIzQzOyYjNDM7IGIvbmV0L2lwdjYvaXB2Nl9zb2NrZ2x1ZS5jCkBAIC0zNzMsNiAmIzQzOzM3MywyOCBAQCBzdGF0aWMgaW50IGlwdjZfc2V0X29wdF9oZHIoc3RydWN0IHNvY2sgKnNrLCBpbnQgb3B0bmFtZSwgc29ja3B0cl90IG9wdHZhbCwKIAlyZXR1cm4gZXJyOwogfQogCiYjNDM7dm9pZCBfX2lwNl9zb2NrX3NldF90Y2xhc3Moc3RydWN0IHNvY2sgKnNrLCBpbnQgdmFsKQomIzQzO3sKJiM0MzsJdTggb2xkX3RjbGFzcyA9IGluZXQ2X3NrKHNrKS0mZ3Q7dGNsYXNzOwomIzQzOwomIzQzOwlpZiAoc2stJmd0O3NrX3R5cGUgPT0gU09DS19TVFJFQU0pIHsKJiM0MzsJCXZhbCAmYW1wOz0gfklORVRfRUNOX01BU0s7CiYjNDM7CQl2YWwgfD0gb2xkX3RjbGFzcyAmYW1wOyBJTkVUX0VDTl9NQVNLOwomIzQzOwl9CiYjNDM7CWlmIChvbGRfdGNsYXNzICE9IHZhbCkgewomIzQzOwkJV1JJVEVfT05DRShpbmV0Nl9zayhzayktJmd0O3RjbGFzcywgdmFsKTsKJiM0MzsJCXNrX2RzdF9yZXNldChzayk7CiYjNDM7CX0KJiM0Mzt9CiYjNDM7CiYjNDM7dm9pZCBpcDZfc29ja19zZXRfdGNsYXNzKHN0cnVjdCBzb2NrICpzaywgaW50IHZhbCkKJiM0Mzt7CiYjNDM7CXNvY2tvcHRfbG9ja19zb2NrKHNrKTsKJiM0MzsJX19pcDZfc29ja19zZXRfdGNsYXNzKHNrLCB2YWwpOwomIzQzOwlzb2Nrb3B0X3JlbGVhc2Vfc29jayhzayk7CiYjNDM7fQomIzQzO0VYUE9SVF9TWU1CT0woaXA2X3NvY2tfc2V0X3RjbGFzcyk7CiYjNDM7CiBpbnQgZG9faXB2Nl9zZXRzb2Nrb3B0KHN0cnVjdCBzb2NrICpzaywgaW50IGxldmVsLCBpbnQgb3B0bmFtZSwKIAkJICAgICAgIHNvY2twdHJfdCBvcHR2YWwsIHVuc2lnbmVkIGludCBvcHRsZW4pCiB7CkBAIC03MTMsMTQgJiM0Mzs3MzUsNyBAQCBpbnQgZG9faXB2Nl9zZXRzb2Nrb3B0KHN0cnVjdCBzb2NrICpzaywgaW50IGxldmVsLCBpbnQgb3B0bmFtZSwKIAkJLyogUkZDIDM1NDIsIDYuNTogZGVmYXVsdCB0cmFmZmljIGNsYXNzIG9mIDB4MCAqLwogCQlpZiAodmFsID09IC0xKQogCQkJdmFsID0gMDsKLQkJaWYgKHNrLSZndDtza190eXBlID09IFNPQ0tfU1RSRUFNKSB7Ci0JCQl2YWwgJmFtcDs9IH5JTkVUX0VDTl9NQVNLOwotCQkJdmFsIHw9IG5wLSZndDt0Y2xhc3MgJmFtcDsgSU5FVF9FQ05fTUFTSzsKLQkJfQotCQlpZiAobnAtJmd0O3RjbGFzcyAhPSB2YWwpIHsKLQkJCW5wLSZndDt0Y2xhc3MgPSB2YWw7Ci0JCQlza19kc3RfcmVzZXQoc2spOwotCQl9CiYjNDM7CQlfX2lwNl9zb2NrX3NldF90Y2xhc3Moc2ssIHZhbCk7CiAJCXJldHYgPSAwOwogCQlicmVhazsKIAo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wOCAwNzoyNjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0NTI2CgkJCQkJCQlvdXRwdXQ6IDE5CgkJCQkJCQl0aG91Z2h0czogNDkxCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk5WTWUgb3ZlciBUQ1AgSVB2NiBUcmFmZmljIENsYXNzIFN1cHBvcnQ6IEEgUmV2aWV3KioKCk9rYXksIHNvIEkmIzM5O3ZlIGJlZW4gbG9va2luZyBvdmVyIHRoaXMgcGF0Y2ggdGhhdCBpbnRyb2R1Y2VzIGB0Y2xhc3NgIChJUHY2IHRyYWZmaWMgY2xhc3MpIHN1cHBvcnQgZm9yIE5WTWUgb3ZlciBUQ1AuIEZyb20gYSBmdW5jdGlvbmFsIHBlcnNwZWN0aXZlLCBpdCYjMzk7cyBwcmV0dHkgc3RyYWlnaHRmb3J3YXJkOiB3ZSYjMzk7cmUgbW9kaWZ5aW5nIHRoZSBOVk1lIG92ZXIgVENQIGRyaXZlciBhbmQgdGhlIElQdjYgc29ja2V0IGdsdWUgdG8gaGFuZGxlIHRoaXMuIEl0IGxvb2tzIGxpa2UgdGhlIGNvcmUgY2hhbmdlcyBhcmUgaW4gdGhlc2UgZmlsZXM6IGBkcml2ZXJzL252bWUvaG9zdC9mYWJyaWNzLmNgLCBgZHJpdmVycy9udm1lL2hvc3QvdGNwLmNgLCBgZHJpdmVycy9udm1lL3RhcmdldC90Y3AuY2AsIGBpbmNsdWRlL25ldC9pcHY2LmhgLCBhbmQgYG5ldC9pcHY2L2lwdjZfc29ja2dsdWUuY2AuCgpTcGVjaWZpY2FsbHksIGBkcml2ZXJzL252bWUvaG9zdC9mYWJyaWNzLmNgIG5vdyBwYXJzZXMgdGhlIGB0Y2xhc3M9JWRgIG9wdGlvbiB3aXRoaW4gYG52bWZfcGFyc2Vfb3B0aW9uc2AuIFRoZSBob3N0LXNpZGUgVENQIGRyaXZlciAoYGRyaXZlcnMvbnZtZS9ob3N0L3RjcC5jYCkgc2V0cyB0aGUgYHRjbGFzc2Agb24gdGhlIHNvY2tldCB1c2luZyBgaXA2X3NvY2tfc2V0X3RjbGFzc2Agd2hlbiBgdGNsYXNzICZndDs9IDBgIGFuZCBpdOKAmXMgYW4gSVB2NiBzb2NrZXQuIFRoZSB0YXJnZXQtc2lkZSBUQ1AgZHJpdmVyIChgZHJpdmVycy9udm1lL3RhcmdldC90Y3AuY2ApIGRvZXMgdGhlIHNhbWUsIGJ1dCBzZXRzIHRoZSB0Y2xhc3Mgd2hlbiBgcmN2X3RjbGFzcyAmZ3Q7IDBgLiBBIGNydWNpYWwgY2hhbmdlIGlzIHRoZSBleHRyYWN0aW9uIGFuZCBleHBvcnQgb2YgYF9faXA2X3NvY2tfc2V0X3RjbGFzc2AgYW5kIGBpcDZfc29ja19zZXRfdGNsYXNzYCBmcm9tIGBkb19pcHY2X3NldHNvY2tvcHRgLgoKVGhpcyBpcyBhIHJlYWNoYWJsZSBjaGFuZ2UgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzLCB3aGljaCBpcyBpbXBvcnRhbnQgdG8gcmVtZW1iZXIgZm9yIGZ1enppbmcuIFNpbmNlIE5WTWUgb3ZlciBUQ1AgY2FuIHdvcmsgb3ZlciBsb29wYmFjayBvciB2aXJ0dWFsIGludGVyZmFjZXMsIHRoaXMgaXMgc29tZXRoaW5nIHdlIHNob3VsZCBkZWZpbml0ZWx5IGJlIHRlc3RpbmcuCgpOb3csIG15IGluaXRpYWwgdGhvdWdodCBpcywgd2hlcmUgYXJlIHRoZSBmdXp6aW5nIHRhcmdldHM/IGBudm1mX3BhcnNlX29wdGlvbnNgIGlzIGNlcnRhaW5seSByZWxldmFudCwgYnV0IGl0JiMzOTtzIGEgZ2VuZXJhbCBwYXJzaW5nIGZ1bmN0aW9uLiBUaGlua2luZyBtb3JlIHNwZWNpZmljYWxseSwgSSB0aGluayBgbnZtZV90Y3BfYWxsb2NfcXVldWVgLCBhbmQgYG52bWV0X3RjcF9zZXRfcXVldWVfc29ja2AgYXJlIGV4Y2VsbGVudCB0YXJnZXRzIGFzIHdlbGwuIFBsdXMsIGBfX2lwNl9zb2NrX3NldF90Y2xhc3NgIGFuZCBgaXA2X3NvY2tfc2V0X3RjbGFzc2AgYXJlIGtleSBmb3IgaGFuZGxpbmcgdGhlIGFjdHVhbCBzb2NrZXQgb3B0aW9ucy4KCkJlZm9yZSBJIGRpdmUgdG9vIGRlZXAgaW50byBmdXp6aW5nLCBJIHdhbnQgdG8gY29uZmlybSB0aGUgbmVjZXNzYXJ5IGNvbmZpZ3VyYXRpb25zLiBJJiMzOTtsbCBuZWVkIHRvIGRvdWJsZS1jaGVjayB0aGF0IGBDT05GSUdfTlZNRV9UQ1BgLCBgQ09ORklHX05WTUVfVEFSR0VUX1RDUGAsIGFuZCBgQ09ORklHX0lQVjZgIGFyZSBhbGwgZW5hYmxlZCwgdG8gZW5zdXJlIHRoZSBmZWF0dXJlcyBhcmUgYWN0dWFsbHkgY29tcGlsZWQgaW4gYW5kLCB0aGVyZWZvcmUsIGFjY2Vzc2libGUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDggMDc6MjY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIE5WTUVfVENQJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbnZtZS9ob3N0L0tjb25maWc9Njc9Y29uZmlnIE5WTUVfRkNcbi0tXG5kcml2ZXJzL252bWUvaG9zdC9LY29uZmlnLTgyLVxuZHJpdmVycy9udm1lL2hvc3QvS2NvbmZpZzo4Mzpjb25maWcgTlZNRV9UQ1BcbmRyaXZlcnMvbnZtZS9ob3N0L0tjb25maWctODQtXHR0cmlzdGF0ZSBcJiMzNDtOVk0gRXhwcmVzcyBvdmVyIEZhYnJpY3MgVENQIGhvc3QgZHJpdmVyXCYjMzQ7XG4tLVxuZHJpdmVycy9udm1lL2hvc3QvS2NvbmZpZy05OS1cbmRyaXZlcnMvbnZtZS9ob3N0L0tjb25maWc6MTAwOmNvbmZpZyBOVk1FX1RDUF9UTFNcbmRyaXZlcnMvbnZtZS9ob3N0L0tjb25maWctMTAxLVx0Ym9vbCBcJiMzNDtOVk1lIG92ZXIgRmFicmljcyBUQ1AgVExTIGVuY3J5cHRpb24gc3VwcG9ydFwmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA4IDA3OjI2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDU3MzcKCQkJCQkJCW91dHB1dDogMjEKCQkJCQkJCXRob3VnaHRzOiAxMQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlLCBhbmQgZGVsaXZlcmVkIGFzIGEgZmlyc3QtcGVyc29uIHN1bW1hcnk6CgoqKk5WTWUvVENQIEludmVzdGlnYXRpb24gVGltZSoqCgpSaWdodCwgbGV0JiMzOTtzIGRpdmUgaW50byB0aGlzLiBUaGUgbWVudGFsIGNoZWNrbGlzdCBpcyBydW5uaW5nLCBhbmQgSSYjMzk7bSB6ZXJvaW5nIGluIG9uIGBOVk1FX1RBUkdFVF9UQ1BgLiBUaGlzIG1lYW5zIHdlJiMzOTtyZSBkZWFsaW5nIHdpdGggTlZNZSBvdmVyIFRDUCwgc28gdGhlIHVzdWFsIHN1c3BlY3RzIOKAkyBuZXR3b3JrIGNvbmZpZ3VyYXRpb24sIE1UVSwgcG90ZW50aWFsIFRDUCBvdmVyaGVhZCDigJMgYXJlIHRvcCBvZiBtaW5kLiBJJiMzOTttIGltbWVkaWF0ZWx5IHRoaW5raW5nIGFib3V0IHRoZSBzcGVjaWZpYyB0YXJnZXQgaW1wbGVtZW50YXRpb24gd2UmIzM5O3JlIGRlYWxpbmcgd2l0aCwgdG9vLiBJcyBpdCBzb21ldGhpbmcgcm9idXN0IGxpa2UgU1BESywgb3IgYSBtb3JlIGJhc2ljIG9wZW4tc291cmNlIGltcGxlbWVudGF0aW9uPyBLbm93aW5nIHRoYXQgd2lsbCBpbmZsdWVuY2Ugd2hlcmUgSSBzdGFydCBsb29raW5nIGZvciBjb25maWd1cmF0aW9uIHBpdGZhbGxzLgoKTXkgaW5pdGlhbCBsaW5lIG9mIGlucXVpcnkgd2lsbCBiZSBhcm91bmQgY29ubmVjdGlvbiBlc3RhYmxpc2htZW50LiBBcmUgd2Ugc2VlaW5nIGNvbnNpc3RlbnQgY29ubmVjdGlvbiBhdHRlbXB0cywgb3IgYXJlIHRoZSBjbGllbnRzIGhhdmluZyB0cm91YmxlIGV2ZW4gcmVhY2hpbmcgdGhlIHRhcmdldD8gSWYgd2UgYXJlLCBJIG5lZWQgdG8gY2hlY2sgdGhlIGJhc2ljczogZmlyZXdhbGwgcnVsZXMsIHJvdXRpbmcsIGFuZCBvZiBjb3Vyc2UsIHRoZSB0YXJnZXTigJlzIGxpc3RlbmluZyBhZGRyZXNzIGFuZCBwb3J0LiBJJiMzOTttIGFsc28gZ29pbmcgdG8gY2hlY2ssIGFyZSB3ZSBzZWVpbmcgYW55IHNvY2tldCBlcnJvcnMgb24gZWl0aGVyIHRoZSBjbGllbnQgb3IgdGhlIHRhcmdldD8gVGhvc2UgY2FuIGJlIHZlcnkgaW5mb3JtYXRpdmUuIElmIGNvbm5lY3Rpb25zIGFyZSBmYWlsaW5nLCB3aGF0IGFyZSB0aGUgZXJyb3IgY29kZXM/IERvIHdlIGhhdmUgbG9ncywgb3IgaXMgdGhlcmUgYSB3YXkgdG8gZW5hYmxlIHRoZW0/CgpJZiB3ZSYjMzk7cmUgZ2V0dGluZyBjb25uZWN0aW9ucywgdGhlIG5leHQgcGhhc2Ugd2lsbCBiZSBmb2N1c2VkIG9uIGFjdHVhbCBkYXRhIHRyYW5zZmVyLiBJJiMzOTtsbCBuZWVkIHRvIGNoZWNrIHRoZSBuZWdvdGlhdGVkIGNvbm5lY3Rpb24gcGFyYW1ldGVycywgdmVyaWZ5IHRoZSBmbG93IGNvbnRyb2wgc2V0dGluZ3MsIGFuZCBleGFtaW5lIHRoZSBUQ1Agd2luZG93IHNpemVzLiBBcmUgdGhleSBvcHRpbWl6ZWQgZm9yIE5WTWUmIzM5O3MgaGlnaC1zcGVlZCwgbG93LWxhdGVuY3kgcmVxdWlyZW1lbnRzPyBBcmUgd2UgcG90ZW50aWFsbHkgYnVtcGluZyB1cCBhZ2FpbnN0IGFueSBjb25nZXN0aW9uIGlzc3Vlcywgb3IgaXMgdGhlcmUgYW55IHBhY2tldCBsb3NzPyBJZiB0aGVyZSYjMzk7cyBwZXJmb3JtYW5jZSBkZWdyYWRhdGlvbiwgSSYjMzk7bGwgcHJvYmFibHkgc3RhcnQgdXNpbmcgdG9vbHMgbGlrZSBgdGNwZHVtcGAgb3IgYFdpcmVzaGFya2AgdG8gY2FwdHVyZSB0aGUgdHJhZmZpYyBhbmQgYW5hbHl6ZSB0aGUgTlZNZSBjb21tYW5kcyBhbmQgcmVzcG9uc2VzIGF0IGEgbG93IGxldmVsLiBBcmUgd2Ugc2VlaW5nIGEgaGlnaCByYXRlIG9mIHJldHJhbnNtaXNzaW9ucz8gQXJlIHRoZXJlIHNpZ25pZmljYW50IGRlbGF5cyBpbiB0aGUgSS9PIHBhdGggdGhhdCBhcmUgbm90IGF0dHJpYnV0YWJsZSB0byB0aGUgc3RvcmFnZSBtZWRpdW0/CgpGaW5hbGx5LCB0aGUgdGFyZ2V0JiMzOTtzIGNvbmZpZ3VyYXRpb24gaXMga2V5LiBXaGF0JiMzOTtzIHRoZSBxdWV1ZSBkZXB0aD8gSXMgaXQgYXBwcm9wcmlhdGVseSBzZXQgZm9yIHRoZSB3b3JrbG9hZHM/IEFyZSB0aGVyZSBhbnkgcmVzb3VyY2UgbGltaXRhdGlvbnMgb24gdGhlIHRhcmdldCB0aGF0IG1pZ2h0IGJlIGltcGFjdGluZyBwZXJmb3JtYW5jZT8gQWxzbywgYXJlIHdlIGxldmVyYWdpbmcgYW55IHNwZWNpZmljIE5WTWUvVENQIG9wdGltaXphdGlvbnMgb3Igb2ZmbG9hZHMgYXZhaWxhYmxlIG9uIHRoZSBuZXR3b3JrIGFkYXB0ZXJzIG9yIHRhcmdldCBjb250cm9sbGVycz8gVGhvc2UgYXJlIHRoZSBraW5kcyBvZiB0aGluZ3MgdGhhdCBjYW4gbWFrZSBvciBicmVhayBhbiBOVk1lL1RDUCBkZXBsb3ltZW50LiBBbmQsIG9mIGNvdXJzZSwgdGhlIGZpcm13YXJlIGxldmVscyBvbiBldmVyeXRoaW5nIG5lZWQgdG8gYmUgdmVyaWZpZWQuIEdvdCB0byBiZSBzdXJlIHRoYXQgdGhlIG5ldHdvcmsgYWRhcHRlciBkcml2ZXJzIGFuZCB0aGUgdGFyZ2V0IGZpcm13YXJlIGFyZSB1cCB0byBkYXRlIGFuZCBjb21wYXRpYmxlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA4IDA3OjI2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBOVk1FX1RBUkdFVF9UQ1AmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9udm1lL3RhcmdldC9LY29uZmlnPTc0PWNvbmZpZyBOVk1FX1RBUkdFVF9GQ0xPT1Bcbi0tXG5kcml2ZXJzL252bWUvdGFyZ2V0L0tjb25maWctODYtXG5kcml2ZXJzL252bWUvdGFyZ2V0L0tjb25maWc6ODc6Y29uZmlnIE5WTUVfVEFSR0VUX1RDUFxuZHJpdmVycy9udm1lL3RhcmdldC9LY29uZmlnLTg4LVx0dHJpc3RhdGUgXCYjMzQ7TlZNZSBvdmVyIEZhYnJpY3MgVENQIHRhcmdldCBzdXBwb3J0XCYjMzQ7XG4tLVxuZHJpdmVycy9udm1lL3RhcmdldC9LY29uZmlnLTk2LVxuZHJpdmVycy9udm1lL3RhcmdldC9LY29uZmlnOjk3OmNvbmZpZyBOVk1FX1RBUkdFVF9UQ1BfVExTXG5kcml2ZXJzL252bWUvdGFyZ2V0L0tjb25maWctOTgtXHRib29sIFwmIzM0O05WTWUgb3ZlciBGYWJyaWNzIFRDUCB0YXJnZXQgVExTIGVuY3J5cHRpb24gc3VwcG9ydFwmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA4IDA3OjI2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDY0NTkKCQkJCQkJCW91dHB1dDogMzYKCQkJCQkJCXRob3VnaHRzOiAxMwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgbGV0JiMzOTtzIHNlZS4gSGVyZSYjMzk7cyBteSB0aG91Z2h0IHByb2Nlc3M6CgoqKk5WTWUtb0YgRGVwZW5kZW5jaWVzIC0gQSBRdWljayBDaGVjayoqCgpSaWdodCwgbGV0JiMzOTtzIGp1c3QgbWFrZSBzdXJlIHRoZXJlIGFyZW4mIzM5O3QgYW55IHNuZWFreSwgdW5leHBlY3RlZCBkZXBlbmRlbmNpZXMgbHVya2luZyBhcm91bmQgd2l0aCBOVk1lL1RDUC4gSSBuZWVkIHRvIHF1aWNrbHkgZGV0ZXJtaW5lIGlmIGl0IHJlbGllcyBvbiBhbnl0aGluZyBvdXRzaWRlIG9mIHdoYXQgSSYjMzk7ZCBleHBlY3QgZm9yIGEgc3RhbmRhcmQgTlZNZSBvdmVyIEZhYnJpY3MgaW1wbGVtZW50YXRpb24sIHBlcmhhcHMgc29tZSBjb3JlIGZ1bmN0aW9uYWxpdHksIG5ldHdvcmtpbmcgbGlicmFyaWVzLCBvciBzcGVjaWZpYyBrZXJuZWwgbW9kdWxlcy4gSXQmIzM5O3MgYWx3YXlzIGdvb2QgcHJhY3RpY2UgdG8gdmVyaWZ5IGFzc3VtcHRpb25zLCBldmVuIG9uIHNvbWV0aGluZyBzZWVtaW5nbHkgc3RyYWlnaHRmb3J3YXJkIGxpa2UgdGhpcywgc28gSSYjMzk7bGwgc2VlIGlmIEkgY2FuIGZpbmQgYSBsaXN0IG9mIGl0cyBkZXBlbmRlbmNpZXMgb3IgaWYgSSBuZWVkIHRvIGRpZyBpbnRvIHRoZSBjb2RlIGEgbGl0dGxlLiBObyBwb2ludCBnb2luZyBmdXJ0aGVyIHdpdGhvdXQgbWFraW5nIHN1cmUgSSBoYXZlIGEgc29saWQgZm91bmRhdGlvbmFsIHVuZGVyc3RhbmRpbmcgb2YgaG93IGl0IGludGVncmF0ZXMgd2l0aGluIHRoZSB3aWRlciBzdG9yYWdlIGVjb3N5c3RlbS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD44LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wOCAwNzoyNjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbnZtZS9ob3N0L0tjb25maWcmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiA4MCwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAyMAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgIDgwOlx0XG4gIDgxOlx0XHQgIElmIHVuc3VyZSwgc2F5IE4uXG4gIDgyOlx0XG4gIDgzOlx0Y29uZmlnIE5WTUVfVENQXG4gIDg0Olx0XHR0cmlzdGF0ZSBcJiMzNDtOVk0gRXhwcmVzcyBvdmVyIEZhYnJpY3MgVENQIGhvc3QgZHJpdmVyXCYjMzQ7XG4gIDg1Olx0XHRkZXBlbmRzIG9uIElORVRcbiAgODY6XHRcdGRlcGVuZHMgb24gQkxPQ0tcbiAgODc6XHRcdHNlbGVjdCBDUkMzMlxuICA4ODpcdFx0c2VsZWN0IE5FVF9DUkMzMkNcbiAgODk6XHRcdHNlbGVjdCBOVk1FX0ZBQlJJQ1NcbiAgOTA6XHRcdGhlbHBcbiAgOTE6XHRcdCAgVGhpcyBwcm92aWRlcyBzdXBwb3J0IGZvciB0aGUgTlZNZSBvdmVyIEZhYnJpY3MgcHJvdG9jb2wgdXNpbmdcbiAgOTI6XHRcdCAgdGhlIFRDUCB0cmFuc3BvcnQuICBUaGlzIGFsbG93cyB5b3UgdG8gdXNlIHJlbW90ZSBibG9jayBkZXZpY2VzXG4gIDkzOlx0XHQgIGV4cG9ydGVkIHVzaW5nIHRoZSBOVk1lIHByb3RvY29sIHNldC5cbiAgOTQ6XHRcbiAgOTU6XHRcdCAgVG8gY29uZmlndXJlIGEgTlZNZSBvdmVyIEZhYnJpY3MgY29udHJvbGxlciB1c2UgdGhlIG52bWUtY2xpIHRvb2xcbiAgOTY6XHRcdCAgZnJvbSBodHRwczovL2dpdGh1Yi5jb20vbGludXgtbnZtZS9udm1lLWNsaS5cbiAgOTc6XHRcbiAgOTg6XHRcdCAgSWYgdW5zdXJlLCBzYXkgTi5cbiAgOTk6XHRcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD45LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wOCAwNzoyNjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA2OTI3CgkJCQkJCQlvdXRwdXQ6IDM2CgkJCQkJCQl0aG91Z2h0czogMTIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIGFuIGV4cGVydCYjMzk7cyBpbnRlcm5hbCBtb25vbG9ndWU6CgoqKkNoZWNraW5nIE5WTUVfVEFSR0VUX1RDUCBEZXBlbmRlbmNpZXMqKgoKUmlnaHQsIGxldCYjMzk7cyBkaXZlIGluLiBUaGUgTlZNZSBvdmVyIFRDUCBzcGFjZSBpcyBnZXR0aW5nIG1vcmUgbWF0dXJlLCBzbyBJIG5lZWQgdG8gcXVpY2tseSByZWZyZXNoIG15IHVuZGVyc3RhbmRpbmcgb2YgaXRzIGRlcGVuZGVuY2llcy4gRmlyc3QsIEkgbmVlZCB0byBtYWtlIHN1cmUgSSYjMzk7bSBjcnlzdGFsIGNsZWFyIG9uIGhvdyBhbGwgdGhlIHBpZWNlcyBmaXQgdG9nZXRoZXIuIFdoYXQgYXJlIHRoZSBrZXkgdW5kZXJseWluZyB0ZWNobm9sb2dpZXMgdGhhdCBOVk1lIG92ZXIgVENQIHJlbGllcyBvbj8gT2J2aW91c2x5LCBUQ1AgaXRzZWxmLCBidXQgd2hhdCYjMzk7cyB0aGUgYXJjaGl0ZWN0dXJhbCBpbnRlcnBsYXkgd2l0aCBSRE1BIG9yIG90aGVyIHRyYW5zcG9ydCBwcm90b2NvbHMgdGhhdCBtaWdodCBiZSByZWxldmFudD8gSXMgdGhlcmUgYSBwYXJ0aWN1bGFyIGtlcm5lbCB2ZXJzaW9uIHdoZXJlIHRoZXNlIGVuaGFuY2VtZW50cyBhcmUgYmFrZWQgaW4/IEFyZSB3ZSB0YWxraW5nIGFib3V0IHNwZWNpZmljIHZlcnNpb25zIG9mIHRoZSBOVk1lIHNwZWNpZmljYXRpb24/IEkmIzM5O20gdGhpbmtpbmcgYWJvdXQgZHJpdmVyIHN1cHBvcnQ7IHdoYXQmIzM5O3MgdGhlIGxhbmRzY2FwZSB0aGVyZT8gQXJlIHRoZXJlIG9wZW4tc291cmNlIGltcGxlbWVudGF0aW9ucyB0byB0cmFjaywgYW5kIGRvIHRoZXkgaGF2ZSBhbnkgcmVwb3J0ZWQgaXNzdWVzIG9yIGRlcGVuZGVuY2llcyB0aGF0IG1pZ2h0IGluZmx1ZW5jZSBob3cgSSBhcHByb2FjaCB0aGlzPyBBbmQgdGhlbiB0aGVyZSYjMzk7cyB0aGUgYnJvYWRlciBlY29zeXN0ZW0g4oCTIGFyZSB0aGVyZSBzcGVjaWZpYyBuZXR3b3JrIGludGVyZmFjZSBjYXJkcyAoTklDcykgdGhhdCB3b3JrIGJldHRlciwgb3IgYW55IHN0b3JhZ2UgYXJyYXlzIHRoYXQgYXJlIHBhcnRpY3VsYXJseSB3ZWxsLXN1aXRlZCB0byB0aGUgTlZNZSBvdmVyIFRDUCBwYXJhZGlnbT8gQmFzaWNhbGx5LCBJIG5lZWQgYSBxdWljayBzYW5pdHkgY2hlY2sgdG8gYXZvaWQgd2FzdGluZyB0aW1lIGdvaW5nIGRvd24gcmFiYml0IGhvbGVzIGFuZCBtYWtlIHN1cmUgSSYjMzk7bSB1cCB0byBzcGVlZCBvbiBhbnl0aGluZyB0aGF0IG1pZ2h0IGltcGFjdCB0aGUgZGVzaWduIG9yIHRyb3VibGVzaG9vdGluZyBvZiBhbiBOVk1lLW9GIHNvbHV0aW9uLiBUaGlzIGlzIGFib3V0IGVmZmljaWVudGx5IHN0YXlpbmcgaW5mb3JtZWQgc28gdGhhdCBJIGNhbiB0YWNrbGUgdGhlIGNvcmUgY2hhbGxlbmdlcyB3aXRob3V0IHN0dW1ibGluZyBvbiBzb21ldGhpbmcgb2J2aW91cy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDggMDc6MjY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL252bWUvdGFyZ2V0L0tjb25maWcmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiA4MCwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAyMAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgIDgwOlx0XHRkZXBlbmRzIG9uIE5WTUVfVEFSR0VUX0ZDXG4gIDgxOlx0XHRoZWxwXG4gIDgyOlx0XHQgIFRoaXMgZW5hYmxlcyB0aGUgTlZNZSBGQyBsb29wYmFjayB0ZXN0IHN1cHBvcnQsIHdoaWNoIGNhbiBiZSB1c2VmdWxcbiAgODM6XHRcdCAgdG8gdGVzdCBOVk1lLUZDIHRyYW5zcG9ydCBpbnRlcmZhY2VzLlxuICA4NDpcdFxuICA4NTpcdFx0ICBJZiB1bnN1cmUsIHNheSBOLlxuICA4NjpcdFxuICA4NzpcdGNvbmZpZyBOVk1FX1RBUkdFVF9UQ1BcbiAgODg6XHRcdHRyaXN0YXRlIFwmIzM0O05WTWUgb3ZlciBGYWJyaWNzIFRDUCB0YXJnZXQgc3VwcG9ydFwmIzM0O1xuICA4OTpcdFx0ZGVwZW5kcyBvbiBJTkVUXG4gIDkwOlx0XHRkZXBlbmRzIG9uIE5WTUVfVEFSR0VUXG4gIDkxOlx0XHRoZWxwXG4gIDkyOlx0XHQgIFRoaXMgZW5hYmxlcyB0aGUgTlZNZSBUQ1AgdGFyZ2V0IHN1cHBvcnQsIHdoaWNoIGFsbG93cyBleHBvcnRpbmcgTlZNZVxuICA5MzpcdFx0ICBkZXZpY2VzIG92ZXIgVENQLlxuICA5NDpcdFxuICA5NTpcdFx0ICBJZiB1bnN1cmUsIHNheSBOLlxuICA5NjpcdFxuICA5NzpcdGNvbmZpZyBOVk1FX1RBUkdFVF9UQ1BfVExTXG4gIDk4Olx0XHRib29sIFwmIzM0O05WTWUgb3ZlciBGYWJyaWNzIFRDUCB0YXJnZXQgVExTIGVuY3J5cHRpb24gc3VwcG9ydFwmIzM0O1xuICA5OTpcdFx0ZGVwZW5kcyBvbiBOVk1FX1RBUkdFVF9UQ1BcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDggMDc6MjY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNzUyOAoJCQkJCQkJb3V0cHV0OiAyMAoJCQkJCQkJdGhvdWdodHM6IDExMwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBJbml0aWFsIEFzc2Vzc21lbnQgb2YgdGhlIE5WTWUvVENQIEltcGxlbWVudGF0aW9uKioKCk9rYXksIHNvIHdlJiMzOTtyZSBkaXZpbmcgaW50byBOVk1lIG92ZXIgVENQLCBhbmQgaW1tZWRpYXRlbHkgSSBzZWUgdGhlIGNvcmUgY29tcG9uZW50cyB3ZSYjMzk7cmUgZGVhbGluZyB3aXRoOiBgTlZNRV9UQ1BgLCBgTlZNRV9UQVJHRVRfVENQYCwgYE5WTUVfVEFSR0VUYCwgYW5kLCBvZiBjb3Vyc2UsIElQdjYuIFRoYXQmIzM5O3MgdGhlIGJhc2VsaW5lLCB0aGUgZm91bmRhdGlvbi4gTWFrZXMgc2Vuc2UsIGdpdmVuIHRoZSB1bmRlcmx5aW5nIHRlY2hub2xvZ2llcy4KCk5vdywgbGV0JiMzOTtzIGZvY3VzIG9uIHRoZSBjcml0aWNhbCBhcmVhcy4gTXkgaW50dWl0aW9uLCBhbmQgZXhwZXJpZW5jZSwgdGVsbHMgbWUgdG8gem9vbSBpbiBvbiB0aGVzZSBmdW5jdGlvbnM6IGBudm1mX3BhcnNlX29wdGlvbnNgLCBgbnZtZV90Y3BfYWxsb2NfcXVldWVgLCBgbnZtZXRfdGNwX3NldF9xdWV1ZV9zb2NrYCwgYW5kIHRoZSBJUHY2IHNvY2tldCBjb25maWd1cmF0aW9uIGZ1bmN0aW9uczogYF9faXA2X3NvY2tfc2V0X3RjbGFzc2AgYW5kIGBpcDZfc29ja19zZXRfdGNsYXNzYC4gVGhlc2Ugc2VlbSBsaWtlIHRoZSByZWFsIGxpbmNocGlucyBpbiB0aGUgY29ubmVjdGlvbiBhbmQgc2V0dXAgcHJvY2Vzcy4KCkZpcnN0IHVwOiBgbnZtZl9wYXJzZV9vcHRpb25zYC4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaG93IHRoZSB1c2VyLXByb3ZpZGVkIG9wdGlvbnMgYXJlIGJlaW5nIGhhbmRsZWQuIElzIGl0IGEgc3RhdGljIGZ1bmN0aW9uLCBpbnRlcm5hbCB0byB0aGUgbW9kdWxlLCBvciBpcyBpdCBleHBvcnRlZCwgY2FsbGFibGUgZnJvbSBvdGhlciBwYXJ0cyBvZiB0aGUga2VybmVsPyBUaGF0JiMzOTtzIGdvaW5nIHRvIGRpY3RhdGUgdGhlIGxldmVsIG9mIGludGVncmF0aW9uIGFuZCBob3cgbXVjaCBjb250cm9sIHdlIGhhdmUgb3ZlciB0aGUgcGFyYW1ldGVyIHBhcnNpbmcgcHJvY2Vzcy4gTGV0JiMzOTtzIHN0YXJ0IHRoZXJlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wOCAwNzoyNjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtudm1mX3BhcnNlX29wdGlvbnMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9udm1lL2hvc3QvZmFicmljcy5jPTY3Nz1zdGF0aWMgY29uc3QgbWF0Y2hfdGFibGVfdCBvcHRfdG9rZW5zID0ge1xuLS1cbmRyaXZlcnMvbnZtZS9ob3N0L2ZhYnJpY3MuYy03MTUtXG5kcml2ZXJzL252bWUvaG9zdC9mYWJyaWNzLmM6NzE2OnN0YXRpYyBpbnQgbnZtZl9wYXJzZV9vcHRpb25zKHN0cnVjdCBudm1mX2N0cmxfb3B0aW9ucyAqb3B0cyxcbmRyaXZlcnMvbnZtZS9ob3N0L2ZhYnJpY3MuYy03MTctXHRcdGNvbnN0IGNoYXIgKmJ1Zilcbi0tXG5kcml2ZXJzL252bWUvaG9zdC9mYWJyaWNzLmM9MTMyNj1udm1mX2NyZWF0ZV9jdHJsKHN0cnVjdCBkZXZpY2UgKmRldiwgY29uc3QgY2hhciAqYnVmKVxuLS1cbmRyaXZlcnMvbnZtZS9ob3N0L2ZhYnJpY3MuYy0xMzM2LVxuZHJpdmVycy9udm1lL2hvc3QvZmFicmljcy5jOjEzMzc6XHRyZXQgPSBudm1mX3BhcnNlX29wdGlvbnMob3B0cywgYnVmKTtcbmRyaXZlcnMvbnZtZS9ob3N0L2ZhYnJpY3MuYy0xMzM4LVx0aWYgKHJldClcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDggMDc6MjY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogODE1OQoJCQkJCQkJb3V0cHV0OiAyMAoJCQkJCQkJdGhvdWdodHM6IDM3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHN1bW1hcnksIGFzIHRoZSB0aG91Z2h0IHByb2Nlc3MgdW5mb2xkczoKCioqRGlnZ2luZyBpbnRvIHRoZSBOVk1lLW9GIENvbnRyb2xsZXIgQ3JlYXRpb24qKgoKT2theSwgc28gYG52bWZfcGFyc2Vfb3B0aW9uc2AgaXMgYSBzdGF0aWMgZnVuY3Rpb24uIFRoYXQgaW1tZWRpYXRlbHkgbmFycm93cyBkb3duIHdoZXJlIGl0JiMzOTtzIHVzZWQuIFNpbmNlIGl0JiMzOTtzIHN0YXRpYywgaXQmIzM5O3Mgc2NvcGVkIHdpdGhpbiB0aGUgc2FtZSBjb21waWxhdGlvbiB1bml0LCBhbmQgSSYjMzk7bGwgbmVlZCB0byBmaWd1cmUgb3V0IHdoaWNoIGZ1bmN0aW9uIGluIHRoZSBzYW1lIGZpbGUgY2FsbHMgaXQuIFRoZSB0ZXh0IHBvaW50cyBkaXJlY3RseSB0byBgbnZtZl9jcmVhdGVfY3RybGAuIEFscmlnaHQsIGxldCYjMzk7cyBnbyBkaXJlY3RseSB0byBgbnZtZl9jcmVhdGVfY3RybGAgYW5kIHNlZSB3aGF0IGl0JiMzOTtzIGRvaW5nLiBIb3BlZnVsbHksIGl0JiMzOTtsbCBwcm92aWRlIGVub3VnaCBjb250ZXh0IHRvIHVuZGVyc3RhbmQgd2h5IGBudm1mX3BhcnNlX29wdGlvbnNgIGlzIHJlbGV2YW50IGluIHRoZSBmaXJzdCBwbGFjZS4gVGhpcyBwcm9iYWJseSBtZWFucyBpdCBpcyBiZWluZyB1c2VkIHRvIHBhcnNlIGNvbW1hbmQgbGluZSBwYXJhbWV0ZXJzIG9yIHNpbWlsYXIgdG8gY29uZmlndXJlIHRoZSBjb250cm9sbGVyLiBMZXQmIzM5O3Mgc2VlLi4uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA4IDA3OjI2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O252bWZfY3JlYXRlX2N0cmwmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9udm1lL2hvc3QvZmFicmljcy5jPTEzMjU9c3RhdGljIHN0cnVjdCBudm1lX2N0cmwgKlxuZHJpdmVycy9udm1lL2hvc3QvZmFicmljcy5jOjEzMjY6bnZtZl9jcmVhdGVfY3RybChzdHJ1Y3QgZGV2aWNlICpkZXYsIGNvbnN0IGNoYXIgKmJ1ZilcbmRyaXZlcnMvbnZtZS9ob3N0L2ZhYnJpY3MuYy0xMzI3LXtcbi0tXG5kcml2ZXJzL252bWUvaG9zdC9mYWJyaWNzLmM9MTQwMz1zdGF0aWMgc3NpemVfdCBudm1mX2Rldl93cml0ZShzdHJ1Y3QgZmlsZSAqZmlsZSwgY29uc3QgY2hhciBfX3VzZXIgKnVidWYsXG4tLVxuZHJpdmVycy9udm1lL2hvc3QvZmFicmljcy5jLTE0MjMtXG5kcml2ZXJzL252bWUvaG9zdC9mYWJyaWNzLmM6MTQyNDpcdGN0cmwgPSBudm1mX2NyZWF0ZV9jdHJsKG52bWZfZGV2aWNlLCBidWYpO1xuZHJpdmVycy9udm1lL2hvc3QvZmFicmljcy5jLTE0MjUtXHRpZiAoSVNfRVJSKGN0cmwpKSB7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA4IDA3OjI2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDg2MDcKCQkJCQkJCW91dHB1dDogMjAKCQkJCQkJCXRob3VnaHRzOiAzNAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBhIGJyZWFrZG93biBvZiBteSB0aG91Z2h0IHByb2Nlc3M6CgoqKkRpdmluZyBpbnRvIHRoZSBOVk1lLW9GIENvbnRyb2wgUGF0aCoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgYG52bWZfY3JlYXRlX2N0cmxgLiBJbnRlcmVzdGluZy4gVGhlIGNvZGUgaW5kaWNhdGVzIGl0JiMzOTtzIGEgc3RhdGljIGZ1bmN0aW9uLCB3aGljaCBtZWFucyBpdCYjMzk7cyBzY29wZWQgdG8gdGhlIGN1cnJlbnQgZmlsZS4gQW5kIHRoZSBjYWxsIGdyYXBoIHNob3dzIGl0JiMzOTtzIGludm9rZWQgYnkgYG52bWZfZGV2X3dyaXRlYC4gUmlnaHQsIHNvIGBudm1mX2Rldl93cml0ZWAgaXMgdGhlIGVudHJ5IHBvaW50LCBhbmQgaXQmIzM5O3MgcmVzcG9uc2libGUgZm9yLCB3ZWxsLCB3cml0aW5nIHRvIHRoZSBOVk1lLW9GIGRldmljZSwgYW5kIGxpa2VseSB0aGUgY3JlYXRpb24gb2Ygc29tZSBjb250cm9sIHN0cnVjdHVyZXMuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoYXQmIzM5O3MgaGFwcGVuaW5nIHdoZW4gYSB3cml0ZSBvcGVyYXRpb24gdHJpZ2dlcnMgY29udHJvbCBwYXRoIGFjdGlvbnMuIFRoZXJlZm9yZSwgbGV0JiMzOTtzIGRyaWxsIGRvd24gaW50byBgbnZtZl9kZXZfd3JpdGVgLiBVbmRlcnN0YW5kaW5nIHRoaXMgZnVuY3Rpb24gc2hvdWxkIHByb3ZpZGUgY3J1Y2lhbCBjb250ZXh0IHRvIGhvdyBhbmQgd2hlbiBgbnZtZl9jcmVhdGVfY3RybGAgaXMgYWN0dWFsbHkgY2FsbGVkLiBJIG5lZWQgdG8gc2VlIHdoYXQmIzM5O3MgaGFwcGVuaW5nIGZyb20gdGhlIGRldmljZSB3cml0ZSBvcGVyYXRpb24gYWxsIHRoZSB3YXkgdG8gdGhlIGNvbnRyb2xsZXIgY3JlYXRpb24uIEl0IHNvdW5kcyBsaWtlIHRoZXJlJiMzOTtzIHNvbWUgZGV2aWNlIHNldHVwIGhhcHBlbmluZyBvbiB3cml0ZSwgYW5kIEkmIzM5O2QgYmV0IGNvbnRyb2xsZXIgY3JlYXRpb24gYW5kIGluaXRpYWxpemF0aW9uIGFyZSBwYXJ0IG9mIHRoYXQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA4IDA3OjI2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O252bWZfZGV2X3dyaXRlJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbnZtZS9ob3N0L2ZhYnJpY3MuYz0xNDAxPXN0YXRpYyBERUZJTkVfTVVURVgobnZtZl9kZXZfbXV0ZXgpO1xuZHJpdmVycy9udm1lL2hvc3QvZmFicmljcy5jLTE0MDItXG5kcml2ZXJzL252bWUvaG9zdC9mYWJyaWNzLmM6MTQwMzpzdGF0aWMgc3NpemVfdCBudm1mX2Rldl93cml0ZShzdHJ1Y3QgZmlsZSAqZmlsZSwgY29uc3QgY2hhciBfX3VzZXIgKnVidWYsXG5kcml2ZXJzL252bWUvaG9zdC9mYWJyaWNzLmMtMTQwNC1cdFx0c2l6ZV90IGNvdW50LCBsb2ZmX3QgKnBvcylcbi0tXG5kcml2ZXJzL252bWUvaG9zdC9mYWJyaWNzLmM9MTQ5Nz1zdGF0aWMgY29uc3Qgc3RydWN0IGZpbGVfb3BlcmF0aW9ucyBudm1mX2Rldl9mb3BzID0ge1xuZHJpdmVycy9udm1lL2hvc3QvZmFicmljcy5jLTE0OTgtXHQub3duZXJcdFx0PSBUSElTX01PRFVMRSxcbmRyaXZlcnMvbnZtZS9ob3N0L2ZhYnJpY3MuYzoxNDk5Olx0LndyaXRlXHRcdD0gbnZtZl9kZXZfd3JpdGUsXG5kcml2ZXJzL252bWUvaG9zdC9mYWJyaWNzLmMtMTUwMC1cdC5yZWFkXHRcdD0gc2VxX3JlYWQsXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA4IDA3OjI3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDkxNDYKCQkJCQkJCW91dHB1dDogMjIKCQkJCQkJCXRob3VnaHRzOiAyOQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOgoKKipEaXZpbmcgaW50byB0aGUgTlZNZS1vRiBXcml0ZSBQYXRoKioKCk9rYXksIHNvIHdlJiMzOTtyZSBzdGFydGluZyBhdCBgbnZtZl9kZXZfd3JpdGVgLiBUaGF0JiMzOTtzIHRoZSBsb2dpY2FsIGVudHJ5IHBvaW50IGZvciB3cml0ZXMgaW4gdGhlIE5WTWUtb3Zlci1GYWJyaWNzIHN0YWNrLCB3aGljaCBpcyBleGFjdGx5IHdoZXJlIEkmIzM5O2QgZXhwZWN0IHRvIGJlLiBOb3csIHRvIHRyYWNlIHRoZSBmbG93IGFuZCB1bmRlcnN0YW5kIHRoZSBzcGVjaWZpY3Mgb2YgaG93IHRoaXMgb3BlcmF0aW9uIGdldHMgaGFuZGxlZCwgbGV0JiMzOTtzIGxvb2sgYXQgYG52bWVfdGNwX2FsbG9jX3F1ZXVlYC4gTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMsICYjMzQ7T2theSwgYXJlIHdlIGxvb2tpbmcgYXQgcXVldWUgYWxsb2NhdGlvbiwgb3Igc29tZXRoaW5nIGRlZXBlcj8mIzM0OyBMZXQmIzM5O3Mgc2VlIGlmIHRoaXMgaXMgc2V0dGluZyB1cCB0aGUgcGVyLXF1ZXVlIGNvbnRleHQgZm9yIHRoZSBJL08sIG9yIGlmIGl0IGhhcyBzb21lIG90aGVyIG1vcmUgZnVuZGFtZW50YWwgZnVuY3Rpb24gaW4gdGhlIGRhdGEgcGF0aC4gSSYjMzk7bGwgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyB0aGUgcXVldWVzIGFyZSBtYW5hZ2VkIGFuZCBob3cgdGhpcyBhbGxvYyBmdW5jdGlvbiB0aWVzIGludG8gdGhlIG92ZXJhbGwgc2NoZW1lLiBUaGlzIGZ1bmN0aW9uIHNob3VsZCBiZSBhIGtleSBwaWVjZSBvZiB0aGUgcHV6emxlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wOCAwNzoyNzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtudm1lX3RjcF9hbGxvY19xdWV1ZSYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL252bWUvaG9zdC90Y3AuYz0xNzI0PXN0YXRpYyBpbnQgbnZtZV90Y3Bfc3RhcnRfdGxzKHN0cnVjdCBudm1lX2N0cmwgKm5jdHJsLFxuLS1cbmRyaXZlcnMvbnZtZS9ob3N0L3RjcC5jLTE3NzYtXG5kcml2ZXJzL252bWUvaG9zdC90Y3AuYzoxNzc3OnN0YXRpYyBpbnQgbnZtZV90Y3BfYWxsb2NfcXVldWUoc3RydWN0IG52bWVfY3RybCAqbmN0cmwsIGludCBxaWQsXG5kcml2ZXJzL252bWUvaG9zdC90Y3AuYy0xNzc4LVx0XHRcdFx0a2V5X3NlcmlhbF90IHBza2lkKVxuLS1cbmRyaXZlcnMvbnZtZS9ob3N0L3RjcC5jPTIwOTM9c3RhdGljIGludCBudm1lX3RjcF9hbGxvY19hZG1pbl9xdWV1ZShzdHJ1Y3QgbnZtZV9jdHJsICpjdHJsKVxuLS1cbmRyaXZlcnMvbnZtZS9ob3N0L3RjcC5jLTIxMTEtXG5kcml2ZXJzL252bWUvaG9zdC90Y3AuYzoyMTEyOlx0cmV0ID0gbnZtZV90Y3BfYWxsb2NfcXVldWUoY3RybCwgMCwgcHNraWQpO1xuZHJpdmVycy9udm1lL2hvc3QvdGNwLmMtMjExMy1cdGlmIChyZXQpXG4tLVxuZHJpdmVycy9udm1lL2hvc3QvdGNwLmM9MjEyNz1zdGF0aWMgaW50IF9fbnZtZV90Y3BfYWxsb2NfaW9fcXVldWVzKHN0cnVjdCBudm1lX2N0cmwgKmN0cmwpXG4tLVxuZHJpdmVycy9udm1lL2hvc3QvdGNwLmMtMjE1Mi1cdGZvciAoaSA9IDE7IGkgXHUwMDNjIGN0cmwtXHUwMDNlcXVldWVfY291bnQ7IGkmIzQzOyYjNDM7KSB7XG5kcml2ZXJzL252bWUvaG9zdC90Y3AuYzoyMTUzOlx0XHRyZXQgPSBudm1lX3RjcF9hbGxvY19xdWV1ZShjdHJsLCBpLFxuZHJpdmVycy9udm1lL2hvc3QvdGNwLmMtMjE1NC1cdFx0XHRcdGN0cmwtXHUwMDNldGxzX3Bza2lkKTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDggMDc6Mjc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogOTc4NgoJCQkJCQkJb3V0cHV0OiAyMgoJCQkJCQkJdGhvdWdodHM6IDU5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHN1bW1hcnksIGFzIHRob3VnaCBJJiMzOTttIHRoaW5raW5nIHRocm91Z2ggdGhpcyBwcm9jZXNzOgoKKipEaXZpbmcgaW50byBOVk1lLVRDUCBRdWV1ZSBBbGxvY2F0aW9uKioKCk9rYXksIHNvIGBudm1lX3RjcF9hbGxvY19xdWV1ZWAgaXMgYSBzdGF0aWMgZnVuY3Rpb24uIFRoYXQmIzM5O3MgZ29vZCB0byBrbm93OyBpdCBtZWFucyBpdHMgc2NvcGUgaXMgbGltaXRlZCwgd2hpY2ggY2FuIGhlbHAgd2l0aCB1bmRlcnN0YW5kaW5nIGl0cyByb2xlIHdpdGhpbiB0aGUgbGFyZ2VyIHN5c3RlbS4gSSBzZWUgdGhhdCBib3RoIGBudm1lX3RjcF9hbGxvY19hZG1pbl9xdWV1ZWAgYW5kIGBfX252bWVfdGNwX2FsbG9jX2lvX3F1ZXVlc2AgYXJlIGNhbGxpbmcgaXQuIFRoYXQgaW1tZWRpYXRlbHkgdGVsbHMgbWUgdGhpcyBzdGF0aWMgZnVuY3Rpb24gaXMgdGhlIGNvcmUgb2YgdGhlIHF1ZXVlIGFsbG9jYXRpb24gcHJvY2VzcyBmb3IgTlZNZS9UQ1AuIEdpdmVuIHRoYXQsIGxldCYjMzk7cyBzd2l0Y2ggZ2VhcnMgYW5kIGludmVzdGlnYXRlIGBudm1lX3RjcF9zZXR1cF9jdHJsYCB0byBzZWUgaG93IGl0IHRpZXMgaW50byB0aGUgYWxsb2NhdGlvbiBwcm9jZXNzLiBUaGF0IGxpa2VseSBzZXRzIHRoZSBzdGFnZSBhbmQgdGhlbiBjYWxscyBvbiB0aG9zZSBmdW5jdGlvbnMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA4IDA3OjI3PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O252bWVfdGNwX3NldHVwX2N0cmwmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9udm1lL2hvc3QvdGNwLmM9MjM4Nj1zdGF0aWMgYm9vbCBudm1lX3RjcF9rZXlfcmV2b2tlX25lZWRlZChzdHJ1Y3QgbnZtZV9jdHJsICpjdHJsKVxuLS1cbmRyaXZlcnMvbnZtZS9ob3N0L3RjcC5jLTIzOTAtXG5kcml2ZXJzL252bWUvaG9zdC90Y3AuYzoyMzkxOnN0YXRpYyBpbnQgbnZtZV90Y3Bfc2V0dXBfY3RybChzdHJ1Y3QgbnZtZV9jdHJsICpjdHJsLCBib29sIG5ldylcbmRyaXZlcnMvbnZtZS9ob3N0L3RjcC5jLTIzOTIte1xuLS1cbmRyaXZlcnMvbnZtZS9ob3N0L3RjcC5jPTI0NzQ9c3RhdGljIHZvaWQgbnZtZV90Y3BfcmVjb25uZWN0X2N0cmxfd29yayhzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspXG4tLVxuZHJpdmVycy9udm1lL2hvc3QvdGNwLmMtMjQ4Mi1cbmRyaXZlcnMvbnZtZS9ob3N0L3RjcC5jOjI0ODM6XHRyZXQgPSBudm1lX3RjcF9zZXR1cF9jdHJsKGN0cmwsIGZhbHNlKTtcbmRyaXZlcnMvbnZtZS9ob3N0L3RjcC5jLTI0ODQtXHRpZiAocmV0KVxuLS1cbmRyaXZlcnMvbnZtZS9ob3N0L3RjcC5jPTI1NDQ9c3RhdGljIHZvaWQgbnZtZV9yZXNldF9jdHJsX3dvcmsoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxuLS1cbmRyaXZlcnMvbnZtZS9ob3N0L3RjcC5jLTI1NjMtXG5kcml2ZXJzL252bWUvaG9zdC90Y3AuYzoyNTY0Olx0cmV0ID0gbnZtZV90Y3Bfc2V0dXBfY3RybChjdHJsLCBmYWxzZSk7XG5kcml2ZXJzL252bWUvaG9zdC90Y3AuYy0yNTY1LVx0aWYgKHJldClcbi0tXG5kcml2ZXJzL252bWUvaG9zdC90Y3AuYz0yOTk5PXN0YXRpYyBzdHJ1Y3QgbnZtZV9jdHJsICpudm1lX3RjcF9jcmVhdGVfY3RybChzdHJ1Y3QgZGV2aWNlICpkZXYsXG4tLVxuZHJpdmVycy9udm1lL2hvc3QvdGNwLmMtMzAxOC1cbmRyaXZlcnMvbnZtZS9ob3N0L3RjcC5jOjMwMTk6XHRyZXQgPSBudm1lX3RjcF9zZXR1cF9jdHJsKFx1MDAyNmN0cmwtXHUwMDNlY3RybCwgdHJ1ZSk7XG5kcml2ZXJzL252bWUvaG9zdC90Y3AuYy0zMDIwLVx0aWYgKHJldClcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDggMDc6Mjc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTA1MDUKCQkJCQkJCW91dHB1dDogMjQKCQkJCQkJCXRob3VnaHRzOiAzNgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBhIHN1bW1hcnkgb2YgbXkgdGhvdWdodCBwcm9jZXNzLCBhcyByZXF1ZXN0ZWQ6CgoqKkRpdmluZyBpbnRvIHRoZSBOVk1lL1RDUCBDb250cm9sbGVyIENyZWF0aW9uKioKCk9rYXksIHNvIEkmIzM5O20gaG9taW5nIGluIG9uIHRoZSBjb250cm9sbGVyIGNyZWF0aW9uIHByb2Nlc3MuIE15IGltbWVkaWF0ZSBmb2N1cyBpcyBvbiBgbnZtZV90Y3BfY3JlYXRlX2N0cmxgLiBUaGF0JiMzOTtzIGNsZWFybHkgdGhlIGVudHJ5IHBvaW50LCB0aGUgY3JpdGljYWwgZnVuY3Rpb24gdGhhdCBraWNrcyBldmVyeXRoaW5nIG9mZi4gTm93LCB3aGVyZSBkb2VzIGl0IGdvIGZyb20gdGhlcmU/IE15IG5leHQgc3RlcCBpcyB0byBleGFtaW5lIGBudm1ldF90Y3Bfc2V0X3F1ZXVlX3NvY2tgLiBJdCYjMzk7cyBsaWtlbHkgaW52b2x2ZWQgaW4gc2V0dGluZyB1cCB0aGUgc29ja2V0IGZvciB0aGUgcXVldWUuIEkgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyB0aGUgc29ja2V0IGlzIGNvbmZpZ3VyZWQgd2l0aGluIHRoZSBUQ1AgdHJhbnNwb3J0IGNvbnRleHQuIFRoaXMgaXMgdGhlIGNydWNpYWwgbGluayBJIGFtIGxvb2tpbmcgZm9yLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBob3cgdGhlIGNvbnRyb2wgcGF0aCBhbmQgZGF0YSBwYXRoIGFyZSBtYW5hZ2VkLiBGcm9tIHRoZXJlIEkgY2FuIGRldGVybWluZSBpZiBhbnkgaW1wcm92ZW1lbnQgaXMgbmVlZGVkLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wOCAwNzoyNzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtudm1ldF90Y3Bfc2V0X3F1ZXVlX3NvY2smIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9udm1lL3RhcmdldC90Y3AuYz0xNjcxPXN0YXRpYyB2b2lkIG52bWV0X3RjcF9zdGF0ZV9jaGFuZ2Uoc3RydWN0IHNvY2sgKnNrKVxuLS1cbmRyaXZlcnMvbnZtZS90YXJnZXQvdGNwLmMtMTY5OC1cbmRyaXZlcnMvbnZtZS90YXJnZXQvdGNwLmM6MTY5OTpzdGF0aWMgaW50IG52bWV0X3RjcF9zZXRfcXVldWVfc29jayhzdHJ1Y3QgbnZtZXRfdGNwX3F1ZXVlICpxdWV1ZSlcbmRyaXZlcnMvbnZtZS90YXJnZXQvdGNwLmMtMTcwMC17XG4tLVxuZHJpdmVycy9udm1lL3RhcmdldC90Y3AuYz0xODMyPXN0YXRpYyB2b2lkIG52bWV0X3RjcF90bHNfaGFuZHNoYWtlX2RvbmUodm9pZCAqZGF0YSwgaW50IHN0YXR1cyxcbi0tXG5kcml2ZXJzL252bWUvdGFyZ2V0L3RjcC5jLTE4NTYtXHRpZiAoIXN0YXR1cylcbmRyaXZlcnMvbnZtZS90YXJnZXQvdGNwLmM6MTg1NzpcdFx0c3RhdHVzID0gbnZtZXRfdGNwX3NldF9xdWV1ZV9zb2NrKHF1ZXVlKTtcbmRyaXZlcnMvbnZtZS90YXJnZXQvdGNwLmMtMTg1OC1cbi0tXG5kcml2ZXJzL252bWUvdGFyZ2V0L3RjcC5jPTE5MTk9c3RhdGljIHZvaWQgbnZtZXRfdGNwX2FsbG9jX3F1ZXVlKHN0cnVjdCBudm1ldF90Y3BfcG9ydCAqcG9ydCxcbi0tXG5kcml2ZXJzL252bWUvdGFyZ2V0L3RjcC5jLTE5OTYtXG5kcml2ZXJzL252bWUvdGFyZ2V0L3RjcC5jOjE5OTc6XHRyZXQgPSBudm1ldF90Y3Bfc2V0X3F1ZXVlX3NvY2socXVldWUpO1xuZHJpdmVycy9udm1lL3RhcmdldC90Y3AuYy0xOTk4LVx0aWYgKHJldClcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDggMDc6Mjc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTEwNzkKCQkJCQkJCW91dHB1dDogMjIKCQkJCQkJCXRob3VnaHRzOiAyMwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aGF0IGNvZGUgc25pcHBldCwgZGVsaXZlcmVkIGFzIGlmIGl0JiMzOTtzIG15IG93biB0aG91Z2h0IHByb2Nlc3M6CgoqKkRlY29kaW5nIHRoZSBOVk1lLW9GIFRDUCBRdWV1ZSBBbGxvY2F0aW9uKioKCkFscmlnaHQsIGxldCYjMzk7cyBicmVhayB0aGlzIGRvd24uIEZyb20gd2hhdCBJJiMzOTttIHNlZWluZyBoZXJlLCBgbnZtZXRfdGNwX2FsbG9jX3F1ZXVlYCBpcyBjcnVjaWFsLiBJdCYjMzk7cyBjbGVhcmx5IHRoZSBmdW5jdGlvbiByZXNwb25zaWJsZSBmb3IgY3JlYXRpbmcgYSBuZXcgcXVldWUgd2l0aGluIHRoZSBOVk1lIG92ZXIgVENQIGZyYW1ld29yay4gVGhlIGtleSBjb250ZXh0IGlzIHRoYXQgYG52bWV0X3RjcF9hY2NlcHRfd29ya2AgaXMgdGhlIGNhbGxlci4gVGhpcyBtZWFucyB0aGUgcXVldWUgYWxsb2NhdGlvbiBwcm9jZXNzIGlzICp0cmlnZ2VyZWQqIGR1cmluZyB0aGUgVENQIGNvbm5lY3Rpb24gYWNjZXB0YW5jZSBwaGFzZS4gV2hlbmV2ZXIgYSBuZXcgVENQIGNvbm5lY3Rpb24gaXMgZXN0YWJsaXNoZWQgYW5kIGFjY2VwdGVkIGJ5IHRoZSBOVk1lLW9GIHRhcmdldCwgdGhpcyBhbGxvY2F0aW9uIHJvdXRpbmUgZ2V0cyBjYWxsZWQuIEl0JiMzOTtzIHNhZmUgdG8gYXNzdW1lLCB0aGVuLCB0aGF0IGBudm1ldF90Y3BfYWxsb2NfcXVldWVgIGlzIHRhc2tlZCB3aXRoIHNldHRpbmcgdXAgYWxsIHRoZSBuZWNlc3NhcnkgZGF0YSBzdHJ1Y3R1cmVzIGFuZCByZXNvdXJjZXMgZm9yIGhhbmRsaW5nIEkvTyBvdmVyIHRoYXQgbmV3bHkgZXN0YWJsaXNoZWQgVENQIHNlc3Npb24uIFRoaXMgaXMgc3RhbmRhcmQgc3R1ZmYsIHNvIGl0IHByb2JhYmx5IHRha2VzIHRoZSBjb25uZWN0aW9uIGluZm9ybWF0aW9uIGl0IGhhcyBqdXN0IHJlY2VpdmVkIGFuZCB1c2VzIGl0IHRvIHByb3Zpc2lvbiB0aGUgcmlnaHQgYW1vdW50IG9mIG1lbW9yeS9ldGMuIGZvciB0aGF0IGNvbm5lY3Rpb24uIE5vdGhpbmcgc3VycHJpc2luZyBoZXJlLiBQcmV0dHkgc3RhbmRhcmQsIGFuZCBpdCBtYWtlcyBzZW5zZSB0aGF0IHlvdSB3b3VsZCBoYW5kbGUgdGhlIGFsbG9jYXRpb24gb2YgYSBxdWV1ZSBhZnRlciB0aGUgYWNjZXB0IGNhbGwgaGFzIGJlZW4gY29tcGxldGVkLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wOCAwNzoyNzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtudm1ldF90Y3BfYWxsb2NfcXVldWUmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9udm1lL3RhcmdldC90Y3AuYz0xOTE2PXN0YXRpYyB2b2lkIG52bWV0X3RjcF90bHNfaGFuZHNoYWtlX3RpbWVvdXQoc3RydWN0IHdvcmtfc3RydWN0ICp3KSB7fVxuLS1cbmRyaXZlcnMvbnZtZS90YXJnZXQvdGNwLmMtMTkxOC1cbmRyaXZlcnMvbnZtZS90YXJnZXQvdGNwLmM6MTkxOTpzdGF0aWMgdm9pZCBudm1ldF90Y3BfYWxsb2NfcXVldWUoc3RydWN0IG52bWV0X3RjcF9wb3J0ICpwb3J0LFxuZHJpdmVycy9udm1lL3RhcmdldC90Y3AuYy0xOTIwLVx0XHRzdHJ1Y3Qgc29ja2V0ICpuZXdzb2NrKVxuLS1cbmRyaXZlcnMvbnZtZS90YXJnZXQvdGNwLmM9MjAyOD1zdGF0aWMgdm9pZCBudm1ldF90Y3BfYWNjZXB0X3dvcmsoc3RydWN0IHdvcmtfc3RydWN0ICp3KVxuLS1cbmRyaXZlcnMvbnZtZS90YXJnZXQvdGNwLmMtMjA0MS1cdFx0fVxuZHJpdmVycy9udm1lL3RhcmdldC90Y3AuYzoyMDQyOlx0XHRudm1ldF90Y3BfYWxsb2NfcXVldWUocG9ydCwgbmV3c29jayk7XG5kcml2ZXJzL252bWUvdGFyZ2V0L3RjcC5jLTIwNDMtXHR9XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA4IDA3OjI3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDExNjE4CgkJCQkJCQlvdXRwdXQ6IDI0CgkJCQkJCQl0aG91Z2h0czogNDYKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2UsIHByZXNlbnRlZCBpbiB0aGUgZmlyc3QgcGVyc29uOgoKKipGb2N1c2luZyBvbiBOVk1lLW9GIFRDUCBDb25uZWN0aW9uIEVzdGFibGlzaG1lbnQqKgoKUmlnaHQsIGxldCYjMzk7cyB6ZXJvIGluLiBgbnZtZXRfdGNwX2FjY2VwdF93b3JrYCBmZWVscyBsaWtlIGEgZ29vZCwgZm9jdXNlZCBzeW1ib2wgdG8gc3RhcnQgd2l0aC4gSXQmIzM5O3MgbGlrZWx5IHdoZXJlIHRoZSBjb25uZWN0aW9uIGFjY2VwdGFuY2UgbG9naWMgZm9yIE5WTWUgb3ZlciBUQ1AgaXMgaGFuZGxlZCwgd2hpY2ggaXMgd2hlcmUgSSB3YW50IHRvIHN0YXJ0IG15IGFuYWx5c2lzLgoKTm93LCBjb25zaWRlcmluZyBjb25uZWN0aW9uIGVzdGFibGlzaG1lbnQgYW5kIHBvdGVudGlhbCBRb1Mgb3IgdHJhZmZpYyBzaGFwaW5nIGNvbnNpZGVyYXRpb25zLCBJIG5lZWQgdG8gY2hlY2sgaG93IHRyYWZmaWMgY2xhc3MgaXMgYmVpbmcgc2V0LiBUaGF0IG1lYW5zIEkgc2hvdWxkIGFsc28gY2hlY2sgdGhlIGZ1bmN0aW9uczogYF9faXA2X3NvY2tfc2V0X3RjbGFzc2AgYW5kIGBpcDZfc29ja19zZXRfdGNsYXNzYC4gVGhlc2UgYXJlIHJlbGV2YW50IGZ1bmN0aW9ucyB0aGF0IGxpa2VseSBjb25maWd1cmUgdGhlIElQdjYgdHJhZmZpYyBjbGFzcyBmaWVsZCwgd2hpY2ggaXMgY3J1Y2lhbCBmb3IgbWFuYWdpbmcgdGhlIGJlaGF2aW9yIG9mIE5WTWUtb0YgdHJhZmZpYy4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaG93IHRoZXNlIHRyYWZmaWMgY2xhc3Mgc2V0dGluZ3MgYXJlIGJlaW5nIHVzZWQgd2l0aGluIHRoaXMgY29udGV4dC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDggMDc6Mjc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7X19pcDZfc29ja19zZXRfdGNsYXNzJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2luY2x1ZGUvbmV0L2lwdjYuaD0xMjUwPXN0YXRpYyBpbmxpbmUgdm9pZCBpcDZfc29ja19zZXRfcmVjdmVycihzdHJ1Y3Qgc29jayAqc2spXG4tLVxuaW5jbHVkZS9uZXQvaXB2Ni5oLTEyNTQtXG5pbmNsdWRlL25ldC9pcHY2Lmg6MTI1NTp2b2lkIF9faXA2X3NvY2tfc2V0X3RjbGFzcyhzdHJ1Y3Qgc29jayAqc2ssIGludCB2YWwpO1xuaW5jbHVkZS9uZXQvaXB2Ni5oLTEyNTYtdm9pZCBpcDZfc29ja19zZXRfdGNsYXNzKHN0cnVjdCBzb2NrICpzaywgaW50IHZhbCk7XG4tLVxubmV0L2lwdjYvaXB2Nl9zb2NrZ2x1ZS5jPTMwMj1zdGF0aWMgaW50IGlwdjZfc2V0X29wdF9oZHIoc3RydWN0IHNvY2sgKnNrLCBpbnQgb3B0bmFtZSwgc29ja3B0cl90IG9wdHZhbCxcbi0tXG5uZXQvaXB2Ni9pcHY2X3NvY2tnbHVlLmMtMzc1LVxubmV0L2lwdjYvaXB2Nl9zb2NrZ2x1ZS5jOjM3Njp2b2lkIF9faXA2X3NvY2tfc2V0X3RjbGFzcyhzdHJ1Y3Qgc29jayAqc2ssIGludCB2YWwpXG5uZXQvaXB2Ni9pcHY2X3NvY2tnbHVlLmMtMzc3LXtcbi0tXG5uZXQvaXB2Ni9pcHY2X3NvY2tnbHVlLmM9MzkwPXZvaWQgaXA2X3NvY2tfc2V0X3RjbGFzcyhzdHJ1Y3Qgc29jayAqc2ssIGludCB2YWwpXG4tLVxubmV0L2lwdjYvaXB2Nl9zb2NrZ2x1ZS5jLTM5Mi1cdHNvY2tvcHRfbG9ja19zb2NrKHNrKTtcbm5ldC9pcHY2L2lwdjZfc29ja2dsdWUuYzozOTM6XHRfX2lwNl9zb2NrX3NldF90Y2xhc3Moc2ssIHZhbCk7XG5uZXQvaXB2Ni9pcHY2X3NvY2tnbHVlLmMtMzk0LVx0c29ja29wdF9yZWxlYXNlX3NvY2soc2spO1xuLS1cbm5ldC9pcHY2L2lwdjZfc29ja2dsdWUuYz0zOTg9aW50IGRvX2lwdjZfc2V0c29ja29wdChzdHJ1Y3Qgc29jayAqc2ssIGludCBsZXZlbCwgaW50IG9wdG5hbWUsXG4tLVxubmV0L2lwdjYvaXB2Nl9zb2NrZ2x1ZS5jLTczNy1cdFx0XHR2YWwgPSAwO1xubmV0L2lwdjYvaXB2Nl9zb2NrZ2x1ZS5jOjczODpcdFx0X19pcDZfc29ja19zZXRfdGNsYXNzKHNrLCB2YWwpO1xubmV0L2lwdjYvaXB2Nl9zb2NrZ2x1ZS5jLTczOS1cdFx0cmV0diA9IDA7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA4IDA3OjI3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDEyMzk5CgkJCQkJCQlvdXRwdXQ6IDIzCgkJCQkJCQl0aG91Z2h0czogMTQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhhdDoKCioqTXkgUGVyc3BlY3RpdmUgb24gYGlwNl9zb2NrX3NldF90Y2xhc3NgKioKCkFscmlnaHQsIHNvIGBpcDZfc29ja19zZXRfdGNsYXNzYCBpcyBleHBsaWNpdGx5ICpleHBvcnRlZCouIFRoYXQmIzM5O3MgdGhlIGtleSB0YWtlYXdheSBoZXJlLiBJdCBtZWFucyB0aGlzIGZ1bmN0aW9uIGlzIGludGVudGlvbmFsbHkgbWFkZSBhdmFpbGFibGUgZm9yIHVzZSBvdXRzaWRlIG9mIHRoZSBtb2R1bGUgb3IgY29tcG9uZW50IGluIHdoaWNoIGl0JiMzOTtzIGRlZmluZWQuIE15IGltbWVkaWF0ZSB0aG91Z2h0IGlzLCB3aGF0IGFyZSB0aGUgaW1wbGljYXRpb25zIG9mIHRoaXM/IEl0IHN1Z2dlc3RzIGEgZGVsaWJlcmF0ZSBkZXNpZ24gZGVjaXNpb24sIGltcGx5aW5nIGl0JiMzOTtzIG1lYW50IHRvIGJlIGEgcGFydCBvZiBhIHdlbGwtZGVmaW5lZCBBUEkgb3IgaW50ZW5kZWQgZm9yIGJyb2FkZXIgY29uc3VtcHRpb24sIHBvdGVudGlhbGx5IGJ5IG90aGVyIG5ldHdvcmtpbmcgc3Vic3lzdGVtcyBvciBldmVuIHVzZXItc3BhY2UgYXBwbGljYXRpb25zIHdpdGggdGhlIHJpZ2h0IHByaXZpbGVnZXMuCgpLbm93aW5nIGl0JiMzOTtzIGV4cG9ydGVkLCBJJiMzOTtkIHdhbnQgdG8gdW5kZXJzdGFuZCB0aGUgKndoeSogYmVoaW5kIHRoaXMgZGVjaXNpb24uIFdoYXQgcHJvYmxlbXMgZG9lcyB0aGlzIGZ1bmN0aW9uIHNvbHZlPyBXaGF0IHVzZS1jYXNlcyBpcyBpdCBkZXNpZ25lZCB0byBzdXBwb3J0PyBJcyBpdCBhIGNydWNpYWwgYnVpbGRpbmcgYmxvY2sgZm9yIFFvUyBtYW5hZ2VtZW50LCB0cmFmZmljIHNoYXBpbmcsIG9yIG1heWJlIHNvbWV0aGluZyBtb3JlIHNwZWNpYWxpemVkIGxpa2UgRGlmZmVyZW50aWF0ZWQgU2VydmljZXMgKERpZmZTZXJ2KSBpbXBsZW1lbnRhdGlvbnMgaW4gYW4gSVB2NiBjb250ZXh0PyBBbmQgb2YgY291cnNlLCB0aGUgZXZlci1wcmVzZW50IHNlY3VyaXR5IGNvbnNpZGVyYXRpb25zOiB3aGF0IGFyZSB0aGUgYWNjZXNzIGNvbnRyb2xzIGFyb3VuZCBpdHMgdXNlPyBJcyBpdCBzdXNjZXB0aWJsZSB0byBtaXN1c2Ugb3IgYWJ1c2UsIGFuZCB3aGF0IGd1YXJkcmFpbHMgaGF2ZSBiZWVuIHB1dCBpbiBwbGFjZSB0byBwcmV2ZW50IHRoYXQ/IEkmIzM5O2Qgd2FudCB0byBkaXZlIGRlZXBlciBpbnRvIGl0cyBpbXBsZW1lbnRhdGlvbiBhbmQgYW55IGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiB0byBmdWxseSBncmFzcCBpdHMgaW50ZW5kZWQgcHVycG9zZSBhbmQgcG90ZW50aWFsIGltcGFjdCBvbiBzeXN0ZW0gYmVoYXZpb3IuIEl0JiMzOTtzIGV4cG9ydGVkLCBzbyBpdCYjMzk7cyBmYWlyIGdhbWUgZm9yIGFuYWx5c2lzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wOCAwNzoyNzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtpcDZfc29ja19zZXRfdGNsYXNzJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbnZtZS9ob3N0L3RjcC5jPTE3Nzc9c3RhdGljIGludCBudm1lX3RjcF9hbGxvY19xdWV1ZShzdHJ1Y3QgbnZtZV9jdHJsICpuY3RybCwgaW50IHFpZCxcbi0tXG5kcml2ZXJzL252bWUvaG9zdC90Y3AuYy0xODQyLVx0ICAgIHF1ZXVlLVx1MDAzZXNvY2stXHUwMDNlc2stXHUwMDNlc2tfZmFtaWx5ID09IEFGX0lORVQ2KVxuZHJpdmVycy9udm1lL2hvc3QvdGNwLmM6MTg0MzpcdFx0aXA2X3NvY2tfc2V0X3RjbGFzcyhxdWV1ZS1cdTAwM2Vzb2NrLVx1MDAzZXNrLCBuY3RybC1cdTAwM2VvcHRzLVx1MDAzZXRjbGFzcyk7XG5kcml2ZXJzL252bWUvaG9zdC90Y3AuYy0xODQ0LSNlbmRpZlxuLS1cbmRyaXZlcnMvbnZtZS90YXJnZXQvdGNwLmM9MTY5OT1zdGF0aWMgaW50IG52bWV0X3RjcF9zZXRfcXVldWVfc29jayhzdHJ1Y3QgbnZtZXRfdGNwX3F1ZXVlICpxdWV1ZSlcbi0tXG5kcml2ZXJzL252bWUvdGFyZ2V0L3RjcC5jLTE3MzItXHRcdGlmIChyY3ZfdGNsYXNzIFx1MDAzZSAwKVxuZHJpdmVycy9udm1lL3RhcmdldC90Y3AuYzoxNzMzOlx0XHRcdGlwNl9zb2NrX3NldF90Y2xhc3Moc29jay1cdTAwM2VzaywgcmN2X3RjbGFzcyk7XG5kcml2ZXJzL252bWUvdGFyZ2V0L3RjcC5jLTE3MzQtXHR9XG4tLVxuaW5jbHVkZS9uZXQvaXB2Ni5oPTEyNTA9c3RhdGljIGlubGluZSB2b2lkIGlwNl9zb2NrX3NldF9yZWN2ZXJyKHN0cnVjdCBzb2NrICpzaylcbi0tXG5pbmNsdWRlL25ldC9pcHY2LmgtMTI1NC1cbmluY2x1ZGUvbmV0L2lwdjYuaDoxMjU1OnZvaWQgX19pcDZfc29ja19zZXRfdGNsYXNzKHN0cnVjdCBzb2NrICpzaywgaW50IHZhbCk7XG5pbmNsdWRlL25ldC9pcHY2Lmg6MTI1Njp2b2lkIGlwNl9zb2NrX3NldF90Y2xhc3Moc3RydWN0IHNvY2sgKnNrLCBpbnQgdmFsKTtcbmluY2x1ZGUvbmV0L2lwdjYuaC0xMjU3LVxuLS1cbm5ldC9pcHY2L2lwdjZfc29ja2dsdWUuYz0zMDI9c3RhdGljIGludCBpcHY2X3NldF9vcHRfaGRyKHN0cnVjdCBzb2NrICpzaywgaW50IG9wdG5hbWUsIHNvY2twdHJfdCBvcHR2YWwsXG4tLVxubmV0L2lwdjYvaXB2Nl9zb2NrZ2x1ZS5jLTM3NS1cbm5ldC9pcHY2L2lwdjZfc29ja2dsdWUuYzozNzY6dm9pZCBfX2lwNl9zb2NrX3NldF90Y2xhc3Moc3RydWN0IHNvY2sgKnNrLCBpbnQgdmFsKVxubmV0L2lwdjYvaXB2Nl9zb2NrZ2x1ZS5jLTM3Ny17XG4tLVxubmV0L2lwdjYvaXB2Nl9zb2NrZ2x1ZS5jLTM4OS1cbm5ldC9pcHY2L2lwdjZfc29ja2dsdWUuYzozOTA6dm9pZCBpcDZfc29ja19zZXRfdGNsYXNzKHN0cnVjdCBzb2NrICpzaywgaW50IHZhbClcbm5ldC9pcHY2L2lwdjZfc29ja2dsdWUuYy0zOTEte1xubmV0L2lwdjYvaXB2Nl9zb2NrZ2x1ZS5jLTM5Mi1cdHNvY2tvcHRfbG9ja19zb2NrKHNrKTtcbm5ldC9pcHY2L2lwdjZfc29ja2dsdWUuYzozOTM6XHRfX2lwNl9zb2NrX3NldF90Y2xhc3Moc2ssIHZhbCk7XG5uZXQvaXB2Ni9pcHY2X3NvY2tnbHVlLmMtMzk0LVx0c29ja29wdF9yZWxlYXNlX3NvY2soc2spO1xubmV0L2lwdjYvaXB2Nl9zb2NrZ2x1ZS5jLTM5NS19XG5uZXQvaXB2Ni9pcHY2X3NvY2tnbHVlLmM6Mzk2OkVYUE9SVF9TWU1CT0woaXA2X3NvY2tfc2V0X3RjbGFzcyk7XG5uZXQvaXB2Ni9pcHY2X3NvY2tnbHVlLmMtMzk3LVxubmV0L2lwdjYvaXB2Nl9zb2NrZ2x1ZS5jPTM5OD1pbnQgZG9faXB2Nl9zZXRzb2Nrb3B0KHN0cnVjdCBzb2NrICpzaywgaW50IGxldmVsLCBpbnQgb3B0bmFtZSxcbi0tXG5uZXQvaXB2Ni9pcHY2X3NvY2tnbHVlLmMtNzM3LVx0XHRcdHZhbCA9IDA7XG5uZXQvaXB2Ni9pcHY2X3NvY2tnbHVlLmM6NzM4Olx0XHRfX2lwNl9zb2NrX3NldF90Y2xhc3Moc2ssIHZhbCk7XG5uZXQvaXB2Ni9pcHY2X3NvY2tnbHVlLmMtNzM5LVx0XHRyZXR2ID0gMDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yOS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDggMDc6Mjc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTM2MjEKCQkJCQkJCW91dHB1dDogMjIKCQkJCQkJCXRob3VnaHRzOiAxNjQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqSW5pdGlhbCBBc3Nlc3NtZW50IG9mIEtleSBFbnRyeSBQb2ludHMqKgoKT2theSwgbGV0JiMzOTtzIGJyZWFrIHRoaXMgZG93bi4gSSBzZWUgd2UmIzM5O3JlIGxvb2tpbmcgYXQgc3BlY2lmaWMgZnVuY3Rpb25zLCBwcmVzdW1hYmx5IHdpdGhpbiBhIG5ldHdvcmtpbmcgb3Igc3RvcmFnZSBjb250ZXh0LCBnaXZlbiB0aGUgbmFtZXMuIEZpcnN0LCBJIGhhdmUgYSBsaXN0IG9mIGBGb2N1c1N5bWJvbHNgOiBgbnZtZl9kZXZfd3JpdGVgLCBgbnZtZV90Y3BfY3JlYXRlX2N0cmxgLCBgbnZtZXRfdGNwX2FjY2VwdF93b3JrYCwgYF9faXA2X3NvY2tfc2V0X3RjbGFzc2AsIGFuZCBgaXA2X3NvY2tfc2V0X3RjbGFzc2AuIE5vdywgcmlnaHQgb2ZmIHRoZSBiYXQsIGBudm1mX2Rldl93cml0ZWAgc2VlbXMgaW50ZXJlc3Rpbmc7IGl0IGxpa2VseSBpbnZvbHZlcyBOVk1lIG92ZXIgRmFicmljcywgc28gdGhhdCYjMzk7cyBhIGdvb2QgcGxhY2UgdG8gc3RhcnQgZGlnZ2luZy4gYG52bWVfdGNwX2NyZWF0ZV9jdHJsYCBpcyBhbm90aGVyIHNvbGlkIGNhbmRpZGF0ZSAtIGNyZWF0aW5nIGEgY29udHJvbCBjb25uZWN0aW9uIGlzIG9mdGVuIGNyaXRpY2FsLiBBbmQsIGBudm1ldF90Y3BfYWNjZXB0X3dvcmtgIGFsc28gbWFrZXMgc2Vuc2UsIGl0JiMzOTtzIGRlYWxpbmcgd2l0aCBhY2NlcHRpbmcgd29yayByZWxhdGluZyB0byB0aGUgdGFyZ2V0LiBUaGVuLCB0aGVyZSYjMzk7cyBgX19pcDZfc29ja19zZXRfdGNsYXNzYCB3aGljaCBpcyBsaW5rZWQgdG8gYGRvX2lwdjZfc2V0c29ja29wdGAsIHdoaWNoIEkgc3VwcG9zZSBpcyBhIGdvb2QgZW50cnkgcG9pbnQuIEluIGZhY3QsIGxldCYjMzk7cyBleHBsb3JlIGBkb19pcHY2X3NldHNvY2tvcHRgIGZ1cnRoZXIgYW5kIHNlZSB3aGF0IHdlIGNhbiBmaW5kLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wOCAwNzoyNzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtkb19pcHY2X3NldHNvY2tvcHQmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7aW5jbHVkZS9uZXQvaXB2Ni5oPTExMzg9REVDTEFSRV9TVEFUSUNfS0VZX0ZBTFNFKGlwNl9taW5faG9wY291bnQpO1xuaW5jbHVkZS9uZXQvaXB2Ni5oLTExMzktXG5pbmNsdWRlL25ldC9pcHY2Lmg6MTE0MDppbnQgZG9faXB2Nl9zZXRzb2Nrb3B0KHN0cnVjdCBzb2NrICpzaywgaW50IGxldmVsLCBpbnQgb3B0bmFtZSwgc29ja3B0cl90IG9wdHZhbCxcbmluY2x1ZGUvbmV0L2lwdjYuaC0xMTQxLVx0XHQgICAgICAgdW5zaWduZWQgaW50IG9wdGxlbik7XG4tLVxubmV0L2NvcmUvZmlsdGVyLmM9NTY1OT1zdGF0aWMgaW50IHNvbF9pcHY2X3NvY2tvcHQoc3RydWN0IHNvY2sgKnNrLCBpbnQgb3B0bmFtZSxcbi0tXG5uZXQvY29yZS9maWx0ZXIuYy01NjgwLVxubmV0L2NvcmUvZmlsdGVyLmM6NTY4MTpcdHJldHVybiBkb19pcHY2X3NldHNvY2tvcHQoc2ssIFNPTF9JUFY2LCBvcHRuYW1lLFxubmV0L2NvcmUvZmlsdGVyLmMtNTY4Mi1cdFx0XHRcdCAgS0VSTkVMX1NPQ0tQVFIob3B0dmFsKSwgKm9wdGxlbik7XG4tLVxubmV0L2lwdjQvdGNwLmM9NDE3Mj1pbnQgdGNwX3NldHNvY2tvcHQoc3RydWN0IHNvY2sgKnNrLCBpbnQgbGV2ZWwsIGludCBvcHRuYW1lLCBzb2NrcHRyX3Qgb3B0dmFsLFxuLS1cbm5ldC9pcHY0L3RjcC5jLTQxNzctXHRpZiAobGV2ZWwgIT0gU09MX1RDUClcbm5ldC9pcHY0L3RjcC5jOjQxNzg6XHRcdC8qIFBhaXJlZCB3aXRoIFdSSVRFX09OQ0UoKSBpbiBkb19pcHY2X3NldHNvY2tvcHQoKSBhbmQgdGNwX3Y2X2Nvbm5lY3QoKSAqL1xubmV0L2lwdjQvdGNwLmMtNDE3OS1cdFx0cmV0dXJuIFJFQURfT05DRShpY3NrLVx1MDAzZWljc2tfYWZfb3BzKS1cdTAwM2VzZXRzb2Nrb3B0KHNrLCBsZXZlbCwgb3B0bmFtZSxcbi0tXG5uZXQvaXB2NC90Y3AuYz00ODU3PWludCB0Y3BfZ2V0c29ja29wdChzdHJ1Y3Qgc29jayAqc2ssIGludCBsZXZlbCwgaW50IG9wdG5hbWUsIGNoYXIgX191c2VyICpvcHR2YWwsXG4tLVxubmV0L2lwdjQvdGNwLmMtNDg2Mi1cdGlmIChsZXZlbCAhPSBTT0xfVENQKVxubmV0L2lwdjQvdGNwLmM6NDg2MzpcdFx0LyogUGFpcmVkIHdpdGggV1JJVEVfT05DRSgpIGluIGRvX2lwdjZfc2V0c29ja29wdCgpIGFuZCB0Y3BfdjZfY29ubmVjdCgpICovXG5uZXQvaXB2NC90Y3AuYy00ODY0LVx0XHRyZXR1cm4gUkVBRF9PTkNFKGljc2stXHUwMDNlaWNza19hZl9vcHMpLVx1MDAzZWdldHNvY2tvcHQoc2ssIGxldmVsLCBvcHRuYW1lLFxuLS1cbm5ldC9pcHY2L2lwdjZfc29ja2dsdWUuYz0zOTY9RVhQT1JUX1NZTUJPTChpcDZfc29ja19zZXRfdGNsYXNzKTtcbm5ldC9pcHY2L2lwdjZfc29ja2dsdWUuYy0zOTctXG5uZXQvaXB2Ni9pcHY2X3NvY2tnbHVlLmM6Mzk4OmludCBkb19pcHY2X3NldHNvY2tvcHQoc3RydWN0IHNvY2sgKnNrLCBpbnQgbGV2ZWwsIGludCBvcHRuYW1lLFxubmV0L2lwdjYvaXB2Nl9zb2NrZ2x1ZS5jLTM5OS1cdFx0ICAgICAgIHNvY2twdHJfdCBvcHR2YWwsIHVuc2lnbmVkIGludCBvcHRsZW4pXG4tLVxubmV0L2lwdjYvaXB2Nl9zb2NrZ2x1ZS5jPTk2OT1pbnQgaXB2Nl9zZXRzb2Nrb3B0KHN0cnVjdCBzb2NrICpzaywgaW50IGxldmVsLCBpbnQgb3B0bmFtZSwgc29ja3B0cl90IG9wdHZhbCxcbi0tXG5uZXQvaXB2Ni9pcHY2X3NvY2tnbHVlLmMtOTc5LVxubmV0L2lwdjYvaXB2Nl9zb2NrZ2x1ZS5jOjk4MDpcdGVyciA9IGRvX2lwdjZfc2V0c29ja29wdChzaywgbGV2ZWwsIG9wdG5hbWUsIG9wdHZhbCwgb3B0bGVuKTtcbm5ldC9pcHY2L2lwdjZfc29ja2dsdWUuYy05ODEtI2lmZGVmIENPTkZJR19ORVRGSUxURVJcbi0tXG5uZXQvaXB2Ni90Y3BfaXB2Ni5jPTQwMz1zdGF0aWMgaW50IHRjcF92Nl9lcnIoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IGluZXQ2X3NrYl9wYXJtICpvcHQsXG4tLVxubmV0L2lwdjYvdGNwX2lwdjYuYy00NTItXHRpZiAoc3RhdGljX2JyYW5jaF91bmxpa2VseShcdTAwMjZpcDZfbWluX2hvcGNvdW50KSkge1xubmV0L2lwdjYvdGNwX2lwdjYuYzo0NTM6XHRcdC8qIG1pbl9ob3Bjb3VudCBjYW4gYmUgY2hhbmdlZCBjb25jdXJyZW50bHkgZnJvbSBkb19pcHY2X3NldHNvY2tvcHQoKSAqL1xubmV0L2lwdjYvdGNwX2lwdjYuYy00NTQtXHRcdGlmIChpcHY2X2hkcihza2IpLVx1MDAzZWhvcF9saW1pdCBcdTAwM2MgUkVBRF9PTkNFKHRjcF9pbmV0Nl9zayhzayktXHUwMDNlbWluX2hvcGNvdW50KSkge1xuLS1cbm5ldC9pcHY2L3RjcF9pcHY2LmM9MTczMD1JTkRJUkVDVF9DQUxMQUJMRV9TQ09QRSBpbnQgdGNwX3Y2X3JjdihzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxuLS1cbm5ldC9pcHY2L3RjcF9pcHY2LmMtMTg2MS1cdGlmIChzdGF0aWNfYnJhbmNoX3VubGlrZWx5KFx1MDAyNmlwNl9taW5faG9wY291bnQpKSB7XG5uZXQvaXB2Ni90Y3BfaXB2Ni5jOjE4NjI6XHRcdC8qIG1pbl9ob3Bjb3VudCBjYW4gYmUgY2hhbmdlZCBjb25jdXJyZW50bHkgZnJvbSBkb19pcHY2X3NldHNvY2tvcHQoKSAqL1xubmV0L2lwdjYvdGNwX2lwdjYuYy0xODYzLVx0XHRpZiAodW5saWtlbHkoaGRyLVx1MDAzZWhvcF9saW1pdCBcdTAwM2MgUkVBRF9PTkNFKHRjcF9pbmV0Nl9zayhzayktXHUwMDNlbWluX2hvcGNvdW50KSkpIHtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDggMDc6Mjc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTUyMTkKCQkJCQkJCW91dHB1dDogMTkKCQkJCQkJCXRob3VnaHRzOiAyNjIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgTGluZSBvZiBJbnF1aXJ5KioKCk9rYXksIHNvIEkmIzM5O20gdGhpbmtpbmcgYGRvX2lwdjZfc2V0c29ja29wdGAgc2VlbXMgbGlrZSBhIHNvbGlkIHN0YXJ0aW5nIHBvaW50IGZvciB0aGlzIGludmVzdGlnYXRpb24uIEJ1dCwgbGV0JiMzOTtzIHBpdm90IGFuZCBjaGVjayBgbnZtZV90Y3BfY3JlYXRlX2N0cmxgLiBIbW0sIGl0JiMzOTtzIG1hcmtlZCBhcyBzdGF0aWMsIG1lYW5pbmcgaXQmIzM5O3Mgbm90IGRpcmVjdGx5IGV4cG9ydGVkLiBIb3dldmVyLCBpdCAqaXMqIGFzc2lnbmVkIHRvIGBudm1lX3RjcF90cmFuc3BvcnQuY3JlYXRlX2N0cmxgLiBBbHJpZ2h0LCBtYWtpbmcgcHJvZ3Jlc3MuIGBudm1mX2Rldl93cml0ZWAgY2FsbHMgYG52bWZfY3JlYXRlX2N0cmxgLCB3aGljaCBpbiB0dXJuIGNhbGxzIGBvcHRzLSZndDt0cmFuc3BvcnQtJmd0O2NyZWF0ZV9jdHJsYC4gU28sIHllYWgsIHRoYXQgbWFrZXMgYG52bWVfdGNwX2NyZWF0ZV9jdHJsYCBhbm90aGVyIHZpYWJsZSBmb2N1cyBzeW1ib2wuCgpMZXQmIzM5O3Mgc3dpdGNoIGdlYXJzIHNsaWdodGx5IGFuZCBsb29rIGF0IGBudm1ldF90Y3BfYWNjZXB0X3dvcmtgLiBJdCYjMzk7cyBhbm90aGVyIHN0YXRpYyBmdW5jdGlvbiwgYnV0IGl0JiMzOTtzIHVzZWQgYXMgYSB3b3JrcXVldWUgZnVuY3Rpb24uCgpOb3csIGxldCYjMzk7cyBjb25zaWRlciB0aGUgcmVsZXZhbnQgY29uZmlndXJhdGlvbnMuIFdlIGhhdmUgYE5WTUVfVENQYCwgYE5WTUVfVEFSR0VUX1RDUGAsIGBOVk1FX1RBUkdFVGAsIGFuZCBgSVBWNmAuIEhvbGQgb24sIGl0IHNlZW1zIGxpa2UgYE5WTUVfVEFSR0VUYCBpcyBuZWNlc3NhcnkgZm9yIGBOVk1FX1RBUkdFVF9UQ1BgIHRvIGZ1bmN0aW9uLiBJIHdvbmRlciBpZiB0aGVyZSBhcmUgYW55IG90aGVyIGNvbmZpZ3VyYXRpb25zIGludm9sdmVkPyBNYXliZSBgTlZNRV9DT1JFYCBvciBgTlZNRV9GQUJSSUNTYD8gQWgsIGBOVk1FX1RDUGAgc2VsZWN0cyBgTlZNRV9GQUJSSUNTYCwgb2YgY291cnNlLiBBbmQgYE5WTUVfVEFSR0VUX1RDUGAgZGVwZW5kcyBvbiBgTlZNRV9UQVJHRVRgLiBSaWdodCwgdGhhdCBtYWtlcyBzZW5zZS4KCk5vdywgSSYjMzk7bSBnb2luZyB0byB0YWtlIGEgZGVlcGVyIGxvb2sgYXQgYE5WTUVfVEFSR0VUYC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDggMDc6Mjc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIE5WTUVfVEFSR0VUJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbnZtZS90YXJnZXQvS2NvbmZpZy0yLVxuZHJpdmVycy9udm1lL3RhcmdldC9LY29uZmlnOjM6Y29uZmlnIE5WTUVfVEFSR0VUXG5kcml2ZXJzL252bWUvdGFyZ2V0L0tjb25maWctNC1cdHRyaXN0YXRlIFwmIzM0O05WTWUgVGFyZ2V0IHN1cHBvcnRcJiMzNDtcbi0tXG5kcml2ZXJzL252bWUvdGFyZ2V0L0tjb25maWctMTktXG5kcml2ZXJzL252bWUvdGFyZ2V0L0tjb25maWc6MjA6Y29uZmlnIE5WTUVfVEFSR0VUX0RFQlVHRlNcbmRyaXZlcnMvbnZtZS90YXJnZXQvS2NvbmZpZy0yMS0gICAgICAgIGJvb2wgXCYjMzQ7TlZNZSBUYXJnZXQgZGVidWdmcyBzdXBwb3J0XCYjMzQ7XG4tLVxuZHJpdmVycy9udm1lL3RhcmdldC9LY29uZmlnLTI4LVxuZHJpdmVycy9udm1lL3RhcmdldC9LY29uZmlnOjI5OmNvbmZpZyBOVk1FX1RBUkdFVF9QQVNTVEhSVVxuZHJpdmVycy9udm1lL3RhcmdldC9LY29uZmlnLTMwLVx0Ym9vbCBcJiMzNDtOVk1lIFRhcmdldCBQYXNzdGhyb3VnaCBzdXBwb3J0XCYjMzQ7XG4tLVxuZHJpdmVycy9udm1lL3RhcmdldC9LY29uZmlnLTQwLVxuZHJpdmVycy9udm1lL3RhcmdldC9LY29uZmlnOjQxOmNvbmZpZyBOVk1FX1RBUkdFVF9MT09QXG5kcml2ZXJzL252bWUvdGFyZ2V0L0tjb25maWctNDItXHR0cmlzdGF0ZSBcJiMzNDtOVk1lIGxvb3BiYWNrIGRldmljZSBzdXBwb3J0XCYjMzQ7XG4tLVxuZHJpdmVycy9udm1lL3RhcmdldC9LY29uZmlnLTUxLVxuZHJpdmVycy9udm1lL3RhcmdldC9LY29uZmlnOjUyOmNvbmZpZyBOVk1FX1RBUkdFVF9SRE1BXG5kcml2ZXJzL252bWUvdGFyZ2V0L0tjb25maWctNTMtXHR0cmlzdGF0ZSBcJiMzNDtOVk1lIG92ZXIgRmFicmljcyBSRE1BIHRhcmdldCBzdXBwb3J0XCYjMzQ7XG4tLVxuZHJpdmVycy9udm1lL3RhcmdldC9LY29uZmlnLTYyLVxuZHJpdmVycy9udm1lL3RhcmdldC9LY29uZmlnOjYzOmNvbmZpZyBOVk1FX1RBUkdFVF9GQ1xuZHJpdmVycy9udm1lL3RhcmdldC9LY29uZmlnLTY0LVx0dHJpc3RhdGUgXCYjMzQ7TlZNZSBvdmVyIEZhYnJpY3MgRkMgdGFyZ2V0IGRyaXZlclwmIzM0O1xuLS1cbmRyaXZlcnMvbnZtZS90YXJnZXQvS2NvbmZpZy03My1cbmRyaXZlcnMvbnZtZS90YXJnZXQvS2NvbmZpZzo3NDpjb25maWcgTlZNRV9UQVJHRVRfRkNMT09QXG5kcml2ZXJzL252bWUvdGFyZ2V0L0tjb25maWctNzUtXHR0cmlzdGF0ZSBcJiMzNDtOVk1lIG92ZXIgRmFicmljcyBGQyBUcmFuc3BvcnQgTG9vcGJhY2sgVGVzdCBkcml2ZXJcJiMzNDtcbi0tXG5kcml2ZXJzL252bWUvdGFyZ2V0L0tjb25maWctODYtXG5kcml2ZXJzL252bWUvdGFyZ2V0L0tjb25maWc6ODc6Y29uZmlnIE5WTUVfVEFSR0VUX1RDUFxuZHJpdmVycy9udm1lL3RhcmdldC9LY29uZmlnLTg4LVx0dHJpc3RhdGUgXCYjMzQ7TlZNZSBvdmVyIEZhYnJpY3MgVENQIHRhcmdldCBzdXBwb3J0XCYjMzQ7XG4tLVxuZHJpdmVycy9udm1lL3RhcmdldC9LY29uZmlnLTk2LVxuZHJpdmVycy9udm1lL3RhcmdldC9LY29uZmlnOjk3OmNvbmZpZyBOVk1FX1RBUkdFVF9UQ1BfVExTXG5kcml2ZXJzL252bWUvdGFyZ2V0L0tjb25maWctOTgtXHRib29sIFwmIzM0O05WTWUgb3ZlciBGYWJyaWNzIFRDUCB0YXJnZXQgVExTIGVuY3J5cHRpb24gc3VwcG9ydFwmIzM0O1xuLS1cbmRyaXZlcnMvbnZtZS90YXJnZXQvS2NvbmZpZy0xMDktXG5kcml2ZXJzL252bWUvdGFyZ2V0L0tjb25maWc6MTEwOmNvbmZpZyBOVk1FX1RBUkdFVF9BVVRIXG5kcml2ZXJzL252bWUvdGFyZ2V0L0tjb25maWctMTExLVx0Ym9vbCBcJiMzNDtOVk1lIG92ZXIgRmFicmljcyBJbi1iYW5kIEF1dGhlbnRpY2F0aW9uIGluIHRhcmdldCBzaWRlXCYjMzQ7XG4tLVxuZHJpdmVycy9udm1lL3RhcmdldC9LY29uZmlnLTExOS1cbmRyaXZlcnMvbnZtZS90YXJnZXQvS2NvbmZpZzoxMjA6Y29uZmlnIE5WTUVfVEFSR0VUX0FVVEhfREVCVUdcbmRyaXZlcnMvbnZtZS90YXJnZXQvS2NvbmZpZy0xMjEtXHRib29sIFwmIzM0O05WTWUgb3ZlciBGYWJyaWNzIEluLWJhbmQgQXV0aGVudGljYXRpb24gZGVidWcgbWVzc2FnZXNcJiMzNDtcbi0tXG5kcml2ZXJzL252bWUvdGFyZ2V0L0tjb25maWctMTI4LVxuZHJpdmVycy9udm1lL3RhcmdldC9LY29uZmlnOjEyOTpjb25maWcgTlZNRV9UQVJHRVRfUENJX0VQRlxuZHJpdmVycy9udm1lL3RhcmdldC9LY29uZmlnLTEzMC1cdHRyaXN0YXRlIFwmIzM0O05WTWUgUENJIEVuZHBvaW50IEZ1bmN0aW9uIHRhcmdldCBzdXBwb3J0XCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA4IDA3OjI3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE2NjI3CgkJCQkJCQlvdXRwdXQ6IDM1CgkJCQkJCQl0aG91Z2h0czogMjUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIGFuIGV4cGVydCYjMzk7cyBpbnRlcm5hbCBtb25vbG9ndWU6CgoqKkludmVzdGlnYXRpbmcgTlZNRV9UQVJHRVQgRGVwZW5kZW5jaWVzKioKClJpZ2h0LCBsZXQmIzM5O3MgZGl2ZSBpbnRvIHRoZSBLY29uZmlnIGZvciB0aGUgTlZNRSB0YXJnZXQuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBkZXBlbmRlbmNpZXMgb2YgYE5WTUVfVEFSR0VUYC4gSXQmIzM5O3MgY3J1Y2lhbCwgYXMgYWx3YXlzLCB0byBncmFzcCB0aGUgYnVpbGQtdGltZSBjb25maWd1cmF0aW9uIG9wdGlvbnMgYW5kIGNvbnN0cmFpbnRzIGJlZm9yZSBJIHN0YXJ0IHBva2luZyBhcm91bmQgaW4gdGhlIGNvZGUuIEkmIzM5O20gbG9va2luZyBmb3IgYW55IGltbWVkaWF0ZSBjbHVlcyBvbiBwcmVyZXF1aXNpdGVzOiBvdGhlciBmZWF0dXJlcyBpdCByZWxpZXMgb24sIHBsYXRmb3JtIHJlcXVpcmVtZW50cywgb3IgcG90ZW50aWFsIGNvbmZsaWN0cyB3aXRoIG90aGVyIHN1YnN5c3RlbXMuIEl0JiMzOTtzIHRoZSBzdGFuZGFyZCBwcmFjdGljZSwgcmVhbGx5LiBBIGRlZXAgZGl2ZSBpbnRvIHRoZSBLY29uZmlnIHdpbGwgaGlnaGxpZ2h0IHdoYXQgbmVlZHMgdG8gYmUgZW5hYmxlZCwgZGlzYWJsZWQsIG9yIGNvbnNpZGVyZWQgZHVyaW5nIHRoZSB3aG9sZSBjb25maWd1cmF0aW9uIHByb2Nlc3MuIEkgd2FudCBhIGNsZWFyIHBpY3R1cmUsIHNvIEkgY2FuIGF2b2lkIHdhc3RlZCB0aW1lIGRvd24gdGhlIGxpbmUuIExldCYjMzk7cyBzZWUgd2hhdCB3ZSBjYW4gZmluZC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDggMDc6Mjc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL252bWUvdGFyZ2V0L0tjb25maWcmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAxLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDIwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAgIDE6XHQjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcbiAgIDI6XHRcbiAgIDM6XHRjb25maWcgTlZNRV9UQVJHRVRcbiAgIDQ6XHRcdHRyaXN0YXRlIFwmIzM0O05WTWUgVGFyZ2V0IHN1cHBvcnRcJiMzNDtcbiAgIDU6XHRcdGRlcGVuZHMgb24gQkxPQ0tcbiAgIDY6XHRcdHNlbGVjdCBDT05GSUdGU19GU1xuICAgNzpcdFx0c2VsZWN0IE5WTUVfS0VZUklORyBpZiBOVk1FX1RBUkdFVF9UQ1BfVExTXG4gICA4Olx0XHRzZWxlY3QgS0VZUyBpZiBOVk1FX1RBUkdFVF9UQ1BfVExTXG4gICA5Olx0XHRzZWxlY3QgU0dMX0FMTE9DXG4gIDEwOlx0XHRoZWxwXG4gIDExOlx0XHQgIFRoaXMgZW5hYmxlZCB0YXJnZXQgc2lkZSBzdXBwb3J0IGZvciB0aGUgTlZNZSBwcm90b2NvbCwgdGhhdCBpc1xuICAxMjpcdFx0ICBpdCBhbGxvd3MgdGhlIExpbnV4IGtlcm5lbCB0byBpbXBsZW1lbnQgTlZNZSBzdWJzeXN0ZW1zIGFuZFxuICAxMzpcdFx0ICBjb250cm9sbGVycyBhbmQgZXhwb3J0IExpbnV4IGJsb2NrIGRldmljZXMgYXMgTlZNZSBuYW1lc3BhY2VzLlxuICAxNDpcdFx0ICBZb3UgbmVlZCB0byBzZWxlY3QgYXQgbGVhc3Qgb25lIG9mIHRoZSB0cmFuc3BvcnRzIGJlbG93IHRvIG1ha2UgdGhpc1xuICAxNTpcdFx0ICBmdW5jdGlvbmFsaXR5IHVzZWZ1bC5cbiAgMTY6XHRcbiAgMTc6XHRcdCAgVG8gY29uZmlndXJlIHRoZSBOVk1lIHRhcmdldCB5b3UgcHJvYmFibHkgd2FudCB0byB1c2UgdGhlIG52bWV0Y2xpXG4gIDE4Olx0XHQgIHRvb2wgZnJvbSBodHRwOi8vZ2l0LmluZnJhZGVhZC5vcmcvdXNlcnMvaGNoL252bWV0Y2xpLmdpdC5cbiAgMTk6XHRcbiAgMjA6XHRjb25maWcgTlZNRV9UQVJHRVRfREVCVUdGU1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjM1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wOCAwNzoyNzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxNzE1OQoJCQkJCQkJb3V0cHV0OiAzNgoJCQkJCQkJdGhvdWdodHM6IDIzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIGEgc3VtbWFyeSBvZiBteSB0aG91Z2h0IHByb2Nlc3MsIGFzIHJlcXVlc3RlZDoKCioqTmF2aWdhdGluZyBEZXBlbmRlbmNpZXMqKgoKT2theSwgc28gSSYjMzk7bSB0aGlua2luZyBhYm91dCB0aGUgc3lzdGVtIGFyY2hpdGVjdHVyZSBoZXJlLiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdGhhdCBgTlZNRV9UQVJHRVRgIGhhcyBhIGRlcGVuZGVuY3kgb24gYEJMT0NLYC4gVGhhdCYjMzk7cyBhIGZ1bmRhbWVudGFsIHJlbGF0aW9uc2hpcCDigJMgdGhlIHRhcmdldCBuZWVkcyBhIGJsb2NrLWxldmVsIHN0b3JhZ2UgYWJzdHJhY3Rpb24gdG8gb3BlcmF0ZS4gTm93LCBJIG5lZWQgdG8gdW5kZXJzdGFuZCBob3cgTlZNZSBvdmVyIFRDUCBmaXRzIGludG8gdGhpcyBwaWN0dXJlLiBNeSBuZXh0IHN0ZXAgaXMgdG8gZXhhbWluZSB0aGUgcmVsYXRpb25zaGlwIGJldHdlZW4gYE5WTUVfVENQYCBhbmQgdGhlIGJyb2FkZXIgYXJjaGl0ZWN0dXJlLCBzcGVjaWZpY2FsbHkgaG93IGl0IGludGVyYWN0cyB3aXRoIHRoZSBjb21wb25lbnRzIEkmIzM5O3ZlIGFscmVhZHkgaWRlbnRpZmllZC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDggMDc6Mjc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL252bWUvaG9zdC9LY29uZmlnJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogODAsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMjAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7ICA4MDpcdFxuICA4MTpcdFx0ICBJZiB1bnN1cmUsIHNheSBOLlxuICA4MjpcdFxuICA4MzpcdGNvbmZpZyBOVk1FX1RDUFxuICA4NDpcdFx0dHJpc3RhdGUgXCYjMzQ7TlZNIEV4cHJlc3Mgb3ZlciBGYWJyaWNzIFRDUCBob3N0IGRyaXZlclwmIzM0O1xuICA4NTpcdFx0ZGVwZW5kcyBvbiBJTkVUXG4gIDg2Olx0XHRkZXBlbmRzIG9uIEJMT0NLXG4gIDg3Olx0XHRzZWxlY3QgQ1JDMzJcbiAgODg6XHRcdHNlbGVjdCBORVRfQ1JDMzJDXG4gIDg5Olx0XHRzZWxlY3QgTlZNRV9GQUJSSUNTXG4gIDkwOlx0XHRoZWxwXG4gIDkxOlx0XHQgIFRoaXMgcHJvdmlkZXMgc3VwcG9ydCBmb3IgdGhlIE5WTWUgb3ZlciBGYWJyaWNzIHByb3RvY29sIHVzaW5nXG4gIDkyOlx0XHQgIHRoZSBUQ1AgdHJhbnNwb3J0LiAgVGhpcyBhbGxvd3MgeW91IHRvIHVzZSByZW1vdGUgYmxvY2sgZGV2aWNlc1xuICA5MzpcdFx0ICBleHBvcnRlZCB1c2luZyB0aGUgTlZNZSBwcm90b2NvbCBzZXQuXG4gIDk0Olx0XG4gIDk1Olx0XHQgIFRvIGNvbmZpZ3VyZSBhIE5WTWUgb3ZlciBGYWJyaWNzIGNvbnRyb2xsZXIgdXNlIHRoZSBudm1lLWNsaSB0b29sXG4gIDk2Olx0XHQgIGZyb20gaHR0cHM6Ly9naXRodWIuY29tL2xpbnV4LW52bWUvbnZtZS1jbGkuXG4gIDk3Olx0XG4gIDk4Olx0XHQgIElmIHVuc3VyZSwgc2F5IE4uXG4gIDk5Olx0XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA4IDA3OjI3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE3NTk3CgkJCQkJCQlvdXRwdXQ6IDE5CgkJCQkJCQl0aG91Z2h0czogOTcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQ29uZmlndXJhdGlvbiBEZXBlbmRlbmNpZXM6IEEgUXVpY2sgUmV2aWV3KioKCk9rYXksIGxldCYjMzk7cyBzZWUsIEkgbmVlZCB0byBtYWtlIHN1cmUgSSB1bmRlcnN0YW5kIHRoZXNlIGNvbmZpZ3VyYXRpb25zLiBSaWdodCwgc28gd2UgaGF2ZSBgTlZNRV9UQ1BgLCBgTlZNRV9UQVJHRVRfVENQYCwgYE5WTUVfVEFSR0VUYCwgYW5kIGBJUFY2YC4gSnVzdCBydW5uaW5nIHRocm91Z2ggdGhlIG1lbnRhbCBjaGVja2xpc3QgaGVyZS4uLiBBaCwgcmlnaHQsIHRoYXQmIzM5O3MgaW1wb3J0YW50OiBgTlZNRV9UQVJHRVRfVENQYCByZWxpZXMgb24gYE5WTUVfVEFSR0VUYC4gTmF0dXJhbGx5LCB0aGF0IG1ha2VzIHNlbnNlLiBBbmQgYE5WTUVfVENQYCBzZWxlY3RzIGBOVk1FX0ZBQlJJQ1NgLi4uIEdvdCBpdC4gYE5WTUVfRkFCUklDU2AgaGFzIGEgZGVwZW5kZW5jeSBvbiBgTlZNRV9DT1JFYC4gT2theSwgbGV0JiMzOTtzIGp1c3QgbWFrZSBhIG5vdGUgdG8gZG91YmxlLWNoZWNrIHRoZSBgTlZNRV9DT1JFYCBjb25maWd1cmF0aW9uLiBBbHdheXMgaW1wb3J0YW50IHRvIHVuZGVyc3RhbmQgdGhlIGNvcmUgY29tcG9uZW50cy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDggMDc6Mjg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIE5WTUVfQ09SRSYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL252bWUvaG9zdC9LY29uZmlnLTEtIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XG5kcml2ZXJzL252bWUvaG9zdC9LY29uZmlnOjI6Y29uZmlnIE5WTUVfQ09SRVxuZHJpdmVycy9udm1lL2hvc3QvS2NvbmZpZy0zLVx0dHJpc3RhdGVcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zOS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDggMDc6Mjg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTc5NDgKCQkJCQkJCW91dHB1dDogMzUKCQkJCQkJCXRob3VnaHRzOiAyNQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB0YWtlIG9uIHRoZSB0aG91Z2h0IHByb2Nlc3MsIGFzIGlmIGl0IHdlcmUgbXkgb3duOgoKKipJbnZlc3RpZ2F0aW5nIE5WTUUgQ29yZSBEZXBlbmRlbmNpZXMqKgoKT2theSwgc28gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgdGhlIGRlcGVuZGVuY2llcyBmb3IgYE5WTUVfQ09SRWAuIFRoZSBtb3N0IGRpcmVjdCB3YXkgdG8gZ2V0IGEgaGFuZGxlIG9uIHRoYXQgaXMgdG8gZGl2ZSBpbnRvIHRoZSBLY29uZmlnIGZpbGUgZm9yIHRoZSBOVk1lIGhvc3QgZHJpdmVyLiBJdCBzaG91bGQgYmUgcmlnaHQgdGhlcmUsIHRlbGxpbmcgbWUgd2hhdCBvdGhlciBjb25maWd1cmF0aW9ucyBhcmUgcmVxdWlyZWQgZm9yIGBOVk1FX0NPUkVgIHRvIGV2ZW4gYmUgY29uc2lkZXJlZC4gU28sIGxldCYjMzk7cyBvcGVuIHVwIGBkcml2ZXJzL252bWUvaG9zdC9LY29uZmlnYCBhbmQgc2VlIHdoYXQgaXQgcmV2ZWFscy4gVGhpcyB3aWxsIGdpdmUgbWUgdGhlIGJ1aWxkaW5nIGJsb2NrcyBJIG5lZWQgdG8gdW5kZXJzdGFuZCBob3cgdGhlIGZlYXR1cmUgZml0cyBpbnRvIHRoZSBicm9hZGVyIHN5c3RlbS4gSSYjMzk7bSBleHBlY3RpbmcgdG8gc2VlIHRoaW5ncyBsaWtlIHBsYXRmb3JtLXNwZWNpZmljIHJlcXVpcmVtZW50cywgdW5kZXJseWluZyBoYXJkd2FyZSBlbmFibGVtZW50LCBvciBtYXliZSBldmVuIG90aGVyIHJlbGF0ZWQgTlZNZSBmZWF0dXJlcyB0aGF0IG11c3QgYmUgZW5hYmxlZCBmaXJzdC4gTGV0JiMzOTtzIGdldCB0byBpdC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40MC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDggMDc6Mjg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL252bWUvaG9zdC9LY29uZmlnJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMSwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAyMAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgICAxOlx0IyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XG4gICAyOlx0Y29uZmlnIE5WTUVfQ09SRVxuICAgMzpcdFx0dHJpc3RhdGVcbiAgIDQ6XHRcbiAgIDU6XHRjb25maWcgQkxLX0RFVl9OVk1FXG4gICA2Olx0XHR0cmlzdGF0ZSBcJiMzNDtOVk0gRXhwcmVzcyBibG9jayBkZXZpY2VcJiMzNDtcbiAgIDc6XHRcdGRlcGVuZHMgb24gUENJIFx1MDAyNlx1MDAyNiBCTE9DS1xuICAgODpcdFx0c2VsZWN0IE5WTUVfQ09SRVxuICAgOTpcdFx0aGVscFxuICAxMDpcdFx0ICBUaGUgTlZNIEV4cHJlc3MgZHJpdmVyIGlzIGZvciBzb2xpZCBzdGF0ZSBkcml2ZXMgZGlyZWN0bHlcbiAgMTE6XHRcdCAgY29ubmVjdGVkIHRvIHRoZSBQQ0kgb3IgUENJIEV4cHJlc3MgYnVzLiAgSWYgeW91IGtub3cgeW91XG4gIDEyOlx0XHQgIGRvbiYjMzk7dCBoYXZlIG9uZSBvZiB0aGVzZSwgaXQgaXMgc2FmZSB0byBhbnN3ZXIgTi5cbiAgMTM6XHRcbiAgMTQ6XHRcdCAgVG8gY29tcGlsZSB0aGlzIGRyaXZlciBhcyBhIG1vZHVsZSwgY2hvb3NlIE0gaGVyZTogdGhlXG4gIDE1Olx0XHQgIG1vZHVsZSB3aWxsIGJlIGNhbGxlZCBudm1lLlxuICAxNjpcdFxuICAxNzpcdGNvbmZpZyBOVk1FX01VTFRJUEFUSFxuICAxODpcdFx0Ym9vbCBcJiMzNDtOVk1lIG11bHRpcGF0aCBzdXBwb3J0XCYjMzQ7XG4gIDE5Olx0XHRkZXBlbmRzIG9uIE5WTUVfQ09SRVxuICAyMDpcdFx0aGVscFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQxLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wOCAwNzoyODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxODQ0NgoJCQkJCQkJb3V0cHV0OiAxOAoJCQkJCQkJdGhvdWdodHM6IDEyMAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgTlZNZSBDb25maWd1cmF0aW9uIERlcGVuZGVuY2llcyoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhlc2UgTlZNZSBjb25maWd1cmF0aW9ucyBhbmQgdGhlaXIgZGVwZW5kZW5jaWVzLiBJdCBzZWVtcyBwcmV0dHkgc3RyYWlnaHRmb3J3YXJkLiBgTlZNRV9DT1JFYCBzdGFuZHMgYWxvbmU7IG5vIGRlcGVuZGVuY2llcyB0aGVyZS4gSG93ZXZlciwgYm90aCBgTlZNRV9UQ1BgIGFuZCBgTlZNRV9UQVJHRVRfVENQYCByZXF1aXJlIGBJTkVUYC4gIGBOVk1FX1RDUGAgYWxzbyBuZWVkcyBgQkxPQ0tgLCBhbmQgYE5WTUVfVEFSR0VUX1RDUGAgZGVwZW5kcyBvbiBgTlZNRV9UQVJHRVRgLiAgYE5WTUVfVEFSR0VUYCwgaW4gdHVybiwgbmVlZHMgYEJMT0NLYC4gIFRoZXJlZm9yZSwgaWYgSSYjMzk7bSBpbnRlcnByZXRpbmcgdGhpcyBjb3JyZWN0bHksIEkgc2hvdWxkIGNvbnNpZGVyIGNvbmZpZ3VyaW5nIHRoZSBmb2xsb3dpbmc6IGBOVk1FX1RDUGAsIGBOVk1FX1RBUkdFVF9UQ1BgLCBgTlZNRV9UQVJHRVRgLCBhbmQgZmluYWxseSwgSSBuZWVkIHRvIGNvbmZpcm0gYElQVjZgIGlzIGEgdmlhYmxlIGNvbmZpZ3VyYXRpb24gb3B0aW9uLiBJdCYjMzk7cyBhIGtleSBwYXJ0IG9mIHRoZSBuZXR3b3JrIHN0YWNrLCBzbyBpdCBpcyBuZWNlc3NhcnkuIE5vdyBJIG5lZWQgdG8gY2hlY2sgaWYgYElQVjZgIGlzIHNvbWV0aGluZyBJIGNhbiBhY3R1YWxseSBjb25maWd1cmUgZGlyZWN0bHkuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NDIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA4IDA3OjI4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBJUFY2JiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9pcHY2L0tjb25maWctNS1cbm5ldC9pcHY2L0tjb25maWc6NjptZW51Y29uZmlnIElQVjZcbm5ldC9pcHY2L0tjb25maWctNy1cdGJvb2wgXCYjMzQ7VGhlIElQdjYgcHJvdG9jb2xcJiMzNDtcbi0tXG5uZXQvaXB2Ni9LY29uZmlnPTE5PWlmIElQVjZcbm5ldC9pcHY2L0tjb25maWctMjAtXG5uZXQvaXB2Ni9LY29uZmlnOjIxOmNvbmZpZyBJUFY2X1JPVVRFUl9QUkVGXG5uZXQvaXB2Ni9LY29uZmlnLTIyLVx0Ym9vbCBcJiMzNDtJUHY2OiBSb3V0ZXIgUHJlZmVyZW5jZSAoUkZDIDQxOTEpIHN1cHBvcnRcJiMzNDtcbi0tXG5uZXQvaXB2Ni9LY29uZmlnLTMwLVxubmV0L2lwdjYvS2NvbmZpZzozMTpjb25maWcgSVBWNl9ST1VURV9JTkZPXG5uZXQvaXB2Ni9LY29uZmlnLTMyLVx0Ym9vbCBcJiMzNDtJUHY2OiBSb3V0ZSBJbmZvcm1hdGlvbiAoUkZDIDQxOTEpIHN1cHBvcnRcJiMzNDtcbi0tXG5uZXQvaXB2Ni9LY29uZmlnLTM4LVxubmV0L2lwdjYvS2NvbmZpZzozOTpjb25maWcgSVBWNl9PUFRJTUlTVElDX0RBRFxubmV0L2lwdjYvS2NvbmZpZy00MC1cdGJvb2wgXCYjMzQ7SVB2NjogRW5hYmxlIFJGQyA0NDI5IE9wdGltaXN0aWMgREFEXCYjMzQ7XG4tLVxubmV0L2lwdjYvS2NvbmZpZz0xMDI9Y29uZmlnIElORVQ2X0lQQ09NUFxuLS1cbm5ldC9pcHY2L0tjb25maWctMTExLVxubmV0L2lwdjYvS2NvbmZpZzoxMTI6Y29uZmlnIElQVjZfTUlQNlxubmV0L2lwdjYvS2NvbmZpZy0xMTMtXHR0cmlzdGF0ZSBcJiMzNDtJUHY2OiBNb2JpbGl0eVwmIzM0O1xuLS1cbm5ldC9pcHY2L0tjb25maWctMTE5LVxubmV0L2lwdjYvS2NvbmZpZzoxMjA6Y29uZmlnIElQVjZfSUxBXG5uZXQvaXB2Ni9LY29uZmlnLTEyMS1cdHRyaXN0YXRlIFwmIzM0O0lQdjY6IElkZW50aWZpZXIgTG9jYXRvciBBZGRyZXNzaW5nIChJTEEpXCYjMzQ7XG4tLVxubmV0L2lwdjYvS2NvbmZpZz0xNDY9Y29uZmlnIElORVQ2X1RVTk5FTFxuLS1cbm5ldC9pcHY2L0tjb25maWctMTQ5LVxubmV0L2lwdjYvS2NvbmZpZzoxNTA6Y29uZmlnIElQVjZfVlRJXG5uZXQvaXB2Ni9LY29uZmlnLTE1MS1cdHRyaXN0YXRlIFwmIzM0O1ZpcnR1YWwgKHNlY3VyZSkgSVB2NjogdHVubmVsaW5nXCYjMzQ7XG4tLVxubmV0L2lwdjYvS2NvbmZpZy0xNjEtXG5uZXQvaXB2Ni9LY29uZmlnOjE2Mjpjb25maWcgSVBWNl9TSVRcbm5ldC9pcHY2L0tjb25maWctMTYzLVx0dHJpc3RhdGUgXCYjMzQ7SVB2NjogSVB2Ni1pbi1JUHY0IHR1bm5lbCAoU0lUIGRyaXZlcilcJiMzNDtcbi0tXG5uZXQvaXB2Ni9LY29uZmlnLTE3Ni1cbm5ldC9pcHY2L0tjb25maWc6MTc3OmNvbmZpZyBJUFY2X1NJVF82UkRcbm5ldC9pcHY2L0tjb25maWctMTc4LVx0Ym9vbCBcJiMzNDtJUHY2OiBJUHY2IFJhcGlkIERlcGxveW1lbnQgKDZSRClcJiMzNDtcbi0tXG5uZXQvaXB2Ni9LY29uZmlnLTE5NS1cbm5ldC9pcHY2L0tjb25maWc6MTk2OmNvbmZpZyBJUFY2X05ESVNDX05PREVUWVBFXG5uZXQvaXB2Ni9LY29uZmlnLTE5Ny1cdGJvb2xcbm5ldC9pcHY2L0tjb25maWctMTk4LVxubmV0L2lwdjYvS2NvbmZpZzoxOTk6Y29uZmlnIElQVjZfVFVOTkVMXG5uZXQvaXB2Ni9LY29uZmlnLTIwMC1cdHRyaXN0YXRlIFwmIzM0O0lQdjY6IElQLWluLUlQdjYgdHVubmVsIChSRkMyNDczKVwmIzM0O1xuLS1cbm5ldC9pcHY2L0tjb25maWctMjA5LVxubmV0L2lwdjYvS2NvbmZpZzoyMTA6Y29uZmlnIElQVjZfR1JFXG5uZXQvaXB2Ni9LY29uZmlnLTIxMS1cdHRyaXN0YXRlIFwmIzM0O0lQdjY6IEdSRSB0dW5uZWxcJiMzNDtcbi0tXG5uZXQvaXB2Ni9LY29uZmlnLTIyNy1cbm5ldC9pcHY2L0tjb25maWc6MjI4OmNvbmZpZyBJUFY2X0ZPVVxubmV0L2lwdjYvS2NvbmZpZy0yMjktXHR0cmlzdGF0ZVxuLS1cbm5ldC9pcHY2L0tjb25maWctMjMxLVxubmV0L2lwdjYvS2NvbmZpZzoyMzI6Y29uZmlnIElQVjZfRk9VX1RVTk5FTFxubmV0L2lwdjYvS2NvbmZpZy0yMzMtXHR0cmlzdGF0ZVxuLS1cbm5ldC9pcHY2L0tjb25maWctMjM2LVxubmV0L2lwdjYvS2NvbmZpZzoyMzc6Y29uZmlnIElQVjZfTVVMVElQTEVfVEFCTEVTXG5uZXQvaXB2Ni9LY29uZmlnLTIzOC1cdGJvb2wgXCYjMzQ7SVB2NjogTXVsdGlwbGUgUm91dGluZyBUYWJsZXNcJiMzNDtcbi0tXG5uZXQvaXB2Ni9LY29uZmlnLTI0Mi1cbm5ldC9pcHY2L0tjb25maWc6MjQzOmNvbmZpZyBJUFY2X1NVQlRSRUVTXG5uZXQvaXB2Ni9LY29uZmlnLTI0NC1cdGJvb2wgXCYjMzQ7SVB2Njogc291cmNlIGFkZHJlc3MgYmFzZWQgcm91dGluZ1wmIzM0O1xuLS1cbm5ldC9pcHY2L0tjb25maWctMjU2LVxubmV0L2lwdjYvS2NvbmZpZzoyNTc6Y29uZmlnIElQVjZfTVJPVVRFXG5uZXQvaXB2Ni9LY29uZmlnLTI1OC1cdGJvb2wgXCYjMzQ7SVB2NjogbXVsdGljYXN0IHJvdXRpbmdcJiMzNDtcbi0tXG5uZXQvaXB2Ni9LY29uZmlnLTI2NC1cbm5ldC9pcHY2L0tjb25maWc6MjY1OmNvbmZpZyBJUFY2X01ST1VURV9NVUxUSVBMRV9UQUJMRVNcbm5ldC9pcHY2L0tjb25maWctMjY2LVx0Ym9vbCBcJiMzNDtJUHY2OiBtdWx0aWNhc3QgcG9saWN5IHJvdXRpbmdcJiMzNDtcbi0tXG5uZXQvaXB2Ni9LY29uZmlnLTI3OC1cbm5ldC9pcHY2L0tjb25maWc6Mjc5OmNvbmZpZyBJUFY2X1BJTVNNX1YyXG5uZXQvaXB2Ni9LY29uZmlnLTI4MC1cdGJvb2wgXCYjMzQ7SVB2NjogUElNLVNNIHZlcnNpb24gMiBzdXBwb3J0XCYjMzQ7XG4tLVxubmV0L2lwdjYvS2NvbmZpZy0yODUtXG5uZXQvaXB2Ni9LY29uZmlnOjI4Njpjb25maWcgSVBWNl9TRUc2X0xXVFVOTkVMXG5uZXQvaXB2Ni9LY29uZmlnLTI4Ny1cdGJvb2wgXCYjMzQ7SVB2NjogU2VnbWVudCBSb3V0aW5nIEhlYWRlciBlbmNhcHN1bGF0aW9uIHN1cHBvcnRcJiMzNDtcbi0tXG5uZXQvaXB2Ni9LY29uZmlnLTI5OS1cbm5ldC9pcHY2L0tjb25maWc6MzAwOmNvbmZpZyBJUFY2X1NFRzZfSE1BQ1xubmV0L2lwdjYvS2NvbmZpZy0zMDEtXHRib29sIFwmIzM0O0lQdjY6IFNlZ21lbnQgUm91dGluZyBITUFDIHN1cHBvcnRcJiMzNDtcbi0tXG5uZXQvaXB2Ni9LY29uZmlnLTMxMS1cbm5ldC9pcHY2L0tjb25maWc6MzEyOmNvbmZpZyBJUFY2X1NFRzZfQlBGXG5uZXQvaXB2Ni9LY29uZmlnLTMxMy1cdGRlZl9ib29sIHlcbi0tXG5uZXQvaXB2Ni9LY29uZmlnLTMxNi1cbm5ldC9pcHY2L0tjb25maWc6MzE3OmNvbmZpZyBJUFY2X1JQTF9MV1RVTk5FTFxubmV0L2lwdjYvS2NvbmZpZy0zMTgtXHRib29sIFwmIzM0O0lQdjY6IFJQTCBTb3VyY2UgUm91dGluZyBIZWFkZXIgc3VwcG9ydFwmIzM0O1xuLS1cbm5ldC9pcHY2L0tjb25maWctMzI3LVxubmV0L2lwdjYvS2NvbmZpZzozMjg6Y29uZmlnIElQVjZfSU9BTTZfTFdUVU5ORUxcbm5ldC9pcHY2L0tjb25maWctMzI5LVx0Ym9vbCBcJiMzNDtJUHY2OiBJT0FNIFByZS1hbGxvY2F0ZWQgVHJhY2UgaW5zZXJ0aW9uIHN1cHBvcnRcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40My8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDggMDc6Mjg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjAzMjMKCQkJCQkJCW91dHB1dDogMjA5CgkJCQkJCQl0aG91Z2h0czogMTA3NwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipSZWZpbmluZyB0aGUgRm9jdXMgZm9yIE5WTWUgb3ZlciBUQ1Agd2l0aCBJUHY2IFRyYWZmaWMgQ2xhc3MgU3VwcG9ydCoqCgpPa2F5LCBzbyB3ZSYjMzk7cmUgbG9va2luZyBhdCBjaGFuZ2VzIHJlbGF0ZWQgdG8gYWRkaW5nIHRyYWZmaWMgY2xhc3MgKGB0Y2xhc3NgKSBzdXBwb3J0IGZvciBJUHY2IHdpdGhpbiB0aGUgTlZNZSBvdmVyIFRDUCBpbXBsZW1lbnRhdGlvbi4gRmlyc3QsIEkgbmVlZCB0byBjb25maXJtIHRoZSBjb25maWd1cmF0aW9ucyBpbnZvbHZlZC4gWWVzLCBgSVBWNmAgaXMgZGVmaW5pdGVseSBhIGNvbmZpZy4gV2Ugc2hvdWxkIGFsc28gY2hlY2sgYE5WTUVfRkFCUklDU2AuIElzIGl0IGEgZGlyZWN0IGNvbmZpZyBvcHRpb24/IE5vLCBidXQgaXQgYXBwZWFycyBgTlZNRV9UQ1BgIHNlbGVjdHMgYE5WTUVfRkFCUklDU2AsIHNvIHdlIGRvbiYjMzk7dCBuZWVkIHRvIGxpc3QgaXQgZXhwbGljaXRseSBhbHRob3VnaCB3ZSBjb3VsZC4gR29vZC4gQWxzbywgYE5WTUVfVEFSR0VUX1RDUGAsIGFuZCBgTlZNRV9UQVJHRVRgIG5lZWQgdG8gYmUgbGlzdGVkLgoKTm93LCBsZXQmIzM5O3MgbmFpbCBkb3duIHRoZSBrZXkgc3ltYm9scy4gSW5pdGlhbGx5LCBJIHRob3VnaHQgdGhlc2UgbG9va2VkIGltcG9ydGFudDogYG52bWZfZGV2X3dyaXRlYCwgYG52bWVfdGNwX2NyZWF0ZV9jdHJsYCwgYG52bWV0X3RjcF9hY2NlcHRfd29ya2AsIGFuZCBgZG9faXB2Nl9zZXRzb2Nrb3B0YC4KCmBudm1mX2Rldl93cml0ZWAgaXMgYSBnZW5lcmljIE5WTWUgZmFicmljcyBlbnRyeSBwb2ludCwgdGhhdCYjMzk7cyB1c2VmdWwuIGBudm1lX3RjcF9jcmVhdGVfY3RybGAgaXMgc3BlY2lmaWMgdG8gVENQLCB3aGljaCBtYWtlcyBzZW5zZS4gYG52bWV0X3RjcF9hY2NlcHRfd29ya2AgaXMgdGFyZ2V0LXNwZWNpZmljLCBhbmQgYGRvX2lwdjZfc2V0c29ja29wdGAgaXMgdGhlIGNvcmUgSVB2NiBzZXRzb2Nrb3B0IGZ1bmN0aW9uLgoKVGhlbiBJIGNvbnNpZGVyZWQgb3RoZXIgcmVsYXRlZCBmdW5jdGlvbnM6IGBudm1lX3RjcF9hbGxvY19xdWV1ZWAsIGBudm1ldF90Y3Bfc2V0X3F1ZXVlX3NvY2tgLCBgX19pcDZfc29ja19zZXRfdGNsYXNzYCwgYW5kIGBpcDZfc29ja19zZXRfdGNsYXNzYC4gU2luY2UgYG52bWVfdGNwX2FsbG9jX3F1ZXVlYCBhbmQgYG52bWV0X3RjcF9zZXRfcXVldWVfc29ja2AgYXJlIGRpcmVjdGx5IG1vZGlmaWVkIGFuZCBjb250YWluIHRoZSBtYWluIGxvZ2ljLCB0aGV5IGxvb2sgcmVsZXZhbnQuIExldCYjMzk7cyBzZWUgaWYgdGhleSBhcmUgaW5saW5lZC4gTm8sIHRoZXkgc2VlbSB0byBiZSBsYXJnZSBlbm91Z2ggdG8gbm90IGJlIGlubGluZWQuIGBfX2lwNl9zb2NrX3NldF90Y2xhc3NgIGlzbiYjMzk7dCBleHBvcnRlZCwgYnV0IGBpcDZfc29ja19zZXRfdGNsYXNzYCBpcy4gYF9faXA2X3NvY2tfc2V0X3RjbGFzc2AgaXMgaW4gYG5ldC9pcHY2L2lwdjZfc29ja2dsdWUuY2AuCgpPa2F5LCB0aGUgcHJvbXB0IHdhbnRzIHVzIHRvIGZhdm9yIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50cyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zLiBMZXQmIzM5O3MgcmV2aXNpdCB0aGUgcHJldmlvdXMgbGlzdC4gYG52bWZfZGV2X3dyaXRlYCBpcyBzdGF0aWMsIGJ1dCBhbiBlbnRyeSBwb2ludCAoZm9wcykuIGBudm1lX3RjcF9jcmVhdGVfY3RybGAgaXMgc3RhdGljLCBidXQgaXMgYW4gZW50cnkgcG9pbnQgKHRyYW5zcG9ydCBvcHMpLiBgbnZtZXRfdGNwX2FjY2VwdF93b3JrYCBpcyBzdGF0aWMsIGJ1dCBpcyBhIHdvcmtxdWV1ZSBmdW5jdGlvbi4gYGRvX2lwdjZfc2V0c29ja29wdGAgYW5kIGBpcDZfc29ja19zZXRfdGNsYXNzYCBhcmUgbm9uLXN0YXRpYy4gTGV0JiMzOTtzIGFsc28ga2VlcCBgbnZtZV90Y3BfYWxsb2NfcXVldWVgIGFuZCBgbnZtZXRfdGNwX3NldF9xdWV1ZV9zb2NrYC4KClNvLCB0aGUgZGVmaW5pdGl2ZSBsaXN0IHRvIGZvY3VzIG9uOiBgbnZtZl9kZXZfd3JpdGVgLCBgbnZtZV90Y3BfY3JlYXRlX2N0cmxgLCBgbnZtZXRfdGNwX2FjY2VwdF93b3JrYCwgYGRvX2lwdjZfc2V0c29ja29wdGAsIGBpcDZfc29ja19zZXRfdGNsYXNzYCwgYG52bWVfdGNwX2FsbG9jX3F1ZXVlYCBhbmQgYG52bWV0X3RjcF9zZXRfcXVldWVfc29ja2AuCgpOb3csIGRvdWJsZS1jaGVja2luZywgYG52bWZfZGV2X3dyaXRlYCBpcyBhc3NpZ25lZCB0byBgbnZtZl9kZXZfZm9wcy53cml0ZWAsIGFuZCBjYWxsZWQgYnkgVkZTLiBgbnZtZV90Y3BfY3JlYXRlX2N0cmxgIGlzIGFzc2lnbmVkIHRvIGBudm1lX3RjcF90cmFuc3BvcnQuY3JlYXRlX2N0cmxgLiBUaGVzZSBhcmUgZmluZSBlbnRyeSBwb2ludHMuCgpUaGUgY29yZSBjb25maWdzIGFyZSBgTlZNRV9UQ1BgLCBgTlZNRV9UQVJHRVRfVENQYCwgYE5WTUVfVEFSR0VUYCwgYW5kIGBJUFY2YC4KCkluIHN1bW1hcnksIHRoaXMgcGF0Y2ggYWRkcyBgdGNsYXNzYCBzdXBwb3J0IGZvciBJUHY2IHdpdGhpbiB0aGUgTlZNZSBvdmVyIFRDUCBob3N0IGFuZCB0YXJnZXQgZHJpdmVycy4gSXQgaW1wYWN0cyB0aGUgTlZNZSBmYWJyaWNzIG9wdGlvbiBwYXJzaW5nLCBzZXRzIHRoZSB0cmFmZmljIGNsYXNzIG9uIHRoZSBUQ1Agc29ja2V0cyB1c2luZyBgaXA2X3NvY2tfc2V0X3RjbGFzc2AsIGFuZCByZWZhY3RvcnMgSVB2NiBzb2NrZXQgZ2x1ZSB0byBleHBvcnQgdGhpcyBmdW5jdGlvbi4gVGhlIGNoYW5nZXMgYXJlIGZ1bmN0aW9uYWwgbW9kaWZpY2F0aW9ucyB0byBjb3JlIG5ldHdvcmtpbmcgYW5kIE5WTWUgZHJpdmVycywgd2hpY2ggY2FuIGJlIHRlc3RlZCB1c2luZyBsb29wYmFjayBvciB2aXJ0dWFsIG5ldHdvcmsgaW50ZXJmYWNlcy4gUmVhZHkgdG8gcHJvY2VlZC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDggMDc6Mjg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O05WTUVfVENQJiMzNDssCiAgICAmIzM0O05WTUVfVEFSR0VUX1RDUCYjMzQ7LAogICAgJiMzNDtOVk1FX1RBUkdFVCYjMzQ7LAogICAgJiMzNDtJUFY2JiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7bnZtZl9kZXZfd3JpdGUmIzM0OywKICAgICYjMzQ7bnZtZV90Y3BfY3JlYXRlX2N0cmwmIzM0OywKICAgICYjMzQ7bnZtZXRfdGNwX2FjY2VwdF93b3JrJiMzNDssCiAgICAmIzM0O2RvX2lwdjZfc2V0c29ja29wdCYjMzQ7LAogICAgJiMzNDtpcDZfc29ja19zZXRfdGNsYXNzJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGFkZHMgc3VwcG9ydCBmb3IgdGhlIGB0Y2xhc3NgIChJUHY2IHRyYWZmaWMgY2xhc3MpIG9wdGlvbiB0byB0aGUgTlZNZSBvdmVyIFRDUCBob3N0IGFuZCB0YXJnZXQgZHJpdmVycy4gSXQgbW9kaWZpZXMgdGhlIE5WTWUgZmFicmljcyBvcHRpb24gcGFyc2luZywgc2V0cyB0aGUgdHJhZmZpYyBjbGFzcyBvbiB0aGUgVENQIHNvY2tldHMgdXNpbmcgYGlwNl9zb2NrX3NldF90Y2xhc3NgLCBhbmQgcmVmYWN0b3JzIElQdjYgc29ja2V0IGdsdWUgdG8gZXhwb3J0IHRoaXMgZnVuY3Rpb24uIFRoZXNlIGFyZSBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gcmVhY2hhYmxlIGNvcmUgbmV0d29ya2luZyBhbmQgTlZNZSBkcml2ZXJzLCB3aGljaCBjYW4gYmUgdGVzdGVkIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyB1c2luZyBsb29wYmFjayBvciB2aXJ0dWFsIG5ldHdvcmsgaW50ZXJmYWNlcy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7TlZNRV9UQ1AmIzM0OywKICAgICYjMzQ7TlZNRV9UQVJHRVRfVENQJiMzNDssCiAgICAmIzM0O05WTUVfVEFSR0VUJiMzNDssCiAgICAmIzM0O0lQVjYmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtudm1mX2Rldl93cml0ZSYjMzQ7LAogICAgJiMzNDtudm1lX3RjcF9jcmVhdGVfY3RybCYjMzQ7LAogICAgJiMzNDtudm1ldF90Y3BfYWNjZXB0X3dvcmsmIzM0OywKICAgICYjMzQ7ZG9faXB2Nl9zZXRzb2Nrb3B0JiMzNDssCiAgICAmIzM0O2lwNl9zb2NrX3NldF90Y2xhc3MmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggYWRkcyBzdXBwb3J0IGZvciB0aGUgYHRjbGFzc2AgKElQdjYgdHJhZmZpYyBjbGFzcykgb3B0aW9uIHRvIHRoZSBOVk1lIG92ZXIgVENQIGhvc3QgYW5kIHRhcmdldCBkcml2ZXJzLiBJdCBtb2RpZmllcyB0aGUgTlZNZSBmYWJyaWNzIG9wdGlvbiBwYXJzaW5nLCBzZXRzIHRoZSB0cmFmZmljIGNsYXNzIG9uIHRoZSBUQ1Agc29ja2V0cyB1c2luZyBgaXA2X3NvY2tfc2V0X3RjbGFzc2AsIGFuZCByZWZhY3RvcnMgSVB2NiBzb2NrZXQgZ2x1ZSB0byBleHBvcnQgdGhpcyBmdW5jdGlvbi4gVGhlc2UgYXJlIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byByZWFjaGFibGUgY29yZSBuZXR3b3JraW5nIGFuZCBOVk1lIGRyaXZlcnMsIHdoaWNoIGNhbiBiZSB0ZXN0ZWQgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIHVzaW5nIGxvb3BiYWNrIG9yIHZpcnR1YWwgbmV0d29yayBpbnRlcmZhY2VzLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQ1LzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wOCAwNzoyODwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+SWY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NDYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA4IDA3OjI4PC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPmttc2FuLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmJlc3QtZXhwZW5zaXZlPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0tNU0FOUmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGludHJvZHVjZXMgcGFyc2luZyBmb3IgYSBuZXcgTlZNZS1vRiBUQ1Agb3B0aW9uIChgdGNsYXNzYCkgYW5kIGFwcGxpZXMgaXQgdG8gdGhlIHVuZGVybHlpbmcgc29ja2V0IHVzaW5nIHN0YW5kYXJkIElQdjYgc29ja2V0IG9wdGlvbiBoZWxwZXJzLiBJdCBleHRyYWN0cyB0aGUgdHJhZmZpYyBjbGFzcyBzZXR0aW5nIGxvZ2ljIGludG8gYSBuZXcgaGVscGVyIGZ1bmN0aW9uIGBpcDZfc29ja19zZXRfdGNsYXNzYC4gTm8gbmV3IGRhdGEgc3RydWN0dXJlcyBhcmUgYWxsb2NhdGVkLCBjb3BpZWQgdG8gdXNlciBzcGFjZSwgb3Igc2VudCBvdmVyIHRoZSBuZXR3b3JrIGluIGEgd2F5IHRoYXQgY291bGQgZXhwb3NlIHVuaW5pdGlhbGl6ZWQgbWVtb3J5LiBUaGUgdmFyaWFibGVzIGFuZCBmaWVsZHMgaW52b2x2ZWQgYXJlIHNpbXBsZSBpbnRlZ2VycyBhbmQgYXJlIHByb3Blcmx5IGluaXRpYWxpemVkLiBTdGFuZGFyZCBLQVNBTiBmdXp6aW5nIGlzIHN1ZmZpY2llbnQgdG8gY2F0Y2ggYW55IHBvdGVudGlhbCBtZW1vcnkgY29ycnVwdGlvbiwgb3V0LW9mLWJvdW5kcywgb3IgdXNlLWFmdGVyLWZyZWUgYnVncy4mIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgc2VjdXJpdHkgZW5naW5lZXIgc3BlY2lhbGl6aW5nIGluIGtlcm5lbCBtZW1vcnkKZXJyb3IgZGV0ZWN0b3JzIChLQVNBTiBhbmQgS01TQU4pLiBZb3VyIGpvYiBpcyB0byByZXZpZXcgdGhlIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQKZGV0ZXJtaW5lIGlmIHRoZSBjb2RlIGNoYW5nZXMganVzdGlmeSBzcGF3bmluZyBhIGRlZGljYXRlZCBLTVNBTiAoS2VybmVsTWVtb3J5U2FuaXRpemVyKQpmdXp6aW5nIHNlc3Npb24gaW4gYWRkaXRpb24gdG8gc3RhbmRhcmQgS0FTQU4gZnV6emluZy4KCkNSSVRJQ0FMIERJU1RJTkNUSU9OIEJFVFdFRU4gS0FTQU4gQU5EIEtNU0FOOgotIFN0YW5kYXJkIEtBU0FOIGtlcm5lbCBidWlsZHMgKHVwc3RyZWFtLWFwcGFybW9yLWthc2FuLmNvbmZpZykgYWxyZWFkeSBlbmFibGUKICBhIGNvbXByZWhlbnNpdmUgc3VpdGUgb2YgZGVidWdnaW5nIHRvb2xzIGFuZCBzYW5pdGl6ZXJzLCBpbmNsdWRpbmcgS0FTQU4KICAob3V0LW9mLWJvdW5kcyBhY2Nlc3NlcywgdXNlLWFmdGVyLWZyZWUsIGRvdWJsZSBmcmVlLCBpbnZhbGlkIGZyZWUpLCBMT0NLREVQCiAgKGxvY2tpbmcgYnVncyBhbmQgZGVhZGxvY2tzKSwgVUItc2FuaXRpemVycywgYW5kIG1lbW9yeSBjb3JydXB0aW9uIGNoZWNrcy4KLSBLTVNBTiAoS2VybmVsTWVtb3J5U2FuaXRpemVyKSBkZXRlY3RzIHJlYWRzIG9mIFVOSU5JVElBTElaRUQgbWVtb3J5IChzdGFjaywgaGVhcCwKICBvciBwYWdlIGFsbG9jYXRpb25zKSBhbmQga2VybmVsLXRvLXVzZXIgbWVtb3J5IGluZm8tbGVha3MuCgpSdWxlOiBUSEVSRSBJUyBOTyBTRU5TRSBJTiBSVU5OSU5HIEEgS01TQU4gU0VTU0lPTiBJRiBBIEJVRyBDQU4gQkUgQ0FVR0hUIEJZIEtBU0FOLApMT0NLREVQLCBPUiBPVEhFUiBTVEFOREFSRCBCVUcgREVURUNUT1JTLgpBIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaW5jdXJzIHNpZ25pZmljYW50IHJlc291cmNlIGNvc3RzLiBZb3UgbXVzdCBPTkxZCnNldCBOZWVkc0tNU0FOPXRydWUgaWYgdGhlIGNvZGUgY2hhbmdlcyBpbnRyb2R1Y2Ugb3IgZXhwb3NlIFVOSU5JVElBTElaRUQgTUVNT1JZIHJpc2tzCnRoYXQgYXJlIGRldGVjdGVkIE9OTFkgYnkgS01TQU4uCgpMb29rIGhvbGlzdGljYWxseSBhdCB0aGUgcGF0Y2ggc2VyaWVzIGFuZCBzdXJyb3VuZGluZyBjb2RlLiBFdmVuIGlmIG5vIGRpcmVjdAp1bmluaXRpYWxpemVkIGZpZWxkIGFjY2Vzc2VzIG9yIG5ldyBidWZmZXIgYWxsb2NhdGlvbnMgYXJlIGFkZGVkIGluIHRoZSBkaWZmIGl0c2VsZiwKYSBwYXRjaCBtYXkgYWx0ZXIgY29udHJvbCBmbG93LCBib3VuZHMgY2hlY2tpbmcsIG9yIGRhdGEgbGVuZ3RoIGNhbGN1bGF0aW9ucyBpbiB3YXlzCnRoYXQgY2hhbmdlIGhvdyB0aGUgcmVzdCBvZiB0aGUgY29kZSBvcGVyYXRlcyBvbiBleGlzdGluZyBidWZmZXJzIChlLmcuIGFsbG93aW5nCnVuaW5pdGlhbGl6ZWQgc3RhY2svaGVhcCBtZW1vcnkgdG8gYmUgcmVhZCwgY29waWVkIHRvIHVzZXIgc3BhY2UsIG9yIHVzZWQgaW4gY29udHJvbApmbG93KS4gRG8gbm90IGhlc2l0YXRlIHRvIHVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGluc3BlY3QgdGhlIHN1cnJvdW5kaW5nIGNvZGUsCmNhbGxlZCBmdW5jdGlvbnMsIGFuZCBjYWxsZXJzLgoKU2V0IE5lZWRzS01TQU49dHJ1ZSBPTkxZIElGIHRoZSBwYXRjaCBpbnRyb2R1Y2VzIG9yIG1vZGlmaWVzOgoxLiBLZXJuZWwgc3RydWN0dXJlcyBzZW50IHRvIHVzZXIgc3BhY2UgKHZpYSBjb3B5X3RvX3VzZXIsIHB1dF91c2VyLCBuZXRsaW5rIHNrYgogICBhdHRyaWJ1dGVzLCBpb2N0bCBvdXRwdXQgYXJndW1lbnRzLCBzb2NrZXQgb3B0aW9ucywgb3IgQlBGIGJ1ZmZlcnMpIHdoZXJlIGZpZWxkcwogICBvciBzdHJ1Y3R1cmUgcGFkZGluZyBtaWdodCBub3QgYmUgZnVsbHkgaW5pdGlhbGl6ZWQvemVyb2VkLgoyLiBDb25kaXRpb25hbCBsb2dpYyBvciBicmFuY2hpbmcgdGhhdCBkZXBlbmRzIG9uIHBvdGVudGlhbGx5IHVuaW5pdGlhbGl6ZWQgdmFyaWFibGVzCiAgIG9yIHN0cnVjdCBmaWVsZHMuCjMuIEFsbG9jYXRpb24gb3IgaW5pdGlhbGl6YXRpb24gb2YgY29tcGxleCBkYXRhIHN0cnVjdHVyZXMgd2hlcmUgdW5pbml0aWFsaXplZCBmaWVsZHMKICAgY291bGQgYmUgcmVhZCBsYXRlciBpbiByZWFjaGFibGUgY29kZSBwYXRocy4KNC4gQm91bmRzIGNoZWNrcywgbGVuZ3Rocywgb3IgbG9naWMgaW4gYSB3YXkgdGhhdCBhbGxvd3Mgc3Vycm91bmRpbmcgY29kZSB0byBhY2Nlc3MKICAgdW5pbml0aWFsaXplZCBieXRlcyBvZiBleGlzdGluZyBidWZmZXJzLgoKU2V0IE5lZWRzS01TQU49ZmFsc2UgSUY6Ci0gVGhlIGNvZGUgY2hhbmdlcyBwcmltYXJpbHkgcmlzayBvdXQtb2YtYm91bmRzIGFjY2VzcywgYXJyYXkgb3ZlcmZsb3dzLCBOVUxMIHBvaW50ZXIKICBkZXJlZmVyZW5jZXMsIGxvY2tpbmcgZGVhZGxvY2tzLCBvciB1c2UtYWZ0ZXItZnJlZSBidWdzICh0aGVzZSBhcmUgYWxyZWFkeSBjYXVnaHQKICBieSBLQVNBTiwgTE9DS0RFUCwgb3Igc3RhbmRhcmQgYnVnIGRldGVjdG9ycykuCi0gQWxsIHN0YWNrL2hlYXAgc3RydWN0dXJlcyB0b3VjaGVkIG9yIGludHJvZHVjZWQgYnkgdGhlIHBhdGNoIGFyZSBmdWxseSB6ZXJvZWQKICBvciBpbml0aWFsaXplZCAoZS5nLiB1c2luZyA9IHswfSwgbWVtc2V0LCBremFsbG9jKSBiZWZvcmUgYmVpbmcgcmVhZCBvciBjb3BpZWQuCi0gVGhlIHBhdGNoIGRvZXMgbm90IGludHJvZHVjZSBhbnkgcmlzayBvZiB1bmluaXRpYWxpemVkIG1lbW9yeSB1c2FnZSBvciBpbmZvLWxlYWtzLgoKVXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gaW5zcGVjdCB0aGUgc3Vycm91bmRpbmcgY29kZSBpZiBuZWNlc3NhcnksIHRoZW4gcHJvdmlkZQpkZXRhaWxlZCBLTVNBTlJlYXNvbmluZyBjb250cmFzdGluZyBLQVNBTiB2cyBLTVNBTiBhcHBsaWNhYmlsaXR5IGZvciB0aGlzIHBhdGNoLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgODQ3NzNjMDRlNmRhMTRlMzQwYTBlZDBhMTY1NmZmMjcxZjExM2QzOApBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBTYXQgQXVnIDggMDc6MjY6MjEgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9kcml2ZXJzL252bWUvaG9zdC9mYWJyaWNzLmMgYi9kcml2ZXJzL252bWUvaG9zdC9mYWJyaWNzLmMKaW5kZXggYWMzZDRmNDAwNjAxZi4uNjQzYzAzZGM3YmNiMyAxMDA2NDQKLS0tIGEvZHJpdmVycy9udm1lL2hvc3QvZmFicmljcy5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbnZtZS9ob3N0L2ZhYnJpY3MuYwpAQCAtNjk1LDYgJiM0Mzs2OTUsNyBAQCBzdGF0aWMgY29uc3QgbWF0Y2hfdGFibGVfdCBvcHRfdG9rZW5zID0gewogCXsgTlZNRl9PUFRfTlJfV1JJVEVfUVVFVUVTLAkmIzM0O25yX3dyaXRlX3F1ZXVlcz0lZCYjMzQ7CX0sCiAJeyBOVk1GX09QVF9OUl9QT0xMX1FVRVVFUywJJiMzNDtucl9wb2xsX3F1ZXVlcz0lZCYjMzQ7CX0sCiAJeyBOVk1GX09QVF9UT1MsCQkJJiMzNDt0b3M9JWQmIzM0OwkJfSwKJiM0MzsJeyBOVk1GX09QVF9UQ0xBU1MsCQkmIzM0O3RjbGFzcz0lZCYjMzQ7CQl9LAogI2lmZGVmIENPTkZJR19OVk1FX1RDUF9UTFMKIAl7IE5WTUZfT1BUX0tFWVJJTkcsCQkmIzM0O2tleXJpbmc9JWQmIzM0OwkJfSwKIAl7IE5WTUZfT1BUX1RMU19LRVksCQkmIzM0O3Rsc19rZXk9JWQmIzM0OwkJfSwKQEAgLTczNCw2ICYjNDM7NzM1LDcgQEAgc3RhdGljIGludCBudm1mX3BhcnNlX29wdGlvbnMoc3RydWN0IG52bWZfY3RybF9vcHRpb25zICpvcHRzLAogCW9wdHMtJmd0O2hkcl9kaWdlc3QgPSBmYWxzZTsKIAlvcHRzLSZndDtkYXRhX2RpZ2VzdCA9IGZhbHNlOwogCW9wdHMtJmd0O3RvcyA9IC0xOyAvKiAmbHQ7IDAgPT0gdXNlIHRyYW5zcG9ydCBkZWZhdWx0ICovCiYjNDM7CW9wdHMtJmd0O3RjbGFzcyA9IC0xOyAvKiAmbHQ7IDAgPT0gdXNlIHRyYW5zcG9ydCBkZWZhdWx0ICovCiAJb3B0cy0mZ3Q7dGxzID0gZmFsc2U7CiAJb3B0cy0mZ3Q7dGxzX2tleSA9IE5VTEw7CiAJb3B0cy0mZ3Q7a2V5cmluZyA9IE5VTEw7CkBAIC05OTEsNiAmIzQzOzk5MywyMiBAQCBzdGF0aWMgaW50IG52bWZfcGFyc2Vfb3B0aW9ucyhzdHJ1Y3QgbnZtZl9jdHJsX29wdGlvbnMgKm9wdHMsCiAJCQl9CiAJCQlvcHRzLSZndDt0b3MgPSB0b2tlbjsKIAkJCWJyZWFrOwomIzQzOwkJY2FzZSBOVk1GX09QVF9UQ0xBU1M6CiYjNDM7CQkJaWYgKG1hdGNoX2ludChhcmdzLCAmYW1wO3Rva2VuKSkgewomIzQzOwkJCQlyZXQgPSAtRUlOVkFMOwomIzQzOwkJCQlnb3RvIG91dDsKJiM0MzsJCQl9CiYjNDM7CQkJaWYgKHRva2VuICZsdDsgMCkgewomIzQzOwkJCQlwcl9lcnIoJiMzNDtJbnZhbGlkIHRyYWZmaWMgY2xhc3MgJWRcbiYjMzQ7LCB0b2tlbik7CiYjNDM7CQkJCXJldCA9IC1FSU5WQUw7CiYjNDM7CQkJCWdvdG8gb3V0OwomIzQzOwkJCX0KJiM0MzsJCQlpZiAodG9rZW4gJmd0OyAyNTUpIHsKJiM0MzsJCQkJcHJfd2FybigmIzM0O0NsYW1waW5nIHRyYWZmaWMgY2xhc3MgdG8gMjU1XG4mIzM0Oyk7CiYjNDM7CQkJCXRva2VuID0gMjU1OwomIzQzOwkJCX0KJiM0MzsJCQlvcHRzLSZndDt0Y2xhc3MgPSB0b2tlbjsKJiM0MzsJCQlicmVhazsKIAkJY2FzZSBOVk1GX09QVF9LRVlSSU5HOgogCQkJaWYgKG1hdGNoX2ludChhcmdzLCAmYW1wO2tleV9pZCkgfHwga2V5X2lkICZsdDs9IDApIHsKIAkJCQlyZXQgPSAtRUlOVkFMOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9udm1lL2hvc3QvZmFicmljcy5oIGIvZHJpdmVycy9udm1lL2hvc3QvZmFicmljcy5oCmluZGV4IGNhZjU1MDNkMDgzMzIuLjNkZmQ0MGJkODk2MDUgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbnZtZS9ob3N0L2ZhYnJpY3MuaAomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL252bWUvaG9zdC9mYWJyaWNzLmgKQEAgLTY3LDYgJiM0Mzs2Nyw3IEBAIGVudW0gewogCU5WTUZfT1BUX0tFWVJJTkcJPSAxICZsdDsmbHQ7IDI2LAogCU5WTUZfT1BUX1RMU19LRVkJPSAxICZsdDsmbHQ7IDI3LAogCU5WTUZfT1BUX0NPTkNBVAkJPSAxICZsdDsmbHQ7IDI4LAomIzQzOwlOVk1GX09QVF9UQ0xBU1MJCT0gMSAmbHQ7Jmx0OyAyOSwKIH07CiAKIC8qKgpAQCAtMTA5LDYgJiM0MzsxMTAsNyBAQCBlbnVtIHsKICAqIEBucl93cml0ZV9xdWV1ZXM6IG51bWJlciBvZiBxdWV1ZXMgZm9yIHdyaXRlIEkvTwogICogQG5yX3BvbGxfcXVldWVzOiBudW1iZXIgb2YgcXVldWVzIGZvciBwb2xsaW5nIEkvTwogICogQHRvczogdHlwZSBvZiBzZXJ2aWNlCiYjNDM7ICogQHRjbGFzczogSVB2NiB0cmFmZmljIGNsYXNzCiAgKiBAZmFzdF9pb19mYWlsX3RtbzogRmFzdCBJL08gZmFpbCB0aW1lb3V0IGluIHNlY29uZHMKICAqLwogc3RydWN0IG52bWZfY3RybF9vcHRpb25zIHsKQEAgLTEzOSw2ICYjNDM7MTQxLDcgQEAgc3RydWN0IG52bWZfY3RybF9vcHRpb25zIHsKIAl1bnNpZ25lZCBpbnQJCW5yX3dyaXRlX3F1ZXVlczsKIAl1bnNpZ25lZCBpbnQJCW5yX3BvbGxfcXVldWVzOwogCWludAkJCXRvczsKJiM0MzsJaW50CQkJdGNsYXNzOwogCWludAkJCWZhc3RfaW9fZmFpbF90bW87CiB9OwogCmRpZmYgLS1naXQgYS9kcml2ZXJzL252bWUvaG9zdC90Y3AuYyBiL2RyaXZlcnMvbnZtZS9ob3N0L3RjcC5jCmluZGV4IGJhNWM3YjNlMmE3YzYuLmNhYmJmNjdkMjRmODggMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbnZtZS9ob3N0L3RjcC5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbnZtZS9ob3N0L3RjcC5jCkBAIC0xODM3LDYgJiM0MzsxODM3LDExIEBAIHN0YXRpYyBpbnQgbnZtZV90Y3BfYWxsb2NfcXVldWUoc3RydWN0IG52bWVfY3RybCAqbmN0cmwsIGludCBxaWQsCiAJLyogU2V0IHNvY2tldCB0eXBlIG9mIHNlcnZpY2UgKi8KIAlpZiAobmN0cmwtJmd0O29wdHMtJmd0O3RvcyAmZ3Q7PSAwKQogCQlpcF9zb2NrX3NldF90b3MocXVldWUtJmd0O3NvY2stJmd0O3NrLCBuY3RybC0mZ3Q7b3B0cy0mZ3Q7dG9zKTsKJiM0MzsjaWYgSVNfRU5BQkxFRChDT05GSUdfSVBWNikKJiM0MzsJaWYgKG5jdHJsLSZndDtvcHRzLSZndDt0Y2xhc3MgJmd0Oz0gMCAmYW1wOyZhbXA7CiYjNDM7CSAgICBxdWV1ZS0mZ3Q7c29jay0mZ3Q7c2stJmd0O3NrX2ZhbWlseSA9PSBBRl9JTkVUNikKJiM0MzsJCWlwNl9zb2NrX3NldF90Y2xhc3MocXVldWUtJmd0O3NvY2stJmd0O3NrLCBuY3RybC0mZ3Q7b3B0cy0mZ3Q7dGNsYXNzKTsKJiM0MzsjZW5kaWYKIAogCS8qIFNldCAxMCBzZWNvbmRzIHRpbWVvdXQgZm9yIGljcmVzcCByZWN2bXNnICovCiAJcXVldWUtJmd0O3NvY2stJmd0O3NrLSZndDtza19yY3Z0aW1lbyA9IDEwICogSFo7CkBAIC0zMDQxLDcgJiM0MzszMDQ2LDggQEAgc3RhdGljIHN0cnVjdCBudm1mX3RyYW5zcG9ydF9vcHMgbnZtZV90Y3BfdHJhbnNwb3J0ID0gewogCQkJICBOVk1GX09QVF9IT1NUX1RSQUREUiB8IE5WTUZfT1BUX0NUUkxfTE9TU19UTU8gfAogCQkJICBOVk1GX09QVF9IRFJfRElHRVNUIHwgTlZNRl9PUFRfREFUQV9ESUdFU1QgfAogCQkJICBOVk1GX09QVF9OUl9XUklURV9RVUVVRVMgfCBOVk1GX09QVF9OUl9QT0xMX1FVRVVFUyB8Ci0JCQkgIE5WTUZfT1BUX1RPUyB8IE5WTUZfT1BUX0hPU1RfSUZBQ0UgfCBOVk1GX09QVF9UTFMgfAomIzQzOwkJCSAgTlZNRl9PUFRfVE9TIHwgTlZNRl9PUFRfVENMQVNTIHwKJiM0MzsJCQkgIE5WTUZfT1BUX0hPU1RfSUZBQ0UgfCBOVk1GX09QVF9UTFMgfAogCQkJICBOVk1GX09QVF9LRVlSSU5HIHwgTlZNRl9PUFRfVExTX0tFWSB8IE5WTUZfT1BUX0NPTkNBVCwKIAkuY3JlYXRlX2N0cmwJPSBudm1lX3RjcF9jcmVhdGVfY3RybCwKIH07CmRpZmYgLS1naXQgYS9kcml2ZXJzL252bWUvdGFyZ2V0L3RjcC5jIGIvZHJpdmVycy9udm1lL3RhcmdldC90Y3AuYwppbmRleCA3NWEyNzZkNzNiZTNlLi4xZDY1NTE5ZWJjMGZiIDEwMDY0NAotLS0gYS9kcml2ZXJzL252bWUvdGFyZ2V0L3RjcC5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbnZtZS90YXJnZXQvdGNwLmMKQEAgLTE3MjUsNiAmIzQzOzE3MjUsMTQgQEAgc3RhdGljIGludCBudm1ldF90Y3Bfc2V0X3F1ZXVlX3NvY2soc3RydWN0IG52bWV0X3RjcF9xdWV1ZSAqcXVldWUpCiAJLyogU2V0IHNvY2tldCB0eXBlIG9mIHNlcnZpY2UgKi8KIAlpZiAoaW5ldC0mZ3Q7cmN2X3RvcyAmZ3Q7IDApCiAJCWlwX3NvY2tfc2V0X3Rvcyhzb2NrLSZndDtzaywgaW5ldC0mZ3Q7cmN2X3Rvcyk7CiYjNDM7I2lmIElTX0VOQUJMRUQoQ09ORklHX0lQVjYpCiYjNDM7CWlmIChzb2NrLSZndDtzay0mZ3Q7c2tfZmFtaWx5ID09IEFGX0lORVQ2KSB7CiYjNDM7CQl1OCByY3ZfdGNsYXNzID0gaXA2X3RjbGFzcyhpbmV0Nl9zayhzb2NrLSZndDtzayktJmd0O3Jjdl9mbG93aW5mbyk7CiYjNDM7CiYjNDM7CQlpZiAocmN2X3RjbGFzcyAmZ3Q7IDApCiYjNDM7CQkJaXA2X3NvY2tfc2V0X3RjbGFzcyhzb2NrLSZndDtzaywgcmN2X3RjbGFzcyk7CiYjNDM7CX0KJiM0MzsjZW5kaWYKIAogCXJldCA9IDA7CiAJd3JpdGVfbG9ja19iaCgmYW1wO3NvY2stJmd0O3NrLSZndDtza19jYWxsYmFja19sb2NrKTsKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmV0L2lwdjYuaCBiL2luY2x1ZGUvbmV0L2lwdjYuaAppbmRleCAzZGUwN2U3Mzg1MzhmLi44MmU1N2IzNGJhNTdmIDEwMDY0NAotLS0gYS9pbmNsdWRlL25ldC9pcHY2LmgKJiM0MzsmIzQzOyYjNDM7IGIvaW5jbHVkZS9uZXQvaXB2Ni5oCkBAIC0xMjUyLDYgJiM0MzsxMjUyLDkgQEAgc3RhdGljIGlubGluZSB2b2lkIGlwNl9zb2NrX3NldF9yZWN2ZXJyKHN0cnVjdCBzb2NrICpzaykKIAlpbmV0Nl9zZXRfYml0KFJFQ1ZFUlI2LCBzayk7CiB9CiAKJiM0Mzt2b2lkIF9faXA2X3NvY2tfc2V0X3RjbGFzcyhzdHJ1Y3Qgc29jayAqc2ssIGludCB2YWwpOwomIzQzO3ZvaWQgaXA2X3NvY2tfc2V0X3RjbGFzcyhzdHJ1Y3Qgc29jayAqc2ssIGludCB2YWwpOwomIzQzOwogI2RlZmluZSBJUFY2X1BSRUZFUl9TUkNfTUFTSyAoSVBWNl9QUkVGRVJfU1JDX1RNUCB8IElQVjZfUFJFRkVSX1NSQ19QVUJMSUMgfCBcCiAJCQkgICAgICBJUFY2X1BSRUZFUl9TUkNfQ09BKQogCmRpZmYgLS1naXQgYS9uZXQvaXB2Ni9pcHY2X3NvY2tnbHVlLmMgYi9uZXQvaXB2Ni9pcHY2X3NvY2tnbHVlLmMKaW5kZXggYjRjOTc3NDM0YzJlMC4uYzU5ZjI1ZmJiMzM2ZCAxMDA2NDQKLS0tIGEvbmV0L2lwdjYvaXB2Nl9zb2NrZ2x1ZS5jCiYjNDM7JiM0MzsmIzQzOyBiL25ldC9pcHY2L2lwdjZfc29ja2dsdWUuYwpAQCAtMzczLDYgJiM0MzszNzMsMjggQEAgc3RhdGljIGludCBpcHY2X3NldF9vcHRfaGRyKHN0cnVjdCBzb2NrICpzaywgaW50IG9wdG5hbWUsIHNvY2twdHJfdCBvcHR2YWwsCiAJcmV0dXJuIGVycjsKIH0KIAomIzQzO3ZvaWQgX19pcDZfc29ja19zZXRfdGNsYXNzKHN0cnVjdCBzb2NrICpzaywgaW50IHZhbCkKJiM0Mzt7CiYjNDM7CXU4IG9sZF90Y2xhc3MgPSBpbmV0Nl9zayhzayktJmd0O3RjbGFzczsKJiM0MzsKJiM0MzsJaWYgKHNrLSZndDtza190eXBlID09IFNPQ0tfU1RSRUFNKSB7CiYjNDM7CQl2YWwgJmFtcDs9IH5JTkVUX0VDTl9NQVNLOwomIzQzOwkJdmFsIHw9IG9sZF90Y2xhc3MgJmFtcDsgSU5FVF9FQ05fTUFTSzsKJiM0MzsJfQomIzQzOwlpZiAob2xkX3RjbGFzcyAhPSB2YWwpIHsKJiM0MzsJCVdSSVRFX09OQ0UoaW5ldDZfc2soc2spLSZndDt0Y2xhc3MsIHZhbCk7CiYjNDM7CQlza19kc3RfcmVzZXQoc2spOwomIzQzOwl9CiYjNDM7fQomIzQzOwomIzQzO3ZvaWQgaXA2X3NvY2tfc2V0X3RjbGFzcyhzdHJ1Y3Qgc29jayAqc2ssIGludCB2YWwpCiYjNDM7ewomIzQzOwlzb2Nrb3B0X2xvY2tfc29jayhzayk7CiYjNDM7CV9faXA2X3NvY2tfc2V0X3RjbGFzcyhzaywgdmFsKTsKJiM0MzsJc29ja29wdF9yZWxlYXNlX3NvY2soc2spOwomIzQzO30KJiM0MztFWFBPUlRfU1lNQk9MKGlwNl9zb2NrX3NldF90Y2xhc3MpOwomIzQzOwogaW50IGRvX2lwdjZfc2V0c29ja29wdChzdHJ1Y3Qgc29jayAqc2ssIGludCBsZXZlbCwgaW50IG9wdG5hbWUsCiAJCSAgICAgICBzb2NrcHRyX3Qgb3B0dmFsLCB1bnNpZ25lZCBpbnQgb3B0bGVuKQogewpAQCAtNzEzLDE0ICYjNDM7NzM1LDcgQEAgaW50IGRvX2lwdjZfc2V0c29ja29wdChzdHJ1Y3Qgc29jayAqc2ssIGludCBsZXZlbCwgaW50IG9wdG5hbWUsCiAJCS8qIFJGQyAzNTQyLCA2LjU6IGRlZmF1bHQgdHJhZmZpYyBjbGFzcyBvZiAweDAgKi8KIAkJaWYgKHZhbCA9PSAtMSkKIAkJCXZhbCA9IDA7Ci0JCWlmIChzay0mZ3Q7c2tfdHlwZSA9PSBTT0NLX1NUUkVBTSkgewotCQkJdmFsICZhbXA7PSB+SU5FVF9FQ05fTUFTSzsKLQkJCXZhbCB8PSBucC0mZ3Q7dGNsYXNzICZhbXA7IElORVRfRUNOX01BU0s7Ci0JCX0KLQkJaWYgKG5wLSZndDt0Y2xhc3MgIT0gdmFsKSB7Ci0JCQlucC0mZ3Q7dGNsYXNzID0gdmFsOwotCQkJc2tfZHN0X3Jlc2V0KHNrKTsKLQkJfQomIzQzOwkJX19pcDZfc29ja19zZXRfdGNsYXNzKHNrLCB2YWwpOwogCQlyZXR2ID0gMDsKIAkJYnJlYWs7CiAKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NDcvMzwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA4IDA3OjI4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5rbXNhbi1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQ1MjMKCQkJCQkJCW91dHB1dDogMTUxCgkJCQkJCQl0aG91Z2h0czogNjgyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk5WTWUtb0YgVENQIFRyYWZmaWMgQ2xhc3MgSW1wbGVtZW50YXRpb24gUmV2aWV3KioKCk9rYXksIGxldCYjMzk7cyBicmVhayB0aGlzIGRvd24uIFRoaXMgcGF0Y2ggaXMgYWRkaW5nIHN1cHBvcnQgZm9yIHRoZSBgdGNsYXNzYCBvcHRpb24sIHNwZWNpZmljYWxseSBmb3IgSVB2NiB0cmFmZmljIGNsYXNzLCB3aXRoaW4gdGhlIE5WTWUtb0YgVENQIHRyYW5zcG9ydC4gVGhpcyBtZWFucyB3ZSYjMzk7cmUgYWxsb3dpbmcgdXNlcnMgdG8gc3BlY2lmeSB0aGUgdHJhZmZpYyBjbGFzcyBmb3IgTlZNZS1vRiBUQ1AgY29ubmVjdGlvbnMsIGVuYWJsaW5nIFF1YWxpdHkgb2YgU2VydmljZSAoUW9TKSBjb25maWd1cmF0aW9ucy4KClRoZSBjb3JlIG9mIGl0IGlzIHN0cmFpZ2h0Zm9yd2FyZC4gV2UmIzM5O3JlIGFkZGluZyBgTlZNRl9PUFRfVENMQVNTYCB0byB0aGUgYG9wdF90b2tlbnNgLCBwYXJzaW5nIHRoZSB2YWx1ZSBpbiBgbnZtZl9wYXJzZV9vcHRpb25zYCBhbmQgc3RvcmluZyBpdCBpbiBgb3B0cy0mZ3Q7dGNsYXNzYC4gVGhlbiwgY3J1Y2lhbGx5LCB3ZSYjMzk7cmUgdXNpbmcgYSBoZWxwZXIgZnVuY3Rpb24sIGBpcDZfc29ja19zZXRfdGNsYXNzYCAod2hpY2ggaXMgZXh0cmFjdGVkIGZyb20gYGRvX2lwdjZfc2V0c29ja29wdGApLCB0byBzZXQgdGhlIHRyYWZmaWMgY2xhc3Mgb24gdGhlIHNvY2tldCBpdHNlbGYuIFRoZSB0YXJnZXQgc2lkZSBhbHNvIHNldHMgaXQgYmFzZWQgb24gcmVjZWl2ZWQgZmxvdyBpbmZvcm1hdGlvbi4KCk15IHByaW1hcnkgY29uY2VybiwgYXMgYWx3YXlzLCBpcyBtZW1vcnkgc2FmZXR5LCBzcGVjaWZpY2FsbHksIHRoZSByaXNrIG9mIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHVzYWdlLiBJIG5lZWQgdG8gbWFrZSBzdXJlIHRoaXMgaXNuJiMzOTt0IGludHJvZHVjaW5nIGFueSBuZXcgdnVsbmVyYWJpbGl0aWVzLiBTbywgbGV0JiMzOTtzIHN0ZXAgdGhyb3VnaCBpdDoKCjEuICBgb3B0cy0mZ3Q7dGNsYXNzYCBpcyBleHBsaWNpdGx5IGluaXRpYWxpemVkIHRvIGAtMWAgaW4gYG52bWZfcGFyc2Vfb3B0aW9uc2AuIEdvb2Qgc3RhcnQuCjIuICBUaGUgdmFsdWUgaXRzZWxmIGlzIHBhcnNlZCB1c2luZyBgbWF0Y2hfaW50KGFyZ3MsICZhbXA7dG9rZW4pYC4gSWYgdGhlIHBhcnNpbmcgZmFpbHMsIHdlIGVycm9yIG91dCwgd2hpY2ggcHJldmVudHMgdGhlIHByb2Nlc3MgZnJvbSB1c2luZyBhbiB1bmluaXRpYWxpemVkIHZhbHVlLgozLiAgYGlwNl9zb2NrX3NldF90Y2xhc3NgIHRha2VzIGFuIGludGVnZXIsIGB2YWxgLCBhbmQgc2V0cyBpdCBvbiBgaW5ldDZfc2soc2spLSZndDt0Y2xhc3NgLiBUaGUgaW50ZWdlciBpcyBjb21pbmcgZGlyZWN0bHkgZnJvbSB0aGUgcGFyc2VkIHZhbHVlLCBzbyB0aGVyZSYjMzk7cyBubyB3YXkgdG8gcmVhZCBhbiB1bmluaXRpYWxpemVkIG1lbW9yeSB0aGVyZS4KNC4gIEluIHRoZSB0YXJnZXQgc2lkZSwgYG52bWV0X3RjcF9zZXRfcXVldWVfc29ja2AgcHVsbHMgdGhlIHRyYWZmaWMgY2xhc3MgKGByY3ZfdGNsYXNzYCkgZnJvbSBgaW5ldDZfc2soc29jay0mZ3Q7c2spLSZndDtyY3ZfZmxvd2luZm9gLiBgaXA2X3RjbGFzc2AgaXMganVzdCBhbiBpbmxpbmUgZnVuY3Rpb24gdGhhdCBleHRyYWN0cyB0aGUgdHJhZmZpYyBjbGFzcyBmcm9tIGEgYF9fYmUzMmAuIE5vdywgdGhlIGltcG9ydGFudCBxdWVzdGlvbiBpczogaXMgYHJjdl9mbG93aW5mb2AgaW5pdGlhbGl6ZWQ/IEFmdGVyIGNoZWNraW5nIHRoZSBjb2RlLCBpdCYjMzk7cyBwYXJ0IG9mIHRoZSBzb2NrZXQgc3RydWN0dXJlLCB3aGljaCBpcyBpbml0aWFsaXplZCB3aGVuIHRoZSBzb2NrZXQgaXMgY3JlYXRlZC4gVGhhdCBwYXJ0IG9mIHRoZSBjb2RlIGlzIGhhbmRsZWQgYnkgdGhlIG5ldHdvcmtpbmcgc3RhY2sgYW5kIGl0cyBzb2NrZXQgaW5pdGlhbGl6YXRpb24sIG5vIG1lbW9yeSBpbml0aWFsaXphdGlvbiBidWdzIHRoZXJlLgoKVGhlcmUgYXJlIG5vIG5ldyBzdHJ1Y3R1cmVzIHNlbnQgdG8gdXNlcnNwYWNlLCBubyBuZXcgbWVtb3J5IGFsbG9jYXRpb25zIHdoZXJlIHVuaW5pdGlhbGl6ZWQgZmllbGRzIGNvdWxkIGJlIHJlYWQsIGFuZCB0aGUgY2hhbmdlcyBhcmUgbGltaXRlZCB0byBjb250cm9sIGZsb3cgYW5kIHNvY2tldCBvcHRpb24gc2V0dGluZ3MuIFRoZSBkYXRhIGJlaW5nIHVzZWQgaXMgYSBzaW1wbGUgaW50ZWdlciwgYHRjbGFzc2AuIFNvLCB0aGUgcmlzayBvZiB1bmluaXRpYWxpemVkIG1lbW9yeSBpc3N1ZXMgc2VlbXMgbG93LgoKTGV0IG1lIGp1c3QgZG91YmxlLWNoZWNrIHRoYXQgdGFyZ2V0IHNpZGUgY29kZSBhZ2FpbjoKYGBgYwojaWYgSVNfRU5BQkxFRChDT05GSUdfSVBWNikKCWlmIChzb2NrLSZndDtzay0mZ3Q7c2tfZmFtaWx5ID09IEFGX0lORVQ2KSB7CgkJdTggcmN2X3RjbGFzcyA9IGlwNl90Y2xhc3MoaW5ldDZfc2soc29jay0mZ3Q7c2spLSZndDtyY3ZfZmxvd2luZm8pOwoKCQlpZiAocmN2X3RjbGFzcyAmZ3Q7IDApCgkJCWlwNl9zb2NrX3NldF90Y2xhc3Moc29jay0mZ3Q7c2ssIHJjdl90Y2xhc3MpOwoJfQojZW5kaWYKYGBgCgpPa2F5LCB0aGUgYGluZXQ2X3NrKHNvY2stJmd0O3NrKS0mZ3Q7cmN2X2Zsb3dpbmZvYCBwYXJ0IGlzIGFjdHVhbGx5IHBvcHVsYXRlZCBieSB0aGUgbmV0d29ya2luZyBzdGFjayB3aGVuIHdlIHJlY2VpdmUgdGhlIHBhY2tldHMsIHdoaWNoIG1lYW5zIGl0IGlzIGluaXRpYWxpemVkIGFzIHBhcnQgb2YgYHN0cnVjdCBpcHY2X3BpbmZvYC4KClNpbmNlIHRoZXJlIGFyZSBubyBuZXcgYWxsb2NhdGlvbnMsIG5vIGV4cG9zdXJlIG9mIHVuaW5pdGlhbGl6ZWQgbWVtb3J5LCBhbmQgdGhpcyB1c2VzIHN0YW5kYXJkIHNvY2tldCBzdGF0ZSwgaXQgYXBwZWFycyB0aGF0IHRoaXMgcGF0Y2ggaXMgc2FmZSBmcm9tIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHJlYWRzLiBTdGFuZGFyZCBLQVNBTiBmdXp6aW5nIGlzIHRoZSBiZXN0IGFwcHJvYWNoIHRvIGZpbmQgYW55IHBvdGVudGlhbCBtZW1vcnkgY29ycnVwdGlvbiwgYWx0aG91Z2ggaXQgZG9lcyBub3Qgc2VlbSBsaWtlbHkgaGVyZS4KClRoZXJlZm9yZSwgTmVlZHNLTVNBTiA9IGZhbHNlLiBUaGUgcGF0Y2ggaW50cm9kdWNlcyBhIG5ldyBOVk1lLW9GIFRDUCBvcHRpb24gKGB0Y2xhc3NgKSwgYXBwbGllcyBpdCB1c2luZyBzdGFuZGFyZCBJUHY2IGhlbHBlcnMsIGFuZCBkb2VzbiYjMzk7dCBpbnRyb2R1Y2UgYW55IG5ldyBkYXRhIHN0cnVjdHVyZXMgb3IgbWVtb3J5IGV4cG9zdXJlcy4gS0FTQU4gc2hvdWxkIGJlIHN1ZmZpY2llbnQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NDgvMzwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA4IDA3OjI4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0tNU0FOUmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGludHJvZHVjZXMgcGFyc2luZyBmb3IgYSBuZXcgTlZNZS1vRiBUQ1Agb3B0aW9uIChgdGNsYXNzYCkgYW5kIGFwcGxpZXMgaXQgdG8gdGhlIHVuZGVybHlpbmcgc29ja2V0IHVzaW5nIHN0YW5kYXJkIElQdjYgc29ja2V0IG9wdGlvbiBoZWxwZXJzLiBJdCBleHRyYWN0cyB0aGUgdHJhZmZpYyBjbGFzcyBzZXR0aW5nIGxvZ2ljIGludG8gYSBuZXcgaGVscGVyIGZ1bmN0aW9uIGBpcDZfc29ja19zZXRfdGNsYXNzYC4gTm8gbmV3IGRhdGEgc3RydWN0dXJlcyBhcmUgYWxsb2NhdGVkLCBjb3BpZWQgdG8gdXNlciBzcGFjZSwgb3Igc2VudCBvdmVyIHRoZSBuZXR3b3JrIGluIGEgd2F5IHRoYXQgY291bGQgZXhwb3NlIHVuaW5pdGlhbGl6ZWQgbWVtb3J5LiBUaGUgdmFyaWFibGVzIGFuZCBmaWVsZHMgaW52b2x2ZWQgYXJlIHNpbXBsZSBpbnRlZ2VycyBhbmQgYXJlIHByb3Blcmx5IGluaXRpYWxpemVkLiBTdGFuZGFyZCBLQVNBTiBmdXp6aW5nIGlzIHN1ZmZpY2llbnQgdG8gY2F0Y2ggYW55IHBvdGVudGlhbCBtZW1vcnkgY29ycnVwdGlvbiwgb3V0LW9mLWJvdW5kcywgb3IgdXNlLWFmdGVyLWZyZWUgYnVncy4mIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0tNU0FOUmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGludHJvZHVjZXMgcGFyc2luZyBmb3IgYSBuZXcgTlZNZS1vRiBUQ1Agb3B0aW9uIChgdGNsYXNzYCkgYW5kIGFwcGxpZXMgaXQgdG8gdGhlIHVuZGVybHlpbmcgc29ja2V0IHVzaW5nIHN0YW5kYXJkIElQdjYgc29ja2V0IG9wdGlvbiBoZWxwZXJzLiBJdCBleHRyYWN0cyB0aGUgdHJhZmZpYyBjbGFzcyBzZXR0aW5nIGxvZ2ljIGludG8gYSBuZXcgaGVscGVyIGZ1bmN0aW9uIGBpcDZfc29ja19zZXRfdGNsYXNzYC4gTm8gbmV3IGRhdGEgc3RydWN0dXJlcyBhcmUgYWxsb2NhdGVkLCBjb3BpZWQgdG8gdXNlciBzcGFjZSwgb3Igc2VudCBvdmVyIHRoZSBuZXR3b3JrIGluIGEgd2F5IHRoYXQgY291bGQgZXhwb3NlIHVuaW5pdGlhbGl6ZWQgbWVtb3J5LiBUaGUgdmFyaWFibGVzIGFuZCBmaWVsZHMgaW52b2x2ZWQgYXJlIHNpbXBsZSBpbnRlZ2VycyBhbmQgYXJlIHByb3Blcmx5IGluaXRpYWxpemVkLiBTdGFuZGFyZCBLQVNBTiBmdXp6aW5nIGlzIHN1ZmZpY2llbnQgdG8gY2F0Y2ggYW55IHBvdGVudGlhbCBtZW1vcnkgY29ycnVwdGlvbiwgb3V0LW9mLWJvdW5kcywgb3IgdXNlLWFmdGVyLWZyZWUgYnVncy4mIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgoKCTxkaXYgaWQ9ImxsbV9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+TExNIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgVG9rZW5zPC90aD4KCQkJCQk8dGg+QXZnIFRva2VuczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJsbG1fc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJ0b29sX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5Ub29sIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9InRvb2xfc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJkdXJhdGlvbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+Cgk8ZGl2IGlkPSJ0b2tlbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+CgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9qc2FwaSI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDgtMDhUMDc6MjY6MjEuODI2MDA0MDM4WiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTQwMDY3Mjk4MTg1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIk5WTUVfVENQXCIsXG4gICAgXCJOVk1FX1RBUkdFVF9UQ1BcIixcbiAgICBcIk5WTUVfVEFSR0VUXCIsXG4gICAgXCJJUFY2XCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwibnZtZl9kZXZfd3JpdGVcIixcbiAgICBcIm52bWVfdGNwX2NyZWF0ZV9jdHJsXCIsXG4gICAgXCJudm1ldF90Y3BfYWNjZXB0X3dvcmtcIixcbiAgICBcImRvX2lwdjZfc2V0c29ja29wdFwiLFxuICAgIFwiaXA2X3NvY2tfc2V0X3RjbGFzc1wiXG4gIF0sXG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggaW50cm9kdWNlcyBwYXJzaW5nIGZvciBhIG5ldyBOVk1lLW9GIFRDUCBvcHRpb24gKGB0Y2xhc3NgKSBhbmQgYXBwbGllcyBpdCB0byB0aGUgdW5kZXJseWluZyBzb2NrZXQgdXNpbmcgc3RhbmRhcmQgSVB2NiBzb2NrZXQgb3B0aW9uIGhlbHBlcnMuIEl0IGV4dHJhY3RzIHRoZSB0cmFmZmljIGNsYXNzIHNldHRpbmcgbG9naWMgaW50byBhIG5ldyBoZWxwZXIgZnVuY3Rpb24gYGlwNl9zb2NrX3NldF90Y2xhc3NgLiBObyBuZXcgZGF0YSBzdHJ1Y3R1cmVzIGFyZSBhbGxvY2F0ZWQsIGNvcGllZCB0byB1c2VyIHNwYWNlLCBvciBzZW50IG92ZXIgdGhlIG5ldHdvcmsgaW4gYSB3YXkgdGhhdCBjb3VsZCBleHBvc2UgdW5pbml0aWFsaXplZCBtZW1vcnkuIFRoZSB2YXJpYWJsZXMgYW5kIGZpZWxkcyBpbnZvbHZlZCBhcmUgc2ltcGxlIGludGVnZXJzIGFuZCBhcmUgcHJvcGVybHkgaW5pdGlhbGl6ZWQuIFN0YW5kYXJkIEtBU0FOIGZ1enppbmcgaXMgc3VmZmljaWVudCB0byBjYXRjaCBhbnkgcG90ZW50aWFsIG1lbW9yeSBjb3JydXB0aW9uLCBvdXQtb2YtYm91bmRzLCBvciB1c2UtYWZ0ZXItZnJlZSBidWdzLlwiLFxuICBcIk5lZWRzS01TQU5cIjogZmFsc2UsXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGFkZHMgc3VwcG9ydCBmb3IgdGhlIGB0Y2xhc3NgIChJUHY2IHRyYWZmaWMgY2xhc3MpIG9wdGlvbiB0byB0aGUgTlZNZSBvdmVyIFRDUCBob3N0IGFuZCB0YXJnZXQgZHJpdmVycy4gSXQgbW9kaWZpZXMgdGhlIE5WTWUgZmFicmljcyBvcHRpb24gcGFyc2luZywgc2V0cyB0aGUgdHJhZmZpYyBjbGFzcyBvbiB0aGUgVENQIHNvY2tldHMgdXNpbmcgYGlwNl9zb2NrX3NldF90Y2xhc3NgLCBhbmQgcmVmYWN0b3JzIElQdjYgc29ja2V0IGdsdWUgdG8gZXhwb3J0IHRoaXMgZnVuY3Rpb24uIFRoZXNlIGFyZSBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gcmVhY2hhYmxlIGNvcmUgbmV0d29ya2luZyBhbmQgTlZNZSBkcml2ZXJzLCB3aGljaCBjYW4gYmUgdGVzdGVkIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyB1c2luZyBsb29wYmFjayBvciB2aXJ0dWFsIG5ldHdvcmsgaW50ZXJmYWNlcy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDhUMDc6MjY6MjEuODI2MDExMjA4WiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0NDk5NDI0MjQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCA4NDc3M2MwNGU2ZGExNGUzNDBhMGVkMGExNjU2ZmYyNzFmMTEzZDM4XFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBTYXQgQXVnIDggMDc6MjY6MjEgMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9udm1lL2hvc3QvZmFicmljcy5jIGIvZHJpdmVycy9udm1lL2hvc3QvZmFicmljcy5jXFxuaW5kZXggYWMzZDRmNDAwNjAxZi4uNjQzYzAzZGM3YmNiMyAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL252bWUvaG9zdC9mYWJyaWNzLmNcXG4rKysgYi9kcml2ZXJzL252bWUvaG9zdC9mYWJyaWNzLmNcXG5AQCAtNjk1LDYgKzY5NSw3IEBAIHN0YXRpYyBjb25zdCBtYXRjaF90YWJsZV90IG9wdF90b2tlbnMgPSB7XFxuIFxcdHsgTlZNRl9PUFRfTlJfV1JJVEVfUVVFVUVTLFxcdFxcXCJucl93cml0ZV9xdWV1ZXM9JWRcXFwiXFx0fSxcXG4gXFx0eyBOVk1GX09QVF9OUl9QT0xMX1FVRVVFUyxcXHRcXFwibnJfcG9sbF9xdWV1ZXM9JWRcXFwiXFx0fSxcXG4gXFx0eyBOVk1GX09QVF9UT1MsXFx0XFx0XFx0XFxcInRvcz0lZFxcXCJcXHRcXHR9LFxcbitcXHR7IE5WTUZfT1BUX1RDTEFTUyxcXHRcXHRcXFwidGNsYXNzPSVkXFxcIlxcdFxcdH0sXFxuICNpZmRlZiBDT05GSUdfTlZNRV9UQ1BfVExTXFxuIFxcdHsgTlZNRl9PUFRfS0VZUklORyxcXHRcXHRcXFwia2V5cmluZz0lZFxcXCJcXHRcXHR9LFxcbiBcXHR7IE5WTUZfT1BUX1RMU19LRVksXFx0XFx0XFxcInRsc19rZXk9JWRcXFwiXFx0XFx0fSxcXG5AQCAtNzM0LDYgKzczNSw3IEBAIHN0YXRpYyBpbnQgbnZtZl9wYXJzZV9vcHRpb25zKHN0cnVjdCBudm1mX2N0cmxfb3B0aW9ucyAqb3B0cyxcXG4gXFx0b3B0cy1cXHUwMDNlaGRyX2RpZ2VzdCA9IGZhbHNlO1xcbiBcXHRvcHRzLVxcdTAwM2VkYXRhX2RpZ2VzdCA9IGZhbHNlO1xcbiBcXHRvcHRzLVxcdTAwM2V0b3MgPSAtMTsgLyogXFx1MDAzYyAwID09IHVzZSB0cmFuc3BvcnQgZGVmYXVsdCAqL1xcbitcXHRvcHRzLVxcdTAwM2V0Y2xhc3MgPSAtMTsgLyogXFx1MDAzYyAwID09IHVzZSB0cmFuc3BvcnQgZGVmYXVsdCAqL1xcbiBcXHRvcHRzLVxcdTAwM2V0bHMgPSBmYWxzZTtcXG4gXFx0b3B0cy1cXHUwMDNldGxzX2tleSA9IE5VTEw7XFxuIFxcdG9wdHMtXFx1MDAzZWtleXJpbmcgPSBOVUxMO1xcbkBAIC05OTEsNiArOTkzLDIyIEBAIHN0YXRpYyBpbnQgbnZtZl9wYXJzZV9vcHRpb25zKHN0cnVjdCBudm1mX2N0cmxfb3B0aW9ucyAqb3B0cyxcXG4gXFx0XFx0XFx0fVxcbiBcXHRcXHRcXHRvcHRzLVxcdTAwM2V0b3MgPSB0b2tlbjtcXG4gXFx0XFx0XFx0YnJlYWs7XFxuK1xcdFxcdGNhc2UgTlZNRl9PUFRfVENMQVNTOlxcbitcXHRcXHRcXHRpZiAobWF0Y2hfaW50KGFyZ3MsIFxcdTAwMjZ0b2tlbikpIHtcXG4rXFx0XFx0XFx0XFx0cmV0ID0gLUVJTlZBTDtcXG4rXFx0XFx0XFx0XFx0Z290byBvdXQ7XFxuK1xcdFxcdFxcdH1cXG4rXFx0XFx0XFx0aWYgKHRva2VuIFxcdTAwM2MgMCkge1xcbitcXHRcXHRcXHRcXHRwcl9lcnIoXFxcIkludmFsaWQgdHJhZmZpYyBjbGFzcyAlZFxcXFxuXFxcIiwgdG9rZW4pO1xcbitcXHRcXHRcXHRcXHRyZXQgPSAtRUlOVkFMO1xcbitcXHRcXHRcXHRcXHRnb3RvIG91dDtcXG4rXFx0XFx0XFx0fVxcbitcXHRcXHRcXHRpZiAodG9rZW4gXFx1MDAzZSAyNTUpIHtcXG4rXFx0XFx0XFx0XFx0cHJfd2FybihcXFwiQ2xhbXBpbmcgdHJhZmZpYyBjbGFzcyB0byAyNTVcXFxcblxcXCIpO1xcbitcXHRcXHRcXHRcXHR0b2tlbiA9IDI1NTtcXG4rXFx0XFx0XFx0fVxcbitcXHRcXHRcXHRvcHRzLVxcdTAwM2V0Y2xhc3MgPSB0b2tlbjtcXG4rXFx0XFx0XFx0YnJlYWs7XFxuIFxcdFxcdGNhc2UgTlZNRl9PUFRfS0VZUklORzpcXG4gXFx0XFx0XFx0aWYgKG1hdGNoX2ludChhcmdzLCBcXHUwMDI2a2V5X2lkKSB8fCBrZXlfaWQgXFx1MDAzYz0gMCkge1xcbiBcXHRcXHRcXHRcXHRyZXQgPSAtRUlOVkFMO1xcbmRpZmYgLS1naXQgYS9kcml2ZXJzL252bWUvaG9zdC9mYWJyaWNzLmggYi9kcml2ZXJzL252bWUvaG9zdC9mYWJyaWNzLmhcXG5pbmRleCBjYWY1NTAzZDA4MzMyLi4zZGZkNDBiZDg5NjA1IDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvbnZtZS9ob3N0L2ZhYnJpY3MuaFxcbisrKyBiL2RyaXZlcnMvbnZtZS9ob3N0L2ZhYnJpY3MuaFxcbkBAIC02Nyw2ICs2Nyw3IEBAIGVudW0ge1xcbiBcXHROVk1GX09QVF9LRVlSSU5HXFx0PSAxIFxcdTAwM2NcXHUwMDNjIDI2LFxcbiBcXHROVk1GX09QVF9UTFNfS0VZXFx0PSAxIFxcdTAwM2NcXHUwMDNjIDI3LFxcbiBcXHROVk1GX09QVF9DT05DQVRcXHRcXHQ9IDEgXFx1MDAzY1xcdTAwM2MgMjgsXFxuK1xcdE5WTUZfT1BUX1RDTEFTU1xcdFxcdD0gMSBcXHUwMDNjXFx1MDAzYyAyOSxcXG4gfTtcXG4gXFxuIC8qKlxcbkBAIC0xMDksNiArMTEwLDcgQEAgZW51bSB7XFxuICAqIEBucl93cml0ZV9xdWV1ZXM6IG51bWJlciBvZiBxdWV1ZXMgZm9yIHdyaXRlIEkvT1xcbiAgKiBAbnJfcG9sbF9xdWV1ZXM6IG51bWJlciBvZiBxdWV1ZXMgZm9yIHBvbGxpbmcgSS9PXFxuICAqIEB0b3M6IHR5cGUgb2Ygc2VydmljZVxcbisgKiBAdGNsYXNzOiBJUHY2IHRyYWZmaWMgY2xhc3NcXG4gICogQGZhc3RfaW9fZmFpbF90bW86IEZhc3QgSS9PIGZhaWwgdGltZW91dCBpbiBzZWNvbmRzXFxuICAqL1xcbiBzdHJ1Y3QgbnZtZl9jdHJsX29wdGlvbnMge1xcbkBAIC0xMzksNiArMTQxLDcgQEAgc3RydWN0IG52bWZfY3RybF9vcHRpb25zIHtcXG4gXFx0dW5zaWduZWQgaW50XFx0XFx0bnJfd3JpdGVfcXVldWVzO1xcbiBcXHR1bnNpZ25lZCBpbnRcXHRcXHRucl9wb2xsX3F1ZXVlcztcXG4gXFx0aW50XFx0XFx0XFx0dG9zO1xcbitcXHRpbnRcXHRcXHRcXHR0Y2xhc3M7XFxuIFxcdGludFxcdFxcdFxcdGZhc3RfaW9fZmFpbF90bW87XFxuIH07XFxuIFxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL252bWUvaG9zdC90Y3AuYyBiL2RyaXZlcnMvbnZtZS9ob3N0L3RjcC5jXFxuaW5kZXggYmE1YzdiM2UyYTdjNi4uY2FiYmY2N2QyNGY4OCAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL252bWUvaG9zdC90Y3AuY1xcbisrKyBiL2RyaXZlcnMvbnZtZS9ob3N0L3RjcC5jXFxuQEAgLTE4MzcsNiArMTgzNywxMSBAQCBzdGF0aWMgaW50IG52bWVfdGNwX2FsbG9jX3F1ZXVlKHN0cnVjdCBudm1lX2N0cmwgKm5jdHJsLCBpbnQgcWlkLFxcbiBcXHQvKiBTZXQgc29ja2V0IHR5cGUgb2Ygc2VydmljZSAqL1xcbiBcXHRpZiAobmN0cmwtXFx1MDAzZW9wdHMtXFx1MDAzZXRvcyBcXHUwMDNlPSAwKVxcbiBcXHRcXHRpcF9zb2NrX3NldF90b3MocXVldWUtXFx1MDAzZXNvY2stXFx1MDAzZXNrLCBuY3RybC1cXHUwMDNlb3B0cy1cXHUwMDNldG9zKTtcXG4rI2lmIElTX0VOQUJMRUQoQ09ORklHX0lQVjYpXFxuK1xcdGlmIChuY3RybC1cXHUwMDNlb3B0cy1cXHUwMDNldGNsYXNzIFxcdTAwM2U9IDAgXFx1MDAyNlxcdTAwMjZcXG4rXFx0ICAgIHF1ZXVlLVxcdTAwM2Vzb2NrLVxcdTAwM2Vzay1cXHUwMDNlc2tfZmFtaWx5ID09IEFGX0lORVQ2KVxcbitcXHRcXHRpcDZfc29ja19zZXRfdGNsYXNzKHF1ZXVlLVxcdTAwM2Vzb2NrLVxcdTAwM2VzaywgbmN0cmwtXFx1MDAzZW9wdHMtXFx1MDAzZXRjbGFzcyk7XFxuKyNlbmRpZlxcbiBcXG4gXFx0LyogU2V0IDEwIHNlY29uZHMgdGltZW91dCBmb3IgaWNyZXNwIHJlY3Ztc2cgKi9cXG4gXFx0cXVldWUtXFx1MDAzZXNvY2stXFx1MDAzZXNrLVxcdTAwM2Vza19yY3Z0aW1lbyA9IDEwICogSFo7XFxuQEAgLTMwNDEsNyArMzA0Niw4IEBAIHN0YXRpYyBzdHJ1Y3QgbnZtZl90cmFuc3BvcnRfb3BzIG52bWVfdGNwX3RyYW5zcG9ydCA9IHtcXG4gXFx0XFx0XFx0ICBOVk1GX09QVF9IT1NUX1RSQUREUiB8IE5WTUZfT1BUX0NUUkxfTE9TU19UTU8gfFxcbiBcXHRcXHRcXHQgIE5WTUZfT1BUX0hEUl9ESUdFU1QgfCBOVk1GX09QVF9EQVRBX0RJR0VTVCB8XFxuIFxcdFxcdFxcdCAgTlZNRl9PUFRfTlJfV1JJVEVfUVVFVUVTIHwgTlZNRl9PUFRfTlJfUE9MTF9RVUVVRVMgfFxcbi1cXHRcXHRcXHQgIE5WTUZfT1BUX1RPUyB8IE5WTUZfT1BUX0hPU1RfSUZBQ0UgfCBOVk1GX09QVF9UTFMgfFxcbitcXHRcXHRcXHQgIE5WTUZfT1BUX1RPUyB8IE5WTUZfT1BUX1RDTEFTUyB8XFxuK1xcdFxcdFxcdCAgTlZNRl9PUFRfSE9TVF9JRkFDRSB8IE5WTUZfT1BUX1RMUyB8XFxuIFxcdFxcdFxcdCAgTlZNRl9PUFRfS0VZUklORyB8IE5WTUZfT1BUX1RMU19LRVkgfCBOVk1GX09QVF9DT05DQVQsXFxuIFxcdC5jcmVhdGVfY3RybFxcdD0gbnZtZV90Y3BfY3JlYXRlX2N0cmwsXFxuIH07XFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbnZtZS90YXJnZXQvdGNwLmMgYi9kcml2ZXJzL252bWUvdGFyZ2V0L3RjcC5jXFxuaW5kZXggNzVhMjc2ZDczYmUzZS4uMWQ2NTUxOWViYzBmYiAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL252bWUvdGFyZ2V0L3RjcC5jXFxuKysrIGIvZHJpdmVycy9udm1lL3RhcmdldC90Y3AuY1xcbkBAIC0xNzI1LDYgKzE3MjUsMTQgQEAgc3RhdGljIGludCBudm1ldF90Y3Bfc2V0X3F1ZXVlX3NvY2soc3RydWN0IG52bWV0X3RjcF9xdWV1ZSAqcXVldWUpXFxuIFxcdC8qIFNldCBzb2NrZXQgdHlwZSBvZiBzZXJ2aWNlICovXFxuIFxcdGlmIChpbmV0LVxcdTAwM2VyY3ZfdG9zIFxcdTAwM2UgMClcXG4gXFx0XFx0aXBfc29ja19zZXRfdG9zKHNvY2stXFx1MDAzZXNrLCBpbmV0LVxcdTAwM2VyY3ZfdG9zKTtcXG4rI2lmIElTX0VOQUJMRUQoQ09ORklHX0lQVjYpXFxuK1xcdGlmIChzb2NrLVxcdTAwM2Vzay1cXHUwMDNlc2tfZmFtaWx5ID09IEFGX0lORVQ2KSB7XFxuK1xcdFxcdHU4IHJjdl90Y2xhc3MgPSBpcDZfdGNsYXNzKGluZXQ2X3NrKHNvY2stXFx1MDAzZXNrKS1cXHUwMDNlcmN2X2Zsb3dpbmZvKTtcXG4rXFxuK1xcdFxcdGlmIChyY3ZfdGNsYXNzIFxcdTAwM2UgMClcXG4rXFx0XFx0XFx0aXA2X3NvY2tfc2V0X3RjbGFzcyhzb2NrLVxcdTAwM2VzaywgcmN2X3RjbGFzcyk7XFxuK1xcdH1cXG4rI2VuZGlmXFxuIFxcbiBcXHRyZXQgPSAwO1xcbiBcXHR3cml0ZV9sb2NrX2JoKFxcdTAwMjZzb2NrLVxcdTAwM2Vzay1cXHUwMDNlc2tfY2FsbGJhY2tfbG9jayk7XFxuZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmV0L2lwdjYuaCBiL2luY2x1ZGUvbmV0L2lwdjYuaFxcbmluZGV4IDNkZTA3ZTczODUzOGYuLjgyZTU3YjM0YmE1N2YgMTAwNjQ0XFxuLS0tIGEvaW5jbHVkZS9uZXQvaXB2Ni5oXFxuKysrIGIvaW5jbHVkZS9uZXQvaXB2Ni5oXFxuQEAgLTEyNTIsNiArMTI1Miw5IEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBpcDZfc29ja19zZXRfcmVjdmVycihzdHJ1Y3Qgc29jayAqc2spXFxuIFxcdGluZXQ2X3NldF9iaXQoUkVDVkVSUjYsIHNrKTtcXG4gfVxcbiBcXG4rdm9pZCBfX2lwNl9zb2NrX3NldF90Y2xhc3Moc3RydWN0IHNvY2sgKnNrLCBpbnQgdmFsKTtcXG4rdm9pZCBpcDZfc29ja19zZXRfdGNsYXNzKHN0cnVjdCBzb2NrICpzaywgaW50IHZhbCk7XFxuK1xcbiAjZGVmaW5lIElQVjZfUFJFRkVSX1NSQ19NQVNLIChJUFY2X1BSRUZFUl9TUkNfVE1QIHwgSVBWNl9QUkVGRVJfU1JDX1BVQkxJQyB8IFxcXFxcXG4gXFx0XFx0XFx0ICAgICAgSVBWNl9QUkVGRVJfU1JDX0NPQSlcXG4gXFxuZGlmZiAtLWdpdCBhL25ldC9pcHY2L2lwdjZfc29ja2dsdWUuYyBiL25ldC9pcHY2L2lwdjZfc29ja2dsdWUuY1xcbmluZGV4IGI0Yzk3NzQzNGMyZTAuLmM1OWYyNWZiYjMzNmQgMTAwNjQ0XFxuLS0tIGEvbmV0L2lwdjYvaXB2Nl9zb2NrZ2x1ZS5jXFxuKysrIGIvbmV0L2lwdjYvaXB2Nl9zb2NrZ2x1ZS5jXFxuQEAgLTM3Myw2ICszNzMsMjggQEAgc3RhdGljIGludCBpcHY2X3NldF9vcHRfaGRyKHN0cnVjdCBzb2NrICpzaywgaW50IG9wdG5hbWUsIHNvY2twdHJfdCBvcHR2YWwsXFxuIFxcdHJldHVybiBlcnI7XFxuIH1cXG4gXFxuK3ZvaWQgX19pcDZfc29ja19zZXRfdGNsYXNzKHN0cnVjdCBzb2NrICpzaywgaW50IHZhbClcXG4re1xcbitcXHR1OCBvbGRfdGNsYXNzID0gaW5ldDZfc2soc2spLVxcdTAwM2V0Y2xhc3M7XFxuK1xcbitcXHRpZiAoc2stXFx1MDAzZXNrX3R5cGUgPT0gU09DS19TVFJFQU0pIHtcXG4rXFx0XFx0dmFsIFxcdTAwMjY9IH5JTkVUX0VDTl9NQVNLO1xcbitcXHRcXHR2YWwgfD0gb2xkX3RjbGFzcyBcXHUwMDI2IElORVRfRUNOX01BU0s7XFxuK1xcdH1cXG4rXFx0aWYgKG9sZF90Y2xhc3MgIT0gdmFsKSB7XFxuK1xcdFxcdFdSSVRFX09OQ0UoaW5ldDZfc2soc2spLVxcdTAwM2V0Y2xhc3MsIHZhbCk7XFxuK1xcdFxcdHNrX2RzdF9yZXNldChzayk7XFxuK1xcdH1cXG4rfVxcbitcXG4rdm9pZCBpcDZfc29ja19zZXRfdGNsYXNzKHN0cnVjdCBzb2NrICpzaywgaW50IHZhbClcXG4re1xcbitcXHRzb2Nrb3B0X2xvY2tfc29jayhzayk7XFxuK1xcdF9faXA2X3NvY2tfc2V0X3RjbGFzcyhzaywgdmFsKTtcXG4rXFx0c29ja29wdF9yZWxlYXNlX3NvY2soc2spO1xcbit9XFxuK0VYUE9SVF9TWU1CT0woaXA2X3NvY2tfc2V0X3RjbGFzcyk7XFxuK1xcbiBpbnQgZG9faXB2Nl9zZXRzb2Nrb3B0KHN0cnVjdCBzb2NrICpzaywgaW50IGxldmVsLCBpbnQgb3B0bmFtZSxcXG4gXFx0XFx0ICAgICAgIHNvY2twdHJfdCBvcHR2YWwsIHVuc2lnbmVkIGludCBvcHRsZW4pXFxuIHtcXG5AQCAtNzEzLDE0ICs3MzUsNyBAQCBpbnQgZG9faXB2Nl9zZXRzb2Nrb3B0KHN0cnVjdCBzb2NrICpzaywgaW50IGxldmVsLCBpbnQgb3B0bmFtZSxcXG4gXFx0XFx0LyogUkZDIDM1NDIsIDYuNTogZGVmYXVsdCB0cmFmZmljIGNsYXNzIG9mIDB4MCAqL1xcbiBcXHRcXHRpZiAodmFsID09IC0xKVxcbiBcXHRcXHRcXHR2YWwgPSAwO1xcbi1cXHRcXHRpZiAoc2stXFx1MDAzZXNrX3R5cGUgPT0gU09DS19TVFJFQU0pIHtcXG4tXFx0XFx0XFx0dmFsIFxcdTAwMjY9IH5JTkVUX0VDTl9NQVNLO1xcbi1cXHRcXHRcXHR2YWwgfD0gbnAtXFx1MDAzZXRjbGFzcyBcXHUwMDI2IElORVRfRUNOX01BU0s7XFxuLVxcdFxcdH1cXG4tXFx0XFx0aWYgKG5wLVxcdTAwM2V0Y2xhc3MgIT0gdmFsKSB7XFxuLVxcdFxcdFxcdG5wLVxcdTAwM2V0Y2xhc3MgPSB2YWw7XFxuLVxcdFxcdFxcdHNrX2RzdF9yZXNldChzayk7XFxuLVxcdFxcdH1cXG4rXFx0XFx0X19pcDZfc29ja19zZXRfdGNsYXNzKHNrLCB2YWwpO1xcbiBcXHRcXHRyZXR2ID0gMDtcXG4gXFx0XFx0YnJlYWs7XFxuIFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wOFQwNzoyNjoyMi4yNzY4NDU0MzJaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJiZXN0LWV4cGVuc2l2ZSIsIkR1cmF0aW9uIjoxMjcxNTMyMDQ2NDgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiTlZNRV9UQ1BcIixcbiAgICBcIk5WTUVfVEFSR0VUX1RDUFwiLFxuICAgIFwiTlZNRV9UQVJHRVRcIixcbiAgICBcIklQVjZcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJudm1mX2Rldl93cml0ZVwiLFxuICAgIFwibnZtZV90Y3BfY3JlYXRlX2N0cmxcIixcbiAgICBcIm52bWV0X3RjcF9hY2NlcHRfd29ya1wiLFxuICAgIFwiZG9faXB2Nl9zZXRzb2Nrb3B0XCIsXG4gICAgXCJpcDZfc29ja19zZXRfdGNsYXNzXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggYWRkcyBzdXBwb3J0IGZvciB0aGUgYHRjbGFzc2AgKElQdjYgdHJhZmZpYyBjbGFzcykgb3B0aW9uIHRvIHRoZSBOVk1lIG92ZXIgVENQIGhvc3QgYW5kIHRhcmdldCBkcml2ZXJzLiBJdCBtb2RpZmllcyB0aGUgTlZNZSBmYWJyaWNzIG9wdGlvbiBwYXJzaW5nLCBzZXRzIHRoZSB0cmFmZmljIGNsYXNzIG9uIHRoZSBUQ1Agc29ja2V0cyB1c2luZyBgaXA2X3NvY2tfc2V0X3RjbGFzc2AsIGFuZCByZWZhY3RvcnMgSVB2NiBzb2NrZXQgZ2x1ZSB0byBleHBvcnQgdGhpcyBmdW5jdGlvbi4gVGhlc2UgYXJlIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byByZWFjaGFibGUgY29yZSBuZXR3b3JraW5nIGFuZCBOVk1lIGRyaXZlcnMsIHdoaWNoIGNhbiBiZSB0ZXN0ZWQgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIHVzaW5nIGxvb3BiYWNrIG9yIHZpcnR1YWwgbmV0d29yayBpbnRlcmZhY2VzLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lXG5pZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5XG51c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLlxuXG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOlxuLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLlxuLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy5cbi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LlxuLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsXG4gIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS5cbi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsXG4gIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLlxuLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKVxuICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuXG5cbklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2hcbnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLlxuXG5XaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzpcbjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuXG4gICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy5cbiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9uc1xuICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuXG4yLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS5cbiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbiAgIEFsc28gY2hlY2sgXCJkZXBlbmRzIG9uXCIgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzXG4gICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3NcbiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCA4NDc3M2MwNGU2ZGExNGUzNDBhMGVkMGExNjU2ZmYyNzFmMTEzZDM4XG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFNhdCBBdWcgOCAwNzoyNjoyMSAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbnZtZS9ob3N0L2ZhYnJpY3MuYyBiL2RyaXZlcnMvbnZtZS9ob3N0L2ZhYnJpY3MuY1xuaW5kZXggYWMzZDRmNDAwNjAxZi4uNjQzYzAzZGM3YmNiMyAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbnZtZS9ob3N0L2ZhYnJpY3MuY1xuKysrIGIvZHJpdmVycy9udm1lL2hvc3QvZmFicmljcy5jXG5AQCAtNjk1LDYgKzY5NSw3IEBAIHN0YXRpYyBjb25zdCBtYXRjaF90YWJsZV90IG9wdF90b2tlbnMgPSB7XG4gXHR7IE5WTUZfT1BUX05SX1dSSVRFX1FVRVVFUyxcdFwibnJfd3JpdGVfcXVldWVzPSVkXCJcdH0sXG4gXHR7IE5WTUZfT1BUX05SX1BPTExfUVVFVUVTLFx0XCJucl9wb2xsX3F1ZXVlcz0lZFwiXHR9LFxuIFx0eyBOVk1GX09QVF9UT1MsXHRcdFx0XCJ0b3M9JWRcIlx0XHR9LFxuK1x0eyBOVk1GX09QVF9UQ0xBU1MsXHRcdFwidGNsYXNzPSVkXCJcdFx0fSxcbiAjaWZkZWYgQ09ORklHX05WTUVfVENQX1RMU1xuIFx0eyBOVk1GX09QVF9LRVlSSU5HLFx0XHRcImtleXJpbmc9JWRcIlx0XHR9LFxuIFx0eyBOVk1GX09QVF9UTFNfS0VZLFx0XHRcInRsc19rZXk9JWRcIlx0XHR9LFxuQEAgLTczNCw2ICs3MzUsNyBAQCBzdGF0aWMgaW50IG52bWZfcGFyc2Vfb3B0aW9ucyhzdHJ1Y3QgbnZtZl9jdHJsX29wdGlvbnMgKm9wdHMsXG4gXHRvcHRzLVx1MDAzZWhkcl9kaWdlc3QgPSBmYWxzZTtcbiBcdG9wdHMtXHUwMDNlZGF0YV9kaWdlc3QgPSBmYWxzZTtcbiBcdG9wdHMtXHUwMDNldG9zID0gLTE7IC8qIFx1MDAzYyAwID09IHVzZSB0cmFuc3BvcnQgZGVmYXVsdCAqL1xuK1x0b3B0cy1cdTAwM2V0Y2xhc3MgPSAtMTsgLyogXHUwMDNjIDAgPT0gdXNlIHRyYW5zcG9ydCBkZWZhdWx0ICovXG4gXHRvcHRzLVx1MDAzZXRscyA9IGZhbHNlO1xuIFx0b3B0cy1cdTAwM2V0bHNfa2V5ID0gTlVMTDtcbiBcdG9wdHMtXHUwMDNla2V5cmluZyA9IE5VTEw7XG5AQCAtOTkxLDYgKzk5MywyMiBAQCBzdGF0aWMgaW50IG52bWZfcGFyc2Vfb3B0aW9ucyhzdHJ1Y3QgbnZtZl9jdHJsX29wdGlvbnMgKm9wdHMsXG4gXHRcdFx0fVxuIFx0XHRcdG9wdHMtXHUwMDNldG9zID0gdG9rZW47XG4gXHRcdFx0YnJlYWs7XG4rXHRcdGNhc2UgTlZNRl9PUFRfVENMQVNTOlxuK1x0XHRcdGlmIChtYXRjaF9pbnQoYXJncywgXHUwMDI2dG9rZW4pKSB7XG4rXHRcdFx0XHRyZXQgPSAtRUlOVkFMO1xuK1x0XHRcdFx0Z290byBvdXQ7XG4rXHRcdFx0fVxuK1x0XHRcdGlmICh0b2tlbiBcdTAwM2MgMCkge1xuK1x0XHRcdFx0cHJfZXJyKFwiSW52YWxpZCB0cmFmZmljIGNsYXNzICVkXFxuXCIsIHRva2VuKTtcbitcdFx0XHRcdHJldCA9IC1FSU5WQUw7XG4rXHRcdFx0XHRnb3RvIG91dDtcbitcdFx0XHR9XG4rXHRcdFx0aWYgKHRva2VuIFx1MDAzZSAyNTUpIHtcbitcdFx0XHRcdHByX3dhcm4oXCJDbGFtcGluZyB0cmFmZmljIGNsYXNzIHRvIDI1NVxcblwiKTtcbitcdFx0XHRcdHRva2VuID0gMjU1O1xuK1x0XHRcdH1cbitcdFx0XHRvcHRzLVx1MDAzZXRjbGFzcyA9IHRva2VuO1xuK1x0XHRcdGJyZWFrO1xuIFx0XHRjYXNlIE5WTUZfT1BUX0tFWVJJTkc6XG4gXHRcdFx0aWYgKG1hdGNoX2ludChhcmdzLCBcdTAwMjZrZXlfaWQpIHx8IGtleV9pZCBcdTAwM2M9IDApIHtcbiBcdFx0XHRcdHJldCA9IC1FSU5WQUw7XG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9udm1lL2hvc3QvZmFicmljcy5oIGIvZHJpdmVycy9udm1lL2hvc3QvZmFicmljcy5oXG5pbmRleCBjYWY1NTAzZDA4MzMyLi4zZGZkNDBiZDg5NjA1IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9udm1lL2hvc3QvZmFicmljcy5oXG4rKysgYi9kcml2ZXJzL252bWUvaG9zdC9mYWJyaWNzLmhcbkBAIC02Nyw2ICs2Nyw3IEBAIGVudW0ge1xuIFx0TlZNRl9PUFRfS0VZUklOR1x0PSAxIFx1MDAzY1x1MDAzYyAyNixcbiBcdE5WTUZfT1BUX1RMU19LRVlcdD0gMSBcdTAwM2NcdTAwM2MgMjcsXG4gXHROVk1GX09QVF9DT05DQVRcdFx0PSAxIFx1MDAzY1x1MDAzYyAyOCxcbitcdE5WTUZfT1BUX1RDTEFTU1x0XHQ9IDEgXHUwMDNjXHUwMDNjIDI5LFxuIH07XG4gXG4gLyoqXG5AQCAtMTA5LDYgKzExMCw3IEBAIGVudW0ge1xuICAqIEBucl93cml0ZV9xdWV1ZXM6IG51bWJlciBvZiBxdWV1ZXMgZm9yIHdyaXRlIEkvT1xuICAqIEBucl9wb2xsX3F1ZXVlczogbnVtYmVyIG9mIHF1ZXVlcyBmb3IgcG9sbGluZyBJL09cbiAgKiBAdG9zOiB0eXBlIG9mIHNlcnZpY2VcbisgKiBAdGNsYXNzOiBJUHY2IHRyYWZmaWMgY2xhc3NcbiAgKiBAZmFzdF9pb19mYWlsX3RtbzogRmFzdCBJL08gZmFpbCB0aW1lb3V0IGluIHNlY29uZHNcbiAgKi9cbiBzdHJ1Y3QgbnZtZl9jdHJsX29wdGlvbnMge1xuQEAgLTEzOSw2ICsxNDEsNyBAQCBzdHJ1Y3QgbnZtZl9jdHJsX29wdGlvbnMge1xuIFx0dW5zaWduZWQgaW50XHRcdG5yX3dyaXRlX3F1ZXVlcztcbiBcdHVuc2lnbmVkIGludFx0XHRucl9wb2xsX3F1ZXVlcztcbiBcdGludFx0XHRcdHRvcztcbitcdGludFx0XHRcdHRjbGFzcztcbiBcdGludFx0XHRcdGZhc3RfaW9fZmFpbF90bW87XG4gfTtcbiBcbmRpZmYgLS1naXQgYS9kcml2ZXJzL252bWUvaG9zdC90Y3AuYyBiL2RyaXZlcnMvbnZtZS9ob3N0L3RjcC5jXG5pbmRleCBiYTVjN2IzZTJhN2M2Li5jYWJiZjY3ZDI0Zjg4IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9udm1lL2hvc3QvdGNwLmNcbisrKyBiL2RyaXZlcnMvbnZtZS9ob3N0L3RjcC5jXG5AQCAtMTgzNyw2ICsxODM3LDExIEBAIHN0YXRpYyBpbnQgbnZtZV90Y3BfYWxsb2NfcXVldWUoc3RydWN0IG52bWVfY3RybCAqbmN0cmwsIGludCBxaWQsXG4gXHQvKiBTZXQgc29ja2V0IHR5cGUgb2Ygc2VydmljZSAqL1xuIFx0aWYgKG5jdHJsLVx1MDAzZW9wdHMtXHUwMDNldG9zIFx1MDAzZT0gMClcbiBcdFx0aXBfc29ja19zZXRfdG9zKHF1ZXVlLVx1MDAzZXNvY2stXHUwMDNlc2ssIG5jdHJsLVx1MDAzZW9wdHMtXHUwMDNldG9zKTtcbisjaWYgSVNfRU5BQkxFRChDT05GSUdfSVBWNilcbitcdGlmIChuY3RybC1cdTAwM2VvcHRzLVx1MDAzZXRjbGFzcyBcdTAwM2U9IDAgXHUwMDI2XHUwMDI2XG4rXHQgICAgcXVldWUtXHUwMDNlc29jay1cdTAwM2Vzay1cdTAwM2Vza19mYW1pbHkgPT0gQUZfSU5FVDYpXG4rXHRcdGlwNl9zb2NrX3NldF90Y2xhc3MocXVldWUtXHUwMDNlc29jay1cdTAwM2VzaywgbmN0cmwtXHUwMDNlb3B0cy1cdTAwM2V0Y2xhc3MpO1xuKyNlbmRpZlxuIFxuIFx0LyogU2V0IDEwIHNlY29uZHMgdGltZW91dCBmb3IgaWNyZXNwIHJlY3Ztc2cgKi9cbiBcdHF1ZXVlLVx1MDAzZXNvY2stXHUwMDNlc2stXHUwMDNlc2tfcmN2dGltZW8gPSAxMCAqIEhaO1xuQEAgLTMwNDEsNyArMzA0Niw4IEBAIHN0YXRpYyBzdHJ1Y3QgbnZtZl90cmFuc3BvcnRfb3BzIG52bWVfdGNwX3RyYW5zcG9ydCA9IHtcbiBcdFx0XHQgIE5WTUZfT1BUX0hPU1RfVFJBRERSIHwgTlZNRl9PUFRfQ1RSTF9MT1NTX1RNTyB8XG4gXHRcdFx0ICBOVk1GX09QVF9IRFJfRElHRVNUIHwgTlZNRl9PUFRfREFUQV9ESUdFU1QgfFxuIFx0XHRcdCAgTlZNRl9PUFRfTlJfV1JJVEVfUVVFVUVTIHwgTlZNRl9PUFRfTlJfUE9MTF9RVUVVRVMgfFxuLVx0XHRcdCAgTlZNRl9PUFRfVE9TIHwgTlZNRl9PUFRfSE9TVF9JRkFDRSB8IE5WTUZfT1BUX1RMUyB8XG4rXHRcdFx0ICBOVk1GX09QVF9UT1MgfCBOVk1GX09QVF9UQ0xBU1MgfFxuK1x0XHRcdCAgTlZNRl9PUFRfSE9TVF9JRkFDRSB8IE5WTUZfT1BUX1RMUyB8XG4gXHRcdFx0ICBOVk1GX09QVF9LRVlSSU5HIHwgTlZNRl9PUFRfVExTX0tFWSB8IE5WTUZfT1BUX0NPTkNBVCxcbiBcdC5jcmVhdGVfY3RybFx0PSBudm1lX3RjcF9jcmVhdGVfY3RybCxcbiB9O1xuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbnZtZS90YXJnZXQvdGNwLmMgYi9kcml2ZXJzL252bWUvdGFyZ2V0L3RjcC5jXG5pbmRleCA3NWEyNzZkNzNiZTNlLi4xZDY1NTE5ZWJjMGZiIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9udm1lL3RhcmdldC90Y3AuY1xuKysrIGIvZHJpdmVycy9udm1lL3RhcmdldC90Y3AuY1xuQEAgLTE3MjUsNiArMTcyNSwxNCBAQCBzdGF0aWMgaW50IG52bWV0X3RjcF9zZXRfcXVldWVfc29jayhzdHJ1Y3QgbnZtZXRfdGNwX3F1ZXVlICpxdWV1ZSlcbiBcdC8qIFNldCBzb2NrZXQgdHlwZSBvZiBzZXJ2aWNlICovXG4gXHRpZiAoaW5ldC1cdTAwM2VyY3ZfdG9zIFx1MDAzZSAwKVxuIFx0XHRpcF9zb2NrX3NldF90b3Moc29jay1cdTAwM2VzaywgaW5ldC1cdTAwM2VyY3ZfdG9zKTtcbisjaWYgSVNfRU5BQkxFRChDT05GSUdfSVBWNilcbitcdGlmIChzb2NrLVx1MDAzZXNrLVx1MDAzZXNrX2ZhbWlseSA9PSBBRl9JTkVUNikge1xuK1x0XHR1OCByY3ZfdGNsYXNzID0gaXA2X3RjbGFzcyhpbmV0Nl9zayhzb2NrLVx1MDAzZXNrKS1cdTAwM2VyY3ZfZmxvd2luZm8pO1xuK1xuK1x0XHRpZiAocmN2X3RjbGFzcyBcdTAwM2UgMClcbitcdFx0XHRpcDZfc29ja19zZXRfdGNsYXNzKHNvY2stXHUwMDNlc2ssIHJjdl90Y2xhc3MpO1xuK1x0fVxuKyNlbmRpZlxuIFxuIFx0cmV0ID0gMDtcbiBcdHdyaXRlX2xvY2tfYmgoXHUwMDI2c29jay1cdTAwM2Vzay1cdTAwM2Vza19jYWxsYmFja19sb2NrKTtcbmRpZmYgLS1naXQgYS9pbmNsdWRlL25ldC9pcHY2LmggYi9pbmNsdWRlL25ldC9pcHY2LmhcbmluZGV4IDNkZTA3ZTczODUzOGYuLjgyZTU3YjM0YmE1N2YgMTAwNjQ0XG4tLS0gYS9pbmNsdWRlL25ldC9pcHY2LmhcbisrKyBiL2luY2x1ZGUvbmV0L2lwdjYuaFxuQEAgLTEyNTIsNiArMTI1Miw5IEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBpcDZfc29ja19zZXRfcmVjdmVycihzdHJ1Y3Qgc29jayAqc2spXG4gXHRpbmV0Nl9zZXRfYml0KFJFQ1ZFUlI2LCBzayk7XG4gfVxuIFxuK3ZvaWQgX19pcDZfc29ja19zZXRfdGNsYXNzKHN0cnVjdCBzb2NrICpzaywgaW50IHZhbCk7XG4rdm9pZCBpcDZfc29ja19zZXRfdGNsYXNzKHN0cnVjdCBzb2NrICpzaywgaW50IHZhbCk7XG4rXG4gI2RlZmluZSBJUFY2X1BSRUZFUl9TUkNfTUFTSyAoSVBWNl9QUkVGRVJfU1JDX1RNUCB8IElQVjZfUFJFRkVSX1NSQ19QVUJMSUMgfCBcXFxuIFx0XHRcdCAgICAgIElQVjZfUFJFRkVSX1NSQ19DT0EpXG4gXG5kaWZmIC0tZ2l0IGEvbmV0L2lwdjYvaXB2Nl9zb2NrZ2x1ZS5jIGIvbmV0L2lwdjYvaXB2Nl9zb2NrZ2x1ZS5jXG5pbmRleCBiNGM5Nzc0MzRjMmUwLi5jNTlmMjVmYmIzMzZkIDEwMDY0NFxuLS0tIGEvbmV0L2lwdjYvaXB2Nl9zb2NrZ2x1ZS5jXG4rKysgYi9uZXQvaXB2Ni9pcHY2X3NvY2tnbHVlLmNcbkBAIC0zNzMsNiArMzczLDI4IEBAIHN0YXRpYyBpbnQgaXB2Nl9zZXRfb3B0X2hkcihzdHJ1Y3Qgc29jayAqc2ssIGludCBvcHRuYW1lLCBzb2NrcHRyX3Qgb3B0dmFsLFxuIFx0cmV0dXJuIGVycjtcbiB9XG4gXG4rdm9pZCBfX2lwNl9zb2NrX3NldF90Y2xhc3Moc3RydWN0IHNvY2sgKnNrLCBpbnQgdmFsKVxuK3tcbitcdHU4IG9sZF90Y2xhc3MgPSBpbmV0Nl9zayhzayktXHUwMDNldGNsYXNzO1xuK1xuK1x0aWYgKHNrLVx1MDAzZXNrX3R5cGUgPT0gU09DS19TVFJFQU0pIHtcbitcdFx0dmFsIFx1MDAyNj0gfklORVRfRUNOX01BU0s7XG4rXHRcdHZhbCB8PSBvbGRfdGNsYXNzIFx1MDAyNiBJTkVUX0VDTl9NQVNLO1xuK1x0fVxuK1x0aWYgKG9sZF90Y2xhc3MgIT0gdmFsKSB7XG4rXHRcdFdSSVRFX09OQ0UoaW5ldDZfc2soc2spLVx1MDAzZXRjbGFzcywgdmFsKTtcbitcdFx0c2tfZHN0X3Jlc2V0KHNrKTtcbitcdH1cbit9XG4rXG4rdm9pZCBpcDZfc29ja19zZXRfdGNsYXNzKHN0cnVjdCBzb2NrICpzaywgaW50IHZhbClcbit7XG4rXHRzb2Nrb3B0X2xvY2tfc29jayhzayk7XG4rXHRfX2lwNl9zb2NrX3NldF90Y2xhc3Moc2ssIHZhbCk7XG4rXHRzb2Nrb3B0X3JlbGVhc2Vfc29jayhzayk7XG4rfVxuK0VYUE9SVF9TWU1CT0woaXA2X3NvY2tfc2V0X3RjbGFzcyk7XG4rXG4gaW50IGRvX2lwdjZfc2V0c29ja29wdChzdHJ1Y3Qgc29jayAqc2ssIGludCBsZXZlbCwgaW50IG9wdG5hbWUsXG4gXHRcdCAgICAgICBzb2NrcHRyX3Qgb3B0dmFsLCB1bnNpZ25lZCBpbnQgb3B0bGVuKVxuIHtcbkBAIC03MTMsMTQgKzczNSw3IEBAIGludCBkb19pcHY2X3NldHNvY2tvcHQoc3RydWN0IHNvY2sgKnNrLCBpbnQgbGV2ZWwsIGludCBvcHRuYW1lLFxuIFx0XHQvKiBSRkMgMzU0MiwgNi41OiBkZWZhdWx0IHRyYWZmaWMgY2xhc3Mgb2YgMHgwICovXG4gXHRcdGlmICh2YWwgPT0gLTEpXG4gXHRcdFx0dmFsID0gMDtcbi1cdFx0aWYgKHNrLVx1MDAzZXNrX3R5cGUgPT0gU09DS19TVFJFQU0pIHtcbi1cdFx0XHR2YWwgXHUwMDI2PSB+SU5FVF9FQ05fTUFTSztcbi1cdFx0XHR2YWwgfD0gbnAtXHUwMDNldGNsYXNzIFx1MDAyNiBJTkVUX0VDTl9NQVNLO1xuLVx0XHR9XG4tXHRcdGlmIChucC1cdTAwM2V0Y2xhc3MgIT0gdmFsKSB7XG4tXHRcdFx0bnAtXHUwMDNldGNsYXNzID0gdmFsO1xuLVx0XHRcdHNrX2RzdF9yZXNldChzayk7XG4tXHRcdH1cbitcdFx0X19pcDZfc29ja19zZXRfdGNsYXNzKHNrLCB2YWwpO1xuIFx0XHRyZXR2ID0gMDtcbiBcdFx0YnJlYWs7XG4gXG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wOFQwNzoyNjoyMi4yNzY4NDY3ODJaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo2NDI5Mzc2MjE4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk5WTWUgb3ZlciBUQ1AgSVB2NiBUcmFmZmljIENsYXNzIFN1cHBvcnQ6IEEgUmV2aWV3KipcblxuT2theSwgc28gSSd2ZSBiZWVuIGxvb2tpbmcgb3ZlciB0aGlzIHBhdGNoIHRoYXQgaW50cm9kdWNlcyBgdGNsYXNzYCAoSVB2NiB0cmFmZmljIGNsYXNzKSBzdXBwb3J0IGZvciBOVk1lIG92ZXIgVENQLiBGcm9tIGEgZnVuY3Rpb25hbCBwZXJzcGVjdGl2ZSwgaXQncyBwcmV0dHkgc3RyYWlnaHRmb3J3YXJkOiB3ZSdyZSBtb2RpZnlpbmcgdGhlIE5WTWUgb3ZlciBUQ1AgZHJpdmVyIGFuZCB0aGUgSVB2NiBzb2NrZXQgZ2x1ZSB0byBoYW5kbGUgdGhpcy4gSXQgbG9va3MgbGlrZSB0aGUgY29yZSBjaGFuZ2VzIGFyZSBpbiB0aGVzZSBmaWxlczogYGRyaXZlcnMvbnZtZS9ob3N0L2ZhYnJpY3MuY2AsIGBkcml2ZXJzL252bWUvaG9zdC90Y3AuY2AsIGBkcml2ZXJzL252bWUvdGFyZ2V0L3RjcC5jYCwgYGluY2x1ZGUvbmV0L2lwdjYuaGAsIGFuZCBgbmV0L2lwdjYvaXB2Nl9zb2NrZ2x1ZS5jYC5cblxuU3BlY2lmaWNhbGx5LCBgZHJpdmVycy9udm1lL2hvc3QvZmFicmljcy5jYCBub3cgcGFyc2VzIHRoZSBgdGNsYXNzPSVkYCBvcHRpb24gd2l0aGluIGBudm1mX3BhcnNlX29wdGlvbnNgLiBUaGUgaG9zdC1zaWRlIFRDUCBkcml2ZXIgKGBkcml2ZXJzL252bWUvaG9zdC90Y3AuY2ApIHNldHMgdGhlIGB0Y2xhc3NgIG9uIHRoZSBzb2NrZXQgdXNpbmcgYGlwNl9zb2NrX3NldF90Y2xhc3NgIHdoZW4gYHRjbGFzcyBcdTAwM2U9IDBgIGFuZCBpdOKAmXMgYW4gSVB2NiBzb2NrZXQuIFRoZSB0YXJnZXQtc2lkZSBUQ1AgZHJpdmVyIChgZHJpdmVycy9udm1lL3RhcmdldC90Y3AuY2ApIGRvZXMgdGhlIHNhbWUsIGJ1dCBzZXRzIHRoZSB0Y2xhc3Mgd2hlbiBgcmN2X3RjbGFzcyBcdTAwM2UgMGAuIEEgY3J1Y2lhbCBjaGFuZ2UgaXMgdGhlIGV4dHJhY3Rpb24gYW5kIGV4cG9ydCBvZiBgX19pcDZfc29ja19zZXRfdGNsYXNzYCBhbmQgYGlwNl9zb2NrX3NldF90Y2xhc3NgIGZyb20gYGRvX2lwdjZfc2V0c29ja29wdGAuXG5cblRoaXMgaXMgYSByZWFjaGFibGUgY2hhbmdlIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cywgd2hpY2ggaXMgaW1wb3J0YW50IHRvIHJlbWVtYmVyIGZvciBmdXp6aW5nLiBTaW5jZSBOVk1lIG92ZXIgVENQIGNhbiB3b3JrIG92ZXIgbG9vcGJhY2sgb3IgdmlydHVhbCBpbnRlcmZhY2VzLCB0aGlzIGlzIHNvbWV0aGluZyB3ZSBzaG91bGQgZGVmaW5pdGVseSBiZSB0ZXN0aW5nLlxuXG5Ob3csIG15IGluaXRpYWwgdGhvdWdodCBpcywgd2hlcmUgYXJlIHRoZSBmdXp6aW5nIHRhcmdldHM/IGBudm1mX3BhcnNlX29wdGlvbnNgIGlzIGNlcnRhaW5seSByZWxldmFudCwgYnV0IGl0J3MgYSBnZW5lcmFsIHBhcnNpbmcgZnVuY3Rpb24uIFRoaW5raW5nIG1vcmUgc3BlY2lmaWNhbGx5LCBJIHRoaW5rIGBudm1lX3RjcF9hbGxvY19xdWV1ZWAsIGFuZCBgbnZtZXRfdGNwX3NldF9xdWV1ZV9zb2NrYCBhcmUgZXhjZWxsZW50IHRhcmdldHMgYXMgd2VsbC4gUGx1cywgYF9faXA2X3NvY2tfc2V0X3RjbGFzc2AgYW5kIGBpcDZfc29ja19zZXRfdGNsYXNzYCBhcmUga2V5IGZvciBoYW5kbGluZyB0aGUgYWN0dWFsIHNvY2tldCBvcHRpb25zLlxuXG5CZWZvcmUgSSBkaXZlIHRvbyBkZWVwIGludG8gZnV6emluZywgSSB3YW50IHRvIGNvbmZpcm0gdGhlIG5lY2Vzc2FyeSBjb25maWd1cmF0aW9ucy4gSSdsbCBuZWVkIHRvIGRvdWJsZS1jaGVjayB0aGF0IGBDT05GSUdfTlZNRV9UQ1BgLCBgQ09ORklHX05WTUVfVEFSR0VUX1RDUGAsIGFuZCBgQ09ORklHX0lQVjZgIGFyZSBhbGwgZW5hYmxlZCwgdG8gZW5zdXJlIHRoZSBmZWF0dXJlcyBhcmUgYWN0dWFsbHkgY29tcGlsZWQgaW4gYW5kLCB0aGVyZWZvcmUsIGFjY2Vzc2libGUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQ1MjYsIk91dHB1dFRva2VucyI6MTksIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0OTEsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wOFQwNzoyNjoyOC43MDYyMjU2N1oiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxODMyNjM5MTcxLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBOVk1FX1RDUFwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL252bWUvaG9zdC9LY29uZmlnPTY3PWNvbmZpZyBOVk1FX0ZDXFxuLS1cXG5kcml2ZXJzL252bWUvaG9zdC9LY29uZmlnLTgyLVxcbmRyaXZlcnMvbnZtZS9ob3N0L0tjb25maWc6ODM6Y29uZmlnIE5WTUVfVENQXFxuZHJpdmVycy9udm1lL2hvc3QvS2NvbmZpZy04NC1cXHR0cmlzdGF0ZSBcXFwiTlZNIEV4cHJlc3Mgb3ZlciBGYWJyaWNzIFRDUCBob3N0IGRyaXZlclxcXCJcXG4tLVxcbmRyaXZlcnMvbnZtZS9ob3N0L0tjb25maWctOTktXFxuZHJpdmVycy9udm1lL2hvc3QvS2NvbmZpZzoxMDA6Y29uZmlnIE5WTUVfVENQX1RMU1xcbmRyaXZlcnMvbnZtZS9ob3N0L0tjb25maWctMTAxLVxcdGJvb2wgXFxcIk5WTWUgb3ZlciBGYWJyaWNzIFRDUCBUTFMgZW5jcnlwdGlvbiBzdXBwb3J0XFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wOFQwNzoyNjozMC41Mzg4NzA0OTFaIiwiU2VxIjo1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0OTk5MjU0NDM1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZSwgYW5kIGRlbGl2ZXJlZCBhcyBhIGZpcnN0LXBlcnNvbiBzdW1tYXJ5OlxuXG4qKk5WTWUvVENQIEludmVzdGlnYXRpb24gVGltZSoqXG5cblJpZ2h0LCBsZXQncyBkaXZlIGludG8gdGhpcy4gVGhlIG1lbnRhbCBjaGVja2xpc3QgaXMgcnVubmluZywgYW5kIEknbSB6ZXJvaW5nIGluIG9uIGBOVk1FX1RBUkdFVF9UQ1BgLiBUaGlzIG1lYW5zIHdlJ3JlIGRlYWxpbmcgd2l0aCBOVk1lIG92ZXIgVENQLCBzbyB0aGUgdXN1YWwgc3VzcGVjdHMg4oCTIG5ldHdvcmsgY29uZmlndXJhdGlvbiwgTVRVLCBwb3RlbnRpYWwgVENQIG92ZXJoZWFkIOKAkyBhcmUgdG9wIG9mIG1pbmQuIEknbSBpbW1lZGlhdGVseSB0aGlua2luZyBhYm91dCB0aGUgc3BlY2lmaWMgdGFyZ2V0IGltcGxlbWVudGF0aW9uIHdlJ3JlIGRlYWxpbmcgd2l0aCwgdG9vLiBJcyBpdCBzb21ldGhpbmcgcm9idXN0IGxpa2UgU1BESywgb3IgYSBtb3JlIGJhc2ljIG9wZW4tc291cmNlIGltcGxlbWVudGF0aW9uPyBLbm93aW5nIHRoYXQgd2lsbCBpbmZsdWVuY2Ugd2hlcmUgSSBzdGFydCBsb29raW5nIGZvciBjb25maWd1cmF0aW9uIHBpdGZhbGxzLlxuXG5NeSBpbml0aWFsIGxpbmUgb2YgaW5xdWlyeSB3aWxsIGJlIGFyb3VuZCBjb25uZWN0aW9uIGVzdGFibGlzaG1lbnQuIEFyZSB3ZSBzZWVpbmcgY29uc2lzdGVudCBjb25uZWN0aW9uIGF0dGVtcHRzLCBvciBhcmUgdGhlIGNsaWVudHMgaGF2aW5nIHRyb3VibGUgZXZlbiByZWFjaGluZyB0aGUgdGFyZ2V0PyBJZiB3ZSBhcmUsIEkgbmVlZCB0byBjaGVjayB0aGUgYmFzaWNzOiBmaXJld2FsbCBydWxlcywgcm91dGluZywgYW5kIG9mIGNvdXJzZSwgdGhlIHRhcmdldOKAmXMgbGlzdGVuaW5nIGFkZHJlc3MgYW5kIHBvcnQuIEknbSBhbHNvIGdvaW5nIHRvIGNoZWNrLCBhcmUgd2Ugc2VlaW5nIGFueSBzb2NrZXQgZXJyb3JzIG9uIGVpdGhlciB0aGUgY2xpZW50IG9yIHRoZSB0YXJnZXQ/IFRob3NlIGNhbiBiZSB2ZXJ5IGluZm9ybWF0aXZlLiBJZiBjb25uZWN0aW9ucyBhcmUgZmFpbGluZywgd2hhdCBhcmUgdGhlIGVycm9yIGNvZGVzPyBEbyB3ZSBoYXZlIGxvZ3MsIG9yIGlzIHRoZXJlIGEgd2F5IHRvIGVuYWJsZSB0aGVtP1xuXG5JZiB3ZSdyZSBnZXR0aW5nIGNvbm5lY3Rpb25zLCB0aGUgbmV4dCBwaGFzZSB3aWxsIGJlIGZvY3VzZWQgb24gYWN0dWFsIGRhdGEgdHJhbnNmZXIuIEknbGwgbmVlZCB0byBjaGVjayB0aGUgbmVnb3RpYXRlZCBjb25uZWN0aW9uIHBhcmFtZXRlcnMsIHZlcmlmeSB0aGUgZmxvdyBjb250cm9sIHNldHRpbmdzLCBhbmQgZXhhbWluZSB0aGUgVENQIHdpbmRvdyBzaXplcy4gQXJlIHRoZXkgb3B0aW1pemVkIGZvciBOVk1lJ3MgaGlnaC1zcGVlZCwgbG93LWxhdGVuY3kgcmVxdWlyZW1lbnRzPyBBcmUgd2UgcG90ZW50aWFsbHkgYnVtcGluZyB1cCBhZ2FpbnN0IGFueSBjb25nZXN0aW9uIGlzc3Vlcywgb3IgaXMgdGhlcmUgYW55IHBhY2tldCBsb3NzPyBJZiB0aGVyZSdzIHBlcmZvcm1hbmNlIGRlZ3JhZGF0aW9uLCBJJ2xsIHByb2JhYmx5IHN0YXJ0IHVzaW5nIHRvb2xzIGxpa2UgYHRjcGR1bXBgIG9yIGBXaXJlc2hhcmtgIHRvIGNhcHR1cmUgdGhlIHRyYWZmaWMgYW5kIGFuYWx5emUgdGhlIE5WTWUgY29tbWFuZHMgYW5kIHJlc3BvbnNlcyBhdCBhIGxvdyBsZXZlbC4gQXJlIHdlIHNlZWluZyBhIGhpZ2ggcmF0ZSBvZiByZXRyYW5zbWlzc2lvbnM/IEFyZSB0aGVyZSBzaWduaWZpY2FudCBkZWxheXMgaW4gdGhlIEkvTyBwYXRoIHRoYXQgYXJlIG5vdCBhdHRyaWJ1dGFibGUgdG8gdGhlIHN0b3JhZ2UgbWVkaXVtP1xuXG5GaW5hbGx5LCB0aGUgdGFyZ2V0J3MgY29uZmlndXJhdGlvbiBpcyBrZXkuIFdoYXQncyB0aGUgcXVldWUgZGVwdGg/IElzIGl0IGFwcHJvcHJpYXRlbHkgc2V0IGZvciB0aGUgd29ya2xvYWRzPyBBcmUgdGhlcmUgYW55IHJlc291cmNlIGxpbWl0YXRpb25zIG9uIHRoZSB0YXJnZXQgdGhhdCBtaWdodCBiZSBpbXBhY3RpbmcgcGVyZm9ybWFuY2U/IEFsc28sIGFyZSB3ZSBsZXZlcmFnaW5nIGFueSBzcGVjaWZpYyBOVk1lL1RDUCBvcHRpbWl6YXRpb25zIG9yIG9mZmxvYWRzIGF2YWlsYWJsZSBvbiB0aGUgbmV0d29yayBhZGFwdGVycyBvciB0YXJnZXQgY29udHJvbGxlcnM/IFRob3NlIGFyZSB0aGUga2luZHMgb2YgdGhpbmdzIHRoYXQgY2FuIG1ha2Ugb3IgYnJlYWsgYW4gTlZNZS9UQ1AgZGVwbG95bWVudC4gQW5kLCBvZiBjb3Vyc2UsIHRoZSBmaXJtd2FyZSBsZXZlbHMgb24gZXZlcnl0aGluZyBuZWVkIHRvIGJlIHZlcmlmaWVkLiBHb3QgdG8gYmUgc3VyZSB0aGF0IHRoZSBuZXR3b3JrIGFkYXB0ZXIgZHJpdmVycyBhbmQgdGhlIHRhcmdldCBmaXJtd2FyZSBhcmUgdXAgdG8gZGF0ZSBhbmQgY29tcGF0aWJsZS5cblxuXG4iLCJJbnB1dFRva2VucyI6NTczNywiT3V0cHV0VG9rZW5zIjoyMSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjExLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA4VDA3OjI2OjM1LjUzODEyODExNVoiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyMDIzMjA1NzIxLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBOVk1FX1RBUkdFVF9UQ1BcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9udm1lL3RhcmdldC9LY29uZmlnPTc0PWNvbmZpZyBOVk1FX1RBUkdFVF9GQ0xPT1BcXG4tLVxcbmRyaXZlcnMvbnZtZS90YXJnZXQvS2NvbmZpZy04Ni1cXG5kcml2ZXJzL252bWUvdGFyZ2V0L0tjb25maWc6ODc6Y29uZmlnIE5WTUVfVEFSR0VUX1RDUFxcbmRyaXZlcnMvbnZtZS90YXJnZXQvS2NvbmZpZy04OC1cXHR0cmlzdGF0ZSBcXFwiTlZNZSBvdmVyIEZhYnJpY3MgVENQIHRhcmdldCBzdXBwb3J0XFxcIlxcbi0tXFxuZHJpdmVycy9udm1lL3RhcmdldC9LY29uZmlnLTk2LVxcbmRyaXZlcnMvbnZtZS90YXJnZXQvS2NvbmZpZzo5Nzpjb25maWcgTlZNRV9UQVJHRVRfVENQX1RMU1xcbmRyaXZlcnMvbnZtZS90YXJnZXQvS2NvbmZpZy05OC1cXHRib29sIFxcXCJOVk1lIG92ZXIgRmFicmljcyBUQ1AgdGFyZ2V0IFRMUyBlbmNyeXB0aW9uIHN1cHBvcnRcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA4VDA3OjI2OjM3LjU2MTM0MTE2N1oiLCJTZXEiOjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjI4OTgyNTIxNDEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGxldCdzIHNlZS4gSGVyZSdzIG15IHRob3VnaHQgcHJvY2VzczpcblxuKipOVk1lLW9GIERlcGVuZGVuY2llcyAtIEEgUXVpY2sgQ2hlY2sqKlxuXG5SaWdodCwgbGV0J3MganVzdCBtYWtlIHN1cmUgdGhlcmUgYXJlbid0IGFueSBzbmVha3ksIHVuZXhwZWN0ZWQgZGVwZW5kZW5jaWVzIGx1cmtpbmcgYXJvdW5kIHdpdGggTlZNZS9UQ1AuIEkgbmVlZCB0byBxdWlja2x5IGRldGVybWluZSBpZiBpdCByZWxpZXMgb24gYW55dGhpbmcgb3V0c2lkZSBvZiB3aGF0IEknZCBleHBlY3QgZm9yIGEgc3RhbmRhcmQgTlZNZSBvdmVyIEZhYnJpY3MgaW1wbGVtZW50YXRpb24sIHBlcmhhcHMgc29tZSBjb3JlIGZ1bmN0aW9uYWxpdHksIG5ldHdvcmtpbmcgbGlicmFyaWVzLCBvciBzcGVjaWZpYyBrZXJuZWwgbW9kdWxlcy4gSXQncyBhbHdheXMgZ29vZCBwcmFjdGljZSB0byB2ZXJpZnkgYXNzdW1wdGlvbnMsIGV2ZW4gb24gc29tZXRoaW5nIHNlZW1pbmdseSBzdHJhaWdodGZvcndhcmQgbGlrZSB0aGlzLCBzbyBJJ2xsIHNlZSBpZiBJIGNhbiBmaW5kIGEgbGlzdCBvZiBpdHMgZGVwZW5kZW5jaWVzIG9yIGlmIEkgbmVlZCB0byBkaWcgaW50byB0aGUgY29kZSBhIGxpdHRsZS4gTm8gcG9pbnQgZ29pbmcgZnVydGhlciB3aXRob3V0IG1ha2luZyBzdXJlIEkgaGF2ZSBhIHNvbGlkIGZvdW5kYXRpb25hbCB1bmRlcnN0YW5kaW5nIG9mIGhvdyBpdCBpbnRlZ3JhdGVzIHdpdGhpbiB0aGUgd2lkZXIgc3RvcmFnZSBlY29zeXN0ZW0uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjY0NTksIk91dHB1dFRva2VucyI6MzYsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wOFQwNzoyNjo0MC40NTk1OTYxNjhaIiwiU2VxIjo4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo2NDAyMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL252bWUvaG9zdC9LY29uZmlnXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDgwLFxuICBcIkxpbmVDb3VudFwiOiAyMFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgIDgwOlxcdFxcbiAgODE6XFx0XFx0ICBJZiB1bnN1cmUsIHNheSBOLlxcbiAgODI6XFx0XFxuICA4MzpcXHRjb25maWcgTlZNRV9UQ1BcXG4gIDg0OlxcdFxcdHRyaXN0YXRlIFxcXCJOVk0gRXhwcmVzcyBvdmVyIEZhYnJpY3MgVENQIGhvc3QgZHJpdmVyXFxcIlxcbiAgODU6XFx0XFx0ZGVwZW5kcyBvbiBJTkVUXFxuICA4NjpcXHRcXHRkZXBlbmRzIG9uIEJMT0NLXFxuICA4NzpcXHRcXHRzZWxlY3QgQ1JDMzJcXG4gIDg4OlxcdFxcdHNlbGVjdCBORVRfQ1JDMzJDXFxuICA4OTpcXHRcXHRzZWxlY3QgTlZNRV9GQUJSSUNTXFxuICA5MDpcXHRcXHRoZWxwXFxuICA5MTpcXHRcXHQgIFRoaXMgcHJvdmlkZXMgc3VwcG9ydCBmb3IgdGhlIE5WTWUgb3ZlciBGYWJyaWNzIHByb3RvY29sIHVzaW5nXFxuICA5MjpcXHRcXHQgIHRoZSBUQ1AgdHJhbnNwb3J0LiAgVGhpcyBhbGxvd3MgeW91IHRvIHVzZSByZW1vdGUgYmxvY2sgZGV2aWNlc1xcbiAgOTM6XFx0XFx0ICBleHBvcnRlZCB1c2luZyB0aGUgTlZNZSBwcm90b2NvbCBzZXQuXFxuICA5NDpcXHRcXG4gIDk1OlxcdFxcdCAgVG8gY29uZmlndXJlIGEgTlZNZSBvdmVyIEZhYnJpY3MgY29udHJvbGxlciB1c2UgdGhlIG52bWUtY2xpIHRvb2xcXG4gIDk2OlxcdFxcdCAgZnJvbSBodHRwczovL2dpdGh1Yi5jb20vbGludXgtbnZtZS9udm1lLWNsaS5cXG4gIDk3OlxcdFxcbiAgOTg6XFx0XFx0ICBJZiB1bnN1cmUsIHNheSBOLlxcbiAgOTk6XFx0XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA4VDA3OjI2OjQwLjQ1OTY2MTc1OFoiLCJTZXEiOjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM3MzM1OTE5MTQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgYW4gZXhwZXJ0J3MgaW50ZXJuYWwgbW9ub2xvZ3VlOlxuXG4qKkNoZWNraW5nIE5WTUVfVEFSR0VUX1RDUCBEZXBlbmRlbmNpZXMqKlxuXG5SaWdodCwgbGV0J3MgZGl2ZSBpbi4gVGhlIE5WTWUgb3ZlciBUQ1Agc3BhY2UgaXMgZ2V0dGluZyBtb3JlIG1hdHVyZSwgc28gSSBuZWVkIHRvIHF1aWNrbHkgcmVmcmVzaCBteSB1bmRlcnN0YW5kaW5nIG9mIGl0cyBkZXBlbmRlbmNpZXMuIEZpcnN0LCBJIG5lZWQgdG8gbWFrZSBzdXJlIEknbSBjcnlzdGFsIGNsZWFyIG9uIGhvdyBhbGwgdGhlIHBpZWNlcyBmaXQgdG9nZXRoZXIuIFdoYXQgYXJlIHRoZSBrZXkgdW5kZXJseWluZyB0ZWNobm9sb2dpZXMgdGhhdCBOVk1lIG92ZXIgVENQIHJlbGllcyBvbj8gT2J2aW91c2x5LCBUQ1AgaXRzZWxmLCBidXQgd2hhdCdzIHRoZSBhcmNoaXRlY3R1cmFsIGludGVycGxheSB3aXRoIFJETUEgb3Igb3RoZXIgdHJhbnNwb3J0IHByb3RvY29scyB0aGF0IG1pZ2h0IGJlIHJlbGV2YW50PyBJcyB0aGVyZSBhIHBhcnRpY3VsYXIga2VybmVsIHZlcnNpb24gd2hlcmUgdGhlc2UgZW5oYW5jZW1lbnRzIGFyZSBiYWtlZCBpbj8gQXJlIHdlIHRhbGtpbmcgYWJvdXQgc3BlY2lmaWMgdmVyc2lvbnMgb2YgdGhlIE5WTWUgc3BlY2lmaWNhdGlvbj8gSSdtIHRoaW5raW5nIGFib3V0IGRyaXZlciBzdXBwb3J0OyB3aGF0J3MgdGhlIGxhbmRzY2FwZSB0aGVyZT8gQXJlIHRoZXJlIG9wZW4tc291cmNlIGltcGxlbWVudGF0aW9ucyB0byB0cmFjaywgYW5kIGRvIHRoZXkgaGF2ZSBhbnkgcmVwb3J0ZWQgaXNzdWVzIG9yIGRlcGVuZGVuY2llcyB0aGF0IG1pZ2h0IGluZmx1ZW5jZSBob3cgSSBhcHByb2FjaCB0aGlzPyBBbmQgdGhlbiB0aGVyZSdzIHRoZSBicm9hZGVyIGVjb3N5c3RlbSDigJMgYXJlIHRoZXJlIHNwZWNpZmljIG5ldHdvcmsgaW50ZXJmYWNlIGNhcmRzIChOSUNzKSB0aGF0IHdvcmsgYmV0dGVyLCBvciBhbnkgc3RvcmFnZSBhcnJheXMgdGhhdCBhcmUgcGFydGljdWxhcmx5IHdlbGwtc3VpdGVkIHRvIHRoZSBOVk1lIG92ZXIgVENQIHBhcmFkaWdtPyBCYXNpY2FsbHksIEkgbmVlZCBhIHF1aWNrIHNhbml0eSBjaGVjayB0byBhdm9pZCB3YXN0aW5nIHRpbWUgZ29pbmcgZG93biByYWJiaXQgaG9sZXMgYW5kIG1ha2Ugc3VyZSBJJ20gdXAgdG8gc3BlZWQgb24gYW55dGhpbmcgdGhhdCBtaWdodCBpbXBhY3QgdGhlIGRlc2lnbiBvciB0cm91Ymxlc2hvb3Rpbmcgb2YgYW4gTlZNZS1vRiBzb2x1dGlvbi4gVGhpcyBpcyBhYm91dCBlZmZpY2llbnRseSBzdGF5aW5nIGluZm9ybWVkIHNvIHRoYXQgSSBjYW4gdGFja2xlIHRoZSBjb3JlIGNoYWxsZW5nZXMgd2l0aG91dCBzdHVtYmxpbmcgb24gc29tZXRoaW5nIG9idmlvdXMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjY5MjcsIk91dHB1dFRva2VucyI6MzYsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMiwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA4VDA3OjI2OjQ0LjE5MzI1NjU5M1oiLCJTZXEiOjEwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo2MTc1MSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL252bWUvdGFyZ2V0L0tjb25maWdcIixcbiAgXCJGaXJzdExpbmVcIjogODAsXG4gIFwiTGluZUNvdW50XCI6IDIwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAgODA6XFx0XFx0ZGVwZW5kcyBvbiBOVk1FX1RBUkdFVF9GQ1xcbiAgODE6XFx0XFx0aGVscFxcbiAgODI6XFx0XFx0ICBUaGlzIGVuYWJsZXMgdGhlIE5WTWUgRkMgbG9vcGJhY2sgdGVzdCBzdXBwb3J0LCB3aGljaCBjYW4gYmUgdXNlZnVsXFxuICA4MzpcXHRcXHQgIHRvIHRlc3QgTlZNZS1GQyB0cmFuc3BvcnQgaW50ZXJmYWNlcy5cXG4gIDg0OlxcdFxcbiAgODU6XFx0XFx0ICBJZiB1bnN1cmUsIHNheSBOLlxcbiAgODY6XFx0XFxuICA4NzpcXHRjb25maWcgTlZNRV9UQVJHRVRfVENQXFxuICA4ODpcXHRcXHR0cmlzdGF0ZSBcXFwiTlZNZSBvdmVyIEZhYnJpY3MgVENQIHRhcmdldCBzdXBwb3J0XFxcIlxcbiAgODk6XFx0XFx0ZGVwZW5kcyBvbiBJTkVUXFxuICA5MDpcXHRcXHRkZXBlbmRzIG9uIE5WTUVfVEFSR0VUXFxuICA5MTpcXHRcXHRoZWxwXFxuICA5MjpcXHRcXHQgIFRoaXMgZW5hYmxlcyB0aGUgTlZNZSBUQ1AgdGFyZ2V0IHN1cHBvcnQsIHdoaWNoIGFsbG93cyBleHBvcnRpbmcgTlZNZVxcbiAgOTM6XFx0XFx0ICBkZXZpY2VzIG92ZXIgVENQLlxcbiAgOTQ6XFx0XFxuICA5NTpcXHRcXHQgIElmIHVuc3VyZSwgc2F5IE4uXFxuICA5NjpcXHRcXG4gIDk3OlxcdGNvbmZpZyBOVk1FX1RBUkdFVF9UQ1BfVExTXFxuICA5ODpcXHRcXHRib29sIFxcXCJOVk1lIG92ZXIgRmFicmljcyBUQ1AgdGFyZ2V0IFRMUyBlbmNyeXB0aW9uIHN1cHBvcnRcXFwiXFxuICA5OTpcXHRcXHRkZXBlbmRzIG9uIE5WTUVfVEFSR0VUX1RDUFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wOFQwNzoyNjo0NC4xOTMzMjIxMDJaIiwiU2VxIjoxMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6Mzk3ODM3NjUwMCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBJbml0aWFsIEFzc2Vzc21lbnQgb2YgdGhlIE5WTWUvVENQIEltcGxlbWVudGF0aW9uKipcblxuT2theSwgc28gd2UncmUgZGl2aW5nIGludG8gTlZNZSBvdmVyIFRDUCwgYW5kIGltbWVkaWF0ZWx5IEkgc2VlIHRoZSBjb3JlIGNvbXBvbmVudHMgd2UncmUgZGVhbGluZyB3aXRoOiBgTlZNRV9UQ1BgLCBgTlZNRV9UQVJHRVRfVENQYCwgYE5WTUVfVEFSR0VUYCwgYW5kLCBvZiBjb3Vyc2UsIElQdjYuIFRoYXQncyB0aGUgYmFzZWxpbmUsIHRoZSBmb3VuZGF0aW9uLiBNYWtlcyBzZW5zZSwgZ2l2ZW4gdGhlIHVuZGVybHlpbmcgdGVjaG5vbG9naWVzLlxuXG5Ob3csIGxldCdzIGZvY3VzIG9uIHRoZSBjcml0aWNhbCBhcmVhcy4gTXkgaW50dWl0aW9uLCBhbmQgZXhwZXJpZW5jZSwgdGVsbHMgbWUgdG8gem9vbSBpbiBvbiB0aGVzZSBmdW5jdGlvbnM6IGBudm1mX3BhcnNlX29wdGlvbnNgLCBgbnZtZV90Y3BfYWxsb2NfcXVldWVgLCBgbnZtZXRfdGNwX3NldF9xdWV1ZV9zb2NrYCwgYW5kIHRoZSBJUHY2IHNvY2tldCBjb25maWd1cmF0aW9uIGZ1bmN0aW9uczogYF9faXA2X3NvY2tfc2V0X3RjbGFzc2AgYW5kIGBpcDZfc29ja19zZXRfdGNsYXNzYC4gVGhlc2Ugc2VlbSBsaWtlIHRoZSByZWFsIGxpbmNocGlucyBpbiB0aGUgY29ubmVjdGlvbiBhbmQgc2V0dXAgcHJvY2Vzcy5cblxuRmlyc3QgdXA6IGBudm1mX3BhcnNlX29wdGlvbnNgLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBob3cgdGhlIHVzZXItcHJvdmlkZWQgb3B0aW9ucyBhcmUgYmVpbmcgaGFuZGxlZC4gSXMgaXQgYSBzdGF0aWMgZnVuY3Rpb24sIGludGVybmFsIHRvIHRoZSBtb2R1bGUsIG9yIGlzIGl0IGV4cG9ydGVkLCBjYWxsYWJsZSBmcm9tIG90aGVyIHBhcnRzIG9mIHRoZSBrZXJuZWw/IFRoYXQncyBnb2luZyB0byBkaWN0YXRlIHRoZSBsZXZlbCBvZiBpbnRlZ3JhdGlvbiBhbmQgaG93IG11Y2ggY29udHJvbCB3ZSBoYXZlIG92ZXIgdGhlIHBhcmFtZXRlciBwYXJzaW5nIHByb2Nlc3MuIExldCdzIHN0YXJ0IHRoZXJlLlxuXG5cbiIsIklucHV0VG9rZW5zIjo3NTI4LCJPdXRwdXRUb2tlbnMiOjIwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTEzLCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDhUMDc6MjY6NDguMTcxNzAyNTIzWiIsIlNlcSI6MTIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNjY5MjU3MDM4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm52bWZfcGFyc2Vfb3B0aW9uc1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL252bWUvaG9zdC9mYWJyaWNzLmM9Njc3PXN0YXRpYyBjb25zdCBtYXRjaF90YWJsZV90IG9wdF90b2tlbnMgPSB7XFxuLS1cXG5kcml2ZXJzL252bWUvaG9zdC9mYWJyaWNzLmMtNzE1LVxcbmRyaXZlcnMvbnZtZS9ob3N0L2ZhYnJpY3MuYzo3MTY6c3RhdGljIGludCBudm1mX3BhcnNlX29wdGlvbnMoc3RydWN0IG52bWZfY3RybF9vcHRpb25zICpvcHRzLFxcbmRyaXZlcnMvbnZtZS9ob3N0L2ZhYnJpY3MuYy03MTctXFx0XFx0Y29uc3QgY2hhciAqYnVmKVxcbi0tXFxuZHJpdmVycy9udm1lL2hvc3QvZmFicmljcy5jPTEzMjY9bnZtZl9jcmVhdGVfY3RybChzdHJ1Y3QgZGV2aWNlICpkZXYsIGNvbnN0IGNoYXIgKmJ1ZilcXG4tLVxcbmRyaXZlcnMvbnZtZS9ob3N0L2ZhYnJpY3MuYy0xMzM2LVxcbmRyaXZlcnMvbnZtZS9ob3N0L2ZhYnJpY3MuYzoxMzM3OlxcdHJldCA9IG52bWZfcGFyc2Vfb3B0aW9ucyhvcHRzLCBidWYpO1xcbmRyaXZlcnMvbnZtZS9ob3N0L2ZhYnJpY3MuYy0xMzM4LVxcdGlmIChyZXQpXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA4VDA3OjI2OjQ5Ljg0MDk2NzIzMVoiLCJTZXEiOjEzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMzYzNDM4Njk1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgc3VtbWFyeSwgYXMgdGhlIHRob3VnaHQgcHJvY2VzcyB1bmZvbGRzOlxuXG4qKkRpZ2dpbmcgaW50byB0aGUgTlZNZS1vRiBDb250cm9sbGVyIENyZWF0aW9uKipcblxuT2theSwgc28gYG52bWZfcGFyc2Vfb3B0aW9uc2AgaXMgYSBzdGF0aWMgZnVuY3Rpb24uIFRoYXQgaW1tZWRpYXRlbHkgbmFycm93cyBkb3duIHdoZXJlIGl0J3MgdXNlZC4gU2luY2UgaXQncyBzdGF0aWMsIGl0J3Mgc2NvcGVkIHdpdGhpbiB0aGUgc2FtZSBjb21waWxhdGlvbiB1bml0LCBhbmQgSSdsbCBuZWVkIHRvIGZpZ3VyZSBvdXQgd2hpY2ggZnVuY3Rpb24gaW4gdGhlIHNhbWUgZmlsZSBjYWxscyBpdC4gVGhlIHRleHQgcG9pbnRzIGRpcmVjdGx5IHRvIGBudm1mX2NyZWF0ZV9jdHJsYC4gQWxyaWdodCwgbGV0J3MgZ28gZGlyZWN0bHkgdG8gYG52bWZfY3JlYXRlX2N0cmxgIGFuZCBzZWUgd2hhdCBpdCdzIGRvaW5nLiBIb3BlZnVsbHksIGl0J2xsIHByb3ZpZGUgZW5vdWdoIGNvbnRleHQgdG8gdW5kZXJzdGFuZCB3aHkgYG52bWZfcGFyc2Vfb3B0aW9uc2AgaXMgcmVsZXZhbnQgaW4gdGhlIGZpcnN0IHBsYWNlLiBUaGlzIHByb2JhYmx5IG1lYW5zIGl0IGlzIGJlaW5nIHVzZWQgdG8gcGFyc2UgY29tbWFuZCBsaW5lIHBhcmFtZXRlcnMgb3Igc2ltaWxhciB0byBjb25maWd1cmUgdGhlIGNvbnRyb2xsZXIuIExldCdzIHNlZS4uLlxuXG5cbiIsIklucHV0VG9rZW5zIjo4MTU5LCJPdXRwdXRUb2tlbnMiOjIwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzcsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDhUMDc6MjY6NTMuMjA0NDA5NDE2WiIsIlNlcSI6MTQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNzE3NDgzNzQzLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm52bWZfY3JlYXRlX2N0cmxcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9udm1lL2hvc3QvZmFicmljcy5jPTEzMjU9c3RhdGljIHN0cnVjdCBudm1lX2N0cmwgKlxcbmRyaXZlcnMvbnZtZS9ob3N0L2ZhYnJpY3MuYzoxMzI2Om52bWZfY3JlYXRlX2N0cmwoc3RydWN0IGRldmljZSAqZGV2LCBjb25zdCBjaGFyICpidWYpXFxuZHJpdmVycy9udm1lL2hvc3QvZmFicmljcy5jLTEzMjcte1xcbi0tXFxuZHJpdmVycy9udm1lL2hvc3QvZmFicmljcy5jPTE0MDM9c3RhdGljIHNzaXplX3QgbnZtZl9kZXZfd3JpdGUoc3RydWN0IGZpbGUgKmZpbGUsIGNvbnN0IGNoYXIgX191c2VyICp1YnVmLFxcbi0tXFxuZHJpdmVycy9udm1lL2hvc3QvZmFicmljcy5jLTE0MjMtXFxuZHJpdmVycy9udm1lL2hvc3QvZmFicmljcy5jOjE0MjQ6XFx0Y3RybCA9IG52bWZfY3JlYXRlX2N0cmwobnZtZl9kZXZpY2UsIGJ1Zik7XFxuZHJpdmVycy9udm1lL2hvc3QvZmFicmljcy5jLTE0MjUtXFx0aWYgKElTX0VSUihjdHJsKSkge1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wOFQwNzoyNjo1NC45MjE4OTk2MjlaIiwiU2VxIjoxNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzY3NDIwNzU2MywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIGEgYnJlYWtkb3duIG9mIG15IHRob3VnaHQgcHJvY2VzczpcblxuKipEaXZpbmcgaW50byB0aGUgTlZNZS1vRiBDb250cm9sIFBhdGgqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCBgbnZtZl9jcmVhdGVfY3RybGAuIEludGVyZXN0aW5nLiBUaGUgY29kZSBpbmRpY2F0ZXMgaXQncyBhIHN0YXRpYyBmdW5jdGlvbiwgd2hpY2ggbWVhbnMgaXQncyBzY29wZWQgdG8gdGhlIGN1cnJlbnQgZmlsZS4gQW5kIHRoZSBjYWxsIGdyYXBoIHNob3dzIGl0J3MgaW52b2tlZCBieSBgbnZtZl9kZXZfd3JpdGVgLiBSaWdodCwgc28gYG52bWZfZGV2X3dyaXRlYCBpcyB0aGUgZW50cnkgcG9pbnQsIGFuZCBpdCdzIHJlc3BvbnNpYmxlIGZvciwgd2VsbCwgd3JpdGluZyB0byB0aGUgTlZNZS1vRiBkZXZpY2UsIGFuZCBsaWtlbHkgdGhlIGNyZWF0aW9uIG9mIHNvbWUgY29udHJvbCBzdHJ1Y3R1cmVzLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGF0J3MgaGFwcGVuaW5nIHdoZW4gYSB3cml0ZSBvcGVyYXRpb24gdHJpZ2dlcnMgY29udHJvbCBwYXRoIGFjdGlvbnMuIFRoZXJlZm9yZSwgbGV0J3MgZHJpbGwgZG93biBpbnRvIGBudm1mX2Rldl93cml0ZWAuIFVuZGVyc3RhbmRpbmcgdGhpcyBmdW5jdGlvbiBzaG91bGQgcHJvdmlkZSBjcnVjaWFsIGNvbnRleHQgdG8gaG93IGFuZCB3aGVuIGBudm1mX2NyZWF0ZV9jdHJsYCBpcyBhY3R1YWxseSBjYWxsZWQuIEkgbmVlZCB0byBzZWUgd2hhdCdzIGhhcHBlbmluZyBmcm9tIHRoZSBkZXZpY2Ugd3JpdGUgb3BlcmF0aW9uIGFsbCB0aGUgd2F5IHRvIHRoZSBjb250cm9sbGVyIGNyZWF0aW9uLiBJdCBzb3VuZHMgbGlrZSB0aGVyZSdzIHNvbWUgZGV2aWNlIHNldHVwIGhhcHBlbmluZyBvbiB3cml0ZSwgYW5kIEknZCBiZXQgY29udHJvbGxlciBjcmVhdGlvbiBhbmQgaW5pdGlhbGl6YXRpb24gYXJlIHBhcnQgb2YgdGhhdC5cblxuXG4iLCJJbnB1dFRva2VucyI6ODYwNywiT3V0cHV0VG9rZW5zIjoyMCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjM0LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA4VDA3OjI2OjU4LjU5NjExMDMxMloiLCJTZXEiOjE2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTcyMDMxNTkxMiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJudm1mX2Rldl93cml0ZVwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL252bWUvaG9zdC9mYWJyaWNzLmM9MTQwMT1zdGF0aWMgREVGSU5FX01VVEVYKG52bWZfZGV2X211dGV4KTtcXG5kcml2ZXJzL252bWUvaG9zdC9mYWJyaWNzLmMtMTQwMi1cXG5kcml2ZXJzL252bWUvaG9zdC9mYWJyaWNzLmM6MTQwMzpzdGF0aWMgc3NpemVfdCBudm1mX2Rldl93cml0ZShzdHJ1Y3QgZmlsZSAqZmlsZSwgY29uc3QgY2hhciBfX3VzZXIgKnVidWYsXFxuZHJpdmVycy9udm1lL2hvc3QvZmFicmljcy5jLTE0MDQtXFx0XFx0c2l6ZV90IGNvdW50LCBsb2ZmX3QgKnBvcylcXG4tLVxcbmRyaXZlcnMvbnZtZS9ob3N0L2ZhYnJpY3MuYz0xNDk3PXN0YXRpYyBjb25zdCBzdHJ1Y3QgZmlsZV9vcGVyYXRpb25zIG52bWZfZGV2X2ZvcHMgPSB7XFxuZHJpdmVycy9udm1lL2hvc3QvZmFicmljcy5jLTE0OTgtXFx0Lm93bmVyXFx0XFx0PSBUSElTX01PRFVMRSxcXG5kcml2ZXJzL252bWUvaG9zdC9mYWJyaWNzLmM6MTQ5OTpcXHQud3JpdGVcXHRcXHQ9IG52bWZfZGV2X3dyaXRlLFxcbmRyaXZlcnMvbnZtZS9ob3N0L2ZhYnJpY3MuYy0xNTAwLVxcdC5yZWFkXFx0XFx0PSBzZXFfcmVhZCxcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDhUMDc6Mjc6MDAuMzE2NDMyNDM0WiIsIlNlcSI6MTcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM0Mjg1NDUxNjcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOlxuXG4qKkRpdmluZyBpbnRvIHRoZSBOVk1lLW9GIFdyaXRlIFBhdGgqKlxuXG5Pa2F5LCBzbyB3ZSdyZSBzdGFydGluZyBhdCBgbnZtZl9kZXZfd3JpdGVgLiBUaGF0J3MgdGhlIGxvZ2ljYWwgZW50cnkgcG9pbnQgZm9yIHdyaXRlcyBpbiB0aGUgTlZNZS1vdmVyLUZhYnJpY3Mgc3RhY2ssIHdoaWNoIGlzIGV4YWN0bHkgd2hlcmUgSSdkIGV4cGVjdCB0byBiZS4gTm93LCB0byB0cmFjZSB0aGUgZmxvdyBhbmQgdW5kZXJzdGFuZCB0aGUgc3BlY2lmaWNzIG9mIGhvdyB0aGlzIG9wZXJhdGlvbiBnZXRzIGhhbmRsZWQsIGxldCdzIGxvb2sgYXQgYG52bWVfdGNwX2FsbG9jX3F1ZXVlYC4gTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMsIFwiT2theSwgYXJlIHdlIGxvb2tpbmcgYXQgcXVldWUgYWxsb2NhdGlvbiwgb3Igc29tZXRoaW5nIGRlZXBlcj9cIiBMZXQncyBzZWUgaWYgdGhpcyBpcyBzZXR0aW5nIHVwIHRoZSBwZXItcXVldWUgY29udGV4dCBmb3IgdGhlIEkvTywgb3IgaWYgaXQgaGFzIHNvbWUgb3RoZXIgbW9yZSBmdW5kYW1lbnRhbCBmdW5jdGlvbiBpbiB0aGUgZGF0YSBwYXRoLiBJJ2xsIG5lZWQgdG8gdW5kZXJzdGFuZCBob3cgdGhlIHF1ZXVlcyBhcmUgbWFuYWdlZCBhbmQgaG93IHRoaXMgYWxsb2MgZnVuY3Rpb24gdGllcyBpbnRvIHRoZSBvdmVyYWxsIHNjaGVtZS4gVGhpcyBmdW5jdGlvbiBzaG91bGQgYmUgYSBrZXkgcGllY2Ugb2YgdGhlIHB1enpsZS5cblxuXG4iLCJJbnB1dFRva2VucyI6OTE0NiwiT3V0cHV0VG9rZW5zIjoyMiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI5LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA4VDA3OjI3OjAzLjc0NDk4MDA0MVoiLCJTZXEiOjE4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTY4ODczODYyNiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJudm1lX3RjcF9hbGxvY19xdWV1ZVwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL252bWUvaG9zdC90Y3AuYz0xNzI0PXN0YXRpYyBpbnQgbnZtZV90Y3Bfc3RhcnRfdGxzKHN0cnVjdCBudm1lX2N0cmwgKm5jdHJsLFxcbi0tXFxuZHJpdmVycy9udm1lL2hvc3QvdGNwLmMtMTc3Ni1cXG5kcml2ZXJzL252bWUvaG9zdC90Y3AuYzoxNzc3OnN0YXRpYyBpbnQgbnZtZV90Y3BfYWxsb2NfcXVldWUoc3RydWN0IG52bWVfY3RybCAqbmN0cmwsIGludCBxaWQsXFxuZHJpdmVycy9udm1lL2hvc3QvdGNwLmMtMTc3OC1cXHRcXHRcXHRcXHRrZXlfc2VyaWFsX3QgcHNraWQpXFxuLS1cXG5kcml2ZXJzL252bWUvaG9zdC90Y3AuYz0yMDkzPXN0YXRpYyBpbnQgbnZtZV90Y3BfYWxsb2NfYWRtaW5fcXVldWUoc3RydWN0IG52bWVfY3RybCAqY3RybClcXG4tLVxcbmRyaXZlcnMvbnZtZS9ob3N0L3RjcC5jLTIxMTEtXFxuZHJpdmVycy9udm1lL2hvc3QvdGNwLmM6MjExMjpcXHRyZXQgPSBudm1lX3RjcF9hbGxvY19xdWV1ZShjdHJsLCAwLCBwc2tpZCk7XFxuZHJpdmVycy9udm1lL2hvc3QvdGNwLmMtMjExMy1cXHRpZiAocmV0KVxcbi0tXFxuZHJpdmVycy9udm1lL2hvc3QvdGNwLmM9MjEyNz1zdGF0aWMgaW50IF9fbnZtZV90Y3BfYWxsb2NfaW9fcXVldWVzKHN0cnVjdCBudm1lX2N0cmwgKmN0cmwpXFxuLS1cXG5kcml2ZXJzL252bWUvaG9zdC90Y3AuYy0yMTUyLVxcdGZvciAoaSA9IDE7IGkgXFx1MDAzYyBjdHJsLVxcdTAwM2VxdWV1ZV9jb3VudDsgaSsrKSB7XFxuZHJpdmVycy9udm1lL2hvc3QvdGNwLmM6MjE1MzpcXHRcXHRyZXQgPSBudm1lX3RjcF9hbGxvY19xdWV1ZShjdHJsLCBpLFxcbmRyaXZlcnMvbnZtZS9ob3N0L3RjcC5jLTIxNTQtXFx0XFx0XFx0XFx0Y3RybC1cXHUwMDNldGxzX3Bza2lkKTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDhUMDc6Mjc6MDUuNDMzNzI1NTI3WiIsIlNlcSI6MTksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM3Mzc4MTI0ODQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSBzdW1tYXJ5LCBhcyB0aG91Z2ggSSdtIHRoaW5raW5nIHRocm91Z2ggdGhpcyBwcm9jZXNzOlxuXG4qKkRpdmluZyBpbnRvIE5WTWUtVENQIFF1ZXVlIEFsbG9jYXRpb24qKlxuXG5Pa2F5LCBzbyBgbnZtZV90Y3BfYWxsb2NfcXVldWVgIGlzIGEgc3RhdGljIGZ1bmN0aW9uLiBUaGF0J3MgZ29vZCB0byBrbm93OyBpdCBtZWFucyBpdHMgc2NvcGUgaXMgbGltaXRlZCwgd2hpY2ggY2FuIGhlbHAgd2l0aCB1bmRlcnN0YW5kaW5nIGl0cyByb2xlIHdpdGhpbiB0aGUgbGFyZ2VyIHN5c3RlbS4gSSBzZWUgdGhhdCBib3RoIGBudm1lX3RjcF9hbGxvY19hZG1pbl9xdWV1ZWAgYW5kIGBfX252bWVfdGNwX2FsbG9jX2lvX3F1ZXVlc2AgYXJlIGNhbGxpbmcgaXQuIFRoYXQgaW1tZWRpYXRlbHkgdGVsbHMgbWUgdGhpcyBzdGF0aWMgZnVuY3Rpb24gaXMgdGhlIGNvcmUgb2YgdGhlIHF1ZXVlIGFsbG9jYXRpb24gcHJvY2VzcyBmb3IgTlZNZS9UQ1AuIEdpdmVuIHRoYXQsIGxldCdzIHN3aXRjaCBnZWFycyBhbmQgaW52ZXN0aWdhdGUgYG52bWVfdGNwX3NldHVwX2N0cmxgIHRvIHNlZSBob3cgaXQgdGllcyBpbnRvIHRoZSBhbGxvY2F0aW9uIHByb2Nlc3MuIFRoYXQgbGlrZWx5IHNldHMgdGhlIHN0YWdlIGFuZCB0aGVuIGNhbGxzIG9uIHRob3NlIGZ1bmN0aW9ucy5cblxuXG4iLCJJbnB1dFRva2VucyI6OTc4NiwiT3V0cHV0VG9rZW5zIjoyMiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjU5LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA4VDA3OjI3OjA5LjE3MTU0MjExMVoiLCJTZXEiOjIwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTY3MDUwMjE2OCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJudm1lX3RjcF9zZXR1cF9jdHJsXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbnZtZS9ob3N0L3RjcC5jPTIzODY9c3RhdGljIGJvb2wgbnZtZV90Y3Bfa2V5X3Jldm9rZV9uZWVkZWQoc3RydWN0IG52bWVfY3RybCAqY3RybClcXG4tLVxcbmRyaXZlcnMvbnZtZS9ob3N0L3RjcC5jLTIzOTAtXFxuZHJpdmVycy9udm1lL2hvc3QvdGNwLmM6MjM5MTpzdGF0aWMgaW50IG52bWVfdGNwX3NldHVwX2N0cmwoc3RydWN0IG52bWVfY3RybCAqY3RybCwgYm9vbCBuZXcpXFxuZHJpdmVycy9udm1lL2hvc3QvdGNwLmMtMjM5Mi17XFxuLS1cXG5kcml2ZXJzL252bWUvaG9zdC90Y3AuYz0yNDc0PXN0YXRpYyB2b2lkIG52bWVfdGNwX3JlY29ubmVjdF9jdHJsX3dvcmsoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxcbi0tXFxuZHJpdmVycy9udm1lL2hvc3QvdGNwLmMtMjQ4Mi1cXG5kcml2ZXJzL252bWUvaG9zdC90Y3AuYzoyNDgzOlxcdHJldCA9IG52bWVfdGNwX3NldHVwX2N0cmwoY3RybCwgZmFsc2UpO1xcbmRyaXZlcnMvbnZtZS9ob3N0L3RjcC5jLTI0ODQtXFx0aWYgKHJldClcXG4tLVxcbmRyaXZlcnMvbnZtZS9ob3N0L3RjcC5jPTI1NDQ9c3RhdGljIHZvaWQgbnZtZV9yZXNldF9jdHJsX3dvcmsoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxcbi0tXFxuZHJpdmVycy9udm1lL2hvc3QvdGNwLmMtMjU2My1cXG5kcml2ZXJzL252bWUvaG9zdC90Y3AuYzoyNTY0OlxcdHJldCA9IG52bWVfdGNwX3NldHVwX2N0cmwoY3RybCwgZmFsc2UpO1xcbmRyaXZlcnMvbnZtZS9ob3N0L3RjcC5jLTI1NjUtXFx0aWYgKHJldClcXG4tLVxcbmRyaXZlcnMvbnZtZS9ob3N0L3RjcC5jPTI5OTk9c3RhdGljIHN0cnVjdCBudm1lX2N0cmwgKm52bWVfdGNwX2NyZWF0ZV9jdHJsKHN0cnVjdCBkZXZpY2UgKmRldixcXG4tLVxcbmRyaXZlcnMvbnZtZS9ob3N0L3RjcC5jLTMwMTgtXFxuZHJpdmVycy9udm1lL2hvc3QvdGNwLmM6MzAxOTpcXHRyZXQgPSBudm1lX3RjcF9zZXR1cF9jdHJsKFxcdTAwMjZjdHJsLVxcdTAwM2VjdHJsLCB0cnVlKTtcXG5kcml2ZXJzL252bWUvaG9zdC90Y3AuYy0zMDIwLVxcdGlmIChyZXQpXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA4VDA3OjI3OjEwLjg0MjA0OTk3OVoiLCJTZXEiOjIxLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1MDgxOTc5NjU4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgYSBzdW1tYXJ5IG9mIG15IHRob3VnaHQgcHJvY2VzcywgYXMgcmVxdWVzdGVkOlxuXG4qKkRpdmluZyBpbnRvIHRoZSBOVk1lL1RDUCBDb250cm9sbGVyIENyZWF0aW9uKipcblxuT2theSwgc28gSSdtIGhvbWluZyBpbiBvbiB0aGUgY29udHJvbGxlciBjcmVhdGlvbiBwcm9jZXNzLiBNeSBpbW1lZGlhdGUgZm9jdXMgaXMgb24gYG52bWVfdGNwX2NyZWF0ZV9jdHJsYC4gVGhhdCdzIGNsZWFybHkgdGhlIGVudHJ5IHBvaW50LCB0aGUgY3JpdGljYWwgZnVuY3Rpb24gdGhhdCBraWNrcyBldmVyeXRoaW5nIG9mZi4gTm93LCB3aGVyZSBkb2VzIGl0IGdvIGZyb20gdGhlcmU/IE15IG5leHQgc3RlcCBpcyB0byBleGFtaW5lIGBudm1ldF90Y3Bfc2V0X3F1ZXVlX3NvY2tgLiBJdCdzIGxpa2VseSBpbnZvbHZlZCBpbiBzZXR0aW5nIHVwIHRoZSBzb2NrZXQgZm9yIHRoZSBxdWV1ZS4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaG93IHRoZSBzb2NrZXQgaXMgY29uZmlndXJlZCB3aXRoaW4gdGhlIFRDUCB0cmFuc3BvcnQgY29udGV4dC4gVGhpcyBpcyB0aGUgY3J1Y2lhbCBsaW5rIEkgYW0gbG9va2luZyBmb3IuIEkgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyB0aGUgY29udHJvbCBwYXRoIGFuZCBkYXRhIHBhdGggYXJlIG1hbmFnZWQuIEZyb20gdGhlcmUgSSBjYW4gZGV0ZXJtaW5lIGlmIGFueSBpbXByb3ZlbWVudCBpcyBuZWVkZWQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjEwNTA1LCJPdXRwdXRUb2tlbnMiOjI0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzYsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDhUMDc6Mjc6MTUuOTI0MDMyNjc3WiIsIlNlcSI6MjIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNzEzMDc1NDc0LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm52bWV0X3RjcF9zZXRfcXVldWVfc29ja1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL252bWUvdGFyZ2V0L3RjcC5jPTE2NzE9c3RhdGljIHZvaWQgbnZtZXRfdGNwX3N0YXRlX2NoYW5nZShzdHJ1Y3Qgc29jayAqc2spXFxuLS1cXG5kcml2ZXJzL252bWUvdGFyZ2V0L3RjcC5jLTE2OTgtXFxuZHJpdmVycy9udm1lL3RhcmdldC90Y3AuYzoxNjk5OnN0YXRpYyBpbnQgbnZtZXRfdGNwX3NldF9xdWV1ZV9zb2NrKHN0cnVjdCBudm1ldF90Y3BfcXVldWUgKnF1ZXVlKVxcbmRyaXZlcnMvbnZtZS90YXJnZXQvdGNwLmMtMTcwMC17XFxuLS1cXG5kcml2ZXJzL252bWUvdGFyZ2V0L3RjcC5jPTE4MzI9c3RhdGljIHZvaWQgbnZtZXRfdGNwX3Rsc19oYW5kc2hha2VfZG9uZSh2b2lkICpkYXRhLCBpbnQgc3RhdHVzLFxcbi0tXFxuZHJpdmVycy9udm1lL3RhcmdldC90Y3AuYy0xODU2LVxcdGlmICghc3RhdHVzKVxcbmRyaXZlcnMvbnZtZS90YXJnZXQvdGNwLmM6MTg1NzpcXHRcXHRzdGF0dXMgPSBudm1ldF90Y3Bfc2V0X3F1ZXVlX3NvY2socXVldWUpO1xcbmRyaXZlcnMvbnZtZS90YXJnZXQvdGNwLmMtMTg1OC1cXG4tLVxcbmRyaXZlcnMvbnZtZS90YXJnZXQvdGNwLmM9MTkxOT1zdGF0aWMgdm9pZCBudm1ldF90Y3BfYWxsb2NfcXVldWUoc3RydWN0IG52bWV0X3RjcF9wb3J0ICpwb3J0LFxcbi0tXFxuZHJpdmVycy9udm1lL3RhcmdldC90Y3AuYy0xOTk2LVxcbmRyaXZlcnMvbnZtZS90YXJnZXQvdGNwLmM6MTk5NzpcXHRyZXQgPSBudm1ldF90Y3Bfc2V0X3F1ZXVlX3NvY2socXVldWUpO1xcbmRyaXZlcnMvbnZtZS90YXJnZXQvdGNwLmMtMTk5OC1cXHRpZiAocmV0KVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wOFQwNzoyNzoxNy42MzcxMTQyOTFaIiwiU2VxIjoyMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzI1MzkxMjA5NiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IGludGVycHJldGF0aW9uIG9mIHRoYXQgY29kZSBzbmlwcGV0LCBkZWxpdmVyZWQgYXMgaWYgaXQncyBteSBvd24gdGhvdWdodCBwcm9jZXNzOlxuXG4qKkRlY29kaW5nIHRoZSBOVk1lLW9GIFRDUCBRdWV1ZSBBbGxvY2F0aW9uKipcblxuQWxyaWdodCwgbGV0J3MgYnJlYWsgdGhpcyBkb3duLiBGcm9tIHdoYXQgSSdtIHNlZWluZyBoZXJlLCBgbnZtZXRfdGNwX2FsbG9jX3F1ZXVlYCBpcyBjcnVjaWFsLiBJdCdzIGNsZWFybHkgdGhlIGZ1bmN0aW9uIHJlc3BvbnNpYmxlIGZvciBjcmVhdGluZyBhIG5ldyBxdWV1ZSB3aXRoaW4gdGhlIE5WTWUgb3ZlciBUQ1AgZnJhbWV3b3JrLiBUaGUga2V5IGNvbnRleHQgaXMgdGhhdCBgbnZtZXRfdGNwX2FjY2VwdF93b3JrYCBpcyB0aGUgY2FsbGVyLiBUaGlzIG1lYW5zIHRoZSBxdWV1ZSBhbGxvY2F0aW9uIHByb2Nlc3MgaXMgKnRyaWdnZXJlZCogZHVyaW5nIHRoZSBUQ1AgY29ubmVjdGlvbiBhY2NlcHRhbmNlIHBoYXNlLiBXaGVuZXZlciBhIG5ldyBUQ1AgY29ubmVjdGlvbiBpcyBlc3RhYmxpc2hlZCBhbmQgYWNjZXB0ZWQgYnkgdGhlIE5WTWUtb0YgdGFyZ2V0LCB0aGlzIGFsbG9jYXRpb24gcm91dGluZSBnZXRzIGNhbGxlZC4gSXQncyBzYWZlIHRvIGFzc3VtZSwgdGhlbiwgdGhhdCBgbnZtZXRfdGNwX2FsbG9jX3F1ZXVlYCBpcyB0YXNrZWQgd2l0aCBzZXR0aW5nIHVwIGFsbCB0aGUgbmVjZXNzYXJ5IGRhdGEgc3RydWN0dXJlcyBhbmQgcmVzb3VyY2VzIGZvciBoYW5kbGluZyBJL08gb3ZlciB0aGF0IG5ld2x5IGVzdGFibGlzaGVkIFRDUCBzZXNzaW9uLiBUaGlzIGlzIHN0YW5kYXJkIHN0dWZmLCBzbyBpdCBwcm9iYWJseSB0YWtlcyB0aGUgY29ubmVjdGlvbiBpbmZvcm1hdGlvbiBpdCBoYXMganVzdCByZWNlaXZlZCBhbmQgdXNlcyBpdCB0byBwcm92aXNpb24gdGhlIHJpZ2h0IGFtb3VudCBvZiBtZW1vcnkvZXRjLiBmb3IgdGhhdCBjb25uZWN0aW9uLiBOb3RoaW5nIHN1cnByaXNpbmcgaGVyZS4gUHJldHR5IHN0YW5kYXJkLCBhbmQgaXQgbWFrZXMgc2Vuc2UgdGhhdCB5b3Ugd291bGQgaGFuZGxlIHRoZSBhbGxvY2F0aW9uIG9mIGEgcXVldWUgYWZ0ZXIgdGhlIGFjY2VwdCBjYWxsIGhhcyBiZWVuIGNvbXBsZXRlZC5cblxuXG4iLCJJbnB1dFRva2VucyI6MTEwNzksIk91dHB1dFRva2VucyI6MjIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wOFQwNzoyNzoyMC44OTEwMjk4ODZaIiwiU2VxIjoyNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE5MjYxMDYyNTEsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibnZtZXRfdGNwX2FsbG9jX3F1ZXVlXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbnZtZS90YXJnZXQvdGNwLmM9MTkxNj1zdGF0aWMgdm9pZCBudm1ldF90Y3BfdGxzX2hhbmRzaGFrZV90aW1lb3V0KHN0cnVjdCB3b3JrX3N0cnVjdCAqdykge31cXG4tLVxcbmRyaXZlcnMvbnZtZS90YXJnZXQvdGNwLmMtMTkxOC1cXG5kcml2ZXJzL252bWUvdGFyZ2V0L3RjcC5jOjE5MTk6c3RhdGljIHZvaWQgbnZtZXRfdGNwX2FsbG9jX3F1ZXVlKHN0cnVjdCBudm1ldF90Y3BfcG9ydCAqcG9ydCxcXG5kcml2ZXJzL252bWUvdGFyZ2V0L3RjcC5jLTE5MjAtXFx0XFx0c3RydWN0IHNvY2tldCAqbmV3c29jaylcXG4tLVxcbmRyaXZlcnMvbnZtZS90YXJnZXQvdGNwLmM9MjAyOD1zdGF0aWMgdm9pZCBudm1ldF90Y3BfYWNjZXB0X3dvcmsoc3RydWN0IHdvcmtfc3RydWN0ICp3KVxcbi0tXFxuZHJpdmVycy9udm1lL3RhcmdldC90Y3AuYy0yMDQxLVxcdFxcdH1cXG5kcml2ZXJzL252bWUvdGFyZ2V0L3RjcC5jOjIwNDI6XFx0XFx0bnZtZXRfdGNwX2FsbG9jX3F1ZXVlKHBvcnQsIG5ld3NvY2spO1xcbmRyaXZlcnMvbnZtZS90YXJnZXQvdGNwLmMtMjA0My1cXHR9XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA4VDA3OjI3OjIyLjgxNzE0MjY4N1oiLCJTZXEiOjI1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMTU4NjA1MzAzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2UsIHByZXNlbnRlZCBpbiB0aGUgZmlyc3QgcGVyc29uOlxuXG4qKkZvY3VzaW5nIG9uIE5WTWUtb0YgVENQIENvbm5lY3Rpb24gRXN0YWJsaXNobWVudCoqXG5cblJpZ2h0LCBsZXQncyB6ZXJvIGluLiBgbnZtZXRfdGNwX2FjY2VwdF93b3JrYCBmZWVscyBsaWtlIGEgZ29vZCwgZm9jdXNlZCBzeW1ib2wgdG8gc3RhcnQgd2l0aC4gSXQncyBsaWtlbHkgd2hlcmUgdGhlIGNvbm5lY3Rpb24gYWNjZXB0YW5jZSBsb2dpYyBmb3IgTlZNZSBvdmVyIFRDUCBpcyBoYW5kbGVkLCB3aGljaCBpcyB3aGVyZSBJIHdhbnQgdG8gc3RhcnQgbXkgYW5hbHlzaXMuXG5cbk5vdywgY29uc2lkZXJpbmcgY29ubmVjdGlvbiBlc3RhYmxpc2htZW50IGFuZCBwb3RlbnRpYWwgUW9TIG9yIHRyYWZmaWMgc2hhcGluZyBjb25zaWRlcmF0aW9ucywgSSBuZWVkIHRvIGNoZWNrIGhvdyB0cmFmZmljIGNsYXNzIGlzIGJlaW5nIHNldC4gVGhhdCBtZWFucyBJIHNob3VsZCBhbHNvIGNoZWNrIHRoZSBmdW5jdGlvbnM6IGBfX2lwNl9zb2NrX3NldF90Y2xhc3NgIGFuZCBgaXA2X3NvY2tfc2V0X3RjbGFzc2AuIFRoZXNlIGFyZSByZWxldmFudCBmdW5jdGlvbnMgdGhhdCBsaWtlbHkgY29uZmlndXJlIHRoZSBJUHY2IHRyYWZmaWMgY2xhc3MgZmllbGQsIHdoaWNoIGlzIGNydWNpYWwgZm9yIG1hbmFnaW5nIHRoZSBiZWhhdmlvciBvZiBOVk1lLW9GIHRyYWZmaWMuIEkgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyB0aGVzZSB0cmFmZmljIGNsYXNzIHNldHRpbmdzIGFyZSBiZWluZyB1c2VkIHdpdGhpbiB0aGlzIGNvbnRleHQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjExNjE4LCJPdXRwdXRUb2tlbnMiOjI0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDYsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDhUMDc6Mjc6MjUuOTc1NzUwMTJaIiwiU2VxIjoyNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE3NDk4ODQ0ODAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiX19pcDZfc29ja19zZXRfdGNsYXNzXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImluY2x1ZGUvbmV0L2lwdjYuaD0xMjUwPXN0YXRpYyBpbmxpbmUgdm9pZCBpcDZfc29ja19zZXRfcmVjdmVycihzdHJ1Y3Qgc29jayAqc2spXFxuLS1cXG5pbmNsdWRlL25ldC9pcHY2LmgtMTI1NC1cXG5pbmNsdWRlL25ldC9pcHY2Lmg6MTI1NTp2b2lkIF9faXA2X3NvY2tfc2V0X3RjbGFzcyhzdHJ1Y3Qgc29jayAqc2ssIGludCB2YWwpO1xcbmluY2x1ZGUvbmV0L2lwdjYuaC0xMjU2LXZvaWQgaXA2X3NvY2tfc2V0X3RjbGFzcyhzdHJ1Y3Qgc29jayAqc2ssIGludCB2YWwpO1xcbi0tXFxubmV0L2lwdjYvaXB2Nl9zb2NrZ2x1ZS5jPTMwMj1zdGF0aWMgaW50IGlwdjZfc2V0X29wdF9oZHIoc3RydWN0IHNvY2sgKnNrLCBpbnQgb3B0bmFtZSwgc29ja3B0cl90IG9wdHZhbCxcXG4tLVxcbm5ldC9pcHY2L2lwdjZfc29ja2dsdWUuYy0zNzUtXFxubmV0L2lwdjYvaXB2Nl9zb2NrZ2x1ZS5jOjM3Njp2b2lkIF9faXA2X3NvY2tfc2V0X3RjbGFzcyhzdHJ1Y3Qgc29jayAqc2ssIGludCB2YWwpXFxubmV0L2lwdjYvaXB2Nl9zb2NrZ2x1ZS5jLTM3Ny17XFxuLS1cXG5uZXQvaXB2Ni9pcHY2X3NvY2tnbHVlLmM9MzkwPXZvaWQgaXA2X3NvY2tfc2V0X3RjbGFzcyhzdHJ1Y3Qgc29jayAqc2ssIGludCB2YWwpXFxuLS1cXG5uZXQvaXB2Ni9pcHY2X3NvY2tnbHVlLmMtMzkyLVxcdHNvY2tvcHRfbG9ja19zb2NrKHNrKTtcXG5uZXQvaXB2Ni9pcHY2X3NvY2tnbHVlLmM6MzkzOlxcdF9faXA2X3NvY2tfc2V0X3RjbGFzcyhzaywgdmFsKTtcXG5uZXQvaXB2Ni9pcHY2X3NvY2tnbHVlLmMtMzk0LVxcdHNvY2tvcHRfcmVsZWFzZV9zb2NrKHNrKTtcXG4tLVxcbm5ldC9pcHY2L2lwdjZfc29ja2dsdWUuYz0zOTg9aW50IGRvX2lwdjZfc2V0c29ja29wdChzdHJ1Y3Qgc29jayAqc2ssIGludCBsZXZlbCwgaW50IG9wdG5hbWUsXFxuLS1cXG5uZXQvaXB2Ni9pcHY2X3NvY2tnbHVlLmMtNzM3LVxcdFxcdFxcdHZhbCA9IDA7XFxubmV0L2lwdjYvaXB2Nl9zb2NrZ2x1ZS5jOjczODpcXHRcXHRfX2lwNl9zb2NrX3NldF90Y2xhc3Moc2ssIHZhbCk7XFxubmV0L2lwdjYvaXB2Nl9zb2NrZ2x1ZS5jLTczOS1cXHRcXHRyZXR2ID0gMDtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDhUMDc6Mjc6MjcuNzI1NjM5OTlaIiwiU2VxIjoyNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDAwMzg3MjY0OCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IGludGVycHJldGF0aW9uIG9mIHRoYXQ6XG5cbioqTXkgUGVyc3BlY3RpdmUgb24gYGlwNl9zb2NrX3NldF90Y2xhc3NgKipcblxuQWxyaWdodCwgc28gYGlwNl9zb2NrX3NldF90Y2xhc3NgIGlzIGV4cGxpY2l0bHkgKmV4cG9ydGVkKi4gVGhhdCdzIHRoZSBrZXkgdGFrZWF3YXkgaGVyZS4gSXQgbWVhbnMgdGhpcyBmdW5jdGlvbiBpcyBpbnRlbnRpb25hbGx5IG1hZGUgYXZhaWxhYmxlIGZvciB1c2Ugb3V0c2lkZSBvZiB0aGUgbW9kdWxlIG9yIGNvbXBvbmVudCBpbiB3aGljaCBpdCdzIGRlZmluZWQuIE15IGltbWVkaWF0ZSB0aG91Z2h0IGlzLCB3aGF0IGFyZSB0aGUgaW1wbGljYXRpb25zIG9mIHRoaXM/IEl0IHN1Z2dlc3RzIGEgZGVsaWJlcmF0ZSBkZXNpZ24gZGVjaXNpb24sIGltcGx5aW5nIGl0J3MgbWVhbnQgdG8gYmUgYSBwYXJ0IG9mIGEgd2VsbC1kZWZpbmVkIEFQSSBvciBpbnRlbmRlZCBmb3IgYnJvYWRlciBjb25zdW1wdGlvbiwgcG90ZW50aWFsbHkgYnkgb3RoZXIgbmV0d29ya2luZyBzdWJzeXN0ZW1zIG9yIGV2ZW4gdXNlci1zcGFjZSBhcHBsaWNhdGlvbnMgd2l0aCB0aGUgcmlnaHQgcHJpdmlsZWdlcy5cblxuS25vd2luZyBpdCdzIGV4cG9ydGVkLCBJJ2Qgd2FudCB0byB1bmRlcnN0YW5kIHRoZSAqd2h5KiBiZWhpbmQgdGhpcyBkZWNpc2lvbi4gV2hhdCBwcm9ibGVtcyBkb2VzIHRoaXMgZnVuY3Rpb24gc29sdmU/IFdoYXQgdXNlLWNhc2VzIGlzIGl0IGRlc2lnbmVkIHRvIHN1cHBvcnQ/IElzIGl0IGEgY3J1Y2lhbCBidWlsZGluZyBibG9jayBmb3IgUW9TIG1hbmFnZW1lbnQsIHRyYWZmaWMgc2hhcGluZywgb3IgbWF5YmUgc29tZXRoaW5nIG1vcmUgc3BlY2lhbGl6ZWQgbGlrZSBEaWZmZXJlbnRpYXRlZCBTZXJ2aWNlcyAoRGlmZlNlcnYpIGltcGxlbWVudGF0aW9ucyBpbiBhbiBJUHY2IGNvbnRleHQ/IEFuZCBvZiBjb3Vyc2UsIHRoZSBldmVyLXByZXNlbnQgc2VjdXJpdHkgY29uc2lkZXJhdGlvbnM6IHdoYXQgYXJlIHRoZSBhY2Nlc3MgY29udHJvbHMgYXJvdW5kIGl0cyB1c2U/IElzIGl0IHN1c2NlcHRpYmxlIHRvIG1pc3VzZSBvciBhYnVzZSwgYW5kIHdoYXQgZ3VhcmRyYWlscyBoYXZlIGJlZW4gcHV0IGluIHBsYWNlIHRvIHByZXZlbnQgdGhhdD8gSSdkIHdhbnQgdG8gZGl2ZSBkZWVwZXIgaW50byBpdHMgaW1wbGVtZW50YXRpb24gYW5kIGFueSBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gdG8gZnVsbHkgZ3Jhc3AgaXRzIGludGVuZGVkIHB1cnBvc2UgYW5kIHBvdGVudGlhbCBpbXBhY3Qgb24gc3lzdGVtIGJlaGF2aW9yLiBJdCdzIGV4cG9ydGVkLCBzbyBpdCdzIGZhaXIgZ2FtZSBmb3IgYW5hbHlzaXMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjEyMzk5LCJPdXRwdXRUb2tlbnMiOjIzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTQsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDhUMDc6Mjc6MzEuNzI5NTE1OTU4WiIsIlNlcSI6MjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNzg1NjQ4Njc2LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImlwNl9zb2NrX3NldF90Y2xhc3NcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9udm1lL2hvc3QvdGNwLmM9MTc3Nz1zdGF0aWMgaW50IG52bWVfdGNwX2FsbG9jX3F1ZXVlKHN0cnVjdCBudm1lX2N0cmwgKm5jdHJsLCBpbnQgcWlkLFxcbi0tXFxuZHJpdmVycy9udm1lL2hvc3QvdGNwLmMtMTg0Mi1cXHQgICAgcXVldWUtXFx1MDAzZXNvY2stXFx1MDAzZXNrLVxcdTAwM2Vza19mYW1pbHkgPT0gQUZfSU5FVDYpXFxuZHJpdmVycy9udm1lL2hvc3QvdGNwLmM6MTg0MzpcXHRcXHRpcDZfc29ja19zZXRfdGNsYXNzKHF1ZXVlLVxcdTAwM2Vzb2NrLVxcdTAwM2VzaywgbmN0cmwtXFx1MDAzZW9wdHMtXFx1MDAzZXRjbGFzcyk7XFxuZHJpdmVycy9udm1lL2hvc3QvdGNwLmMtMTg0NC0jZW5kaWZcXG4tLVxcbmRyaXZlcnMvbnZtZS90YXJnZXQvdGNwLmM9MTY5OT1zdGF0aWMgaW50IG52bWV0X3RjcF9zZXRfcXVldWVfc29jayhzdHJ1Y3QgbnZtZXRfdGNwX3F1ZXVlICpxdWV1ZSlcXG4tLVxcbmRyaXZlcnMvbnZtZS90YXJnZXQvdGNwLmMtMTczMi1cXHRcXHRpZiAocmN2X3RjbGFzcyBcXHUwMDNlIDApXFxuZHJpdmVycy9udm1lL3RhcmdldC90Y3AuYzoxNzMzOlxcdFxcdFxcdGlwNl9zb2NrX3NldF90Y2xhc3Moc29jay1cXHUwMDNlc2ssIHJjdl90Y2xhc3MpO1xcbmRyaXZlcnMvbnZtZS90YXJnZXQvdGNwLmMtMTczNC1cXHR9XFxuLS1cXG5pbmNsdWRlL25ldC9pcHY2Lmg9MTI1MD1zdGF0aWMgaW5saW5lIHZvaWQgaXA2X3NvY2tfc2V0X3JlY3ZlcnIoc3RydWN0IHNvY2sgKnNrKVxcbi0tXFxuaW5jbHVkZS9uZXQvaXB2Ni5oLTEyNTQtXFxuaW5jbHVkZS9uZXQvaXB2Ni5oOjEyNTU6dm9pZCBfX2lwNl9zb2NrX3NldF90Y2xhc3Moc3RydWN0IHNvY2sgKnNrLCBpbnQgdmFsKTtcXG5pbmNsdWRlL25ldC9pcHY2Lmg6MTI1Njp2b2lkIGlwNl9zb2NrX3NldF90Y2xhc3Moc3RydWN0IHNvY2sgKnNrLCBpbnQgdmFsKTtcXG5pbmNsdWRlL25ldC9pcHY2LmgtMTI1Ny1cXG4tLVxcbm5ldC9pcHY2L2lwdjZfc29ja2dsdWUuYz0zMDI9c3RhdGljIGludCBpcHY2X3NldF9vcHRfaGRyKHN0cnVjdCBzb2NrICpzaywgaW50IG9wdG5hbWUsIHNvY2twdHJfdCBvcHR2YWwsXFxuLS1cXG5uZXQvaXB2Ni9pcHY2X3NvY2tnbHVlLmMtMzc1LVxcbm5ldC9pcHY2L2lwdjZfc29ja2dsdWUuYzozNzY6dm9pZCBfX2lwNl9zb2NrX3NldF90Y2xhc3Moc3RydWN0IHNvY2sgKnNrLCBpbnQgdmFsKVxcbm5ldC9pcHY2L2lwdjZfc29ja2dsdWUuYy0zNzcte1xcbi0tXFxubmV0L2lwdjYvaXB2Nl9zb2NrZ2x1ZS5jLTM4OS1cXG5uZXQvaXB2Ni9pcHY2X3NvY2tnbHVlLmM6MzkwOnZvaWQgaXA2X3NvY2tfc2V0X3RjbGFzcyhzdHJ1Y3Qgc29jayAqc2ssIGludCB2YWwpXFxubmV0L2lwdjYvaXB2Nl9zb2NrZ2x1ZS5jLTM5MS17XFxubmV0L2lwdjYvaXB2Nl9zb2NrZ2x1ZS5jLTM5Mi1cXHRzb2Nrb3B0X2xvY2tfc29jayhzayk7XFxubmV0L2lwdjYvaXB2Nl9zb2NrZ2x1ZS5jOjM5MzpcXHRfX2lwNl9zb2NrX3NldF90Y2xhc3Moc2ssIHZhbCk7XFxubmV0L2lwdjYvaXB2Nl9zb2NrZ2x1ZS5jLTM5NC1cXHRzb2Nrb3B0X3JlbGVhc2Vfc29jayhzayk7XFxubmV0L2lwdjYvaXB2Nl9zb2NrZ2x1ZS5jLTM5NS19XFxubmV0L2lwdjYvaXB2Nl9zb2NrZ2x1ZS5jOjM5NjpFWFBPUlRfU1lNQk9MKGlwNl9zb2NrX3NldF90Y2xhc3MpO1xcbm5ldC9pcHY2L2lwdjZfc29ja2dsdWUuYy0zOTctXFxubmV0L2lwdjYvaXB2Nl9zb2NrZ2x1ZS5jPTM5OD1pbnQgZG9faXB2Nl9zZXRzb2Nrb3B0KHN0cnVjdCBzb2NrICpzaywgaW50IGxldmVsLCBpbnQgb3B0bmFtZSxcXG4tLVxcbm5ldC9pcHY2L2lwdjZfc29ja2dsdWUuYy03MzctXFx0XFx0XFx0dmFsID0gMDtcXG5uZXQvaXB2Ni9pcHY2X3NvY2tnbHVlLmM6NzM4OlxcdFxcdF9faXA2X3NvY2tfc2V0X3RjbGFzcyhzaywgdmFsKTtcXG5uZXQvaXB2Ni9pcHY2X3NvY2tnbHVlLmMtNzM5LVxcdFxcdHJldHYgPSAwO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wOFQwNzoyNzozMy41MTUxNzI2NDRaIiwiU2VxIjoyOSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6Mzg1ODYzMzYyNCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipJbml0aWFsIEFzc2Vzc21lbnQgb2YgS2V5IEVudHJ5IFBvaW50cyoqXG5cbk9rYXksIGxldCdzIGJyZWFrIHRoaXMgZG93bi4gSSBzZWUgd2UncmUgbG9va2luZyBhdCBzcGVjaWZpYyBmdW5jdGlvbnMsIHByZXN1bWFibHkgd2l0aGluIGEgbmV0d29ya2luZyBvciBzdG9yYWdlIGNvbnRleHQsIGdpdmVuIHRoZSBuYW1lcy4gRmlyc3QsIEkgaGF2ZSBhIGxpc3Qgb2YgYEZvY3VzU3ltYm9sc2A6IGBudm1mX2Rldl93cml0ZWAsIGBudm1lX3RjcF9jcmVhdGVfY3RybGAsIGBudm1ldF90Y3BfYWNjZXB0X3dvcmtgLCBgX19pcDZfc29ja19zZXRfdGNsYXNzYCwgYW5kIGBpcDZfc29ja19zZXRfdGNsYXNzYC4gTm93LCByaWdodCBvZmYgdGhlIGJhdCwgYG52bWZfZGV2X3dyaXRlYCBzZWVtcyBpbnRlcmVzdGluZzsgaXQgbGlrZWx5IGludm9sdmVzIE5WTWUgb3ZlciBGYWJyaWNzLCBzbyB0aGF0J3MgYSBnb29kIHBsYWNlIHRvIHN0YXJ0IGRpZ2dpbmcuIGBudm1lX3RjcF9jcmVhdGVfY3RybGAgaXMgYW5vdGhlciBzb2xpZCBjYW5kaWRhdGUgLSBjcmVhdGluZyBhIGNvbnRyb2wgY29ubmVjdGlvbiBpcyBvZnRlbiBjcml0aWNhbC4gQW5kLCBgbnZtZXRfdGNwX2FjY2VwdF93b3JrYCBhbHNvIG1ha2VzIHNlbnNlLCBpdCdzIGRlYWxpbmcgd2l0aCBhY2NlcHRpbmcgd29yayByZWxhdGluZyB0byB0aGUgdGFyZ2V0LiBUaGVuLCB0aGVyZSdzIGBfX2lwNl9zb2NrX3NldF90Y2xhc3NgIHdoaWNoIGlzIGxpbmtlZCB0byBgZG9faXB2Nl9zZXRzb2Nrb3B0YCwgd2hpY2ggSSBzdXBwb3NlIGlzIGEgZ29vZCBlbnRyeSBwb2ludC4gSW4gZmFjdCwgbGV0J3MgZXhwbG9yZSBgZG9faXB2Nl9zZXRzb2Nrb3B0YCBmdXJ0aGVyIGFuZCBzZWUgd2hhdCB3ZSBjYW4gZmluZC5cblxuXG4iLCJJbnB1dFRva2VucyI6MTM2MjEsIk91dHB1dFRva2VucyI6MjIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNjQsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDhUMDc6Mjc6MzcuMzczODA4NzE4WiIsIlNlcSI6MzAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxOTM4OTE4NTkwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImRvX2lwdjZfc2V0c29ja29wdFwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJpbmNsdWRlL25ldC9pcHY2Lmg9MTEzOD1ERUNMQVJFX1NUQVRJQ19LRVlfRkFMU0UoaXA2X21pbl9ob3Bjb3VudCk7XFxuaW5jbHVkZS9uZXQvaXB2Ni5oLTExMzktXFxuaW5jbHVkZS9uZXQvaXB2Ni5oOjExNDA6aW50IGRvX2lwdjZfc2V0c29ja29wdChzdHJ1Y3Qgc29jayAqc2ssIGludCBsZXZlbCwgaW50IG9wdG5hbWUsIHNvY2twdHJfdCBvcHR2YWwsXFxuaW5jbHVkZS9uZXQvaXB2Ni5oLTExNDEtXFx0XFx0ICAgICAgIHVuc2lnbmVkIGludCBvcHRsZW4pO1xcbi0tXFxubmV0L2NvcmUvZmlsdGVyLmM9NTY1OT1zdGF0aWMgaW50IHNvbF9pcHY2X3NvY2tvcHQoc3RydWN0IHNvY2sgKnNrLCBpbnQgb3B0bmFtZSxcXG4tLVxcbm5ldC9jb3JlL2ZpbHRlci5jLTU2ODAtXFxubmV0L2NvcmUvZmlsdGVyLmM6NTY4MTpcXHRyZXR1cm4gZG9faXB2Nl9zZXRzb2Nrb3B0KHNrLCBTT0xfSVBWNiwgb3B0bmFtZSxcXG5uZXQvY29yZS9maWx0ZXIuYy01NjgyLVxcdFxcdFxcdFxcdCAgS0VSTkVMX1NPQ0tQVFIob3B0dmFsKSwgKm9wdGxlbik7XFxuLS1cXG5uZXQvaXB2NC90Y3AuYz00MTcyPWludCB0Y3Bfc2V0c29ja29wdChzdHJ1Y3Qgc29jayAqc2ssIGludCBsZXZlbCwgaW50IG9wdG5hbWUsIHNvY2twdHJfdCBvcHR2YWwsXFxuLS1cXG5uZXQvaXB2NC90Y3AuYy00MTc3LVxcdGlmIChsZXZlbCAhPSBTT0xfVENQKVxcbm5ldC9pcHY0L3RjcC5jOjQxNzg6XFx0XFx0LyogUGFpcmVkIHdpdGggV1JJVEVfT05DRSgpIGluIGRvX2lwdjZfc2V0c29ja29wdCgpIGFuZCB0Y3BfdjZfY29ubmVjdCgpICovXFxubmV0L2lwdjQvdGNwLmMtNDE3OS1cXHRcXHRyZXR1cm4gUkVBRF9PTkNFKGljc2stXFx1MDAzZWljc2tfYWZfb3BzKS1cXHUwMDNlc2V0c29ja29wdChzaywgbGV2ZWwsIG9wdG5hbWUsXFxuLS1cXG5uZXQvaXB2NC90Y3AuYz00ODU3PWludCB0Y3BfZ2V0c29ja29wdChzdHJ1Y3Qgc29jayAqc2ssIGludCBsZXZlbCwgaW50IG9wdG5hbWUsIGNoYXIgX191c2VyICpvcHR2YWwsXFxuLS1cXG5uZXQvaXB2NC90Y3AuYy00ODYyLVxcdGlmIChsZXZlbCAhPSBTT0xfVENQKVxcbm5ldC9pcHY0L3RjcC5jOjQ4NjM6XFx0XFx0LyogUGFpcmVkIHdpdGggV1JJVEVfT05DRSgpIGluIGRvX2lwdjZfc2V0c29ja29wdCgpIGFuZCB0Y3BfdjZfY29ubmVjdCgpICovXFxubmV0L2lwdjQvdGNwLmMtNDg2NC1cXHRcXHRyZXR1cm4gUkVBRF9PTkNFKGljc2stXFx1MDAzZWljc2tfYWZfb3BzKS1cXHUwMDNlZ2V0c29ja29wdChzaywgbGV2ZWwsIG9wdG5hbWUsXFxuLS1cXG5uZXQvaXB2Ni9pcHY2X3NvY2tnbHVlLmM9Mzk2PUVYUE9SVF9TWU1CT0woaXA2X3NvY2tfc2V0X3RjbGFzcyk7XFxubmV0L2lwdjYvaXB2Nl9zb2NrZ2x1ZS5jLTM5Ny1cXG5uZXQvaXB2Ni9pcHY2X3NvY2tnbHVlLmM6Mzk4OmludCBkb19pcHY2X3NldHNvY2tvcHQoc3RydWN0IHNvY2sgKnNrLCBpbnQgbGV2ZWwsIGludCBvcHRuYW1lLFxcbm5ldC9pcHY2L2lwdjZfc29ja2dsdWUuYy0zOTktXFx0XFx0ICAgICAgIHNvY2twdHJfdCBvcHR2YWwsIHVuc2lnbmVkIGludCBvcHRsZW4pXFxuLS1cXG5uZXQvaXB2Ni9pcHY2X3NvY2tnbHVlLmM9OTY5PWludCBpcHY2X3NldHNvY2tvcHQoc3RydWN0IHNvY2sgKnNrLCBpbnQgbGV2ZWwsIGludCBvcHRuYW1lLCBzb2NrcHRyX3Qgb3B0dmFsLFxcbi0tXFxubmV0L2lwdjYvaXB2Nl9zb2NrZ2x1ZS5jLTk3OS1cXG5uZXQvaXB2Ni9pcHY2X3NvY2tnbHVlLmM6OTgwOlxcdGVyciA9IGRvX2lwdjZfc2V0c29ja29wdChzaywgbGV2ZWwsIG9wdG5hbWUsIG9wdHZhbCwgb3B0bGVuKTtcXG5uZXQvaXB2Ni9pcHY2X3NvY2tnbHVlLmMtOTgxLSNpZmRlZiBDT05GSUdfTkVURklMVEVSXFxuLS1cXG5uZXQvaXB2Ni90Y3BfaXB2Ni5jPTQwMz1zdGF0aWMgaW50IHRjcF92Nl9lcnIoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IGluZXQ2X3NrYl9wYXJtICpvcHQsXFxuLS1cXG5uZXQvaXB2Ni90Y3BfaXB2Ni5jLTQ1Mi1cXHRpZiAoc3RhdGljX2JyYW5jaF91bmxpa2VseShcXHUwMDI2aXA2X21pbl9ob3Bjb3VudCkpIHtcXG5uZXQvaXB2Ni90Y3BfaXB2Ni5jOjQ1MzpcXHRcXHQvKiBtaW5faG9wY291bnQgY2FuIGJlIGNoYW5nZWQgY29uY3VycmVudGx5IGZyb20gZG9faXB2Nl9zZXRzb2Nrb3B0KCkgKi9cXG5uZXQvaXB2Ni90Y3BfaXB2Ni5jLTQ1NC1cXHRcXHRpZiAoaXB2Nl9oZHIoc2tiKS1cXHUwMDNlaG9wX2xpbWl0IFxcdTAwM2MgUkVBRF9PTkNFKHRjcF9pbmV0Nl9zayhzayktXFx1MDAzZW1pbl9ob3Bjb3VudCkpIHtcXG4tLVxcbm5ldC9pcHY2L3RjcF9pcHY2LmM9MTczMD1JTkRJUkVDVF9DQUxMQUJMRV9TQ09QRSBpbnQgdGNwX3Y2X3JjdihzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxcbi0tXFxubmV0L2lwdjYvdGNwX2lwdjYuYy0xODYxLVxcdGlmIChzdGF0aWNfYnJhbmNoX3VubGlrZWx5KFxcdTAwMjZpcDZfbWluX2hvcGNvdW50KSkge1xcbm5ldC9pcHY2L3RjcF9pcHY2LmM6MTg2MjpcXHRcXHQvKiBtaW5faG9wY291bnQgY2FuIGJlIGNoYW5nZWQgY29uY3VycmVudGx5IGZyb20gZG9faXB2Nl9zZXRzb2Nrb3B0KCkgKi9cXG5uZXQvaXB2Ni90Y3BfaXB2Ni5jLTE4NjMtXFx0XFx0aWYgKHVubGlrZWx5KGhkci1cXHUwMDNlaG9wX2xpbWl0IFxcdTAwM2MgUkVBRF9PTkNFKHRjcF9pbmV0Nl9zayhzayktXFx1MDAzZW1pbl9ob3Bjb3VudCkpKSB7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA4VDA3OjI3OjM5LjMxMjczMzMxOFoiLCJTZXEiOjMxLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo2Njc2NTY1NDEwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IExpbmUgb2YgSW5xdWlyeSoqXG5cbk9rYXksIHNvIEknbSB0aGlua2luZyBgZG9faXB2Nl9zZXRzb2Nrb3B0YCBzZWVtcyBsaWtlIGEgc29saWQgc3RhcnRpbmcgcG9pbnQgZm9yIHRoaXMgaW52ZXN0aWdhdGlvbi4gQnV0LCBsZXQncyBwaXZvdCBhbmQgY2hlY2sgYG52bWVfdGNwX2NyZWF0ZV9jdHJsYC4gSG1tLCBpdCdzIG1hcmtlZCBhcyBzdGF0aWMsIG1lYW5pbmcgaXQncyBub3QgZGlyZWN0bHkgZXhwb3J0ZWQuIEhvd2V2ZXIsIGl0ICppcyogYXNzaWduZWQgdG8gYG52bWVfdGNwX3RyYW5zcG9ydC5jcmVhdGVfY3RybGAuIEFscmlnaHQsIG1ha2luZyBwcm9ncmVzcy4gYG52bWZfZGV2X3dyaXRlYCBjYWxscyBgbnZtZl9jcmVhdGVfY3RybGAsIHdoaWNoIGluIHR1cm4gY2FsbHMgYG9wdHMtXHUwMDNldHJhbnNwb3J0LVx1MDAzZWNyZWF0ZV9jdHJsYC4gU28sIHllYWgsIHRoYXQgbWFrZXMgYG52bWVfdGNwX2NyZWF0ZV9jdHJsYCBhbm90aGVyIHZpYWJsZSBmb2N1cyBzeW1ib2wuXG5cbkxldCdzIHN3aXRjaCBnZWFycyBzbGlnaHRseSBhbmQgbG9vayBhdCBgbnZtZXRfdGNwX2FjY2VwdF93b3JrYC4gSXQncyBhbm90aGVyIHN0YXRpYyBmdW5jdGlvbiwgYnV0IGl0J3MgdXNlZCBhcyBhIHdvcmtxdWV1ZSBmdW5jdGlvbi5cblxuTm93LCBsZXQncyBjb25zaWRlciB0aGUgcmVsZXZhbnQgY29uZmlndXJhdGlvbnMuIFdlIGhhdmUgYE5WTUVfVENQYCwgYE5WTUVfVEFSR0VUX1RDUGAsIGBOVk1FX1RBUkdFVGAsIGFuZCBgSVBWNmAuIEhvbGQgb24sIGl0IHNlZW1zIGxpa2UgYE5WTUVfVEFSR0VUYCBpcyBuZWNlc3NhcnkgZm9yIGBOVk1FX1RBUkdFVF9UQ1BgIHRvIGZ1bmN0aW9uLiBJIHdvbmRlciBpZiB0aGVyZSBhcmUgYW55IG90aGVyIGNvbmZpZ3VyYXRpb25zIGludm9sdmVkPyBNYXliZSBgTlZNRV9DT1JFYCBvciBgTlZNRV9GQUJSSUNTYD8gQWgsIGBOVk1FX1RDUGAgc2VsZWN0cyBgTlZNRV9GQUJSSUNTYCwgb2YgY291cnNlLiBBbmQgYE5WTUVfVEFSR0VUX1RDUGAgZGVwZW5kcyBvbiBgTlZNRV9UQVJHRVRgLiBSaWdodCwgdGhhdCBtYWtlcyBzZW5zZS5cblxuTm93LCBJJ20gZ29pbmcgdG8gdGFrZSBhIGRlZXBlciBsb29rIGF0IGBOVk1FX1RBUkdFVGAuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE1MjE5LCJPdXRwdXRUb2tlbnMiOjE5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjYyLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA4VDA3OjI3OjQ1Ljk4OTMwMTY4OFoiLCJTZXEiOjMyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTc2ODUwNTk2OCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgTlZNRV9UQVJHRVRcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9udm1lL3RhcmdldC9LY29uZmlnLTItXFxuZHJpdmVycy9udm1lL3RhcmdldC9LY29uZmlnOjM6Y29uZmlnIE5WTUVfVEFSR0VUXFxuZHJpdmVycy9udm1lL3RhcmdldC9LY29uZmlnLTQtXFx0dHJpc3RhdGUgXFxcIk5WTWUgVGFyZ2V0IHN1cHBvcnRcXFwiXFxuLS1cXG5kcml2ZXJzL252bWUvdGFyZ2V0L0tjb25maWctMTktXFxuZHJpdmVycy9udm1lL3RhcmdldC9LY29uZmlnOjIwOmNvbmZpZyBOVk1FX1RBUkdFVF9ERUJVR0ZTXFxuZHJpdmVycy9udm1lL3RhcmdldC9LY29uZmlnLTIxLSAgICAgICAgYm9vbCBcXFwiTlZNZSBUYXJnZXQgZGVidWdmcyBzdXBwb3J0XFxcIlxcbi0tXFxuZHJpdmVycy9udm1lL3RhcmdldC9LY29uZmlnLTI4LVxcbmRyaXZlcnMvbnZtZS90YXJnZXQvS2NvbmZpZzoyOTpjb25maWcgTlZNRV9UQVJHRVRfUEFTU1RIUlVcXG5kcml2ZXJzL252bWUvdGFyZ2V0L0tjb25maWctMzAtXFx0Ym9vbCBcXFwiTlZNZSBUYXJnZXQgUGFzc3Rocm91Z2ggc3VwcG9ydFxcXCJcXG4tLVxcbmRyaXZlcnMvbnZtZS90YXJnZXQvS2NvbmZpZy00MC1cXG5kcml2ZXJzL252bWUvdGFyZ2V0L0tjb25maWc6NDE6Y29uZmlnIE5WTUVfVEFSR0VUX0xPT1BcXG5kcml2ZXJzL252bWUvdGFyZ2V0L0tjb25maWctNDItXFx0dHJpc3RhdGUgXFxcIk5WTWUgbG9vcGJhY2sgZGV2aWNlIHN1cHBvcnRcXFwiXFxuLS1cXG5kcml2ZXJzL252bWUvdGFyZ2V0L0tjb25maWctNTEtXFxuZHJpdmVycy9udm1lL3RhcmdldC9LY29uZmlnOjUyOmNvbmZpZyBOVk1FX1RBUkdFVF9SRE1BXFxuZHJpdmVycy9udm1lL3RhcmdldC9LY29uZmlnLTUzLVxcdHRyaXN0YXRlIFxcXCJOVk1lIG92ZXIgRmFicmljcyBSRE1BIHRhcmdldCBzdXBwb3J0XFxcIlxcbi0tXFxuZHJpdmVycy9udm1lL3RhcmdldC9LY29uZmlnLTYyLVxcbmRyaXZlcnMvbnZtZS90YXJnZXQvS2NvbmZpZzo2Mzpjb25maWcgTlZNRV9UQVJHRVRfRkNcXG5kcml2ZXJzL252bWUvdGFyZ2V0L0tjb25maWctNjQtXFx0dHJpc3RhdGUgXFxcIk5WTWUgb3ZlciBGYWJyaWNzIEZDIHRhcmdldCBkcml2ZXJcXFwiXFxuLS1cXG5kcml2ZXJzL252bWUvdGFyZ2V0L0tjb25maWctNzMtXFxuZHJpdmVycy9udm1lL3RhcmdldC9LY29uZmlnOjc0OmNvbmZpZyBOVk1FX1RBUkdFVF9GQ0xPT1BcXG5kcml2ZXJzL252bWUvdGFyZ2V0L0tjb25maWctNzUtXFx0dHJpc3RhdGUgXFxcIk5WTWUgb3ZlciBGYWJyaWNzIEZDIFRyYW5zcG9ydCBMb29wYmFjayBUZXN0IGRyaXZlclxcXCJcXG4tLVxcbmRyaXZlcnMvbnZtZS90YXJnZXQvS2NvbmZpZy04Ni1cXG5kcml2ZXJzL252bWUvdGFyZ2V0L0tjb25maWc6ODc6Y29uZmlnIE5WTUVfVEFSR0VUX1RDUFxcbmRyaXZlcnMvbnZtZS90YXJnZXQvS2NvbmZpZy04OC1cXHR0cmlzdGF0ZSBcXFwiTlZNZSBvdmVyIEZhYnJpY3MgVENQIHRhcmdldCBzdXBwb3J0XFxcIlxcbi0tXFxuZHJpdmVycy9udm1lL3RhcmdldC9LY29uZmlnLTk2LVxcbmRyaXZlcnMvbnZtZS90YXJnZXQvS2NvbmZpZzo5Nzpjb25maWcgTlZNRV9UQVJHRVRfVENQX1RMU1xcbmRyaXZlcnMvbnZtZS90YXJnZXQvS2NvbmZpZy05OC1cXHRib29sIFxcXCJOVk1lIG92ZXIgRmFicmljcyBUQ1AgdGFyZ2V0IFRMUyBlbmNyeXB0aW9uIHN1cHBvcnRcXFwiXFxuLS1cXG5kcml2ZXJzL252bWUvdGFyZ2V0L0tjb25maWctMTA5LVxcbmRyaXZlcnMvbnZtZS90YXJnZXQvS2NvbmZpZzoxMTA6Y29uZmlnIE5WTUVfVEFSR0VUX0FVVEhcXG5kcml2ZXJzL252bWUvdGFyZ2V0L0tjb25maWctMTExLVxcdGJvb2wgXFxcIk5WTWUgb3ZlciBGYWJyaWNzIEluLWJhbmQgQXV0aGVudGljYXRpb24gaW4gdGFyZ2V0IHNpZGVcXFwiXFxuLS1cXG5kcml2ZXJzL252bWUvdGFyZ2V0L0tjb25maWctMTE5LVxcbmRyaXZlcnMvbnZtZS90YXJnZXQvS2NvbmZpZzoxMjA6Y29uZmlnIE5WTUVfVEFSR0VUX0FVVEhfREVCVUdcXG5kcml2ZXJzL252bWUvdGFyZ2V0L0tjb25maWctMTIxLVxcdGJvb2wgXFxcIk5WTWUgb3ZlciBGYWJyaWNzIEluLWJhbmQgQXV0aGVudGljYXRpb24gZGVidWcgbWVzc2FnZXNcXFwiXFxuLS1cXG5kcml2ZXJzL252bWUvdGFyZ2V0L0tjb25maWctMTI4LVxcbmRyaXZlcnMvbnZtZS90YXJnZXQvS2NvbmZpZzoxMjk6Y29uZmlnIE5WTUVfVEFSR0VUX1BDSV9FUEZcXG5kcml2ZXJzL252bWUvdGFyZ2V0L0tjb25maWctMTMwLVxcdHRyaXN0YXRlIFxcXCJOVk1lIFBDSSBFbmRwb2ludCBGdW5jdGlvbiB0YXJnZXQgc3VwcG9ydFxcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDhUMDc6Mjc6NDcuNzU3ODEzNzI2WiIsIlNlcSI6MzMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQ4MjU4OTEwNzEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgYW4gZXhwZXJ0J3MgaW50ZXJuYWwgbW9ub2xvZ3VlOlxuXG4qKkludmVzdGlnYXRpbmcgTlZNRV9UQVJHRVQgRGVwZW5kZW5jaWVzKipcblxuUmlnaHQsIGxldCdzIGRpdmUgaW50byB0aGUgS2NvbmZpZyBmb3IgdGhlIE5WTUUgdGFyZ2V0LiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgZGVwZW5kZW5jaWVzIG9mIGBOVk1FX1RBUkdFVGAuIEl0J3MgY3J1Y2lhbCwgYXMgYWx3YXlzLCB0byBncmFzcCB0aGUgYnVpbGQtdGltZSBjb25maWd1cmF0aW9uIG9wdGlvbnMgYW5kIGNvbnN0cmFpbnRzIGJlZm9yZSBJIHN0YXJ0IHBva2luZyBhcm91bmQgaW4gdGhlIGNvZGUuIEknbSBsb29raW5nIGZvciBhbnkgaW1tZWRpYXRlIGNsdWVzIG9uIHByZXJlcXVpc2l0ZXM6IG90aGVyIGZlYXR1cmVzIGl0IHJlbGllcyBvbiwgcGxhdGZvcm0gcmVxdWlyZW1lbnRzLCBvciBwb3RlbnRpYWwgY29uZmxpY3RzIHdpdGggb3RoZXIgc3Vic3lzdGVtcy4gSXQncyB0aGUgc3RhbmRhcmQgcHJhY3RpY2UsIHJlYWxseS4gQSBkZWVwIGRpdmUgaW50byB0aGUgS2NvbmZpZyB3aWxsIGhpZ2hsaWdodCB3aGF0IG5lZWRzIHRvIGJlIGVuYWJsZWQsIGRpc2FibGVkLCBvciBjb25zaWRlcmVkIGR1cmluZyB0aGUgd2hvbGUgY29uZmlndXJhdGlvbiBwcm9jZXNzLiBJIHdhbnQgYSBjbGVhciBwaWN0dXJlLCBzbyBJIGNhbiBhdm9pZCB3YXN0ZWQgdGltZSBkb3duIHRoZSBsaW5lLiBMZXQncyBzZWUgd2hhdCB3ZSBjYW4gZmluZC5cblxuXG4iLCJJbnB1dFRva2VucyI6MTY2MjcsIk91dHB1dFRva2VucyI6MzUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyNSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wOFQwNzoyNzo1Mi41ODM3MDg3MTdaIiwiU2VxIjozNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NjkyNDAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9udm1lL3RhcmdldC9LY29uZmlnXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDEsXG4gIFwiTGluZUNvdW50XCI6IDIwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAgIDE6XFx0IyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XFxuICAgMjpcXHRcXG4gICAzOlxcdGNvbmZpZyBOVk1FX1RBUkdFVFxcbiAgIDQ6XFx0XFx0dHJpc3RhdGUgXFxcIk5WTWUgVGFyZ2V0IHN1cHBvcnRcXFwiXFxuICAgNTpcXHRcXHRkZXBlbmRzIG9uIEJMT0NLXFxuICAgNjpcXHRcXHRzZWxlY3QgQ09ORklHRlNfRlNcXG4gICA3OlxcdFxcdHNlbGVjdCBOVk1FX0tFWVJJTkcgaWYgTlZNRV9UQVJHRVRfVENQX1RMU1xcbiAgIDg6XFx0XFx0c2VsZWN0IEtFWVMgaWYgTlZNRV9UQVJHRVRfVENQX1RMU1xcbiAgIDk6XFx0XFx0c2VsZWN0IFNHTF9BTExPQ1xcbiAgMTA6XFx0XFx0aGVscFxcbiAgMTE6XFx0XFx0ICBUaGlzIGVuYWJsZWQgdGFyZ2V0IHNpZGUgc3VwcG9ydCBmb3IgdGhlIE5WTWUgcHJvdG9jb2wsIHRoYXQgaXNcXG4gIDEyOlxcdFxcdCAgaXQgYWxsb3dzIHRoZSBMaW51eCBrZXJuZWwgdG8gaW1wbGVtZW50IE5WTWUgc3Vic3lzdGVtcyBhbmRcXG4gIDEzOlxcdFxcdCAgY29udHJvbGxlcnMgYW5kIGV4cG9ydCBMaW51eCBibG9jayBkZXZpY2VzIGFzIE5WTWUgbmFtZXNwYWNlcy5cXG4gIDE0OlxcdFxcdCAgWW91IG5lZWQgdG8gc2VsZWN0IGF0IGxlYXN0IG9uZSBvZiB0aGUgdHJhbnNwb3J0cyBiZWxvdyB0byBtYWtlIHRoaXNcXG4gIDE1OlxcdFxcdCAgZnVuY3Rpb25hbGl0eSB1c2VmdWwuXFxuICAxNjpcXHRcXG4gIDE3OlxcdFxcdCAgVG8gY29uZmlndXJlIHRoZSBOVk1lIHRhcmdldCB5b3UgcHJvYmFibHkgd2FudCB0byB1c2UgdGhlIG52bWV0Y2xpXFxuICAxODpcXHRcXHQgIHRvb2wgZnJvbSBodHRwOi8vZ2l0LmluZnJhZGVhZC5vcmcvdXNlcnMvaGNoL252bWV0Y2xpLmdpdC5cXG4gIDE5OlxcdFxcbiAgMjA6XFx0Y29uZmlnIE5WTUVfVEFSR0VUX0RFQlVHRlNcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDhUMDc6Mjc6NTIuNTgzNzg2NDU3WiIsIlNlcSI6MzUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQ1NTIwOTcxNDAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBhIHN1bW1hcnkgb2YgbXkgdGhvdWdodCBwcm9jZXNzLCBhcyByZXF1ZXN0ZWQ6XG5cbioqTmF2aWdhdGluZyBEZXBlbmRlbmNpZXMqKlxuXG5Pa2F5LCBzbyBJJ20gdGhpbmtpbmcgYWJvdXQgdGhlIHN5c3RlbSBhcmNoaXRlY3R1cmUgaGVyZS4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRoYXQgYE5WTUVfVEFSR0VUYCBoYXMgYSBkZXBlbmRlbmN5IG9uIGBCTE9DS2AuIFRoYXQncyBhIGZ1bmRhbWVudGFsIHJlbGF0aW9uc2hpcCDigJMgdGhlIHRhcmdldCBuZWVkcyBhIGJsb2NrLWxldmVsIHN0b3JhZ2UgYWJzdHJhY3Rpb24gdG8gb3BlcmF0ZS4gTm93LCBJIG5lZWQgdG8gdW5kZXJzdGFuZCBob3cgTlZNZSBvdmVyIFRDUCBmaXRzIGludG8gdGhpcyBwaWN0dXJlLiBNeSBuZXh0IHN0ZXAgaXMgdG8gZXhhbWluZSB0aGUgcmVsYXRpb25zaGlwIGJldHdlZW4gYE5WTUVfVENQYCBhbmQgdGhlIGJyb2FkZXIgYXJjaGl0ZWN0dXJlLCBzcGVjaWZpY2FsbHkgaG93IGl0IGludGVyYWN0cyB3aXRoIHRoZSBjb21wb25lbnRzIEkndmUgYWxyZWFkeSBpZGVudGlmaWVkLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxNzE1OSwiT3V0cHV0VG9rZW5zIjozNiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIzLCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDhUMDc6Mjc6NTcuMTM1ODg3NzM3WiIsIlNlcSI6MzYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjcyOTIwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbnZtZS9ob3N0L0tjb25maWdcIixcbiAgXCJGaXJzdExpbmVcIjogODAsXG4gIFwiTGluZUNvdW50XCI6IDIwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAgODA6XFx0XFxuICA4MTpcXHRcXHQgIElmIHVuc3VyZSwgc2F5IE4uXFxuICA4MjpcXHRcXG4gIDgzOlxcdGNvbmZpZyBOVk1FX1RDUFxcbiAgODQ6XFx0XFx0dHJpc3RhdGUgXFxcIk5WTSBFeHByZXNzIG92ZXIgRmFicmljcyBUQ1AgaG9zdCBkcml2ZXJcXFwiXFxuICA4NTpcXHRcXHRkZXBlbmRzIG9uIElORVRcXG4gIDg2OlxcdFxcdGRlcGVuZHMgb24gQkxPQ0tcXG4gIDg3OlxcdFxcdHNlbGVjdCBDUkMzMlxcbiAgODg6XFx0XFx0c2VsZWN0IE5FVF9DUkMzMkNcXG4gIDg5OlxcdFxcdHNlbGVjdCBOVk1FX0ZBQlJJQ1NcXG4gIDkwOlxcdFxcdGhlbHBcXG4gIDkxOlxcdFxcdCAgVGhpcyBwcm92aWRlcyBzdXBwb3J0IGZvciB0aGUgTlZNZSBvdmVyIEZhYnJpY3MgcHJvdG9jb2wgdXNpbmdcXG4gIDkyOlxcdFxcdCAgdGhlIFRDUCB0cmFuc3BvcnQuICBUaGlzIGFsbG93cyB5b3UgdG8gdXNlIHJlbW90ZSBibG9jayBkZXZpY2VzXFxuICA5MzpcXHRcXHQgIGV4cG9ydGVkIHVzaW5nIHRoZSBOVk1lIHByb3RvY29sIHNldC5cXG4gIDk0OlxcdFxcbiAgOTU6XFx0XFx0ICBUbyBjb25maWd1cmUgYSBOVk1lIG92ZXIgRmFicmljcyBjb250cm9sbGVyIHVzZSB0aGUgbnZtZS1jbGkgdG9vbFxcbiAgOTY6XFx0XFx0ICBmcm9tIGh0dHBzOi8vZ2l0aHViLmNvbS9saW51eC1udm1lL252bWUtY2xpLlxcbiAgOTc6XFx0XFxuICA5ODpcXHRcXHQgIElmIHVuc3VyZSwgc2F5IE4uXFxuICA5OTpcXHRcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDhUMDc6Mjc6NTcuMTM1OTYyNjI3WiIsIlNlcSI6MzcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQyNTQ4ODE0NDIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQ29uZmlndXJhdGlvbiBEZXBlbmRlbmNpZXM6IEEgUXVpY2sgUmV2aWV3KipcblxuT2theSwgbGV0J3Mgc2VlLCBJIG5lZWQgdG8gbWFrZSBzdXJlIEkgdW5kZXJzdGFuZCB0aGVzZSBjb25maWd1cmF0aW9ucy4gUmlnaHQsIHNvIHdlIGhhdmUgYE5WTUVfVENQYCwgYE5WTUVfVEFSR0VUX1RDUGAsIGBOVk1FX1RBUkdFVGAsIGFuZCBgSVBWNmAuIEp1c3QgcnVubmluZyB0aHJvdWdoIHRoZSBtZW50YWwgY2hlY2tsaXN0IGhlcmUuLi4gQWgsIHJpZ2h0LCB0aGF0J3MgaW1wb3J0YW50OiBgTlZNRV9UQVJHRVRfVENQYCByZWxpZXMgb24gYE5WTUVfVEFSR0VUYC4gTmF0dXJhbGx5LCB0aGF0IG1ha2VzIHNlbnNlLiBBbmQgYE5WTUVfVENQYCBzZWxlY3RzIGBOVk1FX0ZBQlJJQ1NgLi4uIEdvdCBpdC4gYE5WTUVfRkFCUklDU2AgaGFzIGEgZGVwZW5kZW5jeSBvbiBgTlZNRV9DT1JFYC4gT2theSwgbGV0J3MganVzdCBtYWtlIGEgbm90ZSB0byBkb3VibGUtY2hlY2sgdGhlIGBOVk1FX0NPUkVgIGNvbmZpZ3VyYXRpb24uIEFsd2F5cyBpbXBvcnRhbnQgdG8gdW5kZXJzdGFuZCB0aGUgY29yZSBjb21wb25lbnRzLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxNzU5NywiT3V0cHV0VG9rZW5zIjoxOSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjk3LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDhUMDc6Mjg6MDEuMzkwODQ4MDI5WiIsIlNlcSI6MzgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyMDI0ODU4MzQxLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBOVk1FX0NPUkVcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9udm1lL2hvc3QvS2NvbmZpZy0xLSMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxcbmRyaXZlcnMvbnZtZS9ob3N0L0tjb25maWc6Mjpjb25maWcgTlZNRV9DT1JFXFxuZHJpdmVycy9udm1lL2hvc3QvS2NvbmZpZy0zLVxcdHRyaXN0YXRlXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA4VDA3OjI4OjAzLjQxNTcxNDQ1WiIsIlNlcSI6MzksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMwNTc2OTM3NTMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSB0YWtlIG9uIHRoZSB0aG91Z2h0IHByb2Nlc3MsIGFzIGlmIGl0IHdlcmUgbXkgb3duOlxuXG4qKkludmVzdGlnYXRpbmcgTlZNRSBDb3JlIERlcGVuZGVuY2llcyoqXG5cbk9rYXksIHNvIEkgbmVlZCB0byBmaWd1cmUgb3V0IHRoZSBkZXBlbmRlbmNpZXMgZm9yIGBOVk1FX0NPUkVgLiBUaGUgbW9zdCBkaXJlY3Qgd2F5IHRvIGdldCBhIGhhbmRsZSBvbiB0aGF0IGlzIHRvIGRpdmUgaW50byB0aGUgS2NvbmZpZyBmaWxlIGZvciB0aGUgTlZNZSBob3N0IGRyaXZlci4gSXQgc2hvdWxkIGJlIHJpZ2h0IHRoZXJlLCB0ZWxsaW5nIG1lIHdoYXQgb3RoZXIgY29uZmlndXJhdGlvbnMgYXJlIHJlcXVpcmVkIGZvciBgTlZNRV9DT1JFYCB0byBldmVuIGJlIGNvbnNpZGVyZWQuIFNvLCBsZXQncyBvcGVuIHVwIGBkcml2ZXJzL252bWUvaG9zdC9LY29uZmlnYCBhbmQgc2VlIHdoYXQgaXQgcmV2ZWFscy4gVGhpcyB3aWxsIGdpdmUgbWUgdGhlIGJ1aWxkaW5nIGJsb2NrcyBJIG5lZWQgdG8gdW5kZXJzdGFuZCBob3cgdGhlIGZlYXR1cmUgZml0cyBpbnRvIHRoZSBicm9hZGVyIHN5c3RlbS4gSSdtIGV4cGVjdGluZyB0byBzZWUgdGhpbmdzIGxpa2UgcGxhdGZvcm0tc3BlY2lmaWMgcmVxdWlyZW1lbnRzLCB1bmRlcmx5aW5nIGhhcmR3YXJlIGVuYWJsZW1lbnQsIG9yIG1heWJlIGV2ZW4gb3RoZXIgcmVsYXRlZCBOVk1lIGZlYXR1cmVzIHRoYXQgbXVzdCBiZSBlbmFibGVkIGZpcnN0LiBMZXQncyBnZXQgdG8gaXQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE3OTQ4LCJPdXRwdXRUb2tlbnMiOjM1LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjUsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDhUMDc6Mjg6MDYuNDczNDEyODE0WiIsIlNlcSI6NDAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjgzOTkxLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbnZtZS9ob3N0L0tjb25maWdcIixcbiAgXCJGaXJzdExpbmVcIjogMSxcbiAgXCJMaW5lQ291bnRcIjogMjBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiICAgMTpcXHQjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcXG4gICAyOlxcdGNvbmZpZyBOVk1FX0NPUkVcXG4gICAzOlxcdFxcdHRyaXN0YXRlXFxuICAgNDpcXHRcXG4gICA1OlxcdGNvbmZpZyBCTEtfREVWX05WTUVcXG4gICA2OlxcdFxcdHRyaXN0YXRlIFxcXCJOVk0gRXhwcmVzcyBibG9jayBkZXZpY2VcXFwiXFxuICAgNzpcXHRcXHRkZXBlbmRzIG9uIFBDSSBcXHUwMDI2XFx1MDAyNiBCTE9DS1xcbiAgIDg6XFx0XFx0c2VsZWN0IE5WTUVfQ09SRVxcbiAgIDk6XFx0XFx0aGVscFxcbiAgMTA6XFx0XFx0ICBUaGUgTlZNIEV4cHJlc3MgZHJpdmVyIGlzIGZvciBzb2xpZCBzdGF0ZSBkcml2ZXMgZGlyZWN0bHlcXG4gIDExOlxcdFxcdCAgY29ubmVjdGVkIHRvIHRoZSBQQ0kgb3IgUENJIEV4cHJlc3MgYnVzLiAgSWYgeW91IGtub3cgeW91XFxuICAxMjpcXHRcXHQgIGRvbid0IGhhdmUgb25lIG9mIHRoZXNlLCBpdCBpcyBzYWZlIHRvIGFuc3dlciBOLlxcbiAgMTM6XFx0XFxuICAxNDpcXHRcXHQgIFRvIGNvbXBpbGUgdGhpcyBkcml2ZXIgYXMgYSBtb2R1bGUsIGNob29zZSBNIGhlcmU6IHRoZVxcbiAgMTU6XFx0XFx0ICBtb2R1bGUgd2lsbCBiZSBjYWxsZWQgbnZtZS5cXG4gIDE2OlxcdFxcbiAgMTc6XFx0Y29uZmlnIE5WTUVfTVVMVElQQVRIXFxuICAxODpcXHRcXHRib29sIFxcXCJOVk1lIG11bHRpcGF0aCBzdXBwb3J0XFxcIlxcbiAgMTk6XFx0XFx0ZGVwZW5kcyBvbiBOVk1FX0NPUkVcXG4gIDIwOlxcdFxcdGhlbHBcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDhUMDc6Mjg6MDYuNDczNDk4NDc0WiIsIlNlcSI6NDEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQzODc5NjM2NjgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIE5WTWUgQ29uZmlndXJhdGlvbiBEZXBlbmRlbmNpZXMqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGVzZSBOVk1lIGNvbmZpZ3VyYXRpb25zIGFuZCB0aGVpciBkZXBlbmRlbmNpZXMuIEl0IHNlZW1zIHByZXR0eSBzdHJhaWdodGZvcndhcmQuIGBOVk1FX0NPUkVgIHN0YW5kcyBhbG9uZTsgbm8gZGVwZW5kZW5jaWVzIHRoZXJlLiBIb3dldmVyLCBib3RoIGBOVk1FX1RDUGAgYW5kIGBOVk1FX1RBUkdFVF9UQ1BgIHJlcXVpcmUgYElORVRgLiAgYE5WTUVfVENQYCBhbHNvIG5lZWRzIGBCTE9DS2AsIGFuZCBgTlZNRV9UQVJHRVRfVENQYCBkZXBlbmRzIG9uIGBOVk1FX1RBUkdFVGAuICBgTlZNRV9UQVJHRVRgLCBpbiB0dXJuLCBuZWVkcyBgQkxPQ0tgLiAgVGhlcmVmb3JlLCBpZiBJJ20gaW50ZXJwcmV0aW5nIHRoaXMgY29ycmVjdGx5LCBJIHNob3VsZCBjb25zaWRlciBjb25maWd1cmluZyB0aGUgZm9sbG93aW5nOiBgTlZNRV9UQ1BgLCBgTlZNRV9UQVJHRVRfVENQYCwgYE5WTUVfVEFSR0VUYCwgYW5kIGZpbmFsbHksIEkgbmVlZCB0byBjb25maXJtIGBJUFY2YCBpcyBhIHZpYWJsZSBjb25maWd1cmF0aW9uIG9wdGlvbi4gSXQncyBhIGtleSBwYXJ0IG9mIHRoZSBuZXR3b3JrIHN0YWNrLCBzbyBpdCBpcyBuZWNlc3NhcnkuIE5vdyBJIG5lZWQgdG8gY2hlY2sgaWYgYElQVjZgIGlzIHNvbWV0aGluZyBJIGNhbiBhY3R1YWxseSBjb25maWd1cmUgZGlyZWN0bHkuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE4NDQ2LCJPdXRwdXRUb2tlbnMiOjE4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTIwLCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDhUMDc6Mjg6MTAuODYxNDY1NTkxWiIsIlNlcSI6NDIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNjU2MjA4MzYwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBJUFY2XCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9pcHY2L0tjb25maWctNS1cXG5uZXQvaXB2Ni9LY29uZmlnOjY6bWVudWNvbmZpZyBJUFY2XFxubmV0L2lwdjYvS2NvbmZpZy03LVxcdGJvb2wgXFxcIlRoZSBJUHY2IHByb3RvY29sXFxcIlxcbi0tXFxubmV0L2lwdjYvS2NvbmZpZz0xOT1pZiBJUFY2XFxubmV0L2lwdjYvS2NvbmZpZy0yMC1cXG5uZXQvaXB2Ni9LY29uZmlnOjIxOmNvbmZpZyBJUFY2X1JPVVRFUl9QUkVGXFxubmV0L2lwdjYvS2NvbmZpZy0yMi1cXHRib29sIFxcXCJJUHY2OiBSb3V0ZXIgUHJlZmVyZW5jZSAoUkZDIDQxOTEpIHN1cHBvcnRcXFwiXFxuLS1cXG5uZXQvaXB2Ni9LY29uZmlnLTMwLVxcbm5ldC9pcHY2L0tjb25maWc6MzE6Y29uZmlnIElQVjZfUk9VVEVfSU5GT1xcbm5ldC9pcHY2L0tjb25maWctMzItXFx0Ym9vbCBcXFwiSVB2NjogUm91dGUgSW5mb3JtYXRpb24gKFJGQyA0MTkxKSBzdXBwb3J0XFxcIlxcbi0tXFxubmV0L2lwdjYvS2NvbmZpZy0zOC1cXG5uZXQvaXB2Ni9LY29uZmlnOjM5OmNvbmZpZyBJUFY2X09QVElNSVNUSUNfREFEXFxubmV0L2lwdjYvS2NvbmZpZy00MC1cXHRib29sIFxcXCJJUHY2OiBFbmFibGUgUkZDIDQ0MjkgT3B0aW1pc3RpYyBEQURcXFwiXFxuLS1cXG5uZXQvaXB2Ni9LY29uZmlnPTEwMj1jb25maWcgSU5FVDZfSVBDT01QXFxuLS1cXG5uZXQvaXB2Ni9LY29uZmlnLTExMS1cXG5uZXQvaXB2Ni9LY29uZmlnOjExMjpjb25maWcgSVBWNl9NSVA2XFxubmV0L2lwdjYvS2NvbmZpZy0xMTMtXFx0dHJpc3RhdGUgXFxcIklQdjY6IE1vYmlsaXR5XFxcIlxcbi0tXFxubmV0L2lwdjYvS2NvbmZpZy0xMTktXFxubmV0L2lwdjYvS2NvbmZpZzoxMjA6Y29uZmlnIElQVjZfSUxBXFxubmV0L2lwdjYvS2NvbmZpZy0xMjEtXFx0dHJpc3RhdGUgXFxcIklQdjY6IElkZW50aWZpZXIgTG9jYXRvciBBZGRyZXNzaW5nIChJTEEpXFxcIlxcbi0tXFxubmV0L2lwdjYvS2NvbmZpZz0xNDY9Y29uZmlnIElORVQ2X1RVTk5FTFxcbi0tXFxubmV0L2lwdjYvS2NvbmZpZy0xNDktXFxubmV0L2lwdjYvS2NvbmZpZzoxNTA6Y29uZmlnIElQVjZfVlRJXFxubmV0L2lwdjYvS2NvbmZpZy0xNTEtXFx0dHJpc3RhdGUgXFxcIlZpcnR1YWwgKHNlY3VyZSkgSVB2NjogdHVubmVsaW5nXFxcIlxcbi0tXFxubmV0L2lwdjYvS2NvbmZpZy0xNjEtXFxubmV0L2lwdjYvS2NvbmZpZzoxNjI6Y29uZmlnIElQVjZfU0lUXFxubmV0L2lwdjYvS2NvbmZpZy0xNjMtXFx0dHJpc3RhdGUgXFxcIklQdjY6IElQdjYtaW4tSVB2NCB0dW5uZWwgKFNJVCBkcml2ZXIpXFxcIlxcbi0tXFxubmV0L2lwdjYvS2NvbmZpZy0xNzYtXFxubmV0L2lwdjYvS2NvbmZpZzoxNzc6Y29uZmlnIElQVjZfU0lUXzZSRFxcbm5ldC9pcHY2L0tjb25maWctMTc4LVxcdGJvb2wgXFxcIklQdjY6IElQdjYgUmFwaWQgRGVwbG95bWVudCAoNlJEKVxcXCJcXG4tLVxcbm5ldC9pcHY2L0tjb25maWctMTk1LVxcbm5ldC9pcHY2L0tjb25maWc6MTk2OmNvbmZpZyBJUFY2X05ESVNDX05PREVUWVBFXFxubmV0L2lwdjYvS2NvbmZpZy0xOTctXFx0Ym9vbFxcbm5ldC9pcHY2L0tjb25maWctMTk4LVxcbm5ldC9pcHY2L0tjb25maWc6MTk5OmNvbmZpZyBJUFY2X1RVTk5FTFxcbm5ldC9pcHY2L0tjb25maWctMjAwLVxcdHRyaXN0YXRlIFxcXCJJUHY2OiBJUC1pbi1JUHY2IHR1bm5lbCAoUkZDMjQ3MylcXFwiXFxuLS1cXG5uZXQvaXB2Ni9LY29uZmlnLTIwOS1cXG5uZXQvaXB2Ni9LY29uZmlnOjIxMDpjb25maWcgSVBWNl9HUkVcXG5uZXQvaXB2Ni9LY29uZmlnLTIxMS1cXHR0cmlzdGF0ZSBcXFwiSVB2NjogR1JFIHR1bm5lbFxcXCJcXG4tLVxcbm5ldC9pcHY2L0tjb25maWctMjI3LVxcbm5ldC9pcHY2L0tjb25maWc6MjI4OmNvbmZpZyBJUFY2X0ZPVVxcbm5ldC9pcHY2L0tjb25maWctMjI5LVxcdHRyaXN0YXRlXFxuLS1cXG5uZXQvaXB2Ni9LY29uZmlnLTIzMS1cXG5uZXQvaXB2Ni9LY29uZmlnOjIzMjpjb25maWcgSVBWNl9GT1VfVFVOTkVMXFxubmV0L2lwdjYvS2NvbmZpZy0yMzMtXFx0dHJpc3RhdGVcXG4tLVxcbm5ldC9pcHY2L0tjb25maWctMjM2LVxcbm5ldC9pcHY2L0tjb25maWc6MjM3OmNvbmZpZyBJUFY2X01VTFRJUExFX1RBQkxFU1xcbm5ldC9pcHY2L0tjb25maWctMjM4LVxcdGJvb2wgXFxcIklQdjY6IE11bHRpcGxlIFJvdXRpbmcgVGFibGVzXFxcIlxcbi0tXFxubmV0L2lwdjYvS2NvbmZpZy0yNDItXFxubmV0L2lwdjYvS2NvbmZpZzoyNDM6Y29uZmlnIElQVjZfU1VCVFJFRVNcXG5uZXQvaXB2Ni9LY29uZmlnLTI0NC1cXHRib29sIFxcXCJJUHY2OiBzb3VyY2UgYWRkcmVzcyBiYXNlZCByb3V0aW5nXFxcIlxcbi0tXFxubmV0L2lwdjYvS2NvbmZpZy0yNTYtXFxubmV0L2lwdjYvS2NvbmZpZzoyNTc6Y29uZmlnIElQVjZfTVJPVVRFXFxubmV0L2lwdjYvS2NvbmZpZy0yNTgtXFx0Ym9vbCBcXFwiSVB2NjogbXVsdGljYXN0IHJvdXRpbmdcXFwiXFxuLS1cXG5uZXQvaXB2Ni9LY29uZmlnLTI2NC1cXG5uZXQvaXB2Ni9LY29uZmlnOjI2NTpjb25maWcgSVBWNl9NUk9VVEVfTVVMVElQTEVfVEFCTEVTXFxubmV0L2lwdjYvS2NvbmZpZy0yNjYtXFx0Ym9vbCBcXFwiSVB2NjogbXVsdGljYXN0IHBvbGljeSByb3V0aW5nXFxcIlxcbi0tXFxubmV0L2lwdjYvS2NvbmZpZy0yNzgtXFxubmV0L2lwdjYvS2NvbmZpZzoyNzk6Y29uZmlnIElQVjZfUElNU01fVjJcXG5uZXQvaXB2Ni9LY29uZmlnLTI4MC1cXHRib29sIFxcXCJJUHY2OiBQSU0tU00gdmVyc2lvbiAyIHN1cHBvcnRcXFwiXFxuLS1cXG5uZXQvaXB2Ni9LY29uZmlnLTI4NS1cXG5uZXQvaXB2Ni9LY29uZmlnOjI4Njpjb25maWcgSVBWNl9TRUc2X0xXVFVOTkVMXFxubmV0L2lwdjYvS2NvbmZpZy0yODctXFx0Ym9vbCBcXFwiSVB2NjogU2VnbWVudCBSb3V0aW5nIEhlYWRlciBlbmNhcHN1bGF0aW9uIHN1cHBvcnRcXFwiXFxuLS1cXG5uZXQvaXB2Ni9LY29uZmlnLTI5OS1cXG5uZXQvaXB2Ni9LY29uZmlnOjMwMDpjb25maWcgSVBWNl9TRUc2X0hNQUNcXG5uZXQvaXB2Ni9LY29uZmlnLTMwMS1cXHRib29sIFxcXCJJUHY2OiBTZWdtZW50IFJvdXRpbmcgSE1BQyBzdXBwb3J0XFxcIlxcbi0tXFxubmV0L2lwdjYvS2NvbmZpZy0zMTEtXFxubmV0L2lwdjYvS2NvbmZpZzozMTI6Y29uZmlnIElQVjZfU0VHNl9CUEZcXG5uZXQvaXB2Ni9LY29uZmlnLTMxMy1cXHRkZWZfYm9vbCB5XFxuLS1cXG5uZXQvaXB2Ni9LY29uZmlnLTMxNi1cXG5uZXQvaXB2Ni9LY29uZmlnOjMxNzpjb25maWcgSVBWNl9SUExfTFdUVU5ORUxcXG5uZXQvaXB2Ni9LY29uZmlnLTMxOC1cXHRib29sIFxcXCJJUHY2OiBSUEwgU291cmNlIFJvdXRpbmcgSGVhZGVyIHN1cHBvcnRcXFwiXFxuLS1cXG5uZXQvaXB2Ni9LY29uZmlnLTMyNy1cXG5uZXQvaXB2Ni9LY29uZmlnOjMyODpjb25maWcgSVBWNl9JT0FNNl9MV1RVTk5FTFxcbm5ldC9pcHY2L0tjb25maWctMzI5LVxcdGJvb2wgXFxcIklQdjY6IElPQU0gUHJlLWFsbG9jYXRlZCBUcmFjZSBpbnNlcnRpb24gc3VwcG9ydFxcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDhUMDc6Mjg6MTIuNTE3NjgwNzExWiIsIlNlcSI6NDMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjE2ODMwNTM2NDA4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKlJlZmluaW5nIHRoZSBGb2N1cyBmb3IgTlZNZSBvdmVyIFRDUCB3aXRoIElQdjYgVHJhZmZpYyBDbGFzcyBTdXBwb3J0KipcblxuT2theSwgc28gd2UncmUgbG9va2luZyBhdCBjaGFuZ2VzIHJlbGF0ZWQgdG8gYWRkaW5nIHRyYWZmaWMgY2xhc3MgKGB0Y2xhc3NgKSBzdXBwb3J0IGZvciBJUHY2IHdpdGhpbiB0aGUgTlZNZSBvdmVyIFRDUCBpbXBsZW1lbnRhdGlvbi4gRmlyc3QsIEkgbmVlZCB0byBjb25maXJtIHRoZSBjb25maWd1cmF0aW9ucyBpbnZvbHZlZC4gWWVzLCBgSVBWNmAgaXMgZGVmaW5pdGVseSBhIGNvbmZpZy4gV2Ugc2hvdWxkIGFsc28gY2hlY2sgYE5WTUVfRkFCUklDU2AuIElzIGl0IGEgZGlyZWN0IGNvbmZpZyBvcHRpb24/IE5vLCBidXQgaXQgYXBwZWFycyBgTlZNRV9UQ1BgIHNlbGVjdHMgYE5WTUVfRkFCUklDU2AsIHNvIHdlIGRvbid0IG5lZWQgdG8gbGlzdCBpdCBleHBsaWNpdGx5IGFsdGhvdWdoIHdlIGNvdWxkLiBHb29kLiBBbHNvLCBgTlZNRV9UQVJHRVRfVENQYCwgYW5kIGBOVk1FX1RBUkdFVGAgbmVlZCB0byBiZSBsaXN0ZWQuXG5cbk5vdywgbGV0J3MgbmFpbCBkb3duIHRoZSBrZXkgc3ltYm9scy4gSW5pdGlhbGx5LCBJIHRob3VnaHQgdGhlc2UgbG9va2VkIGltcG9ydGFudDogYG52bWZfZGV2X3dyaXRlYCwgYG52bWVfdGNwX2NyZWF0ZV9jdHJsYCwgYG52bWV0X3RjcF9hY2NlcHRfd29ya2AsIGFuZCBgZG9faXB2Nl9zZXRzb2Nrb3B0YC5cblxuYG52bWZfZGV2X3dyaXRlYCBpcyBhIGdlbmVyaWMgTlZNZSBmYWJyaWNzIGVudHJ5IHBvaW50LCB0aGF0J3MgdXNlZnVsLiBgbnZtZV90Y3BfY3JlYXRlX2N0cmxgIGlzIHNwZWNpZmljIHRvIFRDUCwgd2hpY2ggbWFrZXMgc2Vuc2UuIGBudm1ldF90Y3BfYWNjZXB0X3dvcmtgIGlzIHRhcmdldC1zcGVjaWZpYywgYW5kIGBkb19pcHY2X3NldHNvY2tvcHRgIGlzIHRoZSBjb3JlIElQdjYgc2V0c29ja29wdCBmdW5jdGlvbi5cblxuVGhlbiBJIGNvbnNpZGVyZWQgb3RoZXIgcmVsYXRlZCBmdW5jdGlvbnM6IGBudm1lX3RjcF9hbGxvY19xdWV1ZWAsIGBudm1ldF90Y3Bfc2V0X3F1ZXVlX3NvY2tgLCBgX19pcDZfc29ja19zZXRfdGNsYXNzYCwgYW5kIGBpcDZfc29ja19zZXRfdGNsYXNzYC4gU2luY2UgYG52bWVfdGNwX2FsbG9jX3F1ZXVlYCBhbmQgYG52bWV0X3RjcF9zZXRfcXVldWVfc29ja2AgYXJlIGRpcmVjdGx5IG1vZGlmaWVkIGFuZCBjb250YWluIHRoZSBtYWluIGxvZ2ljLCB0aGV5IGxvb2sgcmVsZXZhbnQuIExldCdzIHNlZSBpZiB0aGV5IGFyZSBpbmxpbmVkLiBObywgdGhleSBzZWVtIHRvIGJlIGxhcmdlIGVub3VnaCB0byBub3QgYmUgaW5saW5lZC4gYF9faXA2X3NvY2tfc2V0X3RjbGFzc2AgaXNuJ3QgZXhwb3J0ZWQsIGJ1dCBgaXA2X3NvY2tfc2V0X3RjbGFzc2AgaXMuIGBfX2lwNl9zb2NrX3NldF90Y2xhc3NgIGlzIGluIGBuZXQvaXB2Ni9pcHY2X3NvY2tnbHVlLmNgLlxuXG5Pa2F5LCB0aGUgcHJvbXB0IHdhbnRzIHVzIHRvIGZhdm9yIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50cyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zLiBMZXQncyByZXZpc2l0IHRoZSBwcmV2aW91cyBsaXN0LiBgbnZtZl9kZXZfd3JpdGVgIGlzIHN0YXRpYywgYnV0IGFuIGVudHJ5IHBvaW50IChmb3BzKS4gYG52bWVfdGNwX2NyZWF0ZV9jdHJsYCBpcyBzdGF0aWMsIGJ1dCBpcyBhbiBlbnRyeSBwb2ludCAodHJhbnNwb3J0IG9wcykuIGBudm1ldF90Y3BfYWNjZXB0X3dvcmtgIGlzIHN0YXRpYywgYnV0IGlzIGEgd29ya3F1ZXVlIGZ1bmN0aW9uLiBgZG9faXB2Nl9zZXRzb2Nrb3B0YCBhbmQgYGlwNl9zb2NrX3NldF90Y2xhc3NgIGFyZSBub24tc3RhdGljLiBMZXQncyBhbHNvIGtlZXAgYG52bWVfdGNwX2FsbG9jX3F1ZXVlYCBhbmQgYG52bWV0X3RjcF9zZXRfcXVldWVfc29ja2AuXG5cblNvLCB0aGUgZGVmaW5pdGl2ZSBsaXN0IHRvIGZvY3VzIG9uOiBgbnZtZl9kZXZfd3JpdGVgLCBgbnZtZV90Y3BfY3JlYXRlX2N0cmxgLCBgbnZtZXRfdGNwX2FjY2VwdF93b3JrYCwgYGRvX2lwdjZfc2V0c29ja29wdGAsIGBpcDZfc29ja19zZXRfdGNsYXNzYCwgYG52bWVfdGNwX2FsbG9jX3F1ZXVlYCBhbmQgYG52bWV0X3RjcF9zZXRfcXVldWVfc29ja2AuXG5cbk5vdywgZG91YmxlLWNoZWNraW5nLCBgbnZtZl9kZXZfd3JpdGVgIGlzIGFzc2lnbmVkIHRvIGBudm1mX2Rldl9mb3BzLndyaXRlYCwgYW5kIGNhbGxlZCBieSBWRlMuIGBudm1lX3RjcF9jcmVhdGVfY3RybGAgaXMgYXNzaWduZWQgdG8gYG52bWVfdGNwX3RyYW5zcG9ydC5jcmVhdGVfY3RybGAuIFRoZXNlIGFyZSBmaW5lIGVudHJ5IHBvaW50cy5cblxuVGhlIGNvcmUgY29uZmlncyBhcmUgYE5WTUVfVENQYCwgYE5WTUVfVEFSR0VUX1RDUGAsIGBOVk1FX1RBUkdFVGAsIGFuZCBgSVBWNmAuXG5cbkluIHN1bW1hcnksIHRoaXMgcGF0Y2ggYWRkcyBgdGNsYXNzYCBzdXBwb3J0IGZvciBJUHY2IHdpdGhpbiB0aGUgTlZNZSBvdmVyIFRDUCBob3N0IGFuZCB0YXJnZXQgZHJpdmVycy4gSXQgaW1wYWN0cyB0aGUgTlZNZSBmYWJyaWNzIG9wdGlvbiBwYXJzaW5nLCBzZXRzIHRoZSB0cmFmZmljIGNsYXNzIG9uIHRoZSBUQ1Agc29ja2V0cyB1c2luZyBgaXA2X3NvY2tfc2V0X3RjbGFzc2AsIGFuZCByZWZhY3RvcnMgSVB2NiBzb2NrZXQgZ2x1ZSB0byBleHBvcnQgdGhpcyBmdW5jdGlvbi4gVGhlIGNoYW5nZXMgYXJlIGZ1bmN0aW9uYWwgbW9kaWZpY2F0aW9ucyB0byBjb3JlIG5ldHdvcmtpbmcgYW5kIE5WTWUgZHJpdmVycywgd2hpY2ggY2FuIGJlIHRlc3RlZCB1c2luZyBsb29wYmFjayBvciB2aXJ0dWFsIG5ldHdvcmsgaW50ZXJmYWNlcy4gUmVhZHkgdG8gcHJvY2VlZC5cblxuXG4iLCJJbnB1dFRva2VucyI6MjAzMjMsIk91dHB1dFRva2VucyI6MjA5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTA3NywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wOFQwNzoyODoyOS4zNDgyMjA3MzlaIiwiU2VxIjo0NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo4MTgyNTUzMiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiTlZNRV9UQ1BcIixcbiAgICBcIk5WTUVfVEFSR0VUX1RDUFwiLFxuICAgIFwiTlZNRV9UQVJHRVRcIixcbiAgICBcIklQVjZcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJudm1mX2Rldl93cml0ZVwiLFxuICAgIFwibnZtZV90Y3BfY3JlYXRlX2N0cmxcIixcbiAgICBcIm52bWV0X3RjcF9hY2NlcHRfd29ya1wiLFxuICAgIFwiZG9faXB2Nl9zZXRzb2Nrb3B0XCIsXG4gICAgXCJpcDZfc29ja19zZXRfdGNsYXNzXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggYWRkcyBzdXBwb3J0IGZvciB0aGUgYHRjbGFzc2AgKElQdjYgdHJhZmZpYyBjbGFzcykgb3B0aW9uIHRvIHRoZSBOVk1lIG92ZXIgVENQIGhvc3QgYW5kIHRhcmdldCBkcml2ZXJzLiBJdCBtb2RpZmllcyB0aGUgTlZNZSBmYWJyaWNzIG9wdGlvbiBwYXJzaW5nLCBzZXRzIHRoZSB0cmFmZmljIGNsYXNzIG9uIHRoZSBUQ1Agc29ja2V0cyB1c2luZyBgaXA2X3NvY2tfc2V0X3RjbGFzc2AsIGFuZCByZWZhY3RvcnMgSVB2NiBzb2NrZXQgZ2x1ZSB0byBleHBvcnQgdGhpcyBmdW5jdGlvbi4gVGhlc2UgYXJlIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byByZWFjaGFibGUgY29yZSBuZXR3b3JraW5nIGFuZCBOVk1lIGRyaXZlcnMsIHdoaWNoIGNhbiBiZSB0ZXN0ZWQgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIHVzaW5nIGxvb3BiYWNrIG9yIHZpcnR1YWwgbmV0d29yayBpbnRlcmZhY2VzLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIk5WTUVfVENQXCIsXG4gICAgXCJOVk1FX1RBUkdFVF9UQ1BcIixcbiAgICBcIk5WTUVfVEFSR0VUXCIsXG4gICAgXCJJUFY2XCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwibnZtZl9kZXZfd3JpdGVcIixcbiAgICBcIm52bWVfdGNwX2NyZWF0ZV9jdHJsXCIsXG4gICAgXCJudm1ldF90Y3BfYWNjZXB0X3dvcmtcIixcbiAgICBcImRvX2lwdjZfc2V0c29ja29wdFwiLFxuICAgIFwiaXA2X3NvY2tfc2V0X3RjbGFzc1wiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGFkZHMgc3VwcG9ydCBmb3IgdGhlIGB0Y2xhc3NgIChJUHY2IHRyYWZmaWMgY2xhc3MpIG9wdGlvbiB0byB0aGUgTlZNZSBvdmVyIFRDUCBob3N0IGFuZCB0YXJnZXQgZHJpdmVycy4gSXQgbW9kaWZpZXMgdGhlIE5WTWUgZmFicmljcyBvcHRpb24gcGFyc2luZywgc2V0cyB0aGUgdHJhZmZpYyBjbGFzcyBvbiB0aGUgVENQIHNvY2tldHMgdXNpbmcgYGlwNl9zb2NrX3NldF90Y2xhc3NgLCBhbmQgcmVmYWN0b3JzIElQdjYgc29ja2V0IGdsdWUgdG8gZXhwb3J0IHRoaXMgZnVuY3Rpb24uIFRoZXNlIGFyZSBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gcmVhY2hhYmxlIGNvcmUgbmV0d29ya2luZyBhbmQgTlZNZSBkcml2ZXJzLCB3aGljaCBjYW4gYmUgdGVzdGVkIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyB1c2luZyBsb29wYmFjayBvciB2aXJ0dWFsIG5ldHdvcmsgaW50ZXJmYWNlcy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDhUMDc6Mjg6MjkuNDMwMDU1WiIsIlNlcSI6NDUsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoiSWYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMjQ2MzIzNTIyMywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA4VDA3OjI4OjI5LjQzMDcxOTA1WiIsIlNlcSI6NDYsIk5lc3RpbmciOjIsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJrbXNhbi1ldmFsdWF0b3IiLCJNb2RlbCI6ImJlc3QtZXhwZW5zaXZlIiwiRHVyYXRpb24iOjEyNDYyNTY2OTEzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJLTVNBTlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBpbnRyb2R1Y2VzIHBhcnNpbmcgZm9yIGEgbmV3IE5WTWUtb0YgVENQIG9wdGlvbiAoYHRjbGFzc2ApIGFuZCBhcHBsaWVzIGl0IHRvIHRoZSB1bmRlcmx5aW5nIHNvY2tldCB1c2luZyBzdGFuZGFyZCBJUHY2IHNvY2tldCBvcHRpb24gaGVscGVycy4gSXQgZXh0cmFjdHMgdGhlIHRyYWZmaWMgY2xhc3Mgc2V0dGluZyBsb2dpYyBpbnRvIGEgbmV3IGhlbHBlciBmdW5jdGlvbiBgaXA2X3NvY2tfc2V0X3RjbGFzc2AuIE5vIG5ldyBkYXRhIHN0cnVjdHVyZXMgYXJlIGFsbG9jYXRlZCwgY29waWVkIHRvIHVzZXIgc3BhY2UsIG9yIHNlbnQgb3ZlciB0aGUgbmV0d29yayBpbiBhIHdheSB0aGF0IGNvdWxkIGV4cG9zZSB1bmluaXRpYWxpemVkIG1lbW9yeS4gVGhlIHZhcmlhYmxlcyBhbmQgZmllbGRzIGludm9sdmVkIGFyZSBzaW1wbGUgaW50ZWdlcnMgYW5kIGFyZSBwcm9wZXJseSBpbml0aWFsaXplZC4gU3RhbmRhcmQgS0FTQU4gZnV6emluZyBpcyBzdWZmaWNpZW50IHRvIGNhdGNoIGFueSBwb3RlbnRpYWwgbWVtb3J5IGNvcnJ1cHRpb24sIG91dC1vZi1ib3VuZHMsIG9yIHVzZS1hZnRlci1mcmVlIGJ1Z3MuXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIHNlY3VyaXR5IGVuZ2luZWVyIHNwZWNpYWxpemluZyBpbiBrZXJuZWwgbWVtb3J5XG5lcnJvciBkZXRlY3RvcnMgKEtBU0FOIGFuZCBLTVNBTikuIFlvdXIgam9iIGlzIHRvIHJldmlldyB0aGUgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZFxuZGV0ZXJtaW5lIGlmIHRoZSBjb2RlIGNoYW5nZXMganVzdGlmeSBzcGF3bmluZyBhIGRlZGljYXRlZCBLTVNBTiAoS2VybmVsTWVtb3J5U2FuaXRpemVyKVxuZnV6emluZyBzZXNzaW9uIGluIGFkZGl0aW9uIHRvIHN0YW5kYXJkIEtBU0FOIGZ1enppbmcuXG5cbkNSSVRJQ0FMIERJU1RJTkNUSU9OIEJFVFdFRU4gS0FTQU4gQU5EIEtNU0FOOlxuLSBTdGFuZGFyZCBLQVNBTiBrZXJuZWwgYnVpbGRzICh1cHN0cmVhbS1hcHBhcm1vci1rYXNhbi5jb25maWcpIGFscmVhZHkgZW5hYmxlXG4gIGEgY29tcHJlaGVuc2l2ZSBzdWl0ZSBvZiBkZWJ1Z2dpbmcgdG9vbHMgYW5kIHNhbml0aXplcnMsIGluY2x1ZGluZyBLQVNBTlxuICAob3V0LW9mLWJvdW5kcyBhY2Nlc3NlcywgdXNlLWFmdGVyLWZyZWUsIGRvdWJsZSBmcmVlLCBpbnZhbGlkIGZyZWUpLCBMT0NLREVQXG4gIChsb2NraW5nIGJ1Z3MgYW5kIGRlYWRsb2NrcyksIFVCLXNhbml0aXplcnMsIGFuZCBtZW1vcnkgY29ycnVwdGlvbiBjaGVja3MuXG4tIEtNU0FOIChLZXJuZWxNZW1vcnlTYW5pdGl6ZXIpIGRldGVjdHMgcmVhZHMgb2YgVU5JTklUSUFMSVpFRCBtZW1vcnkgKHN0YWNrLCBoZWFwLFxuICBvciBwYWdlIGFsbG9jYXRpb25zKSBhbmQga2VybmVsLXRvLXVzZXIgbWVtb3J5IGluZm8tbGVha3MuXG5cblJ1bGU6IFRIRVJFIElTIE5PIFNFTlNFIElOIFJVTk5JTkcgQSBLTVNBTiBTRVNTSU9OIElGIEEgQlVHIENBTiBCRSBDQVVHSFQgQlkgS0FTQU4sXG5MT0NLREVQLCBPUiBPVEhFUiBTVEFOREFSRCBCVUcgREVURUNUT1JTLlxuQSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGluY3VycyBzaWduaWZpY2FudCByZXNvdXJjZSBjb3N0cy4gWW91IG11c3QgT05MWVxuc2V0IE5lZWRzS01TQU49dHJ1ZSBpZiB0aGUgY29kZSBjaGFuZ2VzIGludHJvZHVjZSBvciBleHBvc2UgVU5JTklUSUFMSVpFRCBNRU1PUlkgcmlza3NcbnRoYXQgYXJlIGRldGVjdGVkIE9OTFkgYnkgS01TQU4uXG5cbkxvb2sgaG9saXN0aWNhbGx5IGF0IHRoZSBwYXRjaCBzZXJpZXMgYW5kIHN1cnJvdW5kaW5nIGNvZGUuIEV2ZW4gaWYgbm8gZGlyZWN0XG51bmluaXRpYWxpemVkIGZpZWxkIGFjY2Vzc2VzIG9yIG5ldyBidWZmZXIgYWxsb2NhdGlvbnMgYXJlIGFkZGVkIGluIHRoZSBkaWZmIGl0c2VsZixcbmEgcGF0Y2ggbWF5IGFsdGVyIGNvbnRyb2wgZmxvdywgYm91bmRzIGNoZWNraW5nLCBvciBkYXRhIGxlbmd0aCBjYWxjdWxhdGlvbnMgaW4gd2F5c1xudGhhdCBjaGFuZ2UgaG93IHRoZSByZXN0IG9mIHRoZSBjb2RlIG9wZXJhdGVzIG9uIGV4aXN0aW5nIGJ1ZmZlcnMgKGUuZy4gYWxsb3dpbmdcbnVuaW5pdGlhbGl6ZWQgc3RhY2svaGVhcCBtZW1vcnkgdG8gYmUgcmVhZCwgY29waWVkIHRvIHVzZXIgc3BhY2UsIG9yIHVzZWQgaW4gY29udHJvbFxuZmxvdykuIERvIG5vdCBoZXNpdGF0ZSB0byB1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBpbnNwZWN0IHRoZSBzdXJyb3VuZGluZyBjb2RlLFxuY2FsbGVkIGZ1bmN0aW9ucywgYW5kIGNhbGxlcnMuXG5cblNldCBOZWVkc0tNU0FOPXRydWUgT05MWSBJRiB0aGUgcGF0Y2ggaW50cm9kdWNlcyBvciBtb2RpZmllczpcbjEuIEtlcm5lbCBzdHJ1Y3R1cmVzIHNlbnQgdG8gdXNlciBzcGFjZSAodmlhIGNvcHlfdG9fdXNlciwgcHV0X3VzZXIsIG5ldGxpbmsgc2tiXG4gICBhdHRyaWJ1dGVzLCBpb2N0bCBvdXRwdXQgYXJndW1lbnRzLCBzb2NrZXQgb3B0aW9ucywgb3IgQlBGIGJ1ZmZlcnMpIHdoZXJlIGZpZWxkc1xuICAgb3Igc3RydWN0dXJlIHBhZGRpbmcgbWlnaHQgbm90IGJlIGZ1bGx5IGluaXRpYWxpemVkL3plcm9lZC5cbjIuIENvbmRpdGlvbmFsIGxvZ2ljIG9yIGJyYW5jaGluZyB0aGF0IGRlcGVuZHMgb24gcG90ZW50aWFsbHkgdW5pbml0aWFsaXplZCB2YXJpYWJsZXNcbiAgIG9yIHN0cnVjdCBmaWVsZHMuXG4zLiBBbGxvY2F0aW9uIG9yIGluaXRpYWxpemF0aW9uIG9mIGNvbXBsZXggZGF0YSBzdHJ1Y3R1cmVzIHdoZXJlIHVuaW5pdGlhbGl6ZWQgZmllbGRzXG4gICBjb3VsZCBiZSByZWFkIGxhdGVyIGluIHJlYWNoYWJsZSBjb2RlIHBhdGhzLlxuNC4gQm91bmRzIGNoZWNrcywgbGVuZ3Rocywgb3IgbG9naWMgaW4gYSB3YXkgdGhhdCBhbGxvd3Mgc3Vycm91bmRpbmcgY29kZSB0byBhY2Nlc3NcbiAgIHVuaW5pdGlhbGl6ZWQgYnl0ZXMgb2YgZXhpc3RpbmcgYnVmZmVycy5cblxuU2V0IE5lZWRzS01TQU49ZmFsc2UgSUY6XG4tIFRoZSBjb2RlIGNoYW5nZXMgcHJpbWFyaWx5IHJpc2sgb3V0LW9mLWJvdW5kcyBhY2Nlc3MsIGFycmF5IG92ZXJmbG93cywgTlVMTCBwb2ludGVyXG4gIGRlcmVmZXJlbmNlcywgbG9ja2luZyBkZWFkbG9ja3MsIG9yIHVzZS1hZnRlci1mcmVlIGJ1Z3MgKHRoZXNlIGFyZSBhbHJlYWR5IGNhdWdodFxuICBieSBLQVNBTiwgTE9DS0RFUCwgb3Igc3RhbmRhcmQgYnVnIGRldGVjdG9ycykuXG4tIEFsbCBzdGFjay9oZWFwIHN0cnVjdHVyZXMgdG91Y2hlZCBvciBpbnRyb2R1Y2VkIGJ5IHRoZSBwYXRjaCBhcmUgZnVsbHkgemVyb2VkXG4gIG9yIGluaXRpYWxpemVkIChlLmcuIHVzaW5nID0gezB9LCBtZW1zZXQsIGt6YWxsb2MpIGJlZm9yZSBiZWluZyByZWFkIG9yIGNvcGllZC5cbi0gVGhlIHBhdGNoIGRvZXMgbm90IGludHJvZHVjZSBhbnkgcmlzayBvZiB1bmluaXRpYWxpemVkIG1lbW9yeSB1c2FnZSBvciBpbmZvLWxlYWtzLlxuXG5Vc2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBpbnNwZWN0IHRoZSBzdXJyb3VuZGluZyBjb2RlIGlmIG5lY2Vzc2FyeSwgdGhlbiBwcm92aWRlXG5kZXRhaWxlZCBLTVNBTlJlYXNvbmluZyBjb250cmFzdGluZyBLQVNBTiB2cyBLTVNBTiBhcHBsaWNhYmlsaXR5IGZvciB0aGlzIHBhdGNoLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgODQ3NzNjMDRlNmRhMTRlMzQwYTBlZDBhMTY1NmZmMjcxZjExM2QzOFxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBTYXQgQXVnIDggMDc6MjY6MjEgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL252bWUvaG9zdC9mYWJyaWNzLmMgYi9kcml2ZXJzL252bWUvaG9zdC9mYWJyaWNzLmNcbmluZGV4IGFjM2Q0ZjQwMDYwMWYuLjY0M2MwM2RjN2JjYjMgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL252bWUvaG9zdC9mYWJyaWNzLmNcbisrKyBiL2RyaXZlcnMvbnZtZS9ob3N0L2ZhYnJpY3MuY1xuQEAgLTY5NSw2ICs2OTUsNyBAQCBzdGF0aWMgY29uc3QgbWF0Y2hfdGFibGVfdCBvcHRfdG9rZW5zID0ge1xuIFx0eyBOVk1GX09QVF9OUl9XUklURV9RVUVVRVMsXHRcIm5yX3dyaXRlX3F1ZXVlcz0lZFwiXHR9LFxuIFx0eyBOVk1GX09QVF9OUl9QT0xMX1FVRVVFUyxcdFwibnJfcG9sbF9xdWV1ZXM9JWRcIlx0fSxcbiBcdHsgTlZNRl9PUFRfVE9TLFx0XHRcdFwidG9zPSVkXCJcdFx0fSxcbitcdHsgTlZNRl9PUFRfVENMQVNTLFx0XHRcInRjbGFzcz0lZFwiXHRcdH0sXG4gI2lmZGVmIENPTkZJR19OVk1FX1RDUF9UTFNcbiBcdHsgTlZNRl9PUFRfS0VZUklORyxcdFx0XCJrZXlyaW5nPSVkXCJcdFx0fSxcbiBcdHsgTlZNRl9PUFRfVExTX0tFWSxcdFx0XCJ0bHNfa2V5PSVkXCJcdFx0fSxcbkBAIC03MzQsNiArNzM1LDcgQEAgc3RhdGljIGludCBudm1mX3BhcnNlX29wdGlvbnMoc3RydWN0IG52bWZfY3RybF9vcHRpb25zICpvcHRzLFxuIFx0b3B0cy1cdTAwM2VoZHJfZGlnZXN0ID0gZmFsc2U7XG4gXHRvcHRzLVx1MDAzZWRhdGFfZGlnZXN0ID0gZmFsc2U7XG4gXHRvcHRzLVx1MDAzZXRvcyA9IC0xOyAvKiBcdTAwM2MgMCA9PSB1c2UgdHJhbnNwb3J0IGRlZmF1bHQgKi9cbitcdG9wdHMtXHUwMDNldGNsYXNzID0gLTE7IC8qIFx1MDAzYyAwID09IHVzZSB0cmFuc3BvcnQgZGVmYXVsdCAqL1xuIFx0b3B0cy1cdTAwM2V0bHMgPSBmYWxzZTtcbiBcdG9wdHMtXHUwMDNldGxzX2tleSA9IE5VTEw7XG4gXHRvcHRzLVx1MDAzZWtleXJpbmcgPSBOVUxMO1xuQEAgLTk5MSw2ICs5OTMsMjIgQEAgc3RhdGljIGludCBudm1mX3BhcnNlX29wdGlvbnMoc3RydWN0IG52bWZfY3RybF9vcHRpb25zICpvcHRzLFxuIFx0XHRcdH1cbiBcdFx0XHRvcHRzLVx1MDAzZXRvcyA9IHRva2VuO1xuIFx0XHRcdGJyZWFrO1xuK1x0XHRjYXNlIE5WTUZfT1BUX1RDTEFTUzpcbitcdFx0XHRpZiAobWF0Y2hfaW50KGFyZ3MsIFx1MDAyNnRva2VuKSkge1xuK1x0XHRcdFx0cmV0ID0gLUVJTlZBTDtcbitcdFx0XHRcdGdvdG8gb3V0O1xuK1x0XHRcdH1cbitcdFx0XHRpZiAodG9rZW4gXHUwMDNjIDApIHtcbitcdFx0XHRcdHByX2VycihcIkludmFsaWQgdHJhZmZpYyBjbGFzcyAlZFxcblwiLCB0b2tlbik7XG4rXHRcdFx0XHRyZXQgPSAtRUlOVkFMO1xuK1x0XHRcdFx0Z290byBvdXQ7XG4rXHRcdFx0fVxuK1x0XHRcdGlmICh0b2tlbiBcdTAwM2UgMjU1KSB7XG4rXHRcdFx0XHRwcl93YXJuKFwiQ2xhbXBpbmcgdHJhZmZpYyBjbGFzcyB0byAyNTVcXG5cIik7XG4rXHRcdFx0XHR0b2tlbiA9IDI1NTtcbitcdFx0XHR9XG4rXHRcdFx0b3B0cy1cdTAwM2V0Y2xhc3MgPSB0b2tlbjtcbitcdFx0XHRicmVhaztcbiBcdFx0Y2FzZSBOVk1GX09QVF9LRVlSSU5HOlxuIFx0XHRcdGlmIChtYXRjaF9pbnQoYXJncywgXHUwMDI2a2V5X2lkKSB8fCBrZXlfaWQgXHUwMDNjPSAwKSB7XG4gXHRcdFx0XHRyZXQgPSAtRUlOVkFMO1xuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbnZtZS9ob3N0L2ZhYnJpY3MuaCBiL2RyaXZlcnMvbnZtZS9ob3N0L2ZhYnJpY3MuaFxuaW5kZXggY2FmNTUwM2QwODMzMi4uM2RmZDQwYmQ4OTYwNSAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbnZtZS9ob3N0L2ZhYnJpY3MuaFxuKysrIGIvZHJpdmVycy9udm1lL2hvc3QvZmFicmljcy5oXG5AQCAtNjcsNiArNjcsNyBAQCBlbnVtIHtcbiBcdE5WTUZfT1BUX0tFWVJJTkdcdD0gMSBcdTAwM2NcdTAwM2MgMjYsXG4gXHROVk1GX09QVF9UTFNfS0VZXHQ9IDEgXHUwMDNjXHUwMDNjIDI3LFxuIFx0TlZNRl9PUFRfQ09OQ0FUXHRcdD0gMSBcdTAwM2NcdTAwM2MgMjgsXG4rXHROVk1GX09QVF9UQ0xBU1NcdFx0PSAxIFx1MDAzY1x1MDAzYyAyOSxcbiB9O1xuIFxuIC8qKlxuQEAgLTEwOSw2ICsxMTAsNyBAQCBlbnVtIHtcbiAgKiBAbnJfd3JpdGVfcXVldWVzOiBudW1iZXIgb2YgcXVldWVzIGZvciB3cml0ZSBJL09cbiAgKiBAbnJfcG9sbF9xdWV1ZXM6IG51bWJlciBvZiBxdWV1ZXMgZm9yIHBvbGxpbmcgSS9PXG4gICogQHRvczogdHlwZSBvZiBzZXJ2aWNlXG4rICogQHRjbGFzczogSVB2NiB0cmFmZmljIGNsYXNzXG4gICogQGZhc3RfaW9fZmFpbF90bW86IEZhc3QgSS9PIGZhaWwgdGltZW91dCBpbiBzZWNvbmRzXG4gICovXG4gc3RydWN0IG52bWZfY3RybF9vcHRpb25zIHtcbkBAIC0xMzksNiArMTQxLDcgQEAgc3RydWN0IG52bWZfY3RybF9vcHRpb25zIHtcbiBcdHVuc2lnbmVkIGludFx0XHRucl93cml0ZV9xdWV1ZXM7XG4gXHR1bnNpZ25lZCBpbnRcdFx0bnJfcG9sbF9xdWV1ZXM7XG4gXHRpbnRcdFx0XHR0b3M7XG4rXHRpbnRcdFx0XHR0Y2xhc3M7XG4gXHRpbnRcdFx0XHRmYXN0X2lvX2ZhaWxfdG1vO1xuIH07XG4gXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9udm1lL2hvc3QvdGNwLmMgYi9kcml2ZXJzL252bWUvaG9zdC90Y3AuY1xuaW5kZXggYmE1YzdiM2UyYTdjNi4uY2FiYmY2N2QyNGY4OCAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbnZtZS9ob3N0L3RjcC5jXG4rKysgYi9kcml2ZXJzL252bWUvaG9zdC90Y3AuY1xuQEAgLTE4MzcsNiArMTgzNywxMSBAQCBzdGF0aWMgaW50IG52bWVfdGNwX2FsbG9jX3F1ZXVlKHN0cnVjdCBudm1lX2N0cmwgKm5jdHJsLCBpbnQgcWlkLFxuIFx0LyogU2V0IHNvY2tldCB0eXBlIG9mIHNlcnZpY2UgKi9cbiBcdGlmIChuY3RybC1cdTAwM2VvcHRzLVx1MDAzZXRvcyBcdTAwM2U9IDApXG4gXHRcdGlwX3NvY2tfc2V0X3RvcyhxdWV1ZS1cdTAwM2Vzb2NrLVx1MDAzZXNrLCBuY3RybC1cdTAwM2VvcHRzLVx1MDAzZXRvcyk7XG4rI2lmIElTX0VOQUJMRUQoQ09ORklHX0lQVjYpXG4rXHRpZiAobmN0cmwtXHUwMDNlb3B0cy1cdTAwM2V0Y2xhc3MgXHUwMDNlPSAwIFx1MDAyNlx1MDAyNlxuK1x0ICAgIHF1ZXVlLVx1MDAzZXNvY2stXHUwMDNlc2stXHUwMDNlc2tfZmFtaWx5ID09IEFGX0lORVQ2KVxuK1x0XHRpcDZfc29ja19zZXRfdGNsYXNzKHF1ZXVlLVx1MDAzZXNvY2stXHUwMDNlc2ssIG5jdHJsLVx1MDAzZW9wdHMtXHUwMDNldGNsYXNzKTtcbisjZW5kaWZcbiBcbiBcdC8qIFNldCAxMCBzZWNvbmRzIHRpbWVvdXQgZm9yIGljcmVzcCByZWN2bXNnICovXG4gXHRxdWV1ZS1cdTAwM2Vzb2NrLVx1MDAzZXNrLVx1MDAzZXNrX3JjdnRpbWVvID0gMTAgKiBIWjtcbkBAIC0zMDQxLDcgKzMwNDYsOCBAQCBzdGF0aWMgc3RydWN0IG52bWZfdHJhbnNwb3J0X29wcyBudm1lX3RjcF90cmFuc3BvcnQgPSB7XG4gXHRcdFx0ICBOVk1GX09QVF9IT1NUX1RSQUREUiB8IE5WTUZfT1BUX0NUUkxfTE9TU19UTU8gfFxuIFx0XHRcdCAgTlZNRl9PUFRfSERSX0RJR0VTVCB8IE5WTUZfT1BUX0RBVEFfRElHRVNUIHxcbiBcdFx0XHQgIE5WTUZfT1BUX05SX1dSSVRFX1FVRVVFUyB8IE5WTUZfT1BUX05SX1BPTExfUVVFVUVTIHxcbi1cdFx0XHQgIE5WTUZfT1BUX1RPUyB8IE5WTUZfT1BUX0hPU1RfSUZBQ0UgfCBOVk1GX09QVF9UTFMgfFxuK1x0XHRcdCAgTlZNRl9PUFRfVE9TIHwgTlZNRl9PUFRfVENMQVNTIHxcbitcdFx0XHQgIE5WTUZfT1BUX0hPU1RfSUZBQ0UgfCBOVk1GX09QVF9UTFMgfFxuIFx0XHRcdCAgTlZNRl9PUFRfS0VZUklORyB8IE5WTUZfT1BUX1RMU19LRVkgfCBOVk1GX09QVF9DT05DQVQsXG4gXHQuY3JlYXRlX2N0cmxcdD0gbnZtZV90Y3BfY3JlYXRlX2N0cmwsXG4gfTtcbmRpZmYgLS1naXQgYS9kcml2ZXJzL252bWUvdGFyZ2V0L3RjcC5jIGIvZHJpdmVycy9udm1lL3RhcmdldC90Y3AuY1xuaW5kZXggNzVhMjc2ZDczYmUzZS4uMWQ2NTUxOWViYzBmYiAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbnZtZS90YXJnZXQvdGNwLmNcbisrKyBiL2RyaXZlcnMvbnZtZS90YXJnZXQvdGNwLmNcbkBAIC0xNzI1LDYgKzE3MjUsMTQgQEAgc3RhdGljIGludCBudm1ldF90Y3Bfc2V0X3F1ZXVlX3NvY2soc3RydWN0IG52bWV0X3RjcF9xdWV1ZSAqcXVldWUpXG4gXHQvKiBTZXQgc29ja2V0IHR5cGUgb2Ygc2VydmljZSAqL1xuIFx0aWYgKGluZXQtXHUwMDNlcmN2X3RvcyBcdTAwM2UgMClcbiBcdFx0aXBfc29ja19zZXRfdG9zKHNvY2stXHUwMDNlc2ssIGluZXQtXHUwMDNlcmN2X3Rvcyk7XG4rI2lmIElTX0VOQUJMRUQoQ09ORklHX0lQVjYpXG4rXHRpZiAoc29jay1cdTAwM2Vzay1cdTAwM2Vza19mYW1pbHkgPT0gQUZfSU5FVDYpIHtcbitcdFx0dTggcmN2X3RjbGFzcyA9IGlwNl90Y2xhc3MoaW5ldDZfc2soc29jay1cdTAwM2VzayktXHUwMDNlcmN2X2Zsb3dpbmZvKTtcbitcbitcdFx0aWYgKHJjdl90Y2xhc3MgXHUwMDNlIDApXG4rXHRcdFx0aXA2X3NvY2tfc2V0X3RjbGFzcyhzb2NrLVx1MDAzZXNrLCByY3ZfdGNsYXNzKTtcbitcdH1cbisjZW5kaWZcbiBcbiBcdHJldCA9IDA7XG4gXHR3cml0ZV9sb2NrX2JoKFx1MDAyNnNvY2stXHUwMDNlc2stXHUwMDNlc2tfY2FsbGJhY2tfbG9jayk7XG5kaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZXQvaXB2Ni5oIGIvaW5jbHVkZS9uZXQvaXB2Ni5oXG5pbmRleCAzZGUwN2U3Mzg1MzhmLi44MmU1N2IzNGJhNTdmIDEwMDY0NFxuLS0tIGEvaW5jbHVkZS9uZXQvaXB2Ni5oXG4rKysgYi9pbmNsdWRlL25ldC9pcHY2LmhcbkBAIC0xMjUyLDYgKzEyNTIsOSBAQCBzdGF0aWMgaW5saW5lIHZvaWQgaXA2X3NvY2tfc2V0X3JlY3ZlcnIoc3RydWN0IHNvY2sgKnNrKVxuIFx0aW5ldDZfc2V0X2JpdChSRUNWRVJSNiwgc2spO1xuIH1cbiBcbit2b2lkIF9faXA2X3NvY2tfc2V0X3RjbGFzcyhzdHJ1Y3Qgc29jayAqc2ssIGludCB2YWwpO1xuK3ZvaWQgaXA2X3NvY2tfc2V0X3RjbGFzcyhzdHJ1Y3Qgc29jayAqc2ssIGludCB2YWwpO1xuK1xuICNkZWZpbmUgSVBWNl9QUkVGRVJfU1JDX01BU0sgKElQVjZfUFJFRkVSX1NSQ19UTVAgfCBJUFY2X1BSRUZFUl9TUkNfUFVCTElDIHwgXFxcbiBcdFx0XHQgICAgICBJUFY2X1BSRUZFUl9TUkNfQ09BKVxuIFxuZGlmZiAtLWdpdCBhL25ldC9pcHY2L2lwdjZfc29ja2dsdWUuYyBiL25ldC9pcHY2L2lwdjZfc29ja2dsdWUuY1xuaW5kZXggYjRjOTc3NDM0YzJlMC4uYzU5ZjI1ZmJiMzM2ZCAxMDA2NDRcbi0tLSBhL25ldC9pcHY2L2lwdjZfc29ja2dsdWUuY1xuKysrIGIvbmV0L2lwdjYvaXB2Nl9zb2NrZ2x1ZS5jXG5AQCAtMzczLDYgKzM3MywyOCBAQCBzdGF0aWMgaW50IGlwdjZfc2V0X29wdF9oZHIoc3RydWN0IHNvY2sgKnNrLCBpbnQgb3B0bmFtZSwgc29ja3B0cl90IG9wdHZhbCxcbiBcdHJldHVybiBlcnI7XG4gfVxuIFxuK3ZvaWQgX19pcDZfc29ja19zZXRfdGNsYXNzKHN0cnVjdCBzb2NrICpzaywgaW50IHZhbClcbit7XG4rXHR1OCBvbGRfdGNsYXNzID0gaW5ldDZfc2soc2spLVx1MDAzZXRjbGFzcztcbitcbitcdGlmIChzay1cdTAwM2Vza190eXBlID09IFNPQ0tfU1RSRUFNKSB7XG4rXHRcdHZhbCBcdTAwMjY9IH5JTkVUX0VDTl9NQVNLO1xuK1x0XHR2YWwgfD0gb2xkX3RjbGFzcyBcdTAwMjYgSU5FVF9FQ05fTUFTSztcbitcdH1cbitcdGlmIChvbGRfdGNsYXNzICE9IHZhbCkge1xuK1x0XHRXUklURV9PTkNFKGluZXQ2X3NrKHNrKS1cdTAwM2V0Y2xhc3MsIHZhbCk7XG4rXHRcdHNrX2RzdF9yZXNldChzayk7XG4rXHR9XG4rfVxuK1xuK3ZvaWQgaXA2X3NvY2tfc2V0X3RjbGFzcyhzdHJ1Y3Qgc29jayAqc2ssIGludCB2YWwpXG4re1xuK1x0c29ja29wdF9sb2NrX3NvY2soc2spO1xuK1x0X19pcDZfc29ja19zZXRfdGNsYXNzKHNrLCB2YWwpO1xuK1x0c29ja29wdF9yZWxlYXNlX3NvY2soc2spO1xuK31cbitFWFBPUlRfU1lNQk9MKGlwNl9zb2NrX3NldF90Y2xhc3MpO1xuK1xuIGludCBkb19pcHY2X3NldHNvY2tvcHQoc3RydWN0IHNvY2sgKnNrLCBpbnQgbGV2ZWwsIGludCBvcHRuYW1lLFxuIFx0XHQgICAgICAgc29ja3B0cl90IG9wdHZhbCwgdW5zaWduZWQgaW50IG9wdGxlbilcbiB7XG5AQCAtNzEzLDE0ICs3MzUsNyBAQCBpbnQgZG9faXB2Nl9zZXRzb2Nrb3B0KHN0cnVjdCBzb2NrICpzaywgaW50IGxldmVsLCBpbnQgb3B0bmFtZSxcbiBcdFx0LyogUkZDIDM1NDIsIDYuNTogZGVmYXVsdCB0cmFmZmljIGNsYXNzIG9mIDB4MCAqL1xuIFx0XHRpZiAodmFsID09IC0xKVxuIFx0XHRcdHZhbCA9IDA7XG4tXHRcdGlmIChzay1cdTAwM2Vza190eXBlID09IFNPQ0tfU1RSRUFNKSB7XG4tXHRcdFx0dmFsIFx1MDAyNj0gfklORVRfRUNOX01BU0s7XG4tXHRcdFx0dmFsIHw9IG5wLVx1MDAzZXRjbGFzcyBcdTAwMjYgSU5FVF9FQ05fTUFTSztcbi1cdFx0fVxuLVx0XHRpZiAobnAtXHUwMDNldGNsYXNzICE9IHZhbCkge1xuLVx0XHRcdG5wLVx1MDAzZXRjbGFzcyA9IHZhbDtcbi1cdFx0XHRza19kc3RfcmVzZXQoc2spO1xuLVx0XHR9XG4rXHRcdF9faXA2X3NvY2tfc2V0X3RjbGFzcyhzaywgdmFsKTtcbiBcdFx0cmV0diA9IDA7XG4gXHRcdGJyZWFrO1xuIFxuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDhUMDc6Mjg6MjkuNDMwNzE5ODRaIiwiU2VxIjo0NywiTmVzdGluZyI6MywiVHlwZSI6ImxsbSIsIk5hbWUiOiJrbXNhbi1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MTI0NjI1NDM4OTMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTlZNZS1vRiBUQ1AgVHJhZmZpYyBDbGFzcyBJbXBsZW1lbnRhdGlvbiBSZXZpZXcqKlxuXG5Pa2F5LCBsZXQncyBicmVhayB0aGlzIGRvd24uIFRoaXMgcGF0Y2ggaXMgYWRkaW5nIHN1cHBvcnQgZm9yIHRoZSBgdGNsYXNzYCBvcHRpb24sIHNwZWNpZmljYWxseSBmb3IgSVB2NiB0cmFmZmljIGNsYXNzLCB3aXRoaW4gdGhlIE5WTWUtb0YgVENQIHRyYW5zcG9ydC4gVGhpcyBtZWFucyB3ZSdyZSBhbGxvd2luZyB1c2VycyB0byBzcGVjaWZ5IHRoZSB0cmFmZmljIGNsYXNzIGZvciBOVk1lLW9GIFRDUCBjb25uZWN0aW9ucywgZW5hYmxpbmcgUXVhbGl0eSBvZiBTZXJ2aWNlIChRb1MpIGNvbmZpZ3VyYXRpb25zLlxuXG5UaGUgY29yZSBvZiBpdCBpcyBzdHJhaWdodGZvcndhcmQuIFdlJ3JlIGFkZGluZyBgTlZNRl9PUFRfVENMQVNTYCB0byB0aGUgYG9wdF90b2tlbnNgLCBwYXJzaW5nIHRoZSB2YWx1ZSBpbiBgbnZtZl9wYXJzZV9vcHRpb25zYCBhbmQgc3RvcmluZyBpdCBpbiBgb3B0cy1cdTAwM2V0Y2xhc3NgLiBUaGVuLCBjcnVjaWFsbHksIHdlJ3JlIHVzaW5nIGEgaGVscGVyIGZ1bmN0aW9uLCBgaXA2X3NvY2tfc2V0X3RjbGFzc2AgKHdoaWNoIGlzIGV4dHJhY3RlZCBmcm9tIGBkb19pcHY2X3NldHNvY2tvcHRgKSwgdG8gc2V0IHRoZSB0cmFmZmljIGNsYXNzIG9uIHRoZSBzb2NrZXQgaXRzZWxmLiBUaGUgdGFyZ2V0IHNpZGUgYWxzbyBzZXRzIGl0IGJhc2VkIG9uIHJlY2VpdmVkIGZsb3cgaW5mb3JtYXRpb24uXG5cbk15IHByaW1hcnkgY29uY2VybiwgYXMgYWx3YXlzLCBpcyBtZW1vcnkgc2FmZXR5LCBzcGVjaWZpY2FsbHksIHRoZSByaXNrIG9mIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHVzYWdlLiBJIG5lZWQgdG8gbWFrZSBzdXJlIHRoaXMgaXNuJ3QgaW50cm9kdWNpbmcgYW55IG5ldyB2dWxuZXJhYmlsaXRpZXMuIFNvLCBsZXQncyBzdGVwIHRocm91Z2ggaXQ6XG5cbjEuICBgb3B0cy1cdTAwM2V0Y2xhc3NgIGlzIGV4cGxpY2l0bHkgaW5pdGlhbGl6ZWQgdG8gYC0xYCBpbiBgbnZtZl9wYXJzZV9vcHRpb25zYC4gR29vZCBzdGFydC5cbjIuICBUaGUgdmFsdWUgaXRzZWxmIGlzIHBhcnNlZCB1c2luZyBgbWF0Y2hfaW50KGFyZ3MsIFx1MDAyNnRva2VuKWAuIElmIHRoZSBwYXJzaW5nIGZhaWxzLCB3ZSBlcnJvciBvdXQsIHdoaWNoIHByZXZlbnRzIHRoZSBwcm9jZXNzIGZyb20gdXNpbmcgYW4gdW5pbml0aWFsaXplZCB2YWx1ZS5cbjMuICBgaXA2X3NvY2tfc2V0X3RjbGFzc2AgdGFrZXMgYW4gaW50ZWdlciwgYHZhbGAsIGFuZCBzZXRzIGl0IG9uIGBpbmV0Nl9zayhzayktXHUwMDNldGNsYXNzYC4gVGhlIGludGVnZXIgaXMgY29taW5nIGRpcmVjdGx5IGZyb20gdGhlIHBhcnNlZCB2YWx1ZSwgc28gdGhlcmUncyBubyB3YXkgdG8gcmVhZCBhbiB1bmluaXRpYWxpemVkIG1lbW9yeSB0aGVyZS5cbjQuICBJbiB0aGUgdGFyZ2V0IHNpZGUsIGBudm1ldF90Y3Bfc2V0X3F1ZXVlX3NvY2tgIHB1bGxzIHRoZSB0cmFmZmljIGNsYXNzIChgcmN2X3RjbGFzc2ApIGZyb20gYGluZXQ2X3NrKHNvY2stXHUwMDNlc2spLVx1MDAzZXJjdl9mbG93aW5mb2AuIGBpcDZfdGNsYXNzYCBpcyBqdXN0IGFuIGlubGluZSBmdW5jdGlvbiB0aGF0IGV4dHJhY3RzIHRoZSB0cmFmZmljIGNsYXNzIGZyb20gYSBgX19iZTMyYC4gTm93LCB0aGUgaW1wb3J0YW50IHF1ZXN0aW9uIGlzOiBpcyBgcmN2X2Zsb3dpbmZvYCBpbml0aWFsaXplZD8gQWZ0ZXIgY2hlY2tpbmcgdGhlIGNvZGUsIGl0J3MgcGFydCBvZiB0aGUgc29ja2V0IHN0cnVjdHVyZSwgd2hpY2ggaXMgaW5pdGlhbGl6ZWQgd2hlbiB0aGUgc29ja2V0IGlzIGNyZWF0ZWQuIFRoYXQgcGFydCBvZiB0aGUgY29kZSBpcyBoYW5kbGVkIGJ5IHRoZSBuZXR3b3JraW5nIHN0YWNrIGFuZCBpdHMgc29ja2V0IGluaXRpYWxpemF0aW9uLCBubyBtZW1vcnkgaW5pdGlhbGl6YXRpb24gYnVncyB0aGVyZS5cblxuVGhlcmUgYXJlIG5vIG5ldyBzdHJ1Y3R1cmVzIHNlbnQgdG8gdXNlcnNwYWNlLCBubyBuZXcgbWVtb3J5IGFsbG9jYXRpb25zIHdoZXJlIHVuaW5pdGlhbGl6ZWQgZmllbGRzIGNvdWxkIGJlIHJlYWQsIGFuZCB0aGUgY2hhbmdlcyBhcmUgbGltaXRlZCB0byBjb250cm9sIGZsb3cgYW5kIHNvY2tldCBvcHRpb24gc2V0dGluZ3MuIFRoZSBkYXRhIGJlaW5nIHVzZWQgaXMgYSBzaW1wbGUgaW50ZWdlciwgYHRjbGFzc2AuIFNvLCB0aGUgcmlzayBvZiB1bmluaXRpYWxpemVkIG1lbW9yeSBpc3N1ZXMgc2VlbXMgbG93LlxuXG5MZXQgbWUganVzdCBkb3VibGUtY2hlY2sgdGhhdCB0YXJnZXQgc2lkZSBjb2RlIGFnYWluOlxuYGBgY1xuI2lmIElTX0VOQUJMRUQoQ09ORklHX0lQVjYpXG5cdGlmIChzb2NrLVx1MDAzZXNrLVx1MDAzZXNrX2ZhbWlseSA9PSBBRl9JTkVUNikge1xuXHRcdHU4IHJjdl90Y2xhc3MgPSBpcDZfdGNsYXNzKGluZXQ2X3NrKHNvY2stXHUwMDNlc2spLVx1MDAzZXJjdl9mbG93aW5mbyk7XG5cblx0XHRpZiAocmN2X3RjbGFzcyBcdTAwM2UgMClcblx0XHRcdGlwNl9zb2NrX3NldF90Y2xhc3Moc29jay1cdTAwM2VzaywgcmN2X3RjbGFzcyk7XG5cdH1cbiNlbmRpZlxuYGBgXG5cbk9rYXksIHRoZSBgaW5ldDZfc2soc29jay1cdTAwM2VzayktXHUwMDNlcmN2X2Zsb3dpbmZvYCBwYXJ0IGlzIGFjdHVhbGx5IHBvcHVsYXRlZCBieSB0aGUgbmV0d29ya2luZyBzdGFjayB3aGVuIHdlIHJlY2VpdmUgdGhlIHBhY2tldHMsIHdoaWNoIG1lYW5zIGl0IGlzIGluaXRpYWxpemVkIGFzIHBhcnQgb2YgYHN0cnVjdCBpcHY2X3BpbmZvYC5cblxuU2luY2UgdGhlcmUgYXJlIG5vIG5ldyBhbGxvY2F0aW9ucywgbm8gZXhwb3N1cmUgb2YgdW5pbml0aWFsaXplZCBtZW1vcnksIGFuZCB0aGlzIHVzZXMgc3RhbmRhcmQgc29ja2V0IHN0YXRlLCBpdCBhcHBlYXJzIHRoYXQgdGhpcyBwYXRjaCBpcyBzYWZlIGZyb20gdW5pbml0aWFsaXplZCBtZW1vcnkgcmVhZHMuIFN0YW5kYXJkIEtBU0FOIGZ1enppbmcgaXMgdGhlIGJlc3QgYXBwcm9hY2ggdG8gZmluZCBhbnkgcG90ZW50aWFsIG1lbW9yeSBjb3JydXB0aW9uLCBhbHRob3VnaCBpdCBkb2VzIG5vdCBzZWVtIGxpa2VseSBoZXJlLlxuXG5UaGVyZWZvcmUsIE5lZWRzS01TQU4gPSBmYWxzZS4gVGhlIHBhdGNoIGludHJvZHVjZXMgYSBuZXcgTlZNZS1vRiBUQ1Agb3B0aW9uIChgdGNsYXNzYCksIGFwcGxpZXMgaXQgdXNpbmcgc3RhbmRhcmQgSVB2NiBoZWxwZXJzLCBhbmQgZG9lc24ndCBpbnRyb2R1Y2UgYW55IG5ldyBkYXRhIHN0cnVjdHVyZXMgb3IgbWVtb3J5IGV4cG9zdXJlcy4gS0FTQU4gc2hvdWxkIGJlIHN1ZmZpY2llbnQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQ1MjMsIk91dHB1dFRva2VucyI6MTUxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NjgyLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDhUMDc6Mjg6NDEuODkzMjY2NTczWiIsIlNlcSI6NDgsIk5lc3RpbmciOjMsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTc0MzAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJLTVNBTlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBpbnRyb2R1Y2VzIHBhcnNpbmcgZm9yIGEgbmV3IE5WTWUtb0YgVENQIG9wdGlvbiAoYHRjbGFzc2ApIGFuZCBhcHBsaWVzIGl0IHRvIHRoZSB1bmRlcmx5aW5nIHNvY2tldCB1c2luZyBzdGFuZGFyZCBJUHY2IHNvY2tldCBvcHRpb24gaGVscGVycy4gSXQgZXh0cmFjdHMgdGhlIHRyYWZmaWMgY2xhc3Mgc2V0dGluZyBsb2dpYyBpbnRvIGEgbmV3IGhlbHBlciBmdW5jdGlvbiBgaXA2X3NvY2tfc2V0X3RjbGFzc2AuIE5vIG5ldyBkYXRhIHN0cnVjdHVyZXMgYXJlIGFsbG9jYXRlZCwgY29waWVkIHRvIHVzZXIgc3BhY2UsIG9yIHNlbnQgb3ZlciB0aGUgbmV0d29yayBpbiBhIHdheSB0aGF0IGNvdWxkIGV4cG9zZSB1bmluaXRpYWxpemVkIG1lbW9yeS4gVGhlIHZhcmlhYmxlcyBhbmQgZmllbGRzIGludm9sdmVkIGFyZSBzaW1wbGUgaW50ZWdlcnMgYW5kIGFyZSBwcm9wZXJseSBpbml0aWFsaXplZC4gU3RhbmRhcmQgS0FTQU4gZnV6emluZyBpcyBzdWZmaWNpZW50IHRvIGNhdGNoIGFueSBwb3RlbnRpYWwgbWVtb3J5IGNvcnJ1cHRpb24sIG91dC1vZi1ib3VuZHMsIG9yIHVzZS1hZnRlci1mcmVlIGJ1Z3MuXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggaW50cm9kdWNlcyBwYXJzaW5nIGZvciBhIG5ldyBOVk1lLW9GIFRDUCBvcHRpb24gKGB0Y2xhc3NgKSBhbmQgYXBwbGllcyBpdCB0byB0aGUgdW5kZXJseWluZyBzb2NrZXQgdXNpbmcgc3RhbmRhcmQgSVB2NiBzb2NrZXQgb3B0aW9uIGhlbHBlcnMuIEl0IGV4dHJhY3RzIHRoZSB0cmFmZmljIGNsYXNzIHNldHRpbmcgbG9naWMgaW50byBhIG5ldyBoZWxwZXIgZnVuY3Rpb24gYGlwNl9zb2NrX3NldF90Y2xhc3NgLiBObyBuZXcgZGF0YSBzdHJ1Y3R1cmVzIGFyZSBhbGxvY2F0ZWQsIGNvcGllZCB0byB1c2VyIHNwYWNlLCBvciBzZW50IG92ZXIgdGhlIG5ldHdvcmsgaW4gYSB3YXkgdGhhdCBjb3VsZCBleHBvc2UgdW5pbml0aWFsaXplZCBtZW1vcnkuIFRoZSB2YXJpYWJsZXMgYW5kIGZpZWxkcyBpbnZvbHZlZCBhcmUgc2ltcGxlIGludGVnZXJzIGFuZCBhcmUgcHJvcGVybHkgaW5pdGlhbGl6ZWQuIFN0YW5kYXJkIEtBU0FOIGZ1enppbmcgaXMgc3VmZmljaWVudCB0byBjYXRjaCBhbnkgcG90ZW50aWFsIG1lbW9yeSBjb3JydXB0aW9uLCBvdXQtb2YtYm91bmRzLCBvciB1c2UtYWZ0ZXItZnJlZSBidWdzLlwiLFxuICBcIk5lZWRzS01TQU5cIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0udG9rZW5zIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnVG9vbER1ciA9IHN0YXRzLnRvb2wuY291bnQgPiAwID8gKHN0YXRzLnRvb2wuZHVyYXRpb24gLyBzdGF0cy50b29sLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCgkJCWNvbnN0IGxsbVN1bWFyeUNlbGxzID0gW3N0YXRzLmxsbS5jb3VudCwgc3RhdHMubGxtLnRva2VucywgYXZnTGxtVG9rZW4sIHN0YXRzLmxsbS5kdXJhdGlvbiwgYXZnTGxtRHVyXTsKCQkJY29uc3QgdG9vbFN1bW1hcnlDZWxscyA9IFtzdGF0cy50b29sLmNvdW50LCBzdGF0cy50b29sLmR1cmF0aW9uLCBhdmdUb29sRHVyXTsKCgkJCWNvbnN0IGxsbVN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xsbV9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJbGxtU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IGxsbVRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJbGxtU3VtYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCWxsbVRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCWxsbVN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKGxsbVRyKTsKCgkJCWNvbnN0IHRvb2xTdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b29sX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQl0b29sU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IHRvb2xUciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCXRvb2xTdW1tYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCXRvb2xUci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQl0b29sU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQodG9vbFRyKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgZmlsdGVyZWRTdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gWyJsbG0iLCAidG9vbCJdLmluY2x1ZGVzKGQuVHlwZSkpOwoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdEdXJhdGlvbicpOwoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOyAKCgkJCWZpbHRlcmVkU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCQoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7CgkJCQlsZXQgdG9vbHRpcCA9IHMuTmFtZTsKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iICYmIHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCQkJCWRhdGEuYWRkUm93KFtgJHtzLlNlcX1gLCBkdXIsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUaW1lIENvbnN1bXB0aW9uIG9mIExMTS9Ub29sIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0vVG9vbCBTdGVwcycsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdTZWNvbmRzJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkdXJhdGlvbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgbGxtU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IGQuVHlwZSA9PT0gImxsbSIpOwoJCQlpZiAobGxtU3RlcHMubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdUb2tlbnMnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAnc3R5bGUnfSk7CQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOwkKCgkJCWNvbnN0IGFnZW50Q29sb3JzID0ge307CgkJCWNvbnN0IHBhbGV0dGUgPSBbJyM0Mjg1RjQnLCAnI0RCNDQzNycsICcjRjRCNDAwJywgJyMwRjlENTgnLCAnI0FCNDdCQycsICcjMDBBQ0MxJ107CgkJCWxldCBjb2xvcklkeCA9IDA7CgkJCWNvbnN0IGFnZW50TExNQ291bnRzID0ge307CgkJCWxsbVN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQlpZiAoIWFnZW50Q29sb3JzW3MuTmFtZV0pIHsKCQkJCQlhZ2VudENvbG9yc1tzLk5hbWVdID0gcGFsZXR0ZVtjb2xvcklkeCAlIHBhbGV0dGUubGVuZ3RoXTsKCQkJCQljb2xvcklkeCsrOwoJCQkJfQoKCQkJCWFnZW50TExNQ291bnRzW3MuTmFtZV0gPSAoYWdlbnRMTE1Db3VudHNbcy5OYW1lXSB8fCAwKSArIDE7CgkJCQljb25zdCBsYWJlbCA9IGAke3MuTmFtZX0tJHthZ2VudExMTUNvdW50c1tzLk5hbWVdfWA7CgkJCQljb25zdCB0b3RhbFRva2VucyA9IHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnM7CgkJCQljb25zdCBzdHlsZSA9IGBjb2xvcjogJHthZ2VudENvbG9yc1tzLk5hbWVdfWA7CgkJCQlsZXQgdG9vbHRpcCA9IGBUb3RhbCBUb2tlbnM6ICR7dG90YWxUb2tlbnN9XG4oSW46ICR7cy5JbnB1dFRva2Vuc30sIE91dDogJHtzLk91dHB1dFRva2Vuc30sIFRob3VnaHRzOiAke3MuT3V0cHV0VGhvdWdodHNUb2tlbnN9KWA7CgkJCQlpZiAocy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoKCQkJCWRhdGEuYWRkUm93KFtsYWJlbCwgdG90YWxUb2tlbnMsIHN0eWxlLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVG9rZW4gQ29uc3VtcHRpb24gYnkgTExNIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0gQ2FsbCBTZXF1ZW5jZScsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdDb25zdW1lZCBUb2tlbnMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rva2VuX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgkJbGV0IGFsbEV4cGFuZGVkID0gZmFsc2U7CgkJZnVuY3Rpb24gdG9nZ2xlQWxsRGV0YWlscygpIHsKCQkJYWxsRXhwYW5kZWQgPSAhYWxsRXhwYW5kZWQ7CgkJCWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ2RldGFpbHMnKS5mb3JFYWNoKGQgPT4gewoJCQkJaWYgKGFsbEV4cGFuZGVkKSBkLnNldEF0dHJpYnV0ZSgnb3BlbicsICcnKTsKCQkJCWVsc2UgZC5yZW1vdmVBdHRyaWJ1dGUoJ29wZW4nKTsKCQkJfSk7CgkJfQoJPC9zY3JpcHQ+CgoKPC9ib2R5Pgo8L2h0bWw+Cg==" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowlk68m[0].run-triage(0) Phase: Succeeded StartedAt: 2026-08-08 07:05:54 +0000 UTC FinishedAt: 2026-08-08 07:28:44 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "net-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git", "commit_hash": "ee78f7f8d894926003943240127a886653084cb1", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "NVME_TCP", "NVME_TARGET_TCP", "NVME_TARGET", "IPV6" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "net-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git", "commit_hash": "ee78f7f8d894926003943240127a886653084cb1", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "NVME_TCP", "NVME_TARGET_TCP", "NVME_TARGET", "IPV6" ], "series_id": "71d137bf-d5fc-4c33-8df6-32cb960cb9b6" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "nvmf_dev_write", "nvme_tcp_create_ctrl", "nvmet_tcp_accept_work", "do_ipv6_setsockopt", "ip6_sock_set_tclass" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db" ], "skip_cover_check": false, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA4IDA3OjI2PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+Mm08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O05WTUVfVENQJiMzNDssCiAgICAmIzM0O05WTUVfVEFSR0VUX1RDUCYjMzQ7LAogICAgJiMzNDtOVk1FX1RBUkdFVCYjMzQ7LAogICAgJiMzNDtJUFY2JiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7bnZtZl9kZXZfd3JpdGUmIzM0OywKICAgICYjMzQ7bnZtZV90Y3BfY3JlYXRlX2N0cmwmIzM0OywKICAgICYjMzQ7bnZtZXRfdGNwX2FjY2VwdF93b3JrJiMzNDssCiAgICAmIzM0O2RvX2lwdjZfc2V0c29ja29wdCYjMzQ7LAogICAgJiMzNDtpcDZfc29ja19zZXRfdGNsYXNzJiMzNDsKICBdLAogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggaW50cm9kdWNlcyBwYXJzaW5nIGZvciBhIG5ldyBOVk1lLW9GIFRDUCBvcHRpb24gKGB0Y2xhc3NgKSBhbmQgYXBwbGllcyBpdCB0byB0aGUgdW5kZXJseWluZyBzb2NrZXQgdXNpbmcgc3RhbmRhcmQgSVB2NiBzb2NrZXQgb3B0aW9uIGhlbHBlcnMuIEl0IGV4dHJhY3RzIHRoZSB0cmFmZmljIGNsYXNzIHNldHRpbmcgbG9naWMgaW50byBhIG5ldyBoZWxwZXIgZnVuY3Rpb24gYGlwNl9zb2NrX3NldF90Y2xhc3NgLiBObyBuZXcgZGF0YSBzdHJ1Y3R1cmVzIGFyZSBhbGxvY2F0ZWQsIGNvcGllZCB0byB1c2VyIHNwYWNlLCBvciBzZW50IG92ZXIgdGhlIG5ldHdvcmsgaW4gYSB3YXkgdGhhdCBjb3VsZCBleHBvc2UgdW5pbml0aWFsaXplZCBtZW1vcnkuIFRoZSB2YXJpYWJsZXMgYW5kIGZpZWxkcyBpbnZvbHZlZCBhcmUgc2ltcGxlIGludGVnZXJzIGFuZCBhcmUgcHJvcGVybHkgaW5pdGlhbGl6ZWQuIFN0YW5kYXJkIEtBU0FOIGZ1enppbmcgaXMgc3VmZmljaWVudCB0byBjYXRjaCBhbnkgcG90ZW50aWFsIG1lbW9yeSBjb3JydXB0aW9uLCBvdXQtb2YtYm91bmRzLCBvciB1c2UtYWZ0ZXItZnJlZSBidWdzLiYjMzQ7LAogICYjMzQ7TmVlZHNLTVNBTiYjMzQ7OiBmYWxzZSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBhZGRzIHN1cHBvcnQgZm9yIHRoZSBgdGNsYXNzYCAoSVB2NiB0cmFmZmljIGNsYXNzKSBvcHRpb24gdG8gdGhlIE5WTWUgb3ZlciBUQ1AgaG9zdCBhbmQgdGFyZ2V0IGRyaXZlcnMuIEl0IG1vZGlmaWVzIHRoZSBOVk1lIGZhYnJpY3Mgb3B0aW9uIHBhcnNpbmcsIHNldHMgdGhlIHRyYWZmaWMgY2xhc3Mgb24gdGhlIFRDUCBzb2NrZXRzIHVzaW5nIGBpcDZfc29ja19zZXRfdGNsYXNzYCwgYW5kIHJlZmFjdG9ycyBJUHY2IHNvY2tldCBnbHVlIHRvIGV4cG9ydCB0aGlzIGZ1bmN0aW9uLiBUaGVzZSBhcmUgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHJlYWNoYWJsZSBjb3JlIG5ldHdvcmtpbmcgYW5kIE5WTWUgZHJpdmVycywgd2hpY2ggY2FuIGJlIHRlc3RlZCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgdXNpbmcgbG9vcGJhY2sgb3IgdmlydHVhbCBuZXR3b3JrIGludGVyZmFjZXMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDggMDc6MjY8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCA4NDc3M2MwNGU2ZGExNGUzNDBhMGVkMGExNjU2ZmYyNzFmMTEzZDM4XG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFNhdCBBdWcgOCAwNzoyNjoyMSAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL252bWUvaG9zdC9mYWJyaWNzLmMgYi9kcml2ZXJzL252bWUvaG9zdC9mYWJyaWNzLmNcbmluZGV4IGFjM2Q0ZjQwMDYwMWYuLjY0M2MwM2RjN2JjYjMgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL252bWUvaG9zdC9mYWJyaWNzLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbnZtZS9ob3N0L2ZhYnJpY3MuY1xuQEAgLTY5NSw2ICYjNDM7Njk1LDcgQEAgc3RhdGljIGNvbnN0IG1hdGNoX3RhYmxlX3Qgb3B0X3Rva2VucyA9IHtcbiBcdHsgTlZNRl9PUFRfTlJfV1JJVEVfUVVFVUVTLFx0XCYjMzQ7bnJfd3JpdGVfcXVldWVzPSVkXCYjMzQ7XHR9LFxuIFx0eyBOVk1GX09QVF9OUl9QT0xMX1FVRVVFUyxcdFwmIzM0O25yX3BvbGxfcXVldWVzPSVkXCYjMzQ7XHR9LFxuIFx0eyBOVk1GX09QVF9UT1MsXHRcdFx0XCYjMzQ7dG9zPSVkXCYjMzQ7XHRcdH0sXG4mIzQzO1x0eyBOVk1GX09QVF9UQ0xBU1MsXHRcdFwmIzM0O3RjbGFzcz0lZFwmIzM0O1x0XHR9LFxuICNpZmRlZiBDT05GSUdfTlZNRV9UQ1BfVExTXG4gXHR7IE5WTUZfT1BUX0tFWVJJTkcsXHRcdFwmIzM0O2tleXJpbmc9JWRcJiMzNDtcdFx0fSxcbiBcdHsgTlZNRl9PUFRfVExTX0tFWSxcdFx0XCYjMzQ7dGxzX2tleT0lZFwmIzM0O1x0XHR9LFxuQEAgLTczNCw2ICYjNDM7NzM1LDcgQEAgc3RhdGljIGludCBudm1mX3BhcnNlX29wdGlvbnMoc3RydWN0IG52bWZfY3RybF9vcHRpb25zICpvcHRzLFxuIFx0b3B0cy1cdTAwM2VoZHJfZGlnZXN0ID0gZmFsc2U7XG4gXHRvcHRzLVx1MDAzZWRhdGFfZGlnZXN0ID0gZmFsc2U7XG4gXHRvcHRzLVx1MDAzZXRvcyA9IC0xOyAvKiBcdTAwM2MgMCA9PSB1c2UgdHJhbnNwb3J0IGRlZmF1bHQgKi9cbiYjNDM7XHRvcHRzLVx1MDAzZXRjbGFzcyA9IC0xOyAvKiBcdTAwM2MgMCA9PSB1c2UgdHJhbnNwb3J0IGRlZmF1bHQgKi9cbiBcdG9wdHMtXHUwMDNldGxzID0gZmFsc2U7XG4gXHRvcHRzLVx1MDAzZXRsc19rZXkgPSBOVUxMO1xuIFx0b3B0cy1cdTAwM2VrZXlyaW5nID0gTlVMTDtcbkBAIC05OTEsNiAmIzQzOzk5MywyMiBAQCBzdGF0aWMgaW50IG52bWZfcGFyc2Vfb3B0aW9ucyhzdHJ1Y3QgbnZtZl9jdHJsX29wdGlvbnMgKm9wdHMsXG4gXHRcdFx0fVxuIFx0XHRcdG9wdHMtXHUwMDNldG9zID0gdG9rZW47XG4gXHRcdFx0YnJlYWs7XG4mIzQzO1x0XHRjYXNlIE5WTUZfT1BUX1RDTEFTUzpcbiYjNDM7XHRcdFx0aWYgKG1hdGNoX2ludChhcmdzLCBcdTAwMjZ0b2tlbikpIHtcbiYjNDM7XHRcdFx0XHRyZXQgPSAtRUlOVkFMO1xuJiM0MztcdFx0XHRcdGdvdG8gb3V0O1xuJiM0MztcdFx0XHR9XG4mIzQzO1x0XHRcdGlmICh0b2tlbiBcdTAwM2MgMCkge1xuJiM0MztcdFx0XHRcdHByX2VycihcJiMzNDtJbnZhbGlkIHRyYWZmaWMgY2xhc3MgJWRcXG5cJiMzNDssIHRva2VuKTtcbiYjNDM7XHRcdFx0XHRyZXQgPSAtRUlOVkFMO1xuJiM0MztcdFx0XHRcdGdvdG8gb3V0O1xuJiM0MztcdFx0XHR9XG4mIzQzO1x0XHRcdGlmICh0b2tlbiBcdTAwM2UgMjU1KSB7XG4mIzQzO1x0XHRcdFx0cHJfd2FybihcJiMzNDtDbGFtcGluZyB0cmFmZmljIGNsYXNzIHRvIDI1NVxcblwmIzM0Oyk7XG4mIzQzO1x0XHRcdFx0dG9rZW4gPSAyNTU7XG4mIzQzO1x0XHRcdH1cbiYjNDM7XHRcdFx0b3B0cy1cdTAwM2V0Y2xhc3MgPSB0b2tlbjtcbiYjNDM7XHRcdFx0YnJlYWs7XG4gXHRcdGNhc2UgTlZNRl9PUFRfS0VZUklORzpcbiBcdFx0XHRpZiAobWF0Y2hfaW50KGFyZ3MsIFx1MDAyNmtleV9pZCkgfHwga2V5X2lkIFx1MDAzYz0gMCkge1xuIFx0XHRcdFx0cmV0ID0gLUVJTlZBTDtcbmRpZmYgLS1naXQgYS9kcml2ZXJzL252bWUvaG9zdC9mYWJyaWNzLmggYi9kcml2ZXJzL252bWUvaG9zdC9mYWJyaWNzLmhcbmluZGV4IGNhZjU1MDNkMDgzMzIuLjNkZmQ0MGJkODk2MDUgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL252bWUvaG9zdC9mYWJyaWNzLmhcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbnZtZS9ob3N0L2ZhYnJpY3MuaFxuQEAgLTY3LDYgJiM0Mzs2Nyw3IEBAIGVudW0ge1xuIFx0TlZNRl9PUFRfS0VZUklOR1x0PSAxIFx1MDAzY1x1MDAzYyAyNixcbiBcdE5WTUZfT1BUX1RMU19LRVlcdD0gMSBcdTAwM2NcdTAwM2MgMjcsXG4gXHROVk1GX09QVF9DT05DQVRcdFx0PSAxIFx1MDAzY1x1MDAzYyAyOCxcbiYjNDM7XHROVk1GX09QVF9UQ0xBU1NcdFx0PSAxIFx1MDAzY1x1MDAzYyAyOSxcbiB9O1xuIFxuIC8qKlxuQEAgLTEwOSw2ICYjNDM7MTEwLDcgQEAgZW51bSB7XG4gICogQG5yX3dyaXRlX3F1ZXVlczogbnVtYmVyIG9mIHF1ZXVlcyBmb3Igd3JpdGUgSS9PXG4gICogQG5yX3BvbGxfcXVldWVzOiBudW1iZXIgb2YgcXVldWVzIGZvciBwb2xsaW5nIEkvT1xuICAqIEB0b3M6IHR5cGUgb2Ygc2VydmljZVxuJiM0MzsgKiBAdGNsYXNzOiBJUHY2IHRyYWZmaWMgY2xhc3NcbiAgKiBAZmFzdF9pb19mYWlsX3RtbzogRmFzdCBJL08gZmFpbCB0aW1lb3V0IGluIHNlY29uZHNcbiAgKi9cbiBzdHJ1Y3QgbnZtZl9jdHJsX29wdGlvbnMge1xuQEAgLTEzOSw2ICYjNDM7MTQxLDcgQEAgc3RydWN0IG52bWZfY3RybF9vcHRpb25zIHtcbiBcdHVuc2lnbmVkIGludFx0XHRucl93cml0ZV9xdWV1ZXM7XG4gXHR1bnNpZ25lZCBpbnRcdFx0bnJfcG9sbF9xdWV1ZXM7XG4gXHRpbnRcdFx0XHR0b3M7XG4mIzQzO1x0aW50XHRcdFx0dGNsYXNzO1xuIFx0aW50XHRcdFx0ZmFzdF9pb19mYWlsX3RtbztcbiB9O1xuIFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbnZtZS9ob3N0L3RjcC5jIGIvZHJpdmVycy9udm1lL2hvc3QvdGNwLmNcbmluZGV4IGJhNWM3YjNlMmE3YzYuLmNhYmJmNjdkMjRmODggMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL252bWUvaG9zdC90Y3AuY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9udm1lL2hvc3QvdGNwLmNcbkBAIC0xODM3LDYgJiM0MzsxODM3LDExIEBAIHN0YXRpYyBpbnQgbnZtZV90Y3BfYWxsb2NfcXVldWUoc3RydWN0IG52bWVfY3RybCAqbmN0cmwsIGludCBxaWQsXG4gXHQvKiBTZXQgc29ja2V0IHR5cGUgb2Ygc2VydmljZSAqL1xuIFx0aWYgKG5jdHJsLVx1MDAzZW9wdHMtXHUwMDNldG9zIFx1MDAzZT0gMClcbiBcdFx0aXBfc29ja19zZXRfdG9zKHF1ZXVlLVx1MDAzZXNvY2stXHUwMDNlc2ssIG5jdHJsLVx1MDAzZW9wdHMtXHUwMDNldG9zKTtcbiYjNDM7I2lmIElTX0VOQUJMRUQoQ09ORklHX0lQVjYpXG4mIzQzO1x0aWYgKG5jdHJsLVx1MDAzZW9wdHMtXHUwMDNldGNsYXNzIFx1MDAzZT0gMCBcdTAwMjZcdTAwMjZcbiYjNDM7XHQgICAgcXVldWUtXHUwMDNlc29jay1cdTAwM2Vzay1cdTAwM2Vza19mYW1pbHkgPT0gQUZfSU5FVDYpXG4mIzQzO1x0XHRpcDZfc29ja19zZXRfdGNsYXNzKHF1ZXVlLVx1MDAzZXNvY2stXHUwMDNlc2ssIG5jdHJsLVx1MDAzZW9wdHMtXHUwMDNldGNsYXNzKTtcbiYjNDM7I2VuZGlmXG4gXG4gXHQvKiBTZXQgMTAgc2Vjb25kcyB0aW1lb3V0IGZvciBpY3Jlc3AgcmVjdm1zZyAqL1xuIFx0cXVldWUtXHUwMDNlc29jay1cdTAwM2Vzay1cdTAwM2Vza19yY3Z0aW1lbyA9IDEwICogSFo7XG5AQCAtMzA0MSw3ICYjNDM7MzA0Niw4IEBAIHN0YXRpYyBzdHJ1Y3QgbnZtZl90cmFuc3BvcnRfb3BzIG52bWVfdGNwX3RyYW5zcG9ydCA9IHtcbiBcdFx0XHQgIE5WTUZfT1BUX0hPU1RfVFJBRERSIHwgTlZNRl9PUFRfQ1RSTF9MT1NTX1RNTyB8XG4gXHRcdFx0ICBOVk1GX09QVF9IRFJfRElHRVNUIHwgTlZNRl9PUFRfREFUQV9ESUdFU1QgfFxuIFx0XHRcdCAgTlZNRl9PUFRfTlJfV1JJVEVfUVVFVUVTIHwgTlZNRl9PUFRfTlJfUE9MTF9RVUVVRVMgfFxuLVx0XHRcdCAgTlZNRl9PUFRfVE9TIHwgTlZNRl9PUFRfSE9TVF9JRkFDRSB8IE5WTUZfT1BUX1RMUyB8XG4mIzQzO1x0XHRcdCAgTlZNRl9PUFRfVE9TIHwgTlZNRl9PUFRfVENMQVNTIHxcbiYjNDM7XHRcdFx0ICBOVk1GX09QVF9IT1NUX0lGQUNFIHwgTlZNRl9PUFRfVExTIHxcbiBcdFx0XHQgIE5WTUZfT1BUX0tFWVJJTkcgfCBOVk1GX09QVF9UTFNfS0VZIHwgTlZNRl9PUFRfQ09OQ0FULFxuIFx0LmNyZWF0ZV9jdHJsXHQ9IG52bWVfdGNwX2NyZWF0ZV9jdHJsLFxuIH07XG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9udm1lL3RhcmdldC90Y3AuYyBiL2RyaXZlcnMvbnZtZS90YXJnZXQvdGNwLmNcbmluZGV4IDc1YTI3NmQ3M2JlM2UuLjFkNjU1MTllYmMwZmIgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL252bWUvdGFyZ2V0L3RjcC5jXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL252bWUvdGFyZ2V0L3RjcC5jXG5AQCAtMTcyNSw2ICYjNDM7MTcyNSwxNCBAQCBzdGF0aWMgaW50IG52bWV0X3RjcF9zZXRfcXVldWVfc29jayhzdHJ1Y3QgbnZtZXRfdGNwX3F1ZXVlICpxdWV1ZSlcbiBcdC8qIFNldCBzb2NrZXQgdHlwZSBvZiBzZXJ2aWNlICovXG4gXHRpZiAoaW5ldC1cdTAwM2VyY3ZfdG9zIFx1MDAzZSAwKVxuIFx0XHRpcF9zb2NrX3NldF90b3Moc29jay1cdTAwM2VzaywgaW5ldC1cdTAwM2VyY3ZfdG9zKTtcbiYjNDM7I2lmIElTX0VOQUJMRUQoQ09ORklHX0lQVjYpXG4mIzQzO1x0aWYgKHNvY2stXHUwMDNlc2stXHUwMDNlc2tfZmFtaWx5ID09IEFGX0lORVQ2KSB7XG4mIzQzO1x0XHR1OCByY3ZfdGNsYXNzID0gaXA2X3RjbGFzcyhpbmV0Nl9zayhzb2NrLVx1MDAzZXNrKS1cdTAwM2VyY3ZfZmxvd2luZm8pO1xuJiM0MztcbiYjNDM7XHRcdGlmIChyY3ZfdGNsYXNzIFx1MDAzZSAwKVxuJiM0MztcdFx0XHRpcDZfc29ja19zZXRfdGNsYXNzKHNvY2stXHUwMDNlc2ssIHJjdl90Y2xhc3MpO1xuJiM0MztcdH1cbiYjNDM7I2VuZGlmXG4gXG4gXHRyZXQgPSAwO1xuIFx0d3JpdGVfbG9ja19iaChcdTAwMjZzb2NrLVx1MDAzZXNrLVx1MDAzZXNrX2NhbGxiYWNrX2xvY2spO1xuZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmV0L2lwdjYuaCBiL2luY2x1ZGUvbmV0L2lwdjYuaFxuaW5kZXggM2RlMDdlNzM4NTM4Zi4uODJlNTdiMzRiYTU3ZiAxMDA2NDRcbi0tLSBhL2luY2x1ZGUvbmV0L2lwdjYuaFxuJiM0MzsmIzQzOyYjNDM7IGIvaW5jbHVkZS9uZXQvaXB2Ni5oXG5AQCAtMTI1Miw2ICYjNDM7MTI1Miw5IEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBpcDZfc29ja19zZXRfcmVjdmVycihzdHJ1Y3Qgc29jayAqc2spXG4gXHRpbmV0Nl9zZXRfYml0KFJFQ1ZFUlI2LCBzayk7XG4gfVxuIFxuJiM0Mzt2b2lkIF9faXA2X3NvY2tfc2V0X3RjbGFzcyhzdHJ1Y3Qgc29jayAqc2ssIGludCB2YWwpO1xuJiM0Mzt2b2lkIGlwNl9zb2NrX3NldF90Y2xhc3Moc3RydWN0IHNvY2sgKnNrLCBpbnQgdmFsKTtcbiYjNDM7XG4gI2RlZmluZSBJUFY2X1BSRUZFUl9TUkNfTUFTSyAoSVBWNl9QUkVGRVJfU1JDX1RNUCB8IElQVjZfUFJFRkVSX1NSQ19QVUJMSUMgfCBcXFxuIFx0XHRcdCAgICAgIElQVjZfUFJFRkVSX1NSQ19DT0EpXG4gXG5kaWZmIC0tZ2l0IGEvbmV0L2lwdjYvaXB2Nl9zb2NrZ2x1ZS5jIGIvbmV0L2lwdjYvaXB2Nl9zb2NrZ2x1ZS5jXG5pbmRleCBiNGM5Nzc0MzRjMmUwLi5jNTlmMjVmYmIzMzZkIDEwMDY0NFxuLS0tIGEvbmV0L2lwdjYvaXB2Nl9zb2NrZ2x1ZS5jXG4mIzQzOyYjNDM7JiM0MzsgYi9uZXQvaXB2Ni9pcHY2X3NvY2tnbHVlLmNcbkBAIC0zNzMsNiAmIzQzOzM3MywyOCBAQCBzdGF0aWMgaW50IGlwdjZfc2V0X29wdF9oZHIoc3RydWN0IHNvY2sgKnNrLCBpbnQgb3B0bmFtZSwgc29ja3B0cl90IG9wdHZhbCxcbiBcdHJldHVybiBlcnI7XG4gfVxuIFxuJiM0Mzt2b2lkIF9faXA2X3NvY2tfc2V0X3RjbGFzcyhzdHJ1Y3Qgc29jayAqc2ssIGludCB2YWwpXG4mIzQzO3tcbiYjNDM7XHR1OCBvbGRfdGNsYXNzID0gaW5ldDZfc2soc2spLVx1MDAzZXRjbGFzcztcbiYjNDM7XG4mIzQzO1x0aWYgKHNrLVx1MDAzZXNrX3R5cGUgPT0gU09DS19TVFJFQU0pIHtcbiYjNDM7XHRcdHZhbCBcdTAwMjY9IH5JTkVUX0VDTl9NQVNLO1xuJiM0MztcdFx0dmFsIHw9IG9sZF90Y2xhc3MgXHUwMDI2IElORVRfRUNOX01BU0s7XG4mIzQzO1x0fVxuJiM0MztcdGlmIChvbGRfdGNsYXNzICE9IHZhbCkge1xuJiM0MztcdFx0V1JJVEVfT05DRShpbmV0Nl9zayhzayktXHUwMDNldGNsYXNzLCB2YWwpO1xuJiM0MztcdFx0c2tfZHN0X3Jlc2V0KHNrKTtcbiYjNDM7XHR9XG4mIzQzO31cbiYjNDM7XG4mIzQzO3ZvaWQgaXA2X3NvY2tfc2V0X3RjbGFzcyhzdHJ1Y3Qgc29jayAqc2ssIGludCB2YWwpXG4mIzQzO3tcbiYjNDM7XHRzb2Nrb3B0X2xvY2tfc29jayhzayk7XG4mIzQzO1x0X19pcDZfc29ja19zZXRfdGNsYXNzKHNrLCB2YWwpO1xuJiM0MztcdHNvY2tvcHRfcmVsZWFzZV9zb2NrKHNrKTtcbiYjNDM7fVxuJiM0MztFWFBPUlRfU1lNQk9MKGlwNl9zb2NrX3NldF90Y2xhc3MpO1xuJiM0MztcbiBpbnQgZG9faXB2Nl9zZXRzb2Nrb3B0KHN0cnVjdCBzb2NrICpzaywgaW50IGxldmVsLCBpbnQgb3B0bmFtZSxcbiBcdFx0ICAgICAgIHNvY2twdHJfdCBvcHR2YWwsIHVuc2lnbmVkIGludCBvcHRsZW4pXG4ge1xuQEAgLTcxMywxNCAmIzQzOzczNSw3IEBAIGludCBkb19pcHY2X3NldHNvY2tvcHQoc3RydWN0IHNvY2sgKnNrLCBpbnQgbGV2ZWwsIGludCBvcHRuYW1lLFxuIFx0XHQvKiBSRkMgMzU0MiwgNi41OiBkZWZhdWx0IHRyYWZmaWMgY2xhc3Mgb2YgMHgwICovXG4gXHRcdGlmICh2YWwgPT0gLTEpXG4gXHRcdFx0dmFsID0gMDtcbi1cdFx0aWYgKHNrLVx1MDAzZXNrX3R5cGUgPT0gU09DS19TVFJFQU0pIHtcbi1cdFx0XHR2YWwgXHUwMDI2PSB+SU5FVF9FQ05fTUFTSztcbi1cdFx0XHR2YWwgfD0gbnAtXHUwMDNldGNsYXNzIFx1MDAyNiBJTkVUX0VDTl9NQVNLO1xuLVx0XHR9XG4tXHRcdGlmIChucC1cdTAwM2V0Y2xhc3MgIT0gdmFsKSB7XG4tXHRcdFx0bnAtXHUwMDNldGNsYXNzID0gdmFsO1xuLVx0XHRcdHNrX2RzdF9yZXNldChzayk7XG4tXHRcdH1cbiYjNDM7XHRcdF9faXA2X3NvY2tfc2V0X3RjbGFzcyhzaywgdmFsKTtcbiBcdFx0cmV0diA9IDA7XG4gXHRcdGJyZWFrO1xuIFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA4IDA3OjI2PC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjJtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmJlc3QtZXhwZW5zaXZlPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtOVk1FX1RDUCYjMzQ7LAogICAgJiMzNDtOVk1FX1RBUkdFVF9UQ1AmIzM0OywKICAgICYjMzQ7TlZNRV9UQVJHRVQmIzM0OywKICAgICYjMzQ7SVBWNiYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O252bWZfZGV2X3dyaXRlJiMzNDssCiAgICAmIzM0O252bWVfdGNwX2NyZWF0ZV9jdHJsJiMzNDssCiAgICAmIzM0O252bWV0X3RjcF9hY2NlcHRfd29yayYjMzQ7LAogICAgJiMzNDtkb19pcHY2X3NldHNvY2tvcHQmIzM0OywKICAgICYjMzQ7aXA2X3NvY2tfc2V0X3RjbGFzcyYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBhZGRzIHN1cHBvcnQgZm9yIHRoZSBgdGNsYXNzYCAoSVB2NiB0cmFmZmljIGNsYXNzKSBvcHRpb24gdG8gdGhlIE5WTWUgb3ZlciBUQ1AgaG9zdCBhbmQgdGFyZ2V0IGRyaXZlcnMuIEl0IG1vZGlmaWVzIHRoZSBOVk1lIGZhYnJpY3Mgb3B0aW9uIHBhcnNpbmcsIHNldHMgdGhlIHRyYWZmaWMgY2xhc3Mgb24gdGhlIFRDUCBzb2NrZXRzIHVzaW5nIGBpcDZfc29ja19zZXRfdGNsYXNzYCwgYW5kIHJlZmFjdG9ycyBJUHY2IHNvY2tldCBnbHVlIHRvIGV4cG9ydCB0aGlzIGZ1bmN0aW9uLiBUaGVzZSBhcmUgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHJlYWNoYWJsZSBjb3JlIG5ldHdvcmtpbmcgYW5kIE5WTWUgZHJpdmVycywgd2hpY2ggY2FuIGJlIHRlc3RlZCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgdXNpbmcgbG9vcGJhY2sgb3IgdmlydHVhbCBuZXR3b3JrIGludGVyZmFjZXMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZQppZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5CnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuCgpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOgotIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuCi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuCi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LgotIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwKICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuCi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsCiAgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuCi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSkKICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuCgpJZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoCnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLgoKV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086CjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuCiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLgogICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnMKICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuCjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLgogICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCiAgIEFsc28gY2hlY2sgJiMzNDtkZXBlbmRzIG9uJiMzNDsgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzCiAgIG5lZWRlZCBmb3IgS2J1aWxkIHRvIGNvbXBpbGUgdGhlIGNvZGUgc3RhdGljYWxseSBpbnRvIHZtbGludXguIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncwogICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCA4NDc3M2MwNGU2ZGExNGUzNDBhMGVkMGExNjU2ZmYyNzFmMTEzZDM4CkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIFNhdCBBdWcgOCAwNzoyNjoyMSAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbnZtZS9ob3N0L2ZhYnJpY3MuYyBiL2RyaXZlcnMvbnZtZS9ob3N0L2ZhYnJpY3MuYwppbmRleCBhYzNkNGY0MDA2MDFmLi42NDNjMDNkYzdiY2IzIDEwMDY0NAotLS0gYS9kcml2ZXJzL252bWUvaG9zdC9mYWJyaWNzLmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9udm1lL2hvc3QvZmFicmljcy5jCkBAIC02OTUsNiAmIzQzOzY5NSw3IEBAIHN0YXRpYyBjb25zdCBtYXRjaF90YWJsZV90IG9wdF90b2tlbnMgPSB7CiAJeyBOVk1GX09QVF9OUl9XUklURV9RVUVVRVMsCSYjMzQ7bnJfd3JpdGVfcXVldWVzPSVkJiMzNDsJfSwKIAl7IE5WTUZfT1BUX05SX1BPTExfUVVFVUVTLAkmIzM0O25yX3BvbGxfcXVldWVzPSVkJiMzNDsJfSwKIAl7IE5WTUZfT1BUX1RPUywJCQkmIzM0O3Rvcz0lZCYjMzQ7CQl9LAomIzQzOwl7IE5WTUZfT1BUX1RDTEFTUywJCSYjMzQ7dGNsYXNzPSVkJiMzNDsJCX0sCiAjaWZkZWYgQ09ORklHX05WTUVfVENQX1RMUwogCXsgTlZNRl9PUFRfS0VZUklORywJCSYjMzQ7a2V5cmluZz0lZCYjMzQ7CQl9LAogCXsgTlZNRl9PUFRfVExTX0tFWSwJCSYjMzQ7dGxzX2tleT0lZCYjMzQ7CQl9LApAQCAtNzM0LDYgJiM0Mzs3MzUsNyBAQCBzdGF0aWMgaW50IG52bWZfcGFyc2Vfb3B0aW9ucyhzdHJ1Y3QgbnZtZl9jdHJsX29wdGlvbnMgKm9wdHMsCiAJb3B0cy0mZ3Q7aGRyX2RpZ2VzdCA9IGZhbHNlOwogCW9wdHMtJmd0O2RhdGFfZGlnZXN0ID0gZmFsc2U7CiAJb3B0cy0mZ3Q7dG9zID0gLTE7IC8qICZsdDsgMCA9PSB1c2UgdHJhbnNwb3J0IGRlZmF1bHQgKi8KJiM0MzsJb3B0cy0mZ3Q7dGNsYXNzID0gLTE7IC8qICZsdDsgMCA9PSB1c2UgdHJhbnNwb3J0IGRlZmF1bHQgKi8KIAlvcHRzLSZndDt0bHMgPSBmYWxzZTsKIAlvcHRzLSZndDt0bHNfa2V5ID0gTlVMTDsKIAlvcHRzLSZndDtrZXlyaW5nID0gTlVMTDsKQEAgLTk5MSw2ICYjNDM7OTkzLDIyIEBAIHN0YXRpYyBpbnQgbnZtZl9wYXJzZV9vcHRpb25zKHN0cnVjdCBudm1mX2N0cmxfb3B0aW9ucyAqb3B0cywKIAkJCX0KIAkJCW9wdHMtJmd0O3RvcyA9IHRva2VuOwogCQkJYnJlYWs7CiYjNDM7CQljYXNlIE5WTUZfT1BUX1RDTEFTUzoKJiM0MzsJCQlpZiAobWF0Y2hfaW50KGFyZ3MsICZhbXA7dG9rZW4pKSB7CiYjNDM7CQkJCXJldCA9IC1FSU5WQUw7CiYjNDM7CQkJCWdvdG8gb3V0OwomIzQzOwkJCX0KJiM0MzsJCQlpZiAodG9rZW4gJmx0OyAwKSB7CiYjNDM7CQkJCXByX2VycigmIzM0O0ludmFsaWQgdHJhZmZpYyBjbGFzcyAlZFxuJiMzNDssIHRva2VuKTsKJiM0MzsJCQkJcmV0ID0gLUVJTlZBTDsKJiM0MzsJCQkJZ290byBvdXQ7CiYjNDM7CQkJfQomIzQzOwkJCWlmICh0b2tlbiAmZ3Q7IDI1NSkgewomIzQzOwkJCQlwcl93YXJuKCYjMzQ7Q2xhbXBpbmcgdHJhZmZpYyBjbGFzcyB0byAyNTVcbiYjMzQ7KTsKJiM0MzsJCQkJdG9rZW4gPSAyNTU7CiYjNDM7CQkJfQomIzQzOwkJCW9wdHMtJmd0O3RjbGFzcyA9IHRva2VuOwomIzQzOwkJCWJyZWFrOwogCQljYXNlIE5WTUZfT1BUX0tFWVJJTkc6CiAJCQlpZiAobWF0Y2hfaW50KGFyZ3MsICZhbXA7a2V5X2lkKSB8fCBrZXlfaWQgJmx0Oz0gMCkgewogCQkJCXJldCA9IC1FSU5WQUw7CmRpZmYgLS1naXQgYS9kcml2ZXJzL252bWUvaG9zdC9mYWJyaWNzLmggYi9kcml2ZXJzL252bWUvaG9zdC9mYWJyaWNzLmgKaW5kZXggY2FmNTUwM2QwODMzMi4uM2RmZDQwYmQ4OTYwNSAxMDA2NDQKLS0tIGEvZHJpdmVycy9udm1lL2hvc3QvZmFicmljcy5oCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbnZtZS9ob3N0L2ZhYnJpY3MuaApAQCAtNjcsNiAmIzQzOzY3LDcgQEAgZW51bSB7CiAJTlZNRl9PUFRfS0VZUklORwk9IDEgJmx0OyZsdDsgMjYsCiAJTlZNRl9PUFRfVExTX0tFWQk9IDEgJmx0OyZsdDsgMjcsCiAJTlZNRl9PUFRfQ09OQ0FUCQk9IDEgJmx0OyZsdDsgMjgsCiYjNDM7CU5WTUZfT1BUX1RDTEFTUwkJPSAxICZsdDsmbHQ7IDI5LAogfTsKIAogLyoqCkBAIC0xMDksNiAmIzQzOzExMCw3IEBAIGVudW0gewogICogQG5yX3dyaXRlX3F1ZXVlczogbnVtYmVyIG9mIHF1ZXVlcyBmb3Igd3JpdGUgSS9PCiAgKiBAbnJfcG9sbF9xdWV1ZXM6IG51bWJlciBvZiBxdWV1ZXMgZm9yIHBvbGxpbmcgSS9PCiAgKiBAdG9zOiB0eXBlIG9mIHNlcnZpY2UKJiM0MzsgKiBAdGNsYXNzOiBJUHY2IHRyYWZmaWMgY2xhc3MKICAqIEBmYXN0X2lvX2ZhaWxfdG1vOiBGYXN0IEkvTyBmYWlsIHRpbWVvdXQgaW4gc2Vjb25kcwogICovCiBzdHJ1Y3QgbnZtZl9jdHJsX29wdGlvbnMgewpAQCAtMTM5LDYgJiM0MzsxNDEsNyBAQCBzdHJ1Y3QgbnZtZl9jdHJsX29wdGlvbnMgewogCXVuc2lnbmVkIGludAkJbnJfd3JpdGVfcXVldWVzOwogCXVuc2lnbmVkIGludAkJbnJfcG9sbF9xdWV1ZXM7CiAJaW50CQkJdG9zOwomIzQzOwlpbnQJCQl0Y2xhc3M7CiAJaW50CQkJZmFzdF9pb19mYWlsX3RtbzsKIH07CiAKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbnZtZS9ob3N0L3RjcC5jIGIvZHJpdmVycy9udm1lL2hvc3QvdGNwLmMKaW5kZXggYmE1YzdiM2UyYTdjNi4uY2FiYmY2N2QyNGY4OCAxMDA2NDQKLS0tIGEvZHJpdmVycy9udm1lL2hvc3QvdGNwLmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9udm1lL2hvc3QvdGNwLmMKQEAgLTE4MzcsNiAmIzQzOzE4MzcsMTEgQEAgc3RhdGljIGludCBudm1lX3RjcF9hbGxvY19xdWV1ZShzdHJ1Y3QgbnZtZV9jdHJsICpuY3RybCwgaW50IHFpZCwKIAkvKiBTZXQgc29ja2V0IHR5cGUgb2Ygc2VydmljZSAqLwogCWlmIChuY3RybC0mZ3Q7b3B0cy0mZ3Q7dG9zICZndDs9IDApCiAJCWlwX3NvY2tfc2V0X3RvcyhxdWV1ZS0mZ3Q7c29jay0mZ3Q7c2ssIG5jdHJsLSZndDtvcHRzLSZndDt0b3MpOwomIzQzOyNpZiBJU19FTkFCTEVEKENPTkZJR19JUFY2KQomIzQzOwlpZiAobmN0cmwtJmd0O29wdHMtJmd0O3RjbGFzcyAmZ3Q7PSAwICZhbXA7JmFtcDsKJiM0MzsJICAgIHF1ZXVlLSZndDtzb2NrLSZndDtzay0mZ3Q7c2tfZmFtaWx5ID09IEFGX0lORVQ2KQomIzQzOwkJaXA2X3NvY2tfc2V0X3RjbGFzcyhxdWV1ZS0mZ3Q7c29jay0mZ3Q7c2ssIG5jdHJsLSZndDtvcHRzLSZndDt0Y2xhc3MpOwomIzQzOyNlbmRpZgogCiAJLyogU2V0IDEwIHNlY29uZHMgdGltZW91dCBmb3IgaWNyZXNwIHJlY3Ztc2cgKi8KIAlxdWV1ZS0mZ3Q7c29jay0mZ3Q7c2stJmd0O3NrX3JjdnRpbWVvID0gMTAgKiBIWjsKQEAgLTMwNDEsNyAmIzQzOzMwNDYsOCBAQCBzdGF0aWMgc3RydWN0IG52bWZfdHJhbnNwb3J0X29wcyBudm1lX3RjcF90cmFuc3BvcnQgPSB7CiAJCQkgIE5WTUZfT1BUX0hPU1RfVFJBRERSIHwgTlZNRl9PUFRfQ1RSTF9MT1NTX1RNTyB8CiAJCQkgIE5WTUZfT1BUX0hEUl9ESUdFU1QgfCBOVk1GX09QVF9EQVRBX0RJR0VTVCB8CiAJCQkgIE5WTUZfT1BUX05SX1dSSVRFX1FVRVVFUyB8IE5WTUZfT1BUX05SX1BPTExfUVVFVUVTIHwKLQkJCSAgTlZNRl9PUFRfVE9TIHwgTlZNRl9PUFRfSE9TVF9JRkFDRSB8IE5WTUZfT1BUX1RMUyB8CiYjNDM7CQkJICBOVk1GX09QVF9UT1MgfCBOVk1GX09QVF9UQ0xBU1MgfAomIzQzOwkJCSAgTlZNRl9PUFRfSE9TVF9JRkFDRSB8IE5WTUZfT1BUX1RMUyB8CiAJCQkgIE5WTUZfT1BUX0tFWVJJTkcgfCBOVk1GX09QVF9UTFNfS0VZIHwgTlZNRl9PUFRfQ09OQ0FULAogCS5jcmVhdGVfY3RybAk9IG52bWVfdGNwX2NyZWF0ZV9jdHJsLAogfTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbnZtZS90YXJnZXQvdGNwLmMgYi9kcml2ZXJzL252bWUvdGFyZ2V0L3RjcC5jCmluZGV4IDc1YTI3NmQ3M2JlM2UuLjFkNjU1MTllYmMwZmIgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbnZtZS90YXJnZXQvdGNwLmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9udm1lL3RhcmdldC90Y3AuYwpAQCAtMTcyNSw2ICYjNDM7MTcyNSwxNCBAQCBzdGF0aWMgaW50IG52bWV0X3RjcF9zZXRfcXVldWVfc29jayhzdHJ1Y3QgbnZtZXRfdGNwX3F1ZXVlICpxdWV1ZSkKIAkvKiBTZXQgc29ja2V0IHR5cGUgb2Ygc2VydmljZSAqLwogCWlmIChpbmV0LSZndDtyY3ZfdG9zICZndDsgMCkKIAkJaXBfc29ja19zZXRfdG9zKHNvY2stJmd0O3NrLCBpbmV0LSZndDtyY3ZfdG9zKTsKJiM0MzsjaWYgSVNfRU5BQkxFRChDT05GSUdfSVBWNikKJiM0MzsJaWYgKHNvY2stJmd0O3NrLSZndDtza19mYW1pbHkgPT0gQUZfSU5FVDYpIHsKJiM0MzsJCXU4IHJjdl90Y2xhc3MgPSBpcDZfdGNsYXNzKGluZXQ2X3NrKHNvY2stJmd0O3NrKS0mZ3Q7cmN2X2Zsb3dpbmZvKTsKJiM0MzsKJiM0MzsJCWlmIChyY3ZfdGNsYXNzICZndDsgMCkKJiM0MzsJCQlpcDZfc29ja19zZXRfdGNsYXNzKHNvY2stJmd0O3NrLCByY3ZfdGNsYXNzKTsKJiM0MzsJfQomIzQzOyNlbmRpZgogCiAJcmV0ID0gMDsKIAl3cml0ZV9sb2NrX2JoKCZhbXA7c29jay0mZ3Q7c2stJmd0O3NrX2NhbGxiYWNrX2xvY2spOwpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZXQvaXB2Ni5oIGIvaW5jbHVkZS9uZXQvaXB2Ni5oCmluZGV4IDNkZTA3ZTczODUzOGYuLjgyZTU3YjM0YmE1N2YgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvbmV0L2lwdjYuaAomIzQzOyYjNDM7JiM0MzsgYi9pbmNsdWRlL25ldC9pcHY2LmgKQEAgLTEyNTIsNiAmIzQzOzEyNTIsOSBAQCBzdGF0aWMgaW5saW5lIHZvaWQgaXA2X3NvY2tfc2V0X3JlY3ZlcnIoc3RydWN0IHNvY2sgKnNrKQogCWluZXQ2X3NldF9iaXQoUkVDVkVSUjYsIHNrKTsKIH0KIAomIzQzO3ZvaWQgX19pcDZfc29ja19zZXRfdGNsYXNzKHN0cnVjdCBzb2NrICpzaywgaW50IHZhbCk7CiYjNDM7dm9pZCBpcDZfc29ja19zZXRfdGNsYXNzKHN0cnVjdCBzb2NrICpzaywgaW50IHZhbCk7CiYjNDM7CiAjZGVmaW5lIElQVjZfUFJFRkVSX1NSQ19NQVNLIChJUFY2X1BSRUZFUl9TUkNfVE1QIHwgSVBWNl9QUkVGRVJfU1JDX1BVQkxJQyB8IFwKIAkJCSAgICAgIElQVjZfUFJFRkVSX1NSQ19DT0EpCiAKZGlmZiAtLWdpdCBhL25ldC9pcHY2L2lwdjZfc29ja2dsdWUuYyBiL25ldC9pcHY2L2lwdjZfc29ja2dsdWUuYwppbmRleCBiNGM5Nzc0MzRjMmUwLi5jNTlmMjVmYmIzMzZkIDEwMDY0NAotLS0gYS9uZXQvaXB2Ni9pcHY2X3NvY2tnbHVlLmMKJiM0MzsmIzQzOyYjNDM7IGIvbmV0L2lwdjYvaXB2Nl9zb2NrZ2x1ZS5jCkBAIC0zNzMsNiAmIzQzOzM3MywyOCBAQCBzdGF0aWMgaW50IGlwdjZfc2V0X29wdF9oZHIoc3RydWN0IHNvY2sgKnNrLCBpbnQgb3B0bmFtZSwgc29ja3B0cl90IG9wdHZhbCwKIAlyZXR1cm4gZXJyOwogfQogCiYjNDM7dm9pZCBfX2lwNl9zb2NrX3NldF90Y2xhc3Moc3RydWN0IHNvY2sgKnNrLCBpbnQgdmFsKQomIzQzO3sKJiM0MzsJdTggb2xkX3RjbGFzcyA9IGluZXQ2X3NrKHNrKS0mZ3Q7dGNsYXNzOwomIzQzOwomIzQzOwlpZiAoc2stJmd0O3NrX3R5cGUgPT0gU09DS19TVFJFQU0pIHsKJiM0MzsJCXZhbCAmYW1wOz0gfklORVRfRUNOX01BU0s7CiYjNDM7CQl2YWwgfD0gb2xkX3RjbGFzcyAmYW1wOyBJTkVUX0VDTl9NQVNLOwomIzQzOwl9CiYjNDM7CWlmIChvbGRfdGNsYXNzICE9IHZhbCkgewomIzQzOwkJV1JJVEVfT05DRShpbmV0Nl9zayhzayktJmd0O3RjbGFzcywgdmFsKTsKJiM0MzsJCXNrX2RzdF9yZXNldChzayk7CiYjNDM7CX0KJiM0Mzt9CiYjNDM7CiYjNDM7dm9pZCBpcDZfc29ja19zZXRfdGNsYXNzKHN0cnVjdCBzb2NrICpzaywgaW50IHZhbCkKJiM0Mzt7CiYjNDM7CXNvY2tvcHRfbG9ja19zb2NrKHNrKTsKJiM0MzsJX19pcDZfc29ja19zZXRfdGNsYXNzKHNrLCB2YWwpOwomIzQzOwlzb2Nrb3B0X3JlbGVhc2Vfc29jayhzayk7CiYjNDM7fQomIzQzO0VYUE9SVF9TWU1CT0woaXA2X3NvY2tfc2V0X3RjbGFzcyk7CiYjNDM7CiBpbnQgZG9faXB2Nl9zZXRzb2Nrb3B0KHN0cnVjdCBzb2NrICpzaywgaW50IGxldmVsLCBpbnQgb3B0bmFtZSwKIAkJICAgICAgIHNvY2twdHJfdCBvcHR2YWwsIHVuc2lnbmVkIGludCBvcHRsZW4pCiB7CkBAIC03MTMsMTQgJiM0Mzs3MzUsNyBAQCBpbnQgZG9faXB2Nl9zZXRzb2Nrb3B0KHN0cnVjdCBzb2NrICpzaywgaW50IGxldmVsLCBpbnQgb3B0bmFtZSwKIAkJLyogUkZDIDM1NDIsIDYuNTogZGVmYXVsdCB0cmFmZmljIGNsYXNzIG9mIDB4MCAqLwogCQlpZiAodmFsID09IC0xKQogCQkJdmFsID0gMDsKLQkJaWYgKHNrLSZndDtza190eXBlID09IFNPQ0tfU1RSRUFNKSB7Ci0JCQl2YWwgJmFtcDs9IH5JTkVUX0VDTl9NQVNLOwotCQkJdmFsIHw9IG5wLSZndDt0Y2xhc3MgJmFtcDsgSU5FVF9FQ05fTUFTSzsKLQkJfQotCQlpZiAobnAtJmd0O3RjbGFzcyAhPSB2YWwpIHsKLQkJCW5wLSZndDt0Y2xhc3MgPSB2YWw7Ci0JCQlza19kc3RfcmVzZXQoc2spOwotCQl9CiYjNDM7CQlfX2lwNl9zb2NrX3NldF90Y2xhc3Moc2ssIHZhbCk7CiAJCXJldHYgPSAwOwogCQlicmVhazsKIAo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wOCAwNzoyNjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0NTI2CgkJCQkJCQlvdXRwdXQ6IDE5CgkJCQkJCQl0aG91Z2h0czogNDkxCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk5WTWUgb3ZlciBUQ1AgSVB2NiBUcmFmZmljIENsYXNzIFN1cHBvcnQ6IEEgUmV2aWV3KioKCk9rYXksIHNvIEkmIzM5O3ZlIGJlZW4gbG9va2luZyBvdmVyIHRoaXMgcGF0Y2ggdGhhdCBpbnRyb2R1Y2VzIGB0Y2xhc3NgIChJUHY2IHRyYWZmaWMgY2xhc3MpIHN1cHBvcnQgZm9yIE5WTWUgb3ZlciBUQ1AuIEZyb20gYSBmdW5jdGlvbmFsIHBlcnNwZWN0aXZlLCBpdCYjMzk7cyBwcmV0dHkgc3RyYWlnaHRmb3J3YXJkOiB3ZSYjMzk7cmUgbW9kaWZ5aW5nIHRoZSBOVk1lIG92ZXIgVENQIGRyaXZlciBhbmQgdGhlIElQdjYgc29ja2V0IGdsdWUgdG8gaGFuZGxlIHRoaXMuIEl0IGxvb2tzIGxpa2UgdGhlIGNvcmUgY2hhbmdlcyBhcmUgaW4gdGhlc2UgZmlsZXM6IGBkcml2ZXJzL252bWUvaG9zdC9mYWJyaWNzLmNgLCBgZHJpdmVycy9udm1lL2hvc3QvdGNwLmNgLCBgZHJpdmVycy9udm1lL3RhcmdldC90Y3AuY2AsIGBpbmNsdWRlL25ldC9pcHY2LmhgLCBhbmQgYG5ldC9pcHY2L2lwdjZfc29ja2dsdWUuY2AuCgpTcGVjaWZpY2FsbHksIGBkcml2ZXJzL252bWUvaG9zdC9mYWJyaWNzLmNgIG5vdyBwYXJzZXMgdGhlIGB0Y2xhc3M9JWRgIG9wdGlvbiB3aXRoaW4gYG52bWZfcGFyc2Vfb3B0aW9uc2AuIFRoZSBob3N0LXNpZGUgVENQIGRyaXZlciAoYGRyaXZlcnMvbnZtZS9ob3N0L3RjcC5jYCkgc2V0cyB0aGUgYHRjbGFzc2Agb24gdGhlIHNvY2tldCB1c2luZyBgaXA2X3NvY2tfc2V0X3RjbGFzc2Agd2hlbiBgdGNsYXNzICZndDs9IDBgIGFuZCBpdOKAmXMgYW4gSVB2NiBzb2NrZXQuIFRoZSB0YXJnZXQtc2lkZSBUQ1AgZHJpdmVyIChgZHJpdmVycy9udm1lL3RhcmdldC90Y3AuY2ApIGRvZXMgdGhlIHNhbWUsIGJ1dCBzZXRzIHRoZSB0Y2xhc3Mgd2hlbiBgcmN2X3RjbGFzcyAmZ3Q7IDBgLiBBIGNydWNpYWwgY2hhbmdlIGlzIHRoZSBleHRyYWN0aW9uIGFuZCBleHBvcnQgb2YgYF9faXA2X3NvY2tfc2V0X3RjbGFzc2AgYW5kIGBpcDZfc29ja19zZXRfdGNsYXNzYCBmcm9tIGBkb19pcHY2X3NldHNvY2tvcHRgLgoKVGhpcyBpcyBhIHJlYWNoYWJsZSBjaGFuZ2UgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzLCB3aGljaCBpcyBpbXBvcnRhbnQgdG8gcmVtZW1iZXIgZm9yIGZ1enppbmcuIFNpbmNlIE5WTWUgb3ZlciBUQ1AgY2FuIHdvcmsgb3ZlciBsb29wYmFjayBvciB2aXJ0dWFsIGludGVyZmFjZXMsIHRoaXMgaXMgc29tZXRoaW5nIHdlIHNob3VsZCBkZWZpbml0ZWx5IGJlIHRlc3RpbmcuCgpOb3csIG15IGluaXRpYWwgdGhvdWdodCBpcywgd2hlcmUgYXJlIHRoZSBmdXp6aW5nIHRhcmdldHM/IGBudm1mX3BhcnNlX29wdGlvbnNgIGlzIGNlcnRhaW5seSByZWxldmFudCwgYnV0IGl0JiMzOTtzIGEgZ2VuZXJhbCBwYXJzaW5nIGZ1bmN0aW9uLiBUaGlua2luZyBtb3JlIHNwZWNpZmljYWxseSwgSSB0aGluayBgbnZtZV90Y3BfYWxsb2NfcXVldWVgLCBhbmQgYG52bWV0X3RjcF9zZXRfcXVldWVfc29ja2AgYXJlIGV4Y2VsbGVudCB0YXJnZXRzIGFzIHdlbGwuIFBsdXMsIGBfX2lwNl9zb2NrX3NldF90Y2xhc3NgIGFuZCBgaXA2X3NvY2tfc2V0X3RjbGFzc2AgYXJlIGtleSBmb3IgaGFuZGxpbmcgdGhlIGFjdHVhbCBzb2NrZXQgb3B0aW9ucy4KCkJlZm9yZSBJIGRpdmUgdG9vIGRlZXAgaW50byBmdXp6aW5nLCBJIHdhbnQgdG8gY29uZmlybSB0aGUgbmVjZXNzYXJ5IGNvbmZpZ3VyYXRpb25zLiBJJiMzOTtsbCBuZWVkIHRvIGRvdWJsZS1jaGVjayB0aGF0IGBDT05GSUdfTlZNRV9UQ1BgLCBgQ09ORklHX05WTUVfVEFSR0VUX1RDUGAsIGFuZCBgQ09ORklHX0lQVjZgIGFyZSBhbGwgZW5hYmxlZCwgdG8gZW5zdXJlIHRoZSBmZWF0dXJlcyBhcmUgYWN0dWFsbHkgY29tcGlsZWQgaW4gYW5kLCB0aGVyZWZvcmUsIGFjY2Vzc2libGUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDggMDc6MjY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIE5WTUVfVENQJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbnZtZS9ob3N0L0tjb25maWc9Njc9Y29uZmlnIE5WTUVfRkNcbi0tXG5kcml2ZXJzL252bWUvaG9zdC9LY29uZmlnLTgyLVxuZHJpdmVycy9udm1lL2hvc3QvS2NvbmZpZzo4Mzpjb25maWcgTlZNRV9UQ1BcbmRyaXZlcnMvbnZtZS9ob3N0L0tjb25maWctODQtXHR0cmlzdGF0ZSBcJiMzNDtOVk0gRXhwcmVzcyBvdmVyIEZhYnJpY3MgVENQIGhvc3QgZHJpdmVyXCYjMzQ7XG4tLVxuZHJpdmVycy9udm1lL2hvc3QvS2NvbmZpZy05OS1cbmRyaXZlcnMvbnZtZS9ob3N0L0tjb25maWc6MTAwOmNvbmZpZyBOVk1FX1RDUF9UTFNcbmRyaXZlcnMvbnZtZS9ob3N0L0tjb25maWctMTAxLVx0Ym9vbCBcJiMzNDtOVk1lIG92ZXIgRmFicmljcyBUQ1AgVExTIGVuY3J5cHRpb24gc3VwcG9ydFwmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA4IDA3OjI2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDU3MzcKCQkJCQkJCW91dHB1dDogMjEKCQkJCQkJCXRob3VnaHRzOiAxMQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlLCBhbmQgZGVsaXZlcmVkIGFzIGEgZmlyc3QtcGVyc29uIHN1bW1hcnk6CgoqKk5WTWUvVENQIEludmVzdGlnYXRpb24gVGltZSoqCgpSaWdodCwgbGV0JiMzOTtzIGRpdmUgaW50byB0aGlzLiBUaGUgbWVudGFsIGNoZWNrbGlzdCBpcyBydW5uaW5nLCBhbmQgSSYjMzk7bSB6ZXJvaW5nIGluIG9uIGBOVk1FX1RBUkdFVF9UQ1BgLiBUaGlzIG1lYW5zIHdlJiMzOTtyZSBkZWFsaW5nIHdpdGggTlZNZSBvdmVyIFRDUCwgc28gdGhlIHVzdWFsIHN1c3BlY3RzIOKAkyBuZXR3b3JrIGNvbmZpZ3VyYXRpb24sIE1UVSwgcG90ZW50aWFsIFRDUCBvdmVyaGVhZCDigJMgYXJlIHRvcCBvZiBtaW5kLiBJJiMzOTttIGltbWVkaWF0ZWx5IHRoaW5raW5nIGFib3V0IHRoZSBzcGVjaWZpYyB0YXJnZXQgaW1wbGVtZW50YXRpb24gd2UmIzM5O3JlIGRlYWxpbmcgd2l0aCwgdG9vLiBJcyBpdCBzb21ldGhpbmcgcm9idXN0IGxpa2UgU1BESywgb3IgYSBtb3JlIGJhc2ljIG9wZW4tc291cmNlIGltcGxlbWVudGF0aW9uPyBLbm93aW5nIHRoYXQgd2lsbCBpbmZsdWVuY2Ugd2hlcmUgSSBzdGFydCBsb29raW5nIGZvciBjb25maWd1cmF0aW9uIHBpdGZhbGxzLgoKTXkgaW5pdGlhbCBsaW5lIG9mIGlucXVpcnkgd2lsbCBiZSBhcm91bmQgY29ubmVjdGlvbiBlc3RhYmxpc2htZW50LiBBcmUgd2Ugc2VlaW5nIGNvbnNpc3RlbnQgY29ubmVjdGlvbiBhdHRlbXB0cywgb3IgYXJlIHRoZSBjbGllbnRzIGhhdmluZyB0cm91YmxlIGV2ZW4gcmVhY2hpbmcgdGhlIHRhcmdldD8gSWYgd2UgYXJlLCBJIG5lZWQgdG8gY2hlY2sgdGhlIGJhc2ljczogZmlyZXdhbGwgcnVsZXMsIHJvdXRpbmcsIGFuZCBvZiBjb3Vyc2UsIHRoZSB0YXJnZXTigJlzIGxpc3RlbmluZyBhZGRyZXNzIGFuZCBwb3J0LiBJJiMzOTttIGFsc28gZ29pbmcgdG8gY2hlY2ssIGFyZSB3ZSBzZWVpbmcgYW55IHNvY2tldCBlcnJvcnMgb24gZWl0aGVyIHRoZSBjbGllbnQgb3IgdGhlIHRhcmdldD8gVGhvc2UgY2FuIGJlIHZlcnkgaW5mb3JtYXRpdmUuIElmIGNvbm5lY3Rpb25zIGFyZSBmYWlsaW5nLCB3aGF0IGFyZSB0aGUgZXJyb3IgY29kZXM/IERvIHdlIGhhdmUgbG9ncywgb3IgaXMgdGhlcmUgYSB3YXkgdG8gZW5hYmxlIHRoZW0/CgpJZiB3ZSYjMzk7cmUgZ2V0dGluZyBjb25uZWN0aW9ucywgdGhlIG5leHQgcGhhc2Ugd2lsbCBiZSBmb2N1c2VkIG9uIGFjdHVhbCBkYXRhIHRyYW5zZmVyLiBJJiMzOTtsbCBuZWVkIHRvIGNoZWNrIHRoZSBuZWdvdGlhdGVkIGNvbm5lY3Rpb24gcGFyYW1ldGVycywgdmVyaWZ5IHRoZSBmbG93IGNvbnRyb2wgc2V0dGluZ3MsIGFuZCBleGFtaW5lIHRoZSBUQ1Agd2luZG93IHNpemVzLiBBcmUgdGhleSBvcHRpbWl6ZWQgZm9yIE5WTWUmIzM5O3MgaGlnaC1zcGVlZCwgbG93LWxhdGVuY3kgcmVxdWlyZW1lbnRzPyBBcmUgd2UgcG90ZW50aWFsbHkgYnVtcGluZyB1cCBhZ2FpbnN0IGFueSBjb25nZXN0aW9uIGlzc3Vlcywgb3IgaXMgdGhlcmUgYW55IHBhY2tldCBsb3NzPyBJZiB0aGVyZSYjMzk7cyBwZXJmb3JtYW5jZSBkZWdyYWRhdGlvbiwgSSYjMzk7bGwgcHJvYmFibHkgc3RhcnQgdXNpbmcgdG9vbHMgbGlrZSBgdGNwZHVtcGAgb3IgYFdpcmVzaGFya2AgdG8gY2FwdHVyZSB0aGUgdHJhZmZpYyBhbmQgYW5hbHl6ZSB0aGUgTlZNZSBjb21tYW5kcyBhbmQgcmVzcG9uc2VzIGF0IGEgbG93IGxldmVsLiBBcmUgd2Ugc2VlaW5nIGEgaGlnaCByYXRlIG9mIHJldHJhbnNtaXNzaW9ucz8gQXJlIHRoZXJlIHNpZ25pZmljYW50IGRlbGF5cyBpbiB0aGUgSS9PIHBhdGggdGhhdCBhcmUgbm90IGF0dHJpYnV0YWJsZSB0byB0aGUgc3RvcmFnZSBtZWRpdW0/CgpGaW5hbGx5LCB0aGUgdGFyZ2V0JiMzOTtzIGNvbmZpZ3VyYXRpb24gaXMga2V5LiBXaGF0JiMzOTtzIHRoZSBxdWV1ZSBkZXB0aD8gSXMgaXQgYXBwcm9wcmlhdGVseSBzZXQgZm9yIHRoZSB3b3JrbG9hZHM/IEFyZSB0aGVyZSBhbnkgcmVzb3VyY2UgbGltaXRhdGlvbnMgb24gdGhlIHRhcmdldCB0aGF0IG1pZ2h0IGJlIGltcGFjdGluZyBwZXJmb3JtYW5jZT8gQWxzbywgYXJlIHdlIGxldmVyYWdpbmcgYW55IHNwZWNpZmljIE5WTWUvVENQIG9wdGltaXphdGlvbnMgb3Igb2ZmbG9hZHMgYXZhaWxhYmxlIG9uIHRoZSBuZXR3b3JrIGFkYXB0ZXJzIG9yIHRhcmdldCBjb250cm9sbGVycz8gVGhvc2UgYXJlIHRoZSBraW5kcyBvZiB0aGluZ3MgdGhhdCBjYW4gbWFrZSBvciBicmVhayBhbiBOVk1lL1RDUCBkZXBsb3ltZW50LiBBbmQsIG9mIGNvdXJzZSwgdGhlIGZpcm13YXJlIGxldmVscyBvbiBldmVyeXRoaW5nIG5lZWQgdG8gYmUgdmVyaWZpZWQuIEdvdCB0byBiZSBzdXJlIHRoYXQgdGhlIG5ldHdvcmsgYWRhcHRlciBkcml2ZXJzIGFuZCB0aGUgdGFyZ2V0IGZpcm13YXJlIGFyZSB1cCB0byBkYXRlIGFuZCBjb21wYXRpYmxlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA4IDA3OjI2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBOVk1FX1RBUkdFVF9UQ1AmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9udm1lL3RhcmdldC9LY29uZmlnPTc0PWNvbmZpZyBOVk1FX1RBUkdFVF9GQ0xPT1Bcbi0tXG5kcml2ZXJzL252bWUvdGFyZ2V0L0tjb25maWctODYtXG5kcml2ZXJzL252bWUvdGFyZ2V0L0tjb25maWc6ODc6Y29uZmlnIE5WTUVfVEFSR0VUX1RDUFxuZHJpdmVycy9udm1lL3RhcmdldC9LY29uZmlnLTg4LVx0dHJpc3RhdGUgXCYjMzQ7TlZNZSBvdmVyIEZhYnJpY3MgVENQIHRhcmdldCBzdXBwb3J0XCYjMzQ7XG4tLVxuZHJpdmVycy9udm1lL3RhcmdldC9LY29uZmlnLTk2LVxuZHJpdmVycy9udm1lL3RhcmdldC9LY29uZmlnOjk3OmNvbmZpZyBOVk1FX1RBUkdFVF9UQ1BfVExTXG5kcml2ZXJzL252bWUvdGFyZ2V0L0tjb25maWctOTgtXHRib29sIFwmIzM0O05WTWUgb3ZlciBGYWJyaWNzIFRDUCB0YXJnZXQgVExTIGVuY3J5cHRpb24gc3VwcG9ydFwmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA4IDA3OjI2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDY0NTkKCQkJCQkJCW91dHB1dDogMzYKCQkJCQkJCXRob3VnaHRzOiAxMwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgbGV0JiMzOTtzIHNlZS4gSGVyZSYjMzk7cyBteSB0aG91Z2h0IHByb2Nlc3M6CgoqKk5WTWUtb0YgRGVwZW5kZW5jaWVzIC0gQSBRdWljayBDaGVjayoqCgpSaWdodCwgbGV0JiMzOTtzIGp1c3QgbWFrZSBzdXJlIHRoZXJlIGFyZW4mIzM5O3QgYW55IHNuZWFreSwgdW5leHBlY3RlZCBkZXBlbmRlbmNpZXMgbHVya2luZyBhcm91bmQgd2l0aCBOVk1lL1RDUC4gSSBuZWVkIHRvIHF1aWNrbHkgZGV0ZXJtaW5lIGlmIGl0IHJlbGllcyBvbiBhbnl0aGluZyBvdXRzaWRlIG9mIHdoYXQgSSYjMzk7ZCBleHBlY3QgZm9yIGEgc3RhbmRhcmQgTlZNZSBvdmVyIEZhYnJpY3MgaW1wbGVtZW50YXRpb24sIHBlcmhhcHMgc29tZSBjb3JlIGZ1bmN0aW9uYWxpdHksIG5ldHdvcmtpbmcgbGlicmFyaWVzLCBvciBzcGVjaWZpYyBrZXJuZWwgbW9kdWxlcy4gSXQmIzM5O3MgYWx3YXlzIGdvb2QgcHJhY3RpY2UgdG8gdmVyaWZ5IGFzc3VtcHRpb25zLCBldmVuIG9uIHNvbWV0aGluZyBzZWVtaW5nbHkgc3RyYWlnaHRmb3J3YXJkIGxpa2UgdGhpcywgc28gSSYjMzk7bGwgc2VlIGlmIEkgY2FuIGZpbmQgYSBsaXN0IG9mIGl0cyBkZXBlbmRlbmNpZXMgb3IgaWYgSSBuZWVkIHRvIGRpZyBpbnRvIHRoZSBjb2RlIGEgbGl0dGxlLiBObyBwb2ludCBnb2luZyBmdXJ0aGVyIHdpdGhvdXQgbWFraW5nIHN1cmUgSSBoYXZlIGEgc29saWQgZm91bmRhdGlvbmFsIHVuZGVyc3RhbmRpbmcgb2YgaG93IGl0IGludGVncmF0ZXMgd2l0aGluIHRoZSB3aWRlciBzdG9yYWdlIGVjb3N5c3RlbS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD44LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wOCAwNzoyNjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbnZtZS9ob3N0L0tjb25maWcmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiA4MCwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAyMAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgIDgwOlx0XG4gIDgxOlx0XHQgIElmIHVuc3VyZSwgc2F5IE4uXG4gIDgyOlx0XG4gIDgzOlx0Y29uZmlnIE5WTUVfVENQXG4gIDg0Olx0XHR0cmlzdGF0ZSBcJiMzNDtOVk0gRXhwcmVzcyBvdmVyIEZhYnJpY3MgVENQIGhvc3QgZHJpdmVyXCYjMzQ7XG4gIDg1Olx0XHRkZXBlbmRzIG9uIElORVRcbiAgODY6XHRcdGRlcGVuZHMgb24gQkxPQ0tcbiAgODc6XHRcdHNlbGVjdCBDUkMzMlxuICA4ODpcdFx0c2VsZWN0IE5FVF9DUkMzMkNcbiAgODk6XHRcdHNlbGVjdCBOVk1FX0ZBQlJJQ1NcbiAgOTA6XHRcdGhlbHBcbiAgOTE6XHRcdCAgVGhpcyBwcm92aWRlcyBzdXBwb3J0IGZvciB0aGUgTlZNZSBvdmVyIEZhYnJpY3MgcHJvdG9jb2wgdXNpbmdcbiAgOTI6XHRcdCAgdGhlIFRDUCB0cmFuc3BvcnQuICBUaGlzIGFsbG93cyB5b3UgdG8gdXNlIHJlbW90ZSBibG9jayBkZXZpY2VzXG4gIDkzOlx0XHQgIGV4cG9ydGVkIHVzaW5nIHRoZSBOVk1lIHByb3RvY29sIHNldC5cbiAgOTQ6XHRcbiAgOTU6XHRcdCAgVG8gY29uZmlndXJlIGEgTlZNZSBvdmVyIEZhYnJpY3MgY29udHJvbGxlciB1c2UgdGhlIG52bWUtY2xpIHRvb2xcbiAgOTY6XHRcdCAgZnJvbSBodHRwczovL2dpdGh1Yi5jb20vbGludXgtbnZtZS9udm1lLWNsaS5cbiAgOTc6XHRcbiAgOTg6XHRcdCAgSWYgdW5zdXJlLCBzYXkgTi5cbiAgOTk6XHRcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD45LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wOCAwNzoyNjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA2OTI3CgkJCQkJCQlvdXRwdXQ6IDM2CgkJCQkJCQl0aG91Z2h0czogMTIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIGFuIGV4cGVydCYjMzk7cyBpbnRlcm5hbCBtb25vbG9ndWU6CgoqKkNoZWNraW5nIE5WTUVfVEFSR0VUX1RDUCBEZXBlbmRlbmNpZXMqKgoKUmlnaHQsIGxldCYjMzk7cyBkaXZlIGluLiBUaGUgTlZNZSBvdmVyIFRDUCBzcGFjZSBpcyBnZXR0aW5nIG1vcmUgbWF0dXJlLCBzbyBJIG5lZWQgdG8gcXVpY2tseSByZWZyZXNoIG15IHVuZGVyc3RhbmRpbmcgb2YgaXRzIGRlcGVuZGVuY2llcy4gRmlyc3QsIEkgbmVlZCB0byBtYWtlIHN1cmUgSSYjMzk7bSBjcnlzdGFsIGNsZWFyIG9uIGhvdyBhbGwgdGhlIHBpZWNlcyBmaXQgdG9nZXRoZXIuIFdoYXQgYXJlIHRoZSBrZXkgdW5kZXJseWluZyB0ZWNobm9sb2dpZXMgdGhhdCBOVk1lIG92ZXIgVENQIHJlbGllcyBvbj8gT2J2aW91c2x5LCBUQ1AgaXRzZWxmLCBidXQgd2hhdCYjMzk7cyB0aGUgYXJjaGl0ZWN0dXJhbCBpbnRlcnBsYXkgd2l0aCBSRE1BIG9yIG90aGVyIHRyYW5zcG9ydCBwcm90b2NvbHMgdGhhdCBtaWdodCBiZSByZWxldmFudD8gSXMgdGhlcmUgYSBwYXJ0aWN1bGFyIGtlcm5lbCB2ZXJzaW9uIHdoZXJlIHRoZXNlIGVuaGFuY2VtZW50cyBhcmUgYmFrZWQgaW4/IEFyZSB3ZSB0YWxraW5nIGFib3V0IHNwZWNpZmljIHZlcnNpb25zIG9mIHRoZSBOVk1lIHNwZWNpZmljYXRpb24/IEkmIzM5O20gdGhpbmtpbmcgYWJvdXQgZHJpdmVyIHN1cHBvcnQ7IHdoYXQmIzM5O3MgdGhlIGxhbmRzY2FwZSB0aGVyZT8gQXJlIHRoZXJlIG9wZW4tc291cmNlIGltcGxlbWVudGF0aW9ucyB0byB0cmFjaywgYW5kIGRvIHRoZXkgaGF2ZSBhbnkgcmVwb3J0ZWQgaXNzdWVzIG9yIGRlcGVuZGVuY2llcyB0aGF0IG1pZ2h0IGluZmx1ZW5jZSBob3cgSSBhcHByb2FjaCB0aGlzPyBBbmQgdGhlbiB0aGVyZSYjMzk7cyB0aGUgYnJvYWRlciBlY29zeXN0ZW0g4oCTIGFyZSB0aGVyZSBzcGVjaWZpYyBuZXR3b3JrIGludGVyZmFjZSBjYXJkcyAoTklDcykgdGhhdCB3b3JrIGJldHRlciwgb3IgYW55IHN0b3JhZ2UgYXJyYXlzIHRoYXQgYXJlIHBhcnRpY3VsYXJseSB3ZWxsLXN1aXRlZCB0byB0aGUgTlZNZSBvdmVyIFRDUCBwYXJhZGlnbT8gQmFzaWNhbGx5LCBJIG5lZWQgYSBxdWljayBzYW5pdHkgY2hlY2sgdG8gYXZvaWQgd2FzdGluZyB0aW1lIGdvaW5nIGRvd24gcmFiYml0IGhvbGVzIGFuZCBtYWtlIHN1cmUgSSYjMzk7bSB1cCB0byBzcGVlZCBvbiBhbnl0aGluZyB0aGF0IG1pZ2h0IGltcGFjdCB0aGUgZGVzaWduIG9yIHRyb3VibGVzaG9vdGluZyBvZiBhbiBOVk1lLW9GIHNvbHV0aW9uLiBUaGlzIGlzIGFib3V0IGVmZmljaWVudGx5IHN0YXlpbmcgaW5mb3JtZWQgc28gdGhhdCBJIGNhbiB0YWNrbGUgdGhlIGNvcmUgY2hhbGxlbmdlcyB3aXRob3V0IHN0dW1ibGluZyBvbiBzb21ldGhpbmcgb2J2aW91cy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDggMDc6MjY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL252bWUvdGFyZ2V0L0tjb25maWcmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiA4MCwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAyMAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgIDgwOlx0XHRkZXBlbmRzIG9uIE5WTUVfVEFSR0VUX0ZDXG4gIDgxOlx0XHRoZWxwXG4gIDgyOlx0XHQgIFRoaXMgZW5hYmxlcyB0aGUgTlZNZSBGQyBsb29wYmFjayB0ZXN0IHN1cHBvcnQsIHdoaWNoIGNhbiBiZSB1c2VmdWxcbiAgODM6XHRcdCAgdG8gdGVzdCBOVk1lLUZDIHRyYW5zcG9ydCBpbnRlcmZhY2VzLlxuICA4NDpcdFxuICA4NTpcdFx0ICBJZiB1bnN1cmUsIHNheSBOLlxuICA4NjpcdFxuICA4NzpcdGNvbmZpZyBOVk1FX1RBUkdFVF9UQ1BcbiAgODg6XHRcdHRyaXN0YXRlIFwmIzM0O05WTWUgb3ZlciBGYWJyaWNzIFRDUCB0YXJnZXQgc3VwcG9ydFwmIzM0O1xuICA4OTpcdFx0ZGVwZW5kcyBvbiBJTkVUXG4gIDkwOlx0XHRkZXBlbmRzIG9uIE5WTUVfVEFSR0VUXG4gIDkxOlx0XHRoZWxwXG4gIDkyOlx0XHQgIFRoaXMgZW5hYmxlcyB0aGUgTlZNZSBUQ1AgdGFyZ2V0IHN1cHBvcnQsIHdoaWNoIGFsbG93cyBleHBvcnRpbmcgTlZNZVxuICA5MzpcdFx0ICBkZXZpY2VzIG92ZXIgVENQLlxuICA5NDpcdFxuICA5NTpcdFx0ICBJZiB1bnN1cmUsIHNheSBOLlxuICA5NjpcdFxuICA5NzpcdGNvbmZpZyBOVk1FX1RBUkdFVF9UQ1BfVExTXG4gIDk4Olx0XHRib29sIFwmIzM0O05WTWUgb3ZlciBGYWJyaWNzIFRDUCB0YXJnZXQgVExTIGVuY3J5cHRpb24gc3VwcG9ydFwmIzM0O1xuICA5OTpcdFx0ZGVwZW5kcyBvbiBOVk1FX1RBUkdFVF9UQ1BcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDggMDc6MjY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNzUyOAoJCQkJCQkJb3V0cHV0OiAyMAoJCQkJCQkJdGhvdWdodHM6IDExMwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBJbml0aWFsIEFzc2Vzc21lbnQgb2YgdGhlIE5WTWUvVENQIEltcGxlbWVudGF0aW9uKioKCk9rYXksIHNvIHdlJiMzOTtyZSBkaXZpbmcgaW50byBOVk1lIG92ZXIgVENQLCBhbmQgaW1tZWRpYXRlbHkgSSBzZWUgdGhlIGNvcmUgY29tcG9uZW50cyB3ZSYjMzk7cmUgZGVhbGluZyB3aXRoOiBgTlZNRV9UQ1BgLCBgTlZNRV9UQVJHRVRfVENQYCwgYE5WTUVfVEFSR0VUYCwgYW5kLCBvZiBjb3Vyc2UsIElQdjYuIFRoYXQmIzM5O3MgdGhlIGJhc2VsaW5lLCB0aGUgZm91bmRhdGlvbi4gTWFrZXMgc2Vuc2UsIGdpdmVuIHRoZSB1bmRlcmx5aW5nIHRlY2hub2xvZ2llcy4KCk5vdywgbGV0JiMzOTtzIGZvY3VzIG9uIHRoZSBjcml0aWNhbCBhcmVhcy4gTXkgaW50dWl0aW9uLCBhbmQgZXhwZXJpZW5jZSwgdGVsbHMgbWUgdG8gem9vbSBpbiBvbiB0aGVzZSBmdW5jdGlvbnM6IGBudm1mX3BhcnNlX29wdGlvbnNgLCBgbnZtZV90Y3BfYWxsb2NfcXVldWVgLCBgbnZtZXRfdGNwX3NldF9xdWV1ZV9zb2NrYCwgYW5kIHRoZSBJUHY2IHNvY2tldCBjb25maWd1cmF0aW9uIGZ1bmN0aW9uczogYF9faXA2X3NvY2tfc2V0X3RjbGFzc2AgYW5kIGBpcDZfc29ja19zZXRfdGNsYXNzYC4gVGhlc2Ugc2VlbSBsaWtlIHRoZSByZWFsIGxpbmNocGlucyBpbiB0aGUgY29ubmVjdGlvbiBhbmQgc2V0dXAgcHJvY2Vzcy4KCkZpcnN0IHVwOiBgbnZtZl9wYXJzZV9vcHRpb25zYC4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaG93IHRoZSB1c2VyLXByb3ZpZGVkIG9wdGlvbnMgYXJlIGJlaW5nIGhhbmRsZWQuIElzIGl0IGEgc3RhdGljIGZ1bmN0aW9uLCBpbnRlcm5hbCB0byB0aGUgbW9kdWxlLCBvciBpcyBpdCBleHBvcnRlZCwgY2FsbGFibGUgZnJvbSBvdGhlciBwYXJ0cyBvZiB0aGUga2VybmVsPyBUaGF0JiMzOTtzIGdvaW5nIHRvIGRpY3RhdGUgdGhlIGxldmVsIG9mIGludGVncmF0aW9uIGFuZCBob3cgbXVjaCBjb250cm9sIHdlIGhhdmUgb3ZlciB0aGUgcGFyYW1ldGVyIHBhcnNpbmcgcHJvY2Vzcy4gTGV0JiMzOTtzIHN0YXJ0IHRoZXJlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wOCAwNzoyNjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtudm1mX3BhcnNlX29wdGlvbnMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9udm1lL2hvc3QvZmFicmljcy5jPTY3Nz1zdGF0aWMgY29uc3QgbWF0Y2hfdGFibGVfdCBvcHRfdG9rZW5zID0ge1xuLS1cbmRyaXZlcnMvbnZtZS9ob3N0L2ZhYnJpY3MuYy03MTUtXG5kcml2ZXJzL252bWUvaG9zdC9mYWJyaWNzLmM6NzE2OnN0YXRpYyBpbnQgbnZtZl9wYXJzZV9vcHRpb25zKHN0cnVjdCBudm1mX2N0cmxfb3B0aW9ucyAqb3B0cyxcbmRyaXZlcnMvbnZtZS9ob3N0L2ZhYnJpY3MuYy03MTctXHRcdGNvbnN0IGNoYXIgKmJ1Zilcbi0tXG5kcml2ZXJzL252bWUvaG9zdC9mYWJyaWNzLmM9MTMyNj1udm1mX2NyZWF0ZV9jdHJsKHN0cnVjdCBkZXZpY2UgKmRldiwgY29uc3QgY2hhciAqYnVmKVxuLS1cbmRyaXZlcnMvbnZtZS9ob3N0L2ZhYnJpY3MuYy0xMzM2LVxuZHJpdmVycy9udm1lL2hvc3QvZmFicmljcy5jOjEzMzc6XHRyZXQgPSBudm1mX3BhcnNlX29wdGlvbnMob3B0cywgYnVmKTtcbmRyaXZlcnMvbnZtZS9ob3N0L2ZhYnJpY3MuYy0xMzM4LVx0aWYgKHJldClcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDggMDc6MjY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogODE1OQoJCQkJCQkJb3V0cHV0OiAyMAoJCQkJCQkJdGhvdWdodHM6IDM3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHN1bW1hcnksIGFzIHRoZSB0aG91Z2h0IHByb2Nlc3MgdW5mb2xkczoKCioqRGlnZ2luZyBpbnRvIHRoZSBOVk1lLW9GIENvbnRyb2xsZXIgQ3JlYXRpb24qKgoKT2theSwgc28gYG52bWZfcGFyc2Vfb3B0aW9uc2AgaXMgYSBzdGF0aWMgZnVuY3Rpb24uIFRoYXQgaW1tZWRpYXRlbHkgbmFycm93cyBkb3duIHdoZXJlIGl0JiMzOTtzIHVzZWQuIFNpbmNlIGl0JiMzOTtzIHN0YXRpYywgaXQmIzM5O3Mgc2NvcGVkIHdpdGhpbiB0aGUgc2FtZSBjb21waWxhdGlvbiB1bml0LCBhbmQgSSYjMzk7bGwgbmVlZCB0byBmaWd1cmUgb3V0IHdoaWNoIGZ1bmN0aW9uIGluIHRoZSBzYW1lIGZpbGUgY2FsbHMgaXQuIFRoZSB0ZXh0IHBvaW50cyBkaXJlY3RseSB0byBgbnZtZl9jcmVhdGVfY3RybGAuIEFscmlnaHQsIGxldCYjMzk7cyBnbyBkaXJlY3RseSB0byBgbnZtZl9jcmVhdGVfY3RybGAgYW5kIHNlZSB3aGF0IGl0JiMzOTtzIGRvaW5nLiBIb3BlZnVsbHksIGl0JiMzOTtsbCBwcm92aWRlIGVub3VnaCBjb250ZXh0IHRvIHVuZGVyc3RhbmQgd2h5IGBudm1mX3BhcnNlX29wdGlvbnNgIGlzIHJlbGV2YW50IGluIHRoZSBmaXJzdCBwbGFjZS4gVGhpcyBwcm9iYWJseSBtZWFucyBpdCBpcyBiZWluZyB1c2VkIHRvIHBhcnNlIGNvbW1hbmQgbGluZSBwYXJhbWV0ZXJzIG9yIHNpbWlsYXIgdG8gY29uZmlndXJlIHRoZSBjb250cm9sbGVyLiBMZXQmIzM5O3Mgc2VlLi4uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA4IDA3OjI2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O252bWZfY3JlYXRlX2N0cmwmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9udm1lL2hvc3QvZmFicmljcy5jPTEzMjU9c3RhdGljIHN0cnVjdCBudm1lX2N0cmwgKlxuZHJpdmVycy9udm1lL2hvc3QvZmFicmljcy5jOjEzMjY6bnZtZl9jcmVhdGVfY3RybChzdHJ1Y3QgZGV2aWNlICpkZXYsIGNvbnN0IGNoYXIgKmJ1ZilcbmRyaXZlcnMvbnZtZS9ob3N0L2ZhYnJpY3MuYy0xMzI3LXtcbi0tXG5kcml2ZXJzL252bWUvaG9zdC9mYWJyaWNzLmM9MTQwMz1zdGF0aWMgc3NpemVfdCBudm1mX2Rldl93cml0ZShzdHJ1Y3QgZmlsZSAqZmlsZSwgY29uc3QgY2hhciBfX3VzZXIgKnVidWYsXG4tLVxuZHJpdmVycy9udm1lL2hvc3QvZmFicmljcy5jLTE0MjMtXG5kcml2ZXJzL252bWUvaG9zdC9mYWJyaWNzLmM6MTQyNDpcdGN0cmwgPSBudm1mX2NyZWF0ZV9jdHJsKG52bWZfZGV2aWNlLCBidWYpO1xuZHJpdmVycy9udm1lL2hvc3QvZmFicmljcy5jLTE0MjUtXHRpZiAoSVNfRVJSKGN0cmwpKSB7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA4IDA3OjI2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDg2MDcKCQkJCQkJCW91dHB1dDogMjAKCQkJCQkJCXRob3VnaHRzOiAzNAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBhIGJyZWFrZG93biBvZiBteSB0aG91Z2h0IHByb2Nlc3M6CgoqKkRpdmluZyBpbnRvIHRoZSBOVk1lLW9GIENvbnRyb2wgUGF0aCoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgYG52bWZfY3JlYXRlX2N0cmxgLiBJbnRlcmVzdGluZy4gVGhlIGNvZGUgaW5kaWNhdGVzIGl0JiMzOTtzIGEgc3RhdGljIGZ1bmN0aW9uLCB3aGljaCBtZWFucyBpdCYjMzk7cyBzY29wZWQgdG8gdGhlIGN1cnJlbnQgZmlsZS4gQW5kIHRoZSBjYWxsIGdyYXBoIHNob3dzIGl0JiMzOTtzIGludm9rZWQgYnkgYG52bWZfZGV2X3dyaXRlYC4gUmlnaHQsIHNvIGBudm1mX2Rldl93cml0ZWAgaXMgdGhlIGVudHJ5IHBvaW50LCBhbmQgaXQmIzM5O3MgcmVzcG9uc2libGUgZm9yLCB3ZWxsLCB3cml0aW5nIHRvIHRoZSBOVk1lLW9GIGRldmljZSwgYW5kIGxpa2VseSB0aGUgY3JlYXRpb24gb2Ygc29tZSBjb250cm9sIHN0cnVjdHVyZXMuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoYXQmIzM5O3MgaGFwcGVuaW5nIHdoZW4gYSB3cml0ZSBvcGVyYXRpb24gdHJpZ2dlcnMgY29udHJvbCBwYXRoIGFjdGlvbnMuIFRoZXJlZm9yZSwgbGV0JiMzOTtzIGRyaWxsIGRvd24gaW50byBgbnZtZl9kZXZfd3JpdGVgLiBVbmRlcnN0YW5kaW5nIHRoaXMgZnVuY3Rpb24gc2hvdWxkIHByb3ZpZGUgY3J1Y2lhbCBjb250ZXh0IHRvIGhvdyBhbmQgd2hlbiBgbnZtZl9jcmVhdGVfY3RybGAgaXMgYWN0dWFsbHkgY2FsbGVkLiBJIG5lZWQgdG8gc2VlIHdoYXQmIzM5O3MgaGFwcGVuaW5nIGZyb20gdGhlIGRldmljZSB3cml0ZSBvcGVyYXRpb24gYWxsIHRoZSB3YXkgdG8gdGhlIGNvbnRyb2xsZXIgY3JlYXRpb24uIEl0IHNvdW5kcyBsaWtlIHRoZXJlJiMzOTtzIHNvbWUgZGV2aWNlIHNldHVwIGhhcHBlbmluZyBvbiB3cml0ZSwgYW5kIEkmIzM5O2QgYmV0IGNvbnRyb2xsZXIgY3JlYXRpb24gYW5kIGluaXRpYWxpemF0aW9uIGFyZSBwYXJ0IG9mIHRoYXQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA4IDA3OjI2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O252bWZfZGV2X3dyaXRlJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbnZtZS9ob3N0L2ZhYnJpY3MuYz0xNDAxPXN0YXRpYyBERUZJTkVfTVVURVgobnZtZl9kZXZfbXV0ZXgpO1xuZHJpdmVycy9udm1lL2hvc3QvZmFicmljcy5jLTE0MDItXG5kcml2ZXJzL252bWUvaG9zdC9mYWJyaWNzLmM6MTQwMzpzdGF0aWMgc3NpemVfdCBudm1mX2Rldl93cml0ZShzdHJ1Y3QgZmlsZSAqZmlsZSwgY29uc3QgY2hhciBfX3VzZXIgKnVidWYsXG5kcml2ZXJzL252bWUvaG9zdC9mYWJyaWNzLmMtMTQwNC1cdFx0c2l6ZV90IGNvdW50LCBsb2ZmX3QgKnBvcylcbi0tXG5kcml2ZXJzL252bWUvaG9zdC9mYWJyaWNzLmM9MTQ5Nz1zdGF0aWMgY29uc3Qgc3RydWN0IGZpbGVfb3BlcmF0aW9ucyBudm1mX2Rldl9mb3BzID0ge1xuZHJpdmVycy9udm1lL2hvc3QvZmFicmljcy5jLTE0OTgtXHQub3duZXJcdFx0PSBUSElTX01PRFVMRSxcbmRyaXZlcnMvbnZtZS9ob3N0L2ZhYnJpY3MuYzoxNDk5Olx0LndyaXRlXHRcdD0gbnZtZl9kZXZfd3JpdGUsXG5kcml2ZXJzL252bWUvaG9zdC9mYWJyaWNzLmMtMTUwMC1cdC5yZWFkXHRcdD0gc2VxX3JlYWQsXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA4IDA3OjI3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDkxNDYKCQkJCQkJCW91dHB1dDogMjIKCQkJCQkJCXRob3VnaHRzOiAyOQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOgoKKipEaXZpbmcgaW50byB0aGUgTlZNZS1vRiBXcml0ZSBQYXRoKioKCk9rYXksIHNvIHdlJiMzOTtyZSBzdGFydGluZyBhdCBgbnZtZl9kZXZfd3JpdGVgLiBUaGF0JiMzOTtzIHRoZSBsb2dpY2FsIGVudHJ5IHBvaW50IGZvciB3cml0ZXMgaW4gdGhlIE5WTWUtb3Zlci1GYWJyaWNzIHN0YWNrLCB3aGljaCBpcyBleGFjdGx5IHdoZXJlIEkmIzM5O2QgZXhwZWN0IHRvIGJlLiBOb3csIHRvIHRyYWNlIHRoZSBmbG93IGFuZCB1bmRlcnN0YW5kIHRoZSBzcGVjaWZpY3Mgb2YgaG93IHRoaXMgb3BlcmF0aW9uIGdldHMgaGFuZGxlZCwgbGV0JiMzOTtzIGxvb2sgYXQgYG52bWVfdGNwX2FsbG9jX3F1ZXVlYC4gTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMsICYjMzQ7T2theSwgYXJlIHdlIGxvb2tpbmcgYXQgcXVldWUgYWxsb2NhdGlvbiwgb3Igc29tZXRoaW5nIGRlZXBlcj8mIzM0OyBMZXQmIzM5O3Mgc2VlIGlmIHRoaXMgaXMgc2V0dGluZyB1cCB0aGUgcGVyLXF1ZXVlIGNvbnRleHQgZm9yIHRoZSBJL08sIG9yIGlmIGl0IGhhcyBzb21lIG90aGVyIG1vcmUgZnVuZGFtZW50YWwgZnVuY3Rpb24gaW4gdGhlIGRhdGEgcGF0aC4gSSYjMzk7bGwgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyB0aGUgcXVldWVzIGFyZSBtYW5hZ2VkIGFuZCBob3cgdGhpcyBhbGxvYyBmdW5jdGlvbiB0aWVzIGludG8gdGhlIG92ZXJhbGwgc2NoZW1lLiBUaGlzIGZ1bmN0aW9uIHNob3VsZCBiZSBhIGtleSBwaWVjZSBvZiB0aGUgcHV6emxlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wOCAwNzoyNzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtudm1lX3RjcF9hbGxvY19xdWV1ZSYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL252bWUvaG9zdC90Y3AuYz0xNzI0PXN0YXRpYyBpbnQgbnZtZV90Y3Bfc3RhcnRfdGxzKHN0cnVjdCBudm1lX2N0cmwgKm5jdHJsLFxuLS1cbmRyaXZlcnMvbnZtZS9ob3N0L3RjcC5jLTE3NzYtXG5kcml2ZXJzL252bWUvaG9zdC90Y3AuYzoxNzc3OnN0YXRpYyBpbnQgbnZtZV90Y3BfYWxsb2NfcXVldWUoc3RydWN0IG52bWVfY3RybCAqbmN0cmwsIGludCBxaWQsXG5kcml2ZXJzL252bWUvaG9zdC90Y3AuYy0xNzc4LVx0XHRcdFx0a2V5X3NlcmlhbF90IHBza2lkKVxuLS1cbmRyaXZlcnMvbnZtZS9ob3N0L3RjcC5jPTIwOTM9c3RhdGljIGludCBudm1lX3RjcF9hbGxvY19hZG1pbl9xdWV1ZShzdHJ1Y3QgbnZtZV9jdHJsICpjdHJsKVxuLS1cbmRyaXZlcnMvbnZtZS9ob3N0L3RjcC5jLTIxMTEtXG5kcml2ZXJzL252bWUvaG9zdC90Y3AuYzoyMTEyOlx0cmV0ID0gbnZtZV90Y3BfYWxsb2NfcXVldWUoY3RybCwgMCwgcHNraWQpO1xuZHJpdmVycy9udm1lL2hvc3QvdGNwLmMtMjExMy1cdGlmIChyZXQpXG4tLVxuZHJpdmVycy9udm1lL2hvc3QvdGNwLmM9MjEyNz1zdGF0aWMgaW50IF9fbnZtZV90Y3BfYWxsb2NfaW9fcXVldWVzKHN0cnVjdCBudm1lX2N0cmwgKmN0cmwpXG4tLVxuZHJpdmVycy9udm1lL2hvc3QvdGNwLmMtMjE1Mi1cdGZvciAoaSA9IDE7IGkgXHUwMDNjIGN0cmwtXHUwMDNlcXVldWVfY291bnQ7IGkmIzQzOyYjNDM7KSB7XG5kcml2ZXJzL252bWUvaG9zdC90Y3AuYzoyMTUzOlx0XHRyZXQgPSBudm1lX3RjcF9hbGxvY19xdWV1ZShjdHJsLCBpLFxuZHJpdmVycy9udm1lL2hvc3QvdGNwLmMtMjE1NC1cdFx0XHRcdGN0cmwtXHUwMDNldGxzX3Bza2lkKTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDggMDc6Mjc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogOTc4NgoJCQkJCQkJb3V0cHV0OiAyMgoJCQkJCQkJdGhvdWdodHM6IDU5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHN1bW1hcnksIGFzIHRob3VnaCBJJiMzOTttIHRoaW5raW5nIHRocm91Z2ggdGhpcyBwcm9jZXNzOgoKKipEaXZpbmcgaW50byBOVk1lLVRDUCBRdWV1ZSBBbGxvY2F0aW9uKioKCk9rYXksIHNvIGBudm1lX3RjcF9hbGxvY19xdWV1ZWAgaXMgYSBzdGF0aWMgZnVuY3Rpb24uIFRoYXQmIzM5O3MgZ29vZCB0byBrbm93OyBpdCBtZWFucyBpdHMgc2NvcGUgaXMgbGltaXRlZCwgd2hpY2ggY2FuIGhlbHAgd2l0aCB1bmRlcnN0YW5kaW5nIGl0cyByb2xlIHdpdGhpbiB0aGUgbGFyZ2VyIHN5c3RlbS4gSSBzZWUgdGhhdCBib3RoIGBudm1lX3RjcF9hbGxvY19hZG1pbl9xdWV1ZWAgYW5kIGBfX252bWVfdGNwX2FsbG9jX2lvX3F1ZXVlc2AgYXJlIGNhbGxpbmcgaXQuIFRoYXQgaW1tZWRpYXRlbHkgdGVsbHMgbWUgdGhpcyBzdGF0aWMgZnVuY3Rpb24gaXMgdGhlIGNvcmUgb2YgdGhlIHF1ZXVlIGFsbG9jYXRpb24gcHJvY2VzcyBmb3IgTlZNZS9UQ1AuIEdpdmVuIHRoYXQsIGxldCYjMzk7cyBzd2l0Y2ggZ2VhcnMgYW5kIGludmVzdGlnYXRlIGBudm1lX3RjcF9zZXR1cF9jdHJsYCB0byBzZWUgaG93IGl0IHRpZXMgaW50byB0aGUgYWxsb2NhdGlvbiBwcm9jZXNzLiBUaGF0IGxpa2VseSBzZXRzIHRoZSBzdGFnZSBhbmQgdGhlbiBjYWxscyBvbiB0aG9zZSBmdW5jdGlvbnMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA4IDA3OjI3PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O252bWVfdGNwX3NldHVwX2N0cmwmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9udm1lL2hvc3QvdGNwLmM9MjM4Nj1zdGF0aWMgYm9vbCBudm1lX3RjcF9rZXlfcmV2b2tlX25lZWRlZChzdHJ1Y3QgbnZtZV9jdHJsICpjdHJsKVxuLS1cbmRyaXZlcnMvbnZtZS9ob3N0L3RjcC5jLTIzOTAtXG5kcml2ZXJzL252bWUvaG9zdC90Y3AuYzoyMzkxOnN0YXRpYyBpbnQgbnZtZV90Y3Bfc2V0dXBfY3RybChzdHJ1Y3QgbnZtZV9jdHJsICpjdHJsLCBib29sIG5ldylcbmRyaXZlcnMvbnZtZS9ob3N0L3RjcC5jLTIzOTIte1xuLS1cbmRyaXZlcnMvbnZtZS9ob3N0L3RjcC5jPTI0NzQ9c3RhdGljIHZvaWQgbnZtZV90Y3BfcmVjb25uZWN0X2N0cmxfd29yayhzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspXG4tLVxuZHJpdmVycy9udm1lL2hvc3QvdGNwLmMtMjQ4Mi1cbmRyaXZlcnMvbnZtZS9ob3N0L3RjcC5jOjI0ODM6XHRyZXQgPSBudm1lX3RjcF9zZXR1cF9jdHJsKGN0cmwsIGZhbHNlKTtcbmRyaXZlcnMvbnZtZS9ob3N0L3RjcC5jLTI0ODQtXHRpZiAocmV0KVxuLS1cbmRyaXZlcnMvbnZtZS9ob3N0L3RjcC5jPTI1NDQ9c3RhdGljIHZvaWQgbnZtZV9yZXNldF9jdHJsX3dvcmsoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxuLS1cbmRyaXZlcnMvbnZtZS9ob3N0L3RjcC5jLTI1NjMtXG5kcml2ZXJzL252bWUvaG9zdC90Y3AuYzoyNTY0Olx0cmV0ID0gbnZtZV90Y3Bfc2V0dXBfY3RybChjdHJsLCBmYWxzZSk7XG5kcml2ZXJzL252bWUvaG9zdC90Y3AuYy0yNTY1LVx0aWYgKHJldClcbi0tXG5kcml2ZXJzL252bWUvaG9zdC90Y3AuYz0yOTk5PXN0YXRpYyBzdHJ1Y3QgbnZtZV9jdHJsICpudm1lX3RjcF9jcmVhdGVfY3RybChzdHJ1Y3QgZGV2aWNlICpkZXYsXG4tLVxuZHJpdmVycy9udm1lL2hvc3QvdGNwLmMtMzAxOC1cbmRyaXZlcnMvbnZtZS9ob3N0L3RjcC5jOjMwMTk6XHRyZXQgPSBudm1lX3RjcF9zZXR1cF9jdHJsKFx1MDAyNmN0cmwtXHUwMDNlY3RybCwgdHJ1ZSk7XG5kcml2ZXJzL252bWUvaG9zdC90Y3AuYy0zMDIwLVx0aWYgKHJldClcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDggMDc6Mjc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTA1MDUKCQkJCQkJCW91dHB1dDogMjQKCQkJCQkJCXRob3VnaHRzOiAzNgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBhIHN1bW1hcnkgb2YgbXkgdGhvdWdodCBwcm9jZXNzLCBhcyByZXF1ZXN0ZWQ6CgoqKkRpdmluZyBpbnRvIHRoZSBOVk1lL1RDUCBDb250cm9sbGVyIENyZWF0aW9uKioKCk9rYXksIHNvIEkmIzM5O20gaG9taW5nIGluIG9uIHRoZSBjb250cm9sbGVyIGNyZWF0aW9uIHByb2Nlc3MuIE15IGltbWVkaWF0ZSBmb2N1cyBpcyBvbiBgbnZtZV90Y3BfY3JlYXRlX2N0cmxgLiBUaGF0JiMzOTtzIGNsZWFybHkgdGhlIGVudHJ5IHBvaW50LCB0aGUgY3JpdGljYWwgZnVuY3Rpb24gdGhhdCBraWNrcyBldmVyeXRoaW5nIG9mZi4gTm93LCB3aGVyZSBkb2VzIGl0IGdvIGZyb20gdGhlcmU/IE15IG5leHQgc3RlcCBpcyB0byBleGFtaW5lIGBudm1ldF90Y3Bfc2V0X3F1ZXVlX3NvY2tgLiBJdCYjMzk7cyBsaWtlbHkgaW52b2x2ZWQgaW4gc2V0dGluZyB1cCB0aGUgc29ja2V0IGZvciB0aGUgcXVldWUuIEkgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyB0aGUgc29ja2V0IGlzIGNvbmZpZ3VyZWQgd2l0aGluIHRoZSBUQ1AgdHJhbnNwb3J0IGNvbnRleHQuIFRoaXMgaXMgdGhlIGNydWNpYWwgbGluayBJIGFtIGxvb2tpbmcgZm9yLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBob3cgdGhlIGNvbnRyb2wgcGF0aCBhbmQgZGF0YSBwYXRoIGFyZSBtYW5hZ2VkLiBGcm9tIHRoZXJlIEkgY2FuIGRldGVybWluZSBpZiBhbnkgaW1wcm92ZW1lbnQgaXMgbmVlZGVkLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wOCAwNzoyNzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtudm1ldF90Y3Bfc2V0X3F1ZXVlX3NvY2smIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9udm1lL3RhcmdldC90Y3AuYz0xNjcxPXN0YXRpYyB2b2lkIG52bWV0X3RjcF9zdGF0ZV9jaGFuZ2Uoc3RydWN0IHNvY2sgKnNrKVxuLS1cbmRyaXZlcnMvbnZtZS90YXJnZXQvdGNwLmMtMTY5OC1cbmRyaXZlcnMvbnZtZS90YXJnZXQvdGNwLmM6MTY5OTpzdGF0aWMgaW50IG52bWV0X3RjcF9zZXRfcXVldWVfc29jayhzdHJ1Y3QgbnZtZXRfdGNwX3F1ZXVlICpxdWV1ZSlcbmRyaXZlcnMvbnZtZS90YXJnZXQvdGNwLmMtMTcwMC17XG4tLVxuZHJpdmVycy9udm1lL3RhcmdldC90Y3AuYz0xODMyPXN0YXRpYyB2b2lkIG52bWV0X3RjcF90bHNfaGFuZHNoYWtlX2RvbmUodm9pZCAqZGF0YSwgaW50IHN0YXR1cyxcbi0tXG5kcml2ZXJzL252bWUvdGFyZ2V0L3RjcC5jLTE4NTYtXHRpZiAoIXN0YXR1cylcbmRyaXZlcnMvbnZtZS90YXJnZXQvdGNwLmM6MTg1NzpcdFx0c3RhdHVzID0gbnZtZXRfdGNwX3NldF9xdWV1ZV9zb2NrKHF1ZXVlKTtcbmRyaXZlcnMvbnZtZS90YXJnZXQvdGNwLmMtMTg1OC1cbi0tXG5kcml2ZXJzL252bWUvdGFyZ2V0L3RjcC5jPTE5MTk9c3RhdGljIHZvaWQgbnZtZXRfdGNwX2FsbG9jX3F1ZXVlKHN0cnVjdCBudm1ldF90Y3BfcG9ydCAqcG9ydCxcbi0tXG5kcml2ZXJzL252bWUvdGFyZ2V0L3RjcC5jLTE5OTYtXG5kcml2ZXJzL252bWUvdGFyZ2V0L3RjcC5jOjE5OTc6XHRyZXQgPSBudm1ldF90Y3Bfc2V0X3F1ZXVlX3NvY2socXVldWUpO1xuZHJpdmVycy9udm1lL3RhcmdldC90Y3AuYy0xOTk4LVx0aWYgKHJldClcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDggMDc6Mjc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTEwNzkKCQkJCQkJCW91dHB1dDogMjIKCQkJCQkJCXRob3VnaHRzOiAyMwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aGF0IGNvZGUgc25pcHBldCwgZGVsaXZlcmVkIGFzIGlmIGl0JiMzOTtzIG15IG93biB0aG91Z2h0IHByb2Nlc3M6CgoqKkRlY29kaW5nIHRoZSBOVk1lLW9GIFRDUCBRdWV1ZSBBbGxvY2F0aW9uKioKCkFscmlnaHQsIGxldCYjMzk7cyBicmVhayB0aGlzIGRvd24uIEZyb20gd2hhdCBJJiMzOTttIHNlZWluZyBoZXJlLCBgbnZtZXRfdGNwX2FsbG9jX3F1ZXVlYCBpcyBjcnVjaWFsLiBJdCYjMzk7cyBjbGVhcmx5IHRoZSBmdW5jdGlvbiByZXNwb25zaWJsZSBmb3IgY3JlYXRpbmcgYSBuZXcgcXVldWUgd2l0aGluIHRoZSBOVk1lIG92ZXIgVENQIGZyYW1ld29yay4gVGhlIGtleSBjb250ZXh0IGlzIHRoYXQgYG52bWV0X3RjcF9hY2NlcHRfd29ya2AgaXMgdGhlIGNhbGxlci4gVGhpcyBtZWFucyB0aGUgcXVldWUgYWxsb2NhdGlvbiBwcm9jZXNzIGlzICp0cmlnZ2VyZWQqIGR1cmluZyB0aGUgVENQIGNvbm5lY3Rpb24gYWNjZXB0YW5jZSBwaGFzZS4gV2hlbmV2ZXIgYSBuZXcgVENQIGNvbm5lY3Rpb24gaXMgZXN0YWJsaXNoZWQgYW5kIGFjY2VwdGVkIGJ5IHRoZSBOVk1lLW9GIHRhcmdldCwgdGhpcyBhbGxvY2F0aW9uIHJvdXRpbmUgZ2V0cyBjYWxsZWQuIEl0JiMzOTtzIHNhZmUgdG8gYXNzdW1lLCB0aGVuLCB0aGF0IGBudm1ldF90Y3BfYWxsb2NfcXVldWVgIGlzIHRhc2tlZCB3aXRoIHNldHRpbmcgdXAgYWxsIHRoZSBuZWNlc3NhcnkgZGF0YSBzdHJ1Y3R1cmVzIGFuZCByZXNvdXJjZXMgZm9yIGhhbmRsaW5nIEkvTyBvdmVyIHRoYXQgbmV3bHkgZXN0YWJsaXNoZWQgVENQIHNlc3Npb24uIFRoaXMgaXMgc3RhbmRhcmQgc3R1ZmYsIHNvIGl0IHByb2JhYmx5IHRha2VzIHRoZSBjb25uZWN0aW9uIGluZm9ybWF0aW9uIGl0IGhhcyBqdXN0IHJlY2VpdmVkIGFuZCB1c2VzIGl0IHRvIHByb3Zpc2lvbiB0aGUgcmlnaHQgYW1vdW50IG9mIG1lbW9yeS9ldGMuIGZvciB0aGF0IGNvbm5lY3Rpb24uIE5vdGhpbmcgc3VycHJpc2luZyBoZXJlLiBQcmV0dHkgc3RhbmRhcmQsIGFuZCBpdCBtYWtlcyBzZW5zZSB0aGF0IHlvdSB3b3VsZCBoYW5kbGUgdGhlIGFsbG9jYXRpb24gb2YgYSBxdWV1ZSBhZnRlciB0aGUgYWNjZXB0IGNhbGwgaGFzIGJlZW4gY29tcGxldGVkLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wOCAwNzoyNzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtudm1ldF90Y3BfYWxsb2NfcXVldWUmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9udm1lL3RhcmdldC90Y3AuYz0xOTE2PXN0YXRpYyB2b2lkIG52bWV0X3RjcF90bHNfaGFuZHNoYWtlX3RpbWVvdXQoc3RydWN0IHdvcmtfc3RydWN0ICp3KSB7fVxuLS1cbmRyaXZlcnMvbnZtZS90YXJnZXQvdGNwLmMtMTkxOC1cbmRyaXZlcnMvbnZtZS90YXJnZXQvdGNwLmM6MTkxOTpzdGF0aWMgdm9pZCBudm1ldF90Y3BfYWxsb2NfcXVldWUoc3RydWN0IG52bWV0X3RjcF9wb3J0ICpwb3J0LFxuZHJpdmVycy9udm1lL3RhcmdldC90Y3AuYy0xOTIwLVx0XHRzdHJ1Y3Qgc29ja2V0ICpuZXdzb2NrKVxuLS1cbmRyaXZlcnMvbnZtZS90YXJnZXQvdGNwLmM9MjAyOD1zdGF0aWMgdm9pZCBudm1ldF90Y3BfYWNjZXB0X3dvcmsoc3RydWN0IHdvcmtfc3RydWN0ICp3KVxuLS1cbmRyaXZlcnMvbnZtZS90YXJnZXQvdGNwLmMtMjA0MS1cdFx0fVxuZHJpdmVycy9udm1lL3RhcmdldC90Y3AuYzoyMDQyOlx0XHRudm1ldF90Y3BfYWxsb2NfcXVldWUocG9ydCwgbmV3c29jayk7XG5kcml2ZXJzL252bWUvdGFyZ2V0L3RjcC5jLTIwNDMtXHR9XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA4IDA3OjI3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDExNjE4CgkJCQkJCQlvdXRwdXQ6IDI0CgkJCQkJCQl0aG91Z2h0czogNDYKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2UsIHByZXNlbnRlZCBpbiB0aGUgZmlyc3QgcGVyc29uOgoKKipGb2N1c2luZyBvbiBOVk1lLW9GIFRDUCBDb25uZWN0aW9uIEVzdGFibGlzaG1lbnQqKgoKUmlnaHQsIGxldCYjMzk7cyB6ZXJvIGluLiBgbnZtZXRfdGNwX2FjY2VwdF93b3JrYCBmZWVscyBsaWtlIGEgZ29vZCwgZm9jdXNlZCBzeW1ib2wgdG8gc3RhcnQgd2l0aC4gSXQmIzM5O3MgbGlrZWx5IHdoZXJlIHRoZSBjb25uZWN0aW9uIGFjY2VwdGFuY2UgbG9naWMgZm9yIE5WTWUgb3ZlciBUQ1AgaXMgaGFuZGxlZCwgd2hpY2ggaXMgd2hlcmUgSSB3YW50IHRvIHN0YXJ0IG15IGFuYWx5c2lzLgoKTm93LCBjb25zaWRlcmluZyBjb25uZWN0aW9uIGVzdGFibGlzaG1lbnQgYW5kIHBvdGVudGlhbCBRb1Mgb3IgdHJhZmZpYyBzaGFwaW5nIGNvbnNpZGVyYXRpb25zLCBJIG5lZWQgdG8gY2hlY2sgaG93IHRyYWZmaWMgY2xhc3MgaXMgYmVpbmcgc2V0LiBUaGF0IG1lYW5zIEkgc2hvdWxkIGFsc28gY2hlY2sgdGhlIGZ1bmN0aW9uczogYF9faXA2X3NvY2tfc2V0X3RjbGFzc2AgYW5kIGBpcDZfc29ja19zZXRfdGNsYXNzYC4gVGhlc2UgYXJlIHJlbGV2YW50IGZ1bmN0aW9ucyB0aGF0IGxpa2VseSBjb25maWd1cmUgdGhlIElQdjYgdHJhZmZpYyBjbGFzcyBmaWVsZCwgd2hpY2ggaXMgY3J1Y2lhbCBmb3IgbWFuYWdpbmcgdGhlIGJlaGF2aW9yIG9mIE5WTWUtb0YgdHJhZmZpYy4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaG93IHRoZXNlIHRyYWZmaWMgY2xhc3Mgc2V0dGluZ3MgYXJlIGJlaW5nIHVzZWQgd2l0aGluIHRoaXMgY29udGV4dC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDggMDc6Mjc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7X19pcDZfc29ja19zZXRfdGNsYXNzJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2luY2x1ZGUvbmV0L2lwdjYuaD0xMjUwPXN0YXRpYyBpbmxpbmUgdm9pZCBpcDZfc29ja19zZXRfcmVjdmVycihzdHJ1Y3Qgc29jayAqc2spXG4tLVxuaW5jbHVkZS9uZXQvaXB2Ni5oLTEyNTQtXG5pbmNsdWRlL25ldC9pcHY2Lmg6MTI1NTp2b2lkIF9faXA2X3NvY2tfc2V0X3RjbGFzcyhzdHJ1Y3Qgc29jayAqc2ssIGludCB2YWwpO1xuaW5jbHVkZS9uZXQvaXB2Ni5oLTEyNTYtdm9pZCBpcDZfc29ja19zZXRfdGNsYXNzKHN0cnVjdCBzb2NrICpzaywgaW50IHZhbCk7XG4tLVxubmV0L2lwdjYvaXB2Nl9zb2NrZ2x1ZS5jPTMwMj1zdGF0aWMgaW50IGlwdjZfc2V0X29wdF9oZHIoc3RydWN0IHNvY2sgKnNrLCBpbnQgb3B0bmFtZSwgc29ja3B0cl90IG9wdHZhbCxcbi0tXG5uZXQvaXB2Ni9pcHY2X3NvY2tnbHVlLmMtMzc1LVxubmV0L2lwdjYvaXB2Nl9zb2NrZ2x1ZS5jOjM3Njp2b2lkIF9faXA2X3NvY2tfc2V0X3RjbGFzcyhzdHJ1Y3Qgc29jayAqc2ssIGludCB2YWwpXG5uZXQvaXB2Ni9pcHY2X3NvY2tnbHVlLmMtMzc3LXtcbi0tXG5uZXQvaXB2Ni9pcHY2X3NvY2tnbHVlLmM9MzkwPXZvaWQgaXA2X3NvY2tfc2V0X3RjbGFzcyhzdHJ1Y3Qgc29jayAqc2ssIGludCB2YWwpXG4tLVxubmV0L2lwdjYvaXB2Nl9zb2NrZ2x1ZS5jLTM5Mi1cdHNvY2tvcHRfbG9ja19zb2NrKHNrKTtcbm5ldC9pcHY2L2lwdjZfc29ja2dsdWUuYzozOTM6XHRfX2lwNl9zb2NrX3NldF90Y2xhc3Moc2ssIHZhbCk7XG5uZXQvaXB2Ni9pcHY2X3NvY2tnbHVlLmMtMzk0LVx0c29ja29wdF9yZWxlYXNlX3NvY2soc2spO1xuLS1cbm5ldC9pcHY2L2lwdjZfc29ja2dsdWUuYz0zOTg9aW50IGRvX2lwdjZfc2V0c29ja29wdChzdHJ1Y3Qgc29jayAqc2ssIGludCBsZXZlbCwgaW50IG9wdG5hbWUsXG4tLVxubmV0L2lwdjYvaXB2Nl9zb2NrZ2x1ZS5jLTczNy1cdFx0XHR2YWwgPSAwO1xubmV0L2lwdjYvaXB2Nl9zb2NrZ2x1ZS5jOjczODpcdFx0X19pcDZfc29ja19zZXRfdGNsYXNzKHNrLCB2YWwpO1xubmV0L2lwdjYvaXB2Nl9zb2NrZ2x1ZS5jLTczOS1cdFx0cmV0diA9IDA7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA4IDA3OjI3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDEyMzk5CgkJCQkJCQlvdXRwdXQ6IDIzCgkJCQkJCQl0aG91Z2h0czogMTQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhhdDoKCioqTXkgUGVyc3BlY3RpdmUgb24gYGlwNl9zb2NrX3NldF90Y2xhc3NgKioKCkFscmlnaHQsIHNvIGBpcDZfc29ja19zZXRfdGNsYXNzYCBpcyBleHBsaWNpdGx5ICpleHBvcnRlZCouIFRoYXQmIzM5O3MgdGhlIGtleSB0YWtlYXdheSBoZXJlLiBJdCBtZWFucyB0aGlzIGZ1bmN0aW9uIGlzIGludGVudGlvbmFsbHkgbWFkZSBhdmFpbGFibGUgZm9yIHVzZSBvdXRzaWRlIG9mIHRoZSBtb2R1bGUgb3IgY29tcG9uZW50IGluIHdoaWNoIGl0JiMzOTtzIGRlZmluZWQuIE15IGltbWVkaWF0ZSB0aG91Z2h0IGlzLCB3aGF0IGFyZSB0aGUgaW1wbGljYXRpb25zIG9mIHRoaXM/IEl0IHN1Z2dlc3RzIGEgZGVsaWJlcmF0ZSBkZXNpZ24gZGVjaXNpb24sIGltcGx5aW5nIGl0JiMzOTtzIG1lYW50IHRvIGJlIGEgcGFydCBvZiBhIHdlbGwtZGVmaW5lZCBBUEkgb3IgaW50ZW5kZWQgZm9yIGJyb2FkZXIgY29uc3VtcHRpb24sIHBvdGVudGlhbGx5IGJ5IG90aGVyIG5ldHdvcmtpbmcgc3Vic3lzdGVtcyBvciBldmVuIHVzZXItc3BhY2UgYXBwbGljYXRpb25zIHdpdGggdGhlIHJpZ2h0IHByaXZpbGVnZXMuCgpLbm93aW5nIGl0JiMzOTtzIGV4cG9ydGVkLCBJJiMzOTtkIHdhbnQgdG8gdW5kZXJzdGFuZCB0aGUgKndoeSogYmVoaW5kIHRoaXMgZGVjaXNpb24uIFdoYXQgcHJvYmxlbXMgZG9lcyB0aGlzIGZ1bmN0aW9uIHNvbHZlPyBXaGF0IHVzZS1jYXNlcyBpcyBpdCBkZXNpZ25lZCB0byBzdXBwb3J0PyBJcyBpdCBhIGNydWNpYWwgYnVpbGRpbmcgYmxvY2sgZm9yIFFvUyBtYW5hZ2VtZW50LCB0cmFmZmljIHNoYXBpbmcsIG9yIG1heWJlIHNvbWV0aGluZyBtb3JlIHNwZWNpYWxpemVkIGxpa2UgRGlmZmVyZW50aWF0ZWQgU2VydmljZXMgKERpZmZTZXJ2KSBpbXBsZW1lbnRhdGlvbnMgaW4gYW4gSVB2NiBjb250ZXh0PyBBbmQgb2YgY291cnNlLCB0aGUgZXZlci1wcmVzZW50IHNlY3VyaXR5IGNvbnNpZGVyYXRpb25zOiB3aGF0IGFyZSB0aGUgYWNjZXNzIGNvbnRyb2xzIGFyb3VuZCBpdHMgdXNlPyBJcyBpdCBzdXNjZXB0aWJsZSB0byBtaXN1c2Ugb3IgYWJ1c2UsIGFuZCB3aGF0IGd1YXJkcmFpbHMgaGF2ZSBiZWVuIHB1dCBpbiBwbGFjZSB0byBwcmV2ZW50IHRoYXQ/IEkmIzM5O2Qgd2FudCB0byBkaXZlIGRlZXBlciBpbnRvIGl0cyBpbXBsZW1lbnRhdGlvbiBhbmQgYW55IGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiB0byBmdWxseSBncmFzcCBpdHMgaW50ZW5kZWQgcHVycG9zZSBhbmQgcG90ZW50aWFsIGltcGFjdCBvbiBzeXN0ZW0gYmVoYXZpb3IuIEl0JiMzOTtzIGV4cG9ydGVkLCBzbyBpdCYjMzk7cyBmYWlyIGdhbWUgZm9yIGFuYWx5c2lzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wOCAwNzoyNzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtpcDZfc29ja19zZXRfdGNsYXNzJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbnZtZS9ob3N0L3RjcC5jPTE3Nzc9c3RhdGljIGludCBudm1lX3RjcF9hbGxvY19xdWV1ZShzdHJ1Y3QgbnZtZV9jdHJsICpuY3RybCwgaW50IHFpZCxcbi0tXG5kcml2ZXJzL252bWUvaG9zdC90Y3AuYy0xODQyLVx0ICAgIHF1ZXVlLVx1MDAzZXNvY2stXHUwMDNlc2stXHUwMDNlc2tfZmFtaWx5ID09IEFGX0lORVQ2KVxuZHJpdmVycy9udm1lL2hvc3QvdGNwLmM6MTg0MzpcdFx0aXA2X3NvY2tfc2V0X3RjbGFzcyhxdWV1ZS1cdTAwM2Vzb2NrLVx1MDAzZXNrLCBuY3RybC1cdTAwM2VvcHRzLVx1MDAzZXRjbGFzcyk7XG5kcml2ZXJzL252bWUvaG9zdC90Y3AuYy0xODQ0LSNlbmRpZlxuLS1cbmRyaXZlcnMvbnZtZS90YXJnZXQvdGNwLmM9MTY5OT1zdGF0aWMgaW50IG52bWV0X3RjcF9zZXRfcXVldWVfc29jayhzdHJ1Y3QgbnZtZXRfdGNwX3F1ZXVlICpxdWV1ZSlcbi0tXG5kcml2ZXJzL252bWUvdGFyZ2V0L3RjcC5jLTE3MzItXHRcdGlmIChyY3ZfdGNsYXNzIFx1MDAzZSAwKVxuZHJpdmVycy9udm1lL3RhcmdldC90Y3AuYzoxNzMzOlx0XHRcdGlwNl9zb2NrX3NldF90Y2xhc3Moc29jay1cdTAwM2VzaywgcmN2X3RjbGFzcyk7XG5kcml2ZXJzL252bWUvdGFyZ2V0L3RjcC5jLTE3MzQtXHR9XG4tLVxuaW5jbHVkZS9uZXQvaXB2Ni5oPTEyNTA9c3RhdGljIGlubGluZSB2b2lkIGlwNl9zb2NrX3NldF9yZWN2ZXJyKHN0cnVjdCBzb2NrICpzaylcbi0tXG5pbmNsdWRlL25ldC9pcHY2LmgtMTI1NC1cbmluY2x1ZGUvbmV0L2lwdjYuaDoxMjU1OnZvaWQgX19pcDZfc29ja19zZXRfdGNsYXNzKHN0cnVjdCBzb2NrICpzaywgaW50IHZhbCk7XG5pbmNsdWRlL25ldC9pcHY2Lmg6MTI1Njp2b2lkIGlwNl9zb2NrX3NldF90Y2xhc3Moc3RydWN0IHNvY2sgKnNrLCBpbnQgdmFsKTtcbmluY2x1ZGUvbmV0L2lwdjYuaC0xMjU3LVxuLS1cbm5ldC9pcHY2L2lwdjZfc29ja2dsdWUuYz0zMDI9c3RhdGljIGludCBpcHY2X3NldF9vcHRfaGRyKHN0cnVjdCBzb2NrICpzaywgaW50IG9wdG5hbWUsIHNvY2twdHJfdCBvcHR2YWwsXG4tLVxubmV0L2lwdjYvaXB2Nl9zb2NrZ2x1ZS5jLTM3NS1cbm5ldC9pcHY2L2lwdjZfc29ja2dsdWUuYzozNzY6dm9pZCBfX2lwNl9zb2NrX3NldF90Y2xhc3Moc3RydWN0IHNvY2sgKnNrLCBpbnQgdmFsKVxubmV0L2lwdjYvaXB2Nl9zb2NrZ2x1ZS5jLTM3Ny17XG4tLVxubmV0L2lwdjYvaXB2Nl9zb2NrZ2x1ZS5jLTM4OS1cbm5ldC9pcHY2L2lwdjZfc29ja2dsdWUuYzozOTA6dm9pZCBpcDZfc29ja19zZXRfdGNsYXNzKHN0cnVjdCBzb2NrICpzaywgaW50IHZhbClcbm5ldC9pcHY2L2lwdjZfc29ja2dsdWUuYy0zOTEte1xubmV0L2lwdjYvaXB2Nl9zb2NrZ2x1ZS5jLTM5Mi1cdHNvY2tvcHRfbG9ja19zb2NrKHNrKTtcbm5ldC9pcHY2L2lwdjZfc29ja2dsdWUuYzozOTM6XHRfX2lwNl9zb2NrX3NldF90Y2xhc3Moc2ssIHZhbCk7XG5uZXQvaXB2Ni9pcHY2X3NvY2tnbHVlLmMtMzk0LVx0c29ja29wdF9yZWxlYXNlX3NvY2soc2spO1xubmV0L2lwdjYvaXB2Nl9zb2NrZ2x1ZS5jLTM5NS19XG5uZXQvaXB2Ni9pcHY2X3NvY2tnbHVlLmM6Mzk2OkVYUE9SVF9TWU1CT0woaXA2X3NvY2tfc2V0X3RjbGFzcyk7XG5uZXQvaXB2Ni9pcHY2X3NvY2tnbHVlLmMtMzk3LVxubmV0L2lwdjYvaXB2Nl9zb2NrZ2x1ZS5jPTM5OD1pbnQgZG9faXB2Nl9zZXRzb2Nrb3B0KHN0cnVjdCBzb2NrICpzaywgaW50IGxldmVsLCBpbnQgb3B0bmFtZSxcbi0tXG5uZXQvaXB2Ni9pcHY2X3NvY2tnbHVlLmMtNzM3LVx0XHRcdHZhbCA9IDA7XG5uZXQvaXB2Ni9pcHY2X3NvY2tnbHVlLmM6NzM4Olx0XHRfX2lwNl9zb2NrX3NldF90Y2xhc3Moc2ssIHZhbCk7XG5uZXQvaXB2Ni9pcHY2X3NvY2tnbHVlLmMtNzM5LVx0XHRyZXR2ID0gMDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yOS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDggMDc6Mjc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTM2MjEKCQkJCQkJCW91dHB1dDogMjIKCQkJCQkJCXRob3VnaHRzOiAxNjQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqSW5pdGlhbCBBc3Nlc3NtZW50IG9mIEtleSBFbnRyeSBQb2ludHMqKgoKT2theSwgbGV0JiMzOTtzIGJyZWFrIHRoaXMgZG93bi4gSSBzZWUgd2UmIzM5O3JlIGxvb2tpbmcgYXQgc3BlY2lmaWMgZnVuY3Rpb25zLCBwcmVzdW1hYmx5IHdpdGhpbiBhIG5ldHdvcmtpbmcgb3Igc3RvcmFnZSBjb250ZXh0LCBnaXZlbiB0aGUgbmFtZXMuIEZpcnN0LCBJIGhhdmUgYSBsaXN0IG9mIGBGb2N1c1N5bWJvbHNgOiBgbnZtZl9kZXZfd3JpdGVgLCBgbnZtZV90Y3BfY3JlYXRlX2N0cmxgLCBgbnZtZXRfdGNwX2FjY2VwdF93b3JrYCwgYF9faXA2X3NvY2tfc2V0X3RjbGFzc2AsIGFuZCBgaXA2X3NvY2tfc2V0X3RjbGFzc2AuIE5vdywgcmlnaHQgb2ZmIHRoZSBiYXQsIGBudm1mX2Rldl93cml0ZWAgc2VlbXMgaW50ZXJlc3Rpbmc7IGl0IGxpa2VseSBpbnZvbHZlcyBOVk1lIG92ZXIgRmFicmljcywgc28gdGhhdCYjMzk7cyBhIGdvb2QgcGxhY2UgdG8gc3RhcnQgZGlnZ2luZy4gYG52bWVfdGNwX2NyZWF0ZV9jdHJsYCBpcyBhbm90aGVyIHNvbGlkIGNhbmRpZGF0ZSAtIGNyZWF0aW5nIGEgY29udHJvbCBjb25uZWN0aW9uIGlzIG9mdGVuIGNyaXRpY2FsLiBBbmQsIGBudm1ldF90Y3BfYWNjZXB0X3dvcmtgIGFsc28gbWFrZXMgc2Vuc2UsIGl0JiMzOTtzIGRlYWxpbmcgd2l0aCBhY2NlcHRpbmcgd29yayByZWxhdGluZyB0byB0aGUgdGFyZ2V0LiBUaGVuLCB0aGVyZSYjMzk7cyBgX19pcDZfc29ja19zZXRfdGNsYXNzYCB3aGljaCBpcyBsaW5rZWQgdG8gYGRvX2lwdjZfc2V0c29ja29wdGAsIHdoaWNoIEkgc3VwcG9zZSBpcyBhIGdvb2QgZW50cnkgcG9pbnQuIEluIGZhY3QsIGxldCYjMzk7cyBleHBsb3JlIGBkb19pcHY2X3NldHNvY2tvcHRgIGZ1cnRoZXIgYW5kIHNlZSB3aGF0IHdlIGNhbiBmaW5kLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wOCAwNzoyNzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtkb19pcHY2X3NldHNvY2tvcHQmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7aW5jbHVkZS9uZXQvaXB2Ni5oPTExMzg9REVDTEFSRV9TVEFUSUNfS0VZX0ZBTFNFKGlwNl9taW5faG9wY291bnQpO1xuaW5jbHVkZS9uZXQvaXB2Ni5oLTExMzktXG5pbmNsdWRlL25ldC9pcHY2Lmg6MTE0MDppbnQgZG9faXB2Nl9zZXRzb2Nrb3B0KHN0cnVjdCBzb2NrICpzaywgaW50IGxldmVsLCBpbnQgb3B0bmFtZSwgc29ja3B0cl90IG9wdHZhbCxcbmluY2x1ZGUvbmV0L2lwdjYuaC0xMTQxLVx0XHQgICAgICAgdW5zaWduZWQgaW50IG9wdGxlbik7XG4tLVxubmV0L2NvcmUvZmlsdGVyLmM9NTY1OT1zdGF0aWMgaW50IHNvbF9pcHY2X3NvY2tvcHQoc3RydWN0IHNvY2sgKnNrLCBpbnQgb3B0bmFtZSxcbi0tXG5uZXQvY29yZS9maWx0ZXIuYy01NjgwLVxubmV0L2NvcmUvZmlsdGVyLmM6NTY4MTpcdHJldHVybiBkb19pcHY2X3NldHNvY2tvcHQoc2ssIFNPTF9JUFY2LCBvcHRuYW1lLFxubmV0L2NvcmUvZmlsdGVyLmMtNTY4Mi1cdFx0XHRcdCAgS0VSTkVMX1NPQ0tQVFIob3B0dmFsKSwgKm9wdGxlbik7XG4tLVxubmV0L2lwdjQvdGNwLmM9NDE3Mj1pbnQgdGNwX3NldHNvY2tvcHQoc3RydWN0IHNvY2sgKnNrLCBpbnQgbGV2ZWwsIGludCBvcHRuYW1lLCBzb2NrcHRyX3Qgb3B0dmFsLFxuLS1cbm5ldC9pcHY0L3RjcC5jLTQxNzctXHRpZiAobGV2ZWwgIT0gU09MX1RDUClcbm5ldC9pcHY0L3RjcC5jOjQxNzg6XHRcdC8qIFBhaXJlZCB3aXRoIFdSSVRFX09OQ0UoKSBpbiBkb19pcHY2X3NldHNvY2tvcHQoKSBhbmQgdGNwX3Y2X2Nvbm5lY3QoKSAqL1xubmV0L2lwdjQvdGNwLmMtNDE3OS1cdFx0cmV0dXJuIFJFQURfT05DRShpY3NrLVx1MDAzZWljc2tfYWZfb3BzKS1cdTAwM2VzZXRzb2Nrb3B0KHNrLCBsZXZlbCwgb3B0bmFtZSxcbi0tXG5uZXQvaXB2NC90Y3AuYz00ODU3PWludCB0Y3BfZ2V0c29ja29wdChzdHJ1Y3Qgc29jayAqc2ssIGludCBsZXZlbCwgaW50IG9wdG5hbWUsIGNoYXIgX191c2VyICpvcHR2YWwsXG4tLVxubmV0L2lwdjQvdGNwLmMtNDg2Mi1cdGlmIChsZXZlbCAhPSBTT0xfVENQKVxubmV0L2lwdjQvdGNwLmM6NDg2MzpcdFx0LyogUGFpcmVkIHdpdGggV1JJVEVfT05DRSgpIGluIGRvX2lwdjZfc2V0c29ja29wdCgpIGFuZCB0Y3BfdjZfY29ubmVjdCgpICovXG5uZXQvaXB2NC90Y3AuYy00ODY0LVx0XHRyZXR1cm4gUkVBRF9PTkNFKGljc2stXHUwMDNlaWNza19hZl9vcHMpLVx1MDAzZWdldHNvY2tvcHQoc2ssIGxldmVsLCBvcHRuYW1lLFxuLS1cbm5ldC9pcHY2L2lwdjZfc29ja2dsdWUuYz0zOTY9RVhQT1JUX1NZTUJPTChpcDZfc29ja19zZXRfdGNsYXNzKTtcbm5ldC9pcHY2L2lwdjZfc29ja2dsdWUuYy0zOTctXG5uZXQvaXB2Ni9pcHY2X3NvY2tnbHVlLmM6Mzk4OmludCBkb19pcHY2X3NldHNvY2tvcHQoc3RydWN0IHNvY2sgKnNrLCBpbnQgbGV2ZWwsIGludCBvcHRuYW1lLFxubmV0L2lwdjYvaXB2Nl9zb2NrZ2x1ZS5jLTM5OS1cdFx0ICAgICAgIHNvY2twdHJfdCBvcHR2YWwsIHVuc2lnbmVkIGludCBvcHRsZW4pXG4tLVxubmV0L2lwdjYvaXB2Nl9zb2NrZ2x1ZS5jPTk2OT1pbnQgaXB2Nl9zZXRzb2Nrb3B0KHN0cnVjdCBzb2NrICpzaywgaW50IGxldmVsLCBpbnQgb3B0bmFtZSwgc29ja3B0cl90IG9wdHZhbCxcbi0tXG5uZXQvaXB2Ni9pcHY2X3NvY2tnbHVlLmMtOTc5LVxubmV0L2lwdjYvaXB2Nl9zb2NrZ2x1ZS5jOjk4MDpcdGVyciA9IGRvX2lwdjZfc2V0c29ja29wdChzaywgbGV2ZWwsIG9wdG5hbWUsIG9wdHZhbCwgb3B0bGVuKTtcbm5ldC9pcHY2L2lwdjZfc29ja2dsdWUuYy05ODEtI2lmZGVmIENPTkZJR19ORVRGSUxURVJcbi0tXG5uZXQvaXB2Ni90Y3BfaXB2Ni5jPTQwMz1zdGF0aWMgaW50IHRjcF92Nl9lcnIoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IGluZXQ2X3NrYl9wYXJtICpvcHQsXG4tLVxubmV0L2lwdjYvdGNwX2lwdjYuYy00NTItXHRpZiAoc3RhdGljX2JyYW5jaF91bmxpa2VseShcdTAwMjZpcDZfbWluX2hvcGNvdW50KSkge1xubmV0L2lwdjYvdGNwX2lwdjYuYzo0NTM6XHRcdC8qIG1pbl9ob3Bjb3VudCBjYW4gYmUgY2hhbmdlZCBjb25jdXJyZW50bHkgZnJvbSBkb19pcHY2X3NldHNvY2tvcHQoKSAqL1xubmV0L2lwdjYvdGNwX2lwdjYuYy00NTQtXHRcdGlmIChpcHY2X2hkcihza2IpLVx1MDAzZWhvcF9saW1pdCBcdTAwM2MgUkVBRF9PTkNFKHRjcF9pbmV0Nl9zayhzayktXHUwMDNlbWluX2hvcGNvdW50KSkge1xuLS1cbm5ldC9pcHY2L3RjcF9pcHY2LmM9MTczMD1JTkRJUkVDVF9DQUxMQUJMRV9TQ09QRSBpbnQgdGNwX3Y2X3JjdihzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxuLS1cbm5ldC9pcHY2L3RjcF9pcHY2LmMtMTg2MS1cdGlmIChzdGF0aWNfYnJhbmNoX3VubGlrZWx5KFx1MDAyNmlwNl9taW5faG9wY291bnQpKSB7XG5uZXQvaXB2Ni90Y3BfaXB2Ni5jOjE4NjI6XHRcdC8qIG1pbl9ob3Bjb3VudCBjYW4gYmUgY2hhbmdlZCBjb25jdXJyZW50bHkgZnJvbSBkb19pcHY2X3NldHNvY2tvcHQoKSAqL1xubmV0L2lwdjYvdGNwX2lwdjYuYy0xODYzLVx0XHRpZiAodW5saWtlbHkoaGRyLVx1MDAzZWhvcF9saW1pdCBcdTAwM2MgUkVBRF9PTkNFKHRjcF9pbmV0Nl9zayhzayktXHUwMDNlbWluX2hvcGNvdW50KSkpIHtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDggMDc6Mjc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTUyMTkKCQkJCQkJCW91dHB1dDogMTkKCQkJCQkJCXRob3VnaHRzOiAyNjIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgTGluZSBvZiBJbnF1aXJ5KioKCk9rYXksIHNvIEkmIzM5O20gdGhpbmtpbmcgYGRvX2lwdjZfc2V0c29ja29wdGAgc2VlbXMgbGlrZSBhIHNvbGlkIHN0YXJ0aW5nIHBvaW50IGZvciB0aGlzIGludmVzdGlnYXRpb24uIEJ1dCwgbGV0JiMzOTtzIHBpdm90IGFuZCBjaGVjayBgbnZtZV90Y3BfY3JlYXRlX2N0cmxgLiBIbW0sIGl0JiMzOTtzIG1hcmtlZCBhcyBzdGF0aWMsIG1lYW5pbmcgaXQmIzM5O3Mgbm90IGRpcmVjdGx5IGV4cG9ydGVkLiBIb3dldmVyLCBpdCAqaXMqIGFzc2lnbmVkIHRvIGBudm1lX3RjcF90cmFuc3BvcnQuY3JlYXRlX2N0cmxgLiBBbHJpZ2h0LCBtYWtpbmcgcHJvZ3Jlc3MuIGBudm1mX2Rldl93cml0ZWAgY2FsbHMgYG52bWZfY3JlYXRlX2N0cmxgLCB3aGljaCBpbiB0dXJuIGNhbGxzIGBvcHRzLSZndDt0cmFuc3BvcnQtJmd0O2NyZWF0ZV9jdHJsYC4gU28sIHllYWgsIHRoYXQgbWFrZXMgYG52bWVfdGNwX2NyZWF0ZV9jdHJsYCBhbm90aGVyIHZpYWJsZSBmb2N1cyBzeW1ib2wuCgpMZXQmIzM5O3Mgc3dpdGNoIGdlYXJzIHNsaWdodGx5IGFuZCBsb29rIGF0IGBudm1ldF90Y3BfYWNjZXB0X3dvcmtgLiBJdCYjMzk7cyBhbm90aGVyIHN0YXRpYyBmdW5jdGlvbiwgYnV0IGl0JiMzOTtzIHVzZWQgYXMgYSB3b3JrcXVldWUgZnVuY3Rpb24uCgpOb3csIGxldCYjMzk7cyBjb25zaWRlciB0aGUgcmVsZXZhbnQgY29uZmlndXJhdGlvbnMuIFdlIGhhdmUgYE5WTUVfVENQYCwgYE5WTUVfVEFSR0VUX1RDUGAsIGBOVk1FX1RBUkdFVGAsIGFuZCBgSVBWNmAuIEhvbGQgb24sIGl0IHNlZW1zIGxpa2UgYE5WTUVfVEFSR0VUYCBpcyBuZWNlc3NhcnkgZm9yIGBOVk1FX1RBUkdFVF9UQ1BgIHRvIGZ1bmN0aW9uLiBJIHdvbmRlciBpZiB0aGVyZSBhcmUgYW55IG90aGVyIGNvbmZpZ3VyYXRpb25zIGludm9sdmVkPyBNYXliZSBgTlZNRV9DT1JFYCBvciBgTlZNRV9GQUJSSUNTYD8gQWgsIGBOVk1FX1RDUGAgc2VsZWN0cyBgTlZNRV9GQUJSSUNTYCwgb2YgY291cnNlLiBBbmQgYE5WTUVfVEFSR0VUX1RDUGAgZGVwZW5kcyBvbiBgTlZNRV9UQVJHRVRgLiBSaWdodCwgdGhhdCBtYWtlcyBzZW5zZS4KCk5vdywgSSYjMzk7bSBnb2luZyB0byB0YWtlIGEgZGVlcGVyIGxvb2sgYXQgYE5WTUVfVEFSR0VUYC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDggMDc6Mjc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIE5WTUVfVEFSR0VUJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbnZtZS90YXJnZXQvS2NvbmZpZy0yLVxuZHJpdmVycy9udm1lL3RhcmdldC9LY29uZmlnOjM6Y29uZmlnIE5WTUVfVEFSR0VUXG5kcml2ZXJzL252bWUvdGFyZ2V0L0tjb25maWctNC1cdHRyaXN0YXRlIFwmIzM0O05WTWUgVGFyZ2V0IHN1cHBvcnRcJiMzNDtcbi0tXG5kcml2ZXJzL252bWUvdGFyZ2V0L0tjb25maWctMTktXG5kcml2ZXJzL252bWUvdGFyZ2V0L0tjb25maWc6MjA6Y29uZmlnIE5WTUVfVEFSR0VUX0RFQlVHRlNcbmRyaXZlcnMvbnZtZS90YXJnZXQvS2NvbmZpZy0yMS0gICAgICAgIGJvb2wgXCYjMzQ7TlZNZSBUYXJnZXQgZGVidWdmcyBzdXBwb3J0XCYjMzQ7XG4tLVxuZHJpdmVycy9udm1lL3RhcmdldC9LY29uZmlnLTI4LVxuZHJpdmVycy9udm1lL3RhcmdldC9LY29uZmlnOjI5OmNvbmZpZyBOVk1FX1RBUkdFVF9QQVNTVEhSVVxuZHJpdmVycy9udm1lL3RhcmdldC9LY29uZmlnLTMwLVx0Ym9vbCBcJiMzNDtOVk1lIFRhcmdldCBQYXNzdGhyb3VnaCBzdXBwb3J0XCYjMzQ7XG4tLVxuZHJpdmVycy9udm1lL3RhcmdldC9LY29uZmlnLTQwLVxuZHJpdmVycy9udm1lL3RhcmdldC9LY29uZmlnOjQxOmNvbmZpZyBOVk1FX1RBUkdFVF9MT09QXG5kcml2ZXJzL252bWUvdGFyZ2V0L0tjb25maWctNDItXHR0cmlzdGF0ZSBcJiMzNDtOVk1lIGxvb3BiYWNrIGRldmljZSBzdXBwb3J0XCYjMzQ7XG4tLVxuZHJpdmVycy9udm1lL3RhcmdldC9LY29uZmlnLTUxLVxuZHJpdmVycy9udm1lL3RhcmdldC9LY29uZmlnOjUyOmNvbmZpZyBOVk1FX1RBUkdFVF9SRE1BXG5kcml2ZXJzL252bWUvdGFyZ2V0L0tjb25maWctNTMtXHR0cmlzdGF0ZSBcJiMzNDtOVk1lIG92ZXIgRmFicmljcyBSRE1BIHRhcmdldCBzdXBwb3J0XCYjMzQ7XG4tLVxuZHJpdmVycy9udm1lL3RhcmdldC9LY29uZmlnLTYyLVxuZHJpdmVycy9udm1lL3RhcmdldC9LY29uZmlnOjYzOmNvbmZpZyBOVk1FX1RBUkdFVF9GQ1xuZHJpdmVycy9udm1lL3RhcmdldC9LY29uZmlnLTY0LVx0dHJpc3RhdGUgXCYjMzQ7TlZNZSBvdmVyIEZhYnJpY3MgRkMgdGFyZ2V0IGRyaXZlclwmIzM0O1xuLS1cbmRyaXZlcnMvbnZtZS90YXJnZXQvS2NvbmZpZy03My1cbmRyaXZlcnMvbnZtZS90YXJnZXQvS2NvbmZpZzo3NDpjb25maWcgTlZNRV9UQVJHRVRfRkNMT09QXG5kcml2ZXJzL252bWUvdGFyZ2V0L0tjb25maWctNzUtXHR0cmlzdGF0ZSBcJiMzNDtOVk1lIG92ZXIgRmFicmljcyBGQyBUcmFuc3BvcnQgTG9vcGJhY2sgVGVzdCBkcml2ZXJcJiMzNDtcbi0tXG5kcml2ZXJzL252bWUvdGFyZ2V0L0tjb25maWctODYtXG5kcml2ZXJzL252bWUvdGFyZ2V0L0tjb25maWc6ODc6Y29uZmlnIE5WTUVfVEFSR0VUX1RDUFxuZHJpdmVycy9udm1lL3RhcmdldC9LY29uZmlnLTg4LVx0dHJpc3RhdGUgXCYjMzQ7TlZNZSBvdmVyIEZhYnJpY3MgVENQIHRhcmdldCBzdXBwb3J0XCYjMzQ7XG4tLVxuZHJpdmVycy9udm1lL3RhcmdldC9LY29uZmlnLTk2LVxuZHJpdmVycy9udm1lL3RhcmdldC9LY29uZmlnOjk3OmNvbmZpZyBOVk1FX1RBUkdFVF9UQ1BfVExTXG5kcml2ZXJzL252bWUvdGFyZ2V0L0tjb25maWctOTgtXHRib29sIFwmIzM0O05WTWUgb3ZlciBGYWJyaWNzIFRDUCB0YXJnZXQgVExTIGVuY3J5cHRpb24gc3VwcG9ydFwmIzM0O1xuLS1cbmRyaXZlcnMvbnZtZS90YXJnZXQvS2NvbmZpZy0xMDktXG5kcml2ZXJzL252bWUvdGFyZ2V0L0tjb25maWc6MTEwOmNvbmZpZyBOVk1FX1RBUkdFVF9BVVRIXG5kcml2ZXJzL252bWUvdGFyZ2V0L0tjb25maWctMTExLVx0Ym9vbCBcJiMzNDtOVk1lIG92ZXIgRmFicmljcyBJbi1iYW5kIEF1dGhlbnRpY2F0aW9uIGluIHRhcmdldCBzaWRlXCYjMzQ7XG4tLVxuZHJpdmVycy9udm1lL3RhcmdldC9LY29uZmlnLTExOS1cbmRyaXZlcnMvbnZtZS90YXJnZXQvS2NvbmZpZzoxMjA6Y29uZmlnIE5WTUVfVEFSR0VUX0FVVEhfREVCVUdcbmRyaXZlcnMvbnZtZS90YXJnZXQvS2NvbmZpZy0xMjEtXHRib29sIFwmIzM0O05WTWUgb3ZlciBGYWJyaWNzIEluLWJhbmQgQXV0aGVudGljYXRpb24gZGVidWcgbWVzc2FnZXNcJiMzNDtcbi0tXG5kcml2ZXJzL252bWUvdGFyZ2V0L0tjb25maWctMTI4LVxuZHJpdmVycy9udm1lL3RhcmdldC9LY29uZmlnOjEyOTpjb25maWcgTlZNRV9UQVJHRVRfUENJX0VQRlxuZHJpdmVycy9udm1lL3RhcmdldC9LY29uZmlnLTEzMC1cdHRyaXN0YXRlIFwmIzM0O05WTWUgUENJIEVuZHBvaW50IEZ1bmN0aW9uIHRhcmdldCBzdXBwb3J0XCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA4IDA3OjI3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE2NjI3CgkJCQkJCQlvdXRwdXQ6IDM1CgkJCQkJCQl0aG91Z2h0czogMjUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIGFuIGV4cGVydCYjMzk7cyBpbnRlcm5hbCBtb25vbG9ndWU6CgoqKkludmVzdGlnYXRpbmcgTlZNRV9UQVJHRVQgRGVwZW5kZW5jaWVzKioKClJpZ2h0LCBsZXQmIzM5O3MgZGl2ZSBpbnRvIHRoZSBLY29uZmlnIGZvciB0aGUgTlZNRSB0YXJnZXQuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBkZXBlbmRlbmNpZXMgb2YgYE5WTUVfVEFSR0VUYC4gSXQmIzM5O3MgY3J1Y2lhbCwgYXMgYWx3YXlzLCB0byBncmFzcCB0aGUgYnVpbGQtdGltZSBjb25maWd1cmF0aW9uIG9wdGlvbnMgYW5kIGNvbnN0cmFpbnRzIGJlZm9yZSBJIHN0YXJ0IHBva2luZyBhcm91bmQgaW4gdGhlIGNvZGUuIEkmIzM5O20gbG9va2luZyBmb3IgYW55IGltbWVkaWF0ZSBjbHVlcyBvbiBwcmVyZXF1aXNpdGVzOiBvdGhlciBmZWF0dXJlcyBpdCByZWxpZXMgb24sIHBsYXRmb3JtIHJlcXVpcmVtZW50cywgb3IgcG90ZW50aWFsIGNvbmZsaWN0cyB3aXRoIG90aGVyIHN1YnN5c3RlbXMuIEl0JiMzOTtzIHRoZSBzdGFuZGFyZCBwcmFjdGljZSwgcmVhbGx5LiBBIGRlZXAgZGl2ZSBpbnRvIHRoZSBLY29uZmlnIHdpbGwgaGlnaGxpZ2h0IHdoYXQgbmVlZHMgdG8gYmUgZW5hYmxlZCwgZGlzYWJsZWQsIG9yIGNvbnNpZGVyZWQgZHVyaW5nIHRoZSB3aG9sZSBjb25maWd1cmF0aW9uIHByb2Nlc3MuIEkgd2FudCBhIGNsZWFyIHBpY3R1cmUsIHNvIEkgY2FuIGF2b2lkIHdhc3RlZCB0aW1lIGRvd24gdGhlIGxpbmUuIExldCYjMzk7cyBzZWUgd2hhdCB3ZSBjYW4gZmluZC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDggMDc6Mjc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL252bWUvdGFyZ2V0L0tjb25maWcmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAxLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDIwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAgIDE6XHQjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcbiAgIDI6XHRcbiAgIDM6XHRjb25maWcgTlZNRV9UQVJHRVRcbiAgIDQ6XHRcdHRyaXN0YXRlIFwmIzM0O05WTWUgVGFyZ2V0IHN1cHBvcnRcJiMzNDtcbiAgIDU6XHRcdGRlcGVuZHMgb24gQkxPQ0tcbiAgIDY6XHRcdHNlbGVjdCBDT05GSUdGU19GU1xuICAgNzpcdFx0c2VsZWN0IE5WTUVfS0VZUklORyBpZiBOVk1FX1RBUkdFVF9UQ1BfVExTXG4gICA4Olx0XHRzZWxlY3QgS0VZUyBpZiBOVk1FX1RBUkdFVF9UQ1BfVExTXG4gICA5Olx0XHRzZWxlY3QgU0dMX0FMTE9DXG4gIDEwOlx0XHRoZWxwXG4gIDExOlx0XHQgIFRoaXMgZW5hYmxlZCB0YXJnZXQgc2lkZSBzdXBwb3J0IGZvciB0aGUgTlZNZSBwcm90b2NvbCwgdGhhdCBpc1xuICAxMjpcdFx0ICBpdCBhbGxvd3MgdGhlIExpbnV4IGtlcm5lbCB0byBpbXBsZW1lbnQgTlZNZSBzdWJzeXN0ZW1zIGFuZFxuICAxMzpcdFx0ICBjb250cm9sbGVycyBhbmQgZXhwb3J0IExpbnV4IGJsb2NrIGRldmljZXMgYXMgTlZNZSBuYW1lc3BhY2VzLlxuICAxNDpcdFx0ICBZb3UgbmVlZCB0byBzZWxlY3QgYXQgbGVhc3Qgb25lIG9mIHRoZSB0cmFuc3BvcnRzIGJlbG93IHRvIG1ha2UgdGhpc1xuICAxNTpcdFx0ICBmdW5jdGlvbmFsaXR5IHVzZWZ1bC5cbiAgMTY6XHRcbiAgMTc6XHRcdCAgVG8gY29uZmlndXJlIHRoZSBOVk1lIHRhcmdldCB5b3UgcHJvYmFibHkgd2FudCB0byB1c2UgdGhlIG52bWV0Y2xpXG4gIDE4Olx0XHQgIHRvb2wgZnJvbSBodHRwOi8vZ2l0LmluZnJhZGVhZC5vcmcvdXNlcnMvaGNoL252bWV0Y2xpLmdpdC5cbiAgMTk6XHRcbiAgMjA6XHRjb25maWcgTlZNRV9UQVJHRVRfREVCVUdGU1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjM1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wOCAwNzoyNzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxNzE1OQoJCQkJCQkJb3V0cHV0OiAzNgoJCQkJCQkJdGhvdWdodHM6IDIzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIGEgc3VtbWFyeSBvZiBteSB0aG91Z2h0IHByb2Nlc3MsIGFzIHJlcXVlc3RlZDoKCioqTmF2aWdhdGluZyBEZXBlbmRlbmNpZXMqKgoKT2theSwgc28gSSYjMzk7bSB0aGlua2luZyBhYm91dCB0aGUgc3lzdGVtIGFyY2hpdGVjdHVyZSBoZXJlLiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdGhhdCBgTlZNRV9UQVJHRVRgIGhhcyBhIGRlcGVuZGVuY3kgb24gYEJMT0NLYC4gVGhhdCYjMzk7cyBhIGZ1bmRhbWVudGFsIHJlbGF0aW9uc2hpcCDigJMgdGhlIHRhcmdldCBuZWVkcyBhIGJsb2NrLWxldmVsIHN0b3JhZ2UgYWJzdHJhY3Rpb24gdG8gb3BlcmF0ZS4gTm93LCBJIG5lZWQgdG8gdW5kZXJzdGFuZCBob3cgTlZNZSBvdmVyIFRDUCBmaXRzIGludG8gdGhpcyBwaWN0dXJlLiBNeSBuZXh0IHN0ZXAgaXMgdG8gZXhhbWluZSB0aGUgcmVsYXRpb25zaGlwIGJldHdlZW4gYE5WTUVfVENQYCBhbmQgdGhlIGJyb2FkZXIgYXJjaGl0ZWN0dXJlLCBzcGVjaWZpY2FsbHkgaG93IGl0IGludGVyYWN0cyB3aXRoIHRoZSBjb21wb25lbnRzIEkmIzM5O3ZlIGFscmVhZHkgaWRlbnRpZmllZC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDggMDc6Mjc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL252bWUvaG9zdC9LY29uZmlnJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogODAsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMjAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7ICA4MDpcdFxuICA4MTpcdFx0ICBJZiB1bnN1cmUsIHNheSBOLlxuICA4MjpcdFxuICA4MzpcdGNvbmZpZyBOVk1FX1RDUFxuICA4NDpcdFx0dHJpc3RhdGUgXCYjMzQ7TlZNIEV4cHJlc3Mgb3ZlciBGYWJyaWNzIFRDUCBob3N0IGRyaXZlclwmIzM0O1xuICA4NTpcdFx0ZGVwZW5kcyBvbiBJTkVUXG4gIDg2Olx0XHRkZXBlbmRzIG9uIEJMT0NLXG4gIDg3Olx0XHRzZWxlY3QgQ1JDMzJcbiAgODg6XHRcdHNlbGVjdCBORVRfQ1JDMzJDXG4gIDg5Olx0XHRzZWxlY3QgTlZNRV9GQUJSSUNTXG4gIDkwOlx0XHRoZWxwXG4gIDkxOlx0XHQgIFRoaXMgcHJvdmlkZXMgc3VwcG9ydCBmb3IgdGhlIE5WTWUgb3ZlciBGYWJyaWNzIHByb3RvY29sIHVzaW5nXG4gIDkyOlx0XHQgIHRoZSBUQ1AgdHJhbnNwb3J0LiAgVGhpcyBhbGxvd3MgeW91IHRvIHVzZSByZW1vdGUgYmxvY2sgZGV2aWNlc1xuICA5MzpcdFx0ICBleHBvcnRlZCB1c2luZyB0aGUgTlZNZSBwcm90b2NvbCBzZXQuXG4gIDk0Olx0XG4gIDk1Olx0XHQgIFRvIGNvbmZpZ3VyZSBhIE5WTWUgb3ZlciBGYWJyaWNzIGNvbnRyb2xsZXIgdXNlIHRoZSBudm1lLWNsaSB0b29sXG4gIDk2Olx0XHQgIGZyb20gaHR0cHM6Ly9naXRodWIuY29tL2xpbnV4LW52bWUvbnZtZS1jbGkuXG4gIDk3Olx0XG4gIDk4Olx0XHQgIElmIHVuc3VyZSwgc2F5IE4uXG4gIDk5Olx0XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA4IDA3OjI3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE3NTk3CgkJCQkJCQlvdXRwdXQ6IDE5CgkJCQkJCQl0aG91Z2h0czogOTcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQ29uZmlndXJhdGlvbiBEZXBlbmRlbmNpZXM6IEEgUXVpY2sgUmV2aWV3KioKCk9rYXksIGxldCYjMzk7cyBzZWUsIEkgbmVlZCB0byBtYWtlIHN1cmUgSSB1bmRlcnN0YW5kIHRoZXNlIGNvbmZpZ3VyYXRpb25zLiBSaWdodCwgc28gd2UgaGF2ZSBgTlZNRV9UQ1BgLCBgTlZNRV9UQVJHRVRfVENQYCwgYE5WTUVfVEFSR0VUYCwgYW5kIGBJUFY2YC4gSnVzdCBydW5uaW5nIHRocm91Z2ggdGhlIG1lbnRhbCBjaGVja2xpc3QgaGVyZS4uLiBBaCwgcmlnaHQsIHRoYXQmIzM5O3MgaW1wb3J0YW50OiBgTlZNRV9UQVJHRVRfVENQYCByZWxpZXMgb24gYE5WTUVfVEFSR0VUYC4gTmF0dXJhbGx5LCB0aGF0IG1ha2VzIHNlbnNlLiBBbmQgYE5WTUVfVENQYCBzZWxlY3RzIGBOVk1FX0ZBQlJJQ1NgLi4uIEdvdCBpdC4gYE5WTUVfRkFCUklDU2AgaGFzIGEgZGVwZW5kZW5jeSBvbiBgTlZNRV9DT1JFYC4gT2theSwgbGV0JiMzOTtzIGp1c3QgbWFrZSBhIG5vdGUgdG8gZG91YmxlLWNoZWNrIHRoZSBgTlZNRV9DT1JFYCBjb25maWd1cmF0aW9uLiBBbHdheXMgaW1wb3J0YW50IHRvIHVuZGVyc3RhbmQgdGhlIGNvcmUgY29tcG9uZW50cy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDggMDc6Mjg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIE5WTUVfQ09SRSYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL252bWUvaG9zdC9LY29uZmlnLTEtIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XG5kcml2ZXJzL252bWUvaG9zdC9LY29uZmlnOjI6Y29uZmlnIE5WTUVfQ09SRVxuZHJpdmVycy9udm1lL2hvc3QvS2NvbmZpZy0zLVx0dHJpc3RhdGVcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zOS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDggMDc6Mjg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTc5NDgKCQkJCQkJCW91dHB1dDogMzUKCQkJCQkJCXRob3VnaHRzOiAyNQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB0YWtlIG9uIHRoZSB0aG91Z2h0IHByb2Nlc3MsIGFzIGlmIGl0IHdlcmUgbXkgb3duOgoKKipJbnZlc3RpZ2F0aW5nIE5WTUUgQ29yZSBEZXBlbmRlbmNpZXMqKgoKT2theSwgc28gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgdGhlIGRlcGVuZGVuY2llcyBmb3IgYE5WTUVfQ09SRWAuIFRoZSBtb3N0IGRpcmVjdCB3YXkgdG8gZ2V0IGEgaGFuZGxlIG9uIHRoYXQgaXMgdG8gZGl2ZSBpbnRvIHRoZSBLY29uZmlnIGZpbGUgZm9yIHRoZSBOVk1lIGhvc3QgZHJpdmVyLiBJdCBzaG91bGQgYmUgcmlnaHQgdGhlcmUsIHRlbGxpbmcgbWUgd2hhdCBvdGhlciBjb25maWd1cmF0aW9ucyBhcmUgcmVxdWlyZWQgZm9yIGBOVk1FX0NPUkVgIHRvIGV2ZW4gYmUgY29uc2lkZXJlZC4gU28sIGxldCYjMzk7cyBvcGVuIHVwIGBkcml2ZXJzL252bWUvaG9zdC9LY29uZmlnYCBhbmQgc2VlIHdoYXQgaXQgcmV2ZWFscy4gVGhpcyB3aWxsIGdpdmUgbWUgdGhlIGJ1aWxkaW5nIGJsb2NrcyBJIG5lZWQgdG8gdW5kZXJzdGFuZCBob3cgdGhlIGZlYXR1cmUgZml0cyBpbnRvIHRoZSBicm9hZGVyIHN5c3RlbS4gSSYjMzk7bSBleHBlY3RpbmcgdG8gc2VlIHRoaW5ncyBsaWtlIHBsYXRmb3JtLXNwZWNpZmljIHJlcXVpcmVtZW50cywgdW5kZXJseWluZyBoYXJkd2FyZSBlbmFibGVtZW50LCBvciBtYXliZSBldmVuIG90aGVyIHJlbGF0ZWQgTlZNZSBmZWF0dXJlcyB0aGF0IG11c3QgYmUgZW5hYmxlZCBmaXJzdC4gTGV0JiMzOTtzIGdldCB0byBpdC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40MC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDggMDc6Mjg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL252bWUvaG9zdC9LY29uZmlnJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMSwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAyMAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgICAxOlx0IyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XG4gICAyOlx0Y29uZmlnIE5WTUVfQ09SRVxuICAgMzpcdFx0dHJpc3RhdGVcbiAgIDQ6XHRcbiAgIDU6XHRjb25maWcgQkxLX0RFVl9OVk1FXG4gICA2Olx0XHR0cmlzdGF0ZSBcJiMzNDtOVk0gRXhwcmVzcyBibG9jayBkZXZpY2VcJiMzNDtcbiAgIDc6XHRcdGRlcGVuZHMgb24gUENJIFx1MDAyNlx1MDAyNiBCTE9DS1xuICAgODpcdFx0c2VsZWN0IE5WTUVfQ09SRVxuICAgOTpcdFx0aGVscFxuICAxMDpcdFx0ICBUaGUgTlZNIEV4cHJlc3MgZHJpdmVyIGlzIGZvciBzb2xpZCBzdGF0ZSBkcml2ZXMgZGlyZWN0bHlcbiAgMTE6XHRcdCAgY29ubmVjdGVkIHRvIHRoZSBQQ0kgb3IgUENJIEV4cHJlc3MgYnVzLiAgSWYgeW91IGtub3cgeW91XG4gIDEyOlx0XHQgIGRvbiYjMzk7dCBoYXZlIG9uZSBvZiB0aGVzZSwgaXQgaXMgc2FmZSB0byBhbnN3ZXIgTi5cbiAgMTM6XHRcbiAgMTQ6XHRcdCAgVG8gY29tcGlsZSB0aGlzIGRyaXZlciBhcyBhIG1vZHVsZSwgY2hvb3NlIE0gaGVyZTogdGhlXG4gIDE1Olx0XHQgIG1vZHVsZSB3aWxsIGJlIGNhbGxlZCBudm1lLlxuICAxNjpcdFxuICAxNzpcdGNvbmZpZyBOVk1FX01VTFRJUEFUSFxuICAxODpcdFx0Ym9vbCBcJiMzNDtOVk1lIG11bHRpcGF0aCBzdXBwb3J0XCYjMzQ7XG4gIDE5Olx0XHRkZXBlbmRzIG9uIE5WTUVfQ09SRVxuICAyMDpcdFx0aGVscFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQxLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wOCAwNzoyODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxODQ0NgoJCQkJCQkJb3V0cHV0OiAxOAoJCQkJCQkJdGhvdWdodHM6IDEyMAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgTlZNZSBDb25maWd1cmF0aW9uIERlcGVuZGVuY2llcyoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhlc2UgTlZNZSBjb25maWd1cmF0aW9ucyBhbmQgdGhlaXIgZGVwZW5kZW5jaWVzLiBJdCBzZWVtcyBwcmV0dHkgc3RyYWlnaHRmb3J3YXJkLiBgTlZNRV9DT1JFYCBzdGFuZHMgYWxvbmU7IG5vIGRlcGVuZGVuY2llcyB0aGVyZS4gSG93ZXZlciwgYm90aCBgTlZNRV9UQ1BgIGFuZCBgTlZNRV9UQVJHRVRfVENQYCByZXF1aXJlIGBJTkVUYC4gIGBOVk1FX1RDUGAgYWxzbyBuZWVkcyBgQkxPQ0tgLCBhbmQgYE5WTUVfVEFSR0VUX1RDUGAgZGVwZW5kcyBvbiBgTlZNRV9UQVJHRVRgLiAgYE5WTUVfVEFSR0VUYCwgaW4gdHVybiwgbmVlZHMgYEJMT0NLYC4gIFRoZXJlZm9yZSwgaWYgSSYjMzk7bSBpbnRlcnByZXRpbmcgdGhpcyBjb3JyZWN0bHksIEkgc2hvdWxkIGNvbnNpZGVyIGNvbmZpZ3VyaW5nIHRoZSBmb2xsb3dpbmc6IGBOVk1FX1RDUGAsIGBOVk1FX1RBUkdFVF9UQ1BgLCBgTlZNRV9UQVJHRVRgLCBhbmQgZmluYWxseSwgSSBuZWVkIHRvIGNvbmZpcm0gYElQVjZgIGlzIGEgdmlhYmxlIGNvbmZpZ3VyYXRpb24gb3B0aW9uLiBJdCYjMzk7cyBhIGtleSBwYXJ0IG9mIHRoZSBuZXR3b3JrIHN0YWNrLCBzbyBpdCBpcyBuZWNlc3NhcnkuIE5vdyBJIG5lZWQgdG8gY2hlY2sgaWYgYElQVjZgIGlzIHNvbWV0aGluZyBJIGNhbiBhY3R1YWxseSBjb25maWd1cmUgZGlyZWN0bHkuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NDIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA4IDA3OjI4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBJUFY2JiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9pcHY2L0tjb25maWctNS1cbm5ldC9pcHY2L0tjb25maWc6NjptZW51Y29uZmlnIElQVjZcbm5ldC9pcHY2L0tjb25maWctNy1cdGJvb2wgXCYjMzQ7VGhlIElQdjYgcHJvdG9jb2xcJiMzNDtcbi0tXG5uZXQvaXB2Ni9LY29uZmlnPTE5PWlmIElQVjZcbm5ldC9pcHY2L0tjb25maWctMjAtXG5uZXQvaXB2Ni9LY29uZmlnOjIxOmNvbmZpZyBJUFY2X1JPVVRFUl9QUkVGXG5uZXQvaXB2Ni9LY29uZmlnLTIyLVx0Ym9vbCBcJiMzNDtJUHY2OiBSb3V0ZXIgUHJlZmVyZW5jZSAoUkZDIDQxOTEpIHN1cHBvcnRcJiMzNDtcbi0tXG5uZXQvaXB2Ni9LY29uZmlnLTMwLVxubmV0L2lwdjYvS2NvbmZpZzozMTpjb25maWcgSVBWNl9ST1VURV9JTkZPXG5uZXQvaXB2Ni9LY29uZmlnLTMyLVx0Ym9vbCBcJiMzNDtJUHY2OiBSb3V0ZSBJbmZvcm1hdGlvbiAoUkZDIDQxOTEpIHN1cHBvcnRcJiMzNDtcbi0tXG5uZXQvaXB2Ni9LY29uZmlnLTM4LVxubmV0L2lwdjYvS2NvbmZpZzozOTpjb25maWcgSVBWNl9PUFRJTUlTVElDX0RBRFxubmV0L2lwdjYvS2NvbmZpZy00MC1cdGJvb2wgXCYjMzQ7SVB2NjogRW5hYmxlIFJGQyA0NDI5IE9wdGltaXN0aWMgREFEXCYjMzQ7XG4tLVxubmV0L2lwdjYvS2NvbmZpZz0xMDI9Y29uZmlnIElORVQ2X0lQQ09NUFxuLS1cbm5ldC9pcHY2L0tjb25maWctMTExLVxubmV0L2lwdjYvS2NvbmZpZzoxMTI6Y29uZmlnIElQVjZfTUlQNlxubmV0L2lwdjYvS2NvbmZpZy0xMTMtXHR0cmlzdGF0ZSBcJiMzNDtJUHY2OiBNb2JpbGl0eVwmIzM0O1xuLS1cbm5ldC9pcHY2L0tjb25maWctMTE5LVxubmV0L2lwdjYvS2NvbmZpZzoxMjA6Y29uZmlnIElQVjZfSUxBXG5uZXQvaXB2Ni9LY29uZmlnLTEyMS1cdHRyaXN0YXRlIFwmIzM0O0lQdjY6IElkZW50aWZpZXIgTG9jYXRvciBBZGRyZXNzaW5nIChJTEEpXCYjMzQ7XG4tLVxubmV0L2lwdjYvS2NvbmZpZz0xNDY9Y29uZmlnIElORVQ2X1RVTk5FTFxuLS1cbm5ldC9pcHY2L0tjb25maWctMTQ5LVxubmV0L2lwdjYvS2NvbmZpZzoxNTA6Y29uZmlnIElQVjZfVlRJXG5uZXQvaXB2Ni9LY29uZmlnLTE1MS1cdHRyaXN0YXRlIFwmIzM0O1ZpcnR1YWwgKHNlY3VyZSkgSVB2NjogdHVubmVsaW5nXCYjMzQ7XG4tLVxubmV0L2lwdjYvS2NvbmZpZy0xNjEtXG5uZXQvaXB2Ni9LY29uZmlnOjE2Mjpjb25maWcgSVBWNl9TSVRcbm5ldC9pcHY2L0tjb25maWctMTYzLVx0dHJpc3RhdGUgXCYjMzQ7SVB2NjogSVB2Ni1pbi1JUHY0IHR1bm5lbCAoU0lUIGRyaXZlcilcJiMzNDtcbi0tXG5uZXQvaXB2Ni9LY29uZmlnLTE3Ni1cbm5ldC9pcHY2L0tjb25maWc6MTc3OmNvbmZpZyBJUFY2X1NJVF82UkRcbm5ldC9pcHY2L0tjb25maWctMTc4LVx0Ym9vbCBcJiMzNDtJUHY2OiBJUHY2IFJhcGlkIERlcGxveW1lbnQgKDZSRClcJiMzNDtcbi0tXG5uZXQvaXB2Ni9LY29uZmlnLTE5NS1cbm5ldC9pcHY2L0tjb25maWc6MTk2OmNvbmZpZyBJUFY2X05ESVNDX05PREVUWVBFXG5uZXQvaXB2Ni9LY29uZmlnLTE5Ny1cdGJvb2xcbm5ldC9pcHY2L0tjb25maWctMTk4LVxubmV0L2lwdjYvS2NvbmZpZzoxOTk6Y29uZmlnIElQVjZfVFVOTkVMXG5uZXQvaXB2Ni9LY29uZmlnLTIwMC1cdHRyaXN0YXRlIFwmIzM0O0lQdjY6IElQLWluLUlQdjYgdHVubmVsIChSRkMyNDczKVwmIzM0O1xuLS1cbm5ldC9pcHY2L0tjb25maWctMjA5LVxubmV0L2lwdjYvS2NvbmZpZzoyMTA6Y29uZmlnIElQVjZfR1JFXG5uZXQvaXB2Ni9LY29uZmlnLTIxMS1cdHRyaXN0YXRlIFwmIzM0O0lQdjY6IEdSRSB0dW5uZWxcJiMzNDtcbi0tXG5uZXQvaXB2Ni9LY29uZmlnLTIyNy1cbm5ldC9pcHY2L0tjb25maWc6MjI4OmNvbmZpZyBJUFY2X0ZPVVxubmV0L2lwdjYvS2NvbmZpZy0yMjktXHR0cmlzdGF0ZVxuLS1cbm5ldC9pcHY2L0tjb25maWctMjMxLVxubmV0L2lwdjYvS2NvbmZpZzoyMzI6Y29uZmlnIElQVjZfRk9VX1RVTk5FTFxubmV0L2lwdjYvS2NvbmZpZy0yMzMtXHR0cmlzdGF0ZVxuLS1cbm5ldC9pcHY2L0tjb25maWctMjM2LVxubmV0L2lwdjYvS2NvbmZpZzoyMzc6Y29uZmlnIElQVjZfTVVMVElQTEVfVEFCTEVTXG5uZXQvaXB2Ni9LY29uZmlnLTIzOC1cdGJvb2wgXCYjMzQ7SVB2NjogTXVsdGlwbGUgUm91dGluZyBUYWJsZXNcJiMzNDtcbi0tXG5uZXQvaXB2Ni9LY29uZmlnLTI0Mi1cbm5ldC9pcHY2L0tjb25maWc6MjQzOmNvbmZpZyBJUFY2X1NVQlRSRUVTXG5uZXQvaXB2Ni9LY29uZmlnLTI0NC1cdGJvb2wgXCYjMzQ7SVB2Njogc291cmNlIGFkZHJlc3MgYmFzZWQgcm91dGluZ1wmIzM0O1xuLS1cbm5ldC9pcHY2L0tjb25maWctMjU2LVxubmV0L2lwdjYvS2NvbmZpZzoyNTc6Y29uZmlnIElQVjZfTVJPVVRFXG5uZXQvaXB2Ni9LY29uZmlnLTI1OC1cdGJvb2wgXCYjMzQ7SVB2NjogbXVsdGljYXN0IHJvdXRpbmdcJiMzNDtcbi0tXG5uZXQvaXB2Ni9LY29uZmlnLTI2NC1cbm5ldC9pcHY2L0tjb25maWc6MjY1OmNvbmZpZyBJUFY2X01ST1VURV9NVUxUSVBMRV9UQUJMRVNcbm5ldC9pcHY2L0tjb25maWctMjY2LVx0Ym9vbCBcJiMzNDtJUHY2OiBtdWx0aWNhc3QgcG9saWN5IHJvdXRpbmdcJiMzNDtcbi0tXG5uZXQvaXB2Ni9LY29uZmlnLTI3OC1cbm5ldC9pcHY2L0tjb25maWc6Mjc5OmNvbmZpZyBJUFY2X1BJTVNNX1YyXG5uZXQvaXB2Ni9LY29uZmlnLTI4MC1cdGJvb2wgXCYjMzQ7SVB2NjogUElNLVNNIHZlcnNpb24gMiBzdXBwb3J0XCYjMzQ7XG4tLVxubmV0L2lwdjYvS2NvbmZpZy0yODUtXG5uZXQvaXB2Ni9LY29uZmlnOjI4Njpjb25maWcgSVBWNl9TRUc2X0xXVFVOTkVMXG5uZXQvaXB2Ni9LY29uZmlnLTI4Ny1cdGJvb2wgXCYjMzQ7SVB2NjogU2VnbWVudCBSb3V0aW5nIEhlYWRlciBlbmNhcHN1bGF0aW9uIHN1cHBvcnRcJiMzNDtcbi0tXG5uZXQvaXB2Ni9LY29uZmlnLTI5OS1cbm5ldC9pcHY2L0tjb25maWc6MzAwOmNvbmZpZyBJUFY2X1NFRzZfSE1BQ1xubmV0L2lwdjYvS2NvbmZpZy0zMDEtXHRib29sIFwmIzM0O0lQdjY6IFNlZ21lbnQgUm91dGluZyBITUFDIHN1cHBvcnRcJiMzNDtcbi0tXG5uZXQvaXB2Ni9LY29uZmlnLTMxMS1cbm5ldC9pcHY2L0tjb25maWc6MzEyOmNvbmZpZyBJUFY2X1NFRzZfQlBGXG5uZXQvaXB2Ni9LY29uZmlnLTMxMy1cdGRlZl9ib29sIHlcbi0tXG5uZXQvaXB2Ni9LY29uZmlnLTMxNi1cbm5ldC9pcHY2L0tjb25maWc6MzE3OmNvbmZpZyBJUFY2X1JQTF9MV1RVTk5FTFxubmV0L2lwdjYvS2NvbmZpZy0zMTgtXHRib29sIFwmIzM0O0lQdjY6IFJQTCBTb3VyY2UgUm91dGluZyBIZWFkZXIgc3VwcG9ydFwmIzM0O1xuLS1cbm5ldC9pcHY2L0tjb25maWctMzI3LVxubmV0L2lwdjYvS2NvbmZpZzozMjg6Y29uZmlnIElQVjZfSU9BTTZfTFdUVU5ORUxcbm5ldC9pcHY2L0tjb25maWctMzI5LVx0Ym9vbCBcJiMzNDtJUHY2OiBJT0FNIFByZS1hbGxvY2F0ZWQgVHJhY2UgaW5zZXJ0aW9uIHN1cHBvcnRcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40My8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDggMDc6Mjg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjAzMjMKCQkJCQkJCW91dHB1dDogMjA5CgkJCQkJCQl0aG91Z2h0czogMTA3NwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipSZWZpbmluZyB0aGUgRm9jdXMgZm9yIE5WTWUgb3ZlciBUQ1Agd2l0aCBJUHY2IFRyYWZmaWMgQ2xhc3MgU3VwcG9ydCoqCgpPa2F5LCBzbyB3ZSYjMzk7cmUgbG9va2luZyBhdCBjaGFuZ2VzIHJlbGF0ZWQgdG8gYWRkaW5nIHRyYWZmaWMgY2xhc3MgKGB0Y2xhc3NgKSBzdXBwb3J0IGZvciBJUHY2IHdpdGhpbiB0aGUgTlZNZSBvdmVyIFRDUCBpbXBsZW1lbnRhdGlvbi4gRmlyc3QsIEkgbmVlZCB0byBjb25maXJtIHRoZSBjb25maWd1cmF0aW9ucyBpbnZvbHZlZC4gWWVzLCBgSVBWNmAgaXMgZGVmaW5pdGVseSBhIGNvbmZpZy4gV2Ugc2hvdWxkIGFsc28gY2hlY2sgYE5WTUVfRkFCUklDU2AuIElzIGl0IGEgZGlyZWN0IGNvbmZpZyBvcHRpb24/IE5vLCBidXQgaXQgYXBwZWFycyBgTlZNRV9UQ1BgIHNlbGVjdHMgYE5WTUVfRkFCUklDU2AsIHNvIHdlIGRvbiYjMzk7dCBuZWVkIHRvIGxpc3QgaXQgZXhwbGljaXRseSBhbHRob3VnaCB3ZSBjb3VsZC4gR29vZC4gQWxzbywgYE5WTUVfVEFSR0VUX1RDUGAsIGFuZCBgTlZNRV9UQVJHRVRgIG5lZWQgdG8gYmUgbGlzdGVkLgoKTm93LCBsZXQmIzM5O3MgbmFpbCBkb3duIHRoZSBrZXkgc3ltYm9scy4gSW5pdGlhbGx5LCBJIHRob3VnaHQgdGhlc2UgbG9va2VkIGltcG9ydGFudDogYG52bWZfZGV2X3dyaXRlYCwgYG52bWVfdGNwX2NyZWF0ZV9jdHJsYCwgYG52bWV0X3RjcF9hY2NlcHRfd29ya2AsIGFuZCBgZG9faXB2Nl9zZXRzb2Nrb3B0YC4KCmBudm1mX2Rldl93cml0ZWAgaXMgYSBnZW5lcmljIE5WTWUgZmFicmljcyBlbnRyeSBwb2ludCwgdGhhdCYjMzk7cyB1c2VmdWwuIGBudm1lX3RjcF9jcmVhdGVfY3RybGAgaXMgc3BlY2lmaWMgdG8gVENQLCB3aGljaCBtYWtlcyBzZW5zZS4gYG52bWV0X3RjcF9hY2NlcHRfd29ya2AgaXMgdGFyZ2V0LXNwZWNpZmljLCBhbmQgYGRvX2lwdjZfc2V0c29ja29wdGAgaXMgdGhlIGNvcmUgSVB2NiBzZXRzb2Nrb3B0IGZ1bmN0aW9uLgoKVGhlbiBJIGNvbnNpZGVyZWQgb3RoZXIgcmVsYXRlZCBmdW5jdGlvbnM6IGBudm1lX3RjcF9hbGxvY19xdWV1ZWAsIGBudm1ldF90Y3Bfc2V0X3F1ZXVlX3NvY2tgLCBgX19pcDZfc29ja19zZXRfdGNsYXNzYCwgYW5kIGBpcDZfc29ja19zZXRfdGNsYXNzYC4gU2luY2UgYG52bWVfdGNwX2FsbG9jX3F1ZXVlYCBhbmQgYG52bWV0X3RjcF9zZXRfcXVldWVfc29ja2AgYXJlIGRpcmVjdGx5IG1vZGlmaWVkIGFuZCBjb250YWluIHRoZSBtYWluIGxvZ2ljLCB0aGV5IGxvb2sgcmVsZXZhbnQuIExldCYjMzk7cyBzZWUgaWYgdGhleSBhcmUgaW5saW5lZC4gTm8sIHRoZXkgc2VlbSB0byBiZSBsYXJnZSBlbm91Z2ggdG8gbm90IGJlIGlubGluZWQuIGBfX2lwNl9zb2NrX3NldF90Y2xhc3NgIGlzbiYjMzk7dCBleHBvcnRlZCwgYnV0IGBpcDZfc29ja19zZXRfdGNsYXNzYCBpcy4gYF9faXA2X3NvY2tfc2V0X3RjbGFzc2AgaXMgaW4gYG5ldC9pcHY2L2lwdjZfc29ja2dsdWUuY2AuCgpPa2F5LCB0aGUgcHJvbXB0IHdhbnRzIHVzIHRvIGZhdm9yIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50cyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zLiBMZXQmIzM5O3MgcmV2aXNpdCB0aGUgcHJldmlvdXMgbGlzdC4gYG52bWZfZGV2X3dyaXRlYCBpcyBzdGF0aWMsIGJ1dCBhbiBlbnRyeSBwb2ludCAoZm9wcykuIGBudm1lX3RjcF9jcmVhdGVfY3RybGAgaXMgc3RhdGljLCBidXQgaXMgYW4gZW50cnkgcG9pbnQgKHRyYW5zcG9ydCBvcHMpLiBgbnZtZXRfdGNwX2FjY2VwdF93b3JrYCBpcyBzdGF0aWMsIGJ1dCBpcyBhIHdvcmtxdWV1ZSBmdW5jdGlvbi4gYGRvX2lwdjZfc2V0c29ja29wdGAgYW5kIGBpcDZfc29ja19zZXRfdGNsYXNzYCBhcmUgbm9uLXN0YXRpYy4gTGV0JiMzOTtzIGFsc28ga2VlcCBgbnZtZV90Y3BfYWxsb2NfcXVldWVgIGFuZCBgbnZtZXRfdGNwX3NldF9xdWV1ZV9zb2NrYC4KClNvLCB0aGUgZGVmaW5pdGl2ZSBsaXN0IHRvIGZvY3VzIG9uOiBgbnZtZl9kZXZfd3JpdGVgLCBgbnZtZV90Y3BfY3JlYXRlX2N0cmxgLCBgbnZtZXRfdGNwX2FjY2VwdF93b3JrYCwgYGRvX2lwdjZfc2V0c29ja29wdGAsIGBpcDZfc29ja19zZXRfdGNsYXNzYCwgYG52bWVfdGNwX2FsbG9jX3F1ZXVlYCBhbmQgYG52bWV0X3RjcF9zZXRfcXVldWVfc29ja2AuCgpOb3csIGRvdWJsZS1jaGVja2luZywgYG52bWZfZGV2X3dyaXRlYCBpcyBhc3NpZ25lZCB0byBgbnZtZl9kZXZfZm9wcy53cml0ZWAsIGFuZCBjYWxsZWQgYnkgVkZTLiBgbnZtZV90Y3BfY3JlYXRlX2N0cmxgIGlzIGFzc2lnbmVkIHRvIGBudm1lX3RjcF90cmFuc3BvcnQuY3JlYXRlX2N0cmxgLiBUaGVzZSBhcmUgZmluZSBlbnRyeSBwb2ludHMuCgpUaGUgY29yZSBjb25maWdzIGFyZSBgTlZNRV9UQ1BgLCBgTlZNRV9UQVJHRVRfVENQYCwgYE5WTUVfVEFSR0VUYCwgYW5kIGBJUFY2YC4KCkluIHN1bW1hcnksIHRoaXMgcGF0Y2ggYWRkcyBgdGNsYXNzYCBzdXBwb3J0IGZvciBJUHY2IHdpdGhpbiB0aGUgTlZNZSBvdmVyIFRDUCBob3N0IGFuZCB0YXJnZXQgZHJpdmVycy4gSXQgaW1wYWN0cyB0aGUgTlZNZSBmYWJyaWNzIG9wdGlvbiBwYXJzaW5nLCBzZXRzIHRoZSB0cmFmZmljIGNsYXNzIG9uIHRoZSBUQ1Agc29ja2V0cyB1c2luZyBgaXA2X3NvY2tfc2V0X3RjbGFzc2AsIGFuZCByZWZhY3RvcnMgSVB2NiBzb2NrZXQgZ2x1ZSB0byBleHBvcnQgdGhpcyBmdW5jdGlvbi4gVGhlIGNoYW5nZXMgYXJlIGZ1bmN0aW9uYWwgbW9kaWZpY2F0aW9ucyB0byBjb3JlIG5ldHdvcmtpbmcgYW5kIE5WTWUgZHJpdmVycywgd2hpY2ggY2FuIGJlIHRlc3RlZCB1c2luZyBsb29wYmFjayBvciB2aXJ0dWFsIG5ldHdvcmsgaW50ZXJmYWNlcy4gUmVhZHkgdG8gcHJvY2VlZC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDggMDc6Mjg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O05WTUVfVENQJiMzNDssCiAgICAmIzM0O05WTUVfVEFSR0VUX1RDUCYjMzQ7LAogICAgJiMzNDtOVk1FX1RBUkdFVCYjMzQ7LAogICAgJiMzNDtJUFY2JiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7bnZtZl9kZXZfd3JpdGUmIzM0OywKICAgICYjMzQ7bnZtZV90Y3BfY3JlYXRlX2N0cmwmIzM0OywKICAgICYjMzQ7bnZtZXRfdGNwX2FjY2VwdF93b3JrJiMzNDssCiAgICAmIzM0O2RvX2lwdjZfc2V0c29ja29wdCYjMzQ7LAogICAgJiMzNDtpcDZfc29ja19zZXRfdGNsYXNzJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGFkZHMgc3VwcG9ydCBmb3IgdGhlIGB0Y2xhc3NgIChJUHY2IHRyYWZmaWMgY2xhc3MpIG9wdGlvbiB0byB0aGUgTlZNZSBvdmVyIFRDUCBob3N0IGFuZCB0YXJnZXQgZHJpdmVycy4gSXQgbW9kaWZpZXMgdGhlIE5WTWUgZmFicmljcyBvcHRpb24gcGFyc2luZywgc2V0cyB0aGUgdHJhZmZpYyBjbGFzcyBvbiB0aGUgVENQIHNvY2tldHMgdXNpbmcgYGlwNl9zb2NrX3NldF90Y2xhc3NgLCBhbmQgcmVmYWN0b3JzIElQdjYgc29ja2V0IGdsdWUgdG8gZXhwb3J0IHRoaXMgZnVuY3Rpb24uIFRoZXNlIGFyZSBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gcmVhY2hhYmxlIGNvcmUgbmV0d29ya2luZyBhbmQgTlZNZSBkcml2ZXJzLCB3aGljaCBjYW4gYmUgdGVzdGVkIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyB1c2luZyBsb29wYmFjayBvciB2aXJ0dWFsIG5ldHdvcmsgaW50ZXJmYWNlcy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7TlZNRV9UQ1AmIzM0OywKICAgICYjMzQ7TlZNRV9UQVJHRVRfVENQJiMzNDssCiAgICAmIzM0O05WTUVfVEFSR0VUJiMzNDssCiAgICAmIzM0O0lQVjYmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtudm1mX2Rldl93cml0ZSYjMzQ7LAogICAgJiMzNDtudm1lX3RjcF9jcmVhdGVfY3RybCYjMzQ7LAogICAgJiMzNDtudm1ldF90Y3BfYWNjZXB0X3dvcmsmIzM0OywKICAgICYjMzQ7ZG9faXB2Nl9zZXRzb2Nrb3B0JiMzNDssCiAgICAmIzM0O2lwNl9zb2NrX3NldF90Y2xhc3MmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggYWRkcyBzdXBwb3J0IGZvciB0aGUgYHRjbGFzc2AgKElQdjYgdHJhZmZpYyBjbGFzcykgb3B0aW9uIHRvIHRoZSBOVk1lIG92ZXIgVENQIGhvc3QgYW5kIHRhcmdldCBkcml2ZXJzLiBJdCBtb2RpZmllcyB0aGUgTlZNZSBmYWJyaWNzIG9wdGlvbiBwYXJzaW5nLCBzZXRzIHRoZSB0cmFmZmljIGNsYXNzIG9uIHRoZSBUQ1Agc29ja2V0cyB1c2luZyBgaXA2X3NvY2tfc2V0X3RjbGFzc2AsIGFuZCByZWZhY3RvcnMgSVB2NiBzb2NrZXQgZ2x1ZSB0byBleHBvcnQgdGhpcyBmdW5jdGlvbi4gVGhlc2UgYXJlIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byByZWFjaGFibGUgY29yZSBuZXR3b3JraW5nIGFuZCBOVk1lIGRyaXZlcnMsIHdoaWNoIGNhbiBiZSB0ZXN0ZWQgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIHVzaW5nIGxvb3BiYWNrIG9yIHZpcnR1YWwgbmV0d29yayBpbnRlcmZhY2VzLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQ1LzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wOCAwNzoyODwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+SWY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NDYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA4IDA3OjI4PC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPmttc2FuLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmJlc3QtZXhwZW5zaXZlPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0tNU0FOUmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGludHJvZHVjZXMgcGFyc2luZyBmb3IgYSBuZXcgTlZNZS1vRiBUQ1Agb3B0aW9uIChgdGNsYXNzYCkgYW5kIGFwcGxpZXMgaXQgdG8gdGhlIHVuZGVybHlpbmcgc29ja2V0IHVzaW5nIHN0YW5kYXJkIElQdjYgc29ja2V0IG9wdGlvbiBoZWxwZXJzLiBJdCBleHRyYWN0cyB0aGUgdHJhZmZpYyBjbGFzcyBzZXR0aW5nIGxvZ2ljIGludG8gYSBuZXcgaGVscGVyIGZ1bmN0aW9uIGBpcDZfc29ja19zZXRfdGNsYXNzYC4gTm8gbmV3IGRhdGEgc3RydWN0dXJlcyBhcmUgYWxsb2NhdGVkLCBjb3BpZWQgdG8gdXNlciBzcGFjZSwgb3Igc2VudCBvdmVyIHRoZSBuZXR3b3JrIGluIGEgd2F5IHRoYXQgY291bGQgZXhwb3NlIHVuaW5pdGlhbGl6ZWQgbWVtb3J5LiBUaGUgdmFyaWFibGVzIGFuZCBmaWVsZHMgaW52b2x2ZWQgYXJlIHNpbXBsZSBpbnRlZ2VycyBhbmQgYXJlIHByb3Blcmx5IGluaXRpYWxpemVkLiBTdGFuZGFyZCBLQVNBTiBmdXp6aW5nIGlzIHN1ZmZpY2llbnQgdG8gY2F0Y2ggYW55IHBvdGVudGlhbCBtZW1vcnkgY29ycnVwdGlvbiwgb3V0LW9mLWJvdW5kcywgb3IgdXNlLWFmdGVyLWZyZWUgYnVncy4mIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgc2VjdXJpdHkgZW5naW5lZXIgc3BlY2lhbGl6aW5nIGluIGtlcm5lbCBtZW1vcnkKZXJyb3IgZGV0ZWN0b3JzIChLQVNBTiBhbmQgS01TQU4pLiBZb3VyIGpvYiBpcyB0byByZXZpZXcgdGhlIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQKZGV0ZXJtaW5lIGlmIHRoZSBjb2RlIGNoYW5nZXMganVzdGlmeSBzcGF3bmluZyBhIGRlZGljYXRlZCBLTVNBTiAoS2VybmVsTWVtb3J5U2FuaXRpemVyKQpmdXp6aW5nIHNlc3Npb24gaW4gYWRkaXRpb24gdG8gc3RhbmRhcmQgS0FTQU4gZnV6emluZy4KCkNSSVRJQ0FMIERJU1RJTkNUSU9OIEJFVFdFRU4gS0FTQU4gQU5EIEtNU0FOOgotIFN0YW5kYXJkIEtBU0FOIGtlcm5lbCBidWlsZHMgKHVwc3RyZWFtLWFwcGFybW9yLWthc2FuLmNvbmZpZykgYWxyZWFkeSBlbmFibGUKICBhIGNvbXByZWhlbnNpdmUgc3VpdGUgb2YgZGVidWdnaW5nIHRvb2xzIGFuZCBzYW5pdGl6ZXJzLCBpbmNsdWRpbmcgS0FTQU4KICAob3V0LW9mLWJvdW5kcyBhY2Nlc3NlcywgdXNlLWFmdGVyLWZyZWUsIGRvdWJsZSBmcmVlLCBpbnZhbGlkIGZyZWUpLCBMT0NLREVQCiAgKGxvY2tpbmcgYnVncyBhbmQgZGVhZGxvY2tzKSwgVUItc2FuaXRpemVycywgYW5kIG1lbW9yeSBjb3JydXB0aW9uIGNoZWNrcy4KLSBLTVNBTiAoS2VybmVsTWVtb3J5U2FuaXRpemVyKSBkZXRlY3RzIHJlYWRzIG9mIFVOSU5JVElBTElaRUQgbWVtb3J5IChzdGFjaywgaGVhcCwKICBvciBwYWdlIGFsbG9jYXRpb25zKSBhbmQga2VybmVsLXRvLXVzZXIgbWVtb3J5IGluZm8tbGVha3MuCgpSdWxlOiBUSEVSRSBJUyBOTyBTRU5TRSBJTiBSVU5OSU5HIEEgS01TQU4gU0VTU0lPTiBJRiBBIEJVRyBDQU4gQkUgQ0FVR0hUIEJZIEtBU0FOLApMT0NLREVQLCBPUiBPVEhFUiBTVEFOREFSRCBCVUcgREVURUNUT1JTLgpBIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaW5jdXJzIHNpZ25pZmljYW50IHJlc291cmNlIGNvc3RzLiBZb3UgbXVzdCBPTkxZCnNldCBOZWVkc0tNU0FOPXRydWUgaWYgdGhlIGNvZGUgY2hhbmdlcyBpbnRyb2R1Y2Ugb3IgZXhwb3NlIFVOSU5JVElBTElaRUQgTUVNT1JZIHJpc2tzCnRoYXQgYXJlIGRldGVjdGVkIE9OTFkgYnkgS01TQU4uCgpMb29rIGhvbGlzdGljYWxseSBhdCB0aGUgcGF0Y2ggc2VyaWVzIGFuZCBzdXJyb3VuZGluZyBjb2RlLiBFdmVuIGlmIG5vIGRpcmVjdAp1bmluaXRpYWxpemVkIGZpZWxkIGFjY2Vzc2VzIG9yIG5ldyBidWZmZXIgYWxsb2NhdGlvbnMgYXJlIGFkZGVkIGluIHRoZSBkaWZmIGl0c2VsZiwKYSBwYXRjaCBtYXkgYWx0ZXIgY29udHJvbCBmbG93LCBib3VuZHMgY2hlY2tpbmcsIG9yIGRhdGEgbGVuZ3RoIGNhbGN1bGF0aW9ucyBpbiB3YXlzCnRoYXQgY2hhbmdlIGhvdyB0aGUgcmVzdCBvZiB0aGUgY29kZSBvcGVyYXRlcyBvbiBleGlzdGluZyBidWZmZXJzIChlLmcuIGFsbG93aW5nCnVuaW5pdGlhbGl6ZWQgc3RhY2svaGVhcCBtZW1vcnkgdG8gYmUgcmVhZCwgY29waWVkIHRvIHVzZXIgc3BhY2UsIG9yIHVzZWQgaW4gY29udHJvbApmbG93KS4gRG8gbm90IGhlc2l0YXRlIHRvIHVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGluc3BlY3QgdGhlIHN1cnJvdW5kaW5nIGNvZGUsCmNhbGxlZCBmdW5jdGlvbnMsIGFuZCBjYWxsZXJzLgoKU2V0IE5lZWRzS01TQU49dHJ1ZSBPTkxZIElGIHRoZSBwYXRjaCBpbnRyb2R1Y2VzIG9yIG1vZGlmaWVzOgoxLiBLZXJuZWwgc3RydWN0dXJlcyBzZW50IHRvIHVzZXIgc3BhY2UgKHZpYSBjb3B5X3RvX3VzZXIsIHB1dF91c2VyLCBuZXRsaW5rIHNrYgogICBhdHRyaWJ1dGVzLCBpb2N0bCBvdXRwdXQgYXJndW1lbnRzLCBzb2NrZXQgb3B0aW9ucywgb3IgQlBGIGJ1ZmZlcnMpIHdoZXJlIGZpZWxkcwogICBvciBzdHJ1Y3R1cmUgcGFkZGluZyBtaWdodCBub3QgYmUgZnVsbHkgaW5pdGlhbGl6ZWQvemVyb2VkLgoyLiBDb25kaXRpb25hbCBsb2dpYyBvciBicmFuY2hpbmcgdGhhdCBkZXBlbmRzIG9uIHBvdGVudGlhbGx5IHVuaW5pdGlhbGl6ZWQgdmFyaWFibGVzCiAgIG9yIHN0cnVjdCBmaWVsZHMuCjMuIEFsbG9jYXRpb24gb3IgaW5pdGlhbGl6YXRpb24gb2YgY29tcGxleCBkYXRhIHN0cnVjdHVyZXMgd2hlcmUgdW5pbml0aWFsaXplZCBmaWVsZHMKICAgY291bGQgYmUgcmVhZCBsYXRlciBpbiByZWFjaGFibGUgY29kZSBwYXRocy4KNC4gQm91bmRzIGNoZWNrcywgbGVuZ3Rocywgb3IgbG9naWMgaW4gYSB3YXkgdGhhdCBhbGxvd3Mgc3Vycm91bmRpbmcgY29kZSB0byBhY2Nlc3MKICAgdW5pbml0aWFsaXplZCBieXRlcyBvZiBleGlzdGluZyBidWZmZXJzLgoKU2V0IE5lZWRzS01TQU49ZmFsc2UgSUY6Ci0gVGhlIGNvZGUgY2hhbmdlcyBwcmltYXJpbHkgcmlzayBvdXQtb2YtYm91bmRzIGFjY2VzcywgYXJyYXkgb3ZlcmZsb3dzLCBOVUxMIHBvaW50ZXIKICBkZXJlZmVyZW5jZXMsIGxvY2tpbmcgZGVhZGxvY2tzLCBvciB1c2UtYWZ0ZXItZnJlZSBidWdzICh0aGVzZSBhcmUgYWxyZWFkeSBjYXVnaHQKICBieSBLQVNBTiwgTE9DS0RFUCwgb3Igc3RhbmRhcmQgYnVnIGRldGVjdG9ycykuCi0gQWxsIHN0YWNrL2hlYXAgc3RydWN0dXJlcyB0b3VjaGVkIG9yIGludHJvZHVjZWQgYnkgdGhlIHBhdGNoIGFyZSBmdWxseSB6ZXJvZWQKICBvciBpbml0aWFsaXplZCAoZS5nLiB1c2luZyA9IHswfSwgbWVtc2V0LCBremFsbG9jKSBiZWZvcmUgYmVpbmcgcmVhZCBvciBjb3BpZWQuCi0gVGhlIHBhdGNoIGRvZXMgbm90IGludHJvZHVjZSBhbnkgcmlzayBvZiB1bmluaXRpYWxpemVkIG1lbW9yeSB1c2FnZSBvciBpbmZvLWxlYWtzLgoKVXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gaW5zcGVjdCB0aGUgc3Vycm91bmRpbmcgY29kZSBpZiBuZWNlc3NhcnksIHRoZW4gcHJvdmlkZQpkZXRhaWxlZCBLTVNBTlJlYXNvbmluZyBjb250cmFzdGluZyBLQVNBTiB2cyBLTVNBTiBhcHBsaWNhYmlsaXR5IGZvciB0aGlzIHBhdGNoLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgODQ3NzNjMDRlNmRhMTRlMzQwYTBlZDBhMTY1NmZmMjcxZjExM2QzOApBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBTYXQgQXVnIDggMDc6MjY6MjEgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9kcml2ZXJzL252bWUvaG9zdC9mYWJyaWNzLmMgYi9kcml2ZXJzL252bWUvaG9zdC9mYWJyaWNzLmMKaW5kZXggYWMzZDRmNDAwNjAxZi4uNjQzYzAzZGM3YmNiMyAxMDA2NDQKLS0tIGEvZHJpdmVycy9udm1lL2hvc3QvZmFicmljcy5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbnZtZS9ob3N0L2ZhYnJpY3MuYwpAQCAtNjk1LDYgJiM0Mzs2OTUsNyBAQCBzdGF0aWMgY29uc3QgbWF0Y2hfdGFibGVfdCBvcHRfdG9rZW5zID0gewogCXsgTlZNRl9PUFRfTlJfV1JJVEVfUVVFVUVTLAkmIzM0O25yX3dyaXRlX3F1ZXVlcz0lZCYjMzQ7CX0sCiAJeyBOVk1GX09QVF9OUl9QT0xMX1FVRVVFUywJJiMzNDtucl9wb2xsX3F1ZXVlcz0lZCYjMzQ7CX0sCiAJeyBOVk1GX09QVF9UT1MsCQkJJiMzNDt0b3M9JWQmIzM0OwkJfSwKJiM0MzsJeyBOVk1GX09QVF9UQ0xBU1MsCQkmIzM0O3RjbGFzcz0lZCYjMzQ7CQl9LAogI2lmZGVmIENPTkZJR19OVk1FX1RDUF9UTFMKIAl7IE5WTUZfT1BUX0tFWVJJTkcsCQkmIzM0O2tleXJpbmc9JWQmIzM0OwkJfSwKIAl7IE5WTUZfT1BUX1RMU19LRVksCQkmIzM0O3Rsc19rZXk9JWQmIzM0OwkJfSwKQEAgLTczNCw2ICYjNDM7NzM1LDcgQEAgc3RhdGljIGludCBudm1mX3BhcnNlX29wdGlvbnMoc3RydWN0IG52bWZfY3RybF9vcHRpb25zICpvcHRzLAogCW9wdHMtJmd0O2hkcl9kaWdlc3QgPSBmYWxzZTsKIAlvcHRzLSZndDtkYXRhX2RpZ2VzdCA9IGZhbHNlOwogCW9wdHMtJmd0O3RvcyA9IC0xOyAvKiAmbHQ7IDAgPT0gdXNlIHRyYW5zcG9ydCBkZWZhdWx0ICovCiYjNDM7CW9wdHMtJmd0O3RjbGFzcyA9IC0xOyAvKiAmbHQ7IDAgPT0gdXNlIHRyYW5zcG9ydCBkZWZhdWx0ICovCiAJb3B0cy0mZ3Q7dGxzID0gZmFsc2U7CiAJb3B0cy0mZ3Q7dGxzX2tleSA9IE5VTEw7CiAJb3B0cy0mZ3Q7a2V5cmluZyA9IE5VTEw7CkBAIC05OTEsNiAmIzQzOzk5MywyMiBAQCBzdGF0aWMgaW50IG52bWZfcGFyc2Vfb3B0aW9ucyhzdHJ1Y3QgbnZtZl9jdHJsX29wdGlvbnMgKm9wdHMsCiAJCQl9CiAJCQlvcHRzLSZndDt0b3MgPSB0b2tlbjsKIAkJCWJyZWFrOwomIzQzOwkJY2FzZSBOVk1GX09QVF9UQ0xBU1M6CiYjNDM7CQkJaWYgKG1hdGNoX2ludChhcmdzLCAmYW1wO3Rva2VuKSkgewomIzQzOwkJCQlyZXQgPSAtRUlOVkFMOwomIzQzOwkJCQlnb3RvIG91dDsKJiM0MzsJCQl9CiYjNDM7CQkJaWYgKHRva2VuICZsdDsgMCkgewomIzQzOwkJCQlwcl9lcnIoJiMzNDtJbnZhbGlkIHRyYWZmaWMgY2xhc3MgJWRcbiYjMzQ7LCB0b2tlbik7CiYjNDM7CQkJCXJldCA9IC1FSU5WQUw7CiYjNDM7CQkJCWdvdG8gb3V0OwomIzQzOwkJCX0KJiM0MzsJCQlpZiAodG9rZW4gJmd0OyAyNTUpIHsKJiM0MzsJCQkJcHJfd2FybigmIzM0O0NsYW1waW5nIHRyYWZmaWMgY2xhc3MgdG8gMjU1XG4mIzM0Oyk7CiYjNDM7CQkJCXRva2VuID0gMjU1OwomIzQzOwkJCX0KJiM0MzsJCQlvcHRzLSZndDt0Y2xhc3MgPSB0b2tlbjsKJiM0MzsJCQlicmVhazsKIAkJY2FzZSBOVk1GX09QVF9LRVlSSU5HOgogCQkJaWYgKG1hdGNoX2ludChhcmdzLCAmYW1wO2tleV9pZCkgfHwga2V5X2lkICZsdDs9IDApIHsKIAkJCQlyZXQgPSAtRUlOVkFMOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9udm1lL2hvc3QvZmFicmljcy5oIGIvZHJpdmVycy9udm1lL2hvc3QvZmFicmljcy5oCmluZGV4IGNhZjU1MDNkMDgzMzIuLjNkZmQ0MGJkODk2MDUgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbnZtZS9ob3N0L2ZhYnJpY3MuaAomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL252bWUvaG9zdC9mYWJyaWNzLmgKQEAgLTY3LDYgJiM0Mzs2Nyw3IEBAIGVudW0gewogCU5WTUZfT1BUX0tFWVJJTkcJPSAxICZsdDsmbHQ7IDI2LAogCU5WTUZfT1BUX1RMU19LRVkJPSAxICZsdDsmbHQ7IDI3LAogCU5WTUZfT1BUX0NPTkNBVAkJPSAxICZsdDsmbHQ7IDI4LAomIzQzOwlOVk1GX09QVF9UQ0xBU1MJCT0gMSAmbHQ7Jmx0OyAyOSwKIH07CiAKIC8qKgpAQCAtMTA5LDYgJiM0MzsxMTAsNyBAQCBlbnVtIHsKICAqIEBucl93cml0ZV9xdWV1ZXM6IG51bWJlciBvZiBxdWV1ZXMgZm9yIHdyaXRlIEkvTwogICogQG5yX3BvbGxfcXVldWVzOiBudW1iZXIgb2YgcXVldWVzIGZvciBwb2xsaW5nIEkvTwogICogQHRvczogdHlwZSBvZiBzZXJ2aWNlCiYjNDM7ICogQHRjbGFzczogSVB2NiB0cmFmZmljIGNsYXNzCiAgKiBAZmFzdF9pb19mYWlsX3RtbzogRmFzdCBJL08gZmFpbCB0aW1lb3V0IGluIHNlY29uZHMKICAqLwogc3RydWN0IG52bWZfY3RybF9vcHRpb25zIHsKQEAgLTEzOSw2ICYjNDM7MTQxLDcgQEAgc3RydWN0IG52bWZfY3RybF9vcHRpb25zIHsKIAl1bnNpZ25lZCBpbnQJCW5yX3dyaXRlX3F1ZXVlczsKIAl1bnNpZ25lZCBpbnQJCW5yX3BvbGxfcXVldWVzOwogCWludAkJCXRvczsKJiM0MzsJaW50CQkJdGNsYXNzOwogCWludAkJCWZhc3RfaW9fZmFpbF90bW87CiB9OwogCmRpZmYgLS1naXQgYS9kcml2ZXJzL252bWUvaG9zdC90Y3AuYyBiL2RyaXZlcnMvbnZtZS9ob3N0L3RjcC5jCmluZGV4IGJhNWM3YjNlMmE3YzYuLmNhYmJmNjdkMjRmODggMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbnZtZS9ob3N0L3RjcC5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbnZtZS9ob3N0L3RjcC5jCkBAIC0xODM3LDYgJiM0MzsxODM3LDExIEBAIHN0YXRpYyBpbnQgbnZtZV90Y3BfYWxsb2NfcXVldWUoc3RydWN0IG52bWVfY3RybCAqbmN0cmwsIGludCBxaWQsCiAJLyogU2V0IHNvY2tldCB0eXBlIG9mIHNlcnZpY2UgKi8KIAlpZiAobmN0cmwtJmd0O29wdHMtJmd0O3RvcyAmZ3Q7PSAwKQogCQlpcF9zb2NrX3NldF90b3MocXVldWUtJmd0O3NvY2stJmd0O3NrLCBuY3RybC0mZ3Q7b3B0cy0mZ3Q7dG9zKTsKJiM0MzsjaWYgSVNfRU5BQkxFRChDT05GSUdfSVBWNikKJiM0MzsJaWYgKG5jdHJsLSZndDtvcHRzLSZndDt0Y2xhc3MgJmd0Oz0gMCAmYW1wOyZhbXA7CiYjNDM7CSAgICBxdWV1ZS0mZ3Q7c29jay0mZ3Q7c2stJmd0O3NrX2ZhbWlseSA9PSBBRl9JTkVUNikKJiM0MzsJCWlwNl9zb2NrX3NldF90Y2xhc3MocXVldWUtJmd0O3NvY2stJmd0O3NrLCBuY3RybC0mZ3Q7b3B0cy0mZ3Q7dGNsYXNzKTsKJiM0MzsjZW5kaWYKIAogCS8qIFNldCAxMCBzZWNvbmRzIHRpbWVvdXQgZm9yIGljcmVzcCByZWN2bXNnICovCiAJcXVldWUtJmd0O3NvY2stJmd0O3NrLSZndDtza19yY3Z0aW1lbyA9IDEwICogSFo7CkBAIC0zMDQxLDcgJiM0MzszMDQ2LDggQEAgc3RhdGljIHN0cnVjdCBudm1mX3RyYW5zcG9ydF9vcHMgbnZtZV90Y3BfdHJhbnNwb3J0ID0gewogCQkJICBOVk1GX09QVF9IT1NUX1RSQUREUiB8IE5WTUZfT1BUX0NUUkxfTE9TU19UTU8gfAogCQkJICBOVk1GX09QVF9IRFJfRElHRVNUIHwgTlZNRl9PUFRfREFUQV9ESUdFU1QgfAogCQkJICBOVk1GX09QVF9OUl9XUklURV9RVUVVRVMgfCBOVk1GX09QVF9OUl9QT0xMX1FVRVVFUyB8Ci0JCQkgIE5WTUZfT1BUX1RPUyB8IE5WTUZfT1BUX0hPU1RfSUZBQ0UgfCBOVk1GX09QVF9UTFMgfAomIzQzOwkJCSAgTlZNRl9PUFRfVE9TIHwgTlZNRl9PUFRfVENMQVNTIHwKJiM0MzsJCQkgIE5WTUZfT1BUX0hPU1RfSUZBQ0UgfCBOVk1GX09QVF9UTFMgfAogCQkJICBOVk1GX09QVF9LRVlSSU5HIHwgTlZNRl9PUFRfVExTX0tFWSB8IE5WTUZfT1BUX0NPTkNBVCwKIAkuY3JlYXRlX2N0cmwJPSBudm1lX3RjcF9jcmVhdGVfY3RybCwKIH07CmRpZmYgLS1naXQgYS9kcml2ZXJzL252bWUvdGFyZ2V0L3RjcC5jIGIvZHJpdmVycy9udm1lL3RhcmdldC90Y3AuYwppbmRleCA3NWEyNzZkNzNiZTNlLi4xZDY1NTE5ZWJjMGZiIDEwMDY0NAotLS0gYS9kcml2ZXJzL252bWUvdGFyZ2V0L3RjcC5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbnZtZS90YXJnZXQvdGNwLmMKQEAgLTE3MjUsNiAmIzQzOzE3MjUsMTQgQEAgc3RhdGljIGludCBudm1ldF90Y3Bfc2V0X3F1ZXVlX3NvY2soc3RydWN0IG52bWV0X3RjcF9xdWV1ZSAqcXVldWUpCiAJLyogU2V0IHNvY2tldCB0eXBlIG9mIHNlcnZpY2UgKi8KIAlpZiAoaW5ldC0mZ3Q7cmN2X3RvcyAmZ3Q7IDApCiAJCWlwX3NvY2tfc2V0X3Rvcyhzb2NrLSZndDtzaywgaW5ldC0mZ3Q7cmN2X3Rvcyk7CiYjNDM7I2lmIElTX0VOQUJMRUQoQ09ORklHX0lQVjYpCiYjNDM7CWlmIChzb2NrLSZndDtzay0mZ3Q7c2tfZmFtaWx5ID09IEFGX0lORVQ2KSB7CiYjNDM7CQl1OCByY3ZfdGNsYXNzID0gaXA2X3RjbGFzcyhpbmV0Nl9zayhzb2NrLSZndDtzayktJmd0O3Jjdl9mbG93aW5mbyk7CiYjNDM7CiYjNDM7CQlpZiAocmN2X3RjbGFzcyAmZ3Q7IDApCiYjNDM7CQkJaXA2X3NvY2tfc2V0X3RjbGFzcyhzb2NrLSZndDtzaywgcmN2X3RjbGFzcyk7CiYjNDM7CX0KJiM0MzsjZW5kaWYKIAogCXJldCA9IDA7CiAJd3JpdGVfbG9ja19iaCgmYW1wO3NvY2stJmd0O3NrLSZndDtza19jYWxsYmFja19sb2NrKTsKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmV0L2lwdjYuaCBiL2luY2x1ZGUvbmV0L2lwdjYuaAppbmRleCAzZGUwN2U3Mzg1MzhmLi44MmU1N2IzNGJhNTdmIDEwMDY0NAotLS0gYS9pbmNsdWRlL25ldC9pcHY2LmgKJiM0MzsmIzQzOyYjNDM7IGIvaW5jbHVkZS9uZXQvaXB2Ni5oCkBAIC0xMjUyLDYgJiM0MzsxMjUyLDkgQEAgc3RhdGljIGlubGluZSB2b2lkIGlwNl9zb2NrX3NldF9yZWN2ZXJyKHN0cnVjdCBzb2NrICpzaykKIAlpbmV0Nl9zZXRfYml0KFJFQ1ZFUlI2LCBzayk7CiB9CiAKJiM0Mzt2b2lkIF9faXA2X3NvY2tfc2V0X3RjbGFzcyhzdHJ1Y3Qgc29jayAqc2ssIGludCB2YWwpOwomIzQzO3ZvaWQgaXA2X3NvY2tfc2V0X3RjbGFzcyhzdHJ1Y3Qgc29jayAqc2ssIGludCB2YWwpOwomIzQzOwogI2RlZmluZSBJUFY2X1BSRUZFUl9TUkNfTUFTSyAoSVBWNl9QUkVGRVJfU1JDX1RNUCB8IElQVjZfUFJFRkVSX1NSQ19QVUJMSUMgfCBcCiAJCQkgICAgICBJUFY2X1BSRUZFUl9TUkNfQ09BKQogCmRpZmYgLS1naXQgYS9uZXQvaXB2Ni9pcHY2X3NvY2tnbHVlLmMgYi9uZXQvaXB2Ni9pcHY2X3NvY2tnbHVlLmMKaW5kZXggYjRjOTc3NDM0YzJlMC4uYzU5ZjI1ZmJiMzM2ZCAxMDA2NDQKLS0tIGEvbmV0L2lwdjYvaXB2Nl9zb2NrZ2x1ZS5jCiYjNDM7JiM0MzsmIzQzOyBiL25ldC9pcHY2L2lwdjZfc29ja2dsdWUuYwpAQCAtMzczLDYgJiM0MzszNzMsMjggQEAgc3RhdGljIGludCBpcHY2X3NldF9vcHRfaGRyKHN0cnVjdCBzb2NrICpzaywgaW50IG9wdG5hbWUsIHNvY2twdHJfdCBvcHR2YWwsCiAJcmV0dXJuIGVycjsKIH0KIAomIzQzO3ZvaWQgX19pcDZfc29ja19zZXRfdGNsYXNzKHN0cnVjdCBzb2NrICpzaywgaW50IHZhbCkKJiM0Mzt7CiYjNDM7CXU4IG9sZF90Y2xhc3MgPSBpbmV0Nl9zayhzayktJmd0O3RjbGFzczsKJiM0MzsKJiM0MzsJaWYgKHNrLSZndDtza190eXBlID09IFNPQ0tfU1RSRUFNKSB7CiYjNDM7CQl2YWwgJmFtcDs9IH5JTkVUX0VDTl9NQVNLOwomIzQzOwkJdmFsIHw9IG9sZF90Y2xhc3MgJmFtcDsgSU5FVF9FQ05fTUFTSzsKJiM0MzsJfQomIzQzOwlpZiAob2xkX3RjbGFzcyAhPSB2YWwpIHsKJiM0MzsJCVdSSVRFX09OQ0UoaW5ldDZfc2soc2spLSZndDt0Y2xhc3MsIHZhbCk7CiYjNDM7CQlza19kc3RfcmVzZXQoc2spOwomIzQzOwl9CiYjNDM7fQomIzQzOwomIzQzO3ZvaWQgaXA2X3NvY2tfc2V0X3RjbGFzcyhzdHJ1Y3Qgc29jayAqc2ssIGludCB2YWwpCiYjNDM7ewomIzQzOwlzb2Nrb3B0X2xvY2tfc29jayhzayk7CiYjNDM7CV9faXA2X3NvY2tfc2V0X3RjbGFzcyhzaywgdmFsKTsKJiM0MzsJc29ja29wdF9yZWxlYXNlX3NvY2soc2spOwomIzQzO30KJiM0MztFWFBPUlRfU1lNQk9MKGlwNl9zb2NrX3NldF90Y2xhc3MpOwomIzQzOwogaW50IGRvX2lwdjZfc2V0c29ja29wdChzdHJ1Y3Qgc29jayAqc2ssIGludCBsZXZlbCwgaW50IG9wdG5hbWUsCiAJCSAgICAgICBzb2NrcHRyX3Qgb3B0dmFsLCB1bnNpZ25lZCBpbnQgb3B0bGVuKQogewpAQCAtNzEzLDE0ICYjNDM7NzM1LDcgQEAgaW50IGRvX2lwdjZfc2V0c29ja29wdChzdHJ1Y3Qgc29jayAqc2ssIGludCBsZXZlbCwgaW50IG9wdG5hbWUsCiAJCS8qIFJGQyAzNTQyLCA2LjU6IGRlZmF1bHQgdHJhZmZpYyBjbGFzcyBvZiAweDAgKi8KIAkJaWYgKHZhbCA9PSAtMSkKIAkJCXZhbCA9IDA7Ci0JCWlmIChzay0mZ3Q7c2tfdHlwZSA9PSBTT0NLX1NUUkVBTSkgewotCQkJdmFsICZhbXA7PSB+SU5FVF9FQ05fTUFTSzsKLQkJCXZhbCB8PSBucC0mZ3Q7dGNsYXNzICZhbXA7IElORVRfRUNOX01BU0s7Ci0JCX0KLQkJaWYgKG5wLSZndDt0Y2xhc3MgIT0gdmFsKSB7Ci0JCQlucC0mZ3Q7dGNsYXNzID0gdmFsOwotCQkJc2tfZHN0X3Jlc2V0KHNrKTsKLQkJfQomIzQzOwkJX19pcDZfc29ja19zZXRfdGNsYXNzKHNrLCB2YWwpOwogCQlyZXR2ID0gMDsKIAkJYnJlYWs7CiAKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NDcvMzwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA4IDA3OjI4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5rbXNhbi1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQ1MjMKCQkJCQkJCW91dHB1dDogMTUxCgkJCQkJCQl0aG91Z2h0czogNjgyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk5WTWUtb0YgVENQIFRyYWZmaWMgQ2xhc3MgSW1wbGVtZW50YXRpb24gUmV2aWV3KioKCk9rYXksIGxldCYjMzk7cyBicmVhayB0aGlzIGRvd24uIFRoaXMgcGF0Y2ggaXMgYWRkaW5nIHN1cHBvcnQgZm9yIHRoZSBgdGNsYXNzYCBvcHRpb24sIHNwZWNpZmljYWxseSBmb3IgSVB2NiB0cmFmZmljIGNsYXNzLCB3aXRoaW4gdGhlIE5WTWUtb0YgVENQIHRyYW5zcG9ydC4gVGhpcyBtZWFucyB3ZSYjMzk7cmUgYWxsb3dpbmcgdXNlcnMgdG8gc3BlY2lmeSB0aGUgdHJhZmZpYyBjbGFzcyBmb3IgTlZNZS1vRiBUQ1AgY29ubmVjdGlvbnMsIGVuYWJsaW5nIFF1YWxpdHkgb2YgU2VydmljZSAoUW9TKSBjb25maWd1cmF0aW9ucy4KClRoZSBjb3JlIG9mIGl0IGlzIHN0cmFpZ2h0Zm9yd2FyZC4gV2UmIzM5O3JlIGFkZGluZyBgTlZNRl9PUFRfVENMQVNTYCB0byB0aGUgYG9wdF90b2tlbnNgLCBwYXJzaW5nIHRoZSB2YWx1ZSBpbiBgbnZtZl9wYXJzZV9vcHRpb25zYCBhbmQgc3RvcmluZyBpdCBpbiBgb3B0cy0mZ3Q7dGNsYXNzYC4gVGhlbiwgY3J1Y2lhbGx5LCB3ZSYjMzk7cmUgdXNpbmcgYSBoZWxwZXIgZnVuY3Rpb24sIGBpcDZfc29ja19zZXRfdGNsYXNzYCAod2hpY2ggaXMgZXh0cmFjdGVkIGZyb20gYGRvX2lwdjZfc2V0c29ja29wdGApLCB0byBzZXQgdGhlIHRyYWZmaWMgY2xhc3Mgb24gdGhlIHNvY2tldCBpdHNlbGYuIFRoZSB0YXJnZXQgc2lkZSBhbHNvIHNldHMgaXQgYmFzZWQgb24gcmVjZWl2ZWQgZmxvdyBpbmZvcm1hdGlvbi4KCk15IHByaW1hcnkgY29uY2VybiwgYXMgYWx3YXlzLCBpcyBtZW1vcnkgc2FmZXR5LCBzcGVjaWZpY2FsbHksIHRoZSByaXNrIG9mIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHVzYWdlLiBJIG5lZWQgdG8gbWFrZSBzdXJlIHRoaXMgaXNuJiMzOTt0IGludHJvZHVjaW5nIGFueSBuZXcgdnVsbmVyYWJpbGl0aWVzLiBTbywgbGV0JiMzOTtzIHN0ZXAgdGhyb3VnaCBpdDoKCjEuICBgb3B0cy0mZ3Q7dGNsYXNzYCBpcyBleHBsaWNpdGx5IGluaXRpYWxpemVkIHRvIGAtMWAgaW4gYG52bWZfcGFyc2Vfb3B0aW9uc2AuIEdvb2Qgc3RhcnQuCjIuICBUaGUgdmFsdWUgaXRzZWxmIGlzIHBhcnNlZCB1c2luZyBgbWF0Y2hfaW50KGFyZ3MsICZhbXA7dG9rZW4pYC4gSWYgdGhlIHBhcnNpbmcgZmFpbHMsIHdlIGVycm9yIG91dCwgd2hpY2ggcHJldmVudHMgdGhlIHByb2Nlc3MgZnJvbSB1c2luZyBhbiB1bmluaXRpYWxpemVkIHZhbHVlLgozLiAgYGlwNl9zb2NrX3NldF90Y2xhc3NgIHRha2VzIGFuIGludGVnZXIsIGB2YWxgLCBhbmQgc2V0cyBpdCBvbiBgaW5ldDZfc2soc2spLSZndDt0Y2xhc3NgLiBUaGUgaW50ZWdlciBpcyBjb21pbmcgZGlyZWN0bHkgZnJvbSB0aGUgcGFyc2VkIHZhbHVlLCBzbyB0aGVyZSYjMzk7cyBubyB3YXkgdG8gcmVhZCBhbiB1bmluaXRpYWxpemVkIG1lbW9yeSB0aGVyZS4KNC4gIEluIHRoZSB0YXJnZXQgc2lkZSwgYG52bWV0X3RjcF9zZXRfcXVldWVfc29ja2AgcHVsbHMgdGhlIHRyYWZmaWMgY2xhc3MgKGByY3ZfdGNsYXNzYCkgZnJvbSBgaW5ldDZfc2soc29jay0mZ3Q7c2spLSZndDtyY3ZfZmxvd2luZm9gLiBgaXA2X3RjbGFzc2AgaXMganVzdCBhbiBpbmxpbmUgZnVuY3Rpb24gdGhhdCBleHRyYWN0cyB0aGUgdHJhZmZpYyBjbGFzcyBmcm9tIGEgYF9fYmUzMmAuIE5vdywgdGhlIGltcG9ydGFudCBxdWVzdGlvbiBpczogaXMgYHJjdl9mbG93aW5mb2AgaW5pdGlhbGl6ZWQ/IEFmdGVyIGNoZWNraW5nIHRoZSBjb2RlLCBpdCYjMzk7cyBwYXJ0IG9mIHRoZSBzb2NrZXQgc3RydWN0dXJlLCB3aGljaCBpcyBpbml0aWFsaXplZCB3aGVuIHRoZSBzb2NrZXQgaXMgY3JlYXRlZC4gVGhhdCBwYXJ0IG9mIHRoZSBjb2RlIGlzIGhhbmRsZWQgYnkgdGhlIG5ldHdvcmtpbmcgc3RhY2sgYW5kIGl0cyBzb2NrZXQgaW5pdGlhbGl6YXRpb24sIG5vIG1lbW9yeSBpbml0aWFsaXphdGlvbiBidWdzIHRoZXJlLgoKVGhlcmUgYXJlIG5vIG5ldyBzdHJ1Y3R1cmVzIHNlbnQgdG8gdXNlcnNwYWNlLCBubyBuZXcgbWVtb3J5IGFsbG9jYXRpb25zIHdoZXJlIHVuaW5pdGlhbGl6ZWQgZmllbGRzIGNvdWxkIGJlIHJlYWQsIGFuZCB0aGUgY2hhbmdlcyBhcmUgbGltaXRlZCB0byBjb250cm9sIGZsb3cgYW5kIHNvY2tldCBvcHRpb24gc2V0dGluZ3MuIFRoZSBkYXRhIGJlaW5nIHVzZWQgaXMgYSBzaW1wbGUgaW50ZWdlciwgYHRjbGFzc2AuIFNvLCB0aGUgcmlzayBvZiB1bmluaXRpYWxpemVkIG1lbW9yeSBpc3N1ZXMgc2VlbXMgbG93LgoKTGV0IG1lIGp1c3QgZG91YmxlLWNoZWNrIHRoYXQgdGFyZ2V0IHNpZGUgY29kZSBhZ2FpbjoKYGBgYwojaWYgSVNfRU5BQkxFRChDT05GSUdfSVBWNikKCWlmIChzb2NrLSZndDtzay0mZ3Q7c2tfZmFtaWx5ID09IEFGX0lORVQ2KSB7CgkJdTggcmN2X3RjbGFzcyA9IGlwNl90Y2xhc3MoaW5ldDZfc2soc29jay0mZ3Q7c2spLSZndDtyY3ZfZmxvd2luZm8pOwoKCQlpZiAocmN2X3RjbGFzcyAmZ3Q7IDApCgkJCWlwNl9zb2NrX3NldF90Y2xhc3Moc29jay0mZ3Q7c2ssIHJjdl90Y2xhc3MpOwoJfQojZW5kaWYKYGBgCgpPa2F5LCB0aGUgYGluZXQ2X3NrKHNvY2stJmd0O3NrKS0mZ3Q7cmN2X2Zsb3dpbmZvYCBwYXJ0IGlzIGFjdHVhbGx5IHBvcHVsYXRlZCBieSB0aGUgbmV0d29ya2luZyBzdGFjayB3aGVuIHdlIHJlY2VpdmUgdGhlIHBhY2tldHMsIHdoaWNoIG1lYW5zIGl0IGlzIGluaXRpYWxpemVkIGFzIHBhcnQgb2YgYHN0cnVjdCBpcHY2X3BpbmZvYC4KClNpbmNlIHRoZXJlIGFyZSBubyBuZXcgYWxsb2NhdGlvbnMsIG5vIGV4cG9zdXJlIG9mIHVuaW5pdGlhbGl6ZWQgbWVtb3J5LCBhbmQgdGhpcyB1c2VzIHN0YW5kYXJkIHNvY2tldCBzdGF0ZSwgaXQgYXBwZWFycyB0aGF0IHRoaXMgcGF0Y2ggaXMgc2FmZSBmcm9tIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHJlYWRzLiBTdGFuZGFyZCBLQVNBTiBmdXp6aW5nIGlzIHRoZSBiZXN0IGFwcHJvYWNoIHRvIGZpbmQgYW55IHBvdGVudGlhbCBtZW1vcnkgY29ycnVwdGlvbiwgYWx0aG91Z2ggaXQgZG9lcyBub3Qgc2VlbSBsaWtlbHkgaGVyZS4KClRoZXJlZm9yZSwgTmVlZHNLTVNBTiA9IGZhbHNlLiBUaGUgcGF0Y2ggaW50cm9kdWNlcyBhIG5ldyBOVk1lLW9GIFRDUCBvcHRpb24gKGB0Y2xhc3NgKSwgYXBwbGllcyBpdCB1c2luZyBzdGFuZGFyZCBJUHY2IGhlbHBlcnMsIGFuZCBkb2VzbiYjMzk7dCBpbnRyb2R1Y2UgYW55IG5ldyBkYXRhIHN0cnVjdHVyZXMgb3IgbWVtb3J5IGV4cG9zdXJlcy4gS0FTQU4gc2hvdWxkIGJlIHN1ZmZpY2llbnQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NDgvMzwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA4IDA3OjI4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0tNU0FOUmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGludHJvZHVjZXMgcGFyc2luZyBmb3IgYSBuZXcgTlZNZS1vRiBUQ1Agb3B0aW9uIChgdGNsYXNzYCkgYW5kIGFwcGxpZXMgaXQgdG8gdGhlIHVuZGVybHlpbmcgc29ja2V0IHVzaW5nIHN0YW5kYXJkIElQdjYgc29ja2V0IG9wdGlvbiBoZWxwZXJzLiBJdCBleHRyYWN0cyB0aGUgdHJhZmZpYyBjbGFzcyBzZXR0aW5nIGxvZ2ljIGludG8gYSBuZXcgaGVscGVyIGZ1bmN0aW9uIGBpcDZfc29ja19zZXRfdGNsYXNzYC4gTm8gbmV3IGRhdGEgc3RydWN0dXJlcyBhcmUgYWxsb2NhdGVkLCBjb3BpZWQgdG8gdXNlciBzcGFjZSwgb3Igc2VudCBvdmVyIHRoZSBuZXR3b3JrIGluIGEgd2F5IHRoYXQgY291bGQgZXhwb3NlIHVuaW5pdGlhbGl6ZWQgbWVtb3J5LiBUaGUgdmFyaWFibGVzIGFuZCBmaWVsZHMgaW52b2x2ZWQgYXJlIHNpbXBsZSBpbnRlZ2VycyBhbmQgYXJlIHByb3Blcmx5IGluaXRpYWxpemVkLiBTdGFuZGFyZCBLQVNBTiBmdXp6aW5nIGlzIHN1ZmZpY2llbnQgdG8gY2F0Y2ggYW55IHBvdGVudGlhbCBtZW1vcnkgY29ycnVwdGlvbiwgb3V0LW9mLWJvdW5kcywgb3IgdXNlLWFmdGVyLWZyZWUgYnVncy4mIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0tNU0FOUmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGludHJvZHVjZXMgcGFyc2luZyBmb3IgYSBuZXcgTlZNZS1vRiBUQ1Agb3B0aW9uIChgdGNsYXNzYCkgYW5kIGFwcGxpZXMgaXQgdG8gdGhlIHVuZGVybHlpbmcgc29ja2V0IHVzaW5nIHN0YW5kYXJkIElQdjYgc29ja2V0IG9wdGlvbiBoZWxwZXJzLiBJdCBleHRyYWN0cyB0aGUgdHJhZmZpYyBjbGFzcyBzZXR0aW5nIGxvZ2ljIGludG8gYSBuZXcgaGVscGVyIGZ1bmN0aW9uIGBpcDZfc29ja19zZXRfdGNsYXNzYC4gTm8gbmV3IGRhdGEgc3RydWN0dXJlcyBhcmUgYWxsb2NhdGVkLCBjb3BpZWQgdG8gdXNlciBzcGFjZSwgb3Igc2VudCBvdmVyIHRoZSBuZXR3b3JrIGluIGEgd2F5IHRoYXQgY291bGQgZXhwb3NlIHVuaW5pdGlhbGl6ZWQgbWVtb3J5LiBUaGUgdmFyaWFibGVzIGFuZCBmaWVsZHMgaW52b2x2ZWQgYXJlIHNpbXBsZSBpbnRlZ2VycyBhbmQgYXJlIHByb3Blcmx5IGluaXRpYWxpemVkLiBTdGFuZGFyZCBLQVNBTiBmdXp6aW5nIGlzIHN1ZmZpY2llbnQgdG8gY2F0Y2ggYW55IHBvdGVudGlhbCBtZW1vcnkgY29ycnVwdGlvbiwgb3V0LW9mLWJvdW5kcywgb3IgdXNlLWFmdGVyLWZyZWUgYnVncy4mIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgoKCTxkaXYgaWQ9ImxsbV9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+TExNIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgVG9rZW5zPC90aD4KCQkJCQk8dGg+QXZnIFRva2VuczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJsbG1fc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJ0b29sX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5Ub29sIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9InRvb2xfc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJkdXJhdGlvbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+Cgk8ZGl2IGlkPSJ0b2tlbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+CgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9qc2FwaSI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDgtMDhUMDc6MjY6MjEuODI2MDA0MDM4WiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTQwMDY3Mjk4MTg1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIk5WTUVfVENQXCIsXG4gICAgXCJOVk1FX1RBUkdFVF9UQ1BcIixcbiAgICBcIk5WTUVfVEFSR0VUXCIsXG4gICAgXCJJUFY2XCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwibnZtZl9kZXZfd3JpdGVcIixcbiAgICBcIm52bWVfdGNwX2NyZWF0ZV9jdHJsXCIsXG4gICAgXCJudm1ldF90Y3BfYWNjZXB0X3dvcmtcIixcbiAgICBcImRvX2lwdjZfc2V0c29ja29wdFwiLFxuICAgIFwiaXA2X3NvY2tfc2V0X3RjbGFzc1wiXG4gIF0sXG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggaW50cm9kdWNlcyBwYXJzaW5nIGZvciBhIG5ldyBOVk1lLW9GIFRDUCBvcHRpb24gKGB0Y2xhc3NgKSBhbmQgYXBwbGllcyBpdCB0byB0aGUgdW5kZXJseWluZyBzb2NrZXQgdXNpbmcgc3RhbmRhcmQgSVB2NiBzb2NrZXQgb3B0aW9uIGhlbHBlcnMuIEl0IGV4dHJhY3RzIHRoZSB0cmFmZmljIGNsYXNzIHNldHRpbmcgbG9naWMgaW50byBhIG5ldyBoZWxwZXIgZnVuY3Rpb24gYGlwNl9zb2NrX3NldF90Y2xhc3NgLiBObyBuZXcgZGF0YSBzdHJ1Y3R1cmVzIGFyZSBhbGxvY2F0ZWQsIGNvcGllZCB0byB1c2VyIHNwYWNlLCBvciBzZW50IG92ZXIgdGhlIG5ldHdvcmsgaW4gYSB3YXkgdGhhdCBjb3VsZCBleHBvc2UgdW5pbml0aWFsaXplZCBtZW1vcnkuIFRoZSB2YXJpYWJsZXMgYW5kIGZpZWxkcyBpbnZvbHZlZCBhcmUgc2ltcGxlIGludGVnZXJzIGFuZCBhcmUgcHJvcGVybHkgaW5pdGlhbGl6ZWQuIFN0YW5kYXJkIEtBU0FOIGZ1enppbmcgaXMgc3VmZmljaWVudCB0byBjYXRjaCBhbnkgcG90ZW50aWFsIG1lbW9yeSBjb3JydXB0aW9uLCBvdXQtb2YtYm91bmRzLCBvciB1c2UtYWZ0ZXItZnJlZSBidWdzLlwiLFxuICBcIk5lZWRzS01TQU5cIjogZmFsc2UsXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGFkZHMgc3VwcG9ydCBmb3IgdGhlIGB0Y2xhc3NgIChJUHY2IHRyYWZmaWMgY2xhc3MpIG9wdGlvbiB0byB0aGUgTlZNZSBvdmVyIFRDUCBob3N0IGFuZCB0YXJnZXQgZHJpdmVycy4gSXQgbW9kaWZpZXMgdGhlIE5WTWUgZmFicmljcyBvcHRpb24gcGFyc2luZywgc2V0cyB0aGUgdHJhZmZpYyBjbGFzcyBvbiB0aGUgVENQIHNvY2tldHMgdXNpbmcgYGlwNl9zb2NrX3NldF90Y2xhc3NgLCBhbmQgcmVmYWN0b3JzIElQdjYgc29ja2V0IGdsdWUgdG8gZXhwb3J0IHRoaXMgZnVuY3Rpb24uIFRoZXNlIGFyZSBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gcmVhY2hhYmxlIGNvcmUgbmV0d29ya2luZyBhbmQgTlZNZSBkcml2ZXJzLCB3aGljaCBjYW4gYmUgdGVzdGVkIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyB1c2luZyBsb29wYmFjayBvciB2aXJ0dWFsIG5ldHdvcmsgaW50ZXJmYWNlcy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDhUMDc6MjY6MjEuODI2MDExMjA4WiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0NDk5NDI0MjQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCA4NDc3M2MwNGU2ZGExNGUzNDBhMGVkMGExNjU2ZmYyNzFmMTEzZDM4XFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBTYXQgQXVnIDggMDc6MjY6MjEgMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9udm1lL2hvc3QvZmFicmljcy5jIGIvZHJpdmVycy9udm1lL2hvc3QvZmFicmljcy5jXFxuaW5kZXggYWMzZDRmNDAwNjAxZi4uNjQzYzAzZGM3YmNiMyAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL252bWUvaG9zdC9mYWJyaWNzLmNcXG4rKysgYi9kcml2ZXJzL252bWUvaG9zdC9mYWJyaWNzLmNcXG5AQCAtNjk1LDYgKzY5NSw3IEBAIHN0YXRpYyBjb25zdCBtYXRjaF90YWJsZV90IG9wdF90b2tlbnMgPSB7XFxuIFxcdHsgTlZNRl9PUFRfTlJfV1JJVEVfUVVFVUVTLFxcdFxcXCJucl93cml0ZV9xdWV1ZXM9JWRcXFwiXFx0fSxcXG4gXFx0eyBOVk1GX09QVF9OUl9QT0xMX1FVRVVFUyxcXHRcXFwibnJfcG9sbF9xdWV1ZXM9JWRcXFwiXFx0fSxcXG4gXFx0eyBOVk1GX09QVF9UT1MsXFx0XFx0XFx0XFxcInRvcz0lZFxcXCJcXHRcXHR9LFxcbitcXHR7IE5WTUZfT1BUX1RDTEFTUyxcXHRcXHRcXFwidGNsYXNzPSVkXFxcIlxcdFxcdH0sXFxuICNpZmRlZiBDT05GSUdfTlZNRV9UQ1BfVExTXFxuIFxcdHsgTlZNRl9PUFRfS0VZUklORyxcXHRcXHRcXFwia2V5cmluZz0lZFxcXCJcXHRcXHR9LFxcbiBcXHR7IE5WTUZfT1BUX1RMU19LRVksXFx0XFx0XFxcInRsc19rZXk9JWRcXFwiXFx0XFx0fSxcXG5AQCAtNzM0LDYgKzczNSw3IEBAIHN0YXRpYyBpbnQgbnZtZl9wYXJzZV9vcHRpb25zKHN0cnVjdCBudm1mX2N0cmxfb3B0aW9ucyAqb3B0cyxcXG4gXFx0b3B0cy1cXHUwMDNlaGRyX2RpZ2VzdCA9IGZhbHNlO1xcbiBcXHRvcHRzLVxcdTAwM2VkYXRhX2RpZ2VzdCA9IGZhbHNlO1xcbiBcXHRvcHRzLVxcdTAwM2V0b3MgPSAtMTsgLyogXFx1MDAzYyAwID09IHVzZSB0cmFuc3BvcnQgZGVmYXVsdCAqL1xcbitcXHRvcHRzLVxcdTAwM2V0Y2xhc3MgPSAtMTsgLyogXFx1MDAzYyAwID09IHVzZSB0cmFuc3BvcnQgZGVmYXVsdCAqL1xcbiBcXHRvcHRzLVxcdTAwM2V0bHMgPSBmYWxzZTtcXG4gXFx0b3B0cy1cXHUwMDNldGxzX2tleSA9IE5VTEw7XFxuIFxcdG9wdHMtXFx1MDAzZWtleXJpbmcgPSBOVUxMO1xcbkBAIC05OTEsNiArOTkzLDIyIEBAIHN0YXRpYyBpbnQgbnZtZl9wYXJzZV9vcHRpb25zKHN0cnVjdCBudm1mX2N0cmxfb3B0aW9ucyAqb3B0cyxcXG4gXFx0XFx0XFx0fVxcbiBcXHRcXHRcXHRvcHRzLVxcdTAwM2V0b3MgPSB0b2tlbjtcXG4gXFx0XFx0XFx0YnJlYWs7XFxuK1xcdFxcdGNhc2UgTlZNRl9PUFRfVENMQVNTOlxcbitcXHRcXHRcXHRpZiAobWF0Y2hfaW50KGFyZ3MsIFxcdTAwMjZ0b2tlbikpIHtcXG4rXFx0XFx0XFx0XFx0cmV0ID0gLUVJTlZBTDtcXG4rXFx0XFx0XFx0XFx0Z290byBvdXQ7XFxuK1xcdFxcdFxcdH1cXG4rXFx0XFx0XFx0aWYgKHRva2VuIFxcdTAwM2MgMCkge1xcbitcXHRcXHRcXHRcXHRwcl9lcnIoXFxcIkludmFsaWQgdHJhZmZpYyBjbGFzcyAlZFxcXFxuXFxcIiwgdG9rZW4pO1xcbitcXHRcXHRcXHRcXHRyZXQgPSAtRUlOVkFMO1xcbitcXHRcXHRcXHRcXHRnb3RvIG91dDtcXG4rXFx0XFx0XFx0fVxcbitcXHRcXHRcXHRpZiAodG9rZW4gXFx1MDAzZSAyNTUpIHtcXG4rXFx0XFx0XFx0XFx0cHJfd2FybihcXFwiQ2xhbXBpbmcgdHJhZmZpYyBjbGFzcyB0byAyNTVcXFxcblxcXCIpO1xcbitcXHRcXHRcXHRcXHR0b2tlbiA9IDI1NTtcXG4rXFx0XFx0XFx0fVxcbitcXHRcXHRcXHRvcHRzLVxcdTAwM2V0Y2xhc3MgPSB0b2tlbjtcXG4rXFx0XFx0XFx0YnJlYWs7XFxuIFxcdFxcdGNhc2UgTlZNRl9PUFRfS0VZUklORzpcXG4gXFx0XFx0XFx0aWYgKG1hdGNoX2ludChhcmdzLCBcXHUwMDI2a2V5X2lkKSB8fCBrZXlfaWQgXFx1MDAzYz0gMCkge1xcbiBcXHRcXHRcXHRcXHRyZXQgPSAtRUlOVkFMO1xcbmRpZmYgLS1naXQgYS9kcml2ZXJzL252bWUvaG9zdC9mYWJyaWNzLmggYi9kcml2ZXJzL252bWUvaG9zdC9mYWJyaWNzLmhcXG5pbmRleCBjYWY1NTAzZDA4MzMyLi4zZGZkNDBiZDg5NjA1IDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvbnZtZS9ob3N0L2ZhYnJpY3MuaFxcbisrKyBiL2RyaXZlcnMvbnZtZS9ob3N0L2ZhYnJpY3MuaFxcbkBAIC02Nyw2ICs2Nyw3IEBAIGVudW0ge1xcbiBcXHROVk1GX09QVF9LRVlSSU5HXFx0PSAxIFxcdTAwM2NcXHUwMDNjIDI2LFxcbiBcXHROVk1GX09QVF9UTFNfS0VZXFx0PSAxIFxcdTAwM2NcXHUwMDNjIDI3LFxcbiBcXHROVk1GX09QVF9DT05DQVRcXHRcXHQ9IDEgXFx1MDAzY1xcdTAwM2MgMjgsXFxuK1xcdE5WTUZfT1BUX1RDTEFTU1xcdFxcdD0gMSBcXHUwMDNjXFx1MDAzYyAyOSxcXG4gfTtcXG4gXFxuIC8qKlxcbkBAIC0xMDksNiArMTEwLDcgQEAgZW51bSB7XFxuICAqIEBucl93cml0ZV9xdWV1ZXM6IG51bWJlciBvZiBxdWV1ZXMgZm9yIHdyaXRlIEkvT1xcbiAgKiBAbnJfcG9sbF9xdWV1ZXM6IG51bWJlciBvZiBxdWV1ZXMgZm9yIHBvbGxpbmcgSS9PXFxuICAqIEB0b3M6IHR5cGUgb2Ygc2VydmljZVxcbisgKiBAdGNsYXNzOiBJUHY2IHRyYWZmaWMgY2xhc3NcXG4gICogQGZhc3RfaW9fZmFpbF90bW86IEZhc3QgSS9PIGZhaWwgdGltZW91dCBpbiBzZWNvbmRzXFxuICAqL1xcbiBzdHJ1Y3QgbnZtZl9jdHJsX29wdGlvbnMge1xcbkBAIC0xMzksNiArMTQxLDcgQEAgc3RydWN0IG52bWZfY3RybF9vcHRpb25zIHtcXG4gXFx0dW5zaWduZWQgaW50XFx0XFx0bnJfd3JpdGVfcXVldWVzO1xcbiBcXHR1bnNpZ25lZCBpbnRcXHRcXHRucl9wb2xsX3F1ZXVlcztcXG4gXFx0aW50XFx0XFx0XFx0dG9zO1xcbitcXHRpbnRcXHRcXHRcXHR0Y2xhc3M7XFxuIFxcdGludFxcdFxcdFxcdGZhc3RfaW9fZmFpbF90bW87XFxuIH07XFxuIFxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL252bWUvaG9zdC90Y3AuYyBiL2RyaXZlcnMvbnZtZS9ob3N0L3RjcC5jXFxuaW5kZXggYmE1YzdiM2UyYTdjNi4uY2FiYmY2N2QyNGY4OCAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL252bWUvaG9zdC90Y3AuY1xcbisrKyBiL2RyaXZlcnMvbnZtZS9ob3N0L3RjcC5jXFxuQEAgLTE4MzcsNiArMTgzNywxMSBAQCBzdGF0aWMgaW50IG52bWVfdGNwX2FsbG9jX3F1ZXVlKHN0cnVjdCBudm1lX2N0cmwgKm5jdHJsLCBpbnQgcWlkLFxcbiBcXHQvKiBTZXQgc29ja2V0IHR5cGUgb2Ygc2VydmljZSAqL1xcbiBcXHRpZiAobmN0cmwtXFx1MDAzZW9wdHMtXFx1MDAzZXRvcyBcXHUwMDNlPSAwKVxcbiBcXHRcXHRpcF9zb2NrX3NldF90b3MocXVldWUtXFx1MDAzZXNvY2stXFx1MDAzZXNrLCBuY3RybC1cXHUwMDNlb3B0cy1cXHUwMDNldG9zKTtcXG4rI2lmIElTX0VOQUJMRUQoQ09ORklHX0lQVjYpXFxuK1xcdGlmIChuY3RybC1cXHUwMDNlb3B0cy1cXHUwMDNldGNsYXNzIFxcdTAwM2U9IDAgXFx1MDAyNlxcdTAwMjZcXG4rXFx0ICAgIHF1ZXVlLVxcdTAwM2Vzb2NrLVxcdTAwM2Vzay1cXHUwMDNlc2tfZmFtaWx5ID09IEFGX0lORVQ2KVxcbitcXHRcXHRpcDZfc29ja19zZXRfdGNsYXNzKHF1ZXVlLVxcdTAwM2Vzb2NrLVxcdTAwM2VzaywgbmN0cmwtXFx1MDAzZW9wdHMtXFx1MDAzZXRjbGFzcyk7XFxuKyNlbmRpZlxcbiBcXG4gXFx0LyogU2V0IDEwIHNlY29uZHMgdGltZW91dCBmb3IgaWNyZXNwIHJlY3Ztc2cgKi9cXG4gXFx0cXVldWUtXFx1MDAzZXNvY2stXFx1MDAzZXNrLVxcdTAwM2Vza19yY3Z0aW1lbyA9IDEwICogSFo7XFxuQEAgLTMwNDEsNyArMzA0Niw4IEBAIHN0YXRpYyBzdHJ1Y3QgbnZtZl90cmFuc3BvcnRfb3BzIG52bWVfdGNwX3RyYW5zcG9ydCA9IHtcXG4gXFx0XFx0XFx0ICBOVk1GX09QVF9IT1NUX1RSQUREUiB8IE5WTUZfT1BUX0NUUkxfTE9TU19UTU8gfFxcbiBcXHRcXHRcXHQgIE5WTUZfT1BUX0hEUl9ESUdFU1QgfCBOVk1GX09QVF9EQVRBX0RJR0VTVCB8XFxuIFxcdFxcdFxcdCAgTlZNRl9PUFRfTlJfV1JJVEVfUVVFVUVTIHwgTlZNRl9PUFRfTlJfUE9MTF9RVUVVRVMgfFxcbi1cXHRcXHRcXHQgIE5WTUZfT1BUX1RPUyB8IE5WTUZfT1BUX0hPU1RfSUZBQ0UgfCBOVk1GX09QVF9UTFMgfFxcbitcXHRcXHRcXHQgIE5WTUZfT1BUX1RPUyB8IE5WTUZfT1BUX1RDTEFTUyB8XFxuK1xcdFxcdFxcdCAgTlZNRl9PUFRfSE9TVF9JRkFDRSB8IE5WTUZfT1BUX1RMUyB8XFxuIFxcdFxcdFxcdCAgTlZNRl9PUFRfS0VZUklORyB8IE5WTUZfT1BUX1RMU19LRVkgfCBOVk1GX09QVF9DT05DQVQsXFxuIFxcdC5jcmVhdGVfY3RybFxcdD0gbnZtZV90Y3BfY3JlYXRlX2N0cmwsXFxuIH07XFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbnZtZS90YXJnZXQvdGNwLmMgYi9kcml2ZXJzL252bWUvdGFyZ2V0L3RjcC5jXFxuaW5kZXggNzVhMjc2ZDczYmUzZS4uMWQ2NTUxOWViYzBmYiAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL252bWUvdGFyZ2V0L3RjcC5jXFxuKysrIGIvZHJpdmVycy9udm1lL3RhcmdldC90Y3AuY1xcbkBAIC0xNzI1LDYgKzE3MjUsMTQgQEAgc3RhdGljIGludCBudm1ldF90Y3Bfc2V0X3F1ZXVlX3NvY2soc3RydWN0IG52bWV0X3RjcF9xdWV1ZSAqcXVldWUpXFxuIFxcdC8qIFNldCBzb2NrZXQgdHlwZSBvZiBzZXJ2aWNlICovXFxuIFxcdGlmIChpbmV0LVxcdTAwM2VyY3ZfdG9zIFxcdTAwM2UgMClcXG4gXFx0XFx0aXBfc29ja19zZXRfdG9zKHNvY2stXFx1MDAzZXNrLCBpbmV0LVxcdTAwM2VyY3ZfdG9zKTtcXG4rI2lmIElTX0VOQUJMRUQoQ09ORklHX0lQVjYpXFxuK1xcdGlmIChzb2NrLVxcdTAwM2Vzay1cXHUwMDNlc2tfZmFtaWx5ID09IEFGX0lORVQ2KSB7XFxuK1xcdFxcdHU4IHJjdl90Y2xhc3MgPSBpcDZfdGNsYXNzKGluZXQ2X3NrKHNvY2stXFx1MDAzZXNrKS1cXHUwMDNlcmN2X2Zsb3dpbmZvKTtcXG4rXFxuK1xcdFxcdGlmIChyY3ZfdGNsYXNzIFxcdTAwM2UgMClcXG4rXFx0XFx0XFx0aXA2X3NvY2tfc2V0X3RjbGFzcyhzb2NrLVxcdTAwM2VzaywgcmN2X3RjbGFzcyk7XFxuK1xcdH1cXG4rI2VuZGlmXFxuIFxcbiBcXHRyZXQgPSAwO1xcbiBcXHR3cml0ZV9sb2NrX2JoKFxcdTAwMjZzb2NrLVxcdTAwM2Vzay1cXHUwMDNlc2tfY2FsbGJhY2tfbG9jayk7XFxuZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmV0L2lwdjYuaCBiL2luY2x1ZGUvbmV0L2lwdjYuaFxcbmluZGV4IDNkZTA3ZTczODUzOGYuLjgyZTU3YjM0YmE1N2YgMTAwNjQ0XFxuLS0tIGEvaW5jbHVkZS9uZXQvaXB2Ni5oXFxuKysrIGIvaW5jbHVkZS9uZXQvaXB2Ni5oXFxuQEAgLTEyNTIsNiArMTI1Miw5IEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBpcDZfc29ja19zZXRfcmVjdmVycihzdHJ1Y3Qgc29jayAqc2spXFxuIFxcdGluZXQ2X3NldF9iaXQoUkVDVkVSUjYsIHNrKTtcXG4gfVxcbiBcXG4rdm9pZCBfX2lwNl9zb2NrX3NldF90Y2xhc3Moc3RydWN0IHNvY2sgKnNrLCBpbnQgdmFsKTtcXG4rdm9pZCBpcDZfc29ja19zZXRfdGNsYXNzKHN0cnVjdCBzb2NrICpzaywgaW50IHZhbCk7XFxuK1xcbiAjZGVmaW5lIElQVjZfUFJFRkVSX1NSQ19NQVNLIChJUFY2X1BSRUZFUl9TUkNfVE1QIHwgSVBWNl9QUkVGRVJfU1JDX1BVQkxJQyB8IFxcXFxcXG4gXFx0XFx0XFx0ICAgICAgSVBWNl9QUkVGRVJfU1JDX0NPQSlcXG4gXFxuZGlmZiAtLWdpdCBhL25ldC9pcHY2L2lwdjZfc29ja2dsdWUuYyBiL25ldC9pcHY2L2lwdjZfc29ja2dsdWUuY1xcbmluZGV4IGI0Yzk3NzQzNGMyZTAuLmM1OWYyNWZiYjMzNmQgMTAwNjQ0XFxuLS0tIGEvbmV0L2lwdjYvaXB2Nl9zb2NrZ2x1ZS5jXFxuKysrIGIvbmV0L2lwdjYvaXB2Nl9zb2NrZ2x1ZS5jXFxuQEAgLTM3Myw2ICszNzMsMjggQEAgc3RhdGljIGludCBpcHY2X3NldF9vcHRfaGRyKHN0cnVjdCBzb2NrICpzaywgaW50IG9wdG5hbWUsIHNvY2twdHJfdCBvcHR2YWwsXFxuIFxcdHJldHVybiBlcnI7XFxuIH1cXG4gXFxuK3ZvaWQgX19pcDZfc29ja19zZXRfdGNsYXNzKHN0cnVjdCBzb2NrICpzaywgaW50IHZhbClcXG4re1xcbitcXHR1OCBvbGRfdGNsYXNzID0gaW5ldDZfc2soc2spLVxcdTAwM2V0Y2xhc3M7XFxuK1xcbitcXHRpZiAoc2stXFx1MDAzZXNrX3R5cGUgPT0gU09DS19TVFJFQU0pIHtcXG4rXFx0XFx0dmFsIFxcdTAwMjY9IH5JTkVUX0VDTl9NQVNLO1xcbitcXHRcXHR2YWwgfD0gb2xkX3RjbGFzcyBcXHUwMDI2IElORVRfRUNOX01BU0s7XFxuK1xcdH1cXG4rXFx0aWYgKG9sZF90Y2xhc3MgIT0gdmFsKSB7XFxuK1xcdFxcdFdSSVRFX09OQ0UoaW5ldDZfc2soc2spLVxcdTAwM2V0Y2xhc3MsIHZhbCk7XFxuK1xcdFxcdHNrX2RzdF9yZXNldChzayk7XFxuK1xcdH1cXG4rfVxcbitcXG4rdm9pZCBpcDZfc29ja19zZXRfdGNsYXNzKHN0cnVjdCBzb2NrICpzaywgaW50IHZhbClcXG4re1xcbitcXHRzb2Nrb3B0X2xvY2tfc29jayhzayk7XFxuK1xcdF9faXA2X3NvY2tfc2V0X3RjbGFzcyhzaywgdmFsKTtcXG4rXFx0c29ja29wdF9yZWxlYXNlX3NvY2soc2spO1xcbit9XFxuK0VYUE9SVF9TWU1CT0woaXA2X3NvY2tfc2V0X3RjbGFzcyk7XFxuK1xcbiBpbnQgZG9faXB2Nl9zZXRzb2Nrb3B0KHN0cnVjdCBzb2NrICpzaywgaW50IGxldmVsLCBpbnQgb3B0bmFtZSxcXG4gXFx0XFx0ICAgICAgIHNvY2twdHJfdCBvcHR2YWwsIHVuc2lnbmVkIGludCBvcHRsZW4pXFxuIHtcXG5AQCAtNzEzLDE0ICs3MzUsNyBAQCBpbnQgZG9faXB2Nl9zZXRzb2Nrb3B0KHN0cnVjdCBzb2NrICpzaywgaW50IGxldmVsLCBpbnQgb3B0bmFtZSxcXG4gXFx0XFx0LyogUkZDIDM1NDIsIDYuNTogZGVmYXVsdCB0cmFmZmljIGNsYXNzIG9mIDB4MCAqL1xcbiBcXHRcXHRpZiAodmFsID09IC0xKVxcbiBcXHRcXHRcXHR2YWwgPSAwO1xcbi1cXHRcXHRpZiAoc2stXFx1MDAzZXNrX3R5cGUgPT0gU09DS19TVFJFQU0pIHtcXG4tXFx0XFx0XFx0dmFsIFxcdTAwMjY9IH5JTkVUX0VDTl9NQVNLO1xcbi1cXHRcXHRcXHR2YWwgfD0gbnAtXFx1MDAzZXRjbGFzcyBcXHUwMDI2IElORVRfRUNOX01BU0s7XFxuLVxcdFxcdH1cXG4tXFx0XFx0aWYgKG5wLVxcdTAwM2V0Y2xhc3MgIT0gdmFsKSB7XFxuLVxcdFxcdFxcdG5wLVxcdTAwM2V0Y2xhc3MgPSB2YWw7XFxuLVxcdFxcdFxcdHNrX2RzdF9yZXNldChzayk7XFxuLVxcdFxcdH1cXG4rXFx0XFx0X19pcDZfc29ja19zZXRfdGNsYXNzKHNrLCB2YWwpO1xcbiBcXHRcXHRyZXR2ID0gMDtcXG4gXFx0XFx0YnJlYWs7XFxuIFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wOFQwNzoyNjoyMi4yNzY4NDU0MzJaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJiZXN0LWV4cGVuc2l2ZSIsIkR1cmF0aW9uIjoxMjcxNTMyMDQ2NDgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiTlZNRV9UQ1BcIixcbiAgICBcIk5WTUVfVEFSR0VUX1RDUFwiLFxuICAgIFwiTlZNRV9UQVJHRVRcIixcbiAgICBcIklQVjZcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJudm1mX2Rldl93cml0ZVwiLFxuICAgIFwibnZtZV90Y3BfY3JlYXRlX2N0cmxcIixcbiAgICBcIm52bWV0X3RjcF9hY2NlcHRfd29ya1wiLFxuICAgIFwiZG9faXB2Nl9zZXRzb2Nrb3B0XCIsXG4gICAgXCJpcDZfc29ja19zZXRfdGNsYXNzXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggYWRkcyBzdXBwb3J0IGZvciB0aGUgYHRjbGFzc2AgKElQdjYgdHJhZmZpYyBjbGFzcykgb3B0aW9uIHRvIHRoZSBOVk1lIG92ZXIgVENQIGhvc3QgYW5kIHRhcmdldCBkcml2ZXJzLiBJdCBtb2RpZmllcyB0aGUgTlZNZSBmYWJyaWNzIG9wdGlvbiBwYXJzaW5nLCBzZXRzIHRoZSB0cmFmZmljIGNsYXNzIG9uIHRoZSBUQ1Agc29ja2V0cyB1c2luZyBgaXA2X3NvY2tfc2V0X3RjbGFzc2AsIGFuZCByZWZhY3RvcnMgSVB2NiBzb2NrZXQgZ2x1ZSB0byBleHBvcnQgdGhpcyBmdW5jdGlvbi4gVGhlc2UgYXJlIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byByZWFjaGFibGUgY29yZSBuZXR3b3JraW5nIGFuZCBOVk1lIGRyaXZlcnMsIHdoaWNoIGNhbiBiZSB0ZXN0ZWQgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIHVzaW5nIGxvb3BiYWNrIG9yIHZpcnR1YWwgbmV0d29yayBpbnRlcmZhY2VzLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lXG5pZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5XG51c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLlxuXG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOlxuLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLlxuLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy5cbi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LlxuLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsXG4gIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS5cbi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsXG4gIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLlxuLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKVxuICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuXG5cbklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2hcbnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLlxuXG5XaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzpcbjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuXG4gICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy5cbiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9uc1xuICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuXG4yLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS5cbiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbiAgIEFsc28gY2hlY2sgXCJkZXBlbmRzIG9uXCIgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzXG4gICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3NcbiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCA4NDc3M2MwNGU2ZGExNGUzNDBhMGVkMGExNjU2ZmYyNzFmMTEzZDM4XG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFNhdCBBdWcgOCAwNzoyNjoyMSAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbnZtZS9ob3N0L2ZhYnJpY3MuYyBiL2RyaXZlcnMvbnZtZS9ob3N0L2ZhYnJpY3MuY1xuaW5kZXggYWMzZDRmNDAwNjAxZi4uNjQzYzAzZGM3YmNiMyAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbnZtZS9ob3N0L2ZhYnJpY3MuY1xuKysrIGIvZHJpdmVycy9udm1lL2hvc3QvZmFicmljcy5jXG5AQCAtNjk1LDYgKzY5NSw3IEBAIHN0YXRpYyBjb25zdCBtYXRjaF90YWJsZV90IG9wdF90b2tlbnMgPSB7XG4gXHR7IE5WTUZfT1BUX05SX1dSSVRFX1FVRVVFUyxcdFwibnJfd3JpdGVfcXVldWVzPSVkXCJcdH0sXG4gXHR7IE5WTUZfT1BUX05SX1BPTExfUVVFVUVTLFx0XCJucl9wb2xsX3F1ZXVlcz0lZFwiXHR9LFxuIFx0eyBOVk1GX09QVF9UT1MsXHRcdFx0XCJ0b3M9JWRcIlx0XHR9LFxuK1x0eyBOVk1GX09QVF9UQ0xBU1MsXHRcdFwidGNsYXNzPSVkXCJcdFx0fSxcbiAjaWZkZWYgQ09ORklHX05WTUVfVENQX1RMU1xuIFx0eyBOVk1GX09QVF9LRVlSSU5HLFx0XHRcImtleXJpbmc9JWRcIlx0XHR9LFxuIFx0eyBOVk1GX09QVF9UTFNfS0VZLFx0XHRcInRsc19rZXk9JWRcIlx0XHR9LFxuQEAgLTczNCw2ICs3MzUsNyBAQCBzdGF0aWMgaW50IG52bWZfcGFyc2Vfb3B0aW9ucyhzdHJ1Y3QgbnZtZl9jdHJsX29wdGlvbnMgKm9wdHMsXG4gXHRvcHRzLVx1MDAzZWhkcl9kaWdlc3QgPSBmYWxzZTtcbiBcdG9wdHMtXHUwMDNlZGF0YV9kaWdlc3QgPSBmYWxzZTtcbiBcdG9wdHMtXHUwMDNldG9zID0gLTE7IC8qIFx1MDAzYyAwID09IHVzZSB0cmFuc3BvcnQgZGVmYXVsdCAqL1xuK1x0b3B0cy1cdTAwM2V0Y2xhc3MgPSAtMTsgLyogXHUwMDNjIDAgPT0gdXNlIHRyYW5zcG9ydCBkZWZhdWx0ICovXG4gXHRvcHRzLVx1MDAzZXRscyA9IGZhbHNlO1xuIFx0b3B0cy1cdTAwM2V0bHNfa2V5ID0gTlVMTDtcbiBcdG9wdHMtXHUwMDNla2V5cmluZyA9IE5VTEw7XG5AQCAtOTkxLDYgKzk5MywyMiBAQCBzdGF0aWMgaW50IG52bWZfcGFyc2Vfb3B0aW9ucyhzdHJ1Y3QgbnZtZl9jdHJsX29wdGlvbnMgKm9wdHMsXG4gXHRcdFx0fVxuIFx0XHRcdG9wdHMtXHUwMDNldG9zID0gdG9rZW47XG4gXHRcdFx0YnJlYWs7XG4rXHRcdGNhc2UgTlZNRl9PUFRfVENMQVNTOlxuK1x0XHRcdGlmIChtYXRjaF9pbnQoYXJncywgXHUwMDI2dG9rZW4pKSB7XG4rXHRcdFx0XHRyZXQgPSAtRUlOVkFMO1xuK1x0XHRcdFx0Z290byBvdXQ7XG4rXHRcdFx0fVxuK1x0XHRcdGlmICh0b2tlbiBcdTAwM2MgMCkge1xuK1x0XHRcdFx0cHJfZXJyKFwiSW52YWxpZCB0cmFmZmljIGNsYXNzICVkXFxuXCIsIHRva2VuKTtcbitcdFx0XHRcdHJldCA9IC1FSU5WQUw7XG4rXHRcdFx0XHRnb3RvIG91dDtcbitcdFx0XHR9XG4rXHRcdFx0aWYgKHRva2VuIFx1MDAzZSAyNTUpIHtcbitcdFx0XHRcdHByX3dhcm4oXCJDbGFtcGluZyB0cmFmZmljIGNsYXNzIHRvIDI1NVxcblwiKTtcbitcdFx0XHRcdHRva2VuID0gMjU1O1xuK1x0XHRcdH1cbitcdFx0XHRvcHRzLVx1MDAzZXRjbGFzcyA9IHRva2VuO1xuK1x0XHRcdGJyZWFrO1xuIFx0XHRjYXNlIE5WTUZfT1BUX0tFWVJJTkc6XG4gXHRcdFx0aWYgKG1hdGNoX2ludChhcmdzLCBcdTAwMjZrZXlfaWQpIHx8IGtleV9pZCBcdTAwM2M9IDApIHtcbiBcdFx0XHRcdHJldCA9IC1FSU5WQUw7XG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9udm1lL2hvc3QvZmFicmljcy5oIGIvZHJpdmVycy9udm1lL2hvc3QvZmFicmljcy5oXG5pbmRleCBjYWY1NTAzZDA4MzMyLi4zZGZkNDBiZDg5NjA1IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9udm1lL2hvc3QvZmFicmljcy5oXG4rKysgYi9kcml2ZXJzL252bWUvaG9zdC9mYWJyaWNzLmhcbkBAIC02Nyw2ICs2Nyw3IEBAIGVudW0ge1xuIFx0TlZNRl9PUFRfS0VZUklOR1x0PSAxIFx1MDAzY1x1MDAzYyAyNixcbiBcdE5WTUZfT1BUX1RMU19LRVlcdD0gMSBcdTAwM2NcdTAwM2MgMjcsXG4gXHROVk1GX09QVF9DT05DQVRcdFx0PSAxIFx1MDAzY1x1MDAzYyAyOCxcbitcdE5WTUZfT1BUX1RDTEFTU1x0XHQ9IDEgXHUwMDNjXHUwMDNjIDI5LFxuIH07XG4gXG4gLyoqXG5AQCAtMTA5LDYgKzExMCw3IEBAIGVudW0ge1xuICAqIEBucl93cml0ZV9xdWV1ZXM6IG51bWJlciBvZiBxdWV1ZXMgZm9yIHdyaXRlIEkvT1xuICAqIEBucl9wb2xsX3F1ZXVlczogbnVtYmVyIG9mIHF1ZXVlcyBmb3IgcG9sbGluZyBJL09cbiAgKiBAdG9zOiB0eXBlIG9mIHNlcnZpY2VcbisgKiBAdGNsYXNzOiBJUHY2IHRyYWZmaWMgY2xhc3NcbiAgKiBAZmFzdF9pb19mYWlsX3RtbzogRmFzdCBJL08gZmFpbCB0aW1lb3V0IGluIHNlY29uZHNcbiAgKi9cbiBzdHJ1Y3QgbnZtZl9jdHJsX29wdGlvbnMge1xuQEAgLTEzOSw2ICsxNDEsNyBAQCBzdHJ1Y3QgbnZtZl9jdHJsX29wdGlvbnMge1xuIFx0dW5zaWduZWQgaW50XHRcdG5yX3dyaXRlX3F1ZXVlcztcbiBcdHVuc2lnbmVkIGludFx0XHRucl9wb2xsX3F1ZXVlcztcbiBcdGludFx0XHRcdHRvcztcbitcdGludFx0XHRcdHRjbGFzcztcbiBcdGludFx0XHRcdGZhc3RfaW9fZmFpbF90bW87XG4gfTtcbiBcbmRpZmYgLS1naXQgYS9kcml2ZXJzL252bWUvaG9zdC90Y3AuYyBiL2RyaXZlcnMvbnZtZS9ob3N0L3RjcC5jXG5pbmRleCBiYTVjN2IzZTJhN2M2Li5jYWJiZjY3ZDI0Zjg4IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9udm1lL2hvc3QvdGNwLmNcbisrKyBiL2RyaXZlcnMvbnZtZS9ob3N0L3RjcC5jXG5AQCAtMTgzNyw2ICsxODM3LDExIEBAIHN0YXRpYyBpbnQgbnZtZV90Y3BfYWxsb2NfcXVldWUoc3RydWN0IG52bWVfY3RybCAqbmN0cmwsIGludCBxaWQsXG4gXHQvKiBTZXQgc29ja2V0IHR5cGUgb2Ygc2VydmljZSAqL1xuIFx0aWYgKG5jdHJsLVx1MDAzZW9wdHMtXHUwMDNldG9zIFx1MDAzZT0gMClcbiBcdFx0aXBfc29ja19zZXRfdG9zKHF1ZXVlLVx1MDAzZXNvY2stXHUwMDNlc2ssIG5jdHJsLVx1MDAzZW9wdHMtXHUwMDNldG9zKTtcbisjaWYgSVNfRU5BQkxFRChDT05GSUdfSVBWNilcbitcdGlmIChuY3RybC1cdTAwM2VvcHRzLVx1MDAzZXRjbGFzcyBcdTAwM2U9IDAgXHUwMDI2XHUwMDI2XG4rXHQgICAgcXVldWUtXHUwMDNlc29jay1cdTAwM2Vzay1cdTAwM2Vza19mYW1pbHkgPT0gQUZfSU5FVDYpXG4rXHRcdGlwNl9zb2NrX3NldF90Y2xhc3MocXVldWUtXHUwMDNlc29jay1cdTAwM2VzaywgbmN0cmwtXHUwMDNlb3B0cy1cdTAwM2V0Y2xhc3MpO1xuKyNlbmRpZlxuIFxuIFx0LyogU2V0IDEwIHNlY29uZHMgdGltZW91dCBmb3IgaWNyZXNwIHJlY3Ztc2cgKi9cbiBcdHF1ZXVlLVx1MDAzZXNvY2stXHUwMDNlc2stXHUwMDNlc2tfcmN2dGltZW8gPSAxMCAqIEhaO1xuQEAgLTMwNDEsNyArMzA0Niw4IEBAIHN0YXRpYyBzdHJ1Y3QgbnZtZl90cmFuc3BvcnRfb3BzIG52bWVfdGNwX3RyYW5zcG9ydCA9IHtcbiBcdFx0XHQgIE5WTUZfT1BUX0hPU1RfVFJBRERSIHwgTlZNRl9PUFRfQ1RSTF9MT1NTX1RNTyB8XG4gXHRcdFx0ICBOVk1GX09QVF9IRFJfRElHRVNUIHwgTlZNRl9PUFRfREFUQV9ESUdFU1QgfFxuIFx0XHRcdCAgTlZNRl9PUFRfTlJfV1JJVEVfUVVFVUVTIHwgTlZNRl9PUFRfTlJfUE9MTF9RVUVVRVMgfFxuLVx0XHRcdCAgTlZNRl9PUFRfVE9TIHwgTlZNRl9PUFRfSE9TVF9JRkFDRSB8IE5WTUZfT1BUX1RMUyB8XG4rXHRcdFx0ICBOVk1GX09QVF9UT1MgfCBOVk1GX09QVF9UQ0xBU1MgfFxuK1x0XHRcdCAgTlZNRl9PUFRfSE9TVF9JRkFDRSB8IE5WTUZfT1BUX1RMUyB8XG4gXHRcdFx0ICBOVk1GX09QVF9LRVlSSU5HIHwgTlZNRl9PUFRfVExTX0tFWSB8IE5WTUZfT1BUX0NPTkNBVCxcbiBcdC5jcmVhdGVfY3RybFx0PSBudm1lX3RjcF9jcmVhdGVfY3RybCxcbiB9O1xuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbnZtZS90YXJnZXQvdGNwLmMgYi9kcml2ZXJzL252bWUvdGFyZ2V0L3RjcC5jXG5pbmRleCA3NWEyNzZkNzNiZTNlLi4xZDY1NTE5ZWJjMGZiIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9udm1lL3RhcmdldC90Y3AuY1xuKysrIGIvZHJpdmVycy9udm1lL3RhcmdldC90Y3AuY1xuQEAgLTE3MjUsNiArMTcyNSwxNCBAQCBzdGF0aWMgaW50IG52bWV0X3RjcF9zZXRfcXVldWVfc29jayhzdHJ1Y3QgbnZtZXRfdGNwX3F1ZXVlICpxdWV1ZSlcbiBcdC8qIFNldCBzb2NrZXQgdHlwZSBvZiBzZXJ2aWNlICovXG4gXHRpZiAoaW5ldC1cdTAwM2VyY3ZfdG9zIFx1MDAzZSAwKVxuIFx0XHRpcF9zb2NrX3NldF90b3Moc29jay1cdTAwM2VzaywgaW5ldC1cdTAwM2VyY3ZfdG9zKTtcbisjaWYgSVNfRU5BQkxFRChDT05GSUdfSVBWNilcbitcdGlmIChzb2NrLVx1MDAzZXNrLVx1MDAzZXNrX2ZhbWlseSA9PSBBRl9JTkVUNikge1xuK1x0XHR1OCByY3ZfdGNsYXNzID0gaXA2X3RjbGFzcyhpbmV0Nl9zayhzb2NrLVx1MDAzZXNrKS1cdTAwM2VyY3ZfZmxvd2luZm8pO1xuK1xuK1x0XHRpZiAocmN2X3RjbGFzcyBcdTAwM2UgMClcbitcdFx0XHRpcDZfc29ja19zZXRfdGNsYXNzKHNvY2stXHUwMDNlc2ssIHJjdl90Y2xhc3MpO1xuK1x0fVxuKyNlbmRpZlxuIFxuIFx0cmV0ID0gMDtcbiBcdHdyaXRlX2xvY2tfYmgoXHUwMDI2c29jay1cdTAwM2Vzay1cdTAwM2Vza19jYWxsYmFja19sb2NrKTtcbmRpZmYgLS1naXQgYS9pbmNsdWRlL25ldC9pcHY2LmggYi9pbmNsdWRlL25ldC9pcHY2LmhcbmluZGV4IDNkZTA3ZTczODUzOGYuLjgyZTU3YjM0YmE1N2YgMTAwNjQ0XG4tLS0gYS9pbmNsdWRlL25ldC9pcHY2LmhcbisrKyBiL2luY2x1ZGUvbmV0L2lwdjYuaFxuQEAgLTEyNTIsNiArMTI1Miw5IEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBpcDZfc29ja19zZXRfcmVjdmVycihzdHJ1Y3Qgc29jayAqc2spXG4gXHRpbmV0Nl9zZXRfYml0KFJFQ1ZFUlI2LCBzayk7XG4gfVxuIFxuK3ZvaWQgX19pcDZfc29ja19zZXRfdGNsYXNzKHN0cnVjdCBzb2NrICpzaywgaW50IHZhbCk7XG4rdm9pZCBpcDZfc29ja19zZXRfdGNsYXNzKHN0cnVjdCBzb2NrICpzaywgaW50IHZhbCk7XG4rXG4gI2RlZmluZSBJUFY2X1BSRUZFUl9TUkNfTUFTSyAoSVBWNl9QUkVGRVJfU1JDX1RNUCB8IElQVjZfUFJFRkVSX1NSQ19QVUJMSUMgfCBcXFxuIFx0XHRcdCAgICAgIElQVjZfUFJFRkVSX1NSQ19DT0EpXG4gXG5kaWZmIC0tZ2l0IGEvbmV0L2lwdjYvaXB2Nl9zb2NrZ2x1ZS5jIGIvbmV0L2lwdjYvaXB2Nl9zb2NrZ2x1ZS5jXG5pbmRleCBiNGM5Nzc0MzRjMmUwLi5jNTlmMjVmYmIzMzZkIDEwMDY0NFxuLS0tIGEvbmV0L2lwdjYvaXB2Nl9zb2NrZ2x1ZS5jXG4rKysgYi9uZXQvaXB2Ni9pcHY2X3NvY2tnbHVlLmNcbkBAIC0zNzMsNiArMzczLDI4IEBAIHN0YXRpYyBpbnQgaXB2Nl9zZXRfb3B0X2hkcihzdHJ1Y3Qgc29jayAqc2ssIGludCBvcHRuYW1lLCBzb2NrcHRyX3Qgb3B0dmFsLFxuIFx0cmV0dXJuIGVycjtcbiB9XG4gXG4rdm9pZCBfX2lwNl9zb2NrX3NldF90Y2xhc3Moc3RydWN0IHNvY2sgKnNrLCBpbnQgdmFsKVxuK3tcbitcdHU4IG9sZF90Y2xhc3MgPSBpbmV0Nl9zayhzayktXHUwMDNldGNsYXNzO1xuK1xuK1x0aWYgKHNrLVx1MDAzZXNrX3R5cGUgPT0gU09DS19TVFJFQU0pIHtcbitcdFx0dmFsIFx1MDAyNj0gfklORVRfRUNOX01BU0s7XG4rXHRcdHZhbCB8PSBvbGRfdGNsYXNzIFx1MDAyNiBJTkVUX0VDTl9NQVNLO1xuK1x0fVxuK1x0aWYgKG9sZF90Y2xhc3MgIT0gdmFsKSB7XG4rXHRcdFdSSVRFX09OQ0UoaW5ldDZfc2soc2spLVx1MDAzZXRjbGFzcywgdmFsKTtcbitcdFx0c2tfZHN0X3Jlc2V0KHNrKTtcbitcdH1cbit9XG4rXG4rdm9pZCBpcDZfc29ja19zZXRfdGNsYXNzKHN0cnVjdCBzb2NrICpzaywgaW50IHZhbClcbit7XG4rXHRzb2Nrb3B0X2xvY2tfc29jayhzayk7XG4rXHRfX2lwNl9zb2NrX3NldF90Y2xhc3Moc2ssIHZhbCk7XG4rXHRzb2Nrb3B0X3JlbGVhc2Vfc29jayhzayk7XG4rfVxuK0VYUE9SVF9TWU1CT0woaXA2X3NvY2tfc2V0X3RjbGFzcyk7XG4rXG4gaW50IGRvX2lwdjZfc2V0c29ja29wdChzdHJ1Y3Qgc29jayAqc2ssIGludCBsZXZlbCwgaW50IG9wdG5hbWUsXG4gXHRcdCAgICAgICBzb2NrcHRyX3Qgb3B0dmFsLCB1bnNpZ25lZCBpbnQgb3B0bGVuKVxuIHtcbkBAIC03MTMsMTQgKzczNSw3IEBAIGludCBkb19pcHY2X3NldHNvY2tvcHQoc3RydWN0IHNvY2sgKnNrLCBpbnQgbGV2ZWwsIGludCBvcHRuYW1lLFxuIFx0XHQvKiBSRkMgMzU0MiwgNi41OiBkZWZhdWx0IHRyYWZmaWMgY2xhc3Mgb2YgMHgwICovXG4gXHRcdGlmICh2YWwgPT0gLTEpXG4gXHRcdFx0dmFsID0gMDtcbi1cdFx0aWYgKHNrLVx1MDAzZXNrX3R5cGUgPT0gU09DS19TVFJFQU0pIHtcbi1cdFx0XHR2YWwgXHUwMDI2PSB+SU5FVF9FQ05fTUFTSztcbi1cdFx0XHR2YWwgfD0gbnAtXHUwMDNldGNsYXNzIFx1MDAyNiBJTkVUX0VDTl9NQVNLO1xuLVx0XHR9XG4tXHRcdGlmIChucC1cdTAwM2V0Y2xhc3MgIT0gdmFsKSB7XG4tXHRcdFx0bnAtXHUwMDNldGNsYXNzID0gdmFsO1xuLVx0XHRcdHNrX2RzdF9yZXNldChzayk7XG4tXHRcdH1cbitcdFx0X19pcDZfc29ja19zZXRfdGNsYXNzKHNrLCB2YWwpO1xuIFx0XHRyZXR2ID0gMDtcbiBcdFx0YnJlYWs7XG4gXG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wOFQwNzoyNjoyMi4yNzY4NDY3ODJaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo2NDI5Mzc2MjE4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk5WTWUgb3ZlciBUQ1AgSVB2NiBUcmFmZmljIENsYXNzIFN1cHBvcnQ6IEEgUmV2aWV3KipcblxuT2theSwgc28gSSd2ZSBiZWVuIGxvb2tpbmcgb3ZlciB0aGlzIHBhdGNoIHRoYXQgaW50cm9kdWNlcyBgdGNsYXNzYCAoSVB2NiB0cmFmZmljIGNsYXNzKSBzdXBwb3J0IGZvciBOVk1lIG92ZXIgVENQLiBGcm9tIGEgZnVuY3Rpb25hbCBwZXJzcGVjdGl2ZSwgaXQncyBwcmV0dHkgc3RyYWlnaHRmb3J3YXJkOiB3ZSdyZSBtb2RpZnlpbmcgdGhlIE5WTWUgb3ZlciBUQ1AgZHJpdmVyIGFuZCB0aGUgSVB2NiBzb2NrZXQgZ2x1ZSB0byBoYW5kbGUgdGhpcy4gSXQgbG9va3MgbGlrZSB0aGUgY29yZSBjaGFuZ2VzIGFyZSBpbiB0aGVzZSBmaWxlczogYGRyaXZlcnMvbnZtZS9ob3N0L2ZhYnJpY3MuY2AsIGBkcml2ZXJzL252bWUvaG9zdC90Y3AuY2AsIGBkcml2ZXJzL252bWUvdGFyZ2V0L3RjcC5jYCwgYGluY2x1ZGUvbmV0L2lwdjYuaGAsIGFuZCBgbmV0L2lwdjYvaXB2Nl9zb2NrZ2x1ZS5jYC5cblxuU3BlY2lmaWNhbGx5LCBgZHJpdmVycy9udm1lL2hvc3QvZmFicmljcy5jYCBub3cgcGFyc2VzIHRoZSBgdGNsYXNzPSVkYCBvcHRpb24gd2l0aGluIGBudm1mX3BhcnNlX29wdGlvbnNgLiBUaGUgaG9zdC1zaWRlIFRDUCBkcml2ZXIgKGBkcml2ZXJzL252bWUvaG9zdC90Y3AuY2ApIHNldHMgdGhlIGB0Y2xhc3NgIG9uIHRoZSBzb2NrZXQgdXNpbmcgYGlwNl9zb2NrX3NldF90Y2xhc3NgIHdoZW4gYHRjbGFzcyBcdTAwM2U9IDBgIGFuZCBpdOKAmXMgYW4gSVB2NiBzb2NrZXQuIFRoZSB0YXJnZXQtc2lkZSBUQ1AgZHJpdmVyIChgZHJpdmVycy9udm1lL3RhcmdldC90Y3AuY2ApIGRvZXMgdGhlIHNhbWUsIGJ1dCBzZXRzIHRoZSB0Y2xhc3Mgd2hlbiBgcmN2X3RjbGFzcyBcdTAwM2UgMGAuIEEgY3J1Y2lhbCBjaGFuZ2UgaXMgdGhlIGV4dHJhY3Rpb24gYW5kIGV4cG9ydCBvZiBgX19pcDZfc29ja19zZXRfdGNsYXNzYCBhbmQgYGlwNl9zb2NrX3NldF90Y2xhc3NgIGZyb20gYGRvX2lwdjZfc2V0c29ja29wdGAuXG5cblRoaXMgaXMgYSByZWFjaGFibGUgY2hhbmdlIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cywgd2hpY2ggaXMgaW1wb3J0YW50IHRvIHJlbWVtYmVyIGZvciBmdXp6aW5nLiBTaW5jZSBOVk1lIG92ZXIgVENQIGNhbiB3b3JrIG92ZXIgbG9vcGJhY2sgb3IgdmlydHVhbCBpbnRlcmZhY2VzLCB0aGlzIGlzIHNvbWV0aGluZyB3ZSBzaG91bGQgZGVmaW5pdGVseSBiZSB0ZXN0aW5nLlxuXG5Ob3csIG15IGluaXRpYWwgdGhvdWdodCBpcywgd2hlcmUgYXJlIHRoZSBmdXp6aW5nIHRhcmdldHM/IGBudm1mX3BhcnNlX29wdGlvbnNgIGlzIGNlcnRhaW5seSByZWxldmFudCwgYnV0IGl0J3MgYSBnZW5lcmFsIHBhcnNpbmcgZnVuY3Rpb24uIFRoaW5raW5nIG1vcmUgc3BlY2lmaWNhbGx5LCBJIHRoaW5rIGBudm1lX3RjcF9hbGxvY19xdWV1ZWAsIGFuZCBgbnZtZXRfdGNwX3NldF9xdWV1ZV9zb2NrYCBhcmUgZXhjZWxsZW50IHRhcmdldHMgYXMgd2VsbC4gUGx1cywgYF9faXA2X3NvY2tfc2V0X3RjbGFzc2AgYW5kIGBpcDZfc29ja19zZXRfdGNsYXNzYCBhcmUga2V5IGZvciBoYW5kbGluZyB0aGUgYWN0dWFsIHNvY2tldCBvcHRpb25zLlxuXG5CZWZvcmUgSSBkaXZlIHRvbyBkZWVwIGludG8gZnV6emluZywgSSB3YW50IHRvIGNvbmZpcm0gdGhlIG5lY2Vzc2FyeSBjb25maWd1cmF0aW9ucy4gSSdsbCBuZWVkIHRvIGRvdWJsZS1jaGVjayB0aGF0IGBDT05GSUdfTlZNRV9UQ1BgLCBgQ09ORklHX05WTUVfVEFSR0VUX1RDUGAsIGFuZCBgQ09ORklHX0lQVjZgIGFyZSBhbGwgZW5hYmxlZCwgdG8gZW5zdXJlIHRoZSBmZWF0dXJlcyBhcmUgYWN0dWFsbHkgY29tcGlsZWQgaW4gYW5kLCB0aGVyZWZvcmUsIGFjY2Vzc2libGUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQ1MjYsIk91dHB1dFRva2VucyI6MTksIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0OTEsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wOFQwNzoyNjoyOC43MDYyMjU2N1oiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxODMyNjM5MTcxLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBOVk1FX1RDUFwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL252bWUvaG9zdC9LY29uZmlnPTY3PWNvbmZpZyBOVk1FX0ZDXFxuLS1cXG5kcml2ZXJzL252bWUvaG9zdC9LY29uZmlnLTgyLVxcbmRyaXZlcnMvbnZtZS9ob3N0L0tjb25maWc6ODM6Y29uZmlnIE5WTUVfVENQXFxuZHJpdmVycy9udm1lL2hvc3QvS2NvbmZpZy04NC1cXHR0cmlzdGF0ZSBcXFwiTlZNIEV4cHJlc3Mgb3ZlciBGYWJyaWNzIFRDUCBob3N0IGRyaXZlclxcXCJcXG4tLVxcbmRyaXZlcnMvbnZtZS9ob3N0L0tjb25maWctOTktXFxuZHJpdmVycy9udm1lL2hvc3QvS2NvbmZpZzoxMDA6Y29uZmlnIE5WTUVfVENQX1RMU1xcbmRyaXZlcnMvbnZtZS9ob3N0L0tjb25maWctMTAxLVxcdGJvb2wgXFxcIk5WTWUgb3ZlciBGYWJyaWNzIFRDUCBUTFMgZW5jcnlwdGlvbiBzdXBwb3J0XFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wOFQwNzoyNjozMC41Mzg4NzA0OTFaIiwiU2VxIjo1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0OTk5MjU0NDM1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZSwgYW5kIGRlbGl2ZXJlZCBhcyBhIGZpcnN0LXBlcnNvbiBzdW1tYXJ5OlxuXG4qKk5WTWUvVENQIEludmVzdGlnYXRpb24gVGltZSoqXG5cblJpZ2h0LCBsZXQncyBkaXZlIGludG8gdGhpcy4gVGhlIG1lbnRhbCBjaGVja2xpc3QgaXMgcnVubmluZywgYW5kIEknbSB6ZXJvaW5nIGluIG9uIGBOVk1FX1RBUkdFVF9UQ1BgLiBUaGlzIG1lYW5zIHdlJ3JlIGRlYWxpbmcgd2l0aCBOVk1lIG92ZXIgVENQLCBzbyB0aGUgdXN1YWwgc3VzcGVjdHMg4oCTIG5ldHdvcmsgY29uZmlndXJhdGlvbiwgTVRVLCBwb3RlbnRpYWwgVENQIG92ZXJoZWFkIOKAkyBhcmUgdG9wIG9mIG1pbmQuIEknbSBpbW1lZGlhdGVseSB0aGlua2luZyBhYm91dCB0aGUgc3BlY2lmaWMgdGFyZ2V0IGltcGxlbWVudGF0aW9uIHdlJ3JlIGRlYWxpbmcgd2l0aCwgdG9vLiBJcyBpdCBzb21ldGhpbmcgcm9idXN0IGxpa2UgU1BESywgb3IgYSBtb3JlIGJhc2ljIG9wZW4tc291cmNlIGltcGxlbWVudGF0aW9uPyBLbm93aW5nIHRoYXQgd2lsbCBpbmZsdWVuY2Ugd2hlcmUgSSBzdGFydCBsb29raW5nIGZvciBjb25maWd1cmF0aW9uIHBpdGZhbGxzLlxuXG5NeSBpbml0aWFsIGxpbmUgb2YgaW5xdWlyeSB3aWxsIGJlIGFyb3VuZCBjb25uZWN0aW9uIGVzdGFibGlzaG1lbnQuIEFyZSB3ZSBzZWVpbmcgY29uc2lzdGVudCBjb25uZWN0aW9uIGF0dGVtcHRzLCBvciBhcmUgdGhlIGNsaWVudHMgaGF2aW5nIHRyb3VibGUgZXZlbiByZWFjaGluZyB0aGUgdGFyZ2V0PyBJZiB3ZSBhcmUsIEkgbmVlZCB0byBjaGVjayB0aGUgYmFzaWNzOiBmaXJld2FsbCBydWxlcywgcm91dGluZywgYW5kIG9mIGNvdXJzZSwgdGhlIHRhcmdldOKAmXMgbGlzdGVuaW5nIGFkZHJlc3MgYW5kIHBvcnQuIEknbSBhbHNvIGdvaW5nIHRvIGNoZWNrLCBhcmUgd2Ugc2VlaW5nIGFueSBzb2NrZXQgZXJyb3JzIG9uIGVpdGhlciB0aGUgY2xpZW50IG9yIHRoZSB0YXJnZXQ/IFRob3NlIGNhbiBiZSB2ZXJ5IGluZm9ybWF0aXZlLiBJZiBjb25uZWN0aW9ucyBhcmUgZmFpbGluZywgd2hhdCBhcmUgdGhlIGVycm9yIGNvZGVzPyBEbyB3ZSBoYXZlIGxvZ3MsIG9yIGlzIHRoZXJlIGEgd2F5IHRvIGVuYWJsZSB0aGVtP1xuXG5JZiB3ZSdyZSBnZXR0aW5nIGNvbm5lY3Rpb25zLCB0aGUgbmV4dCBwaGFzZSB3aWxsIGJlIGZvY3VzZWQgb24gYWN0dWFsIGRhdGEgdHJhbnNmZXIuIEknbGwgbmVlZCB0byBjaGVjayB0aGUgbmVnb3RpYXRlZCBjb25uZWN0aW9uIHBhcmFtZXRlcnMsIHZlcmlmeSB0aGUgZmxvdyBjb250cm9sIHNldHRpbmdzLCBhbmQgZXhhbWluZSB0aGUgVENQIHdpbmRvdyBzaXplcy4gQXJlIHRoZXkgb3B0aW1pemVkIGZvciBOVk1lJ3MgaGlnaC1zcGVlZCwgbG93LWxhdGVuY3kgcmVxdWlyZW1lbnRzPyBBcmUgd2UgcG90ZW50aWFsbHkgYnVtcGluZyB1cCBhZ2FpbnN0IGFueSBjb25nZXN0aW9uIGlzc3Vlcywgb3IgaXMgdGhlcmUgYW55IHBhY2tldCBsb3NzPyBJZiB0aGVyZSdzIHBlcmZvcm1hbmNlIGRlZ3JhZGF0aW9uLCBJJ2xsIHByb2JhYmx5IHN0YXJ0IHVzaW5nIHRvb2xzIGxpa2UgYHRjcGR1bXBgIG9yIGBXaXJlc2hhcmtgIHRvIGNhcHR1cmUgdGhlIHRyYWZmaWMgYW5kIGFuYWx5emUgdGhlIE5WTWUgY29tbWFuZHMgYW5kIHJlc3BvbnNlcyBhdCBhIGxvdyBsZXZlbC4gQXJlIHdlIHNlZWluZyBhIGhpZ2ggcmF0ZSBvZiByZXRyYW5zbWlzc2lvbnM/IEFyZSB0aGVyZSBzaWduaWZpY2FudCBkZWxheXMgaW4gdGhlIEkvTyBwYXRoIHRoYXQgYXJlIG5vdCBhdHRyaWJ1dGFibGUgdG8gdGhlIHN0b3JhZ2UgbWVkaXVtP1xuXG5GaW5hbGx5LCB0aGUgdGFyZ2V0J3MgY29uZmlndXJhdGlvbiBpcyBrZXkuIFdoYXQncyB0aGUgcXVldWUgZGVwdGg/IElzIGl0IGFwcHJvcHJpYXRlbHkgc2V0IGZvciB0aGUgd29ya2xvYWRzPyBBcmUgdGhlcmUgYW55IHJlc291cmNlIGxpbWl0YXRpb25zIG9uIHRoZSB0YXJnZXQgdGhhdCBtaWdodCBiZSBpbXBhY3RpbmcgcGVyZm9ybWFuY2U/IEFsc28sIGFyZSB3ZSBsZXZlcmFnaW5nIGFueSBzcGVjaWZpYyBOVk1lL1RDUCBvcHRpbWl6YXRpb25zIG9yIG9mZmxvYWRzIGF2YWlsYWJsZSBvbiB0aGUgbmV0d29yayBhZGFwdGVycyBvciB0YXJnZXQgY29udHJvbGxlcnM/IFRob3NlIGFyZSB0aGUga2luZHMgb2YgdGhpbmdzIHRoYXQgY2FuIG1ha2Ugb3IgYnJlYWsgYW4gTlZNZS9UQ1AgZGVwbG95bWVudC4gQW5kLCBvZiBjb3Vyc2UsIHRoZSBmaXJtd2FyZSBsZXZlbHMgb24gZXZlcnl0aGluZyBuZWVkIHRvIGJlIHZlcmlmaWVkLiBHb3QgdG8gYmUgc3VyZSB0aGF0IHRoZSBuZXR3b3JrIGFkYXB0ZXIgZHJpdmVycyBhbmQgdGhlIHRhcmdldCBmaXJtd2FyZSBhcmUgdXAgdG8gZGF0ZSBhbmQgY29tcGF0aWJsZS5cblxuXG4iLCJJbnB1dFRva2VucyI6NTczNywiT3V0cHV0VG9rZW5zIjoyMSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjExLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA4VDA3OjI2OjM1LjUzODEyODExNVoiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyMDIzMjA1NzIxLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBOVk1FX1RBUkdFVF9UQ1BcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9udm1lL3RhcmdldC9LY29uZmlnPTc0PWNvbmZpZyBOVk1FX1RBUkdFVF9GQ0xPT1BcXG4tLVxcbmRyaXZlcnMvbnZtZS90YXJnZXQvS2NvbmZpZy04Ni1cXG5kcml2ZXJzL252bWUvdGFyZ2V0L0tjb25maWc6ODc6Y29uZmlnIE5WTUVfVEFSR0VUX1RDUFxcbmRyaXZlcnMvbnZtZS90YXJnZXQvS2NvbmZpZy04OC1cXHR0cmlzdGF0ZSBcXFwiTlZNZSBvdmVyIEZhYnJpY3MgVENQIHRhcmdldCBzdXBwb3J0XFxcIlxcbi0tXFxuZHJpdmVycy9udm1lL3RhcmdldC9LY29uZmlnLTk2LVxcbmRyaXZlcnMvbnZtZS90YXJnZXQvS2NvbmZpZzo5Nzpjb25maWcgTlZNRV9UQVJHRVRfVENQX1RMU1xcbmRyaXZlcnMvbnZtZS90YXJnZXQvS2NvbmZpZy05OC1cXHRib29sIFxcXCJOVk1lIG92ZXIgRmFicmljcyBUQ1AgdGFyZ2V0IFRMUyBlbmNyeXB0aW9uIHN1cHBvcnRcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA4VDA3OjI2OjM3LjU2MTM0MTE2N1oiLCJTZXEiOjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjI4OTgyNTIxNDEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGxldCdzIHNlZS4gSGVyZSdzIG15IHRob3VnaHQgcHJvY2VzczpcblxuKipOVk1lLW9GIERlcGVuZGVuY2llcyAtIEEgUXVpY2sgQ2hlY2sqKlxuXG5SaWdodCwgbGV0J3MganVzdCBtYWtlIHN1cmUgdGhlcmUgYXJlbid0IGFueSBzbmVha3ksIHVuZXhwZWN0ZWQgZGVwZW5kZW5jaWVzIGx1cmtpbmcgYXJvdW5kIHdpdGggTlZNZS9UQ1AuIEkgbmVlZCB0byBxdWlja2x5IGRldGVybWluZSBpZiBpdCByZWxpZXMgb24gYW55dGhpbmcgb3V0c2lkZSBvZiB3aGF0IEknZCBleHBlY3QgZm9yIGEgc3RhbmRhcmQgTlZNZSBvdmVyIEZhYnJpY3MgaW1wbGVtZW50YXRpb24sIHBlcmhhcHMgc29tZSBjb3JlIGZ1bmN0aW9uYWxpdHksIG5ldHdvcmtpbmcgbGlicmFyaWVzLCBvciBzcGVjaWZpYyBrZXJuZWwgbW9kdWxlcy4gSXQncyBhbHdheXMgZ29vZCBwcmFjdGljZSB0byB2ZXJpZnkgYXNzdW1wdGlvbnMsIGV2ZW4gb24gc29tZXRoaW5nIHNlZW1pbmdseSBzdHJhaWdodGZvcndhcmQgbGlrZSB0aGlzLCBzbyBJJ2xsIHNlZSBpZiBJIGNhbiBmaW5kIGEgbGlzdCBvZiBpdHMgZGVwZW5kZW5jaWVzIG9yIGlmIEkgbmVlZCB0byBkaWcgaW50byB0aGUgY29kZSBhIGxpdHRsZS4gTm8gcG9pbnQgZ29pbmcgZnVydGhlciB3aXRob3V0IG1ha2luZyBzdXJlIEkgaGF2ZSBhIHNvbGlkIGZvdW5kYXRpb25hbCB1bmRlcnN0YW5kaW5nIG9mIGhvdyBpdCBpbnRlZ3JhdGVzIHdpdGhpbiB0aGUgd2lkZXIgc3RvcmFnZSBlY29zeXN0ZW0uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjY0NTksIk91dHB1dFRva2VucyI6MzYsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wOFQwNzoyNjo0MC40NTk1OTYxNjhaIiwiU2VxIjo4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo2NDAyMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL252bWUvaG9zdC9LY29uZmlnXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDgwLFxuICBcIkxpbmVDb3VudFwiOiAyMFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgIDgwOlxcdFxcbiAgODE6XFx0XFx0ICBJZiB1bnN1cmUsIHNheSBOLlxcbiAgODI6XFx0XFxuICA4MzpcXHRjb25maWcgTlZNRV9UQ1BcXG4gIDg0OlxcdFxcdHRyaXN0YXRlIFxcXCJOVk0gRXhwcmVzcyBvdmVyIEZhYnJpY3MgVENQIGhvc3QgZHJpdmVyXFxcIlxcbiAgODU6XFx0XFx0ZGVwZW5kcyBvbiBJTkVUXFxuICA4NjpcXHRcXHRkZXBlbmRzIG9uIEJMT0NLXFxuICA4NzpcXHRcXHRzZWxlY3QgQ1JDMzJcXG4gIDg4OlxcdFxcdHNlbGVjdCBORVRfQ1JDMzJDXFxuICA4OTpcXHRcXHRzZWxlY3QgTlZNRV9GQUJSSUNTXFxuICA5MDpcXHRcXHRoZWxwXFxuICA5MTpcXHRcXHQgIFRoaXMgcHJvdmlkZXMgc3VwcG9ydCBmb3IgdGhlIE5WTWUgb3ZlciBGYWJyaWNzIHByb3RvY29sIHVzaW5nXFxuICA5MjpcXHRcXHQgIHRoZSBUQ1AgdHJhbnNwb3J0LiAgVGhpcyBhbGxvd3MgeW91IHRvIHVzZSByZW1vdGUgYmxvY2sgZGV2aWNlc1xcbiAgOTM6XFx0XFx0ICBleHBvcnRlZCB1c2luZyB0aGUgTlZNZSBwcm90b2NvbCBzZXQuXFxuICA5NDpcXHRcXG4gIDk1OlxcdFxcdCAgVG8gY29uZmlndXJlIGEgTlZNZSBvdmVyIEZhYnJpY3MgY29udHJvbGxlciB1c2UgdGhlIG52bWUtY2xpIHRvb2xcXG4gIDk2OlxcdFxcdCAgZnJvbSBodHRwczovL2dpdGh1Yi5jb20vbGludXgtbnZtZS9udm1lLWNsaS5cXG4gIDk3OlxcdFxcbiAgOTg6XFx0XFx0ICBJZiB1bnN1cmUsIHNheSBOLlxcbiAgOTk6XFx0XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA4VDA3OjI2OjQwLjQ1OTY2MTc1OFoiLCJTZXEiOjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM3MzM1OTE5MTQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgYW4gZXhwZXJ0J3MgaW50ZXJuYWwgbW9ub2xvZ3VlOlxuXG4qKkNoZWNraW5nIE5WTUVfVEFSR0VUX1RDUCBEZXBlbmRlbmNpZXMqKlxuXG5SaWdodCwgbGV0J3MgZGl2ZSBpbi4gVGhlIE5WTWUgb3ZlciBUQ1Agc3BhY2UgaXMgZ2V0dGluZyBtb3JlIG1hdHVyZSwgc28gSSBuZWVkIHRvIHF1aWNrbHkgcmVmcmVzaCBteSB1bmRlcnN0YW5kaW5nIG9mIGl0cyBkZXBlbmRlbmNpZXMuIEZpcnN0LCBJIG5lZWQgdG8gbWFrZSBzdXJlIEknbSBjcnlzdGFsIGNsZWFyIG9uIGhvdyBhbGwgdGhlIHBpZWNlcyBmaXQgdG9nZXRoZXIuIFdoYXQgYXJlIHRoZSBrZXkgdW5kZXJseWluZyB0ZWNobm9sb2dpZXMgdGhhdCBOVk1lIG92ZXIgVENQIHJlbGllcyBvbj8gT2J2aW91c2x5LCBUQ1AgaXRzZWxmLCBidXQgd2hhdCdzIHRoZSBhcmNoaXRlY3R1cmFsIGludGVycGxheSB3aXRoIFJETUEgb3Igb3RoZXIgdHJhbnNwb3J0IHByb3RvY29scyB0aGF0IG1pZ2h0IGJlIHJlbGV2YW50PyBJcyB0aGVyZSBhIHBhcnRpY3VsYXIga2VybmVsIHZlcnNpb24gd2hlcmUgdGhlc2UgZW5oYW5jZW1lbnRzIGFyZSBiYWtlZCBpbj8gQXJlIHdlIHRhbGtpbmcgYWJvdXQgc3BlY2lmaWMgdmVyc2lvbnMgb2YgdGhlIE5WTWUgc3BlY2lmaWNhdGlvbj8gSSdtIHRoaW5raW5nIGFib3V0IGRyaXZlciBzdXBwb3J0OyB3aGF0J3MgdGhlIGxhbmRzY2FwZSB0aGVyZT8gQXJlIHRoZXJlIG9wZW4tc291cmNlIGltcGxlbWVudGF0aW9ucyB0byB0cmFjaywgYW5kIGRvIHRoZXkgaGF2ZSBhbnkgcmVwb3J0ZWQgaXNzdWVzIG9yIGRlcGVuZGVuY2llcyB0aGF0IG1pZ2h0IGluZmx1ZW5jZSBob3cgSSBhcHByb2FjaCB0aGlzPyBBbmQgdGhlbiB0aGVyZSdzIHRoZSBicm9hZGVyIGVjb3N5c3RlbSDigJMgYXJlIHRoZXJlIHNwZWNpZmljIG5ldHdvcmsgaW50ZXJmYWNlIGNhcmRzIChOSUNzKSB0aGF0IHdvcmsgYmV0dGVyLCBvciBhbnkgc3RvcmFnZSBhcnJheXMgdGhhdCBhcmUgcGFydGljdWxhcmx5IHdlbGwtc3VpdGVkIHRvIHRoZSBOVk1lIG92ZXIgVENQIHBhcmFkaWdtPyBCYXNpY2FsbHksIEkgbmVlZCBhIHF1aWNrIHNhbml0eSBjaGVjayB0byBhdm9pZCB3YXN0aW5nIHRpbWUgZ29pbmcgZG93biByYWJiaXQgaG9sZXMgYW5kIG1ha2Ugc3VyZSBJJ20gdXAgdG8gc3BlZWQgb24gYW55dGhpbmcgdGhhdCBtaWdodCBpbXBhY3QgdGhlIGRlc2lnbiBvciB0cm91Ymxlc2hvb3Rpbmcgb2YgYW4gTlZNZS1vRiBzb2x1dGlvbi4gVGhpcyBpcyBhYm91dCBlZmZpY2llbnRseSBzdGF5aW5nIGluZm9ybWVkIHNvIHRoYXQgSSBjYW4gdGFja2xlIHRoZSBjb3JlIGNoYWxsZW5nZXMgd2l0aG91dCBzdHVtYmxpbmcgb24gc29tZXRoaW5nIG9idmlvdXMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjY5MjcsIk91dHB1dFRva2VucyI6MzYsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMiwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA4VDA3OjI2OjQ0LjE5MzI1NjU5M1oiLCJTZXEiOjEwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo2MTc1MSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL252bWUvdGFyZ2V0L0tjb25maWdcIixcbiAgXCJGaXJzdExpbmVcIjogODAsXG4gIFwiTGluZUNvdW50XCI6IDIwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAgODA6XFx0XFx0ZGVwZW5kcyBvbiBOVk1FX1RBUkdFVF9GQ1xcbiAgODE6XFx0XFx0aGVscFxcbiAgODI6XFx0XFx0ICBUaGlzIGVuYWJsZXMgdGhlIE5WTWUgRkMgbG9vcGJhY2sgdGVzdCBzdXBwb3J0LCB3aGljaCBjYW4gYmUgdXNlZnVsXFxuICA4MzpcXHRcXHQgIHRvIHRlc3QgTlZNZS1GQyB0cmFuc3BvcnQgaW50ZXJmYWNlcy5cXG4gIDg0OlxcdFxcbiAgODU6XFx0XFx0ICBJZiB1bnN1cmUsIHNheSBOLlxcbiAgODY6XFx0XFxuICA4NzpcXHRjb25maWcgTlZNRV9UQVJHRVRfVENQXFxuICA4ODpcXHRcXHR0cmlzdGF0ZSBcXFwiTlZNZSBvdmVyIEZhYnJpY3MgVENQIHRhcmdldCBzdXBwb3J0XFxcIlxcbiAgODk6XFx0XFx0ZGVwZW5kcyBvbiBJTkVUXFxuICA5MDpcXHRcXHRkZXBlbmRzIG9uIE5WTUVfVEFSR0VUXFxuICA5MTpcXHRcXHRoZWxwXFxuICA5MjpcXHRcXHQgIFRoaXMgZW5hYmxlcyB0aGUgTlZNZSBUQ1AgdGFyZ2V0IHN1cHBvcnQsIHdoaWNoIGFsbG93cyBleHBvcnRpbmcgTlZNZVxcbiAgOTM6XFx0XFx0ICBkZXZpY2VzIG92ZXIgVENQLlxcbiAgOTQ6XFx0XFxuICA5NTpcXHRcXHQgIElmIHVuc3VyZSwgc2F5IE4uXFxuICA5NjpcXHRcXG4gIDk3OlxcdGNvbmZpZyBOVk1FX1RBUkdFVF9UQ1BfVExTXFxuICA5ODpcXHRcXHRib29sIFxcXCJOVk1lIG92ZXIgRmFicmljcyBUQ1AgdGFyZ2V0IFRMUyBlbmNyeXB0aW9uIHN1cHBvcnRcXFwiXFxuICA5OTpcXHRcXHRkZXBlbmRzIG9uIE5WTUVfVEFSR0VUX1RDUFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wOFQwNzoyNjo0NC4xOTMzMjIxMDJaIiwiU2VxIjoxMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6Mzk3ODM3NjUwMCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBJbml0aWFsIEFzc2Vzc21lbnQgb2YgdGhlIE5WTWUvVENQIEltcGxlbWVudGF0aW9uKipcblxuT2theSwgc28gd2UncmUgZGl2aW5nIGludG8gTlZNZSBvdmVyIFRDUCwgYW5kIGltbWVkaWF0ZWx5IEkgc2VlIHRoZSBjb3JlIGNvbXBvbmVudHMgd2UncmUgZGVhbGluZyB3aXRoOiBgTlZNRV9UQ1BgLCBgTlZNRV9UQVJHRVRfVENQYCwgYE5WTUVfVEFSR0VUYCwgYW5kLCBvZiBjb3Vyc2UsIElQdjYuIFRoYXQncyB0aGUgYmFzZWxpbmUsIHRoZSBmb3VuZGF0aW9uLiBNYWtlcyBzZW5zZSwgZ2l2ZW4gdGhlIHVuZGVybHlpbmcgdGVjaG5vbG9naWVzLlxuXG5Ob3csIGxldCdzIGZvY3VzIG9uIHRoZSBjcml0aWNhbCBhcmVhcy4gTXkgaW50dWl0aW9uLCBhbmQgZXhwZXJpZW5jZSwgdGVsbHMgbWUgdG8gem9vbSBpbiBvbiB0aGVzZSBmdW5jdGlvbnM6IGBudm1mX3BhcnNlX29wdGlvbnNgLCBgbnZtZV90Y3BfYWxsb2NfcXVldWVgLCBgbnZtZXRfdGNwX3NldF9xdWV1ZV9zb2NrYCwgYW5kIHRoZSBJUHY2IHNvY2tldCBjb25maWd1cmF0aW9uIGZ1bmN0aW9uczogYF9faXA2X3NvY2tfc2V0X3RjbGFzc2AgYW5kIGBpcDZfc29ja19zZXRfdGNsYXNzYC4gVGhlc2Ugc2VlbSBsaWtlIHRoZSByZWFsIGxpbmNocGlucyBpbiB0aGUgY29ubmVjdGlvbiBhbmQgc2V0dXAgcHJvY2Vzcy5cblxuRmlyc3QgdXA6IGBudm1mX3BhcnNlX29wdGlvbnNgLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBob3cgdGhlIHVzZXItcHJvdmlkZWQgb3B0aW9ucyBhcmUgYmVpbmcgaGFuZGxlZC4gSXMgaXQgYSBzdGF0aWMgZnVuY3Rpb24sIGludGVybmFsIHRvIHRoZSBtb2R1bGUsIG9yIGlzIGl0IGV4cG9ydGVkLCBjYWxsYWJsZSBmcm9tIG90aGVyIHBhcnRzIG9mIHRoZSBrZXJuZWw/IFRoYXQncyBnb2luZyB0byBkaWN0YXRlIHRoZSBsZXZlbCBvZiBpbnRlZ3JhdGlvbiBhbmQgaG93IG11Y2ggY29udHJvbCB3ZSBoYXZlIG92ZXIgdGhlIHBhcmFtZXRlciBwYXJzaW5nIHByb2Nlc3MuIExldCdzIHN0YXJ0IHRoZXJlLlxuXG5cbiIsIklucHV0VG9rZW5zIjo3NTI4LCJPdXRwdXRUb2tlbnMiOjIwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTEzLCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDhUMDc6MjY6NDguMTcxNzAyNTIzWiIsIlNlcSI6MTIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNjY5MjU3MDM4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm52bWZfcGFyc2Vfb3B0aW9uc1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL252bWUvaG9zdC9mYWJyaWNzLmM9Njc3PXN0YXRpYyBjb25zdCBtYXRjaF90YWJsZV90IG9wdF90b2tlbnMgPSB7XFxuLS1cXG5kcml2ZXJzL252bWUvaG9zdC9mYWJyaWNzLmMtNzE1LVxcbmRyaXZlcnMvbnZtZS9ob3N0L2ZhYnJpY3MuYzo3MTY6c3RhdGljIGludCBudm1mX3BhcnNlX29wdGlvbnMoc3RydWN0IG52bWZfY3RybF9vcHRpb25zICpvcHRzLFxcbmRyaXZlcnMvbnZtZS9ob3N0L2ZhYnJpY3MuYy03MTctXFx0XFx0Y29uc3QgY2hhciAqYnVmKVxcbi0tXFxuZHJpdmVycy9udm1lL2hvc3QvZmFicmljcy5jPTEzMjY9bnZtZl9jcmVhdGVfY3RybChzdHJ1Y3QgZGV2aWNlICpkZXYsIGNvbnN0IGNoYXIgKmJ1ZilcXG4tLVxcbmRyaXZlcnMvbnZtZS9ob3N0L2ZhYnJpY3MuYy0xMzM2LVxcbmRyaXZlcnMvbnZtZS9ob3N0L2ZhYnJpY3MuYzoxMzM3OlxcdHJldCA9IG52bWZfcGFyc2Vfb3B0aW9ucyhvcHRzLCBidWYpO1xcbmRyaXZlcnMvbnZtZS9ob3N0L2ZhYnJpY3MuYy0xMzM4LVxcdGlmIChyZXQpXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA4VDA3OjI2OjQ5Ljg0MDk2NzIzMVoiLCJTZXEiOjEzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMzYzNDM4Njk1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgc3VtbWFyeSwgYXMgdGhlIHRob3VnaHQgcHJvY2VzcyB1bmZvbGRzOlxuXG4qKkRpZ2dpbmcgaW50byB0aGUgTlZNZS1vRiBDb250cm9sbGVyIENyZWF0aW9uKipcblxuT2theSwgc28gYG52bWZfcGFyc2Vfb3B0aW9uc2AgaXMgYSBzdGF0aWMgZnVuY3Rpb24uIFRoYXQgaW1tZWRpYXRlbHkgbmFycm93cyBkb3duIHdoZXJlIGl0J3MgdXNlZC4gU2luY2UgaXQncyBzdGF0aWMsIGl0J3Mgc2NvcGVkIHdpdGhpbiB0aGUgc2FtZSBjb21waWxhdGlvbiB1bml0LCBhbmQgSSdsbCBuZWVkIHRvIGZpZ3VyZSBvdXQgd2hpY2ggZnVuY3Rpb24gaW4gdGhlIHNhbWUgZmlsZSBjYWxscyBpdC4gVGhlIHRleHQgcG9pbnRzIGRpcmVjdGx5IHRvIGBudm1mX2NyZWF0ZV9jdHJsYC4gQWxyaWdodCwgbGV0J3MgZ28gZGlyZWN0bHkgdG8gYG52bWZfY3JlYXRlX2N0cmxgIGFuZCBzZWUgd2hhdCBpdCdzIGRvaW5nLiBIb3BlZnVsbHksIGl0J2xsIHByb3ZpZGUgZW5vdWdoIGNvbnRleHQgdG8gdW5kZXJzdGFuZCB3aHkgYG52bWZfcGFyc2Vfb3B0aW9uc2AgaXMgcmVsZXZhbnQgaW4gdGhlIGZpcnN0IHBsYWNlLiBUaGlzIHByb2JhYmx5IG1lYW5zIGl0IGlzIGJlaW5nIHVzZWQgdG8gcGFyc2UgY29tbWFuZCBsaW5lIHBhcmFtZXRlcnMgb3Igc2ltaWxhciB0byBjb25maWd1cmUgdGhlIGNvbnRyb2xsZXIuIExldCdzIHNlZS4uLlxuXG5cbiIsIklucHV0VG9rZW5zIjo4MTU5LCJPdXRwdXRUb2tlbnMiOjIwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzcsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDhUMDc6MjY6NTMuMjA0NDA5NDE2WiIsIlNlcSI6MTQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNzE3NDgzNzQzLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm52bWZfY3JlYXRlX2N0cmxcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9udm1lL2hvc3QvZmFicmljcy5jPTEzMjU9c3RhdGljIHN0cnVjdCBudm1lX2N0cmwgKlxcbmRyaXZlcnMvbnZtZS9ob3N0L2ZhYnJpY3MuYzoxMzI2Om52bWZfY3JlYXRlX2N0cmwoc3RydWN0IGRldmljZSAqZGV2LCBjb25zdCBjaGFyICpidWYpXFxuZHJpdmVycy9udm1lL2hvc3QvZmFicmljcy5jLTEzMjcte1xcbi0tXFxuZHJpdmVycy9udm1lL2hvc3QvZmFicmljcy5jPTE0MDM9c3RhdGljIHNzaXplX3QgbnZtZl9kZXZfd3JpdGUoc3RydWN0IGZpbGUgKmZpbGUsIGNvbnN0IGNoYXIgX191c2VyICp1YnVmLFxcbi0tXFxuZHJpdmVycy9udm1lL2hvc3QvZmFicmljcy5jLTE0MjMtXFxuZHJpdmVycy9udm1lL2hvc3QvZmFicmljcy5jOjE0MjQ6XFx0Y3RybCA9IG52bWZfY3JlYXRlX2N0cmwobnZtZl9kZXZpY2UsIGJ1Zik7XFxuZHJpdmVycy9udm1lL2hvc3QvZmFicmljcy5jLTE0MjUtXFx0aWYgKElTX0VSUihjdHJsKSkge1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wOFQwNzoyNjo1NC45MjE4OTk2MjlaIiwiU2VxIjoxNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzY3NDIwNzU2MywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIGEgYnJlYWtkb3duIG9mIG15IHRob3VnaHQgcHJvY2VzczpcblxuKipEaXZpbmcgaW50byB0aGUgTlZNZS1vRiBDb250cm9sIFBhdGgqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCBgbnZtZl9jcmVhdGVfY3RybGAuIEludGVyZXN0aW5nLiBUaGUgY29kZSBpbmRpY2F0ZXMgaXQncyBhIHN0YXRpYyBmdW5jdGlvbiwgd2hpY2ggbWVhbnMgaXQncyBzY29wZWQgdG8gdGhlIGN1cnJlbnQgZmlsZS4gQW5kIHRoZSBjYWxsIGdyYXBoIHNob3dzIGl0J3MgaW52b2tlZCBieSBgbnZtZl9kZXZfd3JpdGVgLiBSaWdodCwgc28gYG52bWZfZGV2X3dyaXRlYCBpcyB0aGUgZW50cnkgcG9pbnQsIGFuZCBpdCdzIHJlc3BvbnNpYmxlIGZvciwgd2VsbCwgd3JpdGluZyB0byB0aGUgTlZNZS1vRiBkZXZpY2UsIGFuZCBsaWtlbHkgdGhlIGNyZWF0aW9uIG9mIHNvbWUgY29udHJvbCBzdHJ1Y3R1cmVzLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGF0J3MgaGFwcGVuaW5nIHdoZW4gYSB3cml0ZSBvcGVyYXRpb24gdHJpZ2dlcnMgY29udHJvbCBwYXRoIGFjdGlvbnMuIFRoZXJlZm9yZSwgbGV0J3MgZHJpbGwgZG93biBpbnRvIGBudm1mX2Rldl93cml0ZWAuIFVuZGVyc3RhbmRpbmcgdGhpcyBmdW5jdGlvbiBzaG91bGQgcHJvdmlkZSBjcnVjaWFsIGNvbnRleHQgdG8gaG93IGFuZCB3aGVuIGBudm1mX2NyZWF0ZV9jdHJsYCBpcyBhY3R1YWxseSBjYWxsZWQuIEkgbmVlZCB0byBzZWUgd2hhdCdzIGhhcHBlbmluZyBmcm9tIHRoZSBkZXZpY2Ugd3JpdGUgb3BlcmF0aW9uIGFsbCB0aGUgd2F5IHRvIHRoZSBjb250cm9sbGVyIGNyZWF0aW9uLiBJdCBzb3VuZHMgbGlrZSB0aGVyZSdzIHNvbWUgZGV2aWNlIHNldHVwIGhhcHBlbmluZyBvbiB3cml0ZSwgYW5kIEknZCBiZXQgY29udHJvbGxlciBjcmVhdGlvbiBhbmQgaW5pdGlhbGl6YXRpb24gYXJlIHBhcnQgb2YgdGhhdC5cblxuXG4iLCJJbnB1dFRva2VucyI6ODYwNywiT3V0cHV0VG9rZW5zIjoyMCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjM0LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA4VDA3OjI2OjU4LjU5NjExMDMxMloiLCJTZXEiOjE2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTcyMDMxNTkxMiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJudm1mX2Rldl93cml0ZVwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL252bWUvaG9zdC9mYWJyaWNzLmM9MTQwMT1zdGF0aWMgREVGSU5FX01VVEVYKG52bWZfZGV2X211dGV4KTtcXG5kcml2ZXJzL252bWUvaG9zdC9mYWJyaWNzLmMtMTQwMi1cXG5kcml2ZXJzL252bWUvaG9zdC9mYWJyaWNzLmM6MTQwMzpzdGF0aWMgc3NpemVfdCBudm1mX2Rldl93cml0ZShzdHJ1Y3QgZmlsZSAqZmlsZSwgY29uc3QgY2hhciBfX3VzZXIgKnVidWYsXFxuZHJpdmVycy9udm1lL2hvc3QvZmFicmljcy5jLTE0MDQtXFx0XFx0c2l6ZV90IGNvdW50LCBsb2ZmX3QgKnBvcylcXG4tLVxcbmRyaXZlcnMvbnZtZS9ob3N0L2ZhYnJpY3MuYz0xNDk3PXN0YXRpYyBjb25zdCBzdHJ1Y3QgZmlsZV9vcGVyYXRpb25zIG52bWZfZGV2X2ZvcHMgPSB7XFxuZHJpdmVycy9udm1lL2hvc3QvZmFicmljcy5jLTE0OTgtXFx0Lm93bmVyXFx0XFx0PSBUSElTX01PRFVMRSxcXG5kcml2ZXJzL252bWUvaG9zdC9mYWJyaWNzLmM6MTQ5OTpcXHQud3JpdGVcXHRcXHQ9IG52bWZfZGV2X3dyaXRlLFxcbmRyaXZlcnMvbnZtZS9ob3N0L2ZhYnJpY3MuYy0xNTAwLVxcdC5yZWFkXFx0XFx0PSBzZXFfcmVhZCxcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDhUMDc6Mjc6MDAuMzE2NDMyNDM0WiIsIlNlcSI6MTcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM0Mjg1NDUxNjcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOlxuXG4qKkRpdmluZyBpbnRvIHRoZSBOVk1lLW9GIFdyaXRlIFBhdGgqKlxuXG5Pa2F5LCBzbyB3ZSdyZSBzdGFydGluZyBhdCBgbnZtZl9kZXZfd3JpdGVgLiBUaGF0J3MgdGhlIGxvZ2ljYWwgZW50cnkgcG9pbnQgZm9yIHdyaXRlcyBpbiB0aGUgTlZNZS1vdmVyLUZhYnJpY3Mgc3RhY2ssIHdoaWNoIGlzIGV4YWN0bHkgd2hlcmUgSSdkIGV4cGVjdCB0byBiZS4gTm93LCB0byB0cmFjZSB0aGUgZmxvdyBhbmQgdW5kZXJzdGFuZCB0aGUgc3BlY2lmaWNzIG9mIGhvdyB0aGlzIG9wZXJhdGlvbiBnZXRzIGhhbmRsZWQsIGxldCdzIGxvb2sgYXQgYG52bWVfdGNwX2FsbG9jX3F1ZXVlYC4gTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMsIFwiT2theSwgYXJlIHdlIGxvb2tpbmcgYXQgcXVldWUgYWxsb2NhdGlvbiwgb3Igc29tZXRoaW5nIGRlZXBlcj9cIiBMZXQncyBzZWUgaWYgdGhpcyBpcyBzZXR0aW5nIHVwIHRoZSBwZXItcXVldWUgY29udGV4dCBmb3IgdGhlIEkvTywgb3IgaWYgaXQgaGFzIHNvbWUgb3RoZXIgbW9yZSBmdW5kYW1lbnRhbCBmdW5jdGlvbiBpbiB0aGUgZGF0YSBwYXRoLiBJJ2xsIG5lZWQgdG8gdW5kZXJzdGFuZCBob3cgdGhlIHF1ZXVlcyBhcmUgbWFuYWdlZCBhbmQgaG93IHRoaXMgYWxsb2MgZnVuY3Rpb24gdGllcyBpbnRvIHRoZSBvdmVyYWxsIHNjaGVtZS4gVGhpcyBmdW5jdGlvbiBzaG91bGQgYmUgYSBrZXkgcGllY2Ugb2YgdGhlIHB1enpsZS5cblxuXG4iLCJJbnB1dFRva2VucyI6OTE0NiwiT3V0cHV0VG9rZW5zIjoyMiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI5LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA4VDA3OjI3OjAzLjc0NDk4MDA0MVoiLCJTZXEiOjE4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTY4ODczODYyNiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJudm1lX3RjcF9hbGxvY19xdWV1ZVwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL252bWUvaG9zdC90Y3AuYz0xNzI0PXN0YXRpYyBpbnQgbnZtZV90Y3Bfc3RhcnRfdGxzKHN0cnVjdCBudm1lX2N0cmwgKm5jdHJsLFxcbi0tXFxuZHJpdmVycy9udm1lL2hvc3QvdGNwLmMtMTc3Ni1cXG5kcml2ZXJzL252bWUvaG9zdC90Y3AuYzoxNzc3OnN0YXRpYyBpbnQgbnZtZV90Y3BfYWxsb2NfcXVldWUoc3RydWN0IG52bWVfY3RybCAqbmN0cmwsIGludCBxaWQsXFxuZHJpdmVycy9udm1lL2hvc3QvdGNwLmMtMTc3OC1cXHRcXHRcXHRcXHRrZXlfc2VyaWFsX3QgcHNraWQpXFxuLS1cXG5kcml2ZXJzL252bWUvaG9zdC90Y3AuYz0yMDkzPXN0YXRpYyBpbnQgbnZtZV90Y3BfYWxsb2NfYWRtaW5fcXVldWUoc3RydWN0IG52bWVfY3RybCAqY3RybClcXG4tLVxcbmRyaXZlcnMvbnZtZS9ob3N0L3RjcC5jLTIxMTEtXFxuZHJpdmVycy9udm1lL2hvc3QvdGNwLmM6MjExMjpcXHRyZXQgPSBudm1lX3RjcF9hbGxvY19xdWV1ZShjdHJsLCAwLCBwc2tpZCk7XFxuZHJpdmVycy9udm1lL2hvc3QvdGNwLmMtMjExMy1cXHRpZiAocmV0KVxcbi0tXFxuZHJpdmVycy9udm1lL2hvc3QvdGNwLmM9MjEyNz1zdGF0aWMgaW50IF9fbnZtZV90Y3BfYWxsb2NfaW9fcXVldWVzKHN0cnVjdCBudm1lX2N0cmwgKmN0cmwpXFxuLS1cXG5kcml2ZXJzL252bWUvaG9zdC90Y3AuYy0yMTUyLVxcdGZvciAoaSA9IDE7IGkgXFx1MDAzYyBjdHJsLVxcdTAwM2VxdWV1ZV9jb3VudDsgaSsrKSB7XFxuZHJpdmVycy9udm1lL2hvc3QvdGNwLmM6MjE1MzpcXHRcXHRyZXQgPSBudm1lX3RjcF9hbGxvY19xdWV1ZShjdHJsLCBpLFxcbmRyaXZlcnMvbnZtZS9ob3N0L3RjcC5jLTIxNTQtXFx0XFx0XFx0XFx0Y3RybC1cXHUwMDNldGxzX3Bza2lkKTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDhUMDc6Mjc6MDUuNDMzNzI1NTI3WiIsIlNlcSI6MTksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM3Mzc4MTI0ODQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSBzdW1tYXJ5LCBhcyB0aG91Z2ggSSdtIHRoaW5raW5nIHRocm91Z2ggdGhpcyBwcm9jZXNzOlxuXG4qKkRpdmluZyBpbnRvIE5WTWUtVENQIFF1ZXVlIEFsbG9jYXRpb24qKlxuXG5Pa2F5LCBzbyBgbnZtZV90Y3BfYWxsb2NfcXVldWVgIGlzIGEgc3RhdGljIGZ1bmN0aW9uLiBUaGF0J3MgZ29vZCB0byBrbm93OyBpdCBtZWFucyBpdHMgc2NvcGUgaXMgbGltaXRlZCwgd2hpY2ggY2FuIGhlbHAgd2l0aCB1bmRlcnN0YW5kaW5nIGl0cyByb2xlIHdpdGhpbiB0aGUgbGFyZ2VyIHN5c3RlbS4gSSBzZWUgdGhhdCBib3RoIGBudm1lX3RjcF9hbGxvY19hZG1pbl9xdWV1ZWAgYW5kIGBfX252bWVfdGNwX2FsbG9jX2lvX3F1ZXVlc2AgYXJlIGNhbGxpbmcgaXQuIFRoYXQgaW1tZWRpYXRlbHkgdGVsbHMgbWUgdGhpcyBzdGF0aWMgZnVuY3Rpb24gaXMgdGhlIGNvcmUgb2YgdGhlIHF1ZXVlIGFsbG9jYXRpb24gcHJvY2VzcyBmb3IgTlZNZS9UQ1AuIEdpdmVuIHRoYXQsIGxldCdzIHN3aXRjaCBnZWFycyBhbmQgaW52ZXN0aWdhdGUgYG52bWVfdGNwX3NldHVwX2N0cmxgIHRvIHNlZSBob3cgaXQgdGllcyBpbnRvIHRoZSBhbGxvY2F0aW9uIHByb2Nlc3MuIFRoYXQgbGlrZWx5IHNldHMgdGhlIHN0YWdlIGFuZCB0aGVuIGNhbGxzIG9uIHRob3NlIGZ1bmN0aW9ucy5cblxuXG4iLCJJbnB1dFRva2VucyI6OTc4NiwiT3V0cHV0VG9rZW5zIjoyMiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjU5LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA4VDA3OjI3OjA5LjE3MTU0MjExMVoiLCJTZXEiOjIwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTY3MDUwMjE2OCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJudm1lX3RjcF9zZXR1cF9jdHJsXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbnZtZS9ob3N0L3RjcC5jPTIzODY9c3RhdGljIGJvb2wgbnZtZV90Y3Bfa2V5X3Jldm9rZV9uZWVkZWQoc3RydWN0IG52bWVfY3RybCAqY3RybClcXG4tLVxcbmRyaXZlcnMvbnZtZS9ob3N0L3RjcC5jLTIzOTAtXFxuZHJpdmVycy9udm1lL2hvc3QvdGNwLmM6MjM5MTpzdGF0aWMgaW50IG52bWVfdGNwX3NldHVwX2N0cmwoc3RydWN0IG52bWVfY3RybCAqY3RybCwgYm9vbCBuZXcpXFxuZHJpdmVycy9udm1lL2hvc3QvdGNwLmMtMjM5Mi17XFxuLS1cXG5kcml2ZXJzL252bWUvaG9zdC90Y3AuYz0yNDc0PXN0YXRpYyB2b2lkIG52bWVfdGNwX3JlY29ubmVjdF9jdHJsX3dvcmsoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxcbi0tXFxuZHJpdmVycy9udm1lL2hvc3QvdGNwLmMtMjQ4Mi1cXG5kcml2ZXJzL252bWUvaG9zdC90Y3AuYzoyNDgzOlxcdHJldCA9IG52bWVfdGNwX3NldHVwX2N0cmwoY3RybCwgZmFsc2UpO1xcbmRyaXZlcnMvbnZtZS9ob3N0L3RjcC5jLTI0ODQtXFx0aWYgKHJldClcXG4tLVxcbmRyaXZlcnMvbnZtZS9ob3N0L3RjcC5jPTI1NDQ9c3RhdGljIHZvaWQgbnZtZV9yZXNldF9jdHJsX3dvcmsoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxcbi0tXFxuZHJpdmVycy9udm1lL2hvc3QvdGNwLmMtMjU2My1cXG5kcml2ZXJzL252bWUvaG9zdC90Y3AuYzoyNTY0OlxcdHJldCA9IG52bWVfdGNwX3NldHVwX2N0cmwoY3RybCwgZmFsc2UpO1xcbmRyaXZlcnMvbnZtZS9ob3N0L3RjcC5jLTI1NjUtXFx0aWYgKHJldClcXG4tLVxcbmRyaXZlcnMvbnZtZS9ob3N0L3RjcC5jPTI5OTk9c3RhdGljIHN0cnVjdCBudm1lX2N0cmwgKm52bWVfdGNwX2NyZWF0ZV9jdHJsKHN0cnVjdCBkZXZpY2UgKmRldixcXG4tLVxcbmRyaXZlcnMvbnZtZS9ob3N0L3RjcC5jLTMwMTgtXFxuZHJpdmVycy9udm1lL2hvc3QvdGNwLmM6MzAxOTpcXHRyZXQgPSBudm1lX3RjcF9zZXR1cF9jdHJsKFxcdTAwMjZjdHJsLVxcdTAwM2VjdHJsLCB0cnVlKTtcXG5kcml2ZXJzL252bWUvaG9zdC90Y3AuYy0zMDIwLVxcdGlmIChyZXQpXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA4VDA3OjI3OjEwLjg0MjA0OTk3OVoiLCJTZXEiOjIxLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1MDgxOTc5NjU4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgYSBzdW1tYXJ5IG9mIG15IHRob3VnaHQgcHJvY2VzcywgYXMgcmVxdWVzdGVkOlxuXG4qKkRpdmluZyBpbnRvIHRoZSBOVk1lL1RDUCBDb250cm9sbGVyIENyZWF0aW9uKipcblxuT2theSwgc28gSSdtIGhvbWluZyBpbiBvbiB0aGUgY29udHJvbGxlciBjcmVhdGlvbiBwcm9jZXNzLiBNeSBpbW1lZGlhdGUgZm9jdXMgaXMgb24gYG52bWVfdGNwX2NyZWF0ZV9jdHJsYC4gVGhhdCdzIGNsZWFybHkgdGhlIGVudHJ5IHBvaW50LCB0aGUgY3JpdGljYWwgZnVuY3Rpb24gdGhhdCBraWNrcyBldmVyeXRoaW5nIG9mZi4gTm93LCB3aGVyZSBkb2VzIGl0IGdvIGZyb20gdGhlcmU/IE15IG5leHQgc3RlcCBpcyB0byBleGFtaW5lIGBudm1ldF90Y3Bfc2V0X3F1ZXVlX3NvY2tgLiBJdCdzIGxpa2VseSBpbnZvbHZlZCBpbiBzZXR0aW5nIHVwIHRoZSBzb2NrZXQgZm9yIHRoZSBxdWV1ZS4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaG93IHRoZSBzb2NrZXQgaXMgY29uZmlndXJlZCB3aXRoaW4gdGhlIFRDUCB0cmFuc3BvcnQgY29udGV4dC4gVGhpcyBpcyB0aGUgY3J1Y2lhbCBsaW5rIEkgYW0gbG9va2luZyBmb3IuIEkgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyB0aGUgY29udHJvbCBwYXRoIGFuZCBkYXRhIHBhdGggYXJlIG1hbmFnZWQuIEZyb20gdGhlcmUgSSBjYW4gZGV0ZXJtaW5lIGlmIGFueSBpbXByb3ZlbWVudCBpcyBuZWVkZWQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjEwNTA1LCJPdXRwdXRUb2tlbnMiOjI0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzYsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDhUMDc6Mjc6MTUuOTI0MDMyNjc3WiIsIlNlcSI6MjIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNzEzMDc1NDc0LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm52bWV0X3RjcF9zZXRfcXVldWVfc29ja1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL252bWUvdGFyZ2V0L3RjcC5jPTE2NzE9c3RhdGljIHZvaWQgbnZtZXRfdGNwX3N0YXRlX2NoYW5nZShzdHJ1Y3Qgc29jayAqc2spXFxuLS1cXG5kcml2ZXJzL252bWUvdGFyZ2V0L3RjcC5jLTE2OTgtXFxuZHJpdmVycy9udm1lL3RhcmdldC90Y3AuYzoxNjk5OnN0YXRpYyBpbnQgbnZtZXRfdGNwX3NldF9xdWV1ZV9zb2NrKHN0cnVjdCBudm1ldF90Y3BfcXVldWUgKnF1ZXVlKVxcbmRyaXZlcnMvbnZtZS90YXJnZXQvdGNwLmMtMTcwMC17XFxuLS1cXG5kcml2ZXJzL252bWUvdGFyZ2V0L3RjcC5jPTE4MzI9c3RhdGljIHZvaWQgbnZtZXRfdGNwX3Rsc19oYW5kc2hha2VfZG9uZSh2b2lkICpkYXRhLCBpbnQgc3RhdHVzLFxcbi0tXFxuZHJpdmVycy9udm1lL3RhcmdldC90Y3AuYy0xODU2LVxcdGlmICghc3RhdHVzKVxcbmRyaXZlcnMvbnZtZS90YXJnZXQvdGNwLmM6MTg1NzpcXHRcXHRzdGF0dXMgPSBudm1ldF90Y3Bfc2V0X3F1ZXVlX3NvY2socXVldWUpO1xcbmRyaXZlcnMvbnZtZS90YXJnZXQvdGNwLmMtMTg1OC1cXG4tLVxcbmRyaXZlcnMvbnZtZS90YXJnZXQvdGNwLmM9MTkxOT1zdGF0aWMgdm9pZCBudm1ldF90Y3BfYWxsb2NfcXVldWUoc3RydWN0IG52bWV0X3RjcF9wb3J0ICpwb3J0LFxcbi0tXFxuZHJpdmVycy9udm1lL3RhcmdldC90Y3AuYy0xOTk2LVxcbmRyaXZlcnMvbnZtZS90YXJnZXQvdGNwLmM6MTk5NzpcXHRyZXQgPSBudm1ldF90Y3Bfc2V0X3F1ZXVlX3NvY2socXVldWUpO1xcbmRyaXZlcnMvbnZtZS90YXJnZXQvdGNwLmMtMTk5OC1cXHRpZiAocmV0KVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wOFQwNzoyNzoxNy42MzcxMTQyOTFaIiwiU2VxIjoyMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzI1MzkxMjA5NiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IGludGVycHJldGF0aW9uIG9mIHRoYXQgY29kZSBzbmlwcGV0LCBkZWxpdmVyZWQgYXMgaWYgaXQncyBteSBvd24gdGhvdWdodCBwcm9jZXNzOlxuXG4qKkRlY29kaW5nIHRoZSBOVk1lLW9GIFRDUCBRdWV1ZSBBbGxvY2F0aW9uKipcblxuQWxyaWdodCwgbGV0J3MgYnJlYWsgdGhpcyBkb3duLiBGcm9tIHdoYXQgSSdtIHNlZWluZyBoZXJlLCBgbnZtZXRfdGNwX2FsbG9jX3F1ZXVlYCBpcyBjcnVjaWFsLiBJdCdzIGNsZWFybHkgdGhlIGZ1bmN0aW9uIHJlc3BvbnNpYmxlIGZvciBjcmVhdGluZyBhIG5ldyBxdWV1ZSB3aXRoaW4gdGhlIE5WTWUgb3ZlciBUQ1AgZnJhbWV3b3JrLiBUaGUga2V5IGNvbnRleHQgaXMgdGhhdCBgbnZtZXRfdGNwX2FjY2VwdF93b3JrYCBpcyB0aGUgY2FsbGVyLiBUaGlzIG1lYW5zIHRoZSBxdWV1ZSBhbGxvY2F0aW9uIHByb2Nlc3MgaXMgKnRyaWdnZXJlZCogZHVyaW5nIHRoZSBUQ1AgY29ubmVjdGlvbiBhY2NlcHRhbmNlIHBoYXNlLiBXaGVuZXZlciBhIG5ldyBUQ1AgY29ubmVjdGlvbiBpcyBlc3RhYmxpc2hlZCBhbmQgYWNjZXB0ZWQgYnkgdGhlIE5WTWUtb0YgdGFyZ2V0LCB0aGlzIGFsbG9jYXRpb24gcm91dGluZSBnZXRzIGNhbGxlZC4gSXQncyBzYWZlIHRvIGFzc3VtZSwgdGhlbiwgdGhhdCBgbnZtZXRfdGNwX2FsbG9jX3F1ZXVlYCBpcyB0YXNrZWQgd2l0aCBzZXR0aW5nIHVwIGFsbCB0aGUgbmVjZXNzYXJ5IGRhdGEgc3RydWN0dXJlcyBhbmQgcmVzb3VyY2VzIGZvciBoYW5kbGluZyBJL08gb3ZlciB0aGF0IG5ld2x5IGVzdGFibGlzaGVkIFRDUCBzZXNzaW9uLiBUaGlzIGlzIHN0YW5kYXJkIHN0dWZmLCBzbyBpdCBwcm9iYWJseSB0YWtlcyB0aGUgY29ubmVjdGlvbiBpbmZvcm1hdGlvbiBpdCBoYXMganVzdCByZWNlaXZlZCBhbmQgdXNlcyBpdCB0byBwcm92aXNpb24gdGhlIHJpZ2h0IGFtb3VudCBvZiBtZW1vcnkvZXRjLiBmb3IgdGhhdCBjb25uZWN0aW9uLiBOb3RoaW5nIHN1cnByaXNpbmcgaGVyZS4gUHJldHR5IHN0YW5kYXJkLCBhbmQgaXQgbWFrZXMgc2Vuc2UgdGhhdCB5b3Ugd291bGQgaGFuZGxlIHRoZSBhbGxvY2F0aW9uIG9mIGEgcXVldWUgYWZ0ZXIgdGhlIGFjY2VwdCBjYWxsIGhhcyBiZWVuIGNvbXBsZXRlZC5cblxuXG4iLCJJbnB1dFRva2VucyI6MTEwNzksIk91dHB1dFRva2VucyI6MjIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wOFQwNzoyNzoyMC44OTEwMjk4ODZaIiwiU2VxIjoyNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE5MjYxMDYyNTEsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibnZtZXRfdGNwX2FsbG9jX3F1ZXVlXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbnZtZS90YXJnZXQvdGNwLmM9MTkxNj1zdGF0aWMgdm9pZCBudm1ldF90Y3BfdGxzX2hhbmRzaGFrZV90aW1lb3V0KHN0cnVjdCB3b3JrX3N0cnVjdCAqdykge31cXG4tLVxcbmRyaXZlcnMvbnZtZS90YXJnZXQvdGNwLmMtMTkxOC1cXG5kcml2ZXJzL252bWUvdGFyZ2V0L3RjcC5jOjE5MTk6c3RhdGljIHZvaWQgbnZtZXRfdGNwX2FsbG9jX3F1ZXVlKHN0cnVjdCBudm1ldF90Y3BfcG9ydCAqcG9ydCxcXG5kcml2ZXJzL252bWUvdGFyZ2V0L3RjcC5jLTE5MjAtXFx0XFx0c3RydWN0IHNvY2tldCAqbmV3c29jaylcXG4tLVxcbmRyaXZlcnMvbnZtZS90YXJnZXQvdGNwLmM9MjAyOD1zdGF0aWMgdm9pZCBudm1ldF90Y3BfYWNjZXB0X3dvcmsoc3RydWN0IHdvcmtfc3RydWN0ICp3KVxcbi0tXFxuZHJpdmVycy9udm1lL3RhcmdldC90Y3AuYy0yMDQxLVxcdFxcdH1cXG5kcml2ZXJzL252bWUvdGFyZ2V0L3RjcC5jOjIwNDI6XFx0XFx0bnZtZXRfdGNwX2FsbG9jX3F1ZXVlKHBvcnQsIG5ld3NvY2spO1xcbmRyaXZlcnMvbnZtZS90YXJnZXQvdGNwLmMtMjA0My1cXHR9XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA4VDA3OjI3OjIyLjgxNzE0MjY4N1oiLCJTZXEiOjI1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMTU4NjA1MzAzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2UsIHByZXNlbnRlZCBpbiB0aGUgZmlyc3QgcGVyc29uOlxuXG4qKkZvY3VzaW5nIG9uIE5WTWUtb0YgVENQIENvbm5lY3Rpb24gRXN0YWJsaXNobWVudCoqXG5cblJpZ2h0LCBsZXQncyB6ZXJvIGluLiBgbnZtZXRfdGNwX2FjY2VwdF93b3JrYCBmZWVscyBsaWtlIGEgZ29vZCwgZm9jdXNlZCBzeW1ib2wgdG8gc3RhcnQgd2l0aC4gSXQncyBsaWtlbHkgd2hlcmUgdGhlIGNvbm5lY3Rpb24gYWNjZXB0YW5jZSBsb2dpYyBmb3IgTlZNZSBvdmVyIFRDUCBpcyBoYW5kbGVkLCB3aGljaCBpcyB3aGVyZSBJIHdhbnQgdG8gc3RhcnQgbXkgYW5hbHlzaXMuXG5cbk5vdywgY29uc2lkZXJpbmcgY29ubmVjdGlvbiBlc3RhYmxpc2htZW50IGFuZCBwb3RlbnRpYWwgUW9TIG9yIHRyYWZmaWMgc2hhcGluZyBjb25zaWRlcmF0aW9ucywgSSBuZWVkIHRvIGNoZWNrIGhvdyB0cmFmZmljIGNsYXNzIGlzIGJlaW5nIHNldC4gVGhhdCBtZWFucyBJIHNob3VsZCBhbHNvIGNoZWNrIHRoZSBmdW5jdGlvbnM6IGBfX2lwNl9zb2NrX3NldF90Y2xhc3NgIGFuZCBgaXA2X3NvY2tfc2V0X3RjbGFzc2AuIFRoZXNlIGFyZSByZWxldmFudCBmdW5jdGlvbnMgdGhhdCBsaWtlbHkgY29uZmlndXJlIHRoZSBJUHY2IHRyYWZmaWMgY2xhc3MgZmllbGQsIHdoaWNoIGlzIGNydWNpYWwgZm9yIG1hbmFnaW5nIHRoZSBiZWhhdmlvciBvZiBOVk1lLW9GIHRyYWZmaWMuIEkgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyB0aGVzZSB0cmFmZmljIGNsYXNzIHNldHRpbmdzIGFyZSBiZWluZyB1c2VkIHdpdGhpbiB0aGlzIGNvbnRleHQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjExNjE4LCJPdXRwdXRUb2tlbnMiOjI0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDYsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDhUMDc6Mjc6MjUuOTc1NzUwMTJaIiwiU2VxIjoyNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE3NDk4ODQ0ODAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiX19pcDZfc29ja19zZXRfdGNsYXNzXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImluY2x1ZGUvbmV0L2lwdjYuaD0xMjUwPXN0YXRpYyBpbmxpbmUgdm9pZCBpcDZfc29ja19zZXRfcmVjdmVycihzdHJ1Y3Qgc29jayAqc2spXFxuLS1cXG5pbmNsdWRlL25ldC9pcHY2LmgtMTI1NC1cXG5pbmNsdWRlL25ldC9pcHY2Lmg6MTI1NTp2b2lkIF9faXA2X3NvY2tfc2V0X3RjbGFzcyhzdHJ1Y3Qgc29jayAqc2ssIGludCB2YWwpO1xcbmluY2x1ZGUvbmV0L2lwdjYuaC0xMjU2LXZvaWQgaXA2X3NvY2tfc2V0X3RjbGFzcyhzdHJ1Y3Qgc29jayAqc2ssIGludCB2YWwpO1xcbi0tXFxubmV0L2lwdjYvaXB2Nl9zb2NrZ2x1ZS5jPTMwMj1zdGF0aWMgaW50IGlwdjZfc2V0X29wdF9oZHIoc3RydWN0IHNvY2sgKnNrLCBpbnQgb3B0bmFtZSwgc29ja3B0cl90IG9wdHZhbCxcXG4tLVxcbm5ldC9pcHY2L2lwdjZfc29ja2dsdWUuYy0zNzUtXFxubmV0L2lwdjYvaXB2Nl9zb2NrZ2x1ZS5jOjM3Njp2b2lkIF9faXA2X3NvY2tfc2V0X3RjbGFzcyhzdHJ1Y3Qgc29jayAqc2ssIGludCB2YWwpXFxubmV0L2lwdjYvaXB2Nl9zb2NrZ2x1ZS5jLTM3Ny17XFxuLS1cXG5uZXQvaXB2Ni9pcHY2X3NvY2tnbHVlLmM9MzkwPXZvaWQgaXA2X3NvY2tfc2V0X3RjbGFzcyhzdHJ1Y3Qgc29jayAqc2ssIGludCB2YWwpXFxuLS1cXG5uZXQvaXB2Ni9pcHY2X3NvY2tnbHVlLmMtMzkyLVxcdHNvY2tvcHRfbG9ja19zb2NrKHNrKTtcXG5uZXQvaXB2Ni9pcHY2X3NvY2tnbHVlLmM6MzkzOlxcdF9faXA2X3NvY2tfc2V0X3RjbGFzcyhzaywgdmFsKTtcXG5uZXQvaXB2Ni9pcHY2X3NvY2tnbHVlLmMtMzk0LVxcdHNvY2tvcHRfcmVsZWFzZV9zb2NrKHNrKTtcXG4tLVxcbm5ldC9pcHY2L2lwdjZfc29ja2dsdWUuYz0zOTg9aW50IGRvX2lwdjZfc2V0c29ja29wdChzdHJ1Y3Qgc29jayAqc2ssIGludCBsZXZlbCwgaW50IG9wdG5hbWUsXFxuLS1cXG5uZXQvaXB2Ni9pcHY2X3NvY2tnbHVlLmMtNzM3LVxcdFxcdFxcdHZhbCA9IDA7XFxubmV0L2lwdjYvaXB2Nl9zb2NrZ2x1ZS5jOjczODpcXHRcXHRfX2lwNl9zb2NrX3NldF90Y2xhc3Moc2ssIHZhbCk7XFxubmV0L2lwdjYvaXB2Nl9zb2NrZ2x1ZS5jLTczOS1cXHRcXHRyZXR2ID0gMDtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDhUMDc6Mjc6MjcuNzI1NjM5OTlaIiwiU2VxIjoyNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDAwMzg3MjY0OCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IGludGVycHJldGF0aW9uIG9mIHRoYXQ6XG5cbioqTXkgUGVyc3BlY3RpdmUgb24gYGlwNl9zb2NrX3NldF90Y2xhc3NgKipcblxuQWxyaWdodCwgc28gYGlwNl9zb2NrX3NldF90Y2xhc3NgIGlzIGV4cGxpY2l0bHkgKmV4cG9ydGVkKi4gVGhhdCdzIHRoZSBrZXkgdGFrZWF3YXkgaGVyZS4gSXQgbWVhbnMgdGhpcyBmdW5jdGlvbiBpcyBpbnRlbnRpb25hbGx5IG1hZGUgYXZhaWxhYmxlIGZvciB1c2Ugb3V0c2lkZSBvZiB0aGUgbW9kdWxlIG9yIGNvbXBvbmVudCBpbiB3aGljaCBpdCdzIGRlZmluZWQuIE15IGltbWVkaWF0ZSB0aG91Z2h0IGlzLCB3aGF0IGFyZSB0aGUgaW1wbGljYXRpb25zIG9mIHRoaXM/IEl0IHN1Z2dlc3RzIGEgZGVsaWJlcmF0ZSBkZXNpZ24gZGVjaXNpb24sIGltcGx5aW5nIGl0J3MgbWVhbnQgdG8gYmUgYSBwYXJ0IG9mIGEgd2VsbC1kZWZpbmVkIEFQSSBvciBpbnRlbmRlZCBmb3IgYnJvYWRlciBjb25zdW1wdGlvbiwgcG90ZW50aWFsbHkgYnkgb3RoZXIgbmV0d29ya2luZyBzdWJzeXN0ZW1zIG9yIGV2ZW4gdXNlci1zcGFjZSBhcHBsaWNhdGlvbnMgd2l0aCB0aGUgcmlnaHQgcHJpdmlsZWdlcy5cblxuS25vd2luZyBpdCdzIGV4cG9ydGVkLCBJJ2Qgd2FudCB0byB1bmRlcnN0YW5kIHRoZSAqd2h5KiBiZWhpbmQgdGhpcyBkZWNpc2lvbi4gV2hhdCBwcm9ibGVtcyBkb2VzIHRoaXMgZnVuY3Rpb24gc29sdmU/IFdoYXQgdXNlLWNhc2VzIGlzIGl0IGRlc2lnbmVkIHRvIHN1cHBvcnQ/IElzIGl0IGEgY3J1Y2lhbCBidWlsZGluZyBibG9jayBmb3IgUW9TIG1hbmFnZW1lbnQsIHRyYWZmaWMgc2hhcGluZywgb3IgbWF5YmUgc29tZXRoaW5nIG1vcmUgc3BlY2lhbGl6ZWQgbGlrZSBEaWZmZXJlbnRpYXRlZCBTZXJ2aWNlcyAoRGlmZlNlcnYpIGltcGxlbWVudGF0aW9ucyBpbiBhbiBJUHY2IGNvbnRleHQ/IEFuZCBvZiBjb3Vyc2UsIHRoZSBldmVyLXByZXNlbnQgc2VjdXJpdHkgY29uc2lkZXJhdGlvbnM6IHdoYXQgYXJlIHRoZSBhY2Nlc3MgY29udHJvbHMgYXJvdW5kIGl0cyB1c2U/IElzIGl0IHN1c2NlcHRpYmxlIHRvIG1pc3VzZSBvciBhYnVzZSwgYW5kIHdoYXQgZ3VhcmRyYWlscyBoYXZlIGJlZW4gcHV0IGluIHBsYWNlIHRvIHByZXZlbnQgdGhhdD8gSSdkIHdhbnQgdG8gZGl2ZSBkZWVwZXIgaW50byBpdHMgaW1wbGVtZW50YXRpb24gYW5kIGFueSBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gdG8gZnVsbHkgZ3Jhc3AgaXRzIGludGVuZGVkIHB1cnBvc2UgYW5kIHBvdGVudGlhbCBpbXBhY3Qgb24gc3lzdGVtIGJlaGF2aW9yLiBJdCdzIGV4cG9ydGVkLCBzbyBpdCdzIGZhaXIgZ2FtZSBmb3IgYW5hbHlzaXMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjEyMzk5LCJPdXRwdXRUb2tlbnMiOjIzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTQsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDhUMDc6Mjc6MzEuNzI5NTE1OTU4WiIsIlNlcSI6MjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNzg1NjQ4Njc2LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImlwNl9zb2NrX3NldF90Y2xhc3NcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9udm1lL2hvc3QvdGNwLmM9MTc3Nz1zdGF0aWMgaW50IG52bWVfdGNwX2FsbG9jX3F1ZXVlKHN0cnVjdCBudm1lX2N0cmwgKm5jdHJsLCBpbnQgcWlkLFxcbi0tXFxuZHJpdmVycy9udm1lL2hvc3QvdGNwLmMtMTg0Mi1cXHQgICAgcXVldWUtXFx1MDAzZXNvY2stXFx1MDAzZXNrLVxcdTAwM2Vza19mYW1pbHkgPT0gQUZfSU5FVDYpXFxuZHJpdmVycy9udm1lL2hvc3QvdGNwLmM6MTg0MzpcXHRcXHRpcDZfc29ja19zZXRfdGNsYXNzKHF1ZXVlLVxcdTAwM2Vzb2NrLVxcdTAwM2VzaywgbmN0cmwtXFx1MDAzZW9wdHMtXFx1MDAzZXRjbGFzcyk7XFxuZHJpdmVycy9udm1lL2hvc3QvdGNwLmMtMTg0NC0jZW5kaWZcXG4tLVxcbmRyaXZlcnMvbnZtZS90YXJnZXQvdGNwLmM9MTY5OT1zdGF0aWMgaW50IG52bWV0X3RjcF9zZXRfcXVldWVfc29jayhzdHJ1Y3QgbnZtZXRfdGNwX3F1ZXVlICpxdWV1ZSlcXG4tLVxcbmRyaXZlcnMvbnZtZS90YXJnZXQvdGNwLmMtMTczMi1cXHRcXHRpZiAocmN2X3RjbGFzcyBcXHUwMDNlIDApXFxuZHJpdmVycy9udm1lL3RhcmdldC90Y3AuYzoxNzMzOlxcdFxcdFxcdGlwNl9zb2NrX3NldF90Y2xhc3Moc29jay1cXHUwMDNlc2ssIHJjdl90Y2xhc3MpO1xcbmRyaXZlcnMvbnZtZS90YXJnZXQvdGNwLmMtMTczNC1cXHR9XFxuLS1cXG5pbmNsdWRlL25ldC9pcHY2Lmg9MTI1MD1zdGF0aWMgaW5saW5lIHZvaWQgaXA2X3NvY2tfc2V0X3JlY3ZlcnIoc3RydWN0IHNvY2sgKnNrKVxcbi0tXFxuaW5jbHVkZS9uZXQvaXB2Ni5oLTEyNTQtXFxuaW5jbHVkZS9uZXQvaXB2Ni5oOjEyNTU6dm9pZCBfX2lwNl9zb2NrX3NldF90Y2xhc3Moc3RydWN0IHNvY2sgKnNrLCBpbnQgdmFsKTtcXG5pbmNsdWRlL25ldC9pcHY2Lmg6MTI1Njp2b2lkIGlwNl9zb2NrX3NldF90Y2xhc3Moc3RydWN0IHNvY2sgKnNrLCBpbnQgdmFsKTtcXG5pbmNsdWRlL25ldC9pcHY2LmgtMTI1Ny1cXG4tLVxcbm5ldC9pcHY2L2lwdjZfc29ja2dsdWUuYz0zMDI9c3RhdGljIGludCBpcHY2X3NldF9vcHRfaGRyKHN0cnVjdCBzb2NrICpzaywgaW50IG9wdG5hbWUsIHNvY2twdHJfdCBvcHR2YWwsXFxuLS1cXG5uZXQvaXB2Ni9pcHY2X3NvY2tnbHVlLmMtMzc1LVxcbm5ldC9pcHY2L2lwdjZfc29ja2dsdWUuYzozNzY6dm9pZCBfX2lwNl9zb2NrX3NldF90Y2xhc3Moc3RydWN0IHNvY2sgKnNrLCBpbnQgdmFsKVxcbm5ldC9pcHY2L2lwdjZfc29ja2dsdWUuYy0zNzcte1xcbi0tXFxubmV0L2lwdjYvaXB2Nl9zb2NrZ2x1ZS5jLTM4OS1cXG5uZXQvaXB2Ni9pcHY2X3NvY2tnbHVlLmM6MzkwOnZvaWQgaXA2X3NvY2tfc2V0X3RjbGFzcyhzdHJ1Y3Qgc29jayAqc2ssIGludCB2YWwpXFxubmV0L2lwdjYvaXB2Nl9zb2NrZ2x1ZS5jLTM5MS17XFxubmV0L2lwdjYvaXB2Nl9zb2NrZ2x1ZS5jLTM5Mi1cXHRzb2Nrb3B0X2xvY2tfc29jayhzayk7XFxubmV0L2lwdjYvaXB2Nl9zb2NrZ2x1ZS5jOjM5MzpcXHRfX2lwNl9zb2NrX3NldF90Y2xhc3Moc2ssIHZhbCk7XFxubmV0L2lwdjYvaXB2Nl9zb2NrZ2x1ZS5jLTM5NC1cXHRzb2Nrb3B0X3JlbGVhc2Vfc29jayhzayk7XFxubmV0L2lwdjYvaXB2Nl9zb2NrZ2x1ZS5jLTM5NS19XFxubmV0L2lwdjYvaXB2Nl9zb2NrZ2x1ZS5jOjM5NjpFWFBPUlRfU1lNQk9MKGlwNl9zb2NrX3NldF90Y2xhc3MpO1xcbm5ldC9pcHY2L2lwdjZfc29ja2dsdWUuYy0zOTctXFxubmV0L2lwdjYvaXB2Nl9zb2NrZ2x1ZS5jPTM5OD1pbnQgZG9faXB2Nl9zZXRzb2Nrb3B0KHN0cnVjdCBzb2NrICpzaywgaW50IGxldmVsLCBpbnQgb3B0bmFtZSxcXG4tLVxcbm5ldC9pcHY2L2lwdjZfc29ja2dsdWUuYy03MzctXFx0XFx0XFx0dmFsID0gMDtcXG5uZXQvaXB2Ni9pcHY2X3NvY2tnbHVlLmM6NzM4OlxcdFxcdF9faXA2X3NvY2tfc2V0X3RjbGFzcyhzaywgdmFsKTtcXG5uZXQvaXB2Ni9pcHY2X3NvY2tnbHVlLmMtNzM5LVxcdFxcdHJldHYgPSAwO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wOFQwNzoyNzozMy41MTUxNzI2NDRaIiwiU2VxIjoyOSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6Mzg1ODYzMzYyNCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipJbml0aWFsIEFzc2Vzc21lbnQgb2YgS2V5IEVudHJ5IFBvaW50cyoqXG5cbk9rYXksIGxldCdzIGJyZWFrIHRoaXMgZG93bi4gSSBzZWUgd2UncmUgbG9va2luZyBhdCBzcGVjaWZpYyBmdW5jdGlvbnMsIHByZXN1bWFibHkgd2l0aGluIGEgbmV0d29ya2luZyBvciBzdG9yYWdlIGNvbnRleHQsIGdpdmVuIHRoZSBuYW1lcy4gRmlyc3QsIEkgaGF2ZSBhIGxpc3Qgb2YgYEZvY3VzU3ltYm9sc2A6IGBudm1mX2Rldl93cml0ZWAsIGBudm1lX3RjcF9jcmVhdGVfY3RybGAsIGBudm1ldF90Y3BfYWNjZXB0X3dvcmtgLCBgX19pcDZfc29ja19zZXRfdGNsYXNzYCwgYW5kIGBpcDZfc29ja19zZXRfdGNsYXNzYC4gTm93LCByaWdodCBvZmYgdGhlIGJhdCwgYG52bWZfZGV2X3dyaXRlYCBzZWVtcyBpbnRlcmVzdGluZzsgaXQgbGlrZWx5IGludm9sdmVzIE5WTWUgb3ZlciBGYWJyaWNzLCBzbyB0aGF0J3MgYSBnb29kIHBsYWNlIHRvIHN0YXJ0IGRpZ2dpbmcuIGBudm1lX3RjcF9jcmVhdGVfY3RybGAgaXMgYW5vdGhlciBzb2xpZCBjYW5kaWRhdGUgLSBjcmVhdGluZyBhIGNvbnRyb2wgY29ubmVjdGlvbiBpcyBvZnRlbiBjcml0aWNhbC4gQW5kLCBgbnZtZXRfdGNwX2FjY2VwdF93b3JrYCBhbHNvIG1ha2VzIHNlbnNlLCBpdCdzIGRlYWxpbmcgd2l0aCBhY2NlcHRpbmcgd29yayByZWxhdGluZyB0byB0aGUgdGFyZ2V0LiBUaGVuLCB0aGVyZSdzIGBfX2lwNl9zb2NrX3NldF90Y2xhc3NgIHdoaWNoIGlzIGxpbmtlZCB0byBgZG9faXB2Nl9zZXRzb2Nrb3B0YCwgd2hpY2ggSSBzdXBwb3NlIGlzIGEgZ29vZCBlbnRyeSBwb2ludC4gSW4gZmFjdCwgbGV0J3MgZXhwbG9yZSBgZG9faXB2Nl9zZXRzb2Nrb3B0YCBmdXJ0aGVyIGFuZCBzZWUgd2hhdCB3ZSBjYW4gZmluZC5cblxuXG4iLCJJbnB1dFRva2VucyI6MTM2MjEsIk91dHB1dFRva2VucyI6MjIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNjQsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDhUMDc6Mjc6MzcuMzczODA4NzE4WiIsIlNlcSI6MzAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxOTM4OTE4NTkwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImRvX2lwdjZfc2V0c29ja29wdFwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJpbmNsdWRlL25ldC9pcHY2Lmg9MTEzOD1ERUNMQVJFX1NUQVRJQ19LRVlfRkFMU0UoaXA2X21pbl9ob3Bjb3VudCk7XFxuaW5jbHVkZS9uZXQvaXB2Ni5oLTExMzktXFxuaW5jbHVkZS9uZXQvaXB2Ni5oOjExNDA6aW50IGRvX2lwdjZfc2V0c29ja29wdChzdHJ1Y3Qgc29jayAqc2ssIGludCBsZXZlbCwgaW50IG9wdG5hbWUsIHNvY2twdHJfdCBvcHR2YWwsXFxuaW5jbHVkZS9uZXQvaXB2Ni5oLTExNDEtXFx0XFx0ICAgICAgIHVuc2lnbmVkIGludCBvcHRsZW4pO1xcbi0tXFxubmV0L2NvcmUvZmlsdGVyLmM9NTY1OT1zdGF0aWMgaW50IHNvbF9pcHY2X3NvY2tvcHQoc3RydWN0IHNvY2sgKnNrLCBpbnQgb3B0bmFtZSxcXG4tLVxcbm5ldC9jb3JlL2ZpbHRlci5jLTU2ODAtXFxubmV0L2NvcmUvZmlsdGVyLmM6NTY4MTpcXHRyZXR1cm4gZG9faXB2Nl9zZXRzb2Nrb3B0KHNrLCBTT0xfSVBWNiwgb3B0bmFtZSxcXG5uZXQvY29yZS9maWx0ZXIuYy01NjgyLVxcdFxcdFxcdFxcdCAgS0VSTkVMX1NPQ0tQVFIob3B0dmFsKSwgKm9wdGxlbik7XFxuLS1cXG5uZXQvaXB2NC90Y3AuYz00MTcyPWludCB0Y3Bfc2V0c29ja29wdChzdHJ1Y3Qgc29jayAqc2ssIGludCBsZXZlbCwgaW50IG9wdG5hbWUsIHNvY2twdHJfdCBvcHR2YWwsXFxuLS1cXG5uZXQvaXB2NC90Y3AuYy00MTc3LVxcdGlmIChsZXZlbCAhPSBTT0xfVENQKVxcbm5ldC9pcHY0L3RjcC5jOjQxNzg6XFx0XFx0LyogUGFpcmVkIHdpdGggV1JJVEVfT05DRSgpIGluIGRvX2lwdjZfc2V0c29ja29wdCgpIGFuZCB0Y3BfdjZfY29ubmVjdCgpICovXFxubmV0L2lwdjQvdGNwLmMtNDE3OS1cXHRcXHRyZXR1cm4gUkVBRF9PTkNFKGljc2stXFx1MDAzZWljc2tfYWZfb3BzKS1cXHUwMDNlc2V0c29ja29wdChzaywgbGV2ZWwsIG9wdG5hbWUsXFxuLS1cXG5uZXQvaXB2NC90Y3AuYz00ODU3PWludCB0Y3BfZ2V0c29ja29wdChzdHJ1Y3Qgc29jayAqc2ssIGludCBsZXZlbCwgaW50IG9wdG5hbWUsIGNoYXIgX191c2VyICpvcHR2YWwsXFxuLS1cXG5uZXQvaXB2NC90Y3AuYy00ODYyLVxcdGlmIChsZXZlbCAhPSBTT0xfVENQKVxcbm5ldC9pcHY0L3RjcC5jOjQ4NjM6XFx0XFx0LyogUGFpcmVkIHdpdGggV1JJVEVfT05DRSgpIGluIGRvX2lwdjZfc2V0c29ja29wdCgpIGFuZCB0Y3BfdjZfY29ubmVjdCgpICovXFxubmV0L2lwdjQvdGNwLmMtNDg2NC1cXHRcXHRyZXR1cm4gUkVBRF9PTkNFKGljc2stXFx1MDAzZWljc2tfYWZfb3BzKS1cXHUwMDNlZ2V0c29ja29wdChzaywgbGV2ZWwsIG9wdG5hbWUsXFxuLS1cXG5uZXQvaXB2Ni9pcHY2X3NvY2tnbHVlLmM9Mzk2PUVYUE9SVF9TWU1CT0woaXA2X3NvY2tfc2V0X3RjbGFzcyk7XFxubmV0L2lwdjYvaXB2Nl9zb2NrZ2x1ZS5jLTM5Ny1cXG5uZXQvaXB2Ni9pcHY2X3NvY2tnbHVlLmM6Mzk4OmludCBkb19pcHY2X3NldHNvY2tvcHQoc3RydWN0IHNvY2sgKnNrLCBpbnQgbGV2ZWwsIGludCBvcHRuYW1lLFxcbm5ldC9pcHY2L2lwdjZfc29ja2dsdWUuYy0zOTktXFx0XFx0ICAgICAgIHNvY2twdHJfdCBvcHR2YWwsIHVuc2lnbmVkIGludCBvcHRsZW4pXFxuLS1cXG5uZXQvaXB2Ni9pcHY2X3NvY2tnbHVlLmM9OTY5PWludCBpcHY2X3NldHNvY2tvcHQoc3RydWN0IHNvY2sgKnNrLCBpbnQgbGV2ZWwsIGludCBvcHRuYW1lLCBzb2NrcHRyX3Qgb3B0dmFsLFxcbi0tXFxubmV0L2lwdjYvaXB2Nl9zb2NrZ2x1ZS5jLTk3OS1cXG5uZXQvaXB2Ni9pcHY2X3NvY2tnbHVlLmM6OTgwOlxcdGVyciA9IGRvX2lwdjZfc2V0c29ja29wdChzaywgbGV2ZWwsIG9wdG5hbWUsIG9wdHZhbCwgb3B0bGVuKTtcXG5uZXQvaXB2Ni9pcHY2X3NvY2tnbHVlLmMtOTgxLSNpZmRlZiBDT05GSUdfTkVURklMVEVSXFxuLS1cXG5uZXQvaXB2Ni90Y3BfaXB2Ni5jPTQwMz1zdGF0aWMgaW50IHRjcF92Nl9lcnIoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IGluZXQ2X3NrYl9wYXJtICpvcHQsXFxuLS1cXG5uZXQvaXB2Ni90Y3BfaXB2Ni5jLTQ1Mi1cXHRpZiAoc3RhdGljX2JyYW5jaF91bmxpa2VseShcXHUwMDI2aXA2X21pbl9ob3Bjb3VudCkpIHtcXG5uZXQvaXB2Ni90Y3BfaXB2Ni5jOjQ1MzpcXHRcXHQvKiBtaW5faG9wY291bnQgY2FuIGJlIGNoYW5nZWQgY29uY3VycmVudGx5IGZyb20gZG9faXB2Nl9zZXRzb2Nrb3B0KCkgKi9cXG5uZXQvaXB2Ni90Y3BfaXB2Ni5jLTQ1NC1cXHRcXHRpZiAoaXB2Nl9oZHIoc2tiKS1cXHUwMDNlaG9wX2xpbWl0IFxcdTAwM2MgUkVBRF9PTkNFKHRjcF9pbmV0Nl9zayhzayktXFx1MDAzZW1pbl9ob3Bjb3VudCkpIHtcXG4tLVxcbm5ldC9pcHY2L3RjcF9pcHY2LmM9MTczMD1JTkRJUkVDVF9DQUxMQUJMRV9TQ09QRSBpbnQgdGNwX3Y2X3JjdihzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxcbi0tXFxubmV0L2lwdjYvdGNwX2lwdjYuYy0xODYxLVxcdGlmIChzdGF0aWNfYnJhbmNoX3VubGlrZWx5KFxcdTAwMjZpcDZfbWluX2hvcGNvdW50KSkge1xcbm5ldC9pcHY2L3RjcF9pcHY2LmM6MTg2MjpcXHRcXHQvKiBtaW5faG9wY291bnQgY2FuIGJlIGNoYW5nZWQgY29uY3VycmVudGx5IGZyb20gZG9faXB2Nl9zZXRzb2Nrb3B0KCkgKi9cXG5uZXQvaXB2Ni90Y3BfaXB2Ni5jLTE4NjMtXFx0XFx0aWYgKHVubGlrZWx5KGhkci1cXHUwMDNlaG9wX2xpbWl0IFxcdTAwM2MgUkVBRF9PTkNFKHRjcF9pbmV0Nl9zayhzayktXFx1MDAzZW1pbl9ob3Bjb3VudCkpKSB7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA4VDA3OjI3OjM5LjMxMjczMzMxOFoiLCJTZXEiOjMxLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo2Njc2NTY1NDEwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IExpbmUgb2YgSW5xdWlyeSoqXG5cbk9rYXksIHNvIEknbSB0aGlua2luZyBgZG9faXB2Nl9zZXRzb2Nrb3B0YCBzZWVtcyBsaWtlIGEgc29saWQgc3RhcnRpbmcgcG9pbnQgZm9yIHRoaXMgaW52ZXN0aWdhdGlvbi4gQnV0LCBsZXQncyBwaXZvdCBhbmQgY2hlY2sgYG52bWVfdGNwX2NyZWF0ZV9jdHJsYC4gSG1tLCBpdCdzIG1hcmtlZCBhcyBzdGF0aWMsIG1lYW5pbmcgaXQncyBub3QgZGlyZWN0bHkgZXhwb3J0ZWQuIEhvd2V2ZXIsIGl0ICppcyogYXNzaWduZWQgdG8gYG52bWVfdGNwX3RyYW5zcG9ydC5jcmVhdGVfY3RybGAuIEFscmlnaHQsIG1ha2luZyBwcm9ncmVzcy4gYG52bWZfZGV2X3dyaXRlYCBjYWxscyBgbnZtZl9jcmVhdGVfY3RybGAsIHdoaWNoIGluIHR1cm4gY2FsbHMgYG9wdHMtXHUwMDNldHJhbnNwb3J0LVx1MDAzZWNyZWF0ZV9jdHJsYC4gU28sIHllYWgsIHRoYXQgbWFrZXMgYG52bWVfdGNwX2NyZWF0ZV9jdHJsYCBhbm90aGVyIHZpYWJsZSBmb2N1cyBzeW1ib2wuXG5cbkxldCdzIHN3aXRjaCBnZWFycyBzbGlnaHRseSBhbmQgbG9vayBhdCBgbnZtZXRfdGNwX2FjY2VwdF93b3JrYC4gSXQncyBhbm90aGVyIHN0YXRpYyBmdW5jdGlvbiwgYnV0IGl0J3MgdXNlZCBhcyBhIHdvcmtxdWV1ZSBmdW5jdGlvbi5cblxuTm93LCBsZXQncyBjb25zaWRlciB0aGUgcmVsZXZhbnQgY29uZmlndXJhdGlvbnMuIFdlIGhhdmUgYE5WTUVfVENQYCwgYE5WTUVfVEFSR0VUX1RDUGAsIGBOVk1FX1RBUkdFVGAsIGFuZCBgSVBWNmAuIEhvbGQgb24sIGl0IHNlZW1zIGxpa2UgYE5WTUVfVEFSR0VUYCBpcyBuZWNlc3NhcnkgZm9yIGBOVk1FX1RBUkdFVF9UQ1BgIHRvIGZ1bmN0aW9uLiBJIHdvbmRlciBpZiB0aGVyZSBhcmUgYW55IG90aGVyIGNvbmZpZ3VyYXRpb25zIGludm9sdmVkPyBNYXliZSBgTlZNRV9DT1JFYCBvciBgTlZNRV9GQUJSSUNTYD8gQWgsIGBOVk1FX1RDUGAgc2VsZWN0cyBgTlZNRV9GQUJSSUNTYCwgb2YgY291cnNlLiBBbmQgYE5WTUVfVEFSR0VUX1RDUGAgZGVwZW5kcyBvbiBgTlZNRV9UQVJHRVRgLiBSaWdodCwgdGhhdCBtYWtlcyBzZW5zZS5cblxuTm93LCBJJ20gZ29pbmcgdG8gdGFrZSBhIGRlZXBlciBsb29rIGF0IGBOVk1FX1RBUkdFVGAuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE1MjE5LCJPdXRwdXRUb2tlbnMiOjE5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjYyLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA4VDA3OjI3OjQ1Ljk4OTMwMTY4OFoiLCJTZXEiOjMyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTc2ODUwNTk2OCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgTlZNRV9UQVJHRVRcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9udm1lL3RhcmdldC9LY29uZmlnLTItXFxuZHJpdmVycy9udm1lL3RhcmdldC9LY29uZmlnOjM6Y29uZmlnIE5WTUVfVEFSR0VUXFxuZHJpdmVycy9udm1lL3RhcmdldC9LY29uZmlnLTQtXFx0dHJpc3RhdGUgXFxcIk5WTWUgVGFyZ2V0IHN1cHBvcnRcXFwiXFxuLS1cXG5kcml2ZXJzL252bWUvdGFyZ2V0L0tjb25maWctMTktXFxuZHJpdmVycy9udm1lL3RhcmdldC9LY29uZmlnOjIwOmNvbmZpZyBOVk1FX1RBUkdFVF9ERUJVR0ZTXFxuZHJpdmVycy9udm1lL3RhcmdldC9LY29uZmlnLTIxLSAgICAgICAgYm9vbCBcXFwiTlZNZSBUYXJnZXQgZGVidWdmcyBzdXBwb3J0XFxcIlxcbi0tXFxuZHJpdmVycy9udm1lL3RhcmdldC9LY29uZmlnLTI4LVxcbmRyaXZlcnMvbnZtZS90YXJnZXQvS2NvbmZpZzoyOTpjb25maWcgTlZNRV9UQVJHRVRfUEFTU1RIUlVcXG5kcml2ZXJzL252bWUvdGFyZ2V0L0tjb25maWctMzAtXFx0Ym9vbCBcXFwiTlZNZSBUYXJnZXQgUGFzc3Rocm91Z2ggc3VwcG9ydFxcXCJcXG4tLVxcbmRyaXZlcnMvbnZtZS90YXJnZXQvS2NvbmZpZy00MC1cXG5kcml2ZXJzL252bWUvdGFyZ2V0L0tjb25maWc6NDE6Y29uZmlnIE5WTUVfVEFSR0VUX0xPT1BcXG5kcml2ZXJzL252bWUvdGFyZ2V0L0tjb25maWctNDItXFx0dHJpc3RhdGUgXFxcIk5WTWUgbG9vcGJhY2sgZGV2aWNlIHN1cHBvcnRcXFwiXFxuLS1cXG5kcml2ZXJzL252bWUvdGFyZ2V0L0tjb25maWctNTEtXFxuZHJpdmVycy9udm1lL3RhcmdldC9LY29uZmlnOjUyOmNvbmZpZyBOVk1FX1RBUkdFVF9SRE1BXFxuZHJpdmVycy9udm1lL3RhcmdldC9LY29uZmlnLTUzLVxcdHRyaXN0YXRlIFxcXCJOVk1lIG92ZXIgRmFicmljcyBSRE1BIHRhcmdldCBzdXBwb3J0XFxcIlxcbi0tXFxuZHJpdmVycy9udm1lL3RhcmdldC9LY29uZmlnLTYyLVxcbmRyaXZlcnMvbnZtZS90YXJnZXQvS2NvbmZpZzo2Mzpjb25maWcgTlZNRV9UQVJHRVRfRkNcXG5kcml2ZXJzL252bWUvdGFyZ2V0L0tjb25maWctNjQtXFx0dHJpc3RhdGUgXFxcIk5WTWUgb3ZlciBGYWJyaWNzIEZDIHRhcmdldCBkcml2ZXJcXFwiXFxuLS1cXG5kcml2ZXJzL252bWUvdGFyZ2V0L0tjb25maWctNzMtXFxuZHJpdmVycy9udm1lL3RhcmdldC9LY29uZmlnOjc0OmNvbmZpZyBOVk1FX1RBUkdFVF9GQ0xPT1BcXG5kcml2ZXJzL252bWUvdGFyZ2V0L0tjb25maWctNzUtXFx0dHJpc3RhdGUgXFxcIk5WTWUgb3ZlciBGYWJyaWNzIEZDIFRyYW5zcG9ydCBMb29wYmFjayBUZXN0IGRyaXZlclxcXCJcXG4tLVxcbmRyaXZlcnMvbnZtZS90YXJnZXQvS2NvbmZpZy04Ni1cXG5kcml2ZXJzL252bWUvdGFyZ2V0L0tjb25maWc6ODc6Y29uZmlnIE5WTUVfVEFSR0VUX1RDUFxcbmRyaXZlcnMvbnZtZS90YXJnZXQvS2NvbmZpZy04OC1cXHR0cmlzdGF0ZSBcXFwiTlZNZSBvdmVyIEZhYnJpY3MgVENQIHRhcmdldCBzdXBwb3J0XFxcIlxcbi0tXFxuZHJpdmVycy9udm1lL3RhcmdldC9LY29uZmlnLTk2LVxcbmRyaXZlcnMvbnZtZS90YXJnZXQvS2NvbmZpZzo5Nzpjb25maWcgTlZNRV9UQVJHRVRfVENQX1RMU1xcbmRyaXZlcnMvbnZtZS90YXJnZXQvS2NvbmZpZy05OC1cXHRib29sIFxcXCJOVk1lIG92ZXIgRmFicmljcyBUQ1AgdGFyZ2V0IFRMUyBlbmNyeXB0aW9uIHN1cHBvcnRcXFwiXFxuLS1cXG5kcml2ZXJzL252bWUvdGFyZ2V0L0tjb25maWctMTA5LVxcbmRyaXZlcnMvbnZtZS90YXJnZXQvS2NvbmZpZzoxMTA6Y29uZmlnIE5WTUVfVEFSR0VUX0FVVEhcXG5kcml2ZXJzL252bWUvdGFyZ2V0L0tjb25maWctMTExLVxcdGJvb2wgXFxcIk5WTWUgb3ZlciBGYWJyaWNzIEluLWJhbmQgQXV0aGVudGljYXRpb24gaW4gdGFyZ2V0IHNpZGVcXFwiXFxuLS1cXG5kcml2ZXJzL252bWUvdGFyZ2V0L0tjb25maWctMTE5LVxcbmRyaXZlcnMvbnZtZS90YXJnZXQvS2NvbmZpZzoxMjA6Y29uZmlnIE5WTUVfVEFSR0VUX0FVVEhfREVCVUdcXG5kcml2ZXJzL252bWUvdGFyZ2V0L0tjb25maWctMTIxLVxcdGJvb2wgXFxcIk5WTWUgb3ZlciBGYWJyaWNzIEluLWJhbmQgQXV0aGVudGljYXRpb24gZGVidWcgbWVzc2FnZXNcXFwiXFxuLS1cXG5kcml2ZXJzL252bWUvdGFyZ2V0L0tjb25maWctMTI4LVxcbmRyaXZlcnMvbnZtZS90YXJnZXQvS2NvbmZpZzoxMjk6Y29uZmlnIE5WTUVfVEFSR0VUX1BDSV9FUEZcXG5kcml2ZXJzL252bWUvdGFyZ2V0L0tjb25maWctMTMwLVxcdHRyaXN0YXRlIFxcXCJOVk1lIFBDSSBFbmRwb2ludCBGdW5jdGlvbiB0YXJnZXQgc3VwcG9ydFxcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDhUMDc6Mjc6NDcuNzU3ODEzNzI2WiIsIlNlcSI6MzMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQ4MjU4OTEwNzEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgYW4gZXhwZXJ0J3MgaW50ZXJuYWwgbW9ub2xvZ3VlOlxuXG4qKkludmVzdGlnYXRpbmcgTlZNRV9UQVJHRVQgRGVwZW5kZW5jaWVzKipcblxuUmlnaHQsIGxldCdzIGRpdmUgaW50byB0aGUgS2NvbmZpZyBmb3IgdGhlIE5WTUUgdGFyZ2V0LiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgZGVwZW5kZW5jaWVzIG9mIGBOVk1FX1RBUkdFVGAuIEl0J3MgY3J1Y2lhbCwgYXMgYWx3YXlzLCB0byBncmFzcCB0aGUgYnVpbGQtdGltZSBjb25maWd1cmF0aW9uIG9wdGlvbnMgYW5kIGNvbnN0cmFpbnRzIGJlZm9yZSBJIHN0YXJ0IHBva2luZyBhcm91bmQgaW4gdGhlIGNvZGUuIEknbSBsb29raW5nIGZvciBhbnkgaW1tZWRpYXRlIGNsdWVzIG9uIHByZXJlcXVpc2l0ZXM6IG90aGVyIGZlYXR1cmVzIGl0IHJlbGllcyBvbiwgcGxhdGZvcm0gcmVxdWlyZW1lbnRzLCBvciBwb3RlbnRpYWwgY29uZmxpY3RzIHdpdGggb3RoZXIgc3Vic3lzdGVtcy4gSXQncyB0aGUgc3RhbmRhcmQgcHJhY3RpY2UsIHJlYWxseS4gQSBkZWVwIGRpdmUgaW50byB0aGUgS2NvbmZpZyB3aWxsIGhpZ2hsaWdodCB3aGF0IG5lZWRzIHRvIGJlIGVuYWJsZWQsIGRpc2FibGVkLCBvciBjb25zaWRlcmVkIGR1cmluZyB0aGUgd2hvbGUgY29uZmlndXJhdGlvbiBwcm9jZXNzLiBJIHdhbnQgYSBjbGVhciBwaWN0dXJlLCBzbyBJIGNhbiBhdm9pZCB3YXN0ZWQgdGltZSBkb3duIHRoZSBsaW5lLiBMZXQncyBzZWUgd2hhdCB3ZSBjYW4gZmluZC5cblxuXG4iLCJJbnB1dFRva2VucyI6MTY2MjcsIk91dHB1dFRva2VucyI6MzUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyNSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wOFQwNzoyNzo1Mi41ODM3MDg3MTdaIiwiU2VxIjozNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NjkyNDAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9udm1lL3RhcmdldC9LY29uZmlnXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDEsXG4gIFwiTGluZUNvdW50XCI6IDIwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAgIDE6XFx0IyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XFxuICAgMjpcXHRcXG4gICAzOlxcdGNvbmZpZyBOVk1FX1RBUkdFVFxcbiAgIDQ6XFx0XFx0dHJpc3RhdGUgXFxcIk5WTWUgVGFyZ2V0IHN1cHBvcnRcXFwiXFxuICAgNTpcXHRcXHRkZXBlbmRzIG9uIEJMT0NLXFxuICAgNjpcXHRcXHRzZWxlY3QgQ09ORklHRlNfRlNcXG4gICA3OlxcdFxcdHNlbGVjdCBOVk1FX0tFWVJJTkcgaWYgTlZNRV9UQVJHRVRfVENQX1RMU1xcbiAgIDg6XFx0XFx0c2VsZWN0IEtFWVMgaWYgTlZNRV9UQVJHRVRfVENQX1RMU1xcbiAgIDk6XFx0XFx0c2VsZWN0IFNHTF9BTExPQ1xcbiAgMTA6XFx0XFx0aGVscFxcbiAgMTE6XFx0XFx0ICBUaGlzIGVuYWJsZWQgdGFyZ2V0IHNpZGUgc3VwcG9ydCBmb3IgdGhlIE5WTWUgcHJvdG9jb2wsIHRoYXQgaXNcXG4gIDEyOlxcdFxcdCAgaXQgYWxsb3dzIHRoZSBMaW51eCBrZXJuZWwgdG8gaW1wbGVtZW50IE5WTWUgc3Vic3lzdGVtcyBhbmRcXG4gIDEzOlxcdFxcdCAgY29udHJvbGxlcnMgYW5kIGV4cG9ydCBMaW51eCBibG9jayBkZXZpY2VzIGFzIE5WTWUgbmFtZXNwYWNlcy5cXG4gIDE0OlxcdFxcdCAgWW91IG5lZWQgdG8gc2VsZWN0IGF0IGxlYXN0IG9uZSBvZiB0aGUgdHJhbnNwb3J0cyBiZWxvdyB0byBtYWtlIHRoaXNcXG4gIDE1OlxcdFxcdCAgZnVuY3Rpb25hbGl0eSB1c2VmdWwuXFxuICAxNjpcXHRcXG4gIDE3OlxcdFxcdCAgVG8gY29uZmlndXJlIHRoZSBOVk1lIHRhcmdldCB5b3UgcHJvYmFibHkgd2FudCB0byB1c2UgdGhlIG52bWV0Y2xpXFxuICAxODpcXHRcXHQgIHRvb2wgZnJvbSBodHRwOi8vZ2l0LmluZnJhZGVhZC5vcmcvdXNlcnMvaGNoL252bWV0Y2xpLmdpdC5cXG4gIDE5OlxcdFxcbiAgMjA6XFx0Y29uZmlnIE5WTUVfVEFSR0VUX0RFQlVHRlNcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDhUMDc6Mjc6NTIuNTgzNzg2NDU3WiIsIlNlcSI6MzUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQ1NTIwOTcxNDAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBhIHN1bW1hcnkgb2YgbXkgdGhvdWdodCBwcm9jZXNzLCBhcyByZXF1ZXN0ZWQ6XG5cbioqTmF2aWdhdGluZyBEZXBlbmRlbmNpZXMqKlxuXG5Pa2F5LCBzbyBJJ20gdGhpbmtpbmcgYWJvdXQgdGhlIHN5c3RlbSBhcmNoaXRlY3R1cmUgaGVyZS4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRoYXQgYE5WTUVfVEFSR0VUYCBoYXMgYSBkZXBlbmRlbmN5IG9uIGBCTE9DS2AuIFRoYXQncyBhIGZ1bmRhbWVudGFsIHJlbGF0aW9uc2hpcCDigJMgdGhlIHRhcmdldCBuZWVkcyBhIGJsb2NrLWxldmVsIHN0b3JhZ2UgYWJzdHJhY3Rpb24gdG8gb3BlcmF0ZS4gTm93LCBJIG5lZWQgdG8gdW5kZXJzdGFuZCBob3cgTlZNZSBvdmVyIFRDUCBmaXRzIGludG8gdGhpcyBwaWN0dXJlLiBNeSBuZXh0IHN0ZXAgaXMgdG8gZXhhbWluZSB0aGUgcmVsYXRpb25zaGlwIGJldHdlZW4gYE5WTUVfVENQYCBhbmQgdGhlIGJyb2FkZXIgYXJjaGl0ZWN0dXJlLCBzcGVjaWZpY2FsbHkgaG93IGl0IGludGVyYWN0cyB3aXRoIHRoZSBjb21wb25lbnRzIEkndmUgYWxyZWFkeSBpZGVudGlmaWVkLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxNzE1OSwiT3V0cHV0VG9rZW5zIjozNiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIzLCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDhUMDc6Mjc6NTcuMTM1ODg3NzM3WiIsIlNlcSI6MzYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjcyOTIwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbnZtZS9ob3N0L0tjb25maWdcIixcbiAgXCJGaXJzdExpbmVcIjogODAsXG4gIFwiTGluZUNvdW50XCI6IDIwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAgODA6XFx0XFxuICA4MTpcXHRcXHQgIElmIHVuc3VyZSwgc2F5IE4uXFxuICA4MjpcXHRcXG4gIDgzOlxcdGNvbmZpZyBOVk1FX1RDUFxcbiAgODQ6XFx0XFx0dHJpc3RhdGUgXFxcIk5WTSBFeHByZXNzIG92ZXIgRmFicmljcyBUQ1AgaG9zdCBkcml2ZXJcXFwiXFxuICA4NTpcXHRcXHRkZXBlbmRzIG9uIElORVRcXG4gIDg2OlxcdFxcdGRlcGVuZHMgb24gQkxPQ0tcXG4gIDg3OlxcdFxcdHNlbGVjdCBDUkMzMlxcbiAgODg6XFx0XFx0c2VsZWN0IE5FVF9DUkMzMkNcXG4gIDg5OlxcdFxcdHNlbGVjdCBOVk1FX0ZBQlJJQ1NcXG4gIDkwOlxcdFxcdGhlbHBcXG4gIDkxOlxcdFxcdCAgVGhpcyBwcm92aWRlcyBzdXBwb3J0IGZvciB0aGUgTlZNZSBvdmVyIEZhYnJpY3MgcHJvdG9jb2wgdXNpbmdcXG4gIDkyOlxcdFxcdCAgdGhlIFRDUCB0cmFuc3BvcnQuICBUaGlzIGFsbG93cyB5b3UgdG8gdXNlIHJlbW90ZSBibG9jayBkZXZpY2VzXFxuICA5MzpcXHRcXHQgIGV4cG9ydGVkIHVzaW5nIHRoZSBOVk1lIHByb3RvY29sIHNldC5cXG4gIDk0OlxcdFxcbiAgOTU6XFx0XFx0ICBUbyBjb25maWd1cmUgYSBOVk1lIG92ZXIgRmFicmljcyBjb250cm9sbGVyIHVzZSB0aGUgbnZtZS1jbGkgdG9vbFxcbiAgOTY6XFx0XFx0ICBmcm9tIGh0dHBzOi8vZ2l0aHViLmNvbS9saW51eC1udm1lL252bWUtY2xpLlxcbiAgOTc6XFx0XFxuICA5ODpcXHRcXHQgIElmIHVuc3VyZSwgc2F5IE4uXFxuICA5OTpcXHRcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDhUMDc6Mjc6NTcuMTM1OTYyNjI3WiIsIlNlcSI6MzcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQyNTQ4ODE0NDIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQ29uZmlndXJhdGlvbiBEZXBlbmRlbmNpZXM6IEEgUXVpY2sgUmV2aWV3KipcblxuT2theSwgbGV0J3Mgc2VlLCBJIG5lZWQgdG8gbWFrZSBzdXJlIEkgdW5kZXJzdGFuZCB0aGVzZSBjb25maWd1cmF0aW9ucy4gUmlnaHQsIHNvIHdlIGhhdmUgYE5WTUVfVENQYCwgYE5WTUVfVEFSR0VUX1RDUGAsIGBOVk1FX1RBUkdFVGAsIGFuZCBgSVBWNmAuIEp1c3QgcnVubmluZyB0aHJvdWdoIHRoZSBtZW50YWwgY2hlY2tsaXN0IGhlcmUuLi4gQWgsIHJpZ2h0LCB0aGF0J3MgaW1wb3J0YW50OiBgTlZNRV9UQVJHRVRfVENQYCByZWxpZXMgb24gYE5WTUVfVEFSR0VUYC4gTmF0dXJhbGx5LCB0aGF0IG1ha2VzIHNlbnNlLiBBbmQgYE5WTUVfVENQYCBzZWxlY3RzIGBOVk1FX0ZBQlJJQ1NgLi4uIEdvdCBpdC4gYE5WTUVfRkFCUklDU2AgaGFzIGEgZGVwZW5kZW5jeSBvbiBgTlZNRV9DT1JFYC4gT2theSwgbGV0J3MganVzdCBtYWtlIGEgbm90ZSB0byBkb3VibGUtY2hlY2sgdGhlIGBOVk1FX0NPUkVgIGNvbmZpZ3VyYXRpb24uIEFsd2F5cyBpbXBvcnRhbnQgdG8gdW5kZXJzdGFuZCB0aGUgY29yZSBjb21wb25lbnRzLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxNzU5NywiT3V0cHV0VG9rZW5zIjoxOSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjk3LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDhUMDc6Mjg6MDEuMzkwODQ4MDI5WiIsIlNlcSI6MzgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyMDI0ODU4MzQxLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBOVk1FX0NPUkVcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9udm1lL2hvc3QvS2NvbmZpZy0xLSMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxcbmRyaXZlcnMvbnZtZS9ob3N0L0tjb25maWc6Mjpjb25maWcgTlZNRV9DT1JFXFxuZHJpdmVycy9udm1lL2hvc3QvS2NvbmZpZy0zLVxcdHRyaXN0YXRlXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA4VDA3OjI4OjAzLjQxNTcxNDQ1WiIsIlNlcSI6MzksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMwNTc2OTM3NTMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSB0YWtlIG9uIHRoZSB0aG91Z2h0IHByb2Nlc3MsIGFzIGlmIGl0IHdlcmUgbXkgb3duOlxuXG4qKkludmVzdGlnYXRpbmcgTlZNRSBDb3JlIERlcGVuZGVuY2llcyoqXG5cbk9rYXksIHNvIEkgbmVlZCB0byBmaWd1cmUgb3V0IHRoZSBkZXBlbmRlbmNpZXMgZm9yIGBOVk1FX0NPUkVgLiBUaGUgbW9zdCBkaXJlY3Qgd2F5IHRvIGdldCBhIGhhbmRsZSBvbiB0aGF0IGlzIHRvIGRpdmUgaW50byB0aGUgS2NvbmZpZyBmaWxlIGZvciB0aGUgTlZNZSBob3N0IGRyaXZlci4gSXQgc2hvdWxkIGJlIHJpZ2h0IHRoZXJlLCB0ZWxsaW5nIG1lIHdoYXQgb3RoZXIgY29uZmlndXJhdGlvbnMgYXJlIHJlcXVpcmVkIGZvciBgTlZNRV9DT1JFYCB0byBldmVuIGJlIGNvbnNpZGVyZWQuIFNvLCBsZXQncyBvcGVuIHVwIGBkcml2ZXJzL252bWUvaG9zdC9LY29uZmlnYCBhbmQgc2VlIHdoYXQgaXQgcmV2ZWFscy4gVGhpcyB3aWxsIGdpdmUgbWUgdGhlIGJ1aWxkaW5nIGJsb2NrcyBJIG5lZWQgdG8gdW5kZXJzdGFuZCBob3cgdGhlIGZlYXR1cmUgZml0cyBpbnRvIHRoZSBicm9hZGVyIHN5c3RlbS4gSSdtIGV4cGVjdGluZyB0byBzZWUgdGhpbmdzIGxpa2UgcGxhdGZvcm0tc3BlY2lmaWMgcmVxdWlyZW1lbnRzLCB1bmRlcmx5aW5nIGhhcmR3YXJlIGVuYWJsZW1lbnQsIG9yIG1heWJlIGV2ZW4gb3RoZXIgcmVsYXRlZCBOVk1lIGZlYXR1cmVzIHRoYXQgbXVzdCBiZSBlbmFibGVkIGZpcnN0LiBMZXQncyBnZXQgdG8gaXQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE3OTQ4LCJPdXRwdXRUb2tlbnMiOjM1LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjUsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDhUMDc6Mjg6MDYuNDczNDEyODE0WiIsIlNlcSI6NDAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjgzOTkxLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbnZtZS9ob3N0L0tjb25maWdcIixcbiAgXCJGaXJzdExpbmVcIjogMSxcbiAgXCJMaW5lQ291bnRcIjogMjBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiICAgMTpcXHQjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcXG4gICAyOlxcdGNvbmZpZyBOVk1FX0NPUkVcXG4gICAzOlxcdFxcdHRyaXN0YXRlXFxuICAgNDpcXHRcXG4gICA1OlxcdGNvbmZpZyBCTEtfREVWX05WTUVcXG4gICA2OlxcdFxcdHRyaXN0YXRlIFxcXCJOVk0gRXhwcmVzcyBibG9jayBkZXZpY2VcXFwiXFxuICAgNzpcXHRcXHRkZXBlbmRzIG9uIFBDSSBcXHUwMDI2XFx1MDAyNiBCTE9DS1xcbiAgIDg6XFx0XFx0c2VsZWN0IE5WTUVfQ09SRVxcbiAgIDk6XFx0XFx0aGVscFxcbiAgMTA6XFx0XFx0ICBUaGUgTlZNIEV4cHJlc3MgZHJpdmVyIGlzIGZvciBzb2xpZCBzdGF0ZSBkcml2ZXMgZGlyZWN0bHlcXG4gIDExOlxcdFxcdCAgY29ubmVjdGVkIHRvIHRoZSBQQ0kgb3IgUENJIEV4cHJlc3MgYnVzLiAgSWYgeW91IGtub3cgeW91XFxuICAxMjpcXHRcXHQgIGRvbid0IGhhdmUgb25lIG9mIHRoZXNlLCBpdCBpcyBzYWZlIHRvIGFuc3dlciBOLlxcbiAgMTM6XFx0XFxuICAxNDpcXHRcXHQgIFRvIGNvbXBpbGUgdGhpcyBkcml2ZXIgYXMgYSBtb2R1bGUsIGNob29zZSBNIGhlcmU6IHRoZVxcbiAgMTU6XFx0XFx0ICBtb2R1bGUgd2lsbCBiZSBjYWxsZWQgbnZtZS5cXG4gIDE2OlxcdFxcbiAgMTc6XFx0Y29uZmlnIE5WTUVfTVVMVElQQVRIXFxuICAxODpcXHRcXHRib29sIFxcXCJOVk1lIG11bHRpcGF0aCBzdXBwb3J0XFxcIlxcbiAgMTk6XFx0XFx0ZGVwZW5kcyBvbiBOVk1FX0NPUkVcXG4gIDIwOlxcdFxcdGhlbHBcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDhUMDc6Mjg6MDYuNDczNDk4NDc0WiIsIlNlcSI6NDEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQzODc5NjM2NjgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIE5WTWUgQ29uZmlndXJhdGlvbiBEZXBlbmRlbmNpZXMqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGVzZSBOVk1lIGNvbmZpZ3VyYXRpb25zIGFuZCB0aGVpciBkZXBlbmRlbmNpZXMuIEl0IHNlZW1zIHByZXR0eSBzdHJhaWdodGZvcndhcmQuIGBOVk1FX0NPUkVgIHN0YW5kcyBhbG9uZTsgbm8gZGVwZW5kZW5jaWVzIHRoZXJlLiBIb3dldmVyLCBib3RoIGBOVk1FX1RDUGAgYW5kIGBOVk1FX1RBUkdFVF9UQ1BgIHJlcXVpcmUgYElORVRgLiAgYE5WTUVfVENQYCBhbHNvIG5lZWRzIGBCTE9DS2AsIGFuZCBgTlZNRV9UQVJHRVRfVENQYCBkZXBlbmRzIG9uIGBOVk1FX1RBUkdFVGAuICBgTlZNRV9UQVJHRVRgLCBpbiB0dXJuLCBuZWVkcyBgQkxPQ0tgLiAgVGhlcmVmb3JlLCBpZiBJJ20gaW50ZXJwcmV0aW5nIHRoaXMgY29ycmVjdGx5LCBJIHNob3VsZCBjb25zaWRlciBjb25maWd1cmluZyB0aGUgZm9sbG93aW5nOiBgTlZNRV9UQ1BgLCBgTlZNRV9UQVJHRVRfVENQYCwgYE5WTUVfVEFSR0VUYCwgYW5kIGZpbmFsbHksIEkgbmVlZCB0byBjb25maXJtIGBJUFY2YCBpcyBhIHZpYWJsZSBjb25maWd1cmF0aW9uIG9wdGlvbi4gSXQncyBhIGtleSBwYXJ0IG9mIHRoZSBuZXR3b3JrIHN0YWNrLCBzbyBpdCBpcyBuZWNlc3NhcnkuIE5vdyBJIG5lZWQgdG8gY2hlY2sgaWYgYElQVjZgIGlzIHNvbWV0aGluZyBJIGNhbiBhY3R1YWxseSBjb25maWd1cmUgZGlyZWN0bHkuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE4NDQ2LCJPdXRwdXRUb2tlbnMiOjE4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTIwLCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDhUMDc6Mjg6MTAuODYxNDY1NTkxWiIsIlNlcSI6NDIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNjU2MjA4MzYwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBJUFY2XCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9pcHY2L0tjb25maWctNS1cXG5uZXQvaXB2Ni9LY29uZmlnOjY6bWVudWNvbmZpZyBJUFY2XFxubmV0L2lwdjYvS2NvbmZpZy03LVxcdGJvb2wgXFxcIlRoZSBJUHY2IHByb3RvY29sXFxcIlxcbi0tXFxubmV0L2lwdjYvS2NvbmZpZz0xOT1pZiBJUFY2XFxubmV0L2lwdjYvS2NvbmZpZy0yMC1cXG5uZXQvaXB2Ni9LY29uZmlnOjIxOmNvbmZpZyBJUFY2X1JPVVRFUl9QUkVGXFxubmV0L2lwdjYvS2NvbmZpZy0yMi1cXHRib29sIFxcXCJJUHY2OiBSb3V0ZXIgUHJlZmVyZW5jZSAoUkZDIDQxOTEpIHN1cHBvcnRcXFwiXFxuLS1cXG5uZXQvaXB2Ni9LY29uZmlnLTMwLVxcbm5ldC9pcHY2L0tjb25maWc6MzE6Y29uZmlnIElQVjZfUk9VVEVfSU5GT1xcbm5ldC9pcHY2L0tjb25maWctMzItXFx0Ym9vbCBcXFwiSVB2NjogUm91dGUgSW5mb3JtYXRpb24gKFJGQyA0MTkxKSBzdXBwb3J0XFxcIlxcbi0tXFxubmV0L2lwdjYvS2NvbmZpZy0zOC1cXG5uZXQvaXB2Ni9LY29uZmlnOjM5OmNvbmZpZyBJUFY2X09QVElNSVNUSUNfREFEXFxubmV0L2lwdjYvS2NvbmZpZy00MC1cXHRib29sIFxcXCJJUHY2OiBFbmFibGUgUkZDIDQ0MjkgT3B0aW1pc3RpYyBEQURcXFwiXFxuLS1cXG5uZXQvaXB2Ni9LY29uZmlnPTEwMj1jb25maWcgSU5FVDZfSVBDT01QXFxuLS1cXG5uZXQvaXB2Ni9LY29uZmlnLTExMS1cXG5uZXQvaXB2Ni9LY29uZmlnOjExMjpjb25maWcgSVBWNl9NSVA2XFxubmV0L2lwdjYvS2NvbmZpZy0xMTMtXFx0dHJpc3RhdGUgXFxcIklQdjY6IE1vYmlsaXR5XFxcIlxcbi0tXFxubmV0L2lwdjYvS2NvbmZpZy0xMTktXFxubmV0L2lwdjYvS2NvbmZpZzoxMjA6Y29uZmlnIElQVjZfSUxBXFxubmV0L2lwdjYvS2NvbmZpZy0xMjEtXFx0dHJpc3RhdGUgXFxcIklQdjY6IElkZW50aWZpZXIgTG9jYXRvciBBZGRyZXNzaW5nIChJTEEpXFxcIlxcbi0tXFxubmV0L2lwdjYvS2NvbmZpZz0xNDY9Y29uZmlnIElORVQ2X1RVTk5FTFxcbi0tXFxubmV0L2lwdjYvS2NvbmZpZy0xNDktXFxubmV0L2lwdjYvS2NvbmZpZzoxNTA6Y29uZmlnIElQVjZfVlRJXFxubmV0L2lwdjYvS2NvbmZpZy0xNTEtXFx0dHJpc3RhdGUgXFxcIlZpcnR1YWwgKHNlY3VyZSkgSVB2NjogdHVubmVsaW5nXFxcIlxcbi0tXFxubmV0L2lwdjYvS2NvbmZpZy0xNjEtXFxubmV0L2lwdjYvS2NvbmZpZzoxNjI6Y29uZmlnIElQVjZfU0lUXFxubmV0L2lwdjYvS2NvbmZpZy0xNjMtXFx0dHJpc3RhdGUgXFxcIklQdjY6IElQdjYtaW4tSVB2NCB0dW5uZWwgKFNJVCBkcml2ZXIpXFxcIlxcbi0tXFxubmV0L2lwdjYvS2NvbmZpZy0xNzYtXFxubmV0L2lwdjYvS2NvbmZpZzoxNzc6Y29uZmlnIElQVjZfU0lUXzZSRFxcbm5ldC9pcHY2L0tjb25maWctMTc4LVxcdGJvb2wgXFxcIklQdjY6IElQdjYgUmFwaWQgRGVwbG95bWVudCAoNlJEKVxcXCJcXG4tLVxcbm5ldC9pcHY2L0tjb25maWctMTk1LVxcbm5ldC9pcHY2L0tjb25maWc6MTk2OmNvbmZpZyBJUFY2X05ESVNDX05PREVUWVBFXFxubmV0L2lwdjYvS2NvbmZpZy0xOTctXFx0Ym9vbFxcbm5ldC9pcHY2L0tjb25maWctMTk4LVxcbm5ldC9pcHY2L0tjb25maWc6MTk5OmNvbmZpZyBJUFY2X1RVTk5FTFxcbm5ldC9pcHY2L0tjb25maWctMjAwLVxcdHRyaXN0YXRlIFxcXCJJUHY2OiBJUC1pbi1JUHY2IHR1bm5lbCAoUkZDMjQ3MylcXFwiXFxuLS1cXG5uZXQvaXB2Ni9LY29uZmlnLTIwOS1cXG5uZXQvaXB2Ni9LY29uZmlnOjIxMDpjb25maWcgSVBWNl9HUkVcXG5uZXQvaXB2Ni9LY29uZmlnLTIxMS1cXHR0cmlzdGF0ZSBcXFwiSVB2NjogR1JFIHR1bm5lbFxcXCJcXG4tLVxcbm5ldC9pcHY2L0tjb25maWctMjI3LVxcbm5ldC9pcHY2L0tjb25maWc6MjI4OmNvbmZpZyBJUFY2X0ZPVVxcbm5ldC9pcHY2L0tjb25maWctMjI5LVxcdHRyaXN0YXRlXFxuLS1cXG5uZXQvaXB2Ni9LY29uZmlnLTIzMS1cXG5uZXQvaXB2Ni9LY29uZmlnOjIzMjpjb25maWcgSVBWNl9GT1VfVFVOTkVMXFxubmV0L2lwdjYvS2NvbmZpZy0yMzMtXFx0dHJpc3RhdGVcXG4tLVxcbm5ldC9pcHY2L0tjb25maWctMjM2LVxcbm5ldC9pcHY2L0tjb25maWc6MjM3OmNvbmZpZyBJUFY2X01VTFRJUExFX1RBQkxFU1xcbm5ldC9pcHY2L0tjb25maWctMjM4LVxcdGJvb2wgXFxcIklQdjY6IE11bHRpcGxlIFJvdXRpbmcgVGFibGVzXFxcIlxcbi0tXFxubmV0L2lwdjYvS2NvbmZpZy0yNDItXFxubmV0L2lwdjYvS2NvbmZpZzoyNDM6Y29uZmlnIElQVjZfU1VCVFJFRVNcXG5uZXQvaXB2Ni9LY29uZmlnLTI0NC1cXHRib29sIFxcXCJJUHY2OiBzb3VyY2UgYWRkcmVzcyBiYXNlZCByb3V0aW5nXFxcIlxcbi0tXFxubmV0L2lwdjYvS2NvbmZpZy0yNTYtXFxubmV0L2lwdjYvS2NvbmZpZzoyNTc6Y29uZmlnIElQVjZfTVJPVVRFXFxubmV0L2lwdjYvS2NvbmZpZy0yNTgtXFx0Ym9vbCBcXFwiSVB2NjogbXVsdGljYXN0IHJvdXRpbmdcXFwiXFxuLS1cXG5uZXQvaXB2Ni9LY29uZmlnLTI2NC1cXG5uZXQvaXB2Ni9LY29uZmlnOjI2NTpjb25maWcgSVBWNl9NUk9VVEVfTVVMVElQTEVfVEFCTEVTXFxubmV0L2lwdjYvS2NvbmZpZy0yNjYtXFx0Ym9vbCBcXFwiSVB2NjogbXVsdGljYXN0IHBvbGljeSByb3V0aW5nXFxcIlxcbi0tXFxubmV0L2lwdjYvS2NvbmZpZy0yNzgtXFxubmV0L2lwdjYvS2NvbmZpZzoyNzk6Y29uZmlnIElQVjZfUElNU01fVjJcXG5uZXQvaXB2Ni9LY29uZmlnLTI4MC1cXHRib29sIFxcXCJJUHY2OiBQSU0tU00gdmVyc2lvbiAyIHN1cHBvcnRcXFwiXFxuLS1cXG5uZXQvaXB2Ni9LY29uZmlnLTI4NS1cXG5uZXQvaXB2Ni9LY29uZmlnOjI4Njpjb25maWcgSVBWNl9TRUc2X0xXVFVOTkVMXFxubmV0L2lwdjYvS2NvbmZpZy0yODctXFx0Ym9vbCBcXFwiSVB2NjogU2VnbWVudCBSb3V0aW5nIEhlYWRlciBlbmNhcHN1bGF0aW9uIHN1cHBvcnRcXFwiXFxuLS1cXG5uZXQvaXB2Ni9LY29uZmlnLTI5OS1cXG5uZXQvaXB2Ni9LY29uZmlnOjMwMDpjb25maWcgSVBWNl9TRUc2X0hNQUNcXG5uZXQvaXB2Ni9LY29uZmlnLTMwMS1cXHRib29sIFxcXCJJUHY2OiBTZWdtZW50IFJvdXRpbmcgSE1BQyBzdXBwb3J0XFxcIlxcbi0tXFxubmV0L2lwdjYvS2NvbmZpZy0zMTEtXFxubmV0L2lwdjYvS2NvbmZpZzozMTI6Y29uZmlnIElQVjZfU0VHNl9CUEZcXG5uZXQvaXB2Ni9LY29uZmlnLTMxMy1cXHRkZWZfYm9vbCB5XFxuLS1cXG5uZXQvaXB2Ni9LY29uZmlnLTMxNi1cXG5uZXQvaXB2Ni9LY29uZmlnOjMxNzpjb25maWcgSVBWNl9SUExfTFdUVU5ORUxcXG5uZXQvaXB2Ni9LY29uZmlnLTMxOC1cXHRib29sIFxcXCJJUHY2OiBSUEwgU291cmNlIFJvdXRpbmcgSGVhZGVyIHN1cHBvcnRcXFwiXFxuLS1cXG5uZXQvaXB2Ni9LY29uZmlnLTMyNy1cXG5uZXQvaXB2Ni9LY29uZmlnOjMyODpjb25maWcgSVBWNl9JT0FNNl9MV1RVTk5FTFxcbm5ldC9pcHY2L0tjb25maWctMzI5LVxcdGJvb2wgXFxcIklQdjY6IElPQU0gUHJlLWFsbG9jYXRlZCBUcmFjZSBpbnNlcnRpb24gc3VwcG9ydFxcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDhUMDc6Mjg6MTIuNTE3NjgwNzExWiIsIlNlcSI6NDMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjE2ODMwNTM2NDA4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKlJlZmluaW5nIHRoZSBGb2N1cyBmb3IgTlZNZSBvdmVyIFRDUCB3aXRoIElQdjYgVHJhZmZpYyBDbGFzcyBTdXBwb3J0KipcblxuT2theSwgc28gd2UncmUgbG9va2luZyBhdCBjaGFuZ2VzIHJlbGF0ZWQgdG8gYWRkaW5nIHRyYWZmaWMgY2xhc3MgKGB0Y2xhc3NgKSBzdXBwb3J0IGZvciBJUHY2IHdpdGhpbiB0aGUgTlZNZSBvdmVyIFRDUCBpbXBsZW1lbnRhdGlvbi4gRmlyc3QsIEkgbmVlZCB0byBjb25maXJtIHRoZSBjb25maWd1cmF0aW9ucyBpbnZvbHZlZC4gWWVzLCBgSVBWNmAgaXMgZGVmaW5pdGVseSBhIGNvbmZpZy4gV2Ugc2hvdWxkIGFsc28gY2hlY2sgYE5WTUVfRkFCUklDU2AuIElzIGl0IGEgZGlyZWN0IGNvbmZpZyBvcHRpb24/IE5vLCBidXQgaXQgYXBwZWFycyBgTlZNRV9UQ1BgIHNlbGVjdHMgYE5WTUVfRkFCUklDU2AsIHNvIHdlIGRvbid0IG5lZWQgdG8gbGlzdCBpdCBleHBsaWNpdGx5IGFsdGhvdWdoIHdlIGNvdWxkLiBHb29kLiBBbHNvLCBgTlZNRV9UQVJHRVRfVENQYCwgYW5kIGBOVk1FX1RBUkdFVGAgbmVlZCB0byBiZSBsaXN0ZWQuXG5cbk5vdywgbGV0J3MgbmFpbCBkb3duIHRoZSBrZXkgc3ltYm9scy4gSW5pdGlhbGx5LCBJIHRob3VnaHQgdGhlc2UgbG9va2VkIGltcG9ydGFudDogYG52bWZfZGV2X3dyaXRlYCwgYG52bWVfdGNwX2NyZWF0ZV9jdHJsYCwgYG52bWV0X3RjcF9hY2NlcHRfd29ya2AsIGFuZCBgZG9faXB2Nl9zZXRzb2Nrb3B0YC5cblxuYG52bWZfZGV2X3dyaXRlYCBpcyBhIGdlbmVyaWMgTlZNZSBmYWJyaWNzIGVudHJ5IHBvaW50LCB0aGF0J3MgdXNlZnVsLiBgbnZtZV90Y3BfY3JlYXRlX2N0cmxgIGlzIHNwZWNpZmljIHRvIFRDUCwgd2hpY2ggbWFrZXMgc2Vuc2UuIGBudm1ldF90Y3BfYWNjZXB0X3dvcmtgIGlzIHRhcmdldC1zcGVjaWZpYywgYW5kIGBkb19pcHY2X3NldHNvY2tvcHRgIGlzIHRoZSBjb3JlIElQdjYgc2V0c29ja29wdCBmdW5jdGlvbi5cblxuVGhlbiBJIGNvbnNpZGVyZWQgb3RoZXIgcmVsYXRlZCBmdW5jdGlvbnM6IGBudm1lX3RjcF9hbGxvY19xdWV1ZWAsIGBudm1ldF90Y3Bfc2V0X3F1ZXVlX3NvY2tgLCBgX19pcDZfc29ja19zZXRfdGNsYXNzYCwgYW5kIGBpcDZfc29ja19zZXRfdGNsYXNzYC4gU2luY2UgYG52bWVfdGNwX2FsbG9jX3F1ZXVlYCBhbmQgYG52bWV0X3RjcF9zZXRfcXVldWVfc29ja2AgYXJlIGRpcmVjdGx5IG1vZGlmaWVkIGFuZCBjb250YWluIHRoZSBtYWluIGxvZ2ljLCB0aGV5IGxvb2sgcmVsZXZhbnQuIExldCdzIHNlZSBpZiB0aGV5IGFyZSBpbmxpbmVkLiBObywgdGhleSBzZWVtIHRvIGJlIGxhcmdlIGVub3VnaCB0byBub3QgYmUgaW5saW5lZC4gYF9faXA2X3NvY2tfc2V0X3RjbGFzc2AgaXNuJ3QgZXhwb3J0ZWQsIGJ1dCBgaXA2X3NvY2tfc2V0X3RjbGFzc2AgaXMuIGBfX2lwNl9zb2NrX3NldF90Y2xhc3NgIGlzIGluIGBuZXQvaXB2Ni9pcHY2X3NvY2tnbHVlLmNgLlxuXG5Pa2F5LCB0aGUgcHJvbXB0IHdhbnRzIHVzIHRvIGZhdm9yIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50cyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zLiBMZXQncyByZXZpc2l0IHRoZSBwcmV2aW91cyBsaXN0LiBgbnZtZl9kZXZfd3JpdGVgIGlzIHN0YXRpYywgYnV0IGFuIGVudHJ5IHBvaW50IChmb3BzKS4gYG52bWVfdGNwX2NyZWF0ZV9jdHJsYCBpcyBzdGF0aWMsIGJ1dCBpcyBhbiBlbnRyeSBwb2ludCAodHJhbnNwb3J0IG9wcykuIGBudm1ldF90Y3BfYWNjZXB0X3dvcmtgIGlzIHN0YXRpYywgYnV0IGlzIGEgd29ya3F1ZXVlIGZ1bmN0aW9uLiBgZG9faXB2Nl9zZXRzb2Nrb3B0YCBhbmQgYGlwNl9zb2NrX3NldF90Y2xhc3NgIGFyZSBub24tc3RhdGljLiBMZXQncyBhbHNvIGtlZXAgYG52bWVfdGNwX2FsbG9jX3F1ZXVlYCBhbmQgYG52bWV0X3RjcF9zZXRfcXVldWVfc29ja2AuXG5cblNvLCB0aGUgZGVmaW5pdGl2ZSBsaXN0IHRvIGZvY3VzIG9uOiBgbnZtZl9kZXZfd3JpdGVgLCBgbnZtZV90Y3BfY3JlYXRlX2N0cmxgLCBgbnZtZXRfdGNwX2FjY2VwdF93b3JrYCwgYGRvX2lwdjZfc2V0c29ja29wdGAsIGBpcDZfc29ja19zZXRfdGNsYXNzYCwgYG52bWVfdGNwX2FsbG9jX3F1ZXVlYCBhbmQgYG52bWV0X3RjcF9zZXRfcXVldWVfc29ja2AuXG5cbk5vdywgZG91YmxlLWNoZWNraW5nLCBgbnZtZl9kZXZfd3JpdGVgIGlzIGFzc2lnbmVkIHRvIGBudm1mX2Rldl9mb3BzLndyaXRlYCwgYW5kIGNhbGxlZCBieSBWRlMuIGBudm1lX3RjcF9jcmVhdGVfY3RybGAgaXMgYXNzaWduZWQgdG8gYG52bWVfdGNwX3RyYW5zcG9ydC5jcmVhdGVfY3RybGAuIFRoZXNlIGFyZSBmaW5lIGVudHJ5IHBvaW50cy5cblxuVGhlIGNvcmUgY29uZmlncyBhcmUgYE5WTUVfVENQYCwgYE5WTUVfVEFSR0VUX1RDUGAsIGBOVk1FX1RBUkdFVGAsIGFuZCBgSVBWNmAuXG5cbkluIHN1bW1hcnksIHRoaXMgcGF0Y2ggYWRkcyBgdGNsYXNzYCBzdXBwb3J0IGZvciBJUHY2IHdpdGhpbiB0aGUgTlZNZSBvdmVyIFRDUCBob3N0IGFuZCB0YXJnZXQgZHJpdmVycy4gSXQgaW1wYWN0cyB0aGUgTlZNZSBmYWJyaWNzIG9wdGlvbiBwYXJzaW5nLCBzZXRzIHRoZSB0cmFmZmljIGNsYXNzIG9uIHRoZSBUQ1Agc29ja2V0cyB1c2luZyBgaXA2X3NvY2tfc2V0X3RjbGFzc2AsIGFuZCByZWZhY3RvcnMgSVB2NiBzb2NrZXQgZ2x1ZSB0byBleHBvcnQgdGhpcyBmdW5jdGlvbi4gVGhlIGNoYW5nZXMgYXJlIGZ1bmN0aW9uYWwgbW9kaWZpY2F0aW9ucyB0byBjb3JlIG5ldHdvcmtpbmcgYW5kIE5WTWUgZHJpdmVycywgd2hpY2ggY2FuIGJlIHRlc3RlZCB1c2luZyBsb29wYmFjayBvciB2aXJ0dWFsIG5ldHdvcmsgaW50ZXJmYWNlcy4gUmVhZHkgdG8gcHJvY2VlZC5cblxuXG4iLCJJbnB1dFRva2VucyI6MjAzMjMsIk91dHB1dFRva2VucyI6MjA5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTA3NywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wOFQwNzoyODoyOS4zNDgyMjA3MzlaIiwiU2VxIjo0NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo4MTgyNTUzMiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiTlZNRV9UQ1BcIixcbiAgICBcIk5WTUVfVEFSR0VUX1RDUFwiLFxuICAgIFwiTlZNRV9UQVJHRVRcIixcbiAgICBcIklQVjZcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJudm1mX2Rldl93cml0ZVwiLFxuICAgIFwibnZtZV90Y3BfY3JlYXRlX2N0cmxcIixcbiAgICBcIm52bWV0X3RjcF9hY2NlcHRfd29ya1wiLFxuICAgIFwiZG9faXB2Nl9zZXRzb2Nrb3B0XCIsXG4gICAgXCJpcDZfc29ja19zZXRfdGNsYXNzXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggYWRkcyBzdXBwb3J0IGZvciB0aGUgYHRjbGFzc2AgKElQdjYgdHJhZmZpYyBjbGFzcykgb3B0aW9uIHRvIHRoZSBOVk1lIG92ZXIgVENQIGhvc3QgYW5kIHRhcmdldCBkcml2ZXJzLiBJdCBtb2RpZmllcyB0aGUgTlZNZSBmYWJyaWNzIG9wdGlvbiBwYXJzaW5nLCBzZXRzIHRoZSB0cmFmZmljIGNsYXNzIG9uIHRoZSBUQ1Agc29ja2V0cyB1c2luZyBgaXA2X3NvY2tfc2V0X3RjbGFzc2AsIGFuZCByZWZhY3RvcnMgSVB2NiBzb2NrZXQgZ2x1ZSB0byBleHBvcnQgdGhpcyBmdW5jdGlvbi4gVGhlc2UgYXJlIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byByZWFjaGFibGUgY29yZSBuZXR3b3JraW5nIGFuZCBOVk1lIGRyaXZlcnMsIHdoaWNoIGNhbiBiZSB0ZXN0ZWQgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIHVzaW5nIGxvb3BiYWNrIG9yIHZpcnR1YWwgbmV0d29yayBpbnRlcmZhY2VzLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIk5WTUVfVENQXCIsXG4gICAgXCJOVk1FX1RBUkdFVF9UQ1BcIixcbiAgICBcIk5WTUVfVEFSR0VUXCIsXG4gICAgXCJJUFY2XCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwibnZtZl9kZXZfd3JpdGVcIixcbiAgICBcIm52bWVfdGNwX2NyZWF0ZV9jdHJsXCIsXG4gICAgXCJudm1ldF90Y3BfYWNjZXB0X3dvcmtcIixcbiAgICBcImRvX2lwdjZfc2V0c29ja29wdFwiLFxuICAgIFwiaXA2X3NvY2tfc2V0X3RjbGFzc1wiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGFkZHMgc3VwcG9ydCBmb3IgdGhlIGB0Y2xhc3NgIChJUHY2IHRyYWZmaWMgY2xhc3MpIG9wdGlvbiB0byB0aGUgTlZNZSBvdmVyIFRDUCBob3N0IGFuZCB0YXJnZXQgZHJpdmVycy4gSXQgbW9kaWZpZXMgdGhlIE5WTWUgZmFicmljcyBvcHRpb24gcGFyc2luZywgc2V0cyB0aGUgdHJhZmZpYyBjbGFzcyBvbiB0aGUgVENQIHNvY2tldHMgdXNpbmcgYGlwNl9zb2NrX3NldF90Y2xhc3NgLCBhbmQgcmVmYWN0b3JzIElQdjYgc29ja2V0IGdsdWUgdG8gZXhwb3J0IHRoaXMgZnVuY3Rpb24uIFRoZXNlIGFyZSBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gcmVhY2hhYmxlIGNvcmUgbmV0d29ya2luZyBhbmQgTlZNZSBkcml2ZXJzLCB3aGljaCBjYW4gYmUgdGVzdGVkIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyB1c2luZyBsb29wYmFjayBvciB2aXJ0dWFsIG5ldHdvcmsgaW50ZXJmYWNlcy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDhUMDc6Mjg6MjkuNDMwMDU1WiIsIlNlcSI6NDUsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoiSWYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMjQ2MzIzNTIyMywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA4VDA3OjI4OjI5LjQzMDcxOTA1WiIsIlNlcSI6NDYsIk5lc3RpbmciOjIsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJrbXNhbi1ldmFsdWF0b3IiLCJNb2RlbCI6ImJlc3QtZXhwZW5zaXZlIiwiRHVyYXRpb24iOjEyNDYyNTY2OTEzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJLTVNBTlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBpbnRyb2R1Y2VzIHBhcnNpbmcgZm9yIGEgbmV3IE5WTWUtb0YgVENQIG9wdGlvbiAoYHRjbGFzc2ApIGFuZCBhcHBsaWVzIGl0IHRvIHRoZSB1bmRlcmx5aW5nIHNvY2tldCB1c2luZyBzdGFuZGFyZCBJUHY2IHNvY2tldCBvcHRpb24gaGVscGVycy4gSXQgZXh0cmFjdHMgdGhlIHRyYWZmaWMgY2xhc3Mgc2V0dGluZyBsb2dpYyBpbnRvIGEgbmV3IGhlbHBlciBmdW5jdGlvbiBgaXA2X3NvY2tfc2V0X3RjbGFzc2AuIE5vIG5ldyBkYXRhIHN0cnVjdHVyZXMgYXJlIGFsbG9jYXRlZCwgY29waWVkIHRvIHVzZXIgc3BhY2UsIG9yIHNlbnQgb3ZlciB0aGUgbmV0d29yayBpbiBhIHdheSB0aGF0IGNvdWxkIGV4cG9zZSB1bmluaXRpYWxpemVkIG1lbW9yeS4gVGhlIHZhcmlhYmxlcyBhbmQgZmllbGRzIGludm9sdmVkIGFyZSBzaW1wbGUgaW50ZWdlcnMgYW5kIGFyZSBwcm9wZXJseSBpbml0aWFsaXplZC4gU3RhbmRhcmQgS0FTQU4gZnV6emluZyBpcyBzdWZmaWNpZW50IHRvIGNhdGNoIGFueSBwb3RlbnRpYWwgbWVtb3J5IGNvcnJ1cHRpb24sIG91dC1vZi1ib3VuZHMsIG9yIHVzZS1hZnRlci1mcmVlIGJ1Z3MuXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIHNlY3VyaXR5IGVuZ2luZWVyIHNwZWNpYWxpemluZyBpbiBrZXJuZWwgbWVtb3J5XG5lcnJvciBkZXRlY3RvcnMgKEtBU0FOIGFuZCBLTVNBTikuIFlvdXIgam9iIGlzIHRvIHJldmlldyB0aGUgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZFxuZGV0ZXJtaW5lIGlmIHRoZSBjb2RlIGNoYW5nZXMganVzdGlmeSBzcGF3bmluZyBhIGRlZGljYXRlZCBLTVNBTiAoS2VybmVsTWVtb3J5U2FuaXRpemVyKVxuZnV6emluZyBzZXNzaW9uIGluIGFkZGl0aW9uIHRvIHN0YW5kYXJkIEtBU0FOIGZ1enppbmcuXG5cbkNSSVRJQ0FMIERJU1RJTkNUSU9OIEJFVFdFRU4gS0FTQU4gQU5EIEtNU0FOOlxuLSBTdGFuZGFyZCBLQVNBTiBrZXJuZWwgYnVpbGRzICh1cHN0cmVhbS1hcHBhcm1vci1rYXNhbi5jb25maWcpIGFscmVhZHkgZW5hYmxlXG4gIGEgY29tcHJlaGVuc2l2ZSBzdWl0ZSBvZiBkZWJ1Z2dpbmcgdG9vbHMgYW5kIHNhbml0aXplcnMsIGluY2x1ZGluZyBLQVNBTlxuICAob3V0LW9mLWJvdW5kcyBhY2Nlc3NlcywgdXNlLWFmdGVyLWZyZWUsIGRvdWJsZSBmcmVlLCBpbnZhbGlkIGZyZWUpLCBMT0NLREVQXG4gIChsb2NraW5nIGJ1Z3MgYW5kIGRlYWRsb2NrcyksIFVCLXNhbml0aXplcnMsIGFuZCBtZW1vcnkgY29ycnVwdGlvbiBjaGVja3MuXG4tIEtNU0FOIChLZXJuZWxNZW1vcnlTYW5pdGl6ZXIpIGRldGVjdHMgcmVhZHMgb2YgVU5JTklUSUFMSVpFRCBtZW1vcnkgKHN0YWNrLCBoZWFwLFxuICBvciBwYWdlIGFsbG9jYXRpb25zKSBhbmQga2VybmVsLXRvLXVzZXIgbWVtb3J5IGluZm8tbGVha3MuXG5cblJ1bGU6IFRIRVJFIElTIE5PIFNFTlNFIElOIFJVTk5JTkcgQSBLTVNBTiBTRVNTSU9OIElGIEEgQlVHIENBTiBCRSBDQVVHSFQgQlkgS0FTQU4sXG5MT0NLREVQLCBPUiBPVEhFUiBTVEFOREFSRCBCVUcgREVURUNUT1JTLlxuQSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGluY3VycyBzaWduaWZpY2FudCByZXNvdXJjZSBjb3N0cy4gWW91IG11c3QgT05MWVxuc2V0IE5lZWRzS01TQU49dHJ1ZSBpZiB0aGUgY29kZSBjaGFuZ2VzIGludHJvZHVjZSBvciBleHBvc2UgVU5JTklUSUFMSVpFRCBNRU1PUlkgcmlza3NcbnRoYXQgYXJlIGRldGVjdGVkIE9OTFkgYnkgS01TQU4uXG5cbkxvb2sgaG9saXN0aWNhbGx5IGF0IHRoZSBwYXRjaCBzZXJpZXMgYW5kIHN1cnJvdW5kaW5nIGNvZGUuIEV2ZW4gaWYgbm8gZGlyZWN0XG51bmluaXRpYWxpemVkIGZpZWxkIGFjY2Vzc2VzIG9yIG5ldyBidWZmZXIgYWxsb2NhdGlvbnMgYXJlIGFkZGVkIGluIHRoZSBkaWZmIGl0c2VsZixcbmEgcGF0Y2ggbWF5IGFsdGVyIGNvbnRyb2wgZmxvdywgYm91bmRzIGNoZWNraW5nLCBvciBkYXRhIGxlbmd0aCBjYWxjdWxhdGlvbnMgaW4gd2F5c1xudGhhdCBjaGFuZ2UgaG93IHRoZSByZXN0IG9mIHRoZSBjb2RlIG9wZXJhdGVzIG9uIGV4aXN0aW5nIGJ1ZmZlcnMgKGUuZy4gYWxsb3dpbmdcbnVuaW5pdGlhbGl6ZWQgc3RhY2svaGVhcCBtZW1vcnkgdG8gYmUgcmVhZCwgY29waWVkIHRvIHVzZXIgc3BhY2UsIG9yIHVzZWQgaW4gY29udHJvbFxuZmxvdykuIERvIG5vdCBoZXNpdGF0ZSB0byB1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBpbnNwZWN0IHRoZSBzdXJyb3VuZGluZyBjb2RlLFxuY2FsbGVkIGZ1bmN0aW9ucywgYW5kIGNhbGxlcnMuXG5cblNldCBOZWVkc0tNU0FOPXRydWUgT05MWSBJRiB0aGUgcGF0Y2ggaW50cm9kdWNlcyBvciBtb2RpZmllczpcbjEuIEtlcm5lbCBzdHJ1Y3R1cmVzIHNlbnQgdG8gdXNlciBzcGFjZSAodmlhIGNvcHlfdG9fdXNlciwgcHV0X3VzZXIsIG5ldGxpbmsgc2tiXG4gICBhdHRyaWJ1dGVzLCBpb2N0bCBvdXRwdXQgYXJndW1lbnRzLCBzb2NrZXQgb3B0aW9ucywgb3IgQlBGIGJ1ZmZlcnMpIHdoZXJlIGZpZWxkc1xuICAgb3Igc3RydWN0dXJlIHBhZGRpbmcgbWlnaHQgbm90IGJlIGZ1bGx5IGluaXRpYWxpemVkL3plcm9lZC5cbjIuIENvbmRpdGlvbmFsIGxvZ2ljIG9yIGJyYW5jaGluZyB0aGF0IGRlcGVuZHMgb24gcG90ZW50aWFsbHkgdW5pbml0aWFsaXplZCB2YXJpYWJsZXNcbiAgIG9yIHN0cnVjdCBmaWVsZHMuXG4zLiBBbGxvY2F0aW9uIG9yIGluaXRpYWxpemF0aW9uIG9mIGNvbXBsZXggZGF0YSBzdHJ1Y3R1cmVzIHdoZXJlIHVuaW5pdGlhbGl6ZWQgZmllbGRzXG4gICBjb3VsZCBiZSByZWFkIGxhdGVyIGluIHJlYWNoYWJsZSBjb2RlIHBhdGhzLlxuNC4gQm91bmRzIGNoZWNrcywgbGVuZ3Rocywgb3IgbG9naWMgaW4gYSB3YXkgdGhhdCBhbGxvd3Mgc3Vycm91bmRpbmcgY29kZSB0byBhY2Nlc3NcbiAgIHVuaW5pdGlhbGl6ZWQgYnl0ZXMgb2YgZXhpc3RpbmcgYnVmZmVycy5cblxuU2V0IE5lZWRzS01TQU49ZmFsc2UgSUY6XG4tIFRoZSBjb2RlIGNoYW5nZXMgcHJpbWFyaWx5IHJpc2sgb3V0LW9mLWJvdW5kcyBhY2Nlc3MsIGFycmF5IG92ZXJmbG93cywgTlVMTCBwb2ludGVyXG4gIGRlcmVmZXJlbmNlcywgbG9ja2luZyBkZWFkbG9ja3MsIG9yIHVzZS1hZnRlci1mcmVlIGJ1Z3MgKHRoZXNlIGFyZSBhbHJlYWR5IGNhdWdodFxuICBieSBLQVNBTiwgTE9DS0RFUCwgb3Igc3RhbmRhcmQgYnVnIGRldGVjdG9ycykuXG4tIEFsbCBzdGFjay9oZWFwIHN0cnVjdHVyZXMgdG91Y2hlZCBvciBpbnRyb2R1Y2VkIGJ5IHRoZSBwYXRjaCBhcmUgZnVsbHkgemVyb2VkXG4gIG9yIGluaXRpYWxpemVkIChlLmcuIHVzaW5nID0gezB9LCBtZW1zZXQsIGt6YWxsb2MpIGJlZm9yZSBiZWluZyByZWFkIG9yIGNvcGllZC5cbi0gVGhlIHBhdGNoIGRvZXMgbm90IGludHJvZHVjZSBhbnkgcmlzayBvZiB1bmluaXRpYWxpemVkIG1lbW9yeSB1c2FnZSBvciBpbmZvLWxlYWtzLlxuXG5Vc2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBpbnNwZWN0IHRoZSBzdXJyb3VuZGluZyBjb2RlIGlmIG5lY2Vzc2FyeSwgdGhlbiBwcm92aWRlXG5kZXRhaWxlZCBLTVNBTlJlYXNvbmluZyBjb250cmFzdGluZyBLQVNBTiB2cyBLTVNBTiBhcHBsaWNhYmlsaXR5IGZvciB0aGlzIHBhdGNoLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgODQ3NzNjMDRlNmRhMTRlMzQwYTBlZDBhMTY1NmZmMjcxZjExM2QzOFxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBTYXQgQXVnIDggMDc6MjY6MjEgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL252bWUvaG9zdC9mYWJyaWNzLmMgYi9kcml2ZXJzL252bWUvaG9zdC9mYWJyaWNzLmNcbmluZGV4IGFjM2Q0ZjQwMDYwMWYuLjY0M2MwM2RjN2JjYjMgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL252bWUvaG9zdC9mYWJyaWNzLmNcbisrKyBiL2RyaXZlcnMvbnZtZS9ob3N0L2ZhYnJpY3MuY1xuQEAgLTY5NSw2ICs2OTUsNyBAQCBzdGF0aWMgY29uc3QgbWF0Y2hfdGFibGVfdCBvcHRfdG9rZW5zID0ge1xuIFx0eyBOVk1GX09QVF9OUl9XUklURV9RVUVVRVMsXHRcIm5yX3dyaXRlX3F1ZXVlcz0lZFwiXHR9LFxuIFx0eyBOVk1GX09QVF9OUl9QT0xMX1FVRVVFUyxcdFwibnJfcG9sbF9xdWV1ZXM9JWRcIlx0fSxcbiBcdHsgTlZNRl9PUFRfVE9TLFx0XHRcdFwidG9zPSVkXCJcdFx0fSxcbitcdHsgTlZNRl9PUFRfVENMQVNTLFx0XHRcInRjbGFzcz0lZFwiXHRcdH0sXG4gI2lmZGVmIENPTkZJR19OVk1FX1RDUF9UTFNcbiBcdHsgTlZNRl9PUFRfS0VZUklORyxcdFx0XCJrZXlyaW5nPSVkXCJcdFx0fSxcbiBcdHsgTlZNRl9PUFRfVExTX0tFWSxcdFx0XCJ0bHNfa2V5PSVkXCJcdFx0fSxcbkBAIC03MzQsNiArNzM1LDcgQEAgc3RhdGljIGludCBudm1mX3BhcnNlX29wdGlvbnMoc3RydWN0IG52bWZfY3RybF9vcHRpb25zICpvcHRzLFxuIFx0b3B0cy1cdTAwM2VoZHJfZGlnZXN0ID0gZmFsc2U7XG4gXHRvcHRzLVx1MDAzZWRhdGFfZGlnZXN0ID0gZmFsc2U7XG4gXHRvcHRzLVx1MDAzZXRvcyA9IC0xOyAvKiBcdTAwM2MgMCA9PSB1c2UgdHJhbnNwb3J0IGRlZmF1bHQgKi9cbitcdG9wdHMtXHUwMDNldGNsYXNzID0gLTE7IC8qIFx1MDAzYyAwID09IHVzZSB0cmFuc3BvcnQgZGVmYXVsdCAqL1xuIFx0b3B0cy1cdTAwM2V0bHMgPSBmYWxzZTtcbiBcdG9wdHMtXHUwMDNldGxzX2tleSA9IE5VTEw7XG4gXHRvcHRzLVx1MDAzZWtleXJpbmcgPSBOVUxMO1xuQEAgLTk5MSw2ICs5OTMsMjIgQEAgc3RhdGljIGludCBudm1mX3BhcnNlX29wdGlvbnMoc3RydWN0IG52bWZfY3RybF9vcHRpb25zICpvcHRzLFxuIFx0XHRcdH1cbiBcdFx0XHRvcHRzLVx1MDAzZXRvcyA9IHRva2VuO1xuIFx0XHRcdGJyZWFrO1xuK1x0XHRjYXNlIE5WTUZfT1BUX1RDTEFTUzpcbitcdFx0XHRpZiAobWF0Y2hfaW50KGFyZ3MsIFx1MDAyNnRva2VuKSkge1xuK1x0XHRcdFx0cmV0ID0gLUVJTlZBTDtcbitcdFx0XHRcdGdvdG8gb3V0O1xuK1x0XHRcdH1cbitcdFx0XHRpZiAodG9rZW4gXHUwMDNjIDApIHtcbitcdFx0XHRcdHByX2VycihcIkludmFsaWQgdHJhZmZpYyBjbGFzcyAlZFxcblwiLCB0b2tlbik7XG4rXHRcdFx0XHRyZXQgPSAtRUlOVkFMO1xuK1x0XHRcdFx0Z290byBvdXQ7XG4rXHRcdFx0fVxuK1x0XHRcdGlmICh0b2tlbiBcdTAwM2UgMjU1KSB7XG4rXHRcdFx0XHRwcl93YXJuKFwiQ2xhbXBpbmcgdHJhZmZpYyBjbGFzcyB0byAyNTVcXG5cIik7XG4rXHRcdFx0XHR0b2tlbiA9IDI1NTtcbitcdFx0XHR9XG4rXHRcdFx0b3B0cy1cdTAwM2V0Y2xhc3MgPSB0b2tlbjtcbitcdFx0XHRicmVhaztcbiBcdFx0Y2FzZSBOVk1GX09QVF9LRVlSSU5HOlxuIFx0XHRcdGlmIChtYXRjaF9pbnQoYXJncywgXHUwMDI2a2V5X2lkKSB8fCBrZXlfaWQgXHUwMDNjPSAwKSB7XG4gXHRcdFx0XHRyZXQgPSAtRUlOVkFMO1xuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbnZtZS9ob3N0L2ZhYnJpY3MuaCBiL2RyaXZlcnMvbnZtZS9ob3N0L2ZhYnJpY3MuaFxuaW5kZXggY2FmNTUwM2QwODMzMi4uM2RmZDQwYmQ4OTYwNSAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbnZtZS9ob3N0L2ZhYnJpY3MuaFxuKysrIGIvZHJpdmVycy9udm1lL2hvc3QvZmFicmljcy5oXG5AQCAtNjcsNiArNjcsNyBAQCBlbnVtIHtcbiBcdE5WTUZfT1BUX0tFWVJJTkdcdD0gMSBcdTAwM2NcdTAwM2MgMjYsXG4gXHROVk1GX09QVF9UTFNfS0VZXHQ9IDEgXHUwMDNjXHUwMDNjIDI3LFxuIFx0TlZNRl9PUFRfQ09OQ0FUXHRcdD0gMSBcdTAwM2NcdTAwM2MgMjgsXG4rXHROVk1GX09QVF9UQ0xBU1NcdFx0PSAxIFx1MDAzY1x1MDAzYyAyOSxcbiB9O1xuIFxuIC8qKlxuQEAgLTEwOSw2ICsxMTAsNyBAQCBlbnVtIHtcbiAgKiBAbnJfd3JpdGVfcXVldWVzOiBudW1iZXIgb2YgcXVldWVzIGZvciB3cml0ZSBJL09cbiAgKiBAbnJfcG9sbF9xdWV1ZXM6IG51bWJlciBvZiBxdWV1ZXMgZm9yIHBvbGxpbmcgSS9PXG4gICogQHRvczogdHlwZSBvZiBzZXJ2aWNlXG4rICogQHRjbGFzczogSVB2NiB0cmFmZmljIGNsYXNzXG4gICogQGZhc3RfaW9fZmFpbF90bW86IEZhc3QgSS9PIGZhaWwgdGltZW91dCBpbiBzZWNvbmRzXG4gICovXG4gc3RydWN0IG52bWZfY3RybF9vcHRpb25zIHtcbkBAIC0xMzksNiArMTQxLDcgQEAgc3RydWN0IG52bWZfY3RybF9vcHRpb25zIHtcbiBcdHVuc2lnbmVkIGludFx0XHRucl93cml0ZV9xdWV1ZXM7XG4gXHR1bnNpZ25lZCBpbnRcdFx0bnJfcG9sbF9xdWV1ZXM7XG4gXHRpbnRcdFx0XHR0b3M7XG4rXHRpbnRcdFx0XHR0Y2xhc3M7XG4gXHRpbnRcdFx0XHRmYXN0X2lvX2ZhaWxfdG1vO1xuIH07XG4gXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9udm1lL2hvc3QvdGNwLmMgYi9kcml2ZXJzL252bWUvaG9zdC90Y3AuY1xuaW5kZXggYmE1YzdiM2UyYTdjNi4uY2FiYmY2N2QyNGY4OCAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbnZtZS9ob3N0L3RjcC5jXG4rKysgYi9kcml2ZXJzL252bWUvaG9zdC90Y3AuY1xuQEAgLTE4MzcsNiArMTgzNywxMSBAQCBzdGF0aWMgaW50IG52bWVfdGNwX2FsbG9jX3F1ZXVlKHN0cnVjdCBudm1lX2N0cmwgKm5jdHJsLCBpbnQgcWlkLFxuIFx0LyogU2V0IHNvY2tldCB0eXBlIG9mIHNlcnZpY2UgKi9cbiBcdGlmIChuY3RybC1cdTAwM2VvcHRzLVx1MDAzZXRvcyBcdTAwM2U9IDApXG4gXHRcdGlwX3NvY2tfc2V0X3RvcyhxdWV1ZS1cdTAwM2Vzb2NrLVx1MDAzZXNrLCBuY3RybC1cdTAwM2VvcHRzLVx1MDAzZXRvcyk7XG4rI2lmIElTX0VOQUJMRUQoQ09ORklHX0lQVjYpXG4rXHRpZiAobmN0cmwtXHUwMDNlb3B0cy1cdTAwM2V0Y2xhc3MgXHUwMDNlPSAwIFx1MDAyNlx1MDAyNlxuK1x0ICAgIHF1ZXVlLVx1MDAzZXNvY2stXHUwMDNlc2stXHUwMDNlc2tfZmFtaWx5ID09IEFGX0lORVQ2KVxuK1x0XHRpcDZfc29ja19zZXRfdGNsYXNzKHF1ZXVlLVx1MDAzZXNvY2stXHUwMDNlc2ssIG5jdHJsLVx1MDAzZW9wdHMtXHUwMDNldGNsYXNzKTtcbisjZW5kaWZcbiBcbiBcdC8qIFNldCAxMCBzZWNvbmRzIHRpbWVvdXQgZm9yIGljcmVzcCByZWN2bXNnICovXG4gXHRxdWV1ZS1cdTAwM2Vzb2NrLVx1MDAzZXNrLVx1MDAzZXNrX3JjdnRpbWVvID0gMTAgKiBIWjtcbkBAIC0zMDQxLDcgKzMwNDYsOCBAQCBzdGF0aWMgc3RydWN0IG52bWZfdHJhbnNwb3J0X29wcyBudm1lX3RjcF90cmFuc3BvcnQgPSB7XG4gXHRcdFx0ICBOVk1GX09QVF9IT1NUX1RSQUREUiB8IE5WTUZfT1BUX0NUUkxfTE9TU19UTU8gfFxuIFx0XHRcdCAgTlZNRl9PUFRfSERSX0RJR0VTVCB8IE5WTUZfT1BUX0RBVEFfRElHRVNUIHxcbiBcdFx0XHQgIE5WTUZfT1BUX05SX1dSSVRFX1FVRVVFUyB8IE5WTUZfT1BUX05SX1BPTExfUVVFVUVTIHxcbi1cdFx0XHQgIE5WTUZfT1BUX1RPUyB8IE5WTUZfT1BUX0hPU1RfSUZBQ0UgfCBOVk1GX09QVF9UTFMgfFxuK1x0XHRcdCAgTlZNRl9PUFRfVE9TIHwgTlZNRl9PUFRfVENMQVNTIHxcbitcdFx0XHQgIE5WTUZfT1BUX0hPU1RfSUZBQ0UgfCBOVk1GX09QVF9UTFMgfFxuIFx0XHRcdCAgTlZNRl9PUFRfS0VZUklORyB8IE5WTUZfT1BUX1RMU19LRVkgfCBOVk1GX09QVF9DT05DQVQsXG4gXHQuY3JlYXRlX2N0cmxcdD0gbnZtZV90Y3BfY3JlYXRlX2N0cmwsXG4gfTtcbmRpZmYgLS1naXQgYS9kcml2ZXJzL252bWUvdGFyZ2V0L3RjcC5jIGIvZHJpdmVycy9udm1lL3RhcmdldC90Y3AuY1xuaW5kZXggNzVhMjc2ZDczYmUzZS4uMWQ2NTUxOWViYzBmYiAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbnZtZS90YXJnZXQvdGNwLmNcbisrKyBiL2RyaXZlcnMvbnZtZS90YXJnZXQvdGNwLmNcbkBAIC0xNzI1LDYgKzE3MjUsMTQgQEAgc3RhdGljIGludCBudm1ldF90Y3Bfc2V0X3F1ZXVlX3NvY2soc3RydWN0IG52bWV0X3RjcF9xdWV1ZSAqcXVldWUpXG4gXHQvKiBTZXQgc29ja2V0IHR5cGUgb2Ygc2VydmljZSAqL1xuIFx0aWYgKGluZXQtXHUwMDNlcmN2X3RvcyBcdTAwM2UgMClcbiBcdFx0aXBfc29ja19zZXRfdG9zKHNvY2stXHUwMDNlc2ssIGluZXQtXHUwMDNlcmN2X3Rvcyk7XG4rI2lmIElTX0VOQUJMRUQoQ09ORklHX0lQVjYpXG4rXHRpZiAoc29jay1cdTAwM2Vzay1cdTAwM2Vza19mYW1pbHkgPT0gQUZfSU5FVDYpIHtcbitcdFx0dTggcmN2X3RjbGFzcyA9IGlwNl90Y2xhc3MoaW5ldDZfc2soc29jay1cdTAwM2VzayktXHUwMDNlcmN2X2Zsb3dpbmZvKTtcbitcbitcdFx0aWYgKHJjdl90Y2xhc3MgXHUwMDNlIDApXG4rXHRcdFx0aXA2X3NvY2tfc2V0X3RjbGFzcyhzb2NrLVx1MDAzZXNrLCByY3ZfdGNsYXNzKTtcbitcdH1cbisjZW5kaWZcbiBcbiBcdHJldCA9IDA7XG4gXHR3cml0ZV9sb2NrX2JoKFx1MDAyNnNvY2stXHUwMDNlc2stXHUwMDNlc2tfY2FsbGJhY2tfbG9jayk7XG5kaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZXQvaXB2Ni5oIGIvaW5jbHVkZS9uZXQvaXB2Ni5oXG5pbmRleCAzZGUwN2U3Mzg1MzhmLi44MmU1N2IzNGJhNTdmIDEwMDY0NFxuLS0tIGEvaW5jbHVkZS9uZXQvaXB2Ni5oXG4rKysgYi9pbmNsdWRlL25ldC9pcHY2LmhcbkBAIC0xMjUyLDYgKzEyNTIsOSBAQCBzdGF0aWMgaW5saW5lIHZvaWQgaXA2X3NvY2tfc2V0X3JlY3ZlcnIoc3RydWN0IHNvY2sgKnNrKVxuIFx0aW5ldDZfc2V0X2JpdChSRUNWRVJSNiwgc2spO1xuIH1cbiBcbit2b2lkIF9faXA2X3NvY2tfc2V0X3RjbGFzcyhzdHJ1Y3Qgc29jayAqc2ssIGludCB2YWwpO1xuK3ZvaWQgaXA2X3NvY2tfc2V0X3RjbGFzcyhzdHJ1Y3Qgc29jayAqc2ssIGludCB2YWwpO1xuK1xuICNkZWZpbmUgSVBWNl9QUkVGRVJfU1JDX01BU0sgKElQVjZfUFJFRkVSX1NSQ19UTVAgfCBJUFY2X1BSRUZFUl9TUkNfUFVCTElDIHwgXFxcbiBcdFx0XHQgICAgICBJUFY2X1BSRUZFUl9TUkNfQ09BKVxuIFxuZGlmZiAtLWdpdCBhL25ldC9pcHY2L2lwdjZfc29ja2dsdWUuYyBiL25ldC9pcHY2L2lwdjZfc29ja2dsdWUuY1xuaW5kZXggYjRjOTc3NDM0YzJlMC4uYzU5ZjI1ZmJiMzM2ZCAxMDA2NDRcbi0tLSBhL25ldC9pcHY2L2lwdjZfc29ja2dsdWUuY1xuKysrIGIvbmV0L2lwdjYvaXB2Nl9zb2NrZ2x1ZS5jXG5AQCAtMzczLDYgKzM3MywyOCBAQCBzdGF0aWMgaW50IGlwdjZfc2V0X29wdF9oZHIoc3RydWN0IHNvY2sgKnNrLCBpbnQgb3B0bmFtZSwgc29ja3B0cl90IG9wdHZhbCxcbiBcdHJldHVybiBlcnI7XG4gfVxuIFxuK3ZvaWQgX19pcDZfc29ja19zZXRfdGNsYXNzKHN0cnVjdCBzb2NrICpzaywgaW50IHZhbClcbit7XG4rXHR1OCBvbGRfdGNsYXNzID0gaW5ldDZfc2soc2spLVx1MDAzZXRjbGFzcztcbitcbitcdGlmIChzay1cdTAwM2Vza190eXBlID09IFNPQ0tfU1RSRUFNKSB7XG4rXHRcdHZhbCBcdTAwMjY9IH5JTkVUX0VDTl9NQVNLO1xuK1x0XHR2YWwgfD0gb2xkX3RjbGFzcyBcdTAwMjYgSU5FVF9FQ05fTUFTSztcbitcdH1cbitcdGlmIChvbGRfdGNsYXNzICE9IHZhbCkge1xuK1x0XHRXUklURV9PTkNFKGluZXQ2X3NrKHNrKS1cdTAwM2V0Y2xhc3MsIHZhbCk7XG4rXHRcdHNrX2RzdF9yZXNldChzayk7XG4rXHR9XG4rfVxuK1xuK3ZvaWQgaXA2X3NvY2tfc2V0X3RjbGFzcyhzdHJ1Y3Qgc29jayAqc2ssIGludCB2YWwpXG4re1xuK1x0c29ja29wdF9sb2NrX3NvY2soc2spO1xuK1x0X19pcDZfc29ja19zZXRfdGNsYXNzKHNrLCB2YWwpO1xuK1x0c29ja29wdF9yZWxlYXNlX3NvY2soc2spO1xuK31cbitFWFBPUlRfU1lNQk9MKGlwNl9zb2NrX3NldF90Y2xhc3MpO1xuK1xuIGludCBkb19pcHY2X3NldHNvY2tvcHQoc3RydWN0IHNvY2sgKnNrLCBpbnQgbGV2ZWwsIGludCBvcHRuYW1lLFxuIFx0XHQgICAgICAgc29ja3B0cl90IG9wdHZhbCwgdW5zaWduZWQgaW50IG9wdGxlbilcbiB7XG5AQCAtNzEzLDE0ICs3MzUsNyBAQCBpbnQgZG9faXB2Nl9zZXRzb2Nrb3B0KHN0cnVjdCBzb2NrICpzaywgaW50IGxldmVsLCBpbnQgb3B0bmFtZSxcbiBcdFx0LyogUkZDIDM1NDIsIDYuNTogZGVmYXVsdCB0cmFmZmljIGNsYXNzIG9mIDB4MCAqL1xuIFx0XHRpZiAodmFsID09IC0xKVxuIFx0XHRcdHZhbCA9IDA7XG4tXHRcdGlmIChzay1cdTAwM2Vza190eXBlID09IFNPQ0tfU1RSRUFNKSB7XG4tXHRcdFx0dmFsIFx1MDAyNj0gfklORVRfRUNOX01BU0s7XG4tXHRcdFx0dmFsIHw9IG5wLVx1MDAzZXRjbGFzcyBcdTAwMjYgSU5FVF9FQ05fTUFTSztcbi1cdFx0fVxuLVx0XHRpZiAobnAtXHUwMDNldGNsYXNzICE9IHZhbCkge1xuLVx0XHRcdG5wLVx1MDAzZXRjbGFzcyA9IHZhbDtcbi1cdFx0XHRza19kc3RfcmVzZXQoc2spO1xuLVx0XHR9XG4rXHRcdF9faXA2X3NvY2tfc2V0X3RjbGFzcyhzaywgdmFsKTtcbiBcdFx0cmV0diA9IDA7XG4gXHRcdGJyZWFrO1xuIFxuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDhUMDc6Mjg6MjkuNDMwNzE5ODRaIiwiU2VxIjo0NywiTmVzdGluZyI6MywiVHlwZSI6ImxsbSIsIk5hbWUiOiJrbXNhbi1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MTI0NjI1NDM4OTMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTlZNZS1vRiBUQ1AgVHJhZmZpYyBDbGFzcyBJbXBsZW1lbnRhdGlvbiBSZXZpZXcqKlxuXG5Pa2F5LCBsZXQncyBicmVhayB0aGlzIGRvd24uIFRoaXMgcGF0Y2ggaXMgYWRkaW5nIHN1cHBvcnQgZm9yIHRoZSBgdGNsYXNzYCBvcHRpb24sIHNwZWNpZmljYWxseSBmb3IgSVB2NiB0cmFmZmljIGNsYXNzLCB3aXRoaW4gdGhlIE5WTWUtb0YgVENQIHRyYW5zcG9ydC4gVGhpcyBtZWFucyB3ZSdyZSBhbGxvd2luZyB1c2VycyB0byBzcGVjaWZ5IHRoZSB0cmFmZmljIGNsYXNzIGZvciBOVk1lLW9GIFRDUCBjb25uZWN0aW9ucywgZW5hYmxpbmcgUXVhbGl0eSBvZiBTZXJ2aWNlIChRb1MpIGNvbmZpZ3VyYXRpb25zLlxuXG5UaGUgY29yZSBvZiBpdCBpcyBzdHJhaWdodGZvcndhcmQuIFdlJ3JlIGFkZGluZyBgTlZNRl9PUFRfVENMQVNTYCB0byB0aGUgYG9wdF90b2tlbnNgLCBwYXJzaW5nIHRoZSB2YWx1ZSBpbiBgbnZtZl9wYXJzZV9vcHRpb25zYCBhbmQgc3RvcmluZyBpdCBpbiBgb3B0cy1cdTAwM2V0Y2xhc3NgLiBUaGVuLCBjcnVjaWFsbHksIHdlJ3JlIHVzaW5nIGEgaGVscGVyIGZ1bmN0aW9uLCBgaXA2X3NvY2tfc2V0X3RjbGFzc2AgKHdoaWNoIGlzIGV4dHJhY3RlZCBmcm9tIGBkb19pcHY2X3NldHNvY2tvcHRgKSwgdG8gc2V0IHRoZSB0cmFmZmljIGNsYXNzIG9uIHRoZSBzb2NrZXQgaXRzZWxmLiBUaGUgdGFyZ2V0IHNpZGUgYWxzbyBzZXRzIGl0IGJhc2VkIG9uIHJlY2VpdmVkIGZsb3cgaW5mb3JtYXRpb24uXG5cbk15IHByaW1hcnkgY29uY2VybiwgYXMgYWx3YXlzLCBpcyBtZW1vcnkgc2FmZXR5LCBzcGVjaWZpY2FsbHksIHRoZSByaXNrIG9mIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHVzYWdlLiBJIG5lZWQgdG8gbWFrZSBzdXJlIHRoaXMgaXNuJ3QgaW50cm9kdWNpbmcgYW55IG5ldyB2dWxuZXJhYmlsaXRpZXMuIFNvLCBsZXQncyBzdGVwIHRocm91Z2ggaXQ6XG5cbjEuICBgb3B0cy1cdTAwM2V0Y2xhc3NgIGlzIGV4cGxpY2l0bHkgaW5pdGlhbGl6ZWQgdG8gYC0xYCBpbiBgbnZtZl9wYXJzZV9vcHRpb25zYC4gR29vZCBzdGFydC5cbjIuICBUaGUgdmFsdWUgaXRzZWxmIGlzIHBhcnNlZCB1c2luZyBgbWF0Y2hfaW50KGFyZ3MsIFx1MDAyNnRva2VuKWAuIElmIHRoZSBwYXJzaW5nIGZhaWxzLCB3ZSBlcnJvciBvdXQsIHdoaWNoIHByZXZlbnRzIHRoZSBwcm9jZXNzIGZyb20gdXNpbmcgYW4gdW5pbml0aWFsaXplZCB2YWx1ZS5cbjMuICBgaXA2X3NvY2tfc2V0X3RjbGFzc2AgdGFrZXMgYW4gaW50ZWdlciwgYHZhbGAsIGFuZCBzZXRzIGl0IG9uIGBpbmV0Nl9zayhzayktXHUwMDNldGNsYXNzYC4gVGhlIGludGVnZXIgaXMgY29taW5nIGRpcmVjdGx5IGZyb20gdGhlIHBhcnNlZCB2YWx1ZSwgc28gdGhlcmUncyBubyB3YXkgdG8gcmVhZCBhbiB1bmluaXRpYWxpemVkIG1lbW9yeSB0aGVyZS5cbjQuICBJbiB0aGUgdGFyZ2V0IHNpZGUsIGBudm1ldF90Y3Bfc2V0X3F1ZXVlX3NvY2tgIHB1bGxzIHRoZSB0cmFmZmljIGNsYXNzIChgcmN2X3RjbGFzc2ApIGZyb20gYGluZXQ2X3NrKHNvY2stXHUwMDNlc2spLVx1MDAzZXJjdl9mbG93aW5mb2AuIGBpcDZfdGNsYXNzYCBpcyBqdXN0IGFuIGlubGluZSBmdW5jdGlvbiB0aGF0IGV4dHJhY3RzIHRoZSB0cmFmZmljIGNsYXNzIGZyb20gYSBgX19iZTMyYC4gTm93LCB0aGUgaW1wb3J0YW50IHF1ZXN0aW9uIGlzOiBpcyBgcmN2X2Zsb3dpbmZvYCBpbml0aWFsaXplZD8gQWZ0ZXIgY2hlY2tpbmcgdGhlIGNvZGUsIGl0J3MgcGFydCBvZiB0aGUgc29ja2V0IHN0cnVjdHVyZSwgd2hpY2ggaXMgaW5pdGlhbGl6ZWQgd2hlbiB0aGUgc29ja2V0IGlzIGNyZWF0ZWQuIFRoYXQgcGFydCBvZiB0aGUgY29kZSBpcyBoYW5kbGVkIGJ5IHRoZSBuZXR3b3JraW5nIHN0YWNrIGFuZCBpdHMgc29ja2V0IGluaXRpYWxpemF0aW9uLCBubyBtZW1vcnkgaW5pdGlhbGl6YXRpb24gYnVncyB0aGVyZS5cblxuVGhlcmUgYXJlIG5vIG5ldyBzdHJ1Y3R1cmVzIHNlbnQgdG8gdXNlcnNwYWNlLCBubyBuZXcgbWVtb3J5IGFsbG9jYXRpb25zIHdoZXJlIHVuaW5pdGlhbGl6ZWQgZmllbGRzIGNvdWxkIGJlIHJlYWQsIGFuZCB0aGUgY2hhbmdlcyBhcmUgbGltaXRlZCB0byBjb250cm9sIGZsb3cgYW5kIHNvY2tldCBvcHRpb24gc2V0dGluZ3MuIFRoZSBkYXRhIGJlaW5nIHVzZWQgaXMgYSBzaW1wbGUgaW50ZWdlciwgYHRjbGFzc2AuIFNvLCB0aGUgcmlzayBvZiB1bmluaXRpYWxpemVkIG1lbW9yeSBpc3N1ZXMgc2VlbXMgbG93LlxuXG5MZXQgbWUganVzdCBkb3VibGUtY2hlY2sgdGhhdCB0YXJnZXQgc2lkZSBjb2RlIGFnYWluOlxuYGBgY1xuI2lmIElTX0VOQUJMRUQoQ09ORklHX0lQVjYpXG5cdGlmIChzb2NrLVx1MDAzZXNrLVx1MDAzZXNrX2ZhbWlseSA9PSBBRl9JTkVUNikge1xuXHRcdHU4IHJjdl90Y2xhc3MgPSBpcDZfdGNsYXNzKGluZXQ2X3NrKHNvY2stXHUwMDNlc2spLVx1MDAzZXJjdl9mbG93aW5mbyk7XG5cblx0XHRpZiAocmN2X3RjbGFzcyBcdTAwM2UgMClcblx0XHRcdGlwNl9zb2NrX3NldF90Y2xhc3Moc29jay1cdTAwM2VzaywgcmN2X3RjbGFzcyk7XG5cdH1cbiNlbmRpZlxuYGBgXG5cbk9rYXksIHRoZSBgaW5ldDZfc2soc29jay1cdTAwM2VzayktXHUwMDNlcmN2X2Zsb3dpbmZvYCBwYXJ0IGlzIGFjdHVhbGx5IHBvcHVsYXRlZCBieSB0aGUgbmV0d29ya2luZyBzdGFjayB3aGVuIHdlIHJlY2VpdmUgdGhlIHBhY2tldHMsIHdoaWNoIG1lYW5zIGl0IGlzIGluaXRpYWxpemVkIGFzIHBhcnQgb2YgYHN0cnVjdCBpcHY2X3BpbmZvYC5cblxuU2luY2UgdGhlcmUgYXJlIG5vIG5ldyBhbGxvY2F0aW9ucywgbm8gZXhwb3N1cmUgb2YgdW5pbml0aWFsaXplZCBtZW1vcnksIGFuZCB0aGlzIHVzZXMgc3RhbmRhcmQgc29ja2V0IHN0YXRlLCBpdCBhcHBlYXJzIHRoYXQgdGhpcyBwYXRjaCBpcyBzYWZlIGZyb20gdW5pbml0aWFsaXplZCBtZW1vcnkgcmVhZHMuIFN0YW5kYXJkIEtBU0FOIGZ1enppbmcgaXMgdGhlIGJlc3QgYXBwcm9hY2ggdG8gZmluZCBhbnkgcG90ZW50aWFsIG1lbW9yeSBjb3JydXB0aW9uLCBhbHRob3VnaCBpdCBkb2VzIG5vdCBzZWVtIGxpa2VseSBoZXJlLlxuXG5UaGVyZWZvcmUsIE5lZWRzS01TQU4gPSBmYWxzZS4gVGhlIHBhdGNoIGludHJvZHVjZXMgYSBuZXcgTlZNZS1vRiBUQ1Agb3B0aW9uIChgdGNsYXNzYCksIGFwcGxpZXMgaXQgdXNpbmcgc3RhbmRhcmQgSVB2NiBoZWxwZXJzLCBhbmQgZG9lc24ndCBpbnRyb2R1Y2UgYW55IG5ldyBkYXRhIHN0cnVjdHVyZXMgb3IgbWVtb3J5IGV4cG9zdXJlcy4gS0FTQU4gc2hvdWxkIGJlIHN1ZmZpY2llbnQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQ1MjMsIk91dHB1dFRva2VucyI6MTUxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NjgyLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDhUMDc6Mjg6NDEuODkzMjY2NTczWiIsIlNlcSI6NDgsIk5lc3RpbmciOjMsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTc0MzAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJLTVNBTlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBpbnRyb2R1Y2VzIHBhcnNpbmcgZm9yIGEgbmV3IE5WTWUtb0YgVENQIG9wdGlvbiAoYHRjbGFzc2ApIGFuZCBhcHBsaWVzIGl0IHRvIHRoZSB1bmRlcmx5aW5nIHNvY2tldCB1c2luZyBzdGFuZGFyZCBJUHY2IHNvY2tldCBvcHRpb24gaGVscGVycy4gSXQgZXh0cmFjdHMgdGhlIHRyYWZmaWMgY2xhc3Mgc2V0dGluZyBsb2dpYyBpbnRvIGEgbmV3IGhlbHBlciBmdW5jdGlvbiBgaXA2X3NvY2tfc2V0X3RjbGFzc2AuIE5vIG5ldyBkYXRhIHN0cnVjdHVyZXMgYXJlIGFsbG9jYXRlZCwgY29waWVkIHRvIHVzZXIgc3BhY2UsIG9yIHNlbnQgb3ZlciB0aGUgbmV0d29yayBpbiBhIHdheSB0aGF0IGNvdWxkIGV4cG9zZSB1bmluaXRpYWxpemVkIG1lbW9yeS4gVGhlIHZhcmlhYmxlcyBhbmQgZmllbGRzIGludm9sdmVkIGFyZSBzaW1wbGUgaW50ZWdlcnMgYW5kIGFyZSBwcm9wZXJseSBpbml0aWFsaXplZC4gU3RhbmRhcmQgS0FTQU4gZnV6emluZyBpcyBzdWZmaWNpZW50IHRvIGNhdGNoIGFueSBwb3RlbnRpYWwgbWVtb3J5IGNvcnJ1cHRpb24sIG91dC1vZi1ib3VuZHMsIG9yIHVzZS1hZnRlci1mcmVlIGJ1Z3MuXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggaW50cm9kdWNlcyBwYXJzaW5nIGZvciBhIG5ldyBOVk1lLW9GIFRDUCBvcHRpb24gKGB0Y2xhc3NgKSBhbmQgYXBwbGllcyBpdCB0byB0aGUgdW5kZXJseWluZyBzb2NrZXQgdXNpbmcgc3RhbmRhcmQgSVB2NiBzb2NrZXQgb3B0aW9uIGhlbHBlcnMuIEl0IGV4dHJhY3RzIHRoZSB0cmFmZmljIGNsYXNzIHNldHRpbmcgbG9naWMgaW50byBhIG5ldyBoZWxwZXIgZnVuY3Rpb24gYGlwNl9zb2NrX3NldF90Y2xhc3NgLiBObyBuZXcgZGF0YSBzdHJ1Y3R1cmVzIGFyZSBhbGxvY2F0ZWQsIGNvcGllZCB0byB1c2VyIHNwYWNlLCBvciBzZW50IG92ZXIgdGhlIG5ldHdvcmsgaW4gYSB3YXkgdGhhdCBjb3VsZCBleHBvc2UgdW5pbml0aWFsaXplZCBtZW1vcnkuIFRoZSB2YXJpYWJsZXMgYW5kIGZpZWxkcyBpbnZvbHZlZCBhcmUgc2ltcGxlIGludGVnZXJzIGFuZCBhcmUgcHJvcGVybHkgaW5pdGlhbGl6ZWQuIFN0YW5kYXJkIEtBU0FOIGZ1enppbmcgaXMgc3VmZmljaWVudCB0byBjYXRjaCBhbnkgcG90ZW50aWFsIG1lbW9yeSBjb3JydXB0aW9uLCBvdXQtb2YtYm91bmRzLCBvciB1c2UtYWZ0ZXItZnJlZSBidWdzLlwiLFxuICBcIk5lZWRzS01TQU5cIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0udG9rZW5zIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnVG9vbER1ciA9IHN0YXRzLnRvb2wuY291bnQgPiAwID8gKHN0YXRzLnRvb2wuZHVyYXRpb24gLyBzdGF0cy50b29sLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCgkJCWNvbnN0IGxsbVN1bWFyeUNlbGxzID0gW3N0YXRzLmxsbS5jb3VudCwgc3RhdHMubGxtLnRva2VucywgYXZnTGxtVG9rZW4sIHN0YXRzLmxsbS5kdXJhdGlvbiwgYXZnTGxtRHVyXTsKCQkJY29uc3QgdG9vbFN1bW1hcnlDZWxscyA9IFtzdGF0cy50b29sLmNvdW50LCBzdGF0cy50b29sLmR1cmF0aW9uLCBhdmdUb29sRHVyXTsKCgkJCWNvbnN0IGxsbVN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xsbV9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJbGxtU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IGxsbVRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJbGxtU3VtYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCWxsbVRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCWxsbVN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKGxsbVRyKTsKCgkJCWNvbnN0IHRvb2xTdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b29sX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQl0b29sU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IHRvb2xUciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCXRvb2xTdW1tYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCXRvb2xUci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQl0b29sU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQodG9vbFRyKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgZmlsdGVyZWRTdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gWyJsbG0iLCAidG9vbCJdLmluY2x1ZGVzKGQuVHlwZSkpOwoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdEdXJhdGlvbicpOwoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOyAKCgkJCWZpbHRlcmVkU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCQoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7CgkJCQlsZXQgdG9vbHRpcCA9IHMuTmFtZTsKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iICYmIHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCQkJCWRhdGEuYWRkUm93KFtgJHtzLlNlcX1gLCBkdXIsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUaW1lIENvbnN1bXB0aW9uIG9mIExMTS9Ub29sIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0vVG9vbCBTdGVwcycsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdTZWNvbmRzJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkdXJhdGlvbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgbGxtU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IGQuVHlwZSA9PT0gImxsbSIpOwoJCQlpZiAobGxtU3RlcHMubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdUb2tlbnMnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAnc3R5bGUnfSk7CQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOwkKCgkJCWNvbnN0IGFnZW50Q29sb3JzID0ge307CgkJCWNvbnN0IHBhbGV0dGUgPSBbJyM0Mjg1RjQnLCAnI0RCNDQzNycsICcjRjRCNDAwJywgJyMwRjlENTgnLCAnI0FCNDdCQycsICcjMDBBQ0MxJ107CgkJCWxldCBjb2xvcklkeCA9IDA7CgkJCWNvbnN0IGFnZW50TExNQ291bnRzID0ge307CgkJCWxsbVN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQlpZiAoIWFnZW50Q29sb3JzW3MuTmFtZV0pIHsKCQkJCQlhZ2VudENvbG9yc1tzLk5hbWVdID0gcGFsZXR0ZVtjb2xvcklkeCAlIHBhbGV0dGUubGVuZ3RoXTsKCQkJCQljb2xvcklkeCsrOwoJCQkJfQoKCQkJCWFnZW50TExNQ291bnRzW3MuTmFtZV0gPSAoYWdlbnRMTE1Db3VudHNbcy5OYW1lXSB8fCAwKSArIDE7CgkJCQljb25zdCBsYWJlbCA9IGAke3MuTmFtZX0tJHthZ2VudExMTUNvdW50c1tzLk5hbWVdfWA7CgkJCQljb25zdCB0b3RhbFRva2VucyA9IHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnM7CgkJCQljb25zdCBzdHlsZSA9IGBjb2xvcjogJHthZ2VudENvbG9yc1tzLk5hbWVdfWA7CgkJCQlsZXQgdG9vbHRpcCA9IGBUb3RhbCBUb2tlbnM6ICR7dG90YWxUb2tlbnN9XG4oSW46ICR7cy5JbnB1dFRva2Vuc30sIE91dDogJHtzLk91dHB1dFRva2Vuc30sIFRob3VnaHRzOiAke3MuT3V0cHV0VGhvdWdodHNUb2tlbnN9KWA7CgkJCQlpZiAocy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoKCQkJCWRhdGEuYWRkUm93KFtsYWJlbCwgdG90YWxUb2tlbnMsIHN0eWxlLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVG9rZW4gQ29uc3VtcHRpb24gYnkgTExNIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0gQ2FsbCBTZXF1ZW5jZScsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdDb25zdW1lZCBUb2tlbnMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rva2VuX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgkJbGV0IGFsbEV4cGFuZGVkID0gZmFsc2U7CgkJZnVuY3Rpb24gdG9nZ2xlQWxsRGV0YWlscygpIHsKCQkJYWxsRXhwYW5kZWQgPSAhYWxsRXhwYW5kZWQ7CgkJCWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ2RldGFpbHMnKS5mb3JFYWNoKGQgPT4gewoJCQkJaWYgKGFsbEV4cGFuZGVkKSBkLnNldEF0dHJpYnV0ZSgnb3BlbicsICcnKTsKCQkJCWVsc2UgZC5yZW1vdmVBdHRyaWJ1dGUoJ29wZW4nKTsKCQkJfSk7CgkJfQoJPC9zY3JpcHQ+CgoKPC9ib2R5Pgo8L2h0bWw+Cg==" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowlk68m[1] Phase: Succeeded StartedAt: 2026-08-08 07:28:53 +0000 UTC FinishedAt: 2026-08-08 07:28:53 +0000 UTC Input: nil Output: nil --------- Name: series-workflowlk68m[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-08-08 07:28:53 +0000 UTC FinishedAt: 2026-08-08 07:28:53 +0000 UTC Input: nil Output: nil --------- Name: series-workflowlk68m[2] Phase: Succeeded StartedAt: 2026-08-08 07:28:53 +0000 UTC FinishedAt: 2026-08-08 11:12:39 +0000 UTC Input: nil Output: nil --------- Name: series-workflowlk68m[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ee78f7f8d894926003943240127a886653084cb1","config_name":"upstream-apparmor-kasan.config","enable_configs":["NVME_TCP","NVME_TARGET_TCP","NVME_TARGET","IPV6"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nvmf_dev_write","nvme_tcp_create_ctrl","nvmet_tcp_accept_work","do_ipv6_setsockopt","ip6_sock_set_tclass"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"ee78f7f8d894926003943240127a886653084cb1","config_name":"upstream-apparmor-kasan.config","enable_configs":["NVME_TCP","NVME_TARGET_TCP","NVME_TARGET","IPV6"],"series_id":"71d137bf-d5fc-4c33-8df6-32cb960cb9b6","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN) Phase: Succeeded StartedAt: 2026-08-08 07:28:53 +0000 UTC FinishedAt: 2026-08-08 11:12:39 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"ee78f7f8d894926003943240127a886653084cb1","config_name":"upstream-apparmor-kasan.config","enable_configs":["NVME_TCP","NVME_TARGET_TCP","NVME_TARGET","IPV6"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},"fuzz":{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nvmf_dev_write","nvme_tcp_create_ctrl","nvmet_tcp_accept_work","do_ipv6_setsockopt","ip6_sock_set_tclass"],"skip_cover_check":false},"patched":{"arch":"amd64","commit_hash":"ee78f7f8d894926003943240127a886653084cb1","config_name":"upstream-apparmor-kasan.config","enable_configs":["NVME_TCP","NVME_TARGET_TCP","NVME_TARGET","IPV6"],"series_id":"71d137bf-d5fc-4c33-8df6-32cb960cb9b6","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},"retest":null,"track":"KASAN"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: nil --------- Name: series-workflowlk68m[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ee78f7f8d894926003943240127a886653084cb1","config_name":"upstream-apparmor-kasan.config","enable_configs":["NVME_TCP","NVME_TARGET_TCP","NVME_TARGET","IPV6"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nvmf_dev_write","nvme_tcp_create_ctrl","nvmet_tcp_accept_work","do_ipv6_setsockopt","ip6_sock_set_tclass"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"ee78f7f8d894926003943240127a886653084cb1","config_name":"upstream-apparmor-kasan.config","enable_configs":["NVME_TCP","NVME_TARGET_TCP","NVME_TARGET","IPV6"],"series_id":"71d137bf-d5fc-4c33-8df6-32cb960cb9b6","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[0] Phase: Succeeded StartedAt: 2026-08-08 07:28:53 +0000 UTC FinishedAt: 2026-08-08 07:29:03 +0000 UTC Input: nil Output: nil --------- Name: series-workflowlk68m[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ee78f7f8d894926003943240127a886653084cb1","config_name":"upstream-apparmor-kasan.config","enable_configs":["NVME_TCP","NVME_TARGET_TCP","NVME_TARGET","IPV6"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nvmf_dev_write","nvme_tcp_create_ctrl","nvmet_tcp_accept_work","do_ipv6_setsockopt","ip6_sock_set_tclass"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"ee78f7f8d894926003943240127a886653084cb1","config_name":"upstream-apparmor-kasan.config","enable_configs":["NVME_TCP","NVME_TARGET_TCP","NVME_TARGET","IPV6"],"series_id":"71d137bf-d5fc-4c33-8df6-32cb960cb9b6","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[0].save-base-req Phase: Succeeded StartedAt: 2026-08-08 07:28:53 +0000 UTC FinishedAt: 2026-08-08 07:28:58 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"ee78f7f8d894926003943240127a886653084cb1","config_name":"upstream-apparmor-kasan.config","enable_configs":["NVME_TCP","NVME_TARGET_TCP","NVME_TARGET","IPV6"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowlk68m/series-workflowlk68m-convert-artifact-1774369638/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowlk68m[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ee78f7f8d894926003943240127a886653084cb1","config_name":"upstream-apparmor-kasan.config","enable_configs":["NVME_TCP","NVME_TARGET_TCP","NVME_TARGET","IPV6"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nvmf_dev_write","nvme_tcp_create_ctrl","nvmet_tcp_accept_work","do_ipv6_setsockopt","ip6_sock_set_tclass"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"ee78f7f8d894926003943240127a886653084cb1","config_name":"upstream-apparmor-kasan.config","enable_configs":["NVME_TCP","NVME_TARGET_TCP","NVME_TARGET","IPV6"],"series_id":"71d137bf-d5fc-4c33-8df6-32cb960cb9b6","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[1] Phase: Succeeded StartedAt: 2026-08-08 07:29:03 +0000 UTC FinishedAt: 2026-08-08 07:47:12 +0000 UTC Input: nil Output: nil --------- Name: series-workflowlk68m[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ee78f7f8d894926003943240127a886653084cb1","config_name":"upstream-apparmor-kasan.config","enable_configs":["NVME_TCP","NVME_TARGET_TCP","NVME_TARGET","IPV6"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nvmf_dev_write","nvme_tcp_create_ctrl","nvmet_tcp_accept_work","do_ipv6_setsockopt","ip6_sock_set_tclass"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"ee78f7f8d894926003943240127a886653084cb1","config_name":"upstream-apparmor-kasan.config","enable_configs":["NVME_TCP","NVME_TARGET_TCP","NVME_TARGET","IPV6"],"series_id":"71d137bf-d5fc-4c33-8df6-32cb960cb9b6","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[1].base-build Phase: Succeeded StartedAt: 2026-08-08 07:29:03 +0000 UTC FinishedAt: 2026-08-08 07:47:12 +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:*42047d5b-d86a-4df7-bbae-db559d1407a3,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-workflowlk68m/series-workflowlk68m-convert-artifact-1774369638/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": "5e7235f1-2cf0-4f56-a208-baf2c7c13059", "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-workflowlk68m/series-workflowlk68m-build-action-1103321852/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowlk68m[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ee78f7f8d894926003943240127a886653084cb1","config_name":"upstream-apparmor-kasan.config","enable_configs":["NVME_TCP","NVME_TARGET_TCP","NVME_TARGET","IPV6"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nvmf_dev_write","nvme_tcp_create_ctrl","nvmet_tcp_accept_work","do_ipv6_setsockopt","ip6_sock_set_tclass"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"ee78f7f8d894926003943240127a886653084cb1","config_name":"upstream-apparmor-kasan.config","enable_configs":["NVME_TCP","NVME_TARGET_TCP","NVME_TARGET","IPV6"],"series_id":"71d137bf-d5fc-4c33-8df6-32cb960cb9b6","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[1].base-build(0) Phase: Succeeded StartedAt: 2026-08-08 07:29:03 +0000 UTC FinishedAt: 2026-08-08 07:47:02 +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:*42047d5b-d86a-4df7-bbae-db559d1407a3,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-workflowlk68m/series-workflowlk68m-convert-artifact-1774369638/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": "5e7235f1-2cf0-4f56-a208-baf2c7c13059", "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-workflowlk68m/series-workflowlk68m-build-action-1103321852/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowlk68m[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ee78f7f8d894926003943240127a886653084cb1","config_name":"upstream-apparmor-kasan.config","enable_configs":["NVME_TCP","NVME_TARGET_TCP","NVME_TARGET","IPV6"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nvmf_dev_write","nvme_tcp_create_ctrl","nvmet_tcp_accept_work","do_ipv6_setsockopt","ip6_sock_set_tclass"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"ee78f7f8d894926003943240127a886653084cb1","config_name":"upstream-apparmor-kasan.config","enable_configs":["NVME_TCP","NVME_TARGET_TCP","NVME_TARGET","IPV6"],"series_id":"71d137bf-d5fc-4c33-8df6-32cb960cb9b6","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[2] Phase: Succeeded StartedAt: 2026-08-08 07:47:12 +0000 UTC FinishedAt: 2026-08-08 07:47:12 +0000 UTC Input: nil Output: nil --------- Name: series-workflowlk68m[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ee78f7f8d894926003943240127a886653084cb1","config_name":"upstream-apparmor-kasan.config","enable_configs":["NVME_TCP","NVME_TARGET_TCP","NVME_TARGET","IPV6"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nvmf_dev_write","nvme_tcp_create_ctrl","nvmet_tcp_accept_work","do_ipv6_setsockopt","ip6_sock_set_tclass"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"ee78f7f8d894926003943240127a886653084cb1","config_name":"upstream-apparmor-kasan.config","enable_configs":["NVME_TCP","NVME_TARGET_TCP","NVME_TARGET","IPV6"],"series_id":"71d137bf-d5fc-4c33-8df6-32cb960cb9b6","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[2].abort-if-base-build-failed Phase: Skipped StartedAt: 2026-08-08 07:47:12 +0000 UTC FinishedAt: 2026-08-08 07:47:12 +0000 UTC Input: nil Output: nil --------- Name: series-workflowlk68m[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ee78f7f8d894926003943240127a886653084cb1","config_name":"upstream-apparmor-kasan.config","enable_configs":["NVME_TCP","NVME_TARGET_TCP","NVME_TARGET","IPV6"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nvmf_dev_write","nvme_tcp_create_ctrl","nvmet_tcp_accept_work","do_ipv6_setsockopt","ip6_sock_set_tclass"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"ee78f7f8d894926003943240127a886653084cb1","config_name":"upstream-apparmor-kasan.config","enable_configs":["NVME_TCP","NVME_TARGET_TCP","NVME_TARGET","IPV6"],"series_id":"71d137bf-d5fc-4c33-8df6-32cb960cb9b6","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[3] Phase: Succeeded StartedAt: 2026-08-08 07:47:12 +0000 UTC FinishedAt: 2026-08-08 07:47:22 +0000 UTC Input: nil Output: nil --------- Name: series-workflowlk68m[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ee78f7f8d894926003943240127a886653084cb1","config_name":"upstream-apparmor-kasan.config","enable_configs":["NVME_TCP","NVME_TARGET_TCP","NVME_TARGET","IPV6"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nvmf_dev_write","nvme_tcp_create_ctrl","nvmet_tcp_accept_work","do_ipv6_setsockopt","ip6_sock_set_tclass"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"ee78f7f8d894926003943240127a886653084cb1","config_name":"upstream-apparmor-kasan.config","enable_configs":["NVME_TCP","NVME_TARGET_TCP","NVME_TARGET","IPV6"],"series_id":"71d137bf-d5fc-4c33-8df6-32cb960cb9b6","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[3].save-patched-req Phase: Succeeded StartedAt: 2026-08-08 07:47:12 +0000 UTC FinishedAt: 2026-08-08 07:47:16 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"ee78f7f8d894926003943240127a886653084cb1","config_name":"upstream-apparmor-kasan.config","enable_configs":["NVME_TCP","NVME_TARGET_TCP","NVME_TARGET","IPV6"],"series_id":"71d137bf-d5fc-4c33-8df6-32cb960cb9b6","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowlk68m/series-workflowlk68m-convert-artifact-564744633/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowlk68m[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ee78f7f8d894926003943240127a886653084cb1","config_name":"upstream-apparmor-kasan.config","enable_configs":["NVME_TCP","NVME_TARGET_TCP","NVME_TARGET","IPV6"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nvmf_dev_write","nvme_tcp_create_ctrl","nvmet_tcp_accept_work","do_ipv6_setsockopt","ip6_sock_set_tclass"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"ee78f7f8d894926003943240127a886653084cb1","config_name":"upstream-apparmor-kasan.config","enable_configs":["NVME_TCP","NVME_TARGET_TCP","NVME_TARGET","IPV6"],"series_id":"71d137bf-d5fc-4c33-8df6-32cb960cb9b6","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[4] Phase: Succeeded StartedAt: 2026-08-08 07:47:22 +0000 UTC FinishedAt: 2026-08-08 07:49:18 +0000 UTC Input: nil Output: nil --------- Name: series-workflowlk68m[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ee78f7f8d894926003943240127a886653084cb1","config_name":"upstream-apparmor-kasan.config","enable_configs":["NVME_TCP","NVME_TARGET_TCP","NVME_TARGET","IPV6"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nvmf_dev_write","nvme_tcp_create_ctrl","nvmet_tcp_accept_work","do_ipv6_setsockopt","ip6_sock_set_tclass"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"ee78f7f8d894926003943240127a886653084cb1","config_name":"upstream-apparmor-kasan.config","enable_configs":["NVME_TCP","NVME_TARGET_TCP","NVME_TARGET","IPV6"],"series_id":"71d137bf-d5fc-4c33-8df6-32cb960cb9b6","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[4].boot-test-base Phase: Succeeded StartedAt: 2026-08-08 07:47:22 +0000 UTC FinishedAt: 2026-08-08 07:49:08 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*5e7235f1-2cf0-4f56-a208-baf2c7c13059,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-workflowlk68m/series-workflowlk68m-build-action-1103321852/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-workflowlk68m[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ee78f7f8d894926003943240127a886653084cb1","config_name":"upstream-apparmor-kasan.config","enable_configs":["NVME_TCP","NVME_TARGET_TCP","NVME_TARGET","IPV6"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nvmf_dev_write","nvme_tcp_create_ctrl","nvmet_tcp_accept_work","do_ipv6_setsockopt","ip6_sock_set_tclass"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"ee78f7f8d894926003943240127a886653084cb1","config_name":"upstream-apparmor-kasan.config","enable_configs":["NVME_TCP","NVME_TARGET_TCP","NVME_TARGET","IPV6"],"series_id":"71d137bf-d5fc-4c33-8df6-32cb960cb9b6","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[5] Phase: Succeeded StartedAt: 2026-08-08 07:49:18 +0000 UTC FinishedAt: 2026-08-08 07:49:18 +0000 UTC Input: nil Output: nil --------- Name: series-workflowlk68m[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ee78f7f8d894926003943240127a886653084cb1","config_name":"upstream-apparmor-kasan.config","enable_configs":["NVME_TCP","NVME_TARGET_TCP","NVME_TARGET","IPV6"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nvmf_dev_write","nvme_tcp_create_ctrl","nvmet_tcp_accept_work","do_ipv6_setsockopt","ip6_sock_set_tclass"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"ee78f7f8d894926003943240127a886653084cb1","config_name":"upstream-apparmor-kasan.config","enable_configs":["NVME_TCP","NVME_TARGET_TCP","NVME_TARGET","IPV6"],"series_id":"71d137bf-d5fc-4c33-8df6-32cb960cb9b6","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[5].abort-if-base-boot-failed Phase: Skipped StartedAt: 2026-08-08 07:49:18 +0000 UTC FinishedAt: 2026-08-08 07:49:18 +0000 UTC Input: nil Output: nil --------- Name: series-workflowlk68m[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ee78f7f8d894926003943240127a886653084cb1","config_name":"upstream-apparmor-kasan.config","enable_configs":["NVME_TCP","NVME_TARGET_TCP","NVME_TARGET","IPV6"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nvmf_dev_write","nvme_tcp_create_ctrl","nvmet_tcp_accept_work","do_ipv6_setsockopt","ip6_sock_set_tclass"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"ee78f7f8d894926003943240127a886653084cb1","config_name":"upstream-apparmor-kasan.config","enable_configs":["NVME_TCP","NVME_TARGET_TCP","NVME_TARGET","IPV6"],"series_id":"71d137bf-d5fc-4c33-8df6-32cb960cb9b6","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[6] Phase: Succeeded StartedAt: 2026-08-08 07:49:18 +0000 UTC FinishedAt: 2026-08-08 08:07:34 +0000 UTC Input: nil Output: nil --------- Name: series-workflowlk68m[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ee78f7f8d894926003943240127a886653084cb1","config_name":"upstream-apparmor-kasan.config","enable_configs":["NVME_TCP","NVME_TARGET_TCP","NVME_TARGET","IPV6"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nvmf_dev_write","nvme_tcp_create_ctrl","nvmet_tcp_accept_work","do_ipv6_setsockopt","ip6_sock_set_tclass"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"ee78f7f8d894926003943240127a886653084cb1","config_name":"upstream-apparmor-kasan.config","enable_configs":["NVME_TCP","NVME_TARGET_TCP","NVME_TARGET","IPV6"],"series_id":"71d137bf-d5fc-4c33-8df6-32cb960cb9b6","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[6].patched-build Phase: Succeeded StartedAt: 2026-08-08 07:49:18 +0000 UTC FinishedAt: 2026-08-08 08:07:34 +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:*42047d5b-d86a-4df7-bbae-db559d1407a3,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-workflowlk68m/series-workflowlk68m-convert-artifact-564744633/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": "6a78aec2-7f15-45b6-8716-79f237cd5a2c", "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-workflowlk68m/series-workflowlk68m-build-action-3865389717/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowlk68m[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ee78f7f8d894926003943240127a886653084cb1","config_name":"upstream-apparmor-kasan.config","enable_configs":["NVME_TCP","NVME_TARGET_TCP","NVME_TARGET","IPV6"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nvmf_dev_write","nvme_tcp_create_ctrl","nvmet_tcp_accept_work","do_ipv6_setsockopt","ip6_sock_set_tclass"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"ee78f7f8d894926003943240127a886653084cb1","config_name":"upstream-apparmor-kasan.config","enable_configs":["NVME_TCP","NVME_TARGET_TCP","NVME_TARGET","IPV6"],"series_id":"71d137bf-d5fc-4c33-8df6-32cb960cb9b6","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[6].patched-build(0) Phase: Succeeded StartedAt: 2026-08-08 07:49:18 +0000 UTC FinishedAt: 2026-08-08 08:07:24 +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:*42047d5b-d86a-4df7-bbae-db559d1407a3,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-workflowlk68m/series-workflowlk68m-convert-artifact-564744633/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": "6a78aec2-7f15-45b6-8716-79f237cd5a2c", "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-workflowlk68m/series-workflowlk68m-build-action-3865389717/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowlk68m[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ee78f7f8d894926003943240127a886653084cb1","config_name":"upstream-apparmor-kasan.config","enable_configs":["NVME_TCP","NVME_TARGET_TCP","NVME_TARGET","IPV6"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nvmf_dev_write","nvme_tcp_create_ctrl","nvmet_tcp_accept_work","do_ipv6_setsockopt","ip6_sock_set_tclass"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"ee78f7f8d894926003943240127a886653084cb1","config_name":"upstream-apparmor-kasan.config","enable_configs":["NVME_TCP","NVME_TARGET_TCP","NVME_TARGET","IPV6"],"series_id":"71d137bf-d5fc-4c33-8df6-32cb960cb9b6","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[7] Phase: Succeeded StartedAt: 2026-08-08 08:07:34 +0000 UTC FinishedAt: 2026-08-08 08:07:34 +0000 UTC Input: nil Output: nil --------- Name: series-workflowlk68m[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ee78f7f8d894926003943240127a886653084cb1","config_name":"upstream-apparmor-kasan.config","enable_configs":["NVME_TCP","NVME_TARGET_TCP","NVME_TARGET","IPV6"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nvmf_dev_write","nvme_tcp_create_ctrl","nvmet_tcp_accept_work","do_ipv6_setsockopt","ip6_sock_set_tclass"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"ee78f7f8d894926003943240127a886653084cb1","config_name":"upstream-apparmor-kasan.config","enable_configs":["NVME_TCP","NVME_TARGET_TCP","NVME_TARGET","IPV6"],"series_id":"71d137bf-d5fc-4c33-8df6-32cb960cb9b6","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[7].abort-if-patched-build-failed Phase: Skipped StartedAt: 2026-08-08 08:07:34 +0000 UTC FinishedAt: 2026-08-08 08:07:34 +0000 UTC Input: nil Output: nil --------- Name: series-workflowlk68m[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ee78f7f8d894926003943240127a886653084cb1","config_name":"upstream-apparmor-kasan.config","enable_configs":["NVME_TCP","NVME_TARGET_TCP","NVME_TARGET","IPV6"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nvmf_dev_write","nvme_tcp_create_ctrl","nvmet_tcp_accept_work","do_ipv6_setsockopt","ip6_sock_set_tclass"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"ee78f7f8d894926003943240127a886653084cb1","config_name":"upstream-apparmor-kasan.config","enable_configs":["NVME_TCP","NVME_TARGET_TCP","NVME_TARGET","IPV6"],"series_id":"71d137bf-d5fc-4c33-8df6-32cb960cb9b6","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[8] Phase: Succeeded StartedAt: 2026-08-08 08:07:34 +0000 UTC FinishedAt: 2026-08-08 08:09:41 +0000 UTC Input: nil Output: nil --------- Name: series-workflowlk68m[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ee78f7f8d894926003943240127a886653084cb1","config_name":"upstream-apparmor-kasan.config","enable_configs":["NVME_TCP","NVME_TARGET_TCP","NVME_TARGET","IPV6"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nvmf_dev_write","nvme_tcp_create_ctrl","nvmet_tcp_accept_work","do_ipv6_setsockopt","ip6_sock_set_tclass"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"ee78f7f8d894926003943240127a886653084cb1","config_name":"upstream-apparmor-kasan.config","enable_configs":["NVME_TCP","NVME_TARGET_TCP","NVME_TARGET","IPV6"],"series_id":"71d137bf-d5fc-4c33-8df6-32cb960cb9b6","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[8].boot-test-patched Phase: Succeeded StartedAt: 2026-08-08 08:07:34 +0000 UTC FinishedAt: 2026-08-08 08:09:31 +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:*6a78aec2-7f15-45b6-8716-79f237cd5a2c,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-workflowlk68m/series-workflowlk68m-build-action-3865389717/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-workflowlk68m[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ee78f7f8d894926003943240127a886653084cb1","config_name":"upstream-apparmor-kasan.config","enable_configs":["NVME_TCP","NVME_TARGET_TCP","NVME_TARGET","IPV6"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nvmf_dev_write","nvme_tcp_create_ctrl","nvmet_tcp_accept_work","do_ipv6_setsockopt","ip6_sock_set_tclass"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"ee78f7f8d894926003943240127a886653084cb1","config_name":"upstream-apparmor-kasan.config","enable_configs":["NVME_TCP","NVME_TARGET_TCP","NVME_TARGET","IPV6"],"series_id":"71d137bf-d5fc-4c33-8df6-32cb960cb9b6","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[10] Phase: Succeeded StartedAt: 2026-08-08 08:09:41 +0000 UTC FinishedAt: 2026-08-08 11:12:39 +0000 UTC Input: nil Output: nil --------- Name: series-workflowlk68m[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ee78f7f8d894926003943240127a886653084cb1","config_name":"upstream-apparmor-kasan.config","enable_configs":["NVME_TCP","NVME_TARGET_TCP","NVME_TARGET","IPV6"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nvmf_dev_write","nvme_tcp_create_ctrl","nvmet_tcp_accept_work","do_ipv6_setsockopt","ip6_sock_set_tclass"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"ee78f7f8d894926003943240127a886653084cb1","config_name":"upstream-apparmor-kasan.config","enable_configs":["NVME_TCP","NVME_TARGET_TCP","NVME_TARGET","IPV6"],"series_id":"71d137bf-d5fc-4c33-8df6-32cb960cb9b6","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[10].run-fuzz Phase: Succeeded StartedAt: 2026-08-08 08:09:41 +0000 UTC FinishedAt: 2026-08-08 11:12:39 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:config,Default:nil,Value:*{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nvmf_dev_write","nvme_tcp_create_ctrl","nvmet_tcp_accept_work","do_ipv6_setsockopt","ip6_sock_set_tclass"],"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:*5e7235f1-2cf0-4f56-a208-baf2c7c13059,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*6a78aec2-7f15-45b6-8716-79f237cd5a2c,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-workflowlk68m/series-workflowlk68m-build-action-1103321852/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-workflowlk68m/series-workflowlk68m-build-action-3865389717/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflowlk68m[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ee78f7f8d894926003943240127a886653084cb1","config_name":"upstream-apparmor-kasan.config","enable_configs":["NVME_TCP","NVME_TARGET_TCP","NVME_TARGET","IPV6"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nvmf_dev_write","nvme_tcp_create_ctrl","nvmet_tcp_accept_work","do_ipv6_setsockopt","ip6_sock_set_tclass"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"ee78f7f8d894926003943240127a886653084cb1","config_name":"upstream-apparmor-kasan.config","enable_configs":["NVME_TCP","NVME_TARGET_TCP","NVME_TARGET","IPV6"],"series_id":"71d137bf-d5fc-4c33-8df6-32cb960cb9b6","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[10].run-fuzz[0] Phase: Succeeded StartedAt: 2026-08-08 08:09:41 +0000 UTC FinishedAt: 2026-08-08 08:09:51 +0000 UTC Input: nil Output: nil --------- Name: series-workflowlk68m[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ee78f7f8d894926003943240127a886653084cb1","config_name":"upstream-apparmor-kasan.config","enable_configs":["NVME_TCP","NVME_TARGET_TCP","NVME_TARGET","IPV6"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nvmf_dev_write","nvme_tcp_create_ctrl","nvmet_tcp_accept_work","do_ipv6_setsockopt","ip6_sock_set_tclass"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"ee78f7f8d894926003943240127a886653084cb1","config_name":"upstream-apparmor-kasan.config","enable_configs":["NVME_TCP","NVME_TARGET_TCP","NVME_TARGET","IPV6"],"series_id":"71d137bf-d5fc-4c33-8df6-32cb960cb9b6","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[10].run-fuzz[0].save-fuzz-config Phase: Succeeded StartedAt: 2026-08-08 08:09:41 +0000 UTC FinishedAt: 2026-08-08 08:09:47 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nvmf_dev_write","nvme_tcp_create_ctrl","nvmet_tcp_accept_work","do_ipv6_setsockopt","ip6_sock_set_tclass"],"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-workflowlk68m/series-workflowlk68m-convert-artifact-3520305454/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowlk68m[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ee78f7f8d894926003943240127a886653084cb1","config_name":"upstream-apparmor-kasan.config","enable_configs":["NVME_TCP","NVME_TARGET_TCP","NVME_TARGET","IPV6"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nvmf_dev_write","nvme_tcp_create_ctrl","nvmet_tcp_accept_work","do_ipv6_setsockopt","ip6_sock_set_tclass"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"ee78f7f8d894926003943240127a886653084cb1","config_name":"upstream-apparmor-kasan.config","enable_configs":["NVME_TCP","NVME_TARGET_TCP","NVME_TARGET","IPV6"],"series_id":"71d137bf-d5fc-4c33-8df6-32cb960cb9b6","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[10].run-retest Phase: Skipped StartedAt: 2026-08-08 08:09:41 +0000 UTC FinishedAt: 2026-08-08 08:09:41 +0000 UTC Input: nil Output: nil --------- Name: series-workflowlk68m[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ee78f7f8d894926003943240127a886653084cb1","config_name":"upstream-apparmor-kasan.config","enable_configs":["NVME_TCP","NVME_TARGET_TCP","NVME_TARGET","IPV6"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nvmf_dev_write","nvme_tcp_create_ctrl","nvmet_tcp_accept_work","do_ipv6_setsockopt","ip6_sock_set_tclass"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"ee78f7f8d894926003943240127a886653084cb1","config_name":"upstream-apparmor-kasan.config","enable_configs":["NVME_TCP","NVME_TARGET_TCP","NVME_TARGET","IPV6"],"series_id":"71d137bf-d5fc-4c33-8df6-32cb960cb9b6","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[9] Phase: Succeeded StartedAt: 2026-08-08 08:09:41 +0000 UTC FinishedAt: 2026-08-08 08:09:41 +0000 UTC Input: nil Output: nil --------- Name: series-workflowlk68m[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ee78f7f8d894926003943240127a886653084cb1","config_name":"upstream-apparmor-kasan.config","enable_configs":["NVME_TCP","NVME_TARGET_TCP","NVME_TARGET","IPV6"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nvmf_dev_write","nvme_tcp_create_ctrl","nvmet_tcp_accept_work","do_ipv6_setsockopt","ip6_sock_set_tclass"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"ee78f7f8d894926003943240127a886653084cb1","config_name":"upstream-apparmor-kasan.config","enable_configs":["NVME_TCP","NVME_TARGET_TCP","NVME_TARGET","IPV6"],"series_id":"71d137bf-d5fc-4c33-8df6-32cb960cb9b6","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[9].abort-if-patched-boot-failed Phase: Skipped StartedAt: 2026-08-08 08:09:41 +0000 UTC FinishedAt: 2026-08-08 08:09:41 +0000 UTC Input: nil Output: nil --------- Name: series-workflowlk68m[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ee78f7f8d894926003943240127a886653084cb1","config_name":"upstream-apparmor-kasan.config","enable_configs":["NVME_TCP","NVME_TARGET_TCP","NVME_TARGET","IPV6"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nvmf_dev_write","nvme_tcp_create_ctrl","nvmet_tcp_accept_work","do_ipv6_setsockopt","ip6_sock_set_tclass"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"ee78f7f8d894926003943240127a886653084cb1","config_name":"upstream-apparmor-kasan.config","enable_configs":["NVME_TCP","NVME_TARGET_TCP","NVME_TARGET","IPV6"],"series_id":"71d137bf-d5fc-4c33-8df6-32cb960cb9b6","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[10].run-fuzz[1] Phase: Succeeded StartedAt: 2026-08-08 08:09:51 +0000 UTC FinishedAt: 2026-08-08 11:12:39 +0000 UTC Input: nil Output: nil --------- Name: series-workflowlk68m[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ee78f7f8d894926003943240127a886653084cb1","config_name":"upstream-apparmor-kasan.config","enable_configs":["NVME_TCP","NVME_TARGET_TCP","NVME_TARGET","IPV6"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nvmf_dev_write","nvme_tcp_create_ctrl","nvmet_tcp_accept_work","do_ipv6_setsockopt","ip6_sock_set_tclass"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"ee78f7f8d894926003943240127a886653084cb1","config_name":"upstream-apparmor-kasan.config","enable_configs":["NVME_TCP","NVME_TARGET_TCP","NVME_TARGET","IPV6"],"series_id":"71d137bf-d5fc-4c33-8df6-32cb960cb9b6","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[10].run-fuzz[1].fuzz Phase: Succeeded StartedAt: 2026-08-08 08:09:51 +0000 UTC FinishedAt: 2026-08-08 11:12:29 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*5e7235f1-2cf0-4f56-a208-baf2c7c13059,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*6a78aec2-7f15-45b6-8716-79f237cd5a2c,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-workflowlk68m/series-workflowlk68m-build-action-1103321852/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-workflowlk68m/series-workflowlk68m-build-action-3865389717/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-workflowlk68m/series-workflowlk68m-convert-artifact-3520305454/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,}