Name: series-workflow8cbcd Phase: Succeeded StartedAt: 2026-09-08 13:38:22 +0000 UTC FinishedAt: 2026-09-08 18:36:41 +0000 UTC Input: nil Output: nil --------- Name: series-workflow8cbcd[0] Phase: Succeeded StartedAt: 2026-09-08 13:38:22 +0000 UTC FinishedAt: 2026-09-08 14:44:30 +0000 UTC Input: nil Output: nil --------- Name: series-workflow8cbcd[0].run-triage Phase: Succeeded StartedAt: 2026-09-08 13:38:22 +0000 UTC FinishedAt: 2026-09-08 14:44:30 +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": "bc6fe9d301d59fe5cb236d646abe792bffae5fa6", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "AF_RXRPC", "INET" ], "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": "bc6fe9d301d59fe5cb236d646abe792bffae5fa6", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "AF_RXRPC", "INET" ], "series_id": "19ad0978-35e7-4888-b0f1-7fa63b1863ea" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "rxrpc_destroy_all_peers", "rxrpc_exit_net" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db" ], "skip_cover_check": false, "bug_title_re": "" }, "retest": { "findings": [ "4eb5795c-f73d-43ee-b3df-3291d8644727" ] } } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA4IDE0OjQzPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0FGX1JYUlBDJiMzNDssCiAgICAmIzM0O0lORVQmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtyeHJwY19kZXN0cm95X2FsbF9wZWVycyYjMzQ7LAogICAgJiMzNDtyeHJwY19leGl0X25ldCYjMzQ7CiAgXSwKICAmIzM0O0tNU0FOUmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGFkZHMgc3Bpbl9sb2NrX2JoIGFuZCBzcGluX3VubG9ja19iaCBhcm91bmQgdGhlIHBlZXIgaGFzaCB0YWJsZSBpdGVyYXRpb24gaW4gcnhycGNfZGVzdHJveV9hbGxfcGVlcnMoKSB0byBwcmV2ZW50IHJhY2UgY29uZGl0aW9ucyBhbmQgcG90ZW50aWFsIHVzZS1hZnRlci1mcmVlIGR1cmluZyBjbGVhbnVwLiBJdCBkb2VzIG5vdCBpbnRyb2R1Y2UgYW55IG1lbW9yeSBhbGxvY2F0aW9ucywgdW5pbml0aWFsaXplZCB2YXJpYWJsZXMsIHVzZXItc3BhY2UgY29waWVzIChpbmZvLWxlYWtzKSwgb3IgYWx0ZXIgZGF0YSBpbml0aWFsaXphdGlvbiBsb2dpYy4gQW55IGNvbmN1cnJlbmN5LCBsb2NraW5nLCBvciB1c2UtYWZ0ZXItZnJlZSBpc3N1ZXMgYXJlIGRldGVjdGVkIGJ5IExPQ0tERVAgYW5kIEtBU0FOLiBUaGVyZWZvcmUsIGEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpcyBub3QgbmVlZGVkLiYjMzQ7LAogICYjMzQ7TmVlZHNLTVNBTiYjMzQ7OiBmYWxzZSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBhZGRzIHNwaW5sb2NrIHN5bmNocm9uaXphdGlvbiAocGVlcl9oYXNoX2xvY2spIGFyb3VuZCBwZWVyIGhhc2ggdGFibGUgaXRlcmF0aW9uIGluIHJ4cnBjX2Rlc3Ryb3lfYWxsX3BlZXJzIHRvIHByZXZlbnQgY29uY3VycmVudCB1c2UtYWZ0ZXItZnJlZSByYWNlcyBkdXJpbmcgbmV0d29yayBuYW1lc3BhY2UgY2xlYW51cC4gVGhpcyBhbHRlcnMgbG9ja2luZyBhbmQgc3luY2hyb25pemF0aW9uIGluIHJlYWNoYWJsZSBBRl9SWFJQQyBuZXR3b3JraW5nIGNvZGUuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDggMTQ6NDM8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCA1YmJkNjdmZjYzNThjYWM0ZWNiYTgzMjhjNzAyMmViMzE4MWQ2ZTUwXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFR1ZSBTZXAgOCAxNDo0MzozNSAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9uZXQvcnhycGMvcGVlcl9vYmplY3QuYyBiL25ldC9yeHJwYy9wZWVyX29iamVjdC5jXG5pbmRleCBmYTlhNDA2ZTExNjgzLi5mYWEyOTgzNjM4YjJiIDEwMDY0NFxuLS0tIGEvbmV0L3J4cnBjL3BlZXJfb2JqZWN0LmNcbiYjNDM7JiM0MzsmIzQzOyBiL25ldC9yeHJwYy9wZWVyX29iamVjdC5jXG5AQCAtNDU0LDYgJiM0Mzs0NTQsMTIgQEAgdm9pZCByeHJwY19kZXN0cm95X2FsbF9wZWVycyhzdHJ1Y3QgcnhycGNfbmV0ICpyeG5ldClcbiBcdHN0cnVjdCByeHJwY19wZWVyICpwZWVyO1xuIFx0aW50IGk7XG4gXG4mIzQzO1x0LypcbiYjNDM7XHQgKiBQcmV2ZW50IHVzZS1hZnRlci1mcmVlIGlmIGEgcGVlciBpcyBjb25jdXJyZW50bHkgdW5saW5rZWQgZnJvbSB0aGVcbiYjNDM7XHQgKiBoYXNoIHRhYmxlIGFuZCBmcmVlZCB2aWEgUkNVIGR1cmluZyBpdGVyYXRpb24uXG4mIzQzO1x0ICovXG4mIzQzO1x0c3Bpbl9sb2NrX2JoKFx1MDAyNnJ4bmV0LVx1MDAzZXBlZXJfaGFzaF9sb2NrKTtcbiYjNDM7XG4gXHRmb3IgKGkgPSAwOyBpIFx1MDAzYyBIQVNIX1NJWkUocnhuZXQtXHUwMDNlcGVlcl9oYXNoKTsgaSYjNDM7JiM0MzspIHtcbiBcdFx0aWYgKGhsaXN0X2VtcHR5KFx1MDAyNnJ4bmV0LVx1MDAzZXBlZXJfaGFzaFtpXSkpXG4gXHRcdFx0Y29udGludWU7XG5AQCAtNDY1LDYgJiM0Mzs0NzEsOCBAQCB2b2lkIHJ4cnBjX2Rlc3Ryb3lfYWxsX3BlZXJzKHN0cnVjdCByeHJwY19uZXQgKnJ4bmV0KVxuIFx0XHRcdCAgICAgICBcdTAwMjZwZWVyLVx1MDAzZXNyeC50cmFuc3BvcnQpO1xuIFx0XHR9XG4gXHR9XG4mIzQzO1xuJiM0MztcdHNwaW5fdW5sb2NrX2JoKFx1MDAyNnJ4bmV0LVx1MDAzZXBlZXJfaGFzaF9sb2NrKTtcbiB9XG4gXG4gLyoqXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDggMTQ6NDM8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Y29yZTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7QUZfUlhSUEMmIzM0OywKICAgICYjMzQ7SU5FVCYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O3J4cnBjX2Rlc3Ryb3lfYWxsX3BlZXJzJiMzNDssCiAgICAmIzM0O3J4cnBjX2V4aXRfbmV0JiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGFkZHMgc3BpbmxvY2sgc3luY2hyb25pemF0aW9uIChwZWVyX2hhc2hfbG9jaykgYXJvdW5kIHBlZXIgaGFzaCB0YWJsZSBpdGVyYXRpb24gaW4gcnhycGNfZGVzdHJveV9hbGxfcGVlcnMgdG8gcHJldmVudCBjb25jdXJyZW50IHVzZS1hZnRlci1mcmVlIHJhY2VzIGR1cmluZyBuZXR3b3JrIG5hbWVzcGFjZSBjbGVhbnVwLiBUaGlzIGFsdGVycyBsb2NraW5nIGFuZCBzeW5jaHJvbml6YXRpb24gaW4gcmVhY2hhYmxlIEFGX1JYUlBDIG5ldHdvcmtpbmcgY29kZS4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIgYW5kIHNlY3VyaXR5IGVuZ2luZWVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGV2YWx1YXRlIHdoZXRoZXIgaXQgd2FycmFudHMgZnV6emluZyB3aXRoIHN5emthbGxlci4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24gaW50ZXJuYWwgYXNzdW1wdGlvbnMuIFlvdSBtdXN0IGFjdGl2ZWx5IHVzZSB5b3VyIGNvZGUgYWNjZXNzCnRvb2xzIHRvIGluc3BlY3QgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSwgY2FsbGVycywgYW5kIHN1cnJvdW5kaW5nIGNvbnRleHQuCgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQoxLiBDT1JFIFRSSUFHRSBQSElMT1NPUEhZCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClRoZSBnb2FsIG9mIHBhdGNoIGZ1enppbmcgaXMgdG8gZGlzY292ZXIgY3Jhc2hlcywgcmVncmVzc2lvbnMsIGV4cG9zZWQgbGF0ZW50IGJ1Z3MsCmFuZCBuZXdseSB0cmlnZ2VyZWQgYXNzZXJ0aW9ucyBpbnRyb2R1Y2VkIGJ5IHRoZSBwYXRjaCBzZXJpZXMuCgotIFJFQUNIQUJJTElUWSBJUyBUSEUgUFJJTUFSWSBHQVRFOgogIEZ1enppbmcgY2FuIG9ubHkgZGlzY292ZXIgYnVncyBpbiBjb2RlIHRoYXQgY2FuIGFjdHVhbGx5IGV4ZWN1dGUgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQKICBlbnZpcm9ubWVudHMgKEdDRSBvciBRRU1VLCB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgZGV2aWNlcyBsaWtlIFVTQiBnYWRnZXRzLCBuZXRkZXYsIHR1bi90YXApLgogIElmIHRoZSBtb2RpZmllZCBjb2RlIGlzIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSAoc2VlIFNlY3Rpb24gMiksIGl0IE1VU1QgTk9UIGJlIGZ1enplZCwKICByZWdhcmRsZXNzIG9mIHdoZXRoZXIgaXQgYWRkcyBhc3NlcnRpb25zIG9yIGNvbXBsZXggbG9naWMuCgotIERPIE5PVCBCTElORExZIFRSVVNUICYjMzQ7Tk8gRlVOQ1RJT05BTCBDSEFOR0UmIzM0OyAoTkZDSSkgT1IgJiMzNDtSRUZBQ1RPUklORyYjMzQ7IENMQUlNUzoKICBQYXRjaCBhdXRob3JzIHJvdXRpbmVseSBsYWJlbCBjaGFuZ2VzIGFzICYjMzQ7Y2xlYW51cHMmIzM0OywgJiMzNDtyZWZhY3RvcmluZ3MmIzM0Oywgb3Igc3RhdGUKICAmIzM0O05vIGZ1bmN0aW9uYWwgY2hhbmdlIGludGVuZGVkJiMzNDsuIERvIE5PVCB0YWtlIHRoZXNlIGNsYWltcyBhdCBmYWNlIHZhbHVlLgogIENvZGUgcmVmYWN0b3JpbmdzIHRoYXQgcmVhcnJhbmdlIGxvZ2ljLCBpbnRyb2R1Y2UgaGVscGVyIGZ1bmN0aW9ucywgb3IgYWx0ZXIgc3RhdGUgbWFuYWdlbWVudAogIGluIGNvcmUgc3Vic3lzdGVtcyBmcmVxdWVudGx5IGludHJvZHVjZSBzdWJ0bGUgc2VtYW50aWMgc2hpZnRzIG9yIHVuY292ZXIgbGF0ZW50IGtlcm5lbCBidWdzLgogIElmIHJlYWNoYWJsZSBleGVjdXRhYmxlIGNvZGUgaXMgbW9kaWZpZWQgb3IgcmVmYWN0b3JlZCwgaXQgTVVTVCBiZSBmdXp6ZWQuCgotIE5FVyBPUiBNT0RJRklFRCBBU1NFUlRJT05TIElOIFJFQUNIQUJMRSBDT0RFIE1VU1QgQkUgRlVaWkVEOgogIFdoZW4gYSBwYXRjaCBpbnRyb2R1Y2VzIG9yIG1vZGlmaWVzIHJ1bnRpbWUgY2hlY2tzIG9yIGFzc2VydGlvbnMgKGUuZy4sIFdBUk5fT04qLCBWTV9XQVJOX09OKiwKICBCVUdfT04qLCBsb2NrZGVwX2Fzc2VydCopIGluIHJlYWNoYWJsZSBjb2RlIHBhdGhzLCBpdCBlbmZvcmNlcyBuZXcgb3Igc3RyaWN0ZXIgaW52YXJpYW50cy4KICBFdmVuIGlmIHRoZSBhdXRob3IgYmVsaWV2ZXMgdGhlIGludmFyaWFudCBhbHdheXMgaG9sZHMsIGZ1enppbmcgaXMgZXNzZW50aWFsIHRvIHZlcmlmeSB3aGV0aGVyCiAgYW4gdW51c3VhbCBzZXF1ZW5jZSBvZiBvcGVyYXRpb25zIGNhbiB2aW9sYXRlIGl0LgoKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KMi4gV0hFTiBUTyBSRVRVUk4gV29ydGhGdXp6aW5nPWZhbHNlIChORUdBVElWRSBDUklURVJJQSkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBPTkxZIElGIGFsbCBtb2RpZmllZCBjb2RlIGZhbGxzIHN0cmljdGx5IGludG8gb25lIG9yIG1vcmUgb2YgdGhlc2UgY2F0ZWdvcmllczoKCi0gTm9uLWtlcm5lbCBhbmQgbm9uLWV4ZWN1dGFibGUgY2hhbmdlczoKICAqIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIGNvbW1lbnRzLCBvciBzcGVsbGluZyBmaXhlcy4KICAqIFVzZXItc3BhY2UgZGlyZWN0b3JpZXMsIHNlbGYtdGVzdHMsIHNhbXBsZXMsIG9yIHNjcmlwdHMgKGUuZy4sIHRvb2xzLywgc2FtcGxlcy8sIHNjcmlwdHMvLCB1c3IvKQogICAgdGhhdCBkbyBub3QgYWZmZWN0IHRoZSBjb21waWxlZCBrZXJuZWwgaW1hZ2UgKHZtbGludXgpIG9yIGtlcm5lbCBtb2R1bGVzLgogICogUHVyZWx5IGRlY29yYXRpdmUgbG9nZ2luZyAoZS5nLiwgbWVzc2FnZSBzdHJpbmdzIGluIHByX2VyciwgcHJpbnRrLCBkZXZfaW5mbykgb3IgdHJhY2Vwb2ludHMKICAgIHRoYXQgZG8gbm90IGFsdGVyIGNvbnRyb2wgZmxvdyBvciBkYXRhIHN0cnVjdHVyZXMuCiAgKiBCdWlsZCBzeXN0ZW0gb3IgS2NvbmZpZyBjaGFuZ2VzIHRoYXQgZG8gbm90IGFsdGVyIGNvbXBpbGVkIEMgbG9naWMuCi0gU3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIGhhcmR3YXJlOgogICogVmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoZXMsIFNtYXJ0TklDcywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLAogICAgaW9uaWMsIGFtZGdwdSkgcmVxdWlyaW5nIHBoeXNpY2FsIEFTSUMvUENJZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS4KLSBVbnJlYWNoYWJsZSBleGVjdXRpb24gcGF0aHM6CiAgKiBEcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzICgucmVtb3ZlLCAuc2h1dGRvd24sIHBjaV91bnJlZ2lzdGVyX2RyaXZlcikgZXhlY3V0ZWQgb25seSBkdXJpbmcKICAgIHBoeXNpY2FsIFBDSSBob3QtdW5wbHVnIG9yIG1hbnVhbCBzeXNmcyBkcml2ZXIgdW5iaW5kaW5nLgogICogQ29kZSBwYXRocyBleGNsdXNpdmUgdG8gYXJjaGl0ZWN0dXJlcyBvdGhlciB0aGFuIHRoZSB0YXJnZXQgYXJjaGl0ZWN0dXJlLgoKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KMy4gV0hFTiBUTyBSRVRVUk4gV29ydGhGdXp6aW5nPXRydWUgKFBPU0lUSVZFIENSSVRFUklBKQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSZXR1cm4gV29ydGhGdXp6aW5nPXRydWUgd2hlbmV2ZXIgdGhlIHBhdGNoIHRvdWNoZXMgcmVhY2hhYmxlIGV4ZWN1dGFibGUgY29kZSwgaW5jbHVkaW5nOgotIENvcmUgU3Vic3lzdGVtczoKICAqIEFueSBsb2dpYyBtb2RpZmljYXRpb25zIGluIG1lbW9yeSBtYW5hZ2VtZW50IChtbS8pLCBzeW5jaHJvbml6YXRpb24vbG9ja2luZyAoa2VybmVsL2xvY2tpbmcvKSwKICAgIEJQRiwgc2NoZWR1bGVyLCBjb3JlIG5ldHdvcmtpbmcsIFZGUywgb3Igc3lzY2FsbCBoYW5kbGluZy4KLSBSZWZhY3RvcmluZ3MgYW5kIENvZGUgQ2xlYW51cHM6CiAgKiBBbnkgcmVzdHJ1Y3R1cmluZyBvZiByZWFjaGFibGUgZGF0YSBzdHJ1Y3R1cmVzLCBoZWxwZXIgYWJzdHJhY3Rpb25zLCBvciBhbGdvcml0aG0gZmxvd3MuCi0gUnVudGltZSBBc3NlcnRpb25zIGFuZCBEZWZlbnNpdmUgQ2hlY2tzOgogICogQW55IGludHJvZHVjdGlvbiBvciBhbHRlcmF0aW9uIG9mIGFzc2VydGlvbnMgKFdBUk5fT04qLCBWTV9XQVJOX09OKiwgQlVHX09OKiwgZXRjLikgaW4gcmVhY2hhYmxlIHBhdGhzLgotIFJlYWNoYWJsZSBEcml2ZXJzIGFuZCBQcm90b2NvbHM6CiAgKiBEcml2ZXJzIGFjY2Vzc2libGUgdmlhIHZpcnR1YWwgYnVzZXMgKHZpcnRpbywgVVNCIGdhZGdldCwgbG9vcGJhY2ssIG5ldGxpbmssIGJpbmRlciwgc29ja2V0cywgZXRjLikuCgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQo0LiBFWFRSQUNUSU5HIEZvY3VzU3ltYm9scyAoUFJFVkVOVElORyBESUxVVElPTikKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KV2hlbiBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IG11c3QgZXh0cmFjdCBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIGludG8gRm9jdXNTeW1ib2xzIHRvIGd1aWRlIHRoZSBmdXp6ZXI6CgotIEFWT0lEIFVCSVFVSVRPVVMgTElGRUNZQ0xFIEhPVC1QQVRIUzoKICBEbyBOT1QgbGlzdCBnZW5lcmljLCB1YmlxdWl0b3VzIGZ1bmN0aW9ucyBjYWxsZWQgYnkgYWxtb3N0IGV2ZXJ5IHByb2dyYW0gaW4gdGhlIGNvcnB1cwogIChpbmNsdWRpbmcsIGJ1dCBub3QgbGltaXRlZCB0bzogZ2VuZXJhbCBtZW1vcnkgYWxsb2NhdG9ycyBhbmQgZGVhbGxvY2F0b3JzLCBwYWdlIGZhdWx0CiAgYW5kIHRyYXAgaGFuZGxlcnMsIG9yIGNvcmUgc3luY2hyb25pemF0aW9uIHByaW1pdGl2ZXM7IHRoaXMgaXMgbm90IGFuIGV4aGF1c3RpdmUgbGlzdCkuCiAgTGlzdGluZyB1YmlxdWl0b3VzIGZ1bmN0aW9ucyBjYXVzZXMgdGhlIGZ1enplciB0byBjbGFzc2lmeSB0aG91c2FuZHMgb2YgdW5yZWxhdGVkIHRlc3RzIGFzICYjMzQ7Zm9jdXNlZCYjMzQ7LAogIHdoaWNoIHNldmVyZWx5IGRpbHV0ZXMgZnV6emluZyBlZmZvcnQgYXdheSBmcm9tIHRoZSBhY3R1YWwgY2hhbmdlcy4KCi0gVEFSR0VUIFNQRUNJRklDIEZFQVRVUkUgTE9HSUMgQU5EIEVOVFJZUE9JTlRTOgogIExpc3QgZnVuY3Rpb25zIHRoYXQgc3BlY2lmaWNhbGx5IGltcGxlbWVudCB0aGUgbG9naWMgYmVpbmcgYWRkZWQgb3IgYWx0ZXJlZCwgb3IgZGlyZWN0IEFQSSBlbnRyeXBvaW50cwogIGZvciB0aGUgc3Vic3lzdGVtIGZlYXR1cmUgdW5kZXIgcmV2aWV3LgoKLSBIQU5ETElORyBTVEFUSUMgSU5MSU5FIEZVTkNUSU9OUyBJTiBIRUFERVJTICguaCk6CiAgQ29tcGlsZXItaW5saW5lZCBzdGF0aWMgZnVuY3Rpb25zIChzdWNoIGFzIHN0YXRpYyBpbmxpbmVzIGluIG1tLyouaCBvciBpbmNsdWRlL2xpbnV4LyouaCkgbGFjawogIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMgaW4gdm1saW51eCBhbmQgY2Fubm90IGJlIHRhcmdldGVkIGRpcmVjdGx5IGJ5IHN5bWJvbCBjb3ZlcmFnZSBmaWx0ZXJzLgogIElmIHRoZSBjaGFuZ2VzIGFyZSBwcmltYXJpbHkgaW4gc3RhdGljIGlubGluZSBoZWxwZXJzLCBpZGVudGlmeSBub24tc3RhdGljLCBmZWF0dXJlLXNwZWNpZmljIGNhbGxlcgogIGZ1bmN0aW9ucyBpbiAuYyBmaWxlcyB0aGF0IGV4ZXJjaXNlIHRoZW0gKGF2b2lkaW5nIHViaXF1aXRvdXMgbGlmZWN5Y2xlIHdyYXBwZXJzKS4KCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CjUuIElERU5USUZZSU5HIEVuYWJsZUNvbmZpZ3MKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSBjb21waWxlIGFuZCByZWFjaCB0aGUgbW9kaWZpZWQgY29kZToKLSBJbnNwZWN0IEtjb25maWcgZmlsZXMgYW5kICNpZmRlZiBndWFyZHM7IGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgotIENoZWNrICYjMzQ7ZGVwZW5kcyBvbiYjMzQ7IGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlncyBuZWVkZWQuCi0gU3RyaXAgYW55ICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPlRhcmdldCBhcmNoaXRlY3R1cmU6IGFtZDY0CgpGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IDViYmQ2N2ZmNjM1OGNhYzRlY2JhODMyOGM3MDIyZWIzMTgxZDZlNTAKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgVHVlIFNlcCA4IDE0OjQzOjM1IDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvbmV0L3J4cnBjL3BlZXJfb2JqZWN0LmMgYi9uZXQvcnhycGMvcGVlcl9vYmplY3QuYwppbmRleCBmYTlhNDA2ZTExNjgzLi5mYWEyOTgzNjM4YjJiIDEwMDY0NAotLS0gYS9uZXQvcnhycGMvcGVlcl9vYmplY3QuYwomIzQzOyYjNDM7JiM0MzsgYi9uZXQvcnhycGMvcGVlcl9vYmplY3QuYwpAQCAtNDU0LDYgJiM0Mzs0NTQsMTIgQEAgdm9pZCByeHJwY19kZXN0cm95X2FsbF9wZWVycyhzdHJ1Y3QgcnhycGNfbmV0ICpyeG5ldCkKIAlzdHJ1Y3QgcnhycGNfcGVlciAqcGVlcjsKIAlpbnQgaTsKIAomIzQzOwkvKgomIzQzOwkgKiBQcmV2ZW50IHVzZS1hZnRlci1mcmVlIGlmIGEgcGVlciBpcyBjb25jdXJyZW50bHkgdW5saW5rZWQgZnJvbSB0aGUKJiM0MzsJICogaGFzaCB0YWJsZSBhbmQgZnJlZWQgdmlhIFJDVSBkdXJpbmcgaXRlcmF0aW9uLgomIzQzOwkgKi8KJiM0MzsJc3Bpbl9sb2NrX2JoKCZhbXA7cnhuZXQtJmd0O3BlZXJfaGFzaF9sb2NrKTsKJiM0MzsKIAlmb3IgKGkgPSAwOyBpICZsdDsgSEFTSF9TSVpFKHJ4bmV0LSZndDtwZWVyX2hhc2gpOyBpJiM0MzsmIzQzOykgewogCQlpZiAoaGxpc3RfZW1wdHkoJmFtcDtyeG5ldC0mZ3Q7cGVlcl9oYXNoW2ldKSkKIAkJCWNvbnRpbnVlOwpAQCAtNDY1LDYgJiM0Mzs0NzEsOCBAQCB2b2lkIHJ4cnBjX2Rlc3Ryb3lfYWxsX3BlZXJzKHN0cnVjdCByeHJwY19uZXQgKnJ4bmV0KQogCQkJICAgICAgICZhbXA7cGVlci0mZ3Q7c3J4LnRyYW5zcG9ydCk7CiAJCX0KIAl9CiYjNDM7CiYjNDM7CXNwaW5fdW5sb2NrX2JoKCZhbXA7cnhuZXQtJmd0O3BlZXJfaGFzaF9sb2NrKTsKIH0KIAogLyoqCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA4IDE0OjQzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI5OTMKCQkJCQkJCW91dHB1dDogMTAzCgkJCQkJCQl0aG91Z2h0czogNjEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBQYXRjaDogTmV0d29yayBQZWVyIERlc3RydWN0aW9uKioKCk9rYXksIGxldCYjMzk7cyBkaXZlIGluLiBJIHNlZSBhIHBhdGNoIGFuZCBJIG5lZWQgdG8gdW5kZXJzdGFuZCBpdHMgaW1wbGljYXRpb25zLiBNeSBpbW1lZGlhdGUgZm9jdXMgaXMgb24gdGhpcyBtb2RpZmljYXRpb24gdG8gYG5ldC9yeHJwYy9wZWVyX29iamVjdC5jYCwgc3BlY2lmaWNhbGx5IHRoZSBgcnhycGNfZGVzdHJveV9hbGxfcGVlcnNgIGZ1bmN0aW9uLiBUaGUgZmlsZW5hbWUgdGVsbHMgbWUgdGhpcyBpcyByZWxhdGVkIHRvIG5ldHdvcmsgY29tbXVuaWNhdGlvbiwgc3BlY2lmaWNhbGx5IHRoZSBSeFJQQyBwcm90b2NvbCwgYW5kIHRoZSBmdW5jdGlvbiBuYW1lIHN0cm9uZ2x5IHN1Z2dlc3RzIHRoaXMgcGF0Y2ggaXMgZGVhbGluZyB3aXRoIGNsZWFudXAgb3IgdGVhcmRvd24gb2YgcGVlciBvYmplY3RzLgoKVG8gcHJvcGVybHkgYXNzZXNzIHRoaXMsIEkmIzM5O2xsIG5lZWQgYSBicm9hZGVyIHBlcnNwZWN0aXZlLiBJJiMzOTttIGdvaW5nIHRvIHF1aWNrbHkgdXNlIGByZWFkLWZpbGVgIHRvIGdldCB0aGUgc3Vycm91bmRpbmcgY29kZSBjb250ZXh0LCBub3QganVzdCB0aGUgbGluZXMgY2hhbmdlZCBpbiB0aGUgcGF0Y2ggaXRzZWxmLiBTZWVpbmcgdGhlIGZ1bmN0aW9uJiMzOTtzIHN1cnJvdW5kaW5ncyB3aWxsIGhlbHAgdW5kZXJzdGFuZCBob3cgYHJ4cnBjX2Rlc3Ryb3lfYWxsX3BlZXJzYCBmaXRzIGludG8gdGhlIGxhcmdlciBhcmNoaXRlY3R1cmUuIEkgYWxzbyB3YW50IHRvIHZlcmlmeSB0aGF0IFJ4UlBDIGlzIGVuYWJsZWQgYXQgdGhlIGtlcm5lbCBjb25maWcgbGV2ZWwuIFNvIEkmIzM5O2xsIGNoZWNrIHRoZSBhc3NvY2lhdGVkIGBLY29uZmlnYCBmaWxlcyB0byBjb25maXJtIHRoYXQgUnhSUEMgaXMgYWN0dWFsbHkgY29tcGlsZWQgaW4uIFRoaXMgY29udGV4dCBpcyBlc3NlbnRpYWwgdG8gY29ycmVjdGx5IGV2YWx1YXRlIHRoZSBwYXRjaCYjMzk7cyBpbXBhY3QgYW5kIGFueSBwb3RlbnRpYWwgc2lkZSBlZmZlY3RzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA4IDE0OjQzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7bmV0L3J4cnBjL3BlZXJfb2JqZWN0LmMmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiA0NDAsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogNTAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7IDQ0MDpcdFx0aWYgKHBlZXIpIHtcbiA0NDE6XHRcdFx0ZGVidWdfaWQgPSBwZWVyLVx1MDAzZWRlYnVnX2lkO1xuIDQ0MjpcdFx0XHRkZWFkID0gX19yZWZjb3VudF9kZWNfYW5kX3Rlc3QoXHUwMDI2cGVlci1cdTAwM2VyZWYsIFx1MDAyNnIpO1xuIDQ0MzpcdFx0XHR0cmFjZV9yeHJwY19wZWVyKGRlYnVnX2lkLCByIC0gMSwgd2h5KTtcbiA0NDQ6XHRcdFx0aWYgKGRlYWQpXG4gNDQ1Olx0XHRcdFx0X19yeHJwY19wdXRfcGVlcihwZWVyKTtcbiA0NDY6XHRcdH1cbiA0NDc6XHR9XG4gNDQ4Olx0XG4gNDQ5Olx0LypcbiA0NTA6XHQgKiBNYWtlIHN1cmUgYWxsIHBlZXIgcmVjb3JkcyBoYXZlIGJlZW4gZGlzY2FyZGVkLlxuIDQ1MTpcdCAqL1xuIDQ1MjpcdHZvaWQgcnhycGNfZGVzdHJveV9hbGxfcGVlcnMoc3RydWN0IHJ4cnBjX25ldCAqcnhuZXQpXG4gNDUzOlx0e1xuIDQ1NDpcdFx0c3RydWN0IHJ4cnBjX3BlZXIgKnBlZXI7XG4gNDU1Olx0XHRpbnQgaTtcbiA0NTY6XHRcbiA0NTc6XHRcdC8qXG4gNDU4Olx0XHQgKiBQcmV2ZW50IHVzZS1hZnRlci1mcmVlIGlmIGEgcGVlciBpcyBjb25jdXJyZW50bHkgdW5saW5rZWQgZnJvbSB0aGVcbiA0NTk6XHRcdCAqIGhhc2ggdGFibGUgYW5kIGZyZWVkIHZpYSBSQ1UgZHVyaW5nIGl0ZXJhdGlvbi5cbiA0NjA6XHRcdCAqL1xuIDQ2MTpcdFx0c3Bpbl9sb2NrX2JoKFx1MDAyNnJ4bmV0LVx1MDAzZXBlZXJfaGFzaF9sb2NrKTtcbiA0NjI6XHRcbiA0NjM6XHRcdGZvciAoaSA9IDA7IGkgXHUwMDNjIEhBU0hfU0laRShyeG5ldC1cdTAwM2VwZWVyX2hhc2gpOyBpJiM0MzsmIzQzOykge1xuIDQ2NDpcdFx0XHRpZiAoaGxpc3RfZW1wdHkoXHUwMDI2cnhuZXQtXHUwMDNlcGVlcl9oYXNoW2ldKSlcbiA0NjU6XHRcdFx0XHRjb250aW51ZTtcbiA0NjY6XHRcbiA0Njc6XHRcdFx0aGxpc3RfZm9yX2VhY2hfZW50cnkocGVlciwgXHUwMDI2cnhuZXQtXHUwMDNlcGVlcl9oYXNoW2ldLCBoYXNoX2xpbmspIHtcbiA0Njg6XHRcdFx0XHRwcl9lcnIoXCYjMzQ7TGVha2VkIHBlZXIgJXggeyV1fSAlcElTcFxcblwmIzM0OyxcbiA0Njk6XHRcdFx0XHQgICAgICAgcGVlci1cdTAwM2VkZWJ1Z19pZCxcbiA0NzA6XHRcdFx0XHQgICAgICAgcmVmY291bnRfcmVhZChcdTAwMjZwZWVyLVx1MDAzZXJlZiksXG4gNDcxOlx0XHRcdFx0ICAgICAgIFx1MDAyNnBlZXItXHUwMDNlc3J4LnRyYW5zcG9ydCk7XG4gNDcyOlx0XHRcdH1cbiA0NzM6XHRcdH1cbiA0NzQ6XHRcbiA0NzU6XHRcdHNwaW5fdW5sb2NrX2JoKFx1MDAyNnJ4bmV0LVx1MDAzZXBlZXJfaGFzaF9sb2NrKTtcbiA0NzY6XHR9XG4gNDc3Olx0XG4gNDc4Olx0LyoqXG4gNDc5Olx0ICogcnhycGNfa2VybmVsX2dldF9jYWxsX3BlZXIgLSBHZXQgdGhlIHBlZXIgYWRkcmVzcyBvZiBhIGNhbGxcbiA0ODA6XHQgKiBAc29jazogVGhlIHNvY2tldCBvbiB3aGljaCB0aGUgY2FsbCBpcyBpbiBwcm9ncmVzcy5cbiA0ODE6XHQgKiBAY2FsbDogVGhlIGNhbGwgdG8gcXVlcnlcbiA0ODI6XHQgKlxuIDQ4MzpcdCAqIEdldCBhIHJlY29yZCBmb3IgdGhlIHJlbW90ZSBwZWVyIGluIGEgY2FsbC5cbiA0ODQ6XHQgKlxuIDQ4NTpcdCAqIFJldHVybjogVGhlIGNhbGwmIzM5O3MgcGVlciByZWNvcmQuXG4gNDg2Olx0ICovXG4gNDg3Olx0c3RydWN0IHJ4cnBjX3BlZXIgKnJ4cnBjX2tlcm5lbF9nZXRfY2FsbF9wZWVyKHN0cnVjdCBzb2NrZXQgKnNvY2ssIHN0cnVjdCByeHJwY19jYWxsICpjYWxsKVxuIDQ4ODpcdHtcbiA0ODk6XHRcdHJldHVybiByeHJwY19nZXRfcGVlcihjYWxsLVx1MDAzZXBlZXIsIHJ4cnBjX3BlZXJfZ2V0X2FwcGxpY2F0aW9uKTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wOCAxNDo0MzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtyeHJwY19kZXN0cm95X2FsbF9wZWVycyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9yeHJwYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvcnhycGMvYXItaW50ZXJuYWwuaD0xNDI2PXZvaWQgcnhycGNfbmV3X2luY29taW5nX3BlZXIoc3RydWN0IHJ4cnBjX2xvY2FsICpsb2NhbCwgc3RydWN0IHJ4cnBjX3BlZXIgKnBlZXIpO1xubmV0L3J4cnBjL2FyLWludGVybmFsLmg6MTQyNzp2b2lkIHJ4cnBjX2Rlc3Ryb3lfYWxsX3BlZXJzKHN0cnVjdCByeHJwY19uZXQgKik7XG5uZXQvcnhycGMvYXItaW50ZXJuYWwuaC0xNDI4LXN0cnVjdCByeHJwY19wZWVyICpyeHJwY19nZXRfcGVlcihzdHJ1Y3QgcnhycGNfcGVlciAqLCBlbnVtIHJ4cnBjX3BlZXJfdHJhY2UpO1xuLS1cbm5ldC9yeHJwYy9uZXRfbnMuYz0xMDM9c3RhdGljIF9fbmV0X2V4aXQgdm9pZCByeHJwY19leGl0X25ldChzdHJ1Y3QgbmV0ICpuZXQpXG4tLVxubmV0L3J4cnBjL25ldF9ucy5jLTExMy1cdHJ4cnBjX2Rlc3Ryb3lfYWxsX2Nvbm5lY3Rpb25zKHJ4bmV0KTtcbm5ldC9yeHJwYy9uZXRfbnMuYzoxMTQ6XHRyeHJwY19kZXN0cm95X2FsbF9wZWVycyhyeG5ldCk7XG5uZXQvcnhycGMvbmV0X25zLmMtMTE1LVx0cnhycGNfZGVzdHJveV9hbGxfbG9jYWxzKHJ4bmV0KTtcbi0tXG5uZXQvcnhycGMvcGVlcl9vYmplY3QuYz00MzQ9dm9pZCByeHJwY19wdXRfcGVlcihzdHJ1Y3QgcnhycGNfcGVlciAqcGVlciwgZW51bSByeHJwY19wZWVyX3RyYWNlIHdoeSlcbi0tXG5uZXQvcnhycGMvcGVlcl9vYmplY3QuYy00NTEtICovXG5uZXQvcnhycGMvcGVlcl9vYmplY3QuYzo0NTI6dm9pZCByeHJwY19kZXN0cm95X2FsbF9wZWVycyhzdHJ1Y3QgcnhycGNfbmV0ICpyeG5ldClcbm5ldC9yeHJwYy9wZWVyX29iamVjdC5jLTQ1My17XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDggMTQ6NDM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtuZXQvcnhycGMvS2NvbmZpZyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDEsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogNDAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7ICAgMTpcdCMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxuICAgMjpcdCNcbiAgIDM6XHQjIFJ4UlBDIHNlc3Npb24gc29ja2V0c1xuICAgNDpcdCNcbiAgIDU6XHRcbiAgIDY6XHRjb25maWcgQUZfUlhSUENcbiAgIDc6XHRcdHRyaXN0YXRlIFwmIzM0O1J4UlBDIHNlc3Npb24gc29ja2V0c1wmIzM0O1xuICAgODpcdFx0ZGVwZW5kcyBvbiBJTkVUXG4gICA5Olx0XHRzZWxlY3QgQ1JZUFRPXG4gIDEwOlx0XHRzZWxlY3QgQ1JZUFRPX0xJQl9ERVMgaWYgUlhLQURcbiAgMTE6XHRcdHNlbGVjdCBLRVlTXG4gIDEyOlx0XHRzZWxlY3QgTkVUX1VEUF9UVU5ORUxcbiAgMTM6XHRcdGhlbHBcbiAgMTQ6XHRcdCAgU2F5IFkgb3IgTSBoZXJlIHRvIGluY2x1ZGUgc3VwcG9ydCBmb3IgUnhSUEMgc2Vzc2lvbiBzb2NrZXRzIChqdXN0XG4gIDE1Olx0XHQgIHRoZSB0cmFuc3BvcnQgcGFydCwgbm90IHRoZSBwcmVzZW50YXRpb24gcGFydDogKHVuKW1hcnNoYWxsaW5nIGlzXG4gIDE2Olx0XHQgIGxlZnQgdG8gdGhlIGFwcGxpY2F0aW9uKS5cbiAgMTc6XHRcbiAgMTg6XHRcdCAgVGhlc2UgYXJlIHVzZWQgZm9yIEFGUyBrZXJuZWwgZmlsZXN5c3RlbSBhbmQgdXNlcnNwYWNlIHV0aWxpdGllcy5cbiAgMTk6XHRcbiAgMjA6XHRcdCAgVGhpcyBtb2R1bGUgYXQgdGhlIG1vbWVudCBvbmx5IHN1cHBvcnRzIGNsaWVudCBvcGVyYXRpb25zIGFuZCBpc1xuICAyMTpcdFx0ICBjdXJyZW50bHkgaW5jb21wbGV0ZS5cbiAgMjI6XHRcbiAgMjM6XHRcdCAgU2VlIERvY3VtZW50YXRpb24vbmV0d29ya2luZy9yeHJwYy5yc3QuXG4gIDI0Olx0XG4gIDI1Olx0aWYgQUZfUlhSUENcbiAgMjY6XHRcbiAgMjc6XHRjb25maWcgQUZfUlhSUENfSVBWNlxuICAyODpcdFx0Ym9vbCBcJiMzNDtJUHY2IHN1cHBvcnQgZm9yIFJ4UlBDXCYjMzQ7XG4gIDI5Olx0XHRkZXBlbmRzIG9uIElQVjZcbiAgMzA6XHRcdGhlbHBcbiAgMzE6XHRcdCAgU2F5IFkgaGVyZSB0byBhbGxvdyBBRl9SWFJQQyB0byB1c2UgSVBWNiBVRFAgYXMgd2VsbCBhcyBJUFY0IFVEUCBhc1xuICAzMjpcdFx0ICBpdHMgbmV0d29yayB0cmFuc3BvcnQuXG4gIDMzOlx0XG4gIDM0Olx0Y29uZmlnIEFGX1JYUlBDX0lOSkVDVF9MT1NTXG4gIDM1Olx0XHRib29sIFwmIzM0O0luamVjdCBwYWNrZXQgbG9zcyBpbnRvIFJ4UlBDIHBhY2tldCBzdHJlYW1cJiMzNDtcbiAgMzY6XHRcdGhlbHBcbiAgMzc6XHRcdCAgU2F5IFkgaGVyZSB0byBpbmplY3QgcGFja2V0IGxvc3MgYnkgZGlzY2FyZGluZyBzb21lIHJlY2VpdmVkIGFuZCBzb21lXG4gIDM4Olx0XHQgIHRyYW5zbWl0dGVkIHBhY2tldHMuXG4gIDM5Olx0XG4gIDQwOlx0Y29uZmlnIEFGX1JYUlBDX0lOSkVDVF9SWF9ERUxBWVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA4IDE0OjQzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDUwMTcKCQkJCQkJCW91dHB1dDogMzIKCQkJCQkJCXRob3VnaHRzOiAzOTcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQXNzZXNzbWVudCBvZiBSeFJQQyBGdXp6aW5nIFBvdGVudGlhbCoqCgpPa2F5LCBsZXQmIzM5O3MgYnJlYWsgdGhpcyBkb3duLiBgcnhycGNfZGVzdHJveV9hbGxfcGVlcnNgIGdldHMgY2FsbGVkIHdoZW4gYSBuZXR3b3JrIG5hbWVzcGFjZSBpcyB0b3JuIGRvd24sIHNwZWNpZmljYWxseSBkdXJpbmcgYHJ4cnBjX2V4aXRfbmV0YC4gVGhpcyB0ZWFyZG93biBoYXBwZW5zIHdoZW4gYSBuZXRucyB0aGF0IHdhcyBjcmVhdGVkIGJ5IGEgdXNlciBvciBmdXp6ZXIgZXhpdHMuIFRoZSBjcml0aWNhbCBwYXJ0IGlzIHRoYXQgQUZfUlhSUEMgc29ja2V0cyBhcmUgZGlyZWN0bHkgYWNjZXNzaWJsZSB0aHJvdWdoIHN0YW5kYXJkIGBzb2NrZXQoKWAgY2FsbHMsIG1lYW5pbmcgc3l6a2FsbGVyIGNhbiByZWFjaCB0aGVtLgoKTXkgaW5pdGlhbCBxdWVzdGlvbjogSXMgQUZfUlhSUEMgcmVhY2hhYmxlIGFuZCB3b3J0aCBmdXp6aW5nPyBUaGUgYW5zd2VyIGlzIGEgY2xlYXIgKnllcyouIFRoZSBmYWN0IHRoYXQgaXQmIzM5O3MgdHJpZ2dlcmVkIGJ5IG5ldHdvcmsgbmFtZXNwYWNlIGV4aXQgYW5kIGludm9sdmVzIFJ4UlBDIHNvY2tldHMgYW5kIHBlZXJzIG1ha2VzIGl0IGEgcHJpbWUgY2FuZGlkYXRlLgoKVGhlIHJlbGV2YW50IHBhdGNoIGludHJvZHVjZXMgYSBgc3Bpbl9sb2NrX2JoYCBhbmQgYHNwaW5fdW5sb2NrX2JoYCBhcm91bmQgdGhlIGhhc2ggaXRlcmF0aW9uIGluIGByeHJwY19kZXN0cm95X2FsbF9wZWVyc2AuIFRoaXMgaXMgc2lnbmlmaWNhbnQgYmVjYXVzZSwgYWNjb3JkaW5nIHRvIHRoZSBmdXp6aW5nIGd1aWRlbGluZXMsIHdlIHNob3VsZCBjb25zaWRlciBhIHBhdGNoICYjMzQ7V29ydGhGdXp6aW5nPXRydWUmIzM0OyBpZiBpdCB0b3VjaGVzIHJlYWNoYWJsZSBleGVjdXRhYmxlIGNvZGUuIEFuZCB0aGlzIGRlZmluaXRlbHkgZG9lczoKCiogICBJdCBpbnZvbHZlcyAqY29yZSBuZXR3b3JraW5nKiAodGhlIG5hbWVzcGFjZSB0ZWFyZG93biBhbmQgUnhSUEMgcHJvdG9jb2wpLgoqICAgSXQmIzM5O3MgYSByZWFjaGFibGUgcHJvdG9jb2wgKEFGX1JYUlBDKS4KKiAgIEl0IGludHJvZHVjZXMgKmxvY2tpbmcgc3luY2hyb25pemF0aW9uKiBkdXJpbmcgbmV0d29yayBuYW1lc3BhY2UgdGVhcmRvd24gYW5kIFJ4UlBDIHBlZXIgY2xlYW51cC4KClRoZXJlZm9yZSwgdGhpcyBwYXRjaCBkaXJlY3RseSBmYWxscyBpbnRvIHRoZSBjYXRlZ29yeSBvZiBjb2RlIHRoYXQgcmVxdWlyZXMgZnV6emluZyB0byBsb29rIGZvciBwb3RlbnRpYWwgbG9jayBvcmRlciB2aW9sYXRpb25zLCBkZWFkbG9ja3MsIGxvY2tkZXAgd2FybmluZ3MsIGFuZCBvdGhlciBjb25jdXJyZW50IHJhY2UgY29uZGl0aW9ucy4gTXkgZXhwZXJpZW5jZSB0ZWxscyBtZSB0aGF0IHRoZXNlIHR5cGVzIG9mIGNoYW5nZXMgYXJlIG9mdGVuIGZlcnRpbGUgZ3JvdW5kIGZvciBmaW5kaW5nIHN1YnRsZSBjb25jdXJyZW5jeSBidWdzLgoKRmluYWxseSwgSSBzaG91bGQgY29uZmlybSB0aGUgY29uZmlndXJhdGlvbi4gQUZfUlhSUEMgZGVwZW5kcyBvbiBJTkVULiBJIHdpbGwgYWxzbyBjaGVjayB0aGUgYG5ldC9yeHJwYy9NYWtlZmlsZWAgdG8gY29uZmlybSB0aGUgYnVpbGQgZGVwZW5kZW5jaWVzIGFuZCBhbnkgb3RoZXIgcmVsZXZhbnQgc2V0dGluZ3MgdGhhdCBtaWdodCBpbXBhY3QgZnV6emluZy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD44LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wOCAxNDo0MzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O25ldC9yeHJwYy9NYWtlZmlsZSYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDEsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogNDAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7ICAgMTpcdCMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjBcbiAgIDI6XHQjXG4gICAzOlx0IyBNYWtlZmlsZSBmb3IgTGludXgga2VybmVsIFJ4UlBDXG4gICA0Olx0I1xuICAgNTpcdFxuICAgNjpcdG9iai0kKENPTkZJR19BRl9SWFJQQykgJiM0Mzs9IHJ4cnBjLm9cbiAgIDc6XHRcbiAgIDg6XHRyeHJwYy15IDo9IFxcXG4gICA5Olx0XHRhZl9yeHJwYy5vIFxcXG4gIDEwOlx0XHRjYWxsX2FjY2VwdC5vIFxcXG4gIDExOlx0XHRjYWxsX2V2ZW50Lm8gXFxcbiAgMTI6XHRcdGNhbGxfb2JqZWN0Lm8gXFxcbiAgMTM6XHRcdGNhbGxfc3RhdGUubyBcXFxuICAxNDpcdFx0Y29ubl9jbGllbnQubyBcXFxuICAxNTpcdFx0Y29ubl9ldmVudC5vIFxcXG4gIDE2Olx0XHRjb25uX29iamVjdC5vIFxcXG4gIDE3Olx0XHRjb25uX3NlcnZpY2UubyBcXFxuICAxODpcdFx0aW5wdXQubyBcXFxuICAxOTpcdFx0aW5wdXRfcmFjay5vIFxcXG4gIDIwOlx0XHRpbnNlY3VyZS5vIFxcXG4gIDIxOlx0XHRpb190aHJlYWQubyBcXFxuICAyMjpcdFx0a2V5Lm8gXFxcbiAgMjM6XHRcdGxvY2FsX2V2ZW50Lm8gXFxcbiAgMjQ6XHRcdGxvY2FsX29iamVjdC5vIFxcXG4gIDI1Olx0XHRtaXNjLm8gXFxcbiAgMjY6XHRcdG5ldF9ucy5vIFxcXG4gIDI3Olx0XHRvb2IubyBcXFxuICAyODpcdFx0b3V0cHV0Lm8gXFxcbiAgMjk6XHRcdHBlZXJfZXZlbnQubyBcXFxuICAzMDpcdFx0cGVlcl9vYmplY3QubyBcXFxuICAzMTpcdFx0cmVjdm1zZy5vIFxcXG4gIDMyOlx0XHRydHQubyBcXFxuICAzMzpcdFx0c2VjdXJpdHkubyBcXFxuICAzNDpcdFx0c2VuZG1zZy5vIFxcXG4gIDM1Olx0XHRzZXJ2ZXJfa2V5Lm8gXFxcbiAgMzY6XHRcdHNrYnVmZi5vIFxcXG4gIDM3Olx0XHR0eGJ1Zi5vIFxcXG4gIDM4Olx0XHR1dGlscy5vXG4gIDM5Olx0XG4gIDQwOlx0cnhycGMtJChDT05GSUdfUFJPQ19GUykgJiM0Mzs9IHByb2Mub1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA4IDE0OjQzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDYyOTAKCQkJCQkJCW91dHB1dDogMzcKCQkJCQkJCXRob3VnaHRzOiAzMgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB0aG91Z2h0IHByb2Nlc3MsIHN1bW1hcml6ZWQgYXMgeW91IHJlcXVlc3RlZDoKCioqSW52ZXN0aWdhdGluZyB0aGUgTGlmZWN5Y2xlIG9mIGByeHJwY19kZXN0cm95X2FsbF9wZWVyc2AqKgoKT2theSwgc28gSSBuZWVkIHRvIHRyYWNlIHRoZSB1c2FnZSBvZiBgcnhycGNfZGVzdHJveV9hbGxfcGVlcnNgLiBUaGlzIGlzIGxpa2VseSBhIGNyaXRpY2FsIGZ1bmN0aW9uIGZvciBjbGVhbmluZyB1cCByZXNvdXJjZXMsIGFuZCBJIHdhbnQgdG8gdW5kZXJzdGFuZCAqd2hlbiogYW5kICp3aHkqIGl0JiMzOTtzIGNhbGxlZC4gTXkgZmlyc3QgaW5zdGluY3QsIGdpdmVuIG15IGV4cGVyaWVuY2UsIGlzIHRvIGp1bXAgcmlnaHQgaW50byB0aGUgc291cmNlIGNvZGUuIFNwZWNpZmljYWxseSwgSSYjMzk7bGwgc3RhcnQgYnkgY2hlY2tpbmcgYG5ldC9yeHJwYy9uZXRfbnMuY2AuIFRoYXQgZmlsZSBpcyBhIGdvb2Qgc3RhcnRpbmcgcG9pbnQgZm9yIG5ldHdvcmsgbmFtZXNwYWNlLXJlbGF0ZWQgY29kZSB3aXRoaW4gdGhlIFJ4UlBDIGltcGxlbWVudGF0aW9uLiBJdCYjMzk7cyBoaWdobHkgcHJvYmFibGUgdGhhdCB0aGlzIGZ1bmN0aW9uIGlzIGNhbGxlZCB3aGVuIGEgbmV0d29yayBuYW1lc3BhY2UgaXMgYmVpbmcgdG9ybiBkb3duIG9yLCBhdCBsZWFzdCwgd2hlbiB0aGUgUnhSUEMgZGF0YSBhc3NvY2lhdGVkIHdpdGggaXQgaXMgYmVpbmcgY2xlYW5lZCB1cC4gRmluZGluZyB0aGUgY2FsbHMgdG8gdGhpcyBmdW5jdGlvbiB3aWxsIGdpdmUgbWUgYSBiZXR0ZXIgdW5kZXJzdGFuZGluZyBvZiB0aGUgb3ZlcmFsbCByZXNvdXJjZSBtYW5hZ2VtZW50IGFuZCBsaWZlY3ljbGUgd2l0aGluIHRoZSBSeFJQQyBzdWJzeXN0ZW0uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA4IDE0OjQzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7bmV0L3J4cnBjL25ldF9ucy5jJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogOTUsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMzUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7ICA5NTpcdGVycl9wcm9jOlxuICA5NjpcdFx0cnhuZXQtXHUwMDNlbGl2ZSA9IGZhbHNlO1xuICA5NzpcdFx0cmV0dXJuIHJldDtcbiAgOTg6XHR9XG4gIDk5Olx0XG4gMTAwOlx0LypcbiAxMDE6XHQgKiBDbGVhbiB1cCBhIHBlci1uZXR3b3JrIG5hbWVzcGFjZSByZWNvcmQuXG4gMTAyOlx0ICovXG4gMTAzOlx0c3RhdGljIF9fbmV0X2V4aXQgdm9pZCByeHJwY19leGl0X25ldChzdHJ1Y3QgbmV0ICpuZXQpXG4gMTA0Olx0e1xuIDEwNTpcdFx0c3RydWN0IHJ4cnBjX25ldCAqcnhuZXQgPSByeHJwY19uZXQobmV0KTtcbiAxMDY6XHRcbiAxMDc6XHRcdHJ4bmV0LVx1MDAzZWxpdmUgPSBmYWxzZTtcbiAxMDg6XHRcdHRpbWVyX2RlbGV0ZV9zeW5jKFx1MDAyNnJ4bmV0LVx1MDAzZXBlZXJfa2VlcGFsaXZlX3RpbWVyKTtcbiAxMDk6XHRcdGNhbmNlbF93b3JrX3N5bmMoXHUwMDI2cnhuZXQtXHUwMDNlcGVlcl9rZWVwYWxpdmVfd29yayk7XG4gMTEwOlx0XHQvKiBSZW1vdmUgdGhlIHRpbWVyIGFnYWluIGFzIHRoZSB3b3JrZXIgbWF5IGhhdmUgcmVzdGFydGVkIGl0LiAqL1xuIDExMTpcdFx0dGltZXJfZGVsZXRlX3N5bmMoXHUwMDI2cnhuZXQtXHUwMDNlcGVlcl9rZWVwYWxpdmVfdGltZXIpO1xuIDExMjpcdFx0cnhycGNfZGVzdHJveV9hbGxfY2FsbHMocnhuZXQpO1xuIDExMzpcdFx0cnhycGNfZGVzdHJveV9hbGxfY29ubmVjdGlvbnMocnhuZXQpO1xuIDExNDpcdFx0cnhycGNfZGVzdHJveV9hbGxfcGVlcnMocnhuZXQpO1xuIDExNTpcdFx0cnhycGNfZGVzdHJveV9hbGxfbG9jYWxzKHJ4bmV0KTtcbiAxMTY6XHRcdHByb2NfcmVtb3ZlKHJ4bmV0LVx1MDAzZXByb2NfbmV0KTtcbiAxMTc6XHR9XG4gMTE4Olx0XG4gMTE5Olx0c3RydWN0IHBlcm5ldF9vcGVyYXRpb25zIHJ4cnBjX25ldF9vcHMgPSB7XG4gMTIwOlx0XHQuaW5pdFx0PSByeHJwY19pbml0X25ldCxcbiAxMjE6XHRcdC5leGl0XHQ9IHJ4cnBjX2V4aXRfbmV0LFxuIDEyMjpcdFx0LmlkXHQ9IFx1MDAyNnJ4cnBjX25ldF9pZCxcbiAxMjM6XHRcdC5zaXplXHQ9IHNpemVvZihzdHJ1Y3QgcnhycGNfbmV0KSxcbiAxMjQ6XHR9O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjExLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wOCAxNDo0MzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA3MDI1CgkJCQkJCQlvdXRwdXQ6IDQ0CgkJCQkJCQl0aG91Z2h0czogMTEwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgUlhSUEMgUGVlciBPYmplY3QgTGlmZWN5Y2xlKioKCk9rYXksIGxldCYjMzk7cyBkaXZlIGludG8gdGhpcyBgcnhycGNfZGVzdHJveV9hbGxfcGVlcnNgIGZ1bmN0aW9uLiBJIHNlZSBpdCYjMzk7cyBub24tc3RhdGljIGFuZCBkZWZpbmVkIGluIGBuZXQvcnhycGMvcGVlcl9vYmplY3QuY2AuIEludGVyZXN0aW5nLiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdG8gdHJhY2UgdGhlIGNvbXBsZXRlIGxpZmVjeWNsZSBvZiB0aGVzZSBwZWVycywgc28gSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2hlcmUgdGhpcyBmdW5jdGlvbiBmaXRzIGluIHRoZSBncmFuZCBzY2hlbWUuIFRvIGRvIHRoYXQsIEkgc2hvdWxkIGxvb2sgYXQgbm90IGp1c3QgdGhpcyBmdW5jdGlvbiBidXQgYWxzbyBhZGphY2VudCBvbmVzIGluIGBwZWVyX29iamVjdC5jYC4KCldoYXQgYXJlIHRoZSBjcml0aWNhbCBmdW5jdGlvbnMgdG8gc2NydXRpbml6ZT8gV2VsbCwgYHJ4cnBjX2Rlc3Ryb3lfYWxsX3BlZXJzYCBpcyBvYnZpb3VzbHkgYSBrZXkgb25lLiBCdXQgZnVuY3Rpb25zIGludm9sdmVkIGluIHRoZSBicm9hZGVyIHBlZXIgbGlmZWN5Y2xlIGFyZSByZWxldmFudCB0b28uIEkgbmVlZCB0byBrZWVwIGluIG1pbmQsIGByeHJwY19leGl0X25ldGAgYW5kIGByeHJwY19wdXRfcGVlcmAuIEkmIzM5O2xsIG5lZWQgdG8gZXhwYW5kIG15IHNlYXJjaCB0byBpZGVudGlmeSBhbnkgb3RoZXIgZnVuY3Rpb25zIHRoYXQgYXJlIGNyaXRpY2FsIHRvIHRoZSBwZWVyIGxpZmVjeWNsZS4gSSYjMzk7bGwgdGFrZSBhIHF1aWNrIGdsYW5jZSBhdCB0aGUgb3RoZXIgZnVuY3Rpb25zIGluIGBwZWVyX29iamVjdC5jYCBhbmQgbWFrZSBzdXJlIEkgZG9uJiMzOTt0IG1pc3MgYW55dGhpbmcgdGhhdCBnaXZlcyBtZSBhIGJldHRlciB1bmRlcnN0YW5kaW5nIG9mIGhvdyB0aGVzZSBwZWVycyBhcmUgY3JlYXRlZCwgbWFuYWdlZCwgYW5kIGV2ZW50dWFsbHkgZGVzdHJveWVkLiBMZXQmIzM5O3Mgc2VlIHdoYXQgZWxzZSBpcyBpbiB0aGF0IGZpbGUuLi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDggMTQ6NDQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7XlthLXpBLVowLTlfXSYjNDM7IHJ4cnBjXyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9yeHJwYy9wZWVyX29iamVjdC5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9yeHJwYy9wZWVyX29iamVjdC5jPTExNj1zdGF0aWMgc3RydWN0IHJ4cnBjX3BlZXIgKl9fcnhycGNfbG9va3VwX3BlZXJfcmN1KFxuLS1cbm5ldC9yeHJwYy9wZWVyX29iamVjdC5jLTEzNS0gKi9cbm5ldC9yeHJwYy9wZWVyX29iamVjdC5jOjEzNjpzdHJ1Y3QgcnhycGNfcGVlciAqcnhycGNfbG9va3VwX3BlZXJfcmN1KHN0cnVjdCByeHJwY19sb2NhbCAqbG9jYWwsXG5uZXQvcnhycGMvcGVlcl9vYmplY3QuYy0xMzctXHRcdFx0XHRcdCBjb25zdCBzdHJ1Y3Qgc29ja2FkZHJfcnhycGMgKnNyeClcbi0tXG5uZXQvcnhycGMvcGVlcl9vYmplY3QuYy0xNTEtICovXG5uZXQvcnhycGMvcGVlcl9vYmplY3QuYzoxNTI6dm9pZCByeHJwY19hc3Nlc3NfTVRVX3NpemUoc3RydWN0IHJ4cnBjX2xvY2FsICpsb2NhbCwgc3RydWN0IHJ4cnBjX3BlZXIgKnBlZXIpXG5uZXQvcnhycGMvcGVlcl9vYmplY3QuYy0xNTMte1xuLS1cbm5ldC9yeHJwYy9wZWVyX29iamVjdC5jLTIyMS0gKi9cbm5ldC9yeHJwYy9wZWVyX29iamVjdC5jOjIyMjpzdHJ1Y3QgcnhycGNfcGVlciAqcnhycGNfYWxsb2NfcGVlcihzdHJ1Y3QgcnhycGNfbG9jYWwgKmxvY2FsLCBnZnBfdCBnZnAsXG5uZXQvcnhycGMvcGVlcl9vYmplY3QuYy0yMjMtXHRcdFx0XHQgICAgZW51bSByeHJwY19wZWVyX3RyYWNlIHdoeSlcbi0tXG5uZXQvcnhycGMvcGVlcl9vYmplY3QuYz0zMDQ9c3RhdGljIHZvaWQgcnhycGNfZnJlZV9wZWVyKHN0cnVjdCByeHJwY19wZWVyICpwZWVyKVxuLS1cbm5ldC9yeHJwYy9wZWVyX29iamVjdC5jLTMxNi0gKi9cbm5ldC9yeHJwYy9wZWVyX29iamVjdC5jOjMxNzp2b2lkIHJ4cnBjX25ld19pbmNvbWluZ19wZWVyKHN0cnVjdCByeHJwY19sb2NhbCAqbG9jYWwsIHN0cnVjdCByeHJwY19wZWVyICpwZWVyKVxubmV0L3J4cnBjL3BlZXJfb2JqZWN0LmMtMzE4LXtcbi0tXG5uZXQvcnhycGMvcGVlcl9vYmplY3QuYy0zMzMtICovXG5uZXQvcnhycGMvcGVlcl9vYmplY3QuYzozMzQ6c3RydWN0IHJ4cnBjX3BlZXIgKnJ4cnBjX2xvb2t1cF9wZWVyKHN0cnVjdCByeHJwY19sb2NhbCAqbG9jYWwsXG5uZXQvcnhycGMvcGVlcl9vYmplY3QuYy0zMzUtXHRcdFx0XHQgICAgIHN0cnVjdCBzb2NrYWRkcl9yeHJwYyAqc3J4LCBnZnBfdCBnZnApXG4tLVxubmV0L3J4cnBjL3BlZXJfb2JqZWN0LmMtMzg3LSAqL1xubmV0L3J4cnBjL3BlZXJfb2JqZWN0LmM6Mzg4OnN0cnVjdCByeHJwY19wZWVyICpyeHJwY19nZXRfcGVlcihzdHJ1Y3QgcnhycGNfcGVlciAqcGVlciwgZW51bSByeHJwY19wZWVyX3RyYWNlIHdoeSlcbm5ldC9yeHJwYy9wZWVyX29iamVjdC5jLTM4OS17XG4tLVxubmV0L3J4cnBjL3BlZXJfb2JqZWN0LmMtMzk5LSAqL1xubmV0L3J4cnBjL3BlZXJfb2JqZWN0LmM6NDAwOnN0cnVjdCByeHJwY19wZWVyICpyeHJwY19nZXRfcGVlcl9tYXliZShzdHJ1Y3QgcnhycGNfcGVlciAqcGVlcixcbm5ldC9yeHJwYy9wZWVyX29iamVjdC5jLTQwMS1cdFx0XHRcdFx0ZW51bSByeHJwY19wZWVyX3RyYWNlIHdoeSlcbi0tXG5uZXQvcnhycGMvcGVlcl9vYmplY3QuYz00MTc9c3RhdGljIHZvaWQgX19yeHJwY19wdXRfcGVlcihzdHJ1Y3QgcnhycGNfcGVlciAqcGVlcilcbi0tXG5uZXQvcnhycGMvcGVlcl9vYmplY3QuYy00MzMtICovXG5uZXQvcnhycGMvcGVlcl9vYmplY3QuYzo0MzQ6dm9pZCByeHJwY19wdXRfcGVlcihzdHJ1Y3QgcnhycGNfcGVlciAqcGVlciwgZW51bSByeHJwY19wZWVyX3RyYWNlIHdoeSlcbm5ldC9yeHJwYy9wZWVyX29iamVjdC5jLTQzNS17XG4tLVxubmV0L3J4cnBjL3BlZXJfb2JqZWN0LmMtNDUxLSAqL1xubmV0L3J4cnBjL3BlZXJfb2JqZWN0LmM6NDUyOnZvaWQgcnhycGNfZGVzdHJveV9hbGxfcGVlcnMoc3RydWN0IHJ4cnBjX25ldCAqcnhuZXQpXG5uZXQvcnhycGMvcGVlcl9vYmplY3QuYy00NTMte1xuLS1cbm5ldC9yeHJwYy9wZWVyX29iamVjdC5jLTQ4Ni0gKi9cbm5ldC9yeHJwYy9wZWVyX29iamVjdC5jOjQ4NzpzdHJ1Y3QgcnhycGNfcGVlciAqcnhycGNfa2VybmVsX2dldF9jYWxsX3BlZXIoc3RydWN0IHNvY2tldCAqc29jaywgc3RydWN0IHJ4cnBjX2NhbGwgKmNhbGwpXG5uZXQvcnhycGMvcGVlcl9vYmplY3QuYy00ODgte1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wOCAxNDo0NDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA4MzU5CgkJCQkJCQlvdXRwdXQ6IDExNwoJCQkJCQkJdGhvdWdodHM6IDI2OAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBBbmFseXNpcyBvZiB0aGUgUlhSUEMgUGVlciBEZXN0cnVjdGlvbiBQYXRjaCoqCgpPa2F5LCBzbyBJJiMzOTt2ZSBiZWVuIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBhbmQsIHJpZ2h0IG9mZiB0aGUgYmF0LCBpdCYjMzk7cyBwcmV0dHkgY2xlYXIgdGhhdCBgcnhycGNfZGVzdHJveV9hbGxfcGVlcnNgIGlzIHRoZSBtYWluIGZ1bmN0aW9uIHRoYXQmIzM5O3MgYmVlbiBtb2RpZmllZC4gQSBxdWljayBnbGFuY2UgYXQgdGhlIGNvZGUgcmV2ZWFscyB0aGF0IGByeHJwY19leGl0X25ldGAgYWxzbyBjYWxscyBpdCwgc28gdGhhdCYjMzk7cyBkZWZpbml0ZWx5IGEgcmVsYXRlZCBhcmVhLiBHb29kIHRvIGtub3cuIExldCYjMzk7cyBtYWtlIHN1cmUgdGhhdCBgcnhycGNfZGVzdHJveV9hbGxfcGVlcnNgIGlzIHRoZSByaWdodCBmb2N1cyBzeW1ib2wgdG8gdXNlLi4uIHllcCwgaXQgbG9va3MgbGlrZSBpdCBpcy4gSXTigJlzICp0aGUqIGZ1bmN0aW9uIHRoZXkmIzM5O3ZlIGNoYW5nZWQsIHdoaWNoIGlzIHdoYXQgSSBzdXNwZWN0ZWQuIEFuZCBzaW5jZSBgcnhycGNfZXhpdF9uZXRgIGNhbGxzIGl0LCBpdCBtYWtlcyBzZW5zZSB0byBpbmNsdWRlIGl0LgoKTm93LCBjb25maWctd2lzZSwgaXQgbG9va3MgbGlrZSB3ZSYjMzk7cmUgZGVhbGluZyB3aXRoIGBBRl9SWFJQQ2Agc3BlY2lmaWNhbGx5LCB3aGljaCwgb2YgY291cnNlLCByZWxpZXMgb24gYElORVRgLiBUaGF0IG1ha2VzIHNlbnNlLgoKQWxyaWdodCwgdGltZSB0byB0aGluayBhYm91dCBgc2V0LXJlc3VsdHNgLiBXZSBuZWVkIHRvIGRlZmluZSBhbGwgdGhlIHBhcmFtZXRlcnMgdG8gcGFzcyB0byBpdDoKCiogICAqKldvcnRoRnV6emluZyoqOiBEZWZpbml0ZWx5IHRydWUuIFRoaXMgcGF0Y2ggaW50cm9kdWNlcyBhIHNwaW5sb2NrIChgcnhuZXQtJmd0O3BlZXJfaGFzaF9sb2NrYCkgaW4gYHJ4cnBjX2Rlc3Ryb3lfYWxsX3BlZXJzYCBmb3Igc3luY2hyb25pemF0aW9uLiBUaGlzIGlzIGNyaXRpY2FsIGZvciBwcmV2ZW50aW5nIHVzZS1hZnRlci1mcmVlIGlzc3VlcyB0aGF0IGNhbiBvY2N1ciBkdXJpbmcgbmV0d29yayBuYW1lc3BhY2UgdGVhcmRvd24gaW4gYEFGX1JYUlBDYC4gQW55IGNoYW5nZSB0aGF0IGFsdGVycyByZWFjaGFibGUgbG9ja2luZyBhbmQgc3luY2hyb25pemF0aW9uIGluIGEgY29yZSBuZXR3b3JraW5nIHByb3RvY29sIGlzIHdvcnRoIGEgY2xvc2UgbG9vay4KKiAgICoqUmVhc29uaW5nKio6IEkmIzM5O2xsIHdvcmQgaXQgc29tZXRoaW5nIGxpa2U6ICYjMzQ7VGhlIHBhdGNoIGFkZHMgc3BpbmxvY2sgc3luY2hyb25pemF0aW9uIChgcnhuZXQtJmd0O3BlZXJfaGFzaF9sb2NrYCkgaW4gYHJ4cnBjX2Rlc3Ryb3lfYWxsX3BlZXJzYCB0byBwcmV2ZW50IHVzZS1hZnRlci1mcmVlIHJhY2VzIGR1cmluZyBuZXR3b3JrIG5hbWVzcGFjZSB0ZWFyZG93biBpbiBBRl9SWFJQQy4gVGhpcyBtb2RpZmllcyByZWFjaGFibGUgbG9ja2luZy9zeW5jaHJvbml6YXRpb24gbG9naWMgaW4gYSBjb3JlIG5ldHdvcmtpbmcgcHJvdG9jb2wuJiMzNDsKKiAgICoqRm9jdXNTeW1ib2xzKio6IEFzIHdlIGFscmVhZHkgZXN0YWJsaXNoZWQsIHRoaXMgd2lsbCBiZSBgWyYjMzQ7cnhycGNfZGVzdHJveV9hbGxfcGVlcnMmIzM0OywgJiMzNDtyeHJwY19leGl0X25ldCYjMzQ7XWAuCiogICAqKkVuYWJsZUNvbmZpZ3MqKjogYFsmIzM0O0FGX1JYUlBDJiMzNDssICYjMzQ7SU5FVCYjMzQ7XWAg4oCTIHRoYXQmIzM5O3MgYSBuby1icmFpbmVyLgoKT2theSwgSSB0aGluayB0aGF0IGNvdmVycyBldmVyeXRoaW5nLiBMZXQgbWUganVzdCBkbyBhIHF1aWNrIHNhbml0eSBjaGVjayB0byBtYWtlIHN1cmUgSSYjMzk7bSBub3QgbWlzc2luZyBhbnl0aGluZ+KApiBhbmQgdGhlbiBpdCYjMzk7cyB0aW1lIHRvIGNhbGwgYHNldC1yZXN1bHRzYC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDggMTQ6NDQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0FGX1JYUlBDJiMzNDssCiAgICAmIzM0O0lORVQmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtyeHJwY19kZXN0cm95X2FsbF9wZWVycyYjMzQ7LAogICAgJiMzNDtyeHJwY19leGl0X25ldCYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBhZGRzIHNwaW5sb2NrIHN5bmNocm9uaXphdGlvbiAocGVlcl9oYXNoX2xvY2spIGFyb3VuZCBwZWVyIGhhc2ggdGFibGUgaXRlcmF0aW9uIGluIHJ4cnBjX2Rlc3Ryb3lfYWxsX3BlZXJzIHRvIHByZXZlbnQgY29uY3VycmVudCB1c2UtYWZ0ZXItZnJlZSByYWNlcyBkdXJpbmcgbmV0d29yayBuYW1lc3BhY2UgY2xlYW51cC4gVGhpcyBhbHRlcnMgbG9ja2luZyBhbmQgc3luY2hyb25pemF0aW9uIGluIHJlYWNoYWJsZSBBRl9SWFJQQyBuZXR3b3JraW5nIGNvZGUuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0FGX1JYUlBDJiMzNDssCiAgICAmIzM0O0lORVQmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtyeHJwY19kZXN0cm95X2FsbF9wZWVycyYjMzQ7LAogICAgJiMzNDtyeHJwY19leGl0X25ldCYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBhZGRzIHNwaW5sb2NrIHN5bmNocm9uaXphdGlvbiAocGVlcl9oYXNoX2xvY2spIGFyb3VuZCBwZWVyIGhhc2ggdGFibGUgaXRlcmF0aW9uIGluIHJ4cnBjX2Rlc3Ryb3lfYWxsX3BlZXJzIHRvIHByZXZlbnQgY29uY3VycmVudCB1c2UtYWZ0ZXItZnJlZSByYWNlcyBkdXJpbmcgbmV0d29yayBuYW1lc3BhY2UgY2xlYW51cC4gVGhpcyBhbHRlcnMgbG9ja2luZyBhbmQgc3luY2hyb25pemF0aW9uIGluIHJlYWNoYWJsZSBBRl9SWFJQQyBuZXR3b3JraW5nIGNvZGUuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTUvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA4IDE0OjQ0PC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5JZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDggMTQ6NDQ8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+a21zYW4tZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Y29yZTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtLTVNBTlJlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBhZGRzIHNwaW5fbG9ja19iaCBhbmQgc3Bpbl91bmxvY2tfYmggYXJvdW5kIHRoZSBwZWVyIGhhc2ggdGFibGUgaXRlcmF0aW9uIGluIHJ4cnBjX2Rlc3Ryb3lfYWxsX3BlZXJzKCkgdG8gcHJldmVudCByYWNlIGNvbmRpdGlvbnMgYW5kIHBvdGVudGlhbCB1c2UtYWZ0ZXItZnJlZSBkdXJpbmcgY2xlYW51cC4gSXQgZG9lcyBub3QgaW50cm9kdWNlIGFueSBtZW1vcnkgYWxsb2NhdGlvbnMsIHVuaW5pdGlhbGl6ZWQgdmFyaWFibGVzLCB1c2VyLXNwYWNlIGNvcGllcyAoaW5mby1sZWFrcyksIG9yIGFsdGVyIGRhdGEgaW5pdGlhbGl6YXRpb24gbG9naWMuIEFueSBjb25jdXJyZW5jeSwgbG9ja2luZywgb3IgdXNlLWFmdGVyLWZyZWUgaXNzdWVzIGFyZSBkZXRlY3RlZCBieSBMT0NLREVQIGFuZCBLQVNBTi4gVGhlcmVmb3JlLCBhIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaXMgbm90IG5lZWRlZC4mIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgc2VjdXJpdHkgZW5naW5lZXIgc3BlY2lhbGl6aW5nIGluIGtlcm5lbCBtZW1vcnkKZXJyb3IgZGV0ZWN0b3JzIChLQVNBTiBhbmQgS01TQU4pLiBZb3VyIGpvYiBpcyB0byByZXZpZXcgdGhlIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQKZGV0ZXJtaW5lIGlmIHRoZSBjb2RlIGNoYW5nZXMganVzdGlmeSBzcGF3bmluZyBhIGRlZGljYXRlZCBLTVNBTiAoS2VybmVsTWVtb3J5U2FuaXRpemVyKQpmdXp6aW5nIHNlc3Npb24gaW4gYWRkaXRpb24gdG8gc3RhbmRhcmQgS0FTQU4gZnV6emluZy4KCkNSSVRJQ0FMIERJU1RJTkNUSU9OIEJFVFdFRU4gS0FTQU4gQU5EIEtNU0FOOgotIFN0YW5kYXJkIEtBU0FOIGtlcm5lbCBidWlsZHMgKHVwc3RyZWFtLWFwcGFybW9yLWthc2FuLmNvbmZpZykgYWxyZWFkeSBlbmFibGUKICBhIGNvbXByZWhlbnNpdmUgc3VpdGUgb2YgZGVidWdnaW5nIHRvb2xzIGFuZCBzYW5pdGl6ZXJzLCBpbmNsdWRpbmcgS0FTQU4KICAob3V0LW9mLWJvdW5kcyBhY2Nlc3NlcywgdXNlLWFmdGVyLWZyZWUsIGRvdWJsZSBmcmVlLCBpbnZhbGlkIGZyZWUpLCBMT0NLREVQCiAgKGxvY2tpbmcgYnVncyBhbmQgZGVhZGxvY2tzKSwgVUItc2FuaXRpemVycywgYW5kIG1lbW9yeSBjb3JydXB0aW9uIGNoZWNrcy4KLSBLTVNBTiAoS2VybmVsTWVtb3J5U2FuaXRpemVyKSBkZXRlY3RzIHJlYWRzIG9mIFVOSU5JVElBTElaRUQgbWVtb3J5IChzdGFjaywgaGVhcCwKICBvciBwYWdlIGFsbG9jYXRpb25zKSBhbmQga2VybmVsLXRvLXVzZXIgbWVtb3J5IGluZm8tbGVha3MuCgpSdWxlOiBUSEVSRSBJUyBOTyBTRU5TRSBJTiBSVU5OSU5HIEEgS01TQU4gU0VTU0lPTiBJRiBBIEJVRyBDQU4gQkUgQ0FVR0hUIEJZIEtBU0FOLApMT0NLREVQLCBPUiBPVEhFUiBTVEFOREFSRCBCVUcgREVURUNUT1JTLgpBIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaW5jdXJzIHNpZ25pZmljYW50IHJlc291cmNlIGNvc3RzLiBZb3UgbXVzdCBPTkxZCnNldCBOZWVkc0tNU0FOPXRydWUgaWYgdGhlIGNvZGUgY2hhbmdlcyBpbnRyb2R1Y2Ugb3IgZXhwb3NlIFVOSU5JVElBTElaRUQgTUVNT1JZIHJpc2tzCnRoYXQgYXJlIGRldGVjdGVkIE9OTFkgYnkgS01TQU4uCgpMb29rIGhvbGlzdGljYWxseSBhdCB0aGUgcGF0Y2ggc2VyaWVzIGFuZCBzdXJyb3VuZGluZyBjb2RlLiBFdmVuIGlmIG5vIGRpcmVjdAp1bmluaXRpYWxpemVkIGZpZWxkIGFjY2Vzc2VzIG9yIG5ldyBidWZmZXIgYWxsb2NhdGlvbnMgYXJlIGFkZGVkIGluIHRoZSBkaWZmIGl0c2VsZiwKYSBwYXRjaCBtYXkgYWx0ZXIgY29udHJvbCBmbG93LCBib3VuZHMgY2hlY2tpbmcsIG9yIGRhdGEgbGVuZ3RoIGNhbGN1bGF0aW9ucyBpbiB3YXlzCnRoYXQgY2hhbmdlIGhvdyB0aGUgcmVzdCBvZiB0aGUgY29kZSBvcGVyYXRlcyBvbiBleGlzdGluZyBidWZmZXJzIChlLmcuIGFsbG93aW5nCnVuaW5pdGlhbGl6ZWQgc3RhY2svaGVhcCBtZW1vcnkgdG8gYmUgcmVhZCwgY29waWVkIHRvIHVzZXIgc3BhY2UsIG9yIHVzZWQgaW4gY29udHJvbApmbG93KS4gRG8gbm90IGhlc2l0YXRlIHRvIHVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGluc3BlY3QgdGhlIHN1cnJvdW5kaW5nIGNvZGUsCmNhbGxlZCBmdW5jdGlvbnMsIGFuZCBjYWxsZXJzLgoKU2V0IE5lZWRzS01TQU49dHJ1ZSBPTkxZIElGIHRoZSBwYXRjaCBpbnRyb2R1Y2VzIG9yIG1vZGlmaWVzOgoxLiBLZXJuZWwgc3RydWN0dXJlcyBzZW50IHRvIHVzZXIgc3BhY2UgKHZpYSBjb3B5X3RvX3VzZXIsIHB1dF91c2VyLCBuZXRsaW5rIHNrYgogICBhdHRyaWJ1dGVzLCBpb2N0bCBvdXRwdXQgYXJndW1lbnRzLCBzb2NrZXQgb3B0aW9ucywgb3IgQlBGIGJ1ZmZlcnMpIHdoZXJlIGZpZWxkcwogICBvciBzdHJ1Y3R1cmUgcGFkZGluZyBtaWdodCBub3QgYmUgZnVsbHkgaW5pdGlhbGl6ZWQvemVyb2VkLgoyLiBDb25kaXRpb25hbCBsb2dpYyBvciBicmFuY2hpbmcgdGhhdCBkZXBlbmRzIG9uIHBvdGVudGlhbGx5IHVuaW5pdGlhbGl6ZWQgdmFyaWFibGVzCiAgIG9yIHN0cnVjdCBmaWVsZHMuCjMuIEFsbG9jYXRpb24gb3IgaW5pdGlhbGl6YXRpb24gb2YgY29tcGxleCBkYXRhIHN0cnVjdHVyZXMgd2hlcmUgdW5pbml0aWFsaXplZCBmaWVsZHMKICAgY291bGQgYmUgcmVhZCBsYXRlciBpbiByZWFjaGFibGUgY29kZSBwYXRocy4KNC4gQm91bmRzIGNoZWNrcywgbGVuZ3Rocywgb3IgbG9naWMgaW4gYSB3YXkgdGhhdCBhbGxvd3Mgc3Vycm91bmRpbmcgY29kZSB0byBhY2Nlc3MKICAgdW5pbml0aWFsaXplZCBieXRlcyBvZiBleGlzdGluZyBidWZmZXJzLgoKU2V0IE5lZWRzS01TQU49ZmFsc2UgSUY6Ci0gVGhlIGNvZGUgY2hhbmdlcyBwcmltYXJpbHkgcmlzayBvdXQtb2YtYm91bmRzIGFjY2VzcywgYXJyYXkgb3ZlcmZsb3dzLCBOVUxMIHBvaW50ZXIKICBkZXJlZmVyZW5jZXMsIGxvY2tpbmcgZGVhZGxvY2tzLCBvciB1c2UtYWZ0ZXItZnJlZSBidWdzICh0aGVzZSBhcmUgYWxyZWFkeSBjYXVnaHQKICBieSBLQVNBTiwgTE9DS0RFUCwgb3Igc3RhbmRhcmQgYnVnIGRldGVjdG9ycykuCi0gQWxsIHN0YWNrL2hlYXAgc3RydWN0dXJlcyB0b3VjaGVkIG9yIGludHJvZHVjZWQgYnkgdGhlIHBhdGNoIGFyZSBmdWxseSB6ZXJvZWQKICBvciBpbml0aWFsaXplZCAoZS5nLiB1c2luZyA9IHswfSwgbWVtc2V0LCBremFsbG9jKSBiZWZvcmUgYmVpbmcgcmVhZCBvciBjb3BpZWQuCi0gVGhlIHBhdGNoIGRvZXMgbm90IGludHJvZHVjZSBhbnkgcmlzayBvZiB1bmluaXRpYWxpemVkIG1lbW9yeSB1c2FnZSBvciBpbmZvLWxlYWtzLgoKVXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gaW5zcGVjdCB0aGUgc3Vycm91bmRpbmcgY29kZSBpZiBuZWNlc3NhcnksIHRoZW4gcHJvdmlkZQpkZXRhaWxlZCBLTVNBTlJlYXNvbmluZyBjb250cmFzdGluZyBLQVNBTiB2cyBLTVNBTiBhcHBsaWNhYmlsaXR5IGZvciB0aGlzIHBhdGNoLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPlRhcmdldCBhcmNoaXRlY3R1cmU6IGFtZDY0CgpGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IDViYmQ2N2ZmNjM1OGNhYzRlY2JhODMyOGM3MDIyZWIzMTgxZDZlNTAKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgVHVlIFNlcCA4IDE0OjQzOjM1IDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvbmV0L3J4cnBjL3BlZXJfb2JqZWN0LmMgYi9uZXQvcnhycGMvcGVlcl9vYmplY3QuYwppbmRleCBmYTlhNDA2ZTExNjgzLi5mYWEyOTgzNjM4YjJiIDEwMDY0NAotLS0gYS9uZXQvcnhycGMvcGVlcl9vYmplY3QuYwomIzQzOyYjNDM7JiM0MzsgYi9uZXQvcnhycGMvcGVlcl9vYmplY3QuYwpAQCAtNDU0LDYgJiM0Mzs0NTQsMTIgQEAgdm9pZCByeHJwY19kZXN0cm95X2FsbF9wZWVycyhzdHJ1Y3QgcnhycGNfbmV0ICpyeG5ldCkKIAlzdHJ1Y3QgcnhycGNfcGVlciAqcGVlcjsKIAlpbnQgaTsKIAomIzQzOwkvKgomIzQzOwkgKiBQcmV2ZW50IHVzZS1hZnRlci1mcmVlIGlmIGEgcGVlciBpcyBjb25jdXJyZW50bHkgdW5saW5rZWQgZnJvbSB0aGUKJiM0MzsJICogaGFzaCB0YWJsZSBhbmQgZnJlZWQgdmlhIFJDVSBkdXJpbmcgaXRlcmF0aW9uLgomIzQzOwkgKi8KJiM0MzsJc3Bpbl9sb2NrX2JoKCZhbXA7cnhuZXQtJmd0O3BlZXJfaGFzaF9sb2NrKTsKJiM0MzsKIAlmb3IgKGkgPSAwOyBpICZsdDsgSEFTSF9TSVpFKHJ4bmV0LSZndDtwZWVyX2hhc2gpOyBpJiM0MzsmIzQzOykgewogCQlpZiAoaGxpc3RfZW1wdHkoJmFtcDtyeG5ldC0mZ3Q7cGVlcl9oYXNoW2ldKSkKIAkJCWNvbnRpbnVlOwpAQCAtNDY1LDYgJiM0Mzs0NzEsOCBAQCB2b2lkIHJ4cnBjX2Rlc3Ryb3lfYWxsX3BlZXJzKHN0cnVjdCByeHJwY19uZXQgKnJ4bmV0KQogCQkJICAgICAgICZhbXA7cGVlci0mZ3Q7c3J4LnRyYW5zcG9ydCk7CiAJCX0KIAl9CiYjNDM7CiYjNDM7CXNwaW5fdW5sb2NrX2JoKCZhbXA7cnhuZXQtJmd0O3BlZXJfaGFzaF9sb2NrKTsKIH0KIAogLyoqCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE3LzM8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wOCAxNDo0NDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+a21zYW4tZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMjA1CgkJCQkJCQlvdXRwdXQ6IDM4CgkJCQkJCQl0aG91Z2h0czogNzQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aGUgc2l0dWF0aW9uOgoKKipJbnZlc3RpZ2F0aW5nIHRoZSBQZWVyIERlc3RydWN0aW9uIGluIHJ4cnBjKioKCkFscmlnaHQsIHRoZSBidWcgcmVwb3J0IHBvaW50cyB0byBgbmV0L3J4cnBjL3BlZXJfb2JqZWN0LmNgIGFuZCBzcGVjaWZpY2FsbHkgYHJ4cnBjX2Rlc3Ryb3lfYWxsX3BlZXJzYC4gVGhhdCYjMzk7cyBhIGdvb2Qgc3RhcnRpbmcgcG9pbnQuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoYXQmIzM5O3MgaGFwcGVuaW5nIGluIHRoYXQgZnVuY3Rpb24gYW5kIGl0cyBzdXJyb3VuZGluZyBjb2RlIHRvIHRyYWNrIGRvd24gdGhlIHJvb3QgY2F1c2UuIFRoaXMgbGlrZWx5IGludm9sdmVzIGhvdyBwZWVyIG9iamVjdHMgYXJlIGNyZWF0ZWQsIG1hbmFnZWQsIGFuZCBmaW5hbGx5IGNsZWFuZWQgdXAgd2l0aGluIHRoZSByeHJwYyBtb2R1bGUuIEkmIzM5O2xsIG5lZWQgdG8gbG9vayBhdCBhbnkgcG90ZW50aWFsIHJhY2UgY29uZGl0aW9ucyBvciByZXNvdXJjZSBsZWFrcyB3aXRoaW4gdGhpcyBjb250ZXh0LgoKVGltZSB0byBwdWxsIHVwIHRoYXQgZmlsZSBhbmQgZ2V0IHRvIHJlYWRpbmcuLi4gSSYjMzk7bGwgdXNlIGByZWFkLWZpbGVgIHRvIGdyYWIgYG5ldC9yeHJwYy9wZWVyX29iamVjdC5jYCBhbmQgc3RhcnQgZGlnZ2luZyBpbi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOC8zPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDggMTQ6NDQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtuZXQvcnhycGMvcGVlcl9vYmplY3QuYyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDQ0NSwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiA0NQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgNDQ1Olx0XHRcdFx0X19yeHJwY19wdXRfcGVlcihwZWVyKTtcbiA0NDY6XHRcdH1cbiA0NDc6XHR9XG4gNDQ4Olx0XG4gNDQ5Olx0LypcbiA0NTA6XHQgKiBNYWtlIHN1cmUgYWxsIHBlZXIgcmVjb3JkcyBoYXZlIGJlZW4gZGlzY2FyZGVkLlxuIDQ1MTpcdCAqL1xuIDQ1MjpcdHZvaWQgcnhycGNfZGVzdHJveV9hbGxfcGVlcnMoc3RydWN0IHJ4cnBjX25ldCAqcnhuZXQpXG4gNDUzOlx0e1xuIDQ1NDpcdFx0c3RydWN0IHJ4cnBjX3BlZXIgKnBlZXI7XG4gNDU1Olx0XHRpbnQgaTtcbiA0NTY6XHRcbiA0NTc6XHRcdC8qXG4gNDU4Olx0XHQgKiBQcmV2ZW50IHVzZS1hZnRlci1mcmVlIGlmIGEgcGVlciBpcyBjb25jdXJyZW50bHkgdW5saW5rZWQgZnJvbSB0aGVcbiA0NTk6XHRcdCAqIGhhc2ggdGFibGUgYW5kIGZyZWVkIHZpYSBSQ1UgZHVyaW5nIGl0ZXJhdGlvbi5cbiA0NjA6XHRcdCAqL1xuIDQ2MTpcdFx0c3Bpbl9sb2NrX2JoKFx1MDAyNnJ4bmV0LVx1MDAzZXBlZXJfaGFzaF9sb2NrKTtcbiA0NjI6XHRcbiA0NjM6XHRcdGZvciAoaSA9IDA7IGkgXHUwMDNjIEhBU0hfU0laRShyeG5ldC1cdTAwM2VwZWVyX2hhc2gpOyBpJiM0MzsmIzQzOykge1xuIDQ2NDpcdFx0XHRpZiAoaGxpc3RfZW1wdHkoXHUwMDI2cnhuZXQtXHUwMDNlcGVlcl9oYXNoW2ldKSlcbiA0NjU6XHRcdFx0XHRjb250aW51ZTtcbiA0NjY6XHRcbiA0Njc6XHRcdFx0aGxpc3RfZm9yX2VhY2hfZW50cnkocGVlciwgXHUwMDI2cnhuZXQtXHUwMDNlcGVlcl9oYXNoW2ldLCBoYXNoX2xpbmspIHtcbiA0Njg6XHRcdFx0XHRwcl9lcnIoXCYjMzQ7TGVha2VkIHBlZXIgJXggeyV1fSAlcElTcFxcblwmIzM0OyxcbiA0Njk6XHRcdFx0XHQgICAgICAgcGVlci1cdTAwM2VkZWJ1Z19pZCxcbiA0NzA6XHRcdFx0XHQgICAgICAgcmVmY291bnRfcmVhZChcdTAwMjZwZWVyLVx1MDAzZXJlZiksXG4gNDcxOlx0XHRcdFx0ICAgICAgIFx1MDAyNnBlZXItXHUwMDNlc3J4LnRyYW5zcG9ydCk7XG4gNDcyOlx0XHRcdH1cbiA0NzM6XHRcdH1cbiA0NzQ6XHRcbiA0NzU6XHRcdHNwaW5fdW5sb2NrX2JoKFx1MDAyNnJ4bmV0LVx1MDAzZXBlZXJfaGFzaF9sb2NrKTtcbiA0NzY6XHR9XG4gNDc3Olx0XG4gNDc4Olx0LyoqXG4gNDc5Olx0ICogcnhycGNfa2VybmVsX2dldF9jYWxsX3BlZXIgLSBHZXQgdGhlIHBlZXIgYWRkcmVzcyBvZiBhIGNhbGxcbiA0ODA6XHQgKiBAc29jazogVGhlIHNvY2tldCBvbiB3aGljaCB0aGUgY2FsbCBpcyBpbiBwcm9ncmVzcy5cbiA0ODE6XHQgKiBAY2FsbDogVGhlIGNhbGwgdG8gcXVlcnlcbiA0ODI6XHQgKlxuIDQ4MzpcdCAqIEdldCBhIHJlY29yZCBmb3IgdGhlIHJlbW90ZSBwZWVyIGluIGEgY2FsbC5cbiA0ODQ6XHQgKlxuIDQ4NTpcdCAqIFJldHVybjogVGhlIGNhbGwmIzM5O3MgcGVlciByZWNvcmQuXG4gNDg2Olx0ICovXG4gNDg3Olx0c3RydWN0IHJ4cnBjX3BlZXIgKnJ4cnBjX2tlcm5lbF9nZXRfY2FsbF9wZWVyKHN0cnVjdCBzb2NrZXQgKnNvY2ssIHN0cnVjdCByeHJwY19jYWxsICpjYWxsKVxuIDQ4ODpcdHtcbiA0ODk6XHRcdHJldHVybiByeHJwY19nZXRfcGVlcihjYWxsLVx1MDAzZXBlZXIsIHJ4cnBjX3BlZXJfZ2V0X2FwcGxpY2F0aW9uKTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOS8zPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDggMTQ6NDQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPmttc2FuLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzE1NgoJCQkJCQkJb3V0cHV0OiAxMzMKCQkJCQkJCXRob3VnaHRzOiAyMzEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQXNzZXNzbWVudCBvZiB0aGUgUGF0Y2gqKgoKT2theSwgc28gdGhpcyBwYXRjaCBpcyBzdHJhaWdodGZvcndhcmQuIEFsbCBpdCYjMzk7cyBkb2luZyBpcyB3cmFwcGluZyB0aGUgbG9vcCBpbiBgcnhycGNfZGVzdHJveV9hbGxfcGVlcnNgIHdpdGggYSBgc3Bpbl9sb2NrX2JoYCBhbmQgYHNwaW5fdW5sb2NrX2JoYCBwYWlyLiBDbGVhcmx5LCB0aGlzIGlzIHB1cmVseSBhYm91dCBsb2NraW5nIOKAkyBjb25jdXJyZW5jeSBtYW5hZ2VtZW50IHRvIGJlIGV4YWN0LiBJdCYjMzk7cyBkZXNpZ25lZCB0byBwcm90ZWN0IGFnYWluc3QgcG90ZW50aWFsIHVzZS1hZnRlci1mcmVlIHNjZW5hcmlvcyBvciByYWNlIGNvbmRpdGlvbnMgdGhhdCBjb3VsZCBvY2N1ciB3aGVuIGl0ZXJhdGluZyB0aHJvdWdoIHRoZSBgcGVlcl9oYXNoYC4KCkxldCYjMzk7cyBicmVhayB0aGlzIGRvd24gc3lzdGVtYXRpY2FsbHkuIEZpcnN0LCBkb2VzIHRoaXMgcGF0Y2ggdG91Y2ggYW55IGtlcm5lbCBzdHJ1Y3R1cmVzIHRoYXQgYXJlIHNlbnQgdG8gdXNlciBzcGFjZT8gTm9wZSwgbm90IGF0IGFsbC4gU2Vjb25kLCBhcmUgdGhlcmUgYW55IGludHJvZHVjZWQgY29uZGl0aW9uYWxzIGJhc2VkIG9uIHBvdGVudGlhbGx5IHVuaW5pdGlhbGl6ZWQgdmFyaWFibGVzPyBTdGlsbCBuby4gVGhpcmQsIGRvZXMgaXQgaW52b2x2ZSBhbGxvY2F0aW5nIG9yIGluaXRpYWxpemluZyBhbnkgY29tcGxleCBkYXRhIHN0cnVjdHVyZXM/IEFnYWluLCBuby4gVGhlbiB3ZSBsb29rIGF0IGJvdW5kcyBjaGVja3MgYW5kIGxlbmd0aHMuIE5vdGhpbmcgaGVyZS4gQW5kIGZpbmFsbHksIGRvZXMgdGhpcyBwYXRjaCBleHBvc2UgYW55IHVuaW5pdGlhbGl6ZWQgbWVtb3J5PyBObywgSSBkb24mIzM5O3Qgc2VlIGFueSBvZiB0aG9zZSByaXNrcyBlaXRoZXIuCgpDb25zaWRlcmluZyBhbGwgdGhhdCwgSSYjMzk7bSBjb25maWRlbnQgaW4gc2F5aW5nIHRoYXQgYE5lZWRzS01TQU4gPSBmYWxzZWAuIEl0IHNlZW1zIHRoZSBwcmltYXJ5IGNvbmNlcm5zIGFyZSByZWxhdGVkIHRvIGNvbmN1cnJlbmN5LCB3aGljaCBhcmUgaWRlYWxseSBhZGRyZXNzZWQgYnkgdG9vbHMgbGlrZSBLQVNBTiBhbmQgTE9DS0RFUC4gVGhleSYjMzk7bGwgcmVhZGlseSBjYXRjaCBhbnkgaXNzdWVzIHRoaXMgbWlnaHQgaW50cm9kdWNlIGluIHRoZW9yeS4KCk5vdywgbGV0JiMzOTtzIGp1c3QgZG8gYSBxdWljayBkb3VibGUtY2hlY2sgdG8gbWFrZSBzdXJlIG15IHJlYXNvbmluZyBpcyBjbGVhciwgYWNjdXJhdGUsIGFuZCBjb25jaXNlLiBXZSBhbHdheXMgbmVlZCB0byBjb250cmFzdCBLQVNBTiBhbmQgS01TQU4uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjAvMzwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA4IDE0OjQ0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0tNU0FOUmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGFkZHMgc3Bpbl9sb2NrX2JoIGFuZCBzcGluX3VubG9ja19iaCBhcm91bmQgdGhlIHBlZXIgaGFzaCB0YWJsZSBpdGVyYXRpb24gaW4gcnhycGNfZGVzdHJveV9hbGxfcGVlcnMoKSB0byBwcmV2ZW50IHJhY2UgY29uZGl0aW9ucyBhbmQgcG90ZW50aWFsIHVzZS1hZnRlci1mcmVlIGR1cmluZyBjbGVhbnVwLiBJdCBkb2VzIG5vdCBpbnRyb2R1Y2UgYW55IG1lbW9yeSBhbGxvY2F0aW9ucywgdW5pbml0aWFsaXplZCB2YXJpYWJsZXMsIHVzZXItc3BhY2UgY29waWVzIChpbmZvLWxlYWtzKSwgb3IgYWx0ZXIgZGF0YSBpbml0aWFsaXphdGlvbiBsb2dpYy4gQW55IGNvbmN1cnJlbmN5LCBsb2NraW5nLCBvciB1c2UtYWZ0ZXItZnJlZSBpc3N1ZXMgYXJlIGRldGVjdGVkIGJ5IExPQ0tERVAgYW5kIEtBU0FOLiBUaGVyZWZvcmUsIGEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpcyBub3QgbmVlZGVkLiYjMzQ7LAogICYjMzQ7TmVlZHNLTVNBTiYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggYWRkcyBzcGluX2xvY2tfYmggYW5kIHNwaW5fdW5sb2NrX2JoIGFyb3VuZCB0aGUgcGVlciBoYXNoIHRhYmxlIGl0ZXJhdGlvbiBpbiByeHJwY19kZXN0cm95X2FsbF9wZWVycygpIHRvIHByZXZlbnQgcmFjZSBjb25kaXRpb25zIGFuZCBwb3RlbnRpYWwgdXNlLWFmdGVyLWZyZWUgZHVyaW5nIGNsZWFudXAuIEl0IGRvZXMgbm90IGludHJvZHVjZSBhbnkgbWVtb3J5IGFsbG9jYXRpb25zLCB1bmluaXRpYWxpemVkIHZhcmlhYmxlcywgdXNlci1zcGFjZSBjb3BpZXMgKGluZm8tbGVha3MpLCBvciBhbHRlciBkYXRhIGluaXRpYWxpemF0aW9uIGxvZ2ljLiBBbnkgY29uY3VycmVuY3ksIGxvY2tpbmcsIG9yIHVzZS1hZnRlci1mcmVlIGlzc3VlcyBhcmUgZGV0ZWN0ZWQgYnkgTE9DS0RFUCBhbmQgS0FTQU4uIFRoZXJlZm9yZSwgYSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGlzIG5vdCBuZWVkZWQuJiMzNDssCiAgJiMzNDtOZWVkc0tNU0FOJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA4VDE0OjQzOjM3LjU1MjE4NTYyNFoiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQxMjEwOTYzMDU2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIkFGX1JYUlBDXCIsXG4gICAgXCJJTkVUXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwicnhycGNfZGVzdHJveV9hbGxfcGVlcnNcIixcbiAgICBcInJ4cnBjX2V4aXRfbmV0XCJcbiAgXSxcbiAgXCJLTVNBTlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBhZGRzIHNwaW5fbG9ja19iaCBhbmQgc3Bpbl91bmxvY2tfYmggYXJvdW5kIHRoZSBwZWVyIGhhc2ggdGFibGUgaXRlcmF0aW9uIGluIHJ4cnBjX2Rlc3Ryb3lfYWxsX3BlZXJzKCkgdG8gcHJldmVudCByYWNlIGNvbmRpdGlvbnMgYW5kIHBvdGVudGlhbCB1c2UtYWZ0ZXItZnJlZSBkdXJpbmcgY2xlYW51cC4gSXQgZG9lcyBub3QgaW50cm9kdWNlIGFueSBtZW1vcnkgYWxsb2NhdGlvbnMsIHVuaW5pdGlhbGl6ZWQgdmFyaWFibGVzLCB1c2VyLXNwYWNlIGNvcGllcyAoaW5mby1sZWFrcyksIG9yIGFsdGVyIGRhdGEgaW5pdGlhbGl6YXRpb24gbG9naWMuIEFueSBjb25jdXJyZW5jeSwgbG9ja2luZywgb3IgdXNlLWFmdGVyLWZyZWUgaXNzdWVzIGFyZSBkZXRlY3RlZCBieSBMT0NLREVQIGFuZCBLQVNBTi4gVGhlcmVmb3JlLCBhIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaXMgbm90IG5lZWRlZC5cIixcbiAgXCJOZWVkc0tNU0FOXCI6IGZhbHNlLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBhZGRzIHNwaW5sb2NrIHN5bmNocm9uaXphdGlvbiAocGVlcl9oYXNoX2xvY2spIGFyb3VuZCBwZWVyIGhhc2ggdGFibGUgaXRlcmF0aW9uIGluIHJ4cnBjX2Rlc3Ryb3lfYWxsX3BlZXJzIHRvIHByZXZlbnQgY29uY3VycmVudCB1c2UtYWZ0ZXItZnJlZSByYWNlcyBkdXJpbmcgbmV0d29yayBuYW1lc3BhY2UgY2xlYW51cC4gVGhpcyBhbHRlcnMgbG9ja2luZyBhbmQgc3luY2hyb25pemF0aW9uIGluIHJlYWNoYWJsZSBBRl9SWFJQQyBuZXR3b3JraW5nIGNvZGUuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA4VDE0OjQzOjM3LjU1MjE5MTI3M1oiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTQ3MDA3MzA2MiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IDViYmQ2N2ZmNjM1OGNhYzRlY2JhODMyOGM3MDIyZWIzMTgxZDZlNTBcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIFR1ZSBTZXAgOCAxNDo0MzozNSAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9uZXQvcnhycGMvcGVlcl9vYmplY3QuYyBiL25ldC9yeHJwYy9wZWVyX29iamVjdC5jXFxuaW5kZXggZmE5YTQwNmUxMTY4My4uZmFhMjk4MzYzOGIyYiAxMDA2NDRcXG4tLS0gYS9uZXQvcnhycGMvcGVlcl9vYmplY3QuY1xcbisrKyBiL25ldC9yeHJwYy9wZWVyX29iamVjdC5jXFxuQEAgLTQ1NCw2ICs0NTQsMTIgQEAgdm9pZCByeHJwY19kZXN0cm95X2FsbF9wZWVycyhzdHJ1Y3QgcnhycGNfbmV0ICpyeG5ldClcXG4gXFx0c3RydWN0IHJ4cnBjX3BlZXIgKnBlZXI7XFxuIFxcdGludCBpO1xcbiBcXG4rXFx0LypcXG4rXFx0ICogUHJldmVudCB1c2UtYWZ0ZXItZnJlZSBpZiBhIHBlZXIgaXMgY29uY3VycmVudGx5IHVubGlua2VkIGZyb20gdGhlXFxuK1xcdCAqIGhhc2ggdGFibGUgYW5kIGZyZWVkIHZpYSBSQ1UgZHVyaW5nIGl0ZXJhdGlvbi5cXG4rXFx0ICovXFxuK1xcdHNwaW5fbG9ja19iaChcXHUwMDI2cnhuZXQtXFx1MDAzZXBlZXJfaGFzaF9sb2NrKTtcXG4rXFxuIFxcdGZvciAoaSA9IDA7IGkgXFx1MDAzYyBIQVNIX1NJWkUocnhuZXQtXFx1MDAzZXBlZXJfaGFzaCk7IGkrKykge1xcbiBcXHRcXHRpZiAoaGxpc3RfZW1wdHkoXFx1MDAyNnJ4bmV0LVxcdTAwM2VwZWVyX2hhc2hbaV0pKVxcbiBcXHRcXHRcXHRjb250aW51ZTtcXG5AQCAtNDY1LDYgKzQ3MSw4IEBAIHZvaWQgcnhycGNfZGVzdHJveV9hbGxfcGVlcnMoc3RydWN0IHJ4cnBjX25ldCAqcnhuZXQpXFxuIFxcdFxcdFxcdCAgICAgICBcXHUwMDI2cGVlci1cXHUwMDNlc3J4LnRyYW5zcG9ydCk7XFxuIFxcdFxcdH1cXG4gXFx0fVxcbitcXG4rXFx0c3Bpbl91bmxvY2tfYmgoXFx1MDAyNnJ4bmV0LVxcdTAwM2VwZWVyX2hhc2hfbG9jayk7XFxuIH1cXG4gXFxuIC8qKlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wOFQxNDo0MzozOS4wMjI5NDE0NDVaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJjb3JlIiwiRHVyYXRpb24iOjI3MzU4NTczNzMwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIkFGX1JYUlBDXCIsXG4gICAgXCJJTkVUXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwicnhycGNfZGVzdHJveV9hbGxfcGVlcnNcIixcbiAgICBcInJ4cnBjX2V4aXRfbmV0XCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggYWRkcyBzcGlubG9jayBzeW5jaHJvbml6YXRpb24gKHBlZXJfaGFzaF9sb2NrKSBhcm91bmQgcGVlciBoYXNoIHRhYmxlIGl0ZXJhdGlvbiBpbiByeHJwY19kZXN0cm95X2FsbF9wZWVycyB0byBwcmV2ZW50IGNvbmN1cnJlbnQgdXNlLWFmdGVyLWZyZWUgcmFjZXMgZHVyaW5nIG5ldHdvcmsgbmFtZXNwYWNlIGNsZWFudXAuIFRoaXMgYWx0ZXJzIGxvY2tpbmcgYW5kIHN5bmNocm9uaXphdGlvbiBpbiByZWFjaGFibGUgQUZfUlhSUEMgbmV0d29ya2luZyBjb2RlLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lciBhbmQgc2VjdXJpdHkgZW5naW5lZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGV2YWx1YXRlIHdoZXRoZXIgaXQgd2FycmFudHMgZnV6emluZyB3aXRoIHN5emthbGxlci5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24gaW50ZXJuYWwgYXNzdW1wdGlvbnMuIFlvdSBtdXN0IGFjdGl2ZWx5IHVzZSB5b3VyIGNvZGUgYWNjZXNzXG50b29scyB0byBpbnNwZWN0IHRoZSBhY3R1YWwgc291cmNlIGNvZGUsIGNhbGxlcnMsIGFuZCBzdXJyb3VuZGluZyBjb250ZXh0LlxuXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuMS4gQ09SRSBUUklBR0UgUEhJTE9TT1BIWVxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblRoZSBnb2FsIG9mIHBhdGNoIGZ1enppbmcgaXMgdG8gZGlzY292ZXIgY3Jhc2hlcywgcmVncmVzc2lvbnMsIGV4cG9zZWQgbGF0ZW50IGJ1Z3MsXG5hbmQgbmV3bHkgdHJpZ2dlcmVkIGFzc2VydGlvbnMgaW50cm9kdWNlZCBieSB0aGUgcGF0Y2ggc2VyaWVzLlxuXG4tIFJFQUNIQUJJTElUWSBJUyBUSEUgUFJJTUFSWSBHQVRFOlxuICBGdXp6aW5nIGNhbiBvbmx5IGRpc2NvdmVyIGJ1Z3MgaW4gY29kZSB0aGF0IGNhbiBhY3R1YWxseSBleGVjdXRlIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkXG4gIGVudmlyb25tZW50cyAoR0NFIG9yIFFFTVUsIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBkZXZpY2VzIGxpa2UgVVNCIGdhZGdldHMsIG5ldGRldiwgdHVuL3RhcCkuXG4gIElmIHRoZSBtb2RpZmllZCBjb2RlIGlzIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSAoc2VlIFNlY3Rpb24gMiksIGl0IE1VU1QgTk9UIGJlIGZ1enplZCxcbiAgcmVnYXJkbGVzcyBvZiB3aGV0aGVyIGl0IGFkZHMgYXNzZXJ0aW9ucyBvciBjb21wbGV4IGxvZ2ljLlxuXG4tIERPIE5PVCBCTElORExZIFRSVVNUIFwiTk8gRlVOQ1RJT05BTCBDSEFOR0VcIiAoTkZDSSkgT1IgXCJSRUZBQ1RPUklOR1wiIENMQUlNUzpcbiAgUGF0Y2ggYXV0aG9ycyByb3V0aW5lbHkgbGFiZWwgY2hhbmdlcyBhcyBcImNsZWFudXBzXCIsIFwicmVmYWN0b3JpbmdzXCIsIG9yIHN0YXRlXG4gIFwiTm8gZnVuY3Rpb25hbCBjaGFuZ2UgaW50ZW5kZWRcIi4gRG8gTk9UIHRha2UgdGhlc2UgY2xhaW1zIGF0IGZhY2UgdmFsdWUuXG4gIENvZGUgcmVmYWN0b3JpbmdzIHRoYXQgcmVhcnJhbmdlIGxvZ2ljLCBpbnRyb2R1Y2UgaGVscGVyIGZ1bmN0aW9ucywgb3IgYWx0ZXIgc3RhdGUgbWFuYWdlbWVudFxuICBpbiBjb3JlIHN1YnN5c3RlbXMgZnJlcXVlbnRseSBpbnRyb2R1Y2Ugc3VidGxlIHNlbWFudGljIHNoaWZ0cyBvciB1bmNvdmVyIGxhdGVudCBrZXJuZWwgYnVncy5cbiAgSWYgcmVhY2hhYmxlIGV4ZWN1dGFibGUgY29kZSBpcyBtb2RpZmllZCBvciByZWZhY3RvcmVkLCBpdCBNVVNUIGJlIGZ1enplZC5cblxuLSBORVcgT1IgTU9ESUZJRUQgQVNTRVJUSU9OUyBJTiBSRUFDSEFCTEUgQ09ERSBNVVNUIEJFIEZVWlpFRDpcbiAgV2hlbiBhIHBhdGNoIGludHJvZHVjZXMgb3IgbW9kaWZpZXMgcnVudGltZSBjaGVja3Mgb3IgYXNzZXJ0aW9ucyAoZS5nLiwgV0FSTl9PTiosIFZNX1dBUk5fT04qLFxuICBCVUdfT04qLCBsb2NrZGVwX2Fzc2VydCopIGluIHJlYWNoYWJsZSBjb2RlIHBhdGhzLCBpdCBlbmZvcmNlcyBuZXcgb3Igc3RyaWN0ZXIgaW52YXJpYW50cy5cbiAgRXZlbiBpZiB0aGUgYXV0aG9yIGJlbGlldmVzIHRoZSBpbnZhcmlhbnQgYWx3YXlzIGhvbGRzLCBmdXp6aW5nIGlzIGVzc2VudGlhbCB0byB2ZXJpZnkgd2hldGhlclxuICBhbiB1bnVzdWFsIHNlcXVlbmNlIG9mIG9wZXJhdGlvbnMgY2FuIHZpb2xhdGUgaXQuXG5cbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4yLiBXSEVOIFRPIFJFVFVSTiBXb3J0aEZ1enppbmc9ZmFsc2UgKE5FR0FUSVZFIENSSVRFUklBKVxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgT05MWSBJRiBhbGwgbW9kaWZpZWQgY29kZSBmYWxscyBzdHJpY3RseSBpbnRvIG9uZSBvciBtb3JlIG9mIHRoZXNlIGNhdGVnb3JpZXM6XG5cbi0gTm9uLWtlcm5lbCBhbmQgbm9uLWV4ZWN1dGFibGUgY2hhbmdlczpcbiAgKiBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBjb21tZW50cywgb3Igc3BlbGxpbmcgZml4ZXMuXG4gICogVXNlci1zcGFjZSBkaXJlY3Rvcmllcywgc2VsZi10ZXN0cywgc2FtcGxlcywgb3Igc2NyaXB0cyAoZS5nLiwgdG9vbHMvLCBzYW1wbGVzLywgc2NyaXB0cy8sIHVzci8pXG4gICAgdGhhdCBkbyBub3QgYWZmZWN0IHRoZSBjb21waWxlZCBrZXJuZWwgaW1hZ2UgKHZtbGludXgpIG9yIGtlcm5lbCBtb2R1bGVzLlxuICAqIFB1cmVseSBkZWNvcmF0aXZlIGxvZ2dpbmcgKGUuZy4sIG1lc3NhZ2Ugc3RyaW5ncyBpbiBwcl9lcnIsIHByaW50aywgZGV2X2luZm8pIG9yIHRyYWNlcG9pbnRzXG4gICAgdGhhdCBkbyBub3QgYWx0ZXIgY29udHJvbCBmbG93IG9yIGRhdGEgc3RydWN0dXJlcy5cbiAgKiBCdWlsZCBzeXN0ZW0gb3IgS2NvbmZpZyBjaGFuZ2VzIHRoYXQgZG8gbm90IGFsdGVyIGNvbXBpbGVkIEMgbG9naWMuXG4tIFN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBoYXJkd2FyZTpcbiAgKiBWZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2hlcywgU21hcnROSUNzLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsXG4gICAgaW9uaWMsIGFtZGdwdSkgcmVxdWlyaW5nIHBoeXNpY2FsIEFTSUMvUENJZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS5cbi0gVW5yZWFjaGFibGUgZXhlY3V0aW9uIHBhdGhzOlxuICAqIERyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKC5yZW1vdmUsIC5zaHV0ZG93biwgcGNpX3VucmVnaXN0ZXJfZHJpdmVyKSBleGVjdXRlZCBvbmx5IGR1cmluZ1xuICAgIHBoeXNpY2FsIFBDSSBob3QtdW5wbHVnIG9yIG1hbnVhbCBzeXNmcyBkcml2ZXIgdW5iaW5kaW5nLlxuICAqIENvZGUgcGF0aHMgZXhjbHVzaXZlIHRvIGFyY2hpdGVjdHVyZXMgb3RoZXIgdGhhbiB0aGUgdGFyZ2V0IGFyY2hpdGVjdHVyZS5cblxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbjMuIFdIRU4gVE8gUkVUVVJOIFdvcnRoRnV6emluZz10cnVlIChQT1NJVElWRSBDUklURVJJQSlcbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5SZXR1cm4gV29ydGhGdXp6aW5nPXRydWUgd2hlbmV2ZXIgdGhlIHBhdGNoIHRvdWNoZXMgcmVhY2hhYmxlIGV4ZWN1dGFibGUgY29kZSwgaW5jbHVkaW5nOlxuLSBDb3JlIFN1YnN5c3RlbXM6XG4gICogQW55IGxvZ2ljIG1vZGlmaWNhdGlvbnMgaW4gbWVtb3J5IG1hbmFnZW1lbnQgKG1tLyksIHN5bmNocm9uaXphdGlvbi9sb2NraW5nIChrZXJuZWwvbG9ja2luZy8pLFxuICAgIEJQRiwgc2NoZWR1bGVyLCBjb3JlIG5ldHdvcmtpbmcsIFZGUywgb3Igc3lzY2FsbCBoYW5kbGluZy5cbi0gUmVmYWN0b3JpbmdzIGFuZCBDb2RlIENsZWFudXBzOlxuICAqIEFueSByZXN0cnVjdHVyaW5nIG9mIHJlYWNoYWJsZSBkYXRhIHN0cnVjdHVyZXMsIGhlbHBlciBhYnN0cmFjdGlvbnMsIG9yIGFsZ29yaXRobSBmbG93cy5cbi0gUnVudGltZSBBc3NlcnRpb25zIGFuZCBEZWZlbnNpdmUgQ2hlY2tzOlxuICAqIEFueSBpbnRyb2R1Y3Rpb24gb3IgYWx0ZXJhdGlvbiBvZiBhc3NlcnRpb25zIChXQVJOX09OKiwgVk1fV0FSTl9PTiosIEJVR19PTiosIGV0Yy4pIGluIHJlYWNoYWJsZSBwYXRocy5cbi0gUmVhY2hhYmxlIERyaXZlcnMgYW5kIFByb3RvY29sczpcbiAgKiBEcml2ZXJzIGFjY2Vzc2libGUgdmlhIHZpcnR1YWwgYnVzZXMgKHZpcnRpbywgVVNCIGdhZGdldCwgbG9vcGJhY2ssIG5ldGxpbmssIGJpbmRlciwgc29ja2V0cywgZXRjLikuXG5cbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG40LiBFWFRSQUNUSU5HIEZvY3VzU3ltYm9scyAoUFJFVkVOVElORyBESUxVVElPTilcbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5XaGVuIFdvcnRoRnV6emluZz10cnVlLCB5b3UgbXVzdCBleHRyYWN0IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgaW50byBGb2N1c1N5bWJvbHMgdG8gZ3VpZGUgdGhlIGZ1enplcjpcblxuLSBBVk9JRCBVQklRVUlUT1VTIExJRkVDWUNMRSBIT1QtUEFUSFM6XG4gIERvIE5PVCBsaXN0IGdlbmVyaWMsIHViaXF1aXRvdXMgZnVuY3Rpb25zIGNhbGxlZCBieSBhbG1vc3QgZXZlcnkgcHJvZ3JhbSBpbiB0aGUgY29ycHVzXG4gIChpbmNsdWRpbmcsIGJ1dCBub3QgbGltaXRlZCB0bzogZ2VuZXJhbCBtZW1vcnkgYWxsb2NhdG9ycyBhbmQgZGVhbGxvY2F0b3JzLCBwYWdlIGZhdWx0XG4gIGFuZCB0cmFwIGhhbmRsZXJzLCBvciBjb3JlIHN5bmNocm9uaXphdGlvbiBwcmltaXRpdmVzOyB0aGlzIGlzIG5vdCBhbiBleGhhdXN0aXZlIGxpc3QpLlxuICBMaXN0aW5nIHViaXF1aXRvdXMgZnVuY3Rpb25zIGNhdXNlcyB0aGUgZnV6emVyIHRvIGNsYXNzaWZ5IHRob3VzYW5kcyBvZiB1bnJlbGF0ZWQgdGVzdHMgYXMgXCJmb2N1c2VkXCIsXG4gIHdoaWNoIHNldmVyZWx5IGRpbHV0ZXMgZnV6emluZyBlZmZvcnQgYXdheSBmcm9tIHRoZSBhY3R1YWwgY2hhbmdlcy5cblxuLSBUQVJHRVQgU1BFQ0lGSUMgRkVBVFVSRSBMT0dJQyBBTkQgRU5UUllQT0lOVFM6XG4gIExpc3QgZnVuY3Rpb25zIHRoYXQgc3BlY2lmaWNhbGx5IGltcGxlbWVudCB0aGUgbG9naWMgYmVpbmcgYWRkZWQgb3IgYWx0ZXJlZCwgb3IgZGlyZWN0IEFQSSBlbnRyeXBvaW50c1xuICBmb3IgdGhlIHN1YnN5c3RlbSBmZWF0dXJlIHVuZGVyIHJldmlldy5cblxuLSBIQU5ETElORyBTVEFUSUMgSU5MSU5FIEZVTkNUSU9OUyBJTiBIRUFERVJTICguaCk6XG4gIENvbXBpbGVyLWlubGluZWQgc3RhdGljIGZ1bmN0aW9ucyAoc3VjaCBhcyBzdGF0aWMgaW5saW5lcyBpbiBtbS8qLmggb3IgaW5jbHVkZS9saW51eC8qLmgpIGxhY2tcbiAgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcyBpbiB2bWxpbnV4IGFuZCBjYW5ub3QgYmUgdGFyZ2V0ZWQgZGlyZWN0bHkgYnkgc3ltYm9sIGNvdmVyYWdlIGZpbHRlcnMuXG4gIElmIHRoZSBjaGFuZ2VzIGFyZSBwcmltYXJpbHkgaW4gc3RhdGljIGlubGluZSBoZWxwZXJzLCBpZGVudGlmeSBub24tc3RhdGljLCBmZWF0dXJlLXNwZWNpZmljIGNhbGxlclxuICBmdW5jdGlvbnMgaW4gLmMgZmlsZXMgdGhhdCBleGVyY2lzZSB0aGVtIChhdm9pZGluZyB1YmlxdWl0b3VzIGxpZmVjeWNsZSB3cmFwcGVycykuXG5cbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG41LiBJREVOVElGWUlORyBFbmFibGVDb25maWdzXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSBjb21waWxlIGFuZCByZWFjaCB0aGUgbW9kaWZpZWQgY29kZTpcbi0gSW5zcGVjdCBLY29uZmlnIGZpbGVzIGFuZCAjaWZkZWYgZ3VhcmRzOyBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbi0gQ2hlY2sgXCJkZXBlbmRzIG9uXCIgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzIG5lZWRlZC5cbi0gU3RyaXAgYW55ICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IlRhcmdldCBhcmNoaXRlY3R1cmU6IGFtZDY0XG5cbkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IDViYmQ2N2ZmNjM1OGNhYzRlY2JhODMyOGM3MDIyZWIzMTgxZDZlNTBcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgVHVlIFNlcCA4IDE0OjQzOjM1IDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvbmV0L3J4cnBjL3BlZXJfb2JqZWN0LmMgYi9uZXQvcnhycGMvcGVlcl9vYmplY3QuY1xuaW5kZXggZmE5YTQwNmUxMTY4My4uZmFhMjk4MzYzOGIyYiAxMDA2NDRcbi0tLSBhL25ldC9yeHJwYy9wZWVyX29iamVjdC5jXG4rKysgYi9uZXQvcnhycGMvcGVlcl9vYmplY3QuY1xuQEAgLTQ1NCw2ICs0NTQsMTIgQEAgdm9pZCByeHJwY19kZXN0cm95X2FsbF9wZWVycyhzdHJ1Y3QgcnhycGNfbmV0ICpyeG5ldClcbiBcdHN0cnVjdCByeHJwY19wZWVyICpwZWVyO1xuIFx0aW50IGk7XG4gXG4rXHQvKlxuK1x0ICogUHJldmVudCB1c2UtYWZ0ZXItZnJlZSBpZiBhIHBlZXIgaXMgY29uY3VycmVudGx5IHVubGlua2VkIGZyb20gdGhlXG4rXHQgKiBoYXNoIHRhYmxlIGFuZCBmcmVlZCB2aWEgUkNVIGR1cmluZyBpdGVyYXRpb24uXG4rXHQgKi9cbitcdHNwaW5fbG9ja19iaChcdTAwMjZyeG5ldC1cdTAwM2VwZWVyX2hhc2hfbG9jayk7XG4rXG4gXHRmb3IgKGkgPSAwOyBpIFx1MDAzYyBIQVNIX1NJWkUocnhuZXQtXHUwMDNlcGVlcl9oYXNoKTsgaSsrKSB7XG4gXHRcdGlmIChobGlzdF9lbXB0eShcdTAwMjZyeG5ldC1cdTAwM2VwZWVyX2hhc2hbaV0pKVxuIFx0XHRcdGNvbnRpbnVlO1xuQEAgLTQ2NSw2ICs0NzEsOCBAQCB2b2lkIHJ4cnBjX2Rlc3Ryb3lfYWxsX3BlZXJzKHN0cnVjdCByeHJwY19uZXQgKnJ4bmV0KVxuIFx0XHRcdCAgICAgICBcdTAwMjZwZWVyLVx1MDAzZXNyeC50cmFuc3BvcnQpO1xuIFx0XHR9XG4gXHR9XG4rXG4rXHRzcGluX3VubG9ja19iaChcdTAwMjZyeG5ldC1cdTAwM2VwZWVyX2hhc2hfbG9jayk7XG4gfVxuIFxuIC8qKlxuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDhUMTQ6NDM6MzkuMDIyOTQyODQ1WiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6MTM0NDg3NTcxODMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBQYXRjaDogTmV0d29yayBQZWVyIERlc3RydWN0aW9uKipcblxuT2theSwgbGV0J3MgZGl2ZSBpbi4gSSBzZWUgYSBwYXRjaCBhbmQgSSBuZWVkIHRvIHVuZGVyc3RhbmQgaXRzIGltcGxpY2F0aW9ucy4gTXkgaW1tZWRpYXRlIGZvY3VzIGlzIG9uIHRoaXMgbW9kaWZpY2F0aW9uIHRvIGBuZXQvcnhycGMvcGVlcl9vYmplY3QuY2AsIHNwZWNpZmljYWxseSB0aGUgYHJ4cnBjX2Rlc3Ryb3lfYWxsX3BlZXJzYCBmdW5jdGlvbi4gVGhlIGZpbGVuYW1lIHRlbGxzIG1lIHRoaXMgaXMgcmVsYXRlZCB0byBuZXR3b3JrIGNvbW11bmljYXRpb24sIHNwZWNpZmljYWxseSB0aGUgUnhSUEMgcHJvdG9jb2wsIGFuZCB0aGUgZnVuY3Rpb24gbmFtZSBzdHJvbmdseSBzdWdnZXN0cyB0aGlzIHBhdGNoIGlzIGRlYWxpbmcgd2l0aCBjbGVhbnVwIG9yIHRlYXJkb3duIG9mIHBlZXIgb2JqZWN0cy5cblxuVG8gcHJvcGVybHkgYXNzZXNzIHRoaXMsIEknbGwgbmVlZCBhIGJyb2FkZXIgcGVyc3BlY3RpdmUuIEknbSBnb2luZyB0byBxdWlja2x5IHVzZSBgcmVhZC1maWxlYCB0byBnZXQgdGhlIHN1cnJvdW5kaW5nIGNvZGUgY29udGV4dCwgbm90IGp1c3QgdGhlIGxpbmVzIGNoYW5nZWQgaW4gdGhlIHBhdGNoIGl0c2VsZi4gU2VlaW5nIHRoZSBmdW5jdGlvbidzIHN1cnJvdW5kaW5ncyB3aWxsIGhlbHAgdW5kZXJzdGFuZCBob3cgYHJ4cnBjX2Rlc3Ryb3lfYWxsX3BlZXJzYCBmaXRzIGludG8gdGhlIGxhcmdlciBhcmNoaXRlY3R1cmUuIEkgYWxzbyB3YW50IHRvIHZlcmlmeSB0aGF0IFJ4UlBDIGlzIGVuYWJsZWQgYXQgdGhlIGtlcm5lbCBjb25maWcgbGV2ZWwuIFNvIEknbGwgY2hlY2sgdGhlIGFzc29jaWF0ZWQgYEtjb25maWdgIGZpbGVzIHRvIGNvbmZpcm0gdGhhdCBSeFJQQyBpcyBhY3R1YWxseSBjb21waWxlZCBpbi4gVGhpcyBjb250ZXh0IGlzIGVzc2VudGlhbCB0byBjb3JyZWN0bHkgZXZhbHVhdGUgdGhlIHBhdGNoJ3MgaW1wYWN0IGFuZCBhbnkgcG90ZW50aWFsIHNpZGUgZWZmZWN0cy5cblxuXG4iLCJJbnB1dFRva2VucyI6Mjk5MywiT3V0cHV0VG9rZW5zIjoxMDMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo2MSwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA4VDE0OjQzOjUyLjQ3MTcwMzE4OFoiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjgzMTg5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcIm5ldC9yeHJwYy9wZWVyX29iamVjdC5jXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDQ0MCxcbiAgXCJMaW5lQ291bnRcIjogNTBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiIDQ0MDpcXHRcXHRpZiAocGVlcikge1xcbiA0NDE6XFx0XFx0XFx0ZGVidWdfaWQgPSBwZWVyLVxcdTAwM2VkZWJ1Z19pZDtcXG4gNDQyOlxcdFxcdFxcdGRlYWQgPSBfX3JlZmNvdW50X2RlY19hbmRfdGVzdChcXHUwMDI2cGVlci1cXHUwMDNlcmVmLCBcXHUwMDI2cik7XFxuIDQ0MzpcXHRcXHRcXHR0cmFjZV9yeHJwY19wZWVyKGRlYnVnX2lkLCByIC0gMSwgd2h5KTtcXG4gNDQ0OlxcdFxcdFxcdGlmIChkZWFkKVxcbiA0NDU6XFx0XFx0XFx0XFx0X19yeHJwY19wdXRfcGVlcihwZWVyKTtcXG4gNDQ2OlxcdFxcdH1cXG4gNDQ3OlxcdH1cXG4gNDQ4OlxcdFxcbiA0NDk6XFx0LypcXG4gNDUwOlxcdCAqIE1ha2Ugc3VyZSBhbGwgcGVlciByZWNvcmRzIGhhdmUgYmVlbiBkaXNjYXJkZWQuXFxuIDQ1MTpcXHQgKi9cXG4gNDUyOlxcdHZvaWQgcnhycGNfZGVzdHJveV9hbGxfcGVlcnMoc3RydWN0IHJ4cnBjX25ldCAqcnhuZXQpXFxuIDQ1MzpcXHR7XFxuIDQ1NDpcXHRcXHRzdHJ1Y3QgcnhycGNfcGVlciAqcGVlcjtcXG4gNDU1OlxcdFxcdGludCBpO1xcbiA0NTY6XFx0XFxuIDQ1NzpcXHRcXHQvKlxcbiA0NTg6XFx0XFx0ICogUHJldmVudCB1c2UtYWZ0ZXItZnJlZSBpZiBhIHBlZXIgaXMgY29uY3VycmVudGx5IHVubGlua2VkIGZyb20gdGhlXFxuIDQ1OTpcXHRcXHQgKiBoYXNoIHRhYmxlIGFuZCBmcmVlZCB2aWEgUkNVIGR1cmluZyBpdGVyYXRpb24uXFxuIDQ2MDpcXHRcXHQgKi9cXG4gNDYxOlxcdFxcdHNwaW5fbG9ja19iaChcXHUwMDI2cnhuZXQtXFx1MDAzZXBlZXJfaGFzaF9sb2NrKTtcXG4gNDYyOlxcdFxcbiA0NjM6XFx0XFx0Zm9yIChpID0gMDsgaSBcXHUwMDNjIEhBU0hfU0laRShyeG5ldC1cXHUwMDNlcGVlcl9oYXNoKTsgaSsrKSB7XFxuIDQ2NDpcXHRcXHRcXHRpZiAoaGxpc3RfZW1wdHkoXFx1MDAyNnJ4bmV0LVxcdTAwM2VwZWVyX2hhc2hbaV0pKVxcbiA0NjU6XFx0XFx0XFx0XFx0Y29udGludWU7XFxuIDQ2NjpcXHRcXG4gNDY3OlxcdFxcdFxcdGhsaXN0X2Zvcl9lYWNoX2VudHJ5KHBlZXIsIFxcdTAwMjZyeG5ldC1cXHUwMDNlcGVlcl9oYXNoW2ldLCBoYXNoX2xpbmspIHtcXG4gNDY4OlxcdFxcdFxcdFxcdHByX2VycihcXFwiTGVha2VkIHBlZXIgJXggeyV1fSAlcElTcFxcXFxuXFxcIixcXG4gNDY5OlxcdFxcdFxcdFxcdCAgICAgICBwZWVyLVxcdTAwM2VkZWJ1Z19pZCxcXG4gNDcwOlxcdFxcdFxcdFxcdCAgICAgICByZWZjb3VudF9yZWFkKFxcdTAwMjZwZWVyLVxcdTAwM2VyZWYpLFxcbiA0NzE6XFx0XFx0XFx0XFx0ICAgICAgIFxcdTAwMjZwZWVyLVxcdTAwM2VzcngudHJhbnNwb3J0KTtcXG4gNDcyOlxcdFxcdFxcdH1cXG4gNDczOlxcdFxcdH1cXG4gNDc0OlxcdFxcbiA0NzU6XFx0XFx0c3Bpbl91bmxvY2tfYmgoXFx1MDAyNnJ4bmV0LVxcdTAwM2VwZWVyX2hhc2hfbG9jayk7XFxuIDQ3NjpcXHR9XFxuIDQ3NzpcXHRcXG4gNDc4OlxcdC8qKlxcbiA0Nzk6XFx0ICogcnhycGNfa2VybmVsX2dldF9jYWxsX3BlZXIgLSBHZXQgdGhlIHBlZXIgYWRkcmVzcyBvZiBhIGNhbGxcXG4gNDgwOlxcdCAqIEBzb2NrOiBUaGUgc29ja2V0IG9uIHdoaWNoIHRoZSBjYWxsIGlzIGluIHByb2dyZXNzLlxcbiA0ODE6XFx0ICogQGNhbGw6IFRoZSBjYWxsIHRvIHF1ZXJ5XFxuIDQ4MjpcXHQgKlxcbiA0ODM6XFx0ICogR2V0IGEgcmVjb3JkIGZvciB0aGUgcmVtb3RlIHBlZXIgaW4gYSBjYWxsLlxcbiA0ODQ6XFx0ICpcXG4gNDg1OlxcdCAqIFJldHVybjogVGhlIGNhbGwncyBwZWVyIHJlY29yZC5cXG4gNDg2OlxcdCAqL1xcbiA0ODc6XFx0c3RydWN0IHJ4cnBjX3BlZXIgKnJ4cnBjX2tlcm5lbF9nZXRfY2FsbF9wZWVyKHN0cnVjdCBzb2NrZXQgKnNvY2ssIHN0cnVjdCByeHJwY19jYWxsICpjYWxsKVxcbiA0ODg6XFx0e1xcbiA0ODk6XFx0XFx0cmV0dXJuIHJ4cnBjX2dldF9wZWVyKGNhbGwtXFx1MDAzZXBlZXIsIHJ4cnBjX3BlZXJfZ2V0X2FwcGxpY2F0aW9uKTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDhUMTQ6NDM6NTIuNDcxNzg3NzY4WiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ1OTA0MzEyLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInJ4cnBjX2Rlc3Ryb3lfYWxsX3BlZXJzXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9yeHJwY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvcnhycGMvYXItaW50ZXJuYWwuaD0xNDI2PXZvaWQgcnhycGNfbmV3X2luY29taW5nX3BlZXIoc3RydWN0IHJ4cnBjX2xvY2FsICpsb2NhbCwgc3RydWN0IHJ4cnBjX3BlZXIgKnBlZXIpO1xcbm5ldC9yeHJwYy9hci1pbnRlcm5hbC5oOjE0Mjc6dm9pZCByeHJwY19kZXN0cm95X2FsbF9wZWVycyhzdHJ1Y3QgcnhycGNfbmV0ICopO1xcbm5ldC9yeHJwYy9hci1pbnRlcm5hbC5oLTE0Mjgtc3RydWN0IHJ4cnBjX3BlZXIgKnJ4cnBjX2dldF9wZWVyKHN0cnVjdCByeHJwY19wZWVyICosIGVudW0gcnhycGNfcGVlcl90cmFjZSk7XFxuLS1cXG5uZXQvcnhycGMvbmV0X25zLmM9MTAzPXN0YXRpYyBfX25ldF9leGl0IHZvaWQgcnhycGNfZXhpdF9uZXQoc3RydWN0IG5ldCAqbmV0KVxcbi0tXFxubmV0L3J4cnBjL25ldF9ucy5jLTExMy1cXHRyeHJwY19kZXN0cm95X2FsbF9jb25uZWN0aW9ucyhyeG5ldCk7XFxubmV0L3J4cnBjL25ldF9ucy5jOjExNDpcXHRyeHJwY19kZXN0cm95X2FsbF9wZWVycyhyeG5ldCk7XFxubmV0L3J4cnBjL25ldF9ucy5jLTExNS1cXHRyeHJwY19kZXN0cm95X2FsbF9sb2NhbHMocnhuZXQpO1xcbi0tXFxubmV0L3J4cnBjL3BlZXJfb2JqZWN0LmM9NDM0PXZvaWQgcnhycGNfcHV0X3BlZXIoc3RydWN0IHJ4cnBjX3BlZXIgKnBlZXIsIGVudW0gcnhycGNfcGVlcl90cmFjZSB3aHkpXFxuLS1cXG5uZXQvcnhycGMvcGVlcl9vYmplY3QuYy00NTEtICovXFxubmV0L3J4cnBjL3BlZXJfb2JqZWN0LmM6NDUyOnZvaWQgcnhycGNfZGVzdHJveV9hbGxfcGVlcnMoc3RydWN0IHJ4cnBjX25ldCAqcnhuZXQpXFxubmV0L3J4cnBjL3BlZXJfb2JqZWN0LmMtNDUzLXtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDhUMTQ6NDM6NTIuNTE3Njk2MjNaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo5Mjc4MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJuZXQvcnhycGMvS2NvbmZpZ1wiLFxuICBcIkZpcnN0TGluZVwiOiAxLFxuICBcIkxpbmVDb3VudFwiOiA0MFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgICAxOlxcdCMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxcbiAgIDI6XFx0I1xcbiAgIDM6XFx0IyBSeFJQQyBzZXNzaW9uIHNvY2tldHNcXG4gICA0OlxcdCNcXG4gICA1OlxcdFxcbiAgIDY6XFx0Y29uZmlnIEFGX1JYUlBDXFxuICAgNzpcXHRcXHR0cmlzdGF0ZSBcXFwiUnhSUEMgc2Vzc2lvbiBzb2NrZXRzXFxcIlxcbiAgIDg6XFx0XFx0ZGVwZW5kcyBvbiBJTkVUXFxuICAgOTpcXHRcXHRzZWxlY3QgQ1JZUFRPXFxuICAxMDpcXHRcXHRzZWxlY3QgQ1JZUFRPX0xJQl9ERVMgaWYgUlhLQURcXG4gIDExOlxcdFxcdHNlbGVjdCBLRVlTXFxuICAxMjpcXHRcXHRzZWxlY3QgTkVUX1VEUF9UVU5ORUxcXG4gIDEzOlxcdFxcdGhlbHBcXG4gIDE0OlxcdFxcdCAgU2F5IFkgb3IgTSBoZXJlIHRvIGluY2x1ZGUgc3VwcG9ydCBmb3IgUnhSUEMgc2Vzc2lvbiBzb2NrZXRzIChqdXN0XFxuICAxNTpcXHRcXHQgIHRoZSB0cmFuc3BvcnQgcGFydCwgbm90IHRoZSBwcmVzZW50YXRpb24gcGFydDogKHVuKW1hcnNoYWxsaW5nIGlzXFxuICAxNjpcXHRcXHQgIGxlZnQgdG8gdGhlIGFwcGxpY2F0aW9uKS5cXG4gIDE3OlxcdFxcbiAgMTg6XFx0XFx0ICBUaGVzZSBhcmUgdXNlZCBmb3IgQUZTIGtlcm5lbCBmaWxlc3lzdGVtIGFuZCB1c2Vyc3BhY2UgdXRpbGl0aWVzLlxcbiAgMTk6XFx0XFxuICAyMDpcXHRcXHQgIFRoaXMgbW9kdWxlIGF0IHRoZSBtb21lbnQgb25seSBzdXBwb3J0cyBjbGllbnQgb3BlcmF0aW9ucyBhbmQgaXNcXG4gIDIxOlxcdFxcdCAgY3VycmVudGx5IGluY29tcGxldGUuXFxuICAyMjpcXHRcXG4gIDIzOlxcdFxcdCAgU2VlIERvY3VtZW50YXRpb24vbmV0d29ya2luZy9yeHJwYy5yc3QuXFxuICAyNDpcXHRcXG4gIDI1OlxcdGlmIEFGX1JYUlBDXFxuICAyNjpcXHRcXG4gIDI3OlxcdGNvbmZpZyBBRl9SWFJQQ19JUFY2XFxuICAyODpcXHRcXHRib29sIFxcXCJJUHY2IHN1cHBvcnQgZm9yIFJ4UlBDXFxcIlxcbiAgMjk6XFx0XFx0ZGVwZW5kcyBvbiBJUFY2XFxuICAzMDpcXHRcXHRoZWxwXFxuICAzMTpcXHRcXHQgIFNheSBZIGhlcmUgdG8gYWxsb3cgQUZfUlhSUEMgdG8gdXNlIElQVjYgVURQIGFzIHdlbGwgYXMgSVBWNCBVRFAgYXNcXG4gIDMyOlxcdFxcdCAgaXRzIG5ldHdvcmsgdHJhbnNwb3J0LlxcbiAgMzM6XFx0XFxuICAzNDpcXHRjb25maWcgQUZfUlhSUENfSU5KRUNUX0xPU1NcXG4gIDM1OlxcdFxcdGJvb2wgXFxcIkluamVjdCBwYWNrZXQgbG9zcyBpbnRvIFJ4UlBDIHBhY2tldCBzdHJlYW1cXFwiXFxuICAzNjpcXHRcXHRoZWxwXFxuICAzNzpcXHRcXHQgIFNheSBZIGhlcmUgdG8gaW5qZWN0IHBhY2tldCBsb3NzIGJ5IGRpc2NhcmRpbmcgc29tZSByZWNlaXZlZCBhbmQgc29tZVxcbiAgMzg6XFx0XFx0ICB0cmFuc21pdHRlZCBwYWNrZXRzLlxcbiAgMzk6XFx0XFxuICA0MDpcXHRjb25maWcgQUZfUlhSUENfSU5KRUNUX1JYX0RFTEFZXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA4VDE0OjQzOjUyLjUxNzc5MTQxWiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6NDY1MzM1MDIwNywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBc3Nlc3NtZW50IG9mIFJ4UlBDIEZ1enppbmcgUG90ZW50aWFsKipcblxuT2theSwgbGV0J3MgYnJlYWsgdGhpcyBkb3duLiBgcnhycGNfZGVzdHJveV9hbGxfcGVlcnNgIGdldHMgY2FsbGVkIHdoZW4gYSBuZXR3b3JrIG5hbWVzcGFjZSBpcyB0b3JuIGRvd24sIHNwZWNpZmljYWxseSBkdXJpbmcgYHJ4cnBjX2V4aXRfbmV0YC4gVGhpcyB0ZWFyZG93biBoYXBwZW5zIHdoZW4gYSBuZXRucyB0aGF0IHdhcyBjcmVhdGVkIGJ5IGEgdXNlciBvciBmdXp6ZXIgZXhpdHMuIFRoZSBjcml0aWNhbCBwYXJ0IGlzIHRoYXQgQUZfUlhSUEMgc29ja2V0cyBhcmUgZGlyZWN0bHkgYWNjZXNzaWJsZSB0aHJvdWdoIHN0YW5kYXJkIGBzb2NrZXQoKWAgY2FsbHMsIG1lYW5pbmcgc3l6a2FsbGVyIGNhbiByZWFjaCB0aGVtLlxuXG5NeSBpbml0aWFsIHF1ZXN0aW9uOiBJcyBBRl9SWFJQQyByZWFjaGFibGUgYW5kIHdvcnRoIGZ1enppbmc/IFRoZSBhbnN3ZXIgaXMgYSBjbGVhciAqeWVzKi4gVGhlIGZhY3QgdGhhdCBpdCdzIHRyaWdnZXJlZCBieSBuZXR3b3JrIG5hbWVzcGFjZSBleGl0IGFuZCBpbnZvbHZlcyBSeFJQQyBzb2NrZXRzIGFuZCBwZWVycyBtYWtlcyBpdCBhIHByaW1lIGNhbmRpZGF0ZS5cblxuVGhlIHJlbGV2YW50IHBhdGNoIGludHJvZHVjZXMgYSBgc3Bpbl9sb2NrX2JoYCBhbmQgYHNwaW5fdW5sb2NrX2JoYCBhcm91bmQgdGhlIGhhc2ggaXRlcmF0aW9uIGluIGByeHJwY19kZXN0cm95X2FsbF9wZWVyc2AuIFRoaXMgaXMgc2lnbmlmaWNhbnQgYmVjYXVzZSwgYWNjb3JkaW5nIHRvIHRoZSBmdXp6aW5nIGd1aWRlbGluZXMsIHdlIHNob3VsZCBjb25zaWRlciBhIHBhdGNoIFwiV29ydGhGdXp6aW5nPXRydWVcIiBpZiBpdCB0b3VjaGVzIHJlYWNoYWJsZSBleGVjdXRhYmxlIGNvZGUuIEFuZCB0aGlzIGRlZmluaXRlbHkgZG9lczpcblxuKiAgIEl0IGludm9sdmVzICpjb3JlIG5ldHdvcmtpbmcqICh0aGUgbmFtZXNwYWNlIHRlYXJkb3duIGFuZCBSeFJQQyBwcm90b2NvbCkuXG4qICAgSXQncyBhIHJlYWNoYWJsZSBwcm90b2NvbCAoQUZfUlhSUEMpLlxuKiAgIEl0IGludHJvZHVjZXMgKmxvY2tpbmcgc3luY2hyb25pemF0aW9uKiBkdXJpbmcgbmV0d29yayBuYW1lc3BhY2UgdGVhcmRvd24gYW5kIFJ4UlBDIHBlZXIgY2xlYW51cC5cblxuVGhlcmVmb3JlLCB0aGlzIHBhdGNoIGRpcmVjdGx5IGZhbGxzIGludG8gdGhlIGNhdGVnb3J5IG9mIGNvZGUgdGhhdCByZXF1aXJlcyBmdXp6aW5nIHRvIGxvb2sgZm9yIHBvdGVudGlhbCBsb2NrIG9yZGVyIHZpb2xhdGlvbnMsIGRlYWRsb2NrcywgbG9ja2RlcCB3YXJuaW5ncywgYW5kIG90aGVyIGNvbmN1cnJlbnQgcmFjZSBjb25kaXRpb25zLiBNeSBleHBlcmllbmNlIHRlbGxzIG1lIHRoYXQgdGhlc2UgdHlwZXMgb2YgY2hhbmdlcyBhcmUgb2Z0ZW4gZmVydGlsZSBncm91bmQgZm9yIGZpbmRpbmcgc3VidGxlIGNvbmN1cnJlbmN5IGJ1Z3MuXG5cbkZpbmFsbHksIEkgc2hvdWxkIGNvbmZpcm0gdGhlIGNvbmZpZ3VyYXRpb24uIEFGX1JYUlBDIGRlcGVuZHMgb24gSU5FVC4gSSB3aWxsIGFsc28gY2hlY2sgdGhlIGBuZXQvcnhycGMvTWFrZWZpbGVgIHRvIGNvbmZpcm0gdGhlIGJ1aWxkIGRlcGVuZGVuY2llcyBhbmQgYW55IG90aGVyIHJlbGV2YW50IHNldHRpbmdzIHRoYXQgbWlnaHQgaW1wYWN0IGZ1enppbmcuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjUwMTcsIk91dHB1dFRva2VucyI6MzIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozOTcsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiLCJncmVwcGVyIiwicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMDhUMTQ6NDM6NTcuMTcxMTQ1NzU2WiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NzM0MjksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwibmV0L3J4cnBjL01ha2VmaWxlXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDEsXG4gIFwiTGluZUNvdW50XCI6IDQwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAgIDE6XFx0IyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMFxcbiAgIDI6XFx0I1xcbiAgIDM6XFx0IyBNYWtlZmlsZSBmb3IgTGludXgga2VybmVsIFJ4UlBDXFxuICAgNDpcXHQjXFxuICAgNTpcXHRcXG4gICA2OlxcdG9iai0kKENPTkZJR19BRl9SWFJQQykgKz0gcnhycGMub1xcbiAgIDc6XFx0XFxuICAgODpcXHRyeHJwYy15IDo9IFxcXFxcXG4gICA5OlxcdFxcdGFmX3J4cnBjLm8gXFxcXFxcbiAgMTA6XFx0XFx0Y2FsbF9hY2NlcHQubyBcXFxcXFxuICAxMTpcXHRcXHRjYWxsX2V2ZW50Lm8gXFxcXFxcbiAgMTI6XFx0XFx0Y2FsbF9vYmplY3QubyBcXFxcXFxuICAxMzpcXHRcXHRjYWxsX3N0YXRlLm8gXFxcXFxcbiAgMTQ6XFx0XFx0Y29ubl9jbGllbnQubyBcXFxcXFxuICAxNTpcXHRcXHRjb25uX2V2ZW50Lm8gXFxcXFxcbiAgMTY6XFx0XFx0Y29ubl9vYmplY3QubyBcXFxcXFxuICAxNzpcXHRcXHRjb25uX3NlcnZpY2UubyBcXFxcXFxuICAxODpcXHRcXHRpbnB1dC5vIFxcXFxcXG4gIDE5OlxcdFxcdGlucHV0X3JhY2subyBcXFxcXFxuICAyMDpcXHRcXHRpbnNlY3VyZS5vIFxcXFxcXG4gIDIxOlxcdFxcdGlvX3RocmVhZC5vIFxcXFxcXG4gIDIyOlxcdFxcdGtleS5vIFxcXFxcXG4gIDIzOlxcdFxcdGxvY2FsX2V2ZW50Lm8gXFxcXFxcbiAgMjQ6XFx0XFx0bG9jYWxfb2JqZWN0Lm8gXFxcXFxcbiAgMjU6XFx0XFx0bWlzYy5vIFxcXFxcXG4gIDI2OlxcdFxcdG5ldF9ucy5vIFxcXFxcXG4gIDI3OlxcdFxcdG9vYi5vIFxcXFxcXG4gIDI4OlxcdFxcdG91dHB1dC5vIFxcXFxcXG4gIDI5OlxcdFxcdHBlZXJfZXZlbnQubyBcXFxcXFxuICAzMDpcXHRcXHRwZWVyX29iamVjdC5vIFxcXFxcXG4gIDMxOlxcdFxcdHJlY3Ztc2cubyBcXFxcXFxuICAzMjpcXHRcXHRydHQubyBcXFxcXFxuICAzMzpcXHRcXHRzZWN1cml0eS5vIFxcXFxcXG4gIDM0OlxcdFxcdHNlbmRtc2cubyBcXFxcXFxuICAzNTpcXHRcXHRzZXJ2ZXJfa2V5Lm8gXFxcXFxcbiAgMzY6XFx0XFx0c2tidWZmLm8gXFxcXFxcbiAgMzc6XFx0XFx0dHhidWYubyBcXFxcXFxuICAzODpcXHRcXHR1dGlscy5vXFxuICAzOTpcXHRcXG4gIDQwOlxcdHJ4cnBjLSQoQ09ORklHX1BST0NfRlMpICs9IHByb2Mub1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wOFQxNDo0Mzo1Ny4xNzEyMjExODdaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjoyMTQyMDcxNDA0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdGhvdWdodCBwcm9jZXNzLCBzdW1tYXJpemVkIGFzIHlvdSByZXF1ZXN0ZWQ6XG5cbioqSW52ZXN0aWdhdGluZyB0aGUgTGlmZWN5Y2xlIG9mIGByeHJwY19kZXN0cm95X2FsbF9wZWVyc2AqKlxuXG5Pa2F5LCBzbyBJIG5lZWQgdG8gdHJhY2UgdGhlIHVzYWdlIG9mIGByeHJwY19kZXN0cm95X2FsbF9wZWVyc2AuIFRoaXMgaXMgbGlrZWx5IGEgY3JpdGljYWwgZnVuY3Rpb24gZm9yIGNsZWFuaW5nIHVwIHJlc291cmNlcywgYW5kIEkgd2FudCB0byB1bmRlcnN0YW5kICp3aGVuKiBhbmQgKndoeSogaXQncyBjYWxsZWQuIE15IGZpcnN0IGluc3RpbmN0LCBnaXZlbiBteSBleHBlcmllbmNlLCBpcyB0byBqdW1wIHJpZ2h0IGludG8gdGhlIHNvdXJjZSBjb2RlLiBTcGVjaWZpY2FsbHksIEknbGwgc3RhcnQgYnkgY2hlY2tpbmcgYG5ldC9yeHJwYy9uZXRfbnMuY2AuIFRoYXQgZmlsZSBpcyBhIGdvb2Qgc3RhcnRpbmcgcG9pbnQgZm9yIG5ldHdvcmsgbmFtZXNwYWNlLXJlbGF0ZWQgY29kZSB3aXRoaW4gdGhlIFJ4UlBDIGltcGxlbWVudGF0aW9uLiBJdCdzIGhpZ2hseSBwcm9iYWJsZSB0aGF0IHRoaXMgZnVuY3Rpb24gaXMgY2FsbGVkIHdoZW4gYSBuZXR3b3JrIG5hbWVzcGFjZSBpcyBiZWluZyB0b3JuIGRvd24gb3IsIGF0IGxlYXN0LCB3aGVuIHRoZSBSeFJQQyBkYXRhIGFzc29jaWF0ZWQgd2l0aCBpdCBpcyBiZWluZyBjbGVhbmVkIHVwLiBGaW5kaW5nIHRoZSBjYWxscyB0byB0aGlzIGZ1bmN0aW9uIHdpbGwgZ2l2ZSBtZSBhIGJldHRlciB1bmRlcnN0YW5kaW5nIG9mIHRoZSBvdmVyYWxsIHJlc291cmNlIG1hbmFnZW1lbnQgYW5kIGxpZmVjeWNsZSB3aXRoaW4gdGhlIFJ4UlBDIHN1YnN5c3RlbS5cblxuXG4iLCJJbnB1dFRva2VucyI6NjI5MCwiT3V0cHV0VG9rZW5zIjozNywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjMyLCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMDhUMTQ6NDM6NTkuMzEzMjk1MDg5WiIsIlNlcSI6MTAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjY0NzIwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcIm5ldC9yeHJwYy9uZXRfbnMuY1wiLFxuICBcIkZpcnN0TGluZVwiOiA5NSxcbiAgXCJMaW5lQ291bnRcIjogMzVcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiICA5NTpcXHRlcnJfcHJvYzpcXG4gIDk2OlxcdFxcdHJ4bmV0LVxcdTAwM2VsaXZlID0gZmFsc2U7XFxuICA5NzpcXHRcXHRyZXR1cm4gcmV0O1xcbiAgOTg6XFx0fVxcbiAgOTk6XFx0XFxuIDEwMDpcXHQvKlxcbiAxMDE6XFx0ICogQ2xlYW4gdXAgYSBwZXItbmV0d29yayBuYW1lc3BhY2UgcmVjb3JkLlxcbiAxMDI6XFx0ICovXFxuIDEwMzpcXHRzdGF0aWMgX19uZXRfZXhpdCB2b2lkIHJ4cnBjX2V4aXRfbmV0KHN0cnVjdCBuZXQgKm5ldClcXG4gMTA0OlxcdHtcXG4gMTA1OlxcdFxcdHN0cnVjdCByeHJwY19uZXQgKnJ4bmV0ID0gcnhycGNfbmV0KG5ldCk7XFxuIDEwNjpcXHRcXG4gMTA3OlxcdFxcdHJ4bmV0LVxcdTAwM2VsaXZlID0gZmFsc2U7XFxuIDEwODpcXHRcXHR0aW1lcl9kZWxldGVfc3luYyhcXHUwMDI2cnhuZXQtXFx1MDAzZXBlZXJfa2VlcGFsaXZlX3RpbWVyKTtcXG4gMTA5OlxcdFxcdGNhbmNlbF93b3JrX3N5bmMoXFx1MDAyNnJ4bmV0LVxcdTAwM2VwZWVyX2tlZXBhbGl2ZV93b3JrKTtcXG4gMTEwOlxcdFxcdC8qIFJlbW92ZSB0aGUgdGltZXIgYWdhaW4gYXMgdGhlIHdvcmtlciBtYXkgaGF2ZSByZXN0YXJ0ZWQgaXQuICovXFxuIDExMTpcXHRcXHR0aW1lcl9kZWxldGVfc3luYyhcXHUwMDI2cnhuZXQtXFx1MDAzZXBlZXJfa2VlcGFsaXZlX3RpbWVyKTtcXG4gMTEyOlxcdFxcdHJ4cnBjX2Rlc3Ryb3lfYWxsX2NhbGxzKHJ4bmV0KTtcXG4gMTEzOlxcdFxcdHJ4cnBjX2Rlc3Ryb3lfYWxsX2Nvbm5lY3Rpb25zKHJ4bmV0KTtcXG4gMTE0OlxcdFxcdHJ4cnBjX2Rlc3Ryb3lfYWxsX3BlZXJzKHJ4bmV0KTtcXG4gMTE1OlxcdFxcdHJ4cnBjX2Rlc3Ryb3lfYWxsX2xvY2FscyhyeG5ldCk7XFxuIDExNjpcXHRcXHRwcm9jX3JlbW92ZShyeG5ldC1cXHUwMDNlcHJvY19uZXQpO1xcbiAxMTc6XFx0fVxcbiAxMTg6XFx0XFxuIDExOTpcXHRzdHJ1Y3QgcGVybmV0X29wZXJhdGlvbnMgcnhycGNfbmV0X29wcyA9IHtcXG4gMTIwOlxcdFxcdC5pbml0XFx0PSByeHJwY19pbml0X25ldCxcXG4gMTIxOlxcdFxcdC5leGl0XFx0PSByeHJwY19leGl0X25ldCxcXG4gMTIyOlxcdFxcdC5pZFxcdD0gXFx1MDAyNnJ4cnBjX25ldF9pZCxcXG4gMTIzOlxcdFxcdC5zaXplXFx0PSBzaXplb2Yoc3RydWN0IHJ4cnBjX25ldCksXFxuIDEyNDpcXHR9O1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wOFQxNDo0Mzo1OS4zMTMzNjEwOFoiLCJTZXEiOjExLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjoyODg0NDkxNzEzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgUlhSUEMgUGVlciBPYmplY3QgTGlmZWN5Y2xlKipcblxuT2theSwgbGV0J3MgZGl2ZSBpbnRvIHRoaXMgYHJ4cnBjX2Rlc3Ryb3lfYWxsX3BlZXJzYCBmdW5jdGlvbi4gSSBzZWUgaXQncyBub24tc3RhdGljIGFuZCBkZWZpbmVkIGluIGBuZXQvcnhycGMvcGVlcl9vYmplY3QuY2AuIEludGVyZXN0aW5nLiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdG8gdHJhY2UgdGhlIGNvbXBsZXRlIGxpZmVjeWNsZSBvZiB0aGVzZSBwZWVycywgc28gSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2hlcmUgdGhpcyBmdW5jdGlvbiBmaXRzIGluIHRoZSBncmFuZCBzY2hlbWUuIFRvIGRvIHRoYXQsIEkgc2hvdWxkIGxvb2sgYXQgbm90IGp1c3QgdGhpcyBmdW5jdGlvbiBidXQgYWxzbyBhZGphY2VudCBvbmVzIGluIGBwZWVyX29iamVjdC5jYC5cblxuV2hhdCBhcmUgdGhlIGNyaXRpY2FsIGZ1bmN0aW9ucyB0byBzY3J1dGluaXplPyBXZWxsLCBgcnhycGNfZGVzdHJveV9hbGxfcGVlcnNgIGlzIG9idmlvdXNseSBhIGtleSBvbmUuIEJ1dCBmdW5jdGlvbnMgaW52b2x2ZWQgaW4gdGhlIGJyb2FkZXIgcGVlciBsaWZlY3ljbGUgYXJlIHJlbGV2YW50IHRvby4gSSBuZWVkIHRvIGtlZXAgaW4gbWluZCwgYHJ4cnBjX2V4aXRfbmV0YCBhbmQgYHJ4cnBjX3B1dF9wZWVyYC4gSSdsbCBuZWVkIHRvIGV4cGFuZCBteSBzZWFyY2ggdG8gaWRlbnRpZnkgYW55IG90aGVyIGZ1bmN0aW9ucyB0aGF0IGFyZSBjcml0aWNhbCB0byB0aGUgcGVlciBsaWZlY3ljbGUuIEknbGwgdGFrZSBhIHF1aWNrIGdsYW5jZSBhdCB0aGUgb3RoZXIgZnVuY3Rpb25zIGluIGBwZWVyX29iamVjdC5jYCBhbmQgbWFrZSBzdXJlIEkgZG9uJ3QgbWlzcyBhbnl0aGluZyB0aGF0IGdpdmVzIG1lIGEgYmV0dGVyIHVuZGVyc3RhbmRpbmcgb2YgaG93IHRoZXNlIHBlZXJzIGFyZSBjcmVhdGVkLCBtYW5hZ2VkLCBhbmQgZXZlbnR1YWxseSBkZXN0cm95ZWQuIExldCdzIHNlZSB3aGF0IGVsc2UgaXMgaW4gdGhhdCBmaWxlLi4uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjcwMjUsIk91dHB1dFRva2VucyI6NDQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMTAsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0wOFQxNDo0NDowMi4xOTc4NTUzODJaIiwiU2VxIjoxMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ1NDQ1MTYzLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIl5bYS16QS1aMC05X10rIHJ4cnBjX1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvcnhycGMvcGVlcl9vYmplY3QuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvcnhycGMvcGVlcl9vYmplY3QuYz0xMTY9c3RhdGljIHN0cnVjdCByeHJwY19wZWVyICpfX3J4cnBjX2xvb2t1cF9wZWVyX3JjdShcXG4tLVxcbm5ldC9yeHJwYy9wZWVyX29iamVjdC5jLTEzNS0gKi9cXG5uZXQvcnhycGMvcGVlcl9vYmplY3QuYzoxMzY6c3RydWN0IHJ4cnBjX3BlZXIgKnJ4cnBjX2xvb2t1cF9wZWVyX3JjdShzdHJ1Y3QgcnhycGNfbG9jYWwgKmxvY2FsLFxcbm5ldC9yeHJwYy9wZWVyX29iamVjdC5jLTEzNy1cXHRcXHRcXHRcXHRcXHQgY29uc3Qgc3RydWN0IHNvY2thZGRyX3J4cnBjICpzcngpXFxuLS1cXG5uZXQvcnhycGMvcGVlcl9vYmplY3QuYy0xNTEtICovXFxubmV0L3J4cnBjL3BlZXJfb2JqZWN0LmM6MTUyOnZvaWQgcnhycGNfYXNzZXNzX01UVV9zaXplKHN0cnVjdCByeHJwY19sb2NhbCAqbG9jYWwsIHN0cnVjdCByeHJwY19wZWVyICpwZWVyKVxcbm5ldC9yeHJwYy9wZWVyX29iamVjdC5jLTE1My17XFxuLS1cXG5uZXQvcnhycGMvcGVlcl9vYmplY3QuYy0yMjEtICovXFxubmV0L3J4cnBjL3BlZXJfb2JqZWN0LmM6MjIyOnN0cnVjdCByeHJwY19wZWVyICpyeHJwY19hbGxvY19wZWVyKHN0cnVjdCByeHJwY19sb2NhbCAqbG9jYWwsIGdmcF90IGdmcCxcXG5uZXQvcnhycGMvcGVlcl9vYmplY3QuYy0yMjMtXFx0XFx0XFx0XFx0ICAgIGVudW0gcnhycGNfcGVlcl90cmFjZSB3aHkpXFxuLS1cXG5uZXQvcnhycGMvcGVlcl9vYmplY3QuYz0zMDQ9c3RhdGljIHZvaWQgcnhycGNfZnJlZV9wZWVyKHN0cnVjdCByeHJwY19wZWVyICpwZWVyKVxcbi0tXFxubmV0L3J4cnBjL3BlZXJfb2JqZWN0LmMtMzE2LSAqL1xcbm5ldC9yeHJwYy9wZWVyX29iamVjdC5jOjMxNzp2b2lkIHJ4cnBjX25ld19pbmNvbWluZ19wZWVyKHN0cnVjdCByeHJwY19sb2NhbCAqbG9jYWwsIHN0cnVjdCByeHJwY19wZWVyICpwZWVyKVxcbm5ldC9yeHJwYy9wZWVyX29iamVjdC5jLTMxOC17XFxuLS1cXG5uZXQvcnhycGMvcGVlcl9vYmplY3QuYy0zMzMtICovXFxubmV0L3J4cnBjL3BlZXJfb2JqZWN0LmM6MzM0OnN0cnVjdCByeHJwY19wZWVyICpyeHJwY19sb29rdXBfcGVlcihzdHJ1Y3QgcnhycGNfbG9jYWwgKmxvY2FsLFxcbm5ldC9yeHJwYy9wZWVyX29iamVjdC5jLTMzNS1cXHRcXHRcXHRcXHQgICAgIHN0cnVjdCBzb2NrYWRkcl9yeHJwYyAqc3J4LCBnZnBfdCBnZnApXFxuLS1cXG5uZXQvcnhycGMvcGVlcl9vYmplY3QuYy0zODctICovXFxubmV0L3J4cnBjL3BlZXJfb2JqZWN0LmM6Mzg4OnN0cnVjdCByeHJwY19wZWVyICpyeHJwY19nZXRfcGVlcihzdHJ1Y3QgcnhycGNfcGVlciAqcGVlciwgZW51bSByeHJwY19wZWVyX3RyYWNlIHdoeSlcXG5uZXQvcnhycGMvcGVlcl9vYmplY3QuYy0zODkte1xcbi0tXFxubmV0L3J4cnBjL3BlZXJfb2JqZWN0LmMtMzk5LSAqL1xcbm5ldC9yeHJwYy9wZWVyX29iamVjdC5jOjQwMDpzdHJ1Y3QgcnhycGNfcGVlciAqcnhycGNfZ2V0X3BlZXJfbWF5YmUoc3RydWN0IHJ4cnBjX3BlZXIgKnBlZXIsXFxubmV0L3J4cnBjL3BlZXJfb2JqZWN0LmMtNDAxLVxcdFxcdFxcdFxcdFxcdGVudW0gcnhycGNfcGVlcl90cmFjZSB3aHkpXFxuLS1cXG5uZXQvcnhycGMvcGVlcl9vYmplY3QuYz00MTc9c3RhdGljIHZvaWQgX19yeHJwY19wdXRfcGVlcihzdHJ1Y3QgcnhycGNfcGVlciAqcGVlcilcXG4tLVxcbm5ldC9yeHJwYy9wZWVyX29iamVjdC5jLTQzMy0gKi9cXG5uZXQvcnhycGMvcGVlcl9vYmplY3QuYzo0MzQ6dm9pZCByeHJwY19wdXRfcGVlcihzdHJ1Y3QgcnhycGNfcGVlciAqcGVlciwgZW51bSByeHJwY19wZWVyX3RyYWNlIHdoeSlcXG5uZXQvcnhycGMvcGVlcl9vYmplY3QuYy00MzUte1xcbi0tXFxubmV0L3J4cnBjL3BlZXJfb2JqZWN0LmMtNDUxLSAqL1xcbm5ldC9yeHJwYy9wZWVyX29iamVjdC5jOjQ1Mjp2b2lkIHJ4cnBjX2Rlc3Ryb3lfYWxsX3BlZXJzKHN0cnVjdCByeHJwY19uZXQgKnJ4bmV0KVxcbm5ldC9yeHJwYy9wZWVyX29iamVjdC5jLTQ1My17XFxuLS1cXG5uZXQvcnhycGMvcGVlcl9vYmplY3QuYy00ODYtICovXFxubmV0L3J4cnBjL3BlZXJfb2JqZWN0LmM6NDg3OnN0cnVjdCByeHJwY19wZWVyICpyeHJwY19rZXJuZWxfZ2V0X2NhbGxfcGVlcihzdHJ1Y3Qgc29ja2V0ICpzb2NrLCBzdHJ1Y3QgcnhycGNfY2FsbCAqY2FsbClcXG5uZXQvcnhycGMvcGVlcl9vYmplY3QuYy00ODgte1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wOFQxNDo0NDowMi4yNDMzMDY2ODVaIiwiU2VxIjoxMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6NDA1OTY4ODA4MywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBbmFseXNpcyBvZiB0aGUgUlhSUEMgUGVlciBEZXN0cnVjdGlvbiBQYXRjaCoqXG5cbk9rYXksIHNvIEkndmUgYmVlbiBsb29raW5nIGF0IHRoaXMgcGF0Y2ggYW5kLCByaWdodCBvZmYgdGhlIGJhdCwgaXQncyBwcmV0dHkgY2xlYXIgdGhhdCBgcnhycGNfZGVzdHJveV9hbGxfcGVlcnNgIGlzIHRoZSBtYWluIGZ1bmN0aW9uIHRoYXQncyBiZWVuIG1vZGlmaWVkLiBBIHF1aWNrIGdsYW5jZSBhdCB0aGUgY29kZSByZXZlYWxzIHRoYXQgYHJ4cnBjX2V4aXRfbmV0YCBhbHNvIGNhbGxzIGl0LCBzbyB0aGF0J3MgZGVmaW5pdGVseSBhIHJlbGF0ZWQgYXJlYS4gR29vZCB0byBrbm93LiBMZXQncyBtYWtlIHN1cmUgdGhhdCBgcnhycGNfZGVzdHJveV9hbGxfcGVlcnNgIGlzIHRoZSByaWdodCBmb2N1cyBzeW1ib2wgdG8gdXNlLi4uIHllcCwgaXQgbG9va3MgbGlrZSBpdCBpcy4gSXTigJlzICp0aGUqIGZ1bmN0aW9uIHRoZXkndmUgY2hhbmdlZCwgd2hpY2ggaXMgd2hhdCBJIHN1c3BlY3RlZC4gQW5kIHNpbmNlIGByeHJwY19leGl0X25ldGAgY2FsbHMgaXQsIGl0IG1ha2VzIHNlbnNlIHRvIGluY2x1ZGUgaXQuXG5cbk5vdywgY29uZmlnLXdpc2UsIGl0IGxvb2tzIGxpa2Ugd2UncmUgZGVhbGluZyB3aXRoIGBBRl9SWFJQQ2Agc3BlY2lmaWNhbGx5LCB3aGljaCwgb2YgY291cnNlLCByZWxpZXMgb24gYElORVRgLiBUaGF0IG1ha2VzIHNlbnNlLlxuXG5BbHJpZ2h0LCB0aW1lIHRvIHRoaW5rIGFib3V0IGBzZXQtcmVzdWx0c2AuIFdlIG5lZWQgdG8gZGVmaW5lIGFsbCB0aGUgcGFyYW1ldGVycyB0byBwYXNzIHRvIGl0OlxuXG4qICAgKipXb3J0aEZ1enppbmcqKjogRGVmaW5pdGVseSB0cnVlLiBUaGlzIHBhdGNoIGludHJvZHVjZXMgYSBzcGlubG9jayAoYHJ4bmV0LVx1MDAzZXBlZXJfaGFzaF9sb2NrYCkgaW4gYHJ4cnBjX2Rlc3Ryb3lfYWxsX3BlZXJzYCBmb3Igc3luY2hyb25pemF0aW9uLiBUaGlzIGlzIGNyaXRpY2FsIGZvciBwcmV2ZW50aW5nIHVzZS1hZnRlci1mcmVlIGlzc3VlcyB0aGF0IGNhbiBvY2N1ciBkdXJpbmcgbmV0d29yayBuYW1lc3BhY2UgdGVhcmRvd24gaW4gYEFGX1JYUlBDYC4gQW55IGNoYW5nZSB0aGF0IGFsdGVycyByZWFjaGFibGUgbG9ja2luZyBhbmQgc3luY2hyb25pemF0aW9uIGluIGEgY29yZSBuZXR3b3JraW5nIHByb3RvY29sIGlzIHdvcnRoIGEgY2xvc2UgbG9vay5cbiogICAqKlJlYXNvbmluZyoqOiBJJ2xsIHdvcmQgaXQgc29tZXRoaW5nIGxpa2U6IFwiVGhlIHBhdGNoIGFkZHMgc3BpbmxvY2sgc3luY2hyb25pemF0aW9uIChgcnhuZXQtXHUwMDNlcGVlcl9oYXNoX2xvY2tgKSBpbiBgcnhycGNfZGVzdHJveV9hbGxfcGVlcnNgIHRvIHByZXZlbnQgdXNlLWFmdGVyLWZyZWUgcmFjZXMgZHVyaW5nIG5ldHdvcmsgbmFtZXNwYWNlIHRlYXJkb3duIGluIEFGX1JYUlBDLiBUaGlzIG1vZGlmaWVzIHJlYWNoYWJsZSBsb2NraW5nL3N5bmNocm9uaXphdGlvbiBsb2dpYyBpbiBhIGNvcmUgbmV0d29ya2luZyBwcm90b2NvbC5cIlxuKiAgICoqRm9jdXNTeW1ib2xzKio6IEFzIHdlIGFscmVhZHkgZXN0YWJsaXNoZWQsIHRoaXMgd2lsbCBiZSBgW1wicnhycGNfZGVzdHJveV9hbGxfcGVlcnNcIiwgXCJyeHJwY19leGl0X25ldFwiXWAuXG4qICAgKipFbmFibGVDb25maWdzKio6IGBbXCJBRl9SWFJQQ1wiLCBcIklORVRcIl1gIOKAkyB0aGF0J3MgYSBuby1icmFpbmVyLlxuXG5Pa2F5LCBJIHRoaW5rIHRoYXQgY292ZXJzIGV2ZXJ5dGhpbmcuIExldCBtZSBqdXN0IGRvIGEgcXVpY2sgc2FuaXR5IGNoZWNrIHRvIG1ha2Ugc3VyZSBJJ20gbm90IG1pc3NpbmcgYW55dGhpbmfigKYgYW5kIHRoZW4gaXQncyB0aW1lIHRvIGNhbGwgYHNldC1yZXN1bHRzYC5cblxuXG4iLCJJbnB1dFRva2VucyI6ODM1OSwiT3V0cHV0VG9rZW5zIjoxMTcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyNjgsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMDhUMTQ6NDQ6MDYuMzAyOTk4MjM3WiIsIlNlcSI6MTQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6Nzg1MTM5MDcsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIkFGX1JYUlBDXCIsXG4gICAgXCJJTkVUXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwicnhycGNfZGVzdHJveV9hbGxfcGVlcnNcIixcbiAgICBcInJ4cnBjX2V4aXRfbmV0XCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggYWRkcyBzcGlubG9jayBzeW5jaHJvbml6YXRpb24gKHBlZXJfaGFzaF9sb2NrKSBhcm91bmQgcGVlciBoYXNoIHRhYmxlIGl0ZXJhdGlvbiBpbiByeHJwY19kZXN0cm95X2FsbF9wZWVycyB0byBwcmV2ZW50IGNvbmN1cnJlbnQgdXNlLWFmdGVyLWZyZWUgcmFjZXMgZHVyaW5nIG5ldHdvcmsgbmFtZXNwYWNlIGNsZWFudXAuIFRoaXMgYWx0ZXJzIGxvY2tpbmcgYW5kIHN5bmNocm9uaXphdGlvbiBpbiByZWFjaGFibGUgQUZfUlhSUEMgbmV0d29ya2luZyBjb2RlLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIkFGX1JYUlBDXCIsXG4gICAgXCJJTkVUXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwicnhycGNfZGVzdHJveV9hbGxfcGVlcnNcIixcbiAgICBcInJ4cnBjX2V4aXRfbmV0XCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggYWRkcyBzcGlubG9jayBzeW5jaHJvbml6YXRpb24gKHBlZXJfaGFzaF9sb2NrKSBhcm91bmQgcGVlciBoYXNoIHRhYmxlIGl0ZXJhdGlvbiBpbiByeHJwY19kZXN0cm95X2FsbF9wZWVycyB0byBwcmV2ZW50IGNvbmN1cnJlbnQgdXNlLWFmdGVyLWZyZWUgcmFjZXMgZHVyaW5nIG5ldHdvcmsgbmFtZXNwYWNlIGNsZWFudXAuIFRoaXMgYWx0ZXJzIGxvY2tpbmcgYW5kIHN5bmNocm9uaXphdGlvbiBpbiByZWFjaGFibGUgQUZfUlhSUEMgbmV0d29ya2luZyBjb2RlLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wOFQxNDo0NDowNi4zODE1MTg4OTVaIiwiU2VxIjoxNSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJJZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEyMzgxNjIxMTE1LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDhUMTQ6NDQ6MDYuMzgyMDEzMTE1WiIsIlNlcSI6MTYsIk5lc3RpbmciOjIsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJrbXNhbi1ldmFsdWF0b3IiLCJNb2RlbCI6ImNvcmUiLCJEdXJhdGlvbiI6MTIzODExMjI1NDUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGFkZHMgc3Bpbl9sb2NrX2JoIGFuZCBzcGluX3VubG9ja19iaCBhcm91bmQgdGhlIHBlZXIgaGFzaCB0YWJsZSBpdGVyYXRpb24gaW4gcnhycGNfZGVzdHJveV9hbGxfcGVlcnMoKSB0byBwcmV2ZW50IHJhY2UgY29uZGl0aW9ucyBhbmQgcG90ZW50aWFsIHVzZS1hZnRlci1mcmVlIGR1cmluZyBjbGVhbnVwLiBJdCBkb2VzIG5vdCBpbnRyb2R1Y2UgYW55IG1lbW9yeSBhbGxvY2F0aW9ucywgdW5pbml0aWFsaXplZCB2YXJpYWJsZXMsIHVzZXItc3BhY2UgY29waWVzIChpbmZvLWxlYWtzKSwgb3IgYWx0ZXIgZGF0YSBpbml0aWFsaXphdGlvbiBsb2dpYy4gQW55IGNvbmN1cnJlbmN5LCBsb2NraW5nLCBvciB1c2UtYWZ0ZXItZnJlZSBpc3N1ZXMgYXJlIGRldGVjdGVkIGJ5IExPQ0tERVAgYW5kIEtBU0FOLiBUaGVyZWZvcmUsIGEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpcyBub3QgbmVlZGVkLlwiLFxuICBcIk5lZWRzS01TQU5cIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBzZWN1cml0eSBlbmdpbmVlciBzcGVjaWFsaXppbmcgaW4ga2VybmVsIG1lbW9yeVxuZXJyb3IgZGV0ZWN0b3JzIChLQVNBTiBhbmQgS01TQU4pLiBZb3VyIGpvYiBpcyB0byByZXZpZXcgdGhlIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmRcbmRldGVybWluZSBpZiB0aGUgY29kZSBjaGFuZ2VzIGp1c3RpZnkgc3Bhd25pbmcgYSBkZWRpY2F0ZWQgS01TQU4gKEtlcm5lbE1lbW9yeVNhbml0aXplcilcbmZ1enppbmcgc2Vzc2lvbiBpbiBhZGRpdGlvbiB0byBzdGFuZGFyZCBLQVNBTiBmdXp6aW5nLlxuXG5DUklUSUNBTCBESVNUSU5DVElPTiBCRVRXRUVOIEtBU0FOIEFORCBLTVNBTjpcbi0gU3RhbmRhcmQgS0FTQU4ga2VybmVsIGJ1aWxkcyAodXBzdHJlYW0tYXBwYXJtb3Ita2FzYW4uY29uZmlnKSBhbHJlYWR5IGVuYWJsZVxuICBhIGNvbXByZWhlbnNpdmUgc3VpdGUgb2YgZGVidWdnaW5nIHRvb2xzIGFuZCBzYW5pdGl6ZXJzLCBpbmNsdWRpbmcgS0FTQU5cbiAgKG91dC1vZi1ib3VuZHMgYWNjZXNzZXMsIHVzZS1hZnRlci1mcmVlLCBkb3VibGUgZnJlZSwgaW52YWxpZCBmcmVlKSwgTE9DS0RFUFxuICAobG9ja2luZyBidWdzIGFuZCBkZWFkbG9ja3MpLCBVQi1zYW5pdGl6ZXJzLCBhbmQgbWVtb3J5IGNvcnJ1cHRpb24gY2hlY2tzLlxuLSBLTVNBTiAoS2VybmVsTWVtb3J5U2FuaXRpemVyKSBkZXRlY3RzIHJlYWRzIG9mIFVOSU5JVElBTElaRUQgbWVtb3J5IChzdGFjaywgaGVhcCxcbiAgb3IgcGFnZSBhbGxvY2F0aW9ucykgYW5kIGtlcm5lbC10by11c2VyIG1lbW9yeSBpbmZvLWxlYWtzLlxuXG5SdWxlOiBUSEVSRSBJUyBOTyBTRU5TRSBJTiBSVU5OSU5HIEEgS01TQU4gU0VTU0lPTiBJRiBBIEJVRyBDQU4gQkUgQ0FVR0hUIEJZIEtBU0FOLFxuTE9DS0RFUCwgT1IgT1RIRVIgU1RBTkRBUkQgQlVHIERFVEVDVE9SUy5cbkEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpbmN1cnMgc2lnbmlmaWNhbnQgcmVzb3VyY2UgY29zdHMuIFlvdSBtdXN0IE9OTFlcbnNldCBOZWVkc0tNU0FOPXRydWUgaWYgdGhlIGNvZGUgY2hhbmdlcyBpbnRyb2R1Y2Ugb3IgZXhwb3NlIFVOSU5JVElBTElaRUQgTUVNT1JZIHJpc2tzXG50aGF0IGFyZSBkZXRlY3RlZCBPTkxZIGJ5IEtNU0FOLlxuXG5Mb29rIGhvbGlzdGljYWxseSBhdCB0aGUgcGF0Y2ggc2VyaWVzIGFuZCBzdXJyb3VuZGluZyBjb2RlLiBFdmVuIGlmIG5vIGRpcmVjdFxudW5pbml0aWFsaXplZCBmaWVsZCBhY2Nlc3NlcyBvciBuZXcgYnVmZmVyIGFsbG9jYXRpb25zIGFyZSBhZGRlZCBpbiB0aGUgZGlmZiBpdHNlbGYsXG5hIHBhdGNoIG1heSBhbHRlciBjb250cm9sIGZsb3csIGJvdW5kcyBjaGVja2luZywgb3IgZGF0YSBsZW5ndGggY2FsY3VsYXRpb25zIGluIHdheXNcbnRoYXQgY2hhbmdlIGhvdyB0aGUgcmVzdCBvZiB0aGUgY29kZSBvcGVyYXRlcyBvbiBleGlzdGluZyBidWZmZXJzIChlLmcuIGFsbG93aW5nXG51bmluaXRpYWxpemVkIHN0YWNrL2hlYXAgbWVtb3J5IHRvIGJlIHJlYWQsIGNvcGllZCB0byB1c2VyIHNwYWNlLCBvciB1c2VkIGluIGNvbnRyb2xcbmZsb3cpLiBEbyBub3QgaGVzaXRhdGUgdG8gdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gaW5zcGVjdCB0aGUgc3Vycm91bmRpbmcgY29kZSxcbmNhbGxlZCBmdW5jdGlvbnMsIGFuZCBjYWxsZXJzLlxuXG5TZXQgTmVlZHNLTVNBTj10cnVlIE9OTFkgSUYgdGhlIHBhdGNoIGludHJvZHVjZXMgb3IgbW9kaWZpZXM6XG4xLiBLZXJuZWwgc3RydWN0dXJlcyBzZW50IHRvIHVzZXIgc3BhY2UgKHZpYSBjb3B5X3RvX3VzZXIsIHB1dF91c2VyLCBuZXRsaW5rIHNrYlxuICAgYXR0cmlidXRlcywgaW9jdGwgb3V0cHV0IGFyZ3VtZW50cywgc29ja2V0IG9wdGlvbnMsIG9yIEJQRiBidWZmZXJzKSB3aGVyZSBmaWVsZHNcbiAgIG9yIHN0cnVjdHVyZSBwYWRkaW5nIG1pZ2h0IG5vdCBiZSBmdWxseSBpbml0aWFsaXplZC96ZXJvZWQuXG4yLiBDb25kaXRpb25hbCBsb2dpYyBvciBicmFuY2hpbmcgdGhhdCBkZXBlbmRzIG9uIHBvdGVudGlhbGx5IHVuaW5pdGlhbGl6ZWQgdmFyaWFibGVzXG4gICBvciBzdHJ1Y3QgZmllbGRzLlxuMy4gQWxsb2NhdGlvbiBvciBpbml0aWFsaXphdGlvbiBvZiBjb21wbGV4IGRhdGEgc3RydWN0dXJlcyB3aGVyZSB1bmluaXRpYWxpemVkIGZpZWxkc1xuICAgY291bGQgYmUgcmVhZCBsYXRlciBpbiByZWFjaGFibGUgY29kZSBwYXRocy5cbjQuIEJvdW5kcyBjaGVja3MsIGxlbmd0aHMsIG9yIGxvZ2ljIGluIGEgd2F5IHRoYXQgYWxsb3dzIHN1cnJvdW5kaW5nIGNvZGUgdG8gYWNjZXNzXG4gICB1bmluaXRpYWxpemVkIGJ5dGVzIG9mIGV4aXN0aW5nIGJ1ZmZlcnMuXG5cblNldCBOZWVkc0tNU0FOPWZhbHNlIElGOlxuLSBUaGUgY29kZSBjaGFuZ2VzIHByaW1hcmlseSByaXNrIG91dC1vZi1ib3VuZHMgYWNjZXNzLCBhcnJheSBvdmVyZmxvd3MsIE5VTEwgcG9pbnRlclxuICBkZXJlZmVyZW5jZXMsIGxvY2tpbmcgZGVhZGxvY2tzLCBvciB1c2UtYWZ0ZXItZnJlZSBidWdzICh0aGVzZSBhcmUgYWxyZWFkeSBjYXVnaHRcbiAgYnkgS0FTQU4sIExPQ0tERVAsIG9yIHN0YW5kYXJkIGJ1ZyBkZXRlY3RvcnMpLlxuLSBBbGwgc3RhY2svaGVhcCBzdHJ1Y3R1cmVzIHRvdWNoZWQgb3IgaW50cm9kdWNlZCBieSB0aGUgcGF0Y2ggYXJlIGZ1bGx5IHplcm9lZFxuICBvciBpbml0aWFsaXplZCAoZS5nLiB1c2luZyA9IHswfSwgbWVtc2V0LCBremFsbG9jKSBiZWZvcmUgYmVpbmcgcmVhZCBvciBjb3BpZWQuXG4tIFRoZSBwYXRjaCBkb2VzIG5vdCBpbnRyb2R1Y2UgYW55IHJpc2sgb2YgdW5pbml0aWFsaXplZCBtZW1vcnkgdXNhZ2Ugb3IgaW5mby1sZWFrcy5cblxuVXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gaW5zcGVjdCB0aGUgc3Vycm91bmRpbmcgY29kZSBpZiBuZWNlc3NhcnksIHRoZW4gcHJvdmlkZVxuZGV0YWlsZWQgS01TQU5SZWFzb25pbmcgY29udHJhc3RpbmcgS0FTQU4gdnMgS01TQU4gYXBwbGljYWJpbGl0eSBmb3IgdGhpcyBwYXRjaC5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IlRhcmdldCBhcmNoaXRlY3R1cmU6IGFtZDY0XG5cbkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IDViYmQ2N2ZmNjM1OGNhYzRlY2JhODMyOGM3MDIyZWIzMTgxZDZlNTBcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgVHVlIFNlcCA4IDE0OjQzOjM1IDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvbmV0L3J4cnBjL3BlZXJfb2JqZWN0LmMgYi9uZXQvcnhycGMvcGVlcl9vYmplY3QuY1xuaW5kZXggZmE5YTQwNmUxMTY4My4uZmFhMjk4MzYzOGIyYiAxMDA2NDRcbi0tLSBhL25ldC9yeHJwYy9wZWVyX29iamVjdC5jXG4rKysgYi9uZXQvcnhycGMvcGVlcl9vYmplY3QuY1xuQEAgLTQ1NCw2ICs0NTQsMTIgQEAgdm9pZCByeHJwY19kZXN0cm95X2FsbF9wZWVycyhzdHJ1Y3QgcnhycGNfbmV0ICpyeG5ldClcbiBcdHN0cnVjdCByeHJwY19wZWVyICpwZWVyO1xuIFx0aW50IGk7XG4gXG4rXHQvKlxuK1x0ICogUHJldmVudCB1c2UtYWZ0ZXItZnJlZSBpZiBhIHBlZXIgaXMgY29uY3VycmVudGx5IHVubGlua2VkIGZyb20gdGhlXG4rXHQgKiBoYXNoIHRhYmxlIGFuZCBmcmVlZCB2aWEgUkNVIGR1cmluZyBpdGVyYXRpb24uXG4rXHQgKi9cbitcdHNwaW5fbG9ja19iaChcdTAwMjZyeG5ldC1cdTAwM2VwZWVyX2hhc2hfbG9jayk7XG4rXG4gXHRmb3IgKGkgPSAwOyBpIFx1MDAzYyBIQVNIX1NJWkUocnhuZXQtXHUwMDNlcGVlcl9oYXNoKTsgaSsrKSB7XG4gXHRcdGlmIChobGlzdF9lbXB0eShcdTAwMjZyeG5ldC1cdTAwM2VwZWVyX2hhc2hbaV0pKVxuIFx0XHRcdGNvbnRpbnVlO1xuQEAgLTQ2NSw2ICs0NzEsOCBAQCB2b2lkIHJ4cnBjX2Rlc3Ryb3lfYWxsX3BlZXJzKHN0cnVjdCByeHJwY19uZXQgKnJ4bmV0KVxuIFx0XHRcdCAgICAgICBcdTAwMjZwZWVyLVx1MDAzZXNyeC50cmFuc3BvcnQpO1xuIFx0XHR9XG4gXHR9XG4rXG4rXHRzcGluX3VubG9ja19iaChcdTAwMjZyeG5ldC1cdTAwM2VwZWVyX2hhc2hfbG9jayk7XG4gfVxuIFxuIC8qKlxuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDhUMTQ6NDQ6MDYuMzgyMDE0NDA1WiIsIlNlcSI6MTcsIk5lc3RpbmciOjMsIlR5cGUiOiJsbG0iLCJOYW1lIjoia21zYW4tZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjkxNzM2NTk1MzQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSB0YWtlIG9uIHRoZSBzaXR1YXRpb246XG5cbioqSW52ZXN0aWdhdGluZyB0aGUgUGVlciBEZXN0cnVjdGlvbiBpbiByeHJwYyoqXG5cbkFscmlnaHQsIHRoZSBidWcgcmVwb3J0IHBvaW50cyB0byBgbmV0L3J4cnBjL3BlZXJfb2JqZWN0LmNgIGFuZCBzcGVjaWZpY2FsbHkgYHJ4cnBjX2Rlc3Ryb3lfYWxsX3BlZXJzYC4gVGhhdCdzIGEgZ29vZCBzdGFydGluZyBwb2ludC4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2hhdCdzIGhhcHBlbmluZyBpbiB0aGF0IGZ1bmN0aW9uIGFuZCBpdHMgc3Vycm91bmRpbmcgY29kZSB0byB0cmFjayBkb3duIHRoZSByb290IGNhdXNlLiBUaGlzIGxpa2VseSBpbnZvbHZlcyBob3cgcGVlciBvYmplY3RzIGFyZSBjcmVhdGVkLCBtYW5hZ2VkLCBhbmQgZmluYWxseSBjbGVhbmVkIHVwIHdpdGhpbiB0aGUgcnhycGMgbW9kdWxlLiBJJ2xsIG5lZWQgdG8gbG9vayBhdCBhbnkgcG90ZW50aWFsIHJhY2UgY29uZGl0aW9ucyBvciByZXNvdXJjZSBsZWFrcyB3aXRoaW4gdGhpcyBjb250ZXh0LlxuXG5UaW1lIHRvIHB1bGwgdXAgdGhhdCBmaWxlIGFuZCBnZXQgdG8gcmVhZGluZy4uLiBJJ2xsIHVzZSBgcmVhZC1maWxlYCB0byBncmFiIGBuZXQvcnhycGMvcGVlcl9vYmplY3QuY2AgYW5kIHN0YXJ0IGRpZ2dpbmcgaW4uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIyMDUsIk91dHB1dFRva2VucyI6MzgsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo3NCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA4VDE0OjQ0OjE1LjU1NTY3NzQzOVoiLCJTZXEiOjE4LCJOZXN0aW5nIjozLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo4MDkxMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJuZXQvcnhycGMvcGVlcl9vYmplY3QuY1wiLFxuICBcIkZpcnN0TGluZVwiOiA0NDUsXG4gIFwiTGluZUNvdW50XCI6IDQ1XG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiA0NDU6XFx0XFx0XFx0XFx0X19yeHJwY19wdXRfcGVlcihwZWVyKTtcXG4gNDQ2OlxcdFxcdH1cXG4gNDQ3OlxcdH1cXG4gNDQ4OlxcdFxcbiA0NDk6XFx0LypcXG4gNDUwOlxcdCAqIE1ha2Ugc3VyZSBhbGwgcGVlciByZWNvcmRzIGhhdmUgYmVlbiBkaXNjYXJkZWQuXFxuIDQ1MTpcXHQgKi9cXG4gNDUyOlxcdHZvaWQgcnhycGNfZGVzdHJveV9hbGxfcGVlcnMoc3RydWN0IHJ4cnBjX25ldCAqcnhuZXQpXFxuIDQ1MzpcXHR7XFxuIDQ1NDpcXHRcXHRzdHJ1Y3QgcnhycGNfcGVlciAqcGVlcjtcXG4gNDU1OlxcdFxcdGludCBpO1xcbiA0NTY6XFx0XFxuIDQ1NzpcXHRcXHQvKlxcbiA0NTg6XFx0XFx0ICogUHJldmVudCB1c2UtYWZ0ZXItZnJlZSBpZiBhIHBlZXIgaXMgY29uY3VycmVudGx5IHVubGlua2VkIGZyb20gdGhlXFxuIDQ1OTpcXHRcXHQgKiBoYXNoIHRhYmxlIGFuZCBmcmVlZCB2aWEgUkNVIGR1cmluZyBpdGVyYXRpb24uXFxuIDQ2MDpcXHRcXHQgKi9cXG4gNDYxOlxcdFxcdHNwaW5fbG9ja19iaChcXHUwMDI2cnhuZXQtXFx1MDAzZXBlZXJfaGFzaF9sb2NrKTtcXG4gNDYyOlxcdFxcbiA0NjM6XFx0XFx0Zm9yIChpID0gMDsgaSBcXHUwMDNjIEhBU0hfU0laRShyeG5ldC1cXHUwMDNlcGVlcl9oYXNoKTsgaSsrKSB7XFxuIDQ2NDpcXHRcXHRcXHRpZiAoaGxpc3RfZW1wdHkoXFx1MDAyNnJ4bmV0LVxcdTAwM2VwZWVyX2hhc2hbaV0pKVxcbiA0NjU6XFx0XFx0XFx0XFx0Y29udGludWU7XFxuIDQ2NjpcXHRcXG4gNDY3OlxcdFxcdFxcdGhsaXN0X2Zvcl9lYWNoX2VudHJ5KHBlZXIsIFxcdTAwMjZyeG5ldC1cXHUwMDNlcGVlcl9oYXNoW2ldLCBoYXNoX2xpbmspIHtcXG4gNDY4OlxcdFxcdFxcdFxcdHByX2VycihcXFwiTGVha2VkIHBlZXIgJXggeyV1fSAlcElTcFxcXFxuXFxcIixcXG4gNDY5OlxcdFxcdFxcdFxcdCAgICAgICBwZWVyLVxcdTAwM2VkZWJ1Z19pZCxcXG4gNDcwOlxcdFxcdFxcdFxcdCAgICAgICByZWZjb3VudF9yZWFkKFxcdTAwMjZwZWVyLVxcdTAwM2VyZWYpLFxcbiA0NzE6XFx0XFx0XFx0XFx0ICAgICAgIFxcdTAwMjZwZWVyLVxcdTAwM2VzcngudHJhbnNwb3J0KTtcXG4gNDcyOlxcdFxcdFxcdH1cXG4gNDczOlxcdFxcdH1cXG4gNDc0OlxcdFxcbiA0NzU6XFx0XFx0c3Bpbl91bmxvY2tfYmgoXFx1MDAyNnJ4bmV0LVxcdTAwM2VwZWVyX2hhc2hfbG9jayk7XFxuIDQ3NjpcXHR9XFxuIDQ3NzpcXHRcXG4gNDc4OlxcdC8qKlxcbiA0Nzk6XFx0ICogcnhycGNfa2VybmVsX2dldF9jYWxsX3BlZXIgLSBHZXQgdGhlIHBlZXIgYWRkcmVzcyBvZiBhIGNhbGxcXG4gNDgwOlxcdCAqIEBzb2NrOiBUaGUgc29ja2V0IG9uIHdoaWNoIHRoZSBjYWxsIGlzIGluIHByb2dyZXNzLlxcbiA0ODE6XFx0ICogQGNhbGw6IFRoZSBjYWxsIHRvIHF1ZXJ5XFxuIDQ4MjpcXHQgKlxcbiA0ODM6XFx0ICogR2V0IGEgcmVjb3JkIGZvciB0aGUgcmVtb3RlIHBlZXIgaW4gYSBjYWxsLlxcbiA0ODQ6XFx0ICpcXG4gNDg1OlxcdCAqIFJldHVybjogVGhlIGNhbGwncyBwZWVyIHJlY29yZC5cXG4gNDg2OlxcdCAqL1xcbiA0ODc6XFx0c3RydWN0IHJ4cnBjX3BlZXIgKnJ4cnBjX2tlcm5lbF9nZXRfY2FsbF9wZWVyKHN0cnVjdCBzb2NrZXQgKnNvY2ssIHN0cnVjdCByeHJwY19jYWxsICpjYWxsKVxcbiA0ODg6XFx0e1xcbiA0ODk6XFx0XFx0cmV0dXJuIHJ4cnBjX2dldF9wZWVyKGNhbGwtXFx1MDAzZXBlZXIsIHJ4cnBjX3BlZXJfZ2V0X2FwcGxpY2F0aW9uKTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDhUMTQ6NDQ6MTUuNTU1NzU5OTg5WiIsIlNlcSI6MTksIk5lc3RpbmciOjMsIlR5cGUiOiJsbG0iLCJOYW1lIjoia21zYW4tZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjMyMDczNDAzOTEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQXNzZXNzbWVudCBvZiB0aGUgUGF0Y2gqKlxuXG5Pa2F5LCBzbyB0aGlzIHBhdGNoIGlzIHN0cmFpZ2h0Zm9yd2FyZC4gQWxsIGl0J3MgZG9pbmcgaXMgd3JhcHBpbmcgdGhlIGxvb3AgaW4gYHJ4cnBjX2Rlc3Ryb3lfYWxsX3BlZXJzYCB3aXRoIGEgYHNwaW5fbG9ja19iaGAgYW5kIGBzcGluX3VubG9ja19iaGAgcGFpci4gQ2xlYXJseSwgdGhpcyBpcyBwdXJlbHkgYWJvdXQgbG9ja2luZyDigJMgY29uY3VycmVuY3kgbWFuYWdlbWVudCB0byBiZSBleGFjdC4gSXQncyBkZXNpZ25lZCB0byBwcm90ZWN0IGFnYWluc3QgcG90ZW50aWFsIHVzZS1hZnRlci1mcmVlIHNjZW5hcmlvcyBvciByYWNlIGNvbmRpdGlvbnMgdGhhdCBjb3VsZCBvY2N1ciB3aGVuIGl0ZXJhdGluZyB0aHJvdWdoIHRoZSBgcGVlcl9oYXNoYC5cblxuTGV0J3MgYnJlYWsgdGhpcyBkb3duIHN5c3RlbWF0aWNhbGx5LiBGaXJzdCwgZG9lcyB0aGlzIHBhdGNoIHRvdWNoIGFueSBrZXJuZWwgc3RydWN0dXJlcyB0aGF0IGFyZSBzZW50IHRvIHVzZXIgc3BhY2U/IE5vcGUsIG5vdCBhdCBhbGwuIFNlY29uZCwgYXJlIHRoZXJlIGFueSBpbnRyb2R1Y2VkIGNvbmRpdGlvbmFscyBiYXNlZCBvbiBwb3RlbnRpYWxseSB1bmluaXRpYWxpemVkIHZhcmlhYmxlcz8gU3RpbGwgbm8uIFRoaXJkLCBkb2VzIGl0IGludm9sdmUgYWxsb2NhdGluZyBvciBpbml0aWFsaXppbmcgYW55IGNvbXBsZXggZGF0YSBzdHJ1Y3R1cmVzPyBBZ2Fpbiwgbm8uIFRoZW4gd2UgbG9vayBhdCBib3VuZHMgY2hlY2tzIGFuZCBsZW5ndGhzLiBOb3RoaW5nIGhlcmUuIEFuZCBmaW5hbGx5LCBkb2VzIHRoaXMgcGF0Y2ggZXhwb3NlIGFueSB1bmluaXRpYWxpemVkIG1lbW9yeT8gTm8sIEkgZG9uJ3Qgc2VlIGFueSBvZiB0aG9zZSByaXNrcyBlaXRoZXIuXG5cbkNvbnNpZGVyaW5nIGFsbCB0aGF0LCBJJ20gY29uZmlkZW50IGluIHNheWluZyB0aGF0IGBOZWVkc0tNU0FOID0gZmFsc2VgLiBJdCBzZWVtcyB0aGUgcHJpbWFyeSBjb25jZXJucyBhcmUgcmVsYXRlZCB0byBjb25jdXJyZW5jeSwgd2hpY2ggYXJlIGlkZWFsbHkgYWRkcmVzc2VkIGJ5IHRvb2xzIGxpa2UgS0FTQU4gYW5kIExPQ0tERVAuIFRoZXknbGwgcmVhZGlseSBjYXRjaCBhbnkgaXNzdWVzIHRoaXMgbWlnaHQgaW50cm9kdWNlIGluIHRoZW9yeS5cblxuTm93LCBsZXQncyBqdXN0IGRvIGEgcXVpY2sgZG91YmxlLWNoZWNrIHRvIG1ha2Ugc3VyZSBteSByZWFzb25pbmcgaXMgY2xlYXIsIGFjY3VyYXRlLCBhbmQgY29uY2lzZS4gV2UgYWx3YXlzIG5lZWQgdG8gY29udHJhc3QgS0FTQU4gYW5kIEtNU0FOLlxuXG5cbiIsIklucHV0VG9rZW5zIjozMTU2LCJPdXRwdXRUb2tlbnMiOjEzMywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIzMSwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA4VDE0OjQ0OjE4Ljc2MzEwMzA1WiIsIlNlcSI6MjAsIk5lc3RpbmciOjMsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MzA1NzAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJLTVNBTlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBhZGRzIHNwaW5fbG9ja19iaCBhbmQgc3Bpbl91bmxvY2tfYmggYXJvdW5kIHRoZSBwZWVyIGhhc2ggdGFibGUgaXRlcmF0aW9uIGluIHJ4cnBjX2Rlc3Ryb3lfYWxsX3BlZXJzKCkgdG8gcHJldmVudCByYWNlIGNvbmRpdGlvbnMgYW5kIHBvdGVudGlhbCB1c2UtYWZ0ZXItZnJlZSBkdXJpbmcgY2xlYW51cC4gSXQgZG9lcyBub3QgaW50cm9kdWNlIGFueSBtZW1vcnkgYWxsb2NhdGlvbnMsIHVuaW5pdGlhbGl6ZWQgdmFyaWFibGVzLCB1c2VyLXNwYWNlIGNvcGllcyAoaW5mby1sZWFrcyksIG9yIGFsdGVyIGRhdGEgaW5pdGlhbGl6YXRpb24gbG9naWMuIEFueSBjb25jdXJyZW5jeSwgbG9ja2luZywgb3IgdXNlLWFmdGVyLWZyZWUgaXNzdWVzIGFyZSBkZXRlY3RlZCBieSBMT0NLREVQIGFuZCBLQVNBTi4gVGhlcmVmb3JlLCBhIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaXMgbm90IG5lZWRlZC5cIixcbiAgXCJOZWVkc0tNU0FOXCI6IGZhbHNlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJLTVNBTlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBhZGRzIHNwaW5fbG9ja19iaCBhbmQgc3Bpbl91bmxvY2tfYmggYXJvdW5kIHRoZSBwZWVyIGhhc2ggdGFibGUgaXRlcmF0aW9uIGluIHJ4cnBjX2Rlc3Ryb3lfYWxsX3BlZXJzKCkgdG8gcHJldmVudCByYWNlIGNvbmRpdGlvbnMgYW5kIHBvdGVudGlhbCB1c2UtYWZ0ZXItZnJlZSBkdXJpbmcgY2xlYW51cC4gSXQgZG9lcyBub3QgaW50cm9kdWNlIGFueSBtZW1vcnkgYWxsb2NhdGlvbnMsIHVuaW5pdGlhbGl6ZWQgdmFyaWFibGVzLCB1c2VyLXNwYWNlIGNvcGllcyAoaW5mby1sZWFrcyksIG9yIGFsdGVyIGRhdGEgaW5pdGlhbGl6YXRpb24gbG9naWMuIEFueSBjb25jdXJyZW5jeSwgbG9ja2luZywgb3IgdXNlLWFmdGVyLWZyZWUgaXNzdWVzIGFyZSBkZXRlY3RlZCBieSBMT0NLREVQIGFuZCBLQVNBTi4gVGhlcmVmb3JlLCBhIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaXMgbm90IG5lZWRlZC5cIixcbiAgXCJOZWVkc0tNU0FOXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+IHsKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOyAKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iKSB7CgkJCQkJc3RhdHMubGxtLmNvdW50Kys7CgkJCQkJc3RhdHMubGxtLnRva2VucyArPSAocy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2Vucyk7CgkJCQkJc3RhdHMubGxtLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0gZWxzZSBpZiAocy5UeXBlID09PSAidG9vbCIpIHsKCQkJCQlzdGF0cy50b29sLmNvdW50Kys7CgkJCQkJc3RhdHMudG9vbC5kdXJhdGlvbiArPSBkdXI7CgkJCQl9CgkJCX0pOwoKCQkJY29uc3QgYXZnTGxtRHVyID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0uZHVyYXRpb24gLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdMbG1Ub2tlbiA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLnRva2VucyAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z1Rvb2xEdXIgPSBzdGF0cy50b29sLmNvdW50ID4gMCA/IChzdGF0cy50b29sLmR1cmF0aW9uIC8gc3RhdHMudG9vbC5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgoJCQljb25zdCBsbG1TdW1hcnlDZWxscyA9IFtzdGF0cy5sbG0uY291bnQsIHN0YXRzLmxsbS50b2tlbnMsIGF2Z0xsbVRva2VuLCBzdGF0cy5sbG0uZHVyYXRpb24sIGF2Z0xsbUR1cl07CgkJCWNvbnN0IHRvb2xTdW1tYXJ5Q2VsbHMgPSBbc3RhdHMudG9vbC5jb3VudCwgc3RhdHMudG9vbC5kdXJhdGlvbiwgYXZnVG9vbER1cl07CgoJCQljb25zdCBsbG1TdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdsbG1fc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCWxsbVN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCBsbG1UciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCWxsbVN1bWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQlsbG1Uci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQlsbG1TdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZChsbG1Ucik7CgoJCQljb25zdCB0b29sU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJdG9vbFN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCB0b29sVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQl0b29sU3VtbWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQl0b29sVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJdG9vbFN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKHRvb2xUcik7CgkJfQoKCQlmdW5jdGlvbiBkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGZpbHRlcmVkU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IFsibGxtIiwgInRvb2wiXS5pbmNsdWRlcyhkLlR5cGUpKTsKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnRHVyYXRpb24nKTsKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsgCgoJCQlmaWx0ZXJlZFN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQkKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOwoJCQkJbGV0IHRvb2x0aXAgPSBzLk5hbWU7CgkJCQlpZiAocy5UeXBlID09PSAibGxtIiAmJiBzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgkJCQlkYXRhLmFkZFJvdyhbYCR7cy5TZXF9YCwgZHVyLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVGltZSBDb25zdW1wdGlvbiBvZiBMTE0vVG9vbCBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNL1Rvb2wgU3RlcHMnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnU2Vjb25kcycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZHVyYXRpb25fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGxsbVN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBkLlR5cGUgPT09ICJsbG0iKTsKCQkJaWYgKGxsbVN0ZXBzLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnVG9rZW5zJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3N0eWxlJ30pOwkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsJCgoJCQljb25zdCBhZ2VudENvbG9ycyA9IHt9OwoJCQljb25zdCBwYWxldHRlID0gWycjNDI4NUY0JywgJyNEQjQ0MzcnLCAnI0Y0QjQwMCcsICcjMEY5RDU4JywgJyNBQjQ3QkMnLCAnIzAwQUNDMSddOwoJCQlsZXQgY29sb3JJZHggPSAwOwoJCQljb25zdCBhZ2VudExMTUNvdW50cyA9IHt9OwoJCQlsbG1TdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJaWYgKCFhZ2VudENvbG9yc1tzLk5hbWVdKSB7CgkJCQkJYWdlbnRDb2xvcnNbcy5OYW1lXSA9IHBhbGV0dGVbY29sb3JJZHggJSBwYWxldHRlLmxlbmd0aF07CgkJCQkJY29sb3JJZHgrKzsKCQkJCX0KCgkJCQlhZ2VudExMTUNvdW50c1tzLk5hbWVdID0gKGFnZW50TExNQ291bnRzW3MuTmFtZV0gfHwgMCkgKyAxOwoJCQkJY29uc3QgbGFiZWwgPSBgJHtzLk5hbWV9LSR7YWdlbnRMTE1Db3VudHNbcy5OYW1lXX1gOwoJCQkJY29uc3QgdG90YWxUb2tlbnMgPSBzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zOwoJCQkJY29uc3Qgc3R5bGUgPSBgY29sb3I6ICR7YWdlbnRDb2xvcnNbcy5OYW1lXX1gOwoJCQkJbGV0IHRvb2x0aXAgPSBgVG90YWwgVG9rZW5zOiAke3RvdGFsVG9rZW5zfVxuKEluOiAke3MuSW5wdXRUb2tlbnN9LCBPdXQ6ICR7cy5PdXRwdXRUb2tlbnN9LCBUaG91Z2h0czogJHtzLk91dHB1dFRob3VnaHRzVG9rZW5zfSlgOwoJCQkJaWYgKHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCgkJCQlkYXRhLmFkZFJvdyhbbGFiZWwsIHRvdGFsVG9rZW5zLCBzdHlsZSwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1Rva2VuIENvbnN1bXB0aW9uIGJ5IExMTSBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNIENhbGwgU2VxdWVuY2UnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnQ29uc3VtZWQgVG9rZW5zJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b2tlbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoJCWxldCBhbGxFeHBhbmRlZCA9IGZhbHNlOwoJCWZ1bmN0aW9uIHRvZ2dsZUFsbERldGFpbHMoKSB7CgkJCWFsbEV4cGFuZGVkID0gIWFsbEV4cGFuZGVkOwoJCQlkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdkZXRhaWxzJykuZm9yRWFjaChkID0+IHsKCQkJCWlmIChhbGxFeHBhbmRlZCkgZC5zZXRBdHRyaWJ1dGUoJ29wZW4nLCAnJyk7CgkJCQllbHNlIGQucmVtb3ZlQXR0cmlidXRlKCdvcGVuJyk7CgkJCX0pOwoJCX0KCTwvc2NyaXB0PgoKCjwvYm9keT4KPC9odG1sPgo=" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflow8cbcd[0].run-triage(0) Phase: Succeeded StartedAt: 2026-09-08 13:38:22 +0000 UTC FinishedAt: 2026-09-08 14:44:20 +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": "bc6fe9d301d59fe5cb236d646abe792bffae5fa6", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "AF_RXRPC", "INET" ], "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": "bc6fe9d301d59fe5cb236d646abe792bffae5fa6", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "AF_RXRPC", "INET" ], "series_id": "19ad0978-35e7-4888-b0f1-7fa63b1863ea" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "rxrpc_destroy_all_peers", "rxrpc_exit_net" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db" ], "skip_cover_check": false, "bug_title_re": "" }, "retest": { "findings": [ "4eb5795c-f73d-43ee-b3df-3291d8644727" ] } } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA4IDE0OjQzPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0FGX1JYUlBDJiMzNDssCiAgICAmIzM0O0lORVQmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtyeHJwY19kZXN0cm95X2FsbF9wZWVycyYjMzQ7LAogICAgJiMzNDtyeHJwY19leGl0X25ldCYjMzQ7CiAgXSwKICAmIzM0O0tNU0FOUmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGFkZHMgc3Bpbl9sb2NrX2JoIGFuZCBzcGluX3VubG9ja19iaCBhcm91bmQgdGhlIHBlZXIgaGFzaCB0YWJsZSBpdGVyYXRpb24gaW4gcnhycGNfZGVzdHJveV9hbGxfcGVlcnMoKSB0byBwcmV2ZW50IHJhY2UgY29uZGl0aW9ucyBhbmQgcG90ZW50aWFsIHVzZS1hZnRlci1mcmVlIGR1cmluZyBjbGVhbnVwLiBJdCBkb2VzIG5vdCBpbnRyb2R1Y2UgYW55IG1lbW9yeSBhbGxvY2F0aW9ucywgdW5pbml0aWFsaXplZCB2YXJpYWJsZXMsIHVzZXItc3BhY2UgY29waWVzIChpbmZvLWxlYWtzKSwgb3IgYWx0ZXIgZGF0YSBpbml0aWFsaXphdGlvbiBsb2dpYy4gQW55IGNvbmN1cnJlbmN5LCBsb2NraW5nLCBvciB1c2UtYWZ0ZXItZnJlZSBpc3N1ZXMgYXJlIGRldGVjdGVkIGJ5IExPQ0tERVAgYW5kIEtBU0FOLiBUaGVyZWZvcmUsIGEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpcyBub3QgbmVlZGVkLiYjMzQ7LAogICYjMzQ7TmVlZHNLTVNBTiYjMzQ7OiBmYWxzZSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBhZGRzIHNwaW5sb2NrIHN5bmNocm9uaXphdGlvbiAocGVlcl9oYXNoX2xvY2spIGFyb3VuZCBwZWVyIGhhc2ggdGFibGUgaXRlcmF0aW9uIGluIHJ4cnBjX2Rlc3Ryb3lfYWxsX3BlZXJzIHRvIHByZXZlbnQgY29uY3VycmVudCB1c2UtYWZ0ZXItZnJlZSByYWNlcyBkdXJpbmcgbmV0d29yayBuYW1lc3BhY2UgY2xlYW51cC4gVGhpcyBhbHRlcnMgbG9ja2luZyBhbmQgc3luY2hyb25pemF0aW9uIGluIHJlYWNoYWJsZSBBRl9SWFJQQyBuZXR3b3JraW5nIGNvZGUuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDggMTQ6NDM8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCA1YmJkNjdmZjYzNThjYWM0ZWNiYTgzMjhjNzAyMmViMzE4MWQ2ZTUwXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFR1ZSBTZXAgOCAxNDo0MzozNSAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9uZXQvcnhycGMvcGVlcl9vYmplY3QuYyBiL25ldC9yeHJwYy9wZWVyX29iamVjdC5jXG5pbmRleCBmYTlhNDA2ZTExNjgzLi5mYWEyOTgzNjM4YjJiIDEwMDY0NFxuLS0tIGEvbmV0L3J4cnBjL3BlZXJfb2JqZWN0LmNcbiYjNDM7JiM0MzsmIzQzOyBiL25ldC9yeHJwYy9wZWVyX29iamVjdC5jXG5AQCAtNDU0LDYgJiM0Mzs0NTQsMTIgQEAgdm9pZCByeHJwY19kZXN0cm95X2FsbF9wZWVycyhzdHJ1Y3QgcnhycGNfbmV0ICpyeG5ldClcbiBcdHN0cnVjdCByeHJwY19wZWVyICpwZWVyO1xuIFx0aW50IGk7XG4gXG4mIzQzO1x0LypcbiYjNDM7XHQgKiBQcmV2ZW50IHVzZS1hZnRlci1mcmVlIGlmIGEgcGVlciBpcyBjb25jdXJyZW50bHkgdW5saW5rZWQgZnJvbSB0aGVcbiYjNDM7XHQgKiBoYXNoIHRhYmxlIGFuZCBmcmVlZCB2aWEgUkNVIGR1cmluZyBpdGVyYXRpb24uXG4mIzQzO1x0ICovXG4mIzQzO1x0c3Bpbl9sb2NrX2JoKFx1MDAyNnJ4bmV0LVx1MDAzZXBlZXJfaGFzaF9sb2NrKTtcbiYjNDM7XG4gXHRmb3IgKGkgPSAwOyBpIFx1MDAzYyBIQVNIX1NJWkUocnhuZXQtXHUwMDNlcGVlcl9oYXNoKTsgaSYjNDM7JiM0MzspIHtcbiBcdFx0aWYgKGhsaXN0X2VtcHR5KFx1MDAyNnJ4bmV0LVx1MDAzZXBlZXJfaGFzaFtpXSkpXG4gXHRcdFx0Y29udGludWU7XG5AQCAtNDY1LDYgJiM0Mzs0NzEsOCBAQCB2b2lkIHJ4cnBjX2Rlc3Ryb3lfYWxsX3BlZXJzKHN0cnVjdCByeHJwY19uZXQgKnJ4bmV0KVxuIFx0XHRcdCAgICAgICBcdTAwMjZwZWVyLVx1MDAzZXNyeC50cmFuc3BvcnQpO1xuIFx0XHR9XG4gXHR9XG4mIzQzO1xuJiM0MztcdHNwaW5fdW5sb2NrX2JoKFx1MDAyNnJ4bmV0LVx1MDAzZXBlZXJfaGFzaF9sb2NrKTtcbiB9XG4gXG4gLyoqXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDggMTQ6NDM8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Y29yZTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7QUZfUlhSUEMmIzM0OywKICAgICYjMzQ7SU5FVCYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O3J4cnBjX2Rlc3Ryb3lfYWxsX3BlZXJzJiMzNDssCiAgICAmIzM0O3J4cnBjX2V4aXRfbmV0JiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGFkZHMgc3BpbmxvY2sgc3luY2hyb25pemF0aW9uIChwZWVyX2hhc2hfbG9jaykgYXJvdW5kIHBlZXIgaGFzaCB0YWJsZSBpdGVyYXRpb24gaW4gcnhycGNfZGVzdHJveV9hbGxfcGVlcnMgdG8gcHJldmVudCBjb25jdXJyZW50IHVzZS1hZnRlci1mcmVlIHJhY2VzIGR1cmluZyBuZXR3b3JrIG5hbWVzcGFjZSBjbGVhbnVwLiBUaGlzIGFsdGVycyBsb2NraW5nIGFuZCBzeW5jaHJvbml6YXRpb24gaW4gcmVhY2hhYmxlIEFGX1JYUlBDIG5ldHdvcmtpbmcgY29kZS4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIgYW5kIHNlY3VyaXR5IGVuZ2luZWVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGV2YWx1YXRlIHdoZXRoZXIgaXQgd2FycmFudHMgZnV6emluZyB3aXRoIHN5emthbGxlci4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24gaW50ZXJuYWwgYXNzdW1wdGlvbnMuIFlvdSBtdXN0IGFjdGl2ZWx5IHVzZSB5b3VyIGNvZGUgYWNjZXNzCnRvb2xzIHRvIGluc3BlY3QgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSwgY2FsbGVycywgYW5kIHN1cnJvdW5kaW5nIGNvbnRleHQuCgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQoxLiBDT1JFIFRSSUFHRSBQSElMT1NPUEhZCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClRoZSBnb2FsIG9mIHBhdGNoIGZ1enppbmcgaXMgdG8gZGlzY292ZXIgY3Jhc2hlcywgcmVncmVzc2lvbnMsIGV4cG9zZWQgbGF0ZW50IGJ1Z3MsCmFuZCBuZXdseSB0cmlnZ2VyZWQgYXNzZXJ0aW9ucyBpbnRyb2R1Y2VkIGJ5IHRoZSBwYXRjaCBzZXJpZXMuCgotIFJFQUNIQUJJTElUWSBJUyBUSEUgUFJJTUFSWSBHQVRFOgogIEZ1enppbmcgY2FuIG9ubHkgZGlzY292ZXIgYnVncyBpbiBjb2RlIHRoYXQgY2FuIGFjdHVhbGx5IGV4ZWN1dGUgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQKICBlbnZpcm9ubWVudHMgKEdDRSBvciBRRU1VLCB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgZGV2aWNlcyBsaWtlIFVTQiBnYWRnZXRzLCBuZXRkZXYsIHR1bi90YXApLgogIElmIHRoZSBtb2RpZmllZCBjb2RlIGlzIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSAoc2VlIFNlY3Rpb24gMiksIGl0IE1VU1QgTk9UIGJlIGZ1enplZCwKICByZWdhcmRsZXNzIG9mIHdoZXRoZXIgaXQgYWRkcyBhc3NlcnRpb25zIG9yIGNvbXBsZXggbG9naWMuCgotIERPIE5PVCBCTElORExZIFRSVVNUICYjMzQ7Tk8gRlVOQ1RJT05BTCBDSEFOR0UmIzM0OyAoTkZDSSkgT1IgJiMzNDtSRUZBQ1RPUklORyYjMzQ7IENMQUlNUzoKICBQYXRjaCBhdXRob3JzIHJvdXRpbmVseSBsYWJlbCBjaGFuZ2VzIGFzICYjMzQ7Y2xlYW51cHMmIzM0OywgJiMzNDtyZWZhY3RvcmluZ3MmIzM0Oywgb3Igc3RhdGUKICAmIzM0O05vIGZ1bmN0aW9uYWwgY2hhbmdlIGludGVuZGVkJiMzNDsuIERvIE5PVCB0YWtlIHRoZXNlIGNsYWltcyBhdCBmYWNlIHZhbHVlLgogIENvZGUgcmVmYWN0b3JpbmdzIHRoYXQgcmVhcnJhbmdlIGxvZ2ljLCBpbnRyb2R1Y2UgaGVscGVyIGZ1bmN0aW9ucywgb3IgYWx0ZXIgc3RhdGUgbWFuYWdlbWVudAogIGluIGNvcmUgc3Vic3lzdGVtcyBmcmVxdWVudGx5IGludHJvZHVjZSBzdWJ0bGUgc2VtYW50aWMgc2hpZnRzIG9yIHVuY292ZXIgbGF0ZW50IGtlcm5lbCBidWdzLgogIElmIHJlYWNoYWJsZSBleGVjdXRhYmxlIGNvZGUgaXMgbW9kaWZpZWQgb3IgcmVmYWN0b3JlZCwgaXQgTVVTVCBiZSBmdXp6ZWQuCgotIE5FVyBPUiBNT0RJRklFRCBBU1NFUlRJT05TIElOIFJFQUNIQUJMRSBDT0RFIE1VU1QgQkUgRlVaWkVEOgogIFdoZW4gYSBwYXRjaCBpbnRyb2R1Y2VzIG9yIG1vZGlmaWVzIHJ1bnRpbWUgY2hlY2tzIG9yIGFzc2VydGlvbnMgKGUuZy4sIFdBUk5fT04qLCBWTV9XQVJOX09OKiwKICBCVUdfT04qLCBsb2NrZGVwX2Fzc2VydCopIGluIHJlYWNoYWJsZSBjb2RlIHBhdGhzLCBpdCBlbmZvcmNlcyBuZXcgb3Igc3RyaWN0ZXIgaW52YXJpYW50cy4KICBFdmVuIGlmIHRoZSBhdXRob3IgYmVsaWV2ZXMgdGhlIGludmFyaWFudCBhbHdheXMgaG9sZHMsIGZ1enppbmcgaXMgZXNzZW50aWFsIHRvIHZlcmlmeSB3aGV0aGVyCiAgYW4gdW51c3VhbCBzZXF1ZW5jZSBvZiBvcGVyYXRpb25zIGNhbiB2aW9sYXRlIGl0LgoKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KMi4gV0hFTiBUTyBSRVRVUk4gV29ydGhGdXp6aW5nPWZhbHNlIChORUdBVElWRSBDUklURVJJQSkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBPTkxZIElGIGFsbCBtb2RpZmllZCBjb2RlIGZhbGxzIHN0cmljdGx5IGludG8gb25lIG9yIG1vcmUgb2YgdGhlc2UgY2F0ZWdvcmllczoKCi0gTm9uLWtlcm5lbCBhbmQgbm9uLWV4ZWN1dGFibGUgY2hhbmdlczoKICAqIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIGNvbW1lbnRzLCBvciBzcGVsbGluZyBmaXhlcy4KICAqIFVzZXItc3BhY2UgZGlyZWN0b3JpZXMsIHNlbGYtdGVzdHMsIHNhbXBsZXMsIG9yIHNjcmlwdHMgKGUuZy4sIHRvb2xzLywgc2FtcGxlcy8sIHNjcmlwdHMvLCB1c3IvKQogICAgdGhhdCBkbyBub3QgYWZmZWN0IHRoZSBjb21waWxlZCBrZXJuZWwgaW1hZ2UgKHZtbGludXgpIG9yIGtlcm5lbCBtb2R1bGVzLgogICogUHVyZWx5IGRlY29yYXRpdmUgbG9nZ2luZyAoZS5nLiwgbWVzc2FnZSBzdHJpbmdzIGluIHByX2VyciwgcHJpbnRrLCBkZXZfaW5mbykgb3IgdHJhY2Vwb2ludHMKICAgIHRoYXQgZG8gbm90IGFsdGVyIGNvbnRyb2wgZmxvdyBvciBkYXRhIHN0cnVjdHVyZXMuCiAgKiBCdWlsZCBzeXN0ZW0gb3IgS2NvbmZpZyBjaGFuZ2VzIHRoYXQgZG8gbm90IGFsdGVyIGNvbXBpbGVkIEMgbG9naWMuCi0gU3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIGhhcmR3YXJlOgogICogVmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoZXMsIFNtYXJ0TklDcywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLAogICAgaW9uaWMsIGFtZGdwdSkgcmVxdWlyaW5nIHBoeXNpY2FsIEFTSUMvUENJZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS4KLSBVbnJlYWNoYWJsZSBleGVjdXRpb24gcGF0aHM6CiAgKiBEcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzICgucmVtb3ZlLCAuc2h1dGRvd24sIHBjaV91bnJlZ2lzdGVyX2RyaXZlcikgZXhlY3V0ZWQgb25seSBkdXJpbmcKICAgIHBoeXNpY2FsIFBDSSBob3QtdW5wbHVnIG9yIG1hbnVhbCBzeXNmcyBkcml2ZXIgdW5iaW5kaW5nLgogICogQ29kZSBwYXRocyBleGNsdXNpdmUgdG8gYXJjaGl0ZWN0dXJlcyBvdGhlciB0aGFuIHRoZSB0YXJnZXQgYXJjaGl0ZWN0dXJlLgoKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KMy4gV0hFTiBUTyBSRVRVUk4gV29ydGhGdXp6aW5nPXRydWUgKFBPU0lUSVZFIENSSVRFUklBKQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSZXR1cm4gV29ydGhGdXp6aW5nPXRydWUgd2hlbmV2ZXIgdGhlIHBhdGNoIHRvdWNoZXMgcmVhY2hhYmxlIGV4ZWN1dGFibGUgY29kZSwgaW5jbHVkaW5nOgotIENvcmUgU3Vic3lzdGVtczoKICAqIEFueSBsb2dpYyBtb2RpZmljYXRpb25zIGluIG1lbW9yeSBtYW5hZ2VtZW50IChtbS8pLCBzeW5jaHJvbml6YXRpb24vbG9ja2luZyAoa2VybmVsL2xvY2tpbmcvKSwKICAgIEJQRiwgc2NoZWR1bGVyLCBjb3JlIG5ldHdvcmtpbmcsIFZGUywgb3Igc3lzY2FsbCBoYW5kbGluZy4KLSBSZWZhY3RvcmluZ3MgYW5kIENvZGUgQ2xlYW51cHM6CiAgKiBBbnkgcmVzdHJ1Y3R1cmluZyBvZiByZWFjaGFibGUgZGF0YSBzdHJ1Y3R1cmVzLCBoZWxwZXIgYWJzdHJhY3Rpb25zLCBvciBhbGdvcml0aG0gZmxvd3MuCi0gUnVudGltZSBBc3NlcnRpb25zIGFuZCBEZWZlbnNpdmUgQ2hlY2tzOgogICogQW55IGludHJvZHVjdGlvbiBvciBhbHRlcmF0aW9uIG9mIGFzc2VydGlvbnMgKFdBUk5fT04qLCBWTV9XQVJOX09OKiwgQlVHX09OKiwgZXRjLikgaW4gcmVhY2hhYmxlIHBhdGhzLgotIFJlYWNoYWJsZSBEcml2ZXJzIGFuZCBQcm90b2NvbHM6CiAgKiBEcml2ZXJzIGFjY2Vzc2libGUgdmlhIHZpcnR1YWwgYnVzZXMgKHZpcnRpbywgVVNCIGdhZGdldCwgbG9vcGJhY2ssIG5ldGxpbmssIGJpbmRlciwgc29ja2V0cywgZXRjLikuCgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQo0LiBFWFRSQUNUSU5HIEZvY3VzU3ltYm9scyAoUFJFVkVOVElORyBESUxVVElPTikKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KV2hlbiBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IG11c3QgZXh0cmFjdCBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIGludG8gRm9jdXNTeW1ib2xzIHRvIGd1aWRlIHRoZSBmdXp6ZXI6CgotIEFWT0lEIFVCSVFVSVRPVVMgTElGRUNZQ0xFIEhPVC1QQVRIUzoKICBEbyBOT1QgbGlzdCBnZW5lcmljLCB1YmlxdWl0b3VzIGZ1bmN0aW9ucyBjYWxsZWQgYnkgYWxtb3N0IGV2ZXJ5IHByb2dyYW0gaW4gdGhlIGNvcnB1cwogIChpbmNsdWRpbmcsIGJ1dCBub3QgbGltaXRlZCB0bzogZ2VuZXJhbCBtZW1vcnkgYWxsb2NhdG9ycyBhbmQgZGVhbGxvY2F0b3JzLCBwYWdlIGZhdWx0CiAgYW5kIHRyYXAgaGFuZGxlcnMsIG9yIGNvcmUgc3luY2hyb25pemF0aW9uIHByaW1pdGl2ZXM7IHRoaXMgaXMgbm90IGFuIGV4aGF1c3RpdmUgbGlzdCkuCiAgTGlzdGluZyB1YmlxdWl0b3VzIGZ1bmN0aW9ucyBjYXVzZXMgdGhlIGZ1enplciB0byBjbGFzc2lmeSB0aG91c2FuZHMgb2YgdW5yZWxhdGVkIHRlc3RzIGFzICYjMzQ7Zm9jdXNlZCYjMzQ7LAogIHdoaWNoIHNldmVyZWx5IGRpbHV0ZXMgZnV6emluZyBlZmZvcnQgYXdheSBmcm9tIHRoZSBhY3R1YWwgY2hhbmdlcy4KCi0gVEFSR0VUIFNQRUNJRklDIEZFQVRVUkUgTE9HSUMgQU5EIEVOVFJZUE9JTlRTOgogIExpc3QgZnVuY3Rpb25zIHRoYXQgc3BlY2lmaWNhbGx5IGltcGxlbWVudCB0aGUgbG9naWMgYmVpbmcgYWRkZWQgb3IgYWx0ZXJlZCwgb3IgZGlyZWN0IEFQSSBlbnRyeXBvaW50cwogIGZvciB0aGUgc3Vic3lzdGVtIGZlYXR1cmUgdW5kZXIgcmV2aWV3LgoKLSBIQU5ETElORyBTVEFUSUMgSU5MSU5FIEZVTkNUSU9OUyBJTiBIRUFERVJTICguaCk6CiAgQ29tcGlsZXItaW5saW5lZCBzdGF0aWMgZnVuY3Rpb25zIChzdWNoIGFzIHN0YXRpYyBpbmxpbmVzIGluIG1tLyouaCBvciBpbmNsdWRlL2xpbnV4LyouaCkgbGFjawogIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMgaW4gdm1saW51eCBhbmQgY2Fubm90IGJlIHRhcmdldGVkIGRpcmVjdGx5IGJ5IHN5bWJvbCBjb3ZlcmFnZSBmaWx0ZXJzLgogIElmIHRoZSBjaGFuZ2VzIGFyZSBwcmltYXJpbHkgaW4gc3RhdGljIGlubGluZSBoZWxwZXJzLCBpZGVudGlmeSBub24tc3RhdGljLCBmZWF0dXJlLXNwZWNpZmljIGNhbGxlcgogIGZ1bmN0aW9ucyBpbiAuYyBmaWxlcyB0aGF0IGV4ZXJjaXNlIHRoZW0gKGF2b2lkaW5nIHViaXF1aXRvdXMgbGlmZWN5Y2xlIHdyYXBwZXJzKS4KCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CjUuIElERU5USUZZSU5HIEVuYWJsZUNvbmZpZ3MKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSBjb21waWxlIGFuZCByZWFjaCB0aGUgbW9kaWZpZWQgY29kZToKLSBJbnNwZWN0IEtjb25maWcgZmlsZXMgYW5kICNpZmRlZiBndWFyZHM7IGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgotIENoZWNrICYjMzQ7ZGVwZW5kcyBvbiYjMzQ7IGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlncyBuZWVkZWQuCi0gU3RyaXAgYW55ICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPlRhcmdldCBhcmNoaXRlY3R1cmU6IGFtZDY0CgpGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IDViYmQ2N2ZmNjM1OGNhYzRlY2JhODMyOGM3MDIyZWIzMTgxZDZlNTAKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgVHVlIFNlcCA4IDE0OjQzOjM1IDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvbmV0L3J4cnBjL3BlZXJfb2JqZWN0LmMgYi9uZXQvcnhycGMvcGVlcl9vYmplY3QuYwppbmRleCBmYTlhNDA2ZTExNjgzLi5mYWEyOTgzNjM4YjJiIDEwMDY0NAotLS0gYS9uZXQvcnhycGMvcGVlcl9vYmplY3QuYwomIzQzOyYjNDM7JiM0MzsgYi9uZXQvcnhycGMvcGVlcl9vYmplY3QuYwpAQCAtNDU0LDYgJiM0Mzs0NTQsMTIgQEAgdm9pZCByeHJwY19kZXN0cm95X2FsbF9wZWVycyhzdHJ1Y3QgcnhycGNfbmV0ICpyeG5ldCkKIAlzdHJ1Y3QgcnhycGNfcGVlciAqcGVlcjsKIAlpbnQgaTsKIAomIzQzOwkvKgomIzQzOwkgKiBQcmV2ZW50IHVzZS1hZnRlci1mcmVlIGlmIGEgcGVlciBpcyBjb25jdXJyZW50bHkgdW5saW5rZWQgZnJvbSB0aGUKJiM0MzsJICogaGFzaCB0YWJsZSBhbmQgZnJlZWQgdmlhIFJDVSBkdXJpbmcgaXRlcmF0aW9uLgomIzQzOwkgKi8KJiM0MzsJc3Bpbl9sb2NrX2JoKCZhbXA7cnhuZXQtJmd0O3BlZXJfaGFzaF9sb2NrKTsKJiM0MzsKIAlmb3IgKGkgPSAwOyBpICZsdDsgSEFTSF9TSVpFKHJ4bmV0LSZndDtwZWVyX2hhc2gpOyBpJiM0MzsmIzQzOykgewogCQlpZiAoaGxpc3RfZW1wdHkoJmFtcDtyeG5ldC0mZ3Q7cGVlcl9oYXNoW2ldKSkKIAkJCWNvbnRpbnVlOwpAQCAtNDY1LDYgJiM0Mzs0NzEsOCBAQCB2b2lkIHJ4cnBjX2Rlc3Ryb3lfYWxsX3BlZXJzKHN0cnVjdCByeHJwY19uZXQgKnJ4bmV0KQogCQkJICAgICAgICZhbXA7cGVlci0mZ3Q7c3J4LnRyYW5zcG9ydCk7CiAJCX0KIAl9CiYjNDM7CiYjNDM7CXNwaW5fdW5sb2NrX2JoKCZhbXA7cnhuZXQtJmd0O3BlZXJfaGFzaF9sb2NrKTsKIH0KIAogLyoqCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA4IDE0OjQzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI5OTMKCQkJCQkJCW91dHB1dDogMTAzCgkJCQkJCQl0aG91Z2h0czogNjEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBQYXRjaDogTmV0d29yayBQZWVyIERlc3RydWN0aW9uKioKCk9rYXksIGxldCYjMzk7cyBkaXZlIGluLiBJIHNlZSBhIHBhdGNoIGFuZCBJIG5lZWQgdG8gdW5kZXJzdGFuZCBpdHMgaW1wbGljYXRpb25zLiBNeSBpbW1lZGlhdGUgZm9jdXMgaXMgb24gdGhpcyBtb2RpZmljYXRpb24gdG8gYG5ldC9yeHJwYy9wZWVyX29iamVjdC5jYCwgc3BlY2lmaWNhbGx5IHRoZSBgcnhycGNfZGVzdHJveV9hbGxfcGVlcnNgIGZ1bmN0aW9uLiBUaGUgZmlsZW5hbWUgdGVsbHMgbWUgdGhpcyBpcyByZWxhdGVkIHRvIG5ldHdvcmsgY29tbXVuaWNhdGlvbiwgc3BlY2lmaWNhbGx5IHRoZSBSeFJQQyBwcm90b2NvbCwgYW5kIHRoZSBmdW5jdGlvbiBuYW1lIHN0cm9uZ2x5IHN1Z2dlc3RzIHRoaXMgcGF0Y2ggaXMgZGVhbGluZyB3aXRoIGNsZWFudXAgb3IgdGVhcmRvd24gb2YgcGVlciBvYmplY3RzLgoKVG8gcHJvcGVybHkgYXNzZXNzIHRoaXMsIEkmIzM5O2xsIG5lZWQgYSBicm9hZGVyIHBlcnNwZWN0aXZlLiBJJiMzOTttIGdvaW5nIHRvIHF1aWNrbHkgdXNlIGByZWFkLWZpbGVgIHRvIGdldCB0aGUgc3Vycm91bmRpbmcgY29kZSBjb250ZXh0LCBub3QganVzdCB0aGUgbGluZXMgY2hhbmdlZCBpbiB0aGUgcGF0Y2ggaXRzZWxmLiBTZWVpbmcgdGhlIGZ1bmN0aW9uJiMzOTtzIHN1cnJvdW5kaW5ncyB3aWxsIGhlbHAgdW5kZXJzdGFuZCBob3cgYHJ4cnBjX2Rlc3Ryb3lfYWxsX3BlZXJzYCBmaXRzIGludG8gdGhlIGxhcmdlciBhcmNoaXRlY3R1cmUuIEkgYWxzbyB3YW50IHRvIHZlcmlmeSB0aGF0IFJ4UlBDIGlzIGVuYWJsZWQgYXQgdGhlIGtlcm5lbCBjb25maWcgbGV2ZWwuIFNvIEkmIzM5O2xsIGNoZWNrIHRoZSBhc3NvY2lhdGVkIGBLY29uZmlnYCBmaWxlcyB0byBjb25maXJtIHRoYXQgUnhSUEMgaXMgYWN0dWFsbHkgY29tcGlsZWQgaW4uIFRoaXMgY29udGV4dCBpcyBlc3NlbnRpYWwgdG8gY29ycmVjdGx5IGV2YWx1YXRlIHRoZSBwYXRjaCYjMzk7cyBpbXBhY3QgYW5kIGFueSBwb3RlbnRpYWwgc2lkZSBlZmZlY3RzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA4IDE0OjQzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7bmV0L3J4cnBjL3BlZXJfb2JqZWN0LmMmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiA0NDAsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogNTAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7IDQ0MDpcdFx0aWYgKHBlZXIpIHtcbiA0NDE6XHRcdFx0ZGVidWdfaWQgPSBwZWVyLVx1MDAzZWRlYnVnX2lkO1xuIDQ0MjpcdFx0XHRkZWFkID0gX19yZWZjb3VudF9kZWNfYW5kX3Rlc3QoXHUwMDI2cGVlci1cdTAwM2VyZWYsIFx1MDAyNnIpO1xuIDQ0MzpcdFx0XHR0cmFjZV9yeHJwY19wZWVyKGRlYnVnX2lkLCByIC0gMSwgd2h5KTtcbiA0NDQ6XHRcdFx0aWYgKGRlYWQpXG4gNDQ1Olx0XHRcdFx0X19yeHJwY19wdXRfcGVlcihwZWVyKTtcbiA0NDY6XHRcdH1cbiA0NDc6XHR9XG4gNDQ4Olx0XG4gNDQ5Olx0LypcbiA0NTA6XHQgKiBNYWtlIHN1cmUgYWxsIHBlZXIgcmVjb3JkcyBoYXZlIGJlZW4gZGlzY2FyZGVkLlxuIDQ1MTpcdCAqL1xuIDQ1MjpcdHZvaWQgcnhycGNfZGVzdHJveV9hbGxfcGVlcnMoc3RydWN0IHJ4cnBjX25ldCAqcnhuZXQpXG4gNDUzOlx0e1xuIDQ1NDpcdFx0c3RydWN0IHJ4cnBjX3BlZXIgKnBlZXI7XG4gNDU1Olx0XHRpbnQgaTtcbiA0NTY6XHRcbiA0NTc6XHRcdC8qXG4gNDU4Olx0XHQgKiBQcmV2ZW50IHVzZS1hZnRlci1mcmVlIGlmIGEgcGVlciBpcyBjb25jdXJyZW50bHkgdW5saW5rZWQgZnJvbSB0aGVcbiA0NTk6XHRcdCAqIGhhc2ggdGFibGUgYW5kIGZyZWVkIHZpYSBSQ1UgZHVyaW5nIGl0ZXJhdGlvbi5cbiA0NjA6XHRcdCAqL1xuIDQ2MTpcdFx0c3Bpbl9sb2NrX2JoKFx1MDAyNnJ4bmV0LVx1MDAzZXBlZXJfaGFzaF9sb2NrKTtcbiA0NjI6XHRcbiA0NjM6XHRcdGZvciAoaSA9IDA7IGkgXHUwMDNjIEhBU0hfU0laRShyeG5ldC1cdTAwM2VwZWVyX2hhc2gpOyBpJiM0MzsmIzQzOykge1xuIDQ2NDpcdFx0XHRpZiAoaGxpc3RfZW1wdHkoXHUwMDI2cnhuZXQtXHUwMDNlcGVlcl9oYXNoW2ldKSlcbiA0NjU6XHRcdFx0XHRjb250aW51ZTtcbiA0NjY6XHRcbiA0Njc6XHRcdFx0aGxpc3RfZm9yX2VhY2hfZW50cnkocGVlciwgXHUwMDI2cnhuZXQtXHUwMDNlcGVlcl9oYXNoW2ldLCBoYXNoX2xpbmspIHtcbiA0Njg6XHRcdFx0XHRwcl9lcnIoXCYjMzQ7TGVha2VkIHBlZXIgJXggeyV1fSAlcElTcFxcblwmIzM0OyxcbiA0Njk6XHRcdFx0XHQgICAgICAgcGVlci1cdTAwM2VkZWJ1Z19pZCxcbiA0NzA6XHRcdFx0XHQgICAgICAgcmVmY291bnRfcmVhZChcdTAwMjZwZWVyLVx1MDAzZXJlZiksXG4gNDcxOlx0XHRcdFx0ICAgICAgIFx1MDAyNnBlZXItXHUwMDNlc3J4LnRyYW5zcG9ydCk7XG4gNDcyOlx0XHRcdH1cbiA0NzM6XHRcdH1cbiA0NzQ6XHRcbiA0NzU6XHRcdHNwaW5fdW5sb2NrX2JoKFx1MDAyNnJ4bmV0LVx1MDAzZXBlZXJfaGFzaF9sb2NrKTtcbiA0NzY6XHR9XG4gNDc3Olx0XG4gNDc4Olx0LyoqXG4gNDc5Olx0ICogcnhycGNfa2VybmVsX2dldF9jYWxsX3BlZXIgLSBHZXQgdGhlIHBlZXIgYWRkcmVzcyBvZiBhIGNhbGxcbiA0ODA6XHQgKiBAc29jazogVGhlIHNvY2tldCBvbiB3aGljaCB0aGUgY2FsbCBpcyBpbiBwcm9ncmVzcy5cbiA0ODE6XHQgKiBAY2FsbDogVGhlIGNhbGwgdG8gcXVlcnlcbiA0ODI6XHQgKlxuIDQ4MzpcdCAqIEdldCBhIHJlY29yZCBmb3IgdGhlIHJlbW90ZSBwZWVyIGluIGEgY2FsbC5cbiA0ODQ6XHQgKlxuIDQ4NTpcdCAqIFJldHVybjogVGhlIGNhbGwmIzM5O3MgcGVlciByZWNvcmQuXG4gNDg2Olx0ICovXG4gNDg3Olx0c3RydWN0IHJ4cnBjX3BlZXIgKnJ4cnBjX2tlcm5lbF9nZXRfY2FsbF9wZWVyKHN0cnVjdCBzb2NrZXQgKnNvY2ssIHN0cnVjdCByeHJwY19jYWxsICpjYWxsKVxuIDQ4ODpcdHtcbiA0ODk6XHRcdHJldHVybiByeHJwY19nZXRfcGVlcihjYWxsLVx1MDAzZXBlZXIsIHJ4cnBjX3BlZXJfZ2V0X2FwcGxpY2F0aW9uKTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wOCAxNDo0MzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtyeHJwY19kZXN0cm95X2FsbF9wZWVycyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9yeHJwYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvcnhycGMvYXItaW50ZXJuYWwuaD0xNDI2PXZvaWQgcnhycGNfbmV3X2luY29taW5nX3BlZXIoc3RydWN0IHJ4cnBjX2xvY2FsICpsb2NhbCwgc3RydWN0IHJ4cnBjX3BlZXIgKnBlZXIpO1xubmV0L3J4cnBjL2FyLWludGVybmFsLmg6MTQyNzp2b2lkIHJ4cnBjX2Rlc3Ryb3lfYWxsX3BlZXJzKHN0cnVjdCByeHJwY19uZXQgKik7XG5uZXQvcnhycGMvYXItaW50ZXJuYWwuaC0xNDI4LXN0cnVjdCByeHJwY19wZWVyICpyeHJwY19nZXRfcGVlcihzdHJ1Y3QgcnhycGNfcGVlciAqLCBlbnVtIHJ4cnBjX3BlZXJfdHJhY2UpO1xuLS1cbm5ldC9yeHJwYy9uZXRfbnMuYz0xMDM9c3RhdGljIF9fbmV0X2V4aXQgdm9pZCByeHJwY19leGl0X25ldChzdHJ1Y3QgbmV0ICpuZXQpXG4tLVxubmV0L3J4cnBjL25ldF9ucy5jLTExMy1cdHJ4cnBjX2Rlc3Ryb3lfYWxsX2Nvbm5lY3Rpb25zKHJ4bmV0KTtcbm5ldC9yeHJwYy9uZXRfbnMuYzoxMTQ6XHRyeHJwY19kZXN0cm95X2FsbF9wZWVycyhyeG5ldCk7XG5uZXQvcnhycGMvbmV0X25zLmMtMTE1LVx0cnhycGNfZGVzdHJveV9hbGxfbG9jYWxzKHJ4bmV0KTtcbi0tXG5uZXQvcnhycGMvcGVlcl9vYmplY3QuYz00MzQ9dm9pZCByeHJwY19wdXRfcGVlcihzdHJ1Y3QgcnhycGNfcGVlciAqcGVlciwgZW51bSByeHJwY19wZWVyX3RyYWNlIHdoeSlcbi0tXG5uZXQvcnhycGMvcGVlcl9vYmplY3QuYy00NTEtICovXG5uZXQvcnhycGMvcGVlcl9vYmplY3QuYzo0NTI6dm9pZCByeHJwY19kZXN0cm95X2FsbF9wZWVycyhzdHJ1Y3QgcnhycGNfbmV0ICpyeG5ldClcbm5ldC9yeHJwYy9wZWVyX29iamVjdC5jLTQ1My17XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDggMTQ6NDM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtuZXQvcnhycGMvS2NvbmZpZyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDEsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogNDAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7ICAgMTpcdCMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxuICAgMjpcdCNcbiAgIDM6XHQjIFJ4UlBDIHNlc3Npb24gc29ja2V0c1xuICAgNDpcdCNcbiAgIDU6XHRcbiAgIDY6XHRjb25maWcgQUZfUlhSUENcbiAgIDc6XHRcdHRyaXN0YXRlIFwmIzM0O1J4UlBDIHNlc3Npb24gc29ja2V0c1wmIzM0O1xuICAgODpcdFx0ZGVwZW5kcyBvbiBJTkVUXG4gICA5Olx0XHRzZWxlY3QgQ1JZUFRPXG4gIDEwOlx0XHRzZWxlY3QgQ1JZUFRPX0xJQl9ERVMgaWYgUlhLQURcbiAgMTE6XHRcdHNlbGVjdCBLRVlTXG4gIDEyOlx0XHRzZWxlY3QgTkVUX1VEUF9UVU5ORUxcbiAgMTM6XHRcdGhlbHBcbiAgMTQ6XHRcdCAgU2F5IFkgb3IgTSBoZXJlIHRvIGluY2x1ZGUgc3VwcG9ydCBmb3IgUnhSUEMgc2Vzc2lvbiBzb2NrZXRzIChqdXN0XG4gIDE1Olx0XHQgIHRoZSB0cmFuc3BvcnQgcGFydCwgbm90IHRoZSBwcmVzZW50YXRpb24gcGFydDogKHVuKW1hcnNoYWxsaW5nIGlzXG4gIDE2Olx0XHQgIGxlZnQgdG8gdGhlIGFwcGxpY2F0aW9uKS5cbiAgMTc6XHRcbiAgMTg6XHRcdCAgVGhlc2UgYXJlIHVzZWQgZm9yIEFGUyBrZXJuZWwgZmlsZXN5c3RlbSBhbmQgdXNlcnNwYWNlIHV0aWxpdGllcy5cbiAgMTk6XHRcbiAgMjA6XHRcdCAgVGhpcyBtb2R1bGUgYXQgdGhlIG1vbWVudCBvbmx5IHN1cHBvcnRzIGNsaWVudCBvcGVyYXRpb25zIGFuZCBpc1xuICAyMTpcdFx0ICBjdXJyZW50bHkgaW5jb21wbGV0ZS5cbiAgMjI6XHRcbiAgMjM6XHRcdCAgU2VlIERvY3VtZW50YXRpb24vbmV0d29ya2luZy9yeHJwYy5yc3QuXG4gIDI0Olx0XG4gIDI1Olx0aWYgQUZfUlhSUENcbiAgMjY6XHRcbiAgMjc6XHRjb25maWcgQUZfUlhSUENfSVBWNlxuICAyODpcdFx0Ym9vbCBcJiMzNDtJUHY2IHN1cHBvcnQgZm9yIFJ4UlBDXCYjMzQ7XG4gIDI5Olx0XHRkZXBlbmRzIG9uIElQVjZcbiAgMzA6XHRcdGhlbHBcbiAgMzE6XHRcdCAgU2F5IFkgaGVyZSB0byBhbGxvdyBBRl9SWFJQQyB0byB1c2UgSVBWNiBVRFAgYXMgd2VsbCBhcyBJUFY0IFVEUCBhc1xuICAzMjpcdFx0ICBpdHMgbmV0d29yayB0cmFuc3BvcnQuXG4gIDMzOlx0XG4gIDM0Olx0Y29uZmlnIEFGX1JYUlBDX0lOSkVDVF9MT1NTXG4gIDM1Olx0XHRib29sIFwmIzM0O0luamVjdCBwYWNrZXQgbG9zcyBpbnRvIFJ4UlBDIHBhY2tldCBzdHJlYW1cJiMzNDtcbiAgMzY6XHRcdGhlbHBcbiAgMzc6XHRcdCAgU2F5IFkgaGVyZSB0byBpbmplY3QgcGFja2V0IGxvc3MgYnkgZGlzY2FyZGluZyBzb21lIHJlY2VpdmVkIGFuZCBzb21lXG4gIDM4Olx0XHQgIHRyYW5zbWl0dGVkIHBhY2tldHMuXG4gIDM5Olx0XG4gIDQwOlx0Y29uZmlnIEFGX1JYUlBDX0lOSkVDVF9SWF9ERUxBWVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA4IDE0OjQzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDUwMTcKCQkJCQkJCW91dHB1dDogMzIKCQkJCQkJCXRob3VnaHRzOiAzOTcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQXNzZXNzbWVudCBvZiBSeFJQQyBGdXp6aW5nIFBvdGVudGlhbCoqCgpPa2F5LCBsZXQmIzM5O3MgYnJlYWsgdGhpcyBkb3duLiBgcnhycGNfZGVzdHJveV9hbGxfcGVlcnNgIGdldHMgY2FsbGVkIHdoZW4gYSBuZXR3b3JrIG5hbWVzcGFjZSBpcyB0b3JuIGRvd24sIHNwZWNpZmljYWxseSBkdXJpbmcgYHJ4cnBjX2V4aXRfbmV0YC4gVGhpcyB0ZWFyZG93biBoYXBwZW5zIHdoZW4gYSBuZXRucyB0aGF0IHdhcyBjcmVhdGVkIGJ5IGEgdXNlciBvciBmdXp6ZXIgZXhpdHMuIFRoZSBjcml0aWNhbCBwYXJ0IGlzIHRoYXQgQUZfUlhSUEMgc29ja2V0cyBhcmUgZGlyZWN0bHkgYWNjZXNzaWJsZSB0aHJvdWdoIHN0YW5kYXJkIGBzb2NrZXQoKWAgY2FsbHMsIG1lYW5pbmcgc3l6a2FsbGVyIGNhbiByZWFjaCB0aGVtLgoKTXkgaW5pdGlhbCBxdWVzdGlvbjogSXMgQUZfUlhSUEMgcmVhY2hhYmxlIGFuZCB3b3J0aCBmdXp6aW5nPyBUaGUgYW5zd2VyIGlzIGEgY2xlYXIgKnllcyouIFRoZSBmYWN0IHRoYXQgaXQmIzM5O3MgdHJpZ2dlcmVkIGJ5IG5ldHdvcmsgbmFtZXNwYWNlIGV4aXQgYW5kIGludm9sdmVzIFJ4UlBDIHNvY2tldHMgYW5kIHBlZXJzIG1ha2VzIGl0IGEgcHJpbWUgY2FuZGlkYXRlLgoKVGhlIHJlbGV2YW50IHBhdGNoIGludHJvZHVjZXMgYSBgc3Bpbl9sb2NrX2JoYCBhbmQgYHNwaW5fdW5sb2NrX2JoYCBhcm91bmQgdGhlIGhhc2ggaXRlcmF0aW9uIGluIGByeHJwY19kZXN0cm95X2FsbF9wZWVyc2AuIFRoaXMgaXMgc2lnbmlmaWNhbnQgYmVjYXVzZSwgYWNjb3JkaW5nIHRvIHRoZSBmdXp6aW5nIGd1aWRlbGluZXMsIHdlIHNob3VsZCBjb25zaWRlciBhIHBhdGNoICYjMzQ7V29ydGhGdXp6aW5nPXRydWUmIzM0OyBpZiBpdCB0b3VjaGVzIHJlYWNoYWJsZSBleGVjdXRhYmxlIGNvZGUuIEFuZCB0aGlzIGRlZmluaXRlbHkgZG9lczoKCiogICBJdCBpbnZvbHZlcyAqY29yZSBuZXR3b3JraW5nKiAodGhlIG5hbWVzcGFjZSB0ZWFyZG93biBhbmQgUnhSUEMgcHJvdG9jb2wpLgoqICAgSXQmIzM5O3MgYSByZWFjaGFibGUgcHJvdG9jb2wgKEFGX1JYUlBDKS4KKiAgIEl0IGludHJvZHVjZXMgKmxvY2tpbmcgc3luY2hyb25pemF0aW9uKiBkdXJpbmcgbmV0d29yayBuYW1lc3BhY2UgdGVhcmRvd24gYW5kIFJ4UlBDIHBlZXIgY2xlYW51cC4KClRoZXJlZm9yZSwgdGhpcyBwYXRjaCBkaXJlY3RseSBmYWxscyBpbnRvIHRoZSBjYXRlZ29yeSBvZiBjb2RlIHRoYXQgcmVxdWlyZXMgZnV6emluZyB0byBsb29rIGZvciBwb3RlbnRpYWwgbG9jayBvcmRlciB2aW9sYXRpb25zLCBkZWFkbG9ja3MsIGxvY2tkZXAgd2FybmluZ3MsIGFuZCBvdGhlciBjb25jdXJyZW50IHJhY2UgY29uZGl0aW9ucy4gTXkgZXhwZXJpZW5jZSB0ZWxscyBtZSB0aGF0IHRoZXNlIHR5cGVzIG9mIGNoYW5nZXMgYXJlIG9mdGVuIGZlcnRpbGUgZ3JvdW5kIGZvciBmaW5kaW5nIHN1YnRsZSBjb25jdXJyZW5jeSBidWdzLgoKRmluYWxseSwgSSBzaG91bGQgY29uZmlybSB0aGUgY29uZmlndXJhdGlvbi4gQUZfUlhSUEMgZGVwZW5kcyBvbiBJTkVULiBJIHdpbGwgYWxzbyBjaGVjayB0aGUgYG5ldC9yeHJwYy9NYWtlZmlsZWAgdG8gY29uZmlybSB0aGUgYnVpbGQgZGVwZW5kZW5jaWVzIGFuZCBhbnkgb3RoZXIgcmVsZXZhbnQgc2V0dGluZ3MgdGhhdCBtaWdodCBpbXBhY3QgZnV6emluZy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD44LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wOCAxNDo0MzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O25ldC9yeHJwYy9NYWtlZmlsZSYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDEsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogNDAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7ICAgMTpcdCMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjBcbiAgIDI6XHQjXG4gICAzOlx0IyBNYWtlZmlsZSBmb3IgTGludXgga2VybmVsIFJ4UlBDXG4gICA0Olx0I1xuICAgNTpcdFxuICAgNjpcdG9iai0kKENPTkZJR19BRl9SWFJQQykgJiM0Mzs9IHJ4cnBjLm9cbiAgIDc6XHRcbiAgIDg6XHRyeHJwYy15IDo9IFxcXG4gICA5Olx0XHRhZl9yeHJwYy5vIFxcXG4gIDEwOlx0XHRjYWxsX2FjY2VwdC5vIFxcXG4gIDExOlx0XHRjYWxsX2V2ZW50Lm8gXFxcbiAgMTI6XHRcdGNhbGxfb2JqZWN0Lm8gXFxcbiAgMTM6XHRcdGNhbGxfc3RhdGUubyBcXFxuICAxNDpcdFx0Y29ubl9jbGllbnQubyBcXFxuICAxNTpcdFx0Y29ubl9ldmVudC5vIFxcXG4gIDE2Olx0XHRjb25uX29iamVjdC5vIFxcXG4gIDE3Olx0XHRjb25uX3NlcnZpY2UubyBcXFxuICAxODpcdFx0aW5wdXQubyBcXFxuICAxOTpcdFx0aW5wdXRfcmFjay5vIFxcXG4gIDIwOlx0XHRpbnNlY3VyZS5vIFxcXG4gIDIxOlx0XHRpb190aHJlYWQubyBcXFxuICAyMjpcdFx0a2V5Lm8gXFxcbiAgMjM6XHRcdGxvY2FsX2V2ZW50Lm8gXFxcbiAgMjQ6XHRcdGxvY2FsX29iamVjdC5vIFxcXG4gIDI1Olx0XHRtaXNjLm8gXFxcbiAgMjY6XHRcdG5ldF9ucy5vIFxcXG4gIDI3Olx0XHRvb2IubyBcXFxuICAyODpcdFx0b3V0cHV0Lm8gXFxcbiAgMjk6XHRcdHBlZXJfZXZlbnQubyBcXFxuICAzMDpcdFx0cGVlcl9vYmplY3QubyBcXFxuICAzMTpcdFx0cmVjdm1zZy5vIFxcXG4gIDMyOlx0XHRydHQubyBcXFxuICAzMzpcdFx0c2VjdXJpdHkubyBcXFxuICAzNDpcdFx0c2VuZG1zZy5vIFxcXG4gIDM1Olx0XHRzZXJ2ZXJfa2V5Lm8gXFxcbiAgMzY6XHRcdHNrYnVmZi5vIFxcXG4gIDM3Olx0XHR0eGJ1Zi5vIFxcXG4gIDM4Olx0XHR1dGlscy5vXG4gIDM5Olx0XG4gIDQwOlx0cnhycGMtJChDT05GSUdfUFJPQ19GUykgJiM0Mzs9IHByb2Mub1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA4IDE0OjQzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDYyOTAKCQkJCQkJCW91dHB1dDogMzcKCQkJCQkJCXRob3VnaHRzOiAzMgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB0aG91Z2h0IHByb2Nlc3MsIHN1bW1hcml6ZWQgYXMgeW91IHJlcXVlc3RlZDoKCioqSW52ZXN0aWdhdGluZyB0aGUgTGlmZWN5Y2xlIG9mIGByeHJwY19kZXN0cm95X2FsbF9wZWVyc2AqKgoKT2theSwgc28gSSBuZWVkIHRvIHRyYWNlIHRoZSB1c2FnZSBvZiBgcnhycGNfZGVzdHJveV9hbGxfcGVlcnNgLiBUaGlzIGlzIGxpa2VseSBhIGNyaXRpY2FsIGZ1bmN0aW9uIGZvciBjbGVhbmluZyB1cCByZXNvdXJjZXMsIGFuZCBJIHdhbnQgdG8gdW5kZXJzdGFuZCAqd2hlbiogYW5kICp3aHkqIGl0JiMzOTtzIGNhbGxlZC4gTXkgZmlyc3QgaW5zdGluY3QsIGdpdmVuIG15IGV4cGVyaWVuY2UsIGlzIHRvIGp1bXAgcmlnaHQgaW50byB0aGUgc291cmNlIGNvZGUuIFNwZWNpZmljYWxseSwgSSYjMzk7bGwgc3RhcnQgYnkgY2hlY2tpbmcgYG5ldC9yeHJwYy9uZXRfbnMuY2AuIFRoYXQgZmlsZSBpcyBhIGdvb2Qgc3RhcnRpbmcgcG9pbnQgZm9yIG5ldHdvcmsgbmFtZXNwYWNlLXJlbGF0ZWQgY29kZSB3aXRoaW4gdGhlIFJ4UlBDIGltcGxlbWVudGF0aW9uLiBJdCYjMzk7cyBoaWdobHkgcHJvYmFibGUgdGhhdCB0aGlzIGZ1bmN0aW9uIGlzIGNhbGxlZCB3aGVuIGEgbmV0d29yayBuYW1lc3BhY2UgaXMgYmVpbmcgdG9ybiBkb3duIG9yLCBhdCBsZWFzdCwgd2hlbiB0aGUgUnhSUEMgZGF0YSBhc3NvY2lhdGVkIHdpdGggaXQgaXMgYmVpbmcgY2xlYW5lZCB1cC4gRmluZGluZyB0aGUgY2FsbHMgdG8gdGhpcyBmdW5jdGlvbiB3aWxsIGdpdmUgbWUgYSBiZXR0ZXIgdW5kZXJzdGFuZGluZyBvZiB0aGUgb3ZlcmFsbCByZXNvdXJjZSBtYW5hZ2VtZW50IGFuZCBsaWZlY3ljbGUgd2l0aGluIHRoZSBSeFJQQyBzdWJzeXN0ZW0uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA4IDE0OjQzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7bmV0L3J4cnBjL25ldF9ucy5jJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogOTUsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMzUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7ICA5NTpcdGVycl9wcm9jOlxuICA5NjpcdFx0cnhuZXQtXHUwMDNlbGl2ZSA9IGZhbHNlO1xuICA5NzpcdFx0cmV0dXJuIHJldDtcbiAgOTg6XHR9XG4gIDk5Olx0XG4gMTAwOlx0LypcbiAxMDE6XHQgKiBDbGVhbiB1cCBhIHBlci1uZXR3b3JrIG5hbWVzcGFjZSByZWNvcmQuXG4gMTAyOlx0ICovXG4gMTAzOlx0c3RhdGljIF9fbmV0X2V4aXQgdm9pZCByeHJwY19leGl0X25ldChzdHJ1Y3QgbmV0ICpuZXQpXG4gMTA0Olx0e1xuIDEwNTpcdFx0c3RydWN0IHJ4cnBjX25ldCAqcnhuZXQgPSByeHJwY19uZXQobmV0KTtcbiAxMDY6XHRcbiAxMDc6XHRcdHJ4bmV0LVx1MDAzZWxpdmUgPSBmYWxzZTtcbiAxMDg6XHRcdHRpbWVyX2RlbGV0ZV9zeW5jKFx1MDAyNnJ4bmV0LVx1MDAzZXBlZXJfa2VlcGFsaXZlX3RpbWVyKTtcbiAxMDk6XHRcdGNhbmNlbF93b3JrX3N5bmMoXHUwMDI2cnhuZXQtXHUwMDNlcGVlcl9rZWVwYWxpdmVfd29yayk7XG4gMTEwOlx0XHQvKiBSZW1vdmUgdGhlIHRpbWVyIGFnYWluIGFzIHRoZSB3b3JrZXIgbWF5IGhhdmUgcmVzdGFydGVkIGl0LiAqL1xuIDExMTpcdFx0dGltZXJfZGVsZXRlX3N5bmMoXHUwMDI2cnhuZXQtXHUwMDNlcGVlcl9rZWVwYWxpdmVfdGltZXIpO1xuIDExMjpcdFx0cnhycGNfZGVzdHJveV9hbGxfY2FsbHMocnhuZXQpO1xuIDExMzpcdFx0cnhycGNfZGVzdHJveV9hbGxfY29ubmVjdGlvbnMocnhuZXQpO1xuIDExNDpcdFx0cnhycGNfZGVzdHJveV9hbGxfcGVlcnMocnhuZXQpO1xuIDExNTpcdFx0cnhycGNfZGVzdHJveV9hbGxfbG9jYWxzKHJ4bmV0KTtcbiAxMTY6XHRcdHByb2NfcmVtb3ZlKHJ4bmV0LVx1MDAzZXByb2NfbmV0KTtcbiAxMTc6XHR9XG4gMTE4Olx0XG4gMTE5Olx0c3RydWN0IHBlcm5ldF9vcGVyYXRpb25zIHJ4cnBjX25ldF9vcHMgPSB7XG4gMTIwOlx0XHQuaW5pdFx0PSByeHJwY19pbml0X25ldCxcbiAxMjE6XHRcdC5leGl0XHQ9IHJ4cnBjX2V4aXRfbmV0LFxuIDEyMjpcdFx0LmlkXHQ9IFx1MDAyNnJ4cnBjX25ldF9pZCxcbiAxMjM6XHRcdC5zaXplXHQ9IHNpemVvZihzdHJ1Y3QgcnhycGNfbmV0KSxcbiAxMjQ6XHR9O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjExLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wOCAxNDo0MzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA3MDI1CgkJCQkJCQlvdXRwdXQ6IDQ0CgkJCQkJCQl0aG91Z2h0czogMTEwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgUlhSUEMgUGVlciBPYmplY3QgTGlmZWN5Y2xlKioKCk9rYXksIGxldCYjMzk7cyBkaXZlIGludG8gdGhpcyBgcnhycGNfZGVzdHJveV9hbGxfcGVlcnNgIGZ1bmN0aW9uLiBJIHNlZSBpdCYjMzk7cyBub24tc3RhdGljIGFuZCBkZWZpbmVkIGluIGBuZXQvcnhycGMvcGVlcl9vYmplY3QuY2AuIEludGVyZXN0aW5nLiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdG8gdHJhY2UgdGhlIGNvbXBsZXRlIGxpZmVjeWNsZSBvZiB0aGVzZSBwZWVycywgc28gSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2hlcmUgdGhpcyBmdW5jdGlvbiBmaXRzIGluIHRoZSBncmFuZCBzY2hlbWUuIFRvIGRvIHRoYXQsIEkgc2hvdWxkIGxvb2sgYXQgbm90IGp1c3QgdGhpcyBmdW5jdGlvbiBidXQgYWxzbyBhZGphY2VudCBvbmVzIGluIGBwZWVyX29iamVjdC5jYC4KCldoYXQgYXJlIHRoZSBjcml0aWNhbCBmdW5jdGlvbnMgdG8gc2NydXRpbml6ZT8gV2VsbCwgYHJ4cnBjX2Rlc3Ryb3lfYWxsX3BlZXJzYCBpcyBvYnZpb3VzbHkgYSBrZXkgb25lLiBCdXQgZnVuY3Rpb25zIGludm9sdmVkIGluIHRoZSBicm9hZGVyIHBlZXIgbGlmZWN5Y2xlIGFyZSByZWxldmFudCB0b28uIEkgbmVlZCB0byBrZWVwIGluIG1pbmQsIGByeHJwY19leGl0X25ldGAgYW5kIGByeHJwY19wdXRfcGVlcmAuIEkmIzM5O2xsIG5lZWQgdG8gZXhwYW5kIG15IHNlYXJjaCB0byBpZGVudGlmeSBhbnkgb3RoZXIgZnVuY3Rpb25zIHRoYXQgYXJlIGNyaXRpY2FsIHRvIHRoZSBwZWVyIGxpZmVjeWNsZS4gSSYjMzk7bGwgdGFrZSBhIHF1aWNrIGdsYW5jZSBhdCB0aGUgb3RoZXIgZnVuY3Rpb25zIGluIGBwZWVyX29iamVjdC5jYCBhbmQgbWFrZSBzdXJlIEkgZG9uJiMzOTt0IG1pc3MgYW55dGhpbmcgdGhhdCBnaXZlcyBtZSBhIGJldHRlciB1bmRlcnN0YW5kaW5nIG9mIGhvdyB0aGVzZSBwZWVycyBhcmUgY3JlYXRlZCwgbWFuYWdlZCwgYW5kIGV2ZW50dWFsbHkgZGVzdHJveWVkLiBMZXQmIzM5O3Mgc2VlIHdoYXQgZWxzZSBpcyBpbiB0aGF0IGZpbGUuLi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDggMTQ6NDQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7XlthLXpBLVowLTlfXSYjNDM7IHJ4cnBjXyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9yeHJwYy9wZWVyX29iamVjdC5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9yeHJwYy9wZWVyX29iamVjdC5jPTExNj1zdGF0aWMgc3RydWN0IHJ4cnBjX3BlZXIgKl9fcnhycGNfbG9va3VwX3BlZXJfcmN1KFxuLS1cbm5ldC9yeHJwYy9wZWVyX29iamVjdC5jLTEzNS0gKi9cbm5ldC9yeHJwYy9wZWVyX29iamVjdC5jOjEzNjpzdHJ1Y3QgcnhycGNfcGVlciAqcnhycGNfbG9va3VwX3BlZXJfcmN1KHN0cnVjdCByeHJwY19sb2NhbCAqbG9jYWwsXG5uZXQvcnhycGMvcGVlcl9vYmplY3QuYy0xMzctXHRcdFx0XHRcdCBjb25zdCBzdHJ1Y3Qgc29ja2FkZHJfcnhycGMgKnNyeClcbi0tXG5uZXQvcnhycGMvcGVlcl9vYmplY3QuYy0xNTEtICovXG5uZXQvcnhycGMvcGVlcl9vYmplY3QuYzoxNTI6dm9pZCByeHJwY19hc3Nlc3NfTVRVX3NpemUoc3RydWN0IHJ4cnBjX2xvY2FsICpsb2NhbCwgc3RydWN0IHJ4cnBjX3BlZXIgKnBlZXIpXG5uZXQvcnhycGMvcGVlcl9vYmplY3QuYy0xNTMte1xuLS1cbm5ldC9yeHJwYy9wZWVyX29iamVjdC5jLTIyMS0gKi9cbm5ldC9yeHJwYy9wZWVyX29iamVjdC5jOjIyMjpzdHJ1Y3QgcnhycGNfcGVlciAqcnhycGNfYWxsb2NfcGVlcihzdHJ1Y3QgcnhycGNfbG9jYWwgKmxvY2FsLCBnZnBfdCBnZnAsXG5uZXQvcnhycGMvcGVlcl9vYmplY3QuYy0yMjMtXHRcdFx0XHQgICAgZW51bSByeHJwY19wZWVyX3RyYWNlIHdoeSlcbi0tXG5uZXQvcnhycGMvcGVlcl9vYmplY3QuYz0zMDQ9c3RhdGljIHZvaWQgcnhycGNfZnJlZV9wZWVyKHN0cnVjdCByeHJwY19wZWVyICpwZWVyKVxuLS1cbm5ldC9yeHJwYy9wZWVyX29iamVjdC5jLTMxNi0gKi9cbm5ldC9yeHJwYy9wZWVyX29iamVjdC5jOjMxNzp2b2lkIHJ4cnBjX25ld19pbmNvbWluZ19wZWVyKHN0cnVjdCByeHJwY19sb2NhbCAqbG9jYWwsIHN0cnVjdCByeHJwY19wZWVyICpwZWVyKVxubmV0L3J4cnBjL3BlZXJfb2JqZWN0LmMtMzE4LXtcbi0tXG5uZXQvcnhycGMvcGVlcl9vYmplY3QuYy0zMzMtICovXG5uZXQvcnhycGMvcGVlcl9vYmplY3QuYzozMzQ6c3RydWN0IHJ4cnBjX3BlZXIgKnJ4cnBjX2xvb2t1cF9wZWVyKHN0cnVjdCByeHJwY19sb2NhbCAqbG9jYWwsXG5uZXQvcnhycGMvcGVlcl9vYmplY3QuYy0zMzUtXHRcdFx0XHQgICAgIHN0cnVjdCBzb2NrYWRkcl9yeHJwYyAqc3J4LCBnZnBfdCBnZnApXG4tLVxubmV0L3J4cnBjL3BlZXJfb2JqZWN0LmMtMzg3LSAqL1xubmV0L3J4cnBjL3BlZXJfb2JqZWN0LmM6Mzg4OnN0cnVjdCByeHJwY19wZWVyICpyeHJwY19nZXRfcGVlcihzdHJ1Y3QgcnhycGNfcGVlciAqcGVlciwgZW51bSByeHJwY19wZWVyX3RyYWNlIHdoeSlcbm5ldC9yeHJwYy9wZWVyX29iamVjdC5jLTM4OS17XG4tLVxubmV0L3J4cnBjL3BlZXJfb2JqZWN0LmMtMzk5LSAqL1xubmV0L3J4cnBjL3BlZXJfb2JqZWN0LmM6NDAwOnN0cnVjdCByeHJwY19wZWVyICpyeHJwY19nZXRfcGVlcl9tYXliZShzdHJ1Y3QgcnhycGNfcGVlciAqcGVlcixcbm5ldC9yeHJwYy9wZWVyX29iamVjdC5jLTQwMS1cdFx0XHRcdFx0ZW51bSByeHJwY19wZWVyX3RyYWNlIHdoeSlcbi0tXG5uZXQvcnhycGMvcGVlcl9vYmplY3QuYz00MTc9c3RhdGljIHZvaWQgX19yeHJwY19wdXRfcGVlcihzdHJ1Y3QgcnhycGNfcGVlciAqcGVlcilcbi0tXG5uZXQvcnhycGMvcGVlcl9vYmplY3QuYy00MzMtICovXG5uZXQvcnhycGMvcGVlcl9vYmplY3QuYzo0MzQ6dm9pZCByeHJwY19wdXRfcGVlcihzdHJ1Y3QgcnhycGNfcGVlciAqcGVlciwgZW51bSByeHJwY19wZWVyX3RyYWNlIHdoeSlcbm5ldC9yeHJwYy9wZWVyX29iamVjdC5jLTQzNS17XG4tLVxubmV0L3J4cnBjL3BlZXJfb2JqZWN0LmMtNDUxLSAqL1xubmV0L3J4cnBjL3BlZXJfb2JqZWN0LmM6NDUyOnZvaWQgcnhycGNfZGVzdHJveV9hbGxfcGVlcnMoc3RydWN0IHJ4cnBjX25ldCAqcnhuZXQpXG5uZXQvcnhycGMvcGVlcl9vYmplY3QuYy00NTMte1xuLS1cbm5ldC9yeHJwYy9wZWVyX29iamVjdC5jLTQ4Ni0gKi9cbm5ldC9yeHJwYy9wZWVyX29iamVjdC5jOjQ4NzpzdHJ1Y3QgcnhycGNfcGVlciAqcnhycGNfa2VybmVsX2dldF9jYWxsX3BlZXIoc3RydWN0IHNvY2tldCAqc29jaywgc3RydWN0IHJ4cnBjX2NhbGwgKmNhbGwpXG5uZXQvcnhycGMvcGVlcl9vYmplY3QuYy00ODgte1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wOCAxNDo0NDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA4MzU5CgkJCQkJCQlvdXRwdXQ6IDExNwoJCQkJCQkJdGhvdWdodHM6IDI2OAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBBbmFseXNpcyBvZiB0aGUgUlhSUEMgUGVlciBEZXN0cnVjdGlvbiBQYXRjaCoqCgpPa2F5LCBzbyBJJiMzOTt2ZSBiZWVuIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBhbmQsIHJpZ2h0IG9mZiB0aGUgYmF0LCBpdCYjMzk7cyBwcmV0dHkgY2xlYXIgdGhhdCBgcnhycGNfZGVzdHJveV9hbGxfcGVlcnNgIGlzIHRoZSBtYWluIGZ1bmN0aW9uIHRoYXQmIzM5O3MgYmVlbiBtb2RpZmllZC4gQSBxdWljayBnbGFuY2UgYXQgdGhlIGNvZGUgcmV2ZWFscyB0aGF0IGByeHJwY19leGl0X25ldGAgYWxzbyBjYWxscyBpdCwgc28gdGhhdCYjMzk7cyBkZWZpbml0ZWx5IGEgcmVsYXRlZCBhcmVhLiBHb29kIHRvIGtub3cuIExldCYjMzk7cyBtYWtlIHN1cmUgdGhhdCBgcnhycGNfZGVzdHJveV9hbGxfcGVlcnNgIGlzIHRoZSByaWdodCBmb2N1cyBzeW1ib2wgdG8gdXNlLi4uIHllcCwgaXQgbG9va3MgbGlrZSBpdCBpcy4gSXTigJlzICp0aGUqIGZ1bmN0aW9uIHRoZXkmIzM5O3ZlIGNoYW5nZWQsIHdoaWNoIGlzIHdoYXQgSSBzdXNwZWN0ZWQuIEFuZCBzaW5jZSBgcnhycGNfZXhpdF9uZXRgIGNhbGxzIGl0LCBpdCBtYWtlcyBzZW5zZSB0byBpbmNsdWRlIGl0LgoKTm93LCBjb25maWctd2lzZSwgaXQgbG9va3MgbGlrZSB3ZSYjMzk7cmUgZGVhbGluZyB3aXRoIGBBRl9SWFJQQ2Agc3BlY2lmaWNhbGx5LCB3aGljaCwgb2YgY291cnNlLCByZWxpZXMgb24gYElORVRgLiBUaGF0IG1ha2VzIHNlbnNlLgoKQWxyaWdodCwgdGltZSB0byB0aGluayBhYm91dCBgc2V0LXJlc3VsdHNgLiBXZSBuZWVkIHRvIGRlZmluZSBhbGwgdGhlIHBhcmFtZXRlcnMgdG8gcGFzcyB0byBpdDoKCiogICAqKldvcnRoRnV6emluZyoqOiBEZWZpbml0ZWx5IHRydWUuIFRoaXMgcGF0Y2ggaW50cm9kdWNlcyBhIHNwaW5sb2NrIChgcnhuZXQtJmd0O3BlZXJfaGFzaF9sb2NrYCkgaW4gYHJ4cnBjX2Rlc3Ryb3lfYWxsX3BlZXJzYCBmb3Igc3luY2hyb25pemF0aW9uLiBUaGlzIGlzIGNyaXRpY2FsIGZvciBwcmV2ZW50aW5nIHVzZS1hZnRlci1mcmVlIGlzc3VlcyB0aGF0IGNhbiBvY2N1ciBkdXJpbmcgbmV0d29yayBuYW1lc3BhY2UgdGVhcmRvd24gaW4gYEFGX1JYUlBDYC4gQW55IGNoYW5nZSB0aGF0IGFsdGVycyByZWFjaGFibGUgbG9ja2luZyBhbmQgc3luY2hyb25pemF0aW9uIGluIGEgY29yZSBuZXR3b3JraW5nIHByb3RvY29sIGlzIHdvcnRoIGEgY2xvc2UgbG9vay4KKiAgICoqUmVhc29uaW5nKio6IEkmIzM5O2xsIHdvcmQgaXQgc29tZXRoaW5nIGxpa2U6ICYjMzQ7VGhlIHBhdGNoIGFkZHMgc3BpbmxvY2sgc3luY2hyb25pemF0aW9uIChgcnhuZXQtJmd0O3BlZXJfaGFzaF9sb2NrYCkgaW4gYHJ4cnBjX2Rlc3Ryb3lfYWxsX3BlZXJzYCB0byBwcmV2ZW50IHVzZS1hZnRlci1mcmVlIHJhY2VzIGR1cmluZyBuZXR3b3JrIG5hbWVzcGFjZSB0ZWFyZG93biBpbiBBRl9SWFJQQy4gVGhpcyBtb2RpZmllcyByZWFjaGFibGUgbG9ja2luZy9zeW5jaHJvbml6YXRpb24gbG9naWMgaW4gYSBjb3JlIG5ldHdvcmtpbmcgcHJvdG9jb2wuJiMzNDsKKiAgICoqRm9jdXNTeW1ib2xzKio6IEFzIHdlIGFscmVhZHkgZXN0YWJsaXNoZWQsIHRoaXMgd2lsbCBiZSBgWyYjMzQ7cnhycGNfZGVzdHJveV9hbGxfcGVlcnMmIzM0OywgJiMzNDtyeHJwY19leGl0X25ldCYjMzQ7XWAuCiogICAqKkVuYWJsZUNvbmZpZ3MqKjogYFsmIzM0O0FGX1JYUlBDJiMzNDssICYjMzQ7SU5FVCYjMzQ7XWAg4oCTIHRoYXQmIzM5O3MgYSBuby1icmFpbmVyLgoKT2theSwgSSB0aGluayB0aGF0IGNvdmVycyBldmVyeXRoaW5nLiBMZXQgbWUganVzdCBkbyBhIHF1aWNrIHNhbml0eSBjaGVjayB0byBtYWtlIHN1cmUgSSYjMzk7bSBub3QgbWlzc2luZyBhbnl0aGluZ+KApiBhbmQgdGhlbiBpdCYjMzk7cyB0aW1lIHRvIGNhbGwgYHNldC1yZXN1bHRzYC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDggMTQ6NDQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0FGX1JYUlBDJiMzNDssCiAgICAmIzM0O0lORVQmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtyeHJwY19kZXN0cm95X2FsbF9wZWVycyYjMzQ7LAogICAgJiMzNDtyeHJwY19leGl0X25ldCYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBhZGRzIHNwaW5sb2NrIHN5bmNocm9uaXphdGlvbiAocGVlcl9oYXNoX2xvY2spIGFyb3VuZCBwZWVyIGhhc2ggdGFibGUgaXRlcmF0aW9uIGluIHJ4cnBjX2Rlc3Ryb3lfYWxsX3BlZXJzIHRvIHByZXZlbnQgY29uY3VycmVudCB1c2UtYWZ0ZXItZnJlZSByYWNlcyBkdXJpbmcgbmV0d29yayBuYW1lc3BhY2UgY2xlYW51cC4gVGhpcyBhbHRlcnMgbG9ja2luZyBhbmQgc3luY2hyb25pemF0aW9uIGluIHJlYWNoYWJsZSBBRl9SWFJQQyBuZXR3b3JraW5nIGNvZGUuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0FGX1JYUlBDJiMzNDssCiAgICAmIzM0O0lORVQmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtyeHJwY19kZXN0cm95X2FsbF9wZWVycyYjMzQ7LAogICAgJiMzNDtyeHJwY19leGl0X25ldCYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBhZGRzIHNwaW5sb2NrIHN5bmNocm9uaXphdGlvbiAocGVlcl9oYXNoX2xvY2spIGFyb3VuZCBwZWVyIGhhc2ggdGFibGUgaXRlcmF0aW9uIGluIHJ4cnBjX2Rlc3Ryb3lfYWxsX3BlZXJzIHRvIHByZXZlbnQgY29uY3VycmVudCB1c2UtYWZ0ZXItZnJlZSByYWNlcyBkdXJpbmcgbmV0d29yayBuYW1lc3BhY2UgY2xlYW51cC4gVGhpcyBhbHRlcnMgbG9ja2luZyBhbmQgc3luY2hyb25pemF0aW9uIGluIHJlYWNoYWJsZSBBRl9SWFJQQyBuZXR3b3JraW5nIGNvZGUuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTUvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA4IDE0OjQ0PC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5JZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDggMTQ6NDQ8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+a21zYW4tZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Y29yZTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtLTVNBTlJlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBhZGRzIHNwaW5fbG9ja19iaCBhbmQgc3Bpbl91bmxvY2tfYmggYXJvdW5kIHRoZSBwZWVyIGhhc2ggdGFibGUgaXRlcmF0aW9uIGluIHJ4cnBjX2Rlc3Ryb3lfYWxsX3BlZXJzKCkgdG8gcHJldmVudCByYWNlIGNvbmRpdGlvbnMgYW5kIHBvdGVudGlhbCB1c2UtYWZ0ZXItZnJlZSBkdXJpbmcgY2xlYW51cC4gSXQgZG9lcyBub3QgaW50cm9kdWNlIGFueSBtZW1vcnkgYWxsb2NhdGlvbnMsIHVuaW5pdGlhbGl6ZWQgdmFyaWFibGVzLCB1c2VyLXNwYWNlIGNvcGllcyAoaW5mby1sZWFrcyksIG9yIGFsdGVyIGRhdGEgaW5pdGlhbGl6YXRpb24gbG9naWMuIEFueSBjb25jdXJyZW5jeSwgbG9ja2luZywgb3IgdXNlLWFmdGVyLWZyZWUgaXNzdWVzIGFyZSBkZXRlY3RlZCBieSBMT0NLREVQIGFuZCBLQVNBTi4gVGhlcmVmb3JlLCBhIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaXMgbm90IG5lZWRlZC4mIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgc2VjdXJpdHkgZW5naW5lZXIgc3BlY2lhbGl6aW5nIGluIGtlcm5lbCBtZW1vcnkKZXJyb3IgZGV0ZWN0b3JzIChLQVNBTiBhbmQgS01TQU4pLiBZb3VyIGpvYiBpcyB0byByZXZpZXcgdGhlIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQKZGV0ZXJtaW5lIGlmIHRoZSBjb2RlIGNoYW5nZXMganVzdGlmeSBzcGF3bmluZyBhIGRlZGljYXRlZCBLTVNBTiAoS2VybmVsTWVtb3J5U2FuaXRpemVyKQpmdXp6aW5nIHNlc3Npb24gaW4gYWRkaXRpb24gdG8gc3RhbmRhcmQgS0FTQU4gZnV6emluZy4KCkNSSVRJQ0FMIERJU1RJTkNUSU9OIEJFVFdFRU4gS0FTQU4gQU5EIEtNU0FOOgotIFN0YW5kYXJkIEtBU0FOIGtlcm5lbCBidWlsZHMgKHVwc3RyZWFtLWFwcGFybW9yLWthc2FuLmNvbmZpZykgYWxyZWFkeSBlbmFibGUKICBhIGNvbXByZWhlbnNpdmUgc3VpdGUgb2YgZGVidWdnaW5nIHRvb2xzIGFuZCBzYW5pdGl6ZXJzLCBpbmNsdWRpbmcgS0FTQU4KICAob3V0LW9mLWJvdW5kcyBhY2Nlc3NlcywgdXNlLWFmdGVyLWZyZWUsIGRvdWJsZSBmcmVlLCBpbnZhbGlkIGZyZWUpLCBMT0NLREVQCiAgKGxvY2tpbmcgYnVncyBhbmQgZGVhZGxvY2tzKSwgVUItc2FuaXRpemVycywgYW5kIG1lbW9yeSBjb3JydXB0aW9uIGNoZWNrcy4KLSBLTVNBTiAoS2VybmVsTWVtb3J5U2FuaXRpemVyKSBkZXRlY3RzIHJlYWRzIG9mIFVOSU5JVElBTElaRUQgbWVtb3J5IChzdGFjaywgaGVhcCwKICBvciBwYWdlIGFsbG9jYXRpb25zKSBhbmQga2VybmVsLXRvLXVzZXIgbWVtb3J5IGluZm8tbGVha3MuCgpSdWxlOiBUSEVSRSBJUyBOTyBTRU5TRSBJTiBSVU5OSU5HIEEgS01TQU4gU0VTU0lPTiBJRiBBIEJVRyBDQU4gQkUgQ0FVR0hUIEJZIEtBU0FOLApMT0NLREVQLCBPUiBPVEhFUiBTVEFOREFSRCBCVUcgREVURUNUT1JTLgpBIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaW5jdXJzIHNpZ25pZmljYW50IHJlc291cmNlIGNvc3RzLiBZb3UgbXVzdCBPTkxZCnNldCBOZWVkc0tNU0FOPXRydWUgaWYgdGhlIGNvZGUgY2hhbmdlcyBpbnRyb2R1Y2Ugb3IgZXhwb3NlIFVOSU5JVElBTElaRUQgTUVNT1JZIHJpc2tzCnRoYXQgYXJlIGRldGVjdGVkIE9OTFkgYnkgS01TQU4uCgpMb29rIGhvbGlzdGljYWxseSBhdCB0aGUgcGF0Y2ggc2VyaWVzIGFuZCBzdXJyb3VuZGluZyBjb2RlLiBFdmVuIGlmIG5vIGRpcmVjdAp1bmluaXRpYWxpemVkIGZpZWxkIGFjY2Vzc2VzIG9yIG5ldyBidWZmZXIgYWxsb2NhdGlvbnMgYXJlIGFkZGVkIGluIHRoZSBkaWZmIGl0c2VsZiwKYSBwYXRjaCBtYXkgYWx0ZXIgY29udHJvbCBmbG93LCBib3VuZHMgY2hlY2tpbmcsIG9yIGRhdGEgbGVuZ3RoIGNhbGN1bGF0aW9ucyBpbiB3YXlzCnRoYXQgY2hhbmdlIGhvdyB0aGUgcmVzdCBvZiB0aGUgY29kZSBvcGVyYXRlcyBvbiBleGlzdGluZyBidWZmZXJzIChlLmcuIGFsbG93aW5nCnVuaW5pdGlhbGl6ZWQgc3RhY2svaGVhcCBtZW1vcnkgdG8gYmUgcmVhZCwgY29waWVkIHRvIHVzZXIgc3BhY2UsIG9yIHVzZWQgaW4gY29udHJvbApmbG93KS4gRG8gbm90IGhlc2l0YXRlIHRvIHVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGluc3BlY3QgdGhlIHN1cnJvdW5kaW5nIGNvZGUsCmNhbGxlZCBmdW5jdGlvbnMsIGFuZCBjYWxsZXJzLgoKU2V0IE5lZWRzS01TQU49dHJ1ZSBPTkxZIElGIHRoZSBwYXRjaCBpbnRyb2R1Y2VzIG9yIG1vZGlmaWVzOgoxLiBLZXJuZWwgc3RydWN0dXJlcyBzZW50IHRvIHVzZXIgc3BhY2UgKHZpYSBjb3B5X3RvX3VzZXIsIHB1dF91c2VyLCBuZXRsaW5rIHNrYgogICBhdHRyaWJ1dGVzLCBpb2N0bCBvdXRwdXQgYXJndW1lbnRzLCBzb2NrZXQgb3B0aW9ucywgb3IgQlBGIGJ1ZmZlcnMpIHdoZXJlIGZpZWxkcwogICBvciBzdHJ1Y3R1cmUgcGFkZGluZyBtaWdodCBub3QgYmUgZnVsbHkgaW5pdGlhbGl6ZWQvemVyb2VkLgoyLiBDb25kaXRpb25hbCBsb2dpYyBvciBicmFuY2hpbmcgdGhhdCBkZXBlbmRzIG9uIHBvdGVudGlhbGx5IHVuaW5pdGlhbGl6ZWQgdmFyaWFibGVzCiAgIG9yIHN0cnVjdCBmaWVsZHMuCjMuIEFsbG9jYXRpb24gb3IgaW5pdGlhbGl6YXRpb24gb2YgY29tcGxleCBkYXRhIHN0cnVjdHVyZXMgd2hlcmUgdW5pbml0aWFsaXplZCBmaWVsZHMKICAgY291bGQgYmUgcmVhZCBsYXRlciBpbiByZWFjaGFibGUgY29kZSBwYXRocy4KNC4gQm91bmRzIGNoZWNrcywgbGVuZ3Rocywgb3IgbG9naWMgaW4gYSB3YXkgdGhhdCBhbGxvd3Mgc3Vycm91bmRpbmcgY29kZSB0byBhY2Nlc3MKICAgdW5pbml0aWFsaXplZCBieXRlcyBvZiBleGlzdGluZyBidWZmZXJzLgoKU2V0IE5lZWRzS01TQU49ZmFsc2UgSUY6Ci0gVGhlIGNvZGUgY2hhbmdlcyBwcmltYXJpbHkgcmlzayBvdXQtb2YtYm91bmRzIGFjY2VzcywgYXJyYXkgb3ZlcmZsb3dzLCBOVUxMIHBvaW50ZXIKICBkZXJlZmVyZW5jZXMsIGxvY2tpbmcgZGVhZGxvY2tzLCBvciB1c2UtYWZ0ZXItZnJlZSBidWdzICh0aGVzZSBhcmUgYWxyZWFkeSBjYXVnaHQKICBieSBLQVNBTiwgTE9DS0RFUCwgb3Igc3RhbmRhcmQgYnVnIGRldGVjdG9ycykuCi0gQWxsIHN0YWNrL2hlYXAgc3RydWN0dXJlcyB0b3VjaGVkIG9yIGludHJvZHVjZWQgYnkgdGhlIHBhdGNoIGFyZSBmdWxseSB6ZXJvZWQKICBvciBpbml0aWFsaXplZCAoZS5nLiB1c2luZyA9IHswfSwgbWVtc2V0LCBremFsbG9jKSBiZWZvcmUgYmVpbmcgcmVhZCBvciBjb3BpZWQuCi0gVGhlIHBhdGNoIGRvZXMgbm90IGludHJvZHVjZSBhbnkgcmlzayBvZiB1bmluaXRpYWxpemVkIG1lbW9yeSB1c2FnZSBvciBpbmZvLWxlYWtzLgoKVXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gaW5zcGVjdCB0aGUgc3Vycm91bmRpbmcgY29kZSBpZiBuZWNlc3NhcnksIHRoZW4gcHJvdmlkZQpkZXRhaWxlZCBLTVNBTlJlYXNvbmluZyBjb250cmFzdGluZyBLQVNBTiB2cyBLTVNBTiBhcHBsaWNhYmlsaXR5IGZvciB0aGlzIHBhdGNoLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPlRhcmdldCBhcmNoaXRlY3R1cmU6IGFtZDY0CgpGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IDViYmQ2N2ZmNjM1OGNhYzRlY2JhODMyOGM3MDIyZWIzMTgxZDZlNTAKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgVHVlIFNlcCA4IDE0OjQzOjM1IDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvbmV0L3J4cnBjL3BlZXJfb2JqZWN0LmMgYi9uZXQvcnhycGMvcGVlcl9vYmplY3QuYwppbmRleCBmYTlhNDA2ZTExNjgzLi5mYWEyOTgzNjM4YjJiIDEwMDY0NAotLS0gYS9uZXQvcnhycGMvcGVlcl9vYmplY3QuYwomIzQzOyYjNDM7JiM0MzsgYi9uZXQvcnhycGMvcGVlcl9vYmplY3QuYwpAQCAtNDU0LDYgJiM0Mzs0NTQsMTIgQEAgdm9pZCByeHJwY19kZXN0cm95X2FsbF9wZWVycyhzdHJ1Y3QgcnhycGNfbmV0ICpyeG5ldCkKIAlzdHJ1Y3QgcnhycGNfcGVlciAqcGVlcjsKIAlpbnQgaTsKIAomIzQzOwkvKgomIzQzOwkgKiBQcmV2ZW50IHVzZS1hZnRlci1mcmVlIGlmIGEgcGVlciBpcyBjb25jdXJyZW50bHkgdW5saW5rZWQgZnJvbSB0aGUKJiM0MzsJICogaGFzaCB0YWJsZSBhbmQgZnJlZWQgdmlhIFJDVSBkdXJpbmcgaXRlcmF0aW9uLgomIzQzOwkgKi8KJiM0MzsJc3Bpbl9sb2NrX2JoKCZhbXA7cnhuZXQtJmd0O3BlZXJfaGFzaF9sb2NrKTsKJiM0MzsKIAlmb3IgKGkgPSAwOyBpICZsdDsgSEFTSF9TSVpFKHJ4bmV0LSZndDtwZWVyX2hhc2gpOyBpJiM0MzsmIzQzOykgewogCQlpZiAoaGxpc3RfZW1wdHkoJmFtcDtyeG5ldC0mZ3Q7cGVlcl9oYXNoW2ldKSkKIAkJCWNvbnRpbnVlOwpAQCAtNDY1LDYgJiM0Mzs0NzEsOCBAQCB2b2lkIHJ4cnBjX2Rlc3Ryb3lfYWxsX3BlZXJzKHN0cnVjdCByeHJwY19uZXQgKnJ4bmV0KQogCQkJICAgICAgICZhbXA7cGVlci0mZ3Q7c3J4LnRyYW5zcG9ydCk7CiAJCX0KIAl9CiYjNDM7CiYjNDM7CXNwaW5fdW5sb2NrX2JoKCZhbXA7cnhuZXQtJmd0O3BlZXJfaGFzaF9sb2NrKTsKIH0KIAogLyoqCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE3LzM8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wOCAxNDo0NDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+a21zYW4tZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMjA1CgkJCQkJCQlvdXRwdXQ6IDM4CgkJCQkJCQl0aG91Z2h0czogNzQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aGUgc2l0dWF0aW9uOgoKKipJbnZlc3RpZ2F0aW5nIHRoZSBQZWVyIERlc3RydWN0aW9uIGluIHJ4cnBjKioKCkFscmlnaHQsIHRoZSBidWcgcmVwb3J0IHBvaW50cyB0byBgbmV0L3J4cnBjL3BlZXJfb2JqZWN0LmNgIGFuZCBzcGVjaWZpY2FsbHkgYHJ4cnBjX2Rlc3Ryb3lfYWxsX3BlZXJzYC4gVGhhdCYjMzk7cyBhIGdvb2Qgc3RhcnRpbmcgcG9pbnQuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoYXQmIzM5O3MgaGFwcGVuaW5nIGluIHRoYXQgZnVuY3Rpb24gYW5kIGl0cyBzdXJyb3VuZGluZyBjb2RlIHRvIHRyYWNrIGRvd24gdGhlIHJvb3QgY2F1c2UuIFRoaXMgbGlrZWx5IGludm9sdmVzIGhvdyBwZWVyIG9iamVjdHMgYXJlIGNyZWF0ZWQsIG1hbmFnZWQsIGFuZCBmaW5hbGx5IGNsZWFuZWQgdXAgd2l0aGluIHRoZSByeHJwYyBtb2R1bGUuIEkmIzM5O2xsIG5lZWQgdG8gbG9vayBhdCBhbnkgcG90ZW50aWFsIHJhY2UgY29uZGl0aW9ucyBvciByZXNvdXJjZSBsZWFrcyB3aXRoaW4gdGhpcyBjb250ZXh0LgoKVGltZSB0byBwdWxsIHVwIHRoYXQgZmlsZSBhbmQgZ2V0IHRvIHJlYWRpbmcuLi4gSSYjMzk7bGwgdXNlIGByZWFkLWZpbGVgIHRvIGdyYWIgYG5ldC9yeHJwYy9wZWVyX29iamVjdC5jYCBhbmQgc3RhcnQgZGlnZ2luZyBpbi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOC8zPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDggMTQ6NDQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtuZXQvcnhycGMvcGVlcl9vYmplY3QuYyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDQ0NSwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiA0NQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgNDQ1Olx0XHRcdFx0X19yeHJwY19wdXRfcGVlcihwZWVyKTtcbiA0NDY6XHRcdH1cbiA0NDc6XHR9XG4gNDQ4Olx0XG4gNDQ5Olx0LypcbiA0NTA6XHQgKiBNYWtlIHN1cmUgYWxsIHBlZXIgcmVjb3JkcyBoYXZlIGJlZW4gZGlzY2FyZGVkLlxuIDQ1MTpcdCAqL1xuIDQ1MjpcdHZvaWQgcnhycGNfZGVzdHJveV9hbGxfcGVlcnMoc3RydWN0IHJ4cnBjX25ldCAqcnhuZXQpXG4gNDUzOlx0e1xuIDQ1NDpcdFx0c3RydWN0IHJ4cnBjX3BlZXIgKnBlZXI7XG4gNDU1Olx0XHRpbnQgaTtcbiA0NTY6XHRcbiA0NTc6XHRcdC8qXG4gNDU4Olx0XHQgKiBQcmV2ZW50IHVzZS1hZnRlci1mcmVlIGlmIGEgcGVlciBpcyBjb25jdXJyZW50bHkgdW5saW5rZWQgZnJvbSB0aGVcbiA0NTk6XHRcdCAqIGhhc2ggdGFibGUgYW5kIGZyZWVkIHZpYSBSQ1UgZHVyaW5nIGl0ZXJhdGlvbi5cbiA0NjA6XHRcdCAqL1xuIDQ2MTpcdFx0c3Bpbl9sb2NrX2JoKFx1MDAyNnJ4bmV0LVx1MDAzZXBlZXJfaGFzaF9sb2NrKTtcbiA0NjI6XHRcbiA0NjM6XHRcdGZvciAoaSA9IDA7IGkgXHUwMDNjIEhBU0hfU0laRShyeG5ldC1cdTAwM2VwZWVyX2hhc2gpOyBpJiM0MzsmIzQzOykge1xuIDQ2NDpcdFx0XHRpZiAoaGxpc3RfZW1wdHkoXHUwMDI2cnhuZXQtXHUwMDNlcGVlcl9oYXNoW2ldKSlcbiA0NjU6XHRcdFx0XHRjb250aW51ZTtcbiA0NjY6XHRcbiA0Njc6XHRcdFx0aGxpc3RfZm9yX2VhY2hfZW50cnkocGVlciwgXHUwMDI2cnhuZXQtXHUwMDNlcGVlcl9oYXNoW2ldLCBoYXNoX2xpbmspIHtcbiA0Njg6XHRcdFx0XHRwcl9lcnIoXCYjMzQ7TGVha2VkIHBlZXIgJXggeyV1fSAlcElTcFxcblwmIzM0OyxcbiA0Njk6XHRcdFx0XHQgICAgICAgcGVlci1cdTAwM2VkZWJ1Z19pZCxcbiA0NzA6XHRcdFx0XHQgICAgICAgcmVmY291bnRfcmVhZChcdTAwMjZwZWVyLVx1MDAzZXJlZiksXG4gNDcxOlx0XHRcdFx0ICAgICAgIFx1MDAyNnBlZXItXHUwMDNlc3J4LnRyYW5zcG9ydCk7XG4gNDcyOlx0XHRcdH1cbiA0NzM6XHRcdH1cbiA0NzQ6XHRcbiA0NzU6XHRcdHNwaW5fdW5sb2NrX2JoKFx1MDAyNnJ4bmV0LVx1MDAzZXBlZXJfaGFzaF9sb2NrKTtcbiA0NzY6XHR9XG4gNDc3Olx0XG4gNDc4Olx0LyoqXG4gNDc5Olx0ICogcnhycGNfa2VybmVsX2dldF9jYWxsX3BlZXIgLSBHZXQgdGhlIHBlZXIgYWRkcmVzcyBvZiBhIGNhbGxcbiA0ODA6XHQgKiBAc29jazogVGhlIHNvY2tldCBvbiB3aGljaCB0aGUgY2FsbCBpcyBpbiBwcm9ncmVzcy5cbiA0ODE6XHQgKiBAY2FsbDogVGhlIGNhbGwgdG8gcXVlcnlcbiA0ODI6XHQgKlxuIDQ4MzpcdCAqIEdldCBhIHJlY29yZCBmb3IgdGhlIHJlbW90ZSBwZWVyIGluIGEgY2FsbC5cbiA0ODQ6XHQgKlxuIDQ4NTpcdCAqIFJldHVybjogVGhlIGNhbGwmIzM5O3MgcGVlciByZWNvcmQuXG4gNDg2Olx0ICovXG4gNDg3Olx0c3RydWN0IHJ4cnBjX3BlZXIgKnJ4cnBjX2tlcm5lbF9nZXRfY2FsbF9wZWVyKHN0cnVjdCBzb2NrZXQgKnNvY2ssIHN0cnVjdCByeHJwY19jYWxsICpjYWxsKVxuIDQ4ODpcdHtcbiA0ODk6XHRcdHJldHVybiByeHJwY19nZXRfcGVlcihjYWxsLVx1MDAzZXBlZXIsIHJ4cnBjX3BlZXJfZ2V0X2FwcGxpY2F0aW9uKTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOS8zPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDggMTQ6NDQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPmttc2FuLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzE1NgoJCQkJCQkJb3V0cHV0OiAxMzMKCQkJCQkJCXRob3VnaHRzOiAyMzEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQXNzZXNzbWVudCBvZiB0aGUgUGF0Y2gqKgoKT2theSwgc28gdGhpcyBwYXRjaCBpcyBzdHJhaWdodGZvcndhcmQuIEFsbCBpdCYjMzk7cyBkb2luZyBpcyB3cmFwcGluZyB0aGUgbG9vcCBpbiBgcnhycGNfZGVzdHJveV9hbGxfcGVlcnNgIHdpdGggYSBgc3Bpbl9sb2NrX2JoYCBhbmQgYHNwaW5fdW5sb2NrX2JoYCBwYWlyLiBDbGVhcmx5LCB0aGlzIGlzIHB1cmVseSBhYm91dCBsb2NraW5nIOKAkyBjb25jdXJyZW5jeSBtYW5hZ2VtZW50IHRvIGJlIGV4YWN0LiBJdCYjMzk7cyBkZXNpZ25lZCB0byBwcm90ZWN0IGFnYWluc3QgcG90ZW50aWFsIHVzZS1hZnRlci1mcmVlIHNjZW5hcmlvcyBvciByYWNlIGNvbmRpdGlvbnMgdGhhdCBjb3VsZCBvY2N1ciB3aGVuIGl0ZXJhdGluZyB0aHJvdWdoIHRoZSBgcGVlcl9oYXNoYC4KCkxldCYjMzk7cyBicmVhayB0aGlzIGRvd24gc3lzdGVtYXRpY2FsbHkuIEZpcnN0LCBkb2VzIHRoaXMgcGF0Y2ggdG91Y2ggYW55IGtlcm5lbCBzdHJ1Y3R1cmVzIHRoYXQgYXJlIHNlbnQgdG8gdXNlciBzcGFjZT8gTm9wZSwgbm90IGF0IGFsbC4gU2Vjb25kLCBhcmUgdGhlcmUgYW55IGludHJvZHVjZWQgY29uZGl0aW9uYWxzIGJhc2VkIG9uIHBvdGVudGlhbGx5IHVuaW5pdGlhbGl6ZWQgdmFyaWFibGVzPyBTdGlsbCBuby4gVGhpcmQsIGRvZXMgaXQgaW52b2x2ZSBhbGxvY2F0aW5nIG9yIGluaXRpYWxpemluZyBhbnkgY29tcGxleCBkYXRhIHN0cnVjdHVyZXM/IEFnYWluLCBuby4gVGhlbiB3ZSBsb29rIGF0IGJvdW5kcyBjaGVja3MgYW5kIGxlbmd0aHMuIE5vdGhpbmcgaGVyZS4gQW5kIGZpbmFsbHksIGRvZXMgdGhpcyBwYXRjaCBleHBvc2UgYW55IHVuaW5pdGlhbGl6ZWQgbWVtb3J5PyBObywgSSBkb24mIzM5O3Qgc2VlIGFueSBvZiB0aG9zZSByaXNrcyBlaXRoZXIuCgpDb25zaWRlcmluZyBhbGwgdGhhdCwgSSYjMzk7bSBjb25maWRlbnQgaW4gc2F5aW5nIHRoYXQgYE5lZWRzS01TQU4gPSBmYWxzZWAuIEl0IHNlZW1zIHRoZSBwcmltYXJ5IGNvbmNlcm5zIGFyZSByZWxhdGVkIHRvIGNvbmN1cnJlbmN5LCB3aGljaCBhcmUgaWRlYWxseSBhZGRyZXNzZWQgYnkgdG9vbHMgbGlrZSBLQVNBTiBhbmQgTE9DS0RFUC4gVGhleSYjMzk7bGwgcmVhZGlseSBjYXRjaCBhbnkgaXNzdWVzIHRoaXMgbWlnaHQgaW50cm9kdWNlIGluIHRoZW9yeS4KCk5vdywgbGV0JiMzOTtzIGp1c3QgZG8gYSBxdWljayBkb3VibGUtY2hlY2sgdG8gbWFrZSBzdXJlIG15IHJlYXNvbmluZyBpcyBjbGVhciwgYWNjdXJhdGUsIGFuZCBjb25jaXNlLiBXZSBhbHdheXMgbmVlZCB0byBjb250cmFzdCBLQVNBTiBhbmQgS01TQU4uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjAvMzwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA4IDE0OjQ0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0tNU0FOUmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGFkZHMgc3Bpbl9sb2NrX2JoIGFuZCBzcGluX3VubG9ja19iaCBhcm91bmQgdGhlIHBlZXIgaGFzaCB0YWJsZSBpdGVyYXRpb24gaW4gcnhycGNfZGVzdHJveV9hbGxfcGVlcnMoKSB0byBwcmV2ZW50IHJhY2UgY29uZGl0aW9ucyBhbmQgcG90ZW50aWFsIHVzZS1hZnRlci1mcmVlIGR1cmluZyBjbGVhbnVwLiBJdCBkb2VzIG5vdCBpbnRyb2R1Y2UgYW55IG1lbW9yeSBhbGxvY2F0aW9ucywgdW5pbml0aWFsaXplZCB2YXJpYWJsZXMsIHVzZXItc3BhY2UgY29waWVzIChpbmZvLWxlYWtzKSwgb3IgYWx0ZXIgZGF0YSBpbml0aWFsaXphdGlvbiBsb2dpYy4gQW55IGNvbmN1cnJlbmN5LCBsb2NraW5nLCBvciB1c2UtYWZ0ZXItZnJlZSBpc3N1ZXMgYXJlIGRldGVjdGVkIGJ5IExPQ0tERVAgYW5kIEtBU0FOLiBUaGVyZWZvcmUsIGEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpcyBub3QgbmVlZGVkLiYjMzQ7LAogICYjMzQ7TmVlZHNLTVNBTiYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggYWRkcyBzcGluX2xvY2tfYmggYW5kIHNwaW5fdW5sb2NrX2JoIGFyb3VuZCB0aGUgcGVlciBoYXNoIHRhYmxlIGl0ZXJhdGlvbiBpbiByeHJwY19kZXN0cm95X2FsbF9wZWVycygpIHRvIHByZXZlbnQgcmFjZSBjb25kaXRpb25zIGFuZCBwb3RlbnRpYWwgdXNlLWFmdGVyLWZyZWUgZHVyaW5nIGNsZWFudXAuIEl0IGRvZXMgbm90IGludHJvZHVjZSBhbnkgbWVtb3J5IGFsbG9jYXRpb25zLCB1bmluaXRpYWxpemVkIHZhcmlhYmxlcywgdXNlci1zcGFjZSBjb3BpZXMgKGluZm8tbGVha3MpLCBvciBhbHRlciBkYXRhIGluaXRpYWxpemF0aW9uIGxvZ2ljLiBBbnkgY29uY3VycmVuY3ksIGxvY2tpbmcsIG9yIHVzZS1hZnRlci1mcmVlIGlzc3VlcyBhcmUgZGV0ZWN0ZWQgYnkgTE9DS0RFUCBhbmQgS0FTQU4uIFRoZXJlZm9yZSwgYSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGlzIG5vdCBuZWVkZWQuJiMzNDssCiAgJiMzNDtOZWVkc0tNU0FOJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA4VDE0OjQzOjM3LjU1MjE4NTYyNFoiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQxMjEwOTYzMDU2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIkFGX1JYUlBDXCIsXG4gICAgXCJJTkVUXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwicnhycGNfZGVzdHJveV9hbGxfcGVlcnNcIixcbiAgICBcInJ4cnBjX2V4aXRfbmV0XCJcbiAgXSxcbiAgXCJLTVNBTlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBhZGRzIHNwaW5fbG9ja19iaCBhbmQgc3Bpbl91bmxvY2tfYmggYXJvdW5kIHRoZSBwZWVyIGhhc2ggdGFibGUgaXRlcmF0aW9uIGluIHJ4cnBjX2Rlc3Ryb3lfYWxsX3BlZXJzKCkgdG8gcHJldmVudCByYWNlIGNvbmRpdGlvbnMgYW5kIHBvdGVudGlhbCB1c2UtYWZ0ZXItZnJlZSBkdXJpbmcgY2xlYW51cC4gSXQgZG9lcyBub3QgaW50cm9kdWNlIGFueSBtZW1vcnkgYWxsb2NhdGlvbnMsIHVuaW5pdGlhbGl6ZWQgdmFyaWFibGVzLCB1c2VyLXNwYWNlIGNvcGllcyAoaW5mby1sZWFrcyksIG9yIGFsdGVyIGRhdGEgaW5pdGlhbGl6YXRpb24gbG9naWMuIEFueSBjb25jdXJyZW5jeSwgbG9ja2luZywgb3IgdXNlLWFmdGVyLWZyZWUgaXNzdWVzIGFyZSBkZXRlY3RlZCBieSBMT0NLREVQIGFuZCBLQVNBTi4gVGhlcmVmb3JlLCBhIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaXMgbm90IG5lZWRlZC5cIixcbiAgXCJOZWVkc0tNU0FOXCI6IGZhbHNlLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBhZGRzIHNwaW5sb2NrIHN5bmNocm9uaXphdGlvbiAocGVlcl9oYXNoX2xvY2spIGFyb3VuZCBwZWVyIGhhc2ggdGFibGUgaXRlcmF0aW9uIGluIHJ4cnBjX2Rlc3Ryb3lfYWxsX3BlZXJzIHRvIHByZXZlbnQgY29uY3VycmVudCB1c2UtYWZ0ZXItZnJlZSByYWNlcyBkdXJpbmcgbmV0d29yayBuYW1lc3BhY2UgY2xlYW51cC4gVGhpcyBhbHRlcnMgbG9ja2luZyBhbmQgc3luY2hyb25pemF0aW9uIGluIHJlYWNoYWJsZSBBRl9SWFJQQyBuZXR3b3JraW5nIGNvZGUuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA4VDE0OjQzOjM3LjU1MjE5MTI3M1oiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTQ3MDA3MzA2MiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IDViYmQ2N2ZmNjM1OGNhYzRlY2JhODMyOGM3MDIyZWIzMTgxZDZlNTBcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIFR1ZSBTZXAgOCAxNDo0MzozNSAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9uZXQvcnhycGMvcGVlcl9vYmplY3QuYyBiL25ldC9yeHJwYy9wZWVyX29iamVjdC5jXFxuaW5kZXggZmE5YTQwNmUxMTY4My4uZmFhMjk4MzYzOGIyYiAxMDA2NDRcXG4tLS0gYS9uZXQvcnhycGMvcGVlcl9vYmplY3QuY1xcbisrKyBiL25ldC9yeHJwYy9wZWVyX29iamVjdC5jXFxuQEAgLTQ1NCw2ICs0NTQsMTIgQEAgdm9pZCByeHJwY19kZXN0cm95X2FsbF9wZWVycyhzdHJ1Y3QgcnhycGNfbmV0ICpyeG5ldClcXG4gXFx0c3RydWN0IHJ4cnBjX3BlZXIgKnBlZXI7XFxuIFxcdGludCBpO1xcbiBcXG4rXFx0LypcXG4rXFx0ICogUHJldmVudCB1c2UtYWZ0ZXItZnJlZSBpZiBhIHBlZXIgaXMgY29uY3VycmVudGx5IHVubGlua2VkIGZyb20gdGhlXFxuK1xcdCAqIGhhc2ggdGFibGUgYW5kIGZyZWVkIHZpYSBSQ1UgZHVyaW5nIGl0ZXJhdGlvbi5cXG4rXFx0ICovXFxuK1xcdHNwaW5fbG9ja19iaChcXHUwMDI2cnhuZXQtXFx1MDAzZXBlZXJfaGFzaF9sb2NrKTtcXG4rXFxuIFxcdGZvciAoaSA9IDA7IGkgXFx1MDAzYyBIQVNIX1NJWkUocnhuZXQtXFx1MDAzZXBlZXJfaGFzaCk7IGkrKykge1xcbiBcXHRcXHRpZiAoaGxpc3RfZW1wdHkoXFx1MDAyNnJ4bmV0LVxcdTAwM2VwZWVyX2hhc2hbaV0pKVxcbiBcXHRcXHRcXHRjb250aW51ZTtcXG5AQCAtNDY1LDYgKzQ3MSw4IEBAIHZvaWQgcnhycGNfZGVzdHJveV9hbGxfcGVlcnMoc3RydWN0IHJ4cnBjX25ldCAqcnhuZXQpXFxuIFxcdFxcdFxcdCAgICAgICBcXHUwMDI2cGVlci1cXHUwMDNlc3J4LnRyYW5zcG9ydCk7XFxuIFxcdFxcdH1cXG4gXFx0fVxcbitcXG4rXFx0c3Bpbl91bmxvY2tfYmgoXFx1MDAyNnJ4bmV0LVxcdTAwM2VwZWVyX2hhc2hfbG9jayk7XFxuIH1cXG4gXFxuIC8qKlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wOFQxNDo0MzozOS4wMjI5NDE0NDVaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJjb3JlIiwiRHVyYXRpb24iOjI3MzU4NTczNzMwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIkFGX1JYUlBDXCIsXG4gICAgXCJJTkVUXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwicnhycGNfZGVzdHJveV9hbGxfcGVlcnNcIixcbiAgICBcInJ4cnBjX2V4aXRfbmV0XCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggYWRkcyBzcGlubG9jayBzeW5jaHJvbml6YXRpb24gKHBlZXJfaGFzaF9sb2NrKSBhcm91bmQgcGVlciBoYXNoIHRhYmxlIGl0ZXJhdGlvbiBpbiByeHJwY19kZXN0cm95X2FsbF9wZWVycyB0byBwcmV2ZW50IGNvbmN1cnJlbnQgdXNlLWFmdGVyLWZyZWUgcmFjZXMgZHVyaW5nIG5ldHdvcmsgbmFtZXNwYWNlIGNsZWFudXAuIFRoaXMgYWx0ZXJzIGxvY2tpbmcgYW5kIHN5bmNocm9uaXphdGlvbiBpbiByZWFjaGFibGUgQUZfUlhSUEMgbmV0d29ya2luZyBjb2RlLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lciBhbmQgc2VjdXJpdHkgZW5naW5lZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGV2YWx1YXRlIHdoZXRoZXIgaXQgd2FycmFudHMgZnV6emluZyB3aXRoIHN5emthbGxlci5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24gaW50ZXJuYWwgYXNzdW1wdGlvbnMuIFlvdSBtdXN0IGFjdGl2ZWx5IHVzZSB5b3VyIGNvZGUgYWNjZXNzXG50b29scyB0byBpbnNwZWN0IHRoZSBhY3R1YWwgc291cmNlIGNvZGUsIGNhbGxlcnMsIGFuZCBzdXJyb3VuZGluZyBjb250ZXh0LlxuXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuMS4gQ09SRSBUUklBR0UgUEhJTE9TT1BIWVxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblRoZSBnb2FsIG9mIHBhdGNoIGZ1enppbmcgaXMgdG8gZGlzY292ZXIgY3Jhc2hlcywgcmVncmVzc2lvbnMsIGV4cG9zZWQgbGF0ZW50IGJ1Z3MsXG5hbmQgbmV3bHkgdHJpZ2dlcmVkIGFzc2VydGlvbnMgaW50cm9kdWNlZCBieSB0aGUgcGF0Y2ggc2VyaWVzLlxuXG4tIFJFQUNIQUJJTElUWSBJUyBUSEUgUFJJTUFSWSBHQVRFOlxuICBGdXp6aW5nIGNhbiBvbmx5IGRpc2NvdmVyIGJ1Z3MgaW4gY29kZSB0aGF0IGNhbiBhY3R1YWxseSBleGVjdXRlIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkXG4gIGVudmlyb25tZW50cyAoR0NFIG9yIFFFTVUsIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBkZXZpY2VzIGxpa2UgVVNCIGdhZGdldHMsIG5ldGRldiwgdHVuL3RhcCkuXG4gIElmIHRoZSBtb2RpZmllZCBjb2RlIGlzIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSAoc2VlIFNlY3Rpb24gMiksIGl0IE1VU1QgTk9UIGJlIGZ1enplZCxcbiAgcmVnYXJkbGVzcyBvZiB3aGV0aGVyIGl0IGFkZHMgYXNzZXJ0aW9ucyBvciBjb21wbGV4IGxvZ2ljLlxuXG4tIERPIE5PVCBCTElORExZIFRSVVNUIFwiTk8gRlVOQ1RJT05BTCBDSEFOR0VcIiAoTkZDSSkgT1IgXCJSRUZBQ1RPUklOR1wiIENMQUlNUzpcbiAgUGF0Y2ggYXV0aG9ycyByb3V0aW5lbHkgbGFiZWwgY2hhbmdlcyBhcyBcImNsZWFudXBzXCIsIFwicmVmYWN0b3JpbmdzXCIsIG9yIHN0YXRlXG4gIFwiTm8gZnVuY3Rpb25hbCBjaGFuZ2UgaW50ZW5kZWRcIi4gRG8gTk9UIHRha2UgdGhlc2UgY2xhaW1zIGF0IGZhY2UgdmFsdWUuXG4gIENvZGUgcmVmYWN0b3JpbmdzIHRoYXQgcmVhcnJhbmdlIGxvZ2ljLCBpbnRyb2R1Y2UgaGVscGVyIGZ1bmN0aW9ucywgb3IgYWx0ZXIgc3RhdGUgbWFuYWdlbWVudFxuICBpbiBjb3JlIHN1YnN5c3RlbXMgZnJlcXVlbnRseSBpbnRyb2R1Y2Ugc3VidGxlIHNlbWFudGljIHNoaWZ0cyBvciB1bmNvdmVyIGxhdGVudCBrZXJuZWwgYnVncy5cbiAgSWYgcmVhY2hhYmxlIGV4ZWN1dGFibGUgY29kZSBpcyBtb2RpZmllZCBvciByZWZhY3RvcmVkLCBpdCBNVVNUIGJlIGZ1enplZC5cblxuLSBORVcgT1IgTU9ESUZJRUQgQVNTRVJUSU9OUyBJTiBSRUFDSEFCTEUgQ09ERSBNVVNUIEJFIEZVWlpFRDpcbiAgV2hlbiBhIHBhdGNoIGludHJvZHVjZXMgb3IgbW9kaWZpZXMgcnVudGltZSBjaGVja3Mgb3IgYXNzZXJ0aW9ucyAoZS5nLiwgV0FSTl9PTiosIFZNX1dBUk5fT04qLFxuICBCVUdfT04qLCBsb2NrZGVwX2Fzc2VydCopIGluIHJlYWNoYWJsZSBjb2RlIHBhdGhzLCBpdCBlbmZvcmNlcyBuZXcgb3Igc3RyaWN0ZXIgaW52YXJpYW50cy5cbiAgRXZlbiBpZiB0aGUgYXV0aG9yIGJlbGlldmVzIHRoZSBpbnZhcmlhbnQgYWx3YXlzIGhvbGRzLCBmdXp6aW5nIGlzIGVzc2VudGlhbCB0byB2ZXJpZnkgd2hldGhlclxuICBhbiB1bnVzdWFsIHNlcXVlbmNlIG9mIG9wZXJhdGlvbnMgY2FuIHZpb2xhdGUgaXQuXG5cbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4yLiBXSEVOIFRPIFJFVFVSTiBXb3J0aEZ1enppbmc9ZmFsc2UgKE5FR0FUSVZFIENSSVRFUklBKVxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgT05MWSBJRiBhbGwgbW9kaWZpZWQgY29kZSBmYWxscyBzdHJpY3RseSBpbnRvIG9uZSBvciBtb3JlIG9mIHRoZXNlIGNhdGVnb3JpZXM6XG5cbi0gTm9uLWtlcm5lbCBhbmQgbm9uLWV4ZWN1dGFibGUgY2hhbmdlczpcbiAgKiBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBjb21tZW50cywgb3Igc3BlbGxpbmcgZml4ZXMuXG4gICogVXNlci1zcGFjZSBkaXJlY3Rvcmllcywgc2VsZi10ZXN0cywgc2FtcGxlcywgb3Igc2NyaXB0cyAoZS5nLiwgdG9vbHMvLCBzYW1wbGVzLywgc2NyaXB0cy8sIHVzci8pXG4gICAgdGhhdCBkbyBub3QgYWZmZWN0IHRoZSBjb21waWxlZCBrZXJuZWwgaW1hZ2UgKHZtbGludXgpIG9yIGtlcm5lbCBtb2R1bGVzLlxuICAqIFB1cmVseSBkZWNvcmF0aXZlIGxvZ2dpbmcgKGUuZy4sIG1lc3NhZ2Ugc3RyaW5ncyBpbiBwcl9lcnIsIHByaW50aywgZGV2X2luZm8pIG9yIHRyYWNlcG9pbnRzXG4gICAgdGhhdCBkbyBub3QgYWx0ZXIgY29udHJvbCBmbG93IG9yIGRhdGEgc3RydWN0dXJlcy5cbiAgKiBCdWlsZCBzeXN0ZW0gb3IgS2NvbmZpZyBjaGFuZ2VzIHRoYXQgZG8gbm90IGFsdGVyIGNvbXBpbGVkIEMgbG9naWMuXG4tIFN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBoYXJkd2FyZTpcbiAgKiBWZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2hlcywgU21hcnROSUNzLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsXG4gICAgaW9uaWMsIGFtZGdwdSkgcmVxdWlyaW5nIHBoeXNpY2FsIEFTSUMvUENJZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS5cbi0gVW5yZWFjaGFibGUgZXhlY3V0aW9uIHBhdGhzOlxuICAqIERyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKC5yZW1vdmUsIC5zaHV0ZG93biwgcGNpX3VucmVnaXN0ZXJfZHJpdmVyKSBleGVjdXRlZCBvbmx5IGR1cmluZ1xuICAgIHBoeXNpY2FsIFBDSSBob3QtdW5wbHVnIG9yIG1hbnVhbCBzeXNmcyBkcml2ZXIgdW5iaW5kaW5nLlxuICAqIENvZGUgcGF0aHMgZXhjbHVzaXZlIHRvIGFyY2hpdGVjdHVyZXMgb3RoZXIgdGhhbiB0aGUgdGFyZ2V0IGFyY2hpdGVjdHVyZS5cblxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbjMuIFdIRU4gVE8gUkVUVVJOIFdvcnRoRnV6emluZz10cnVlIChQT1NJVElWRSBDUklURVJJQSlcbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5SZXR1cm4gV29ydGhGdXp6aW5nPXRydWUgd2hlbmV2ZXIgdGhlIHBhdGNoIHRvdWNoZXMgcmVhY2hhYmxlIGV4ZWN1dGFibGUgY29kZSwgaW5jbHVkaW5nOlxuLSBDb3JlIFN1YnN5c3RlbXM6XG4gICogQW55IGxvZ2ljIG1vZGlmaWNhdGlvbnMgaW4gbWVtb3J5IG1hbmFnZW1lbnQgKG1tLyksIHN5bmNocm9uaXphdGlvbi9sb2NraW5nIChrZXJuZWwvbG9ja2luZy8pLFxuICAgIEJQRiwgc2NoZWR1bGVyLCBjb3JlIG5ldHdvcmtpbmcsIFZGUywgb3Igc3lzY2FsbCBoYW5kbGluZy5cbi0gUmVmYWN0b3JpbmdzIGFuZCBDb2RlIENsZWFudXBzOlxuICAqIEFueSByZXN0cnVjdHVyaW5nIG9mIHJlYWNoYWJsZSBkYXRhIHN0cnVjdHVyZXMsIGhlbHBlciBhYnN0cmFjdGlvbnMsIG9yIGFsZ29yaXRobSBmbG93cy5cbi0gUnVudGltZSBBc3NlcnRpb25zIGFuZCBEZWZlbnNpdmUgQ2hlY2tzOlxuICAqIEFueSBpbnRyb2R1Y3Rpb24gb3IgYWx0ZXJhdGlvbiBvZiBhc3NlcnRpb25zIChXQVJOX09OKiwgVk1fV0FSTl9PTiosIEJVR19PTiosIGV0Yy4pIGluIHJlYWNoYWJsZSBwYXRocy5cbi0gUmVhY2hhYmxlIERyaXZlcnMgYW5kIFByb3RvY29sczpcbiAgKiBEcml2ZXJzIGFjY2Vzc2libGUgdmlhIHZpcnR1YWwgYnVzZXMgKHZpcnRpbywgVVNCIGdhZGdldCwgbG9vcGJhY2ssIG5ldGxpbmssIGJpbmRlciwgc29ja2V0cywgZXRjLikuXG5cbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG40LiBFWFRSQUNUSU5HIEZvY3VzU3ltYm9scyAoUFJFVkVOVElORyBESUxVVElPTilcbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5XaGVuIFdvcnRoRnV6emluZz10cnVlLCB5b3UgbXVzdCBleHRyYWN0IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgaW50byBGb2N1c1N5bWJvbHMgdG8gZ3VpZGUgdGhlIGZ1enplcjpcblxuLSBBVk9JRCBVQklRVUlUT1VTIExJRkVDWUNMRSBIT1QtUEFUSFM6XG4gIERvIE5PVCBsaXN0IGdlbmVyaWMsIHViaXF1aXRvdXMgZnVuY3Rpb25zIGNhbGxlZCBieSBhbG1vc3QgZXZlcnkgcHJvZ3JhbSBpbiB0aGUgY29ycHVzXG4gIChpbmNsdWRpbmcsIGJ1dCBub3QgbGltaXRlZCB0bzogZ2VuZXJhbCBtZW1vcnkgYWxsb2NhdG9ycyBhbmQgZGVhbGxvY2F0b3JzLCBwYWdlIGZhdWx0XG4gIGFuZCB0cmFwIGhhbmRsZXJzLCBvciBjb3JlIHN5bmNocm9uaXphdGlvbiBwcmltaXRpdmVzOyB0aGlzIGlzIG5vdCBhbiBleGhhdXN0aXZlIGxpc3QpLlxuICBMaXN0aW5nIHViaXF1aXRvdXMgZnVuY3Rpb25zIGNhdXNlcyB0aGUgZnV6emVyIHRvIGNsYXNzaWZ5IHRob3VzYW5kcyBvZiB1bnJlbGF0ZWQgdGVzdHMgYXMgXCJmb2N1c2VkXCIsXG4gIHdoaWNoIHNldmVyZWx5IGRpbHV0ZXMgZnV6emluZyBlZmZvcnQgYXdheSBmcm9tIHRoZSBhY3R1YWwgY2hhbmdlcy5cblxuLSBUQVJHRVQgU1BFQ0lGSUMgRkVBVFVSRSBMT0dJQyBBTkQgRU5UUllQT0lOVFM6XG4gIExpc3QgZnVuY3Rpb25zIHRoYXQgc3BlY2lmaWNhbGx5IGltcGxlbWVudCB0aGUgbG9naWMgYmVpbmcgYWRkZWQgb3IgYWx0ZXJlZCwgb3IgZGlyZWN0IEFQSSBlbnRyeXBvaW50c1xuICBmb3IgdGhlIHN1YnN5c3RlbSBmZWF0dXJlIHVuZGVyIHJldmlldy5cblxuLSBIQU5ETElORyBTVEFUSUMgSU5MSU5FIEZVTkNUSU9OUyBJTiBIRUFERVJTICguaCk6XG4gIENvbXBpbGVyLWlubGluZWQgc3RhdGljIGZ1bmN0aW9ucyAoc3VjaCBhcyBzdGF0aWMgaW5saW5lcyBpbiBtbS8qLmggb3IgaW5jbHVkZS9saW51eC8qLmgpIGxhY2tcbiAgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcyBpbiB2bWxpbnV4IGFuZCBjYW5ub3QgYmUgdGFyZ2V0ZWQgZGlyZWN0bHkgYnkgc3ltYm9sIGNvdmVyYWdlIGZpbHRlcnMuXG4gIElmIHRoZSBjaGFuZ2VzIGFyZSBwcmltYXJpbHkgaW4gc3RhdGljIGlubGluZSBoZWxwZXJzLCBpZGVudGlmeSBub24tc3RhdGljLCBmZWF0dXJlLXNwZWNpZmljIGNhbGxlclxuICBmdW5jdGlvbnMgaW4gLmMgZmlsZXMgdGhhdCBleGVyY2lzZSB0aGVtIChhdm9pZGluZyB1YmlxdWl0b3VzIGxpZmVjeWNsZSB3cmFwcGVycykuXG5cbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG41LiBJREVOVElGWUlORyBFbmFibGVDb25maWdzXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSBjb21waWxlIGFuZCByZWFjaCB0aGUgbW9kaWZpZWQgY29kZTpcbi0gSW5zcGVjdCBLY29uZmlnIGZpbGVzIGFuZCAjaWZkZWYgZ3VhcmRzOyBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbi0gQ2hlY2sgXCJkZXBlbmRzIG9uXCIgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzIG5lZWRlZC5cbi0gU3RyaXAgYW55ICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IlRhcmdldCBhcmNoaXRlY3R1cmU6IGFtZDY0XG5cbkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IDViYmQ2N2ZmNjM1OGNhYzRlY2JhODMyOGM3MDIyZWIzMTgxZDZlNTBcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgVHVlIFNlcCA4IDE0OjQzOjM1IDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvbmV0L3J4cnBjL3BlZXJfb2JqZWN0LmMgYi9uZXQvcnhycGMvcGVlcl9vYmplY3QuY1xuaW5kZXggZmE5YTQwNmUxMTY4My4uZmFhMjk4MzYzOGIyYiAxMDA2NDRcbi0tLSBhL25ldC9yeHJwYy9wZWVyX29iamVjdC5jXG4rKysgYi9uZXQvcnhycGMvcGVlcl9vYmplY3QuY1xuQEAgLTQ1NCw2ICs0NTQsMTIgQEAgdm9pZCByeHJwY19kZXN0cm95X2FsbF9wZWVycyhzdHJ1Y3QgcnhycGNfbmV0ICpyeG5ldClcbiBcdHN0cnVjdCByeHJwY19wZWVyICpwZWVyO1xuIFx0aW50IGk7XG4gXG4rXHQvKlxuK1x0ICogUHJldmVudCB1c2UtYWZ0ZXItZnJlZSBpZiBhIHBlZXIgaXMgY29uY3VycmVudGx5IHVubGlua2VkIGZyb20gdGhlXG4rXHQgKiBoYXNoIHRhYmxlIGFuZCBmcmVlZCB2aWEgUkNVIGR1cmluZyBpdGVyYXRpb24uXG4rXHQgKi9cbitcdHNwaW5fbG9ja19iaChcdTAwMjZyeG5ldC1cdTAwM2VwZWVyX2hhc2hfbG9jayk7XG4rXG4gXHRmb3IgKGkgPSAwOyBpIFx1MDAzYyBIQVNIX1NJWkUocnhuZXQtXHUwMDNlcGVlcl9oYXNoKTsgaSsrKSB7XG4gXHRcdGlmIChobGlzdF9lbXB0eShcdTAwMjZyeG5ldC1cdTAwM2VwZWVyX2hhc2hbaV0pKVxuIFx0XHRcdGNvbnRpbnVlO1xuQEAgLTQ2NSw2ICs0NzEsOCBAQCB2b2lkIHJ4cnBjX2Rlc3Ryb3lfYWxsX3BlZXJzKHN0cnVjdCByeHJwY19uZXQgKnJ4bmV0KVxuIFx0XHRcdCAgICAgICBcdTAwMjZwZWVyLVx1MDAzZXNyeC50cmFuc3BvcnQpO1xuIFx0XHR9XG4gXHR9XG4rXG4rXHRzcGluX3VubG9ja19iaChcdTAwMjZyeG5ldC1cdTAwM2VwZWVyX2hhc2hfbG9jayk7XG4gfVxuIFxuIC8qKlxuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDhUMTQ6NDM6MzkuMDIyOTQyODQ1WiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6MTM0NDg3NTcxODMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBQYXRjaDogTmV0d29yayBQZWVyIERlc3RydWN0aW9uKipcblxuT2theSwgbGV0J3MgZGl2ZSBpbi4gSSBzZWUgYSBwYXRjaCBhbmQgSSBuZWVkIHRvIHVuZGVyc3RhbmQgaXRzIGltcGxpY2F0aW9ucy4gTXkgaW1tZWRpYXRlIGZvY3VzIGlzIG9uIHRoaXMgbW9kaWZpY2F0aW9uIHRvIGBuZXQvcnhycGMvcGVlcl9vYmplY3QuY2AsIHNwZWNpZmljYWxseSB0aGUgYHJ4cnBjX2Rlc3Ryb3lfYWxsX3BlZXJzYCBmdW5jdGlvbi4gVGhlIGZpbGVuYW1lIHRlbGxzIG1lIHRoaXMgaXMgcmVsYXRlZCB0byBuZXR3b3JrIGNvbW11bmljYXRpb24sIHNwZWNpZmljYWxseSB0aGUgUnhSUEMgcHJvdG9jb2wsIGFuZCB0aGUgZnVuY3Rpb24gbmFtZSBzdHJvbmdseSBzdWdnZXN0cyB0aGlzIHBhdGNoIGlzIGRlYWxpbmcgd2l0aCBjbGVhbnVwIG9yIHRlYXJkb3duIG9mIHBlZXIgb2JqZWN0cy5cblxuVG8gcHJvcGVybHkgYXNzZXNzIHRoaXMsIEknbGwgbmVlZCBhIGJyb2FkZXIgcGVyc3BlY3RpdmUuIEknbSBnb2luZyB0byBxdWlja2x5IHVzZSBgcmVhZC1maWxlYCB0byBnZXQgdGhlIHN1cnJvdW5kaW5nIGNvZGUgY29udGV4dCwgbm90IGp1c3QgdGhlIGxpbmVzIGNoYW5nZWQgaW4gdGhlIHBhdGNoIGl0c2VsZi4gU2VlaW5nIHRoZSBmdW5jdGlvbidzIHN1cnJvdW5kaW5ncyB3aWxsIGhlbHAgdW5kZXJzdGFuZCBob3cgYHJ4cnBjX2Rlc3Ryb3lfYWxsX3BlZXJzYCBmaXRzIGludG8gdGhlIGxhcmdlciBhcmNoaXRlY3R1cmUuIEkgYWxzbyB3YW50IHRvIHZlcmlmeSB0aGF0IFJ4UlBDIGlzIGVuYWJsZWQgYXQgdGhlIGtlcm5lbCBjb25maWcgbGV2ZWwuIFNvIEknbGwgY2hlY2sgdGhlIGFzc29jaWF0ZWQgYEtjb25maWdgIGZpbGVzIHRvIGNvbmZpcm0gdGhhdCBSeFJQQyBpcyBhY3R1YWxseSBjb21waWxlZCBpbi4gVGhpcyBjb250ZXh0IGlzIGVzc2VudGlhbCB0byBjb3JyZWN0bHkgZXZhbHVhdGUgdGhlIHBhdGNoJ3MgaW1wYWN0IGFuZCBhbnkgcG90ZW50aWFsIHNpZGUgZWZmZWN0cy5cblxuXG4iLCJJbnB1dFRva2VucyI6Mjk5MywiT3V0cHV0VG9rZW5zIjoxMDMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo2MSwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA4VDE0OjQzOjUyLjQ3MTcwMzE4OFoiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjgzMTg5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcIm5ldC9yeHJwYy9wZWVyX29iamVjdC5jXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDQ0MCxcbiAgXCJMaW5lQ291bnRcIjogNTBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiIDQ0MDpcXHRcXHRpZiAocGVlcikge1xcbiA0NDE6XFx0XFx0XFx0ZGVidWdfaWQgPSBwZWVyLVxcdTAwM2VkZWJ1Z19pZDtcXG4gNDQyOlxcdFxcdFxcdGRlYWQgPSBfX3JlZmNvdW50X2RlY19hbmRfdGVzdChcXHUwMDI2cGVlci1cXHUwMDNlcmVmLCBcXHUwMDI2cik7XFxuIDQ0MzpcXHRcXHRcXHR0cmFjZV9yeHJwY19wZWVyKGRlYnVnX2lkLCByIC0gMSwgd2h5KTtcXG4gNDQ0OlxcdFxcdFxcdGlmIChkZWFkKVxcbiA0NDU6XFx0XFx0XFx0XFx0X19yeHJwY19wdXRfcGVlcihwZWVyKTtcXG4gNDQ2OlxcdFxcdH1cXG4gNDQ3OlxcdH1cXG4gNDQ4OlxcdFxcbiA0NDk6XFx0LypcXG4gNDUwOlxcdCAqIE1ha2Ugc3VyZSBhbGwgcGVlciByZWNvcmRzIGhhdmUgYmVlbiBkaXNjYXJkZWQuXFxuIDQ1MTpcXHQgKi9cXG4gNDUyOlxcdHZvaWQgcnhycGNfZGVzdHJveV9hbGxfcGVlcnMoc3RydWN0IHJ4cnBjX25ldCAqcnhuZXQpXFxuIDQ1MzpcXHR7XFxuIDQ1NDpcXHRcXHRzdHJ1Y3QgcnhycGNfcGVlciAqcGVlcjtcXG4gNDU1OlxcdFxcdGludCBpO1xcbiA0NTY6XFx0XFxuIDQ1NzpcXHRcXHQvKlxcbiA0NTg6XFx0XFx0ICogUHJldmVudCB1c2UtYWZ0ZXItZnJlZSBpZiBhIHBlZXIgaXMgY29uY3VycmVudGx5IHVubGlua2VkIGZyb20gdGhlXFxuIDQ1OTpcXHRcXHQgKiBoYXNoIHRhYmxlIGFuZCBmcmVlZCB2aWEgUkNVIGR1cmluZyBpdGVyYXRpb24uXFxuIDQ2MDpcXHRcXHQgKi9cXG4gNDYxOlxcdFxcdHNwaW5fbG9ja19iaChcXHUwMDI2cnhuZXQtXFx1MDAzZXBlZXJfaGFzaF9sb2NrKTtcXG4gNDYyOlxcdFxcbiA0NjM6XFx0XFx0Zm9yIChpID0gMDsgaSBcXHUwMDNjIEhBU0hfU0laRShyeG5ldC1cXHUwMDNlcGVlcl9oYXNoKTsgaSsrKSB7XFxuIDQ2NDpcXHRcXHRcXHRpZiAoaGxpc3RfZW1wdHkoXFx1MDAyNnJ4bmV0LVxcdTAwM2VwZWVyX2hhc2hbaV0pKVxcbiA0NjU6XFx0XFx0XFx0XFx0Y29udGludWU7XFxuIDQ2NjpcXHRcXG4gNDY3OlxcdFxcdFxcdGhsaXN0X2Zvcl9lYWNoX2VudHJ5KHBlZXIsIFxcdTAwMjZyeG5ldC1cXHUwMDNlcGVlcl9oYXNoW2ldLCBoYXNoX2xpbmspIHtcXG4gNDY4OlxcdFxcdFxcdFxcdHByX2VycihcXFwiTGVha2VkIHBlZXIgJXggeyV1fSAlcElTcFxcXFxuXFxcIixcXG4gNDY5OlxcdFxcdFxcdFxcdCAgICAgICBwZWVyLVxcdTAwM2VkZWJ1Z19pZCxcXG4gNDcwOlxcdFxcdFxcdFxcdCAgICAgICByZWZjb3VudF9yZWFkKFxcdTAwMjZwZWVyLVxcdTAwM2VyZWYpLFxcbiA0NzE6XFx0XFx0XFx0XFx0ICAgICAgIFxcdTAwMjZwZWVyLVxcdTAwM2VzcngudHJhbnNwb3J0KTtcXG4gNDcyOlxcdFxcdFxcdH1cXG4gNDczOlxcdFxcdH1cXG4gNDc0OlxcdFxcbiA0NzU6XFx0XFx0c3Bpbl91bmxvY2tfYmgoXFx1MDAyNnJ4bmV0LVxcdTAwM2VwZWVyX2hhc2hfbG9jayk7XFxuIDQ3NjpcXHR9XFxuIDQ3NzpcXHRcXG4gNDc4OlxcdC8qKlxcbiA0Nzk6XFx0ICogcnhycGNfa2VybmVsX2dldF9jYWxsX3BlZXIgLSBHZXQgdGhlIHBlZXIgYWRkcmVzcyBvZiBhIGNhbGxcXG4gNDgwOlxcdCAqIEBzb2NrOiBUaGUgc29ja2V0IG9uIHdoaWNoIHRoZSBjYWxsIGlzIGluIHByb2dyZXNzLlxcbiA0ODE6XFx0ICogQGNhbGw6IFRoZSBjYWxsIHRvIHF1ZXJ5XFxuIDQ4MjpcXHQgKlxcbiA0ODM6XFx0ICogR2V0IGEgcmVjb3JkIGZvciB0aGUgcmVtb3RlIHBlZXIgaW4gYSBjYWxsLlxcbiA0ODQ6XFx0ICpcXG4gNDg1OlxcdCAqIFJldHVybjogVGhlIGNhbGwncyBwZWVyIHJlY29yZC5cXG4gNDg2OlxcdCAqL1xcbiA0ODc6XFx0c3RydWN0IHJ4cnBjX3BlZXIgKnJ4cnBjX2tlcm5lbF9nZXRfY2FsbF9wZWVyKHN0cnVjdCBzb2NrZXQgKnNvY2ssIHN0cnVjdCByeHJwY19jYWxsICpjYWxsKVxcbiA0ODg6XFx0e1xcbiA0ODk6XFx0XFx0cmV0dXJuIHJ4cnBjX2dldF9wZWVyKGNhbGwtXFx1MDAzZXBlZXIsIHJ4cnBjX3BlZXJfZ2V0X2FwcGxpY2F0aW9uKTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDhUMTQ6NDM6NTIuNDcxNzg3NzY4WiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ1OTA0MzEyLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInJ4cnBjX2Rlc3Ryb3lfYWxsX3BlZXJzXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9yeHJwY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvcnhycGMvYXItaW50ZXJuYWwuaD0xNDI2PXZvaWQgcnhycGNfbmV3X2luY29taW5nX3BlZXIoc3RydWN0IHJ4cnBjX2xvY2FsICpsb2NhbCwgc3RydWN0IHJ4cnBjX3BlZXIgKnBlZXIpO1xcbm5ldC9yeHJwYy9hci1pbnRlcm5hbC5oOjE0Mjc6dm9pZCByeHJwY19kZXN0cm95X2FsbF9wZWVycyhzdHJ1Y3QgcnhycGNfbmV0ICopO1xcbm5ldC9yeHJwYy9hci1pbnRlcm5hbC5oLTE0Mjgtc3RydWN0IHJ4cnBjX3BlZXIgKnJ4cnBjX2dldF9wZWVyKHN0cnVjdCByeHJwY19wZWVyICosIGVudW0gcnhycGNfcGVlcl90cmFjZSk7XFxuLS1cXG5uZXQvcnhycGMvbmV0X25zLmM9MTAzPXN0YXRpYyBfX25ldF9leGl0IHZvaWQgcnhycGNfZXhpdF9uZXQoc3RydWN0IG5ldCAqbmV0KVxcbi0tXFxubmV0L3J4cnBjL25ldF9ucy5jLTExMy1cXHRyeHJwY19kZXN0cm95X2FsbF9jb25uZWN0aW9ucyhyeG5ldCk7XFxubmV0L3J4cnBjL25ldF9ucy5jOjExNDpcXHRyeHJwY19kZXN0cm95X2FsbF9wZWVycyhyeG5ldCk7XFxubmV0L3J4cnBjL25ldF9ucy5jLTExNS1cXHRyeHJwY19kZXN0cm95X2FsbF9sb2NhbHMocnhuZXQpO1xcbi0tXFxubmV0L3J4cnBjL3BlZXJfb2JqZWN0LmM9NDM0PXZvaWQgcnhycGNfcHV0X3BlZXIoc3RydWN0IHJ4cnBjX3BlZXIgKnBlZXIsIGVudW0gcnhycGNfcGVlcl90cmFjZSB3aHkpXFxuLS1cXG5uZXQvcnhycGMvcGVlcl9vYmplY3QuYy00NTEtICovXFxubmV0L3J4cnBjL3BlZXJfb2JqZWN0LmM6NDUyOnZvaWQgcnhycGNfZGVzdHJveV9hbGxfcGVlcnMoc3RydWN0IHJ4cnBjX25ldCAqcnhuZXQpXFxubmV0L3J4cnBjL3BlZXJfb2JqZWN0LmMtNDUzLXtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDhUMTQ6NDM6NTIuNTE3Njk2MjNaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo5Mjc4MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJuZXQvcnhycGMvS2NvbmZpZ1wiLFxuICBcIkZpcnN0TGluZVwiOiAxLFxuICBcIkxpbmVDb3VudFwiOiA0MFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgICAxOlxcdCMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxcbiAgIDI6XFx0I1xcbiAgIDM6XFx0IyBSeFJQQyBzZXNzaW9uIHNvY2tldHNcXG4gICA0OlxcdCNcXG4gICA1OlxcdFxcbiAgIDY6XFx0Y29uZmlnIEFGX1JYUlBDXFxuICAgNzpcXHRcXHR0cmlzdGF0ZSBcXFwiUnhSUEMgc2Vzc2lvbiBzb2NrZXRzXFxcIlxcbiAgIDg6XFx0XFx0ZGVwZW5kcyBvbiBJTkVUXFxuICAgOTpcXHRcXHRzZWxlY3QgQ1JZUFRPXFxuICAxMDpcXHRcXHRzZWxlY3QgQ1JZUFRPX0xJQl9ERVMgaWYgUlhLQURcXG4gIDExOlxcdFxcdHNlbGVjdCBLRVlTXFxuICAxMjpcXHRcXHRzZWxlY3QgTkVUX1VEUF9UVU5ORUxcXG4gIDEzOlxcdFxcdGhlbHBcXG4gIDE0OlxcdFxcdCAgU2F5IFkgb3IgTSBoZXJlIHRvIGluY2x1ZGUgc3VwcG9ydCBmb3IgUnhSUEMgc2Vzc2lvbiBzb2NrZXRzIChqdXN0XFxuICAxNTpcXHRcXHQgIHRoZSB0cmFuc3BvcnQgcGFydCwgbm90IHRoZSBwcmVzZW50YXRpb24gcGFydDogKHVuKW1hcnNoYWxsaW5nIGlzXFxuICAxNjpcXHRcXHQgIGxlZnQgdG8gdGhlIGFwcGxpY2F0aW9uKS5cXG4gIDE3OlxcdFxcbiAgMTg6XFx0XFx0ICBUaGVzZSBhcmUgdXNlZCBmb3IgQUZTIGtlcm5lbCBmaWxlc3lzdGVtIGFuZCB1c2Vyc3BhY2UgdXRpbGl0aWVzLlxcbiAgMTk6XFx0XFxuICAyMDpcXHRcXHQgIFRoaXMgbW9kdWxlIGF0IHRoZSBtb21lbnQgb25seSBzdXBwb3J0cyBjbGllbnQgb3BlcmF0aW9ucyBhbmQgaXNcXG4gIDIxOlxcdFxcdCAgY3VycmVudGx5IGluY29tcGxldGUuXFxuICAyMjpcXHRcXG4gIDIzOlxcdFxcdCAgU2VlIERvY3VtZW50YXRpb24vbmV0d29ya2luZy9yeHJwYy5yc3QuXFxuICAyNDpcXHRcXG4gIDI1OlxcdGlmIEFGX1JYUlBDXFxuICAyNjpcXHRcXG4gIDI3OlxcdGNvbmZpZyBBRl9SWFJQQ19JUFY2XFxuICAyODpcXHRcXHRib29sIFxcXCJJUHY2IHN1cHBvcnQgZm9yIFJ4UlBDXFxcIlxcbiAgMjk6XFx0XFx0ZGVwZW5kcyBvbiBJUFY2XFxuICAzMDpcXHRcXHRoZWxwXFxuICAzMTpcXHRcXHQgIFNheSBZIGhlcmUgdG8gYWxsb3cgQUZfUlhSUEMgdG8gdXNlIElQVjYgVURQIGFzIHdlbGwgYXMgSVBWNCBVRFAgYXNcXG4gIDMyOlxcdFxcdCAgaXRzIG5ldHdvcmsgdHJhbnNwb3J0LlxcbiAgMzM6XFx0XFxuICAzNDpcXHRjb25maWcgQUZfUlhSUENfSU5KRUNUX0xPU1NcXG4gIDM1OlxcdFxcdGJvb2wgXFxcIkluamVjdCBwYWNrZXQgbG9zcyBpbnRvIFJ4UlBDIHBhY2tldCBzdHJlYW1cXFwiXFxuICAzNjpcXHRcXHRoZWxwXFxuICAzNzpcXHRcXHQgIFNheSBZIGhlcmUgdG8gaW5qZWN0IHBhY2tldCBsb3NzIGJ5IGRpc2NhcmRpbmcgc29tZSByZWNlaXZlZCBhbmQgc29tZVxcbiAgMzg6XFx0XFx0ICB0cmFuc21pdHRlZCBwYWNrZXRzLlxcbiAgMzk6XFx0XFxuICA0MDpcXHRjb25maWcgQUZfUlhSUENfSU5KRUNUX1JYX0RFTEFZXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA4VDE0OjQzOjUyLjUxNzc5MTQxWiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6NDY1MzM1MDIwNywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBc3Nlc3NtZW50IG9mIFJ4UlBDIEZ1enppbmcgUG90ZW50aWFsKipcblxuT2theSwgbGV0J3MgYnJlYWsgdGhpcyBkb3duLiBgcnhycGNfZGVzdHJveV9hbGxfcGVlcnNgIGdldHMgY2FsbGVkIHdoZW4gYSBuZXR3b3JrIG5hbWVzcGFjZSBpcyB0b3JuIGRvd24sIHNwZWNpZmljYWxseSBkdXJpbmcgYHJ4cnBjX2V4aXRfbmV0YC4gVGhpcyB0ZWFyZG93biBoYXBwZW5zIHdoZW4gYSBuZXRucyB0aGF0IHdhcyBjcmVhdGVkIGJ5IGEgdXNlciBvciBmdXp6ZXIgZXhpdHMuIFRoZSBjcml0aWNhbCBwYXJ0IGlzIHRoYXQgQUZfUlhSUEMgc29ja2V0cyBhcmUgZGlyZWN0bHkgYWNjZXNzaWJsZSB0aHJvdWdoIHN0YW5kYXJkIGBzb2NrZXQoKWAgY2FsbHMsIG1lYW5pbmcgc3l6a2FsbGVyIGNhbiByZWFjaCB0aGVtLlxuXG5NeSBpbml0aWFsIHF1ZXN0aW9uOiBJcyBBRl9SWFJQQyByZWFjaGFibGUgYW5kIHdvcnRoIGZ1enppbmc/IFRoZSBhbnN3ZXIgaXMgYSBjbGVhciAqeWVzKi4gVGhlIGZhY3QgdGhhdCBpdCdzIHRyaWdnZXJlZCBieSBuZXR3b3JrIG5hbWVzcGFjZSBleGl0IGFuZCBpbnZvbHZlcyBSeFJQQyBzb2NrZXRzIGFuZCBwZWVycyBtYWtlcyBpdCBhIHByaW1lIGNhbmRpZGF0ZS5cblxuVGhlIHJlbGV2YW50IHBhdGNoIGludHJvZHVjZXMgYSBgc3Bpbl9sb2NrX2JoYCBhbmQgYHNwaW5fdW5sb2NrX2JoYCBhcm91bmQgdGhlIGhhc2ggaXRlcmF0aW9uIGluIGByeHJwY19kZXN0cm95X2FsbF9wZWVyc2AuIFRoaXMgaXMgc2lnbmlmaWNhbnQgYmVjYXVzZSwgYWNjb3JkaW5nIHRvIHRoZSBmdXp6aW5nIGd1aWRlbGluZXMsIHdlIHNob3VsZCBjb25zaWRlciBhIHBhdGNoIFwiV29ydGhGdXp6aW5nPXRydWVcIiBpZiBpdCB0b3VjaGVzIHJlYWNoYWJsZSBleGVjdXRhYmxlIGNvZGUuIEFuZCB0aGlzIGRlZmluaXRlbHkgZG9lczpcblxuKiAgIEl0IGludm9sdmVzICpjb3JlIG5ldHdvcmtpbmcqICh0aGUgbmFtZXNwYWNlIHRlYXJkb3duIGFuZCBSeFJQQyBwcm90b2NvbCkuXG4qICAgSXQncyBhIHJlYWNoYWJsZSBwcm90b2NvbCAoQUZfUlhSUEMpLlxuKiAgIEl0IGludHJvZHVjZXMgKmxvY2tpbmcgc3luY2hyb25pemF0aW9uKiBkdXJpbmcgbmV0d29yayBuYW1lc3BhY2UgdGVhcmRvd24gYW5kIFJ4UlBDIHBlZXIgY2xlYW51cC5cblxuVGhlcmVmb3JlLCB0aGlzIHBhdGNoIGRpcmVjdGx5IGZhbGxzIGludG8gdGhlIGNhdGVnb3J5IG9mIGNvZGUgdGhhdCByZXF1aXJlcyBmdXp6aW5nIHRvIGxvb2sgZm9yIHBvdGVudGlhbCBsb2NrIG9yZGVyIHZpb2xhdGlvbnMsIGRlYWRsb2NrcywgbG9ja2RlcCB3YXJuaW5ncywgYW5kIG90aGVyIGNvbmN1cnJlbnQgcmFjZSBjb25kaXRpb25zLiBNeSBleHBlcmllbmNlIHRlbGxzIG1lIHRoYXQgdGhlc2UgdHlwZXMgb2YgY2hhbmdlcyBhcmUgb2Z0ZW4gZmVydGlsZSBncm91bmQgZm9yIGZpbmRpbmcgc3VidGxlIGNvbmN1cnJlbmN5IGJ1Z3MuXG5cbkZpbmFsbHksIEkgc2hvdWxkIGNvbmZpcm0gdGhlIGNvbmZpZ3VyYXRpb24uIEFGX1JYUlBDIGRlcGVuZHMgb24gSU5FVC4gSSB3aWxsIGFsc28gY2hlY2sgdGhlIGBuZXQvcnhycGMvTWFrZWZpbGVgIHRvIGNvbmZpcm0gdGhlIGJ1aWxkIGRlcGVuZGVuY2llcyBhbmQgYW55IG90aGVyIHJlbGV2YW50IHNldHRpbmdzIHRoYXQgbWlnaHQgaW1wYWN0IGZ1enppbmcuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjUwMTcsIk91dHB1dFRva2VucyI6MzIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozOTcsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiLCJncmVwcGVyIiwicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMDhUMTQ6NDM6NTcuMTcxMTQ1NzU2WiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NzM0MjksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwibmV0L3J4cnBjL01ha2VmaWxlXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDEsXG4gIFwiTGluZUNvdW50XCI6IDQwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAgIDE6XFx0IyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMFxcbiAgIDI6XFx0I1xcbiAgIDM6XFx0IyBNYWtlZmlsZSBmb3IgTGludXgga2VybmVsIFJ4UlBDXFxuICAgNDpcXHQjXFxuICAgNTpcXHRcXG4gICA2OlxcdG9iai0kKENPTkZJR19BRl9SWFJQQykgKz0gcnhycGMub1xcbiAgIDc6XFx0XFxuICAgODpcXHRyeHJwYy15IDo9IFxcXFxcXG4gICA5OlxcdFxcdGFmX3J4cnBjLm8gXFxcXFxcbiAgMTA6XFx0XFx0Y2FsbF9hY2NlcHQubyBcXFxcXFxuICAxMTpcXHRcXHRjYWxsX2V2ZW50Lm8gXFxcXFxcbiAgMTI6XFx0XFx0Y2FsbF9vYmplY3QubyBcXFxcXFxuICAxMzpcXHRcXHRjYWxsX3N0YXRlLm8gXFxcXFxcbiAgMTQ6XFx0XFx0Y29ubl9jbGllbnQubyBcXFxcXFxuICAxNTpcXHRcXHRjb25uX2V2ZW50Lm8gXFxcXFxcbiAgMTY6XFx0XFx0Y29ubl9vYmplY3QubyBcXFxcXFxuICAxNzpcXHRcXHRjb25uX3NlcnZpY2UubyBcXFxcXFxuICAxODpcXHRcXHRpbnB1dC5vIFxcXFxcXG4gIDE5OlxcdFxcdGlucHV0X3JhY2subyBcXFxcXFxuICAyMDpcXHRcXHRpbnNlY3VyZS5vIFxcXFxcXG4gIDIxOlxcdFxcdGlvX3RocmVhZC5vIFxcXFxcXG4gIDIyOlxcdFxcdGtleS5vIFxcXFxcXG4gIDIzOlxcdFxcdGxvY2FsX2V2ZW50Lm8gXFxcXFxcbiAgMjQ6XFx0XFx0bG9jYWxfb2JqZWN0Lm8gXFxcXFxcbiAgMjU6XFx0XFx0bWlzYy5vIFxcXFxcXG4gIDI2OlxcdFxcdG5ldF9ucy5vIFxcXFxcXG4gIDI3OlxcdFxcdG9vYi5vIFxcXFxcXG4gIDI4OlxcdFxcdG91dHB1dC5vIFxcXFxcXG4gIDI5OlxcdFxcdHBlZXJfZXZlbnQubyBcXFxcXFxuICAzMDpcXHRcXHRwZWVyX29iamVjdC5vIFxcXFxcXG4gIDMxOlxcdFxcdHJlY3Ztc2cubyBcXFxcXFxuICAzMjpcXHRcXHRydHQubyBcXFxcXFxuICAzMzpcXHRcXHRzZWN1cml0eS5vIFxcXFxcXG4gIDM0OlxcdFxcdHNlbmRtc2cubyBcXFxcXFxuICAzNTpcXHRcXHRzZXJ2ZXJfa2V5Lm8gXFxcXFxcbiAgMzY6XFx0XFx0c2tidWZmLm8gXFxcXFxcbiAgMzc6XFx0XFx0dHhidWYubyBcXFxcXFxuICAzODpcXHRcXHR1dGlscy5vXFxuICAzOTpcXHRcXG4gIDQwOlxcdHJ4cnBjLSQoQ09ORklHX1BST0NfRlMpICs9IHByb2Mub1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wOFQxNDo0Mzo1Ny4xNzEyMjExODdaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjoyMTQyMDcxNDA0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdGhvdWdodCBwcm9jZXNzLCBzdW1tYXJpemVkIGFzIHlvdSByZXF1ZXN0ZWQ6XG5cbioqSW52ZXN0aWdhdGluZyB0aGUgTGlmZWN5Y2xlIG9mIGByeHJwY19kZXN0cm95X2FsbF9wZWVyc2AqKlxuXG5Pa2F5LCBzbyBJIG5lZWQgdG8gdHJhY2UgdGhlIHVzYWdlIG9mIGByeHJwY19kZXN0cm95X2FsbF9wZWVyc2AuIFRoaXMgaXMgbGlrZWx5IGEgY3JpdGljYWwgZnVuY3Rpb24gZm9yIGNsZWFuaW5nIHVwIHJlc291cmNlcywgYW5kIEkgd2FudCB0byB1bmRlcnN0YW5kICp3aGVuKiBhbmQgKndoeSogaXQncyBjYWxsZWQuIE15IGZpcnN0IGluc3RpbmN0LCBnaXZlbiBteSBleHBlcmllbmNlLCBpcyB0byBqdW1wIHJpZ2h0IGludG8gdGhlIHNvdXJjZSBjb2RlLiBTcGVjaWZpY2FsbHksIEknbGwgc3RhcnQgYnkgY2hlY2tpbmcgYG5ldC9yeHJwYy9uZXRfbnMuY2AuIFRoYXQgZmlsZSBpcyBhIGdvb2Qgc3RhcnRpbmcgcG9pbnQgZm9yIG5ldHdvcmsgbmFtZXNwYWNlLXJlbGF0ZWQgY29kZSB3aXRoaW4gdGhlIFJ4UlBDIGltcGxlbWVudGF0aW9uLiBJdCdzIGhpZ2hseSBwcm9iYWJsZSB0aGF0IHRoaXMgZnVuY3Rpb24gaXMgY2FsbGVkIHdoZW4gYSBuZXR3b3JrIG5hbWVzcGFjZSBpcyBiZWluZyB0b3JuIGRvd24gb3IsIGF0IGxlYXN0LCB3aGVuIHRoZSBSeFJQQyBkYXRhIGFzc29jaWF0ZWQgd2l0aCBpdCBpcyBiZWluZyBjbGVhbmVkIHVwLiBGaW5kaW5nIHRoZSBjYWxscyB0byB0aGlzIGZ1bmN0aW9uIHdpbGwgZ2l2ZSBtZSBhIGJldHRlciB1bmRlcnN0YW5kaW5nIG9mIHRoZSBvdmVyYWxsIHJlc291cmNlIG1hbmFnZW1lbnQgYW5kIGxpZmVjeWNsZSB3aXRoaW4gdGhlIFJ4UlBDIHN1YnN5c3RlbS5cblxuXG4iLCJJbnB1dFRva2VucyI6NjI5MCwiT3V0cHV0VG9rZW5zIjozNywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjMyLCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMDhUMTQ6NDM6NTkuMzEzMjk1MDg5WiIsIlNlcSI6MTAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjY0NzIwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcIm5ldC9yeHJwYy9uZXRfbnMuY1wiLFxuICBcIkZpcnN0TGluZVwiOiA5NSxcbiAgXCJMaW5lQ291bnRcIjogMzVcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiICA5NTpcXHRlcnJfcHJvYzpcXG4gIDk2OlxcdFxcdHJ4bmV0LVxcdTAwM2VsaXZlID0gZmFsc2U7XFxuICA5NzpcXHRcXHRyZXR1cm4gcmV0O1xcbiAgOTg6XFx0fVxcbiAgOTk6XFx0XFxuIDEwMDpcXHQvKlxcbiAxMDE6XFx0ICogQ2xlYW4gdXAgYSBwZXItbmV0d29yayBuYW1lc3BhY2UgcmVjb3JkLlxcbiAxMDI6XFx0ICovXFxuIDEwMzpcXHRzdGF0aWMgX19uZXRfZXhpdCB2b2lkIHJ4cnBjX2V4aXRfbmV0KHN0cnVjdCBuZXQgKm5ldClcXG4gMTA0OlxcdHtcXG4gMTA1OlxcdFxcdHN0cnVjdCByeHJwY19uZXQgKnJ4bmV0ID0gcnhycGNfbmV0KG5ldCk7XFxuIDEwNjpcXHRcXG4gMTA3OlxcdFxcdHJ4bmV0LVxcdTAwM2VsaXZlID0gZmFsc2U7XFxuIDEwODpcXHRcXHR0aW1lcl9kZWxldGVfc3luYyhcXHUwMDI2cnhuZXQtXFx1MDAzZXBlZXJfa2VlcGFsaXZlX3RpbWVyKTtcXG4gMTA5OlxcdFxcdGNhbmNlbF93b3JrX3N5bmMoXFx1MDAyNnJ4bmV0LVxcdTAwM2VwZWVyX2tlZXBhbGl2ZV93b3JrKTtcXG4gMTEwOlxcdFxcdC8qIFJlbW92ZSB0aGUgdGltZXIgYWdhaW4gYXMgdGhlIHdvcmtlciBtYXkgaGF2ZSByZXN0YXJ0ZWQgaXQuICovXFxuIDExMTpcXHRcXHR0aW1lcl9kZWxldGVfc3luYyhcXHUwMDI2cnhuZXQtXFx1MDAzZXBlZXJfa2VlcGFsaXZlX3RpbWVyKTtcXG4gMTEyOlxcdFxcdHJ4cnBjX2Rlc3Ryb3lfYWxsX2NhbGxzKHJ4bmV0KTtcXG4gMTEzOlxcdFxcdHJ4cnBjX2Rlc3Ryb3lfYWxsX2Nvbm5lY3Rpb25zKHJ4bmV0KTtcXG4gMTE0OlxcdFxcdHJ4cnBjX2Rlc3Ryb3lfYWxsX3BlZXJzKHJ4bmV0KTtcXG4gMTE1OlxcdFxcdHJ4cnBjX2Rlc3Ryb3lfYWxsX2xvY2FscyhyeG5ldCk7XFxuIDExNjpcXHRcXHRwcm9jX3JlbW92ZShyeG5ldC1cXHUwMDNlcHJvY19uZXQpO1xcbiAxMTc6XFx0fVxcbiAxMTg6XFx0XFxuIDExOTpcXHRzdHJ1Y3QgcGVybmV0X29wZXJhdGlvbnMgcnhycGNfbmV0X29wcyA9IHtcXG4gMTIwOlxcdFxcdC5pbml0XFx0PSByeHJwY19pbml0X25ldCxcXG4gMTIxOlxcdFxcdC5leGl0XFx0PSByeHJwY19leGl0X25ldCxcXG4gMTIyOlxcdFxcdC5pZFxcdD0gXFx1MDAyNnJ4cnBjX25ldF9pZCxcXG4gMTIzOlxcdFxcdC5zaXplXFx0PSBzaXplb2Yoc3RydWN0IHJ4cnBjX25ldCksXFxuIDEyNDpcXHR9O1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wOFQxNDo0Mzo1OS4zMTMzNjEwOFoiLCJTZXEiOjExLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjoyODg0NDkxNzEzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgUlhSUEMgUGVlciBPYmplY3QgTGlmZWN5Y2xlKipcblxuT2theSwgbGV0J3MgZGl2ZSBpbnRvIHRoaXMgYHJ4cnBjX2Rlc3Ryb3lfYWxsX3BlZXJzYCBmdW5jdGlvbi4gSSBzZWUgaXQncyBub24tc3RhdGljIGFuZCBkZWZpbmVkIGluIGBuZXQvcnhycGMvcGVlcl9vYmplY3QuY2AuIEludGVyZXN0aW5nLiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdG8gdHJhY2UgdGhlIGNvbXBsZXRlIGxpZmVjeWNsZSBvZiB0aGVzZSBwZWVycywgc28gSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2hlcmUgdGhpcyBmdW5jdGlvbiBmaXRzIGluIHRoZSBncmFuZCBzY2hlbWUuIFRvIGRvIHRoYXQsIEkgc2hvdWxkIGxvb2sgYXQgbm90IGp1c3QgdGhpcyBmdW5jdGlvbiBidXQgYWxzbyBhZGphY2VudCBvbmVzIGluIGBwZWVyX29iamVjdC5jYC5cblxuV2hhdCBhcmUgdGhlIGNyaXRpY2FsIGZ1bmN0aW9ucyB0byBzY3J1dGluaXplPyBXZWxsLCBgcnhycGNfZGVzdHJveV9hbGxfcGVlcnNgIGlzIG9idmlvdXNseSBhIGtleSBvbmUuIEJ1dCBmdW5jdGlvbnMgaW52b2x2ZWQgaW4gdGhlIGJyb2FkZXIgcGVlciBsaWZlY3ljbGUgYXJlIHJlbGV2YW50IHRvby4gSSBuZWVkIHRvIGtlZXAgaW4gbWluZCwgYHJ4cnBjX2V4aXRfbmV0YCBhbmQgYHJ4cnBjX3B1dF9wZWVyYC4gSSdsbCBuZWVkIHRvIGV4cGFuZCBteSBzZWFyY2ggdG8gaWRlbnRpZnkgYW55IG90aGVyIGZ1bmN0aW9ucyB0aGF0IGFyZSBjcml0aWNhbCB0byB0aGUgcGVlciBsaWZlY3ljbGUuIEknbGwgdGFrZSBhIHF1aWNrIGdsYW5jZSBhdCB0aGUgb3RoZXIgZnVuY3Rpb25zIGluIGBwZWVyX29iamVjdC5jYCBhbmQgbWFrZSBzdXJlIEkgZG9uJ3QgbWlzcyBhbnl0aGluZyB0aGF0IGdpdmVzIG1lIGEgYmV0dGVyIHVuZGVyc3RhbmRpbmcgb2YgaG93IHRoZXNlIHBlZXJzIGFyZSBjcmVhdGVkLCBtYW5hZ2VkLCBhbmQgZXZlbnR1YWxseSBkZXN0cm95ZWQuIExldCdzIHNlZSB3aGF0IGVsc2UgaXMgaW4gdGhhdCBmaWxlLi4uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjcwMjUsIk91dHB1dFRva2VucyI6NDQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMTAsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0wOFQxNDo0NDowMi4xOTc4NTUzODJaIiwiU2VxIjoxMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ1NDQ1MTYzLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIl5bYS16QS1aMC05X10rIHJ4cnBjX1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvcnhycGMvcGVlcl9vYmplY3QuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvcnhycGMvcGVlcl9vYmplY3QuYz0xMTY9c3RhdGljIHN0cnVjdCByeHJwY19wZWVyICpfX3J4cnBjX2xvb2t1cF9wZWVyX3JjdShcXG4tLVxcbm5ldC9yeHJwYy9wZWVyX29iamVjdC5jLTEzNS0gKi9cXG5uZXQvcnhycGMvcGVlcl9vYmplY3QuYzoxMzY6c3RydWN0IHJ4cnBjX3BlZXIgKnJ4cnBjX2xvb2t1cF9wZWVyX3JjdShzdHJ1Y3QgcnhycGNfbG9jYWwgKmxvY2FsLFxcbm5ldC9yeHJwYy9wZWVyX29iamVjdC5jLTEzNy1cXHRcXHRcXHRcXHRcXHQgY29uc3Qgc3RydWN0IHNvY2thZGRyX3J4cnBjICpzcngpXFxuLS1cXG5uZXQvcnhycGMvcGVlcl9vYmplY3QuYy0xNTEtICovXFxubmV0L3J4cnBjL3BlZXJfb2JqZWN0LmM6MTUyOnZvaWQgcnhycGNfYXNzZXNzX01UVV9zaXplKHN0cnVjdCByeHJwY19sb2NhbCAqbG9jYWwsIHN0cnVjdCByeHJwY19wZWVyICpwZWVyKVxcbm5ldC9yeHJwYy9wZWVyX29iamVjdC5jLTE1My17XFxuLS1cXG5uZXQvcnhycGMvcGVlcl9vYmplY3QuYy0yMjEtICovXFxubmV0L3J4cnBjL3BlZXJfb2JqZWN0LmM6MjIyOnN0cnVjdCByeHJwY19wZWVyICpyeHJwY19hbGxvY19wZWVyKHN0cnVjdCByeHJwY19sb2NhbCAqbG9jYWwsIGdmcF90IGdmcCxcXG5uZXQvcnhycGMvcGVlcl9vYmplY3QuYy0yMjMtXFx0XFx0XFx0XFx0ICAgIGVudW0gcnhycGNfcGVlcl90cmFjZSB3aHkpXFxuLS1cXG5uZXQvcnhycGMvcGVlcl9vYmplY3QuYz0zMDQ9c3RhdGljIHZvaWQgcnhycGNfZnJlZV9wZWVyKHN0cnVjdCByeHJwY19wZWVyICpwZWVyKVxcbi0tXFxubmV0L3J4cnBjL3BlZXJfb2JqZWN0LmMtMzE2LSAqL1xcbm5ldC9yeHJwYy9wZWVyX29iamVjdC5jOjMxNzp2b2lkIHJ4cnBjX25ld19pbmNvbWluZ19wZWVyKHN0cnVjdCByeHJwY19sb2NhbCAqbG9jYWwsIHN0cnVjdCByeHJwY19wZWVyICpwZWVyKVxcbm5ldC9yeHJwYy9wZWVyX29iamVjdC5jLTMxOC17XFxuLS1cXG5uZXQvcnhycGMvcGVlcl9vYmplY3QuYy0zMzMtICovXFxubmV0L3J4cnBjL3BlZXJfb2JqZWN0LmM6MzM0OnN0cnVjdCByeHJwY19wZWVyICpyeHJwY19sb29rdXBfcGVlcihzdHJ1Y3QgcnhycGNfbG9jYWwgKmxvY2FsLFxcbm5ldC9yeHJwYy9wZWVyX29iamVjdC5jLTMzNS1cXHRcXHRcXHRcXHQgICAgIHN0cnVjdCBzb2NrYWRkcl9yeHJwYyAqc3J4LCBnZnBfdCBnZnApXFxuLS1cXG5uZXQvcnhycGMvcGVlcl9vYmplY3QuYy0zODctICovXFxubmV0L3J4cnBjL3BlZXJfb2JqZWN0LmM6Mzg4OnN0cnVjdCByeHJwY19wZWVyICpyeHJwY19nZXRfcGVlcihzdHJ1Y3QgcnhycGNfcGVlciAqcGVlciwgZW51bSByeHJwY19wZWVyX3RyYWNlIHdoeSlcXG5uZXQvcnhycGMvcGVlcl9vYmplY3QuYy0zODkte1xcbi0tXFxubmV0L3J4cnBjL3BlZXJfb2JqZWN0LmMtMzk5LSAqL1xcbm5ldC9yeHJwYy9wZWVyX29iamVjdC5jOjQwMDpzdHJ1Y3QgcnhycGNfcGVlciAqcnhycGNfZ2V0X3BlZXJfbWF5YmUoc3RydWN0IHJ4cnBjX3BlZXIgKnBlZXIsXFxubmV0L3J4cnBjL3BlZXJfb2JqZWN0LmMtNDAxLVxcdFxcdFxcdFxcdFxcdGVudW0gcnhycGNfcGVlcl90cmFjZSB3aHkpXFxuLS1cXG5uZXQvcnhycGMvcGVlcl9vYmplY3QuYz00MTc9c3RhdGljIHZvaWQgX19yeHJwY19wdXRfcGVlcihzdHJ1Y3QgcnhycGNfcGVlciAqcGVlcilcXG4tLVxcbm5ldC9yeHJwYy9wZWVyX29iamVjdC5jLTQzMy0gKi9cXG5uZXQvcnhycGMvcGVlcl9vYmplY3QuYzo0MzQ6dm9pZCByeHJwY19wdXRfcGVlcihzdHJ1Y3QgcnhycGNfcGVlciAqcGVlciwgZW51bSByeHJwY19wZWVyX3RyYWNlIHdoeSlcXG5uZXQvcnhycGMvcGVlcl9vYmplY3QuYy00MzUte1xcbi0tXFxubmV0L3J4cnBjL3BlZXJfb2JqZWN0LmMtNDUxLSAqL1xcbm5ldC9yeHJwYy9wZWVyX29iamVjdC5jOjQ1Mjp2b2lkIHJ4cnBjX2Rlc3Ryb3lfYWxsX3BlZXJzKHN0cnVjdCByeHJwY19uZXQgKnJ4bmV0KVxcbm5ldC9yeHJwYy9wZWVyX29iamVjdC5jLTQ1My17XFxuLS1cXG5uZXQvcnhycGMvcGVlcl9vYmplY3QuYy00ODYtICovXFxubmV0L3J4cnBjL3BlZXJfb2JqZWN0LmM6NDg3OnN0cnVjdCByeHJwY19wZWVyICpyeHJwY19rZXJuZWxfZ2V0X2NhbGxfcGVlcihzdHJ1Y3Qgc29ja2V0ICpzb2NrLCBzdHJ1Y3QgcnhycGNfY2FsbCAqY2FsbClcXG5uZXQvcnhycGMvcGVlcl9vYmplY3QuYy00ODgte1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wOFQxNDo0NDowMi4yNDMzMDY2ODVaIiwiU2VxIjoxMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6NDA1OTY4ODA4MywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBbmFseXNpcyBvZiB0aGUgUlhSUEMgUGVlciBEZXN0cnVjdGlvbiBQYXRjaCoqXG5cbk9rYXksIHNvIEkndmUgYmVlbiBsb29raW5nIGF0IHRoaXMgcGF0Y2ggYW5kLCByaWdodCBvZmYgdGhlIGJhdCwgaXQncyBwcmV0dHkgY2xlYXIgdGhhdCBgcnhycGNfZGVzdHJveV9hbGxfcGVlcnNgIGlzIHRoZSBtYWluIGZ1bmN0aW9uIHRoYXQncyBiZWVuIG1vZGlmaWVkLiBBIHF1aWNrIGdsYW5jZSBhdCB0aGUgY29kZSByZXZlYWxzIHRoYXQgYHJ4cnBjX2V4aXRfbmV0YCBhbHNvIGNhbGxzIGl0LCBzbyB0aGF0J3MgZGVmaW5pdGVseSBhIHJlbGF0ZWQgYXJlYS4gR29vZCB0byBrbm93LiBMZXQncyBtYWtlIHN1cmUgdGhhdCBgcnhycGNfZGVzdHJveV9hbGxfcGVlcnNgIGlzIHRoZSByaWdodCBmb2N1cyBzeW1ib2wgdG8gdXNlLi4uIHllcCwgaXQgbG9va3MgbGlrZSBpdCBpcy4gSXTigJlzICp0aGUqIGZ1bmN0aW9uIHRoZXkndmUgY2hhbmdlZCwgd2hpY2ggaXMgd2hhdCBJIHN1c3BlY3RlZC4gQW5kIHNpbmNlIGByeHJwY19leGl0X25ldGAgY2FsbHMgaXQsIGl0IG1ha2VzIHNlbnNlIHRvIGluY2x1ZGUgaXQuXG5cbk5vdywgY29uZmlnLXdpc2UsIGl0IGxvb2tzIGxpa2Ugd2UncmUgZGVhbGluZyB3aXRoIGBBRl9SWFJQQ2Agc3BlY2lmaWNhbGx5LCB3aGljaCwgb2YgY291cnNlLCByZWxpZXMgb24gYElORVRgLiBUaGF0IG1ha2VzIHNlbnNlLlxuXG5BbHJpZ2h0LCB0aW1lIHRvIHRoaW5rIGFib3V0IGBzZXQtcmVzdWx0c2AuIFdlIG5lZWQgdG8gZGVmaW5lIGFsbCB0aGUgcGFyYW1ldGVycyB0byBwYXNzIHRvIGl0OlxuXG4qICAgKipXb3J0aEZ1enppbmcqKjogRGVmaW5pdGVseSB0cnVlLiBUaGlzIHBhdGNoIGludHJvZHVjZXMgYSBzcGlubG9jayAoYHJ4bmV0LVx1MDAzZXBlZXJfaGFzaF9sb2NrYCkgaW4gYHJ4cnBjX2Rlc3Ryb3lfYWxsX3BlZXJzYCBmb3Igc3luY2hyb25pemF0aW9uLiBUaGlzIGlzIGNyaXRpY2FsIGZvciBwcmV2ZW50aW5nIHVzZS1hZnRlci1mcmVlIGlzc3VlcyB0aGF0IGNhbiBvY2N1ciBkdXJpbmcgbmV0d29yayBuYW1lc3BhY2UgdGVhcmRvd24gaW4gYEFGX1JYUlBDYC4gQW55IGNoYW5nZSB0aGF0IGFsdGVycyByZWFjaGFibGUgbG9ja2luZyBhbmQgc3luY2hyb25pemF0aW9uIGluIGEgY29yZSBuZXR3b3JraW5nIHByb3RvY29sIGlzIHdvcnRoIGEgY2xvc2UgbG9vay5cbiogICAqKlJlYXNvbmluZyoqOiBJJ2xsIHdvcmQgaXQgc29tZXRoaW5nIGxpa2U6IFwiVGhlIHBhdGNoIGFkZHMgc3BpbmxvY2sgc3luY2hyb25pemF0aW9uIChgcnhuZXQtXHUwMDNlcGVlcl9oYXNoX2xvY2tgKSBpbiBgcnhycGNfZGVzdHJveV9hbGxfcGVlcnNgIHRvIHByZXZlbnQgdXNlLWFmdGVyLWZyZWUgcmFjZXMgZHVyaW5nIG5ldHdvcmsgbmFtZXNwYWNlIHRlYXJkb3duIGluIEFGX1JYUlBDLiBUaGlzIG1vZGlmaWVzIHJlYWNoYWJsZSBsb2NraW5nL3N5bmNocm9uaXphdGlvbiBsb2dpYyBpbiBhIGNvcmUgbmV0d29ya2luZyBwcm90b2NvbC5cIlxuKiAgICoqRm9jdXNTeW1ib2xzKio6IEFzIHdlIGFscmVhZHkgZXN0YWJsaXNoZWQsIHRoaXMgd2lsbCBiZSBgW1wicnhycGNfZGVzdHJveV9hbGxfcGVlcnNcIiwgXCJyeHJwY19leGl0X25ldFwiXWAuXG4qICAgKipFbmFibGVDb25maWdzKio6IGBbXCJBRl9SWFJQQ1wiLCBcIklORVRcIl1gIOKAkyB0aGF0J3MgYSBuby1icmFpbmVyLlxuXG5Pa2F5LCBJIHRoaW5rIHRoYXQgY292ZXJzIGV2ZXJ5dGhpbmcuIExldCBtZSBqdXN0IGRvIGEgcXVpY2sgc2FuaXR5IGNoZWNrIHRvIG1ha2Ugc3VyZSBJJ20gbm90IG1pc3NpbmcgYW55dGhpbmfigKYgYW5kIHRoZW4gaXQncyB0aW1lIHRvIGNhbGwgYHNldC1yZXN1bHRzYC5cblxuXG4iLCJJbnB1dFRva2VucyI6ODM1OSwiT3V0cHV0VG9rZW5zIjoxMTcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyNjgsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMDhUMTQ6NDQ6MDYuMzAyOTk4MjM3WiIsIlNlcSI6MTQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6Nzg1MTM5MDcsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIkFGX1JYUlBDXCIsXG4gICAgXCJJTkVUXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwicnhycGNfZGVzdHJveV9hbGxfcGVlcnNcIixcbiAgICBcInJ4cnBjX2V4aXRfbmV0XCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggYWRkcyBzcGlubG9jayBzeW5jaHJvbml6YXRpb24gKHBlZXJfaGFzaF9sb2NrKSBhcm91bmQgcGVlciBoYXNoIHRhYmxlIGl0ZXJhdGlvbiBpbiByeHJwY19kZXN0cm95X2FsbF9wZWVycyB0byBwcmV2ZW50IGNvbmN1cnJlbnQgdXNlLWFmdGVyLWZyZWUgcmFjZXMgZHVyaW5nIG5ldHdvcmsgbmFtZXNwYWNlIGNsZWFudXAuIFRoaXMgYWx0ZXJzIGxvY2tpbmcgYW5kIHN5bmNocm9uaXphdGlvbiBpbiByZWFjaGFibGUgQUZfUlhSUEMgbmV0d29ya2luZyBjb2RlLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIkFGX1JYUlBDXCIsXG4gICAgXCJJTkVUXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwicnhycGNfZGVzdHJveV9hbGxfcGVlcnNcIixcbiAgICBcInJ4cnBjX2V4aXRfbmV0XCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggYWRkcyBzcGlubG9jayBzeW5jaHJvbml6YXRpb24gKHBlZXJfaGFzaF9sb2NrKSBhcm91bmQgcGVlciBoYXNoIHRhYmxlIGl0ZXJhdGlvbiBpbiByeHJwY19kZXN0cm95X2FsbF9wZWVycyB0byBwcmV2ZW50IGNvbmN1cnJlbnQgdXNlLWFmdGVyLWZyZWUgcmFjZXMgZHVyaW5nIG5ldHdvcmsgbmFtZXNwYWNlIGNsZWFudXAuIFRoaXMgYWx0ZXJzIGxvY2tpbmcgYW5kIHN5bmNocm9uaXphdGlvbiBpbiByZWFjaGFibGUgQUZfUlhSUEMgbmV0d29ya2luZyBjb2RlLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wOFQxNDo0NDowNi4zODE1MTg4OTVaIiwiU2VxIjoxNSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJJZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEyMzgxNjIxMTE1LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDhUMTQ6NDQ6MDYuMzgyMDEzMTE1WiIsIlNlcSI6MTYsIk5lc3RpbmciOjIsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJrbXNhbi1ldmFsdWF0b3IiLCJNb2RlbCI6ImNvcmUiLCJEdXJhdGlvbiI6MTIzODExMjI1NDUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGFkZHMgc3Bpbl9sb2NrX2JoIGFuZCBzcGluX3VubG9ja19iaCBhcm91bmQgdGhlIHBlZXIgaGFzaCB0YWJsZSBpdGVyYXRpb24gaW4gcnhycGNfZGVzdHJveV9hbGxfcGVlcnMoKSB0byBwcmV2ZW50IHJhY2UgY29uZGl0aW9ucyBhbmQgcG90ZW50aWFsIHVzZS1hZnRlci1mcmVlIGR1cmluZyBjbGVhbnVwLiBJdCBkb2VzIG5vdCBpbnRyb2R1Y2UgYW55IG1lbW9yeSBhbGxvY2F0aW9ucywgdW5pbml0aWFsaXplZCB2YXJpYWJsZXMsIHVzZXItc3BhY2UgY29waWVzIChpbmZvLWxlYWtzKSwgb3IgYWx0ZXIgZGF0YSBpbml0aWFsaXphdGlvbiBsb2dpYy4gQW55IGNvbmN1cnJlbmN5LCBsb2NraW5nLCBvciB1c2UtYWZ0ZXItZnJlZSBpc3N1ZXMgYXJlIGRldGVjdGVkIGJ5IExPQ0tERVAgYW5kIEtBU0FOLiBUaGVyZWZvcmUsIGEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpcyBub3QgbmVlZGVkLlwiLFxuICBcIk5lZWRzS01TQU5cIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBzZWN1cml0eSBlbmdpbmVlciBzcGVjaWFsaXppbmcgaW4ga2VybmVsIG1lbW9yeVxuZXJyb3IgZGV0ZWN0b3JzIChLQVNBTiBhbmQgS01TQU4pLiBZb3VyIGpvYiBpcyB0byByZXZpZXcgdGhlIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmRcbmRldGVybWluZSBpZiB0aGUgY29kZSBjaGFuZ2VzIGp1c3RpZnkgc3Bhd25pbmcgYSBkZWRpY2F0ZWQgS01TQU4gKEtlcm5lbE1lbW9yeVNhbml0aXplcilcbmZ1enppbmcgc2Vzc2lvbiBpbiBhZGRpdGlvbiB0byBzdGFuZGFyZCBLQVNBTiBmdXp6aW5nLlxuXG5DUklUSUNBTCBESVNUSU5DVElPTiBCRVRXRUVOIEtBU0FOIEFORCBLTVNBTjpcbi0gU3RhbmRhcmQgS0FTQU4ga2VybmVsIGJ1aWxkcyAodXBzdHJlYW0tYXBwYXJtb3Ita2FzYW4uY29uZmlnKSBhbHJlYWR5IGVuYWJsZVxuICBhIGNvbXByZWhlbnNpdmUgc3VpdGUgb2YgZGVidWdnaW5nIHRvb2xzIGFuZCBzYW5pdGl6ZXJzLCBpbmNsdWRpbmcgS0FTQU5cbiAgKG91dC1vZi1ib3VuZHMgYWNjZXNzZXMsIHVzZS1hZnRlci1mcmVlLCBkb3VibGUgZnJlZSwgaW52YWxpZCBmcmVlKSwgTE9DS0RFUFxuICAobG9ja2luZyBidWdzIGFuZCBkZWFkbG9ja3MpLCBVQi1zYW5pdGl6ZXJzLCBhbmQgbWVtb3J5IGNvcnJ1cHRpb24gY2hlY2tzLlxuLSBLTVNBTiAoS2VybmVsTWVtb3J5U2FuaXRpemVyKSBkZXRlY3RzIHJlYWRzIG9mIFVOSU5JVElBTElaRUQgbWVtb3J5IChzdGFjaywgaGVhcCxcbiAgb3IgcGFnZSBhbGxvY2F0aW9ucykgYW5kIGtlcm5lbC10by11c2VyIG1lbW9yeSBpbmZvLWxlYWtzLlxuXG5SdWxlOiBUSEVSRSBJUyBOTyBTRU5TRSBJTiBSVU5OSU5HIEEgS01TQU4gU0VTU0lPTiBJRiBBIEJVRyBDQU4gQkUgQ0FVR0hUIEJZIEtBU0FOLFxuTE9DS0RFUCwgT1IgT1RIRVIgU1RBTkRBUkQgQlVHIERFVEVDVE9SUy5cbkEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpbmN1cnMgc2lnbmlmaWNhbnQgcmVzb3VyY2UgY29zdHMuIFlvdSBtdXN0IE9OTFlcbnNldCBOZWVkc0tNU0FOPXRydWUgaWYgdGhlIGNvZGUgY2hhbmdlcyBpbnRyb2R1Y2Ugb3IgZXhwb3NlIFVOSU5JVElBTElaRUQgTUVNT1JZIHJpc2tzXG50aGF0IGFyZSBkZXRlY3RlZCBPTkxZIGJ5IEtNU0FOLlxuXG5Mb29rIGhvbGlzdGljYWxseSBhdCB0aGUgcGF0Y2ggc2VyaWVzIGFuZCBzdXJyb3VuZGluZyBjb2RlLiBFdmVuIGlmIG5vIGRpcmVjdFxudW5pbml0aWFsaXplZCBmaWVsZCBhY2Nlc3NlcyBvciBuZXcgYnVmZmVyIGFsbG9jYXRpb25zIGFyZSBhZGRlZCBpbiB0aGUgZGlmZiBpdHNlbGYsXG5hIHBhdGNoIG1heSBhbHRlciBjb250cm9sIGZsb3csIGJvdW5kcyBjaGVja2luZywgb3IgZGF0YSBsZW5ndGggY2FsY3VsYXRpb25zIGluIHdheXNcbnRoYXQgY2hhbmdlIGhvdyB0aGUgcmVzdCBvZiB0aGUgY29kZSBvcGVyYXRlcyBvbiBleGlzdGluZyBidWZmZXJzIChlLmcuIGFsbG93aW5nXG51bmluaXRpYWxpemVkIHN0YWNrL2hlYXAgbWVtb3J5IHRvIGJlIHJlYWQsIGNvcGllZCB0byB1c2VyIHNwYWNlLCBvciB1c2VkIGluIGNvbnRyb2xcbmZsb3cpLiBEbyBub3QgaGVzaXRhdGUgdG8gdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gaW5zcGVjdCB0aGUgc3Vycm91bmRpbmcgY29kZSxcbmNhbGxlZCBmdW5jdGlvbnMsIGFuZCBjYWxsZXJzLlxuXG5TZXQgTmVlZHNLTVNBTj10cnVlIE9OTFkgSUYgdGhlIHBhdGNoIGludHJvZHVjZXMgb3IgbW9kaWZpZXM6XG4xLiBLZXJuZWwgc3RydWN0dXJlcyBzZW50IHRvIHVzZXIgc3BhY2UgKHZpYSBjb3B5X3RvX3VzZXIsIHB1dF91c2VyLCBuZXRsaW5rIHNrYlxuICAgYXR0cmlidXRlcywgaW9jdGwgb3V0cHV0IGFyZ3VtZW50cywgc29ja2V0IG9wdGlvbnMsIG9yIEJQRiBidWZmZXJzKSB3aGVyZSBmaWVsZHNcbiAgIG9yIHN0cnVjdHVyZSBwYWRkaW5nIG1pZ2h0IG5vdCBiZSBmdWxseSBpbml0aWFsaXplZC96ZXJvZWQuXG4yLiBDb25kaXRpb25hbCBsb2dpYyBvciBicmFuY2hpbmcgdGhhdCBkZXBlbmRzIG9uIHBvdGVudGlhbGx5IHVuaW5pdGlhbGl6ZWQgdmFyaWFibGVzXG4gICBvciBzdHJ1Y3QgZmllbGRzLlxuMy4gQWxsb2NhdGlvbiBvciBpbml0aWFsaXphdGlvbiBvZiBjb21wbGV4IGRhdGEgc3RydWN0dXJlcyB3aGVyZSB1bmluaXRpYWxpemVkIGZpZWxkc1xuICAgY291bGQgYmUgcmVhZCBsYXRlciBpbiByZWFjaGFibGUgY29kZSBwYXRocy5cbjQuIEJvdW5kcyBjaGVja3MsIGxlbmd0aHMsIG9yIGxvZ2ljIGluIGEgd2F5IHRoYXQgYWxsb3dzIHN1cnJvdW5kaW5nIGNvZGUgdG8gYWNjZXNzXG4gICB1bmluaXRpYWxpemVkIGJ5dGVzIG9mIGV4aXN0aW5nIGJ1ZmZlcnMuXG5cblNldCBOZWVkc0tNU0FOPWZhbHNlIElGOlxuLSBUaGUgY29kZSBjaGFuZ2VzIHByaW1hcmlseSByaXNrIG91dC1vZi1ib3VuZHMgYWNjZXNzLCBhcnJheSBvdmVyZmxvd3MsIE5VTEwgcG9pbnRlclxuICBkZXJlZmVyZW5jZXMsIGxvY2tpbmcgZGVhZGxvY2tzLCBvciB1c2UtYWZ0ZXItZnJlZSBidWdzICh0aGVzZSBhcmUgYWxyZWFkeSBjYXVnaHRcbiAgYnkgS0FTQU4sIExPQ0tERVAsIG9yIHN0YW5kYXJkIGJ1ZyBkZXRlY3RvcnMpLlxuLSBBbGwgc3RhY2svaGVhcCBzdHJ1Y3R1cmVzIHRvdWNoZWQgb3IgaW50cm9kdWNlZCBieSB0aGUgcGF0Y2ggYXJlIGZ1bGx5IHplcm9lZFxuICBvciBpbml0aWFsaXplZCAoZS5nLiB1c2luZyA9IHswfSwgbWVtc2V0LCBremFsbG9jKSBiZWZvcmUgYmVpbmcgcmVhZCBvciBjb3BpZWQuXG4tIFRoZSBwYXRjaCBkb2VzIG5vdCBpbnRyb2R1Y2UgYW55IHJpc2sgb2YgdW5pbml0aWFsaXplZCBtZW1vcnkgdXNhZ2Ugb3IgaW5mby1sZWFrcy5cblxuVXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gaW5zcGVjdCB0aGUgc3Vycm91bmRpbmcgY29kZSBpZiBuZWNlc3NhcnksIHRoZW4gcHJvdmlkZVxuZGV0YWlsZWQgS01TQU5SZWFzb25pbmcgY29udHJhc3RpbmcgS0FTQU4gdnMgS01TQU4gYXBwbGljYWJpbGl0eSBmb3IgdGhpcyBwYXRjaC5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IlRhcmdldCBhcmNoaXRlY3R1cmU6IGFtZDY0XG5cbkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IDViYmQ2N2ZmNjM1OGNhYzRlY2JhODMyOGM3MDIyZWIzMTgxZDZlNTBcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgVHVlIFNlcCA4IDE0OjQzOjM1IDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvbmV0L3J4cnBjL3BlZXJfb2JqZWN0LmMgYi9uZXQvcnhycGMvcGVlcl9vYmplY3QuY1xuaW5kZXggZmE5YTQwNmUxMTY4My4uZmFhMjk4MzYzOGIyYiAxMDA2NDRcbi0tLSBhL25ldC9yeHJwYy9wZWVyX29iamVjdC5jXG4rKysgYi9uZXQvcnhycGMvcGVlcl9vYmplY3QuY1xuQEAgLTQ1NCw2ICs0NTQsMTIgQEAgdm9pZCByeHJwY19kZXN0cm95X2FsbF9wZWVycyhzdHJ1Y3QgcnhycGNfbmV0ICpyeG5ldClcbiBcdHN0cnVjdCByeHJwY19wZWVyICpwZWVyO1xuIFx0aW50IGk7XG4gXG4rXHQvKlxuK1x0ICogUHJldmVudCB1c2UtYWZ0ZXItZnJlZSBpZiBhIHBlZXIgaXMgY29uY3VycmVudGx5IHVubGlua2VkIGZyb20gdGhlXG4rXHQgKiBoYXNoIHRhYmxlIGFuZCBmcmVlZCB2aWEgUkNVIGR1cmluZyBpdGVyYXRpb24uXG4rXHQgKi9cbitcdHNwaW5fbG9ja19iaChcdTAwMjZyeG5ldC1cdTAwM2VwZWVyX2hhc2hfbG9jayk7XG4rXG4gXHRmb3IgKGkgPSAwOyBpIFx1MDAzYyBIQVNIX1NJWkUocnhuZXQtXHUwMDNlcGVlcl9oYXNoKTsgaSsrKSB7XG4gXHRcdGlmIChobGlzdF9lbXB0eShcdTAwMjZyeG5ldC1cdTAwM2VwZWVyX2hhc2hbaV0pKVxuIFx0XHRcdGNvbnRpbnVlO1xuQEAgLTQ2NSw2ICs0NzEsOCBAQCB2b2lkIHJ4cnBjX2Rlc3Ryb3lfYWxsX3BlZXJzKHN0cnVjdCByeHJwY19uZXQgKnJ4bmV0KVxuIFx0XHRcdCAgICAgICBcdTAwMjZwZWVyLVx1MDAzZXNyeC50cmFuc3BvcnQpO1xuIFx0XHR9XG4gXHR9XG4rXG4rXHRzcGluX3VubG9ja19iaChcdTAwMjZyeG5ldC1cdTAwM2VwZWVyX2hhc2hfbG9jayk7XG4gfVxuIFxuIC8qKlxuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDhUMTQ6NDQ6MDYuMzgyMDE0NDA1WiIsIlNlcSI6MTcsIk5lc3RpbmciOjMsIlR5cGUiOiJsbG0iLCJOYW1lIjoia21zYW4tZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjkxNzM2NTk1MzQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSB0YWtlIG9uIHRoZSBzaXR1YXRpb246XG5cbioqSW52ZXN0aWdhdGluZyB0aGUgUGVlciBEZXN0cnVjdGlvbiBpbiByeHJwYyoqXG5cbkFscmlnaHQsIHRoZSBidWcgcmVwb3J0IHBvaW50cyB0byBgbmV0L3J4cnBjL3BlZXJfb2JqZWN0LmNgIGFuZCBzcGVjaWZpY2FsbHkgYHJ4cnBjX2Rlc3Ryb3lfYWxsX3BlZXJzYC4gVGhhdCdzIGEgZ29vZCBzdGFydGluZyBwb2ludC4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2hhdCdzIGhhcHBlbmluZyBpbiB0aGF0IGZ1bmN0aW9uIGFuZCBpdHMgc3Vycm91bmRpbmcgY29kZSB0byB0cmFjayBkb3duIHRoZSByb290IGNhdXNlLiBUaGlzIGxpa2VseSBpbnZvbHZlcyBob3cgcGVlciBvYmplY3RzIGFyZSBjcmVhdGVkLCBtYW5hZ2VkLCBhbmQgZmluYWxseSBjbGVhbmVkIHVwIHdpdGhpbiB0aGUgcnhycGMgbW9kdWxlLiBJJ2xsIG5lZWQgdG8gbG9vayBhdCBhbnkgcG90ZW50aWFsIHJhY2UgY29uZGl0aW9ucyBvciByZXNvdXJjZSBsZWFrcyB3aXRoaW4gdGhpcyBjb250ZXh0LlxuXG5UaW1lIHRvIHB1bGwgdXAgdGhhdCBmaWxlIGFuZCBnZXQgdG8gcmVhZGluZy4uLiBJJ2xsIHVzZSBgcmVhZC1maWxlYCB0byBncmFiIGBuZXQvcnhycGMvcGVlcl9vYmplY3QuY2AgYW5kIHN0YXJ0IGRpZ2dpbmcgaW4uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIyMDUsIk91dHB1dFRva2VucyI6MzgsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo3NCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA4VDE0OjQ0OjE1LjU1NTY3NzQzOVoiLCJTZXEiOjE4LCJOZXN0aW5nIjozLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo4MDkxMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJuZXQvcnhycGMvcGVlcl9vYmplY3QuY1wiLFxuICBcIkZpcnN0TGluZVwiOiA0NDUsXG4gIFwiTGluZUNvdW50XCI6IDQ1XG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiA0NDU6XFx0XFx0XFx0XFx0X19yeHJwY19wdXRfcGVlcihwZWVyKTtcXG4gNDQ2OlxcdFxcdH1cXG4gNDQ3OlxcdH1cXG4gNDQ4OlxcdFxcbiA0NDk6XFx0LypcXG4gNDUwOlxcdCAqIE1ha2Ugc3VyZSBhbGwgcGVlciByZWNvcmRzIGhhdmUgYmVlbiBkaXNjYXJkZWQuXFxuIDQ1MTpcXHQgKi9cXG4gNDUyOlxcdHZvaWQgcnhycGNfZGVzdHJveV9hbGxfcGVlcnMoc3RydWN0IHJ4cnBjX25ldCAqcnhuZXQpXFxuIDQ1MzpcXHR7XFxuIDQ1NDpcXHRcXHRzdHJ1Y3QgcnhycGNfcGVlciAqcGVlcjtcXG4gNDU1OlxcdFxcdGludCBpO1xcbiA0NTY6XFx0XFxuIDQ1NzpcXHRcXHQvKlxcbiA0NTg6XFx0XFx0ICogUHJldmVudCB1c2UtYWZ0ZXItZnJlZSBpZiBhIHBlZXIgaXMgY29uY3VycmVudGx5IHVubGlua2VkIGZyb20gdGhlXFxuIDQ1OTpcXHRcXHQgKiBoYXNoIHRhYmxlIGFuZCBmcmVlZCB2aWEgUkNVIGR1cmluZyBpdGVyYXRpb24uXFxuIDQ2MDpcXHRcXHQgKi9cXG4gNDYxOlxcdFxcdHNwaW5fbG9ja19iaChcXHUwMDI2cnhuZXQtXFx1MDAzZXBlZXJfaGFzaF9sb2NrKTtcXG4gNDYyOlxcdFxcbiA0NjM6XFx0XFx0Zm9yIChpID0gMDsgaSBcXHUwMDNjIEhBU0hfU0laRShyeG5ldC1cXHUwMDNlcGVlcl9oYXNoKTsgaSsrKSB7XFxuIDQ2NDpcXHRcXHRcXHRpZiAoaGxpc3RfZW1wdHkoXFx1MDAyNnJ4bmV0LVxcdTAwM2VwZWVyX2hhc2hbaV0pKVxcbiA0NjU6XFx0XFx0XFx0XFx0Y29udGludWU7XFxuIDQ2NjpcXHRcXG4gNDY3OlxcdFxcdFxcdGhsaXN0X2Zvcl9lYWNoX2VudHJ5KHBlZXIsIFxcdTAwMjZyeG5ldC1cXHUwMDNlcGVlcl9oYXNoW2ldLCBoYXNoX2xpbmspIHtcXG4gNDY4OlxcdFxcdFxcdFxcdHByX2VycihcXFwiTGVha2VkIHBlZXIgJXggeyV1fSAlcElTcFxcXFxuXFxcIixcXG4gNDY5OlxcdFxcdFxcdFxcdCAgICAgICBwZWVyLVxcdTAwM2VkZWJ1Z19pZCxcXG4gNDcwOlxcdFxcdFxcdFxcdCAgICAgICByZWZjb3VudF9yZWFkKFxcdTAwMjZwZWVyLVxcdTAwM2VyZWYpLFxcbiA0NzE6XFx0XFx0XFx0XFx0ICAgICAgIFxcdTAwMjZwZWVyLVxcdTAwM2VzcngudHJhbnNwb3J0KTtcXG4gNDcyOlxcdFxcdFxcdH1cXG4gNDczOlxcdFxcdH1cXG4gNDc0OlxcdFxcbiA0NzU6XFx0XFx0c3Bpbl91bmxvY2tfYmgoXFx1MDAyNnJ4bmV0LVxcdTAwM2VwZWVyX2hhc2hfbG9jayk7XFxuIDQ3NjpcXHR9XFxuIDQ3NzpcXHRcXG4gNDc4OlxcdC8qKlxcbiA0Nzk6XFx0ICogcnhycGNfa2VybmVsX2dldF9jYWxsX3BlZXIgLSBHZXQgdGhlIHBlZXIgYWRkcmVzcyBvZiBhIGNhbGxcXG4gNDgwOlxcdCAqIEBzb2NrOiBUaGUgc29ja2V0IG9uIHdoaWNoIHRoZSBjYWxsIGlzIGluIHByb2dyZXNzLlxcbiA0ODE6XFx0ICogQGNhbGw6IFRoZSBjYWxsIHRvIHF1ZXJ5XFxuIDQ4MjpcXHQgKlxcbiA0ODM6XFx0ICogR2V0IGEgcmVjb3JkIGZvciB0aGUgcmVtb3RlIHBlZXIgaW4gYSBjYWxsLlxcbiA0ODQ6XFx0ICpcXG4gNDg1OlxcdCAqIFJldHVybjogVGhlIGNhbGwncyBwZWVyIHJlY29yZC5cXG4gNDg2OlxcdCAqL1xcbiA0ODc6XFx0c3RydWN0IHJ4cnBjX3BlZXIgKnJ4cnBjX2tlcm5lbF9nZXRfY2FsbF9wZWVyKHN0cnVjdCBzb2NrZXQgKnNvY2ssIHN0cnVjdCByeHJwY19jYWxsICpjYWxsKVxcbiA0ODg6XFx0e1xcbiA0ODk6XFx0XFx0cmV0dXJuIHJ4cnBjX2dldF9wZWVyKGNhbGwtXFx1MDAzZXBlZXIsIHJ4cnBjX3BlZXJfZ2V0X2FwcGxpY2F0aW9uKTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDhUMTQ6NDQ6MTUuNTU1NzU5OTg5WiIsIlNlcSI6MTksIk5lc3RpbmciOjMsIlR5cGUiOiJsbG0iLCJOYW1lIjoia21zYW4tZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjMyMDczNDAzOTEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQXNzZXNzbWVudCBvZiB0aGUgUGF0Y2gqKlxuXG5Pa2F5LCBzbyB0aGlzIHBhdGNoIGlzIHN0cmFpZ2h0Zm9yd2FyZC4gQWxsIGl0J3MgZG9pbmcgaXMgd3JhcHBpbmcgdGhlIGxvb3AgaW4gYHJ4cnBjX2Rlc3Ryb3lfYWxsX3BlZXJzYCB3aXRoIGEgYHNwaW5fbG9ja19iaGAgYW5kIGBzcGluX3VubG9ja19iaGAgcGFpci4gQ2xlYXJseSwgdGhpcyBpcyBwdXJlbHkgYWJvdXQgbG9ja2luZyDigJMgY29uY3VycmVuY3kgbWFuYWdlbWVudCB0byBiZSBleGFjdC4gSXQncyBkZXNpZ25lZCB0byBwcm90ZWN0IGFnYWluc3QgcG90ZW50aWFsIHVzZS1hZnRlci1mcmVlIHNjZW5hcmlvcyBvciByYWNlIGNvbmRpdGlvbnMgdGhhdCBjb3VsZCBvY2N1ciB3aGVuIGl0ZXJhdGluZyB0aHJvdWdoIHRoZSBgcGVlcl9oYXNoYC5cblxuTGV0J3MgYnJlYWsgdGhpcyBkb3duIHN5c3RlbWF0aWNhbGx5LiBGaXJzdCwgZG9lcyB0aGlzIHBhdGNoIHRvdWNoIGFueSBrZXJuZWwgc3RydWN0dXJlcyB0aGF0IGFyZSBzZW50IHRvIHVzZXIgc3BhY2U/IE5vcGUsIG5vdCBhdCBhbGwuIFNlY29uZCwgYXJlIHRoZXJlIGFueSBpbnRyb2R1Y2VkIGNvbmRpdGlvbmFscyBiYXNlZCBvbiBwb3RlbnRpYWxseSB1bmluaXRpYWxpemVkIHZhcmlhYmxlcz8gU3RpbGwgbm8uIFRoaXJkLCBkb2VzIGl0IGludm9sdmUgYWxsb2NhdGluZyBvciBpbml0aWFsaXppbmcgYW55IGNvbXBsZXggZGF0YSBzdHJ1Y3R1cmVzPyBBZ2Fpbiwgbm8uIFRoZW4gd2UgbG9vayBhdCBib3VuZHMgY2hlY2tzIGFuZCBsZW5ndGhzLiBOb3RoaW5nIGhlcmUuIEFuZCBmaW5hbGx5LCBkb2VzIHRoaXMgcGF0Y2ggZXhwb3NlIGFueSB1bmluaXRpYWxpemVkIG1lbW9yeT8gTm8sIEkgZG9uJ3Qgc2VlIGFueSBvZiB0aG9zZSByaXNrcyBlaXRoZXIuXG5cbkNvbnNpZGVyaW5nIGFsbCB0aGF0LCBJJ20gY29uZmlkZW50IGluIHNheWluZyB0aGF0IGBOZWVkc0tNU0FOID0gZmFsc2VgLiBJdCBzZWVtcyB0aGUgcHJpbWFyeSBjb25jZXJucyBhcmUgcmVsYXRlZCB0byBjb25jdXJyZW5jeSwgd2hpY2ggYXJlIGlkZWFsbHkgYWRkcmVzc2VkIGJ5IHRvb2xzIGxpa2UgS0FTQU4gYW5kIExPQ0tERVAuIFRoZXknbGwgcmVhZGlseSBjYXRjaCBhbnkgaXNzdWVzIHRoaXMgbWlnaHQgaW50cm9kdWNlIGluIHRoZW9yeS5cblxuTm93LCBsZXQncyBqdXN0IGRvIGEgcXVpY2sgZG91YmxlLWNoZWNrIHRvIG1ha2Ugc3VyZSBteSByZWFzb25pbmcgaXMgY2xlYXIsIGFjY3VyYXRlLCBhbmQgY29uY2lzZS4gV2UgYWx3YXlzIG5lZWQgdG8gY29udHJhc3QgS0FTQU4gYW5kIEtNU0FOLlxuXG5cbiIsIklucHV0VG9rZW5zIjozMTU2LCJPdXRwdXRUb2tlbnMiOjEzMywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIzMSwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA4VDE0OjQ0OjE4Ljc2MzEwMzA1WiIsIlNlcSI6MjAsIk5lc3RpbmciOjMsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MzA1NzAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJLTVNBTlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBhZGRzIHNwaW5fbG9ja19iaCBhbmQgc3Bpbl91bmxvY2tfYmggYXJvdW5kIHRoZSBwZWVyIGhhc2ggdGFibGUgaXRlcmF0aW9uIGluIHJ4cnBjX2Rlc3Ryb3lfYWxsX3BlZXJzKCkgdG8gcHJldmVudCByYWNlIGNvbmRpdGlvbnMgYW5kIHBvdGVudGlhbCB1c2UtYWZ0ZXItZnJlZSBkdXJpbmcgY2xlYW51cC4gSXQgZG9lcyBub3QgaW50cm9kdWNlIGFueSBtZW1vcnkgYWxsb2NhdGlvbnMsIHVuaW5pdGlhbGl6ZWQgdmFyaWFibGVzLCB1c2VyLXNwYWNlIGNvcGllcyAoaW5mby1sZWFrcyksIG9yIGFsdGVyIGRhdGEgaW5pdGlhbGl6YXRpb24gbG9naWMuIEFueSBjb25jdXJyZW5jeSwgbG9ja2luZywgb3IgdXNlLWFmdGVyLWZyZWUgaXNzdWVzIGFyZSBkZXRlY3RlZCBieSBMT0NLREVQIGFuZCBLQVNBTi4gVGhlcmVmb3JlLCBhIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaXMgbm90IG5lZWRlZC5cIixcbiAgXCJOZWVkc0tNU0FOXCI6IGZhbHNlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJLTVNBTlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBhZGRzIHNwaW5fbG9ja19iaCBhbmQgc3Bpbl91bmxvY2tfYmggYXJvdW5kIHRoZSBwZWVyIGhhc2ggdGFibGUgaXRlcmF0aW9uIGluIHJ4cnBjX2Rlc3Ryb3lfYWxsX3BlZXJzKCkgdG8gcHJldmVudCByYWNlIGNvbmRpdGlvbnMgYW5kIHBvdGVudGlhbCB1c2UtYWZ0ZXItZnJlZSBkdXJpbmcgY2xlYW51cC4gSXQgZG9lcyBub3QgaW50cm9kdWNlIGFueSBtZW1vcnkgYWxsb2NhdGlvbnMsIHVuaW5pdGlhbGl6ZWQgdmFyaWFibGVzLCB1c2VyLXNwYWNlIGNvcGllcyAoaW5mby1sZWFrcyksIG9yIGFsdGVyIGRhdGEgaW5pdGlhbGl6YXRpb24gbG9naWMuIEFueSBjb25jdXJyZW5jeSwgbG9ja2luZywgb3IgdXNlLWFmdGVyLWZyZWUgaXNzdWVzIGFyZSBkZXRlY3RlZCBieSBMT0NLREVQIGFuZCBLQVNBTi4gVGhlcmVmb3JlLCBhIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaXMgbm90IG5lZWRlZC5cIixcbiAgXCJOZWVkc0tNU0FOXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+IHsKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOyAKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iKSB7CgkJCQkJc3RhdHMubGxtLmNvdW50Kys7CgkJCQkJc3RhdHMubGxtLnRva2VucyArPSAocy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2Vucyk7CgkJCQkJc3RhdHMubGxtLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0gZWxzZSBpZiAocy5UeXBlID09PSAidG9vbCIpIHsKCQkJCQlzdGF0cy50b29sLmNvdW50Kys7CgkJCQkJc3RhdHMudG9vbC5kdXJhdGlvbiArPSBkdXI7CgkJCQl9CgkJCX0pOwoKCQkJY29uc3QgYXZnTGxtRHVyID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0uZHVyYXRpb24gLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdMbG1Ub2tlbiA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLnRva2VucyAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z1Rvb2xEdXIgPSBzdGF0cy50b29sLmNvdW50ID4gMCA/IChzdGF0cy50b29sLmR1cmF0aW9uIC8gc3RhdHMudG9vbC5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgoJCQljb25zdCBsbG1TdW1hcnlDZWxscyA9IFtzdGF0cy5sbG0uY291bnQsIHN0YXRzLmxsbS50b2tlbnMsIGF2Z0xsbVRva2VuLCBzdGF0cy5sbG0uZHVyYXRpb24sIGF2Z0xsbUR1cl07CgkJCWNvbnN0IHRvb2xTdW1tYXJ5Q2VsbHMgPSBbc3RhdHMudG9vbC5jb3VudCwgc3RhdHMudG9vbC5kdXJhdGlvbiwgYXZnVG9vbER1cl07CgoJCQljb25zdCBsbG1TdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdsbG1fc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCWxsbVN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCBsbG1UciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCWxsbVN1bWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQlsbG1Uci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQlsbG1TdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZChsbG1Ucik7CgoJCQljb25zdCB0b29sU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJdG9vbFN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCB0b29sVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQl0b29sU3VtbWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQl0b29sVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJdG9vbFN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKHRvb2xUcik7CgkJfQoKCQlmdW5jdGlvbiBkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGZpbHRlcmVkU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IFsibGxtIiwgInRvb2wiXS5pbmNsdWRlcyhkLlR5cGUpKTsKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnRHVyYXRpb24nKTsKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsgCgoJCQlmaWx0ZXJlZFN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQkKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOwoJCQkJbGV0IHRvb2x0aXAgPSBzLk5hbWU7CgkJCQlpZiAocy5UeXBlID09PSAibGxtIiAmJiBzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgkJCQlkYXRhLmFkZFJvdyhbYCR7cy5TZXF9YCwgZHVyLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVGltZSBDb25zdW1wdGlvbiBvZiBMTE0vVG9vbCBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNL1Rvb2wgU3RlcHMnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnU2Vjb25kcycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZHVyYXRpb25fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGxsbVN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBkLlR5cGUgPT09ICJsbG0iKTsKCQkJaWYgKGxsbVN0ZXBzLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnVG9rZW5zJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3N0eWxlJ30pOwkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsJCgoJCQljb25zdCBhZ2VudENvbG9ycyA9IHt9OwoJCQljb25zdCBwYWxldHRlID0gWycjNDI4NUY0JywgJyNEQjQ0MzcnLCAnI0Y0QjQwMCcsICcjMEY5RDU4JywgJyNBQjQ3QkMnLCAnIzAwQUNDMSddOwoJCQlsZXQgY29sb3JJZHggPSAwOwoJCQljb25zdCBhZ2VudExMTUNvdW50cyA9IHt9OwoJCQlsbG1TdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJaWYgKCFhZ2VudENvbG9yc1tzLk5hbWVdKSB7CgkJCQkJYWdlbnRDb2xvcnNbcy5OYW1lXSA9IHBhbGV0dGVbY29sb3JJZHggJSBwYWxldHRlLmxlbmd0aF07CgkJCQkJY29sb3JJZHgrKzsKCQkJCX0KCgkJCQlhZ2VudExMTUNvdW50c1tzLk5hbWVdID0gKGFnZW50TExNQ291bnRzW3MuTmFtZV0gfHwgMCkgKyAxOwoJCQkJY29uc3QgbGFiZWwgPSBgJHtzLk5hbWV9LSR7YWdlbnRMTE1Db3VudHNbcy5OYW1lXX1gOwoJCQkJY29uc3QgdG90YWxUb2tlbnMgPSBzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zOwoJCQkJY29uc3Qgc3R5bGUgPSBgY29sb3I6ICR7YWdlbnRDb2xvcnNbcy5OYW1lXX1gOwoJCQkJbGV0IHRvb2x0aXAgPSBgVG90YWwgVG9rZW5zOiAke3RvdGFsVG9rZW5zfVxuKEluOiAke3MuSW5wdXRUb2tlbnN9LCBPdXQ6ICR7cy5PdXRwdXRUb2tlbnN9LCBUaG91Z2h0czogJHtzLk91dHB1dFRob3VnaHRzVG9rZW5zfSlgOwoJCQkJaWYgKHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCgkJCQlkYXRhLmFkZFJvdyhbbGFiZWwsIHRvdGFsVG9rZW5zLCBzdHlsZSwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1Rva2VuIENvbnN1bXB0aW9uIGJ5IExMTSBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNIENhbGwgU2VxdWVuY2UnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnQ29uc3VtZWQgVG9rZW5zJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b2tlbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoJCWxldCBhbGxFeHBhbmRlZCA9IGZhbHNlOwoJCWZ1bmN0aW9uIHRvZ2dsZUFsbERldGFpbHMoKSB7CgkJCWFsbEV4cGFuZGVkID0gIWFsbEV4cGFuZGVkOwoJCQlkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdkZXRhaWxzJykuZm9yRWFjaChkID0+IHsKCQkJCWlmIChhbGxFeHBhbmRlZCkgZC5zZXRBdHRyaWJ1dGUoJ29wZW4nLCAnJyk7CgkJCQllbHNlIGQucmVtb3ZlQXR0cmlidXRlKCdvcGVuJyk7CgkJCX0pOwoJCX0KCTwvc2NyaXB0PgoKCjwvYm9keT4KPC9odG1sPgo=" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflow8cbcd[1] Phase: Succeeded StartedAt: 2026-09-08 14:44:30 +0000 UTC FinishedAt: 2026-09-08 14:44:31 +0000 UTC Input: nil Output: nil --------- Name: series-workflow8cbcd[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-09-08 14:44:31 +0000 UTC FinishedAt: 2026-09-08 14:44:31 +0000 UTC Input: nil Output: nil --------- Name: series-workflow8cbcd[2] Phase: Succeeded StartedAt: 2026-09-08 14:44:31 +0000 UTC FinishedAt: 2026-09-08 18:36:41 +0000 UTC Input: nil Output: nil --------- Name: series-workflow8cbcd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"bc6fe9d301d59fe5cb236d646abe792bffae5fa6","config_name":"upstream-apparmor-kasan.config","enable_configs":["AF_RXRPC","INET"],"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":["rxrpc_destroy_all_peers","rxrpc_exit_net"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"bc6fe9d301d59fe5cb236d646abe792bffae5fa6","config_name":"upstream-apparmor-kasan.config","enable_configs":["AF_RXRPC","INET"],"series_id":"19ad0978-35e7-4888-b0f1-7fa63b1863ea","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:{"findings":["4eb5795c-f73d-43ee-b3df-3291d8644727"]},track:KASAN) Phase: Succeeded StartedAt: 2026-09-08 14:44:31 +0000 UTC FinishedAt: 2026-09-08 18:36:41 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"bc6fe9d301d59fe5cb236d646abe792bffae5fa6","config_name":"upstream-apparmor-kasan.config","enable_configs":["AF_RXRPC","INET"],"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":["rxrpc_destroy_all_peers","rxrpc_exit_net"],"skip_cover_check":false},"patched":{"arch":"amd64","commit_hash":"bc6fe9d301d59fe5cb236d646abe792bffae5fa6","config_name":"upstream-apparmor-kasan.config","enable_configs":["AF_RXRPC","INET"],"series_id":"19ad0978-35e7-4888-b0f1-7fa63b1863ea","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},"retest":{"findings":["4eb5795c-f73d-43ee-b3df-3291d8644727"]},"track":"KASAN"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: nil --------- Name: series-workflow8cbcd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"bc6fe9d301d59fe5cb236d646abe792bffae5fa6","config_name":"upstream-apparmor-kasan.config","enable_configs":["AF_RXRPC","INET"],"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":["rxrpc_destroy_all_peers","rxrpc_exit_net"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"bc6fe9d301d59fe5cb236d646abe792bffae5fa6","config_name":"upstream-apparmor-kasan.config","enable_configs":["AF_RXRPC","INET"],"series_id":"19ad0978-35e7-4888-b0f1-7fa63b1863ea","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:{"findings":["4eb5795c-f73d-43ee-b3df-3291d8644727"]},track:KASAN)[0] Phase: Succeeded StartedAt: 2026-09-08 14:44:31 +0000 UTC FinishedAt: 2026-09-08 14:44:42 +0000 UTC Input: nil Output: nil --------- Name: series-workflow8cbcd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"bc6fe9d301d59fe5cb236d646abe792bffae5fa6","config_name":"upstream-apparmor-kasan.config","enable_configs":["AF_RXRPC","INET"],"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":["rxrpc_destroy_all_peers","rxrpc_exit_net"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"bc6fe9d301d59fe5cb236d646abe792bffae5fa6","config_name":"upstream-apparmor-kasan.config","enable_configs":["AF_RXRPC","INET"],"series_id":"19ad0978-35e7-4888-b0f1-7fa63b1863ea","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:{"findings":["4eb5795c-f73d-43ee-b3df-3291d8644727"]},track:KASAN)[0].save-base-req Phase: Succeeded StartedAt: 2026-09-08 14:44:31 +0000 UTC FinishedAt: 2026-09-08 14:44:35 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"bc6fe9d301d59fe5cb236d646abe792bffae5fa6","config_name":"upstream-apparmor-kasan.config","enable_configs":["AF_RXRPC","INET"],"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-workflow8cbcd/series-workflow8cbcd-convert-artifact-1144892106/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow8cbcd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"bc6fe9d301d59fe5cb236d646abe792bffae5fa6","config_name":"upstream-apparmor-kasan.config","enable_configs":["AF_RXRPC","INET"],"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":["rxrpc_destroy_all_peers","rxrpc_exit_net"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"bc6fe9d301d59fe5cb236d646abe792bffae5fa6","config_name":"upstream-apparmor-kasan.config","enable_configs":["AF_RXRPC","INET"],"series_id":"19ad0978-35e7-4888-b0f1-7fa63b1863ea","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:{"findings":["4eb5795c-f73d-43ee-b3df-3291d8644727"]},track:KASAN)[1] Phase: Succeeded StartedAt: 2026-09-08 14:44:42 +0000 UTC FinishedAt: 2026-09-08 15:05:08 +0000 UTC Input: nil Output: nil --------- Name: series-workflow8cbcd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"bc6fe9d301d59fe5cb236d646abe792bffae5fa6","config_name":"upstream-apparmor-kasan.config","enable_configs":["AF_RXRPC","INET"],"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":["rxrpc_destroy_all_peers","rxrpc_exit_net"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"bc6fe9d301d59fe5cb236d646abe792bffae5fa6","config_name":"upstream-apparmor-kasan.config","enable_configs":["AF_RXRPC","INET"],"series_id":"19ad0978-35e7-4888-b0f1-7fa63b1863ea","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:{"findings":["4eb5795c-f73d-43ee-b3df-3291d8644727"]},track:KASAN)[1].base-build Phase: Succeeded StartedAt: 2026-09-08 14:44:42 +0000 UTC FinishedAt: 2026-09-08 15:05:08 +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:*aca7f4ed-fb73-4210-8eaa-f2e483bdd07f,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-workflow8cbcd/series-workflow8cbcd-convert-artifact-1144892106/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": "76ba5d77-059a-4422-aa3d-8bccae29a71f", "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-workflow8cbcd/series-workflow8cbcd-build-action-2006074040/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow8cbcd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"bc6fe9d301d59fe5cb236d646abe792bffae5fa6","config_name":"upstream-apparmor-kasan.config","enable_configs":["AF_RXRPC","INET"],"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":["rxrpc_destroy_all_peers","rxrpc_exit_net"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"bc6fe9d301d59fe5cb236d646abe792bffae5fa6","config_name":"upstream-apparmor-kasan.config","enable_configs":["AF_RXRPC","INET"],"series_id":"19ad0978-35e7-4888-b0f1-7fa63b1863ea","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:{"findings":["4eb5795c-f73d-43ee-b3df-3291d8644727"]},track:KASAN)[1].base-build(0) Phase: Succeeded StartedAt: 2026-09-08 14:44:42 +0000 UTC FinishedAt: 2026-09-08 15:04:58 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:findings,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Build Base,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:smoke-build,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:session-id,Default:nil,Value:*aca7f4ed-fb73-4210-8eaa-f2e483bdd07f,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-workflow8cbcd/series-workflow8cbcd-convert-artifact-1144892106/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": "76ba5d77-059a-4422-aa3d-8bccae29a71f", "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-workflow8cbcd/series-workflow8cbcd-build-action-2006074040/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow8cbcd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"bc6fe9d301d59fe5cb236d646abe792bffae5fa6","config_name":"upstream-apparmor-kasan.config","enable_configs":["AF_RXRPC","INET"],"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":["rxrpc_destroy_all_peers","rxrpc_exit_net"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"bc6fe9d301d59fe5cb236d646abe792bffae5fa6","config_name":"upstream-apparmor-kasan.config","enable_configs":["AF_RXRPC","INET"],"series_id":"19ad0978-35e7-4888-b0f1-7fa63b1863ea","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:{"findings":["4eb5795c-f73d-43ee-b3df-3291d8644727"]},track:KASAN)[2] Phase: Succeeded StartedAt: 2026-09-08 15:05:08 +0000 UTC FinishedAt: 2026-09-08 15:05:08 +0000 UTC Input: nil Output: nil --------- Name: series-workflow8cbcd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"bc6fe9d301d59fe5cb236d646abe792bffae5fa6","config_name":"upstream-apparmor-kasan.config","enable_configs":["AF_RXRPC","INET"],"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":["rxrpc_destroy_all_peers","rxrpc_exit_net"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"bc6fe9d301d59fe5cb236d646abe792bffae5fa6","config_name":"upstream-apparmor-kasan.config","enable_configs":["AF_RXRPC","INET"],"series_id":"19ad0978-35e7-4888-b0f1-7fa63b1863ea","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:{"findings":["4eb5795c-f73d-43ee-b3df-3291d8644727"]},track:KASAN)[2].abort-if-base-build-failed Phase: Skipped StartedAt: 2026-09-08 15:05:08 +0000 UTC FinishedAt: 2026-09-08 15:05:08 +0000 UTC Input: nil Output: nil --------- Name: series-workflow8cbcd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"bc6fe9d301d59fe5cb236d646abe792bffae5fa6","config_name":"upstream-apparmor-kasan.config","enable_configs":["AF_RXRPC","INET"],"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":["rxrpc_destroy_all_peers","rxrpc_exit_net"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"bc6fe9d301d59fe5cb236d646abe792bffae5fa6","config_name":"upstream-apparmor-kasan.config","enable_configs":["AF_RXRPC","INET"],"series_id":"19ad0978-35e7-4888-b0f1-7fa63b1863ea","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:{"findings":["4eb5795c-f73d-43ee-b3df-3291d8644727"]},track:KASAN)[3] Phase: Succeeded StartedAt: 2026-09-08 15:05:08 +0000 UTC FinishedAt: 2026-09-08 15:05:19 +0000 UTC Input: nil Output: nil --------- Name: series-workflow8cbcd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"bc6fe9d301d59fe5cb236d646abe792bffae5fa6","config_name":"upstream-apparmor-kasan.config","enable_configs":["AF_RXRPC","INET"],"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":["rxrpc_destroy_all_peers","rxrpc_exit_net"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"bc6fe9d301d59fe5cb236d646abe792bffae5fa6","config_name":"upstream-apparmor-kasan.config","enable_configs":["AF_RXRPC","INET"],"series_id":"19ad0978-35e7-4888-b0f1-7fa63b1863ea","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:{"findings":["4eb5795c-f73d-43ee-b3df-3291d8644727"]},track:KASAN)[3].save-patched-req Phase: Succeeded StartedAt: 2026-09-08 15:05:08 +0000 UTC FinishedAt: 2026-09-08 15:05:13 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"bc6fe9d301d59fe5cb236d646abe792bffae5fa6","config_name":"upstream-apparmor-kasan.config","enable_configs":["AF_RXRPC","INET"],"series_id":"19ad0978-35e7-4888-b0f1-7fa63b1863ea","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-workflow8cbcd/series-workflow8cbcd-convert-artifact-2557713765/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow8cbcd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"bc6fe9d301d59fe5cb236d646abe792bffae5fa6","config_name":"upstream-apparmor-kasan.config","enable_configs":["AF_RXRPC","INET"],"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":["rxrpc_destroy_all_peers","rxrpc_exit_net"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"bc6fe9d301d59fe5cb236d646abe792bffae5fa6","config_name":"upstream-apparmor-kasan.config","enable_configs":["AF_RXRPC","INET"],"series_id":"19ad0978-35e7-4888-b0f1-7fa63b1863ea","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:{"findings":["4eb5795c-f73d-43ee-b3df-3291d8644727"]},track:KASAN)[4] Phase: Succeeded StartedAt: 2026-09-08 15:05:19 +0000 UTC FinishedAt: 2026-09-08 15:07:24 +0000 UTC Input: nil Output: nil --------- Name: series-workflow8cbcd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"bc6fe9d301d59fe5cb236d646abe792bffae5fa6","config_name":"upstream-apparmor-kasan.config","enable_configs":["AF_RXRPC","INET"],"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":["rxrpc_destroy_all_peers","rxrpc_exit_net"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"bc6fe9d301d59fe5cb236d646abe792bffae5fa6","config_name":"upstream-apparmor-kasan.config","enable_configs":["AF_RXRPC","INET"],"series_id":"19ad0978-35e7-4888-b0f1-7fa63b1863ea","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:{"findings":["4eb5795c-f73d-43ee-b3df-3291d8644727"]},track:KASAN)[4].boot-test-base Phase: Succeeded StartedAt: 2026-09-08 15:05:19 +0000 UTC FinishedAt: 2026-09-08 15:07:14 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*76ba5d77-059a-4422-aa3d-8bccae29a71f,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-workflow8cbcd/series-workflow8cbcd-build-action-2006074040/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-workflow8cbcd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"bc6fe9d301d59fe5cb236d646abe792bffae5fa6","config_name":"upstream-apparmor-kasan.config","enable_configs":["AF_RXRPC","INET"],"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":["rxrpc_destroy_all_peers","rxrpc_exit_net"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"bc6fe9d301d59fe5cb236d646abe792bffae5fa6","config_name":"upstream-apparmor-kasan.config","enable_configs":["AF_RXRPC","INET"],"series_id":"19ad0978-35e7-4888-b0f1-7fa63b1863ea","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:{"findings":["4eb5795c-f73d-43ee-b3df-3291d8644727"]},track:KASAN)[5] Phase: Succeeded StartedAt: 2026-09-08 15:07:24 +0000 UTC FinishedAt: 2026-09-08 15:07:24 +0000 UTC Input: nil Output: nil --------- Name: series-workflow8cbcd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"bc6fe9d301d59fe5cb236d646abe792bffae5fa6","config_name":"upstream-apparmor-kasan.config","enable_configs":["AF_RXRPC","INET"],"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":["rxrpc_destroy_all_peers","rxrpc_exit_net"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"bc6fe9d301d59fe5cb236d646abe792bffae5fa6","config_name":"upstream-apparmor-kasan.config","enable_configs":["AF_RXRPC","INET"],"series_id":"19ad0978-35e7-4888-b0f1-7fa63b1863ea","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:{"findings":["4eb5795c-f73d-43ee-b3df-3291d8644727"]},track:KASAN)[5].abort-if-base-boot-failed Phase: Skipped StartedAt: 2026-09-08 15:07:24 +0000 UTC FinishedAt: 2026-09-08 15:07:24 +0000 UTC Input: nil Output: nil --------- Name: series-workflow8cbcd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"bc6fe9d301d59fe5cb236d646abe792bffae5fa6","config_name":"upstream-apparmor-kasan.config","enable_configs":["AF_RXRPC","INET"],"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":["rxrpc_destroy_all_peers","rxrpc_exit_net"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"bc6fe9d301d59fe5cb236d646abe792bffae5fa6","config_name":"upstream-apparmor-kasan.config","enable_configs":["AF_RXRPC","INET"],"series_id":"19ad0978-35e7-4888-b0f1-7fa63b1863ea","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:{"findings":["4eb5795c-f73d-43ee-b3df-3291d8644727"]},track:KASAN)[6] Phase: Succeeded StartedAt: 2026-09-08 15:07:24 +0000 UTC FinishedAt: 2026-09-08 15:27:43 +0000 UTC Input: nil Output: nil --------- Name: series-workflow8cbcd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"bc6fe9d301d59fe5cb236d646abe792bffae5fa6","config_name":"upstream-apparmor-kasan.config","enable_configs":["AF_RXRPC","INET"],"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":["rxrpc_destroy_all_peers","rxrpc_exit_net"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"bc6fe9d301d59fe5cb236d646abe792bffae5fa6","config_name":"upstream-apparmor-kasan.config","enable_configs":["AF_RXRPC","INET"],"series_id":"19ad0978-35e7-4888-b0f1-7fa63b1863ea","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:{"findings":["4eb5795c-f73d-43ee-b3df-3291d8644727"]},track:KASAN)[6].patched-build Phase: Succeeded StartedAt: 2026-09-08 15:07:24 +0000 UTC FinishedAt: 2026-09-08 15:27:43 +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:*aca7f4ed-fb73-4210-8eaa-f2e483bdd07f,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-workflow8cbcd/series-workflow8cbcd-convert-artifact-2557713765/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": "df5189d6-5a63-426d-a5b9-b277d918f3b2", "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-workflow8cbcd/series-workflow8cbcd-build-action-884371889/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow8cbcd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"bc6fe9d301d59fe5cb236d646abe792bffae5fa6","config_name":"upstream-apparmor-kasan.config","enable_configs":["AF_RXRPC","INET"],"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":["rxrpc_destroy_all_peers","rxrpc_exit_net"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"bc6fe9d301d59fe5cb236d646abe792bffae5fa6","config_name":"upstream-apparmor-kasan.config","enable_configs":["AF_RXRPC","INET"],"series_id":"19ad0978-35e7-4888-b0f1-7fa63b1863ea","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:{"findings":["4eb5795c-f73d-43ee-b3df-3291d8644727"]},track:KASAN)[6].patched-build(0) Phase: Succeeded StartedAt: 2026-09-08 15:07:24 +0000 UTC FinishedAt: 2026-09-08 15:27:33 +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:*aca7f4ed-fb73-4210-8eaa-f2e483bdd07f,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-workflow8cbcd/series-workflow8cbcd-convert-artifact-2557713765/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": "df5189d6-5a63-426d-a5b9-b277d918f3b2", "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-workflow8cbcd/series-workflow8cbcd-build-action-884371889/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow8cbcd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"bc6fe9d301d59fe5cb236d646abe792bffae5fa6","config_name":"upstream-apparmor-kasan.config","enable_configs":["AF_RXRPC","INET"],"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":["rxrpc_destroy_all_peers","rxrpc_exit_net"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"bc6fe9d301d59fe5cb236d646abe792bffae5fa6","config_name":"upstream-apparmor-kasan.config","enable_configs":["AF_RXRPC","INET"],"series_id":"19ad0978-35e7-4888-b0f1-7fa63b1863ea","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:{"findings":["4eb5795c-f73d-43ee-b3df-3291d8644727"]},track:KASAN)[7] Phase: Succeeded StartedAt: 2026-09-08 15:27:43 +0000 UTC FinishedAt: 2026-09-08 15:27:43 +0000 UTC Input: nil Output: nil --------- Name: series-workflow8cbcd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"bc6fe9d301d59fe5cb236d646abe792bffae5fa6","config_name":"upstream-apparmor-kasan.config","enable_configs":["AF_RXRPC","INET"],"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":["rxrpc_destroy_all_peers","rxrpc_exit_net"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"bc6fe9d301d59fe5cb236d646abe792bffae5fa6","config_name":"upstream-apparmor-kasan.config","enable_configs":["AF_RXRPC","INET"],"series_id":"19ad0978-35e7-4888-b0f1-7fa63b1863ea","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:{"findings":["4eb5795c-f73d-43ee-b3df-3291d8644727"]},track:KASAN)[7].abort-if-patched-build-failed Phase: Skipped StartedAt: 2026-09-08 15:27:43 +0000 UTC FinishedAt: 2026-09-08 15:27:43 +0000 UTC Input: nil Output: nil --------- Name: series-workflow8cbcd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"bc6fe9d301d59fe5cb236d646abe792bffae5fa6","config_name":"upstream-apparmor-kasan.config","enable_configs":["AF_RXRPC","INET"],"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":["rxrpc_destroy_all_peers","rxrpc_exit_net"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"bc6fe9d301d59fe5cb236d646abe792bffae5fa6","config_name":"upstream-apparmor-kasan.config","enable_configs":["AF_RXRPC","INET"],"series_id":"19ad0978-35e7-4888-b0f1-7fa63b1863ea","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:{"findings":["4eb5795c-f73d-43ee-b3df-3291d8644727"]},track:KASAN)[8] Phase: Succeeded StartedAt: 2026-09-08 15:27:43 +0000 UTC FinishedAt: 2026-09-08 15:29:42 +0000 UTC Input: nil Output: nil --------- Name: series-workflow8cbcd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"bc6fe9d301d59fe5cb236d646abe792bffae5fa6","config_name":"upstream-apparmor-kasan.config","enable_configs":["AF_RXRPC","INET"],"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":["rxrpc_destroy_all_peers","rxrpc_exit_net"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"bc6fe9d301d59fe5cb236d646abe792bffae5fa6","config_name":"upstream-apparmor-kasan.config","enable_configs":["AF_RXRPC","INET"],"series_id":"19ad0978-35e7-4888-b0f1-7fa63b1863ea","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:{"findings":["4eb5795c-f73d-43ee-b3df-3291d8644727"]},track:KASAN)[8].boot-test-patched Phase: Succeeded StartedAt: 2026-09-08 15:27:43 +0000 UTC FinishedAt: 2026-09-08 15:29:32 +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:*df5189d6-5a63-426d-a5b9-b277d918f3b2,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-workflow8cbcd/series-workflow8cbcd-build-action-884371889/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-workflow8cbcd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"bc6fe9d301d59fe5cb236d646abe792bffae5fa6","config_name":"upstream-apparmor-kasan.config","enable_configs":["AF_RXRPC","INET"],"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":["rxrpc_destroy_all_peers","rxrpc_exit_net"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"bc6fe9d301d59fe5cb236d646abe792bffae5fa6","config_name":"upstream-apparmor-kasan.config","enable_configs":["AF_RXRPC","INET"],"series_id":"19ad0978-35e7-4888-b0f1-7fa63b1863ea","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:{"findings":["4eb5795c-f73d-43ee-b3df-3291d8644727"]},track:KASAN)[10] Phase: Succeeded StartedAt: 2026-09-08 15:29:42 +0000 UTC FinishedAt: 2026-09-08 18:36:41 +0000 UTC Input: nil Output: nil --------- Name: series-workflow8cbcd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"bc6fe9d301d59fe5cb236d646abe792bffae5fa6","config_name":"upstream-apparmor-kasan.config","enable_configs":["AF_RXRPC","INET"],"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":["rxrpc_destroy_all_peers","rxrpc_exit_net"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"bc6fe9d301d59fe5cb236d646abe792bffae5fa6","config_name":"upstream-apparmor-kasan.config","enable_configs":["AF_RXRPC","INET"],"series_id":"19ad0978-35e7-4888-b0f1-7fa63b1863ea","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:{"findings":["4eb5795c-f73d-43ee-b3df-3291d8644727"]},track:KASAN)[10].run-fuzz Phase: Succeeded StartedAt: 2026-09-08 15:29:42 +0000 UTC FinishedAt: 2026-09-08 18:36:41 +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":["rxrpc_destroy_all_peers","rxrpc_exit_net"],"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:*76ba5d77-059a-4422-aa3d-8bccae29a71f,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*df5189d6-5a63-426d-a5b9-b277d918f3b2,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-workflow8cbcd/series-workflow8cbcd-build-action-2006074040/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-workflow8cbcd/series-workflow8cbcd-build-action-884371889/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflow8cbcd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"bc6fe9d301d59fe5cb236d646abe792bffae5fa6","config_name":"upstream-apparmor-kasan.config","enable_configs":["AF_RXRPC","INET"],"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":["rxrpc_destroy_all_peers","rxrpc_exit_net"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"bc6fe9d301d59fe5cb236d646abe792bffae5fa6","config_name":"upstream-apparmor-kasan.config","enable_configs":["AF_RXRPC","INET"],"series_id":"19ad0978-35e7-4888-b0f1-7fa63b1863ea","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:{"findings":["4eb5795c-f73d-43ee-b3df-3291d8644727"]},track:KASAN)[10].run-fuzz[0] Phase: Succeeded StartedAt: 2026-09-08 15:29:42 +0000 UTC FinishedAt: 2026-09-08 15:29:52 +0000 UTC Input: nil Output: nil --------- Name: series-workflow8cbcd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"bc6fe9d301d59fe5cb236d646abe792bffae5fa6","config_name":"upstream-apparmor-kasan.config","enable_configs":["AF_RXRPC","INET"],"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":["rxrpc_destroy_all_peers","rxrpc_exit_net"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"bc6fe9d301d59fe5cb236d646abe792bffae5fa6","config_name":"upstream-apparmor-kasan.config","enable_configs":["AF_RXRPC","INET"],"series_id":"19ad0978-35e7-4888-b0f1-7fa63b1863ea","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:{"findings":["4eb5795c-f73d-43ee-b3df-3291d8644727"]},track:KASAN)[10].run-fuzz[0].save-fuzz-config Phase: Succeeded StartedAt: 2026-09-08 15:29:42 +0000 UTC FinishedAt: 2026-09-08 15:29:49 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["rxrpc_destroy_all_peers","rxrpc_exit_net"],"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-workflow8cbcd/series-workflow8cbcd-convert-artifact-914826986/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow8cbcd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"bc6fe9d301d59fe5cb236d646abe792bffae5fa6","config_name":"upstream-apparmor-kasan.config","enable_configs":["AF_RXRPC","INET"],"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":["rxrpc_destroy_all_peers","rxrpc_exit_net"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"bc6fe9d301d59fe5cb236d646abe792bffae5fa6","config_name":"upstream-apparmor-kasan.config","enable_configs":["AF_RXRPC","INET"],"series_id":"19ad0978-35e7-4888-b0f1-7fa63b1863ea","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:{"findings":["4eb5795c-f73d-43ee-b3df-3291d8644727"]},track:KASAN)[10].run-retest Phase: Succeeded StartedAt: 2026-09-08 15:29:42 +0000 UTC FinishedAt: 2026-09-08 15:46:31 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:retest-data,Default:nil,Value:*{"findings":["4eb5795c-f73d-43ee-b3df-3291d8644727"]},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:base-build-id,Default:nil,Value:*76ba5d77-059a-4422-aa3d-8bccae29a71f,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*df5189d6-5a63-426d-a5b9-b277d918f3b2,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:track,Default:nil,Value:*KASAN,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-workflow8cbcd/series-workflow8cbcd-build-action-2006074040/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-workflow8cbcd/series-workflow8cbcd-build-action-884371889/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflow8cbcd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"bc6fe9d301d59fe5cb236d646abe792bffae5fa6","config_name":"upstream-apparmor-kasan.config","enable_configs":["AF_RXRPC","INET"],"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":["rxrpc_destroy_all_peers","rxrpc_exit_net"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"bc6fe9d301d59fe5cb236d646abe792bffae5fa6","config_name":"upstream-apparmor-kasan.config","enable_configs":["AF_RXRPC","INET"],"series_id":"19ad0978-35e7-4888-b0f1-7fa63b1863ea","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:{"findings":["4eb5795c-f73d-43ee-b3df-3291d8644727"]},track:KASAN)[10].run-retest[0] Phase: Succeeded StartedAt: 2026-09-08 15:29:42 +0000 UTC FinishedAt: 2026-09-08 15:29:52 +0000 UTC Input: nil Output: nil --------- Name: series-workflow8cbcd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"bc6fe9d301d59fe5cb236d646abe792bffae5fa6","config_name":"upstream-apparmor-kasan.config","enable_configs":["AF_RXRPC","INET"],"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":["rxrpc_destroy_all_peers","rxrpc_exit_net"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"bc6fe9d301d59fe5cb236d646abe792bffae5fa6","config_name":"upstream-apparmor-kasan.config","enable_configs":["AF_RXRPC","INET"],"series_id":"19ad0978-35e7-4888-b0f1-7fa63b1863ea","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:{"findings":["4eb5795c-f73d-43ee-b3df-3291d8644727"]},track:KASAN)[10].run-retest[0].save-retest-task Phase: Succeeded StartedAt: 2026-09-08 15:29:42 +0000 UTC FinishedAt: 2026-09-08 15:29:49 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"findings":["4eb5795c-f73d-43ee-b3df-3291d8644727"]},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-workflow8cbcd/series-workflow8cbcd-convert-artifact-3611872425/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow8cbcd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"bc6fe9d301d59fe5cb236d646abe792bffae5fa6","config_name":"upstream-apparmor-kasan.config","enable_configs":["AF_RXRPC","INET"],"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":["rxrpc_destroy_all_peers","rxrpc_exit_net"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"bc6fe9d301d59fe5cb236d646abe792bffae5fa6","config_name":"upstream-apparmor-kasan.config","enable_configs":["AF_RXRPC","INET"],"series_id":"19ad0978-35e7-4888-b0f1-7fa63b1863ea","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:{"findings":["4eb5795c-f73d-43ee-b3df-3291d8644727"]},track:KASAN)[9] Phase: Succeeded StartedAt: 2026-09-08 15:29:42 +0000 UTC FinishedAt: 2026-09-08 15:29:42 +0000 UTC Input: nil Output: nil --------- Name: series-workflow8cbcd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"bc6fe9d301d59fe5cb236d646abe792bffae5fa6","config_name":"upstream-apparmor-kasan.config","enable_configs":["AF_RXRPC","INET"],"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":["rxrpc_destroy_all_peers","rxrpc_exit_net"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"bc6fe9d301d59fe5cb236d646abe792bffae5fa6","config_name":"upstream-apparmor-kasan.config","enable_configs":["AF_RXRPC","INET"],"series_id":"19ad0978-35e7-4888-b0f1-7fa63b1863ea","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:{"findings":["4eb5795c-f73d-43ee-b3df-3291d8644727"]},track:KASAN)[9].abort-if-patched-boot-failed Phase: Skipped StartedAt: 2026-09-08 15:29:42 +0000 UTC FinishedAt: 2026-09-08 15:29:42 +0000 UTC Input: nil Output: nil --------- Name: series-workflow8cbcd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"bc6fe9d301d59fe5cb236d646abe792bffae5fa6","config_name":"upstream-apparmor-kasan.config","enable_configs":["AF_RXRPC","INET"],"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":["rxrpc_destroy_all_peers","rxrpc_exit_net"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"bc6fe9d301d59fe5cb236d646abe792bffae5fa6","config_name":"upstream-apparmor-kasan.config","enable_configs":["AF_RXRPC","INET"],"series_id":"19ad0978-35e7-4888-b0f1-7fa63b1863ea","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:{"findings":["4eb5795c-f73d-43ee-b3df-3291d8644727"]},track:KASAN)[10].run-fuzz[1] Phase: Succeeded StartedAt: 2026-09-08 15:29:52 +0000 UTC FinishedAt: 2026-09-08 18:36:41 +0000 UTC Input: nil Output: nil --------- Name: series-workflow8cbcd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"bc6fe9d301d59fe5cb236d646abe792bffae5fa6","config_name":"upstream-apparmor-kasan.config","enable_configs":["AF_RXRPC","INET"],"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":["rxrpc_destroy_all_peers","rxrpc_exit_net"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"bc6fe9d301d59fe5cb236d646abe792bffae5fa6","config_name":"upstream-apparmor-kasan.config","enable_configs":["AF_RXRPC","INET"],"series_id":"19ad0978-35e7-4888-b0f1-7fa63b1863ea","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:{"findings":["4eb5795c-f73d-43ee-b3df-3291d8644727"]},track:KASAN)[10].run-fuzz[1].fuzz Phase: Succeeded StartedAt: 2026-09-08 15:29:52 +0000 UTC FinishedAt: 2026-09-08 18:36:31 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*76ba5d77-059a-4422-aa3d-8bccae29a71f,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*df5189d6-5a63-426d-a5b9-b277d918f3b2,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-workflow8cbcd/series-workflow8cbcd-build-action-2006074040/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-workflow8cbcd/series-workflow8cbcd-build-action-884371889/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-workflow8cbcd/series-workflow8cbcd-convert-artifact-914826986/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,} --------- Name: series-workflow8cbcd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"bc6fe9d301d59fe5cb236d646abe792bffae5fa6","config_name":"upstream-apparmor-kasan.config","enable_configs":["AF_RXRPC","INET"],"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":["rxrpc_destroy_all_peers","rxrpc_exit_net"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"bc6fe9d301d59fe5cb236d646abe792bffae5fa6","config_name":"upstream-apparmor-kasan.config","enable_configs":["AF_RXRPC","INET"],"series_id":"19ad0978-35e7-4888-b0f1-7fa63b1863ea","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:{"findings":["4eb5795c-f73d-43ee-b3df-3291d8644727"]},track:KASAN)[10].run-retest[1] Phase: Succeeded StartedAt: 2026-09-08 15:29:52 +0000 UTC FinishedAt: 2026-09-08 15:46:31 +0000 UTC Input: nil Output: nil --------- Name: series-workflow8cbcd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"bc6fe9d301d59fe5cb236d646abe792bffae5fa6","config_name":"upstream-apparmor-kasan.config","enable_configs":["AF_RXRPC","INET"],"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":["rxrpc_destroy_all_peers","rxrpc_exit_net"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"bc6fe9d301d59fe5cb236d646abe792bffae5fa6","config_name":"upstream-apparmor-kasan.config","enable_configs":["AF_RXRPC","INET"],"series_id":"19ad0978-35e7-4888-b0f1-7fa63b1863ea","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:{"findings":["4eb5795c-f73d-43ee-b3df-3291d8644727"]},track:KASAN)[10].run-retest[1].retest Phase: Succeeded StartedAt: 2026-09-08 15:29:52 +0000 UTC FinishedAt: 2026-09-08 15:46:21 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*76ba5d77-059a-4422-aa3d-8bccae29a71f,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*df5189d6-5a63-426d-a5b9-b277d918f3b2,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Previous reproducers,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-workflow8cbcd/series-workflow8cbcd-build-action-2006074040/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-workflow8cbcd/series-workflow8cbcd-build-action-884371889/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},Artifact{Name:retest-task,Path:/data/retest.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-workflow8cbcd/series-workflow8cbcd-convert-artifact-3611872425/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,}