Name: series-workflowb6x7d Phase: Succeeded StartedAt: 2026-06-26 20:18:59 +0000 UTC FinishedAt: 2026-06-26 22:26:47 +0000 UTC Input: nil Output: nil --------- Name: series-workflowb6x7d[0] Phase: Succeeded StartedAt: 2026-06-26 20:18:59 +0000 UTC FinishedAt: 2026-06-26 20:26:47 +0000 UTC Input: nil Output: nil --------- Name: series-workflowb6x7d[0].run-triage Phase: Succeeded StartedAt: 2026-06-26 20:18:59 +0000 UTC FinishedAt: 2026-06-26 20:26:47 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "bpf-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git", "commit_hash": "53435562a725962e4de0c29653223129ba11643a", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "BPF_JIT" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "bpf-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git", "commit_hash": "53435562a725962e4de0c29653223129ba11643a", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "BPF_JIT" ], "series_id": "c05b7734-95d0-4937-b801-ff01b95dbffe" }, "track": "KASAN", "fuzz": { "focus": [ "bpf" ], "focus_symbols": [ "bpf_jit_alloc_exec", "bpf_jit_alloc_exec_rw", "bpf_prog_pack_alloc", "bpf_dispatcher_change_prog" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db" ], "skip_cover_check": false, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI2IDIwOjI0PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0JQRl9KSVQmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDticGZfaml0X2FsbG9jX2V4ZWMmIzM0OywKICAgICYjMzQ7YnBmX2ppdF9hbGxvY19leGVjX3J3JiMzNDssCiAgICAmIzM0O2JwZl9wcm9nX3BhY2tfYWxsb2MmIzM0OywKICAgICYjMzQ7YnBmX2Rpc3BhdGNoZXJfY2hhbmdlX3Byb2cmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgQlBGIEpJVCBtZW1vcnkgYWxsb2NhdGlvbiBsb2dpYywgaW50cm9kdWNpbmcgYSBuZXcgYGJwZl9qaXRfYWxsb2NfZXhlY19yd2AgZnVuY3Rpb24gYW5kIGNvbmRpdGlvbmFsbHkgc2V0dGluZyBtZW1vcnkgdG8gUk9YIGJhc2VkIG9uIGBicGZfaml0X21lbV9pc19yb3goKWAuIEl0IGFsc28gY2hhbmdlcyBgYnBmX2Rpc3BhdGNoZXJfY2hhbmdlX3Byb2dgIHRvIHVzZSBgdm1hbGxvY2AgaW5zdGVhZCBvZiBgYnBmX2ppdF9hbGxvY19leGVjYC4gVGhlc2UgYXJlIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byBCUEYgSklUIG1lbW9yeSBtYW5hZ2VtZW50IGFuZCBhcmUgcmVhY2hhYmxlIHZpYSBCUEYgcHJvZ3JhbSBsb2FkaW5nIGFuZCBkaXNwYXRjaGVyIHVwZGF0ZXMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjYgMjA6MjQ8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCA5OGIyNGNlN2UwYWEzYTk1NTkzNDUyMWRhOWM2NjE0Y2JiMmZmYTczXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIEZyaSBKdW4gMjYgMjA6MjQ6MzYgMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvYXJjaC94ODYvbW0vaW5pdC5jIGIvYXJjaC94ODYvbW0vaW5pdC5jXG5pbmRleCBmYjY3MjE3ZmRkY2QzNy4uMDc5ZjhjN2U5ZTNjZGUgMTAwNjQ0XG4tLS0gYS9hcmNoL3g4Ni9tbS9pbml0LmNcbiYjNDM7JiM0MzsmIzQzOyBiL2FyY2gveDg2L21tL2luaXQuY1xuQEAgLTExMDcsMTAgJiM0MzsxMTA3LDEwIEBAIHN0cnVjdCBleGVjbWVtX2luZm8gX19pbml0ICpleGVjbWVtX2FyY2hfc2V0dXAodm9pZClcbiBcdFx0XHRcdC5hbGlnbm1lbnQgPSBNT0RVTEVfQUxJR04sXG4gXHRcdFx0fSxcbiBcdFx0XHRbRVhFQ01FTV9CUEZdID0ge1xuLVx0XHRcdFx0LmZsYWdzXHQ9IEVYRUNNRU1fS0FTQU5fU0hBRE9XLFxuJiM0MztcdFx0XHRcdC5mbGFnc1x0PSBmbGFncyxcbiBcdFx0XHRcdC5zdGFydFx0PSBzdGFydCxcbiBcdFx0XHRcdC5lbmRcdD0gTU9EVUxFU19FTkQsXG4tXHRcdFx0XHQucGdwcm90XHQ9IFBBR0VfS0VSTkVMLFxuJiM0MztcdFx0XHRcdC5wZ3Byb3RcdD0gcGdwcm90LFxuIFx0XHRcdFx0LmFsaWdubWVudCA9IE1PRFVMRV9BTElHTixcbiBcdFx0XHR9LFxuIFx0XHRcdFtFWEVDTUVNX01PRFVMRV9EQVRBXSA9IHtcbmRpZmYgLS1naXQgYS9hcmNoL3g4Ni9uZXQvYnBmX2ppdF9jb21wLmMgYi9hcmNoL3g4Ni9uZXQvYnBmX2ppdF9jb21wLmNcbmluZGV4IDA1NGUwNDNmZmNkMjJkLi5iYTU2MmQzYmYwMzFlOSAxMDA2NDRcbi0tLSBhL2FyY2gveDg2L25ldC9icGZfaml0X2NvbXAuY1xuJiM0MzsmIzQzOyYjNDM7IGIvYXJjaC94ODYvbmV0L2JwZl9qaXRfY29tcC5jXG5AQCAtMzcwMywxMyAmIzQzOzM3MDMsMTIgQEAgaW50IGFyY2hfYnBmX3RyYW1wb2xpbmVfc2l6ZShjb25zdCBzdHJ1Y3QgYnRmX2Z1bmNfbW9kZWwgKm0sIHUzMiBmbGFncyxcbiBcdGludCByZXQ7XG4gXG4gXHQvKiBBbGxvY2F0ZSBhIHRlbXBvcmFyeSBidWZmZXIgZm9yIF9fYXJjaF9wcmVwYXJlX2JwZl90cmFtcG9saW5lKCkuXG4tXHQgKiBUaGlzIHdpbGwgTk9UIGNhdXNlIGZyYWdtZW50YXRpb24gaW4gZGlyZWN0IG1hcCwgYXMgd2UgZG8gbm90XG4tXHQgKiBjYWxsIHNldF9tZW1vcnlfKigpIG9uIHRoaXMgYnVmZmVyLlxuIFx0ICpcbiBcdCAqIFdlIGNhbm5vdCB1c2Uga3ZtYWxsb2MgaGVyZSwgYmVjYXVzZSB3ZSBuZWVkIGltYWdlIHRvIGJlIGluXG4gXHQgKiBtb2R1bGUgbWVtb3J5IHJhbmdlLlxuJiM0MztcdCAqIFNpbmNlIGl0IG11c3QgYmUgd3JpdGFibGUgdXNlIGJwZl9qaXRfYWxsb2NfZXhlY19ydygpLlxuIFx0ICovXG4tXHRpbWFnZSA9IGJwZl9qaXRfYWxsb2NfZXhlYyhQQUdFX1NJWkUpO1xuJiM0MztcdGltYWdlID0gYnBmX2ppdF9hbGxvY19leGVjX3J3KFBBR0VfU0laRSk7XG4gXHRpZiAoIWltYWdlKVxuIFx0XHRyZXR1cm4gLUVOT01FTTtcbiBcbmRpZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4L2ZpbHRlci5oIGIvaW5jbHVkZS9saW51eC9maWx0ZXIuaFxuaW5kZXggNjdkMzM3ZWRlOTFiOGUuLjc3M2IxNmYwNjU3MmMwIDEwMDY0NFxuLS0tIGEvaW5jbHVkZS9saW51eC9maWx0ZXIuaFxuJiM0MzsmIzQzOyYjNDM7IGIvaW5jbHVkZS9saW51eC9maWx0ZXIuaFxuQEAgLTEzMjMsNiAmIzQzOzEzMjMsNyBAQCBicGZfaml0X2JpbmFyeV9hbGxvYyh1bnNpZ25lZCBpbnQgcHJvZ2xlbiwgdTggKippbWFnZV9wdHIsXG4gdm9pZCBicGZfaml0X2JpbmFyeV9mcmVlKHN0cnVjdCBicGZfYmluYXJ5X2hlYWRlciAqaGRyKTtcbiB1NjQgYnBmX2ppdF9hbGxvY19leGVjX2xpbWl0KHZvaWQpO1xuIHZvaWQgKmJwZl9qaXRfYWxsb2NfZXhlYyh1bnNpZ25lZCBsb25nIHNpemUpO1xuJiM0Mzt2b2lkICpicGZfaml0X2FsbG9jX2V4ZWNfcncodW5zaWduZWQgbG9uZyBzaXplKTtcbiB2b2lkIGJwZl9qaXRfZnJlZV9leGVjKHZvaWQgKmFkZHIpO1xuIHZvaWQgYnBmX2ppdF9mcmVlKHN0cnVjdCBicGZfcHJvZyAqZnApO1xuIHN0cnVjdCBicGZfYmluYXJ5X2hlYWRlciAqXG5kaWZmIC0tZ2l0IGEva2VybmVsL2JwZi9jb3JlLmMgYi9rZXJuZWwvYnBmL2NvcmUuY1xuaW5kZXggNjQ5Y2NlNDFlMTNmM2IuLjU1Mjg0YjVkMDI5MmRjIDEwMDY0NFxuLS0tIGEva2VybmVsL2JwZi9jb3JlLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2tlcm5lbC9icGYvY29yZS5jXG5AQCAtOTA0LDYgJiM0Mzs5MDQsMTEgQEAgc3RhdGljIExJU1RfSEVBRChwYWNrX2xpc3QpO1xuIFxuICNkZWZpbmUgQlBGX1BST0dfQ0hVTktfQ09VTlQgKEJQRl9QUk9HX1BBQ0tfU0laRSAvIEJQRl9QUk9HX0NIVU5LX1NJWkUpXG4gXG4mIzQzO3N0YXRpYyBib29sIGJwZl9qaXRfbWVtX2lzX3JveCh2b2lkKVxuJiM0Mzt7XG4mIzQzO1x0cmV0dXJuIGV4ZWNtZW1faXNfcm94KEVYRUNNRU1fQlBGKTtcbiYjNDM7fVxuJiM0MztcbiBzdGF0aWMgc3RydWN0IGJwZl9wcm9nX3BhY2sgKmFsbG9jX25ld19wYWNrKGJwZl9qaXRfZmlsbF9ob2xlX3QgYnBmX2ZpbGxfaWxsX2luc25zKVxuIHtcbiBcdHN0cnVjdCBicGZfcHJvZ19wYWNrICpwYWNrO1xuQEAgLTkxNSwxNCAmIzQzOzkyMCwxNiBAQCBzdGF0aWMgc3RydWN0IGJwZl9wcm9nX3BhY2sgKmFsbG9jX25ld19wYWNrKGJwZl9qaXRfZmlsbF9ob2xlX3QgYnBmX2ZpbGxfaWxsX2luc1xuIFx0cGFjay1cdTAwM2VwdHIgPSBicGZfaml0X2FsbG9jX2V4ZWMoQlBGX1BST0dfUEFDS19TSVpFKTtcbiBcdGlmICghcGFjay1cdTAwM2VwdHIpXG4gXHRcdGdvdG8gb3V0O1xuLVx0YnBmX2ZpbGxfaWxsX2luc25zKHBhY2stXHUwMDNlcHRyLCBCUEZfUFJPR19QQUNLX1NJWkUpO1xuIFx0Yml0bWFwX3plcm8ocGFjay1cdTAwM2ViaXRtYXAsIEJQRl9QUk9HX1BBQ0tfU0laRSAvIEJQRl9QUk9HX0NIVU5LX1NJWkUpO1xuIFxuLVx0c2V0X3ZtX2ZsdXNoX3Jlc2V0X3Blcm1zKHBhY2stXHUwMDNlcHRyKTtcbi1cdGVyciA9IHNldF9tZW1vcnlfcm94KCh1bnNpZ25lZCBsb25nKXBhY2stXHUwMDNlcHRyLFxuLVx0XHRcdCAgICAgQlBGX1BST0dfUEFDS19TSVpFIC8gUEFHRV9TSVpFKTtcbi1cdGlmIChlcnIpXG4tXHRcdGdvdG8gb3V0O1xuJiM0MztcdGlmICghYnBmX2ppdF9tZW1faXNfcm94KCkpIHtcbiYjNDM7XHRcdGJwZl9maWxsX2lsbF9pbnNucyhwYWNrLVx1MDAzZXB0ciwgQlBGX1BST0dfUEFDS19TSVpFKTtcbiYjNDM7XHRcdHNldF92bV9mbHVzaF9yZXNldF9wZXJtcyhwYWNrLVx1MDAzZXB0cik7XG4mIzQzO1x0XHRlcnIgPSBzZXRfbWVtb3J5X3JveCgodW5zaWduZWQgbG9uZylwYWNrLVx1MDAzZXB0cixcbiYjNDM7XHRcdFx0XHQgICAgIEJQRl9QUk9HX1BBQ0tfU0laRSAvIFBBR0VfU0laRSk7XG4mIzQzO1x0XHRpZiAoZXJyKVxuJiM0MztcdFx0XHRnb3RvIG91dDtcbiYjNDM7XHR9XG4gXHRsaXN0X2FkZF90YWlsKFx1MDAyNnBhY2stXHUwMDNlbGlzdCwgXHUwMDI2cGFja19saXN0KTtcbiBcdHJldHVybiBwYWNrO1xuIFxuQEAgLTk0Myw3ICYjNDM7OTUwLDcgQEAgdm9pZCAqYnBmX3Byb2dfcGFja19hbGxvYyh1MzIgc2l6ZSwgYnBmX2ppdF9maWxsX2hvbGVfdCBicGZfZmlsbF9pbGxfaW5zbnMpXG4gXHRpZiAoc2l6ZSBcdTAwM2UgQlBGX1BST0dfUEFDS19TSVpFKSB7XG4gXHRcdHNpemUgPSByb3VuZF91cChzaXplLCBQQUdFX1NJWkUpO1xuIFx0XHRwdHIgPSBicGZfaml0X2FsbG9jX2V4ZWMoc2l6ZSk7XG4tXHRcdGlmIChwdHIpIHtcbiYjNDM7XHRcdGlmIChwdHIgXHUwMDI2XHUwMDI2ICFicGZfaml0X21lbV9pc19yb3goKSkge1xuIFx0XHRcdGludCBlcnI7XG4gXG4gXHRcdFx0YnBmX2ZpbGxfaWxsX2luc25zKHB0ciwgc2l6ZSk7XG5AQCAtMTA2MCwxMiAmIzQzOzEwNjcsMTcgQEAgdm9pZCBicGZfaml0X3VuY2hhcmdlX21vZG1lbSh1MzIgc2l6ZSlcbiBcdGF0b21pY19sb25nX3N1YihzaXplLCBcdTAwMjZicGZfaml0X2N1cnJlbnQpO1xuIH1cbiBcbi12b2lkICpfX3dlYWsgYnBmX2ppdF9hbGxvY19leGVjKHVuc2lnbmVkIGxvbmcgc2l6ZSlcbiYjNDM7dm9pZCAqYnBmX2ppdF9hbGxvY19leGVjKHVuc2lnbmVkIGxvbmcgc2l6ZSlcbiB7XG4gXHRyZXR1cm4gZXhlY21lbV9hbGxvYyhFWEVDTUVNX0JQRiwgc2l6ZSk7XG4gfVxuIFxuLXZvaWQgX193ZWFrIGJwZl9qaXRfZnJlZV9leGVjKHZvaWQgKmFkZHIpXG4mIzQzO3ZvaWQgKmJwZl9qaXRfYWxsb2NfZXhlY19ydyh1bnNpZ25lZCBsb25nIHNpemUpXG4mIzQzO3tcbiYjNDM7XHRyZXR1cm4gZXhlY21lbV9hbGxvY19ydyhFWEVDTUVNX0JQRiwgc2l6ZSk7XG4mIzQzO31cbiYjNDM7XG4mIzQzO3ZvaWQgYnBmX2ppdF9mcmVlX2V4ZWModm9pZCAqYWRkcilcbiB7XG4gXHRleGVjbWVtX2ZyZWUoYWRkcik7XG4gfVxuZGlmZiAtLWdpdCBhL2tlcm5lbC9icGYvZGlzcGF0Y2hlci5jIGIva2VybmVsL2JwZi9kaXNwYXRjaGVyLmNcbmluZGV4IGI3N2RiNzQxM2Y4YzcwLi5hN2E2YTM3NWNkZDMxZCAxMDA2NDRcbi0tLSBhL2tlcm5lbC9icGYvZGlzcGF0Y2hlci5jXG4mIzQzOyYjNDM7JiM0MzsgYi9rZXJuZWwvYnBmL2Rpc3BhdGNoZXIuY1xuQEAgLTE0OCw3ICYjNDM7MTQ4LDEwIEBAIHZvaWQgYnBmX2Rpc3BhdGNoZXJfY2hhbmdlX3Byb2coc3RydWN0IGJwZl9kaXNwYXRjaGVyICpkLCBzdHJ1Y3QgYnBmX3Byb2cgKmZyb20sXG4gXHRcdGQtXHUwMDNlaW1hZ2UgPSBicGZfcHJvZ19wYWNrX2FsbG9jKFBBR0VfU0laRSwgYnBmX2ppdF9maWxsX2hvbGVfd2l0aF96ZXJvKTtcbiBcdFx0aWYgKCFkLVx1MDAzZWltYWdlKVxuIFx0XHRcdGdvdG8gb3V0O1xuLVx0XHRkLVx1MDAzZXJ3X2ltYWdlID0gYnBmX2ppdF9hbGxvY19leGVjKFBBR0VfU0laRSk7XG4mIzQzO1x0XHQvKiBkLVx1MDAzZXJ3X2ltYWdlIGRvZXNuJiMzOTt0IG5lZWQgdG8gYmUgaW4gbW9kdWxlIG1lbW9yeSByYW5nZSwgc28gd2VcbiYjNDM7XHRcdCAqIGNhbiB1c2Ugdm1hbGxvYy5cbiYjNDM7XHRcdCAqL1xuJiM0MztcdFx0ZC1cdTAwM2Vyd19pbWFnZSA9IHZtYWxsb2MoUEFHRV9TSVpFKTtcbiBcdFx0aWYgKCFkLVx1MDAzZXJ3X2ltYWdlKSB7XG4gXHRcdFx0YnBmX3Byb2dfcGFja19mcmVlKGQtXHUwMDNlaW1hZ2UsIFBBR0VfU0laRSk7XG4gXHRcdFx0ZC1cdTAwM2VpbWFnZSA9IE5VTEw7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjYgMjA6MjQ8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7QlBGX0pJVCYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2JwZl9qaXRfYWxsb2NfZXhlYyYjMzQ7LAogICAgJiMzNDticGZfaml0X2FsbG9jX2V4ZWNfcncmIzM0OywKICAgICYjMzQ7YnBmX3Byb2dfcGFja19hbGxvYyYjMzQ7LAogICAgJiMzNDticGZfZGlzcGF0Y2hlcl9jaGFuZ2VfcHJvZyYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyBCUEYgSklUIG1lbW9yeSBhbGxvY2F0aW9uIGxvZ2ljLCBpbnRyb2R1Y2luZyBhIG5ldyBgYnBmX2ppdF9hbGxvY19leGVjX3J3YCBmdW5jdGlvbiBhbmQgY29uZGl0aW9uYWxseSBzZXR0aW5nIG1lbW9yeSB0byBST1ggYmFzZWQgb24gYGJwZl9qaXRfbWVtX2lzX3JveCgpYC4gSXQgYWxzbyBjaGFuZ2VzIGBicGZfZGlzcGF0Y2hlcl9jaGFuZ2VfcHJvZ2AgdG8gdXNlIGB2bWFsbG9jYCBpbnN0ZWFkIG9mIGBicGZfaml0X2FsbG9jX2V4ZWNgLiBUaGVzZSBhcmUgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIEJQRiBKSVQgbWVtb3J5IG1hbmFnZW1lbnQgYW5kIGFyZSByZWFjaGFibGUgdmlhIEJQRiBwcm9ncmFtIGxvYWRpbmcgYW5kIGRpc3BhdGNoZXIgdXBkYXRlcy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lCmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHkKdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy4KClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6Ci0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy4KLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy4KLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuCi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLApldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuCgpJZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoCnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLgoKV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086CjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuCiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLgoyLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS4KICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgogICBEbyBub3QgbGlzdCB0b28gZ2VuZXJpYyBjb25maWdzICh3ZSBhbHJlYWR5IGhhdmUgdGhlbSBlbmFibGVkKS4gT25seSBsaXN0IHRob3NlIHRoYXQKICAgc3BlY2lmaWNhbGx5IGNvdmVyIHRoZSBtb2RpZmllZCBjb2RlLiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3Mgb3V0cHV0IGFycmF5LAogICBhbmQgRE8gTk9UIGFkZCBhICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgOThiMjRjZTdlMGFhM2E5NTU5MzQ1MjFkYTljNjYxNGNiYjJmZmE3MwpBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBGcmkgSnVuIDI2IDIwOjI0OjM2IDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvYXJjaC94ODYvbW0vaW5pdC5jIGIvYXJjaC94ODYvbW0vaW5pdC5jCmluZGV4IGZiNjcyMTdmZGRjZDM3Li4wNzlmOGM3ZTllM2NkZSAxMDA2NDQKLS0tIGEvYXJjaC94ODYvbW0vaW5pdC5jCiYjNDM7JiM0MzsmIzQzOyBiL2FyY2gveDg2L21tL2luaXQuYwpAQCAtMTEwNywxMCAmIzQzOzExMDcsMTAgQEAgc3RydWN0IGV4ZWNtZW1faW5mbyBfX2luaXQgKmV4ZWNtZW1fYXJjaF9zZXR1cCh2b2lkKQogCQkJCS5hbGlnbm1lbnQgPSBNT0RVTEVfQUxJR04sCiAJCQl9LAogCQkJW0VYRUNNRU1fQlBGXSA9IHsKLQkJCQkuZmxhZ3MJPSBFWEVDTUVNX0tBU0FOX1NIQURPVywKJiM0MzsJCQkJLmZsYWdzCT0gZmxhZ3MsCiAJCQkJLnN0YXJ0CT0gc3RhcnQsCiAJCQkJLmVuZAk9IE1PRFVMRVNfRU5ELAotCQkJCS5wZ3Byb3QJPSBQQUdFX0tFUk5FTCwKJiM0MzsJCQkJLnBncHJvdAk9IHBncHJvdCwKIAkJCQkuYWxpZ25tZW50ID0gTU9EVUxFX0FMSUdOLAogCQkJfSwKIAkJCVtFWEVDTUVNX01PRFVMRV9EQVRBXSA9IHsKZGlmZiAtLWdpdCBhL2FyY2gveDg2L25ldC9icGZfaml0X2NvbXAuYyBiL2FyY2gveDg2L25ldC9icGZfaml0X2NvbXAuYwppbmRleCAwNTRlMDQzZmZjZDIyZC4uYmE1NjJkM2JmMDMxZTkgMTAwNjQ0Ci0tLSBhL2FyY2gveDg2L25ldC9icGZfaml0X2NvbXAuYwomIzQzOyYjNDM7JiM0MzsgYi9hcmNoL3g4Ni9uZXQvYnBmX2ppdF9jb21wLmMKQEAgLTM3MDMsMTMgJiM0MzszNzAzLDEyIEBAIGludCBhcmNoX2JwZl90cmFtcG9saW5lX3NpemUoY29uc3Qgc3RydWN0IGJ0Zl9mdW5jX21vZGVsICptLCB1MzIgZmxhZ3MsCiAJaW50IHJldDsKIAogCS8qIEFsbG9jYXRlIGEgdGVtcG9yYXJ5IGJ1ZmZlciBmb3IgX19hcmNoX3ByZXBhcmVfYnBmX3RyYW1wb2xpbmUoKS4KLQkgKiBUaGlzIHdpbGwgTk9UIGNhdXNlIGZyYWdtZW50YXRpb24gaW4gZGlyZWN0IG1hcCwgYXMgd2UgZG8gbm90Ci0JICogY2FsbCBzZXRfbWVtb3J5XyooKSBvbiB0aGlzIGJ1ZmZlci4KIAkgKgogCSAqIFdlIGNhbm5vdCB1c2Uga3ZtYWxsb2MgaGVyZSwgYmVjYXVzZSB3ZSBuZWVkIGltYWdlIHRvIGJlIGluCiAJICogbW9kdWxlIG1lbW9yeSByYW5nZS4KJiM0MzsJICogU2luY2UgaXQgbXVzdCBiZSB3cml0YWJsZSB1c2UgYnBmX2ppdF9hbGxvY19leGVjX3J3KCkuCiAJICovCi0JaW1hZ2UgPSBicGZfaml0X2FsbG9jX2V4ZWMoUEFHRV9TSVpFKTsKJiM0MzsJaW1hZ2UgPSBicGZfaml0X2FsbG9jX2V4ZWNfcncoUEFHRV9TSVpFKTsKIAlpZiAoIWltYWdlKQogCQlyZXR1cm4gLUVOT01FTTsKIApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51eC9maWx0ZXIuaCBiL2luY2x1ZGUvbGludXgvZmlsdGVyLmgKaW5kZXggNjdkMzM3ZWRlOTFiOGUuLjc3M2IxNmYwNjU3MmMwIDEwMDY0NAotLS0gYS9pbmNsdWRlL2xpbnV4L2ZpbHRlci5oCiYjNDM7JiM0MzsmIzQzOyBiL2luY2x1ZGUvbGludXgvZmlsdGVyLmgKQEAgLTEzMjMsNiAmIzQzOzEzMjMsNyBAQCBicGZfaml0X2JpbmFyeV9hbGxvYyh1bnNpZ25lZCBpbnQgcHJvZ2xlbiwgdTggKippbWFnZV9wdHIsCiB2b2lkIGJwZl9qaXRfYmluYXJ5X2ZyZWUoc3RydWN0IGJwZl9iaW5hcnlfaGVhZGVyICpoZHIpOwogdTY0IGJwZl9qaXRfYWxsb2NfZXhlY19saW1pdCh2b2lkKTsKIHZvaWQgKmJwZl9qaXRfYWxsb2NfZXhlYyh1bnNpZ25lZCBsb25nIHNpemUpOwomIzQzO3ZvaWQgKmJwZl9qaXRfYWxsb2NfZXhlY19ydyh1bnNpZ25lZCBsb25nIHNpemUpOwogdm9pZCBicGZfaml0X2ZyZWVfZXhlYyh2b2lkICphZGRyKTsKIHZvaWQgYnBmX2ppdF9mcmVlKHN0cnVjdCBicGZfcHJvZyAqZnApOwogc3RydWN0IGJwZl9iaW5hcnlfaGVhZGVyICoKZGlmZiAtLWdpdCBhL2tlcm5lbC9icGYvY29yZS5jIGIva2VybmVsL2JwZi9jb3JlLmMKaW5kZXggNjQ5Y2NlNDFlMTNmM2IuLjU1Mjg0YjVkMDI5MmRjIDEwMDY0NAotLS0gYS9rZXJuZWwvYnBmL2NvcmUuYwomIzQzOyYjNDM7JiM0MzsgYi9rZXJuZWwvYnBmL2NvcmUuYwpAQCAtOTA0LDYgJiM0Mzs5MDQsMTEgQEAgc3RhdGljIExJU1RfSEVBRChwYWNrX2xpc3QpOwogCiAjZGVmaW5lIEJQRl9QUk9HX0NIVU5LX0NPVU5UIChCUEZfUFJPR19QQUNLX1NJWkUgLyBCUEZfUFJPR19DSFVOS19TSVpFKQogCiYjNDM7c3RhdGljIGJvb2wgYnBmX2ppdF9tZW1faXNfcm94KHZvaWQpCiYjNDM7ewomIzQzOwlyZXR1cm4gZXhlY21lbV9pc19yb3goRVhFQ01FTV9CUEYpOwomIzQzO30KJiM0MzsKIHN0YXRpYyBzdHJ1Y3QgYnBmX3Byb2dfcGFjayAqYWxsb2NfbmV3X3BhY2soYnBmX2ppdF9maWxsX2hvbGVfdCBicGZfZmlsbF9pbGxfaW5zbnMpCiB7CiAJc3RydWN0IGJwZl9wcm9nX3BhY2sgKnBhY2s7CkBAIC05MTUsMTQgJiM0Mzs5MjAsMTYgQEAgc3RhdGljIHN0cnVjdCBicGZfcHJvZ19wYWNrICphbGxvY19uZXdfcGFjayhicGZfaml0X2ZpbGxfaG9sZV90IGJwZl9maWxsX2lsbF9pbnMKIAlwYWNrLSZndDtwdHIgPSBicGZfaml0X2FsbG9jX2V4ZWMoQlBGX1BST0dfUEFDS19TSVpFKTsKIAlpZiAoIXBhY2stJmd0O3B0cikKIAkJZ290byBvdXQ7Ci0JYnBmX2ZpbGxfaWxsX2luc25zKHBhY2stJmd0O3B0ciwgQlBGX1BST0dfUEFDS19TSVpFKTsKIAliaXRtYXBfemVybyhwYWNrLSZndDtiaXRtYXAsIEJQRl9QUk9HX1BBQ0tfU0laRSAvIEJQRl9QUk9HX0NIVU5LX1NJWkUpOwogCi0Jc2V0X3ZtX2ZsdXNoX3Jlc2V0X3Blcm1zKHBhY2stJmd0O3B0cik7Ci0JZXJyID0gc2V0X21lbW9yeV9yb3goKHVuc2lnbmVkIGxvbmcpcGFjay0mZ3Q7cHRyLAotCQkJICAgICBCUEZfUFJPR19QQUNLX1NJWkUgLyBQQUdFX1NJWkUpOwotCWlmIChlcnIpCi0JCWdvdG8gb3V0OwomIzQzOwlpZiAoIWJwZl9qaXRfbWVtX2lzX3JveCgpKSB7CiYjNDM7CQlicGZfZmlsbF9pbGxfaW5zbnMocGFjay0mZ3Q7cHRyLCBCUEZfUFJPR19QQUNLX1NJWkUpOwomIzQzOwkJc2V0X3ZtX2ZsdXNoX3Jlc2V0X3Blcm1zKHBhY2stJmd0O3B0cik7CiYjNDM7CQllcnIgPSBzZXRfbWVtb3J5X3JveCgodW5zaWduZWQgbG9uZylwYWNrLSZndDtwdHIsCiYjNDM7CQkJCSAgICAgQlBGX1BST0dfUEFDS19TSVpFIC8gUEFHRV9TSVpFKTsKJiM0MzsJCWlmIChlcnIpCiYjNDM7CQkJZ290byBvdXQ7CiYjNDM7CX0KIAlsaXN0X2FkZF90YWlsKCZhbXA7cGFjay0mZ3Q7bGlzdCwgJmFtcDtwYWNrX2xpc3QpOwogCXJldHVybiBwYWNrOwogCkBAIC05NDMsNyAmIzQzOzk1MCw3IEBAIHZvaWQgKmJwZl9wcm9nX3BhY2tfYWxsb2ModTMyIHNpemUsIGJwZl9qaXRfZmlsbF9ob2xlX3QgYnBmX2ZpbGxfaWxsX2luc25zKQogCWlmIChzaXplICZndDsgQlBGX1BST0dfUEFDS19TSVpFKSB7CiAJCXNpemUgPSByb3VuZF91cChzaXplLCBQQUdFX1NJWkUpOwogCQlwdHIgPSBicGZfaml0X2FsbG9jX2V4ZWMoc2l6ZSk7Ci0JCWlmIChwdHIpIHsKJiM0MzsJCWlmIChwdHIgJmFtcDsmYW1wOyAhYnBmX2ppdF9tZW1faXNfcm94KCkpIHsKIAkJCWludCBlcnI7CiAKIAkJCWJwZl9maWxsX2lsbF9pbnNucyhwdHIsIHNpemUpOwpAQCAtMTA2MCwxMiAmIzQzOzEwNjcsMTcgQEAgdm9pZCBicGZfaml0X3VuY2hhcmdlX21vZG1lbSh1MzIgc2l6ZSkKIAlhdG9taWNfbG9uZ19zdWIoc2l6ZSwgJmFtcDticGZfaml0X2N1cnJlbnQpOwogfQogCi12b2lkICpfX3dlYWsgYnBmX2ppdF9hbGxvY19leGVjKHVuc2lnbmVkIGxvbmcgc2l6ZSkKJiM0Mzt2b2lkICpicGZfaml0X2FsbG9jX2V4ZWModW5zaWduZWQgbG9uZyBzaXplKQogewogCXJldHVybiBleGVjbWVtX2FsbG9jKEVYRUNNRU1fQlBGLCBzaXplKTsKIH0KIAotdm9pZCBfX3dlYWsgYnBmX2ppdF9mcmVlX2V4ZWModm9pZCAqYWRkcikKJiM0Mzt2b2lkICpicGZfaml0X2FsbG9jX2V4ZWNfcncodW5zaWduZWQgbG9uZyBzaXplKQomIzQzO3sKJiM0MzsJcmV0dXJuIGV4ZWNtZW1fYWxsb2NfcncoRVhFQ01FTV9CUEYsIHNpemUpOwomIzQzO30KJiM0MzsKJiM0Mzt2b2lkIGJwZl9qaXRfZnJlZV9leGVjKHZvaWQgKmFkZHIpCiB7CiAJZXhlY21lbV9mcmVlKGFkZHIpOwogfQpkaWZmIC0tZ2l0IGEva2VybmVsL2JwZi9kaXNwYXRjaGVyLmMgYi9rZXJuZWwvYnBmL2Rpc3BhdGNoZXIuYwppbmRleCBiNzdkYjc0MTNmOGM3MC4uYTdhNmEzNzVjZGQzMWQgMTAwNjQ0Ci0tLSBhL2tlcm5lbC9icGYvZGlzcGF0Y2hlci5jCiYjNDM7JiM0MzsmIzQzOyBiL2tlcm5lbC9icGYvZGlzcGF0Y2hlci5jCkBAIC0xNDgsNyAmIzQzOzE0OCwxMCBAQCB2b2lkIGJwZl9kaXNwYXRjaGVyX2NoYW5nZV9wcm9nKHN0cnVjdCBicGZfZGlzcGF0Y2hlciAqZCwgc3RydWN0IGJwZl9wcm9nICpmcm9tLAogCQlkLSZndDtpbWFnZSA9IGJwZl9wcm9nX3BhY2tfYWxsb2MoUEFHRV9TSVpFLCBicGZfaml0X2ZpbGxfaG9sZV93aXRoX3plcm8pOwogCQlpZiAoIWQtJmd0O2ltYWdlKQogCQkJZ290byBvdXQ7Ci0JCWQtJmd0O3J3X2ltYWdlID0gYnBmX2ppdF9hbGxvY19leGVjKFBBR0VfU0laRSk7CiYjNDM7CQkvKiBkLSZndDtyd19pbWFnZSBkb2VzbiYjMzk7dCBuZWVkIHRvIGJlIGluIG1vZHVsZSBtZW1vcnkgcmFuZ2UsIHNvIHdlCiYjNDM7CQkgKiBjYW4gdXNlIHZtYWxsb2MuCiYjNDM7CQkgKi8KJiM0MzsJCWQtJmd0O3J3X2ltYWdlID0gdm1hbGxvYyhQQUdFX1NJWkUpOwogCQlpZiAoIWQtJmd0O3J3X2ltYWdlKSB7CiAJCQlicGZfcHJvZ19wYWNrX2ZyZWUoZC0mZ3Q7aW1hZ2UsIFBBR0VfU0laRSk7CiAJCQlkLSZndDtpbWFnZSA9IE5VTEw7CjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI2IDIwOjI0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDM2ODUKCQkJCQkJCW91dHB1dDogMjMKCQkJCQkJCXRob3VnaHRzOiA0MzIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQlBGIEpJVCBNZW1vcnkgQWxsb2NhdGlvbiBQYXRjaDogRnV6emluZyBGb2N1cyoqCgpPa2F5LCBzbyB3ZSYjMzk7dmUgZ290IGEgcGF0Y2ggc2VyaWVzIGhlcmUgdGhhdCYjMzk7cyB0d2Vha2luZyBCUEYgSklUIG1lbW9yeSBhbGxvY2F0aW9uLiBTZWVtcyBsaWtlIGEgc3RyYWlnaHRmb3J3YXJkLCBmdW5jdGlvbmFsIGNoYW5nZSDigJMgYWx3YXlzIHdvcnRoIGEgY2xvc2VyIGxvb2sgZnJvbSBhIGZ1enppbmcgcGVyc3BlY3RpdmUsIGVzcGVjaWFsbHkgd2hlbiBpdCBpbnZvbHZlcyBtZW1vcnkuIExldCYjMzk7cyBzZWUgd2hhdCYjMzk7cyBhY3R1YWxseSBiZWVuIG1vZGlmaWVkLiBUaGUgY2hhbmdlcyB0b3VjaCBgYXJjaC94ODYvbW0vaW5pdC5jYCBhZGp1c3RpbmcgYEVYRUNNRU1fQlBGYCBmbGFncywgYW5kIGBhcmNoL3g4Ni9uZXQvYnBmX2ppdF9jb21wLmNgLCBhbmQgdGhleSBpbnRyb2R1Y2UgYSBuZXcgYWxsb2NhdGlvbiBmdW5jdGlvbiBjYWxsZWQgYGJwZl9qaXRfYWxsb2NfZXhlY19yd2AuIFdlIGFsc28gaGF2ZSBzb21lIGFkZGl0aW9ucyB0byBgaW5jbHVkZS9saW51eC9maWx0ZXIuaGAgYW5kIGNoYW5nZXMgaW4gYGtlcm5lbC9icGYvY29yZS5jYCBpbmNsdWRpbmcgYSBjYWxsIHRvIGBicGZfaml0X21lbV9pc19yb3goKWAuIEl0IGFsc28gYXBwZWFycyB3ZSYjMzk7cmUgdXNpbmcgYHZtYWxsb2NgIGluc3RlYWQgb2YgYGJwZl9qaXRfYWxsb2NfZXhlY2AgZm9yIGBkLSZndDtyd19pbWFnZWAgaW4gYGtlcm5lbC9icGYvZGlzcGF0Y2hlci5jYC4KCkFscmlnaHQsIGxldCYjMzk7cyBmaW5kIHRoZSBoaWdoLXZhbHVlIHRhcmdldHMgZm9yIGZ1enppbmcuIFdlIGhhdmUgc2V2ZXJhbCBmdW5jdGlvbiBtb2RpZmljYXRpb25zOiBgZXhlY21lbV9hcmNoX3NldHVwYCAoc2VlbXMgbGVzcyBpbnRlcmVzdGluZyBmb3IgZGlyZWN0IGZ1enppbmcsIGl0JiMzOTtzIGFuIGluaXRpYWxpemF0aW9uIGZ1bmN0aW9uKSwgYGFyY2hfYnBmX3RyYW1wb2xpbmVfc2l6ZWAsIGBhbGxvY19uZXdfcGFja2AsIGBicGZfcHJvZ19wYWNrX2FsbG9jYCwgYW5kIHRoZSBhbGxvY2F0aW9uIGZ1bmN0aW9uczogYGJwZl9qaXRfYWxsb2NfZXhlY2AsIGBicGZfaml0X2FsbG9jX2V4ZWNfcndgLCBhbmQgdGhlIGZyZWUgZnVuY3Rpb24gYGJwZl9qaXRfZnJlZV9leGVjYC4gRmluYWxseSBgYnBmX2Rpc3BhdGNoZXJfY2hhbmdlX3Byb2dgIGFsc28gc2VlbXMgcmVsZXZhbnQuCgpPa2F5LCBsZXQmIzM5O3MgemVybyBpbiBvbiBwb3RlbnRpYWwgZnV6emluZyB0YXJnZXRzLiBIbW0sIEkgdGhpbmsgYGFyY2hfYnBmX3RyYW1wb2xpbmVfc2l6ZWAsIGBicGZfcHJvZ19wYWNrX2FsbG9jYCwgYW5kIGBicGZfZGlzcGF0Y2hlcl9jaGFuZ2VfcHJvZ2AgYXJlIGdvb2QgY2FuZGlkYXRlcy4gSG93ZXZlciwgYGJwZl9qaXRfYWxsb2NfZXhlY2AgYW5kIGVzcGVjaWFsbHkgYGJwZl9qaXRfYWxsb2NfZXhlY19yd2AgbG9vayBsaWtlIHRoZSAqcmVhbGx5KiBqdWljeSB0YXJnZXRzLCBnaXZlbiB0aGUgbWVtb3J5IGFsbG9jYXRpb24gYXNwZWN0LiBJIHNob3VsZCBwcm9iYWJseSBzdGFydCBieSBjaGVja2luZyBgYXJjaF9icGZfdHJhbXBvbGluZV9zaXplYCwgdG8gc2VlIGhvdyB0aGF0IGZ1bmN0aW9uIHdvcmtzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI2IDIwOjI0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2FyY2hfYnBmX3RyYW1wb2xpbmVfc2l6ZSYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDthcmNoL2FybTY0L25ldC9icGZfaml0X2NvbXAuYz0yODQ0PWJvb2wgYnBmX2ppdF9zdXBwb3J0c19mc2Vzc2lvbih2b2lkKVxuLS1cbmFyY2gvYXJtNjQvbmV0L2JwZl9qaXRfY29tcC5jLTI4NDgtXG5hcmNoL2FybTY0L25ldC9icGZfaml0X2NvbXAuYzoyODQ5OmludCBhcmNoX2JwZl90cmFtcG9saW5lX3NpemUoY29uc3Qgc3RydWN0IGJ0Zl9mdW5jX21vZGVsICptLCB1MzIgZmxhZ3MsXG5hcmNoL2FybTY0L25ldC9icGZfaml0X2NvbXAuYy0yODUwLVx0XHRcdCAgICAgc3RydWN0IGJwZl90cmFtcF9ub2RlcyAqdG5vZGVzLCB2b2lkICpmdW5jX2FkZHIpXG4tLVxuYXJjaC9sb29uZ2FyY2gvbmV0L2JwZl9qaXQuYz0yMTE2PWludCBhcmNoX3ByZXBhcmVfYnBmX3RyYW1wb2xpbmUoc3RydWN0IGJwZl90cmFtcF9pbWFnZSAqaW0sIHZvaWQgKnJvX2ltYWdlLFxuLS1cbmFyY2gvbG9vbmdhcmNoL25ldC9icGZfaml0LmMtMjE1My1cbmFyY2gvbG9vbmdhcmNoL25ldC9icGZfaml0LmM6MjE1NDppbnQgYXJjaF9icGZfdHJhbXBvbGluZV9zaXplKGNvbnN0IHN0cnVjdCBidGZfZnVuY19tb2RlbCAqbSwgdTMyIGZsYWdzLFxuYXJjaC9sb29uZ2FyY2gvbmV0L2JwZl9qaXQuYy0yMTU1LVx0XHRcdCAgICAgc3RydWN0IGJwZl90cmFtcF9ub2RlcyAqdG5vZGVzLCB2b2lkICpmdW5jX2FkZHIpXG4tLVxuYXJjaC9wb3dlcnBjL25ldC9icGZfaml0X2NvbXAuYz04MTI9c3RhdGljIGludCBfX2FyY2hfcHJlcGFyZV9icGZfdHJhbXBvbGluZShzdHJ1Y3QgYnBmX3RyYW1wX2ltYWdlICppbSwgdm9pZCAqcndfaW1hZ2UsXG4tLVxuYXJjaC9wb3dlcnBjL25ldC9icGZfaml0X2NvbXAuYy0xMTkxLVxuYXJjaC9wb3dlcnBjL25ldC9icGZfaml0X2NvbXAuYzoxMTkyOmludCBhcmNoX2JwZl90cmFtcG9saW5lX3NpemUoY29uc3Qgc3RydWN0IGJ0Zl9mdW5jX21vZGVsICptLCB1MzIgZmxhZ3MsXG5hcmNoL3Bvd2VycGMvbmV0L2JwZl9qaXRfY29tcC5jLTExOTMtXHRcdFx0ICAgICBzdHJ1Y3QgYnBmX3RyYW1wX25vZGVzICp0bm9kZXMsIHZvaWQgKmZ1bmNfYWRkcilcbi0tXG5hcmNoL3Jpc2N2L25ldC9icGZfaml0X2NvbXA2NC5jPTEwMjI9c3RhdGljIGludCBfX2FyY2hfcHJlcGFyZV9icGZfdHJhbXBvbGluZShzdHJ1Y3QgYnBmX3RyYW1wX2ltYWdlICppbSxcbi0tXG5hcmNoL3Jpc2N2L25ldC9icGZfaml0X2NvbXA2NC5jLTEzMDYtXG5hcmNoL3Jpc2N2L25ldC9icGZfaml0X2NvbXA2NC5jOjEzMDc6aW50IGFyY2hfYnBmX3RyYW1wb2xpbmVfc2l6ZShjb25zdCBzdHJ1Y3QgYnRmX2Z1bmNfbW9kZWwgKm0sIHUzMiBmbGFncyxcbmFyY2gvcmlzY3YvbmV0L2JwZl9qaXRfY29tcDY0LmMtMTMwOC1cdFx0XHQgICAgIHN0cnVjdCBicGZfdHJhbXBfbm9kZXMgKnRub2Rlcywgdm9pZCAqZnVuY19hZGRyKVxuLS1cbmFyY2gvczM5MC9uZXQvYnBmX2ppdF9jb21wLmM9MjY1MD1zdGF0aWMgaW50IF9fYXJjaF9wcmVwYXJlX2JwZl90cmFtcG9saW5lKHN0cnVjdCBicGZfdHJhbXBfaW1hZ2UgKmltLFxuLS1cbmFyY2gvczM5MC9uZXQvYnBmX2ppdF9jb21wLmMtMjk2NS1cbmFyY2gvczM5MC9uZXQvYnBmX2ppdF9jb21wLmM6Mjk2NjppbnQgYXJjaF9icGZfdHJhbXBvbGluZV9zaXplKGNvbnN0IHN0cnVjdCBidGZfZnVuY19tb2RlbCAqbSwgdTMyIGZsYWdzLFxuYXJjaC9zMzkwL25ldC9icGZfaml0X2NvbXAuYy0yOTY3LVx0XHRcdCAgICAgc3RydWN0IGJwZl90cmFtcF9ub2RlcyAqdG5vZGVzLCB2b2lkICpvcmlnX2NhbGwpXG4tLVxuYXJjaC94ODYvbmV0L2JwZl9qaXRfY29tcC5jPTM2Njk9aW50IGFyY2hfcHJlcGFyZV9icGZfdHJhbXBvbGluZShzdHJ1Y3QgYnBmX3RyYW1wX2ltYWdlICppbSwgdm9pZCAqaW1hZ2UsIHZvaWQgKmltYWdlX2VuZCxcbi0tXG5hcmNoL3g4Ni9uZXQvYnBmX2ppdF9jb21wLmMtMzY5Ny1cbmFyY2gveDg2L25ldC9icGZfaml0X2NvbXAuYzozNjk4OmludCBhcmNoX2JwZl90cmFtcG9saW5lX3NpemUoY29uc3Qgc3RydWN0IGJ0Zl9mdW5jX21vZGVsICptLCB1MzIgZmxhZ3MsXG5hcmNoL3g4Ni9uZXQvYnBmX2ppdF9jb21wLmMtMzY5OS1cdFx0XHQgICAgIHN0cnVjdCBicGZfdHJhbXBfbm9kZXMgKnRub2Rlcywgdm9pZCAqZnVuY19hZGRyKVxuLS1cbmluY2x1ZGUvbGludXgvYnBmLmg9MTMxOT1pbnQgX19tdXN0X2NoZWNrIGFyY2hfcHJvdGVjdF9icGZfdHJhbXBvbGluZSh2b2lkICppbWFnZSwgdW5zaWduZWQgaW50IHNpemUpO1xuaW5jbHVkZS9saW51eC9icGYuaDoxMzIwOmludCBhcmNoX2JwZl90cmFtcG9saW5lX3NpemUoY29uc3Qgc3RydWN0IGJ0Zl9mdW5jX21vZGVsICptLCB1MzIgZmxhZ3MsXG5pbmNsdWRlL2xpbnV4L2JwZi5oLTEzMjEtXHRcdFx0ICAgICBzdHJ1Y3QgYnBmX3RyYW1wX25vZGVzICp0bm9kZXMsIHZvaWQgKmZ1bmNfYWRkcik7XG4tLVxua2VybmVsL2JwZi9icGZfc3RydWN0X29wcy5jPTU5Nz1pbnQgYnBmX3N0cnVjdF9vcHNfcHJlcGFyZV90cmFtcG9saW5lKHN0cnVjdCBicGZfdHJhbXBfbm9kZXMgKnRub2Rlcyxcbi0tXG5rZXJuZWwvYnBmL2JwZl9zdHJ1Y3Rfb3BzLmMtNjEzLVxua2VybmVsL2JwZi9icGZfc3RydWN0X29wcy5jOjYxNDpcdHNpemUgPSBhcmNoX2JwZl90cmFtcG9saW5lX3NpemUobW9kZWwsIGZsYWdzLCB0bm9kZXMsIHN0dWJfZnVuYyk7XG5rZXJuZWwvYnBmL2JwZl9zdHJ1Y3Rfb3BzLmMtNjE1LVx0aWYgKHNpemUgXHUwMDNjPSAwKVxuLS1cbmtlcm5lbC9icGYvdHJhbXBvbGluZS5jPTY3Mz1zdGF0aWMgaW50IGJwZl90cmFtcG9saW5lX3VwZGF0ZShzdHJ1Y3QgYnBmX3RyYW1wb2xpbmUgKnRyLCBib29sIGxvY2tfZGlyZWN0X211dGV4LFxuLS1cbmtlcm5lbC9icGYvdHJhbXBvbGluZS5jLTcyNC1cbmtlcm5lbC9icGYvdHJhbXBvbGluZS5jOjcyNTpcdHNpemUgPSBhcmNoX2JwZl90cmFtcG9saW5lX3NpemUoXHUwMDI2dHItXHUwMDNlZnVuYy5tb2RlbCwgdHItXHUwMDNlZmxhZ3MsXG5rZXJuZWwvYnBmL3RyYW1wb2xpbmUuYy03MjYtXHRcdFx0XHRcdHRub2RlcywgdHItXHUwMDNlZnVuYy5hZGRyKTtcbi0tXG5rZXJuZWwvYnBmL3RyYW1wb2xpbmUuYz0xNDYxPWludCBfX3dlYWsgYXJjaF9wcm90ZWN0X2JwZl90cmFtcG9saW5lKHZvaWQgKmltYWdlLCB1bnNpZ25lZCBpbnQgc2l6ZSlcbi0tXG5rZXJuZWwvYnBmL3RyYW1wb2xpbmUuYy0xNDY2LVxua2VybmVsL2JwZi90cmFtcG9saW5lLmM6MTQ2NzppbnQgX193ZWFrIGFyY2hfYnBmX3RyYW1wb2xpbmVfc2l6ZShjb25zdCBzdHJ1Y3QgYnRmX2Z1bmNfbW9kZWwgKm0sIHUzMiBmbGFncyxcbmtlcm5lbC9icGYvdHJhbXBvbGluZS5jLTE0NjgtXHRcdFx0XHQgICAgc3RydWN0IGJwZl90cmFtcF9ub2RlcyAqdG5vZGVzLCB2b2lkICpmdW5jX2FkZHIpXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjYgMjA6MjQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNjE0NAoJCQkJCQkJb3V0cHV0OiAyMgoJCQkJCQkJdGhvdWdodHM6IDE0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhlIHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZToKCioqQW5hbHl6aW5nIGBicGZfcHJvZ19wYWNrX2FsbG9jYCoqCgpBbHJpZ2h0LCBsZXQmIzM5O3MgZGl2ZSBpbnRvIHRoaXMgYGJwZl9wcm9nX3BhY2tfYWxsb2NgIGZ1bmN0aW9uLiBNeSBpbml0aWFsIHRob3VnaHQgcHJvY2VzcyByZXZvbHZlcyBhcm91bmQgdW5kZXJzdGFuZGluZyBpdHMgY29yZSByZXNwb25zaWJpbGl0eSB3aXRoaW4gdGhlIEJQRiBlY29zeXN0ZW0uIEkgaW1tZWRpYXRlbHkgbmVlZCB0byBjb25zaWRlciBpdHMgcG9zaXRpb24gaW4gdGhlIG92ZXJhbGwgYWxsb2NhdGlvbiBzdHJhdGVneSBmb3IgQlBGIHByb2dyYW1zLiBJcyBpdCBhIGNlbnRyYWwgYWxsb2NhdG9yLCBvciBpcyBpdCBhIGxheWVyIG9uIHRvcCBvZiBhIG1vcmUgZ2VuZXJhbCBtZW1vcnkgbWFuYWdlbWVudCBzY2hlbWU/IFRoZSBuYW1lIGl0c2VsZiBzdWdnZXN0cyBpdCYjMzk7cyByZWxhdGVkIHRvICYjMzQ7cGFja2luZywmIzM0OyBzbyBJJiMzOTttIGV4cGVjdGluZyB0byBsb29rIGludG8gaG93IEJQRiBwcm9ncmFtIHN0cnVjdHVyZXMgYXJlIG9yZ2FuaXplZCBhbmQgb3B0aW1pemVkIGZvciBtZW1vcnkgZWZmaWNpZW5jeSB3aXRoaW4gdGhpcyBmdW5jdGlvbi4gSSYjMzk7bGwgbmVlZCB0byBmaWd1cmUgb3V0IHdoYXQgZGF0YSBzdHJ1Y3R1cmVzIGl0IG1hbmlwdWxhdGVzLiBEb2VzIGl0IGRlYWwgd2l0aCBwcm9ncmFtIGhlYWRlcnMsIGluc3RydWN0aW9ucywgb3IgYXNzb2NpYXRlZCBtZXRhZGF0YT8gU3BlY2lmaWNhbGx5LCBJIHdpbGwgZXhhbWluZSB0aGUgYWxnb3JpdGhtIGZvciBtZW1vcnkgYWxsb2NhdGlvbi4gSXMgaXQgYSBzaW1wbGUgYGttYWxsb2NgIHdyYXBwZXIsIG9yIGRvZXMgaXQgaW5jb3Jwb3JhdGUgbW9yZSBhZHZhbmNlZCB0ZWNobmlxdWVzIGxpa2Ugc2xhYiBhbGxvY2F0aW9uLCBvYmplY3QgY2FjaGluZywgb3IgbWF5YmUgc29tZXRoaW5nIEJQRi1zcGVjaWZpYyBsaWtlIHBhY2tpbmcgbXVsdGlwbGUgcHJvZ3JhbXMgaW50byBhIHNpbmdsZSBwYWNrIHRvIG1pbmltaXplIG92ZXJoZWFkPyBJJiMzOTtsbCBhbHNvIGNoZWNrIGZvciBhbnkgcG90ZW50aWFsIHBpdGZhbGxzLCBsaWtlIG1lbW9yeSBmcmFnbWVudGF0aW9uIG9yIHJhY2UgY29uZGl0aW9ucywgdGhhdCBtYXkgYmUgaW5oZXJlbnQgaW4gaXRzIGRlc2lnbi4gRnVydGhlcm1vcmUsIEkgd2lsbCBjaGVjayB0aGUgcG90ZW50aWFsIGZvciBwZXJmb3JtYW5jZSBib3R0bGVuZWNrcyBpbiB0aGlzIGZ1bmN0aW9uLiBEb2VzIGl0IGVtcGxveSBzcGlubG9ja3Mgb3Igb3RoZXIgbG9ja2luZyBtZWNoYW5pc21zPyBIb3cgZG9lcyBpdCBoYW5kbGUgcG90ZW50aWFsIGFsbG9jYXRpb24gZmFpbHVyZXMsIGFuZCB3aGF0IGFyZSB0aGUgaW1wbGljYXRpb25zIGZvciBvdmVyYWxsIEJQRiBwcm9ncmFtIGxvYWRpbmcgYW5kIGV4ZWN1dGlvbj8gSSBleHBlY3QgdG8gaGF2ZSBhIGdvb2QgbG9vayBhdCBlcnJvciBoYW5kbGluZyBhbmQgcm9idXN0bmVzcyB0b28uIEJhc2ljYWxseSwgSSB3YW50IHRvIGZvcm0gYSBjb21wbGV0ZSBtZW50YWwgbWFwIG9mIHRoaXMgZnVuY3Rpb24mIzM5O3MgcHVycG9zZSwgZGVzaWduLCBwb3RlbnRpYWwgaXNzdWVzLCBhbmQgb3B0aW1pemF0aW9uIHBvc3NpYmlsaXRpZXMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjYgMjA6MjQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7YnBmX3Byb2dfcGFja19hbGxvYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDthcmNoL2FybTY0L25ldC9icGZfaml0X2NvbXAuYz0yODcxPXZvaWQgKmFyY2hfYWxsb2NfYnBmX3RyYW1wb2xpbmUodW5zaWduZWQgaW50IHNpemUpXG5hcmNoL2FybTY0L25ldC9icGZfaml0X2NvbXAuYy0yODcyLXtcbmFyY2gvYXJtNjQvbmV0L2JwZl9qaXRfY29tcC5jOjI4NzM6XHRyZXR1cm4gYnBmX3Byb2dfcGFja19hbGxvYyhzaXplLCBqaXRfZmlsbF9ob2xlKTtcbmFyY2gvYXJtNjQvbmV0L2JwZl9qaXRfY29tcC5jLTI4NzQtfVxuLS1cbmFyY2gvbG9vbmdhcmNoL25ldC9icGZfaml0LmM9MTc2Mz12b2lkICphcmNoX2FsbG9jX2JwZl90cmFtcG9saW5lKHVuc2lnbmVkIGludCBzaXplKVxuYXJjaC9sb29uZ2FyY2gvbmV0L2JwZl9qaXQuYy0xNzY0LXtcbmFyY2gvbG9vbmdhcmNoL25ldC9icGZfaml0LmM6MTc2NTpcdHJldHVybiBicGZfcHJvZ19wYWNrX2FsbG9jKHNpemUsIGppdF9maWxsX2hvbGUpO1xuYXJjaC9sb29uZ2FyY2gvbmV0L2JwZl9qaXQuYy0xNzY2LX1cbi0tXG5hcmNoL3Bvd2VycGMvbmV0L2JwZl9qaXRfY29tcC5jPTU4OT12b2lkICphcmNoX2FsbG9jX2JwZl90cmFtcG9saW5lKHVuc2lnbmVkIGludCBzaXplKVxuYXJjaC9wb3dlcnBjL25ldC9icGZfaml0X2NvbXAuYy01OTAte1xuYXJjaC9wb3dlcnBjL25ldC9icGZfaml0X2NvbXAuYzo1OTE6XHRyZXR1cm4gYnBmX3Byb2dfcGFja19hbGxvYyhzaXplLCBicGZfaml0X2ZpbGxfaWxsX2luc25zKTtcbmFyY2gvcG93ZXJwYy9uZXQvYnBmX2ppdF9jb21wLmMtNTkyLX1cbi0tXG5hcmNoL3Jpc2N2L25ldC9icGZfaml0X2NvbXA2NC5jPTEzMjI9dm9pZCAqYXJjaF9hbGxvY19icGZfdHJhbXBvbGluZSh1bnNpZ25lZCBpbnQgc2l6ZSlcbmFyY2gvcmlzY3YvbmV0L2JwZl9qaXRfY29tcDY0LmMtMTMyMy17XG5hcmNoL3Jpc2N2L25ldC9icGZfaml0X2NvbXA2NC5jOjEzMjQ6XHRyZXR1cm4gYnBmX3Byb2dfcGFja19hbGxvYyhzaXplLCBicGZfZmlsbF9pbGxfaW5zbnMpO1xuYXJjaC9yaXNjdi9uZXQvYnBmX2ppdF9jb21wNjQuYy0xMzI1LX1cbi0tXG5hcmNoL3g4Ni9uZXQvYnBmX2ppdF9jb21wLmM9MzY1ND12b2lkICphcmNoX2FsbG9jX2JwZl90cmFtcG9saW5lKHVuc2lnbmVkIGludCBzaXplKVxuYXJjaC94ODYvbmV0L2JwZl9qaXRfY29tcC5jLTM2NTUte1xuYXJjaC94ODYvbmV0L2JwZl9qaXRfY29tcC5jOjM2NTY6XHRyZXR1cm4gYnBmX3Byb2dfcGFja19hbGxvYyhzaXplLCBqaXRfZmlsbF9ob2xlKTtcbmFyY2gveDg2L25ldC9icGZfaml0X2NvbXAuYy0zNjU3LX1cbi0tXG5pbmNsdWRlL2xpbnV4L2ZpbHRlci5oPTEzMzA9YnBmX2ppdF9iaW5hcnlfcGFja19oZHIoY29uc3Qgc3RydWN0IGJwZl9wcm9nICpmcCk7XG5pbmNsdWRlL2xpbnV4L2ZpbHRlci5oLTEzMzEtXG5pbmNsdWRlL2xpbnV4L2ZpbHRlci5oOjEzMzI6dm9pZCAqYnBmX3Byb2dfcGFja19hbGxvYyh1MzIgc2l6ZSwgYnBmX2ppdF9maWxsX2hvbGVfdCBicGZfZmlsbF9pbGxfaW5zbnMpO1xuaW5jbHVkZS9saW51eC9maWx0ZXIuaC0xMzMzLXZvaWQgYnBmX3Byb2dfcGFja19mcmVlKHZvaWQgKnB0ciwgdTMyIHNpemUpO1xuLS1cbmtlcm5lbC9icGYvY29yZS5jPTkxMj1zdGF0aWMgc3RydWN0IGJwZl9wcm9nX3BhY2sgKmFsbG9jX25ld19wYWNrKGJwZl9qaXRfZmlsbF9ob2xlX3QgYnBmX2ZpbGxfaWxsX2luc25zKVxuLS1cbmtlcm5lbC9icGYvY29yZS5jLTk0MS1cbmtlcm5lbC9icGYvY29yZS5jOjk0Mjp2b2lkICpicGZfcHJvZ19wYWNrX2FsbG9jKHUzMiBzaXplLCBicGZfaml0X2ZpbGxfaG9sZV90IGJwZl9maWxsX2lsbF9pbnNucylcbmtlcm5lbC9icGYvY29yZS5jLTk0My17XG4tLVxua2VybmVsL2JwZi9jb3JlLmM9MTE0MT1icGZfaml0X2JpbmFyeV9wYWNrX2FsbG9jKHVuc2lnbmVkIGludCBwcm9nbGVuLCB1OCAqKmltYWdlX3B0cixcbi0tXG5rZXJuZWwvYnBmL2NvcmUuYy0xMTU3LVx0XHRyZXR1cm4gTlVMTDtcbmtlcm5lbC9icGYvY29yZS5jOjExNTg6XHRyb19oZWFkZXIgPSBicGZfcHJvZ19wYWNrX2FsbG9jKHNpemUsIGJwZl9maWxsX2lsbF9pbnNucyk7XG5rZXJuZWwvYnBmL2NvcmUuYy0xMTU5LVx0aWYgKCFyb19oZWFkZXIpIHtcbi0tXG5rZXJuZWwvYnBmL2Rpc3BhdGNoZXIuYz0xMzc9dm9pZCBicGZfZGlzcGF0Y2hlcl9jaGFuZ2VfcHJvZyhzdHJ1Y3QgYnBmX2Rpc3BhdGNoZXIgKmQsIHN0cnVjdCBicGZfcHJvZyAqZnJvbSxcbi0tXG5rZXJuZWwvYnBmL2Rpc3BhdGNoZXIuYy0xNDctXHRpZiAoIWQtXHUwMDNlaW1hZ2UpIHtcbmtlcm5lbC9icGYvZGlzcGF0Y2hlci5jOjE0ODpcdFx0ZC1cdTAwM2VpbWFnZSA9IGJwZl9wcm9nX3BhY2tfYWxsb2MoUEFHRV9TSVpFLCBicGZfaml0X2ZpbGxfaG9sZV93aXRoX3plcm8pO1xua2VybmVsL2JwZi9kaXNwYXRjaGVyLmMtMTQ5LVx0XHRpZiAoIWQtXHUwMDNlaW1hZ2UpXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjYgMjA6MjQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNzY4OQoJCQkJCQkJb3V0cHV0OiAyNAoJCQkJCQkJdGhvdWdodHM6IDEwNQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgQlBGIFByb2dyYW0gQWxsb2NhdGlvbioqCgpPa2F5LCBzbyBJJiMzOTttIHRyYWNpbmcgdGhlIGFsbG9jYXRpb24gcHJvY2VzcyBmb3IgQlBGIHByb2dyYW1zLCBhbmQgaXQgbG9va3MgbGlrZSBgYnBmX3Byb2dfcGFja19hbGxvY2AgaXMgdGhlIGtleSBmdW5jdGlvbi4gSXQmIzM5O3MgY2FsbGVkIGJ5IGEgZmV3IG90aGVyIGltcG9ydGFudCBjb21wb25lbnRzLCBzcGVjaWZpY2FsbHkgYGFyY2hfYWxsb2NfYnBmX3RyYW1wb2xpbmVgLCBgYnBmX2ppdF9iaW5hcnlfcGFja19hbGxvY2AsIGFuZCBgYnBmX2Rpc3BhdGNoZXJfY2hhbmdlX3Byb2dgLiBSaWdodCBvZmYgdGhlIGJhdCwgSSByZWNvZ25pemUgdGhhdCBgYnBmX2ppdF9iaW5hcnlfcGFja19hbGxvY2AgaXMgcmVsYXRlZCB0byB0aGUgQlBGIEpJVCBjb21waWxhdGlvbiBwcm9jZXNzLCB3aGljaCBpcyBjcml0aWNhbCBmb3IgcGVyZm9ybWFuY2UuIEFuZCwgZnJvbSB0aGUgbmFtZXMsIGBicGZfZGlzcGF0Y2hlcl9jaGFuZ2VfcHJvZ2AgaGFuZGxlcyBjaGFuZ2VzIHRvIEJQRiBkaXNwYXRjaGVycy4KCk5vdywgSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2hhdCYjMzk7cyBoYXBwZW5pbmcgd2l0aGluIHRoZXNlIGNvbXBvbmVudHMuIFRoZSBuZXh0IGxvZ2ljYWwgc3RlcCBpcyB0byBkaXZlIGludG8gaG93IGBicGZfaml0X2FsbG9jX2V4ZWNfcndgIGZhY3RvcnMgaW50byB0aGlzIHByb2Nlc3MuIEkgbmVlZCB0byB1bmRlcnN0YW5kIGl0cyByb2xlIGluIHRoZSBhbGxvY2F0aW9uIGFuZCBleGVjdXRpb24gcHJvY2Vzcy4gVGhpcyB3aWxsIGhlbHAgY2xhcmlmeSB0aGUgb3ZlcmFsbCBwcm9ncmFtIGZsb3cuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjYgMjA6MjU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7YnBmX2ppdF9hbGxvY19leGVjX3J3JiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2FyY2gveDg2L25ldC9icGZfaml0X2NvbXAuYz0zNjk4PWludCBhcmNoX2JwZl90cmFtcG9saW5lX3NpemUoY29uc3Qgc3RydWN0IGJ0Zl9mdW5jX21vZGVsICptLCB1MzIgZmxhZ3MsXG4tLVxuYXJjaC94ODYvbmV0L2JwZl9qaXRfY29tcC5jLTM3MDgtXHQgKiBtb2R1bGUgbWVtb3J5IHJhbmdlLlxuYXJjaC94ODYvbmV0L2JwZl9qaXRfY29tcC5jOjM3MDk6XHQgKiBTaW5jZSBpdCBtdXN0IGJlIHdyaXRhYmxlIHVzZSBicGZfaml0X2FsbG9jX2V4ZWNfcncoKS5cbmFyY2gveDg2L25ldC9icGZfaml0X2NvbXAuYy0zNzEwLVx0ICovXG5hcmNoL3g4Ni9uZXQvYnBmX2ppdF9jb21wLmM6MzcxMTpcdGltYWdlID0gYnBmX2ppdF9hbGxvY19leGVjX3J3KFBBR0VfU0laRSk7XG5hcmNoL3g4Ni9uZXQvYnBmX2ppdF9jb21wLmMtMzcxMi1cdGlmICghaW1hZ2UpXG4tLVxuaW5jbHVkZS9saW51eC9maWx0ZXIuaD0xMzI1PXZvaWQgKmJwZl9qaXRfYWxsb2NfZXhlYyh1bnNpZ25lZCBsb25nIHNpemUpO1xuaW5jbHVkZS9saW51eC9maWx0ZXIuaDoxMzI2OnZvaWQgKmJwZl9qaXRfYWxsb2NfZXhlY19ydyh1bnNpZ25lZCBsb25nIHNpemUpO1xuaW5jbHVkZS9saW51eC9maWx0ZXIuaC0xMzI3LXZvaWQgYnBmX2ppdF9mcmVlX2V4ZWModm9pZCAqYWRkcik7XG4tLVxua2VybmVsL2JwZi9jb3JlLmM9MTA3MD12b2lkICpicGZfaml0X2FsbG9jX2V4ZWModW5zaWduZWQgbG9uZyBzaXplKVxuLS1cbmtlcm5lbC9icGYvY29yZS5jLTEwNzQtXG5rZXJuZWwvYnBmL2NvcmUuYzoxMDc1OnZvaWQgKmJwZl9qaXRfYWxsb2NfZXhlY19ydyh1bnNpZ25lZCBsb25nIHNpemUpXG5rZXJuZWwvYnBmL2NvcmUuYy0xMDc2LXtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD45LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yNiAyMDoyNTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA4NDQ2CgkJCQkJCQlvdXRwdXQ6IDIyCgkJCQkJCQl0aG91Z2h0czogNDYKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhvc2UgdGhvdWdodHMsIHByZXNlbnRlZCBhcyBteSBvd24gbWVudGFsIHByb2Nlc3MsIGdpdmVuIG15IGV4cGVydGlzZToKCioqRXhhbWluaW5nIEJQRiBKSVQgQWxsb2NhdGlvbiBvbiB4ODYqKgoKQWxyaWdodCwgSSYjMzk7bSB0YWtpbmcgYSBsb29rIGF0IHRoaXMgYGJwZl9qaXRfYWxsb2NfZXhlY19yd2AgZnVuY3Rpb24uIFRoZSBjb2RlIHNlZW1zIHRvIGluZGljYXRlIGl0JiMzOTtzIGV4Y2x1c2l2ZWx5IGVtcGxveWVkIHdpdGhpbiBgYXJjaF9icGZfdHJhbXBvbGluZV9zaXplYCBzcGVjaWZpY2FsbHkgb24gdGhlIHg4NiBhcmNoaXRlY3R1cmUuIEhtbSwgdGhhdCYjMzk7cyBpbnRlcmVzdGluZyBhbmQgY2VydGFpbmx5IHdhcnJhbnRzIGNsb3NlciBleGFtaW5hdGlvbi4KCk15IGltbWVkaWF0ZSBxdWVzdGlvbiBpczogd2hhdCYjMzk7cyB0aGUgZGVhbCB3aXRoIGBicGZfaml0X2FsbG9jX2V4ZWNgPyBJcyBpdCBhbHNvIHg4Ni1zcGVjaWZpYz8gT3IgaXMgaXQgdXNlZCBtb3JlIGJyb2FkbHksIHBlcmhhcHMgYWNyb3NzIG90aGVyIGFyY2hpdGVjdHVyZXMgb3IgaW4gZGlmZmVyZW50IGNvbnRleHRzIHdpdGhpbiB0aGUgQlBGIEpJVCBjb21waWxhdGlvbiBwcm9jZXNzPyBJdCYjMzk7cyBpbXBvcnRhbnQgdG8gdW5kZXJzdGFuZCB0aGUgcmVsYXRpb25zaGlwIGJldHdlZW4gdGhlc2UgdHdvIGFsbG9jYXRpb24gcm91dGluZXMuIEFyZSB0aGV5IGNvbXBsZW1lbnRhcnk/IERvIHRoZXkgaGF2ZSBkaWZmZXJlbnQgcHVycG9zZXM/IElzIG9uZSBhIHN1YnNldCBvZiB0aGUgb3RoZXI/IEFyZSB0aGVyZSBhbnkgdXNlIGNhc2VzIHdoZXJlIG9uZSBpcyBwcmVmZXJyZWQgb3ZlciB0aGUgb3RoZXIgYW5kIGlmIHNvIHdoeT8gVGhpcyBkaXN0aW5jdGlvbiBpcyBjcnVjaWFsIGZvciBnZXR0aW5nIGEgZnVsbCBncmFzcCBvbiBtZW1vcnkgbWFuYWdlbWVudCBpbiB0aGUgSklUIGVudmlyb25tZW50LCBlc3BlY2lhbGx5IHdoZW4gb3B0aW1pemluZyBmb3IgdmFyaW91cyBhcmNoaXRlY3R1cmVzIG9yIGV4cGxvcmluZyBuZXcgZmVhdHVyZXMgYW5kIGNhcGFiaWxpdGllcyB3aXRoaW4gdGhlIEJQRiBmcmFtZXdvcmsuIEkgbmVlZCB0byBkaWcgZGVlcGVyIGludG8gdGhlIGNvZGUgYW5kIHRoZSB3aWRlciBCUEYgZWNvc3lzdGVtIHRvIGRldGVybWluZSB3aGVyZSB0aGVzZSBhbGxvY2F0aW9uIGZ1bmN0aW9ucyBkaXZlcmdlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yNiAyMDoyNTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDticGZfaml0X2FsbG9jX2V4ZWMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7YXJjaC9hcm02NC9uZXQvYnBmX2ppdF9jb21wLmM9MjMyMD12b2lkICpicGZfYXJjaF90ZXh0X2NvcHkodm9pZCAqZHN0LCB2b2lkICpzcmMsIHNpemVfdCBsZW4pXG4tLVxuYXJjaC9hcm02NC9uZXQvYnBmX2ppdF9jb21wLmMtMjMyNi1cbmFyY2gvYXJtNjQvbmV0L2JwZl9qaXRfY29tcC5jOjIzMjc6dTY0IGJwZl9qaXRfYWxsb2NfZXhlY19saW1pdCh2b2lkKVxuYXJjaC9hcm02NC9uZXQvYnBmX2ppdF9jb21wLmMtMjMyOC17XG4tLVxuYXJjaC9yaXNjdi9uZXQvYnBmX2ppdF9jb3JlLmM9NDQ9c3RydWN0IGJwZl9wcm9nICpicGZfaW50X2ppdF9jb21waWxlKHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYsIHN0cnVjdCBicGZfcHJvZyAqcHJvZylcbi0tXG5hcmNoL3Jpc2N2L25ldC9icGZfaml0X2NvcmUuYy0xOTItXG5hcmNoL3Jpc2N2L25ldC9icGZfaml0X2NvcmUuYzoxOTM6dTY0IGJwZl9qaXRfYWxsb2NfZXhlY19saW1pdCh2b2lkKVxuYXJjaC9yaXNjdi9uZXQvYnBmX2ppdF9jb3JlLmMtMTk0LXtcbi0tXG5hcmNoL3g4Ni9uZXQvYnBmX2ppdF9jb21wLmM9MzY5OD1pbnQgYXJjaF9icGZfdHJhbXBvbGluZV9zaXplKGNvbnN0IHN0cnVjdCBidGZfZnVuY19tb2RlbCAqbSwgdTMyIGZsYWdzLFxuLS1cbmFyY2gveDg2L25ldC9icGZfaml0X2NvbXAuYy0zNzA4LVx0ICogbW9kdWxlIG1lbW9yeSByYW5nZS5cbmFyY2gveDg2L25ldC9icGZfaml0X2NvbXAuYzozNzA5Olx0ICogU2luY2UgaXQgbXVzdCBiZSB3cml0YWJsZSB1c2UgYnBmX2ppdF9hbGxvY19leGVjX3J3KCkuXG5hcmNoL3g4Ni9uZXQvYnBmX2ppdF9jb21wLmMtMzcxMC1cdCAqL1xuYXJjaC94ODYvbmV0L2JwZl9qaXRfY29tcC5jOjM3MTE6XHRpbWFnZSA9IGJwZl9qaXRfYWxsb2NfZXhlY19ydyhQQUdFX1NJWkUpO1xuYXJjaC94ODYvbmV0L2JwZl9qaXRfY29tcC5jLTM3MTItXHRpZiAoIWltYWdlKVxuLS1cbmluY2x1ZGUvbGludXgvZmlsdGVyLmg9MTMyMz12b2lkIGJwZl9qaXRfYmluYXJ5X2ZyZWUoc3RydWN0IGJwZl9iaW5hcnlfaGVhZGVyICpoZHIpO1xuaW5jbHVkZS9saW51eC9maWx0ZXIuaDoxMzI0OnU2NCBicGZfaml0X2FsbG9jX2V4ZWNfbGltaXQodm9pZCk7XG5pbmNsdWRlL2xpbnV4L2ZpbHRlci5oOjEzMjU6dm9pZCAqYnBmX2ppdF9hbGxvY19leGVjKHVuc2lnbmVkIGxvbmcgc2l6ZSk7XG5pbmNsdWRlL2xpbnV4L2ZpbHRlci5oOjEzMjY6dm9pZCAqYnBmX2ppdF9hbGxvY19leGVjX3J3KHVuc2lnbmVkIGxvbmcgc2l6ZSk7XG5pbmNsdWRlL2xpbnV4L2ZpbHRlci5oLTEzMjctdm9pZCBicGZfaml0X2ZyZWVfZXhlYyh2b2lkICphZGRyKTtcbi0tXG5rZXJuZWwvYnBmL2NvcmUuYz05MTI9c3RhdGljIHN0cnVjdCBicGZfcHJvZ19wYWNrICphbGxvY19uZXdfcGFjayhicGZfaml0X2ZpbGxfaG9sZV90IGJwZl9maWxsX2lsbF9pbnNucylcbi0tXG5rZXJuZWwvYnBmL2NvcmUuYy05MTktXHRcdHJldHVybiBOVUxMO1xua2VybmVsL2JwZi9jb3JlLmM6OTIwOlx0cGFjay1cdTAwM2VwdHIgPSBicGZfaml0X2FsbG9jX2V4ZWMoQlBGX1BST0dfUEFDS19TSVpFKTtcbmtlcm5lbC9icGYvY29yZS5jLTkyMS1cdGlmICghcGFjay1cdTAwM2VwdHIpXG4tLVxua2VybmVsL2JwZi9jb3JlLmM9OTQyPXZvaWQgKmJwZl9wcm9nX3BhY2tfYWxsb2ModTMyIHNpemUsIGJwZl9qaXRfZmlsbF9ob2xlX3QgYnBmX2ZpbGxfaWxsX2luc25zKVxuLS1cbmtlcm5lbC9icGYvY29yZS5jLTk1MS1cdFx0c2l6ZSA9IHJvdW5kX3VwKHNpemUsIFBBR0VfU0laRSk7XG5rZXJuZWwvYnBmL2NvcmUuYzo5NTI6XHRcdHB0ciA9IGJwZl9qaXRfYWxsb2NfZXhlYyhzaXplKTtcbmtlcm5lbC9icGYvY29yZS5jLTk1My1cdFx0aWYgKHB0ciBcdTAwMjZcdTAwMjYgIWJwZl9qaXRfbWVtX2lzX3JveCgpKSB7XG4tLVxua2VybmVsL2JwZi9jb3JlLmM9MTAyOD1zdGF0aWMgYXRvbWljX2xvbmdfdCBicGZfaml0X2N1cnJlbnQ7XG4tLVxua2VybmVsL2JwZi9jb3JlLmMtMTAzMy0gKi9cbmtlcm5lbC9icGYvY29yZS5jOjEwMzQ6dTY0IF9fd2VhayBicGZfaml0X2FsbG9jX2V4ZWNfbGltaXQodm9pZClcbmtlcm5lbC9icGYvY29yZS5jLTEwMzUte1xuLS1cbmtlcm5lbC9icGYvY29yZS5jPTEwNDM9c3RhdGljIGludCBfX2luaXQgYnBmX2ppdF9jaGFyZ2VfaW5pdCh2b2lkKVxuLS1cbmtlcm5lbC9icGYvY29yZS5jLTEwNDUtXHQvKiBPbmx5IHVzZWQgYXMgaGV1cmlzdGljIGhlcmUgdG8gZGVyaXZlIGxpbWl0LiAqL1xua2VybmVsL2JwZi9jb3JlLmM6MTA0NjpcdGJwZl9qaXRfbGltaXRfbWF4ID0gYnBmX2ppdF9hbGxvY19leGVjX2xpbWl0KCk7XG5rZXJuZWwvYnBmL2NvcmUuYy0xMDQ3LVx0YnBmX2ppdF9saW1pdCA9IG1pbl90KHU2NCwgcm91bmRfdXAoYnBmX2ppdF9saW1pdF9tYXggXHUwMDNlXHUwMDNlIDEsXG4tLVxua2VybmVsL2JwZi9jb3JlLmM9MTA2NT12b2lkIGJwZl9qaXRfdW5jaGFyZ2VfbW9kbWVtKHUzMiBzaXplKVxuLS1cbmtlcm5lbC9icGYvY29yZS5jLTEwNjktXG5rZXJuZWwvYnBmL2NvcmUuYzoxMDcwOnZvaWQgKmJwZl9qaXRfYWxsb2NfZXhlYyh1bnNpZ25lZCBsb25nIHNpemUpXG5rZXJuZWwvYnBmL2NvcmUuYy0xMDcxLXtcbi0tXG5rZXJuZWwvYnBmL2NvcmUuYy0xMDc0LVxua2VybmVsL2JwZi9jb3JlLmM6MTA3NTp2b2lkICpicGZfaml0X2FsbG9jX2V4ZWNfcncodW5zaWduZWQgbG9uZyBzaXplKVxua2VybmVsL2JwZi9jb3JlLmMtMTA3Ni17XG4tLVxua2VybmVsL2JwZi9jb3JlLmM9MTA4Nj1icGZfaml0X2JpbmFyeV9hbGxvYyh1bnNpZ25lZCBpbnQgcHJvZ2xlbiwgdTggKippbWFnZV9wdHIsXG4tLVxua2VybmVsL2JwZi9jb3JlLmMtMTEwMy1cdFx0cmV0dXJuIE5VTEw7XG5rZXJuZWwvYnBmL2NvcmUuYzoxMTA0Olx0aGRyID0gYnBmX2ppdF9hbGxvY19leGVjKHNpemUpO1xua2VybmVsL2JwZi9jb3JlLmMtMTEwNS1cdGlmICghaGRyKSB7XG4tLVxua2VybmVsL2JwZi90cmFtcG9saW5lLmM9MTQ0MD12b2lkICogX193ZWFrIGFyY2hfYWxsb2NfYnBmX3RyYW1wb2xpbmUodW5zaWduZWQgaW50IHNpemUpXG4tLVxua2VybmVsL2JwZi90cmFtcG9saW5lLmMtMTQ0NS1cdFx0cmV0dXJuIE5VTEw7XG5rZXJuZWwvYnBmL3RyYW1wb2xpbmUuYzoxNDQ2Olx0aW1hZ2UgPSBicGZfaml0X2FsbG9jX2V4ZWMoUEFHRV9TSVpFKTtcbmtlcm5lbC9icGYvdHJhbXBvbGluZS5jLTE0NDctXHRpZiAoaW1hZ2UpXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI2IDIwOjI1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDEwMzI3CgkJCQkJCQlvdXRwdXQ6IDIyCgkJCQkJCQl0aG91Z2h0czogMTM2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgS2VybmVsJiMzOTtzIEJQRiBKSVQgTWVtb3J5IEFsbG9jYXRpb24gU3RyYXRlZ3kqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IGhvdyB0aGUgQlBGIEpJVCBtZW1vcnkgaXMgYmVpbmcgbWFuYWdlZCB3aXRoaW4gdGhlIGtlcm5lbC4gTXkgaW5pdGlhbCBpbXByZXNzaW9uIGlzIHRoYXQgYGJwZl9qaXRfYWxsb2NfZXhlY2AgaXMgYSBrZXkgZnVuY3Rpb24sIGhlYXZpbHkgdXNlZCBpbiBhbGxvY2F0aW5nIG1lbW9yeSBmb3IgY29tcGlsZWQgQlBGIHByb2dyYW1zLCBwYXJ0aWN1bGFybHkgd2l0aGluIHJvdXRpbmVzIGxpa2UgYGFsbG9jX25ld19wYWNrYCwgYGJwZl9wcm9nX3BhY2tfYWxsb2NgLCBgYnBmX2ppdF9iaW5hcnlfYWxsb2NgLCBhbmQgYGFyY2hfYWxsb2NfYnBmX3RyYW1wb2xpbmVgLgoKVGhlIGN1cnJlbnQgcGF0Y2ggSSYjMzk7bSBleGFtaW5pbmcgYXBwZWFycyB0byBiZSBtYWtpbmcgc29tZSBzaWduaWZpY2FudCBjaGFuZ2VzLiBJIHNlZSBtb2RpZmljYXRpb25zIHRvIGBhbGxvY19uZXdfcGFja2AgYW5kIGBicGZfcHJvZ19wYWNrX2FsbG9jYCDigJMgc3BlY2lmaWNhbGx5LCBpdCBzZWVtcyBsaWtlIHRoZXJlJiMzOTtzIG5vdyBhIGNoZWNrIGZvciBgYnBmX2ppdF9tZW1faXNfcm94KClgLiBUaGlzIHN1Z2dlc3RzIHdlJiMzOTtyZSBwcm9iYWJseSBhZGRyZXNzaW5nIHNlY3VyaXR5IGNvbmNlcm5zIG9yIHBlcmhhcHMgdHJ5aW5nIHRvIG9wdGltaXplIHJlYWQtb25seSBtZW1vcnkgc2VnbWVudHMgZm9yIEpJVC1lZCBjb2RlLiBJbnRlcmVzdGluZy4KClRoZW4sIHRoZXJlJiMzOTtzIGFub3RoZXIgY2hhbmdlIHJlbGF0ZWQgdG8gYGJwZl9kaXNwYXRjaGVyX2NoYW5nZV9wcm9nYC4gVGhpcyBpcyB3aGVyZSB0aGluZ3MgZ2V0IHJlYWxseSBpbnRlcmVzdGluZzsgdGhlIHBhdGNoIGlzIHN3aXRjaGluZyBpdCBvdmVyIHRvIHVzZSBgdm1hbGxvY2AgaW5zdGVhZCBvZiBgYnBmX2ppdF9hbGxvY19leGVjYC4gVGhpcyBpcyBhIHByZXR0eSBzaWduaWZpY2FudCBhbHRlcmF0aW9uLCBhcyBgdm1hbGxvY2AgaGFzIGRpZmZlcmVudCBhbGxvY2F0aW9uIHNlbWFudGljcyBhbmQgbWVtb3J5IG1hcHBpbmcgY2hhcmFjdGVyaXN0aWNzLiBJIG5lZWQgdG8gZGlnIGRlZXBlciBpbnRvIHRoZSByYXRpb25hbGUgaGVyZS4gVGhlIGltcGxpY2F0aW9ucyBjb3VsZCBiZSBicm9hZCwgcG90ZW50aWFsbHkgaW1wYWN0aW5nIHBlcmZvcm1hbmNlLCBzZWN1cml0eSwgb3IgZXZlbiBob3cgQlBGIHByb2dyYW1zIGFyZSBkeW5hbWljYWxseSBsb2FkZWQgYW5kIGV4ZWN1dGVkLiBMZXQmIzM5O3Mgc3RhcnQgYnkgc2NydXRpbml6aW5nIHRoZSBjaGFuZ2VzIGluIGBicGZfZGlzcGF0Y2hlcl9jaGFuZ2VfcHJvZ2AgdG8gdW5kZXJzdGFuZCB0aGUgaW50ZW50IGFuZCBwb3RlbnRpYWwgY29uc2VxdWVuY2VzIG9mIHRoaXMgYHZtYWxsb2NgIHNoaWZ0LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yNiAyMDoyNTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDticGZfZGlzcGF0Y2hlcl9jaGFuZ2VfcHJvZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtpbmNsdWRlL2xpbnV4L2JwZi5oPTE1MjU9aW50IGJwZl90cmFtcG9saW5lX211bHRpX2RldGFjaChzdHJ1Y3QgYnBmX3Byb2cgKnByb2csXG4tLVxuaW5jbHVkZS9saW51eC9icGYuaC0xNTkwLSNkZWZpbmUgQlBGX0RJU1BBVENIRVJfUFRSKG5hbWUpIChcdTAwMjZicGZfZGlzcGF0Y2hlcl8jI25hbWUpXG5pbmNsdWRlL2xpbnV4L2JwZi5oOjE1OTE6dm9pZCBicGZfZGlzcGF0Y2hlcl9jaGFuZ2VfcHJvZyhzdHJ1Y3QgYnBmX2Rpc3BhdGNoZXIgKmQsIHN0cnVjdCBicGZfcHJvZyAqZnJvbSxcbmluY2x1ZGUvbGludXgvYnBmLmgtMTU5Mi1cdFx0XHRcdHN0cnVjdCBicGZfcHJvZyAqdG8pO1xuLS1cbmluY2x1ZGUvbGludXgvYnBmLmg9MTYyND1zdGF0aWMgaW5saW5lIHZvaWQgYnBmX3RyYW1wb2xpbmVfcHV0KHN0cnVjdCBicGZfdHJhbXBvbGluZSAqdHIpIHt9XG4tLVxuaW5jbHVkZS9saW51eC9icGYuaC0xNjI4LSNkZWZpbmUgQlBGX0RJU1BBVENIRVJfUFRSKG5hbWUpIE5VTExcbmluY2x1ZGUvbGludXgvYnBmLmg6MTYyOTpzdGF0aWMgaW5saW5lIHZvaWQgYnBmX2Rpc3BhdGNoZXJfY2hhbmdlX3Byb2coc3RydWN0IGJwZl9kaXNwYXRjaGVyICpkLFxuaW5jbHVkZS9saW51eC9icGYuaC0xNjMwLVx0XHRcdFx0XHQgICAgICBzdHJ1Y3QgYnBmX3Byb2cgKmZyb20sXG4tLVxua2VybmVsL2JwZi9kaXNwYXRjaGVyLmM9MTA2PXN0YXRpYyB2b2lkIGJwZl9kaXNwYXRjaGVyX3VwZGF0ZShzdHJ1Y3QgYnBmX2Rpc3BhdGNoZXIgKmQsIGludCBwcmV2X251bV9wcm9ncylcbi0tXG5rZXJuZWwvYnBmL2Rpc3BhdGNoZXIuYy0xMzYtXG5rZXJuZWwvYnBmL2Rpc3BhdGNoZXIuYzoxMzc6dm9pZCBicGZfZGlzcGF0Y2hlcl9jaGFuZ2VfcHJvZyhzdHJ1Y3QgYnBmX2Rpc3BhdGNoZXIgKmQsIHN0cnVjdCBicGZfcHJvZyAqZnJvbSxcbmtlcm5lbC9icGYvZGlzcGF0Y2hlci5jLTEzOC1cdFx0XHRcdHN0cnVjdCBicGZfcHJvZyAqdG8pXG4tLVxubmV0L2NvcmUvZmlsdGVyLmM9MTIwMjY9dm9pZCBicGZfcHJvZ19jaGFuZ2VfeGRwKHN0cnVjdCBicGZfcHJvZyAqcHJldl9wcm9nLCBzdHJ1Y3QgYnBmX3Byb2cgKnByb2cpXG5uZXQvY29yZS9maWx0ZXIuYy0xMjAyNy17XG5uZXQvY29yZS9maWx0ZXIuYzoxMjAyODpcdGJwZl9kaXNwYXRjaGVyX2NoYW5nZV9wcm9nKEJQRl9ESVNQQVRDSEVSX1BUUih4ZHApLCBwcmV2X3Byb2csIHByb2cpO1xubmV0L2NvcmUvZmlsdGVyLmMtMTIwMjktfVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yNiAyMDoyNTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMTM0NwoJCQkJCQkJb3V0cHV0OiAyNAoJCQkJCQkJdGhvdWdodHM6IDUyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBteSBvd24gbWVudGFsIHByb2Nlc3Npbmc6CgoqKkZvY3Vzc2luZyBvbiBGdXp6aW5nIFRhcmdldCBJZGVudGlmaWNhdGlvbioqCgpBbHJpZ2h0LCBsZXQmIzM5O3Mgc2VlLCBgYnBmX2Rpc3BhdGNoZXJfY2hhbmdlX3Byb2dgLi4uIHJpZ2h0LCB0aGF0IGdldHMgY2FsbGVkIGJ5IGBicGZfcHJvZ19jaGFuZ2VfeGRwYC4gSG1tLCB0aGF0IHN1Z2dlc3RzIGEgZGVmaW5pdGUgcG9pbnQgb2YgaW50ZXJlc3QgZm9yIGZ1enppbmchIEl0JiMzOTtzIGNsZWFybHkgYSByZWFjaGFibGUgY29kZSBwYXRoLCBzbyB0aGF0JiMzOTtzIGEgZ29vZCBzdGFydGluZyBwb2ludCB0byBkaWcgaW50by4gTm93LCBJIHNob3VsZCBwcm9iYWJseSBjaGVjayBgYnBmX2ppdF9tZW1faXNfcm94YC4uLiB0aGF0IGZ1bmN0aW9uJiMzOTtzIG9mdGVuIGFzc29jaWF0ZWQgd2l0aCBtZW1vcnkgcHJvdGVjdGlvbiBpc3N1ZXMuIEkmIzM5O2xsIG5lZWQgdG8gdW5kZXJzdGFuZCBob3cgdGhlc2UgcGllY2VzIGZpdCB0b2dldGhlciB0byBjcmFmdCBlZmZlY3RpdmUgZnV6emluZyBoYXJuZXNzZXMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI2IDIwOjI1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2JwZl9qaXRfbWVtX2lzX3JveCYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtrZXJuZWwvYnBmL2NvcmUuYz04ODk9c3RhdGljIExJU1RfSEVBRChwYWNrX2xpc3QpO1xuLS1cbmtlcm5lbC9icGYvY29yZS5jLTkwNi1cbmtlcm5lbC9icGYvY29yZS5jOjkwNzpzdGF0aWMgYm9vbCBicGZfaml0X21lbV9pc19yb3godm9pZClcbmtlcm5lbC9icGYvY29yZS5jLTkwOC17XG4tLVxua2VybmVsL2JwZi9jb3JlLmM9OTEyPXN0YXRpYyBzdHJ1Y3QgYnBmX3Byb2dfcGFjayAqYWxsb2NfbmV3X3BhY2soYnBmX2ppdF9maWxsX2hvbGVfdCBicGZfZmlsbF9pbGxfaW5zbnMpXG4tLVxua2VybmVsL2JwZi9jb3JlLmMtOTI0LVxua2VybmVsL2JwZi9jb3JlLmM6OTI1Olx0aWYgKCFicGZfaml0X21lbV9pc19yb3goKSkge1xua2VybmVsL2JwZi9jb3JlLmMtOTI2LVx0XHRicGZfZmlsbF9pbGxfaW5zbnMocGFjay1cdTAwM2VwdHIsIEJQRl9QUk9HX1BBQ0tfU0laRSk7XG4tLVxua2VybmVsL2JwZi9jb3JlLmM9OTQyPXZvaWQgKmJwZl9wcm9nX3BhY2tfYWxsb2ModTMyIHNpemUsIGJwZl9qaXRfZmlsbF9ob2xlX3QgYnBmX2ZpbGxfaWxsX2luc25zKVxuLS1cbmtlcm5lbC9icGYvY29yZS5jLTk1Mi1cdFx0cHRyID0gYnBmX2ppdF9hbGxvY19leGVjKHNpemUpO1xua2VybmVsL2JwZi9jb3JlLmM6OTUzOlx0XHRpZiAocHRyIFx1MDAyNlx1MDAyNiAhYnBmX2ppdF9tZW1faXNfcm94KCkpIHtcbmtlcm5lbC9icGYvY29yZS5jLTk1NC1cdFx0XHRpbnQgZXJyO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yNiAyMDoyNTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMTkzNAoJCQkJCQkJb3V0cHV0OiAyMQoJCQkJCQkJdGhvdWdodHM6IDE4OQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIEJQRiBKSVQgTWVtb3J5IEFsbG9jYXRpb24gUGF0Y2gqKgoKT2theSwgc28gdGhpcyBwYXRjaCBpcyBjbGVhcmx5IGZvY3VzZWQgb24gaG93IEJQRiBKSVQgbWVtb3J5IGlzIGFsbG9jYXRlZCBhbmQgbWFuYWdlZCwgc3BlY2lmaWNhbGx5IHRhcmdldGluZyB0aGUgaW50ZXJhY3Rpb24gYmV0d2VlbiBgYWxsb2NfbmV3X3BhY2tgLCBgYnBmX3Byb2dfcGFja19hbGxvY2AsIGFuZCB0aGUgbWVtb3J5IHByb3RlY3Rpb24gbWVjaGFuaXNtcy4gVGhlIGNvbmRpdGlvbmFsIGNhbGwgdG8gYHNldF9tZW1vcnlfcm94YCBiYXNlZCBvbiBgYnBmX2ppdF9tZW1faXNfcm94KClgIGlzIHRoZSBnaXZlYXdheSDigJMgdGhpcyBpcyBhbGwgYWJvdXQgbWFraW5nIHRoZSBKSVQmIzM5O2QgY29kZSByZWFkLW9ubHkgd2hlcmUgYXBwcm9wcmlhdGUuCgpNeSBwcmltYXJ5IGFyZWFzIG9mIGludGVyZXN0IHdpdGhpbiB0aGUgY29kZSBhcmUsIG5hdHVyYWxseSwgdGhlc2Uga2V5IHN5bWJvbHM6IGBicGZfaml0X2FsbG9jX2V4ZWNgLCBgYnBmX2ppdF9hbGxvY19leGVjX3J3YCwgYGJwZl9wcm9nX3BhY2tfYWxsb2NgLCBgYWxsb2NfbmV3X3BhY2tgLCBhbmQgYGJwZl9kaXNwYXRjaGVyX2NoYW5nZV9wcm9nYC4gSSYjMzk7bGwgbmVlZCB0byB1bmRlcnN0YW5kIGV4YWN0bHkgaG93IHRoZXNlIGZ1bmN0aW9ucyBpbnRlcmFjdCBhbmQgd2hlcmUgdGhpcyBgc2V0X21lbW9yeV9yb3hgIGNhbGwgZml0cyBpbiB0aGUgb3ZlcmFsbCBwaWN0dXJlIG9mIGNvZGUgZ2VuZXJhdGlvbiBhbmQgZXhlY3V0aW9uLgoKTm93LCBsZXQmIzM5O3Mgc2VlIGFib3V0IHJlbGV2YW50IGNvbmZpZ3VyYXRpb25zLiBgQ09ORklHX0JQRl9KSVRgIGlzIGEgZ2l2ZW47IHdpdGhvdXQgaXQsIHRoZSBKSVQgaXNuJiMzOTt0IGV2ZW4gZW5hYmxlZCwgYW5kIHRoaXMgcGF0Y2ggd291bGQgYmUgbW9vdC4gSG93ZXZlciwgdGhlIHVzZSBvZiBgQ09ORklHX0JQRl9TWVNDQUxMYCB3aWxsIHRlbGwgbWUgaWYgdGhlIG1vZGlmaWNhdGlvbnMgd291bGQgYWxzbyBhZmZlY3Qgc3lzY2FsbCBCUEYgcHJvZ3JhbXMuIEkmIzM5O2xsIG5lZWQgdG8gZGVsdmUgaW50byB0aGUgY29kZSB0byBkZXRlcm1pbmUgd2hldGhlciB0aGUgcGF0Y2ggdG91Y2hlcyBhcmVhcyBvZiBjb2RlIGFzc29jaWF0ZWQgd2l0aCBzeXNjYWxsIEJQRiBwcm9ncmFtcywgd2hpY2ggd291bGQgaW5mb3JtIG1lIGFib3V0IHRoZSBwb3RlbnRpYWwgc2NvcGUgb2YgdGhpcyBjaGFuZ2UuIEkmIzM5O2xsIHN0YXJ0IGJ5IGNoZWNraW5nIGBrZXJuZWwvYnBmL2NvcmUuY2AgYW5kIGBrZXJuZWwvYnBmL2Rpc3BhdGNoZXIuY2AsIHRoYXQmIzM5O3MgdXN1YWxseSB3aGVyZSB0aGUgQlBGIGNvcmUgZnVuY3Rpb25hbGl0eSBhbmQgdGhlIGRpc3BhdGNoaW5nIGxvZ2ljIHJlc2lkZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjYgMjA6MjY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Q09ORklHX0JQRl9KSVQmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7RG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL2ZpbHRlci5yc3Q9NTE2PVBvd2VyUEMsIEFSTSwgQVJNNjQsIE1JUFMsIFJJU0MtViwgczM5MCwgYW5kIEFSQyBhbmQgY2FuIGJlIGVuYWJsZWQgdGhyb3VnaFxuRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL2ZpbHRlci5yc3Q6NTE3OkNPTkZJR19CUEZfSklULiBUaGUgSklUIGNvbXBpbGVyIGlzIHRyYW5zcGFyZW50bHkgaW52b2tlZCBmb3IgZWFjaFxuRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL2ZpbHRlci5yc3QtNTE4LWF0dGFjaGVkIGZpbHRlciBmcm9tIHVzZXIgc3BhY2Ugb3IgZm9yIGludGVybmFsIGtlcm5lbCB1c2VycyBpZiBpdCBoYXNcbi0tXG5Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvZmlsdGVyLnJzdD01Mjg9RXhhbXBsZSBvdXRwdXQgZnJvbSBkbWVzZzo6XG4tLVxuRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL2ZpbHRlci5yc3QtNTM2LVxuRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL2ZpbHRlci5yc3Q6NTM3OldoZW4gQ09ORklHX0JQRl9KSVRfQUxXQVlTX09OIGlzIGVuYWJsZWQsIGJwZl9qaXRfZW5hYmxlIGlzIHBlcm1hbmVudGx5IHNldCB0byAxIGFuZFxuRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL2ZpbHRlci5yc3QtNTM4LXNldHRpbmcgYW55IG90aGVyIHZhbHVlIHRoYW4gdGhhdCB3aWxsIHJldHVybiBpbiBmYWlsdXJlLiBUaGlzIGlzIGV2ZW4gdGhlIGNhc2UgZm9yXG4tLVxuRG9jdW1lbnRhdGlvbi9zY2hlZHVsZXIvc2NoZWQtZXh0LnJzdD0zNT1vcHRpb25zIHNob3VsZCBiZSBlbmFibGVkIHRvIHVzZSBzY2hlZF9leHQ6XG4tLVxuRG9jdW1lbnRhdGlvbi9zY2hlZHVsZXIvc2NoZWQtZXh0LnJzdC00MS0gICAgQ09ORklHX0JQRl9TWVNDQUxMPXlcbkRvY3VtZW50YXRpb24vc2NoZWR1bGVyL3NjaGVkLWV4dC5yc3Q6NDI6ICAgIENPTkZJR19CUEZfSklUPXlcbkRvY3VtZW50YXRpb24vc2NoZWR1bGVyL3NjaGVkLWV4dC5yc3QtNDMtICAgIENPTkZJR19ERUJVR19JTkZPX0JURj15XG5Eb2N1bWVudGF0aW9uL3NjaGVkdWxlci9zY2hlZC1leHQucnN0OjQ0OiAgICBDT05GSUdfQlBGX0pJVF9BTFdBWVNfT049eVxuRG9jdW1lbnRhdGlvbi9zY2hlZHVsZXIvc2NoZWQtZXh0LnJzdDo0NTogICAgQ09ORklHX0JQRl9KSVRfREVGQVVMVF9PTj15XG5Eb2N1bWVudGF0aW9uL3NjaGVkdWxlci9zY2hlZC1leHQucnN0LTQ2LVxuLS1cbmFyY2gvYXJjL25ldC9NYWtlZmlsZT0zPWlmZXEgKCQoQ09ORklHX0lTQV9BUkNWMikseSlcbmFyY2gvYXJjL25ldC9NYWtlZmlsZTo0Olx0b2JqLSQoQ09ORklHX0JQRl9KSVQpICYjNDM7PSBicGZfaml0X2NvcmUub1xuYXJjaC9hcmMvbmV0L01ha2VmaWxlOjU6XHRvYmotJChDT05GSUdfQlBGX0pJVCkgJiM0Mzs9IGJwZl9qaXRfYXJjdjIub1xuYXJjaC9hcmMvbmV0L01ha2VmaWxlLTYtZW5kaWZcbi0tXG5hcmNoL2FybS9uZXQvTWFrZWZpbGUtMy1cbmFyY2gvYXJtL25ldC9NYWtlZmlsZTo0Om9iai0kKENPTkZJR19CUEZfSklUKSAmIzQzOz0gYnBmX2ppdF8zMi5vXG4tLVxuYXJjaC9hcm02NC9jb25maWdzL2RlZmNvbmZpZz02PUNPTkZJR19CUEZfU1lTQ0FMTD15XG5hcmNoL2FybTY0L2NvbmZpZ3MvZGVmY29uZmlnOjc6Q09ORklHX0JQRl9KSVQ9eVxuYXJjaC9hcm02NC9jb25maWdzL2RlZmNvbmZpZy04LUNPTkZJR19QUkVFTVBUPXlcbi0tXG5hcmNoL2FybTY0L2luY2x1ZGUvYXNtL2V4dGFibGUuaD0zNj1ib29sIGluc25fbWF5X2FjY2Vzc191c2VyKHVuc2lnbmVkIGxvbmcgYWRkciwgdW5zaWduZWQgbG9uZyBlc3IpO1xuYXJjaC9hcm02NC9pbmNsdWRlL2FzbS9leHRhYmxlLmgtMzctXG5hcmNoL2FybTY0L2luY2x1ZGUvYXNtL2V4dGFibGUuaDozODojaWZkZWYgQ09ORklHX0JQRl9KSVRcbmFyY2gvYXJtNjQvaW5jbHVkZS9hc20vZXh0YWJsZS5oLTM5LWJvb2wgZXhfaGFuZGxlcl9icGYoY29uc3Qgc3RydWN0IGV4Y2VwdGlvbl90YWJsZV9lbnRyeSAqZXgsXG5hcmNoL2FybTY0L2luY2x1ZGUvYXNtL2V4dGFibGUuaC00MC1cdFx0ICAgIHN0cnVjdCBwdF9yZWdzICpyZWdzKTtcbmFyY2gvYXJtNjQvaW5jbHVkZS9hc20vZXh0YWJsZS5oOjQxOiNlbHNlIC8qICFDT05GSUdfQlBGX0pJVCAqL1xuYXJjaC9hcm02NC9pbmNsdWRlL2FzbS9leHRhYmxlLmgtNDItc3RhdGljIGlubGluZVxuYXJjaC9hcm02NC9pbmNsdWRlL2FzbS9leHRhYmxlLmg9NDM9Ym9vbCBleF9oYW5kbGVyX2JwZihjb25zdCBzdHJ1Y3QgZXhjZXB0aW9uX3RhYmxlX2VudHJ5ICpleCxcbi0tXG5hcmNoL2FybTY0L2luY2x1ZGUvYXNtL2V4dGFibGUuaC00Ny19XG5hcmNoL2FybTY0L2luY2x1ZGUvYXNtL2V4dGFibGUuaDo0ODojZW5kaWYgLyogIUNPTkZJR19CUEZfSklUICovXG5hcmNoL2FybTY0L2luY2x1ZGUvYXNtL2V4dGFibGUuaC00OS1cbi0tXG5hcmNoL2FybTY0L25ldC9NYWtlZmlsZS00LSNcbmFyY2gvYXJtNjQvbmV0L01ha2VmaWxlOjU6b2JqLSQoQ09ORklHX0JQRl9KSVQpICYjNDM7PSBicGZfaml0X2NvbXAubyBicGZfdGltZWRfbWF5X2dvdG8ub1xuLS1cbmFyY2gvbG9vbmdhcmNoL2NvbmZpZ3MvbG9vbmdzb242NF9kZWZjb25maWc9Nz1DT05GSUdfQlBGX1NZU0NBTEw9eVxuYXJjaC9sb29uZ2FyY2gvY29uZmlncy9sb29uZ3NvbjY0X2RlZmNvbmZpZzo4OkNPTkZJR19CUEZfSklUPXlcbmFyY2gvbG9vbmdhcmNoL2NvbmZpZ3MvbG9vbmdzb242NF9kZWZjb25maWctOS1DT05GSUdfUFJFRU1QVD15XG4tLVxuYXJjaC9sb29uZ2FyY2gvaW5jbHVkZS9hc20vZXh0YWJsZS5oPTI2PWRvIHtcdFx0XHRcdFx0XHRcdFxcXG4tLVxuYXJjaC9sb29uZ2FyY2gvaW5jbHVkZS9hc20vZXh0YWJsZS5oLTM0LVxuYXJjaC9sb29uZ2FyY2gvaW5jbHVkZS9hc20vZXh0YWJsZS5oOjM1OiNpZmRlZiBDT05GSUdfQlBGX0pJVFxuYXJjaC9sb29uZ2FyY2gvaW5jbHVkZS9hc20vZXh0YWJsZS5oLTM2LWJvb2wgZXhfaGFuZGxlcl9icGYoY29uc3Qgc3RydWN0IGV4Y2VwdGlvbl90YWJsZV9lbnRyeSAqZXgsIHN0cnVjdCBwdF9yZWdzICpyZWdzKTtcbi0tXG5hcmNoL2xvb25nYXJjaC9pbmNsdWRlL2FzbS9leHRhYmxlLmg9Mzk9Ym9vbCBleF9oYW5kbGVyX2JwZihjb25zdCBzdHJ1Y3QgZXhjZXB0aW9uX3RhYmxlX2VudHJ5ICpleCwgc3RydWN0IHB0X3JlZ3MgKnJlZ3MpXG4tLVxuYXJjaC9sb29uZ2FyY2gvaW5jbHVkZS9hc20vZXh0YWJsZS5oLTQyLX1cbmFyY2gvbG9vbmdhcmNoL2luY2x1ZGUvYXNtL2V4dGFibGUuaDo0MzojZW5kaWYgLyogIUNPTkZJR19CUEZfSklUICovXG5hcmNoL2xvb25nYXJjaC9pbmNsdWRlL2FzbS9leHRhYmxlLmgtNDQtXG4tLVxuYXJjaC9sb29uZ2FyY2gvbmV0L01ha2VmaWxlLTYtI1xuYXJjaC9sb29uZ2FyY2gvbmV0L01ha2VmaWxlOjc6b2JqLSQoQ09ORklHX0JQRl9KSVQpICYjNDM7PSBicGZfaml0Lm9cbi0tXG5hcmNoL21pcHMvY29uZmlncy9sb29uZ3NvbjNfZGVmY29uZmlnPTg9Q09ORklHX0JQRl9TWVNDQUxMPXlcbmFyY2gvbWlwcy9jb25maWdzL2xvb25nc29uM19kZWZjb25maWc6OTpDT05GSUdfQlBGX0pJVD15XG5hcmNoL21pcHMvY29uZmlncy9sb29uZ3NvbjNfZGVmY29uZmlnLTEwLUNPTkZJR19QUkVFTVBUPXlcbi0tXG5hcmNoL21pcHMvbmV0L01ha2VmaWxlLTMtXG5hcmNoL21pcHMvbmV0L01ha2VmaWxlOjQ6b2JqLSQoQ09ORklHX0JQRl9KSVQpICYjNDM7PSBicGZfaml0X2NvbXAub1xuYXJjaC9taXBzL25ldC9NYWtlZmlsZS01LVxuYXJjaC9taXBzL25ldC9NYWtlZmlsZT02PWlmZXEgKCQoQ09ORklHXzMyQklUKSx5KVxuYXJjaC9taXBzL25ldC9NYWtlZmlsZTo3OiAgICAgICAgb2JqLSQoQ09ORklHX0JQRl9KSVQpICYjNDM7PSBicGZfaml0X2NvbXAzMi5vXG5hcmNoL21pcHMvbmV0L01ha2VmaWxlLTgtZWxzZVxuYXJjaC9taXBzL25ldC9NYWtlZmlsZTo5OiAgICAgICAgb2JqLSQoQ09ORklHX0JQRl9KSVQpICYjNDM7PSBicGZfaml0X2NvbXA2NC5vXG5hcmNoL21pcHMvbmV0L01ha2VmaWxlLTEwLWVuZGlmXG4tLVxuYXJjaC9wYXJpc2MvbmV0L01ha2VmaWxlLTItXG5hcmNoL3BhcmlzYy9uZXQvTWFrZWZpbGU6MzpvYmotJChDT05GSUdfQlBGX0pJVCkgJiM0Mzs9IGJwZl9qaXRfY29yZS5vXG5hcmNoL3BhcmlzYy9uZXQvTWFrZWZpbGUtNC1cbmFyY2gvcGFyaXNjL25ldC9NYWtlZmlsZT01PWlmZXEgKCQoQ09ORklHXzY0QklUKSx5KVxuYXJjaC9wYXJpc2MvbmV0L01ha2VmaWxlOjY6XHRvYmotJChDT05GSUdfQlBGX0pJVCkgJiM0Mzs9IGJwZl9qaXRfY29tcDY0Lm9cbmFyY2gvcGFyaXNjL25ldC9NYWtlZmlsZS03LWVsc2VcbmFyY2gvcGFyaXNjL25ldC9NYWtlZmlsZTo4Olx0b2JqLSQoQ09ORklHX0JQRl9KSVQpICYjNDM7PSBicGZfaml0X2NvbXAzMi5vXG5hcmNoL3BhcmlzYy9uZXQvTWFrZWZpbGUtOS1lbmRpZlxuLS1cbmFyY2gvcG93ZXJwYy9jb25maWdzL21wYzg4NV9hZHNfZGVmY29uZmlnPTQ9Q09ORklHX0hJR0hfUkVTX1RJTUVSUz15XG5hcmNoL3Bvd2VycGMvY29uZmlncy9tcGM4ODVfYWRzX2RlZmNvbmZpZzo1OkNPTkZJR19CUEZfSklUPXlcbmFyY2gvcG93ZXJwYy9jb25maWdzL21wYzg4NV9hZHNfZGVmY29uZmlnLTYtQ09ORklHX1ZJUlRfQ1BVX0FDQ09VTlRJTkdfTkFUSVZFPXlcbi0tXG5hcmNoL3Bvd2VycGMvY29uZmlncy9wb3dlcm52X2RlZmNvbmZpZz05ND1DT05GSUdfRE5TX1JFU09MVkVSPXlcbmFyY2gvcG93ZXJwYy9jb25maWdzL3Bvd2VybnZfZGVmY29uZmlnOjk1OkNPTkZJR19CUEZfSklUPXlcbmFyY2gvcG93ZXJwYy9jb25maWdzL3Bvd2VybnZfZGVmY29uZmlnLTk2LSMgQ09ORklHX1dJUkVMRVNTIGlzIG5vdCBzZXRcbi0tXG5hcmNoL3Bvd2VycGMvY29uZmlncy9wcGM2NF9kZWZjb25maWc9Nz1DT05GSUdfQlBGX1NZU0NBTEw9eVxuYXJjaC9wb3dlcnBjL2NvbmZpZ3MvcHBjNjRfZGVmY29uZmlnOjg6Q09ORklHX0JQRl9KSVQ9eVxuYXJjaC9wb3dlcnBjL2NvbmZpZ3MvcHBjNjRfZGVmY29uZmlnLTktQ09ORklHX0JQRl9MU009eVxuLS1cbmFyY2gvcG93ZXJwYy9uZXQvTWFrZWZpbGUtNC0jXG5hcmNoL3Bvd2VycGMvbmV0L01ha2VmaWxlOjU6b2JqLSQoQ09ORklHX0JQRl9KSVQpICYjNDM7PSBicGZfaml0X2NvbXAubyBicGZfaml0X2NvbXAkKEJJVFMpLm9cbmFyY2gvcG93ZXJwYy9uZXQvTWFrZWZpbGUtNi1cbmFyY2gvcG93ZXJwYy9uZXQvTWFrZWZpbGU9Nz1pZmRlZiBDT05GSUdfUFBDNjRcbmFyY2gvcG93ZXJwYy9uZXQvTWFrZWZpbGU6ODpvYmotJChDT05GSUdfQlBGX0pJVCkgJiM0Mzs9IGJwZl90aW1lZF9tYXlfZ290by5vXG5hcmNoL3Bvd2VycGMvbmV0L01ha2VmaWxlLTktZW5kaWZcbi0tXG5hcmNoL3Jpc2N2L2luY2x1ZGUvYXNtL2V4dGFibGUuaD0zOD1zdGF0aWMgaW5saW5lIGJvb2wgZml4dXBfZXhjZXB0aW9uKHN0cnVjdCBwdF9yZWdzICpyZWdzKSB7IHJldHVybiBmYWxzZTsgfVxuLS1cbmFyY2gvcmlzY3YvaW5jbHVkZS9hc20vZXh0YWJsZS5oLTQwLVxuYXJjaC9yaXNjdi9pbmNsdWRlL2FzbS9leHRhYmxlLmg6NDE6I2lmIGRlZmluZWQoQ09ORklHX0JQRl9KSVQpIFx1MDAyNlx1MDAyNiBkZWZpbmVkKENPTkZJR19BUkNIX1JWNjRJKVxuYXJjaC9yaXNjdi9pbmNsdWRlL2FzbS9leHRhYmxlLmgtNDItYm9vbCBleF9oYW5kbGVyX2JwZihjb25zdCBzdHJ1Y3QgZXhjZXB0aW9uX3RhYmxlX2VudHJ5ICpleCwgc3RydWN0IHB0X3JlZ3MgKnJlZ3MpO1xuLS1cbmFyY2gvcmlzY3YvbmV0L01ha2VmaWxlLTItXG5hcmNoL3Jpc2N2L25ldC9NYWtlZmlsZTozOm9iai0kKENPTkZJR19CUEZfSklUKSAmIzQzOz0gYnBmX2ppdF9jb3JlLm9cbmFyY2gvcmlzY3YvbmV0L01ha2VmaWxlLTQtXG5hcmNoL3Jpc2N2L25ldC9NYWtlZmlsZT01PWlmZXEgKCQoQ09ORklHX0FSQ0hfUlY2NEkpLHkpXG5hcmNoL3Jpc2N2L25ldC9NYWtlZmlsZTo2Olx0b2JqLSQoQ09ORklHX0JQRl9KSVQpICYjNDM7PSBicGZfaml0X2NvbXA2NC5vXG5hcmNoL3Jpc2N2L25ldC9NYWtlZmlsZS03LWVsc2VcbmFyY2gvcmlzY3YvbmV0L01ha2VmaWxlOjg6XHRvYmotJChDT05GSUdfQlBGX0pJVCkgJiM0Mzs9IGJwZl9qaXRfY29tcDMyLm9cbmFyY2gvcmlzY3YvbmV0L01ha2VmaWxlLTktZW5kaWZcbi0tXG5hcmNoL3MzOTAvY29uZmlncy9kZWJ1Z19kZWZjb25maWc9OT1DT05GSUdfQlBGX1NZU0NBTEw9eVxuYXJjaC9zMzkwL2NvbmZpZ3MvZGVidWdfZGVmY29uZmlnOjEwOkNPTkZJR19CUEZfSklUPXlcbmFyY2gvczM5MC9jb25maWdzL2RlYnVnX2RlZmNvbmZpZzoxMTpDT05GSUdfQlBGX0pJVF9BTFdBWVNfT049eVxuYXJjaC9zMzkwL2NvbmZpZ3MvZGVidWdfZGVmY29uZmlnLTEyLUNPTkZJR19CUEZfTFNNPXlcbi0tXG5hcmNoL3MzOTAvY29uZmlncy9kZWZjb25maWc9OD1DT05GSUdfQlBGX1NZU0NBTEw9eVxuYXJjaC9zMzkwL2NvbmZpZ3MvZGVmY29uZmlnOjk6Q09ORklHX0JQRl9KSVQ9eVxuYXJjaC9zMzkwL2NvbmZpZ3MvZGVmY29uZmlnOjEwOkNPTkZJR19CUEZfSklUX0FMV0FZU19PTj15XG5hcmNoL3MzOTAvY29uZmlncy9kZWZjb25maWctMTEtQ09ORklHX0JQRl9MU009eVxuLS1cbmFyY2gvczM5MC9pbmNsdWRlL2FzbS9leHRhYmxlLmg9NDM9c3RhdGljIGlubGluZSB2b2lkIHN3YXBfZXhfZW50cnlfZml4dXAoc3RydWN0IGV4Y2VwdGlvbl90YWJsZV9lbnRyeSAqYSxcbi0tXG5hcmNoL3MzOTAvaW5jbHVkZS9hc20vZXh0YWJsZS5oLTU2LVxuYXJjaC9zMzkwL2luY2x1ZGUvYXNtL2V4dGFibGUuaDo1NzojaWZkZWYgQ09ORklHX0JQRl9KSVRcbmFyY2gvczM5MC9pbmNsdWRlL2FzbS9leHRhYmxlLmgtNTgtXG5hcmNoL3MzOTAvaW5jbHVkZS9hc20vZXh0YWJsZS5oPTU5PWJvb2wgZXhfaGFuZGxlcl9icGYoY29uc3Qgc3RydWN0IGV4Y2VwdGlvbl90YWJsZV9lbnRyeSAqZXgsIHN0cnVjdCBwdF9yZWdzICpyZWdzKTtcbmFyY2gvczM5MC9pbmNsdWRlL2FzbS9leHRhYmxlLmgtNjAtXG5hcmNoL3MzOTAvaW5jbHVkZS9hc20vZXh0YWJsZS5oOjYxOiNlbHNlIC8qICFDT05GSUdfQlBGX0pJVCAqL1xuYXJjaC9zMzkwL2luY2x1ZGUvYXNtL2V4dGFibGUuaC02Mi1cbmFyY2gvczM5MC9pbmNsdWRlL2FzbS9leHRhYmxlLmg9NjM9c3RhdGljIGlubGluZSBib29sIGV4X2hhbmRsZXJfYnBmKGNvbnN0IHN0cnVjdCBleGNlcHRpb25fdGFibGVfZW50cnkgKmV4LCBzdHJ1Y3QgcHRfcmVncyAqcmVncylcbi0tXG5hcmNoL3MzOTAvaW5jbHVkZS9hc20vZXh0YWJsZS5oLTY3LVxuYXJjaC9zMzkwL2luY2x1ZGUvYXNtL2V4dGFibGUuaDo2ODojZW5kaWYgLyogQ09ORklHX0JQRl9KSVQgKi9cbmFyY2gvczM5MC9pbmNsdWRlL2FzbS9leHRhYmxlLmgtNjktXG4tLVxuYXJjaC9zMzkwL25ldC9NYWtlZmlsZS00LSNcbmFyY2gvczM5MC9uZXQvTWFrZWZpbGU6NTpvYmotJChDT05GSUdfQlBGX0pJVCkgJiM0Mzs9IGJwZl9qaXRfY29tcC5vIGJwZl90aW1lZF9tYXlfZ290by5vXG5hcmNoL3MzOTAvbmV0L01ha2VmaWxlLTYtb2JqLSQoQ09ORklHX0hBVkVfUE5FVElEKSAmIzQzOz0gcG5ldC5vXG4tLVxuYXJjaC9zcGFyYy9uZXQvTWFrZWZpbGUtNC0jXG5hcmNoL3NwYXJjL25ldC9NYWtlZmlsZTo1Om9iai0kKENPTkZJR19CUEZfSklUKSAmIzQzOz0gYnBmX2ppdF9jb21wXyQoQklUUykub1xuYXJjaC9zcGFyYy9uZXQvTWFrZWZpbGUtNi1pZmVxICgkKEJJVFMpLDMyKVxuYXJjaC9zcGFyYy9uZXQvTWFrZWZpbGU6NzpvYmotJChDT05GSUdfQlBGX0pJVCkgJiM0Mzs9IGJwZl9qaXRfYXNtXzMyLm9cbmFyY2gvc3BhcmMvbmV0L01ha2VmaWxlLTgtZW5kaWZcbi0tXG5hcmNoL3g4Ni9pbmNsdWRlL2FzbS9leHRhYmxlLmg9NDY9c3RhdGljIGlubGluZSB2b2lkIF9fbm9yZXR1cm4gZXhfaGFuZGxlcl9tc3JfbWNlKHN0cnVjdCBwdF9yZWdzICpyZWdzLCBib29sIHdybXNyKVxuLS1cbmFyY2gveDg2L2luY2x1ZGUvYXNtL2V4dGFibGUuaC01Mi1cbmFyY2gveDg2L2luY2x1ZGUvYXNtL2V4dGFibGUuaDo1MzojaWYgZGVmaW5lZChDT05GSUdfQlBGX0pJVCkgXHUwMDI2XHUwMDI2IGRlZmluZWQoQ09ORklHX1g4Nl82NClcbmFyY2gveDg2L2luY2x1ZGUvYXNtL2V4dGFibGUuaC01NC1ib29sIGV4X2hhbmRsZXJfYnBmKGNvbnN0IHN0cnVjdCBleGNlcHRpb25fdGFibGVfZW50cnkgKngsIHN0cnVjdCBwdF9yZWdzICpyZWdzKTtcbi0tXG5hcmNoL3g4Ni9rZXJuZWwvY2FsbHRodW5rcy5jPTI2NT12b2lkICpjYWxsdGh1bmtzX3RyYW5zbGF0ZV9jYWxsX2Rlc3Qodm9pZCAqZGVzdClcbi0tXG5hcmNoL3g4Ni9rZXJuZWwvY2FsbHRodW5rcy5jLTI4MC1cbmFyY2gveDg2L2tlcm5lbC9jYWxsdGh1bmtzLmM6MjgxOiNpZmRlZiBDT05GSUdfQlBGX0pJVFxuYXJjaC94ODYva2VybmVsL2NhbGx0aHVua3MuYy0yODItc3RhdGljIGJvb2wgaXNfY2FsbHRodW5rKHZvaWQgKmFkZHIpXG4tLVxuYXJjaC94ODYva2VybmVsL3Vud2luZF9vcmMuYz0xODU9c3RhdGljIHN0cnVjdCBvcmNfZW50cnkgKm9yY19icGZfZmluZCh1bnNpZ25lZCBsb25nIGlwKVxuYXJjaC94ODYva2VybmVsL3Vud2luZF9vcmMuYy0xODYte1xuYXJjaC94ODYva2VybmVsL3Vud2luZF9vcmMuYzoxODc6I2lmZGVmIENPTkZJR19CUEZfSklUXG5hcmNoL3g4Ni9rZXJuZWwvdW53aW5kX29yYy5jLTE4OC1cdGlmIChicGZfaGFzX2ZyYW1lX3BvaW50ZXIoaXApKVxuLS1cbmFyY2gveDg2L25ldC9NYWtlZmlsZT02PWlmZXEgKCQoQ09ORklHX1g4Nl8zMikseSlcbmFyY2gveDg2L25ldC9NYWtlZmlsZTo3OiAgICAgICAgb2JqLSQoQ09ORklHX0JQRl9KSVQpICYjNDM7PSBicGZfaml0X2NvbXAzMi5vXG5hcmNoL3g4Ni9uZXQvTWFrZWZpbGUtOC1lbHNlXG5hcmNoL3g4Ni9uZXQvTWFrZWZpbGU6OTogICAgICAgIG9iai0kKENPTkZJR19CUEZfSklUKSAmIzQzOz0gYnBmX2ppdF9jb21wLm8gYnBmX3RpbWVkX21heV9nb3RvLm9cbmFyY2gveDg2L25ldC9NYWtlZmlsZS0xMC1lbmRpZlxuLS1cbmluY2x1ZGUvbGludXgvYnBmLmg9MTUwOT1zdHJ1Y3QgYnBmX3RyYWNpbmdfbXVsdGlfbGluaztcbmluY2x1ZGUvbGludXgvYnBmLmgtMTUxMC1cbmluY2x1ZGUvbGludXgvYnBmLmg6MTUxMTojaWZkZWYgQ09ORklHX0JQRl9KSVRcbmluY2x1ZGUvbGludXgvYnBmLmgtMTUxMi1pbnQgYnBmX3RyYW1wb2xpbmVfbGlua19wcm9nKHN0cnVjdCBicGZfdHJhbXBfbm9kZSAqbm9kZSxcbi0tXG5pbmNsdWRlL2xpbnV4L2JwZi5oPTIxOTM9c3RhdGljIGlubGluZSBib29sIGlzX3RyYWNpbmdfbXVsdGkoZW51bSBicGZfYXR0YWNoX3R5cGUgdHlwZSlcbi0tXG5pbmNsdWRlL2xpbnV4L2JwZi5oLTIxOTgtXG5pbmNsdWRlL2xpbnV4L2JwZi5oOjIxOTk6I2lmIGRlZmluZWQoQ09ORklHX0JQRl9KSVQpIFx1MDAyNlx1MDAyNiBkZWZpbmVkKENPTkZJR19CUEZfU1lTQ0FMTClcbmluY2x1ZGUvbGludXgvYnBmLmgtMjIwMC0vKiBUaGlzIG1hY3JvIGhlbHBzIGRldmVsb3BlciB0byByZWdpc3RlciBhIHN0cnVjdF9vcHMgdHlwZSBhbmQgZ2VuZXJhdGVcbi0tXG5pbmNsdWRlL2xpbnV4L2JwZi5oPTMwNDc9aW50IGJwZl9jaGVjayhzdHJ1Y3QgYnBmX3Byb2cgKipmcCwgdW5pb24gYnBmX2F0dHIgKmF0dHIsIGJwZnB0cl90IHVhdHRyLFxuLS1cbmluY2x1ZGUvbGludXgvYnBmLmgtMzA0OS1cbmluY2x1ZGUvbGludXgvYnBmLmg6MzA1MDojaWZuZGVmIENPTkZJR19CUEZfSklUX0FMV0FZU19PTlxuaW5jbHVkZS9saW51eC9icGYuaC0zMDUxLWludCBicGZfcGF0Y2hfY2FsbF9hcmdzKHN0cnVjdCBicGZfaW5zbiAqaW5zbiwgdTMyIHN0YWNrX2RlcHRoKTtcbi0tXG5pbmNsdWRlL2xpbnV4L2JwZl90eXBlcy5oPTY3PUJQRl9QUk9HX1RZUEUoQlBGX1BST0dfVFlQRV9TS19MT09LVVAsIHNrX2xvb2t1cCxcbi0tXG5pbmNsdWRlL2xpbnV4L2JwZl90eXBlcy5oLTY5LSNlbmRpZlxuaW5jbHVkZS9saW51eC9icGZfdHlwZXMuaDo3MDojaWYgZGVmaW5lZChDT05GSUdfQlBGX0pJVClcbmluY2x1ZGUvbGludXgvYnBmX3R5cGVzLmgtNzEtQlBGX1BST0dfVFlQRShCUEZfUFJPR19UWVBFX1NUUlVDVF9PUFMsIGJwZl9zdHJ1Y3Rfb3BzLFxuLS1cbmluY2x1ZGUvbGludXgvYnBmX3R5cGVzLmg9MTI4PUJQRl9NQVBfVFlQRShCUEZfTUFQX1RZUEVfU1RBQ0ssIHN0YWNrX21hcF9vcHMpXG5pbmNsdWRlL2xpbnV4L2JwZl90eXBlcy5oOjEyOTojaWYgZGVmaW5lZChDT05GSUdfQlBGX0pJVClcbmluY2x1ZGUvbGludXgvYnBmX3R5cGVzLmgtMTMwLUJQRl9NQVBfVFlQRShCUEZfTUFQX1RZUEVfU1RSVUNUX09QUywgYnBmX3N0cnVjdF9vcHNfbWFwX29wcylcbi0tXG5pbmNsdWRlL2xpbnV4L2J0Zi5oPTUzMj1zdHJ1Y3QgYnBmX3ZlcmlmaWVyX2xvZztcbmluY2x1ZGUvbGludXgvYnRmLmgtNTMzLVxuaW5jbHVkZS9saW51eC9idGYuaDo1MzQ6I2lmIGRlZmluZWQoQ09ORklHX0JQRl9KSVQpIFx1MDAyNlx1MDAyNiBkZWZpbmVkKENPTkZJR19CUEZfU1lTQ0FMTClcbmluY2x1ZGUvbGludXgvYnRmLmgtNTM1LXN0cnVjdCBicGZfc3RydWN0X29wcztcbi0tXG5pbmNsdWRlL2xpbnV4L2V4dGFibGUuaD0zMD1zZWFyY2hfbW9kdWxlX2V4dGFibGVzKHVuc2lnbmVkIGxvbmcgYWRkcilcbi0tXG5pbmNsdWRlL2xpbnV4L2V4dGFibGUuaC0zNS1cbmluY2x1ZGUvbGludXgvZXh0YWJsZS5oOjM2OiNpZmRlZiBDT05GSUdfQlBGX0pJVFxuaW5jbHVkZS9saW51eC9leHRhYmxlLmgtMzctY29uc3Qgc3RydWN0IGV4Y2VwdGlvbl90YWJsZV9lbnRyeSAqc2VhcmNoX2JwZl9leHRhYmxlcyh1bnNpZ25lZCBsb25nIGFkZHIpO1xuLS1cbmluY2x1ZGUvbGludXgvZmlsdGVyLmg9MTA5OD1zdGF0aWMgaW5saW5lIGludCBfX211c3RfY2hlY2sgYnBmX3Byb2dfbG9ja19ybyhzdHJ1Y3QgYnBmX3Byb2cgKmZwKVxuaW5jbHVkZS9saW51eC9maWx0ZXIuaC0xMDk5LXtcbmluY2x1ZGUvbGludXgvZmlsdGVyLmg6MTEwMDojaWZuZGVmIENPTkZJR19CUEZfSklUX0FMV0FZU19PTlxuaW5jbHVkZS9saW51eC9maWx0ZXIuaC0xMTAxLVx0aWYgKCFmcC1cdTAwM2VqaXRlZCkge1xuLS1cbmluY2x1ZGUvbGludXgvZmlsdGVyLmg9MTI5OT1icGZfcnVuX3NrX3JldXNlcG9ydChzdHJ1Y3Qgc29ja19yZXVzZXBvcnQgKnJldXNlLCBzdHJ1Y3Qgc29jayAqc2ssXG4tLVxuaW5jbHVkZS9saW51eC9maWx0ZXIuaC0xMzA3LVxuaW5jbHVkZS9saW51eC9maWx0ZXIuaDoxMzA4OiNpZmRlZiBDT05GSUdfQlBGX0pJVFxuaW5jbHVkZS9saW51eC9maWx0ZXIuaC0xMzA5LWV4dGVybiBpbnQgYnBmX2ppdF9lbmFibGU7XG4tLVxuaW5jbHVkZS9saW51eC9maWx0ZXIuaD0xNDQwPXZvaWQgYnBmX3Byb2dfa2FsbHN5bXNfZGVsKHN0cnVjdCBicGZfcHJvZyAqZnApO1xuaW5jbHVkZS9saW51eC9maWx0ZXIuaC0xNDQxLVxuaW5jbHVkZS9saW51eC9maWx0ZXIuaDoxNDQyOiNlbHNlIC8qIENPTkZJR19CUEZfSklUICovXG5pbmNsdWRlL2xpbnV4L2ZpbHRlci5oLTE0NDMtXG4tLVxuaW5jbHVkZS9saW51eC9maWx0ZXIuaD0xNTE4PXN0YXRpYyBpbmxpbmUgdm9pZCBicGZfaml0X3Byb2dfcmVsZWFzZV9vdGhlcihzdHJ1Y3QgYnBmX3Byb2cgKmZwLCBzdHJ1Y3QgYnBmX3Byb2cgKmZwX290aGVyKVxuLS1cbmluY2x1ZGUvbGludXgvZmlsdGVyLmgtMTUyMC19XG5pbmNsdWRlL2xpbnV4L2ZpbHRlci5oOjE1MjE6I2VuZGlmIC8qIENPTkZJR19CUEZfSklUICovXG5pbmNsdWRlL2xpbnV4L2ZpbHRlci5oLTE1MjItXG4tLVxua2VybmVsL2JwZi9LY29uZmlnPTU4PWNvbmZpZyBCUEZfSklUX0FMV0FZU19PTlxuLS1cbmtlcm5lbC9icGYvS2NvbmZpZy02NC1cbmtlcm5lbC9icGYvS2NvbmZpZzo2NTpcdCAgV2hlbiBDT05GSUdfQlBGX0pJVF9BTFdBWVNfT04gaXMgZW5hYmxlZCwgL3Byb2Mvc3lzL25ldC9jb3JlL2JwZl9qaXRfZW5hYmxlXG5rZXJuZWwvYnBmL0tjb25maWctNjYtXHQgIGlzIHBlcm1hbmVudGx5IHNldCB0byAxIGFuZCBzZXR0aW5nIGFueSBvdGhlciB2YWx1ZSB0aGFuIHRoYXQgd2lsbFxuLS1cbmtlcm5lbC9icGYvTWFrZWZpbGU9Mj1vYmoteSA6PSBjb3JlLm9cbmtlcm5lbC9icGYvTWFrZWZpbGU6MzppZm5lcSAoJChDT05GSUdfQlBGX0pJVF9BTFdBWVNfT04pLHkpXG5rZXJuZWwvYnBmL01ha2VmaWxlLTQtIyBfX19icGZfcHJvZ19ydW4oKSBuZWVkcyBHQ1NFIGRpc2FibGVkIG9uIHg4Njsgc2VlIDMxOTNjMDgzNmYyMDMgZm9yIGRldGFpbHNcbi0tXG5rZXJuZWwvYnBmL01ha2VmaWxlPTE2PW9iai0kKENPTkZJR19CUEZfU1lTQ0FMTCkgJiM0Mzs9IGRpc2FzbS5vIG1wcm9nLm9cbmtlcm5lbC9icGYvTWFrZWZpbGU6MTc6b2JqLSQoQ09ORklHX0JQRl9KSVQpICYjNDM7PSB0cmFtcG9saW5lLm9cbmtlcm5lbC9icGYvTWFrZWZpbGUtMTgtb2JqLSQoQ09ORklHX0JQRl9TWVNDQUxMKSAmIzQzOz0gYnRmLm8gbWVtYWxsb2MubyBycXNwaW5sb2NrLm8gc3RyZWFtLm9cbi0tXG5rZXJuZWwvYnBmL01ha2VmaWxlPTIxPWVuZGlmXG5rZXJuZWwvYnBmL01ha2VmaWxlOjIyOm9iai0kKENPTkZJR19CUEZfSklUKSAmIzQzOz0gZGlzcGF0Y2hlci5vXG5rZXJuZWwvYnBmL01ha2VmaWxlLTIzLWlmZXEgKCQoQ09ORklHX05FVCkseSlcbi0tXG5rZXJuZWwvYnBmL01ha2VmaWxlPTQyPWVuZGlmXG5rZXJuZWwvYnBmL01ha2VmaWxlOjQzOmlmZXEgKCQoQ09ORklHX0JQRl9KSVQpLHkpXG5rZXJuZWwvYnBmL01ha2VmaWxlLTQ0LW9iai0kKENPTkZJR19CUEZfU1lTQ0FMTCkgJiM0Mzs9IGJwZl9zdHJ1Y3Rfb3BzLm9cbi0tXG5rZXJuZWwvYnBmL2J0Zi5jPTk3Nzg9Ym9vbCBidGZfdHlwZV9pZHNfbm9jYXN0X2FsaWFzKHN0cnVjdCBicGZfdmVyaWZpZXJfbG9nICpsb2csXG4tLVxua2VybmVsL2JwZi9idGYuYy05ODMyLVxua2VybmVsL2JwZi9idGYuYzo5ODMzOiNpZmRlZiBDT05GSUdfQlBGX0pJVFxua2VybmVsL2JwZi9idGYuYy05ODM0LXN0YXRpYyBpbnRcbi0tXG5rZXJuZWwvYnBmL2NvcmUuYz01Mzk9dm9pZCBicGZfcHJvZ19rYWxsc3ltc19kZWxfYWxsKHN0cnVjdCBicGZfcHJvZyAqZnApXG4tLVxua2VybmVsL2JwZi9jb3JlLmMtNTQ0LVxua2VybmVsL2JwZi9jb3JlLmM6NTQ1OiNpZmRlZiBDT05GSUdfQlBGX0pJVFxua2VybmVsL2JwZi9jb3JlLmMtNTQ2LS8qIEFsbCBCUEYgSklUIHN5c2N0bCBrbm9icyBoZXJlLiAqL1xua2VybmVsL2JwZi9jb3JlLmM6NTQ3OmludCBicGZfaml0X2VuYWJsZSAgIF9fcmVhZF9tb3N0bHkgPSBJU19CVUlMVElOKENPTkZJR19CUEZfSklUX0RFRkFVTFRfT04pO1xua2VybmVsL2JwZi9jb3JlLmM6NTQ4OmludCBicGZfaml0X2thbGxzeW1zIF9fcmVhZF9tb3N0bHkgPSBJU19CVUlMVElOKENPTkZJR19CUEZfSklUX0RFRkFVTFRfT04pO1xua2VybmVsL2JwZi9jb3JlLmMtNTQ5LWludCBicGZfaml0X2hhcmRlbiAgIF9fcmVhZF9tb3N0bHk7XG4tLVxua2VybmVsL2JwZi9jb3JlLmM9MTU5OD11MTYgYnBmX291dF9zdGFja19hcmdfY250KGNvbnN0IHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYsIGNvbnN0IHN0cnVjdCBicGZfcHJvZyAqcHJvZylcbi0tXG5rZXJuZWwvYnBmL2NvcmUuYy0xNjA2LX1cbmtlcm5lbC9icGYvY29yZS5jOjE2MDc6I2VuZGlmIC8qIENPTkZJR19CUEZfSklUICovXG5rZXJuZWwvYnBmL2NvcmUuYy0xNjA4LVxuLS1cbmtlcm5lbC9icGYvY29yZS5jPTE3NjY9Ym9vbCBicGZfb3Bjb2RlX2luX2luc250YWJsZSh1OCBjb2RlKVxuLS1cbmtlcm5lbC9icGYvY29yZS5jLTE3ODgtXG5rZXJuZWwvYnBmL2NvcmUuYzoxNzg5OiNpZm5kZWYgQ09ORklHX0JQRl9KSVRfQUxXQVlTX09OXG5rZXJuZWwvYnBmL2NvcmUuYy0xNzkwLS8qIEFic29sdXRlIHZhbHVlIG9mIHMzMiB3aXRob3V0IHVuZGVmaW5lZCBiZWhhdmlvciBmb3IgUzMyX01JTiAqL1xuLS1cbmtlcm5lbC9icGYvY29yZS5jPTI1NTM9c3RhdGljIGJvb2wgYnBmX3Byb2dfc2VsZWN0X2ludGVycHJldGVyKHN0cnVjdCBicGZfcHJvZyAqZnApXG4tLVxua2VybmVsL2JwZi9jb3JlLmMtMjU1NS1cdGJvb2wgc2VsZWN0X2ludGVycHJldGVyID0gZmFsc2U7XG5rZXJuZWwvYnBmL2NvcmUuYzoyNTU2OiNpZm5kZWYgQ09ORklHX0JQRl9KSVRfQUxXQVlTX09OXG5rZXJuZWwvYnBmL2NvcmUuYy0yNTU3LVx0dTMyIHN0YWNrX2RlcHRoID0gbWF4X3QodTMyLCBmcC1cdTAwM2VhdXgtXHUwMDNlc3RhY2tfZGVwdGgsIDEpO1xuLS1cbmtlcm5lbC9icGYvY29yZS5jPTI1NzY9c3RhdGljIHN0cnVjdCBicGZfcHJvZyAqYnBmX3Byb2dfaml0X2NvbXBpbGUoc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudiwgc3RydWN0IGJwZl9wcm9nICpwcm9nKVxua2VybmVsL2JwZi9jb3JlLmMtMjU3Ny17XG5rZXJuZWwvYnBmL2NvcmUuYzoyNTc4OiNpZmRlZiBDT05GSUdfQlBGX0pJVFxua2VybmVsL2JwZi9jb3JlLmMtMjU3OS1cdHN0cnVjdCBicGZfcHJvZyAqb3JpZ19wcm9nO1xuLS1cbmtlcm5lbC9icGYvY29yZS5jPTI2MjM9c3RydWN0IGJwZl9wcm9nICpfX2JwZl9wcm9nX3NlbGVjdF9ydW50aW1lKHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYsIHN0cnVjdCBicGZfcHJvZyAqZnAsXG4tLVxua2VybmVsL2JwZi9jb3JlLmMtMjYzMy1cbmtlcm5lbC9icGYvY29yZS5jOjI2MzQ6XHRpZiAoSVNfRU5BQkxFRChDT05GSUdfQlBGX0pJVF9BTFdBWVNfT04pIHx8XG5rZXJuZWwvYnBmL2NvcmUuYy0yNjM1LVx0ICAgIGJwZl9wcm9nX2hhc19rZnVuY19jYWxsKGZwKSlcbi0tXG5rZXJuZWwvYnBmL2ZpeHVwcy5jPTEyNz1zdGF0aWMgaW50IGFkZF9rZnVuY19pbl9pbnNucyhzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52LFxuLS1cbmtlcm5lbC9icGYvZml4dXBzLmMtMTQxLVxua2VybmVsL2JwZi9maXh1cHMuYzoxNDI6I2lmbmRlZiBDT05GSUdfQlBGX0pJVF9BTFdBWVNfT05cbmtlcm5lbC9icGYvZml4dXBzLmMtMTQzLXN0YXRpYyBpbnQgZ2V0X2NhbGxlZV9zdGFja19kZXB0aChzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52LFxuLS1cbmtlcm5lbC9icGYvZml4dXBzLmM9MTM3Nj1pbnQgYnBmX2ZpeHVwX2NhbGxfYXJncyhzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52KVxua2VybmVsL2JwZi9maXh1cHMuYy0xMzc3LXtcbmtlcm5lbC9icGYvZml4dXBzLmM6MTM3ODojaWZuZGVmIENPTkZJR19CUEZfSklUX0FMV0FZU19PTlxua2VybmVsL2JwZi9maXh1cHMuYy0xMzc5LVx0c3RydWN0IGJwZl9wcm9nICpwcm9nID0gZW52LVx1MDAzZXByb2c7XG4tLVxua2VybmVsL2JwZi9maXh1cHMuYy0xNDA1LVx0fVxua2VybmVsL2JwZi9maXh1cHMuYzoxNDA2OiNpZm5kZWYgQ09ORklHX0JQRl9KSVRfQUxXQVlTX09OXG5rZXJuZWwvYnBmL2ZpeHVwcy5jLTE0MDctXHRpZiAoaGFzX2tmdW5jX2NhbGwpIHtcbi0tXG5rZXJuZWwvYnBmL3N5c2NhbGwuYz02NTc4PWludCBrZXJuX3N5c19icGYoaW50IGNtZCwgdW5pb24gYnBmX2F0dHIgKmF0dHIsIHVuc2lnbmVkIGludCBzaXplKVxuLS1cbmtlcm5lbC9icGYvc3lzY2FsbC5jLTY1ODMtXHRzd2l0Y2ggKGNtZCkge1xua2VybmVsL2JwZi9zeXNjYWxsLmM6NjU4NDojaWZkZWYgQ09ORklHX0JQRl9KSVQgLyogX19icGZfcHJvZ19lbnRlcl9zbGVlcGFibGUgdXNlZCBieSB0cmFtcG9saW5lIGFuZCBKSVQgKi9cbmtlcm5lbC9icGYvc3lzY2FsbC5jLTY1ODUtXHRjYXNlIEJQRl9QUk9HX1RFU1RfUlVOOlxuLS1cbmtlcm5lbC9icGYvdmVyaWZpZXIuYz00NDE4PUJURl9JRChzdHJ1Y3QsIGNncm91cClcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy00NDE5LSNlbmRpZlxua2VybmVsL2JwZi92ZXJpZmllci5jOjQ0MjA6I2lmZGVmIENPTkZJR19CUEZfSklUXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtNDQyMS1CVEZfSUQoc3RydWN0LCBicGZfY3B1bWFzaylcbi0tXG5uZXQvYnBmL01ha2VmaWxlPTI9b2JqLSQoQ09ORklHX0JQRl9TWVNDQUxMKVx0Oj0gdGVzdF9ydW4ub1xubmV0L2JwZi9NYWtlZmlsZTozOmlmZXEgKCQoQ09ORklHX0JQRl9KSVQpLHkpXG5uZXQvYnBmL01ha2VmaWxlLTQtb2JqLSQoQ09ORklHX0JQRl9TWVNDQUxMKVx0JiM0Mzs9IGJwZl9kdW1teV9zdHJ1Y3Rfb3BzLm9cbi0tXG5uZXQvY29yZS9zeXNjdGxfbmV0X2NvcmUuYz0zNTI9c3RhdGljIGludCBwcm9jX2RvX3NrYl9kZWZlcl9tYXgoY29uc3Qgc3RydWN0IGN0bF90YWJsZSAqdGFibGUsIGludCB3cml0ZSxcbi0tXG5uZXQvY29yZS9zeXNjdGxfbmV0X2NvcmUuYy0zNzQtXG5uZXQvY29yZS9zeXNjdGxfbmV0X2NvcmUuYzozNzU6I2lmZGVmIENPTkZJR19CUEZfSklUXG5uZXQvY29yZS9zeXNjdGxfbmV0X2NvcmUuYy0zNzYtc3RhdGljIGludCBwcm9jX2RvaW50dmVjX21pbm1heF9icGZfZW5hYmxlKGNvbnN0IHN0cnVjdCBjdGxfdGFibGUgKnRhYmxlLCBpbnQgd3JpdGUsXG4tLVxubmV0L2NvcmUvc3lzY3RsX25ldF9jb3JlLmMtNDAxLVx0aWYgKHdyaXRlIFx1MDAyNlx1MDAyNiByZXQgXHUwMDI2XHUwMDI2IG1pbiA9PSBtYXgpXG5uZXQvY29yZS9zeXNjdGxfbmV0X2NvcmUuYzo0MDI6XHRcdHByX2luZm9fb25jZShcJiMzNDtDT05GSUdfQlBGX0pJVF9BTFdBWVNfT04gaXMgZW5hYmxlZCwgYnBmX2ppdF9lbmFibGUgaXMgcGVybWFuZW50bHkgc2V0IHRvIDEuXFxuXCYjMzQ7KTtcbm5ldC9jb3JlL3N5c2N0bF9uZXRfY29yZS5jLTQwMy1cbi0tXG5uZXQvY29yZS9zeXNjdGxfbmV0X2NvcmUuYz00MzA9c3RhdGljIHN0cnVjdCBjdGxfdGFibGUgbmV0X2NvcmVfdGFibGVbXSA9IHtcbi0tXG5uZXQvY29yZS9zeXNjdGxfbmV0X2NvcmUuYy00ODMtXHR9LFxubmV0L2NvcmUvc3lzY3RsX25ldF9jb3JlLmM6NDg0OiNpZmRlZiBDT05GSUdfQlBGX0pJVFxubmV0L2NvcmUvc3lzY3RsX25ldF9jb3JlLmMtNDg1LVx0e1xuLS1cbm5ldC9jb3JlL3N5c2N0bF9uZXRfY29yZS5jLTQ5MC1cdFx0LnByb2NfaGFuZGxlclx0PSBwcm9jX2RvaW50dmVjX21pbm1heF9icGZfZW5hYmxlLFxubmV0L2NvcmUvc3lzY3RsX25ldF9jb3JlLmM6NDkxOiMgaWZkZWYgQ09ORklHX0JQRl9KSVRfQUxXQVlTX09OXG5uZXQvY29yZS9zeXNjdGxfbmV0X2NvcmUuYy00OTItXHRcdC5leHRyYTFcdFx0PSBTWVNDVExfT05FLFxuLS1cbm5ldC9pcHY0L01ha2VmaWxlPTY5PW9iai0kKENPTkZJR19UQ1BfQU8pICYjNDM7PSB0Y3BfYW8ub1xubmV0L2lwdjQvTWFrZWZpbGUtNzAtXG5uZXQvaXB2NC9NYWtlZmlsZTo3MTppZmVxICgkKENPTkZJR19CUEZfSklUKSx5KVxubmV0L2lwdjQvTWFrZWZpbGUtNzItb2JqLSQoQ09ORklHX0JQRl9TWVNDQUxMKSAmIzQzOz0gYnBmX3RjcF9jYS5vXG4tLVxuc2NyaXB0cy9nZGIvbGludXgvYnBmLnB5PTk9ZnJvbSBsaW51eCBpbXBvcnQgY29uc3RhbnRzLCBsaXN0cywgcmFkaXh0cmVlLCB1dGlsc1xuLS1cbnNjcmlwdHMvZ2RiL2xpbnV4L2JwZi5weS0xMS1cbnNjcmlwdHMvZ2RiL2xpbnV4L2JwZi5weToxMjppZiBjb25zdGFudHMuTFhfQ09ORklHX0JQRiBhbmQgY29uc3RhbnRzLkxYX0NPTkZJR19CUEZfSklUOlxuc2NyaXB0cy9nZGIvbGludXgvYnBmLnB5LTEzLSAgICBicGZfa3N5bV90eXBlID0gdXRpbHMuQ2FjaGVkVHlwZShcJiMzNDtzdHJ1Y3QgYnBmX2tzeW1cJiMzNDspXG4tLVxuc2NyaXB0cy9nZGIvbGludXgvYnBmLnB5PTI2PWRlZiBsaXN0X2tzeW1zKCk6XG5zY3JpcHRzL2dkYi9saW51eC9icGYucHk6Mjc6ICAgIGlmIG5vdCAoY29uc3RhbnRzLkxYX0NPTkZJR19CUEYgYW5kIGNvbnN0YW50cy5MWF9DT05GSUdfQlBGX0pJVCk6XG5zY3JpcHRzL2dkYi9saW51eC9icGYucHktMjgtICAgICAgICByZXR1cm4gW11cbi0tXG5zY3JpcHRzL2dkYi9saW51eC9jb25zdGFudHMucHkuaW49MTczPUxYX0NPTkZJRyhDT05GSUdfQlBGKVxuc2NyaXB0cy9nZGIvbGludXgvY29uc3RhbnRzLnB5LmluOjE3NDpMWF9DT05GSUcoQ09ORklHX0JQRl9KSVQpXG5zY3JpcHRzL2dkYi9saW51eC9jb25zdGFudHMucHkuaW4tMTc1LUxYX0NPTkZJRyhDT05GSUdfQlBGX1NZU0NBTEwpXG4tLVxuc2NyaXB0cy9nZGIvbGludXgvc3ltYm9scy5weT0xMjE9YXJlIGxvYWRlZCBhcyB3ZWxsLlwmIzM0O1wmIzM0O1wmIzM0O1xuLS1cbnNjcmlwdHMvZ2RiL2xpbnV4L3N5bWJvbHMucHktMzMyLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5yZW1vdmVfYnBmX3Byb2cpXG5zY3JpcHRzL2dkYi9saW51eC9zeW1ib2xzLnB5OjMzMzogICAgICAgICAgICBpZiBjb25zdGFudHMuTFhfQ09ORklHX0JQRiBhbmQgY29uc3RhbnRzLkxYX0NPTkZJR19CUEZfSklUOlxuc2NyaXB0cy9nZGIvbGludXgvc3ltYm9scy5weS0zMzQtICAgICAgICAgICAgICAgIHNlbGYuYnBmX2tzeW1fbW9uaXRvciA9IGJwZi5Lc3ltTW9uaXRvcihzZWxmLmFkZF9icGZfa3N5bSxcbi0tXG50b29scy9icGYvYnBmdG9vbC9mZWF0dXJlLmM9MzI4PXN0YXRpYyB2b2lkIHByb2JlX2tlcm5lbF9pbWFnZV9jb25maWcoY29uc3QgY2hhciAqZGVmaW5lX3ByZWZpeClcbi0tXG50b29scy9icGYvYnBmdG9vbC9mZWF0dXJlLmMtMzM3LVx0XHQvKiBDb21waWxlIGVCUEYgSklUIGNvbXBpbGVyICovXG50b29scy9icGYvYnBmdG9vbC9mZWF0dXJlLmM6MzM4Olx0XHR7IFwmIzM0O0NPTkZJR19CUEZfSklUXCYjMzQ7LCB9LFxudG9vbHMvYnBmL2JwZnRvb2wvZmVhdHVyZS5jLTMzOS1cdFx0LyogQXZvaWQgY29tcGlsaW5nIGVCUEYgaW50ZXJwcmV0ZXIgKHVzZSBKSVQgb25seSkgKi9cbnRvb2xzL2JwZi9icGZ0b29sL2ZlYXR1cmUuYzozNDA6XHRcdHsgXCYjMzQ7Q09ORklHX0JQRl9KSVRfQUxXQVlTX09OXCYjMzQ7LCB9LFxudG9vbHMvYnBmL2JwZnRvb2wvZmVhdHVyZS5jLTM0MS1cdFx0LyogS2VybmVsIEJURiBkZWJ1ZyBpbmZvcm1hdGlvbiBhdmFpbGFibGUgKi9cbi0tXG50b29scy9zY2hlZF9leHQvS2NvbmZpZz00PUNPTkZJR19CUEZfU1lTQ0FMTD15XG50b29scy9zY2hlZF9leHQvS2NvbmZpZzo1OkNPTkZJR19CUEZfSklUPXlcbnRvb2xzL3NjaGVkX2V4dC9LY29uZmlnLTYtQ09ORklHX0RFQlVHX0lORk9fQlRGPXlcbnRvb2xzL3NjaGVkX2V4dC9LY29uZmlnOjc6Q09ORklHX0JQRl9KSVRfQUxXQVlTX09OPXlcbnRvb2xzL3NjaGVkX2V4dC9LY29uZmlnOjg6Q09ORklHX0JQRl9KSVRfREVGQVVMVF9PTj15XG50b29scy9zY2hlZF9leHQvS2NvbmZpZy05LUNPTkZJR19TQ0hFRF9DTEFTU19FWFQ9eVxuLS1cbnRvb2xzL3NjaGVkX2V4dC9SRUFETUUubWQ9NTg9Q09ORklHX0JQRl9TWVNDQUxMPXlcbnRvb2xzL3NjaGVkX2V4dC9SRUFETUUubWQ6NTk6Q09ORklHX0JQRl9KSVQ9eVxudG9vbHMvc2NoZWRfZXh0L1JFQURNRS5tZC02MC1DT05GSUdfREVCVUdfSU5GT19CVEY9eVxudG9vbHMvc2NoZWRfZXh0L1JFQURNRS5tZDo2MTpDT05GSUdfQlBGX0pJVF9BTFdBWVNfT049eVxudG9vbHMvc2NoZWRfZXh0L1JFQURNRS5tZDo2MjpDT05GSUdfQlBGX0pJVF9ERUZBVUxUX09OPXlcbnRvb2xzL3NjaGVkX2V4dC9SRUFETUUubWQtNjMtYGBgXG4tLVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL2NvbmZpZz01PUNPTkZJR19CUEZfRVZFTlRTPXlcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9jb25maWc6NjpDT05GSUdfQlBGX0pJVD15XG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvY29uZmlnLTctQ09ORklHX0JQRl9LUFJPQkVfT1ZFUlJJREU9eVxuLS1cbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9jb25maWcuYWFyY2g2ND0xMz1DT05GSUdfQk9ORElORz15XG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvY29uZmlnLmFhcmNoNjQ6MTQ6Q09ORklHX0JQRl9KSVRfQUxXQVlTX09OPXlcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9jb25maWcuYWFyY2g2NDoxNTpDT05GSUdfQlBGX0pJVF9ERUZBVUxUX09OPXlcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9jb25maWcuYWFyY2g2NC0xNi1DT05GSUdfQlBGX1BSRUxPQURfVU1EPXlcbi0tXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvY29uZmlnLnBwYzY0ZWw9Nj1DT05GSUdfQk9ORElORz15XG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvY29uZmlnLnBwYzY0ZWw6NzpDT05GSUdfQlBGX0pJVF9BTFdBWVNfT049eVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL2NvbmZpZy5wcGM2NGVsLTgtQ09ORklHX0JQRl9QUkVMT0FEX1VNRD15XG4tLVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL2NvbmZpZy5yaXNjdjY0PTU9Q09ORklHX0JPTkRJTkc9eVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL2NvbmZpZy5yaXNjdjY0OjY6Q09ORklHX0JQRl9KSVRfQUxXQVlTX09OPXlcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9jb25maWcucmlzY3Y2NC03LUNPTkZJR19CUEZfUFJFTE9BRD15XG4tLVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL2NvbmZpZy5zMzkweD03PUNPTkZJR19CT05ESU5HPXlcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9jb25maWcuczM5MHg6ODpDT05GSUdfQlBGX0pJVF9BTFdBWVNfT049eVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL2NvbmZpZy5zMzkweDo5OkNPTkZJR19CUEZfSklUX0RFRkFVTFRfT049eVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL2NvbmZpZy5zMzkweC0xMC1DT05GSUdfQlBGX1BSRUxPQUQ9eVxuLS1cbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9jb25maWcueDg2XzY0PTE4PUNPTkZJR19CT09UVElNRV9UUkFDSU5HPXlcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9jb25maWcueDg2XzY0OjE5OkNPTkZJR19CUEZfSklUX0FMV0FZU19PTj15XG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvY29uZmlnLng4Nl82NC0yMC1DT05GSUdfQlBGX1BSRUxPQUQ9eVxuLS1cbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2hpZC9jb25maWc9MT1DT05GSUdfQlBGX0VWRU5UUz15XG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9oaWQvY29uZmlnOjI6Q09ORklHX0JQRl9KSVRfQUxXQVlTX09OPXlcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2hpZC9jb25maWc6MzpDT05GSUdfQlBGX0pJVD15XG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9oaWQvY29uZmlnLTQtQ09ORklHX0JQRl9LUFJPQkVfT1ZFUlJJREU9eVxuLS1cbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL3Zzb2NrL2NvbmZpZz0zPUNPTkZJR19CUEZfU1lTQ0FMTD15XG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy92c29jay9jb25maWc6NDpDT05GSUdfQlBGX0pJVD15XG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy92c29jay9jb25maWctNS1DT05GSUdfSEFWRV9FQlBGX0pJVD15XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI2IDIwOjI2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIxNzMyCgkJCQkJCQlvdXRwdXQ6IDM3CgkJCQkJCQl0aG91Z2h0czogNTc4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkJQRiBKSVQgTWVtb3J5IEFsbG9jYXRpb24gUmV2aWV3KioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGFuZCB0aGUgcHJpbWFyeSBwb2ludCBvZiBpbnRlcmVzdCBpcyBgQ09ORklHX0JQRl9KSVRgLiBUaGF0JiMzOTtzIHRoZSBrZXkuIExldCYjMzk7cyBzZWUgd2hhdCYjMzk7cyBiZWluZyB0b3VjaGVkLiBJIG5lZWQgdG8gZm9jdXMgb24gdGhlc2Ugc3ltYm9sczogYGJwZl9qaXRfYWxsb2NfZXhlY2AsIGBicGZfaml0X2FsbG9jX2V4ZWNfcndgLCBgYnBmX3Byb2dfcGFja19hbGxvY2AsIGFuZCBgYnBmX2Rpc3BhdGNoZXJfY2hhbmdlX3Byb2dgLiBJIGFscmVhZHkga25vdyBgYWxsb2NfbmV3X3BhY2tgIGlzIHN0YXRpYywgc28gSSBjYW4gaWdub3JlIGl0IGZvciBteSBwdXJwb3Nlcy4KCk5vdywgbGV0IG1lIGNvbmZpcm06IGFyZSB0aG9zZSBjcml0aWNhbCBmdW5jdGlvbnMgZXhwb3J0ZWQ/IFllcywgYGJwZl9qaXRfYWxsb2NfZXhlY2AsIGBicGZfaml0X2FsbG9jX2V4ZWNfcndgLCBgYnBmX3Byb2dfcGFja19hbGxvY2AsIGFuZCBgYnBmX2Rpc3BhdGNoZXJfY2hhbmdlX3Byb2dgIGFyZSBhbGwgZ2xvYmFsIHN5bWJvbHMuIFRoYXQgbWVhbnMgdGhleSBhcmUgZGVmaW5pdGVseSB3aXRoaW4gcmVhY2guCgpUaGVyZWZvcmUsIEkmIzM5O2xsIGluY2x1ZGUgYWxsIG9mIHRob3NlIGluIG15IGFuYWx5c2lzOiBgYnBmX2ppdF9hbGxvY19leGVjYCwgYGJwZl9qaXRfYWxsb2NfZXhlY19yd2AsIGBicGZfcHJvZ19wYWNrX2FsbG9jYCwgYW5kIGBicGZfZGlzcGF0Y2hlcl9jaGFuZ2VfcHJvZ2AuCgpNeSByZWFzb25pbmcgaXMgdGhpczogVGhpcyBwYXRjaCBpcyBmdW5kYW1lbnRhbGx5IGFsdGVyaW5nIHRoZSBCUEYgSklUIG1lbW9yeSBhbGxvY2F0aW9uIHN0cmF0ZWd5LiBJdCYjMzk7cyBpbnRyb2R1Y2luZyBgYnBmX2ppdF9hbGxvY19leGVjX3J3YCwgYW5kIGl0JiMzOTtzIGNvbmRpdGlvbmFsbHkgbWFraW5nIG1lbW9yeSByZWFkLW9ubHkgYmFzZWQgb24gYGJwZl9qaXRfbWVtX2lzX3JveCgpYC4gRnVydGhlcm1vcmUsIEkgc2VlIHRoYXQgdGhlIHBhdGNoIGFsdGVycyBgYnBmX2Rpc3BhdGNoZXJfY2hhbmdlX3Byb2dgIHRvIGVtcGxveSBgdm1hbGxvY2AgaW5zdGVhZCBvZiB1c2luZyBgYnBmX2ppdF9hbGxvY19leGVjYC4gVGhhdCYjMzk7cyBhIHNpZ25pZmljYW50IGNoYW5nZS4gVGhlc2UgYXJlIGFsbCBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gQlBGIEpJVCBtZW1vcnkgbWFuYWdlbWVudC4gVGhleSBhcmUgKnJlYWNoYWJsZSogdGhyb3VnaCBCUEYgcHJvZ3JhbSBsb2FkaW5nIGFuZCBkaXNwYXRjaGVyIHVwZGF0ZXMsIHdoaWNoIG1lYW5zIHRoZXkmIzM5O3JlIGFic29sdXRlbHkgd29ydGggaW52ZXN0aWdhdGluZy4KClRoaXMgcGF0Y2ggZGVwZW5kcyBvbiBgQlBGX0pJVGAuIFRoYXQmIzM5O3Mgbm90IHN1cnByaXNpbmcuIEFuZCwgc2luY2UgdGhlIGNoYW5nZXMgYXJlIHNpZ25pZmljYW50IGFuZCBpbnZvbHZlIG1lbW9yeSBtYW5hZ2VtZW50LCB0aGlzIGlzIGRlZmluaXRlbHkgd29ydGggZnV6emluZy4KCkp1c3QgdG8gZG91YmxlIGNoZWNrLCBJIHdhbnQgdG8gY29uZmlybSBgYnBmX2Rpc3BhdGNoZXJfY2hhbmdlX3Byb2dgJiMzOTtzIGNvbnRleHQuIEkgY2FuIHNlZSBpdCBpcyBsb2NhdGVkIGluIGBrZXJuZWwvYnBmL2Rpc3BhdGNoZXIuY2AuIElzIGl0IGNvbnRyb2xsZWQgYnkgYENPTkZJR19CUEZfSklUYD8gQWgsIHllcywgbG9va2luZyBhdCB0aGUgYGtlcm5lbC9icGYvTWFrZWZpbGVgLCB0aGUgZGlzcGF0Y2hlciBjb2RlIGlzIGJ1aWx0IGlmIGBDT05GSUdfQlBGX0pJVGAgaXMgZW5hYmxlZC4KCkFuZCByZWdhcmRpbmcgYGJwZl9qaXRfYWxsb2NfZXhlY19yd2AsIEkgc2VlIGl0IGlzIGluIGBrZXJuZWwvYnBmL2NvcmUuY2AuIEhhbmcgb24uIEl0IHNlZW1zIGBrZXJuZWwvYnBmL2NvcmUuY2AgaXMgYWx3YXlzIGNvbXBpbGVkLiBIb3dldmVyLCBpcyBgYnBmX2ppdF9hbGxvY19leGVjX3J3YCAqdW5jb25kaXRpb25hbGx5KiBkZWZpbmVkIGluIGBrZXJuZWwvYnBmL2NvcmUuY2A/IE9rYXksIEkmIzM5O2xsIHF1aWNrbHkgbG9vayBhcm91bmQgbGluZSAxMDcwIGluIGBrZXJuZWwvYnBmL2NvcmUuY2AgdG8gYmUgY2VydGFpbi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjYgMjA6MjY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtrZXJuZWwvYnBmL2NvcmUuYyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDEwNjAsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMzAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7MTA2MDpcdFx0fVxuMTA2MTpcdFxuMTA2MjpcdFx0cmV0dXJuIDA7XG4xMDYzOlx0fVxuMTA2NDpcdFxuMTA2NTpcdHZvaWQgYnBmX2ppdF91bmNoYXJnZV9tb2RtZW0odTMyIHNpemUpXG4xMDY2Olx0e1xuMTA2NzpcdFx0YXRvbWljX2xvbmdfc3ViKHNpemUsIFx1MDAyNmJwZl9qaXRfY3VycmVudCk7XG4xMDY4Olx0fVxuMTA2OTpcdFxuMTA3MDpcdHZvaWQgKmJwZl9qaXRfYWxsb2NfZXhlYyh1bnNpZ25lZCBsb25nIHNpemUpXG4xMDcxOlx0e1xuMTA3MjpcdFx0cmV0dXJuIGV4ZWNtZW1fYWxsb2MoRVhFQ01FTV9CUEYsIHNpemUpO1xuMTA3MzpcdH1cbjEwNzQ6XHRcbjEwNzU6XHR2b2lkICpicGZfaml0X2FsbG9jX2V4ZWNfcncodW5zaWduZWQgbG9uZyBzaXplKVxuMTA3NjpcdHtcbjEwNzc6XHRcdHJldHVybiBleGVjbWVtX2FsbG9jX3J3KEVYRUNNRU1fQlBGLCBzaXplKTtcbjEwNzg6XHR9XG4xMDc5Olx0XG4xMDgwOlx0dm9pZCBicGZfaml0X2ZyZWVfZXhlYyh2b2lkICphZGRyKVxuMTA4MTpcdHtcbjEwODI6XHRcdGV4ZWNtZW1fZnJlZShhZGRyKTtcbjEwODM6XHR9XG4xMDg0Olx0XG4xMDg1Olx0c3RydWN0IGJwZl9iaW5hcnlfaGVhZGVyICpcbjEwODY6XHRicGZfaml0X2JpbmFyeV9hbGxvYyh1bnNpZ25lZCBpbnQgcHJvZ2xlbiwgdTggKippbWFnZV9wdHIsXG4xMDg3Olx0XHRcdCAgICAgdW5zaWduZWQgaW50IGFsaWdubWVudCxcbjEwODg6XHRcdFx0ICAgICBicGZfaml0X2ZpbGxfaG9sZV90IGJwZl9maWxsX2lsbF9pbnNucylcbjEwODk6XHR7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI2IDIwOjI2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIzMzg3CgkJCQkJCQlvdXRwdXQ6IDE4NgoJCQkJCQkJdGhvdWdodHM6IDc1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IGludGVycHJldGF0aW9uIG9mIHRoYXQuCgoqKkJQRiBKSVQgRGVwZW5kZW5jeSoqCgpSaWdodCwgc28sIEkgc2VlIHRoYXQgdGhpcyBpcyAqdW5jb25kaXRpb25hbGx5KiBkZWZpbmVkLCB3aGljaCBpcyBnb29kLiBUaGF0JiMzOTtzIGEgc29saWQgZm91bmRhdGlvbi4gU3BlY2lmaWNhbGx5LCB0aGUgZGVmaW5pdGlvbiBpcyBzaXR0aW5nIGluIGBrZXJuZWwvYnBmL2NvcmUuY2AuIE5vIHN1cnByaXNlcyB0aGVyZS4KCkhvd2V2ZXIsIGFuZCB0aGlzIGlzIHRoZSBjcnVjaWFsIHBvaW50LCBpdHMgcHJhY3RpY2FsIGFwcGxpY2F0aW9u4oCUaXRzIGFjdHVhbCAqdXNlKuKAlGhpbmdlcyBvbiB0aGUgQlBGIEpJVCBjb21waWxlci4gVGhlIGZ1bmN0aW9uIGBicGZfaml0X2FsbG9jX2V4ZWNfcndgIGlzIGtleSBoZXJlLiBJIG5lZWQgdGhhdCBCUEYgSklUIGZ1bmN0aW9uYWxpdHkuIExvb2tpbmcgYXQgdGhlIGNvZGUgcGF0aCwgdGhpcyBgYnBmX2ppdF9hbGxvY19leGVjX3J3YCBpcyBhY3R1YWxseSBjYWxsZWQgZnJvbSBgYXJjaC94ODYvbmV0L2JwZl9qaXRfY29tcC5jYC4gVGhhdCB0ZWxscyBtZSBJIG5lZWQgdG8gYmUgc3VyZSB0aGF0IHRoZSBKSVQgaXMgZW5hYmxlZCBhbmQgZnVuY3Rpb25hbCB3aXRoaW4gdGhhdCBhcmNoaXRlY3R1cmUsIHNwZWNpZmljYWxseS4KCk5vdyBJIGhhdmUgd2hhdCBJIG5lZWQsIEkmIzM5O20gcmVhZHkgdG8gcHJvY2VlZC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjYgMjA6MjY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0JQRl9KSVQmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDticGZfaml0X2FsbG9jX2V4ZWMmIzM0OywKICAgICYjMzQ7YnBmX2ppdF9hbGxvY19leGVjX3J3JiMzNDssCiAgICAmIzM0O2JwZl9wcm9nX3BhY2tfYWxsb2MmIzM0OywKICAgICYjMzQ7YnBmX2Rpc3BhdGNoZXJfY2hhbmdlX3Byb2cmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgQlBGIEpJVCBtZW1vcnkgYWxsb2NhdGlvbiBsb2dpYywgaW50cm9kdWNpbmcgYSBuZXcgYGJwZl9qaXRfYWxsb2NfZXhlY19yd2AgZnVuY3Rpb24gYW5kIGNvbmRpdGlvbmFsbHkgc2V0dGluZyBtZW1vcnkgdG8gUk9YIGJhc2VkIG9uIGBicGZfaml0X21lbV9pc19yb3goKWAuIEl0IGFsc28gY2hhbmdlcyBgYnBmX2Rpc3BhdGNoZXJfY2hhbmdlX3Byb2dgIHRvIHVzZSBgdm1hbGxvY2AgaW5zdGVhZCBvZiBgYnBmX2ppdF9hbGxvY19leGVjYC4gVGhlc2UgYXJlIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byBCUEYgSklUIG1lbW9yeSBtYW5hZ2VtZW50IGFuZCBhcmUgcmVhY2hhYmxlIHZpYSBCUEYgcHJvZ3JhbSBsb2FkaW5nIGFuZCBkaXNwYXRjaGVyIHVwZGF0ZXMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0JQRl9KSVQmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDticGZfaml0X2FsbG9jX2V4ZWMmIzM0OywKICAgICYjMzQ7YnBmX2ppdF9hbGxvY19leGVjX3J3JiMzNDssCiAgICAmIzM0O2JwZl9wcm9nX3BhY2tfYWxsb2MmIzM0OywKICAgICYjMzQ7YnBmX2Rpc3BhdGNoZXJfY2hhbmdlX3Byb2cmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgQlBGIEpJVCBtZW1vcnkgYWxsb2NhdGlvbiBsb2dpYywgaW50cm9kdWNpbmcgYSBuZXcgYGJwZl9qaXRfYWxsb2NfZXhlY19yd2AgZnVuY3Rpb24gYW5kIGNvbmRpdGlvbmFsbHkgc2V0dGluZyBtZW1vcnkgdG8gUk9YIGJhc2VkIG9uIGBicGZfaml0X21lbV9pc19yb3goKWAuIEl0IGFsc28gY2hhbmdlcyBgYnBmX2Rpc3BhdGNoZXJfY2hhbmdlX3Byb2dgIHRvIHVzZSBgdm1hbGxvY2AgaW5zdGVhZCBvZiBgYnBmX2ppdF9hbGxvY19leGVjYC4gVGhlc2UgYXJlIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byBCUEYgSklUIG1lbW9yeSBtYW5hZ2VtZW50IGFuZCBhcmUgcmVhY2hhYmxlIHZpYSBCUEYgcHJvZ3JhbSBsb2FkaW5nIGFuZCBkaXNwYXRjaGVyIHVwZGF0ZXMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wNi0yNlQyMDoyNDozNy4xNDI5Nzk0NloiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjExODgxMjEzNDQ0MSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJCUEZfSklUXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiYnBmX2ppdF9hbGxvY19leGVjXCIsXG4gICAgXCJicGZfaml0X2FsbG9jX2V4ZWNfcndcIixcbiAgICBcImJwZl9wcm9nX3BhY2tfYWxsb2NcIixcbiAgICBcImJwZl9kaXNwYXRjaGVyX2NoYW5nZV9wcm9nXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgQlBGIEpJVCBtZW1vcnkgYWxsb2NhdGlvbiBsb2dpYywgaW50cm9kdWNpbmcgYSBuZXcgYGJwZl9qaXRfYWxsb2NfZXhlY19yd2AgZnVuY3Rpb24gYW5kIGNvbmRpdGlvbmFsbHkgc2V0dGluZyBtZW1vcnkgdG8gUk9YIGJhc2VkIG9uIGBicGZfaml0X21lbV9pc19yb3goKWAuIEl0IGFsc28gY2hhbmdlcyBgYnBmX2Rpc3BhdGNoZXJfY2hhbmdlX3Byb2dgIHRvIHVzZSBgdm1hbGxvY2AgaW5zdGVhZCBvZiBgYnBmX2ppdF9hbGxvY19leGVjYC4gVGhlc2UgYXJlIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byBCUEYgSklUIG1lbW9yeSBtYW5hZ2VtZW50IGFuZCBhcmUgcmVhY2hhYmxlIHZpYSBCUEYgcHJvZ3JhbSBsb2FkaW5nIGFuZCBkaXNwYXRjaGVyIHVwZGF0ZXMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI2VDIwOjI0OjM3LjE0Mjk4NTYyWiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjozNTgwOTE4MTAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCA5OGIyNGNlN2UwYWEzYTk1NTkzNDUyMWRhOWM2NjE0Y2JiMmZmYTczXFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBGcmkgSnVuIDI2IDIwOjI0OjM2IDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL2FyY2gveDg2L21tL2luaXQuYyBiL2FyY2gveDg2L21tL2luaXQuY1xcbmluZGV4IGZiNjcyMTdmZGRjZDM3Li4wNzlmOGM3ZTllM2NkZSAxMDA2NDRcXG4tLS0gYS9hcmNoL3g4Ni9tbS9pbml0LmNcXG4rKysgYi9hcmNoL3g4Ni9tbS9pbml0LmNcXG5AQCAtMTEwNywxMCArMTEwNywxMCBAQCBzdHJ1Y3QgZXhlY21lbV9pbmZvIF9faW5pdCAqZXhlY21lbV9hcmNoX3NldHVwKHZvaWQpXFxuIFxcdFxcdFxcdFxcdC5hbGlnbm1lbnQgPSBNT0RVTEVfQUxJR04sXFxuIFxcdFxcdFxcdH0sXFxuIFxcdFxcdFxcdFtFWEVDTUVNX0JQRl0gPSB7XFxuLVxcdFxcdFxcdFxcdC5mbGFnc1xcdD0gRVhFQ01FTV9LQVNBTl9TSEFET1csXFxuK1xcdFxcdFxcdFxcdC5mbGFnc1xcdD0gZmxhZ3MsXFxuIFxcdFxcdFxcdFxcdC5zdGFydFxcdD0gc3RhcnQsXFxuIFxcdFxcdFxcdFxcdC5lbmRcXHQ9IE1PRFVMRVNfRU5ELFxcbi1cXHRcXHRcXHRcXHQucGdwcm90XFx0PSBQQUdFX0tFUk5FTCxcXG4rXFx0XFx0XFx0XFx0LnBncHJvdFxcdD0gcGdwcm90LFxcbiBcXHRcXHRcXHRcXHQuYWxpZ25tZW50ID0gTU9EVUxFX0FMSUdOLFxcbiBcXHRcXHRcXHR9LFxcbiBcXHRcXHRcXHRbRVhFQ01FTV9NT0RVTEVfREFUQV0gPSB7XFxuZGlmZiAtLWdpdCBhL2FyY2gveDg2L25ldC9icGZfaml0X2NvbXAuYyBiL2FyY2gveDg2L25ldC9icGZfaml0X2NvbXAuY1xcbmluZGV4IDA1NGUwNDNmZmNkMjJkLi5iYTU2MmQzYmYwMzFlOSAxMDA2NDRcXG4tLS0gYS9hcmNoL3g4Ni9uZXQvYnBmX2ppdF9jb21wLmNcXG4rKysgYi9hcmNoL3g4Ni9uZXQvYnBmX2ppdF9jb21wLmNcXG5AQCAtMzcwMywxMyArMzcwMywxMiBAQCBpbnQgYXJjaF9icGZfdHJhbXBvbGluZV9zaXplKGNvbnN0IHN0cnVjdCBidGZfZnVuY19tb2RlbCAqbSwgdTMyIGZsYWdzLFxcbiBcXHRpbnQgcmV0O1xcbiBcXG4gXFx0LyogQWxsb2NhdGUgYSB0ZW1wb3JhcnkgYnVmZmVyIGZvciBfX2FyY2hfcHJlcGFyZV9icGZfdHJhbXBvbGluZSgpLlxcbi1cXHQgKiBUaGlzIHdpbGwgTk9UIGNhdXNlIGZyYWdtZW50YXRpb24gaW4gZGlyZWN0IG1hcCwgYXMgd2UgZG8gbm90XFxuLVxcdCAqIGNhbGwgc2V0X21lbW9yeV8qKCkgb24gdGhpcyBidWZmZXIuXFxuIFxcdCAqXFxuIFxcdCAqIFdlIGNhbm5vdCB1c2Uga3ZtYWxsb2MgaGVyZSwgYmVjYXVzZSB3ZSBuZWVkIGltYWdlIHRvIGJlIGluXFxuIFxcdCAqIG1vZHVsZSBtZW1vcnkgcmFuZ2UuXFxuK1xcdCAqIFNpbmNlIGl0IG11c3QgYmUgd3JpdGFibGUgdXNlIGJwZl9qaXRfYWxsb2NfZXhlY19ydygpLlxcbiBcXHQgKi9cXG4tXFx0aW1hZ2UgPSBicGZfaml0X2FsbG9jX2V4ZWMoUEFHRV9TSVpFKTtcXG4rXFx0aW1hZ2UgPSBicGZfaml0X2FsbG9jX2V4ZWNfcncoUEFHRV9TSVpFKTtcXG4gXFx0aWYgKCFpbWFnZSlcXG4gXFx0XFx0cmV0dXJuIC1FTk9NRU07XFxuIFxcbmRpZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4L2ZpbHRlci5oIGIvaW5jbHVkZS9saW51eC9maWx0ZXIuaFxcbmluZGV4IDY3ZDMzN2VkZTkxYjhlLi43NzNiMTZmMDY1NzJjMCAxMDA2NDRcXG4tLS0gYS9pbmNsdWRlL2xpbnV4L2ZpbHRlci5oXFxuKysrIGIvaW5jbHVkZS9saW51eC9maWx0ZXIuaFxcbkBAIC0xMzIzLDYgKzEzMjMsNyBAQCBicGZfaml0X2JpbmFyeV9hbGxvYyh1bnNpZ25lZCBpbnQgcHJvZ2xlbiwgdTggKippbWFnZV9wdHIsXFxuIHZvaWQgYnBmX2ppdF9iaW5hcnlfZnJlZShzdHJ1Y3QgYnBmX2JpbmFyeV9oZWFkZXIgKmhkcik7XFxuIHU2NCBicGZfaml0X2FsbG9jX2V4ZWNfbGltaXQodm9pZCk7XFxuIHZvaWQgKmJwZl9qaXRfYWxsb2NfZXhlYyh1bnNpZ25lZCBsb25nIHNpemUpO1xcbit2b2lkICpicGZfaml0X2FsbG9jX2V4ZWNfcncodW5zaWduZWQgbG9uZyBzaXplKTtcXG4gdm9pZCBicGZfaml0X2ZyZWVfZXhlYyh2b2lkICphZGRyKTtcXG4gdm9pZCBicGZfaml0X2ZyZWUoc3RydWN0IGJwZl9wcm9nICpmcCk7XFxuIHN0cnVjdCBicGZfYmluYXJ5X2hlYWRlciAqXFxuZGlmZiAtLWdpdCBhL2tlcm5lbC9icGYvY29yZS5jIGIva2VybmVsL2JwZi9jb3JlLmNcXG5pbmRleCA2NDljY2U0MWUxM2YzYi4uNTUyODRiNWQwMjkyZGMgMTAwNjQ0XFxuLS0tIGEva2VybmVsL2JwZi9jb3JlLmNcXG4rKysgYi9rZXJuZWwvYnBmL2NvcmUuY1xcbkBAIC05MDQsNiArOTA0LDExIEBAIHN0YXRpYyBMSVNUX0hFQUQocGFja19saXN0KTtcXG4gXFxuICNkZWZpbmUgQlBGX1BST0dfQ0hVTktfQ09VTlQgKEJQRl9QUk9HX1BBQ0tfU0laRSAvIEJQRl9QUk9HX0NIVU5LX1NJWkUpXFxuIFxcbitzdGF0aWMgYm9vbCBicGZfaml0X21lbV9pc19yb3godm9pZClcXG4re1xcbitcXHRyZXR1cm4gZXhlY21lbV9pc19yb3goRVhFQ01FTV9CUEYpO1xcbit9XFxuK1xcbiBzdGF0aWMgc3RydWN0IGJwZl9wcm9nX3BhY2sgKmFsbG9jX25ld19wYWNrKGJwZl9qaXRfZmlsbF9ob2xlX3QgYnBmX2ZpbGxfaWxsX2luc25zKVxcbiB7XFxuIFxcdHN0cnVjdCBicGZfcHJvZ19wYWNrICpwYWNrO1xcbkBAIC05MTUsMTQgKzkyMCwxNiBAQCBzdGF0aWMgc3RydWN0IGJwZl9wcm9nX3BhY2sgKmFsbG9jX25ld19wYWNrKGJwZl9qaXRfZmlsbF9ob2xlX3QgYnBmX2ZpbGxfaWxsX2luc1xcbiBcXHRwYWNrLVxcdTAwM2VwdHIgPSBicGZfaml0X2FsbG9jX2V4ZWMoQlBGX1BST0dfUEFDS19TSVpFKTtcXG4gXFx0aWYgKCFwYWNrLVxcdTAwM2VwdHIpXFxuIFxcdFxcdGdvdG8gb3V0O1xcbi1cXHRicGZfZmlsbF9pbGxfaW5zbnMocGFjay1cXHUwMDNlcHRyLCBCUEZfUFJPR19QQUNLX1NJWkUpO1xcbiBcXHRiaXRtYXBfemVybyhwYWNrLVxcdTAwM2ViaXRtYXAsIEJQRl9QUk9HX1BBQ0tfU0laRSAvIEJQRl9QUk9HX0NIVU5LX1NJWkUpO1xcbiBcXG4tXFx0c2V0X3ZtX2ZsdXNoX3Jlc2V0X3Blcm1zKHBhY2stXFx1MDAzZXB0cik7XFxuLVxcdGVyciA9IHNldF9tZW1vcnlfcm94KCh1bnNpZ25lZCBsb25nKXBhY2stXFx1MDAzZXB0cixcXG4tXFx0XFx0XFx0ICAgICBCUEZfUFJPR19QQUNLX1NJWkUgLyBQQUdFX1NJWkUpO1xcbi1cXHRpZiAoZXJyKVxcbi1cXHRcXHRnb3RvIG91dDtcXG4rXFx0aWYgKCFicGZfaml0X21lbV9pc19yb3goKSkge1xcbitcXHRcXHRicGZfZmlsbF9pbGxfaW5zbnMocGFjay1cXHUwMDNlcHRyLCBCUEZfUFJPR19QQUNLX1NJWkUpO1xcbitcXHRcXHRzZXRfdm1fZmx1c2hfcmVzZXRfcGVybXMocGFjay1cXHUwMDNlcHRyKTtcXG4rXFx0XFx0ZXJyID0gc2V0X21lbW9yeV9yb3goKHVuc2lnbmVkIGxvbmcpcGFjay1cXHUwMDNlcHRyLFxcbitcXHRcXHRcXHRcXHQgICAgIEJQRl9QUk9HX1BBQ0tfU0laRSAvIFBBR0VfU0laRSk7XFxuK1xcdFxcdGlmIChlcnIpXFxuK1xcdFxcdFxcdGdvdG8gb3V0O1xcbitcXHR9XFxuIFxcdGxpc3RfYWRkX3RhaWwoXFx1MDAyNnBhY2stXFx1MDAzZWxpc3QsIFxcdTAwMjZwYWNrX2xpc3QpO1xcbiBcXHRyZXR1cm4gcGFjaztcXG4gXFxuQEAgLTk0Myw3ICs5NTAsNyBAQCB2b2lkICpicGZfcHJvZ19wYWNrX2FsbG9jKHUzMiBzaXplLCBicGZfaml0X2ZpbGxfaG9sZV90IGJwZl9maWxsX2lsbF9pbnNucylcXG4gXFx0aWYgKHNpemUgXFx1MDAzZSBCUEZfUFJPR19QQUNLX1NJWkUpIHtcXG4gXFx0XFx0c2l6ZSA9IHJvdW5kX3VwKHNpemUsIFBBR0VfU0laRSk7XFxuIFxcdFxcdHB0ciA9IGJwZl9qaXRfYWxsb2NfZXhlYyhzaXplKTtcXG4tXFx0XFx0aWYgKHB0cikge1xcbitcXHRcXHRpZiAocHRyIFxcdTAwMjZcXHUwMDI2ICFicGZfaml0X21lbV9pc19yb3goKSkge1xcbiBcXHRcXHRcXHRpbnQgZXJyO1xcbiBcXG4gXFx0XFx0XFx0YnBmX2ZpbGxfaWxsX2luc25zKHB0ciwgc2l6ZSk7XFxuQEAgLTEwNjAsMTIgKzEwNjcsMTcgQEAgdm9pZCBicGZfaml0X3VuY2hhcmdlX21vZG1lbSh1MzIgc2l6ZSlcXG4gXFx0YXRvbWljX2xvbmdfc3ViKHNpemUsIFxcdTAwMjZicGZfaml0X2N1cnJlbnQpO1xcbiB9XFxuIFxcbi12b2lkICpfX3dlYWsgYnBmX2ppdF9hbGxvY19leGVjKHVuc2lnbmVkIGxvbmcgc2l6ZSlcXG4rdm9pZCAqYnBmX2ppdF9hbGxvY19leGVjKHVuc2lnbmVkIGxvbmcgc2l6ZSlcXG4ge1xcbiBcXHRyZXR1cm4gZXhlY21lbV9hbGxvYyhFWEVDTUVNX0JQRiwgc2l6ZSk7XFxuIH1cXG4gXFxuLXZvaWQgX193ZWFrIGJwZl9qaXRfZnJlZV9leGVjKHZvaWQgKmFkZHIpXFxuK3ZvaWQgKmJwZl9qaXRfYWxsb2NfZXhlY19ydyh1bnNpZ25lZCBsb25nIHNpemUpXFxuK3tcXG4rXFx0cmV0dXJuIGV4ZWNtZW1fYWxsb2NfcncoRVhFQ01FTV9CUEYsIHNpemUpO1xcbit9XFxuK1xcbit2b2lkIGJwZl9qaXRfZnJlZV9leGVjKHZvaWQgKmFkZHIpXFxuIHtcXG4gXFx0ZXhlY21lbV9mcmVlKGFkZHIpO1xcbiB9XFxuZGlmZiAtLWdpdCBhL2tlcm5lbC9icGYvZGlzcGF0Y2hlci5jIGIva2VybmVsL2JwZi9kaXNwYXRjaGVyLmNcXG5pbmRleCBiNzdkYjc0MTNmOGM3MC4uYTdhNmEzNzVjZGQzMWQgMTAwNjQ0XFxuLS0tIGEva2VybmVsL2JwZi9kaXNwYXRjaGVyLmNcXG4rKysgYi9rZXJuZWwvYnBmL2Rpc3BhdGNoZXIuY1xcbkBAIC0xNDgsNyArMTQ4LDEwIEBAIHZvaWQgYnBmX2Rpc3BhdGNoZXJfY2hhbmdlX3Byb2coc3RydWN0IGJwZl9kaXNwYXRjaGVyICpkLCBzdHJ1Y3QgYnBmX3Byb2cgKmZyb20sXFxuIFxcdFxcdGQtXFx1MDAzZWltYWdlID0gYnBmX3Byb2dfcGFja19hbGxvYyhQQUdFX1NJWkUsIGJwZl9qaXRfZmlsbF9ob2xlX3dpdGhfemVybyk7XFxuIFxcdFxcdGlmICghZC1cXHUwMDNlaW1hZ2UpXFxuIFxcdFxcdFxcdGdvdG8gb3V0O1xcbi1cXHRcXHRkLVxcdTAwM2Vyd19pbWFnZSA9IGJwZl9qaXRfYWxsb2NfZXhlYyhQQUdFX1NJWkUpO1xcbitcXHRcXHQvKiBkLVxcdTAwM2Vyd19pbWFnZSBkb2Vzbid0IG5lZWQgdG8gYmUgaW4gbW9kdWxlIG1lbW9yeSByYW5nZSwgc28gd2VcXG4rXFx0XFx0ICogY2FuIHVzZSB2bWFsbG9jLlxcbitcXHRcXHQgKi9cXG4rXFx0XFx0ZC1cXHUwMDNlcndfaW1hZ2UgPSB2bWFsbG9jKFBBR0VfU0laRSk7XFxuIFxcdFxcdGlmICghZC1cXHUwMDNlcndfaW1hZ2UpIHtcXG4gXFx0XFx0XFx0YnBmX3Byb2dfcGFja19mcmVlKGQtXFx1MDAzZWltYWdlLCBQQUdFX1NJWkUpO1xcbiBcXHRcXHRcXHRkLVxcdTAwM2VpbWFnZSA9IE5VTEw7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI2VDIwOjI0OjM3LjUwMTY5MTg2WiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoxMTg0NTMzODc3MTEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiQlBGX0pJVFwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImJwZl9qaXRfYWxsb2NfZXhlY1wiLFxuICAgIFwiYnBmX2ppdF9hbGxvY19leGVjX3J3XCIsXG4gICAgXCJicGZfcHJvZ19wYWNrX2FsbG9jXCIsXG4gICAgXCJicGZfZGlzcGF0Y2hlcl9jaGFuZ2VfcHJvZ1wiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIEJQRiBKSVQgbWVtb3J5IGFsbG9jYXRpb24gbG9naWMsIGludHJvZHVjaW5nIGEgbmV3IGBicGZfaml0X2FsbG9jX2V4ZWNfcndgIGZ1bmN0aW9uIGFuZCBjb25kaXRpb25hbGx5IHNldHRpbmcgbWVtb3J5IHRvIFJPWCBiYXNlZCBvbiBgYnBmX2ppdF9tZW1faXNfcm94KClgLiBJdCBhbHNvIGNoYW5nZXMgYGJwZl9kaXNwYXRjaGVyX2NoYW5nZV9wcm9nYCB0byB1c2UgYHZtYWxsb2NgIGluc3RlYWQgb2YgYGJwZl9qaXRfYWxsb2NfZXhlY2AuIFRoZXNlIGFyZSBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gQlBGIEpJVCBtZW1vcnkgbWFuYWdlbWVudCBhbmQgYXJlIHJlYWNoYWJsZSB2aWEgQlBGIHByb2dyYW0gbG9hZGluZyBhbmQgZGlzcGF0Y2hlciB1cGRhdGVzLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lXG5pZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5XG51c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLlxuXG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOlxuLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLlxuLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy5cbi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LlxuLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsXG5ldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG5cbklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2hcbnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLlxuXG5XaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzpcbjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuXG4gICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy5cbjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLlxuICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuICAgRG8gbm90IGxpc3QgdG9vIGdlbmVyaWMgY29uZmlncyAod2UgYWxyZWFkeSBoYXZlIHRoZW0gZW5hYmxlZCkuIE9ubHkgbGlzdCB0aG9zZSB0aGF0XG4gICBzcGVjaWZpY2FsbHkgY292ZXIgdGhlIG1vZGlmaWVkIGNvZGUuIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncyBvdXRwdXQgYXJyYXksXG4gICBhbmQgRE8gTk9UIGFkZCBhICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IDk4YjI0Y2U3ZTBhYTNhOTU1OTM0NTIxZGE5YzY2MTRjYmIyZmZhNzNcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgRnJpIEp1biAyNiAyMDoyNDozNiAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2FyY2gveDg2L21tL2luaXQuYyBiL2FyY2gveDg2L21tL2luaXQuY1xuaW5kZXggZmI2NzIxN2ZkZGNkMzcuLjA3OWY4YzdlOWUzY2RlIDEwMDY0NFxuLS0tIGEvYXJjaC94ODYvbW0vaW5pdC5jXG4rKysgYi9hcmNoL3g4Ni9tbS9pbml0LmNcbkBAIC0xMTA3LDEwICsxMTA3LDEwIEBAIHN0cnVjdCBleGVjbWVtX2luZm8gX19pbml0ICpleGVjbWVtX2FyY2hfc2V0dXAodm9pZClcbiBcdFx0XHRcdC5hbGlnbm1lbnQgPSBNT0RVTEVfQUxJR04sXG4gXHRcdFx0fSxcbiBcdFx0XHRbRVhFQ01FTV9CUEZdID0ge1xuLVx0XHRcdFx0LmZsYWdzXHQ9IEVYRUNNRU1fS0FTQU5fU0hBRE9XLFxuK1x0XHRcdFx0LmZsYWdzXHQ9IGZsYWdzLFxuIFx0XHRcdFx0LnN0YXJ0XHQ9IHN0YXJ0LFxuIFx0XHRcdFx0LmVuZFx0PSBNT0RVTEVTX0VORCxcbi1cdFx0XHRcdC5wZ3Byb3RcdD0gUEFHRV9LRVJORUwsXG4rXHRcdFx0XHQucGdwcm90XHQ9IHBncHJvdCxcbiBcdFx0XHRcdC5hbGlnbm1lbnQgPSBNT0RVTEVfQUxJR04sXG4gXHRcdFx0fSxcbiBcdFx0XHRbRVhFQ01FTV9NT0RVTEVfREFUQV0gPSB7XG5kaWZmIC0tZ2l0IGEvYXJjaC94ODYvbmV0L2JwZl9qaXRfY29tcC5jIGIvYXJjaC94ODYvbmV0L2JwZl9qaXRfY29tcC5jXG5pbmRleCAwNTRlMDQzZmZjZDIyZC4uYmE1NjJkM2JmMDMxZTkgMTAwNjQ0XG4tLS0gYS9hcmNoL3g4Ni9uZXQvYnBmX2ppdF9jb21wLmNcbisrKyBiL2FyY2gveDg2L25ldC9icGZfaml0X2NvbXAuY1xuQEAgLTM3MDMsMTMgKzM3MDMsMTIgQEAgaW50IGFyY2hfYnBmX3RyYW1wb2xpbmVfc2l6ZShjb25zdCBzdHJ1Y3QgYnRmX2Z1bmNfbW9kZWwgKm0sIHUzMiBmbGFncyxcbiBcdGludCByZXQ7XG4gXG4gXHQvKiBBbGxvY2F0ZSBhIHRlbXBvcmFyeSBidWZmZXIgZm9yIF9fYXJjaF9wcmVwYXJlX2JwZl90cmFtcG9saW5lKCkuXG4tXHQgKiBUaGlzIHdpbGwgTk9UIGNhdXNlIGZyYWdtZW50YXRpb24gaW4gZGlyZWN0IG1hcCwgYXMgd2UgZG8gbm90XG4tXHQgKiBjYWxsIHNldF9tZW1vcnlfKigpIG9uIHRoaXMgYnVmZmVyLlxuIFx0ICpcbiBcdCAqIFdlIGNhbm5vdCB1c2Uga3ZtYWxsb2MgaGVyZSwgYmVjYXVzZSB3ZSBuZWVkIGltYWdlIHRvIGJlIGluXG4gXHQgKiBtb2R1bGUgbWVtb3J5IHJhbmdlLlxuK1x0ICogU2luY2UgaXQgbXVzdCBiZSB3cml0YWJsZSB1c2UgYnBmX2ppdF9hbGxvY19leGVjX3J3KCkuXG4gXHQgKi9cbi1cdGltYWdlID0gYnBmX2ppdF9hbGxvY19leGVjKFBBR0VfU0laRSk7XG4rXHRpbWFnZSA9IGJwZl9qaXRfYWxsb2NfZXhlY19ydyhQQUdFX1NJWkUpO1xuIFx0aWYgKCFpbWFnZSlcbiBcdFx0cmV0dXJuIC1FTk9NRU07XG4gXG5kaWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51eC9maWx0ZXIuaCBiL2luY2x1ZGUvbGludXgvZmlsdGVyLmhcbmluZGV4IDY3ZDMzN2VkZTkxYjhlLi43NzNiMTZmMDY1NzJjMCAxMDA2NDRcbi0tLSBhL2luY2x1ZGUvbGludXgvZmlsdGVyLmhcbisrKyBiL2luY2x1ZGUvbGludXgvZmlsdGVyLmhcbkBAIC0xMzIzLDYgKzEzMjMsNyBAQCBicGZfaml0X2JpbmFyeV9hbGxvYyh1bnNpZ25lZCBpbnQgcHJvZ2xlbiwgdTggKippbWFnZV9wdHIsXG4gdm9pZCBicGZfaml0X2JpbmFyeV9mcmVlKHN0cnVjdCBicGZfYmluYXJ5X2hlYWRlciAqaGRyKTtcbiB1NjQgYnBmX2ppdF9hbGxvY19leGVjX2xpbWl0KHZvaWQpO1xuIHZvaWQgKmJwZl9qaXRfYWxsb2NfZXhlYyh1bnNpZ25lZCBsb25nIHNpemUpO1xuK3ZvaWQgKmJwZl9qaXRfYWxsb2NfZXhlY19ydyh1bnNpZ25lZCBsb25nIHNpemUpO1xuIHZvaWQgYnBmX2ppdF9mcmVlX2V4ZWModm9pZCAqYWRkcik7XG4gdm9pZCBicGZfaml0X2ZyZWUoc3RydWN0IGJwZl9wcm9nICpmcCk7XG4gc3RydWN0IGJwZl9iaW5hcnlfaGVhZGVyICpcbmRpZmYgLS1naXQgYS9rZXJuZWwvYnBmL2NvcmUuYyBiL2tlcm5lbC9icGYvY29yZS5jXG5pbmRleCA2NDljY2U0MWUxM2YzYi4uNTUyODRiNWQwMjkyZGMgMTAwNjQ0XG4tLS0gYS9rZXJuZWwvYnBmL2NvcmUuY1xuKysrIGIva2VybmVsL2JwZi9jb3JlLmNcbkBAIC05MDQsNiArOTA0LDExIEBAIHN0YXRpYyBMSVNUX0hFQUQocGFja19saXN0KTtcbiBcbiAjZGVmaW5lIEJQRl9QUk9HX0NIVU5LX0NPVU5UIChCUEZfUFJPR19QQUNLX1NJWkUgLyBCUEZfUFJPR19DSFVOS19TSVpFKVxuIFxuK3N0YXRpYyBib29sIGJwZl9qaXRfbWVtX2lzX3JveCh2b2lkKVxuK3tcbitcdHJldHVybiBleGVjbWVtX2lzX3JveChFWEVDTUVNX0JQRik7XG4rfVxuK1xuIHN0YXRpYyBzdHJ1Y3QgYnBmX3Byb2dfcGFjayAqYWxsb2NfbmV3X3BhY2soYnBmX2ppdF9maWxsX2hvbGVfdCBicGZfZmlsbF9pbGxfaW5zbnMpXG4ge1xuIFx0c3RydWN0IGJwZl9wcm9nX3BhY2sgKnBhY2s7XG5AQCAtOTE1LDE0ICs5MjAsMTYgQEAgc3RhdGljIHN0cnVjdCBicGZfcHJvZ19wYWNrICphbGxvY19uZXdfcGFjayhicGZfaml0X2ZpbGxfaG9sZV90IGJwZl9maWxsX2lsbF9pbnNcbiBcdHBhY2stXHUwMDNlcHRyID0gYnBmX2ppdF9hbGxvY19leGVjKEJQRl9QUk9HX1BBQ0tfU0laRSk7XG4gXHRpZiAoIXBhY2stXHUwMDNlcHRyKVxuIFx0XHRnb3RvIG91dDtcbi1cdGJwZl9maWxsX2lsbF9pbnNucyhwYWNrLVx1MDAzZXB0ciwgQlBGX1BST0dfUEFDS19TSVpFKTtcbiBcdGJpdG1hcF96ZXJvKHBhY2stXHUwMDNlYml0bWFwLCBCUEZfUFJPR19QQUNLX1NJWkUgLyBCUEZfUFJPR19DSFVOS19TSVpFKTtcbiBcbi1cdHNldF92bV9mbHVzaF9yZXNldF9wZXJtcyhwYWNrLVx1MDAzZXB0cik7XG4tXHRlcnIgPSBzZXRfbWVtb3J5X3JveCgodW5zaWduZWQgbG9uZylwYWNrLVx1MDAzZXB0cixcbi1cdFx0XHQgICAgIEJQRl9QUk9HX1BBQ0tfU0laRSAvIFBBR0VfU0laRSk7XG4tXHRpZiAoZXJyKVxuLVx0XHRnb3RvIG91dDtcbitcdGlmICghYnBmX2ppdF9tZW1faXNfcm94KCkpIHtcbitcdFx0YnBmX2ZpbGxfaWxsX2luc25zKHBhY2stXHUwMDNlcHRyLCBCUEZfUFJPR19QQUNLX1NJWkUpO1xuK1x0XHRzZXRfdm1fZmx1c2hfcmVzZXRfcGVybXMocGFjay1cdTAwM2VwdHIpO1xuK1x0XHRlcnIgPSBzZXRfbWVtb3J5X3JveCgodW5zaWduZWQgbG9uZylwYWNrLVx1MDAzZXB0cixcbitcdFx0XHRcdCAgICAgQlBGX1BST0dfUEFDS19TSVpFIC8gUEFHRV9TSVpFKTtcbitcdFx0aWYgKGVycilcbitcdFx0XHRnb3RvIG91dDtcbitcdH1cbiBcdGxpc3RfYWRkX3RhaWwoXHUwMDI2cGFjay1cdTAwM2VsaXN0LCBcdTAwMjZwYWNrX2xpc3QpO1xuIFx0cmV0dXJuIHBhY2s7XG4gXG5AQCAtOTQzLDcgKzk1MCw3IEBAIHZvaWQgKmJwZl9wcm9nX3BhY2tfYWxsb2ModTMyIHNpemUsIGJwZl9qaXRfZmlsbF9ob2xlX3QgYnBmX2ZpbGxfaWxsX2luc25zKVxuIFx0aWYgKHNpemUgXHUwMDNlIEJQRl9QUk9HX1BBQ0tfU0laRSkge1xuIFx0XHRzaXplID0gcm91bmRfdXAoc2l6ZSwgUEFHRV9TSVpFKTtcbiBcdFx0cHRyID0gYnBmX2ppdF9hbGxvY19leGVjKHNpemUpO1xuLVx0XHRpZiAocHRyKSB7XG4rXHRcdGlmIChwdHIgXHUwMDI2XHUwMDI2ICFicGZfaml0X21lbV9pc19yb3goKSkge1xuIFx0XHRcdGludCBlcnI7XG4gXG4gXHRcdFx0YnBmX2ZpbGxfaWxsX2luc25zKHB0ciwgc2l6ZSk7XG5AQCAtMTA2MCwxMiArMTA2NywxNyBAQCB2b2lkIGJwZl9qaXRfdW5jaGFyZ2VfbW9kbWVtKHUzMiBzaXplKVxuIFx0YXRvbWljX2xvbmdfc3ViKHNpemUsIFx1MDAyNmJwZl9qaXRfY3VycmVudCk7XG4gfVxuIFxuLXZvaWQgKl9fd2VhayBicGZfaml0X2FsbG9jX2V4ZWModW5zaWduZWQgbG9uZyBzaXplKVxuK3ZvaWQgKmJwZl9qaXRfYWxsb2NfZXhlYyh1bnNpZ25lZCBsb25nIHNpemUpXG4ge1xuIFx0cmV0dXJuIGV4ZWNtZW1fYWxsb2MoRVhFQ01FTV9CUEYsIHNpemUpO1xuIH1cbiBcbi12b2lkIF9fd2VhayBicGZfaml0X2ZyZWVfZXhlYyh2b2lkICphZGRyKVxuK3ZvaWQgKmJwZl9qaXRfYWxsb2NfZXhlY19ydyh1bnNpZ25lZCBsb25nIHNpemUpXG4re1xuK1x0cmV0dXJuIGV4ZWNtZW1fYWxsb2NfcncoRVhFQ01FTV9CUEYsIHNpemUpO1xuK31cbitcbit2b2lkIGJwZl9qaXRfZnJlZV9leGVjKHZvaWQgKmFkZHIpXG4ge1xuIFx0ZXhlY21lbV9mcmVlKGFkZHIpO1xuIH1cbmRpZmYgLS1naXQgYS9rZXJuZWwvYnBmL2Rpc3BhdGNoZXIuYyBiL2tlcm5lbC9icGYvZGlzcGF0Y2hlci5jXG5pbmRleCBiNzdkYjc0MTNmOGM3MC4uYTdhNmEzNzVjZGQzMWQgMTAwNjQ0XG4tLS0gYS9rZXJuZWwvYnBmL2Rpc3BhdGNoZXIuY1xuKysrIGIva2VybmVsL2JwZi9kaXNwYXRjaGVyLmNcbkBAIC0xNDgsNyArMTQ4LDEwIEBAIHZvaWQgYnBmX2Rpc3BhdGNoZXJfY2hhbmdlX3Byb2coc3RydWN0IGJwZl9kaXNwYXRjaGVyICpkLCBzdHJ1Y3QgYnBmX3Byb2cgKmZyb20sXG4gXHRcdGQtXHUwMDNlaW1hZ2UgPSBicGZfcHJvZ19wYWNrX2FsbG9jKFBBR0VfU0laRSwgYnBmX2ppdF9maWxsX2hvbGVfd2l0aF96ZXJvKTtcbiBcdFx0aWYgKCFkLVx1MDAzZWltYWdlKVxuIFx0XHRcdGdvdG8gb3V0O1xuLVx0XHRkLVx1MDAzZXJ3X2ltYWdlID0gYnBmX2ppdF9hbGxvY19leGVjKFBBR0VfU0laRSk7XG4rXHRcdC8qIGQtXHUwMDNlcndfaW1hZ2UgZG9lc24ndCBuZWVkIHRvIGJlIGluIG1vZHVsZSBtZW1vcnkgcmFuZ2UsIHNvIHdlXG4rXHRcdCAqIGNhbiB1c2Ugdm1hbGxvYy5cbitcdFx0ICovXG4rXHRcdGQtXHUwMDNlcndfaW1hZ2UgPSB2bWFsbG9jKFBBR0VfU0laRSk7XG4gXHRcdGlmICghZC1cdTAwM2Vyd19pbWFnZSkge1xuIFx0XHRcdGJwZl9wcm9nX3BhY2tfZnJlZShkLVx1MDAzZWltYWdlLCBQQUdFX1NJWkUpO1xuIFx0XHRcdGQtXHUwMDNlaW1hZ2UgPSBOVUxMO1xuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjZUMjA6MjQ6MzcuNTAxNjkzMzFaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo2MDY4NTc2NDEyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkJQRiBKSVQgTWVtb3J5IEFsbG9jYXRpb24gUGF0Y2g6IEZ1enppbmcgRm9jdXMqKlxuXG5Pa2F5LCBzbyB3ZSd2ZSBnb3QgYSBwYXRjaCBzZXJpZXMgaGVyZSB0aGF0J3MgdHdlYWtpbmcgQlBGIEpJVCBtZW1vcnkgYWxsb2NhdGlvbi4gU2VlbXMgbGlrZSBhIHN0cmFpZ2h0Zm9yd2FyZCwgZnVuY3Rpb25hbCBjaGFuZ2Ug4oCTIGFsd2F5cyB3b3J0aCBhIGNsb3NlciBsb29rIGZyb20gYSBmdXp6aW5nIHBlcnNwZWN0aXZlLCBlc3BlY2lhbGx5IHdoZW4gaXQgaW52b2x2ZXMgbWVtb3J5LiBMZXQncyBzZWUgd2hhdCdzIGFjdHVhbGx5IGJlZW4gbW9kaWZpZWQuIFRoZSBjaGFuZ2VzIHRvdWNoIGBhcmNoL3g4Ni9tbS9pbml0LmNgIGFkanVzdGluZyBgRVhFQ01FTV9CUEZgIGZsYWdzLCBhbmQgYGFyY2gveDg2L25ldC9icGZfaml0X2NvbXAuY2AsIGFuZCB0aGV5IGludHJvZHVjZSBhIG5ldyBhbGxvY2F0aW9uIGZ1bmN0aW9uIGNhbGxlZCBgYnBmX2ppdF9hbGxvY19leGVjX3J3YC4gV2UgYWxzbyBoYXZlIHNvbWUgYWRkaXRpb25zIHRvIGBpbmNsdWRlL2xpbnV4L2ZpbHRlci5oYCBhbmQgY2hhbmdlcyBpbiBga2VybmVsL2JwZi9jb3JlLmNgIGluY2x1ZGluZyBhIGNhbGwgdG8gYGJwZl9qaXRfbWVtX2lzX3JveCgpYC4gSXQgYWxzbyBhcHBlYXJzIHdlJ3JlIHVzaW5nIGB2bWFsbG9jYCBpbnN0ZWFkIG9mIGBicGZfaml0X2FsbG9jX2V4ZWNgIGZvciBgZC1cdTAwM2Vyd19pbWFnZWAgaW4gYGtlcm5lbC9icGYvZGlzcGF0Y2hlci5jYC5cblxuQWxyaWdodCwgbGV0J3MgZmluZCB0aGUgaGlnaC12YWx1ZSB0YXJnZXRzIGZvciBmdXp6aW5nLiBXZSBoYXZlIHNldmVyYWwgZnVuY3Rpb24gbW9kaWZpY2F0aW9uczogYGV4ZWNtZW1fYXJjaF9zZXR1cGAgKHNlZW1zIGxlc3MgaW50ZXJlc3RpbmcgZm9yIGRpcmVjdCBmdXp6aW5nLCBpdCdzIGFuIGluaXRpYWxpemF0aW9uIGZ1bmN0aW9uKSwgYGFyY2hfYnBmX3RyYW1wb2xpbmVfc2l6ZWAsIGBhbGxvY19uZXdfcGFja2AsIGBicGZfcHJvZ19wYWNrX2FsbG9jYCwgYW5kIHRoZSBhbGxvY2F0aW9uIGZ1bmN0aW9uczogYGJwZl9qaXRfYWxsb2NfZXhlY2AsIGBicGZfaml0X2FsbG9jX2V4ZWNfcndgLCBhbmQgdGhlIGZyZWUgZnVuY3Rpb24gYGJwZl9qaXRfZnJlZV9leGVjYC4gRmluYWxseSBgYnBmX2Rpc3BhdGNoZXJfY2hhbmdlX3Byb2dgIGFsc28gc2VlbXMgcmVsZXZhbnQuXG5cbk9rYXksIGxldCdzIHplcm8gaW4gb24gcG90ZW50aWFsIGZ1enppbmcgdGFyZ2V0cy4gSG1tLCBJIHRoaW5rIGBhcmNoX2JwZl90cmFtcG9saW5lX3NpemVgLCBgYnBmX3Byb2dfcGFja19hbGxvY2AsIGFuZCBgYnBmX2Rpc3BhdGNoZXJfY2hhbmdlX3Byb2dgIGFyZSBnb29kIGNhbmRpZGF0ZXMuIEhvd2V2ZXIsIGBicGZfaml0X2FsbG9jX2V4ZWNgIGFuZCBlc3BlY2lhbGx5IGBicGZfaml0X2FsbG9jX2V4ZWNfcndgIGxvb2sgbGlrZSB0aGUgKnJlYWxseSoganVpY3kgdGFyZ2V0cywgZ2l2ZW4gdGhlIG1lbW9yeSBhbGxvY2F0aW9uIGFzcGVjdC4gSSBzaG91bGQgcHJvYmFibHkgc3RhcnQgYnkgY2hlY2tpbmcgYGFyY2hfYnBmX3RyYW1wb2xpbmVfc2l6ZWAsIHRvIHNlZSBob3cgdGhhdCBmdW5jdGlvbiB3b3Jrcy5cblxuXG4iLCJJbnB1dFRva2VucyI6MzY4NSwiT3V0cHV0VG9rZW5zIjoyMywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjQzMiwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI2VDIwOjI0OjQzLjU3MDI3MTQ4MloiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxODU3MTAyMTg4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImFyY2hfYnBmX3RyYW1wb2xpbmVfc2l6ZVwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJhcmNoL2FybTY0L25ldC9icGZfaml0X2NvbXAuYz0yODQ0PWJvb2wgYnBmX2ppdF9zdXBwb3J0c19mc2Vzc2lvbih2b2lkKVxcbi0tXFxuYXJjaC9hcm02NC9uZXQvYnBmX2ppdF9jb21wLmMtMjg0OC1cXG5hcmNoL2FybTY0L25ldC9icGZfaml0X2NvbXAuYzoyODQ5OmludCBhcmNoX2JwZl90cmFtcG9saW5lX3NpemUoY29uc3Qgc3RydWN0IGJ0Zl9mdW5jX21vZGVsICptLCB1MzIgZmxhZ3MsXFxuYXJjaC9hcm02NC9uZXQvYnBmX2ppdF9jb21wLmMtMjg1MC1cXHRcXHRcXHQgICAgIHN0cnVjdCBicGZfdHJhbXBfbm9kZXMgKnRub2Rlcywgdm9pZCAqZnVuY19hZGRyKVxcbi0tXFxuYXJjaC9sb29uZ2FyY2gvbmV0L2JwZl9qaXQuYz0yMTE2PWludCBhcmNoX3ByZXBhcmVfYnBmX3RyYW1wb2xpbmUoc3RydWN0IGJwZl90cmFtcF9pbWFnZSAqaW0sIHZvaWQgKnJvX2ltYWdlLFxcbi0tXFxuYXJjaC9sb29uZ2FyY2gvbmV0L2JwZl9qaXQuYy0yMTUzLVxcbmFyY2gvbG9vbmdhcmNoL25ldC9icGZfaml0LmM6MjE1NDppbnQgYXJjaF9icGZfdHJhbXBvbGluZV9zaXplKGNvbnN0IHN0cnVjdCBidGZfZnVuY19tb2RlbCAqbSwgdTMyIGZsYWdzLFxcbmFyY2gvbG9vbmdhcmNoL25ldC9icGZfaml0LmMtMjE1NS1cXHRcXHRcXHQgICAgIHN0cnVjdCBicGZfdHJhbXBfbm9kZXMgKnRub2Rlcywgdm9pZCAqZnVuY19hZGRyKVxcbi0tXFxuYXJjaC9wb3dlcnBjL25ldC9icGZfaml0X2NvbXAuYz04MTI9c3RhdGljIGludCBfX2FyY2hfcHJlcGFyZV9icGZfdHJhbXBvbGluZShzdHJ1Y3QgYnBmX3RyYW1wX2ltYWdlICppbSwgdm9pZCAqcndfaW1hZ2UsXFxuLS1cXG5hcmNoL3Bvd2VycGMvbmV0L2JwZl9qaXRfY29tcC5jLTExOTEtXFxuYXJjaC9wb3dlcnBjL25ldC9icGZfaml0X2NvbXAuYzoxMTkyOmludCBhcmNoX2JwZl90cmFtcG9saW5lX3NpemUoY29uc3Qgc3RydWN0IGJ0Zl9mdW5jX21vZGVsICptLCB1MzIgZmxhZ3MsXFxuYXJjaC9wb3dlcnBjL25ldC9icGZfaml0X2NvbXAuYy0xMTkzLVxcdFxcdFxcdCAgICAgc3RydWN0IGJwZl90cmFtcF9ub2RlcyAqdG5vZGVzLCB2b2lkICpmdW5jX2FkZHIpXFxuLS1cXG5hcmNoL3Jpc2N2L25ldC9icGZfaml0X2NvbXA2NC5jPTEwMjI9c3RhdGljIGludCBfX2FyY2hfcHJlcGFyZV9icGZfdHJhbXBvbGluZShzdHJ1Y3QgYnBmX3RyYW1wX2ltYWdlICppbSxcXG4tLVxcbmFyY2gvcmlzY3YvbmV0L2JwZl9qaXRfY29tcDY0LmMtMTMwNi1cXG5hcmNoL3Jpc2N2L25ldC9icGZfaml0X2NvbXA2NC5jOjEzMDc6aW50IGFyY2hfYnBmX3RyYW1wb2xpbmVfc2l6ZShjb25zdCBzdHJ1Y3QgYnRmX2Z1bmNfbW9kZWwgKm0sIHUzMiBmbGFncyxcXG5hcmNoL3Jpc2N2L25ldC9icGZfaml0X2NvbXA2NC5jLTEzMDgtXFx0XFx0XFx0ICAgICBzdHJ1Y3QgYnBmX3RyYW1wX25vZGVzICp0bm9kZXMsIHZvaWQgKmZ1bmNfYWRkcilcXG4tLVxcbmFyY2gvczM5MC9uZXQvYnBmX2ppdF9jb21wLmM9MjY1MD1zdGF0aWMgaW50IF9fYXJjaF9wcmVwYXJlX2JwZl90cmFtcG9saW5lKHN0cnVjdCBicGZfdHJhbXBfaW1hZ2UgKmltLFxcbi0tXFxuYXJjaC9zMzkwL25ldC9icGZfaml0X2NvbXAuYy0yOTY1LVxcbmFyY2gvczM5MC9uZXQvYnBmX2ppdF9jb21wLmM6Mjk2NjppbnQgYXJjaF9icGZfdHJhbXBvbGluZV9zaXplKGNvbnN0IHN0cnVjdCBidGZfZnVuY19tb2RlbCAqbSwgdTMyIGZsYWdzLFxcbmFyY2gvczM5MC9uZXQvYnBmX2ppdF9jb21wLmMtMjk2Ny1cXHRcXHRcXHQgICAgIHN0cnVjdCBicGZfdHJhbXBfbm9kZXMgKnRub2Rlcywgdm9pZCAqb3JpZ19jYWxsKVxcbi0tXFxuYXJjaC94ODYvbmV0L2JwZl9qaXRfY29tcC5jPTM2Njk9aW50IGFyY2hfcHJlcGFyZV9icGZfdHJhbXBvbGluZShzdHJ1Y3QgYnBmX3RyYW1wX2ltYWdlICppbSwgdm9pZCAqaW1hZ2UsIHZvaWQgKmltYWdlX2VuZCxcXG4tLVxcbmFyY2gveDg2L25ldC9icGZfaml0X2NvbXAuYy0zNjk3LVxcbmFyY2gveDg2L25ldC9icGZfaml0X2NvbXAuYzozNjk4OmludCBhcmNoX2JwZl90cmFtcG9saW5lX3NpemUoY29uc3Qgc3RydWN0IGJ0Zl9mdW5jX21vZGVsICptLCB1MzIgZmxhZ3MsXFxuYXJjaC94ODYvbmV0L2JwZl9qaXRfY29tcC5jLTM2OTktXFx0XFx0XFx0ICAgICBzdHJ1Y3QgYnBmX3RyYW1wX25vZGVzICp0bm9kZXMsIHZvaWQgKmZ1bmNfYWRkcilcXG4tLVxcbmluY2x1ZGUvbGludXgvYnBmLmg9MTMxOT1pbnQgX19tdXN0X2NoZWNrIGFyY2hfcHJvdGVjdF9icGZfdHJhbXBvbGluZSh2b2lkICppbWFnZSwgdW5zaWduZWQgaW50IHNpemUpO1xcbmluY2x1ZGUvbGludXgvYnBmLmg6MTMyMDppbnQgYXJjaF9icGZfdHJhbXBvbGluZV9zaXplKGNvbnN0IHN0cnVjdCBidGZfZnVuY19tb2RlbCAqbSwgdTMyIGZsYWdzLFxcbmluY2x1ZGUvbGludXgvYnBmLmgtMTMyMS1cXHRcXHRcXHQgICAgIHN0cnVjdCBicGZfdHJhbXBfbm9kZXMgKnRub2Rlcywgdm9pZCAqZnVuY19hZGRyKTtcXG4tLVxcbmtlcm5lbC9icGYvYnBmX3N0cnVjdF9vcHMuYz01OTc9aW50IGJwZl9zdHJ1Y3Rfb3BzX3ByZXBhcmVfdHJhbXBvbGluZShzdHJ1Y3QgYnBmX3RyYW1wX25vZGVzICp0bm9kZXMsXFxuLS1cXG5rZXJuZWwvYnBmL2JwZl9zdHJ1Y3Rfb3BzLmMtNjEzLVxcbmtlcm5lbC9icGYvYnBmX3N0cnVjdF9vcHMuYzo2MTQ6XFx0c2l6ZSA9IGFyY2hfYnBmX3RyYW1wb2xpbmVfc2l6ZShtb2RlbCwgZmxhZ3MsIHRub2Rlcywgc3R1Yl9mdW5jKTtcXG5rZXJuZWwvYnBmL2JwZl9zdHJ1Y3Rfb3BzLmMtNjE1LVxcdGlmIChzaXplIFxcdTAwM2M9IDApXFxuLS1cXG5rZXJuZWwvYnBmL3RyYW1wb2xpbmUuYz02NzM9c3RhdGljIGludCBicGZfdHJhbXBvbGluZV91cGRhdGUoc3RydWN0IGJwZl90cmFtcG9saW5lICp0ciwgYm9vbCBsb2NrX2RpcmVjdF9tdXRleCxcXG4tLVxcbmtlcm5lbC9icGYvdHJhbXBvbGluZS5jLTcyNC1cXG5rZXJuZWwvYnBmL3RyYW1wb2xpbmUuYzo3MjU6XFx0c2l6ZSA9IGFyY2hfYnBmX3RyYW1wb2xpbmVfc2l6ZShcXHUwMDI2dHItXFx1MDAzZWZ1bmMubW9kZWwsIHRyLVxcdTAwM2VmbGFncyxcXG5rZXJuZWwvYnBmL3RyYW1wb2xpbmUuYy03MjYtXFx0XFx0XFx0XFx0XFx0dG5vZGVzLCB0ci1cXHUwMDNlZnVuYy5hZGRyKTtcXG4tLVxcbmtlcm5lbC9icGYvdHJhbXBvbGluZS5jPTE0NjE9aW50IF9fd2VhayBhcmNoX3Byb3RlY3RfYnBmX3RyYW1wb2xpbmUodm9pZCAqaW1hZ2UsIHVuc2lnbmVkIGludCBzaXplKVxcbi0tXFxua2VybmVsL2JwZi90cmFtcG9saW5lLmMtMTQ2Ni1cXG5rZXJuZWwvYnBmL3RyYW1wb2xpbmUuYzoxNDY3OmludCBfX3dlYWsgYXJjaF9icGZfdHJhbXBvbGluZV9zaXplKGNvbnN0IHN0cnVjdCBidGZfZnVuY19tb2RlbCAqbSwgdTMyIGZsYWdzLFxcbmtlcm5lbC9icGYvdHJhbXBvbGluZS5jLTE0NjgtXFx0XFx0XFx0XFx0ICAgIHN0cnVjdCBicGZfdHJhbXBfbm9kZXMgKnRub2Rlcywgdm9pZCAqZnVuY19hZGRyKVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0yNlQyMDoyNDo0NS40MjczNzgzM1oiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM1OTA0OTk3MzYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6XG5cbioqQW5hbHl6aW5nIGBicGZfcHJvZ19wYWNrX2FsbG9jYCoqXG5cbkFscmlnaHQsIGxldCdzIGRpdmUgaW50byB0aGlzIGBicGZfcHJvZ19wYWNrX2FsbG9jYCBmdW5jdGlvbi4gTXkgaW5pdGlhbCB0aG91Z2h0IHByb2Nlc3MgcmV2b2x2ZXMgYXJvdW5kIHVuZGVyc3RhbmRpbmcgaXRzIGNvcmUgcmVzcG9uc2liaWxpdHkgd2l0aGluIHRoZSBCUEYgZWNvc3lzdGVtLiBJIGltbWVkaWF0ZWx5IG5lZWQgdG8gY29uc2lkZXIgaXRzIHBvc2l0aW9uIGluIHRoZSBvdmVyYWxsIGFsbG9jYXRpb24gc3RyYXRlZ3kgZm9yIEJQRiBwcm9ncmFtcy4gSXMgaXQgYSBjZW50cmFsIGFsbG9jYXRvciwgb3IgaXMgaXQgYSBsYXllciBvbiB0b3Agb2YgYSBtb3JlIGdlbmVyYWwgbWVtb3J5IG1hbmFnZW1lbnQgc2NoZW1lPyBUaGUgbmFtZSBpdHNlbGYgc3VnZ2VzdHMgaXQncyByZWxhdGVkIHRvIFwicGFja2luZyxcIiBzbyBJJ20gZXhwZWN0aW5nIHRvIGxvb2sgaW50byBob3cgQlBGIHByb2dyYW0gc3RydWN0dXJlcyBhcmUgb3JnYW5pemVkIGFuZCBvcHRpbWl6ZWQgZm9yIG1lbW9yeSBlZmZpY2llbmN5IHdpdGhpbiB0aGlzIGZ1bmN0aW9uLiBJJ2xsIG5lZWQgdG8gZmlndXJlIG91dCB3aGF0IGRhdGEgc3RydWN0dXJlcyBpdCBtYW5pcHVsYXRlcy4gRG9lcyBpdCBkZWFsIHdpdGggcHJvZ3JhbSBoZWFkZXJzLCBpbnN0cnVjdGlvbnMsIG9yIGFzc29jaWF0ZWQgbWV0YWRhdGE/IFNwZWNpZmljYWxseSwgSSB3aWxsIGV4YW1pbmUgdGhlIGFsZ29yaXRobSBmb3IgbWVtb3J5IGFsbG9jYXRpb24uIElzIGl0IGEgc2ltcGxlIGBrbWFsbG9jYCB3cmFwcGVyLCBvciBkb2VzIGl0IGluY29ycG9yYXRlIG1vcmUgYWR2YW5jZWQgdGVjaG5pcXVlcyBsaWtlIHNsYWIgYWxsb2NhdGlvbiwgb2JqZWN0IGNhY2hpbmcsIG9yIG1heWJlIHNvbWV0aGluZyBCUEYtc3BlY2lmaWMgbGlrZSBwYWNraW5nIG11bHRpcGxlIHByb2dyYW1zIGludG8gYSBzaW5nbGUgcGFjayB0byBtaW5pbWl6ZSBvdmVyaGVhZD8gSSdsbCBhbHNvIGNoZWNrIGZvciBhbnkgcG90ZW50aWFsIHBpdGZhbGxzLCBsaWtlIG1lbW9yeSBmcmFnbWVudGF0aW9uIG9yIHJhY2UgY29uZGl0aW9ucywgdGhhdCBtYXkgYmUgaW5oZXJlbnQgaW4gaXRzIGRlc2lnbi4gRnVydGhlcm1vcmUsIEkgd2lsbCBjaGVjayB0aGUgcG90ZW50aWFsIGZvciBwZXJmb3JtYW5jZSBib3R0bGVuZWNrcyBpbiB0aGlzIGZ1bmN0aW9uLiBEb2VzIGl0IGVtcGxveSBzcGlubG9ja3Mgb3Igb3RoZXIgbG9ja2luZyBtZWNoYW5pc21zPyBIb3cgZG9lcyBpdCBoYW5kbGUgcG90ZW50aWFsIGFsbG9jYXRpb24gZmFpbHVyZXMsIGFuZCB3aGF0IGFyZSB0aGUgaW1wbGljYXRpb25zIGZvciBvdmVyYWxsIEJQRiBwcm9ncmFtIGxvYWRpbmcgYW5kIGV4ZWN1dGlvbj8gSSBleHBlY3QgdG8gaGF2ZSBhIGdvb2QgbG9vayBhdCBlcnJvciBoYW5kbGluZyBhbmQgcm9idXN0bmVzcyB0b28uIEJhc2ljYWxseSwgSSB3YW50IHRvIGZvcm0gYSBjb21wbGV0ZSBtZW50YWwgbWFwIG9mIHRoaXMgZnVuY3Rpb24ncyBwdXJwb3NlLCBkZXNpZ24sIHBvdGVudGlhbCBpc3N1ZXMsIGFuZCBvcHRpbWl6YXRpb24gcG9zc2liaWxpdGllcy5cblxuXG4iLCJJbnB1dFRva2VucyI6NjE0NCwiT3V0cHV0VG9rZW5zIjoyMiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE0LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI2VDIwOjI0OjQ5LjAxNzg3OTk0NloiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxODc4NDc4MTQ3LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImJwZl9wcm9nX3BhY2tfYWxsb2NcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiYXJjaC9hcm02NC9uZXQvYnBmX2ppdF9jb21wLmM9Mjg3MT12b2lkICphcmNoX2FsbG9jX2JwZl90cmFtcG9saW5lKHVuc2lnbmVkIGludCBzaXplKVxcbmFyY2gvYXJtNjQvbmV0L2JwZl9qaXRfY29tcC5jLTI4NzIte1xcbmFyY2gvYXJtNjQvbmV0L2JwZl9qaXRfY29tcC5jOjI4NzM6XFx0cmV0dXJuIGJwZl9wcm9nX3BhY2tfYWxsb2Moc2l6ZSwgaml0X2ZpbGxfaG9sZSk7XFxuYXJjaC9hcm02NC9uZXQvYnBmX2ppdF9jb21wLmMtMjg3NC19XFxuLS1cXG5hcmNoL2xvb25nYXJjaC9uZXQvYnBmX2ppdC5jPTE3NjM9dm9pZCAqYXJjaF9hbGxvY19icGZfdHJhbXBvbGluZSh1bnNpZ25lZCBpbnQgc2l6ZSlcXG5hcmNoL2xvb25nYXJjaC9uZXQvYnBmX2ppdC5jLTE3NjQte1xcbmFyY2gvbG9vbmdhcmNoL25ldC9icGZfaml0LmM6MTc2NTpcXHRyZXR1cm4gYnBmX3Byb2dfcGFja19hbGxvYyhzaXplLCBqaXRfZmlsbF9ob2xlKTtcXG5hcmNoL2xvb25nYXJjaC9uZXQvYnBmX2ppdC5jLTE3NjYtfVxcbi0tXFxuYXJjaC9wb3dlcnBjL25ldC9icGZfaml0X2NvbXAuYz01ODk9dm9pZCAqYXJjaF9hbGxvY19icGZfdHJhbXBvbGluZSh1bnNpZ25lZCBpbnQgc2l6ZSlcXG5hcmNoL3Bvd2VycGMvbmV0L2JwZl9qaXRfY29tcC5jLTU5MC17XFxuYXJjaC9wb3dlcnBjL25ldC9icGZfaml0X2NvbXAuYzo1OTE6XFx0cmV0dXJuIGJwZl9wcm9nX3BhY2tfYWxsb2Moc2l6ZSwgYnBmX2ppdF9maWxsX2lsbF9pbnNucyk7XFxuYXJjaC9wb3dlcnBjL25ldC9icGZfaml0X2NvbXAuYy01OTItfVxcbi0tXFxuYXJjaC9yaXNjdi9uZXQvYnBmX2ppdF9jb21wNjQuYz0xMzIyPXZvaWQgKmFyY2hfYWxsb2NfYnBmX3RyYW1wb2xpbmUodW5zaWduZWQgaW50IHNpemUpXFxuYXJjaC9yaXNjdi9uZXQvYnBmX2ppdF9jb21wNjQuYy0xMzIzLXtcXG5hcmNoL3Jpc2N2L25ldC9icGZfaml0X2NvbXA2NC5jOjEzMjQ6XFx0cmV0dXJuIGJwZl9wcm9nX3BhY2tfYWxsb2Moc2l6ZSwgYnBmX2ZpbGxfaWxsX2luc25zKTtcXG5hcmNoL3Jpc2N2L25ldC9icGZfaml0X2NvbXA2NC5jLTEzMjUtfVxcbi0tXFxuYXJjaC94ODYvbmV0L2JwZl9qaXRfY29tcC5jPTM2NTQ9dm9pZCAqYXJjaF9hbGxvY19icGZfdHJhbXBvbGluZSh1bnNpZ25lZCBpbnQgc2l6ZSlcXG5hcmNoL3g4Ni9uZXQvYnBmX2ppdF9jb21wLmMtMzY1NS17XFxuYXJjaC94ODYvbmV0L2JwZl9qaXRfY29tcC5jOjM2NTY6XFx0cmV0dXJuIGJwZl9wcm9nX3BhY2tfYWxsb2Moc2l6ZSwgaml0X2ZpbGxfaG9sZSk7XFxuYXJjaC94ODYvbmV0L2JwZl9qaXRfY29tcC5jLTM2NTctfVxcbi0tXFxuaW5jbHVkZS9saW51eC9maWx0ZXIuaD0xMzMwPWJwZl9qaXRfYmluYXJ5X3BhY2tfaGRyKGNvbnN0IHN0cnVjdCBicGZfcHJvZyAqZnApO1xcbmluY2x1ZGUvbGludXgvZmlsdGVyLmgtMTMzMS1cXG5pbmNsdWRlL2xpbnV4L2ZpbHRlci5oOjEzMzI6dm9pZCAqYnBmX3Byb2dfcGFja19hbGxvYyh1MzIgc2l6ZSwgYnBmX2ppdF9maWxsX2hvbGVfdCBicGZfZmlsbF9pbGxfaW5zbnMpO1xcbmluY2x1ZGUvbGludXgvZmlsdGVyLmgtMTMzMy12b2lkIGJwZl9wcm9nX3BhY2tfZnJlZSh2b2lkICpwdHIsIHUzMiBzaXplKTtcXG4tLVxcbmtlcm5lbC9icGYvY29yZS5jPTkxMj1zdGF0aWMgc3RydWN0IGJwZl9wcm9nX3BhY2sgKmFsbG9jX25ld19wYWNrKGJwZl9qaXRfZmlsbF9ob2xlX3QgYnBmX2ZpbGxfaWxsX2luc25zKVxcbi0tXFxua2VybmVsL2JwZi9jb3JlLmMtOTQxLVxcbmtlcm5lbC9icGYvY29yZS5jOjk0Mjp2b2lkICpicGZfcHJvZ19wYWNrX2FsbG9jKHUzMiBzaXplLCBicGZfaml0X2ZpbGxfaG9sZV90IGJwZl9maWxsX2lsbF9pbnNucylcXG5rZXJuZWwvYnBmL2NvcmUuYy05NDMte1xcbi0tXFxua2VybmVsL2JwZi9jb3JlLmM9MTE0MT1icGZfaml0X2JpbmFyeV9wYWNrX2FsbG9jKHVuc2lnbmVkIGludCBwcm9nbGVuLCB1OCAqKmltYWdlX3B0cixcXG4tLVxcbmtlcm5lbC9icGYvY29yZS5jLTExNTctXFx0XFx0cmV0dXJuIE5VTEw7XFxua2VybmVsL2JwZi9jb3JlLmM6MTE1ODpcXHRyb19oZWFkZXIgPSBicGZfcHJvZ19wYWNrX2FsbG9jKHNpemUsIGJwZl9maWxsX2lsbF9pbnNucyk7XFxua2VybmVsL2JwZi9jb3JlLmMtMTE1OS1cXHRpZiAoIXJvX2hlYWRlcikge1xcbi0tXFxua2VybmVsL2JwZi9kaXNwYXRjaGVyLmM9MTM3PXZvaWQgYnBmX2Rpc3BhdGNoZXJfY2hhbmdlX3Byb2coc3RydWN0IGJwZl9kaXNwYXRjaGVyICpkLCBzdHJ1Y3QgYnBmX3Byb2cgKmZyb20sXFxuLS1cXG5rZXJuZWwvYnBmL2Rpc3BhdGNoZXIuYy0xNDctXFx0aWYgKCFkLVxcdTAwM2VpbWFnZSkge1xcbmtlcm5lbC9icGYvZGlzcGF0Y2hlci5jOjE0ODpcXHRcXHRkLVxcdTAwM2VpbWFnZSA9IGJwZl9wcm9nX3BhY2tfYWxsb2MoUEFHRV9TSVpFLCBicGZfaml0X2ZpbGxfaG9sZV93aXRoX3plcm8pO1xcbmtlcm5lbC9icGYvZGlzcGF0Y2hlci5jLTE0OS1cXHRcXHRpZiAoIWQtXFx1MDAzZWltYWdlKVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0yNlQyMDoyNDo1MC44OTYzNjMxMTNaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoyNjUyNjYyOTgzNywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgQlBGIFByb2dyYW0gQWxsb2NhdGlvbioqXG5cbk9rYXksIHNvIEknbSB0cmFjaW5nIHRoZSBhbGxvY2F0aW9uIHByb2Nlc3MgZm9yIEJQRiBwcm9ncmFtcywgYW5kIGl0IGxvb2tzIGxpa2UgYGJwZl9wcm9nX3BhY2tfYWxsb2NgIGlzIHRoZSBrZXkgZnVuY3Rpb24uIEl0J3MgY2FsbGVkIGJ5IGEgZmV3IG90aGVyIGltcG9ydGFudCBjb21wb25lbnRzLCBzcGVjaWZpY2FsbHkgYGFyY2hfYWxsb2NfYnBmX3RyYW1wb2xpbmVgLCBgYnBmX2ppdF9iaW5hcnlfcGFja19hbGxvY2AsIGFuZCBgYnBmX2Rpc3BhdGNoZXJfY2hhbmdlX3Byb2dgLiBSaWdodCBvZmYgdGhlIGJhdCwgSSByZWNvZ25pemUgdGhhdCBgYnBmX2ppdF9iaW5hcnlfcGFja19hbGxvY2AgaXMgcmVsYXRlZCB0byB0aGUgQlBGIEpJVCBjb21waWxhdGlvbiBwcm9jZXNzLCB3aGljaCBpcyBjcml0aWNhbCBmb3IgcGVyZm9ybWFuY2UuIEFuZCwgZnJvbSB0aGUgbmFtZXMsIGBicGZfZGlzcGF0Y2hlcl9jaGFuZ2VfcHJvZ2AgaGFuZGxlcyBjaGFuZ2VzIHRvIEJQRiBkaXNwYXRjaGVycy5cblxuTm93LCBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGF0J3MgaGFwcGVuaW5nIHdpdGhpbiB0aGVzZSBjb21wb25lbnRzLiBUaGUgbmV4dCBsb2dpY2FsIHN0ZXAgaXMgdG8gZGl2ZSBpbnRvIGhvdyBgYnBmX2ppdF9hbGxvY19leGVjX3J3YCBmYWN0b3JzIGludG8gdGhpcyBwcm9jZXNzLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBpdHMgcm9sZSBpbiB0aGUgYWxsb2NhdGlvbiBhbmQgZXhlY3V0aW9uIHByb2Nlc3MuIFRoaXMgd2lsbCBoZWxwIGNsYXJpZnkgdGhlIG92ZXJhbGwgcHJvZ3JhbSBmbG93LlxuXG5cbiIsIklucHV0VG9rZW5zIjo3Njg5LCJPdXRwdXRUb2tlbnMiOjI0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTA1LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI2VDIwOjI1OjE3LjQyMjk5NVoiLCJTZXEiOjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxOTAxMDA0MjE2LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImJwZl9qaXRfYWxsb2NfZXhlY19yd1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJhcmNoL3g4Ni9uZXQvYnBmX2ppdF9jb21wLmM9MzY5OD1pbnQgYXJjaF9icGZfdHJhbXBvbGluZV9zaXplKGNvbnN0IHN0cnVjdCBidGZfZnVuY19tb2RlbCAqbSwgdTMyIGZsYWdzLFxcbi0tXFxuYXJjaC94ODYvbmV0L2JwZl9qaXRfY29tcC5jLTM3MDgtXFx0ICogbW9kdWxlIG1lbW9yeSByYW5nZS5cXG5hcmNoL3g4Ni9uZXQvYnBmX2ppdF9jb21wLmM6MzcwOTpcXHQgKiBTaW5jZSBpdCBtdXN0IGJlIHdyaXRhYmxlIHVzZSBicGZfaml0X2FsbG9jX2V4ZWNfcncoKS5cXG5hcmNoL3g4Ni9uZXQvYnBmX2ppdF9jb21wLmMtMzcxMC1cXHQgKi9cXG5hcmNoL3g4Ni9uZXQvYnBmX2ppdF9jb21wLmM6MzcxMTpcXHRpbWFnZSA9IGJwZl9qaXRfYWxsb2NfZXhlY19ydyhQQUdFX1NJWkUpO1xcbmFyY2gveDg2L25ldC9icGZfaml0X2NvbXAuYy0zNzEyLVxcdGlmICghaW1hZ2UpXFxuLS1cXG5pbmNsdWRlL2xpbnV4L2ZpbHRlci5oPTEzMjU9dm9pZCAqYnBmX2ppdF9hbGxvY19leGVjKHVuc2lnbmVkIGxvbmcgc2l6ZSk7XFxuaW5jbHVkZS9saW51eC9maWx0ZXIuaDoxMzI2OnZvaWQgKmJwZl9qaXRfYWxsb2NfZXhlY19ydyh1bnNpZ25lZCBsb25nIHNpemUpO1xcbmluY2x1ZGUvbGludXgvZmlsdGVyLmgtMTMyNy12b2lkIGJwZl9qaXRfZnJlZV9leGVjKHZvaWQgKmFkZHIpO1xcbi0tXFxua2VybmVsL2JwZi9jb3JlLmM9MTA3MD12b2lkICpicGZfaml0X2FsbG9jX2V4ZWModW5zaWduZWQgbG9uZyBzaXplKVxcbi0tXFxua2VybmVsL2JwZi9jb3JlLmMtMTA3NC1cXG5rZXJuZWwvYnBmL2NvcmUuYzoxMDc1OnZvaWQgKmJwZl9qaXRfYWxsb2NfZXhlY19ydyh1bnNpZ25lZCBsb25nIHNpemUpXFxua2VybmVsL2JwZi9jb3JlLmMtMTA3Ni17XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI2VDIwOjI1OjE5LjMyNDAwNTUyNloiLCJTZXEiOjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjI2MDYzNDMxMTUzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhvc2UgdGhvdWdodHMsIHByZXNlbnRlZCBhcyBteSBvd24gbWVudGFsIHByb2Nlc3MsIGdpdmVuIG15IGV4cGVydGlzZTpcblxuKipFeGFtaW5pbmcgQlBGIEpJVCBBbGxvY2F0aW9uIG9uIHg4NioqXG5cbkFscmlnaHQsIEknbSB0YWtpbmcgYSBsb29rIGF0IHRoaXMgYGJwZl9qaXRfYWxsb2NfZXhlY19yd2AgZnVuY3Rpb24uIFRoZSBjb2RlIHNlZW1zIHRvIGluZGljYXRlIGl0J3MgZXhjbHVzaXZlbHkgZW1wbG95ZWQgd2l0aGluIGBhcmNoX2JwZl90cmFtcG9saW5lX3NpemVgIHNwZWNpZmljYWxseSBvbiB0aGUgeDg2IGFyY2hpdGVjdHVyZS4gSG1tLCB0aGF0J3MgaW50ZXJlc3RpbmcgYW5kIGNlcnRhaW5seSB3YXJyYW50cyBjbG9zZXIgZXhhbWluYXRpb24uXG5cbk15IGltbWVkaWF0ZSBxdWVzdGlvbiBpczogd2hhdCdzIHRoZSBkZWFsIHdpdGggYGJwZl9qaXRfYWxsb2NfZXhlY2A/IElzIGl0IGFsc28geDg2LXNwZWNpZmljPyBPciBpcyBpdCB1c2VkIG1vcmUgYnJvYWRseSwgcGVyaGFwcyBhY3Jvc3Mgb3RoZXIgYXJjaGl0ZWN0dXJlcyBvciBpbiBkaWZmZXJlbnQgY29udGV4dHMgd2l0aGluIHRoZSBCUEYgSklUIGNvbXBpbGF0aW9uIHByb2Nlc3M/IEl0J3MgaW1wb3J0YW50IHRvIHVuZGVyc3RhbmQgdGhlIHJlbGF0aW9uc2hpcCBiZXR3ZWVuIHRoZXNlIHR3byBhbGxvY2F0aW9uIHJvdXRpbmVzLiBBcmUgdGhleSBjb21wbGVtZW50YXJ5PyBEbyB0aGV5IGhhdmUgZGlmZmVyZW50IHB1cnBvc2VzPyBJcyBvbmUgYSBzdWJzZXQgb2YgdGhlIG90aGVyPyBBcmUgdGhlcmUgYW55IHVzZSBjYXNlcyB3aGVyZSBvbmUgaXMgcHJlZmVycmVkIG92ZXIgdGhlIG90aGVyIGFuZCBpZiBzbyB3aHk/IFRoaXMgZGlzdGluY3Rpb24gaXMgY3J1Y2lhbCBmb3IgZ2V0dGluZyBhIGZ1bGwgZ3Jhc3Agb24gbWVtb3J5IG1hbmFnZW1lbnQgaW4gdGhlIEpJVCBlbnZpcm9ubWVudCwgZXNwZWNpYWxseSB3aGVuIG9wdGltaXppbmcgZm9yIHZhcmlvdXMgYXJjaGl0ZWN0dXJlcyBvciBleHBsb3JpbmcgbmV3IGZlYXR1cmVzIGFuZCBjYXBhYmlsaXRpZXMgd2l0aGluIHRoZSBCUEYgZnJhbWV3b3JrLiBJIG5lZWQgdG8gZGlnIGRlZXBlciBpbnRvIHRoZSBjb2RlIGFuZCB0aGUgd2lkZXIgQlBGIGVjb3N5c3RlbSB0byBkZXRlcm1pbmUgd2hlcmUgdGhlc2UgYWxsb2NhdGlvbiBmdW5jdGlvbnMgZGl2ZXJnZS5cblxuXG4iLCJJbnB1dFRva2VucyI6ODQ0NiwiT3V0cHV0VG9rZW5zIjoyMiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjQ2LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI2VDIwOjI1OjQ1LjM4NzQzODI3OVoiLCJTZXEiOjEwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTc1MDE2MzA4OSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJicGZfaml0X2FsbG9jX2V4ZWNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiYXJjaC9hcm02NC9uZXQvYnBmX2ppdF9jb21wLmM9MjMyMD12b2lkICpicGZfYXJjaF90ZXh0X2NvcHkodm9pZCAqZHN0LCB2b2lkICpzcmMsIHNpemVfdCBsZW4pXFxuLS1cXG5hcmNoL2FybTY0L25ldC9icGZfaml0X2NvbXAuYy0yMzI2LVxcbmFyY2gvYXJtNjQvbmV0L2JwZl9qaXRfY29tcC5jOjIzMjc6dTY0IGJwZl9qaXRfYWxsb2NfZXhlY19saW1pdCh2b2lkKVxcbmFyY2gvYXJtNjQvbmV0L2JwZl9qaXRfY29tcC5jLTIzMjgte1xcbi0tXFxuYXJjaC9yaXNjdi9uZXQvYnBmX2ppdF9jb3JlLmM9NDQ9c3RydWN0IGJwZl9wcm9nICpicGZfaW50X2ppdF9jb21waWxlKHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYsIHN0cnVjdCBicGZfcHJvZyAqcHJvZylcXG4tLVxcbmFyY2gvcmlzY3YvbmV0L2JwZl9qaXRfY29yZS5jLTE5Mi1cXG5hcmNoL3Jpc2N2L25ldC9icGZfaml0X2NvcmUuYzoxOTM6dTY0IGJwZl9qaXRfYWxsb2NfZXhlY19saW1pdCh2b2lkKVxcbmFyY2gvcmlzY3YvbmV0L2JwZl9qaXRfY29yZS5jLTE5NC17XFxuLS1cXG5hcmNoL3g4Ni9uZXQvYnBmX2ppdF9jb21wLmM9MzY5OD1pbnQgYXJjaF9icGZfdHJhbXBvbGluZV9zaXplKGNvbnN0IHN0cnVjdCBidGZfZnVuY19tb2RlbCAqbSwgdTMyIGZsYWdzLFxcbi0tXFxuYXJjaC94ODYvbmV0L2JwZl9qaXRfY29tcC5jLTM3MDgtXFx0ICogbW9kdWxlIG1lbW9yeSByYW5nZS5cXG5hcmNoL3g4Ni9uZXQvYnBmX2ppdF9jb21wLmM6MzcwOTpcXHQgKiBTaW5jZSBpdCBtdXN0IGJlIHdyaXRhYmxlIHVzZSBicGZfaml0X2FsbG9jX2V4ZWNfcncoKS5cXG5hcmNoL3g4Ni9uZXQvYnBmX2ppdF9jb21wLmMtMzcxMC1cXHQgKi9cXG5hcmNoL3g4Ni9uZXQvYnBmX2ppdF9jb21wLmM6MzcxMTpcXHRpbWFnZSA9IGJwZl9qaXRfYWxsb2NfZXhlY19ydyhQQUdFX1NJWkUpO1xcbmFyY2gveDg2L25ldC9icGZfaml0X2NvbXAuYy0zNzEyLVxcdGlmICghaW1hZ2UpXFxuLS1cXG5pbmNsdWRlL2xpbnV4L2ZpbHRlci5oPTEzMjM9dm9pZCBicGZfaml0X2JpbmFyeV9mcmVlKHN0cnVjdCBicGZfYmluYXJ5X2hlYWRlciAqaGRyKTtcXG5pbmNsdWRlL2xpbnV4L2ZpbHRlci5oOjEzMjQ6dTY0IGJwZl9qaXRfYWxsb2NfZXhlY19saW1pdCh2b2lkKTtcXG5pbmNsdWRlL2xpbnV4L2ZpbHRlci5oOjEzMjU6dm9pZCAqYnBmX2ppdF9hbGxvY19leGVjKHVuc2lnbmVkIGxvbmcgc2l6ZSk7XFxuaW5jbHVkZS9saW51eC9maWx0ZXIuaDoxMzI2OnZvaWQgKmJwZl9qaXRfYWxsb2NfZXhlY19ydyh1bnNpZ25lZCBsb25nIHNpemUpO1xcbmluY2x1ZGUvbGludXgvZmlsdGVyLmgtMTMyNy12b2lkIGJwZl9qaXRfZnJlZV9leGVjKHZvaWQgKmFkZHIpO1xcbi0tXFxua2VybmVsL2JwZi9jb3JlLmM9OTEyPXN0YXRpYyBzdHJ1Y3QgYnBmX3Byb2dfcGFjayAqYWxsb2NfbmV3X3BhY2soYnBmX2ppdF9maWxsX2hvbGVfdCBicGZfZmlsbF9pbGxfaW5zbnMpXFxuLS1cXG5rZXJuZWwvYnBmL2NvcmUuYy05MTktXFx0XFx0cmV0dXJuIE5VTEw7XFxua2VybmVsL2JwZi9jb3JlLmM6OTIwOlxcdHBhY2stXFx1MDAzZXB0ciA9IGJwZl9qaXRfYWxsb2NfZXhlYyhCUEZfUFJPR19QQUNLX1NJWkUpO1xcbmtlcm5lbC9icGYvY29yZS5jLTkyMS1cXHRpZiAoIXBhY2stXFx1MDAzZXB0cilcXG4tLVxcbmtlcm5lbC9icGYvY29yZS5jPTk0Mj12b2lkICpicGZfcHJvZ19wYWNrX2FsbG9jKHUzMiBzaXplLCBicGZfaml0X2ZpbGxfaG9sZV90IGJwZl9maWxsX2lsbF9pbnNucylcXG4tLVxcbmtlcm5lbC9icGYvY29yZS5jLTk1MS1cXHRcXHRzaXplID0gcm91bmRfdXAoc2l6ZSwgUEFHRV9TSVpFKTtcXG5rZXJuZWwvYnBmL2NvcmUuYzo5NTI6XFx0XFx0cHRyID0gYnBmX2ppdF9hbGxvY19leGVjKHNpemUpO1xcbmtlcm5lbC9icGYvY29yZS5jLTk1My1cXHRcXHRpZiAocHRyIFxcdTAwMjZcXHUwMDI2ICFicGZfaml0X21lbV9pc19yb3goKSkge1xcbi0tXFxua2VybmVsL2JwZi9jb3JlLmM9MTAyOD1zdGF0aWMgYXRvbWljX2xvbmdfdCBicGZfaml0X2N1cnJlbnQ7XFxuLS1cXG5rZXJuZWwvYnBmL2NvcmUuYy0xMDMzLSAqL1xcbmtlcm5lbC9icGYvY29yZS5jOjEwMzQ6dTY0IF9fd2VhayBicGZfaml0X2FsbG9jX2V4ZWNfbGltaXQodm9pZClcXG5rZXJuZWwvYnBmL2NvcmUuYy0xMDM1LXtcXG4tLVxcbmtlcm5lbC9icGYvY29yZS5jPTEwNDM9c3RhdGljIGludCBfX2luaXQgYnBmX2ppdF9jaGFyZ2VfaW5pdCh2b2lkKVxcbi0tXFxua2VybmVsL2JwZi9jb3JlLmMtMTA0NS1cXHQvKiBPbmx5IHVzZWQgYXMgaGV1cmlzdGljIGhlcmUgdG8gZGVyaXZlIGxpbWl0LiAqL1xcbmtlcm5lbC9icGYvY29yZS5jOjEwNDY6XFx0YnBmX2ppdF9saW1pdF9tYXggPSBicGZfaml0X2FsbG9jX2V4ZWNfbGltaXQoKTtcXG5rZXJuZWwvYnBmL2NvcmUuYy0xMDQ3LVxcdGJwZl9qaXRfbGltaXQgPSBtaW5fdCh1NjQsIHJvdW5kX3VwKGJwZl9qaXRfbGltaXRfbWF4IFxcdTAwM2VcXHUwMDNlIDEsXFxuLS1cXG5rZXJuZWwvYnBmL2NvcmUuYz0xMDY1PXZvaWQgYnBmX2ppdF91bmNoYXJnZV9tb2RtZW0odTMyIHNpemUpXFxuLS1cXG5rZXJuZWwvYnBmL2NvcmUuYy0xMDY5LVxcbmtlcm5lbC9icGYvY29yZS5jOjEwNzA6dm9pZCAqYnBmX2ppdF9hbGxvY19leGVjKHVuc2lnbmVkIGxvbmcgc2l6ZSlcXG5rZXJuZWwvYnBmL2NvcmUuYy0xMDcxLXtcXG4tLVxcbmtlcm5lbC9icGYvY29yZS5jLTEwNzQtXFxua2VybmVsL2JwZi9jb3JlLmM6MTA3NTp2b2lkICpicGZfaml0X2FsbG9jX2V4ZWNfcncodW5zaWduZWQgbG9uZyBzaXplKVxcbmtlcm5lbC9icGYvY29yZS5jLTEwNzYte1xcbi0tXFxua2VybmVsL2JwZi9jb3JlLmM9MTA4Nj1icGZfaml0X2JpbmFyeV9hbGxvYyh1bnNpZ25lZCBpbnQgcHJvZ2xlbiwgdTggKippbWFnZV9wdHIsXFxuLS1cXG5rZXJuZWwvYnBmL2NvcmUuYy0xMTAzLVxcdFxcdHJldHVybiBOVUxMO1xcbmtlcm5lbC9icGYvY29yZS5jOjExMDQ6XFx0aGRyID0gYnBmX2ppdF9hbGxvY19leGVjKHNpemUpO1xcbmtlcm5lbC9icGYvY29yZS5jLTExMDUtXFx0aWYgKCFoZHIpIHtcXG4tLVxcbmtlcm5lbC9icGYvdHJhbXBvbGluZS5jPTE0NDA9dm9pZCAqIF9fd2VhayBhcmNoX2FsbG9jX2JwZl90cmFtcG9saW5lKHVuc2lnbmVkIGludCBzaXplKVxcbi0tXFxua2VybmVsL2JwZi90cmFtcG9saW5lLmMtMTQ0NS1cXHRcXHRyZXR1cm4gTlVMTDtcXG5rZXJuZWwvYnBmL3RyYW1wb2xpbmUuYzoxNDQ2OlxcdGltYWdlID0gYnBmX2ppdF9hbGxvY19leGVjKFBBR0VfU0laRSk7XFxua2VybmVsL2JwZi90cmFtcG9saW5lLmMtMTQ0Ny1cXHRpZiAoaW1hZ2UpXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI2VDIwOjI1OjQ3LjEzNzYwNjMzOFoiLCJTZXEiOjExLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0MzgzMTk3OTk5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgS2VybmVsJ3MgQlBGIEpJVCBNZW1vcnkgQWxsb2NhdGlvbiBTdHJhdGVneSoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IGhvdyB0aGUgQlBGIEpJVCBtZW1vcnkgaXMgYmVpbmcgbWFuYWdlZCB3aXRoaW4gdGhlIGtlcm5lbC4gTXkgaW5pdGlhbCBpbXByZXNzaW9uIGlzIHRoYXQgYGJwZl9qaXRfYWxsb2NfZXhlY2AgaXMgYSBrZXkgZnVuY3Rpb24sIGhlYXZpbHkgdXNlZCBpbiBhbGxvY2F0aW5nIG1lbW9yeSBmb3IgY29tcGlsZWQgQlBGIHByb2dyYW1zLCBwYXJ0aWN1bGFybHkgd2l0aGluIHJvdXRpbmVzIGxpa2UgYGFsbG9jX25ld19wYWNrYCwgYGJwZl9wcm9nX3BhY2tfYWxsb2NgLCBgYnBmX2ppdF9iaW5hcnlfYWxsb2NgLCBhbmQgYGFyY2hfYWxsb2NfYnBmX3RyYW1wb2xpbmVgLlxuXG5UaGUgY3VycmVudCBwYXRjaCBJJ20gZXhhbWluaW5nIGFwcGVhcnMgdG8gYmUgbWFraW5nIHNvbWUgc2lnbmlmaWNhbnQgY2hhbmdlcy4gSSBzZWUgbW9kaWZpY2F0aW9ucyB0byBgYWxsb2NfbmV3X3BhY2tgIGFuZCBgYnBmX3Byb2dfcGFja19hbGxvY2Ag4oCTIHNwZWNpZmljYWxseSwgaXQgc2VlbXMgbGlrZSB0aGVyZSdzIG5vdyBhIGNoZWNrIGZvciBgYnBmX2ppdF9tZW1faXNfcm94KClgLiBUaGlzIHN1Z2dlc3RzIHdlJ3JlIHByb2JhYmx5IGFkZHJlc3Npbmcgc2VjdXJpdHkgY29uY2VybnMgb3IgcGVyaGFwcyB0cnlpbmcgdG8gb3B0aW1pemUgcmVhZC1vbmx5IG1lbW9yeSBzZWdtZW50cyBmb3IgSklULWVkIGNvZGUuIEludGVyZXN0aW5nLlxuXG5UaGVuLCB0aGVyZSdzIGFub3RoZXIgY2hhbmdlIHJlbGF0ZWQgdG8gYGJwZl9kaXNwYXRjaGVyX2NoYW5nZV9wcm9nYC4gVGhpcyBpcyB3aGVyZSB0aGluZ3MgZ2V0IHJlYWxseSBpbnRlcmVzdGluZzsgdGhlIHBhdGNoIGlzIHN3aXRjaGluZyBpdCBvdmVyIHRvIHVzZSBgdm1hbGxvY2AgaW5zdGVhZCBvZiBgYnBmX2ppdF9hbGxvY19leGVjYC4gVGhpcyBpcyBhIHByZXR0eSBzaWduaWZpY2FudCBhbHRlcmF0aW9uLCBhcyBgdm1hbGxvY2AgaGFzIGRpZmZlcmVudCBhbGxvY2F0aW9uIHNlbWFudGljcyBhbmQgbWVtb3J5IG1hcHBpbmcgY2hhcmFjdGVyaXN0aWNzLiBJIG5lZWQgdG8gZGlnIGRlZXBlciBpbnRvIHRoZSByYXRpb25hbGUgaGVyZS4gVGhlIGltcGxpY2F0aW9ucyBjb3VsZCBiZSBicm9hZCwgcG90ZW50aWFsbHkgaW1wYWN0aW5nIHBlcmZvcm1hbmNlLCBzZWN1cml0eSwgb3IgZXZlbiBob3cgQlBGIHByb2dyYW1zIGFyZSBkeW5hbWljYWxseSBsb2FkZWQgYW5kIGV4ZWN1dGVkLiBMZXQncyBzdGFydCBieSBzY3J1dGluaXppbmcgdGhlIGNoYW5nZXMgaW4gYGJwZl9kaXNwYXRjaGVyX2NoYW5nZV9wcm9nYCB0byB1bmRlcnN0YW5kIHRoZSBpbnRlbnQgYW5kIHBvdGVudGlhbCBjb25zZXF1ZW5jZXMgb2YgdGhpcyBgdm1hbGxvY2Agc2hpZnQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjEwMzI3LCJPdXRwdXRUb2tlbnMiOjIyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTM2LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI2VDIwOjI1OjUxLjUyMDgwNjQwN1oiLCJTZXEiOjEyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTY3NjY0MDgzMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJicGZfZGlzcGF0Y2hlcl9jaGFuZ2VfcHJvZ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJpbmNsdWRlL2xpbnV4L2JwZi5oPTE1MjU9aW50IGJwZl90cmFtcG9saW5lX211bHRpX2RldGFjaChzdHJ1Y3QgYnBmX3Byb2cgKnByb2csXFxuLS1cXG5pbmNsdWRlL2xpbnV4L2JwZi5oLTE1OTAtI2RlZmluZSBCUEZfRElTUEFUQ0hFUl9QVFIobmFtZSkgKFxcdTAwMjZicGZfZGlzcGF0Y2hlcl8jI25hbWUpXFxuaW5jbHVkZS9saW51eC9icGYuaDoxNTkxOnZvaWQgYnBmX2Rpc3BhdGNoZXJfY2hhbmdlX3Byb2coc3RydWN0IGJwZl9kaXNwYXRjaGVyICpkLCBzdHJ1Y3QgYnBmX3Byb2cgKmZyb20sXFxuaW5jbHVkZS9saW51eC9icGYuaC0xNTkyLVxcdFxcdFxcdFxcdHN0cnVjdCBicGZfcHJvZyAqdG8pO1xcbi0tXFxuaW5jbHVkZS9saW51eC9icGYuaD0xNjI0PXN0YXRpYyBpbmxpbmUgdm9pZCBicGZfdHJhbXBvbGluZV9wdXQoc3RydWN0IGJwZl90cmFtcG9saW5lICp0cikge31cXG4tLVxcbmluY2x1ZGUvbGludXgvYnBmLmgtMTYyOC0jZGVmaW5lIEJQRl9ESVNQQVRDSEVSX1BUUihuYW1lKSBOVUxMXFxuaW5jbHVkZS9saW51eC9icGYuaDoxNjI5OnN0YXRpYyBpbmxpbmUgdm9pZCBicGZfZGlzcGF0Y2hlcl9jaGFuZ2VfcHJvZyhzdHJ1Y3QgYnBmX2Rpc3BhdGNoZXIgKmQsXFxuaW5jbHVkZS9saW51eC9icGYuaC0xNjMwLVxcdFxcdFxcdFxcdFxcdCAgICAgIHN0cnVjdCBicGZfcHJvZyAqZnJvbSxcXG4tLVxcbmtlcm5lbC9icGYvZGlzcGF0Y2hlci5jPTEwNj1zdGF0aWMgdm9pZCBicGZfZGlzcGF0Y2hlcl91cGRhdGUoc3RydWN0IGJwZl9kaXNwYXRjaGVyICpkLCBpbnQgcHJldl9udW1fcHJvZ3MpXFxuLS1cXG5rZXJuZWwvYnBmL2Rpc3BhdGNoZXIuYy0xMzYtXFxua2VybmVsL2JwZi9kaXNwYXRjaGVyLmM6MTM3OnZvaWQgYnBmX2Rpc3BhdGNoZXJfY2hhbmdlX3Byb2coc3RydWN0IGJwZl9kaXNwYXRjaGVyICpkLCBzdHJ1Y3QgYnBmX3Byb2cgKmZyb20sXFxua2VybmVsL2JwZi9kaXNwYXRjaGVyLmMtMTM4LVxcdFxcdFxcdFxcdHN0cnVjdCBicGZfcHJvZyAqdG8pXFxuLS1cXG5uZXQvY29yZS9maWx0ZXIuYz0xMjAyNj12b2lkIGJwZl9wcm9nX2NoYW5nZV94ZHAoc3RydWN0IGJwZl9wcm9nICpwcmV2X3Byb2csIHN0cnVjdCBicGZfcHJvZyAqcHJvZylcXG5uZXQvY29yZS9maWx0ZXIuYy0xMjAyNy17XFxubmV0L2NvcmUvZmlsdGVyLmM6MTIwMjg6XFx0YnBmX2Rpc3BhdGNoZXJfY2hhbmdlX3Byb2coQlBGX0RJU1BBVENIRVJfUFRSKHhkcCksIHByZXZfcHJvZywgcHJvZyk7XFxubmV0L2NvcmUvZmlsdGVyLmMtMTIwMjktfVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0yNlQyMDoyNTo1My4xOTc0NTE2OTdaIiwiU2VxIjoxMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzAwODA3ODg5OCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBteSBvd24gbWVudGFsIHByb2Nlc3Npbmc6XG5cbioqRm9jdXNzaW5nIG9uIEZ1enppbmcgVGFyZ2V0IElkZW50aWZpY2F0aW9uKipcblxuQWxyaWdodCwgbGV0J3Mgc2VlLCBgYnBmX2Rpc3BhdGNoZXJfY2hhbmdlX3Byb2dgLi4uIHJpZ2h0LCB0aGF0IGdldHMgY2FsbGVkIGJ5IGBicGZfcHJvZ19jaGFuZ2VfeGRwYC4gSG1tLCB0aGF0IHN1Z2dlc3RzIGEgZGVmaW5pdGUgcG9pbnQgb2YgaW50ZXJlc3QgZm9yIGZ1enppbmchIEl0J3MgY2xlYXJseSBhIHJlYWNoYWJsZSBjb2RlIHBhdGgsIHNvIHRoYXQncyBhIGdvb2Qgc3RhcnRpbmcgcG9pbnQgdG8gZGlnIGludG8uIE5vdywgSSBzaG91bGQgcHJvYmFibHkgY2hlY2sgYGJwZl9qaXRfbWVtX2lzX3JveGAuLi4gdGhhdCBmdW5jdGlvbidzIG9mdGVuIGFzc29jaWF0ZWQgd2l0aCBtZW1vcnkgcHJvdGVjdGlvbiBpc3N1ZXMuIEknbGwgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyB0aGVzZSBwaWVjZXMgZml0IHRvZ2V0aGVyIHRvIGNyYWZ0IGVmZmVjdGl2ZSBmdXp6aW5nIGhhcm5lc3Nlcy5cblxuXG4iLCJJbnB1dFRva2VucyI6MTEzNDcsIk91dHB1dFRva2VucyI6MjQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo1MiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNi0yNlQyMDoyNTo1Ni4yMDU1MzMzNjRaIiwiU2VxIjoxNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE2OTQ0NTA4NzQsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiYnBmX2ppdF9tZW1faXNfcm94XCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImtlcm5lbC9icGYvY29yZS5jPTg4OT1zdGF0aWMgTElTVF9IRUFEKHBhY2tfbGlzdCk7XFxuLS1cXG5rZXJuZWwvYnBmL2NvcmUuYy05MDYtXFxua2VybmVsL2JwZi9jb3JlLmM6OTA3OnN0YXRpYyBib29sIGJwZl9qaXRfbWVtX2lzX3JveCh2b2lkKVxcbmtlcm5lbC9icGYvY29yZS5jLTkwOC17XFxuLS1cXG5rZXJuZWwvYnBmL2NvcmUuYz05MTI9c3RhdGljIHN0cnVjdCBicGZfcHJvZ19wYWNrICphbGxvY19uZXdfcGFjayhicGZfaml0X2ZpbGxfaG9sZV90IGJwZl9maWxsX2lsbF9pbnNucylcXG4tLVxcbmtlcm5lbC9icGYvY29yZS5jLTkyNC1cXG5rZXJuZWwvYnBmL2NvcmUuYzo5MjU6XFx0aWYgKCFicGZfaml0X21lbV9pc19yb3goKSkge1xcbmtlcm5lbC9icGYvY29yZS5jLTkyNi1cXHRcXHRicGZfZmlsbF9pbGxfaW5zbnMocGFjay1cXHUwMDNlcHRyLCBCUEZfUFJPR19QQUNLX1NJWkUpO1xcbi0tXFxua2VybmVsL2JwZi9jb3JlLmM9OTQyPXZvaWQgKmJwZl9wcm9nX3BhY2tfYWxsb2ModTMyIHNpemUsIGJwZl9qaXRfZmlsbF9ob2xlX3QgYnBmX2ZpbGxfaWxsX2luc25zKVxcbi0tXFxua2VybmVsL2JwZi9jb3JlLmMtOTUyLVxcdFxcdHB0ciA9IGJwZl9qaXRfYWxsb2NfZXhlYyhzaXplKTtcXG5rZXJuZWwvYnBmL2NvcmUuYzo5NTM6XFx0XFx0aWYgKHB0ciBcXHUwMDI2XFx1MDAyNiAhYnBmX2ppdF9tZW1faXNfcm94KCkpIHtcXG5rZXJuZWwvYnBmL2NvcmUuYy05NTQtXFx0XFx0XFx0aW50IGVycjtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjZUMjA6MjU6NTcuODk5OTkxNDg4WiIsIlNlcSI6MTUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQ5MTA5OTkzMDgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBCUEYgSklUIE1lbW9yeSBBbGxvY2F0aW9uIFBhdGNoKipcblxuT2theSwgc28gdGhpcyBwYXRjaCBpcyBjbGVhcmx5IGZvY3VzZWQgb24gaG93IEJQRiBKSVQgbWVtb3J5IGlzIGFsbG9jYXRlZCBhbmQgbWFuYWdlZCwgc3BlY2lmaWNhbGx5IHRhcmdldGluZyB0aGUgaW50ZXJhY3Rpb24gYmV0d2VlbiBgYWxsb2NfbmV3X3BhY2tgLCBgYnBmX3Byb2dfcGFja19hbGxvY2AsIGFuZCB0aGUgbWVtb3J5IHByb3RlY3Rpb24gbWVjaGFuaXNtcy4gVGhlIGNvbmRpdGlvbmFsIGNhbGwgdG8gYHNldF9tZW1vcnlfcm94YCBiYXNlZCBvbiBgYnBmX2ppdF9tZW1faXNfcm94KClgIGlzIHRoZSBnaXZlYXdheSDigJMgdGhpcyBpcyBhbGwgYWJvdXQgbWFraW5nIHRoZSBKSVQnZCBjb2RlIHJlYWQtb25seSB3aGVyZSBhcHByb3ByaWF0ZS5cblxuTXkgcHJpbWFyeSBhcmVhcyBvZiBpbnRlcmVzdCB3aXRoaW4gdGhlIGNvZGUgYXJlLCBuYXR1cmFsbHksIHRoZXNlIGtleSBzeW1ib2xzOiBgYnBmX2ppdF9hbGxvY19leGVjYCwgYGJwZl9qaXRfYWxsb2NfZXhlY19yd2AsIGBicGZfcHJvZ19wYWNrX2FsbG9jYCwgYGFsbG9jX25ld19wYWNrYCwgYW5kIGBicGZfZGlzcGF0Y2hlcl9jaGFuZ2VfcHJvZ2AuIEknbGwgbmVlZCB0byB1bmRlcnN0YW5kIGV4YWN0bHkgaG93IHRoZXNlIGZ1bmN0aW9ucyBpbnRlcmFjdCBhbmQgd2hlcmUgdGhpcyBgc2V0X21lbW9yeV9yb3hgIGNhbGwgZml0cyBpbiB0aGUgb3ZlcmFsbCBwaWN0dXJlIG9mIGNvZGUgZ2VuZXJhdGlvbiBhbmQgZXhlY3V0aW9uLlxuXG5Ob3csIGxldCdzIHNlZSBhYm91dCByZWxldmFudCBjb25maWd1cmF0aW9ucy4gYENPTkZJR19CUEZfSklUYCBpcyBhIGdpdmVuOyB3aXRob3V0IGl0LCB0aGUgSklUIGlzbid0IGV2ZW4gZW5hYmxlZCwgYW5kIHRoaXMgcGF0Y2ggd291bGQgYmUgbW9vdC4gSG93ZXZlciwgdGhlIHVzZSBvZiBgQ09ORklHX0JQRl9TWVNDQUxMYCB3aWxsIHRlbGwgbWUgaWYgdGhlIG1vZGlmaWNhdGlvbnMgd291bGQgYWxzbyBhZmZlY3Qgc3lzY2FsbCBCUEYgcHJvZ3JhbXMuIEknbGwgbmVlZCB0byBkZWx2ZSBpbnRvIHRoZSBjb2RlIHRvIGRldGVybWluZSB3aGV0aGVyIHRoZSBwYXRjaCB0b3VjaGVzIGFyZWFzIG9mIGNvZGUgYXNzb2NpYXRlZCB3aXRoIHN5c2NhbGwgQlBGIHByb2dyYW1zLCB3aGljaCB3b3VsZCBpbmZvcm0gbWUgYWJvdXQgdGhlIHBvdGVudGlhbCBzY29wZSBvZiB0aGlzIGNoYW5nZS4gSSdsbCBzdGFydCBieSBjaGVja2luZyBga2VybmVsL2JwZi9jb3JlLmNgIGFuZCBga2VybmVsL2JwZi9kaXNwYXRjaGVyLmNgLCB0aGF0J3MgdXN1YWxseSB3aGVyZSB0aGUgQlBGIGNvcmUgZnVuY3Rpb25hbGl0eSBhbmQgdGhlIGRpc3BhdGNoaW5nIGxvZ2ljIHJlc2lkZS5cblxuXG4iLCJJbnB1dFRva2VucyI6MTE5MzQsIk91dHB1dFRva2VucyI6MjEsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxODksIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjZUMjA6MjY6MDIuODEwOTkyOTY2WiIsIlNlcSI6MTYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNzE3OTkyMDU3LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIkNPTkZJR19CUEZfSklUXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIkRvY3VtZW50YXRpb24vbmV0d29ya2luZy9maWx0ZXIucnN0PTUxNj1Qb3dlclBDLCBBUk0sIEFSTTY0LCBNSVBTLCBSSVNDLVYsIHMzOTAsIGFuZCBBUkMgYW5kIGNhbiBiZSBlbmFibGVkIHRocm91Z2hcXG5Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvZmlsdGVyLnJzdDo1MTc6Q09ORklHX0JQRl9KSVQuIFRoZSBKSVQgY29tcGlsZXIgaXMgdHJhbnNwYXJlbnRseSBpbnZva2VkIGZvciBlYWNoXFxuRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL2ZpbHRlci5yc3QtNTE4LWF0dGFjaGVkIGZpbHRlciBmcm9tIHVzZXIgc3BhY2Ugb3IgZm9yIGludGVybmFsIGtlcm5lbCB1c2VycyBpZiBpdCBoYXNcXG4tLVxcbkRvY3VtZW50YXRpb24vbmV0d29ya2luZy9maWx0ZXIucnN0PTUyOD1FeGFtcGxlIG91dHB1dCBmcm9tIGRtZXNnOjpcXG4tLVxcbkRvY3VtZW50YXRpb24vbmV0d29ya2luZy9maWx0ZXIucnN0LTUzNi1cXG5Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvZmlsdGVyLnJzdDo1Mzc6V2hlbiBDT05GSUdfQlBGX0pJVF9BTFdBWVNfT04gaXMgZW5hYmxlZCwgYnBmX2ppdF9lbmFibGUgaXMgcGVybWFuZW50bHkgc2V0IHRvIDEgYW5kXFxuRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL2ZpbHRlci5yc3QtNTM4LXNldHRpbmcgYW55IG90aGVyIHZhbHVlIHRoYW4gdGhhdCB3aWxsIHJldHVybiBpbiBmYWlsdXJlLiBUaGlzIGlzIGV2ZW4gdGhlIGNhc2UgZm9yXFxuLS1cXG5Eb2N1bWVudGF0aW9uL3NjaGVkdWxlci9zY2hlZC1leHQucnN0PTM1PW9wdGlvbnMgc2hvdWxkIGJlIGVuYWJsZWQgdG8gdXNlIHNjaGVkX2V4dDpcXG4tLVxcbkRvY3VtZW50YXRpb24vc2NoZWR1bGVyL3NjaGVkLWV4dC5yc3QtNDEtICAgIENPTkZJR19CUEZfU1lTQ0FMTD15XFxuRG9jdW1lbnRhdGlvbi9zY2hlZHVsZXIvc2NoZWQtZXh0LnJzdDo0MjogICAgQ09ORklHX0JQRl9KSVQ9eVxcbkRvY3VtZW50YXRpb24vc2NoZWR1bGVyL3NjaGVkLWV4dC5yc3QtNDMtICAgIENPTkZJR19ERUJVR19JTkZPX0JURj15XFxuRG9jdW1lbnRhdGlvbi9zY2hlZHVsZXIvc2NoZWQtZXh0LnJzdDo0NDogICAgQ09ORklHX0JQRl9KSVRfQUxXQVlTX09OPXlcXG5Eb2N1bWVudGF0aW9uL3NjaGVkdWxlci9zY2hlZC1leHQucnN0OjQ1OiAgICBDT05GSUdfQlBGX0pJVF9ERUZBVUxUX09OPXlcXG5Eb2N1bWVudGF0aW9uL3NjaGVkdWxlci9zY2hlZC1leHQucnN0LTQ2LVxcbi0tXFxuYXJjaC9hcmMvbmV0L01ha2VmaWxlPTM9aWZlcSAoJChDT05GSUdfSVNBX0FSQ1YyKSx5KVxcbmFyY2gvYXJjL25ldC9NYWtlZmlsZTo0OlxcdG9iai0kKENPTkZJR19CUEZfSklUKSArPSBicGZfaml0X2NvcmUub1xcbmFyY2gvYXJjL25ldC9NYWtlZmlsZTo1OlxcdG9iai0kKENPTkZJR19CUEZfSklUKSArPSBicGZfaml0X2FyY3YyLm9cXG5hcmNoL2FyYy9uZXQvTWFrZWZpbGUtNi1lbmRpZlxcbi0tXFxuYXJjaC9hcm0vbmV0L01ha2VmaWxlLTMtXFxuYXJjaC9hcm0vbmV0L01ha2VmaWxlOjQ6b2JqLSQoQ09ORklHX0JQRl9KSVQpICs9IGJwZl9qaXRfMzIub1xcbi0tXFxuYXJjaC9hcm02NC9jb25maWdzL2RlZmNvbmZpZz02PUNPTkZJR19CUEZfU1lTQ0FMTD15XFxuYXJjaC9hcm02NC9jb25maWdzL2RlZmNvbmZpZzo3OkNPTkZJR19CUEZfSklUPXlcXG5hcmNoL2FybTY0L2NvbmZpZ3MvZGVmY29uZmlnLTgtQ09ORklHX1BSRUVNUFQ9eVxcbi0tXFxuYXJjaC9hcm02NC9pbmNsdWRlL2FzbS9leHRhYmxlLmg9MzY9Ym9vbCBpbnNuX21heV9hY2Nlc3NfdXNlcih1bnNpZ25lZCBsb25nIGFkZHIsIHVuc2lnbmVkIGxvbmcgZXNyKTtcXG5hcmNoL2FybTY0L2luY2x1ZGUvYXNtL2V4dGFibGUuaC0zNy1cXG5hcmNoL2FybTY0L2luY2x1ZGUvYXNtL2V4dGFibGUuaDozODojaWZkZWYgQ09ORklHX0JQRl9KSVRcXG5hcmNoL2FybTY0L2luY2x1ZGUvYXNtL2V4dGFibGUuaC0zOS1ib29sIGV4X2hhbmRsZXJfYnBmKGNvbnN0IHN0cnVjdCBleGNlcHRpb25fdGFibGVfZW50cnkgKmV4LFxcbmFyY2gvYXJtNjQvaW5jbHVkZS9hc20vZXh0YWJsZS5oLTQwLVxcdFxcdCAgICBzdHJ1Y3QgcHRfcmVncyAqcmVncyk7XFxuYXJjaC9hcm02NC9pbmNsdWRlL2FzbS9leHRhYmxlLmg6NDE6I2Vsc2UgLyogIUNPTkZJR19CUEZfSklUICovXFxuYXJjaC9hcm02NC9pbmNsdWRlL2FzbS9leHRhYmxlLmgtNDItc3RhdGljIGlubGluZVxcbmFyY2gvYXJtNjQvaW5jbHVkZS9hc20vZXh0YWJsZS5oPTQzPWJvb2wgZXhfaGFuZGxlcl9icGYoY29uc3Qgc3RydWN0IGV4Y2VwdGlvbl90YWJsZV9lbnRyeSAqZXgsXFxuLS1cXG5hcmNoL2FybTY0L2luY2x1ZGUvYXNtL2V4dGFibGUuaC00Ny19XFxuYXJjaC9hcm02NC9pbmNsdWRlL2FzbS9leHRhYmxlLmg6NDg6I2VuZGlmIC8qICFDT05GSUdfQlBGX0pJVCAqL1xcbmFyY2gvYXJtNjQvaW5jbHVkZS9hc20vZXh0YWJsZS5oLTQ5LVxcbi0tXFxuYXJjaC9hcm02NC9uZXQvTWFrZWZpbGUtNC0jXFxuYXJjaC9hcm02NC9uZXQvTWFrZWZpbGU6NTpvYmotJChDT05GSUdfQlBGX0pJVCkgKz0gYnBmX2ppdF9jb21wLm8gYnBmX3RpbWVkX21heV9nb3RvLm9cXG4tLVxcbmFyY2gvbG9vbmdhcmNoL2NvbmZpZ3MvbG9vbmdzb242NF9kZWZjb25maWc9Nz1DT05GSUdfQlBGX1NZU0NBTEw9eVxcbmFyY2gvbG9vbmdhcmNoL2NvbmZpZ3MvbG9vbmdzb242NF9kZWZjb25maWc6ODpDT05GSUdfQlBGX0pJVD15XFxuYXJjaC9sb29uZ2FyY2gvY29uZmlncy9sb29uZ3NvbjY0X2RlZmNvbmZpZy05LUNPTkZJR19QUkVFTVBUPXlcXG4tLVxcbmFyY2gvbG9vbmdhcmNoL2luY2x1ZGUvYXNtL2V4dGFibGUuaD0yNj1kbyB7XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFxcXFxcbi0tXFxuYXJjaC9sb29uZ2FyY2gvaW5jbHVkZS9hc20vZXh0YWJsZS5oLTM0LVxcbmFyY2gvbG9vbmdhcmNoL2luY2x1ZGUvYXNtL2V4dGFibGUuaDozNTojaWZkZWYgQ09ORklHX0JQRl9KSVRcXG5hcmNoL2xvb25nYXJjaC9pbmNsdWRlL2FzbS9leHRhYmxlLmgtMzYtYm9vbCBleF9oYW5kbGVyX2JwZihjb25zdCBzdHJ1Y3QgZXhjZXB0aW9uX3RhYmxlX2VudHJ5ICpleCwgc3RydWN0IHB0X3JlZ3MgKnJlZ3MpO1xcbi0tXFxuYXJjaC9sb29uZ2FyY2gvaW5jbHVkZS9hc20vZXh0YWJsZS5oPTM5PWJvb2wgZXhfaGFuZGxlcl9icGYoY29uc3Qgc3RydWN0IGV4Y2VwdGlvbl90YWJsZV9lbnRyeSAqZXgsIHN0cnVjdCBwdF9yZWdzICpyZWdzKVxcbi0tXFxuYXJjaC9sb29uZ2FyY2gvaW5jbHVkZS9hc20vZXh0YWJsZS5oLTQyLX1cXG5hcmNoL2xvb25nYXJjaC9pbmNsdWRlL2FzbS9leHRhYmxlLmg6NDM6I2VuZGlmIC8qICFDT05GSUdfQlBGX0pJVCAqL1xcbmFyY2gvbG9vbmdhcmNoL2luY2x1ZGUvYXNtL2V4dGFibGUuaC00NC1cXG4tLVxcbmFyY2gvbG9vbmdhcmNoL25ldC9NYWtlZmlsZS02LSNcXG5hcmNoL2xvb25nYXJjaC9uZXQvTWFrZWZpbGU6NzpvYmotJChDT05GSUdfQlBGX0pJVCkgKz0gYnBmX2ppdC5vXFxuLS1cXG5hcmNoL21pcHMvY29uZmlncy9sb29uZ3NvbjNfZGVmY29uZmlnPTg9Q09ORklHX0JQRl9TWVNDQUxMPXlcXG5hcmNoL21pcHMvY29uZmlncy9sb29uZ3NvbjNfZGVmY29uZmlnOjk6Q09ORklHX0JQRl9KSVQ9eVxcbmFyY2gvbWlwcy9jb25maWdzL2xvb25nc29uM19kZWZjb25maWctMTAtQ09ORklHX1BSRUVNUFQ9eVxcbi0tXFxuYXJjaC9taXBzL25ldC9NYWtlZmlsZS0zLVxcbmFyY2gvbWlwcy9uZXQvTWFrZWZpbGU6NDpvYmotJChDT05GSUdfQlBGX0pJVCkgKz0gYnBmX2ppdF9jb21wLm9cXG5hcmNoL21pcHMvbmV0L01ha2VmaWxlLTUtXFxuYXJjaC9taXBzL25ldC9NYWtlZmlsZT02PWlmZXEgKCQoQ09ORklHXzMyQklUKSx5KVxcbmFyY2gvbWlwcy9uZXQvTWFrZWZpbGU6NzogICAgICAgIG9iai0kKENPTkZJR19CUEZfSklUKSArPSBicGZfaml0X2NvbXAzMi5vXFxuYXJjaC9taXBzL25ldC9NYWtlZmlsZS04LWVsc2VcXG5hcmNoL21pcHMvbmV0L01ha2VmaWxlOjk6ICAgICAgICBvYmotJChDT05GSUdfQlBGX0pJVCkgKz0gYnBmX2ppdF9jb21wNjQub1xcbmFyY2gvbWlwcy9uZXQvTWFrZWZpbGUtMTAtZW5kaWZcXG4tLVxcbmFyY2gvcGFyaXNjL25ldC9NYWtlZmlsZS0yLVxcbmFyY2gvcGFyaXNjL25ldC9NYWtlZmlsZTozOm9iai0kKENPTkZJR19CUEZfSklUKSArPSBicGZfaml0X2NvcmUub1xcbmFyY2gvcGFyaXNjL25ldC9NYWtlZmlsZS00LVxcbmFyY2gvcGFyaXNjL25ldC9NYWtlZmlsZT01PWlmZXEgKCQoQ09ORklHXzY0QklUKSx5KVxcbmFyY2gvcGFyaXNjL25ldC9NYWtlZmlsZTo2OlxcdG9iai0kKENPTkZJR19CUEZfSklUKSArPSBicGZfaml0X2NvbXA2NC5vXFxuYXJjaC9wYXJpc2MvbmV0L01ha2VmaWxlLTctZWxzZVxcbmFyY2gvcGFyaXNjL25ldC9NYWtlZmlsZTo4OlxcdG9iai0kKENPTkZJR19CUEZfSklUKSArPSBicGZfaml0X2NvbXAzMi5vXFxuYXJjaC9wYXJpc2MvbmV0L01ha2VmaWxlLTktZW5kaWZcXG4tLVxcbmFyY2gvcG93ZXJwYy9jb25maWdzL21wYzg4NV9hZHNfZGVmY29uZmlnPTQ9Q09ORklHX0hJR0hfUkVTX1RJTUVSUz15XFxuYXJjaC9wb3dlcnBjL2NvbmZpZ3MvbXBjODg1X2Fkc19kZWZjb25maWc6NTpDT05GSUdfQlBGX0pJVD15XFxuYXJjaC9wb3dlcnBjL2NvbmZpZ3MvbXBjODg1X2Fkc19kZWZjb25maWctNi1DT05GSUdfVklSVF9DUFVfQUNDT1VOVElOR19OQVRJVkU9eVxcbi0tXFxuYXJjaC9wb3dlcnBjL2NvbmZpZ3MvcG93ZXJudl9kZWZjb25maWc9OTQ9Q09ORklHX0ROU19SRVNPTFZFUj15XFxuYXJjaC9wb3dlcnBjL2NvbmZpZ3MvcG93ZXJudl9kZWZjb25maWc6OTU6Q09ORklHX0JQRl9KSVQ9eVxcbmFyY2gvcG93ZXJwYy9jb25maWdzL3Bvd2VybnZfZGVmY29uZmlnLTk2LSMgQ09ORklHX1dJUkVMRVNTIGlzIG5vdCBzZXRcXG4tLVxcbmFyY2gvcG93ZXJwYy9jb25maWdzL3BwYzY0X2RlZmNvbmZpZz03PUNPTkZJR19CUEZfU1lTQ0FMTD15XFxuYXJjaC9wb3dlcnBjL2NvbmZpZ3MvcHBjNjRfZGVmY29uZmlnOjg6Q09ORklHX0JQRl9KSVQ9eVxcbmFyY2gvcG93ZXJwYy9jb25maWdzL3BwYzY0X2RlZmNvbmZpZy05LUNPTkZJR19CUEZfTFNNPXlcXG4tLVxcbmFyY2gvcG93ZXJwYy9uZXQvTWFrZWZpbGUtNC0jXFxuYXJjaC9wb3dlcnBjL25ldC9NYWtlZmlsZTo1Om9iai0kKENPTkZJR19CUEZfSklUKSArPSBicGZfaml0X2NvbXAubyBicGZfaml0X2NvbXAkKEJJVFMpLm9cXG5hcmNoL3Bvd2VycGMvbmV0L01ha2VmaWxlLTYtXFxuYXJjaC9wb3dlcnBjL25ldC9NYWtlZmlsZT03PWlmZGVmIENPTkZJR19QUEM2NFxcbmFyY2gvcG93ZXJwYy9uZXQvTWFrZWZpbGU6ODpvYmotJChDT05GSUdfQlBGX0pJVCkgKz0gYnBmX3RpbWVkX21heV9nb3RvLm9cXG5hcmNoL3Bvd2VycGMvbmV0L01ha2VmaWxlLTktZW5kaWZcXG4tLVxcbmFyY2gvcmlzY3YvaW5jbHVkZS9hc20vZXh0YWJsZS5oPTM4PXN0YXRpYyBpbmxpbmUgYm9vbCBmaXh1cF9leGNlcHRpb24oc3RydWN0IHB0X3JlZ3MgKnJlZ3MpIHsgcmV0dXJuIGZhbHNlOyB9XFxuLS1cXG5hcmNoL3Jpc2N2L2luY2x1ZGUvYXNtL2V4dGFibGUuaC00MC1cXG5hcmNoL3Jpc2N2L2luY2x1ZGUvYXNtL2V4dGFibGUuaDo0MTojaWYgZGVmaW5lZChDT05GSUdfQlBGX0pJVCkgXFx1MDAyNlxcdTAwMjYgZGVmaW5lZChDT05GSUdfQVJDSF9SVjY0SSlcXG5hcmNoL3Jpc2N2L2luY2x1ZGUvYXNtL2V4dGFibGUuaC00Mi1ib29sIGV4X2hhbmRsZXJfYnBmKGNvbnN0IHN0cnVjdCBleGNlcHRpb25fdGFibGVfZW50cnkgKmV4LCBzdHJ1Y3QgcHRfcmVncyAqcmVncyk7XFxuLS1cXG5hcmNoL3Jpc2N2L25ldC9NYWtlZmlsZS0yLVxcbmFyY2gvcmlzY3YvbmV0L01ha2VmaWxlOjM6b2JqLSQoQ09ORklHX0JQRl9KSVQpICs9IGJwZl9qaXRfY29yZS5vXFxuYXJjaC9yaXNjdi9uZXQvTWFrZWZpbGUtNC1cXG5hcmNoL3Jpc2N2L25ldC9NYWtlZmlsZT01PWlmZXEgKCQoQ09ORklHX0FSQ0hfUlY2NEkpLHkpXFxuYXJjaC9yaXNjdi9uZXQvTWFrZWZpbGU6NjpcXHRvYmotJChDT05GSUdfQlBGX0pJVCkgKz0gYnBmX2ppdF9jb21wNjQub1xcbmFyY2gvcmlzY3YvbmV0L01ha2VmaWxlLTctZWxzZVxcbmFyY2gvcmlzY3YvbmV0L01ha2VmaWxlOjg6XFx0b2JqLSQoQ09ORklHX0JQRl9KSVQpICs9IGJwZl9qaXRfY29tcDMyLm9cXG5hcmNoL3Jpc2N2L25ldC9NYWtlZmlsZS05LWVuZGlmXFxuLS1cXG5hcmNoL3MzOTAvY29uZmlncy9kZWJ1Z19kZWZjb25maWc9OT1DT05GSUdfQlBGX1NZU0NBTEw9eVxcbmFyY2gvczM5MC9jb25maWdzL2RlYnVnX2RlZmNvbmZpZzoxMDpDT05GSUdfQlBGX0pJVD15XFxuYXJjaC9zMzkwL2NvbmZpZ3MvZGVidWdfZGVmY29uZmlnOjExOkNPTkZJR19CUEZfSklUX0FMV0FZU19PTj15XFxuYXJjaC9zMzkwL2NvbmZpZ3MvZGVidWdfZGVmY29uZmlnLTEyLUNPTkZJR19CUEZfTFNNPXlcXG4tLVxcbmFyY2gvczM5MC9jb25maWdzL2RlZmNvbmZpZz04PUNPTkZJR19CUEZfU1lTQ0FMTD15XFxuYXJjaC9zMzkwL2NvbmZpZ3MvZGVmY29uZmlnOjk6Q09ORklHX0JQRl9KSVQ9eVxcbmFyY2gvczM5MC9jb25maWdzL2RlZmNvbmZpZzoxMDpDT05GSUdfQlBGX0pJVF9BTFdBWVNfT049eVxcbmFyY2gvczM5MC9jb25maWdzL2RlZmNvbmZpZy0xMS1DT05GSUdfQlBGX0xTTT15XFxuLS1cXG5hcmNoL3MzOTAvaW5jbHVkZS9hc20vZXh0YWJsZS5oPTQzPXN0YXRpYyBpbmxpbmUgdm9pZCBzd2FwX2V4X2VudHJ5X2ZpeHVwKHN0cnVjdCBleGNlcHRpb25fdGFibGVfZW50cnkgKmEsXFxuLS1cXG5hcmNoL3MzOTAvaW5jbHVkZS9hc20vZXh0YWJsZS5oLTU2LVxcbmFyY2gvczM5MC9pbmNsdWRlL2FzbS9leHRhYmxlLmg6NTc6I2lmZGVmIENPTkZJR19CUEZfSklUXFxuYXJjaC9zMzkwL2luY2x1ZGUvYXNtL2V4dGFibGUuaC01OC1cXG5hcmNoL3MzOTAvaW5jbHVkZS9hc20vZXh0YWJsZS5oPTU5PWJvb2wgZXhfaGFuZGxlcl9icGYoY29uc3Qgc3RydWN0IGV4Y2VwdGlvbl90YWJsZV9lbnRyeSAqZXgsIHN0cnVjdCBwdF9yZWdzICpyZWdzKTtcXG5hcmNoL3MzOTAvaW5jbHVkZS9hc20vZXh0YWJsZS5oLTYwLVxcbmFyY2gvczM5MC9pbmNsdWRlL2FzbS9leHRhYmxlLmg6NjE6I2Vsc2UgLyogIUNPTkZJR19CUEZfSklUICovXFxuYXJjaC9zMzkwL2luY2x1ZGUvYXNtL2V4dGFibGUuaC02Mi1cXG5hcmNoL3MzOTAvaW5jbHVkZS9hc20vZXh0YWJsZS5oPTYzPXN0YXRpYyBpbmxpbmUgYm9vbCBleF9oYW5kbGVyX2JwZihjb25zdCBzdHJ1Y3QgZXhjZXB0aW9uX3RhYmxlX2VudHJ5ICpleCwgc3RydWN0IHB0X3JlZ3MgKnJlZ3MpXFxuLS1cXG5hcmNoL3MzOTAvaW5jbHVkZS9hc20vZXh0YWJsZS5oLTY3LVxcbmFyY2gvczM5MC9pbmNsdWRlL2FzbS9leHRhYmxlLmg6Njg6I2VuZGlmIC8qIENPTkZJR19CUEZfSklUICovXFxuYXJjaC9zMzkwL2luY2x1ZGUvYXNtL2V4dGFibGUuaC02OS1cXG4tLVxcbmFyY2gvczM5MC9uZXQvTWFrZWZpbGUtNC0jXFxuYXJjaC9zMzkwL25ldC9NYWtlZmlsZTo1Om9iai0kKENPTkZJR19CUEZfSklUKSArPSBicGZfaml0X2NvbXAubyBicGZfdGltZWRfbWF5X2dvdG8ub1xcbmFyY2gvczM5MC9uZXQvTWFrZWZpbGUtNi1vYmotJChDT05GSUdfSEFWRV9QTkVUSUQpICs9IHBuZXQub1xcbi0tXFxuYXJjaC9zcGFyYy9uZXQvTWFrZWZpbGUtNC0jXFxuYXJjaC9zcGFyYy9uZXQvTWFrZWZpbGU6NTpvYmotJChDT05GSUdfQlBGX0pJVCkgKz0gYnBmX2ppdF9jb21wXyQoQklUUykub1xcbmFyY2gvc3BhcmMvbmV0L01ha2VmaWxlLTYtaWZlcSAoJChCSVRTKSwzMilcXG5hcmNoL3NwYXJjL25ldC9NYWtlZmlsZTo3Om9iai0kKENPTkZJR19CUEZfSklUKSArPSBicGZfaml0X2FzbV8zMi5vXFxuYXJjaC9zcGFyYy9uZXQvTWFrZWZpbGUtOC1lbmRpZlxcbi0tXFxuYXJjaC94ODYvaW5jbHVkZS9hc20vZXh0YWJsZS5oPTQ2PXN0YXRpYyBpbmxpbmUgdm9pZCBfX25vcmV0dXJuIGV4X2hhbmRsZXJfbXNyX21jZShzdHJ1Y3QgcHRfcmVncyAqcmVncywgYm9vbCB3cm1zcilcXG4tLVxcbmFyY2gveDg2L2luY2x1ZGUvYXNtL2V4dGFibGUuaC01Mi1cXG5hcmNoL3g4Ni9pbmNsdWRlL2FzbS9leHRhYmxlLmg6NTM6I2lmIGRlZmluZWQoQ09ORklHX0JQRl9KSVQpIFxcdTAwMjZcXHUwMDI2IGRlZmluZWQoQ09ORklHX1g4Nl82NClcXG5hcmNoL3g4Ni9pbmNsdWRlL2FzbS9leHRhYmxlLmgtNTQtYm9vbCBleF9oYW5kbGVyX2JwZihjb25zdCBzdHJ1Y3QgZXhjZXB0aW9uX3RhYmxlX2VudHJ5ICp4LCBzdHJ1Y3QgcHRfcmVncyAqcmVncyk7XFxuLS1cXG5hcmNoL3g4Ni9rZXJuZWwvY2FsbHRodW5rcy5jPTI2NT12b2lkICpjYWxsdGh1bmtzX3RyYW5zbGF0ZV9jYWxsX2Rlc3Qodm9pZCAqZGVzdClcXG4tLVxcbmFyY2gveDg2L2tlcm5lbC9jYWxsdGh1bmtzLmMtMjgwLVxcbmFyY2gveDg2L2tlcm5lbC9jYWxsdGh1bmtzLmM6MjgxOiNpZmRlZiBDT05GSUdfQlBGX0pJVFxcbmFyY2gveDg2L2tlcm5lbC9jYWxsdGh1bmtzLmMtMjgyLXN0YXRpYyBib29sIGlzX2NhbGx0aHVuayh2b2lkICphZGRyKVxcbi0tXFxuYXJjaC94ODYva2VybmVsL3Vud2luZF9vcmMuYz0xODU9c3RhdGljIHN0cnVjdCBvcmNfZW50cnkgKm9yY19icGZfZmluZCh1bnNpZ25lZCBsb25nIGlwKVxcbmFyY2gveDg2L2tlcm5lbC91bndpbmRfb3JjLmMtMTg2LXtcXG5hcmNoL3g4Ni9rZXJuZWwvdW53aW5kX29yYy5jOjE4NzojaWZkZWYgQ09ORklHX0JQRl9KSVRcXG5hcmNoL3g4Ni9rZXJuZWwvdW53aW5kX29yYy5jLTE4OC1cXHRpZiAoYnBmX2hhc19mcmFtZV9wb2ludGVyKGlwKSlcXG4tLVxcbmFyY2gveDg2L25ldC9NYWtlZmlsZT02PWlmZXEgKCQoQ09ORklHX1g4Nl8zMikseSlcXG5hcmNoL3g4Ni9uZXQvTWFrZWZpbGU6NzogICAgICAgIG9iai0kKENPTkZJR19CUEZfSklUKSArPSBicGZfaml0X2NvbXAzMi5vXFxuYXJjaC94ODYvbmV0L01ha2VmaWxlLTgtZWxzZVxcbmFyY2gveDg2L25ldC9NYWtlZmlsZTo5OiAgICAgICAgb2JqLSQoQ09ORklHX0JQRl9KSVQpICs9IGJwZl9qaXRfY29tcC5vIGJwZl90aW1lZF9tYXlfZ290by5vXFxuYXJjaC94ODYvbmV0L01ha2VmaWxlLTEwLWVuZGlmXFxuLS1cXG5pbmNsdWRlL2xpbnV4L2JwZi5oPTE1MDk9c3RydWN0IGJwZl90cmFjaW5nX211bHRpX2xpbms7XFxuaW5jbHVkZS9saW51eC9icGYuaC0xNTEwLVxcbmluY2x1ZGUvbGludXgvYnBmLmg6MTUxMTojaWZkZWYgQ09ORklHX0JQRl9KSVRcXG5pbmNsdWRlL2xpbnV4L2JwZi5oLTE1MTItaW50IGJwZl90cmFtcG9saW5lX2xpbmtfcHJvZyhzdHJ1Y3QgYnBmX3RyYW1wX25vZGUgKm5vZGUsXFxuLS1cXG5pbmNsdWRlL2xpbnV4L2JwZi5oPTIxOTM9c3RhdGljIGlubGluZSBib29sIGlzX3RyYWNpbmdfbXVsdGkoZW51bSBicGZfYXR0YWNoX3R5cGUgdHlwZSlcXG4tLVxcbmluY2x1ZGUvbGludXgvYnBmLmgtMjE5OC1cXG5pbmNsdWRlL2xpbnV4L2JwZi5oOjIxOTk6I2lmIGRlZmluZWQoQ09ORklHX0JQRl9KSVQpIFxcdTAwMjZcXHUwMDI2IGRlZmluZWQoQ09ORklHX0JQRl9TWVNDQUxMKVxcbmluY2x1ZGUvbGludXgvYnBmLmgtMjIwMC0vKiBUaGlzIG1hY3JvIGhlbHBzIGRldmVsb3BlciB0byByZWdpc3RlciBhIHN0cnVjdF9vcHMgdHlwZSBhbmQgZ2VuZXJhdGVcXG4tLVxcbmluY2x1ZGUvbGludXgvYnBmLmg9MzA0Nz1pbnQgYnBmX2NoZWNrKHN0cnVjdCBicGZfcHJvZyAqKmZwLCB1bmlvbiBicGZfYXR0ciAqYXR0ciwgYnBmcHRyX3QgdWF0dHIsXFxuLS1cXG5pbmNsdWRlL2xpbnV4L2JwZi5oLTMwNDktXFxuaW5jbHVkZS9saW51eC9icGYuaDozMDUwOiNpZm5kZWYgQ09ORklHX0JQRl9KSVRfQUxXQVlTX09OXFxuaW5jbHVkZS9saW51eC9icGYuaC0zMDUxLWludCBicGZfcGF0Y2hfY2FsbF9hcmdzKHN0cnVjdCBicGZfaW5zbiAqaW5zbiwgdTMyIHN0YWNrX2RlcHRoKTtcXG4tLVxcbmluY2x1ZGUvbGludXgvYnBmX3R5cGVzLmg9Njc9QlBGX1BST0dfVFlQRShCUEZfUFJPR19UWVBFX1NLX0xPT0tVUCwgc2tfbG9va3VwLFxcbi0tXFxuaW5jbHVkZS9saW51eC9icGZfdHlwZXMuaC02OS0jZW5kaWZcXG5pbmNsdWRlL2xpbnV4L2JwZl90eXBlcy5oOjcwOiNpZiBkZWZpbmVkKENPTkZJR19CUEZfSklUKVxcbmluY2x1ZGUvbGludXgvYnBmX3R5cGVzLmgtNzEtQlBGX1BST0dfVFlQRShCUEZfUFJPR19UWVBFX1NUUlVDVF9PUFMsIGJwZl9zdHJ1Y3Rfb3BzLFxcbi0tXFxuaW5jbHVkZS9saW51eC9icGZfdHlwZXMuaD0xMjg9QlBGX01BUF9UWVBFKEJQRl9NQVBfVFlQRV9TVEFDSywgc3RhY2tfbWFwX29wcylcXG5pbmNsdWRlL2xpbnV4L2JwZl90eXBlcy5oOjEyOTojaWYgZGVmaW5lZChDT05GSUdfQlBGX0pJVClcXG5pbmNsdWRlL2xpbnV4L2JwZl90eXBlcy5oLTEzMC1CUEZfTUFQX1RZUEUoQlBGX01BUF9UWVBFX1NUUlVDVF9PUFMsIGJwZl9zdHJ1Y3Rfb3BzX21hcF9vcHMpXFxuLS1cXG5pbmNsdWRlL2xpbnV4L2J0Zi5oPTUzMj1zdHJ1Y3QgYnBmX3ZlcmlmaWVyX2xvZztcXG5pbmNsdWRlL2xpbnV4L2J0Zi5oLTUzMy1cXG5pbmNsdWRlL2xpbnV4L2J0Zi5oOjUzNDojaWYgZGVmaW5lZChDT05GSUdfQlBGX0pJVCkgXFx1MDAyNlxcdTAwMjYgZGVmaW5lZChDT05GSUdfQlBGX1NZU0NBTEwpXFxuaW5jbHVkZS9saW51eC9idGYuaC01MzUtc3RydWN0IGJwZl9zdHJ1Y3Rfb3BzO1xcbi0tXFxuaW5jbHVkZS9saW51eC9leHRhYmxlLmg9MzA9c2VhcmNoX21vZHVsZV9leHRhYmxlcyh1bnNpZ25lZCBsb25nIGFkZHIpXFxuLS1cXG5pbmNsdWRlL2xpbnV4L2V4dGFibGUuaC0zNS1cXG5pbmNsdWRlL2xpbnV4L2V4dGFibGUuaDozNjojaWZkZWYgQ09ORklHX0JQRl9KSVRcXG5pbmNsdWRlL2xpbnV4L2V4dGFibGUuaC0zNy1jb25zdCBzdHJ1Y3QgZXhjZXB0aW9uX3RhYmxlX2VudHJ5ICpzZWFyY2hfYnBmX2V4dGFibGVzKHVuc2lnbmVkIGxvbmcgYWRkcik7XFxuLS1cXG5pbmNsdWRlL2xpbnV4L2ZpbHRlci5oPTEwOTg9c3RhdGljIGlubGluZSBpbnQgX19tdXN0X2NoZWNrIGJwZl9wcm9nX2xvY2tfcm8oc3RydWN0IGJwZl9wcm9nICpmcClcXG5pbmNsdWRlL2xpbnV4L2ZpbHRlci5oLTEwOTkte1xcbmluY2x1ZGUvbGludXgvZmlsdGVyLmg6MTEwMDojaWZuZGVmIENPTkZJR19CUEZfSklUX0FMV0FZU19PTlxcbmluY2x1ZGUvbGludXgvZmlsdGVyLmgtMTEwMS1cXHRpZiAoIWZwLVxcdTAwM2VqaXRlZCkge1xcbi0tXFxuaW5jbHVkZS9saW51eC9maWx0ZXIuaD0xMjk5PWJwZl9ydW5fc2tfcmV1c2Vwb3J0KHN0cnVjdCBzb2NrX3JldXNlcG9ydCAqcmV1c2UsIHN0cnVjdCBzb2NrICpzayxcXG4tLVxcbmluY2x1ZGUvbGludXgvZmlsdGVyLmgtMTMwNy1cXG5pbmNsdWRlL2xpbnV4L2ZpbHRlci5oOjEzMDg6I2lmZGVmIENPTkZJR19CUEZfSklUXFxuaW5jbHVkZS9saW51eC9maWx0ZXIuaC0xMzA5LWV4dGVybiBpbnQgYnBmX2ppdF9lbmFibGU7XFxuLS1cXG5pbmNsdWRlL2xpbnV4L2ZpbHRlci5oPTE0NDA9dm9pZCBicGZfcHJvZ19rYWxsc3ltc19kZWwoc3RydWN0IGJwZl9wcm9nICpmcCk7XFxuaW5jbHVkZS9saW51eC9maWx0ZXIuaC0xNDQxLVxcbmluY2x1ZGUvbGludXgvZmlsdGVyLmg6MTQ0MjojZWxzZSAvKiBDT05GSUdfQlBGX0pJVCAqL1xcbmluY2x1ZGUvbGludXgvZmlsdGVyLmgtMTQ0My1cXG4tLVxcbmluY2x1ZGUvbGludXgvZmlsdGVyLmg9MTUxOD1zdGF0aWMgaW5saW5lIHZvaWQgYnBmX2ppdF9wcm9nX3JlbGVhc2Vfb3RoZXIoc3RydWN0IGJwZl9wcm9nICpmcCwgc3RydWN0IGJwZl9wcm9nICpmcF9vdGhlcilcXG4tLVxcbmluY2x1ZGUvbGludXgvZmlsdGVyLmgtMTUyMC19XFxuaW5jbHVkZS9saW51eC9maWx0ZXIuaDoxNTIxOiNlbmRpZiAvKiBDT05GSUdfQlBGX0pJVCAqL1xcbmluY2x1ZGUvbGludXgvZmlsdGVyLmgtMTUyMi1cXG4tLVxcbmtlcm5lbC9icGYvS2NvbmZpZz01OD1jb25maWcgQlBGX0pJVF9BTFdBWVNfT05cXG4tLVxcbmtlcm5lbC9icGYvS2NvbmZpZy02NC1cXG5rZXJuZWwvYnBmL0tjb25maWc6NjU6XFx0ICBXaGVuIENPTkZJR19CUEZfSklUX0FMV0FZU19PTiBpcyBlbmFibGVkLCAvcHJvYy9zeXMvbmV0L2NvcmUvYnBmX2ppdF9lbmFibGVcXG5rZXJuZWwvYnBmL0tjb25maWctNjYtXFx0ICBpcyBwZXJtYW5lbnRseSBzZXQgdG8gMSBhbmQgc2V0dGluZyBhbnkgb3RoZXIgdmFsdWUgdGhhbiB0aGF0IHdpbGxcXG4tLVxcbmtlcm5lbC9icGYvTWFrZWZpbGU9Mj1vYmoteSA6PSBjb3JlLm9cXG5rZXJuZWwvYnBmL01ha2VmaWxlOjM6aWZuZXEgKCQoQ09ORklHX0JQRl9KSVRfQUxXQVlTX09OKSx5KVxcbmtlcm5lbC9icGYvTWFrZWZpbGUtNC0jIF9fX2JwZl9wcm9nX3J1bigpIG5lZWRzIEdDU0UgZGlzYWJsZWQgb24geDg2OyBzZWUgMzE5M2MwODM2ZjIwMyBmb3IgZGV0YWlsc1xcbi0tXFxua2VybmVsL2JwZi9NYWtlZmlsZT0xNj1vYmotJChDT05GSUdfQlBGX1NZU0NBTEwpICs9IGRpc2FzbS5vIG1wcm9nLm9cXG5rZXJuZWwvYnBmL01ha2VmaWxlOjE3Om9iai0kKENPTkZJR19CUEZfSklUKSArPSB0cmFtcG9saW5lLm9cXG5rZXJuZWwvYnBmL01ha2VmaWxlLTE4LW9iai0kKENPTkZJR19CUEZfU1lTQ0FMTCkgKz0gYnRmLm8gbWVtYWxsb2MubyBycXNwaW5sb2NrLm8gc3RyZWFtLm9cXG4tLVxcbmtlcm5lbC9icGYvTWFrZWZpbGU9MjE9ZW5kaWZcXG5rZXJuZWwvYnBmL01ha2VmaWxlOjIyOm9iai0kKENPTkZJR19CUEZfSklUKSArPSBkaXNwYXRjaGVyLm9cXG5rZXJuZWwvYnBmL01ha2VmaWxlLTIzLWlmZXEgKCQoQ09ORklHX05FVCkseSlcXG4tLVxcbmtlcm5lbC9icGYvTWFrZWZpbGU9NDI9ZW5kaWZcXG5rZXJuZWwvYnBmL01ha2VmaWxlOjQzOmlmZXEgKCQoQ09ORklHX0JQRl9KSVQpLHkpXFxua2VybmVsL2JwZi9NYWtlZmlsZS00NC1vYmotJChDT05GSUdfQlBGX1NZU0NBTEwpICs9IGJwZl9zdHJ1Y3Rfb3BzLm9cXG4tLVxcbmtlcm5lbC9icGYvYnRmLmM9OTc3OD1ib29sIGJ0Zl90eXBlX2lkc19ub2Nhc3RfYWxpYXMoc3RydWN0IGJwZl92ZXJpZmllcl9sb2cgKmxvZyxcXG4tLVxcbmtlcm5lbC9icGYvYnRmLmMtOTgzMi1cXG5rZXJuZWwvYnBmL2J0Zi5jOjk4MzM6I2lmZGVmIENPTkZJR19CUEZfSklUXFxua2VybmVsL2JwZi9idGYuYy05ODM0LXN0YXRpYyBpbnRcXG4tLVxcbmtlcm5lbC9icGYvY29yZS5jPTUzOT12b2lkIGJwZl9wcm9nX2thbGxzeW1zX2RlbF9hbGwoc3RydWN0IGJwZl9wcm9nICpmcClcXG4tLVxcbmtlcm5lbC9icGYvY29yZS5jLTU0NC1cXG5rZXJuZWwvYnBmL2NvcmUuYzo1NDU6I2lmZGVmIENPTkZJR19CUEZfSklUXFxua2VybmVsL2JwZi9jb3JlLmMtNTQ2LS8qIEFsbCBCUEYgSklUIHN5c2N0bCBrbm9icyBoZXJlLiAqL1xcbmtlcm5lbC9icGYvY29yZS5jOjU0NzppbnQgYnBmX2ppdF9lbmFibGUgICBfX3JlYWRfbW9zdGx5ID0gSVNfQlVJTFRJTihDT05GSUdfQlBGX0pJVF9ERUZBVUxUX09OKTtcXG5rZXJuZWwvYnBmL2NvcmUuYzo1NDg6aW50IGJwZl9qaXRfa2FsbHN5bXMgX19yZWFkX21vc3RseSA9IElTX0JVSUxUSU4oQ09ORklHX0JQRl9KSVRfREVGQVVMVF9PTik7XFxua2VybmVsL2JwZi9jb3JlLmMtNTQ5LWludCBicGZfaml0X2hhcmRlbiAgIF9fcmVhZF9tb3N0bHk7XFxuLS1cXG5rZXJuZWwvYnBmL2NvcmUuYz0xNTk4PXUxNiBicGZfb3V0X3N0YWNrX2FyZ19jbnQoY29uc3Qgc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudiwgY29uc3Qgc3RydWN0IGJwZl9wcm9nICpwcm9nKVxcbi0tXFxua2VybmVsL2JwZi9jb3JlLmMtMTYwNi19XFxua2VybmVsL2JwZi9jb3JlLmM6MTYwNzojZW5kaWYgLyogQ09ORklHX0JQRl9KSVQgKi9cXG5rZXJuZWwvYnBmL2NvcmUuYy0xNjA4LVxcbi0tXFxua2VybmVsL2JwZi9jb3JlLmM9MTc2Nj1ib29sIGJwZl9vcGNvZGVfaW5faW5zbnRhYmxlKHU4IGNvZGUpXFxuLS1cXG5rZXJuZWwvYnBmL2NvcmUuYy0xNzg4LVxcbmtlcm5lbC9icGYvY29yZS5jOjE3ODk6I2lmbmRlZiBDT05GSUdfQlBGX0pJVF9BTFdBWVNfT05cXG5rZXJuZWwvYnBmL2NvcmUuYy0xNzkwLS8qIEFic29sdXRlIHZhbHVlIG9mIHMzMiB3aXRob3V0IHVuZGVmaW5lZCBiZWhhdmlvciBmb3IgUzMyX01JTiAqL1xcbi0tXFxua2VybmVsL2JwZi9jb3JlLmM9MjU1Mz1zdGF0aWMgYm9vbCBicGZfcHJvZ19zZWxlY3RfaW50ZXJwcmV0ZXIoc3RydWN0IGJwZl9wcm9nICpmcClcXG4tLVxcbmtlcm5lbC9icGYvY29yZS5jLTI1NTUtXFx0Ym9vbCBzZWxlY3RfaW50ZXJwcmV0ZXIgPSBmYWxzZTtcXG5rZXJuZWwvYnBmL2NvcmUuYzoyNTU2OiNpZm5kZWYgQ09ORklHX0JQRl9KSVRfQUxXQVlTX09OXFxua2VybmVsL2JwZi9jb3JlLmMtMjU1Ny1cXHR1MzIgc3RhY2tfZGVwdGggPSBtYXhfdCh1MzIsIGZwLVxcdTAwM2VhdXgtXFx1MDAzZXN0YWNrX2RlcHRoLCAxKTtcXG4tLVxcbmtlcm5lbC9icGYvY29yZS5jPTI1NzY9c3RhdGljIHN0cnVjdCBicGZfcHJvZyAqYnBmX3Byb2dfaml0X2NvbXBpbGUoc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudiwgc3RydWN0IGJwZl9wcm9nICpwcm9nKVxcbmtlcm5lbC9icGYvY29yZS5jLTI1Nzcte1xcbmtlcm5lbC9icGYvY29yZS5jOjI1Nzg6I2lmZGVmIENPTkZJR19CUEZfSklUXFxua2VybmVsL2JwZi9jb3JlLmMtMjU3OS1cXHRzdHJ1Y3QgYnBmX3Byb2cgKm9yaWdfcHJvZztcXG4tLVxcbmtlcm5lbC9icGYvY29yZS5jPTI2MjM9c3RydWN0IGJwZl9wcm9nICpfX2JwZl9wcm9nX3NlbGVjdF9ydW50aW1lKHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYsIHN0cnVjdCBicGZfcHJvZyAqZnAsXFxuLS1cXG5rZXJuZWwvYnBmL2NvcmUuYy0yNjMzLVxcbmtlcm5lbC9icGYvY29yZS5jOjI2MzQ6XFx0aWYgKElTX0VOQUJMRUQoQ09ORklHX0JQRl9KSVRfQUxXQVlTX09OKSB8fFxcbmtlcm5lbC9icGYvY29yZS5jLTI2MzUtXFx0ICAgIGJwZl9wcm9nX2hhc19rZnVuY19jYWxsKGZwKSlcXG4tLVxcbmtlcm5lbC9icGYvZml4dXBzLmM9MTI3PXN0YXRpYyBpbnQgYWRkX2tmdW5jX2luX2luc25zKHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYsXFxuLS1cXG5rZXJuZWwvYnBmL2ZpeHVwcy5jLTE0MS1cXG5rZXJuZWwvYnBmL2ZpeHVwcy5jOjE0MjojaWZuZGVmIENPTkZJR19CUEZfSklUX0FMV0FZU19PTlxcbmtlcm5lbC9icGYvZml4dXBzLmMtMTQzLXN0YXRpYyBpbnQgZ2V0X2NhbGxlZV9zdGFja19kZXB0aChzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52LFxcbi0tXFxua2VybmVsL2JwZi9maXh1cHMuYz0xMzc2PWludCBicGZfZml4dXBfY2FsbF9hcmdzKHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYpXFxua2VybmVsL2JwZi9maXh1cHMuYy0xMzc3LXtcXG5rZXJuZWwvYnBmL2ZpeHVwcy5jOjEzNzg6I2lmbmRlZiBDT05GSUdfQlBGX0pJVF9BTFdBWVNfT05cXG5rZXJuZWwvYnBmL2ZpeHVwcy5jLTEzNzktXFx0c3RydWN0IGJwZl9wcm9nICpwcm9nID0gZW52LVxcdTAwM2Vwcm9nO1xcbi0tXFxua2VybmVsL2JwZi9maXh1cHMuYy0xNDA1LVxcdH1cXG5rZXJuZWwvYnBmL2ZpeHVwcy5jOjE0MDY6I2lmbmRlZiBDT05GSUdfQlBGX0pJVF9BTFdBWVNfT05cXG5rZXJuZWwvYnBmL2ZpeHVwcy5jLTE0MDctXFx0aWYgKGhhc19rZnVuY19jYWxsKSB7XFxuLS1cXG5rZXJuZWwvYnBmL3N5c2NhbGwuYz02NTc4PWludCBrZXJuX3N5c19icGYoaW50IGNtZCwgdW5pb24gYnBmX2F0dHIgKmF0dHIsIHVuc2lnbmVkIGludCBzaXplKVxcbi0tXFxua2VybmVsL2JwZi9zeXNjYWxsLmMtNjU4My1cXHRzd2l0Y2ggKGNtZCkge1xcbmtlcm5lbC9icGYvc3lzY2FsbC5jOjY1ODQ6I2lmZGVmIENPTkZJR19CUEZfSklUIC8qIF9fYnBmX3Byb2dfZW50ZXJfc2xlZXBhYmxlIHVzZWQgYnkgdHJhbXBvbGluZSBhbmQgSklUICovXFxua2VybmVsL2JwZi9zeXNjYWxsLmMtNjU4NS1cXHRjYXNlIEJQRl9QUk9HX1RFU1RfUlVOOlxcbi0tXFxua2VybmVsL2JwZi92ZXJpZmllci5jPTQ0MTg9QlRGX0lEKHN0cnVjdCwgY2dyb3VwKVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy00NDE5LSNlbmRpZlxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYzo0NDIwOiNpZmRlZiBDT05GSUdfQlBGX0pJVFxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy00NDIxLUJURl9JRChzdHJ1Y3QsIGJwZl9jcHVtYXNrKVxcbi0tXFxubmV0L2JwZi9NYWtlZmlsZT0yPW9iai0kKENPTkZJR19CUEZfU1lTQ0FMTClcXHQ6PSB0ZXN0X3J1bi5vXFxubmV0L2JwZi9NYWtlZmlsZTozOmlmZXEgKCQoQ09ORklHX0JQRl9KSVQpLHkpXFxubmV0L2JwZi9NYWtlZmlsZS00LW9iai0kKENPTkZJR19CUEZfU1lTQ0FMTClcXHQrPSBicGZfZHVtbXlfc3RydWN0X29wcy5vXFxuLS1cXG5uZXQvY29yZS9zeXNjdGxfbmV0X2NvcmUuYz0zNTI9c3RhdGljIGludCBwcm9jX2RvX3NrYl9kZWZlcl9tYXgoY29uc3Qgc3RydWN0IGN0bF90YWJsZSAqdGFibGUsIGludCB3cml0ZSxcXG4tLVxcbm5ldC9jb3JlL3N5c2N0bF9uZXRfY29yZS5jLTM3NC1cXG5uZXQvY29yZS9zeXNjdGxfbmV0X2NvcmUuYzozNzU6I2lmZGVmIENPTkZJR19CUEZfSklUXFxubmV0L2NvcmUvc3lzY3RsX25ldF9jb3JlLmMtMzc2LXN0YXRpYyBpbnQgcHJvY19kb2ludHZlY19taW5tYXhfYnBmX2VuYWJsZShjb25zdCBzdHJ1Y3QgY3RsX3RhYmxlICp0YWJsZSwgaW50IHdyaXRlLFxcbi0tXFxubmV0L2NvcmUvc3lzY3RsX25ldF9jb3JlLmMtNDAxLVxcdGlmICh3cml0ZSBcXHUwMDI2XFx1MDAyNiByZXQgXFx1MDAyNlxcdTAwMjYgbWluID09IG1heClcXG5uZXQvY29yZS9zeXNjdGxfbmV0X2NvcmUuYzo0MDI6XFx0XFx0cHJfaW5mb19vbmNlKFxcXCJDT05GSUdfQlBGX0pJVF9BTFdBWVNfT04gaXMgZW5hYmxlZCwgYnBmX2ppdF9lbmFibGUgaXMgcGVybWFuZW50bHkgc2V0IHRvIDEuXFxcXG5cXFwiKTtcXG5uZXQvY29yZS9zeXNjdGxfbmV0X2NvcmUuYy00MDMtXFxuLS1cXG5uZXQvY29yZS9zeXNjdGxfbmV0X2NvcmUuYz00MzA9c3RhdGljIHN0cnVjdCBjdGxfdGFibGUgbmV0X2NvcmVfdGFibGVbXSA9IHtcXG4tLVxcbm5ldC9jb3JlL3N5c2N0bF9uZXRfY29yZS5jLTQ4My1cXHR9LFxcbm5ldC9jb3JlL3N5c2N0bF9uZXRfY29yZS5jOjQ4NDojaWZkZWYgQ09ORklHX0JQRl9KSVRcXG5uZXQvY29yZS9zeXNjdGxfbmV0X2NvcmUuYy00ODUtXFx0e1xcbi0tXFxubmV0L2NvcmUvc3lzY3RsX25ldF9jb3JlLmMtNDkwLVxcdFxcdC5wcm9jX2hhbmRsZXJcXHQ9IHByb2NfZG9pbnR2ZWNfbWlubWF4X2JwZl9lbmFibGUsXFxubmV0L2NvcmUvc3lzY3RsX25ldF9jb3JlLmM6NDkxOiMgaWZkZWYgQ09ORklHX0JQRl9KSVRfQUxXQVlTX09OXFxubmV0L2NvcmUvc3lzY3RsX25ldF9jb3JlLmMtNDkyLVxcdFxcdC5leHRyYTFcXHRcXHQ9IFNZU0NUTF9PTkUsXFxuLS1cXG5uZXQvaXB2NC9NYWtlZmlsZT02OT1vYmotJChDT05GSUdfVENQX0FPKSArPSB0Y3BfYW8ub1xcbm5ldC9pcHY0L01ha2VmaWxlLTcwLVxcbm5ldC9pcHY0L01ha2VmaWxlOjcxOmlmZXEgKCQoQ09ORklHX0JQRl9KSVQpLHkpXFxubmV0L2lwdjQvTWFrZWZpbGUtNzItb2JqLSQoQ09ORklHX0JQRl9TWVNDQUxMKSArPSBicGZfdGNwX2NhLm9cXG4tLVxcbnNjcmlwdHMvZ2RiL2xpbnV4L2JwZi5weT05PWZyb20gbGludXggaW1wb3J0IGNvbnN0YW50cywgbGlzdHMsIHJhZGl4dHJlZSwgdXRpbHNcXG4tLVxcbnNjcmlwdHMvZ2RiL2xpbnV4L2JwZi5weS0xMS1cXG5zY3JpcHRzL2dkYi9saW51eC9icGYucHk6MTI6aWYgY29uc3RhbnRzLkxYX0NPTkZJR19CUEYgYW5kIGNvbnN0YW50cy5MWF9DT05GSUdfQlBGX0pJVDpcXG5zY3JpcHRzL2dkYi9saW51eC9icGYucHktMTMtICAgIGJwZl9rc3ltX3R5cGUgPSB1dGlscy5DYWNoZWRUeXBlKFxcXCJzdHJ1Y3QgYnBmX2tzeW1cXFwiKVxcbi0tXFxuc2NyaXB0cy9nZGIvbGludXgvYnBmLnB5PTI2PWRlZiBsaXN0X2tzeW1zKCk6XFxuc2NyaXB0cy9nZGIvbGludXgvYnBmLnB5OjI3OiAgICBpZiBub3QgKGNvbnN0YW50cy5MWF9DT05GSUdfQlBGIGFuZCBjb25zdGFudHMuTFhfQ09ORklHX0JQRl9KSVQpOlxcbnNjcmlwdHMvZ2RiL2xpbnV4L2JwZi5weS0yOC0gICAgICAgIHJldHVybiBbXVxcbi0tXFxuc2NyaXB0cy9nZGIvbGludXgvY29uc3RhbnRzLnB5LmluPTE3Mz1MWF9DT05GSUcoQ09ORklHX0JQRilcXG5zY3JpcHRzL2dkYi9saW51eC9jb25zdGFudHMucHkuaW46MTc0OkxYX0NPTkZJRyhDT05GSUdfQlBGX0pJVClcXG5zY3JpcHRzL2dkYi9saW51eC9jb25zdGFudHMucHkuaW4tMTc1LUxYX0NPTkZJRyhDT05GSUdfQlBGX1NZU0NBTEwpXFxuLS1cXG5zY3JpcHRzL2dkYi9saW51eC9zeW1ib2xzLnB5PTEyMT1hcmUgbG9hZGVkIGFzIHdlbGwuXFxcIlxcXCJcXFwiXFxuLS1cXG5zY3JpcHRzL2dkYi9saW51eC9zeW1ib2xzLnB5LTMzMi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYucmVtb3ZlX2JwZl9wcm9nKVxcbnNjcmlwdHMvZ2RiL2xpbnV4L3N5bWJvbHMucHk6MzMzOiAgICAgICAgICAgIGlmIGNvbnN0YW50cy5MWF9DT05GSUdfQlBGIGFuZCBjb25zdGFudHMuTFhfQ09ORklHX0JQRl9KSVQ6XFxuc2NyaXB0cy9nZGIvbGludXgvc3ltYm9scy5weS0zMzQtICAgICAgICAgICAgICAgIHNlbGYuYnBmX2tzeW1fbW9uaXRvciA9IGJwZi5Lc3ltTW9uaXRvcihzZWxmLmFkZF9icGZfa3N5bSxcXG4tLVxcbnRvb2xzL2JwZi9icGZ0b29sL2ZlYXR1cmUuYz0zMjg9c3RhdGljIHZvaWQgcHJvYmVfa2VybmVsX2ltYWdlX2NvbmZpZyhjb25zdCBjaGFyICpkZWZpbmVfcHJlZml4KVxcbi0tXFxudG9vbHMvYnBmL2JwZnRvb2wvZmVhdHVyZS5jLTMzNy1cXHRcXHQvKiBDb21waWxlIGVCUEYgSklUIGNvbXBpbGVyICovXFxudG9vbHMvYnBmL2JwZnRvb2wvZmVhdHVyZS5jOjMzODpcXHRcXHR7IFxcXCJDT05GSUdfQlBGX0pJVFxcXCIsIH0sXFxudG9vbHMvYnBmL2JwZnRvb2wvZmVhdHVyZS5jLTMzOS1cXHRcXHQvKiBBdm9pZCBjb21waWxpbmcgZUJQRiBpbnRlcnByZXRlciAodXNlIEpJVCBvbmx5KSAqL1xcbnRvb2xzL2JwZi9icGZ0b29sL2ZlYXR1cmUuYzozNDA6XFx0XFx0eyBcXFwiQ09ORklHX0JQRl9KSVRfQUxXQVlTX09OXFxcIiwgfSxcXG50b29scy9icGYvYnBmdG9vbC9mZWF0dXJlLmMtMzQxLVxcdFxcdC8qIEtlcm5lbCBCVEYgZGVidWcgaW5mb3JtYXRpb24gYXZhaWxhYmxlICovXFxuLS1cXG50b29scy9zY2hlZF9leHQvS2NvbmZpZz00PUNPTkZJR19CUEZfU1lTQ0FMTD15XFxudG9vbHMvc2NoZWRfZXh0L0tjb25maWc6NTpDT05GSUdfQlBGX0pJVD15XFxudG9vbHMvc2NoZWRfZXh0L0tjb25maWctNi1DT05GSUdfREVCVUdfSU5GT19CVEY9eVxcbnRvb2xzL3NjaGVkX2V4dC9LY29uZmlnOjc6Q09ORklHX0JQRl9KSVRfQUxXQVlTX09OPXlcXG50b29scy9zY2hlZF9leHQvS2NvbmZpZzo4OkNPTkZJR19CUEZfSklUX0RFRkFVTFRfT049eVxcbnRvb2xzL3NjaGVkX2V4dC9LY29uZmlnLTktQ09ORklHX1NDSEVEX0NMQVNTX0VYVD15XFxuLS1cXG50b29scy9zY2hlZF9leHQvUkVBRE1FLm1kPTU4PUNPTkZJR19CUEZfU1lTQ0FMTD15XFxudG9vbHMvc2NoZWRfZXh0L1JFQURNRS5tZDo1OTpDT05GSUdfQlBGX0pJVD15XFxudG9vbHMvc2NoZWRfZXh0L1JFQURNRS5tZC02MC1DT05GSUdfREVCVUdfSU5GT19CVEY9eVxcbnRvb2xzL3NjaGVkX2V4dC9SRUFETUUubWQ6NjE6Q09ORklHX0JQRl9KSVRfQUxXQVlTX09OPXlcXG50b29scy9zY2hlZF9leHQvUkVBRE1FLm1kOjYyOkNPTkZJR19CUEZfSklUX0RFRkFVTFRfT049eVxcbnRvb2xzL3NjaGVkX2V4dC9SRUFETUUubWQtNjMtYGBgXFxuLS1cXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvY29uZmlnPTU9Q09ORklHX0JQRl9FVkVOVFM9eVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9jb25maWc6NjpDT05GSUdfQlBGX0pJVD15XFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL2NvbmZpZy03LUNPTkZJR19CUEZfS1BST0JFX09WRVJSSURFPXlcXG4tLVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9jb25maWcuYWFyY2g2ND0xMz1DT05GSUdfQk9ORElORz15XFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL2NvbmZpZy5hYXJjaDY0OjE0OkNPTkZJR19CUEZfSklUX0FMV0FZU19PTj15XFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL2NvbmZpZy5hYXJjaDY0OjE1OkNPTkZJR19CUEZfSklUX0RFRkFVTFRfT049eVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9jb25maWcuYWFyY2g2NC0xNi1DT05GSUdfQlBGX1BSRUxPQURfVU1EPXlcXG4tLVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9jb25maWcucHBjNjRlbD02PUNPTkZJR19CT05ESU5HPXlcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvY29uZmlnLnBwYzY0ZWw6NzpDT05GSUdfQlBGX0pJVF9BTFdBWVNfT049eVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9jb25maWcucHBjNjRlbC04LUNPTkZJR19CUEZfUFJFTE9BRF9VTUQ9eVxcbi0tXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL2NvbmZpZy5yaXNjdjY0PTU9Q09ORklHX0JPTkRJTkc9eVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9jb25maWcucmlzY3Y2NDo2OkNPTkZJR19CUEZfSklUX0FMV0FZU19PTj15XFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL2NvbmZpZy5yaXNjdjY0LTctQ09ORklHX0JQRl9QUkVMT0FEPXlcXG4tLVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9jb25maWcuczM5MHg9Nz1DT05GSUdfQk9ORElORz15XFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL2NvbmZpZy5zMzkweDo4OkNPTkZJR19CUEZfSklUX0FMV0FZU19PTj15XFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL2NvbmZpZy5zMzkweDo5OkNPTkZJR19CUEZfSklUX0RFRkFVTFRfT049eVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9jb25maWcuczM5MHgtMTAtQ09ORklHX0JQRl9QUkVMT0FEPXlcXG4tLVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9jb25maWcueDg2XzY0PTE4PUNPTkZJR19CT09UVElNRV9UUkFDSU5HPXlcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvY29uZmlnLng4Nl82NDoxOTpDT05GSUdfQlBGX0pJVF9BTFdBWVNfT049eVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9jb25maWcueDg2XzY0LTIwLUNPTkZJR19CUEZfUFJFTE9BRD15XFxuLS1cXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9oaWQvY29uZmlnPTE9Q09ORklHX0JQRl9FVkVOVFM9eVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2hpZC9jb25maWc6MjpDT05GSUdfQlBGX0pJVF9BTFdBWVNfT049eVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2hpZC9jb25maWc6MzpDT05GSUdfQlBGX0pJVD15XFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvaGlkL2NvbmZpZy00LUNPTkZJR19CUEZfS1BST0JFX09WRVJSSURFPXlcXG4tLVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL3Zzb2NrL2NvbmZpZz0zPUNPTkZJR19CUEZfU1lTQ0FMTD15XFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvdnNvY2svY29uZmlnOjQ6Q09ORklHX0JQRl9KSVQ9eVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL3Zzb2NrL2NvbmZpZy01LUNPTkZJR19IQVZFX0VCUEZfSklUPXlcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjZUMjA6MjY6MDQuNTI4OTg5MDAzWiIsIlNlcSI6MTcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjg3NTgxNzMyODMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQlBGIEpJVCBNZW1vcnkgQWxsb2NhdGlvbiBSZXZpZXcqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGFuZCB0aGUgcHJpbWFyeSBwb2ludCBvZiBpbnRlcmVzdCBpcyBgQ09ORklHX0JQRl9KSVRgLiBUaGF0J3MgdGhlIGtleS4gTGV0J3Mgc2VlIHdoYXQncyBiZWluZyB0b3VjaGVkLiBJIG5lZWQgdG8gZm9jdXMgb24gdGhlc2Ugc3ltYm9sczogYGJwZl9qaXRfYWxsb2NfZXhlY2AsIGBicGZfaml0X2FsbG9jX2V4ZWNfcndgLCBgYnBmX3Byb2dfcGFja19hbGxvY2AsIGFuZCBgYnBmX2Rpc3BhdGNoZXJfY2hhbmdlX3Byb2dgLiBJIGFscmVhZHkga25vdyBgYWxsb2NfbmV3X3BhY2tgIGlzIHN0YXRpYywgc28gSSBjYW4gaWdub3JlIGl0IGZvciBteSBwdXJwb3Nlcy5cblxuTm93LCBsZXQgbWUgY29uZmlybTogYXJlIHRob3NlIGNyaXRpY2FsIGZ1bmN0aW9ucyBleHBvcnRlZD8gWWVzLCBgYnBmX2ppdF9hbGxvY19leGVjYCwgYGJwZl9qaXRfYWxsb2NfZXhlY19yd2AsIGBicGZfcHJvZ19wYWNrX2FsbG9jYCwgYW5kIGBicGZfZGlzcGF0Y2hlcl9jaGFuZ2VfcHJvZ2AgYXJlIGFsbCBnbG9iYWwgc3ltYm9scy4gVGhhdCBtZWFucyB0aGV5IGFyZSBkZWZpbml0ZWx5IHdpdGhpbiByZWFjaC5cblxuVGhlcmVmb3JlLCBJJ2xsIGluY2x1ZGUgYWxsIG9mIHRob3NlIGluIG15IGFuYWx5c2lzOiBgYnBmX2ppdF9hbGxvY19leGVjYCwgYGJwZl9qaXRfYWxsb2NfZXhlY19yd2AsIGBicGZfcHJvZ19wYWNrX2FsbG9jYCwgYW5kIGBicGZfZGlzcGF0Y2hlcl9jaGFuZ2VfcHJvZ2AuXG5cbk15IHJlYXNvbmluZyBpcyB0aGlzOiBUaGlzIHBhdGNoIGlzIGZ1bmRhbWVudGFsbHkgYWx0ZXJpbmcgdGhlIEJQRiBKSVQgbWVtb3J5IGFsbG9jYXRpb24gc3RyYXRlZ3kuIEl0J3MgaW50cm9kdWNpbmcgYGJwZl9qaXRfYWxsb2NfZXhlY19yd2AsIGFuZCBpdCdzIGNvbmRpdGlvbmFsbHkgbWFraW5nIG1lbW9yeSByZWFkLW9ubHkgYmFzZWQgb24gYGJwZl9qaXRfbWVtX2lzX3JveCgpYC4gRnVydGhlcm1vcmUsIEkgc2VlIHRoYXQgdGhlIHBhdGNoIGFsdGVycyBgYnBmX2Rpc3BhdGNoZXJfY2hhbmdlX3Byb2dgIHRvIGVtcGxveSBgdm1hbGxvY2AgaW5zdGVhZCBvZiB1c2luZyBgYnBmX2ppdF9hbGxvY19leGVjYC4gVGhhdCdzIGEgc2lnbmlmaWNhbnQgY2hhbmdlLiBUaGVzZSBhcmUgYWxsIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byBCUEYgSklUIG1lbW9yeSBtYW5hZ2VtZW50LiBUaGV5IGFyZSAqcmVhY2hhYmxlKiB0aHJvdWdoIEJQRiBwcm9ncmFtIGxvYWRpbmcgYW5kIGRpc3BhdGNoZXIgdXBkYXRlcywgd2hpY2ggbWVhbnMgdGhleSdyZSBhYnNvbHV0ZWx5IHdvcnRoIGludmVzdGlnYXRpbmcuXG5cblRoaXMgcGF0Y2ggZGVwZW5kcyBvbiBgQlBGX0pJVGAuIFRoYXQncyBub3Qgc3VycHJpc2luZy4gQW5kLCBzaW5jZSB0aGUgY2hhbmdlcyBhcmUgc2lnbmlmaWNhbnQgYW5kIGludm9sdmUgbWVtb3J5IG1hbmFnZW1lbnQsIHRoaXMgaXMgZGVmaW5pdGVseSB3b3J0aCBmdXp6aW5nLlxuXG5KdXN0IHRvIGRvdWJsZSBjaGVjaywgSSB3YW50IHRvIGNvbmZpcm0gYGJwZl9kaXNwYXRjaGVyX2NoYW5nZV9wcm9nYCdzIGNvbnRleHQuIEkgY2FuIHNlZSBpdCBpcyBsb2NhdGVkIGluIGBrZXJuZWwvYnBmL2Rpc3BhdGNoZXIuY2AuIElzIGl0IGNvbnRyb2xsZWQgYnkgYENPTkZJR19CUEZfSklUYD8gQWgsIHllcywgbG9va2luZyBhdCB0aGUgYGtlcm5lbC9icGYvTWFrZWZpbGVgLCB0aGUgZGlzcGF0Y2hlciBjb2RlIGlzIGJ1aWx0IGlmIGBDT05GSUdfQlBGX0pJVGAgaXMgZW5hYmxlZC5cblxuQW5kIHJlZ2FyZGluZyBgYnBmX2ppdF9hbGxvY19leGVjX3J3YCwgSSBzZWUgaXQgaXMgaW4gYGtlcm5lbC9icGYvY29yZS5jYC4gSGFuZyBvbi4gSXQgc2VlbXMgYGtlcm5lbC9icGYvY29yZS5jYCBpcyBhbHdheXMgY29tcGlsZWQuIEhvd2V2ZXIsIGlzIGBicGZfaml0X2FsbG9jX2V4ZWNfcndgICp1bmNvbmRpdGlvbmFsbHkqIGRlZmluZWQgaW4gYGtlcm5lbC9icGYvY29yZS5jYD8gT2theSwgSSdsbCBxdWlja2x5IGxvb2sgYXJvdW5kIGxpbmUgMTA3MCBpbiBga2VybmVsL2JwZi9jb3JlLmNgIHRvIGJlIGNlcnRhaW4uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIxNzMyLCJPdXRwdXRUb2tlbnMiOjM3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NTc4LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI2VDIwOjI2OjEzLjI4NzE2Mzg3NloiLCJTZXEiOjE4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxODE0NzAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwia2VybmVsL2JwZi9jb3JlLmNcIixcbiAgXCJGaXJzdExpbmVcIjogMTA2MCxcbiAgXCJMaW5lQ291bnRcIjogMzBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiMTA2MDpcXHRcXHR9XFxuMTA2MTpcXHRcXG4xMDYyOlxcdFxcdHJldHVybiAwO1xcbjEwNjM6XFx0fVxcbjEwNjQ6XFx0XFxuMTA2NTpcXHR2b2lkIGJwZl9qaXRfdW5jaGFyZ2VfbW9kbWVtKHUzMiBzaXplKVxcbjEwNjY6XFx0e1xcbjEwNjc6XFx0XFx0YXRvbWljX2xvbmdfc3ViKHNpemUsIFxcdTAwMjZicGZfaml0X2N1cnJlbnQpO1xcbjEwNjg6XFx0fVxcbjEwNjk6XFx0XFxuMTA3MDpcXHR2b2lkICpicGZfaml0X2FsbG9jX2V4ZWModW5zaWduZWQgbG9uZyBzaXplKVxcbjEwNzE6XFx0e1xcbjEwNzI6XFx0XFx0cmV0dXJuIGV4ZWNtZW1fYWxsb2MoRVhFQ01FTV9CUEYsIHNpemUpO1xcbjEwNzM6XFx0fVxcbjEwNzQ6XFx0XFxuMTA3NTpcXHR2b2lkICpicGZfaml0X2FsbG9jX2V4ZWNfcncodW5zaWduZWQgbG9uZyBzaXplKVxcbjEwNzY6XFx0e1xcbjEwNzc6XFx0XFx0cmV0dXJuIGV4ZWNtZW1fYWxsb2NfcncoRVhFQ01FTV9CUEYsIHNpemUpO1xcbjEwNzg6XFx0fVxcbjEwNzk6XFx0XFxuMTA4MDpcXHR2b2lkIGJwZl9qaXRfZnJlZV9leGVjKHZvaWQgKmFkZHIpXFxuMTA4MTpcXHR7XFxuMTA4MjpcXHRcXHRleGVjbWVtX2ZyZWUoYWRkcik7XFxuMTA4MzpcXHR9XFxuMTA4NDpcXHRcXG4xMDg1OlxcdHN0cnVjdCBicGZfYmluYXJ5X2hlYWRlciAqXFxuMTA4NjpcXHRicGZfaml0X2JpbmFyeV9hbGxvYyh1bnNpZ25lZCBpbnQgcHJvZ2xlbiwgdTggKippbWFnZV9wdHIsXFxuMTA4NzpcXHRcXHRcXHQgICAgIHVuc2lnbmVkIGludCBhbGlnbm1lbnQsXFxuMTA4ODpcXHRcXHRcXHQgICAgIGJwZl9qaXRfZmlsbF9ob2xlX3QgYnBmX2ZpbGxfaWxsX2luc25zKVxcbjEwODk6XFx0e1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0yNlQyMDoyNjoxMy4yODczNDc0MzZaIiwiU2VxIjoxOSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MjI1ODk3NTk0ODUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aGF0LlxuXG4qKkJQRiBKSVQgRGVwZW5kZW5jeSoqXG5cblJpZ2h0LCBzbywgSSBzZWUgdGhhdCB0aGlzIGlzICp1bmNvbmRpdGlvbmFsbHkqIGRlZmluZWQsIHdoaWNoIGlzIGdvb2QuIFRoYXQncyBhIHNvbGlkIGZvdW5kYXRpb24uIFNwZWNpZmljYWxseSwgdGhlIGRlZmluaXRpb24gaXMgc2l0dGluZyBpbiBga2VybmVsL2JwZi9jb3JlLmNgLiBObyBzdXJwcmlzZXMgdGhlcmUuXG5cbkhvd2V2ZXIsIGFuZCB0aGlzIGlzIHRoZSBjcnVjaWFsIHBvaW50LCBpdHMgcHJhY3RpY2FsIGFwcGxpY2F0aW9u4oCUaXRzIGFjdHVhbCAqdXNlKuKAlGhpbmdlcyBvbiB0aGUgQlBGIEpJVCBjb21waWxlci4gVGhlIGZ1bmN0aW9uIGBicGZfaml0X2FsbG9jX2V4ZWNfcndgIGlzIGtleSBoZXJlLiBJIG5lZWQgdGhhdCBCUEYgSklUIGZ1bmN0aW9uYWxpdHkuIExvb2tpbmcgYXQgdGhlIGNvZGUgcGF0aCwgdGhpcyBgYnBmX2ppdF9hbGxvY19leGVjX3J3YCBpcyBhY3R1YWxseSBjYWxsZWQgZnJvbSBgYXJjaC94ODYvbmV0L2JwZl9qaXRfY29tcC5jYC4gVGhhdCB0ZWxscyBtZSBJIG5lZWQgdG8gYmUgc3VyZSB0aGF0IHRoZSBKSVQgaXMgZW5hYmxlZCBhbmQgZnVuY3Rpb25hbCB3aXRoaW4gdGhhdCBhcmNoaXRlY3R1cmUsIHNwZWNpZmljYWxseS5cblxuTm93IEkgaGF2ZSB3aGF0IEkgbmVlZCwgSSdtIHJlYWR5IHRvIHByb2NlZWQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIzMzg3LCJPdXRwdXRUb2tlbnMiOjE4NiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjc1LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjZUMjA6MjY6MzUuODc3MTA4NzEyWiIsIlNlcSI6MjAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6Nzc5NjUxOTksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIkJQRl9KSVRcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJicGZfaml0X2FsbG9jX2V4ZWNcIixcbiAgICBcImJwZl9qaXRfYWxsb2NfZXhlY19yd1wiLFxuICAgIFwiYnBmX3Byb2dfcGFja19hbGxvY1wiLFxuICAgIFwiYnBmX2Rpc3BhdGNoZXJfY2hhbmdlX3Byb2dcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyBCUEYgSklUIG1lbW9yeSBhbGxvY2F0aW9uIGxvZ2ljLCBpbnRyb2R1Y2luZyBhIG5ldyBgYnBmX2ppdF9hbGxvY19leGVjX3J3YCBmdW5jdGlvbiBhbmQgY29uZGl0aW9uYWxseSBzZXR0aW5nIG1lbW9yeSB0byBST1ggYmFzZWQgb24gYGJwZl9qaXRfbWVtX2lzX3JveCgpYC4gSXQgYWxzbyBjaGFuZ2VzIGBicGZfZGlzcGF0Y2hlcl9jaGFuZ2VfcHJvZ2AgdG8gdXNlIGB2bWFsbG9jYCBpbnN0ZWFkIG9mIGBicGZfaml0X2FsbG9jX2V4ZWNgLiBUaGVzZSBhcmUgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIEJQRiBKSVQgbWVtb3J5IG1hbmFnZW1lbnQgYW5kIGFyZSByZWFjaGFibGUgdmlhIEJQRiBwcm9ncmFtIGxvYWRpbmcgYW5kIGRpc3BhdGNoZXIgdXBkYXRlcy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJCUEZfSklUXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiYnBmX2ppdF9hbGxvY19leGVjXCIsXG4gICAgXCJicGZfaml0X2FsbG9jX2V4ZWNfcndcIixcbiAgICBcImJwZl9wcm9nX3BhY2tfYWxsb2NcIixcbiAgICBcImJwZl9kaXNwYXRjaGVyX2NoYW5nZV9wcm9nXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgQlBGIEpJVCBtZW1vcnkgYWxsb2NhdGlvbiBsb2dpYywgaW50cm9kdWNpbmcgYSBuZXcgYGJwZl9qaXRfYWxsb2NfZXhlY19yd2AgZnVuY3Rpb24gYW5kIGNvbmRpdGlvbmFsbHkgc2V0dGluZyBtZW1vcnkgdG8gUk9YIGJhc2VkIG9uIGBicGZfaml0X21lbV9pc19yb3goKWAuIEl0IGFsc28gY2hhbmdlcyBgYnBmX2Rpc3BhdGNoZXJfY2hhbmdlX3Byb2dgIHRvIHVzZSBgdm1hbGxvY2AgaW5zdGVhZCBvZiBgYnBmX2ppdF9hbGxvY19leGVjYC4gVGhlc2UgYXJlIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byBCUEYgSklUIG1lbW9yeSBtYW5hZ2VtZW50IGFuZCBhcmUgcmVhY2hhYmxlIHZpYSBCUEYgcHJvZ3JhbSBsb2FkaW5nIGFuZCBkaXNwYXRjaGVyIHVwZGF0ZXMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0udG9rZW5zIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnVG9vbER1ciA9IHN0YXRzLnRvb2wuY291bnQgPiAwID8gKHN0YXRzLnRvb2wuZHVyYXRpb24gLyBzdGF0cy50b29sLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCgkJCWNvbnN0IGxsbVN1bWFyeUNlbGxzID0gW3N0YXRzLmxsbS5jb3VudCwgc3RhdHMubGxtLnRva2VucywgYXZnTGxtVG9rZW4sIHN0YXRzLmxsbS5kdXJhdGlvbiwgYXZnTGxtRHVyXTsKCQkJY29uc3QgdG9vbFN1bW1hcnlDZWxscyA9IFtzdGF0cy50b29sLmNvdW50LCBzdGF0cy50b29sLmR1cmF0aW9uLCBhdmdUb29sRHVyXTsKCgkJCWNvbnN0IGxsbVN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xsbV9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJbGxtU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IGxsbVRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJbGxtU3VtYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCWxsbVRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCWxsbVN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKGxsbVRyKTsKCgkJCWNvbnN0IHRvb2xTdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b29sX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQl0b29sU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IHRvb2xUciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCXRvb2xTdW1tYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCXRvb2xUci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQl0b29sU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQodG9vbFRyKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgZmlsdGVyZWRTdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gWyJsbG0iLCAidG9vbCJdLmluY2x1ZGVzKGQuVHlwZSkpOwoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdEdXJhdGlvbicpOwoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOyAKCgkJCWZpbHRlcmVkU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCQoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7CgkJCQlsZXQgdG9vbHRpcCA9IHMuTmFtZTsKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iICYmIHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCQkJCWRhdGEuYWRkUm93KFtgJHtzLlNlcX1gLCBkdXIsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUaW1lIENvbnN1bXB0aW9uIG9mIExMTS9Ub29sIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0vVG9vbCBTdGVwcycsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdTZWNvbmRzJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkdXJhdGlvbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgbGxtU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IGQuVHlwZSA9PT0gImxsbSIpOwoJCQlpZiAobGxtU3RlcHMubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdUb2tlbnMnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAnc3R5bGUnfSk7CQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOwkKCgkJCWNvbnN0IGFnZW50Q29sb3JzID0ge307CgkJCWNvbnN0IHBhbGV0dGUgPSBbJyM0Mjg1RjQnLCAnI0RCNDQzNycsICcjRjRCNDAwJywgJyMwRjlENTgnLCAnI0FCNDdCQycsICcjMDBBQ0MxJ107CgkJCWxldCBjb2xvcklkeCA9IDA7CgkJCWNvbnN0IGFnZW50TExNQ291bnRzID0ge307CgkJCWxsbVN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQlpZiAoIWFnZW50Q29sb3JzW3MuTmFtZV0pIHsKCQkJCQlhZ2VudENvbG9yc1tzLk5hbWVdID0gcGFsZXR0ZVtjb2xvcklkeCAlIHBhbGV0dGUubGVuZ3RoXTsKCQkJCQljb2xvcklkeCsrOwoJCQkJfQoKCQkJCWFnZW50TExNQ291bnRzW3MuTmFtZV0gPSAoYWdlbnRMTE1Db3VudHNbcy5OYW1lXSB8fCAwKSArIDE7CgkJCQljb25zdCBsYWJlbCA9IGAke3MuTmFtZX0tJHthZ2VudExMTUNvdW50c1tzLk5hbWVdfWA7CgkJCQljb25zdCB0b3RhbFRva2VucyA9IHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnM7CgkJCQljb25zdCBzdHlsZSA9IGBjb2xvcjogJHthZ2VudENvbG9yc1tzLk5hbWVdfWA7CgkJCQlsZXQgdG9vbHRpcCA9IGBUb3RhbCBUb2tlbnM6ICR7dG90YWxUb2tlbnN9XG4oSW46ICR7cy5JbnB1dFRva2Vuc30sIE91dDogJHtzLk91dHB1dFRva2Vuc30sIFRob3VnaHRzOiAke3MuT3V0cHV0VGhvdWdodHNUb2tlbnN9KWA7CgkJCQlpZiAocy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoKCQkJCWRhdGEuYWRkUm93KFtsYWJlbCwgdG90YWxUb2tlbnMsIHN0eWxlLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVG9rZW4gQ29uc3VtcHRpb24gYnkgTExNIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0gQ2FsbCBTZXF1ZW5jZScsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdDb25zdW1lZCBUb2tlbnMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rva2VuX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgkJbGV0IGFsbEV4cGFuZGVkID0gZmFsc2U7CgkJZnVuY3Rpb24gdG9nZ2xlQWxsRGV0YWlscygpIHsKCQkJYWxsRXhwYW5kZWQgPSAhYWxsRXhwYW5kZWQ7CgkJCWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ2RldGFpbHMnKS5mb3JFYWNoKGQgPT4gewoJCQkJaWYgKGFsbEV4cGFuZGVkKSBkLnNldEF0dHJpYnV0ZSgnb3BlbicsICcnKTsKCQkJCWVsc2UgZC5yZW1vdmVBdHRyaWJ1dGUoJ29wZW4nKTsKCQkJfSk7CgkJfQoJPC9zY3JpcHQ+CgoKPC9ib2R5Pgo8L2h0bWw+Cg==" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowb6x7d[0].run-triage(0) Phase: Succeeded StartedAt: 2026-06-26 20:18:59 +0000 UTC FinishedAt: 2026-06-26 20:26:37 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "bpf-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git", "commit_hash": "53435562a725962e4de0c29653223129ba11643a", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "BPF_JIT" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "bpf-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git", "commit_hash": "53435562a725962e4de0c29653223129ba11643a", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "BPF_JIT" ], "series_id": "c05b7734-95d0-4937-b801-ff01b95dbffe" }, "track": "KASAN", "fuzz": { "focus": [ "bpf" ], "focus_symbols": [ "bpf_jit_alloc_exec", "bpf_jit_alloc_exec_rw", "bpf_prog_pack_alloc", "bpf_dispatcher_change_prog" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db" ], "skip_cover_check": false, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI2IDIwOjI0PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0JQRl9KSVQmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDticGZfaml0X2FsbG9jX2V4ZWMmIzM0OywKICAgICYjMzQ7YnBmX2ppdF9hbGxvY19leGVjX3J3JiMzNDssCiAgICAmIzM0O2JwZl9wcm9nX3BhY2tfYWxsb2MmIzM0OywKICAgICYjMzQ7YnBmX2Rpc3BhdGNoZXJfY2hhbmdlX3Byb2cmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgQlBGIEpJVCBtZW1vcnkgYWxsb2NhdGlvbiBsb2dpYywgaW50cm9kdWNpbmcgYSBuZXcgYGJwZl9qaXRfYWxsb2NfZXhlY19yd2AgZnVuY3Rpb24gYW5kIGNvbmRpdGlvbmFsbHkgc2V0dGluZyBtZW1vcnkgdG8gUk9YIGJhc2VkIG9uIGBicGZfaml0X21lbV9pc19yb3goKWAuIEl0IGFsc28gY2hhbmdlcyBgYnBmX2Rpc3BhdGNoZXJfY2hhbmdlX3Byb2dgIHRvIHVzZSBgdm1hbGxvY2AgaW5zdGVhZCBvZiBgYnBmX2ppdF9hbGxvY19leGVjYC4gVGhlc2UgYXJlIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byBCUEYgSklUIG1lbW9yeSBtYW5hZ2VtZW50IGFuZCBhcmUgcmVhY2hhYmxlIHZpYSBCUEYgcHJvZ3JhbSBsb2FkaW5nIGFuZCBkaXNwYXRjaGVyIHVwZGF0ZXMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjYgMjA6MjQ8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCA5OGIyNGNlN2UwYWEzYTk1NTkzNDUyMWRhOWM2NjE0Y2JiMmZmYTczXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIEZyaSBKdW4gMjYgMjA6MjQ6MzYgMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvYXJjaC94ODYvbW0vaW5pdC5jIGIvYXJjaC94ODYvbW0vaW5pdC5jXG5pbmRleCBmYjY3MjE3ZmRkY2QzNy4uMDc5ZjhjN2U5ZTNjZGUgMTAwNjQ0XG4tLS0gYS9hcmNoL3g4Ni9tbS9pbml0LmNcbiYjNDM7JiM0MzsmIzQzOyBiL2FyY2gveDg2L21tL2luaXQuY1xuQEAgLTExMDcsMTAgJiM0MzsxMTA3LDEwIEBAIHN0cnVjdCBleGVjbWVtX2luZm8gX19pbml0ICpleGVjbWVtX2FyY2hfc2V0dXAodm9pZClcbiBcdFx0XHRcdC5hbGlnbm1lbnQgPSBNT0RVTEVfQUxJR04sXG4gXHRcdFx0fSxcbiBcdFx0XHRbRVhFQ01FTV9CUEZdID0ge1xuLVx0XHRcdFx0LmZsYWdzXHQ9IEVYRUNNRU1fS0FTQU5fU0hBRE9XLFxuJiM0MztcdFx0XHRcdC5mbGFnc1x0PSBmbGFncyxcbiBcdFx0XHRcdC5zdGFydFx0PSBzdGFydCxcbiBcdFx0XHRcdC5lbmRcdD0gTU9EVUxFU19FTkQsXG4tXHRcdFx0XHQucGdwcm90XHQ9IFBBR0VfS0VSTkVMLFxuJiM0MztcdFx0XHRcdC5wZ3Byb3RcdD0gcGdwcm90LFxuIFx0XHRcdFx0LmFsaWdubWVudCA9IE1PRFVMRV9BTElHTixcbiBcdFx0XHR9LFxuIFx0XHRcdFtFWEVDTUVNX01PRFVMRV9EQVRBXSA9IHtcbmRpZmYgLS1naXQgYS9hcmNoL3g4Ni9uZXQvYnBmX2ppdF9jb21wLmMgYi9hcmNoL3g4Ni9uZXQvYnBmX2ppdF9jb21wLmNcbmluZGV4IDA1NGUwNDNmZmNkMjJkLi5iYTU2MmQzYmYwMzFlOSAxMDA2NDRcbi0tLSBhL2FyY2gveDg2L25ldC9icGZfaml0X2NvbXAuY1xuJiM0MzsmIzQzOyYjNDM7IGIvYXJjaC94ODYvbmV0L2JwZl9qaXRfY29tcC5jXG5AQCAtMzcwMywxMyAmIzQzOzM3MDMsMTIgQEAgaW50IGFyY2hfYnBmX3RyYW1wb2xpbmVfc2l6ZShjb25zdCBzdHJ1Y3QgYnRmX2Z1bmNfbW9kZWwgKm0sIHUzMiBmbGFncyxcbiBcdGludCByZXQ7XG4gXG4gXHQvKiBBbGxvY2F0ZSBhIHRlbXBvcmFyeSBidWZmZXIgZm9yIF9fYXJjaF9wcmVwYXJlX2JwZl90cmFtcG9saW5lKCkuXG4tXHQgKiBUaGlzIHdpbGwgTk9UIGNhdXNlIGZyYWdtZW50YXRpb24gaW4gZGlyZWN0IG1hcCwgYXMgd2UgZG8gbm90XG4tXHQgKiBjYWxsIHNldF9tZW1vcnlfKigpIG9uIHRoaXMgYnVmZmVyLlxuIFx0ICpcbiBcdCAqIFdlIGNhbm5vdCB1c2Uga3ZtYWxsb2MgaGVyZSwgYmVjYXVzZSB3ZSBuZWVkIGltYWdlIHRvIGJlIGluXG4gXHQgKiBtb2R1bGUgbWVtb3J5IHJhbmdlLlxuJiM0MztcdCAqIFNpbmNlIGl0IG11c3QgYmUgd3JpdGFibGUgdXNlIGJwZl9qaXRfYWxsb2NfZXhlY19ydygpLlxuIFx0ICovXG4tXHRpbWFnZSA9IGJwZl9qaXRfYWxsb2NfZXhlYyhQQUdFX1NJWkUpO1xuJiM0MztcdGltYWdlID0gYnBmX2ppdF9hbGxvY19leGVjX3J3KFBBR0VfU0laRSk7XG4gXHRpZiAoIWltYWdlKVxuIFx0XHRyZXR1cm4gLUVOT01FTTtcbiBcbmRpZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4L2ZpbHRlci5oIGIvaW5jbHVkZS9saW51eC9maWx0ZXIuaFxuaW5kZXggNjdkMzM3ZWRlOTFiOGUuLjc3M2IxNmYwNjU3MmMwIDEwMDY0NFxuLS0tIGEvaW5jbHVkZS9saW51eC9maWx0ZXIuaFxuJiM0MzsmIzQzOyYjNDM7IGIvaW5jbHVkZS9saW51eC9maWx0ZXIuaFxuQEAgLTEzMjMsNiAmIzQzOzEzMjMsNyBAQCBicGZfaml0X2JpbmFyeV9hbGxvYyh1bnNpZ25lZCBpbnQgcHJvZ2xlbiwgdTggKippbWFnZV9wdHIsXG4gdm9pZCBicGZfaml0X2JpbmFyeV9mcmVlKHN0cnVjdCBicGZfYmluYXJ5X2hlYWRlciAqaGRyKTtcbiB1NjQgYnBmX2ppdF9hbGxvY19leGVjX2xpbWl0KHZvaWQpO1xuIHZvaWQgKmJwZl9qaXRfYWxsb2NfZXhlYyh1bnNpZ25lZCBsb25nIHNpemUpO1xuJiM0Mzt2b2lkICpicGZfaml0X2FsbG9jX2V4ZWNfcncodW5zaWduZWQgbG9uZyBzaXplKTtcbiB2b2lkIGJwZl9qaXRfZnJlZV9leGVjKHZvaWQgKmFkZHIpO1xuIHZvaWQgYnBmX2ppdF9mcmVlKHN0cnVjdCBicGZfcHJvZyAqZnApO1xuIHN0cnVjdCBicGZfYmluYXJ5X2hlYWRlciAqXG5kaWZmIC0tZ2l0IGEva2VybmVsL2JwZi9jb3JlLmMgYi9rZXJuZWwvYnBmL2NvcmUuY1xuaW5kZXggNjQ5Y2NlNDFlMTNmM2IuLjU1Mjg0YjVkMDI5MmRjIDEwMDY0NFxuLS0tIGEva2VybmVsL2JwZi9jb3JlLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2tlcm5lbC9icGYvY29yZS5jXG5AQCAtOTA0LDYgJiM0Mzs5MDQsMTEgQEAgc3RhdGljIExJU1RfSEVBRChwYWNrX2xpc3QpO1xuIFxuICNkZWZpbmUgQlBGX1BST0dfQ0hVTktfQ09VTlQgKEJQRl9QUk9HX1BBQ0tfU0laRSAvIEJQRl9QUk9HX0NIVU5LX1NJWkUpXG4gXG4mIzQzO3N0YXRpYyBib29sIGJwZl9qaXRfbWVtX2lzX3JveCh2b2lkKVxuJiM0Mzt7XG4mIzQzO1x0cmV0dXJuIGV4ZWNtZW1faXNfcm94KEVYRUNNRU1fQlBGKTtcbiYjNDM7fVxuJiM0MztcbiBzdGF0aWMgc3RydWN0IGJwZl9wcm9nX3BhY2sgKmFsbG9jX25ld19wYWNrKGJwZl9qaXRfZmlsbF9ob2xlX3QgYnBmX2ZpbGxfaWxsX2luc25zKVxuIHtcbiBcdHN0cnVjdCBicGZfcHJvZ19wYWNrICpwYWNrO1xuQEAgLTkxNSwxNCAmIzQzOzkyMCwxNiBAQCBzdGF0aWMgc3RydWN0IGJwZl9wcm9nX3BhY2sgKmFsbG9jX25ld19wYWNrKGJwZl9qaXRfZmlsbF9ob2xlX3QgYnBmX2ZpbGxfaWxsX2luc1xuIFx0cGFjay1cdTAwM2VwdHIgPSBicGZfaml0X2FsbG9jX2V4ZWMoQlBGX1BST0dfUEFDS19TSVpFKTtcbiBcdGlmICghcGFjay1cdTAwM2VwdHIpXG4gXHRcdGdvdG8gb3V0O1xuLVx0YnBmX2ZpbGxfaWxsX2luc25zKHBhY2stXHUwMDNlcHRyLCBCUEZfUFJPR19QQUNLX1NJWkUpO1xuIFx0Yml0bWFwX3plcm8ocGFjay1cdTAwM2ViaXRtYXAsIEJQRl9QUk9HX1BBQ0tfU0laRSAvIEJQRl9QUk9HX0NIVU5LX1NJWkUpO1xuIFxuLVx0c2V0X3ZtX2ZsdXNoX3Jlc2V0X3Blcm1zKHBhY2stXHUwMDNlcHRyKTtcbi1cdGVyciA9IHNldF9tZW1vcnlfcm94KCh1bnNpZ25lZCBsb25nKXBhY2stXHUwMDNlcHRyLFxuLVx0XHRcdCAgICAgQlBGX1BST0dfUEFDS19TSVpFIC8gUEFHRV9TSVpFKTtcbi1cdGlmIChlcnIpXG4tXHRcdGdvdG8gb3V0O1xuJiM0MztcdGlmICghYnBmX2ppdF9tZW1faXNfcm94KCkpIHtcbiYjNDM7XHRcdGJwZl9maWxsX2lsbF9pbnNucyhwYWNrLVx1MDAzZXB0ciwgQlBGX1BST0dfUEFDS19TSVpFKTtcbiYjNDM7XHRcdHNldF92bV9mbHVzaF9yZXNldF9wZXJtcyhwYWNrLVx1MDAzZXB0cik7XG4mIzQzO1x0XHRlcnIgPSBzZXRfbWVtb3J5X3JveCgodW5zaWduZWQgbG9uZylwYWNrLVx1MDAzZXB0cixcbiYjNDM7XHRcdFx0XHQgICAgIEJQRl9QUk9HX1BBQ0tfU0laRSAvIFBBR0VfU0laRSk7XG4mIzQzO1x0XHRpZiAoZXJyKVxuJiM0MztcdFx0XHRnb3RvIG91dDtcbiYjNDM7XHR9XG4gXHRsaXN0X2FkZF90YWlsKFx1MDAyNnBhY2stXHUwMDNlbGlzdCwgXHUwMDI2cGFja19saXN0KTtcbiBcdHJldHVybiBwYWNrO1xuIFxuQEAgLTk0Myw3ICYjNDM7OTUwLDcgQEAgdm9pZCAqYnBmX3Byb2dfcGFja19hbGxvYyh1MzIgc2l6ZSwgYnBmX2ppdF9maWxsX2hvbGVfdCBicGZfZmlsbF9pbGxfaW5zbnMpXG4gXHRpZiAoc2l6ZSBcdTAwM2UgQlBGX1BST0dfUEFDS19TSVpFKSB7XG4gXHRcdHNpemUgPSByb3VuZF91cChzaXplLCBQQUdFX1NJWkUpO1xuIFx0XHRwdHIgPSBicGZfaml0X2FsbG9jX2V4ZWMoc2l6ZSk7XG4tXHRcdGlmIChwdHIpIHtcbiYjNDM7XHRcdGlmIChwdHIgXHUwMDI2XHUwMDI2ICFicGZfaml0X21lbV9pc19yb3goKSkge1xuIFx0XHRcdGludCBlcnI7XG4gXG4gXHRcdFx0YnBmX2ZpbGxfaWxsX2luc25zKHB0ciwgc2l6ZSk7XG5AQCAtMTA2MCwxMiAmIzQzOzEwNjcsMTcgQEAgdm9pZCBicGZfaml0X3VuY2hhcmdlX21vZG1lbSh1MzIgc2l6ZSlcbiBcdGF0b21pY19sb25nX3N1YihzaXplLCBcdTAwMjZicGZfaml0X2N1cnJlbnQpO1xuIH1cbiBcbi12b2lkICpfX3dlYWsgYnBmX2ppdF9hbGxvY19leGVjKHVuc2lnbmVkIGxvbmcgc2l6ZSlcbiYjNDM7dm9pZCAqYnBmX2ppdF9hbGxvY19leGVjKHVuc2lnbmVkIGxvbmcgc2l6ZSlcbiB7XG4gXHRyZXR1cm4gZXhlY21lbV9hbGxvYyhFWEVDTUVNX0JQRiwgc2l6ZSk7XG4gfVxuIFxuLXZvaWQgX193ZWFrIGJwZl9qaXRfZnJlZV9leGVjKHZvaWQgKmFkZHIpXG4mIzQzO3ZvaWQgKmJwZl9qaXRfYWxsb2NfZXhlY19ydyh1bnNpZ25lZCBsb25nIHNpemUpXG4mIzQzO3tcbiYjNDM7XHRyZXR1cm4gZXhlY21lbV9hbGxvY19ydyhFWEVDTUVNX0JQRiwgc2l6ZSk7XG4mIzQzO31cbiYjNDM7XG4mIzQzO3ZvaWQgYnBmX2ppdF9mcmVlX2V4ZWModm9pZCAqYWRkcilcbiB7XG4gXHRleGVjbWVtX2ZyZWUoYWRkcik7XG4gfVxuZGlmZiAtLWdpdCBhL2tlcm5lbC9icGYvZGlzcGF0Y2hlci5jIGIva2VybmVsL2JwZi9kaXNwYXRjaGVyLmNcbmluZGV4IGI3N2RiNzQxM2Y4YzcwLi5hN2E2YTM3NWNkZDMxZCAxMDA2NDRcbi0tLSBhL2tlcm5lbC9icGYvZGlzcGF0Y2hlci5jXG4mIzQzOyYjNDM7JiM0MzsgYi9rZXJuZWwvYnBmL2Rpc3BhdGNoZXIuY1xuQEAgLTE0OCw3ICYjNDM7MTQ4LDEwIEBAIHZvaWQgYnBmX2Rpc3BhdGNoZXJfY2hhbmdlX3Byb2coc3RydWN0IGJwZl9kaXNwYXRjaGVyICpkLCBzdHJ1Y3QgYnBmX3Byb2cgKmZyb20sXG4gXHRcdGQtXHUwMDNlaW1hZ2UgPSBicGZfcHJvZ19wYWNrX2FsbG9jKFBBR0VfU0laRSwgYnBmX2ppdF9maWxsX2hvbGVfd2l0aF96ZXJvKTtcbiBcdFx0aWYgKCFkLVx1MDAzZWltYWdlKVxuIFx0XHRcdGdvdG8gb3V0O1xuLVx0XHRkLVx1MDAzZXJ3X2ltYWdlID0gYnBmX2ppdF9hbGxvY19leGVjKFBBR0VfU0laRSk7XG4mIzQzO1x0XHQvKiBkLVx1MDAzZXJ3X2ltYWdlIGRvZXNuJiMzOTt0IG5lZWQgdG8gYmUgaW4gbW9kdWxlIG1lbW9yeSByYW5nZSwgc28gd2VcbiYjNDM7XHRcdCAqIGNhbiB1c2Ugdm1hbGxvYy5cbiYjNDM7XHRcdCAqL1xuJiM0MztcdFx0ZC1cdTAwM2Vyd19pbWFnZSA9IHZtYWxsb2MoUEFHRV9TSVpFKTtcbiBcdFx0aWYgKCFkLVx1MDAzZXJ3X2ltYWdlKSB7XG4gXHRcdFx0YnBmX3Byb2dfcGFja19mcmVlKGQtXHUwMDNlaW1hZ2UsIFBBR0VfU0laRSk7XG4gXHRcdFx0ZC1cdTAwM2VpbWFnZSA9IE5VTEw7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjYgMjA6MjQ8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7QlBGX0pJVCYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2JwZl9qaXRfYWxsb2NfZXhlYyYjMzQ7LAogICAgJiMzNDticGZfaml0X2FsbG9jX2V4ZWNfcncmIzM0OywKICAgICYjMzQ7YnBmX3Byb2dfcGFja19hbGxvYyYjMzQ7LAogICAgJiMzNDticGZfZGlzcGF0Y2hlcl9jaGFuZ2VfcHJvZyYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyBCUEYgSklUIG1lbW9yeSBhbGxvY2F0aW9uIGxvZ2ljLCBpbnRyb2R1Y2luZyBhIG5ldyBgYnBmX2ppdF9hbGxvY19leGVjX3J3YCBmdW5jdGlvbiBhbmQgY29uZGl0aW9uYWxseSBzZXR0aW5nIG1lbW9yeSB0byBST1ggYmFzZWQgb24gYGJwZl9qaXRfbWVtX2lzX3JveCgpYC4gSXQgYWxzbyBjaGFuZ2VzIGBicGZfZGlzcGF0Y2hlcl9jaGFuZ2VfcHJvZ2AgdG8gdXNlIGB2bWFsbG9jYCBpbnN0ZWFkIG9mIGBicGZfaml0X2FsbG9jX2V4ZWNgLiBUaGVzZSBhcmUgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIEJQRiBKSVQgbWVtb3J5IG1hbmFnZW1lbnQgYW5kIGFyZSByZWFjaGFibGUgdmlhIEJQRiBwcm9ncmFtIGxvYWRpbmcgYW5kIGRpc3BhdGNoZXIgdXBkYXRlcy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lCmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHkKdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy4KClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6Ci0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy4KLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy4KLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuCi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLApldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuCgpJZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoCnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLgoKV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086CjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuCiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLgoyLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS4KICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgogICBEbyBub3QgbGlzdCB0b28gZ2VuZXJpYyBjb25maWdzICh3ZSBhbHJlYWR5IGhhdmUgdGhlbSBlbmFibGVkKS4gT25seSBsaXN0IHRob3NlIHRoYXQKICAgc3BlY2lmaWNhbGx5IGNvdmVyIHRoZSBtb2RpZmllZCBjb2RlLiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3Mgb3V0cHV0IGFycmF5LAogICBhbmQgRE8gTk9UIGFkZCBhICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgOThiMjRjZTdlMGFhM2E5NTU5MzQ1MjFkYTljNjYxNGNiYjJmZmE3MwpBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBGcmkgSnVuIDI2IDIwOjI0OjM2IDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvYXJjaC94ODYvbW0vaW5pdC5jIGIvYXJjaC94ODYvbW0vaW5pdC5jCmluZGV4IGZiNjcyMTdmZGRjZDM3Li4wNzlmOGM3ZTllM2NkZSAxMDA2NDQKLS0tIGEvYXJjaC94ODYvbW0vaW5pdC5jCiYjNDM7JiM0MzsmIzQzOyBiL2FyY2gveDg2L21tL2luaXQuYwpAQCAtMTEwNywxMCAmIzQzOzExMDcsMTAgQEAgc3RydWN0IGV4ZWNtZW1faW5mbyBfX2luaXQgKmV4ZWNtZW1fYXJjaF9zZXR1cCh2b2lkKQogCQkJCS5hbGlnbm1lbnQgPSBNT0RVTEVfQUxJR04sCiAJCQl9LAogCQkJW0VYRUNNRU1fQlBGXSA9IHsKLQkJCQkuZmxhZ3MJPSBFWEVDTUVNX0tBU0FOX1NIQURPVywKJiM0MzsJCQkJLmZsYWdzCT0gZmxhZ3MsCiAJCQkJLnN0YXJ0CT0gc3RhcnQsCiAJCQkJLmVuZAk9IE1PRFVMRVNfRU5ELAotCQkJCS5wZ3Byb3QJPSBQQUdFX0tFUk5FTCwKJiM0MzsJCQkJLnBncHJvdAk9IHBncHJvdCwKIAkJCQkuYWxpZ25tZW50ID0gTU9EVUxFX0FMSUdOLAogCQkJfSwKIAkJCVtFWEVDTUVNX01PRFVMRV9EQVRBXSA9IHsKZGlmZiAtLWdpdCBhL2FyY2gveDg2L25ldC9icGZfaml0X2NvbXAuYyBiL2FyY2gveDg2L25ldC9icGZfaml0X2NvbXAuYwppbmRleCAwNTRlMDQzZmZjZDIyZC4uYmE1NjJkM2JmMDMxZTkgMTAwNjQ0Ci0tLSBhL2FyY2gveDg2L25ldC9icGZfaml0X2NvbXAuYwomIzQzOyYjNDM7JiM0MzsgYi9hcmNoL3g4Ni9uZXQvYnBmX2ppdF9jb21wLmMKQEAgLTM3MDMsMTMgJiM0MzszNzAzLDEyIEBAIGludCBhcmNoX2JwZl90cmFtcG9saW5lX3NpemUoY29uc3Qgc3RydWN0IGJ0Zl9mdW5jX21vZGVsICptLCB1MzIgZmxhZ3MsCiAJaW50IHJldDsKIAogCS8qIEFsbG9jYXRlIGEgdGVtcG9yYXJ5IGJ1ZmZlciBmb3IgX19hcmNoX3ByZXBhcmVfYnBmX3RyYW1wb2xpbmUoKS4KLQkgKiBUaGlzIHdpbGwgTk9UIGNhdXNlIGZyYWdtZW50YXRpb24gaW4gZGlyZWN0IG1hcCwgYXMgd2UgZG8gbm90Ci0JICogY2FsbCBzZXRfbWVtb3J5XyooKSBvbiB0aGlzIGJ1ZmZlci4KIAkgKgogCSAqIFdlIGNhbm5vdCB1c2Uga3ZtYWxsb2MgaGVyZSwgYmVjYXVzZSB3ZSBuZWVkIGltYWdlIHRvIGJlIGluCiAJICogbW9kdWxlIG1lbW9yeSByYW5nZS4KJiM0MzsJICogU2luY2UgaXQgbXVzdCBiZSB3cml0YWJsZSB1c2UgYnBmX2ppdF9hbGxvY19leGVjX3J3KCkuCiAJICovCi0JaW1hZ2UgPSBicGZfaml0X2FsbG9jX2V4ZWMoUEFHRV9TSVpFKTsKJiM0MzsJaW1hZ2UgPSBicGZfaml0X2FsbG9jX2V4ZWNfcncoUEFHRV9TSVpFKTsKIAlpZiAoIWltYWdlKQogCQlyZXR1cm4gLUVOT01FTTsKIApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51eC9maWx0ZXIuaCBiL2luY2x1ZGUvbGludXgvZmlsdGVyLmgKaW5kZXggNjdkMzM3ZWRlOTFiOGUuLjc3M2IxNmYwNjU3MmMwIDEwMDY0NAotLS0gYS9pbmNsdWRlL2xpbnV4L2ZpbHRlci5oCiYjNDM7JiM0MzsmIzQzOyBiL2luY2x1ZGUvbGludXgvZmlsdGVyLmgKQEAgLTEzMjMsNiAmIzQzOzEzMjMsNyBAQCBicGZfaml0X2JpbmFyeV9hbGxvYyh1bnNpZ25lZCBpbnQgcHJvZ2xlbiwgdTggKippbWFnZV9wdHIsCiB2b2lkIGJwZl9qaXRfYmluYXJ5X2ZyZWUoc3RydWN0IGJwZl9iaW5hcnlfaGVhZGVyICpoZHIpOwogdTY0IGJwZl9qaXRfYWxsb2NfZXhlY19saW1pdCh2b2lkKTsKIHZvaWQgKmJwZl9qaXRfYWxsb2NfZXhlYyh1bnNpZ25lZCBsb25nIHNpemUpOwomIzQzO3ZvaWQgKmJwZl9qaXRfYWxsb2NfZXhlY19ydyh1bnNpZ25lZCBsb25nIHNpemUpOwogdm9pZCBicGZfaml0X2ZyZWVfZXhlYyh2b2lkICphZGRyKTsKIHZvaWQgYnBmX2ppdF9mcmVlKHN0cnVjdCBicGZfcHJvZyAqZnApOwogc3RydWN0IGJwZl9iaW5hcnlfaGVhZGVyICoKZGlmZiAtLWdpdCBhL2tlcm5lbC9icGYvY29yZS5jIGIva2VybmVsL2JwZi9jb3JlLmMKaW5kZXggNjQ5Y2NlNDFlMTNmM2IuLjU1Mjg0YjVkMDI5MmRjIDEwMDY0NAotLS0gYS9rZXJuZWwvYnBmL2NvcmUuYwomIzQzOyYjNDM7JiM0MzsgYi9rZXJuZWwvYnBmL2NvcmUuYwpAQCAtOTA0LDYgJiM0Mzs5MDQsMTEgQEAgc3RhdGljIExJU1RfSEVBRChwYWNrX2xpc3QpOwogCiAjZGVmaW5lIEJQRl9QUk9HX0NIVU5LX0NPVU5UIChCUEZfUFJPR19QQUNLX1NJWkUgLyBCUEZfUFJPR19DSFVOS19TSVpFKQogCiYjNDM7c3RhdGljIGJvb2wgYnBmX2ppdF9tZW1faXNfcm94KHZvaWQpCiYjNDM7ewomIzQzOwlyZXR1cm4gZXhlY21lbV9pc19yb3goRVhFQ01FTV9CUEYpOwomIzQzO30KJiM0MzsKIHN0YXRpYyBzdHJ1Y3QgYnBmX3Byb2dfcGFjayAqYWxsb2NfbmV3X3BhY2soYnBmX2ppdF9maWxsX2hvbGVfdCBicGZfZmlsbF9pbGxfaW5zbnMpCiB7CiAJc3RydWN0IGJwZl9wcm9nX3BhY2sgKnBhY2s7CkBAIC05MTUsMTQgJiM0Mzs5MjAsMTYgQEAgc3RhdGljIHN0cnVjdCBicGZfcHJvZ19wYWNrICphbGxvY19uZXdfcGFjayhicGZfaml0X2ZpbGxfaG9sZV90IGJwZl9maWxsX2lsbF9pbnMKIAlwYWNrLSZndDtwdHIgPSBicGZfaml0X2FsbG9jX2V4ZWMoQlBGX1BST0dfUEFDS19TSVpFKTsKIAlpZiAoIXBhY2stJmd0O3B0cikKIAkJZ290byBvdXQ7Ci0JYnBmX2ZpbGxfaWxsX2luc25zKHBhY2stJmd0O3B0ciwgQlBGX1BST0dfUEFDS19TSVpFKTsKIAliaXRtYXBfemVybyhwYWNrLSZndDtiaXRtYXAsIEJQRl9QUk9HX1BBQ0tfU0laRSAvIEJQRl9QUk9HX0NIVU5LX1NJWkUpOwogCi0Jc2V0X3ZtX2ZsdXNoX3Jlc2V0X3Blcm1zKHBhY2stJmd0O3B0cik7Ci0JZXJyID0gc2V0X21lbW9yeV9yb3goKHVuc2lnbmVkIGxvbmcpcGFjay0mZ3Q7cHRyLAotCQkJICAgICBCUEZfUFJPR19QQUNLX1NJWkUgLyBQQUdFX1NJWkUpOwotCWlmIChlcnIpCi0JCWdvdG8gb3V0OwomIzQzOwlpZiAoIWJwZl9qaXRfbWVtX2lzX3JveCgpKSB7CiYjNDM7CQlicGZfZmlsbF9pbGxfaW5zbnMocGFjay0mZ3Q7cHRyLCBCUEZfUFJPR19QQUNLX1NJWkUpOwomIzQzOwkJc2V0X3ZtX2ZsdXNoX3Jlc2V0X3Blcm1zKHBhY2stJmd0O3B0cik7CiYjNDM7CQllcnIgPSBzZXRfbWVtb3J5X3JveCgodW5zaWduZWQgbG9uZylwYWNrLSZndDtwdHIsCiYjNDM7CQkJCSAgICAgQlBGX1BST0dfUEFDS19TSVpFIC8gUEFHRV9TSVpFKTsKJiM0MzsJCWlmIChlcnIpCiYjNDM7CQkJZ290byBvdXQ7CiYjNDM7CX0KIAlsaXN0X2FkZF90YWlsKCZhbXA7cGFjay0mZ3Q7bGlzdCwgJmFtcDtwYWNrX2xpc3QpOwogCXJldHVybiBwYWNrOwogCkBAIC05NDMsNyAmIzQzOzk1MCw3IEBAIHZvaWQgKmJwZl9wcm9nX3BhY2tfYWxsb2ModTMyIHNpemUsIGJwZl9qaXRfZmlsbF9ob2xlX3QgYnBmX2ZpbGxfaWxsX2luc25zKQogCWlmIChzaXplICZndDsgQlBGX1BST0dfUEFDS19TSVpFKSB7CiAJCXNpemUgPSByb3VuZF91cChzaXplLCBQQUdFX1NJWkUpOwogCQlwdHIgPSBicGZfaml0X2FsbG9jX2V4ZWMoc2l6ZSk7Ci0JCWlmIChwdHIpIHsKJiM0MzsJCWlmIChwdHIgJmFtcDsmYW1wOyAhYnBmX2ppdF9tZW1faXNfcm94KCkpIHsKIAkJCWludCBlcnI7CiAKIAkJCWJwZl9maWxsX2lsbF9pbnNucyhwdHIsIHNpemUpOwpAQCAtMTA2MCwxMiAmIzQzOzEwNjcsMTcgQEAgdm9pZCBicGZfaml0X3VuY2hhcmdlX21vZG1lbSh1MzIgc2l6ZSkKIAlhdG9taWNfbG9uZ19zdWIoc2l6ZSwgJmFtcDticGZfaml0X2N1cnJlbnQpOwogfQogCi12b2lkICpfX3dlYWsgYnBmX2ppdF9hbGxvY19leGVjKHVuc2lnbmVkIGxvbmcgc2l6ZSkKJiM0Mzt2b2lkICpicGZfaml0X2FsbG9jX2V4ZWModW5zaWduZWQgbG9uZyBzaXplKQogewogCXJldHVybiBleGVjbWVtX2FsbG9jKEVYRUNNRU1fQlBGLCBzaXplKTsKIH0KIAotdm9pZCBfX3dlYWsgYnBmX2ppdF9mcmVlX2V4ZWModm9pZCAqYWRkcikKJiM0Mzt2b2lkICpicGZfaml0X2FsbG9jX2V4ZWNfcncodW5zaWduZWQgbG9uZyBzaXplKQomIzQzO3sKJiM0MzsJcmV0dXJuIGV4ZWNtZW1fYWxsb2NfcncoRVhFQ01FTV9CUEYsIHNpemUpOwomIzQzO30KJiM0MzsKJiM0Mzt2b2lkIGJwZl9qaXRfZnJlZV9leGVjKHZvaWQgKmFkZHIpCiB7CiAJZXhlY21lbV9mcmVlKGFkZHIpOwogfQpkaWZmIC0tZ2l0IGEva2VybmVsL2JwZi9kaXNwYXRjaGVyLmMgYi9rZXJuZWwvYnBmL2Rpc3BhdGNoZXIuYwppbmRleCBiNzdkYjc0MTNmOGM3MC4uYTdhNmEzNzVjZGQzMWQgMTAwNjQ0Ci0tLSBhL2tlcm5lbC9icGYvZGlzcGF0Y2hlci5jCiYjNDM7JiM0MzsmIzQzOyBiL2tlcm5lbC9icGYvZGlzcGF0Y2hlci5jCkBAIC0xNDgsNyAmIzQzOzE0OCwxMCBAQCB2b2lkIGJwZl9kaXNwYXRjaGVyX2NoYW5nZV9wcm9nKHN0cnVjdCBicGZfZGlzcGF0Y2hlciAqZCwgc3RydWN0IGJwZl9wcm9nICpmcm9tLAogCQlkLSZndDtpbWFnZSA9IGJwZl9wcm9nX3BhY2tfYWxsb2MoUEFHRV9TSVpFLCBicGZfaml0X2ZpbGxfaG9sZV93aXRoX3plcm8pOwogCQlpZiAoIWQtJmd0O2ltYWdlKQogCQkJZ290byBvdXQ7Ci0JCWQtJmd0O3J3X2ltYWdlID0gYnBmX2ppdF9hbGxvY19leGVjKFBBR0VfU0laRSk7CiYjNDM7CQkvKiBkLSZndDtyd19pbWFnZSBkb2VzbiYjMzk7dCBuZWVkIHRvIGJlIGluIG1vZHVsZSBtZW1vcnkgcmFuZ2UsIHNvIHdlCiYjNDM7CQkgKiBjYW4gdXNlIHZtYWxsb2MuCiYjNDM7CQkgKi8KJiM0MzsJCWQtJmd0O3J3X2ltYWdlID0gdm1hbGxvYyhQQUdFX1NJWkUpOwogCQlpZiAoIWQtJmd0O3J3X2ltYWdlKSB7CiAJCQlicGZfcHJvZ19wYWNrX2ZyZWUoZC0mZ3Q7aW1hZ2UsIFBBR0VfU0laRSk7CiAJCQlkLSZndDtpbWFnZSA9IE5VTEw7CjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI2IDIwOjI0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDM2ODUKCQkJCQkJCW91dHB1dDogMjMKCQkJCQkJCXRob3VnaHRzOiA0MzIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQlBGIEpJVCBNZW1vcnkgQWxsb2NhdGlvbiBQYXRjaDogRnV6emluZyBGb2N1cyoqCgpPa2F5LCBzbyB3ZSYjMzk7dmUgZ290IGEgcGF0Y2ggc2VyaWVzIGhlcmUgdGhhdCYjMzk7cyB0d2Vha2luZyBCUEYgSklUIG1lbW9yeSBhbGxvY2F0aW9uLiBTZWVtcyBsaWtlIGEgc3RyYWlnaHRmb3J3YXJkLCBmdW5jdGlvbmFsIGNoYW5nZSDigJMgYWx3YXlzIHdvcnRoIGEgY2xvc2VyIGxvb2sgZnJvbSBhIGZ1enppbmcgcGVyc3BlY3RpdmUsIGVzcGVjaWFsbHkgd2hlbiBpdCBpbnZvbHZlcyBtZW1vcnkuIExldCYjMzk7cyBzZWUgd2hhdCYjMzk7cyBhY3R1YWxseSBiZWVuIG1vZGlmaWVkLiBUaGUgY2hhbmdlcyB0b3VjaCBgYXJjaC94ODYvbW0vaW5pdC5jYCBhZGp1c3RpbmcgYEVYRUNNRU1fQlBGYCBmbGFncywgYW5kIGBhcmNoL3g4Ni9uZXQvYnBmX2ppdF9jb21wLmNgLCBhbmQgdGhleSBpbnRyb2R1Y2UgYSBuZXcgYWxsb2NhdGlvbiBmdW5jdGlvbiBjYWxsZWQgYGJwZl9qaXRfYWxsb2NfZXhlY19yd2AuIFdlIGFsc28gaGF2ZSBzb21lIGFkZGl0aW9ucyB0byBgaW5jbHVkZS9saW51eC9maWx0ZXIuaGAgYW5kIGNoYW5nZXMgaW4gYGtlcm5lbC9icGYvY29yZS5jYCBpbmNsdWRpbmcgYSBjYWxsIHRvIGBicGZfaml0X21lbV9pc19yb3goKWAuIEl0IGFsc28gYXBwZWFycyB3ZSYjMzk7cmUgdXNpbmcgYHZtYWxsb2NgIGluc3RlYWQgb2YgYGJwZl9qaXRfYWxsb2NfZXhlY2AgZm9yIGBkLSZndDtyd19pbWFnZWAgaW4gYGtlcm5lbC9icGYvZGlzcGF0Y2hlci5jYC4KCkFscmlnaHQsIGxldCYjMzk7cyBmaW5kIHRoZSBoaWdoLXZhbHVlIHRhcmdldHMgZm9yIGZ1enppbmcuIFdlIGhhdmUgc2V2ZXJhbCBmdW5jdGlvbiBtb2RpZmljYXRpb25zOiBgZXhlY21lbV9hcmNoX3NldHVwYCAoc2VlbXMgbGVzcyBpbnRlcmVzdGluZyBmb3IgZGlyZWN0IGZ1enppbmcsIGl0JiMzOTtzIGFuIGluaXRpYWxpemF0aW9uIGZ1bmN0aW9uKSwgYGFyY2hfYnBmX3RyYW1wb2xpbmVfc2l6ZWAsIGBhbGxvY19uZXdfcGFja2AsIGBicGZfcHJvZ19wYWNrX2FsbG9jYCwgYW5kIHRoZSBhbGxvY2F0aW9uIGZ1bmN0aW9uczogYGJwZl9qaXRfYWxsb2NfZXhlY2AsIGBicGZfaml0X2FsbG9jX2V4ZWNfcndgLCBhbmQgdGhlIGZyZWUgZnVuY3Rpb24gYGJwZl9qaXRfZnJlZV9leGVjYC4gRmluYWxseSBgYnBmX2Rpc3BhdGNoZXJfY2hhbmdlX3Byb2dgIGFsc28gc2VlbXMgcmVsZXZhbnQuCgpPa2F5LCBsZXQmIzM5O3MgemVybyBpbiBvbiBwb3RlbnRpYWwgZnV6emluZyB0YXJnZXRzLiBIbW0sIEkgdGhpbmsgYGFyY2hfYnBmX3RyYW1wb2xpbmVfc2l6ZWAsIGBicGZfcHJvZ19wYWNrX2FsbG9jYCwgYW5kIGBicGZfZGlzcGF0Y2hlcl9jaGFuZ2VfcHJvZ2AgYXJlIGdvb2QgY2FuZGlkYXRlcy4gSG93ZXZlciwgYGJwZl9qaXRfYWxsb2NfZXhlY2AgYW5kIGVzcGVjaWFsbHkgYGJwZl9qaXRfYWxsb2NfZXhlY19yd2AgbG9vayBsaWtlIHRoZSAqcmVhbGx5KiBqdWljeSB0YXJnZXRzLCBnaXZlbiB0aGUgbWVtb3J5IGFsbG9jYXRpb24gYXNwZWN0LiBJIHNob3VsZCBwcm9iYWJseSBzdGFydCBieSBjaGVja2luZyBgYXJjaF9icGZfdHJhbXBvbGluZV9zaXplYCwgdG8gc2VlIGhvdyB0aGF0IGZ1bmN0aW9uIHdvcmtzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI2IDIwOjI0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2FyY2hfYnBmX3RyYW1wb2xpbmVfc2l6ZSYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDthcmNoL2FybTY0L25ldC9icGZfaml0X2NvbXAuYz0yODQ0PWJvb2wgYnBmX2ppdF9zdXBwb3J0c19mc2Vzc2lvbih2b2lkKVxuLS1cbmFyY2gvYXJtNjQvbmV0L2JwZl9qaXRfY29tcC5jLTI4NDgtXG5hcmNoL2FybTY0L25ldC9icGZfaml0X2NvbXAuYzoyODQ5OmludCBhcmNoX2JwZl90cmFtcG9saW5lX3NpemUoY29uc3Qgc3RydWN0IGJ0Zl9mdW5jX21vZGVsICptLCB1MzIgZmxhZ3MsXG5hcmNoL2FybTY0L25ldC9icGZfaml0X2NvbXAuYy0yODUwLVx0XHRcdCAgICAgc3RydWN0IGJwZl90cmFtcF9ub2RlcyAqdG5vZGVzLCB2b2lkICpmdW5jX2FkZHIpXG4tLVxuYXJjaC9sb29uZ2FyY2gvbmV0L2JwZl9qaXQuYz0yMTE2PWludCBhcmNoX3ByZXBhcmVfYnBmX3RyYW1wb2xpbmUoc3RydWN0IGJwZl90cmFtcF9pbWFnZSAqaW0sIHZvaWQgKnJvX2ltYWdlLFxuLS1cbmFyY2gvbG9vbmdhcmNoL25ldC9icGZfaml0LmMtMjE1My1cbmFyY2gvbG9vbmdhcmNoL25ldC9icGZfaml0LmM6MjE1NDppbnQgYXJjaF9icGZfdHJhbXBvbGluZV9zaXplKGNvbnN0IHN0cnVjdCBidGZfZnVuY19tb2RlbCAqbSwgdTMyIGZsYWdzLFxuYXJjaC9sb29uZ2FyY2gvbmV0L2JwZl9qaXQuYy0yMTU1LVx0XHRcdCAgICAgc3RydWN0IGJwZl90cmFtcF9ub2RlcyAqdG5vZGVzLCB2b2lkICpmdW5jX2FkZHIpXG4tLVxuYXJjaC9wb3dlcnBjL25ldC9icGZfaml0X2NvbXAuYz04MTI9c3RhdGljIGludCBfX2FyY2hfcHJlcGFyZV9icGZfdHJhbXBvbGluZShzdHJ1Y3QgYnBmX3RyYW1wX2ltYWdlICppbSwgdm9pZCAqcndfaW1hZ2UsXG4tLVxuYXJjaC9wb3dlcnBjL25ldC9icGZfaml0X2NvbXAuYy0xMTkxLVxuYXJjaC9wb3dlcnBjL25ldC9icGZfaml0X2NvbXAuYzoxMTkyOmludCBhcmNoX2JwZl90cmFtcG9saW5lX3NpemUoY29uc3Qgc3RydWN0IGJ0Zl9mdW5jX21vZGVsICptLCB1MzIgZmxhZ3MsXG5hcmNoL3Bvd2VycGMvbmV0L2JwZl9qaXRfY29tcC5jLTExOTMtXHRcdFx0ICAgICBzdHJ1Y3QgYnBmX3RyYW1wX25vZGVzICp0bm9kZXMsIHZvaWQgKmZ1bmNfYWRkcilcbi0tXG5hcmNoL3Jpc2N2L25ldC9icGZfaml0X2NvbXA2NC5jPTEwMjI9c3RhdGljIGludCBfX2FyY2hfcHJlcGFyZV9icGZfdHJhbXBvbGluZShzdHJ1Y3QgYnBmX3RyYW1wX2ltYWdlICppbSxcbi0tXG5hcmNoL3Jpc2N2L25ldC9icGZfaml0X2NvbXA2NC5jLTEzMDYtXG5hcmNoL3Jpc2N2L25ldC9icGZfaml0X2NvbXA2NC5jOjEzMDc6aW50IGFyY2hfYnBmX3RyYW1wb2xpbmVfc2l6ZShjb25zdCBzdHJ1Y3QgYnRmX2Z1bmNfbW9kZWwgKm0sIHUzMiBmbGFncyxcbmFyY2gvcmlzY3YvbmV0L2JwZl9qaXRfY29tcDY0LmMtMTMwOC1cdFx0XHQgICAgIHN0cnVjdCBicGZfdHJhbXBfbm9kZXMgKnRub2Rlcywgdm9pZCAqZnVuY19hZGRyKVxuLS1cbmFyY2gvczM5MC9uZXQvYnBmX2ppdF9jb21wLmM9MjY1MD1zdGF0aWMgaW50IF9fYXJjaF9wcmVwYXJlX2JwZl90cmFtcG9saW5lKHN0cnVjdCBicGZfdHJhbXBfaW1hZ2UgKmltLFxuLS1cbmFyY2gvczM5MC9uZXQvYnBmX2ppdF9jb21wLmMtMjk2NS1cbmFyY2gvczM5MC9uZXQvYnBmX2ppdF9jb21wLmM6Mjk2NjppbnQgYXJjaF9icGZfdHJhbXBvbGluZV9zaXplKGNvbnN0IHN0cnVjdCBidGZfZnVuY19tb2RlbCAqbSwgdTMyIGZsYWdzLFxuYXJjaC9zMzkwL25ldC9icGZfaml0X2NvbXAuYy0yOTY3LVx0XHRcdCAgICAgc3RydWN0IGJwZl90cmFtcF9ub2RlcyAqdG5vZGVzLCB2b2lkICpvcmlnX2NhbGwpXG4tLVxuYXJjaC94ODYvbmV0L2JwZl9qaXRfY29tcC5jPTM2Njk9aW50IGFyY2hfcHJlcGFyZV9icGZfdHJhbXBvbGluZShzdHJ1Y3QgYnBmX3RyYW1wX2ltYWdlICppbSwgdm9pZCAqaW1hZ2UsIHZvaWQgKmltYWdlX2VuZCxcbi0tXG5hcmNoL3g4Ni9uZXQvYnBmX2ppdF9jb21wLmMtMzY5Ny1cbmFyY2gveDg2L25ldC9icGZfaml0X2NvbXAuYzozNjk4OmludCBhcmNoX2JwZl90cmFtcG9saW5lX3NpemUoY29uc3Qgc3RydWN0IGJ0Zl9mdW5jX21vZGVsICptLCB1MzIgZmxhZ3MsXG5hcmNoL3g4Ni9uZXQvYnBmX2ppdF9jb21wLmMtMzY5OS1cdFx0XHQgICAgIHN0cnVjdCBicGZfdHJhbXBfbm9kZXMgKnRub2Rlcywgdm9pZCAqZnVuY19hZGRyKVxuLS1cbmluY2x1ZGUvbGludXgvYnBmLmg9MTMxOT1pbnQgX19tdXN0X2NoZWNrIGFyY2hfcHJvdGVjdF9icGZfdHJhbXBvbGluZSh2b2lkICppbWFnZSwgdW5zaWduZWQgaW50IHNpemUpO1xuaW5jbHVkZS9saW51eC9icGYuaDoxMzIwOmludCBhcmNoX2JwZl90cmFtcG9saW5lX3NpemUoY29uc3Qgc3RydWN0IGJ0Zl9mdW5jX21vZGVsICptLCB1MzIgZmxhZ3MsXG5pbmNsdWRlL2xpbnV4L2JwZi5oLTEzMjEtXHRcdFx0ICAgICBzdHJ1Y3QgYnBmX3RyYW1wX25vZGVzICp0bm9kZXMsIHZvaWQgKmZ1bmNfYWRkcik7XG4tLVxua2VybmVsL2JwZi9icGZfc3RydWN0X29wcy5jPTU5Nz1pbnQgYnBmX3N0cnVjdF9vcHNfcHJlcGFyZV90cmFtcG9saW5lKHN0cnVjdCBicGZfdHJhbXBfbm9kZXMgKnRub2Rlcyxcbi0tXG5rZXJuZWwvYnBmL2JwZl9zdHJ1Y3Rfb3BzLmMtNjEzLVxua2VybmVsL2JwZi9icGZfc3RydWN0X29wcy5jOjYxNDpcdHNpemUgPSBhcmNoX2JwZl90cmFtcG9saW5lX3NpemUobW9kZWwsIGZsYWdzLCB0bm9kZXMsIHN0dWJfZnVuYyk7XG5rZXJuZWwvYnBmL2JwZl9zdHJ1Y3Rfb3BzLmMtNjE1LVx0aWYgKHNpemUgXHUwMDNjPSAwKVxuLS1cbmtlcm5lbC9icGYvdHJhbXBvbGluZS5jPTY3Mz1zdGF0aWMgaW50IGJwZl90cmFtcG9saW5lX3VwZGF0ZShzdHJ1Y3QgYnBmX3RyYW1wb2xpbmUgKnRyLCBib29sIGxvY2tfZGlyZWN0X211dGV4LFxuLS1cbmtlcm5lbC9icGYvdHJhbXBvbGluZS5jLTcyNC1cbmtlcm5lbC9icGYvdHJhbXBvbGluZS5jOjcyNTpcdHNpemUgPSBhcmNoX2JwZl90cmFtcG9saW5lX3NpemUoXHUwMDI2dHItXHUwMDNlZnVuYy5tb2RlbCwgdHItXHUwMDNlZmxhZ3MsXG5rZXJuZWwvYnBmL3RyYW1wb2xpbmUuYy03MjYtXHRcdFx0XHRcdHRub2RlcywgdHItXHUwMDNlZnVuYy5hZGRyKTtcbi0tXG5rZXJuZWwvYnBmL3RyYW1wb2xpbmUuYz0xNDYxPWludCBfX3dlYWsgYXJjaF9wcm90ZWN0X2JwZl90cmFtcG9saW5lKHZvaWQgKmltYWdlLCB1bnNpZ25lZCBpbnQgc2l6ZSlcbi0tXG5rZXJuZWwvYnBmL3RyYW1wb2xpbmUuYy0xNDY2LVxua2VybmVsL2JwZi90cmFtcG9saW5lLmM6MTQ2NzppbnQgX193ZWFrIGFyY2hfYnBmX3RyYW1wb2xpbmVfc2l6ZShjb25zdCBzdHJ1Y3QgYnRmX2Z1bmNfbW9kZWwgKm0sIHUzMiBmbGFncyxcbmtlcm5lbC9icGYvdHJhbXBvbGluZS5jLTE0NjgtXHRcdFx0XHQgICAgc3RydWN0IGJwZl90cmFtcF9ub2RlcyAqdG5vZGVzLCB2b2lkICpmdW5jX2FkZHIpXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjYgMjA6MjQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNjE0NAoJCQkJCQkJb3V0cHV0OiAyMgoJCQkJCQkJdGhvdWdodHM6IDE0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhlIHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZToKCioqQW5hbHl6aW5nIGBicGZfcHJvZ19wYWNrX2FsbG9jYCoqCgpBbHJpZ2h0LCBsZXQmIzM5O3MgZGl2ZSBpbnRvIHRoaXMgYGJwZl9wcm9nX3BhY2tfYWxsb2NgIGZ1bmN0aW9uLiBNeSBpbml0aWFsIHRob3VnaHQgcHJvY2VzcyByZXZvbHZlcyBhcm91bmQgdW5kZXJzdGFuZGluZyBpdHMgY29yZSByZXNwb25zaWJpbGl0eSB3aXRoaW4gdGhlIEJQRiBlY29zeXN0ZW0uIEkgaW1tZWRpYXRlbHkgbmVlZCB0byBjb25zaWRlciBpdHMgcG9zaXRpb24gaW4gdGhlIG92ZXJhbGwgYWxsb2NhdGlvbiBzdHJhdGVneSBmb3IgQlBGIHByb2dyYW1zLiBJcyBpdCBhIGNlbnRyYWwgYWxsb2NhdG9yLCBvciBpcyBpdCBhIGxheWVyIG9uIHRvcCBvZiBhIG1vcmUgZ2VuZXJhbCBtZW1vcnkgbWFuYWdlbWVudCBzY2hlbWU/IFRoZSBuYW1lIGl0c2VsZiBzdWdnZXN0cyBpdCYjMzk7cyByZWxhdGVkIHRvICYjMzQ7cGFja2luZywmIzM0OyBzbyBJJiMzOTttIGV4cGVjdGluZyB0byBsb29rIGludG8gaG93IEJQRiBwcm9ncmFtIHN0cnVjdHVyZXMgYXJlIG9yZ2FuaXplZCBhbmQgb3B0aW1pemVkIGZvciBtZW1vcnkgZWZmaWNpZW5jeSB3aXRoaW4gdGhpcyBmdW5jdGlvbi4gSSYjMzk7bGwgbmVlZCB0byBmaWd1cmUgb3V0IHdoYXQgZGF0YSBzdHJ1Y3R1cmVzIGl0IG1hbmlwdWxhdGVzLiBEb2VzIGl0IGRlYWwgd2l0aCBwcm9ncmFtIGhlYWRlcnMsIGluc3RydWN0aW9ucywgb3IgYXNzb2NpYXRlZCBtZXRhZGF0YT8gU3BlY2lmaWNhbGx5LCBJIHdpbGwgZXhhbWluZSB0aGUgYWxnb3JpdGhtIGZvciBtZW1vcnkgYWxsb2NhdGlvbi4gSXMgaXQgYSBzaW1wbGUgYGttYWxsb2NgIHdyYXBwZXIsIG9yIGRvZXMgaXQgaW5jb3Jwb3JhdGUgbW9yZSBhZHZhbmNlZCB0ZWNobmlxdWVzIGxpa2Ugc2xhYiBhbGxvY2F0aW9uLCBvYmplY3QgY2FjaGluZywgb3IgbWF5YmUgc29tZXRoaW5nIEJQRi1zcGVjaWZpYyBsaWtlIHBhY2tpbmcgbXVsdGlwbGUgcHJvZ3JhbXMgaW50byBhIHNpbmdsZSBwYWNrIHRvIG1pbmltaXplIG92ZXJoZWFkPyBJJiMzOTtsbCBhbHNvIGNoZWNrIGZvciBhbnkgcG90ZW50aWFsIHBpdGZhbGxzLCBsaWtlIG1lbW9yeSBmcmFnbWVudGF0aW9uIG9yIHJhY2UgY29uZGl0aW9ucywgdGhhdCBtYXkgYmUgaW5oZXJlbnQgaW4gaXRzIGRlc2lnbi4gRnVydGhlcm1vcmUsIEkgd2lsbCBjaGVjayB0aGUgcG90ZW50aWFsIGZvciBwZXJmb3JtYW5jZSBib3R0bGVuZWNrcyBpbiB0aGlzIGZ1bmN0aW9uLiBEb2VzIGl0IGVtcGxveSBzcGlubG9ja3Mgb3Igb3RoZXIgbG9ja2luZyBtZWNoYW5pc21zPyBIb3cgZG9lcyBpdCBoYW5kbGUgcG90ZW50aWFsIGFsbG9jYXRpb24gZmFpbHVyZXMsIGFuZCB3aGF0IGFyZSB0aGUgaW1wbGljYXRpb25zIGZvciBvdmVyYWxsIEJQRiBwcm9ncmFtIGxvYWRpbmcgYW5kIGV4ZWN1dGlvbj8gSSBleHBlY3QgdG8gaGF2ZSBhIGdvb2QgbG9vayBhdCBlcnJvciBoYW5kbGluZyBhbmQgcm9idXN0bmVzcyB0b28uIEJhc2ljYWxseSwgSSB3YW50IHRvIGZvcm0gYSBjb21wbGV0ZSBtZW50YWwgbWFwIG9mIHRoaXMgZnVuY3Rpb24mIzM5O3MgcHVycG9zZSwgZGVzaWduLCBwb3RlbnRpYWwgaXNzdWVzLCBhbmQgb3B0aW1pemF0aW9uIHBvc3NpYmlsaXRpZXMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjYgMjA6MjQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7YnBmX3Byb2dfcGFja19hbGxvYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDthcmNoL2FybTY0L25ldC9icGZfaml0X2NvbXAuYz0yODcxPXZvaWQgKmFyY2hfYWxsb2NfYnBmX3RyYW1wb2xpbmUodW5zaWduZWQgaW50IHNpemUpXG5hcmNoL2FybTY0L25ldC9icGZfaml0X2NvbXAuYy0yODcyLXtcbmFyY2gvYXJtNjQvbmV0L2JwZl9qaXRfY29tcC5jOjI4NzM6XHRyZXR1cm4gYnBmX3Byb2dfcGFja19hbGxvYyhzaXplLCBqaXRfZmlsbF9ob2xlKTtcbmFyY2gvYXJtNjQvbmV0L2JwZl9qaXRfY29tcC5jLTI4NzQtfVxuLS1cbmFyY2gvbG9vbmdhcmNoL25ldC9icGZfaml0LmM9MTc2Mz12b2lkICphcmNoX2FsbG9jX2JwZl90cmFtcG9saW5lKHVuc2lnbmVkIGludCBzaXplKVxuYXJjaC9sb29uZ2FyY2gvbmV0L2JwZl9qaXQuYy0xNzY0LXtcbmFyY2gvbG9vbmdhcmNoL25ldC9icGZfaml0LmM6MTc2NTpcdHJldHVybiBicGZfcHJvZ19wYWNrX2FsbG9jKHNpemUsIGppdF9maWxsX2hvbGUpO1xuYXJjaC9sb29uZ2FyY2gvbmV0L2JwZl9qaXQuYy0xNzY2LX1cbi0tXG5hcmNoL3Bvd2VycGMvbmV0L2JwZl9qaXRfY29tcC5jPTU4OT12b2lkICphcmNoX2FsbG9jX2JwZl90cmFtcG9saW5lKHVuc2lnbmVkIGludCBzaXplKVxuYXJjaC9wb3dlcnBjL25ldC9icGZfaml0X2NvbXAuYy01OTAte1xuYXJjaC9wb3dlcnBjL25ldC9icGZfaml0X2NvbXAuYzo1OTE6XHRyZXR1cm4gYnBmX3Byb2dfcGFja19hbGxvYyhzaXplLCBicGZfaml0X2ZpbGxfaWxsX2luc25zKTtcbmFyY2gvcG93ZXJwYy9uZXQvYnBmX2ppdF9jb21wLmMtNTkyLX1cbi0tXG5hcmNoL3Jpc2N2L25ldC9icGZfaml0X2NvbXA2NC5jPTEzMjI9dm9pZCAqYXJjaF9hbGxvY19icGZfdHJhbXBvbGluZSh1bnNpZ25lZCBpbnQgc2l6ZSlcbmFyY2gvcmlzY3YvbmV0L2JwZl9qaXRfY29tcDY0LmMtMTMyMy17XG5hcmNoL3Jpc2N2L25ldC9icGZfaml0X2NvbXA2NC5jOjEzMjQ6XHRyZXR1cm4gYnBmX3Byb2dfcGFja19hbGxvYyhzaXplLCBicGZfZmlsbF9pbGxfaW5zbnMpO1xuYXJjaC9yaXNjdi9uZXQvYnBmX2ppdF9jb21wNjQuYy0xMzI1LX1cbi0tXG5hcmNoL3g4Ni9uZXQvYnBmX2ppdF9jb21wLmM9MzY1ND12b2lkICphcmNoX2FsbG9jX2JwZl90cmFtcG9saW5lKHVuc2lnbmVkIGludCBzaXplKVxuYXJjaC94ODYvbmV0L2JwZl9qaXRfY29tcC5jLTM2NTUte1xuYXJjaC94ODYvbmV0L2JwZl9qaXRfY29tcC5jOjM2NTY6XHRyZXR1cm4gYnBmX3Byb2dfcGFja19hbGxvYyhzaXplLCBqaXRfZmlsbF9ob2xlKTtcbmFyY2gveDg2L25ldC9icGZfaml0X2NvbXAuYy0zNjU3LX1cbi0tXG5pbmNsdWRlL2xpbnV4L2ZpbHRlci5oPTEzMzA9YnBmX2ppdF9iaW5hcnlfcGFja19oZHIoY29uc3Qgc3RydWN0IGJwZl9wcm9nICpmcCk7XG5pbmNsdWRlL2xpbnV4L2ZpbHRlci5oLTEzMzEtXG5pbmNsdWRlL2xpbnV4L2ZpbHRlci5oOjEzMzI6dm9pZCAqYnBmX3Byb2dfcGFja19hbGxvYyh1MzIgc2l6ZSwgYnBmX2ppdF9maWxsX2hvbGVfdCBicGZfZmlsbF9pbGxfaW5zbnMpO1xuaW5jbHVkZS9saW51eC9maWx0ZXIuaC0xMzMzLXZvaWQgYnBmX3Byb2dfcGFja19mcmVlKHZvaWQgKnB0ciwgdTMyIHNpemUpO1xuLS1cbmtlcm5lbC9icGYvY29yZS5jPTkxMj1zdGF0aWMgc3RydWN0IGJwZl9wcm9nX3BhY2sgKmFsbG9jX25ld19wYWNrKGJwZl9qaXRfZmlsbF9ob2xlX3QgYnBmX2ZpbGxfaWxsX2luc25zKVxuLS1cbmtlcm5lbC9icGYvY29yZS5jLTk0MS1cbmtlcm5lbC9icGYvY29yZS5jOjk0Mjp2b2lkICpicGZfcHJvZ19wYWNrX2FsbG9jKHUzMiBzaXplLCBicGZfaml0X2ZpbGxfaG9sZV90IGJwZl9maWxsX2lsbF9pbnNucylcbmtlcm5lbC9icGYvY29yZS5jLTk0My17XG4tLVxua2VybmVsL2JwZi9jb3JlLmM9MTE0MT1icGZfaml0X2JpbmFyeV9wYWNrX2FsbG9jKHVuc2lnbmVkIGludCBwcm9nbGVuLCB1OCAqKmltYWdlX3B0cixcbi0tXG5rZXJuZWwvYnBmL2NvcmUuYy0xMTU3LVx0XHRyZXR1cm4gTlVMTDtcbmtlcm5lbC9icGYvY29yZS5jOjExNTg6XHRyb19oZWFkZXIgPSBicGZfcHJvZ19wYWNrX2FsbG9jKHNpemUsIGJwZl9maWxsX2lsbF9pbnNucyk7XG5rZXJuZWwvYnBmL2NvcmUuYy0xMTU5LVx0aWYgKCFyb19oZWFkZXIpIHtcbi0tXG5rZXJuZWwvYnBmL2Rpc3BhdGNoZXIuYz0xMzc9dm9pZCBicGZfZGlzcGF0Y2hlcl9jaGFuZ2VfcHJvZyhzdHJ1Y3QgYnBmX2Rpc3BhdGNoZXIgKmQsIHN0cnVjdCBicGZfcHJvZyAqZnJvbSxcbi0tXG5rZXJuZWwvYnBmL2Rpc3BhdGNoZXIuYy0xNDctXHRpZiAoIWQtXHUwMDNlaW1hZ2UpIHtcbmtlcm5lbC9icGYvZGlzcGF0Y2hlci5jOjE0ODpcdFx0ZC1cdTAwM2VpbWFnZSA9IGJwZl9wcm9nX3BhY2tfYWxsb2MoUEFHRV9TSVpFLCBicGZfaml0X2ZpbGxfaG9sZV93aXRoX3plcm8pO1xua2VybmVsL2JwZi9kaXNwYXRjaGVyLmMtMTQ5LVx0XHRpZiAoIWQtXHUwMDNlaW1hZ2UpXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjYgMjA6MjQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNzY4OQoJCQkJCQkJb3V0cHV0OiAyNAoJCQkJCQkJdGhvdWdodHM6IDEwNQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgQlBGIFByb2dyYW0gQWxsb2NhdGlvbioqCgpPa2F5LCBzbyBJJiMzOTttIHRyYWNpbmcgdGhlIGFsbG9jYXRpb24gcHJvY2VzcyBmb3IgQlBGIHByb2dyYW1zLCBhbmQgaXQgbG9va3MgbGlrZSBgYnBmX3Byb2dfcGFja19hbGxvY2AgaXMgdGhlIGtleSBmdW5jdGlvbi4gSXQmIzM5O3MgY2FsbGVkIGJ5IGEgZmV3IG90aGVyIGltcG9ydGFudCBjb21wb25lbnRzLCBzcGVjaWZpY2FsbHkgYGFyY2hfYWxsb2NfYnBmX3RyYW1wb2xpbmVgLCBgYnBmX2ppdF9iaW5hcnlfcGFja19hbGxvY2AsIGFuZCBgYnBmX2Rpc3BhdGNoZXJfY2hhbmdlX3Byb2dgLiBSaWdodCBvZmYgdGhlIGJhdCwgSSByZWNvZ25pemUgdGhhdCBgYnBmX2ppdF9iaW5hcnlfcGFja19hbGxvY2AgaXMgcmVsYXRlZCB0byB0aGUgQlBGIEpJVCBjb21waWxhdGlvbiBwcm9jZXNzLCB3aGljaCBpcyBjcml0aWNhbCBmb3IgcGVyZm9ybWFuY2UuIEFuZCwgZnJvbSB0aGUgbmFtZXMsIGBicGZfZGlzcGF0Y2hlcl9jaGFuZ2VfcHJvZ2AgaGFuZGxlcyBjaGFuZ2VzIHRvIEJQRiBkaXNwYXRjaGVycy4KCk5vdywgSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2hhdCYjMzk7cyBoYXBwZW5pbmcgd2l0aGluIHRoZXNlIGNvbXBvbmVudHMuIFRoZSBuZXh0IGxvZ2ljYWwgc3RlcCBpcyB0byBkaXZlIGludG8gaG93IGBicGZfaml0X2FsbG9jX2V4ZWNfcndgIGZhY3RvcnMgaW50byB0aGlzIHByb2Nlc3MuIEkgbmVlZCB0byB1bmRlcnN0YW5kIGl0cyByb2xlIGluIHRoZSBhbGxvY2F0aW9uIGFuZCBleGVjdXRpb24gcHJvY2Vzcy4gVGhpcyB3aWxsIGhlbHAgY2xhcmlmeSB0aGUgb3ZlcmFsbCBwcm9ncmFtIGZsb3cuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjYgMjA6MjU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7YnBmX2ppdF9hbGxvY19leGVjX3J3JiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2FyY2gveDg2L25ldC9icGZfaml0X2NvbXAuYz0zNjk4PWludCBhcmNoX2JwZl90cmFtcG9saW5lX3NpemUoY29uc3Qgc3RydWN0IGJ0Zl9mdW5jX21vZGVsICptLCB1MzIgZmxhZ3MsXG4tLVxuYXJjaC94ODYvbmV0L2JwZl9qaXRfY29tcC5jLTM3MDgtXHQgKiBtb2R1bGUgbWVtb3J5IHJhbmdlLlxuYXJjaC94ODYvbmV0L2JwZl9qaXRfY29tcC5jOjM3MDk6XHQgKiBTaW5jZSBpdCBtdXN0IGJlIHdyaXRhYmxlIHVzZSBicGZfaml0X2FsbG9jX2V4ZWNfcncoKS5cbmFyY2gveDg2L25ldC9icGZfaml0X2NvbXAuYy0zNzEwLVx0ICovXG5hcmNoL3g4Ni9uZXQvYnBmX2ppdF9jb21wLmM6MzcxMTpcdGltYWdlID0gYnBmX2ppdF9hbGxvY19leGVjX3J3KFBBR0VfU0laRSk7XG5hcmNoL3g4Ni9uZXQvYnBmX2ppdF9jb21wLmMtMzcxMi1cdGlmICghaW1hZ2UpXG4tLVxuaW5jbHVkZS9saW51eC9maWx0ZXIuaD0xMzI1PXZvaWQgKmJwZl9qaXRfYWxsb2NfZXhlYyh1bnNpZ25lZCBsb25nIHNpemUpO1xuaW5jbHVkZS9saW51eC9maWx0ZXIuaDoxMzI2OnZvaWQgKmJwZl9qaXRfYWxsb2NfZXhlY19ydyh1bnNpZ25lZCBsb25nIHNpemUpO1xuaW5jbHVkZS9saW51eC9maWx0ZXIuaC0xMzI3LXZvaWQgYnBmX2ppdF9mcmVlX2V4ZWModm9pZCAqYWRkcik7XG4tLVxua2VybmVsL2JwZi9jb3JlLmM9MTA3MD12b2lkICpicGZfaml0X2FsbG9jX2V4ZWModW5zaWduZWQgbG9uZyBzaXplKVxuLS1cbmtlcm5lbC9icGYvY29yZS5jLTEwNzQtXG5rZXJuZWwvYnBmL2NvcmUuYzoxMDc1OnZvaWQgKmJwZl9qaXRfYWxsb2NfZXhlY19ydyh1bnNpZ25lZCBsb25nIHNpemUpXG5rZXJuZWwvYnBmL2NvcmUuYy0xMDc2LXtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD45LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yNiAyMDoyNTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA4NDQ2CgkJCQkJCQlvdXRwdXQ6IDIyCgkJCQkJCQl0aG91Z2h0czogNDYKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhvc2UgdGhvdWdodHMsIHByZXNlbnRlZCBhcyBteSBvd24gbWVudGFsIHByb2Nlc3MsIGdpdmVuIG15IGV4cGVydGlzZToKCioqRXhhbWluaW5nIEJQRiBKSVQgQWxsb2NhdGlvbiBvbiB4ODYqKgoKQWxyaWdodCwgSSYjMzk7bSB0YWtpbmcgYSBsb29rIGF0IHRoaXMgYGJwZl9qaXRfYWxsb2NfZXhlY19yd2AgZnVuY3Rpb24uIFRoZSBjb2RlIHNlZW1zIHRvIGluZGljYXRlIGl0JiMzOTtzIGV4Y2x1c2l2ZWx5IGVtcGxveWVkIHdpdGhpbiBgYXJjaF9icGZfdHJhbXBvbGluZV9zaXplYCBzcGVjaWZpY2FsbHkgb24gdGhlIHg4NiBhcmNoaXRlY3R1cmUuIEhtbSwgdGhhdCYjMzk7cyBpbnRlcmVzdGluZyBhbmQgY2VydGFpbmx5IHdhcnJhbnRzIGNsb3NlciBleGFtaW5hdGlvbi4KCk15IGltbWVkaWF0ZSBxdWVzdGlvbiBpczogd2hhdCYjMzk7cyB0aGUgZGVhbCB3aXRoIGBicGZfaml0X2FsbG9jX2V4ZWNgPyBJcyBpdCBhbHNvIHg4Ni1zcGVjaWZpYz8gT3IgaXMgaXQgdXNlZCBtb3JlIGJyb2FkbHksIHBlcmhhcHMgYWNyb3NzIG90aGVyIGFyY2hpdGVjdHVyZXMgb3IgaW4gZGlmZmVyZW50IGNvbnRleHRzIHdpdGhpbiB0aGUgQlBGIEpJVCBjb21waWxhdGlvbiBwcm9jZXNzPyBJdCYjMzk7cyBpbXBvcnRhbnQgdG8gdW5kZXJzdGFuZCB0aGUgcmVsYXRpb25zaGlwIGJldHdlZW4gdGhlc2UgdHdvIGFsbG9jYXRpb24gcm91dGluZXMuIEFyZSB0aGV5IGNvbXBsZW1lbnRhcnk/IERvIHRoZXkgaGF2ZSBkaWZmZXJlbnQgcHVycG9zZXM/IElzIG9uZSBhIHN1YnNldCBvZiB0aGUgb3RoZXI/IEFyZSB0aGVyZSBhbnkgdXNlIGNhc2VzIHdoZXJlIG9uZSBpcyBwcmVmZXJyZWQgb3ZlciB0aGUgb3RoZXIgYW5kIGlmIHNvIHdoeT8gVGhpcyBkaXN0aW5jdGlvbiBpcyBjcnVjaWFsIGZvciBnZXR0aW5nIGEgZnVsbCBncmFzcCBvbiBtZW1vcnkgbWFuYWdlbWVudCBpbiB0aGUgSklUIGVudmlyb25tZW50LCBlc3BlY2lhbGx5IHdoZW4gb3B0aW1pemluZyBmb3IgdmFyaW91cyBhcmNoaXRlY3R1cmVzIG9yIGV4cGxvcmluZyBuZXcgZmVhdHVyZXMgYW5kIGNhcGFiaWxpdGllcyB3aXRoaW4gdGhlIEJQRiBmcmFtZXdvcmsuIEkgbmVlZCB0byBkaWcgZGVlcGVyIGludG8gdGhlIGNvZGUgYW5kIHRoZSB3aWRlciBCUEYgZWNvc3lzdGVtIHRvIGRldGVybWluZSB3aGVyZSB0aGVzZSBhbGxvY2F0aW9uIGZ1bmN0aW9ucyBkaXZlcmdlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yNiAyMDoyNTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDticGZfaml0X2FsbG9jX2V4ZWMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7YXJjaC9hcm02NC9uZXQvYnBmX2ppdF9jb21wLmM9MjMyMD12b2lkICpicGZfYXJjaF90ZXh0X2NvcHkodm9pZCAqZHN0LCB2b2lkICpzcmMsIHNpemVfdCBsZW4pXG4tLVxuYXJjaC9hcm02NC9uZXQvYnBmX2ppdF9jb21wLmMtMjMyNi1cbmFyY2gvYXJtNjQvbmV0L2JwZl9qaXRfY29tcC5jOjIzMjc6dTY0IGJwZl9qaXRfYWxsb2NfZXhlY19saW1pdCh2b2lkKVxuYXJjaC9hcm02NC9uZXQvYnBmX2ppdF9jb21wLmMtMjMyOC17XG4tLVxuYXJjaC9yaXNjdi9uZXQvYnBmX2ppdF9jb3JlLmM9NDQ9c3RydWN0IGJwZl9wcm9nICpicGZfaW50X2ppdF9jb21waWxlKHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYsIHN0cnVjdCBicGZfcHJvZyAqcHJvZylcbi0tXG5hcmNoL3Jpc2N2L25ldC9icGZfaml0X2NvcmUuYy0xOTItXG5hcmNoL3Jpc2N2L25ldC9icGZfaml0X2NvcmUuYzoxOTM6dTY0IGJwZl9qaXRfYWxsb2NfZXhlY19saW1pdCh2b2lkKVxuYXJjaC9yaXNjdi9uZXQvYnBmX2ppdF9jb3JlLmMtMTk0LXtcbi0tXG5hcmNoL3g4Ni9uZXQvYnBmX2ppdF9jb21wLmM9MzY5OD1pbnQgYXJjaF9icGZfdHJhbXBvbGluZV9zaXplKGNvbnN0IHN0cnVjdCBidGZfZnVuY19tb2RlbCAqbSwgdTMyIGZsYWdzLFxuLS1cbmFyY2gveDg2L25ldC9icGZfaml0X2NvbXAuYy0zNzA4LVx0ICogbW9kdWxlIG1lbW9yeSByYW5nZS5cbmFyY2gveDg2L25ldC9icGZfaml0X2NvbXAuYzozNzA5Olx0ICogU2luY2UgaXQgbXVzdCBiZSB3cml0YWJsZSB1c2UgYnBmX2ppdF9hbGxvY19leGVjX3J3KCkuXG5hcmNoL3g4Ni9uZXQvYnBmX2ppdF9jb21wLmMtMzcxMC1cdCAqL1xuYXJjaC94ODYvbmV0L2JwZl9qaXRfY29tcC5jOjM3MTE6XHRpbWFnZSA9IGJwZl9qaXRfYWxsb2NfZXhlY19ydyhQQUdFX1NJWkUpO1xuYXJjaC94ODYvbmV0L2JwZl9qaXRfY29tcC5jLTM3MTItXHRpZiAoIWltYWdlKVxuLS1cbmluY2x1ZGUvbGludXgvZmlsdGVyLmg9MTMyMz12b2lkIGJwZl9qaXRfYmluYXJ5X2ZyZWUoc3RydWN0IGJwZl9iaW5hcnlfaGVhZGVyICpoZHIpO1xuaW5jbHVkZS9saW51eC9maWx0ZXIuaDoxMzI0OnU2NCBicGZfaml0X2FsbG9jX2V4ZWNfbGltaXQodm9pZCk7XG5pbmNsdWRlL2xpbnV4L2ZpbHRlci5oOjEzMjU6dm9pZCAqYnBmX2ppdF9hbGxvY19leGVjKHVuc2lnbmVkIGxvbmcgc2l6ZSk7XG5pbmNsdWRlL2xpbnV4L2ZpbHRlci5oOjEzMjY6dm9pZCAqYnBmX2ppdF9hbGxvY19leGVjX3J3KHVuc2lnbmVkIGxvbmcgc2l6ZSk7XG5pbmNsdWRlL2xpbnV4L2ZpbHRlci5oLTEzMjctdm9pZCBicGZfaml0X2ZyZWVfZXhlYyh2b2lkICphZGRyKTtcbi0tXG5rZXJuZWwvYnBmL2NvcmUuYz05MTI9c3RhdGljIHN0cnVjdCBicGZfcHJvZ19wYWNrICphbGxvY19uZXdfcGFjayhicGZfaml0X2ZpbGxfaG9sZV90IGJwZl9maWxsX2lsbF9pbnNucylcbi0tXG5rZXJuZWwvYnBmL2NvcmUuYy05MTktXHRcdHJldHVybiBOVUxMO1xua2VybmVsL2JwZi9jb3JlLmM6OTIwOlx0cGFjay1cdTAwM2VwdHIgPSBicGZfaml0X2FsbG9jX2V4ZWMoQlBGX1BST0dfUEFDS19TSVpFKTtcbmtlcm5lbC9icGYvY29yZS5jLTkyMS1cdGlmICghcGFjay1cdTAwM2VwdHIpXG4tLVxua2VybmVsL2JwZi9jb3JlLmM9OTQyPXZvaWQgKmJwZl9wcm9nX3BhY2tfYWxsb2ModTMyIHNpemUsIGJwZl9qaXRfZmlsbF9ob2xlX3QgYnBmX2ZpbGxfaWxsX2luc25zKVxuLS1cbmtlcm5lbC9icGYvY29yZS5jLTk1MS1cdFx0c2l6ZSA9IHJvdW5kX3VwKHNpemUsIFBBR0VfU0laRSk7XG5rZXJuZWwvYnBmL2NvcmUuYzo5NTI6XHRcdHB0ciA9IGJwZl9qaXRfYWxsb2NfZXhlYyhzaXplKTtcbmtlcm5lbC9icGYvY29yZS5jLTk1My1cdFx0aWYgKHB0ciBcdTAwMjZcdTAwMjYgIWJwZl9qaXRfbWVtX2lzX3JveCgpKSB7XG4tLVxua2VybmVsL2JwZi9jb3JlLmM9MTAyOD1zdGF0aWMgYXRvbWljX2xvbmdfdCBicGZfaml0X2N1cnJlbnQ7XG4tLVxua2VybmVsL2JwZi9jb3JlLmMtMTAzMy0gKi9cbmtlcm5lbC9icGYvY29yZS5jOjEwMzQ6dTY0IF9fd2VhayBicGZfaml0X2FsbG9jX2V4ZWNfbGltaXQodm9pZClcbmtlcm5lbC9icGYvY29yZS5jLTEwMzUte1xuLS1cbmtlcm5lbC9icGYvY29yZS5jPTEwNDM9c3RhdGljIGludCBfX2luaXQgYnBmX2ppdF9jaGFyZ2VfaW5pdCh2b2lkKVxuLS1cbmtlcm5lbC9icGYvY29yZS5jLTEwNDUtXHQvKiBPbmx5IHVzZWQgYXMgaGV1cmlzdGljIGhlcmUgdG8gZGVyaXZlIGxpbWl0LiAqL1xua2VybmVsL2JwZi9jb3JlLmM6MTA0NjpcdGJwZl9qaXRfbGltaXRfbWF4ID0gYnBmX2ppdF9hbGxvY19leGVjX2xpbWl0KCk7XG5rZXJuZWwvYnBmL2NvcmUuYy0xMDQ3LVx0YnBmX2ppdF9saW1pdCA9IG1pbl90KHU2NCwgcm91bmRfdXAoYnBmX2ppdF9saW1pdF9tYXggXHUwMDNlXHUwMDNlIDEsXG4tLVxua2VybmVsL2JwZi9jb3JlLmM9MTA2NT12b2lkIGJwZl9qaXRfdW5jaGFyZ2VfbW9kbWVtKHUzMiBzaXplKVxuLS1cbmtlcm5lbC9icGYvY29yZS5jLTEwNjktXG5rZXJuZWwvYnBmL2NvcmUuYzoxMDcwOnZvaWQgKmJwZl9qaXRfYWxsb2NfZXhlYyh1bnNpZ25lZCBsb25nIHNpemUpXG5rZXJuZWwvYnBmL2NvcmUuYy0xMDcxLXtcbi0tXG5rZXJuZWwvYnBmL2NvcmUuYy0xMDc0LVxua2VybmVsL2JwZi9jb3JlLmM6MTA3NTp2b2lkICpicGZfaml0X2FsbG9jX2V4ZWNfcncodW5zaWduZWQgbG9uZyBzaXplKVxua2VybmVsL2JwZi9jb3JlLmMtMTA3Ni17XG4tLVxua2VybmVsL2JwZi9jb3JlLmM9MTA4Nj1icGZfaml0X2JpbmFyeV9hbGxvYyh1bnNpZ25lZCBpbnQgcHJvZ2xlbiwgdTggKippbWFnZV9wdHIsXG4tLVxua2VybmVsL2JwZi9jb3JlLmMtMTEwMy1cdFx0cmV0dXJuIE5VTEw7XG5rZXJuZWwvYnBmL2NvcmUuYzoxMTA0Olx0aGRyID0gYnBmX2ppdF9hbGxvY19leGVjKHNpemUpO1xua2VybmVsL2JwZi9jb3JlLmMtMTEwNS1cdGlmICghaGRyKSB7XG4tLVxua2VybmVsL2JwZi90cmFtcG9saW5lLmM9MTQ0MD12b2lkICogX193ZWFrIGFyY2hfYWxsb2NfYnBmX3RyYW1wb2xpbmUodW5zaWduZWQgaW50IHNpemUpXG4tLVxua2VybmVsL2JwZi90cmFtcG9saW5lLmMtMTQ0NS1cdFx0cmV0dXJuIE5VTEw7XG5rZXJuZWwvYnBmL3RyYW1wb2xpbmUuYzoxNDQ2Olx0aW1hZ2UgPSBicGZfaml0X2FsbG9jX2V4ZWMoUEFHRV9TSVpFKTtcbmtlcm5lbC9icGYvdHJhbXBvbGluZS5jLTE0NDctXHRpZiAoaW1hZ2UpXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI2IDIwOjI1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDEwMzI3CgkJCQkJCQlvdXRwdXQ6IDIyCgkJCQkJCQl0aG91Z2h0czogMTM2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgS2VybmVsJiMzOTtzIEJQRiBKSVQgTWVtb3J5IEFsbG9jYXRpb24gU3RyYXRlZ3kqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IGhvdyB0aGUgQlBGIEpJVCBtZW1vcnkgaXMgYmVpbmcgbWFuYWdlZCB3aXRoaW4gdGhlIGtlcm5lbC4gTXkgaW5pdGlhbCBpbXByZXNzaW9uIGlzIHRoYXQgYGJwZl9qaXRfYWxsb2NfZXhlY2AgaXMgYSBrZXkgZnVuY3Rpb24sIGhlYXZpbHkgdXNlZCBpbiBhbGxvY2F0aW5nIG1lbW9yeSBmb3IgY29tcGlsZWQgQlBGIHByb2dyYW1zLCBwYXJ0aWN1bGFybHkgd2l0aGluIHJvdXRpbmVzIGxpa2UgYGFsbG9jX25ld19wYWNrYCwgYGJwZl9wcm9nX3BhY2tfYWxsb2NgLCBgYnBmX2ppdF9iaW5hcnlfYWxsb2NgLCBhbmQgYGFyY2hfYWxsb2NfYnBmX3RyYW1wb2xpbmVgLgoKVGhlIGN1cnJlbnQgcGF0Y2ggSSYjMzk7bSBleGFtaW5pbmcgYXBwZWFycyB0byBiZSBtYWtpbmcgc29tZSBzaWduaWZpY2FudCBjaGFuZ2VzLiBJIHNlZSBtb2RpZmljYXRpb25zIHRvIGBhbGxvY19uZXdfcGFja2AgYW5kIGBicGZfcHJvZ19wYWNrX2FsbG9jYCDigJMgc3BlY2lmaWNhbGx5LCBpdCBzZWVtcyBsaWtlIHRoZXJlJiMzOTtzIG5vdyBhIGNoZWNrIGZvciBgYnBmX2ppdF9tZW1faXNfcm94KClgLiBUaGlzIHN1Z2dlc3RzIHdlJiMzOTtyZSBwcm9iYWJseSBhZGRyZXNzaW5nIHNlY3VyaXR5IGNvbmNlcm5zIG9yIHBlcmhhcHMgdHJ5aW5nIHRvIG9wdGltaXplIHJlYWQtb25seSBtZW1vcnkgc2VnbWVudHMgZm9yIEpJVC1lZCBjb2RlLiBJbnRlcmVzdGluZy4KClRoZW4sIHRoZXJlJiMzOTtzIGFub3RoZXIgY2hhbmdlIHJlbGF0ZWQgdG8gYGJwZl9kaXNwYXRjaGVyX2NoYW5nZV9wcm9nYC4gVGhpcyBpcyB3aGVyZSB0aGluZ3MgZ2V0IHJlYWxseSBpbnRlcmVzdGluZzsgdGhlIHBhdGNoIGlzIHN3aXRjaGluZyBpdCBvdmVyIHRvIHVzZSBgdm1hbGxvY2AgaW5zdGVhZCBvZiBgYnBmX2ppdF9hbGxvY19leGVjYC4gVGhpcyBpcyBhIHByZXR0eSBzaWduaWZpY2FudCBhbHRlcmF0aW9uLCBhcyBgdm1hbGxvY2AgaGFzIGRpZmZlcmVudCBhbGxvY2F0aW9uIHNlbWFudGljcyBhbmQgbWVtb3J5IG1hcHBpbmcgY2hhcmFjdGVyaXN0aWNzLiBJIG5lZWQgdG8gZGlnIGRlZXBlciBpbnRvIHRoZSByYXRpb25hbGUgaGVyZS4gVGhlIGltcGxpY2F0aW9ucyBjb3VsZCBiZSBicm9hZCwgcG90ZW50aWFsbHkgaW1wYWN0aW5nIHBlcmZvcm1hbmNlLCBzZWN1cml0eSwgb3IgZXZlbiBob3cgQlBGIHByb2dyYW1zIGFyZSBkeW5hbWljYWxseSBsb2FkZWQgYW5kIGV4ZWN1dGVkLiBMZXQmIzM5O3Mgc3RhcnQgYnkgc2NydXRpbml6aW5nIHRoZSBjaGFuZ2VzIGluIGBicGZfZGlzcGF0Y2hlcl9jaGFuZ2VfcHJvZ2AgdG8gdW5kZXJzdGFuZCB0aGUgaW50ZW50IGFuZCBwb3RlbnRpYWwgY29uc2VxdWVuY2VzIG9mIHRoaXMgYHZtYWxsb2NgIHNoaWZ0LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yNiAyMDoyNTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDticGZfZGlzcGF0Y2hlcl9jaGFuZ2VfcHJvZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtpbmNsdWRlL2xpbnV4L2JwZi5oPTE1MjU9aW50IGJwZl90cmFtcG9saW5lX211bHRpX2RldGFjaChzdHJ1Y3QgYnBmX3Byb2cgKnByb2csXG4tLVxuaW5jbHVkZS9saW51eC9icGYuaC0xNTkwLSNkZWZpbmUgQlBGX0RJU1BBVENIRVJfUFRSKG5hbWUpIChcdTAwMjZicGZfZGlzcGF0Y2hlcl8jI25hbWUpXG5pbmNsdWRlL2xpbnV4L2JwZi5oOjE1OTE6dm9pZCBicGZfZGlzcGF0Y2hlcl9jaGFuZ2VfcHJvZyhzdHJ1Y3QgYnBmX2Rpc3BhdGNoZXIgKmQsIHN0cnVjdCBicGZfcHJvZyAqZnJvbSxcbmluY2x1ZGUvbGludXgvYnBmLmgtMTU5Mi1cdFx0XHRcdHN0cnVjdCBicGZfcHJvZyAqdG8pO1xuLS1cbmluY2x1ZGUvbGludXgvYnBmLmg9MTYyND1zdGF0aWMgaW5saW5lIHZvaWQgYnBmX3RyYW1wb2xpbmVfcHV0KHN0cnVjdCBicGZfdHJhbXBvbGluZSAqdHIpIHt9XG4tLVxuaW5jbHVkZS9saW51eC9icGYuaC0xNjI4LSNkZWZpbmUgQlBGX0RJU1BBVENIRVJfUFRSKG5hbWUpIE5VTExcbmluY2x1ZGUvbGludXgvYnBmLmg6MTYyOTpzdGF0aWMgaW5saW5lIHZvaWQgYnBmX2Rpc3BhdGNoZXJfY2hhbmdlX3Byb2coc3RydWN0IGJwZl9kaXNwYXRjaGVyICpkLFxuaW5jbHVkZS9saW51eC9icGYuaC0xNjMwLVx0XHRcdFx0XHQgICAgICBzdHJ1Y3QgYnBmX3Byb2cgKmZyb20sXG4tLVxua2VybmVsL2JwZi9kaXNwYXRjaGVyLmM9MTA2PXN0YXRpYyB2b2lkIGJwZl9kaXNwYXRjaGVyX3VwZGF0ZShzdHJ1Y3QgYnBmX2Rpc3BhdGNoZXIgKmQsIGludCBwcmV2X251bV9wcm9ncylcbi0tXG5rZXJuZWwvYnBmL2Rpc3BhdGNoZXIuYy0xMzYtXG5rZXJuZWwvYnBmL2Rpc3BhdGNoZXIuYzoxMzc6dm9pZCBicGZfZGlzcGF0Y2hlcl9jaGFuZ2VfcHJvZyhzdHJ1Y3QgYnBmX2Rpc3BhdGNoZXIgKmQsIHN0cnVjdCBicGZfcHJvZyAqZnJvbSxcbmtlcm5lbC9icGYvZGlzcGF0Y2hlci5jLTEzOC1cdFx0XHRcdHN0cnVjdCBicGZfcHJvZyAqdG8pXG4tLVxubmV0L2NvcmUvZmlsdGVyLmM9MTIwMjY9dm9pZCBicGZfcHJvZ19jaGFuZ2VfeGRwKHN0cnVjdCBicGZfcHJvZyAqcHJldl9wcm9nLCBzdHJ1Y3QgYnBmX3Byb2cgKnByb2cpXG5uZXQvY29yZS9maWx0ZXIuYy0xMjAyNy17XG5uZXQvY29yZS9maWx0ZXIuYzoxMjAyODpcdGJwZl9kaXNwYXRjaGVyX2NoYW5nZV9wcm9nKEJQRl9ESVNQQVRDSEVSX1BUUih4ZHApLCBwcmV2X3Byb2csIHByb2cpO1xubmV0L2NvcmUvZmlsdGVyLmMtMTIwMjktfVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yNiAyMDoyNTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMTM0NwoJCQkJCQkJb3V0cHV0OiAyNAoJCQkJCQkJdGhvdWdodHM6IDUyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBteSBvd24gbWVudGFsIHByb2Nlc3Npbmc6CgoqKkZvY3Vzc2luZyBvbiBGdXp6aW5nIFRhcmdldCBJZGVudGlmaWNhdGlvbioqCgpBbHJpZ2h0LCBsZXQmIzM5O3Mgc2VlLCBgYnBmX2Rpc3BhdGNoZXJfY2hhbmdlX3Byb2dgLi4uIHJpZ2h0LCB0aGF0IGdldHMgY2FsbGVkIGJ5IGBicGZfcHJvZ19jaGFuZ2VfeGRwYC4gSG1tLCB0aGF0IHN1Z2dlc3RzIGEgZGVmaW5pdGUgcG9pbnQgb2YgaW50ZXJlc3QgZm9yIGZ1enppbmchIEl0JiMzOTtzIGNsZWFybHkgYSByZWFjaGFibGUgY29kZSBwYXRoLCBzbyB0aGF0JiMzOTtzIGEgZ29vZCBzdGFydGluZyBwb2ludCB0byBkaWcgaW50by4gTm93LCBJIHNob3VsZCBwcm9iYWJseSBjaGVjayBgYnBmX2ppdF9tZW1faXNfcm94YC4uLiB0aGF0IGZ1bmN0aW9uJiMzOTtzIG9mdGVuIGFzc29jaWF0ZWQgd2l0aCBtZW1vcnkgcHJvdGVjdGlvbiBpc3N1ZXMuIEkmIzM5O2xsIG5lZWQgdG8gdW5kZXJzdGFuZCBob3cgdGhlc2UgcGllY2VzIGZpdCB0b2dldGhlciB0byBjcmFmdCBlZmZlY3RpdmUgZnV6emluZyBoYXJuZXNzZXMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI2IDIwOjI1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2JwZl9qaXRfbWVtX2lzX3JveCYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtrZXJuZWwvYnBmL2NvcmUuYz04ODk9c3RhdGljIExJU1RfSEVBRChwYWNrX2xpc3QpO1xuLS1cbmtlcm5lbC9icGYvY29yZS5jLTkwNi1cbmtlcm5lbC9icGYvY29yZS5jOjkwNzpzdGF0aWMgYm9vbCBicGZfaml0X21lbV9pc19yb3godm9pZClcbmtlcm5lbC9icGYvY29yZS5jLTkwOC17XG4tLVxua2VybmVsL2JwZi9jb3JlLmM9OTEyPXN0YXRpYyBzdHJ1Y3QgYnBmX3Byb2dfcGFjayAqYWxsb2NfbmV3X3BhY2soYnBmX2ppdF9maWxsX2hvbGVfdCBicGZfZmlsbF9pbGxfaW5zbnMpXG4tLVxua2VybmVsL2JwZi9jb3JlLmMtOTI0LVxua2VybmVsL2JwZi9jb3JlLmM6OTI1Olx0aWYgKCFicGZfaml0X21lbV9pc19yb3goKSkge1xua2VybmVsL2JwZi9jb3JlLmMtOTI2LVx0XHRicGZfZmlsbF9pbGxfaW5zbnMocGFjay1cdTAwM2VwdHIsIEJQRl9QUk9HX1BBQ0tfU0laRSk7XG4tLVxua2VybmVsL2JwZi9jb3JlLmM9OTQyPXZvaWQgKmJwZl9wcm9nX3BhY2tfYWxsb2ModTMyIHNpemUsIGJwZl9qaXRfZmlsbF9ob2xlX3QgYnBmX2ZpbGxfaWxsX2luc25zKVxuLS1cbmtlcm5lbC9icGYvY29yZS5jLTk1Mi1cdFx0cHRyID0gYnBmX2ppdF9hbGxvY19leGVjKHNpemUpO1xua2VybmVsL2JwZi9jb3JlLmM6OTUzOlx0XHRpZiAocHRyIFx1MDAyNlx1MDAyNiAhYnBmX2ppdF9tZW1faXNfcm94KCkpIHtcbmtlcm5lbC9icGYvY29yZS5jLTk1NC1cdFx0XHRpbnQgZXJyO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yNiAyMDoyNTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMTkzNAoJCQkJCQkJb3V0cHV0OiAyMQoJCQkJCQkJdGhvdWdodHM6IDE4OQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIEJQRiBKSVQgTWVtb3J5IEFsbG9jYXRpb24gUGF0Y2gqKgoKT2theSwgc28gdGhpcyBwYXRjaCBpcyBjbGVhcmx5IGZvY3VzZWQgb24gaG93IEJQRiBKSVQgbWVtb3J5IGlzIGFsbG9jYXRlZCBhbmQgbWFuYWdlZCwgc3BlY2lmaWNhbGx5IHRhcmdldGluZyB0aGUgaW50ZXJhY3Rpb24gYmV0d2VlbiBgYWxsb2NfbmV3X3BhY2tgLCBgYnBmX3Byb2dfcGFja19hbGxvY2AsIGFuZCB0aGUgbWVtb3J5IHByb3RlY3Rpb24gbWVjaGFuaXNtcy4gVGhlIGNvbmRpdGlvbmFsIGNhbGwgdG8gYHNldF9tZW1vcnlfcm94YCBiYXNlZCBvbiBgYnBmX2ppdF9tZW1faXNfcm94KClgIGlzIHRoZSBnaXZlYXdheSDigJMgdGhpcyBpcyBhbGwgYWJvdXQgbWFraW5nIHRoZSBKSVQmIzM5O2QgY29kZSByZWFkLW9ubHkgd2hlcmUgYXBwcm9wcmlhdGUuCgpNeSBwcmltYXJ5IGFyZWFzIG9mIGludGVyZXN0IHdpdGhpbiB0aGUgY29kZSBhcmUsIG5hdHVyYWxseSwgdGhlc2Uga2V5IHN5bWJvbHM6IGBicGZfaml0X2FsbG9jX2V4ZWNgLCBgYnBmX2ppdF9hbGxvY19leGVjX3J3YCwgYGJwZl9wcm9nX3BhY2tfYWxsb2NgLCBgYWxsb2NfbmV3X3BhY2tgLCBhbmQgYGJwZl9kaXNwYXRjaGVyX2NoYW5nZV9wcm9nYC4gSSYjMzk7bGwgbmVlZCB0byB1bmRlcnN0YW5kIGV4YWN0bHkgaG93IHRoZXNlIGZ1bmN0aW9ucyBpbnRlcmFjdCBhbmQgd2hlcmUgdGhpcyBgc2V0X21lbW9yeV9yb3hgIGNhbGwgZml0cyBpbiB0aGUgb3ZlcmFsbCBwaWN0dXJlIG9mIGNvZGUgZ2VuZXJhdGlvbiBhbmQgZXhlY3V0aW9uLgoKTm93LCBsZXQmIzM5O3Mgc2VlIGFib3V0IHJlbGV2YW50IGNvbmZpZ3VyYXRpb25zLiBgQ09ORklHX0JQRl9KSVRgIGlzIGEgZ2l2ZW47IHdpdGhvdXQgaXQsIHRoZSBKSVQgaXNuJiMzOTt0IGV2ZW4gZW5hYmxlZCwgYW5kIHRoaXMgcGF0Y2ggd291bGQgYmUgbW9vdC4gSG93ZXZlciwgdGhlIHVzZSBvZiBgQ09ORklHX0JQRl9TWVNDQUxMYCB3aWxsIHRlbGwgbWUgaWYgdGhlIG1vZGlmaWNhdGlvbnMgd291bGQgYWxzbyBhZmZlY3Qgc3lzY2FsbCBCUEYgcHJvZ3JhbXMuIEkmIzM5O2xsIG5lZWQgdG8gZGVsdmUgaW50byB0aGUgY29kZSB0byBkZXRlcm1pbmUgd2hldGhlciB0aGUgcGF0Y2ggdG91Y2hlcyBhcmVhcyBvZiBjb2RlIGFzc29jaWF0ZWQgd2l0aCBzeXNjYWxsIEJQRiBwcm9ncmFtcywgd2hpY2ggd291bGQgaW5mb3JtIG1lIGFib3V0IHRoZSBwb3RlbnRpYWwgc2NvcGUgb2YgdGhpcyBjaGFuZ2UuIEkmIzM5O2xsIHN0YXJ0IGJ5IGNoZWNraW5nIGBrZXJuZWwvYnBmL2NvcmUuY2AgYW5kIGBrZXJuZWwvYnBmL2Rpc3BhdGNoZXIuY2AsIHRoYXQmIzM5O3MgdXN1YWxseSB3aGVyZSB0aGUgQlBGIGNvcmUgZnVuY3Rpb25hbGl0eSBhbmQgdGhlIGRpc3BhdGNoaW5nIGxvZ2ljIHJlc2lkZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjYgMjA6MjY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Q09ORklHX0JQRl9KSVQmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7RG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL2ZpbHRlci5yc3Q9NTE2PVBvd2VyUEMsIEFSTSwgQVJNNjQsIE1JUFMsIFJJU0MtViwgczM5MCwgYW5kIEFSQyBhbmQgY2FuIGJlIGVuYWJsZWQgdGhyb3VnaFxuRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL2ZpbHRlci5yc3Q6NTE3OkNPTkZJR19CUEZfSklULiBUaGUgSklUIGNvbXBpbGVyIGlzIHRyYW5zcGFyZW50bHkgaW52b2tlZCBmb3IgZWFjaFxuRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL2ZpbHRlci5yc3QtNTE4LWF0dGFjaGVkIGZpbHRlciBmcm9tIHVzZXIgc3BhY2Ugb3IgZm9yIGludGVybmFsIGtlcm5lbCB1c2VycyBpZiBpdCBoYXNcbi0tXG5Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvZmlsdGVyLnJzdD01Mjg9RXhhbXBsZSBvdXRwdXQgZnJvbSBkbWVzZzo6XG4tLVxuRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL2ZpbHRlci5yc3QtNTM2LVxuRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL2ZpbHRlci5yc3Q6NTM3OldoZW4gQ09ORklHX0JQRl9KSVRfQUxXQVlTX09OIGlzIGVuYWJsZWQsIGJwZl9qaXRfZW5hYmxlIGlzIHBlcm1hbmVudGx5IHNldCB0byAxIGFuZFxuRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL2ZpbHRlci5yc3QtNTM4LXNldHRpbmcgYW55IG90aGVyIHZhbHVlIHRoYW4gdGhhdCB3aWxsIHJldHVybiBpbiBmYWlsdXJlLiBUaGlzIGlzIGV2ZW4gdGhlIGNhc2UgZm9yXG4tLVxuRG9jdW1lbnRhdGlvbi9zY2hlZHVsZXIvc2NoZWQtZXh0LnJzdD0zNT1vcHRpb25zIHNob3VsZCBiZSBlbmFibGVkIHRvIHVzZSBzY2hlZF9leHQ6XG4tLVxuRG9jdW1lbnRhdGlvbi9zY2hlZHVsZXIvc2NoZWQtZXh0LnJzdC00MS0gICAgQ09ORklHX0JQRl9TWVNDQUxMPXlcbkRvY3VtZW50YXRpb24vc2NoZWR1bGVyL3NjaGVkLWV4dC5yc3Q6NDI6ICAgIENPTkZJR19CUEZfSklUPXlcbkRvY3VtZW50YXRpb24vc2NoZWR1bGVyL3NjaGVkLWV4dC5yc3QtNDMtICAgIENPTkZJR19ERUJVR19JTkZPX0JURj15XG5Eb2N1bWVudGF0aW9uL3NjaGVkdWxlci9zY2hlZC1leHQucnN0OjQ0OiAgICBDT05GSUdfQlBGX0pJVF9BTFdBWVNfT049eVxuRG9jdW1lbnRhdGlvbi9zY2hlZHVsZXIvc2NoZWQtZXh0LnJzdDo0NTogICAgQ09ORklHX0JQRl9KSVRfREVGQVVMVF9PTj15XG5Eb2N1bWVudGF0aW9uL3NjaGVkdWxlci9zY2hlZC1leHQucnN0LTQ2LVxuLS1cbmFyY2gvYXJjL25ldC9NYWtlZmlsZT0zPWlmZXEgKCQoQ09ORklHX0lTQV9BUkNWMikseSlcbmFyY2gvYXJjL25ldC9NYWtlZmlsZTo0Olx0b2JqLSQoQ09ORklHX0JQRl9KSVQpICYjNDM7PSBicGZfaml0X2NvcmUub1xuYXJjaC9hcmMvbmV0L01ha2VmaWxlOjU6XHRvYmotJChDT05GSUdfQlBGX0pJVCkgJiM0Mzs9IGJwZl9qaXRfYXJjdjIub1xuYXJjaC9hcmMvbmV0L01ha2VmaWxlLTYtZW5kaWZcbi0tXG5hcmNoL2FybS9uZXQvTWFrZWZpbGUtMy1cbmFyY2gvYXJtL25ldC9NYWtlZmlsZTo0Om9iai0kKENPTkZJR19CUEZfSklUKSAmIzQzOz0gYnBmX2ppdF8zMi5vXG4tLVxuYXJjaC9hcm02NC9jb25maWdzL2RlZmNvbmZpZz02PUNPTkZJR19CUEZfU1lTQ0FMTD15XG5hcmNoL2FybTY0L2NvbmZpZ3MvZGVmY29uZmlnOjc6Q09ORklHX0JQRl9KSVQ9eVxuYXJjaC9hcm02NC9jb25maWdzL2RlZmNvbmZpZy04LUNPTkZJR19QUkVFTVBUPXlcbi0tXG5hcmNoL2FybTY0L2luY2x1ZGUvYXNtL2V4dGFibGUuaD0zNj1ib29sIGluc25fbWF5X2FjY2Vzc191c2VyKHVuc2lnbmVkIGxvbmcgYWRkciwgdW5zaWduZWQgbG9uZyBlc3IpO1xuYXJjaC9hcm02NC9pbmNsdWRlL2FzbS9leHRhYmxlLmgtMzctXG5hcmNoL2FybTY0L2luY2x1ZGUvYXNtL2V4dGFibGUuaDozODojaWZkZWYgQ09ORklHX0JQRl9KSVRcbmFyY2gvYXJtNjQvaW5jbHVkZS9hc20vZXh0YWJsZS5oLTM5LWJvb2wgZXhfaGFuZGxlcl9icGYoY29uc3Qgc3RydWN0IGV4Y2VwdGlvbl90YWJsZV9lbnRyeSAqZXgsXG5hcmNoL2FybTY0L2luY2x1ZGUvYXNtL2V4dGFibGUuaC00MC1cdFx0ICAgIHN0cnVjdCBwdF9yZWdzICpyZWdzKTtcbmFyY2gvYXJtNjQvaW5jbHVkZS9hc20vZXh0YWJsZS5oOjQxOiNlbHNlIC8qICFDT05GSUdfQlBGX0pJVCAqL1xuYXJjaC9hcm02NC9pbmNsdWRlL2FzbS9leHRhYmxlLmgtNDItc3RhdGljIGlubGluZVxuYXJjaC9hcm02NC9pbmNsdWRlL2FzbS9leHRhYmxlLmg9NDM9Ym9vbCBleF9oYW5kbGVyX2JwZihjb25zdCBzdHJ1Y3QgZXhjZXB0aW9uX3RhYmxlX2VudHJ5ICpleCxcbi0tXG5hcmNoL2FybTY0L2luY2x1ZGUvYXNtL2V4dGFibGUuaC00Ny19XG5hcmNoL2FybTY0L2luY2x1ZGUvYXNtL2V4dGFibGUuaDo0ODojZW5kaWYgLyogIUNPTkZJR19CUEZfSklUICovXG5hcmNoL2FybTY0L2luY2x1ZGUvYXNtL2V4dGFibGUuaC00OS1cbi0tXG5hcmNoL2FybTY0L25ldC9NYWtlZmlsZS00LSNcbmFyY2gvYXJtNjQvbmV0L01ha2VmaWxlOjU6b2JqLSQoQ09ORklHX0JQRl9KSVQpICYjNDM7PSBicGZfaml0X2NvbXAubyBicGZfdGltZWRfbWF5X2dvdG8ub1xuLS1cbmFyY2gvbG9vbmdhcmNoL2NvbmZpZ3MvbG9vbmdzb242NF9kZWZjb25maWc9Nz1DT05GSUdfQlBGX1NZU0NBTEw9eVxuYXJjaC9sb29uZ2FyY2gvY29uZmlncy9sb29uZ3NvbjY0X2RlZmNvbmZpZzo4OkNPTkZJR19CUEZfSklUPXlcbmFyY2gvbG9vbmdhcmNoL2NvbmZpZ3MvbG9vbmdzb242NF9kZWZjb25maWctOS1DT05GSUdfUFJFRU1QVD15XG4tLVxuYXJjaC9sb29uZ2FyY2gvaW5jbHVkZS9hc20vZXh0YWJsZS5oPTI2PWRvIHtcdFx0XHRcdFx0XHRcdFxcXG4tLVxuYXJjaC9sb29uZ2FyY2gvaW5jbHVkZS9hc20vZXh0YWJsZS5oLTM0LVxuYXJjaC9sb29uZ2FyY2gvaW5jbHVkZS9hc20vZXh0YWJsZS5oOjM1OiNpZmRlZiBDT05GSUdfQlBGX0pJVFxuYXJjaC9sb29uZ2FyY2gvaW5jbHVkZS9hc20vZXh0YWJsZS5oLTM2LWJvb2wgZXhfaGFuZGxlcl9icGYoY29uc3Qgc3RydWN0IGV4Y2VwdGlvbl90YWJsZV9lbnRyeSAqZXgsIHN0cnVjdCBwdF9yZWdzICpyZWdzKTtcbi0tXG5hcmNoL2xvb25nYXJjaC9pbmNsdWRlL2FzbS9leHRhYmxlLmg9Mzk9Ym9vbCBleF9oYW5kbGVyX2JwZihjb25zdCBzdHJ1Y3QgZXhjZXB0aW9uX3RhYmxlX2VudHJ5ICpleCwgc3RydWN0IHB0X3JlZ3MgKnJlZ3MpXG4tLVxuYXJjaC9sb29uZ2FyY2gvaW5jbHVkZS9hc20vZXh0YWJsZS5oLTQyLX1cbmFyY2gvbG9vbmdhcmNoL2luY2x1ZGUvYXNtL2V4dGFibGUuaDo0MzojZW5kaWYgLyogIUNPTkZJR19CUEZfSklUICovXG5hcmNoL2xvb25nYXJjaC9pbmNsdWRlL2FzbS9leHRhYmxlLmgtNDQtXG4tLVxuYXJjaC9sb29uZ2FyY2gvbmV0L01ha2VmaWxlLTYtI1xuYXJjaC9sb29uZ2FyY2gvbmV0L01ha2VmaWxlOjc6b2JqLSQoQ09ORklHX0JQRl9KSVQpICYjNDM7PSBicGZfaml0Lm9cbi0tXG5hcmNoL21pcHMvY29uZmlncy9sb29uZ3NvbjNfZGVmY29uZmlnPTg9Q09ORklHX0JQRl9TWVNDQUxMPXlcbmFyY2gvbWlwcy9jb25maWdzL2xvb25nc29uM19kZWZjb25maWc6OTpDT05GSUdfQlBGX0pJVD15XG5hcmNoL21pcHMvY29uZmlncy9sb29uZ3NvbjNfZGVmY29uZmlnLTEwLUNPTkZJR19QUkVFTVBUPXlcbi0tXG5hcmNoL21pcHMvbmV0L01ha2VmaWxlLTMtXG5hcmNoL21pcHMvbmV0L01ha2VmaWxlOjQ6b2JqLSQoQ09ORklHX0JQRl9KSVQpICYjNDM7PSBicGZfaml0X2NvbXAub1xuYXJjaC9taXBzL25ldC9NYWtlZmlsZS01LVxuYXJjaC9taXBzL25ldC9NYWtlZmlsZT02PWlmZXEgKCQoQ09ORklHXzMyQklUKSx5KVxuYXJjaC9taXBzL25ldC9NYWtlZmlsZTo3OiAgICAgICAgb2JqLSQoQ09ORklHX0JQRl9KSVQpICYjNDM7PSBicGZfaml0X2NvbXAzMi5vXG5hcmNoL21pcHMvbmV0L01ha2VmaWxlLTgtZWxzZVxuYXJjaC9taXBzL25ldC9NYWtlZmlsZTo5OiAgICAgICAgb2JqLSQoQ09ORklHX0JQRl9KSVQpICYjNDM7PSBicGZfaml0X2NvbXA2NC5vXG5hcmNoL21pcHMvbmV0L01ha2VmaWxlLTEwLWVuZGlmXG4tLVxuYXJjaC9wYXJpc2MvbmV0L01ha2VmaWxlLTItXG5hcmNoL3BhcmlzYy9uZXQvTWFrZWZpbGU6MzpvYmotJChDT05GSUdfQlBGX0pJVCkgJiM0Mzs9IGJwZl9qaXRfY29yZS5vXG5hcmNoL3BhcmlzYy9uZXQvTWFrZWZpbGUtNC1cbmFyY2gvcGFyaXNjL25ldC9NYWtlZmlsZT01PWlmZXEgKCQoQ09ORklHXzY0QklUKSx5KVxuYXJjaC9wYXJpc2MvbmV0L01ha2VmaWxlOjY6XHRvYmotJChDT05GSUdfQlBGX0pJVCkgJiM0Mzs9IGJwZl9qaXRfY29tcDY0Lm9cbmFyY2gvcGFyaXNjL25ldC9NYWtlZmlsZS03LWVsc2VcbmFyY2gvcGFyaXNjL25ldC9NYWtlZmlsZTo4Olx0b2JqLSQoQ09ORklHX0JQRl9KSVQpICYjNDM7PSBicGZfaml0X2NvbXAzMi5vXG5hcmNoL3BhcmlzYy9uZXQvTWFrZWZpbGUtOS1lbmRpZlxuLS1cbmFyY2gvcG93ZXJwYy9jb25maWdzL21wYzg4NV9hZHNfZGVmY29uZmlnPTQ9Q09ORklHX0hJR0hfUkVTX1RJTUVSUz15XG5hcmNoL3Bvd2VycGMvY29uZmlncy9tcGM4ODVfYWRzX2RlZmNvbmZpZzo1OkNPTkZJR19CUEZfSklUPXlcbmFyY2gvcG93ZXJwYy9jb25maWdzL21wYzg4NV9hZHNfZGVmY29uZmlnLTYtQ09ORklHX1ZJUlRfQ1BVX0FDQ09VTlRJTkdfTkFUSVZFPXlcbi0tXG5hcmNoL3Bvd2VycGMvY29uZmlncy9wb3dlcm52X2RlZmNvbmZpZz05ND1DT05GSUdfRE5TX1JFU09MVkVSPXlcbmFyY2gvcG93ZXJwYy9jb25maWdzL3Bvd2VybnZfZGVmY29uZmlnOjk1OkNPTkZJR19CUEZfSklUPXlcbmFyY2gvcG93ZXJwYy9jb25maWdzL3Bvd2VybnZfZGVmY29uZmlnLTk2LSMgQ09ORklHX1dJUkVMRVNTIGlzIG5vdCBzZXRcbi0tXG5hcmNoL3Bvd2VycGMvY29uZmlncy9wcGM2NF9kZWZjb25maWc9Nz1DT05GSUdfQlBGX1NZU0NBTEw9eVxuYXJjaC9wb3dlcnBjL2NvbmZpZ3MvcHBjNjRfZGVmY29uZmlnOjg6Q09ORklHX0JQRl9KSVQ9eVxuYXJjaC9wb3dlcnBjL2NvbmZpZ3MvcHBjNjRfZGVmY29uZmlnLTktQ09ORklHX0JQRl9MU009eVxuLS1cbmFyY2gvcG93ZXJwYy9uZXQvTWFrZWZpbGUtNC0jXG5hcmNoL3Bvd2VycGMvbmV0L01ha2VmaWxlOjU6b2JqLSQoQ09ORklHX0JQRl9KSVQpICYjNDM7PSBicGZfaml0X2NvbXAubyBicGZfaml0X2NvbXAkKEJJVFMpLm9cbmFyY2gvcG93ZXJwYy9uZXQvTWFrZWZpbGUtNi1cbmFyY2gvcG93ZXJwYy9uZXQvTWFrZWZpbGU9Nz1pZmRlZiBDT05GSUdfUFBDNjRcbmFyY2gvcG93ZXJwYy9uZXQvTWFrZWZpbGU6ODpvYmotJChDT05GSUdfQlBGX0pJVCkgJiM0Mzs9IGJwZl90aW1lZF9tYXlfZ290by5vXG5hcmNoL3Bvd2VycGMvbmV0L01ha2VmaWxlLTktZW5kaWZcbi0tXG5hcmNoL3Jpc2N2L2luY2x1ZGUvYXNtL2V4dGFibGUuaD0zOD1zdGF0aWMgaW5saW5lIGJvb2wgZml4dXBfZXhjZXB0aW9uKHN0cnVjdCBwdF9yZWdzICpyZWdzKSB7IHJldHVybiBmYWxzZTsgfVxuLS1cbmFyY2gvcmlzY3YvaW5jbHVkZS9hc20vZXh0YWJsZS5oLTQwLVxuYXJjaC9yaXNjdi9pbmNsdWRlL2FzbS9leHRhYmxlLmg6NDE6I2lmIGRlZmluZWQoQ09ORklHX0JQRl9KSVQpIFx1MDAyNlx1MDAyNiBkZWZpbmVkKENPTkZJR19BUkNIX1JWNjRJKVxuYXJjaC9yaXNjdi9pbmNsdWRlL2FzbS9leHRhYmxlLmgtNDItYm9vbCBleF9oYW5kbGVyX2JwZihjb25zdCBzdHJ1Y3QgZXhjZXB0aW9uX3RhYmxlX2VudHJ5ICpleCwgc3RydWN0IHB0X3JlZ3MgKnJlZ3MpO1xuLS1cbmFyY2gvcmlzY3YvbmV0L01ha2VmaWxlLTItXG5hcmNoL3Jpc2N2L25ldC9NYWtlZmlsZTozOm9iai0kKENPTkZJR19CUEZfSklUKSAmIzQzOz0gYnBmX2ppdF9jb3JlLm9cbmFyY2gvcmlzY3YvbmV0L01ha2VmaWxlLTQtXG5hcmNoL3Jpc2N2L25ldC9NYWtlZmlsZT01PWlmZXEgKCQoQ09ORklHX0FSQ0hfUlY2NEkpLHkpXG5hcmNoL3Jpc2N2L25ldC9NYWtlZmlsZTo2Olx0b2JqLSQoQ09ORklHX0JQRl9KSVQpICYjNDM7PSBicGZfaml0X2NvbXA2NC5vXG5hcmNoL3Jpc2N2L25ldC9NYWtlZmlsZS03LWVsc2VcbmFyY2gvcmlzY3YvbmV0L01ha2VmaWxlOjg6XHRvYmotJChDT05GSUdfQlBGX0pJVCkgJiM0Mzs9IGJwZl9qaXRfY29tcDMyLm9cbmFyY2gvcmlzY3YvbmV0L01ha2VmaWxlLTktZW5kaWZcbi0tXG5hcmNoL3MzOTAvY29uZmlncy9kZWJ1Z19kZWZjb25maWc9OT1DT05GSUdfQlBGX1NZU0NBTEw9eVxuYXJjaC9zMzkwL2NvbmZpZ3MvZGVidWdfZGVmY29uZmlnOjEwOkNPTkZJR19CUEZfSklUPXlcbmFyY2gvczM5MC9jb25maWdzL2RlYnVnX2RlZmNvbmZpZzoxMTpDT05GSUdfQlBGX0pJVF9BTFdBWVNfT049eVxuYXJjaC9zMzkwL2NvbmZpZ3MvZGVidWdfZGVmY29uZmlnLTEyLUNPTkZJR19CUEZfTFNNPXlcbi0tXG5hcmNoL3MzOTAvY29uZmlncy9kZWZjb25maWc9OD1DT05GSUdfQlBGX1NZU0NBTEw9eVxuYXJjaC9zMzkwL2NvbmZpZ3MvZGVmY29uZmlnOjk6Q09ORklHX0JQRl9KSVQ9eVxuYXJjaC9zMzkwL2NvbmZpZ3MvZGVmY29uZmlnOjEwOkNPTkZJR19CUEZfSklUX0FMV0FZU19PTj15XG5hcmNoL3MzOTAvY29uZmlncy9kZWZjb25maWctMTEtQ09ORklHX0JQRl9MU009eVxuLS1cbmFyY2gvczM5MC9pbmNsdWRlL2FzbS9leHRhYmxlLmg9NDM9c3RhdGljIGlubGluZSB2b2lkIHN3YXBfZXhfZW50cnlfZml4dXAoc3RydWN0IGV4Y2VwdGlvbl90YWJsZV9lbnRyeSAqYSxcbi0tXG5hcmNoL3MzOTAvaW5jbHVkZS9hc20vZXh0YWJsZS5oLTU2LVxuYXJjaC9zMzkwL2luY2x1ZGUvYXNtL2V4dGFibGUuaDo1NzojaWZkZWYgQ09ORklHX0JQRl9KSVRcbmFyY2gvczM5MC9pbmNsdWRlL2FzbS9leHRhYmxlLmgtNTgtXG5hcmNoL3MzOTAvaW5jbHVkZS9hc20vZXh0YWJsZS5oPTU5PWJvb2wgZXhfaGFuZGxlcl9icGYoY29uc3Qgc3RydWN0IGV4Y2VwdGlvbl90YWJsZV9lbnRyeSAqZXgsIHN0cnVjdCBwdF9yZWdzICpyZWdzKTtcbmFyY2gvczM5MC9pbmNsdWRlL2FzbS9leHRhYmxlLmgtNjAtXG5hcmNoL3MzOTAvaW5jbHVkZS9hc20vZXh0YWJsZS5oOjYxOiNlbHNlIC8qICFDT05GSUdfQlBGX0pJVCAqL1xuYXJjaC9zMzkwL2luY2x1ZGUvYXNtL2V4dGFibGUuaC02Mi1cbmFyY2gvczM5MC9pbmNsdWRlL2FzbS9leHRhYmxlLmg9NjM9c3RhdGljIGlubGluZSBib29sIGV4X2hhbmRsZXJfYnBmKGNvbnN0IHN0cnVjdCBleGNlcHRpb25fdGFibGVfZW50cnkgKmV4LCBzdHJ1Y3QgcHRfcmVncyAqcmVncylcbi0tXG5hcmNoL3MzOTAvaW5jbHVkZS9hc20vZXh0YWJsZS5oLTY3LVxuYXJjaC9zMzkwL2luY2x1ZGUvYXNtL2V4dGFibGUuaDo2ODojZW5kaWYgLyogQ09ORklHX0JQRl9KSVQgKi9cbmFyY2gvczM5MC9pbmNsdWRlL2FzbS9leHRhYmxlLmgtNjktXG4tLVxuYXJjaC9zMzkwL25ldC9NYWtlZmlsZS00LSNcbmFyY2gvczM5MC9uZXQvTWFrZWZpbGU6NTpvYmotJChDT05GSUdfQlBGX0pJVCkgJiM0Mzs9IGJwZl9qaXRfY29tcC5vIGJwZl90aW1lZF9tYXlfZ290by5vXG5hcmNoL3MzOTAvbmV0L01ha2VmaWxlLTYtb2JqLSQoQ09ORklHX0hBVkVfUE5FVElEKSAmIzQzOz0gcG5ldC5vXG4tLVxuYXJjaC9zcGFyYy9uZXQvTWFrZWZpbGUtNC0jXG5hcmNoL3NwYXJjL25ldC9NYWtlZmlsZTo1Om9iai0kKENPTkZJR19CUEZfSklUKSAmIzQzOz0gYnBmX2ppdF9jb21wXyQoQklUUykub1xuYXJjaC9zcGFyYy9uZXQvTWFrZWZpbGUtNi1pZmVxICgkKEJJVFMpLDMyKVxuYXJjaC9zcGFyYy9uZXQvTWFrZWZpbGU6NzpvYmotJChDT05GSUdfQlBGX0pJVCkgJiM0Mzs9IGJwZl9qaXRfYXNtXzMyLm9cbmFyY2gvc3BhcmMvbmV0L01ha2VmaWxlLTgtZW5kaWZcbi0tXG5hcmNoL3g4Ni9pbmNsdWRlL2FzbS9leHRhYmxlLmg9NDY9c3RhdGljIGlubGluZSB2b2lkIF9fbm9yZXR1cm4gZXhfaGFuZGxlcl9tc3JfbWNlKHN0cnVjdCBwdF9yZWdzICpyZWdzLCBib29sIHdybXNyKVxuLS1cbmFyY2gveDg2L2luY2x1ZGUvYXNtL2V4dGFibGUuaC01Mi1cbmFyY2gveDg2L2luY2x1ZGUvYXNtL2V4dGFibGUuaDo1MzojaWYgZGVmaW5lZChDT05GSUdfQlBGX0pJVCkgXHUwMDI2XHUwMDI2IGRlZmluZWQoQ09ORklHX1g4Nl82NClcbmFyY2gveDg2L2luY2x1ZGUvYXNtL2V4dGFibGUuaC01NC1ib29sIGV4X2hhbmRsZXJfYnBmKGNvbnN0IHN0cnVjdCBleGNlcHRpb25fdGFibGVfZW50cnkgKngsIHN0cnVjdCBwdF9yZWdzICpyZWdzKTtcbi0tXG5hcmNoL3g4Ni9rZXJuZWwvY2FsbHRodW5rcy5jPTI2NT12b2lkICpjYWxsdGh1bmtzX3RyYW5zbGF0ZV9jYWxsX2Rlc3Qodm9pZCAqZGVzdClcbi0tXG5hcmNoL3g4Ni9rZXJuZWwvY2FsbHRodW5rcy5jLTI4MC1cbmFyY2gveDg2L2tlcm5lbC9jYWxsdGh1bmtzLmM6MjgxOiNpZmRlZiBDT05GSUdfQlBGX0pJVFxuYXJjaC94ODYva2VybmVsL2NhbGx0aHVua3MuYy0yODItc3RhdGljIGJvb2wgaXNfY2FsbHRodW5rKHZvaWQgKmFkZHIpXG4tLVxuYXJjaC94ODYva2VybmVsL3Vud2luZF9vcmMuYz0xODU9c3RhdGljIHN0cnVjdCBvcmNfZW50cnkgKm9yY19icGZfZmluZCh1bnNpZ25lZCBsb25nIGlwKVxuYXJjaC94ODYva2VybmVsL3Vud2luZF9vcmMuYy0xODYte1xuYXJjaC94ODYva2VybmVsL3Vud2luZF9vcmMuYzoxODc6I2lmZGVmIENPTkZJR19CUEZfSklUXG5hcmNoL3g4Ni9rZXJuZWwvdW53aW5kX29yYy5jLTE4OC1cdGlmIChicGZfaGFzX2ZyYW1lX3BvaW50ZXIoaXApKVxuLS1cbmFyY2gveDg2L25ldC9NYWtlZmlsZT02PWlmZXEgKCQoQ09ORklHX1g4Nl8zMikseSlcbmFyY2gveDg2L25ldC9NYWtlZmlsZTo3OiAgICAgICAgb2JqLSQoQ09ORklHX0JQRl9KSVQpICYjNDM7PSBicGZfaml0X2NvbXAzMi5vXG5hcmNoL3g4Ni9uZXQvTWFrZWZpbGUtOC1lbHNlXG5hcmNoL3g4Ni9uZXQvTWFrZWZpbGU6OTogICAgICAgIG9iai0kKENPTkZJR19CUEZfSklUKSAmIzQzOz0gYnBmX2ppdF9jb21wLm8gYnBmX3RpbWVkX21heV9nb3RvLm9cbmFyY2gveDg2L25ldC9NYWtlZmlsZS0xMC1lbmRpZlxuLS1cbmluY2x1ZGUvbGludXgvYnBmLmg9MTUwOT1zdHJ1Y3QgYnBmX3RyYWNpbmdfbXVsdGlfbGluaztcbmluY2x1ZGUvbGludXgvYnBmLmgtMTUxMC1cbmluY2x1ZGUvbGludXgvYnBmLmg6MTUxMTojaWZkZWYgQ09ORklHX0JQRl9KSVRcbmluY2x1ZGUvbGludXgvYnBmLmgtMTUxMi1pbnQgYnBmX3RyYW1wb2xpbmVfbGlua19wcm9nKHN0cnVjdCBicGZfdHJhbXBfbm9kZSAqbm9kZSxcbi0tXG5pbmNsdWRlL2xpbnV4L2JwZi5oPTIxOTM9c3RhdGljIGlubGluZSBib29sIGlzX3RyYWNpbmdfbXVsdGkoZW51bSBicGZfYXR0YWNoX3R5cGUgdHlwZSlcbi0tXG5pbmNsdWRlL2xpbnV4L2JwZi5oLTIxOTgtXG5pbmNsdWRlL2xpbnV4L2JwZi5oOjIxOTk6I2lmIGRlZmluZWQoQ09ORklHX0JQRl9KSVQpIFx1MDAyNlx1MDAyNiBkZWZpbmVkKENPTkZJR19CUEZfU1lTQ0FMTClcbmluY2x1ZGUvbGludXgvYnBmLmgtMjIwMC0vKiBUaGlzIG1hY3JvIGhlbHBzIGRldmVsb3BlciB0byByZWdpc3RlciBhIHN0cnVjdF9vcHMgdHlwZSBhbmQgZ2VuZXJhdGVcbi0tXG5pbmNsdWRlL2xpbnV4L2JwZi5oPTMwNDc9aW50IGJwZl9jaGVjayhzdHJ1Y3QgYnBmX3Byb2cgKipmcCwgdW5pb24gYnBmX2F0dHIgKmF0dHIsIGJwZnB0cl90IHVhdHRyLFxuLS1cbmluY2x1ZGUvbGludXgvYnBmLmgtMzA0OS1cbmluY2x1ZGUvbGludXgvYnBmLmg6MzA1MDojaWZuZGVmIENPTkZJR19CUEZfSklUX0FMV0FZU19PTlxuaW5jbHVkZS9saW51eC9icGYuaC0zMDUxLWludCBicGZfcGF0Y2hfY2FsbF9hcmdzKHN0cnVjdCBicGZfaW5zbiAqaW5zbiwgdTMyIHN0YWNrX2RlcHRoKTtcbi0tXG5pbmNsdWRlL2xpbnV4L2JwZl90eXBlcy5oPTY3PUJQRl9QUk9HX1RZUEUoQlBGX1BST0dfVFlQRV9TS19MT09LVVAsIHNrX2xvb2t1cCxcbi0tXG5pbmNsdWRlL2xpbnV4L2JwZl90eXBlcy5oLTY5LSNlbmRpZlxuaW5jbHVkZS9saW51eC9icGZfdHlwZXMuaDo3MDojaWYgZGVmaW5lZChDT05GSUdfQlBGX0pJVClcbmluY2x1ZGUvbGludXgvYnBmX3R5cGVzLmgtNzEtQlBGX1BST0dfVFlQRShCUEZfUFJPR19UWVBFX1NUUlVDVF9PUFMsIGJwZl9zdHJ1Y3Rfb3BzLFxuLS1cbmluY2x1ZGUvbGludXgvYnBmX3R5cGVzLmg9MTI4PUJQRl9NQVBfVFlQRShCUEZfTUFQX1RZUEVfU1RBQ0ssIHN0YWNrX21hcF9vcHMpXG5pbmNsdWRlL2xpbnV4L2JwZl90eXBlcy5oOjEyOTojaWYgZGVmaW5lZChDT05GSUdfQlBGX0pJVClcbmluY2x1ZGUvbGludXgvYnBmX3R5cGVzLmgtMTMwLUJQRl9NQVBfVFlQRShCUEZfTUFQX1RZUEVfU1RSVUNUX09QUywgYnBmX3N0cnVjdF9vcHNfbWFwX29wcylcbi0tXG5pbmNsdWRlL2xpbnV4L2J0Zi5oPTUzMj1zdHJ1Y3QgYnBmX3ZlcmlmaWVyX2xvZztcbmluY2x1ZGUvbGludXgvYnRmLmgtNTMzLVxuaW5jbHVkZS9saW51eC9idGYuaDo1MzQ6I2lmIGRlZmluZWQoQ09ORklHX0JQRl9KSVQpIFx1MDAyNlx1MDAyNiBkZWZpbmVkKENPTkZJR19CUEZfU1lTQ0FMTClcbmluY2x1ZGUvbGludXgvYnRmLmgtNTM1LXN0cnVjdCBicGZfc3RydWN0X29wcztcbi0tXG5pbmNsdWRlL2xpbnV4L2V4dGFibGUuaD0zMD1zZWFyY2hfbW9kdWxlX2V4dGFibGVzKHVuc2lnbmVkIGxvbmcgYWRkcilcbi0tXG5pbmNsdWRlL2xpbnV4L2V4dGFibGUuaC0zNS1cbmluY2x1ZGUvbGludXgvZXh0YWJsZS5oOjM2OiNpZmRlZiBDT05GSUdfQlBGX0pJVFxuaW5jbHVkZS9saW51eC9leHRhYmxlLmgtMzctY29uc3Qgc3RydWN0IGV4Y2VwdGlvbl90YWJsZV9lbnRyeSAqc2VhcmNoX2JwZl9leHRhYmxlcyh1bnNpZ25lZCBsb25nIGFkZHIpO1xuLS1cbmluY2x1ZGUvbGludXgvZmlsdGVyLmg9MTA5OD1zdGF0aWMgaW5saW5lIGludCBfX211c3RfY2hlY2sgYnBmX3Byb2dfbG9ja19ybyhzdHJ1Y3QgYnBmX3Byb2cgKmZwKVxuaW5jbHVkZS9saW51eC9maWx0ZXIuaC0xMDk5LXtcbmluY2x1ZGUvbGludXgvZmlsdGVyLmg6MTEwMDojaWZuZGVmIENPTkZJR19CUEZfSklUX0FMV0FZU19PTlxuaW5jbHVkZS9saW51eC9maWx0ZXIuaC0xMTAxLVx0aWYgKCFmcC1cdTAwM2VqaXRlZCkge1xuLS1cbmluY2x1ZGUvbGludXgvZmlsdGVyLmg9MTI5OT1icGZfcnVuX3NrX3JldXNlcG9ydChzdHJ1Y3Qgc29ja19yZXVzZXBvcnQgKnJldXNlLCBzdHJ1Y3Qgc29jayAqc2ssXG4tLVxuaW5jbHVkZS9saW51eC9maWx0ZXIuaC0xMzA3LVxuaW5jbHVkZS9saW51eC9maWx0ZXIuaDoxMzA4OiNpZmRlZiBDT05GSUdfQlBGX0pJVFxuaW5jbHVkZS9saW51eC9maWx0ZXIuaC0xMzA5LWV4dGVybiBpbnQgYnBmX2ppdF9lbmFibGU7XG4tLVxuaW5jbHVkZS9saW51eC9maWx0ZXIuaD0xNDQwPXZvaWQgYnBmX3Byb2dfa2FsbHN5bXNfZGVsKHN0cnVjdCBicGZfcHJvZyAqZnApO1xuaW5jbHVkZS9saW51eC9maWx0ZXIuaC0xNDQxLVxuaW5jbHVkZS9saW51eC9maWx0ZXIuaDoxNDQyOiNlbHNlIC8qIENPTkZJR19CUEZfSklUICovXG5pbmNsdWRlL2xpbnV4L2ZpbHRlci5oLTE0NDMtXG4tLVxuaW5jbHVkZS9saW51eC9maWx0ZXIuaD0xNTE4PXN0YXRpYyBpbmxpbmUgdm9pZCBicGZfaml0X3Byb2dfcmVsZWFzZV9vdGhlcihzdHJ1Y3QgYnBmX3Byb2cgKmZwLCBzdHJ1Y3QgYnBmX3Byb2cgKmZwX290aGVyKVxuLS1cbmluY2x1ZGUvbGludXgvZmlsdGVyLmgtMTUyMC19XG5pbmNsdWRlL2xpbnV4L2ZpbHRlci5oOjE1MjE6I2VuZGlmIC8qIENPTkZJR19CUEZfSklUICovXG5pbmNsdWRlL2xpbnV4L2ZpbHRlci5oLTE1MjItXG4tLVxua2VybmVsL2JwZi9LY29uZmlnPTU4PWNvbmZpZyBCUEZfSklUX0FMV0FZU19PTlxuLS1cbmtlcm5lbC9icGYvS2NvbmZpZy02NC1cbmtlcm5lbC9icGYvS2NvbmZpZzo2NTpcdCAgV2hlbiBDT05GSUdfQlBGX0pJVF9BTFdBWVNfT04gaXMgZW5hYmxlZCwgL3Byb2Mvc3lzL25ldC9jb3JlL2JwZl9qaXRfZW5hYmxlXG5rZXJuZWwvYnBmL0tjb25maWctNjYtXHQgIGlzIHBlcm1hbmVudGx5IHNldCB0byAxIGFuZCBzZXR0aW5nIGFueSBvdGhlciB2YWx1ZSB0aGFuIHRoYXQgd2lsbFxuLS1cbmtlcm5lbC9icGYvTWFrZWZpbGU9Mj1vYmoteSA6PSBjb3JlLm9cbmtlcm5lbC9icGYvTWFrZWZpbGU6MzppZm5lcSAoJChDT05GSUdfQlBGX0pJVF9BTFdBWVNfT04pLHkpXG5rZXJuZWwvYnBmL01ha2VmaWxlLTQtIyBfX19icGZfcHJvZ19ydW4oKSBuZWVkcyBHQ1NFIGRpc2FibGVkIG9uIHg4Njsgc2VlIDMxOTNjMDgzNmYyMDMgZm9yIGRldGFpbHNcbi0tXG5rZXJuZWwvYnBmL01ha2VmaWxlPTE2PW9iai0kKENPTkZJR19CUEZfU1lTQ0FMTCkgJiM0Mzs9IGRpc2FzbS5vIG1wcm9nLm9cbmtlcm5lbC9icGYvTWFrZWZpbGU6MTc6b2JqLSQoQ09ORklHX0JQRl9KSVQpICYjNDM7PSB0cmFtcG9saW5lLm9cbmtlcm5lbC9icGYvTWFrZWZpbGUtMTgtb2JqLSQoQ09ORklHX0JQRl9TWVNDQUxMKSAmIzQzOz0gYnRmLm8gbWVtYWxsb2MubyBycXNwaW5sb2NrLm8gc3RyZWFtLm9cbi0tXG5rZXJuZWwvYnBmL01ha2VmaWxlPTIxPWVuZGlmXG5rZXJuZWwvYnBmL01ha2VmaWxlOjIyOm9iai0kKENPTkZJR19CUEZfSklUKSAmIzQzOz0gZGlzcGF0Y2hlci5vXG5rZXJuZWwvYnBmL01ha2VmaWxlLTIzLWlmZXEgKCQoQ09ORklHX05FVCkseSlcbi0tXG5rZXJuZWwvYnBmL01ha2VmaWxlPTQyPWVuZGlmXG5rZXJuZWwvYnBmL01ha2VmaWxlOjQzOmlmZXEgKCQoQ09ORklHX0JQRl9KSVQpLHkpXG5rZXJuZWwvYnBmL01ha2VmaWxlLTQ0LW9iai0kKENPTkZJR19CUEZfU1lTQ0FMTCkgJiM0Mzs9IGJwZl9zdHJ1Y3Rfb3BzLm9cbi0tXG5rZXJuZWwvYnBmL2J0Zi5jPTk3Nzg9Ym9vbCBidGZfdHlwZV9pZHNfbm9jYXN0X2FsaWFzKHN0cnVjdCBicGZfdmVyaWZpZXJfbG9nICpsb2csXG4tLVxua2VybmVsL2JwZi9idGYuYy05ODMyLVxua2VybmVsL2JwZi9idGYuYzo5ODMzOiNpZmRlZiBDT05GSUdfQlBGX0pJVFxua2VybmVsL2JwZi9idGYuYy05ODM0LXN0YXRpYyBpbnRcbi0tXG5rZXJuZWwvYnBmL2NvcmUuYz01Mzk9dm9pZCBicGZfcHJvZ19rYWxsc3ltc19kZWxfYWxsKHN0cnVjdCBicGZfcHJvZyAqZnApXG4tLVxua2VybmVsL2JwZi9jb3JlLmMtNTQ0LVxua2VybmVsL2JwZi9jb3JlLmM6NTQ1OiNpZmRlZiBDT05GSUdfQlBGX0pJVFxua2VybmVsL2JwZi9jb3JlLmMtNTQ2LS8qIEFsbCBCUEYgSklUIHN5c2N0bCBrbm9icyBoZXJlLiAqL1xua2VybmVsL2JwZi9jb3JlLmM6NTQ3OmludCBicGZfaml0X2VuYWJsZSAgIF9fcmVhZF9tb3N0bHkgPSBJU19CVUlMVElOKENPTkZJR19CUEZfSklUX0RFRkFVTFRfT04pO1xua2VybmVsL2JwZi9jb3JlLmM6NTQ4OmludCBicGZfaml0X2thbGxzeW1zIF9fcmVhZF9tb3N0bHkgPSBJU19CVUlMVElOKENPTkZJR19CUEZfSklUX0RFRkFVTFRfT04pO1xua2VybmVsL2JwZi9jb3JlLmMtNTQ5LWludCBicGZfaml0X2hhcmRlbiAgIF9fcmVhZF9tb3N0bHk7XG4tLVxua2VybmVsL2JwZi9jb3JlLmM9MTU5OD11MTYgYnBmX291dF9zdGFja19hcmdfY250KGNvbnN0IHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYsIGNvbnN0IHN0cnVjdCBicGZfcHJvZyAqcHJvZylcbi0tXG5rZXJuZWwvYnBmL2NvcmUuYy0xNjA2LX1cbmtlcm5lbC9icGYvY29yZS5jOjE2MDc6I2VuZGlmIC8qIENPTkZJR19CUEZfSklUICovXG5rZXJuZWwvYnBmL2NvcmUuYy0xNjA4LVxuLS1cbmtlcm5lbC9icGYvY29yZS5jPTE3NjY9Ym9vbCBicGZfb3Bjb2RlX2luX2luc250YWJsZSh1OCBjb2RlKVxuLS1cbmtlcm5lbC9icGYvY29yZS5jLTE3ODgtXG5rZXJuZWwvYnBmL2NvcmUuYzoxNzg5OiNpZm5kZWYgQ09ORklHX0JQRl9KSVRfQUxXQVlTX09OXG5rZXJuZWwvYnBmL2NvcmUuYy0xNzkwLS8qIEFic29sdXRlIHZhbHVlIG9mIHMzMiB3aXRob3V0IHVuZGVmaW5lZCBiZWhhdmlvciBmb3IgUzMyX01JTiAqL1xuLS1cbmtlcm5lbC9icGYvY29yZS5jPTI1NTM9c3RhdGljIGJvb2wgYnBmX3Byb2dfc2VsZWN0X2ludGVycHJldGVyKHN0cnVjdCBicGZfcHJvZyAqZnApXG4tLVxua2VybmVsL2JwZi9jb3JlLmMtMjU1NS1cdGJvb2wgc2VsZWN0X2ludGVycHJldGVyID0gZmFsc2U7XG5rZXJuZWwvYnBmL2NvcmUuYzoyNTU2OiNpZm5kZWYgQ09ORklHX0JQRl9KSVRfQUxXQVlTX09OXG5rZXJuZWwvYnBmL2NvcmUuYy0yNTU3LVx0dTMyIHN0YWNrX2RlcHRoID0gbWF4X3QodTMyLCBmcC1cdTAwM2VhdXgtXHUwMDNlc3RhY2tfZGVwdGgsIDEpO1xuLS1cbmtlcm5lbC9icGYvY29yZS5jPTI1NzY9c3RhdGljIHN0cnVjdCBicGZfcHJvZyAqYnBmX3Byb2dfaml0X2NvbXBpbGUoc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudiwgc3RydWN0IGJwZl9wcm9nICpwcm9nKVxua2VybmVsL2JwZi9jb3JlLmMtMjU3Ny17XG5rZXJuZWwvYnBmL2NvcmUuYzoyNTc4OiNpZmRlZiBDT05GSUdfQlBGX0pJVFxua2VybmVsL2JwZi9jb3JlLmMtMjU3OS1cdHN0cnVjdCBicGZfcHJvZyAqb3JpZ19wcm9nO1xuLS1cbmtlcm5lbC9icGYvY29yZS5jPTI2MjM9c3RydWN0IGJwZl9wcm9nICpfX2JwZl9wcm9nX3NlbGVjdF9ydW50aW1lKHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYsIHN0cnVjdCBicGZfcHJvZyAqZnAsXG4tLVxua2VybmVsL2JwZi9jb3JlLmMtMjYzMy1cbmtlcm5lbC9icGYvY29yZS5jOjI2MzQ6XHRpZiAoSVNfRU5BQkxFRChDT05GSUdfQlBGX0pJVF9BTFdBWVNfT04pIHx8XG5rZXJuZWwvYnBmL2NvcmUuYy0yNjM1LVx0ICAgIGJwZl9wcm9nX2hhc19rZnVuY19jYWxsKGZwKSlcbi0tXG5rZXJuZWwvYnBmL2ZpeHVwcy5jPTEyNz1zdGF0aWMgaW50IGFkZF9rZnVuY19pbl9pbnNucyhzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52LFxuLS1cbmtlcm5lbC9icGYvZml4dXBzLmMtMTQxLVxua2VybmVsL2JwZi9maXh1cHMuYzoxNDI6I2lmbmRlZiBDT05GSUdfQlBGX0pJVF9BTFdBWVNfT05cbmtlcm5lbC9icGYvZml4dXBzLmMtMTQzLXN0YXRpYyBpbnQgZ2V0X2NhbGxlZV9zdGFja19kZXB0aChzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52LFxuLS1cbmtlcm5lbC9icGYvZml4dXBzLmM9MTM3Nj1pbnQgYnBmX2ZpeHVwX2NhbGxfYXJncyhzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52KVxua2VybmVsL2JwZi9maXh1cHMuYy0xMzc3LXtcbmtlcm5lbC9icGYvZml4dXBzLmM6MTM3ODojaWZuZGVmIENPTkZJR19CUEZfSklUX0FMV0FZU19PTlxua2VybmVsL2JwZi9maXh1cHMuYy0xMzc5LVx0c3RydWN0IGJwZl9wcm9nICpwcm9nID0gZW52LVx1MDAzZXByb2c7XG4tLVxua2VybmVsL2JwZi9maXh1cHMuYy0xNDA1LVx0fVxua2VybmVsL2JwZi9maXh1cHMuYzoxNDA2OiNpZm5kZWYgQ09ORklHX0JQRl9KSVRfQUxXQVlTX09OXG5rZXJuZWwvYnBmL2ZpeHVwcy5jLTE0MDctXHRpZiAoaGFzX2tmdW5jX2NhbGwpIHtcbi0tXG5rZXJuZWwvYnBmL3N5c2NhbGwuYz02NTc4PWludCBrZXJuX3N5c19icGYoaW50IGNtZCwgdW5pb24gYnBmX2F0dHIgKmF0dHIsIHVuc2lnbmVkIGludCBzaXplKVxuLS1cbmtlcm5lbC9icGYvc3lzY2FsbC5jLTY1ODMtXHRzd2l0Y2ggKGNtZCkge1xua2VybmVsL2JwZi9zeXNjYWxsLmM6NjU4NDojaWZkZWYgQ09ORklHX0JQRl9KSVQgLyogX19icGZfcHJvZ19lbnRlcl9zbGVlcGFibGUgdXNlZCBieSB0cmFtcG9saW5lIGFuZCBKSVQgKi9cbmtlcm5lbC9icGYvc3lzY2FsbC5jLTY1ODUtXHRjYXNlIEJQRl9QUk9HX1RFU1RfUlVOOlxuLS1cbmtlcm5lbC9icGYvdmVyaWZpZXIuYz00NDE4PUJURl9JRChzdHJ1Y3QsIGNncm91cClcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy00NDE5LSNlbmRpZlxua2VybmVsL2JwZi92ZXJpZmllci5jOjQ0MjA6I2lmZGVmIENPTkZJR19CUEZfSklUXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtNDQyMS1CVEZfSUQoc3RydWN0LCBicGZfY3B1bWFzaylcbi0tXG5uZXQvYnBmL01ha2VmaWxlPTI9b2JqLSQoQ09ORklHX0JQRl9TWVNDQUxMKVx0Oj0gdGVzdF9ydW4ub1xubmV0L2JwZi9NYWtlZmlsZTozOmlmZXEgKCQoQ09ORklHX0JQRl9KSVQpLHkpXG5uZXQvYnBmL01ha2VmaWxlLTQtb2JqLSQoQ09ORklHX0JQRl9TWVNDQUxMKVx0JiM0Mzs9IGJwZl9kdW1teV9zdHJ1Y3Rfb3BzLm9cbi0tXG5uZXQvY29yZS9zeXNjdGxfbmV0X2NvcmUuYz0zNTI9c3RhdGljIGludCBwcm9jX2RvX3NrYl9kZWZlcl9tYXgoY29uc3Qgc3RydWN0IGN0bF90YWJsZSAqdGFibGUsIGludCB3cml0ZSxcbi0tXG5uZXQvY29yZS9zeXNjdGxfbmV0X2NvcmUuYy0zNzQtXG5uZXQvY29yZS9zeXNjdGxfbmV0X2NvcmUuYzozNzU6I2lmZGVmIENPTkZJR19CUEZfSklUXG5uZXQvY29yZS9zeXNjdGxfbmV0X2NvcmUuYy0zNzYtc3RhdGljIGludCBwcm9jX2RvaW50dmVjX21pbm1heF9icGZfZW5hYmxlKGNvbnN0IHN0cnVjdCBjdGxfdGFibGUgKnRhYmxlLCBpbnQgd3JpdGUsXG4tLVxubmV0L2NvcmUvc3lzY3RsX25ldF9jb3JlLmMtNDAxLVx0aWYgKHdyaXRlIFx1MDAyNlx1MDAyNiByZXQgXHUwMDI2XHUwMDI2IG1pbiA9PSBtYXgpXG5uZXQvY29yZS9zeXNjdGxfbmV0X2NvcmUuYzo0MDI6XHRcdHByX2luZm9fb25jZShcJiMzNDtDT05GSUdfQlBGX0pJVF9BTFdBWVNfT04gaXMgZW5hYmxlZCwgYnBmX2ppdF9lbmFibGUgaXMgcGVybWFuZW50bHkgc2V0IHRvIDEuXFxuXCYjMzQ7KTtcbm5ldC9jb3JlL3N5c2N0bF9uZXRfY29yZS5jLTQwMy1cbi0tXG5uZXQvY29yZS9zeXNjdGxfbmV0X2NvcmUuYz00MzA9c3RhdGljIHN0cnVjdCBjdGxfdGFibGUgbmV0X2NvcmVfdGFibGVbXSA9IHtcbi0tXG5uZXQvY29yZS9zeXNjdGxfbmV0X2NvcmUuYy00ODMtXHR9LFxubmV0L2NvcmUvc3lzY3RsX25ldF9jb3JlLmM6NDg0OiNpZmRlZiBDT05GSUdfQlBGX0pJVFxubmV0L2NvcmUvc3lzY3RsX25ldF9jb3JlLmMtNDg1LVx0e1xuLS1cbm5ldC9jb3JlL3N5c2N0bF9uZXRfY29yZS5jLTQ5MC1cdFx0LnByb2NfaGFuZGxlclx0PSBwcm9jX2RvaW50dmVjX21pbm1heF9icGZfZW5hYmxlLFxubmV0L2NvcmUvc3lzY3RsX25ldF9jb3JlLmM6NDkxOiMgaWZkZWYgQ09ORklHX0JQRl9KSVRfQUxXQVlTX09OXG5uZXQvY29yZS9zeXNjdGxfbmV0X2NvcmUuYy00OTItXHRcdC5leHRyYTFcdFx0PSBTWVNDVExfT05FLFxuLS1cbm5ldC9pcHY0L01ha2VmaWxlPTY5PW9iai0kKENPTkZJR19UQ1BfQU8pICYjNDM7PSB0Y3BfYW8ub1xubmV0L2lwdjQvTWFrZWZpbGUtNzAtXG5uZXQvaXB2NC9NYWtlZmlsZTo3MTppZmVxICgkKENPTkZJR19CUEZfSklUKSx5KVxubmV0L2lwdjQvTWFrZWZpbGUtNzItb2JqLSQoQ09ORklHX0JQRl9TWVNDQUxMKSAmIzQzOz0gYnBmX3RjcF9jYS5vXG4tLVxuc2NyaXB0cy9nZGIvbGludXgvYnBmLnB5PTk9ZnJvbSBsaW51eCBpbXBvcnQgY29uc3RhbnRzLCBsaXN0cywgcmFkaXh0cmVlLCB1dGlsc1xuLS1cbnNjcmlwdHMvZ2RiL2xpbnV4L2JwZi5weS0xMS1cbnNjcmlwdHMvZ2RiL2xpbnV4L2JwZi5weToxMjppZiBjb25zdGFudHMuTFhfQ09ORklHX0JQRiBhbmQgY29uc3RhbnRzLkxYX0NPTkZJR19CUEZfSklUOlxuc2NyaXB0cy9nZGIvbGludXgvYnBmLnB5LTEzLSAgICBicGZfa3N5bV90eXBlID0gdXRpbHMuQ2FjaGVkVHlwZShcJiMzNDtzdHJ1Y3QgYnBmX2tzeW1cJiMzNDspXG4tLVxuc2NyaXB0cy9nZGIvbGludXgvYnBmLnB5PTI2PWRlZiBsaXN0X2tzeW1zKCk6XG5zY3JpcHRzL2dkYi9saW51eC9icGYucHk6Mjc6ICAgIGlmIG5vdCAoY29uc3RhbnRzLkxYX0NPTkZJR19CUEYgYW5kIGNvbnN0YW50cy5MWF9DT05GSUdfQlBGX0pJVCk6XG5zY3JpcHRzL2dkYi9saW51eC9icGYucHktMjgtICAgICAgICByZXR1cm4gW11cbi0tXG5zY3JpcHRzL2dkYi9saW51eC9jb25zdGFudHMucHkuaW49MTczPUxYX0NPTkZJRyhDT05GSUdfQlBGKVxuc2NyaXB0cy9nZGIvbGludXgvY29uc3RhbnRzLnB5LmluOjE3NDpMWF9DT05GSUcoQ09ORklHX0JQRl9KSVQpXG5zY3JpcHRzL2dkYi9saW51eC9jb25zdGFudHMucHkuaW4tMTc1LUxYX0NPTkZJRyhDT05GSUdfQlBGX1NZU0NBTEwpXG4tLVxuc2NyaXB0cy9nZGIvbGludXgvc3ltYm9scy5weT0xMjE9YXJlIGxvYWRlZCBhcyB3ZWxsLlwmIzM0O1wmIzM0O1wmIzM0O1xuLS1cbnNjcmlwdHMvZ2RiL2xpbnV4L3N5bWJvbHMucHktMzMyLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5yZW1vdmVfYnBmX3Byb2cpXG5zY3JpcHRzL2dkYi9saW51eC9zeW1ib2xzLnB5OjMzMzogICAgICAgICAgICBpZiBjb25zdGFudHMuTFhfQ09ORklHX0JQRiBhbmQgY29uc3RhbnRzLkxYX0NPTkZJR19CUEZfSklUOlxuc2NyaXB0cy9nZGIvbGludXgvc3ltYm9scy5weS0zMzQtICAgICAgICAgICAgICAgIHNlbGYuYnBmX2tzeW1fbW9uaXRvciA9IGJwZi5Lc3ltTW9uaXRvcihzZWxmLmFkZF9icGZfa3N5bSxcbi0tXG50b29scy9icGYvYnBmdG9vbC9mZWF0dXJlLmM9MzI4PXN0YXRpYyB2b2lkIHByb2JlX2tlcm5lbF9pbWFnZV9jb25maWcoY29uc3QgY2hhciAqZGVmaW5lX3ByZWZpeClcbi0tXG50b29scy9icGYvYnBmdG9vbC9mZWF0dXJlLmMtMzM3LVx0XHQvKiBDb21waWxlIGVCUEYgSklUIGNvbXBpbGVyICovXG50b29scy9icGYvYnBmdG9vbC9mZWF0dXJlLmM6MzM4Olx0XHR7IFwmIzM0O0NPTkZJR19CUEZfSklUXCYjMzQ7LCB9LFxudG9vbHMvYnBmL2JwZnRvb2wvZmVhdHVyZS5jLTMzOS1cdFx0LyogQXZvaWQgY29tcGlsaW5nIGVCUEYgaW50ZXJwcmV0ZXIgKHVzZSBKSVQgb25seSkgKi9cbnRvb2xzL2JwZi9icGZ0b29sL2ZlYXR1cmUuYzozNDA6XHRcdHsgXCYjMzQ7Q09ORklHX0JQRl9KSVRfQUxXQVlTX09OXCYjMzQ7LCB9LFxudG9vbHMvYnBmL2JwZnRvb2wvZmVhdHVyZS5jLTM0MS1cdFx0LyogS2VybmVsIEJURiBkZWJ1ZyBpbmZvcm1hdGlvbiBhdmFpbGFibGUgKi9cbi0tXG50b29scy9zY2hlZF9leHQvS2NvbmZpZz00PUNPTkZJR19CUEZfU1lTQ0FMTD15XG50b29scy9zY2hlZF9leHQvS2NvbmZpZzo1OkNPTkZJR19CUEZfSklUPXlcbnRvb2xzL3NjaGVkX2V4dC9LY29uZmlnLTYtQ09ORklHX0RFQlVHX0lORk9fQlRGPXlcbnRvb2xzL3NjaGVkX2V4dC9LY29uZmlnOjc6Q09ORklHX0JQRl9KSVRfQUxXQVlTX09OPXlcbnRvb2xzL3NjaGVkX2V4dC9LY29uZmlnOjg6Q09ORklHX0JQRl9KSVRfREVGQVVMVF9PTj15XG50b29scy9zY2hlZF9leHQvS2NvbmZpZy05LUNPTkZJR19TQ0hFRF9DTEFTU19FWFQ9eVxuLS1cbnRvb2xzL3NjaGVkX2V4dC9SRUFETUUubWQ9NTg9Q09ORklHX0JQRl9TWVNDQUxMPXlcbnRvb2xzL3NjaGVkX2V4dC9SRUFETUUubWQ6NTk6Q09ORklHX0JQRl9KSVQ9eVxudG9vbHMvc2NoZWRfZXh0L1JFQURNRS5tZC02MC1DT05GSUdfREVCVUdfSU5GT19CVEY9eVxudG9vbHMvc2NoZWRfZXh0L1JFQURNRS5tZDo2MTpDT05GSUdfQlBGX0pJVF9BTFdBWVNfT049eVxudG9vbHMvc2NoZWRfZXh0L1JFQURNRS5tZDo2MjpDT05GSUdfQlBGX0pJVF9ERUZBVUxUX09OPXlcbnRvb2xzL3NjaGVkX2V4dC9SRUFETUUubWQtNjMtYGBgXG4tLVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL2NvbmZpZz01PUNPTkZJR19CUEZfRVZFTlRTPXlcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9jb25maWc6NjpDT05GSUdfQlBGX0pJVD15XG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvY29uZmlnLTctQ09ORklHX0JQRl9LUFJPQkVfT1ZFUlJJREU9eVxuLS1cbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9jb25maWcuYWFyY2g2ND0xMz1DT05GSUdfQk9ORElORz15XG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvY29uZmlnLmFhcmNoNjQ6MTQ6Q09ORklHX0JQRl9KSVRfQUxXQVlTX09OPXlcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9jb25maWcuYWFyY2g2NDoxNTpDT05GSUdfQlBGX0pJVF9ERUZBVUxUX09OPXlcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9jb25maWcuYWFyY2g2NC0xNi1DT05GSUdfQlBGX1BSRUxPQURfVU1EPXlcbi0tXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvY29uZmlnLnBwYzY0ZWw9Nj1DT05GSUdfQk9ORElORz15XG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvY29uZmlnLnBwYzY0ZWw6NzpDT05GSUdfQlBGX0pJVF9BTFdBWVNfT049eVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL2NvbmZpZy5wcGM2NGVsLTgtQ09ORklHX0JQRl9QUkVMT0FEX1VNRD15XG4tLVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL2NvbmZpZy5yaXNjdjY0PTU9Q09ORklHX0JPTkRJTkc9eVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL2NvbmZpZy5yaXNjdjY0OjY6Q09ORklHX0JQRl9KSVRfQUxXQVlTX09OPXlcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9jb25maWcucmlzY3Y2NC03LUNPTkZJR19CUEZfUFJFTE9BRD15XG4tLVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL2NvbmZpZy5zMzkweD03PUNPTkZJR19CT05ESU5HPXlcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9jb25maWcuczM5MHg6ODpDT05GSUdfQlBGX0pJVF9BTFdBWVNfT049eVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL2NvbmZpZy5zMzkweDo5OkNPTkZJR19CUEZfSklUX0RFRkFVTFRfT049eVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL2NvbmZpZy5zMzkweC0xMC1DT05GSUdfQlBGX1BSRUxPQUQ9eVxuLS1cbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9jb25maWcueDg2XzY0PTE4PUNPTkZJR19CT09UVElNRV9UUkFDSU5HPXlcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9jb25maWcueDg2XzY0OjE5OkNPTkZJR19CUEZfSklUX0FMV0FZU19PTj15XG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvY29uZmlnLng4Nl82NC0yMC1DT05GSUdfQlBGX1BSRUxPQUQ9eVxuLS1cbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2hpZC9jb25maWc9MT1DT05GSUdfQlBGX0VWRU5UUz15XG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9oaWQvY29uZmlnOjI6Q09ORklHX0JQRl9KSVRfQUxXQVlTX09OPXlcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2hpZC9jb25maWc6MzpDT05GSUdfQlBGX0pJVD15XG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9oaWQvY29uZmlnLTQtQ09ORklHX0JQRl9LUFJPQkVfT1ZFUlJJREU9eVxuLS1cbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL3Zzb2NrL2NvbmZpZz0zPUNPTkZJR19CUEZfU1lTQ0FMTD15XG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy92c29jay9jb25maWc6NDpDT05GSUdfQlBGX0pJVD15XG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy92c29jay9jb25maWctNS1DT05GSUdfSEFWRV9FQlBGX0pJVD15XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI2IDIwOjI2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIxNzMyCgkJCQkJCQlvdXRwdXQ6IDM3CgkJCQkJCQl0aG91Z2h0czogNTc4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkJQRiBKSVQgTWVtb3J5IEFsbG9jYXRpb24gUmV2aWV3KioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGFuZCB0aGUgcHJpbWFyeSBwb2ludCBvZiBpbnRlcmVzdCBpcyBgQ09ORklHX0JQRl9KSVRgLiBUaGF0JiMzOTtzIHRoZSBrZXkuIExldCYjMzk7cyBzZWUgd2hhdCYjMzk7cyBiZWluZyB0b3VjaGVkLiBJIG5lZWQgdG8gZm9jdXMgb24gdGhlc2Ugc3ltYm9sczogYGJwZl9qaXRfYWxsb2NfZXhlY2AsIGBicGZfaml0X2FsbG9jX2V4ZWNfcndgLCBgYnBmX3Byb2dfcGFja19hbGxvY2AsIGFuZCBgYnBmX2Rpc3BhdGNoZXJfY2hhbmdlX3Byb2dgLiBJIGFscmVhZHkga25vdyBgYWxsb2NfbmV3X3BhY2tgIGlzIHN0YXRpYywgc28gSSBjYW4gaWdub3JlIGl0IGZvciBteSBwdXJwb3Nlcy4KCk5vdywgbGV0IG1lIGNvbmZpcm06IGFyZSB0aG9zZSBjcml0aWNhbCBmdW5jdGlvbnMgZXhwb3J0ZWQ/IFllcywgYGJwZl9qaXRfYWxsb2NfZXhlY2AsIGBicGZfaml0X2FsbG9jX2V4ZWNfcndgLCBgYnBmX3Byb2dfcGFja19hbGxvY2AsIGFuZCBgYnBmX2Rpc3BhdGNoZXJfY2hhbmdlX3Byb2dgIGFyZSBhbGwgZ2xvYmFsIHN5bWJvbHMuIFRoYXQgbWVhbnMgdGhleSBhcmUgZGVmaW5pdGVseSB3aXRoaW4gcmVhY2guCgpUaGVyZWZvcmUsIEkmIzM5O2xsIGluY2x1ZGUgYWxsIG9mIHRob3NlIGluIG15IGFuYWx5c2lzOiBgYnBmX2ppdF9hbGxvY19leGVjYCwgYGJwZl9qaXRfYWxsb2NfZXhlY19yd2AsIGBicGZfcHJvZ19wYWNrX2FsbG9jYCwgYW5kIGBicGZfZGlzcGF0Y2hlcl9jaGFuZ2VfcHJvZ2AuCgpNeSByZWFzb25pbmcgaXMgdGhpczogVGhpcyBwYXRjaCBpcyBmdW5kYW1lbnRhbGx5IGFsdGVyaW5nIHRoZSBCUEYgSklUIG1lbW9yeSBhbGxvY2F0aW9uIHN0cmF0ZWd5LiBJdCYjMzk7cyBpbnRyb2R1Y2luZyBgYnBmX2ppdF9hbGxvY19leGVjX3J3YCwgYW5kIGl0JiMzOTtzIGNvbmRpdGlvbmFsbHkgbWFraW5nIG1lbW9yeSByZWFkLW9ubHkgYmFzZWQgb24gYGJwZl9qaXRfbWVtX2lzX3JveCgpYC4gRnVydGhlcm1vcmUsIEkgc2VlIHRoYXQgdGhlIHBhdGNoIGFsdGVycyBgYnBmX2Rpc3BhdGNoZXJfY2hhbmdlX3Byb2dgIHRvIGVtcGxveSBgdm1hbGxvY2AgaW5zdGVhZCBvZiB1c2luZyBgYnBmX2ppdF9hbGxvY19leGVjYC4gVGhhdCYjMzk7cyBhIHNpZ25pZmljYW50IGNoYW5nZS4gVGhlc2UgYXJlIGFsbCBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gQlBGIEpJVCBtZW1vcnkgbWFuYWdlbWVudC4gVGhleSBhcmUgKnJlYWNoYWJsZSogdGhyb3VnaCBCUEYgcHJvZ3JhbSBsb2FkaW5nIGFuZCBkaXNwYXRjaGVyIHVwZGF0ZXMsIHdoaWNoIG1lYW5zIHRoZXkmIzM5O3JlIGFic29sdXRlbHkgd29ydGggaW52ZXN0aWdhdGluZy4KClRoaXMgcGF0Y2ggZGVwZW5kcyBvbiBgQlBGX0pJVGAuIFRoYXQmIzM5O3Mgbm90IHN1cnByaXNpbmcuIEFuZCwgc2luY2UgdGhlIGNoYW5nZXMgYXJlIHNpZ25pZmljYW50IGFuZCBpbnZvbHZlIG1lbW9yeSBtYW5hZ2VtZW50LCB0aGlzIGlzIGRlZmluaXRlbHkgd29ydGggZnV6emluZy4KCkp1c3QgdG8gZG91YmxlIGNoZWNrLCBJIHdhbnQgdG8gY29uZmlybSBgYnBmX2Rpc3BhdGNoZXJfY2hhbmdlX3Byb2dgJiMzOTtzIGNvbnRleHQuIEkgY2FuIHNlZSBpdCBpcyBsb2NhdGVkIGluIGBrZXJuZWwvYnBmL2Rpc3BhdGNoZXIuY2AuIElzIGl0IGNvbnRyb2xsZWQgYnkgYENPTkZJR19CUEZfSklUYD8gQWgsIHllcywgbG9va2luZyBhdCB0aGUgYGtlcm5lbC9icGYvTWFrZWZpbGVgLCB0aGUgZGlzcGF0Y2hlciBjb2RlIGlzIGJ1aWx0IGlmIGBDT05GSUdfQlBGX0pJVGAgaXMgZW5hYmxlZC4KCkFuZCByZWdhcmRpbmcgYGJwZl9qaXRfYWxsb2NfZXhlY19yd2AsIEkgc2VlIGl0IGlzIGluIGBrZXJuZWwvYnBmL2NvcmUuY2AuIEhhbmcgb24uIEl0IHNlZW1zIGBrZXJuZWwvYnBmL2NvcmUuY2AgaXMgYWx3YXlzIGNvbXBpbGVkLiBIb3dldmVyLCBpcyBgYnBmX2ppdF9hbGxvY19leGVjX3J3YCAqdW5jb25kaXRpb25hbGx5KiBkZWZpbmVkIGluIGBrZXJuZWwvYnBmL2NvcmUuY2A/IE9rYXksIEkmIzM5O2xsIHF1aWNrbHkgbG9vayBhcm91bmQgbGluZSAxMDcwIGluIGBrZXJuZWwvYnBmL2NvcmUuY2AgdG8gYmUgY2VydGFpbi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjYgMjA6MjY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtrZXJuZWwvYnBmL2NvcmUuYyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDEwNjAsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMzAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7MTA2MDpcdFx0fVxuMTA2MTpcdFxuMTA2MjpcdFx0cmV0dXJuIDA7XG4xMDYzOlx0fVxuMTA2NDpcdFxuMTA2NTpcdHZvaWQgYnBmX2ppdF91bmNoYXJnZV9tb2RtZW0odTMyIHNpemUpXG4xMDY2Olx0e1xuMTA2NzpcdFx0YXRvbWljX2xvbmdfc3ViKHNpemUsIFx1MDAyNmJwZl9qaXRfY3VycmVudCk7XG4xMDY4Olx0fVxuMTA2OTpcdFxuMTA3MDpcdHZvaWQgKmJwZl9qaXRfYWxsb2NfZXhlYyh1bnNpZ25lZCBsb25nIHNpemUpXG4xMDcxOlx0e1xuMTA3MjpcdFx0cmV0dXJuIGV4ZWNtZW1fYWxsb2MoRVhFQ01FTV9CUEYsIHNpemUpO1xuMTA3MzpcdH1cbjEwNzQ6XHRcbjEwNzU6XHR2b2lkICpicGZfaml0X2FsbG9jX2V4ZWNfcncodW5zaWduZWQgbG9uZyBzaXplKVxuMTA3NjpcdHtcbjEwNzc6XHRcdHJldHVybiBleGVjbWVtX2FsbG9jX3J3KEVYRUNNRU1fQlBGLCBzaXplKTtcbjEwNzg6XHR9XG4xMDc5Olx0XG4xMDgwOlx0dm9pZCBicGZfaml0X2ZyZWVfZXhlYyh2b2lkICphZGRyKVxuMTA4MTpcdHtcbjEwODI6XHRcdGV4ZWNtZW1fZnJlZShhZGRyKTtcbjEwODM6XHR9XG4xMDg0Olx0XG4xMDg1Olx0c3RydWN0IGJwZl9iaW5hcnlfaGVhZGVyICpcbjEwODY6XHRicGZfaml0X2JpbmFyeV9hbGxvYyh1bnNpZ25lZCBpbnQgcHJvZ2xlbiwgdTggKippbWFnZV9wdHIsXG4xMDg3Olx0XHRcdCAgICAgdW5zaWduZWQgaW50IGFsaWdubWVudCxcbjEwODg6XHRcdFx0ICAgICBicGZfaml0X2ZpbGxfaG9sZV90IGJwZl9maWxsX2lsbF9pbnNucylcbjEwODk6XHR7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI2IDIwOjI2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIzMzg3CgkJCQkJCQlvdXRwdXQ6IDE4NgoJCQkJCQkJdGhvdWdodHM6IDc1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IGludGVycHJldGF0aW9uIG9mIHRoYXQuCgoqKkJQRiBKSVQgRGVwZW5kZW5jeSoqCgpSaWdodCwgc28sIEkgc2VlIHRoYXQgdGhpcyBpcyAqdW5jb25kaXRpb25hbGx5KiBkZWZpbmVkLCB3aGljaCBpcyBnb29kLiBUaGF0JiMzOTtzIGEgc29saWQgZm91bmRhdGlvbi4gU3BlY2lmaWNhbGx5LCB0aGUgZGVmaW5pdGlvbiBpcyBzaXR0aW5nIGluIGBrZXJuZWwvYnBmL2NvcmUuY2AuIE5vIHN1cnByaXNlcyB0aGVyZS4KCkhvd2V2ZXIsIGFuZCB0aGlzIGlzIHRoZSBjcnVjaWFsIHBvaW50LCBpdHMgcHJhY3RpY2FsIGFwcGxpY2F0aW9u4oCUaXRzIGFjdHVhbCAqdXNlKuKAlGhpbmdlcyBvbiB0aGUgQlBGIEpJVCBjb21waWxlci4gVGhlIGZ1bmN0aW9uIGBicGZfaml0X2FsbG9jX2V4ZWNfcndgIGlzIGtleSBoZXJlLiBJIG5lZWQgdGhhdCBCUEYgSklUIGZ1bmN0aW9uYWxpdHkuIExvb2tpbmcgYXQgdGhlIGNvZGUgcGF0aCwgdGhpcyBgYnBmX2ppdF9hbGxvY19leGVjX3J3YCBpcyBhY3R1YWxseSBjYWxsZWQgZnJvbSBgYXJjaC94ODYvbmV0L2JwZl9qaXRfY29tcC5jYC4gVGhhdCB0ZWxscyBtZSBJIG5lZWQgdG8gYmUgc3VyZSB0aGF0IHRoZSBKSVQgaXMgZW5hYmxlZCBhbmQgZnVuY3Rpb25hbCB3aXRoaW4gdGhhdCBhcmNoaXRlY3R1cmUsIHNwZWNpZmljYWxseS4KCk5vdyBJIGhhdmUgd2hhdCBJIG5lZWQsIEkmIzM5O20gcmVhZHkgdG8gcHJvY2VlZC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjYgMjA6MjY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0JQRl9KSVQmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDticGZfaml0X2FsbG9jX2V4ZWMmIzM0OywKICAgICYjMzQ7YnBmX2ppdF9hbGxvY19leGVjX3J3JiMzNDssCiAgICAmIzM0O2JwZl9wcm9nX3BhY2tfYWxsb2MmIzM0OywKICAgICYjMzQ7YnBmX2Rpc3BhdGNoZXJfY2hhbmdlX3Byb2cmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgQlBGIEpJVCBtZW1vcnkgYWxsb2NhdGlvbiBsb2dpYywgaW50cm9kdWNpbmcgYSBuZXcgYGJwZl9qaXRfYWxsb2NfZXhlY19yd2AgZnVuY3Rpb24gYW5kIGNvbmRpdGlvbmFsbHkgc2V0dGluZyBtZW1vcnkgdG8gUk9YIGJhc2VkIG9uIGBicGZfaml0X21lbV9pc19yb3goKWAuIEl0IGFsc28gY2hhbmdlcyBgYnBmX2Rpc3BhdGNoZXJfY2hhbmdlX3Byb2dgIHRvIHVzZSBgdm1hbGxvY2AgaW5zdGVhZCBvZiBgYnBmX2ppdF9hbGxvY19leGVjYC4gVGhlc2UgYXJlIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byBCUEYgSklUIG1lbW9yeSBtYW5hZ2VtZW50IGFuZCBhcmUgcmVhY2hhYmxlIHZpYSBCUEYgcHJvZ3JhbSBsb2FkaW5nIGFuZCBkaXNwYXRjaGVyIHVwZGF0ZXMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0JQRl9KSVQmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDticGZfaml0X2FsbG9jX2V4ZWMmIzM0OywKICAgICYjMzQ7YnBmX2ppdF9hbGxvY19leGVjX3J3JiMzNDssCiAgICAmIzM0O2JwZl9wcm9nX3BhY2tfYWxsb2MmIzM0OywKICAgICYjMzQ7YnBmX2Rpc3BhdGNoZXJfY2hhbmdlX3Byb2cmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgQlBGIEpJVCBtZW1vcnkgYWxsb2NhdGlvbiBsb2dpYywgaW50cm9kdWNpbmcgYSBuZXcgYGJwZl9qaXRfYWxsb2NfZXhlY19yd2AgZnVuY3Rpb24gYW5kIGNvbmRpdGlvbmFsbHkgc2V0dGluZyBtZW1vcnkgdG8gUk9YIGJhc2VkIG9uIGBicGZfaml0X21lbV9pc19yb3goKWAuIEl0IGFsc28gY2hhbmdlcyBgYnBmX2Rpc3BhdGNoZXJfY2hhbmdlX3Byb2dgIHRvIHVzZSBgdm1hbGxvY2AgaW5zdGVhZCBvZiBgYnBmX2ppdF9hbGxvY19leGVjYC4gVGhlc2UgYXJlIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byBCUEYgSklUIG1lbW9yeSBtYW5hZ2VtZW50IGFuZCBhcmUgcmVhY2hhYmxlIHZpYSBCUEYgcHJvZ3JhbSBsb2FkaW5nIGFuZCBkaXNwYXRjaGVyIHVwZGF0ZXMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wNi0yNlQyMDoyNDozNy4xNDI5Nzk0NloiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjExODgxMjEzNDQ0MSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJCUEZfSklUXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiYnBmX2ppdF9hbGxvY19leGVjXCIsXG4gICAgXCJicGZfaml0X2FsbG9jX2V4ZWNfcndcIixcbiAgICBcImJwZl9wcm9nX3BhY2tfYWxsb2NcIixcbiAgICBcImJwZl9kaXNwYXRjaGVyX2NoYW5nZV9wcm9nXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgQlBGIEpJVCBtZW1vcnkgYWxsb2NhdGlvbiBsb2dpYywgaW50cm9kdWNpbmcgYSBuZXcgYGJwZl9qaXRfYWxsb2NfZXhlY19yd2AgZnVuY3Rpb24gYW5kIGNvbmRpdGlvbmFsbHkgc2V0dGluZyBtZW1vcnkgdG8gUk9YIGJhc2VkIG9uIGBicGZfaml0X21lbV9pc19yb3goKWAuIEl0IGFsc28gY2hhbmdlcyBgYnBmX2Rpc3BhdGNoZXJfY2hhbmdlX3Byb2dgIHRvIHVzZSBgdm1hbGxvY2AgaW5zdGVhZCBvZiBgYnBmX2ppdF9hbGxvY19leGVjYC4gVGhlc2UgYXJlIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byBCUEYgSklUIG1lbW9yeSBtYW5hZ2VtZW50IGFuZCBhcmUgcmVhY2hhYmxlIHZpYSBCUEYgcHJvZ3JhbSBsb2FkaW5nIGFuZCBkaXNwYXRjaGVyIHVwZGF0ZXMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI2VDIwOjI0OjM3LjE0Mjk4NTYyWiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjozNTgwOTE4MTAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCA5OGIyNGNlN2UwYWEzYTk1NTkzNDUyMWRhOWM2NjE0Y2JiMmZmYTczXFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBGcmkgSnVuIDI2IDIwOjI0OjM2IDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL2FyY2gveDg2L21tL2luaXQuYyBiL2FyY2gveDg2L21tL2luaXQuY1xcbmluZGV4IGZiNjcyMTdmZGRjZDM3Li4wNzlmOGM3ZTllM2NkZSAxMDA2NDRcXG4tLS0gYS9hcmNoL3g4Ni9tbS9pbml0LmNcXG4rKysgYi9hcmNoL3g4Ni9tbS9pbml0LmNcXG5AQCAtMTEwNywxMCArMTEwNywxMCBAQCBzdHJ1Y3QgZXhlY21lbV9pbmZvIF9faW5pdCAqZXhlY21lbV9hcmNoX3NldHVwKHZvaWQpXFxuIFxcdFxcdFxcdFxcdC5hbGlnbm1lbnQgPSBNT0RVTEVfQUxJR04sXFxuIFxcdFxcdFxcdH0sXFxuIFxcdFxcdFxcdFtFWEVDTUVNX0JQRl0gPSB7XFxuLVxcdFxcdFxcdFxcdC5mbGFnc1xcdD0gRVhFQ01FTV9LQVNBTl9TSEFET1csXFxuK1xcdFxcdFxcdFxcdC5mbGFnc1xcdD0gZmxhZ3MsXFxuIFxcdFxcdFxcdFxcdC5zdGFydFxcdD0gc3RhcnQsXFxuIFxcdFxcdFxcdFxcdC5lbmRcXHQ9IE1PRFVMRVNfRU5ELFxcbi1cXHRcXHRcXHRcXHQucGdwcm90XFx0PSBQQUdFX0tFUk5FTCxcXG4rXFx0XFx0XFx0XFx0LnBncHJvdFxcdD0gcGdwcm90LFxcbiBcXHRcXHRcXHRcXHQuYWxpZ25tZW50ID0gTU9EVUxFX0FMSUdOLFxcbiBcXHRcXHRcXHR9LFxcbiBcXHRcXHRcXHRbRVhFQ01FTV9NT0RVTEVfREFUQV0gPSB7XFxuZGlmZiAtLWdpdCBhL2FyY2gveDg2L25ldC9icGZfaml0X2NvbXAuYyBiL2FyY2gveDg2L25ldC9icGZfaml0X2NvbXAuY1xcbmluZGV4IDA1NGUwNDNmZmNkMjJkLi5iYTU2MmQzYmYwMzFlOSAxMDA2NDRcXG4tLS0gYS9hcmNoL3g4Ni9uZXQvYnBmX2ppdF9jb21wLmNcXG4rKysgYi9hcmNoL3g4Ni9uZXQvYnBmX2ppdF9jb21wLmNcXG5AQCAtMzcwMywxMyArMzcwMywxMiBAQCBpbnQgYXJjaF9icGZfdHJhbXBvbGluZV9zaXplKGNvbnN0IHN0cnVjdCBidGZfZnVuY19tb2RlbCAqbSwgdTMyIGZsYWdzLFxcbiBcXHRpbnQgcmV0O1xcbiBcXG4gXFx0LyogQWxsb2NhdGUgYSB0ZW1wb3JhcnkgYnVmZmVyIGZvciBfX2FyY2hfcHJlcGFyZV9icGZfdHJhbXBvbGluZSgpLlxcbi1cXHQgKiBUaGlzIHdpbGwgTk9UIGNhdXNlIGZyYWdtZW50YXRpb24gaW4gZGlyZWN0IG1hcCwgYXMgd2UgZG8gbm90XFxuLVxcdCAqIGNhbGwgc2V0X21lbW9yeV8qKCkgb24gdGhpcyBidWZmZXIuXFxuIFxcdCAqXFxuIFxcdCAqIFdlIGNhbm5vdCB1c2Uga3ZtYWxsb2MgaGVyZSwgYmVjYXVzZSB3ZSBuZWVkIGltYWdlIHRvIGJlIGluXFxuIFxcdCAqIG1vZHVsZSBtZW1vcnkgcmFuZ2UuXFxuK1xcdCAqIFNpbmNlIGl0IG11c3QgYmUgd3JpdGFibGUgdXNlIGJwZl9qaXRfYWxsb2NfZXhlY19ydygpLlxcbiBcXHQgKi9cXG4tXFx0aW1hZ2UgPSBicGZfaml0X2FsbG9jX2V4ZWMoUEFHRV9TSVpFKTtcXG4rXFx0aW1hZ2UgPSBicGZfaml0X2FsbG9jX2V4ZWNfcncoUEFHRV9TSVpFKTtcXG4gXFx0aWYgKCFpbWFnZSlcXG4gXFx0XFx0cmV0dXJuIC1FTk9NRU07XFxuIFxcbmRpZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4L2ZpbHRlci5oIGIvaW5jbHVkZS9saW51eC9maWx0ZXIuaFxcbmluZGV4IDY3ZDMzN2VkZTkxYjhlLi43NzNiMTZmMDY1NzJjMCAxMDA2NDRcXG4tLS0gYS9pbmNsdWRlL2xpbnV4L2ZpbHRlci5oXFxuKysrIGIvaW5jbHVkZS9saW51eC9maWx0ZXIuaFxcbkBAIC0xMzIzLDYgKzEzMjMsNyBAQCBicGZfaml0X2JpbmFyeV9hbGxvYyh1bnNpZ25lZCBpbnQgcHJvZ2xlbiwgdTggKippbWFnZV9wdHIsXFxuIHZvaWQgYnBmX2ppdF9iaW5hcnlfZnJlZShzdHJ1Y3QgYnBmX2JpbmFyeV9oZWFkZXIgKmhkcik7XFxuIHU2NCBicGZfaml0X2FsbG9jX2V4ZWNfbGltaXQodm9pZCk7XFxuIHZvaWQgKmJwZl9qaXRfYWxsb2NfZXhlYyh1bnNpZ25lZCBsb25nIHNpemUpO1xcbit2b2lkICpicGZfaml0X2FsbG9jX2V4ZWNfcncodW5zaWduZWQgbG9uZyBzaXplKTtcXG4gdm9pZCBicGZfaml0X2ZyZWVfZXhlYyh2b2lkICphZGRyKTtcXG4gdm9pZCBicGZfaml0X2ZyZWUoc3RydWN0IGJwZl9wcm9nICpmcCk7XFxuIHN0cnVjdCBicGZfYmluYXJ5X2hlYWRlciAqXFxuZGlmZiAtLWdpdCBhL2tlcm5lbC9icGYvY29yZS5jIGIva2VybmVsL2JwZi9jb3JlLmNcXG5pbmRleCA2NDljY2U0MWUxM2YzYi4uNTUyODRiNWQwMjkyZGMgMTAwNjQ0XFxuLS0tIGEva2VybmVsL2JwZi9jb3JlLmNcXG4rKysgYi9rZXJuZWwvYnBmL2NvcmUuY1xcbkBAIC05MDQsNiArOTA0LDExIEBAIHN0YXRpYyBMSVNUX0hFQUQocGFja19saXN0KTtcXG4gXFxuICNkZWZpbmUgQlBGX1BST0dfQ0hVTktfQ09VTlQgKEJQRl9QUk9HX1BBQ0tfU0laRSAvIEJQRl9QUk9HX0NIVU5LX1NJWkUpXFxuIFxcbitzdGF0aWMgYm9vbCBicGZfaml0X21lbV9pc19yb3godm9pZClcXG4re1xcbitcXHRyZXR1cm4gZXhlY21lbV9pc19yb3goRVhFQ01FTV9CUEYpO1xcbit9XFxuK1xcbiBzdGF0aWMgc3RydWN0IGJwZl9wcm9nX3BhY2sgKmFsbG9jX25ld19wYWNrKGJwZl9qaXRfZmlsbF9ob2xlX3QgYnBmX2ZpbGxfaWxsX2luc25zKVxcbiB7XFxuIFxcdHN0cnVjdCBicGZfcHJvZ19wYWNrICpwYWNrO1xcbkBAIC05MTUsMTQgKzkyMCwxNiBAQCBzdGF0aWMgc3RydWN0IGJwZl9wcm9nX3BhY2sgKmFsbG9jX25ld19wYWNrKGJwZl9qaXRfZmlsbF9ob2xlX3QgYnBmX2ZpbGxfaWxsX2luc1xcbiBcXHRwYWNrLVxcdTAwM2VwdHIgPSBicGZfaml0X2FsbG9jX2V4ZWMoQlBGX1BST0dfUEFDS19TSVpFKTtcXG4gXFx0aWYgKCFwYWNrLVxcdTAwM2VwdHIpXFxuIFxcdFxcdGdvdG8gb3V0O1xcbi1cXHRicGZfZmlsbF9pbGxfaW5zbnMocGFjay1cXHUwMDNlcHRyLCBCUEZfUFJPR19QQUNLX1NJWkUpO1xcbiBcXHRiaXRtYXBfemVybyhwYWNrLVxcdTAwM2ViaXRtYXAsIEJQRl9QUk9HX1BBQ0tfU0laRSAvIEJQRl9QUk9HX0NIVU5LX1NJWkUpO1xcbiBcXG4tXFx0c2V0X3ZtX2ZsdXNoX3Jlc2V0X3Blcm1zKHBhY2stXFx1MDAzZXB0cik7XFxuLVxcdGVyciA9IHNldF9tZW1vcnlfcm94KCh1bnNpZ25lZCBsb25nKXBhY2stXFx1MDAzZXB0cixcXG4tXFx0XFx0XFx0ICAgICBCUEZfUFJPR19QQUNLX1NJWkUgLyBQQUdFX1NJWkUpO1xcbi1cXHRpZiAoZXJyKVxcbi1cXHRcXHRnb3RvIG91dDtcXG4rXFx0aWYgKCFicGZfaml0X21lbV9pc19yb3goKSkge1xcbitcXHRcXHRicGZfZmlsbF9pbGxfaW5zbnMocGFjay1cXHUwMDNlcHRyLCBCUEZfUFJPR19QQUNLX1NJWkUpO1xcbitcXHRcXHRzZXRfdm1fZmx1c2hfcmVzZXRfcGVybXMocGFjay1cXHUwMDNlcHRyKTtcXG4rXFx0XFx0ZXJyID0gc2V0X21lbW9yeV9yb3goKHVuc2lnbmVkIGxvbmcpcGFjay1cXHUwMDNlcHRyLFxcbitcXHRcXHRcXHRcXHQgICAgIEJQRl9QUk9HX1BBQ0tfU0laRSAvIFBBR0VfU0laRSk7XFxuK1xcdFxcdGlmIChlcnIpXFxuK1xcdFxcdFxcdGdvdG8gb3V0O1xcbitcXHR9XFxuIFxcdGxpc3RfYWRkX3RhaWwoXFx1MDAyNnBhY2stXFx1MDAzZWxpc3QsIFxcdTAwMjZwYWNrX2xpc3QpO1xcbiBcXHRyZXR1cm4gcGFjaztcXG4gXFxuQEAgLTk0Myw3ICs5NTAsNyBAQCB2b2lkICpicGZfcHJvZ19wYWNrX2FsbG9jKHUzMiBzaXplLCBicGZfaml0X2ZpbGxfaG9sZV90IGJwZl9maWxsX2lsbF9pbnNucylcXG4gXFx0aWYgKHNpemUgXFx1MDAzZSBCUEZfUFJPR19QQUNLX1NJWkUpIHtcXG4gXFx0XFx0c2l6ZSA9IHJvdW5kX3VwKHNpemUsIFBBR0VfU0laRSk7XFxuIFxcdFxcdHB0ciA9IGJwZl9qaXRfYWxsb2NfZXhlYyhzaXplKTtcXG4tXFx0XFx0aWYgKHB0cikge1xcbitcXHRcXHRpZiAocHRyIFxcdTAwMjZcXHUwMDI2ICFicGZfaml0X21lbV9pc19yb3goKSkge1xcbiBcXHRcXHRcXHRpbnQgZXJyO1xcbiBcXG4gXFx0XFx0XFx0YnBmX2ZpbGxfaWxsX2luc25zKHB0ciwgc2l6ZSk7XFxuQEAgLTEwNjAsMTIgKzEwNjcsMTcgQEAgdm9pZCBicGZfaml0X3VuY2hhcmdlX21vZG1lbSh1MzIgc2l6ZSlcXG4gXFx0YXRvbWljX2xvbmdfc3ViKHNpemUsIFxcdTAwMjZicGZfaml0X2N1cnJlbnQpO1xcbiB9XFxuIFxcbi12b2lkICpfX3dlYWsgYnBmX2ppdF9hbGxvY19leGVjKHVuc2lnbmVkIGxvbmcgc2l6ZSlcXG4rdm9pZCAqYnBmX2ppdF9hbGxvY19leGVjKHVuc2lnbmVkIGxvbmcgc2l6ZSlcXG4ge1xcbiBcXHRyZXR1cm4gZXhlY21lbV9hbGxvYyhFWEVDTUVNX0JQRiwgc2l6ZSk7XFxuIH1cXG4gXFxuLXZvaWQgX193ZWFrIGJwZl9qaXRfZnJlZV9leGVjKHZvaWQgKmFkZHIpXFxuK3ZvaWQgKmJwZl9qaXRfYWxsb2NfZXhlY19ydyh1bnNpZ25lZCBsb25nIHNpemUpXFxuK3tcXG4rXFx0cmV0dXJuIGV4ZWNtZW1fYWxsb2NfcncoRVhFQ01FTV9CUEYsIHNpemUpO1xcbit9XFxuK1xcbit2b2lkIGJwZl9qaXRfZnJlZV9leGVjKHZvaWQgKmFkZHIpXFxuIHtcXG4gXFx0ZXhlY21lbV9mcmVlKGFkZHIpO1xcbiB9XFxuZGlmZiAtLWdpdCBhL2tlcm5lbC9icGYvZGlzcGF0Y2hlci5jIGIva2VybmVsL2JwZi9kaXNwYXRjaGVyLmNcXG5pbmRleCBiNzdkYjc0MTNmOGM3MC4uYTdhNmEzNzVjZGQzMWQgMTAwNjQ0XFxuLS0tIGEva2VybmVsL2JwZi9kaXNwYXRjaGVyLmNcXG4rKysgYi9rZXJuZWwvYnBmL2Rpc3BhdGNoZXIuY1xcbkBAIC0xNDgsNyArMTQ4LDEwIEBAIHZvaWQgYnBmX2Rpc3BhdGNoZXJfY2hhbmdlX3Byb2coc3RydWN0IGJwZl9kaXNwYXRjaGVyICpkLCBzdHJ1Y3QgYnBmX3Byb2cgKmZyb20sXFxuIFxcdFxcdGQtXFx1MDAzZWltYWdlID0gYnBmX3Byb2dfcGFja19hbGxvYyhQQUdFX1NJWkUsIGJwZl9qaXRfZmlsbF9ob2xlX3dpdGhfemVybyk7XFxuIFxcdFxcdGlmICghZC1cXHUwMDNlaW1hZ2UpXFxuIFxcdFxcdFxcdGdvdG8gb3V0O1xcbi1cXHRcXHRkLVxcdTAwM2Vyd19pbWFnZSA9IGJwZl9qaXRfYWxsb2NfZXhlYyhQQUdFX1NJWkUpO1xcbitcXHRcXHQvKiBkLVxcdTAwM2Vyd19pbWFnZSBkb2Vzbid0IG5lZWQgdG8gYmUgaW4gbW9kdWxlIG1lbW9yeSByYW5nZSwgc28gd2VcXG4rXFx0XFx0ICogY2FuIHVzZSB2bWFsbG9jLlxcbitcXHRcXHQgKi9cXG4rXFx0XFx0ZC1cXHUwMDNlcndfaW1hZ2UgPSB2bWFsbG9jKFBBR0VfU0laRSk7XFxuIFxcdFxcdGlmICghZC1cXHUwMDNlcndfaW1hZ2UpIHtcXG4gXFx0XFx0XFx0YnBmX3Byb2dfcGFja19mcmVlKGQtXFx1MDAzZWltYWdlLCBQQUdFX1NJWkUpO1xcbiBcXHRcXHRcXHRkLVxcdTAwM2VpbWFnZSA9IE5VTEw7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI2VDIwOjI0OjM3LjUwMTY5MTg2WiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoxMTg0NTMzODc3MTEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiQlBGX0pJVFwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImJwZl9qaXRfYWxsb2NfZXhlY1wiLFxuICAgIFwiYnBmX2ppdF9hbGxvY19leGVjX3J3XCIsXG4gICAgXCJicGZfcHJvZ19wYWNrX2FsbG9jXCIsXG4gICAgXCJicGZfZGlzcGF0Y2hlcl9jaGFuZ2VfcHJvZ1wiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIEJQRiBKSVQgbWVtb3J5IGFsbG9jYXRpb24gbG9naWMsIGludHJvZHVjaW5nIGEgbmV3IGBicGZfaml0X2FsbG9jX2V4ZWNfcndgIGZ1bmN0aW9uIGFuZCBjb25kaXRpb25hbGx5IHNldHRpbmcgbWVtb3J5IHRvIFJPWCBiYXNlZCBvbiBgYnBmX2ppdF9tZW1faXNfcm94KClgLiBJdCBhbHNvIGNoYW5nZXMgYGJwZl9kaXNwYXRjaGVyX2NoYW5nZV9wcm9nYCB0byB1c2UgYHZtYWxsb2NgIGluc3RlYWQgb2YgYGJwZl9qaXRfYWxsb2NfZXhlY2AuIFRoZXNlIGFyZSBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gQlBGIEpJVCBtZW1vcnkgbWFuYWdlbWVudCBhbmQgYXJlIHJlYWNoYWJsZSB2aWEgQlBGIHByb2dyYW0gbG9hZGluZyBhbmQgZGlzcGF0Y2hlciB1cGRhdGVzLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lXG5pZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5XG51c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLlxuXG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOlxuLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLlxuLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy5cbi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LlxuLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsXG5ldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG5cbklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2hcbnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLlxuXG5XaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzpcbjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuXG4gICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy5cbjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLlxuICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuICAgRG8gbm90IGxpc3QgdG9vIGdlbmVyaWMgY29uZmlncyAod2UgYWxyZWFkeSBoYXZlIHRoZW0gZW5hYmxlZCkuIE9ubHkgbGlzdCB0aG9zZSB0aGF0XG4gICBzcGVjaWZpY2FsbHkgY292ZXIgdGhlIG1vZGlmaWVkIGNvZGUuIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncyBvdXRwdXQgYXJyYXksXG4gICBhbmQgRE8gTk9UIGFkZCBhICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IDk4YjI0Y2U3ZTBhYTNhOTU1OTM0NTIxZGE5YzY2MTRjYmIyZmZhNzNcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgRnJpIEp1biAyNiAyMDoyNDozNiAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2FyY2gveDg2L21tL2luaXQuYyBiL2FyY2gveDg2L21tL2luaXQuY1xuaW5kZXggZmI2NzIxN2ZkZGNkMzcuLjA3OWY4YzdlOWUzY2RlIDEwMDY0NFxuLS0tIGEvYXJjaC94ODYvbW0vaW5pdC5jXG4rKysgYi9hcmNoL3g4Ni9tbS9pbml0LmNcbkBAIC0xMTA3LDEwICsxMTA3LDEwIEBAIHN0cnVjdCBleGVjbWVtX2luZm8gX19pbml0ICpleGVjbWVtX2FyY2hfc2V0dXAodm9pZClcbiBcdFx0XHRcdC5hbGlnbm1lbnQgPSBNT0RVTEVfQUxJR04sXG4gXHRcdFx0fSxcbiBcdFx0XHRbRVhFQ01FTV9CUEZdID0ge1xuLVx0XHRcdFx0LmZsYWdzXHQ9IEVYRUNNRU1fS0FTQU5fU0hBRE9XLFxuK1x0XHRcdFx0LmZsYWdzXHQ9IGZsYWdzLFxuIFx0XHRcdFx0LnN0YXJ0XHQ9IHN0YXJ0LFxuIFx0XHRcdFx0LmVuZFx0PSBNT0RVTEVTX0VORCxcbi1cdFx0XHRcdC5wZ3Byb3RcdD0gUEFHRV9LRVJORUwsXG4rXHRcdFx0XHQucGdwcm90XHQ9IHBncHJvdCxcbiBcdFx0XHRcdC5hbGlnbm1lbnQgPSBNT0RVTEVfQUxJR04sXG4gXHRcdFx0fSxcbiBcdFx0XHRbRVhFQ01FTV9NT0RVTEVfREFUQV0gPSB7XG5kaWZmIC0tZ2l0IGEvYXJjaC94ODYvbmV0L2JwZl9qaXRfY29tcC5jIGIvYXJjaC94ODYvbmV0L2JwZl9qaXRfY29tcC5jXG5pbmRleCAwNTRlMDQzZmZjZDIyZC4uYmE1NjJkM2JmMDMxZTkgMTAwNjQ0XG4tLS0gYS9hcmNoL3g4Ni9uZXQvYnBmX2ppdF9jb21wLmNcbisrKyBiL2FyY2gveDg2L25ldC9icGZfaml0X2NvbXAuY1xuQEAgLTM3MDMsMTMgKzM3MDMsMTIgQEAgaW50IGFyY2hfYnBmX3RyYW1wb2xpbmVfc2l6ZShjb25zdCBzdHJ1Y3QgYnRmX2Z1bmNfbW9kZWwgKm0sIHUzMiBmbGFncyxcbiBcdGludCByZXQ7XG4gXG4gXHQvKiBBbGxvY2F0ZSBhIHRlbXBvcmFyeSBidWZmZXIgZm9yIF9fYXJjaF9wcmVwYXJlX2JwZl90cmFtcG9saW5lKCkuXG4tXHQgKiBUaGlzIHdpbGwgTk9UIGNhdXNlIGZyYWdtZW50YXRpb24gaW4gZGlyZWN0IG1hcCwgYXMgd2UgZG8gbm90XG4tXHQgKiBjYWxsIHNldF9tZW1vcnlfKigpIG9uIHRoaXMgYnVmZmVyLlxuIFx0ICpcbiBcdCAqIFdlIGNhbm5vdCB1c2Uga3ZtYWxsb2MgaGVyZSwgYmVjYXVzZSB3ZSBuZWVkIGltYWdlIHRvIGJlIGluXG4gXHQgKiBtb2R1bGUgbWVtb3J5IHJhbmdlLlxuK1x0ICogU2luY2UgaXQgbXVzdCBiZSB3cml0YWJsZSB1c2UgYnBmX2ppdF9hbGxvY19leGVjX3J3KCkuXG4gXHQgKi9cbi1cdGltYWdlID0gYnBmX2ppdF9hbGxvY19leGVjKFBBR0VfU0laRSk7XG4rXHRpbWFnZSA9IGJwZl9qaXRfYWxsb2NfZXhlY19ydyhQQUdFX1NJWkUpO1xuIFx0aWYgKCFpbWFnZSlcbiBcdFx0cmV0dXJuIC1FTk9NRU07XG4gXG5kaWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51eC9maWx0ZXIuaCBiL2luY2x1ZGUvbGludXgvZmlsdGVyLmhcbmluZGV4IDY3ZDMzN2VkZTkxYjhlLi43NzNiMTZmMDY1NzJjMCAxMDA2NDRcbi0tLSBhL2luY2x1ZGUvbGludXgvZmlsdGVyLmhcbisrKyBiL2luY2x1ZGUvbGludXgvZmlsdGVyLmhcbkBAIC0xMzIzLDYgKzEzMjMsNyBAQCBicGZfaml0X2JpbmFyeV9hbGxvYyh1bnNpZ25lZCBpbnQgcHJvZ2xlbiwgdTggKippbWFnZV9wdHIsXG4gdm9pZCBicGZfaml0X2JpbmFyeV9mcmVlKHN0cnVjdCBicGZfYmluYXJ5X2hlYWRlciAqaGRyKTtcbiB1NjQgYnBmX2ppdF9hbGxvY19leGVjX2xpbWl0KHZvaWQpO1xuIHZvaWQgKmJwZl9qaXRfYWxsb2NfZXhlYyh1bnNpZ25lZCBsb25nIHNpemUpO1xuK3ZvaWQgKmJwZl9qaXRfYWxsb2NfZXhlY19ydyh1bnNpZ25lZCBsb25nIHNpemUpO1xuIHZvaWQgYnBmX2ppdF9mcmVlX2V4ZWModm9pZCAqYWRkcik7XG4gdm9pZCBicGZfaml0X2ZyZWUoc3RydWN0IGJwZl9wcm9nICpmcCk7XG4gc3RydWN0IGJwZl9iaW5hcnlfaGVhZGVyICpcbmRpZmYgLS1naXQgYS9rZXJuZWwvYnBmL2NvcmUuYyBiL2tlcm5lbC9icGYvY29yZS5jXG5pbmRleCA2NDljY2U0MWUxM2YzYi4uNTUyODRiNWQwMjkyZGMgMTAwNjQ0XG4tLS0gYS9rZXJuZWwvYnBmL2NvcmUuY1xuKysrIGIva2VybmVsL2JwZi9jb3JlLmNcbkBAIC05MDQsNiArOTA0LDExIEBAIHN0YXRpYyBMSVNUX0hFQUQocGFja19saXN0KTtcbiBcbiAjZGVmaW5lIEJQRl9QUk9HX0NIVU5LX0NPVU5UIChCUEZfUFJPR19QQUNLX1NJWkUgLyBCUEZfUFJPR19DSFVOS19TSVpFKVxuIFxuK3N0YXRpYyBib29sIGJwZl9qaXRfbWVtX2lzX3JveCh2b2lkKVxuK3tcbitcdHJldHVybiBleGVjbWVtX2lzX3JveChFWEVDTUVNX0JQRik7XG4rfVxuK1xuIHN0YXRpYyBzdHJ1Y3QgYnBmX3Byb2dfcGFjayAqYWxsb2NfbmV3X3BhY2soYnBmX2ppdF9maWxsX2hvbGVfdCBicGZfZmlsbF9pbGxfaW5zbnMpXG4ge1xuIFx0c3RydWN0IGJwZl9wcm9nX3BhY2sgKnBhY2s7XG5AQCAtOTE1LDE0ICs5MjAsMTYgQEAgc3RhdGljIHN0cnVjdCBicGZfcHJvZ19wYWNrICphbGxvY19uZXdfcGFjayhicGZfaml0X2ZpbGxfaG9sZV90IGJwZl9maWxsX2lsbF9pbnNcbiBcdHBhY2stXHUwMDNlcHRyID0gYnBmX2ppdF9hbGxvY19leGVjKEJQRl9QUk9HX1BBQ0tfU0laRSk7XG4gXHRpZiAoIXBhY2stXHUwMDNlcHRyKVxuIFx0XHRnb3RvIG91dDtcbi1cdGJwZl9maWxsX2lsbF9pbnNucyhwYWNrLVx1MDAzZXB0ciwgQlBGX1BST0dfUEFDS19TSVpFKTtcbiBcdGJpdG1hcF96ZXJvKHBhY2stXHUwMDNlYml0bWFwLCBCUEZfUFJPR19QQUNLX1NJWkUgLyBCUEZfUFJPR19DSFVOS19TSVpFKTtcbiBcbi1cdHNldF92bV9mbHVzaF9yZXNldF9wZXJtcyhwYWNrLVx1MDAzZXB0cik7XG4tXHRlcnIgPSBzZXRfbWVtb3J5X3JveCgodW5zaWduZWQgbG9uZylwYWNrLVx1MDAzZXB0cixcbi1cdFx0XHQgICAgIEJQRl9QUk9HX1BBQ0tfU0laRSAvIFBBR0VfU0laRSk7XG4tXHRpZiAoZXJyKVxuLVx0XHRnb3RvIG91dDtcbitcdGlmICghYnBmX2ppdF9tZW1faXNfcm94KCkpIHtcbitcdFx0YnBmX2ZpbGxfaWxsX2luc25zKHBhY2stXHUwMDNlcHRyLCBCUEZfUFJPR19QQUNLX1NJWkUpO1xuK1x0XHRzZXRfdm1fZmx1c2hfcmVzZXRfcGVybXMocGFjay1cdTAwM2VwdHIpO1xuK1x0XHRlcnIgPSBzZXRfbWVtb3J5X3JveCgodW5zaWduZWQgbG9uZylwYWNrLVx1MDAzZXB0cixcbitcdFx0XHRcdCAgICAgQlBGX1BST0dfUEFDS19TSVpFIC8gUEFHRV9TSVpFKTtcbitcdFx0aWYgKGVycilcbitcdFx0XHRnb3RvIG91dDtcbitcdH1cbiBcdGxpc3RfYWRkX3RhaWwoXHUwMDI2cGFjay1cdTAwM2VsaXN0LCBcdTAwMjZwYWNrX2xpc3QpO1xuIFx0cmV0dXJuIHBhY2s7XG4gXG5AQCAtOTQzLDcgKzk1MCw3IEBAIHZvaWQgKmJwZl9wcm9nX3BhY2tfYWxsb2ModTMyIHNpemUsIGJwZl9qaXRfZmlsbF9ob2xlX3QgYnBmX2ZpbGxfaWxsX2luc25zKVxuIFx0aWYgKHNpemUgXHUwMDNlIEJQRl9QUk9HX1BBQ0tfU0laRSkge1xuIFx0XHRzaXplID0gcm91bmRfdXAoc2l6ZSwgUEFHRV9TSVpFKTtcbiBcdFx0cHRyID0gYnBmX2ppdF9hbGxvY19leGVjKHNpemUpO1xuLVx0XHRpZiAocHRyKSB7XG4rXHRcdGlmIChwdHIgXHUwMDI2XHUwMDI2ICFicGZfaml0X21lbV9pc19yb3goKSkge1xuIFx0XHRcdGludCBlcnI7XG4gXG4gXHRcdFx0YnBmX2ZpbGxfaWxsX2luc25zKHB0ciwgc2l6ZSk7XG5AQCAtMTA2MCwxMiArMTA2NywxNyBAQCB2b2lkIGJwZl9qaXRfdW5jaGFyZ2VfbW9kbWVtKHUzMiBzaXplKVxuIFx0YXRvbWljX2xvbmdfc3ViKHNpemUsIFx1MDAyNmJwZl9qaXRfY3VycmVudCk7XG4gfVxuIFxuLXZvaWQgKl9fd2VhayBicGZfaml0X2FsbG9jX2V4ZWModW5zaWduZWQgbG9uZyBzaXplKVxuK3ZvaWQgKmJwZl9qaXRfYWxsb2NfZXhlYyh1bnNpZ25lZCBsb25nIHNpemUpXG4ge1xuIFx0cmV0dXJuIGV4ZWNtZW1fYWxsb2MoRVhFQ01FTV9CUEYsIHNpemUpO1xuIH1cbiBcbi12b2lkIF9fd2VhayBicGZfaml0X2ZyZWVfZXhlYyh2b2lkICphZGRyKVxuK3ZvaWQgKmJwZl9qaXRfYWxsb2NfZXhlY19ydyh1bnNpZ25lZCBsb25nIHNpemUpXG4re1xuK1x0cmV0dXJuIGV4ZWNtZW1fYWxsb2NfcncoRVhFQ01FTV9CUEYsIHNpemUpO1xuK31cbitcbit2b2lkIGJwZl9qaXRfZnJlZV9leGVjKHZvaWQgKmFkZHIpXG4ge1xuIFx0ZXhlY21lbV9mcmVlKGFkZHIpO1xuIH1cbmRpZmYgLS1naXQgYS9rZXJuZWwvYnBmL2Rpc3BhdGNoZXIuYyBiL2tlcm5lbC9icGYvZGlzcGF0Y2hlci5jXG5pbmRleCBiNzdkYjc0MTNmOGM3MC4uYTdhNmEzNzVjZGQzMWQgMTAwNjQ0XG4tLS0gYS9rZXJuZWwvYnBmL2Rpc3BhdGNoZXIuY1xuKysrIGIva2VybmVsL2JwZi9kaXNwYXRjaGVyLmNcbkBAIC0xNDgsNyArMTQ4LDEwIEBAIHZvaWQgYnBmX2Rpc3BhdGNoZXJfY2hhbmdlX3Byb2coc3RydWN0IGJwZl9kaXNwYXRjaGVyICpkLCBzdHJ1Y3QgYnBmX3Byb2cgKmZyb20sXG4gXHRcdGQtXHUwMDNlaW1hZ2UgPSBicGZfcHJvZ19wYWNrX2FsbG9jKFBBR0VfU0laRSwgYnBmX2ppdF9maWxsX2hvbGVfd2l0aF96ZXJvKTtcbiBcdFx0aWYgKCFkLVx1MDAzZWltYWdlKVxuIFx0XHRcdGdvdG8gb3V0O1xuLVx0XHRkLVx1MDAzZXJ3X2ltYWdlID0gYnBmX2ppdF9hbGxvY19leGVjKFBBR0VfU0laRSk7XG4rXHRcdC8qIGQtXHUwMDNlcndfaW1hZ2UgZG9lc24ndCBuZWVkIHRvIGJlIGluIG1vZHVsZSBtZW1vcnkgcmFuZ2UsIHNvIHdlXG4rXHRcdCAqIGNhbiB1c2Ugdm1hbGxvYy5cbitcdFx0ICovXG4rXHRcdGQtXHUwMDNlcndfaW1hZ2UgPSB2bWFsbG9jKFBBR0VfU0laRSk7XG4gXHRcdGlmICghZC1cdTAwM2Vyd19pbWFnZSkge1xuIFx0XHRcdGJwZl9wcm9nX3BhY2tfZnJlZShkLVx1MDAzZWltYWdlLCBQQUdFX1NJWkUpO1xuIFx0XHRcdGQtXHUwMDNlaW1hZ2UgPSBOVUxMO1xuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjZUMjA6MjQ6MzcuNTAxNjkzMzFaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo2MDY4NTc2NDEyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkJQRiBKSVQgTWVtb3J5IEFsbG9jYXRpb24gUGF0Y2g6IEZ1enppbmcgRm9jdXMqKlxuXG5Pa2F5LCBzbyB3ZSd2ZSBnb3QgYSBwYXRjaCBzZXJpZXMgaGVyZSB0aGF0J3MgdHdlYWtpbmcgQlBGIEpJVCBtZW1vcnkgYWxsb2NhdGlvbi4gU2VlbXMgbGlrZSBhIHN0cmFpZ2h0Zm9yd2FyZCwgZnVuY3Rpb25hbCBjaGFuZ2Ug4oCTIGFsd2F5cyB3b3J0aCBhIGNsb3NlciBsb29rIGZyb20gYSBmdXp6aW5nIHBlcnNwZWN0aXZlLCBlc3BlY2lhbGx5IHdoZW4gaXQgaW52b2x2ZXMgbWVtb3J5LiBMZXQncyBzZWUgd2hhdCdzIGFjdHVhbGx5IGJlZW4gbW9kaWZpZWQuIFRoZSBjaGFuZ2VzIHRvdWNoIGBhcmNoL3g4Ni9tbS9pbml0LmNgIGFkanVzdGluZyBgRVhFQ01FTV9CUEZgIGZsYWdzLCBhbmQgYGFyY2gveDg2L25ldC9icGZfaml0X2NvbXAuY2AsIGFuZCB0aGV5IGludHJvZHVjZSBhIG5ldyBhbGxvY2F0aW9uIGZ1bmN0aW9uIGNhbGxlZCBgYnBmX2ppdF9hbGxvY19leGVjX3J3YC4gV2UgYWxzbyBoYXZlIHNvbWUgYWRkaXRpb25zIHRvIGBpbmNsdWRlL2xpbnV4L2ZpbHRlci5oYCBhbmQgY2hhbmdlcyBpbiBga2VybmVsL2JwZi9jb3JlLmNgIGluY2x1ZGluZyBhIGNhbGwgdG8gYGJwZl9qaXRfbWVtX2lzX3JveCgpYC4gSXQgYWxzbyBhcHBlYXJzIHdlJ3JlIHVzaW5nIGB2bWFsbG9jYCBpbnN0ZWFkIG9mIGBicGZfaml0X2FsbG9jX2V4ZWNgIGZvciBgZC1cdTAwM2Vyd19pbWFnZWAgaW4gYGtlcm5lbC9icGYvZGlzcGF0Y2hlci5jYC5cblxuQWxyaWdodCwgbGV0J3MgZmluZCB0aGUgaGlnaC12YWx1ZSB0YXJnZXRzIGZvciBmdXp6aW5nLiBXZSBoYXZlIHNldmVyYWwgZnVuY3Rpb24gbW9kaWZpY2F0aW9uczogYGV4ZWNtZW1fYXJjaF9zZXR1cGAgKHNlZW1zIGxlc3MgaW50ZXJlc3RpbmcgZm9yIGRpcmVjdCBmdXp6aW5nLCBpdCdzIGFuIGluaXRpYWxpemF0aW9uIGZ1bmN0aW9uKSwgYGFyY2hfYnBmX3RyYW1wb2xpbmVfc2l6ZWAsIGBhbGxvY19uZXdfcGFja2AsIGBicGZfcHJvZ19wYWNrX2FsbG9jYCwgYW5kIHRoZSBhbGxvY2F0aW9uIGZ1bmN0aW9uczogYGJwZl9qaXRfYWxsb2NfZXhlY2AsIGBicGZfaml0X2FsbG9jX2V4ZWNfcndgLCBhbmQgdGhlIGZyZWUgZnVuY3Rpb24gYGJwZl9qaXRfZnJlZV9leGVjYC4gRmluYWxseSBgYnBmX2Rpc3BhdGNoZXJfY2hhbmdlX3Byb2dgIGFsc28gc2VlbXMgcmVsZXZhbnQuXG5cbk9rYXksIGxldCdzIHplcm8gaW4gb24gcG90ZW50aWFsIGZ1enppbmcgdGFyZ2V0cy4gSG1tLCBJIHRoaW5rIGBhcmNoX2JwZl90cmFtcG9saW5lX3NpemVgLCBgYnBmX3Byb2dfcGFja19hbGxvY2AsIGFuZCBgYnBmX2Rpc3BhdGNoZXJfY2hhbmdlX3Byb2dgIGFyZSBnb29kIGNhbmRpZGF0ZXMuIEhvd2V2ZXIsIGBicGZfaml0X2FsbG9jX2V4ZWNgIGFuZCBlc3BlY2lhbGx5IGBicGZfaml0X2FsbG9jX2V4ZWNfcndgIGxvb2sgbGlrZSB0aGUgKnJlYWxseSoganVpY3kgdGFyZ2V0cywgZ2l2ZW4gdGhlIG1lbW9yeSBhbGxvY2F0aW9uIGFzcGVjdC4gSSBzaG91bGQgcHJvYmFibHkgc3RhcnQgYnkgY2hlY2tpbmcgYGFyY2hfYnBmX3RyYW1wb2xpbmVfc2l6ZWAsIHRvIHNlZSBob3cgdGhhdCBmdW5jdGlvbiB3b3Jrcy5cblxuXG4iLCJJbnB1dFRva2VucyI6MzY4NSwiT3V0cHV0VG9rZW5zIjoyMywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjQzMiwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI2VDIwOjI0OjQzLjU3MDI3MTQ4MloiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxODU3MTAyMTg4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImFyY2hfYnBmX3RyYW1wb2xpbmVfc2l6ZVwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJhcmNoL2FybTY0L25ldC9icGZfaml0X2NvbXAuYz0yODQ0PWJvb2wgYnBmX2ppdF9zdXBwb3J0c19mc2Vzc2lvbih2b2lkKVxcbi0tXFxuYXJjaC9hcm02NC9uZXQvYnBmX2ppdF9jb21wLmMtMjg0OC1cXG5hcmNoL2FybTY0L25ldC9icGZfaml0X2NvbXAuYzoyODQ5OmludCBhcmNoX2JwZl90cmFtcG9saW5lX3NpemUoY29uc3Qgc3RydWN0IGJ0Zl9mdW5jX21vZGVsICptLCB1MzIgZmxhZ3MsXFxuYXJjaC9hcm02NC9uZXQvYnBmX2ppdF9jb21wLmMtMjg1MC1cXHRcXHRcXHQgICAgIHN0cnVjdCBicGZfdHJhbXBfbm9kZXMgKnRub2Rlcywgdm9pZCAqZnVuY19hZGRyKVxcbi0tXFxuYXJjaC9sb29uZ2FyY2gvbmV0L2JwZl9qaXQuYz0yMTE2PWludCBhcmNoX3ByZXBhcmVfYnBmX3RyYW1wb2xpbmUoc3RydWN0IGJwZl90cmFtcF9pbWFnZSAqaW0sIHZvaWQgKnJvX2ltYWdlLFxcbi0tXFxuYXJjaC9sb29uZ2FyY2gvbmV0L2JwZl9qaXQuYy0yMTUzLVxcbmFyY2gvbG9vbmdhcmNoL25ldC9icGZfaml0LmM6MjE1NDppbnQgYXJjaF9icGZfdHJhbXBvbGluZV9zaXplKGNvbnN0IHN0cnVjdCBidGZfZnVuY19tb2RlbCAqbSwgdTMyIGZsYWdzLFxcbmFyY2gvbG9vbmdhcmNoL25ldC9icGZfaml0LmMtMjE1NS1cXHRcXHRcXHQgICAgIHN0cnVjdCBicGZfdHJhbXBfbm9kZXMgKnRub2Rlcywgdm9pZCAqZnVuY19hZGRyKVxcbi0tXFxuYXJjaC9wb3dlcnBjL25ldC9icGZfaml0X2NvbXAuYz04MTI9c3RhdGljIGludCBfX2FyY2hfcHJlcGFyZV9icGZfdHJhbXBvbGluZShzdHJ1Y3QgYnBmX3RyYW1wX2ltYWdlICppbSwgdm9pZCAqcndfaW1hZ2UsXFxuLS1cXG5hcmNoL3Bvd2VycGMvbmV0L2JwZl9qaXRfY29tcC5jLTExOTEtXFxuYXJjaC9wb3dlcnBjL25ldC9icGZfaml0X2NvbXAuYzoxMTkyOmludCBhcmNoX2JwZl90cmFtcG9saW5lX3NpemUoY29uc3Qgc3RydWN0IGJ0Zl9mdW5jX21vZGVsICptLCB1MzIgZmxhZ3MsXFxuYXJjaC9wb3dlcnBjL25ldC9icGZfaml0X2NvbXAuYy0xMTkzLVxcdFxcdFxcdCAgICAgc3RydWN0IGJwZl90cmFtcF9ub2RlcyAqdG5vZGVzLCB2b2lkICpmdW5jX2FkZHIpXFxuLS1cXG5hcmNoL3Jpc2N2L25ldC9icGZfaml0X2NvbXA2NC5jPTEwMjI9c3RhdGljIGludCBfX2FyY2hfcHJlcGFyZV9icGZfdHJhbXBvbGluZShzdHJ1Y3QgYnBmX3RyYW1wX2ltYWdlICppbSxcXG4tLVxcbmFyY2gvcmlzY3YvbmV0L2JwZl9qaXRfY29tcDY0LmMtMTMwNi1cXG5hcmNoL3Jpc2N2L25ldC9icGZfaml0X2NvbXA2NC5jOjEzMDc6aW50IGFyY2hfYnBmX3RyYW1wb2xpbmVfc2l6ZShjb25zdCBzdHJ1Y3QgYnRmX2Z1bmNfbW9kZWwgKm0sIHUzMiBmbGFncyxcXG5hcmNoL3Jpc2N2L25ldC9icGZfaml0X2NvbXA2NC5jLTEzMDgtXFx0XFx0XFx0ICAgICBzdHJ1Y3QgYnBmX3RyYW1wX25vZGVzICp0bm9kZXMsIHZvaWQgKmZ1bmNfYWRkcilcXG4tLVxcbmFyY2gvczM5MC9uZXQvYnBmX2ppdF9jb21wLmM9MjY1MD1zdGF0aWMgaW50IF9fYXJjaF9wcmVwYXJlX2JwZl90cmFtcG9saW5lKHN0cnVjdCBicGZfdHJhbXBfaW1hZ2UgKmltLFxcbi0tXFxuYXJjaC9zMzkwL25ldC9icGZfaml0X2NvbXAuYy0yOTY1LVxcbmFyY2gvczM5MC9uZXQvYnBmX2ppdF9jb21wLmM6Mjk2NjppbnQgYXJjaF9icGZfdHJhbXBvbGluZV9zaXplKGNvbnN0IHN0cnVjdCBidGZfZnVuY19tb2RlbCAqbSwgdTMyIGZsYWdzLFxcbmFyY2gvczM5MC9uZXQvYnBmX2ppdF9jb21wLmMtMjk2Ny1cXHRcXHRcXHQgICAgIHN0cnVjdCBicGZfdHJhbXBfbm9kZXMgKnRub2Rlcywgdm9pZCAqb3JpZ19jYWxsKVxcbi0tXFxuYXJjaC94ODYvbmV0L2JwZl9qaXRfY29tcC5jPTM2Njk9aW50IGFyY2hfcHJlcGFyZV9icGZfdHJhbXBvbGluZShzdHJ1Y3QgYnBmX3RyYW1wX2ltYWdlICppbSwgdm9pZCAqaW1hZ2UsIHZvaWQgKmltYWdlX2VuZCxcXG4tLVxcbmFyY2gveDg2L25ldC9icGZfaml0X2NvbXAuYy0zNjk3LVxcbmFyY2gveDg2L25ldC9icGZfaml0X2NvbXAuYzozNjk4OmludCBhcmNoX2JwZl90cmFtcG9saW5lX3NpemUoY29uc3Qgc3RydWN0IGJ0Zl9mdW5jX21vZGVsICptLCB1MzIgZmxhZ3MsXFxuYXJjaC94ODYvbmV0L2JwZl9qaXRfY29tcC5jLTM2OTktXFx0XFx0XFx0ICAgICBzdHJ1Y3QgYnBmX3RyYW1wX25vZGVzICp0bm9kZXMsIHZvaWQgKmZ1bmNfYWRkcilcXG4tLVxcbmluY2x1ZGUvbGludXgvYnBmLmg9MTMxOT1pbnQgX19tdXN0X2NoZWNrIGFyY2hfcHJvdGVjdF9icGZfdHJhbXBvbGluZSh2b2lkICppbWFnZSwgdW5zaWduZWQgaW50IHNpemUpO1xcbmluY2x1ZGUvbGludXgvYnBmLmg6MTMyMDppbnQgYXJjaF9icGZfdHJhbXBvbGluZV9zaXplKGNvbnN0IHN0cnVjdCBidGZfZnVuY19tb2RlbCAqbSwgdTMyIGZsYWdzLFxcbmluY2x1ZGUvbGludXgvYnBmLmgtMTMyMS1cXHRcXHRcXHQgICAgIHN0cnVjdCBicGZfdHJhbXBfbm9kZXMgKnRub2Rlcywgdm9pZCAqZnVuY19hZGRyKTtcXG4tLVxcbmtlcm5lbC9icGYvYnBmX3N0cnVjdF9vcHMuYz01OTc9aW50IGJwZl9zdHJ1Y3Rfb3BzX3ByZXBhcmVfdHJhbXBvbGluZShzdHJ1Y3QgYnBmX3RyYW1wX25vZGVzICp0bm9kZXMsXFxuLS1cXG5rZXJuZWwvYnBmL2JwZl9zdHJ1Y3Rfb3BzLmMtNjEzLVxcbmtlcm5lbC9icGYvYnBmX3N0cnVjdF9vcHMuYzo2MTQ6XFx0c2l6ZSA9IGFyY2hfYnBmX3RyYW1wb2xpbmVfc2l6ZShtb2RlbCwgZmxhZ3MsIHRub2Rlcywgc3R1Yl9mdW5jKTtcXG5rZXJuZWwvYnBmL2JwZl9zdHJ1Y3Rfb3BzLmMtNjE1LVxcdGlmIChzaXplIFxcdTAwM2M9IDApXFxuLS1cXG5rZXJuZWwvYnBmL3RyYW1wb2xpbmUuYz02NzM9c3RhdGljIGludCBicGZfdHJhbXBvbGluZV91cGRhdGUoc3RydWN0IGJwZl90cmFtcG9saW5lICp0ciwgYm9vbCBsb2NrX2RpcmVjdF9tdXRleCxcXG4tLVxcbmtlcm5lbC9icGYvdHJhbXBvbGluZS5jLTcyNC1cXG5rZXJuZWwvYnBmL3RyYW1wb2xpbmUuYzo3MjU6XFx0c2l6ZSA9IGFyY2hfYnBmX3RyYW1wb2xpbmVfc2l6ZShcXHUwMDI2dHItXFx1MDAzZWZ1bmMubW9kZWwsIHRyLVxcdTAwM2VmbGFncyxcXG5rZXJuZWwvYnBmL3RyYW1wb2xpbmUuYy03MjYtXFx0XFx0XFx0XFx0XFx0dG5vZGVzLCB0ci1cXHUwMDNlZnVuYy5hZGRyKTtcXG4tLVxcbmtlcm5lbC9icGYvdHJhbXBvbGluZS5jPTE0NjE9aW50IF9fd2VhayBhcmNoX3Byb3RlY3RfYnBmX3RyYW1wb2xpbmUodm9pZCAqaW1hZ2UsIHVuc2lnbmVkIGludCBzaXplKVxcbi0tXFxua2VybmVsL2JwZi90cmFtcG9saW5lLmMtMTQ2Ni1cXG5rZXJuZWwvYnBmL3RyYW1wb2xpbmUuYzoxNDY3OmludCBfX3dlYWsgYXJjaF9icGZfdHJhbXBvbGluZV9zaXplKGNvbnN0IHN0cnVjdCBidGZfZnVuY19tb2RlbCAqbSwgdTMyIGZsYWdzLFxcbmtlcm5lbC9icGYvdHJhbXBvbGluZS5jLTE0NjgtXFx0XFx0XFx0XFx0ICAgIHN0cnVjdCBicGZfdHJhbXBfbm9kZXMgKnRub2Rlcywgdm9pZCAqZnVuY19hZGRyKVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0yNlQyMDoyNDo0NS40MjczNzgzM1oiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM1OTA0OTk3MzYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6XG5cbioqQW5hbHl6aW5nIGBicGZfcHJvZ19wYWNrX2FsbG9jYCoqXG5cbkFscmlnaHQsIGxldCdzIGRpdmUgaW50byB0aGlzIGBicGZfcHJvZ19wYWNrX2FsbG9jYCBmdW5jdGlvbi4gTXkgaW5pdGlhbCB0aG91Z2h0IHByb2Nlc3MgcmV2b2x2ZXMgYXJvdW5kIHVuZGVyc3RhbmRpbmcgaXRzIGNvcmUgcmVzcG9uc2liaWxpdHkgd2l0aGluIHRoZSBCUEYgZWNvc3lzdGVtLiBJIGltbWVkaWF0ZWx5IG5lZWQgdG8gY29uc2lkZXIgaXRzIHBvc2l0aW9uIGluIHRoZSBvdmVyYWxsIGFsbG9jYXRpb24gc3RyYXRlZ3kgZm9yIEJQRiBwcm9ncmFtcy4gSXMgaXQgYSBjZW50cmFsIGFsbG9jYXRvciwgb3IgaXMgaXQgYSBsYXllciBvbiB0b3Agb2YgYSBtb3JlIGdlbmVyYWwgbWVtb3J5IG1hbmFnZW1lbnQgc2NoZW1lPyBUaGUgbmFtZSBpdHNlbGYgc3VnZ2VzdHMgaXQncyByZWxhdGVkIHRvIFwicGFja2luZyxcIiBzbyBJJ20gZXhwZWN0aW5nIHRvIGxvb2sgaW50byBob3cgQlBGIHByb2dyYW0gc3RydWN0dXJlcyBhcmUgb3JnYW5pemVkIGFuZCBvcHRpbWl6ZWQgZm9yIG1lbW9yeSBlZmZpY2llbmN5IHdpdGhpbiB0aGlzIGZ1bmN0aW9uLiBJJ2xsIG5lZWQgdG8gZmlndXJlIG91dCB3aGF0IGRhdGEgc3RydWN0dXJlcyBpdCBtYW5pcHVsYXRlcy4gRG9lcyBpdCBkZWFsIHdpdGggcHJvZ3JhbSBoZWFkZXJzLCBpbnN0cnVjdGlvbnMsIG9yIGFzc29jaWF0ZWQgbWV0YWRhdGE/IFNwZWNpZmljYWxseSwgSSB3aWxsIGV4YW1pbmUgdGhlIGFsZ29yaXRobSBmb3IgbWVtb3J5IGFsbG9jYXRpb24uIElzIGl0IGEgc2ltcGxlIGBrbWFsbG9jYCB3cmFwcGVyLCBvciBkb2VzIGl0IGluY29ycG9yYXRlIG1vcmUgYWR2YW5jZWQgdGVjaG5pcXVlcyBsaWtlIHNsYWIgYWxsb2NhdGlvbiwgb2JqZWN0IGNhY2hpbmcsIG9yIG1heWJlIHNvbWV0aGluZyBCUEYtc3BlY2lmaWMgbGlrZSBwYWNraW5nIG11bHRpcGxlIHByb2dyYW1zIGludG8gYSBzaW5nbGUgcGFjayB0byBtaW5pbWl6ZSBvdmVyaGVhZD8gSSdsbCBhbHNvIGNoZWNrIGZvciBhbnkgcG90ZW50aWFsIHBpdGZhbGxzLCBsaWtlIG1lbW9yeSBmcmFnbWVudGF0aW9uIG9yIHJhY2UgY29uZGl0aW9ucywgdGhhdCBtYXkgYmUgaW5oZXJlbnQgaW4gaXRzIGRlc2lnbi4gRnVydGhlcm1vcmUsIEkgd2lsbCBjaGVjayB0aGUgcG90ZW50aWFsIGZvciBwZXJmb3JtYW5jZSBib3R0bGVuZWNrcyBpbiB0aGlzIGZ1bmN0aW9uLiBEb2VzIGl0IGVtcGxveSBzcGlubG9ja3Mgb3Igb3RoZXIgbG9ja2luZyBtZWNoYW5pc21zPyBIb3cgZG9lcyBpdCBoYW5kbGUgcG90ZW50aWFsIGFsbG9jYXRpb24gZmFpbHVyZXMsIGFuZCB3aGF0IGFyZSB0aGUgaW1wbGljYXRpb25zIGZvciBvdmVyYWxsIEJQRiBwcm9ncmFtIGxvYWRpbmcgYW5kIGV4ZWN1dGlvbj8gSSBleHBlY3QgdG8gaGF2ZSBhIGdvb2QgbG9vayBhdCBlcnJvciBoYW5kbGluZyBhbmQgcm9idXN0bmVzcyB0b28uIEJhc2ljYWxseSwgSSB3YW50IHRvIGZvcm0gYSBjb21wbGV0ZSBtZW50YWwgbWFwIG9mIHRoaXMgZnVuY3Rpb24ncyBwdXJwb3NlLCBkZXNpZ24sIHBvdGVudGlhbCBpc3N1ZXMsIGFuZCBvcHRpbWl6YXRpb24gcG9zc2liaWxpdGllcy5cblxuXG4iLCJJbnB1dFRva2VucyI6NjE0NCwiT3V0cHV0VG9rZW5zIjoyMiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE0LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI2VDIwOjI0OjQ5LjAxNzg3OTk0NloiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxODc4NDc4MTQ3LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImJwZl9wcm9nX3BhY2tfYWxsb2NcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiYXJjaC9hcm02NC9uZXQvYnBmX2ppdF9jb21wLmM9Mjg3MT12b2lkICphcmNoX2FsbG9jX2JwZl90cmFtcG9saW5lKHVuc2lnbmVkIGludCBzaXplKVxcbmFyY2gvYXJtNjQvbmV0L2JwZl9qaXRfY29tcC5jLTI4NzIte1xcbmFyY2gvYXJtNjQvbmV0L2JwZl9qaXRfY29tcC5jOjI4NzM6XFx0cmV0dXJuIGJwZl9wcm9nX3BhY2tfYWxsb2Moc2l6ZSwgaml0X2ZpbGxfaG9sZSk7XFxuYXJjaC9hcm02NC9uZXQvYnBmX2ppdF9jb21wLmMtMjg3NC19XFxuLS1cXG5hcmNoL2xvb25nYXJjaC9uZXQvYnBmX2ppdC5jPTE3NjM9dm9pZCAqYXJjaF9hbGxvY19icGZfdHJhbXBvbGluZSh1bnNpZ25lZCBpbnQgc2l6ZSlcXG5hcmNoL2xvb25nYXJjaC9uZXQvYnBmX2ppdC5jLTE3NjQte1xcbmFyY2gvbG9vbmdhcmNoL25ldC9icGZfaml0LmM6MTc2NTpcXHRyZXR1cm4gYnBmX3Byb2dfcGFja19hbGxvYyhzaXplLCBqaXRfZmlsbF9ob2xlKTtcXG5hcmNoL2xvb25nYXJjaC9uZXQvYnBmX2ppdC5jLTE3NjYtfVxcbi0tXFxuYXJjaC9wb3dlcnBjL25ldC9icGZfaml0X2NvbXAuYz01ODk9dm9pZCAqYXJjaF9hbGxvY19icGZfdHJhbXBvbGluZSh1bnNpZ25lZCBpbnQgc2l6ZSlcXG5hcmNoL3Bvd2VycGMvbmV0L2JwZl9qaXRfY29tcC5jLTU5MC17XFxuYXJjaC9wb3dlcnBjL25ldC9icGZfaml0X2NvbXAuYzo1OTE6XFx0cmV0dXJuIGJwZl9wcm9nX3BhY2tfYWxsb2Moc2l6ZSwgYnBmX2ppdF9maWxsX2lsbF9pbnNucyk7XFxuYXJjaC9wb3dlcnBjL25ldC9icGZfaml0X2NvbXAuYy01OTItfVxcbi0tXFxuYXJjaC9yaXNjdi9uZXQvYnBmX2ppdF9jb21wNjQuYz0xMzIyPXZvaWQgKmFyY2hfYWxsb2NfYnBmX3RyYW1wb2xpbmUodW5zaWduZWQgaW50IHNpemUpXFxuYXJjaC9yaXNjdi9uZXQvYnBmX2ppdF9jb21wNjQuYy0xMzIzLXtcXG5hcmNoL3Jpc2N2L25ldC9icGZfaml0X2NvbXA2NC5jOjEzMjQ6XFx0cmV0dXJuIGJwZl9wcm9nX3BhY2tfYWxsb2Moc2l6ZSwgYnBmX2ZpbGxfaWxsX2luc25zKTtcXG5hcmNoL3Jpc2N2L25ldC9icGZfaml0X2NvbXA2NC5jLTEzMjUtfVxcbi0tXFxuYXJjaC94ODYvbmV0L2JwZl9qaXRfY29tcC5jPTM2NTQ9dm9pZCAqYXJjaF9hbGxvY19icGZfdHJhbXBvbGluZSh1bnNpZ25lZCBpbnQgc2l6ZSlcXG5hcmNoL3g4Ni9uZXQvYnBmX2ppdF9jb21wLmMtMzY1NS17XFxuYXJjaC94ODYvbmV0L2JwZl9qaXRfY29tcC5jOjM2NTY6XFx0cmV0dXJuIGJwZl9wcm9nX3BhY2tfYWxsb2Moc2l6ZSwgaml0X2ZpbGxfaG9sZSk7XFxuYXJjaC94ODYvbmV0L2JwZl9qaXRfY29tcC5jLTM2NTctfVxcbi0tXFxuaW5jbHVkZS9saW51eC9maWx0ZXIuaD0xMzMwPWJwZl9qaXRfYmluYXJ5X3BhY2tfaGRyKGNvbnN0IHN0cnVjdCBicGZfcHJvZyAqZnApO1xcbmluY2x1ZGUvbGludXgvZmlsdGVyLmgtMTMzMS1cXG5pbmNsdWRlL2xpbnV4L2ZpbHRlci5oOjEzMzI6dm9pZCAqYnBmX3Byb2dfcGFja19hbGxvYyh1MzIgc2l6ZSwgYnBmX2ppdF9maWxsX2hvbGVfdCBicGZfZmlsbF9pbGxfaW5zbnMpO1xcbmluY2x1ZGUvbGludXgvZmlsdGVyLmgtMTMzMy12b2lkIGJwZl9wcm9nX3BhY2tfZnJlZSh2b2lkICpwdHIsIHUzMiBzaXplKTtcXG4tLVxcbmtlcm5lbC9icGYvY29yZS5jPTkxMj1zdGF0aWMgc3RydWN0IGJwZl9wcm9nX3BhY2sgKmFsbG9jX25ld19wYWNrKGJwZl9qaXRfZmlsbF9ob2xlX3QgYnBmX2ZpbGxfaWxsX2luc25zKVxcbi0tXFxua2VybmVsL2JwZi9jb3JlLmMtOTQxLVxcbmtlcm5lbC9icGYvY29yZS5jOjk0Mjp2b2lkICpicGZfcHJvZ19wYWNrX2FsbG9jKHUzMiBzaXplLCBicGZfaml0X2ZpbGxfaG9sZV90IGJwZl9maWxsX2lsbF9pbnNucylcXG5rZXJuZWwvYnBmL2NvcmUuYy05NDMte1xcbi0tXFxua2VybmVsL2JwZi9jb3JlLmM9MTE0MT1icGZfaml0X2JpbmFyeV9wYWNrX2FsbG9jKHVuc2lnbmVkIGludCBwcm9nbGVuLCB1OCAqKmltYWdlX3B0cixcXG4tLVxcbmtlcm5lbC9icGYvY29yZS5jLTExNTctXFx0XFx0cmV0dXJuIE5VTEw7XFxua2VybmVsL2JwZi9jb3JlLmM6MTE1ODpcXHRyb19oZWFkZXIgPSBicGZfcHJvZ19wYWNrX2FsbG9jKHNpemUsIGJwZl9maWxsX2lsbF9pbnNucyk7XFxua2VybmVsL2JwZi9jb3JlLmMtMTE1OS1cXHRpZiAoIXJvX2hlYWRlcikge1xcbi0tXFxua2VybmVsL2JwZi9kaXNwYXRjaGVyLmM9MTM3PXZvaWQgYnBmX2Rpc3BhdGNoZXJfY2hhbmdlX3Byb2coc3RydWN0IGJwZl9kaXNwYXRjaGVyICpkLCBzdHJ1Y3QgYnBmX3Byb2cgKmZyb20sXFxuLS1cXG5rZXJuZWwvYnBmL2Rpc3BhdGNoZXIuYy0xNDctXFx0aWYgKCFkLVxcdTAwM2VpbWFnZSkge1xcbmtlcm5lbC9icGYvZGlzcGF0Y2hlci5jOjE0ODpcXHRcXHRkLVxcdTAwM2VpbWFnZSA9IGJwZl9wcm9nX3BhY2tfYWxsb2MoUEFHRV9TSVpFLCBicGZfaml0X2ZpbGxfaG9sZV93aXRoX3plcm8pO1xcbmtlcm5lbC9icGYvZGlzcGF0Y2hlci5jLTE0OS1cXHRcXHRpZiAoIWQtXFx1MDAzZWltYWdlKVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0yNlQyMDoyNDo1MC44OTYzNjMxMTNaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoyNjUyNjYyOTgzNywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgQlBGIFByb2dyYW0gQWxsb2NhdGlvbioqXG5cbk9rYXksIHNvIEknbSB0cmFjaW5nIHRoZSBhbGxvY2F0aW9uIHByb2Nlc3MgZm9yIEJQRiBwcm9ncmFtcywgYW5kIGl0IGxvb2tzIGxpa2UgYGJwZl9wcm9nX3BhY2tfYWxsb2NgIGlzIHRoZSBrZXkgZnVuY3Rpb24uIEl0J3MgY2FsbGVkIGJ5IGEgZmV3IG90aGVyIGltcG9ydGFudCBjb21wb25lbnRzLCBzcGVjaWZpY2FsbHkgYGFyY2hfYWxsb2NfYnBmX3RyYW1wb2xpbmVgLCBgYnBmX2ppdF9iaW5hcnlfcGFja19hbGxvY2AsIGFuZCBgYnBmX2Rpc3BhdGNoZXJfY2hhbmdlX3Byb2dgLiBSaWdodCBvZmYgdGhlIGJhdCwgSSByZWNvZ25pemUgdGhhdCBgYnBmX2ppdF9iaW5hcnlfcGFja19hbGxvY2AgaXMgcmVsYXRlZCB0byB0aGUgQlBGIEpJVCBjb21waWxhdGlvbiBwcm9jZXNzLCB3aGljaCBpcyBjcml0aWNhbCBmb3IgcGVyZm9ybWFuY2UuIEFuZCwgZnJvbSB0aGUgbmFtZXMsIGBicGZfZGlzcGF0Y2hlcl9jaGFuZ2VfcHJvZ2AgaGFuZGxlcyBjaGFuZ2VzIHRvIEJQRiBkaXNwYXRjaGVycy5cblxuTm93LCBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGF0J3MgaGFwcGVuaW5nIHdpdGhpbiB0aGVzZSBjb21wb25lbnRzLiBUaGUgbmV4dCBsb2dpY2FsIHN0ZXAgaXMgdG8gZGl2ZSBpbnRvIGhvdyBgYnBmX2ppdF9hbGxvY19leGVjX3J3YCBmYWN0b3JzIGludG8gdGhpcyBwcm9jZXNzLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBpdHMgcm9sZSBpbiB0aGUgYWxsb2NhdGlvbiBhbmQgZXhlY3V0aW9uIHByb2Nlc3MuIFRoaXMgd2lsbCBoZWxwIGNsYXJpZnkgdGhlIG92ZXJhbGwgcHJvZ3JhbSBmbG93LlxuXG5cbiIsIklucHV0VG9rZW5zIjo3Njg5LCJPdXRwdXRUb2tlbnMiOjI0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTA1LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI2VDIwOjI1OjE3LjQyMjk5NVoiLCJTZXEiOjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxOTAxMDA0MjE2LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImJwZl9qaXRfYWxsb2NfZXhlY19yd1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJhcmNoL3g4Ni9uZXQvYnBmX2ppdF9jb21wLmM9MzY5OD1pbnQgYXJjaF9icGZfdHJhbXBvbGluZV9zaXplKGNvbnN0IHN0cnVjdCBidGZfZnVuY19tb2RlbCAqbSwgdTMyIGZsYWdzLFxcbi0tXFxuYXJjaC94ODYvbmV0L2JwZl9qaXRfY29tcC5jLTM3MDgtXFx0ICogbW9kdWxlIG1lbW9yeSByYW5nZS5cXG5hcmNoL3g4Ni9uZXQvYnBmX2ppdF9jb21wLmM6MzcwOTpcXHQgKiBTaW5jZSBpdCBtdXN0IGJlIHdyaXRhYmxlIHVzZSBicGZfaml0X2FsbG9jX2V4ZWNfcncoKS5cXG5hcmNoL3g4Ni9uZXQvYnBmX2ppdF9jb21wLmMtMzcxMC1cXHQgKi9cXG5hcmNoL3g4Ni9uZXQvYnBmX2ppdF9jb21wLmM6MzcxMTpcXHRpbWFnZSA9IGJwZl9qaXRfYWxsb2NfZXhlY19ydyhQQUdFX1NJWkUpO1xcbmFyY2gveDg2L25ldC9icGZfaml0X2NvbXAuYy0zNzEyLVxcdGlmICghaW1hZ2UpXFxuLS1cXG5pbmNsdWRlL2xpbnV4L2ZpbHRlci5oPTEzMjU9dm9pZCAqYnBmX2ppdF9hbGxvY19leGVjKHVuc2lnbmVkIGxvbmcgc2l6ZSk7XFxuaW5jbHVkZS9saW51eC9maWx0ZXIuaDoxMzI2OnZvaWQgKmJwZl9qaXRfYWxsb2NfZXhlY19ydyh1bnNpZ25lZCBsb25nIHNpemUpO1xcbmluY2x1ZGUvbGludXgvZmlsdGVyLmgtMTMyNy12b2lkIGJwZl9qaXRfZnJlZV9leGVjKHZvaWQgKmFkZHIpO1xcbi0tXFxua2VybmVsL2JwZi9jb3JlLmM9MTA3MD12b2lkICpicGZfaml0X2FsbG9jX2V4ZWModW5zaWduZWQgbG9uZyBzaXplKVxcbi0tXFxua2VybmVsL2JwZi9jb3JlLmMtMTA3NC1cXG5rZXJuZWwvYnBmL2NvcmUuYzoxMDc1OnZvaWQgKmJwZl9qaXRfYWxsb2NfZXhlY19ydyh1bnNpZ25lZCBsb25nIHNpemUpXFxua2VybmVsL2JwZi9jb3JlLmMtMTA3Ni17XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI2VDIwOjI1OjE5LjMyNDAwNTUyNloiLCJTZXEiOjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjI2MDYzNDMxMTUzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhvc2UgdGhvdWdodHMsIHByZXNlbnRlZCBhcyBteSBvd24gbWVudGFsIHByb2Nlc3MsIGdpdmVuIG15IGV4cGVydGlzZTpcblxuKipFeGFtaW5pbmcgQlBGIEpJVCBBbGxvY2F0aW9uIG9uIHg4NioqXG5cbkFscmlnaHQsIEknbSB0YWtpbmcgYSBsb29rIGF0IHRoaXMgYGJwZl9qaXRfYWxsb2NfZXhlY19yd2AgZnVuY3Rpb24uIFRoZSBjb2RlIHNlZW1zIHRvIGluZGljYXRlIGl0J3MgZXhjbHVzaXZlbHkgZW1wbG95ZWQgd2l0aGluIGBhcmNoX2JwZl90cmFtcG9saW5lX3NpemVgIHNwZWNpZmljYWxseSBvbiB0aGUgeDg2IGFyY2hpdGVjdHVyZS4gSG1tLCB0aGF0J3MgaW50ZXJlc3RpbmcgYW5kIGNlcnRhaW5seSB3YXJyYW50cyBjbG9zZXIgZXhhbWluYXRpb24uXG5cbk15IGltbWVkaWF0ZSBxdWVzdGlvbiBpczogd2hhdCdzIHRoZSBkZWFsIHdpdGggYGJwZl9qaXRfYWxsb2NfZXhlY2A/IElzIGl0IGFsc28geDg2LXNwZWNpZmljPyBPciBpcyBpdCB1c2VkIG1vcmUgYnJvYWRseSwgcGVyaGFwcyBhY3Jvc3Mgb3RoZXIgYXJjaGl0ZWN0dXJlcyBvciBpbiBkaWZmZXJlbnQgY29udGV4dHMgd2l0aGluIHRoZSBCUEYgSklUIGNvbXBpbGF0aW9uIHByb2Nlc3M/IEl0J3MgaW1wb3J0YW50IHRvIHVuZGVyc3RhbmQgdGhlIHJlbGF0aW9uc2hpcCBiZXR3ZWVuIHRoZXNlIHR3byBhbGxvY2F0aW9uIHJvdXRpbmVzLiBBcmUgdGhleSBjb21wbGVtZW50YXJ5PyBEbyB0aGV5IGhhdmUgZGlmZmVyZW50IHB1cnBvc2VzPyBJcyBvbmUgYSBzdWJzZXQgb2YgdGhlIG90aGVyPyBBcmUgdGhlcmUgYW55IHVzZSBjYXNlcyB3aGVyZSBvbmUgaXMgcHJlZmVycmVkIG92ZXIgdGhlIG90aGVyIGFuZCBpZiBzbyB3aHk/IFRoaXMgZGlzdGluY3Rpb24gaXMgY3J1Y2lhbCBmb3IgZ2V0dGluZyBhIGZ1bGwgZ3Jhc3Agb24gbWVtb3J5IG1hbmFnZW1lbnQgaW4gdGhlIEpJVCBlbnZpcm9ubWVudCwgZXNwZWNpYWxseSB3aGVuIG9wdGltaXppbmcgZm9yIHZhcmlvdXMgYXJjaGl0ZWN0dXJlcyBvciBleHBsb3JpbmcgbmV3IGZlYXR1cmVzIGFuZCBjYXBhYmlsaXRpZXMgd2l0aGluIHRoZSBCUEYgZnJhbWV3b3JrLiBJIG5lZWQgdG8gZGlnIGRlZXBlciBpbnRvIHRoZSBjb2RlIGFuZCB0aGUgd2lkZXIgQlBGIGVjb3N5c3RlbSB0byBkZXRlcm1pbmUgd2hlcmUgdGhlc2UgYWxsb2NhdGlvbiBmdW5jdGlvbnMgZGl2ZXJnZS5cblxuXG4iLCJJbnB1dFRva2VucyI6ODQ0NiwiT3V0cHV0VG9rZW5zIjoyMiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjQ2LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI2VDIwOjI1OjQ1LjM4NzQzODI3OVoiLCJTZXEiOjEwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTc1MDE2MzA4OSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJicGZfaml0X2FsbG9jX2V4ZWNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiYXJjaC9hcm02NC9uZXQvYnBmX2ppdF9jb21wLmM9MjMyMD12b2lkICpicGZfYXJjaF90ZXh0X2NvcHkodm9pZCAqZHN0LCB2b2lkICpzcmMsIHNpemVfdCBsZW4pXFxuLS1cXG5hcmNoL2FybTY0L25ldC9icGZfaml0X2NvbXAuYy0yMzI2LVxcbmFyY2gvYXJtNjQvbmV0L2JwZl9qaXRfY29tcC5jOjIzMjc6dTY0IGJwZl9qaXRfYWxsb2NfZXhlY19saW1pdCh2b2lkKVxcbmFyY2gvYXJtNjQvbmV0L2JwZl9qaXRfY29tcC5jLTIzMjgte1xcbi0tXFxuYXJjaC9yaXNjdi9uZXQvYnBmX2ppdF9jb3JlLmM9NDQ9c3RydWN0IGJwZl9wcm9nICpicGZfaW50X2ppdF9jb21waWxlKHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYsIHN0cnVjdCBicGZfcHJvZyAqcHJvZylcXG4tLVxcbmFyY2gvcmlzY3YvbmV0L2JwZl9qaXRfY29yZS5jLTE5Mi1cXG5hcmNoL3Jpc2N2L25ldC9icGZfaml0X2NvcmUuYzoxOTM6dTY0IGJwZl9qaXRfYWxsb2NfZXhlY19saW1pdCh2b2lkKVxcbmFyY2gvcmlzY3YvbmV0L2JwZl9qaXRfY29yZS5jLTE5NC17XFxuLS1cXG5hcmNoL3g4Ni9uZXQvYnBmX2ppdF9jb21wLmM9MzY5OD1pbnQgYXJjaF9icGZfdHJhbXBvbGluZV9zaXplKGNvbnN0IHN0cnVjdCBidGZfZnVuY19tb2RlbCAqbSwgdTMyIGZsYWdzLFxcbi0tXFxuYXJjaC94ODYvbmV0L2JwZl9qaXRfY29tcC5jLTM3MDgtXFx0ICogbW9kdWxlIG1lbW9yeSByYW5nZS5cXG5hcmNoL3g4Ni9uZXQvYnBmX2ppdF9jb21wLmM6MzcwOTpcXHQgKiBTaW5jZSBpdCBtdXN0IGJlIHdyaXRhYmxlIHVzZSBicGZfaml0X2FsbG9jX2V4ZWNfcncoKS5cXG5hcmNoL3g4Ni9uZXQvYnBmX2ppdF9jb21wLmMtMzcxMC1cXHQgKi9cXG5hcmNoL3g4Ni9uZXQvYnBmX2ppdF9jb21wLmM6MzcxMTpcXHRpbWFnZSA9IGJwZl9qaXRfYWxsb2NfZXhlY19ydyhQQUdFX1NJWkUpO1xcbmFyY2gveDg2L25ldC9icGZfaml0X2NvbXAuYy0zNzEyLVxcdGlmICghaW1hZ2UpXFxuLS1cXG5pbmNsdWRlL2xpbnV4L2ZpbHRlci5oPTEzMjM9dm9pZCBicGZfaml0X2JpbmFyeV9mcmVlKHN0cnVjdCBicGZfYmluYXJ5X2hlYWRlciAqaGRyKTtcXG5pbmNsdWRlL2xpbnV4L2ZpbHRlci5oOjEzMjQ6dTY0IGJwZl9qaXRfYWxsb2NfZXhlY19saW1pdCh2b2lkKTtcXG5pbmNsdWRlL2xpbnV4L2ZpbHRlci5oOjEzMjU6dm9pZCAqYnBmX2ppdF9hbGxvY19leGVjKHVuc2lnbmVkIGxvbmcgc2l6ZSk7XFxuaW5jbHVkZS9saW51eC9maWx0ZXIuaDoxMzI2OnZvaWQgKmJwZl9qaXRfYWxsb2NfZXhlY19ydyh1bnNpZ25lZCBsb25nIHNpemUpO1xcbmluY2x1ZGUvbGludXgvZmlsdGVyLmgtMTMyNy12b2lkIGJwZl9qaXRfZnJlZV9leGVjKHZvaWQgKmFkZHIpO1xcbi0tXFxua2VybmVsL2JwZi9jb3JlLmM9OTEyPXN0YXRpYyBzdHJ1Y3QgYnBmX3Byb2dfcGFjayAqYWxsb2NfbmV3X3BhY2soYnBmX2ppdF9maWxsX2hvbGVfdCBicGZfZmlsbF9pbGxfaW5zbnMpXFxuLS1cXG5rZXJuZWwvYnBmL2NvcmUuYy05MTktXFx0XFx0cmV0dXJuIE5VTEw7XFxua2VybmVsL2JwZi9jb3JlLmM6OTIwOlxcdHBhY2stXFx1MDAzZXB0ciA9IGJwZl9qaXRfYWxsb2NfZXhlYyhCUEZfUFJPR19QQUNLX1NJWkUpO1xcbmtlcm5lbC9icGYvY29yZS5jLTkyMS1cXHRpZiAoIXBhY2stXFx1MDAzZXB0cilcXG4tLVxcbmtlcm5lbC9icGYvY29yZS5jPTk0Mj12b2lkICpicGZfcHJvZ19wYWNrX2FsbG9jKHUzMiBzaXplLCBicGZfaml0X2ZpbGxfaG9sZV90IGJwZl9maWxsX2lsbF9pbnNucylcXG4tLVxcbmtlcm5lbC9icGYvY29yZS5jLTk1MS1cXHRcXHRzaXplID0gcm91bmRfdXAoc2l6ZSwgUEFHRV9TSVpFKTtcXG5rZXJuZWwvYnBmL2NvcmUuYzo5NTI6XFx0XFx0cHRyID0gYnBmX2ppdF9hbGxvY19leGVjKHNpemUpO1xcbmtlcm5lbC9icGYvY29yZS5jLTk1My1cXHRcXHRpZiAocHRyIFxcdTAwMjZcXHUwMDI2ICFicGZfaml0X21lbV9pc19yb3goKSkge1xcbi0tXFxua2VybmVsL2JwZi9jb3JlLmM9MTAyOD1zdGF0aWMgYXRvbWljX2xvbmdfdCBicGZfaml0X2N1cnJlbnQ7XFxuLS1cXG5rZXJuZWwvYnBmL2NvcmUuYy0xMDMzLSAqL1xcbmtlcm5lbC9icGYvY29yZS5jOjEwMzQ6dTY0IF9fd2VhayBicGZfaml0X2FsbG9jX2V4ZWNfbGltaXQodm9pZClcXG5rZXJuZWwvYnBmL2NvcmUuYy0xMDM1LXtcXG4tLVxcbmtlcm5lbC9icGYvY29yZS5jPTEwNDM9c3RhdGljIGludCBfX2luaXQgYnBmX2ppdF9jaGFyZ2VfaW5pdCh2b2lkKVxcbi0tXFxua2VybmVsL2JwZi9jb3JlLmMtMTA0NS1cXHQvKiBPbmx5IHVzZWQgYXMgaGV1cmlzdGljIGhlcmUgdG8gZGVyaXZlIGxpbWl0LiAqL1xcbmtlcm5lbC9icGYvY29yZS5jOjEwNDY6XFx0YnBmX2ppdF9saW1pdF9tYXggPSBicGZfaml0X2FsbG9jX2V4ZWNfbGltaXQoKTtcXG5rZXJuZWwvYnBmL2NvcmUuYy0xMDQ3LVxcdGJwZl9qaXRfbGltaXQgPSBtaW5fdCh1NjQsIHJvdW5kX3VwKGJwZl9qaXRfbGltaXRfbWF4IFxcdTAwM2VcXHUwMDNlIDEsXFxuLS1cXG5rZXJuZWwvYnBmL2NvcmUuYz0xMDY1PXZvaWQgYnBmX2ppdF91bmNoYXJnZV9tb2RtZW0odTMyIHNpemUpXFxuLS1cXG5rZXJuZWwvYnBmL2NvcmUuYy0xMDY5LVxcbmtlcm5lbC9icGYvY29yZS5jOjEwNzA6dm9pZCAqYnBmX2ppdF9hbGxvY19leGVjKHVuc2lnbmVkIGxvbmcgc2l6ZSlcXG5rZXJuZWwvYnBmL2NvcmUuYy0xMDcxLXtcXG4tLVxcbmtlcm5lbC9icGYvY29yZS5jLTEwNzQtXFxua2VybmVsL2JwZi9jb3JlLmM6MTA3NTp2b2lkICpicGZfaml0X2FsbG9jX2V4ZWNfcncodW5zaWduZWQgbG9uZyBzaXplKVxcbmtlcm5lbC9icGYvY29yZS5jLTEwNzYte1xcbi0tXFxua2VybmVsL2JwZi9jb3JlLmM9MTA4Nj1icGZfaml0X2JpbmFyeV9hbGxvYyh1bnNpZ25lZCBpbnQgcHJvZ2xlbiwgdTggKippbWFnZV9wdHIsXFxuLS1cXG5rZXJuZWwvYnBmL2NvcmUuYy0xMTAzLVxcdFxcdHJldHVybiBOVUxMO1xcbmtlcm5lbC9icGYvY29yZS5jOjExMDQ6XFx0aGRyID0gYnBmX2ppdF9hbGxvY19leGVjKHNpemUpO1xcbmtlcm5lbC9icGYvY29yZS5jLTExMDUtXFx0aWYgKCFoZHIpIHtcXG4tLVxcbmtlcm5lbC9icGYvdHJhbXBvbGluZS5jPTE0NDA9dm9pZCAqIF9fd2VhayBhcmNoX2FsbG9jX2JwZl90cmFtcG9saW5lKHVuc2lnbmVkIGludCBzaXplKVxcbi0tXFxua2VybmVsL2JwZi90cmFtcG9saW5lLmMtMTQ0NS1cXHRcXHRyZXR1cm4gTlVMTDtcXG5rZXJuZWwvYnBmL3RyYW1wb2xpbmUuYzoxNDQ2OlxcdGltYWdlID0gYnBmX2ppdF9hbGxvY19leGVjKFBBR0VfU0laRSk7XFxua2VybmVsL2JwZi90cmFtcG9saW5lLmMtMTQ0Ny1cXHRpZiAoaW1hZ2UpXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI2VDIwOjI1OjQ3LjEzNzYwNjMzOFoiLCJTZXEiOjExLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0MzgzMTk3OTk5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgS2VybmVsJ3MgQlBGIEpJVCBNZW1vcnkgQWxsb2NhdGlvbiBTdHJhdGVneSoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IGhvdyB0aGUgQlBGIEpJVCBtZW1vcnkgaXMgYmVpbmcgbWFuYWdlZCB3aXRoaW4gdGhlIGtlcm5lbC4gTXkgaW5pdGlhbCBpbXByZXNzaW9uIGlzIHRoYXQgYGJwZl9qaXRfYWxsb2NfZXhlY2AgaXMgYSBrZXkgZnVuY3Rpb24sIGhlYXZpbHkgdXNlZCBpbiBhbGxvY2F0aW5nIG1lbW9yeSBmb3IgY29tcGlsZWQgQlBGIHByb2dyYW1zLCBwYXJ0aWN1bGFybHkgd2l0aGluIHJvdXRpbmVzIGxpa2UgYGFsbG9jX25ld19wYWNrYCwgYGJwZl9wcm9nX3BhY2tfYWxsb2NgLCBgYnBmX2ppdF9iaW5hcnlfYWxsb2NgLCBhbmQgYGFyY2hfYWxsb2NfYnBmX3RyYW1wb2xpbmVgLlxuXG5UaGUgY3VycmVudCBwYXRjaCBJJ20gZXhhbWluaW5nIGFwcGVhcnMgdG8gYmUgbWFraW5nIHNvbWUgc2lnbmlmaWNhbnQgY2hhbmdlcy4gSSBzZWUgbW9kaWZpY2F0aW9ucyB0byBgYWxsb2NfbmV3X3BhY2tgIGFuZCBgYnBmX3Byb2dfcGFja19hbGxvY2Ag4oCTIHNwZWNpZmljYWxseSwgaXQgc2VlbXMgbGlrZSB0aGVyZSdzIG5vdyBhIGNoZWNrIGZvciBgYnBmX2ppdF9tZW1faXNfcm94KClgLiBUaGlzIHN1Z2dlc3RzIHdlJ3JlIHByb2JhYmx5IGFkZHJlc3Npbmcgc2VjdXJpdHkgY29uY2VybnMgb3IgcGVyaGFwcyB0cnlpbmcgdG8gb3B0aW1pemUgcmVhZC1vbmx5IG1lbW9yeSBzZWdtZW50cyBmb3IgSklULWVkIGNvZGUuIEludGVyZXN0aW5nLlxuXG5UaGVuLCB0aGVyZSdzIGFub3RoZXIgY2hhbmdlIHJlbGF0ZWQgdG8gYGJwZl9kaXNwYXRjaGVyX2NoYW5nZV9wcm9nYC4gVGhpcyBpcyB3aGVyZSB0aGluZ3MgZ2V0IHJlYWxseSBpbnRlcmVzdGluZzsgdGhlIHBhdGNoIGlzIHN3aXRjaGluZyBpdCBvdmVyIHRvIHVzZSBgdm1hbGxvY2AgaW5zdGVhZCBvZiBgYnBmX2ppdF9hbGxvY19leGVjYC4gVGhpcyBpcyBhIHByZXR0eSBzaWduaWZpY2FudCBhbHRlcmF0aW9uLCBhcyBgdm1hbGxvY2AgaGFzIGRpZmZlcmVudCBhbGxvY2F0aW9uIHNlbWFudGljcyBhbmQgbWVtb3J5IG1hcHBpbmcgY2hhcmFjdGVyaXN0aWNzLiBJIG5lZWQgdG8gZGlnIGRlZXBlciBpbnRvIHRoZSByYXRpb25hbGUgaGVyZS4gVGhlIGltcGxpY2F0aW9ucyBjb3VsZCBiZSBicm9hZCwgcG90ZW50aWFsbHkgaW1wYWN0aW5nIHBlcmZvcm1hbmNlLCBzZWN1cml0eSwgb3IgZXZlbiBob3cgQlBGIHByb2dyYW1zIGFyZSBkeW5hbWljYWxseSBsb2FkZWQgYW5kIGV4ZWN1dGVkLiBMZXQncyBzdGFydCBieSBzY3J1dGluaXppbmcgdGhlIGNoYW5nZXMgaW4gYGJwZl9kaXNwYXRjaGVyX2NoYW5nZV9wcm9nYCB0byB1bmRlcnN0YW5kIHRoZSBpbnRlbnQgYW5kIHBvdGVudGlhbCBjb25zZXF1ZW5jZXMgb2YgdGhpcyBgdm1hbGxvY2Agc2hpZnQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjEwMzI3LCJPdXRwdXRUb2tlbnMiOjIyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTM2LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI2VDIwOjI1OjUxLjUyMDgwNjQwN1oiLCJTZXEiOjEyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTY3NjY0MDgzMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJicGZfZGlzcGF0Y2hlcl9jaGFuZ2VfcHJvZ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJpbmNsdWRlL2xpbnV4L2JwZi5oPTE1MjU9aW50IGJwZl90cmFtcG9saW5lX211bHRpX2RldGFjaChzdHJ1Y3QgYnBmX3Byb2cgKnByb2csXFxuLS1cXG5pbmNsdWRlL2xpbnV4L2JwZi5oLTE1OTAtI2RlZmluZSBCUEZfRElTUEFUQ0hFUl9QVFIobmFtZSkgKFxcdTAwMjZicGZfZGlzcGF0Y2hlcl8jI25hbWUpXFxuaW5jbHVkZS9saW51eC9icGYuaDoxNTkxOnZvaWQgYnBmX2Rpc3BhdGNoZXJfY2hhbmdlX3Byb2coc3RydWN0IGJwZl9kaXNwYXRjaGVyICpkLCBzdHJ1Y3QgYnBmX3Byb2cgKmZyb20sXFxuaW5jbHVkZS9saW51eC9icGYuaC0xNTkyLVxcdFxcdFxcdFxcdHN0cnVjdCBicGZfcHJvZyAqdG8pO1xcbi0tXFxuaW5jbHVkZS9saW51eC9icGYuaD0xNjI0PXN0YXRpYyBpbmxpbmUgdm9pZCBicGZfdHJhbXBvbGluZV9wdXQoc3RydWN0IGJwZl90cmFtcG9saW5lICp0cikge31cXG4tLVxcbmluY2x1ZGUvbGludXgvYnBmLmgtMTYyOC0jZGVmaW5lIEJQRl9ESVNQQVRDSEVSX1BUUihuYW1lKSBOVUxMXFxuaW5jbHVkZS9saW51eC9icGYuaDoxNjI5OnN0YXRpYyBpbmxpbmUgdm9pZCBicGZfZGlzcGF0Y2hlcl9jaGFuZ2VfcHJvZyhzdHJ1Y3QgYnBmX2Rpc3BhdGNoZXIgKmQsXFxuaW5jbHVkZS9saW51eC9icGYuaC0xNjMwLVxcdFxcdFxcdFxcdFxcdCAgICAgIHN0cnVjdCBicGZfcHJvZyAqZnJvbSxcXG4tLVxcbmtlcm5lbC9icGYvZGlzcGF0Y2hlci5jPTEwNj1zdGF0aWMgdm9pZCBicGZfZGlzcGF0Y2hlcl91cGRhdGUoc3RydWN0IGJwZl9kaXNwYXRjaGVyICpkLCBpbnQgcHJldl9udW1fcHJvZ3MpXFxuLS1cXG5rZXJuZWwvYnBmL2Rpc3BhdGNoZXIuYy0xMzYtXFxua2VybmVsL2JwZi9kaXNwYXRjaGVyLmM6MTM3OnZvaWQgYnBmX2Rpc3BhdGNoZXJfY2hhbmdlX3Byb2coc3RydWN0IGJwZl9kaXNwYXRjaGVyICpkLCBzdHJ1Y3QgYnBmX3Byb2cgKmZyb20sXFxua2VybmVsL2JwZi9kaXNwYXRjaGVyLmMtMTM4LVxcdFxcdFxcdFxcdHN0cnVjdCBicGZfcHJvZyAqdG8pXFxuLS1cXG5uZXQvY29yZS9maWx0ZXIuYz0xMjAyNj12b2lkIGJwZl9wcm9nX2NoYW5nZV94ZHAoc3RydWN0IGJwZl9wcm9nICpwcmV2X3Byb2csIHN0cnVjdCBicGZfcHJvZyAqcHJvZylcXG5uZXQvY29yZS9maWx0ZXIuYy0xMjAyNy17XFxubmV0L2NvcmUvZmlsdGVyLmM6MTIwMjg6XFx0YnBmX2Rpc3BhdGNoZXJfY2hhbmdlX3Byb2coQlBGX0RJU1BBVENIRVJfUFRSKHhkcCksIHByZXZfcHJvZywgcHJvZyk7XFxubmV0L2NvcmUvZmlsdGVyLmMtMTIwMjktfVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0yNlQyMDoyNTo1My4xOTc0NTE2OTdaIiwiU2VxIjoxMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzAwODA3ODg5OCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBteSBvd24gbWVudGFsIHByb2Nlc3Npbmc6XG5cbioqRm9jdXNzaW5nIG9uIEZ1enppbmcgVGFyZ2V0IElkZW50aWZpY2F0aW9uKipcblxuQWxyaWdodCwgbGV0J3Mgc2VlLCBgYnBmX2Rpc3BhdGNoZXJfY2hhbmdlX3Byb2dgLi4uIHJpZ2h0LCB0aGF0IGdldHMgY2FsbGVkIGJ5IGBicGZfcHJvZ19jaGFuZ2VfeGRwYC4gSG1tLCB0aGF0IHN1Z2dlc3RzIGEgZGVmaW5pdGUgcG9pbnQgb2YgaW50ZXJlc3QgZm9yIGZ1enppbmchIEl0J3MgY2xlYXJseSBhIHJlYWNoYWJsZSBjb2RlIHBhdGgsIHNvIHRoYXQncyBhIGdvb2Qgc3RhcnRpbmcgcG9pbnQgdG8gZGlnIGludG8uIE5vdywgSSBzaG91bGQgcHJvYmFibHkgY2hlY2sgYGJwZl9qaXRfbWVtX2lzX3JveGAuLi4gdGhhdCBmdW5jdGlvbidzIG9mdGVuIGFzc29jaWF0ZWQgd2l0aCBtZW1vcnkgcHJvdGVjdGlvbiBpc3N1ZXMuIEknbGwgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyB0aGVzZSBwaWVjZXMgZml0IHRvZ2V0aGVyIHRvIGNyYWZ0IGVmZmVjdGl2ZSBmdXp6aW5nIGhhcm5lc3Nlcy5cblxuXG4iLCJJbnB1dFRva2VucyI6MTEzNDcsIk91dHB1dFRva2VucyI6MjQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo1MiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNi0yNlQyMDoyNTo1Ni4yMDU1MzMzNjRaIiwiU2VxIjoxNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE2OTQ0NTA4NzQsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiYnBmX2ppdF9tZW1faXNfcm94XCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImtlcm5lbC9icGYvY29yZS5jPTg4OT1zdGF0aWMgTElTVF9IRUFEKHBhY2tfbGlzdCk7XFxuLS1cXG5rZXJuZWwvYnBmL2NvcmUuYy05MDYtXFxua2VybmVsL2JwZi9jb3JlLmM6OTA3OnN0YXRpYyBib29sIGJwZl9qaXRfbWVtX2lzX3JveCh2b2lkKVxcbmtlcm5lbC9icGYvY29yZS5jLTkwOC17XFxuLS1cXG5rZXJuZWwvYnBmL2NvcmUuYz05MTI9c3RhdGljIHN0cnVjdCBicGZfcHJvZ19wYWNrICphbGxvY19uZXdfcGFjayhicGZfaml0X2ZpbGxfaG9sZV90IGJwZl9maWxsX2lsbF9pbnNucylcXG4tLVxcbmtlcm5lbC9icGYvY29yZS5jLTkyNC1cXG5rZXJuZWwvYnBmL2NvcmUuYzo5MjU6XFx0aWYgKCFicGZfaml0X21lbV9pc19yb3goKSkge1xcbmtlcm5lbC9icGYvY29yZS5jLTkyNi1cXHRcXHRicGZfZmlsbF9pbGxfaW5zbnMocGFjay1cXHUwMDNlcHRyLCBCUEZfUFJPR19QQUNLX1NJWkUpO1xcbi0tXFxua2VybmVsL2JwZi9jb3JlLmM9OTQyPXZvaWQgKmJwZl9wcm9nX3BhY2tfYWxsb2ModTMyIHNpemUsIGJwZl9qaXRfZmlsbF9ob2xlX3QgYnBmX2ZpbGxfaWxsX2luc25zKVxcbi0tXFxua2VybmVsL2JwZi9jb3JlLmMtOTUyLVxcdFxcdHB0ciA9IGJwZl9qaXRfYWxsb2NfZXhlYyhzaXplKTtcXG5rZXJuZWwvYnBmL2NvcmUuYzo5NTM6XFx0XFx0aWYgKHB0ciBcXHUwMDI2XFx1MDAyNiAhYnBmX2ppdF9tZW1faXNfcm94KCkpIHtcXG5rZXJuZWwvYnBmL2NvcmUuYy05NTQtXFx0XFx0XFx0aW50IGVycjtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjZUMjA6MjU6NTcuODk5OTkxNDg4WiIsIlNlcSI6MTUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQ5MTA5OTkzMDgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBCUEYgSklUIE1lbW9yeSBBbGxvY2F0aW9uIFBhdGNoKipcblxuT2theSwgc28gdGhpcyBwYXRjaCBpcyBjbGVhcmx5IGZvY3VzZWQgb24gaG93IEJQRiBKSVQgbWVtb3J5IGlzIGFsbG9jYXRlZCBhbmQgbWFuYWdlZCwgc3BlY2lmaWNhbGx5IHRhcmdldGluZyB0aGUgaW50ZXJhY3Rpb24gYmV0d2VlbiBgYWxsb2NfbmV3X3BhY2tgLCBgYnBmX3Byb2dfcGFja19hbGxvY2AsIGFuZCB0aGUgbWVtb3J5IHByb3RlY3Rpb24gbWVjaGFuaXNtcy4gVGhlIGNvbmRpdGlvbmFsIGNhbGwgdG8gYHNldF9tZW1vcnlfcm94YCBiYXNlZCBvbiBgYnBmX2ppdF9tZW1faXNfcm94KClgIGlzIHRoZSBnaXZlYXdheSDigJMgdGhpcyBpcyBhbGwgYWJvdXQgbWFraW5nIHRoZSBKSVQnZCBjb2RlIHJlYWQtb25seSB3aGVyZSBhcHByb3ByaWF0ZS5cblxuTXkgcHJpbWFyeSBhcmVhcyBvZiBpbnRlcmVzdCB3aXRoaW4gdGhlIGNvZGUgYXJlLCBuYXR1cmFsbHksIHRoZXNlIGtleSBzeW1ib2xzOiBgYnBmX2ppdF9hbGxvY19leGVjYCwgYGJwZl9qaXRfYWxsb2NfZXhlY19yd2AsIGBicGZfcHJvZ19wYWNrX2FsbG9jYCwgYGFsbG9jX25ld19wYWNrYCwgYW5kIGBicGZfZGlzcGF0Y2hlcl9jaGFuZ2VfcHJvZ2AuIEknbGwgbmVlZCB0byB1bmRlcnN0YW5kIGV4YWN0bHkgaG93IHRoZXNlIGZ1bmN0aW9ucyBpbnRlcmFjdCBhbmQgd2hlcmUgdGhpcyBgc2V0X21lbW9yeV9yb3hgIGNhbGwgZml0cyBpbiB0aGUgb3ZlcmFsbCBwaWN0dXJlIG9mIGNvZGUgZ2VuZXJhdGlvbiBhbmQgZXhlY3V0aW9uLlxuXG5Ob3csIGxldCdzIHNlZSBhYm91dCByZWxldmFudCBjb25maWd1cmF0aW9ucy4gYENPTkZJR19CUEZfSklUYCBpcyBhIGdpdmVuOyB3aXRob3V0IGl0LCB0aGUgSklUIGlzbid0IGV2ZW4gZW5hYmxlZCwgYW5kIHRoaXMgcGF0Y2ggd291bGQgYmUgbW9vdC4gSG93ZXZlciwgdGhlIHVzZSBvZiBgQ09ORklHX0JQRl9TWVNDQUxMYCB3aWxsIHRlbGwgbWUgaWYgdGhlIG1vZGlmaWNhdGlvbnMgd291bGQgYWxzbyBhZmZlY3Qgc3lzY2FsbCBCUEYgcHJvZ3JhbXMuIEknbGwgbmVlZCB0byBkZWx2ZSBpbnRvIHRoZSBjb2RlIHRvIGRldGVybWluZSB3aGV0aGVyIHRoZSBwYXRjaCB0b3VjaGVzIGFyZWFzIG9mIGNvZGUgYXNzb2NpYXRlZCB3aXRoIHN5c2NhbGwgQlBGIHByb2dyYW1zLCB3aGljaCB3b3VsZCBpbmZvcm0gbWUgYWJvdXQgdGhlIHBvdGVudGlhbCBzY29wZSBvZiB0aGlzIGNoYW5nZS4gSSdsbCBzdGFydCBieSBjaGVja2luZyBga2VybmVsL2JwZi9jb3JlLmNgIGFuZCBga2VybmVsL2JwZi9kaXNwYXRjaGVyLmNgLCB0aGF0J3MgdXN1YWxseSB3aGVyZSB0aGUgQlBGIGNvcmUgZnVuY3Rpb25hbGl0eSBhbmQgdGhlIGRpc3BhdGNoaW5nIGxvZ2ljIHJlc2lkZS5cblxuXG4iLCJJbnB1dFRva2VucyI6MTE5MzQsIk91dHB1dFRva2VucyI6MjEsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxODksIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjZUMjA6MjY6MDIuODEwOTkyOTY2WiIsIlNlcSI6MTYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNzE3OTkyMDU3LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIkNPTkZJR19CUEZfSklUXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIkRvY3VtZW50YXRpb24vbmV0d29ya2luZy9maWx0ZXIucnN0PTUxNj1Qb3dlclBDLCBBUk0sIEFSTTY0LCBNSVBTLCBSSVNDLVYsIHMzOTAsIGFuZCBBUkMgYW5kIGNhbiBiZSBlbmFibGVkIHRocm91Z2hcXG5Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvZmlsdGVyLnJzdDo1MTc6Q09ORklHX0JQRl9KSVQuIFRoZSBKSVQgY29tcGlsZXIgaXMgdHJhbnNwYXJlbnRseSBpbnZva2VkIGZvciBlYWNoXFxuRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL2ZpbHRlci5yc3QtNTE4LWF0dGFjaGVkIGZpbHRlciBmcm9tIHVzZXIgc3BhY2Ugb3IgZm9yIGludGVybmFsIGtlcm5lbCB1c2VycyBpZiBpdCBoYXNcXG4tLVxcbkRvY3VtZW50YXRpb24vbmV0d29ya2luZy9maWx0ZXIucnN0PTUyOD1FeGFtcGxlIG91dHB1dCBmcm9tIGRtZXNnOjpcXG4tLVxcbkRvY3VtZW50YXRpb24vbmV0d29ya2luZy9maWx0ZXIucnN0LTUzNi1cXG5Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvZmlsdGVyLnJzdDo1Mzc6V2hlbiBDT05GSUdfQlBGX0pJVF9BTFdBWVNfT04gaXMgZW5hYmxlZCwgYnBmX2ppdF9lbmFibGUgaXMgcGVybWFuZW50bHkgc2V0IHRvIDEgYW5kXFxuRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL2ZpbHRlci5yc3QtNTM4LXNldHRpbmcgYW55IG90aGVyIHZhbHVlIHRoYW4gdGhhdCB3aWxsIHJldHVybiBpbiBmYWlsdXJlLiBUaGlzIGlzIGV2ZW4gdGhlIGNhc2UgZm9yXFxuLS1cXG5Eb2N1bWVudGF0aW9uL3NjaGVkdWxlci9zY2hlZC1leHQucnN0PTM1PW9wdGlvbnMgc2hvdWxkIGJlIGVuYWJsZWQgdG8gdXNlIHNjaGVkX2V4dDpcXG4tLVxcbkRvY3VtZW50YXRpb24vc2NoZWR1bGVyL3NjaGVkLWV4dC5yc3QtNDEtICAgIENPTkZJR19CUEZfU1lTQ0FMTD15XFxuRG9jdW1lbnRhdGlvbi9zY2hlZHVsZXIvc2NoZWQtZXh0LnJzdDo0MjogICAgQ09ORklHX0JQRl9KSVQ9eVxcbkRvY3VtZW50YXRpb24vc2NoZWR1bGVyL3NjaGVkLWV4dC5yc3QtNDMtICAgIENPTkZJR19ERUJVR19JTkZPX0JURj15XFxuRG9jdW1lbnRhdGlvbi9zY2hlZHVsZXIvc2NoZWQtZXh0LnJzdDo0NDogICAgQ09ORklHX0JQRl9KSVRfQUxXQVlTX09OPXlcXG5Eb2N1bWVudGF0aW9uL3NjaGVkdWxlci9zY2hlZC1leHQucnN0OjQ1OiAgICBDT05GSUdfQlBGX0pJVF9ERUZBVUxUX09OPXlcXG5Eb2N1bWVudGF0aW9uL3NjaGVkdWxlci9zY2hlZC1leHQucnN0LTQ2LVxcbi0tXFxuYXJjaC9hcmMvbmV0L01ha2VmaWxlPTM9aWZlcSAoJChDT05GSUdfSVNBX0FSQ1YyKSx5KVxcbmFyY2gvYXJjL25ldC9NYWtlZmlsZTo0OlxcdG9iai0kKENPTkZJR19CUEZfSklUKSArPSBicGZfaml0X2NvcmUub1xcbmFyY2gvYXJjL25ldC9NYWtlZmlsZTo1OlxcdG9iai0kKENPTkZJR19CUEZfSklUKSArPSBicGZfaml0X2FyY3YyLm9cXG5hcmNoL2FyYy9uZXQvTWFrZWZpbGUtNi1lbmRpZlxcbi0tXFxuYXJjaC9hcm0vbmV0L01ha2VmaWxlLTMtXFxuYXJjaC9hcm0vbmV0L01ha2VmaWxlOjQ6b2JqLSQoQ09ORklHX0JQRl9KSVQpICs9IGJwZl9qaXRfMzIub1xcbi0tXFxuYXJjaC9hcm02NC9jb25maWdzL2RlZmNvbmZpZz02PUNPTkZJR19CUEZfU1lTQ0FMTD15XFxuYXJjaC9hcm02NC9jb25maWdzL2RlZmNvbmZpZzo3OkNPTkZJR19CUEZfSklUPXlcXG5hcmNoL2FybTY0L2NvbmZpZ3MvZGVmY29uZmlnLTgtQ09ORklHX1BSRUVNUFQ9eVxcbi0tXFxuYXJjaC9hcm02NC9pbmNsdWRlL2FzbS9leHRhYmxlLmg9MzY9Ym9vbCBpbnNuX21heV9hY2Nlc3NfdXNlcih1bnNpZ25lZCBsb25nIGFkZHIsIHVuc2lnbmVkIGxvbmcgZXNyKTtcXG5hcmNoL2FybTY0L2luY2x1ZGUvYXNtL2V4dGFibGUuaC0zNy1cXG5hcmNoL2FybTY0L2luY2x1ZGUvYXNtL2V4dGFibGUuaDozODojaWZkZWYgQ09ORklHX0JQRl9KSVRcXG5hcmNoL2FybTY0L2luY2x1ZGUvYXNtL2V4dGFibGUuaC0zOS1ib29sIGV4X2hhbmRsZXJfYnBmKGNvbnN0IHN0cnVjdCBleGNlcHRpb25fdGFibGVfZW50cnkgKmV4LFxcbmFyY2gvYXJtNjQvaW5jbHVkZS9hc20vZXh0YWJsZS5oLTQwLVxcdFxcdCAgICBzdHJ1Y3QgcHRfcmVncyAqcmVncyk7XFxuYXJjaC9hcm02NC9pbmNsdWRlL2FzbS9leHRhYmxlLmg6NDE6I2Vsc2UgLyogIUNPTkZJR19CUEZfSklUICovXFxuYXJjaC9hcm02NC9pbmNsdWRlL2FzbS9leHRhYmxlLmgtNDItc3RhdGljIGlubGluZVxcbmFyY2gvYXJtNjQvaW5jbHVkZS9hc20vZXh0YWJsZS5oPTQzPWJvb2wgZXhfaGFuZGxlcl9icGYoY29uc3Qgc3RydWN0IGV4Y2VwdGlvbl90YWJsZV9lbnRyeSAqZXgsXFxuLS1cXG5hcmNoL2FybTY0L2luY2x1ZGUvYXNtL2V4dGFibGUuaC00Ny19XFxuYXJjaC9hcm02NC9pbmNsdWRlL2FzbS9leHRhYmxlLmg6NDg6I2VuZGlmIC8qICFDT05GSUdfQlBGX0pJVCAqL1xcbmFyY2gvYXJtNjQvaW5jbHVkZS9hc20vZXh0YWJsZS5oLTQ5LVxcbi0tXFxuYXJjaC9hcm02NC9uZXQvTWFrZWZpbGUtNC0jXFxuYXJjaC9hcm02NC9uZXQvTWFrZWZpbGU6NTpvYmotJChDT05GSUdfQlBGX0pJVCkgKz0gYnBmX2ppdF9jb21wLm8gYnBmX3RpbWVkX21heV9nb3RvLm9cXG4tLVxcbmFyY2gvbG9vbmdhcmNoL2NvbmZpZ3MvbG9vbmdzb242NF9kZWZjb25maWc9Nz1DT05GSUdfQlBGX1NZU0NBTEw9eVxcbmFyY2gvbG9vbmdhcmNoL2NvbmZpZ3MvbG9vbmdzb242NF9kZWZjb25maWc6ODpDT05GSUdfQlBGX0pJVD15XFxuYXJjaC9sb29uZ2FyY2gvY29uZmlncy9sb29uZ3NvbjY0X2RlZmNvbmZpZy05LUNPTkZJR19QUkVFTVBUPXlcXG4tLVxcbmFyY2gvbG9vbmdhcmNoL2luY2x1ZGUvYXNtL2V4dGFibGUuaD0yNj1kbyB7XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFxcXFxcbi0tXFxuYXJjaC9sb29uZ2FyY2gvaW5jbHVkZS9hc20vZXh0YWJsZS5oLTM0LVxcbmFyY2gvbG9vbmdhcmNoL2luY2x1ZGUvYXNtL2V4dGFibGUuaDozNTojaWZkZWYgQ09ORklHX0JQRl9KSVRcXG5hcmNoL2xvb25nYXJjaC9pbmNsdWRlL2FzbS9leHRhYmxlLmgtMzYtYm9vbCBleF9oYW5kbGVyX2JwZihjb25zdCBzdHJ1Y3QgZXhjZXB0aW9uX3RhYmxlX2VudHJ5ICpleCwgc3RydWN0IHB0X3JlZ3MgKnJlZ3MpO1xcbi0tXFxuYXJjaC9sb29uZ2FyY2gvaW5jbHVkZS9hc20vZXh0YWJsZS5oPTM5PWJvb2wgZXhfaGFuZGxlcl9icGYoY29uc3Qgc3RydWN0IGV4Y2VwdGlvbl90YWJsZV9lbnRyeSAqZXgsIHN0cnVjdCBwdF9yZWdzICpyZWdzKVxcbi0tXFxuYXJjaC9sb29uZ2FyY2gvaW5jbHVkZS9hc20vZXh0YWJsZS5oLTQyLX1cXG5hcmNoL2xvb25nYXJjaC9pbmNsdWRlL2FzbS9leHRhYmxlLmg6NDM6I2VuZGlmIC8qICFDT05GSUdfQlBGX0pJVCAqL1xcbmFyY2gvbG9vbmdhcmNoL2luY2x1ZGUvYXNtL2V4dGFibGUuaC00NC1cXG4tLVxcbmFyY2gvbG9vbmdhcmNoL25ldC9NYWtlZmlsZS02LSNcXG5hcmNoL2xvb25nYXJjaC9uZXQvTWFrZWZpbGU6NzpvYmotJChDT05GSUdfQlBGX0pJVCkgKz0gYnBmX2ppdC5vXFxuLS1cXG5hcmNoL21pcHMvY29uZmlncy9sb29uZ3NvbjNfZGVmY29uZmlnPTg9Q09ORklHX0JQRl9TWVNDQUxMPXlcXG5hcmNoL21pcHMvY29uZmlncy9sb29uZ3NvbjNfZGVmY29uZmlnOjk6Q09ORklHX0JQRl9KSVQ9eVxcbmFyY2gvbWlwcy9jb25maWdzL2xvb25nc29uM19kZWZjb25maWctMTAtQ09ORklHX1BSRUVNUFQ9eVxcbi0tXFxuYXJjaC9taXBzL25ldC9NYWtlZmlsZS0zLVxcbmFyY2gvbWlwcy9uZXQvTWFrZWZpbGU6NDpvYmotJChDT05GSUdfQlBGX0pJVCkgKz0gYnBmX2ppdF9jb21wLm9cXG5hcmNoL21pcHMvbmV0L01ha2VmaWxlLTUtXFxuYXJjaC9taXBzL25ldC9NYWtlZmlsZT02PWlmZXEgKCQoQ09ORklHXzMyQklUKSx5KVxcbmFyY2gvbWlwcy9uZXQvTWFrZWZpbGU6NzogICAgICAgIG9iai0kKENPTkZJR19CUEZfSklUKSArPSBicGZfaml0X2NvbXAzMi5vXFxuYXJjaC9taXBzL25ldC9NYWtlZmlsZS04LWVsc2VcXG5hcmNoL21pcHMvbmV0L01ha2VmaWxlOjk6ICAgICAgICBvYmotJChDT05GSUdfQlBGX0pJVCkgKz0gYnBmX2ppdF9jb21wNjQub1xcbmFyY2gvbWlwcy9uZXQvTWFrZWZpbGUtMTAtZW5kaWZcXG4tLVxcbmFyY2gvcGFyaXNjL25ldC9NYWtlZmlsZS0yLVxcbmFyY2gvcGFyaXNjL25ldC9NYWtlZmlsZTozOm9iai0kKENPTkZJR19CUEZfSklUKSArPSBicGZfaml0X2NvcmUub1xcbmFyY2gvcGFyaXNjL25ldC9NYWtlZmlsZS00LVxcbmFyY2gvcGFyaXNjL25ldC9NYWtlZmlsZT01PWlmZXEgKCQoQ09ORklHXzY0QklUKSx5KVxcbmFyY2gvcGFyaXNjL25ldC9NYWtlZmlsZTo2OlxcdG9iai0kKENPTkZJR19CUEZfSklUKSArPSBicGZfaml0X2NvbXA2NC5vXFxuYXJjaC9wYXJpc2MvbmV0L01ha2VmaWxlLTctZWxzZVxcbmFyY2gvcGFyaXNjL25ldC9NYWtlZmlsZTo4OlxcdG9iai0kKENPTkZJR19CUEZfSklUKSArPSBicGZfaml0X2NvbXAzMi5vXFxuYXJjaC9wYXJpc2MvbmV0L01ha2VmaWxlLTktZW5kaWZcXG4tLVxcbmFyY2gvcG93ZXJwYy9jb25maWdzL21wYzg4NV9hZHNfZGVmY29uZmlnPTQ9Q09ORklHX0hJR0hfUkVTX1RJTUVSUz15XFxuYXJjaC9wb3dlcnBjL2NvbmZpZ3MvbXBjODg1X2Fkc19kZWZjb25maWc6NTpDT05GSUdfQlBGX0pJVD15XFxuYXJjaC9wb3dlcnBjL2NvbmZpZ3MvbXBjODg1X2Fkc19kZWZjb25maWctNi1DT05GSUdfVklSVF9DUFVfQUNDT1VOVElOR19OQVRJVkU9eVxcbi0tXFxuYXJjaC9wb3dlcnBjL2NvbmZpZ3MvcG93ZXJudl9kZWZjb25maWc9OTQ9Q09ORklHX0ROU19SRVNPTFZFUj15XFxuYXJjaC9wb3dlcnBjL2NvbmZpZ3MvcG93ZXJudl9kZWZjb25maWc6OTU6Q09ORklHX0JQRl9KSVQ9eVxcbmFyY2gvcG93ZXJwYy9jb25maWdzL3Bvd2VybnZfZGVmY29uZmlnLTk2LSMgQ09ORklHX1dJUkVMRVNTIGlzIG5vdCBzZXRcXG4tLVxcbmFyY2gvcG93ZXJwYy9jb25maWdzL3BwYzY0X2RlZmNvbmZpZz03PUNPTkZJR19CUEZfU1lTQ0FMTD15XFxuYXJjaC9wb3dlcnBjL2NvbmZpZ3MvcHBjNjRfZGVmY29uZmlnOjg6Q09ORklHX0JQRl9KSVQ9eVxcbmFyY2gvcG93ZXJwYy9jb25maWdzL3BwYzY0X2RlZmNvbmZpZy05LUNPTkZJR19CUEZfTFNNPXlcXG4tLVxcbmFyY2gvcG93ZXJwYy9uZXQvTWFrZWZpbGUtNC0jXFxuYXJjaC9wb3dlcnBjL25ldC9NYWtlZmlsZTo1Om9iai0kKENPTkZJR19CUEZfSklUKSArPSBicGZfaml0X2NvbXAubyBicGZfaml0X2NvbXAkKEJJVFMpLm9cXG5hcmNoL3Bvd2VycGMvbmV0L01ha2VmaWxlLTYtXFxuYXJjaC9wb3dlcnBjL25ldC9NYWtlZmlsZT03PWlmZGVmIENPTkZJR19QUEM2NFxcbmFyY2gvcG93ZXJwYy9uZXQvTWFrZWZpbGU6ODpvYmotJChDT05GSUdfQlBGX0pJVCkgKz0gYnBmX3RpbWVkX21heV9nb3RvLm9cXG5hcmNoL3Bvd2VycGMvbmV0L01ha2VmaWxlLTktZW5kaWZcXG4tLVxcbmFyY2gvcmlzY3YvaW5jbHVkZS9hc20vZXh0YWJsZS5oPTM4PXN0YXRpYyBpbmxpbmUgYm9vbCBmaXh1cF9leGNlcHRpb24oc3RydWN0IHB0X3JlZ3MgKnJlZ3MpIHsgcmV0dXJuIGZhbHNlOyB9XFxuLS1cXG5hcmNoL3Jpc2N2L2luY2x1ZGUvYXNtL2V4dGFibGUuaC00MC1cXG5hcmNoL3Jpc2N2L2luY2x1ZGUvYXNtL2V4dGFibGUuaDo0MTojaWYgZGVmaW5lZChDT05GSUdfQlBGX0pJVCkgXFx1MDAyNlxcdTAwMjYgZGVmaW5lZChDT05GSUdfQVJDSF9SVjY0SSlcXG5hcmNoL3Jpc2N2L2luY2x1ZGUvYXNtL2V4dGFibGUuaC00Mi1ib29sIGV4X2hhbmRsZXJfYnBmKGNvbnN0IHN0cnVjdCBleGNlcHRpb25fdGFibGVfZW50cnkgKmV4LCBzdHJ1Y3QgcHRfcmVncyAqcmVncyk7XFxuLS1cXG5hcmNoL3Jpc2N2L25ldC9NYWtlZmlsZS0yLVxcbmFyY2gvcmlzY3YvbmV0L01ha2VmaWxlOjM6b2JqLSQoQ09ORklHX0JQRl9KSVQpICs9IGJwZl9qaXRfY29yZS5vXFxuYXJjaC9yaXNjdi9uZXQvTWFrZWZpbGUtNC1cXG5hcmNoL3Jpc2N2L25ldC9NYWtlZmlsZT01PWlmZXEgKCQoQ09ORklHX0FSQ0hfUlY2NEkpLHkpXFxuYXJjaC9yaXNjdi9uZXQvTWFrZWZpbGU6NjpcXHRvYmotJChDT05GSUdfQlBGX0pJVCkgKz0gYnBmX2ppdF9jb21wNjQub1xcbmFyY2gvcmlzY3YvbmV0L01ha2VmaWxlLTctZWxzZVxcbmFyY2gvcmlzY3YvbmV0L01ha2VmaWxlOjg6XFx0b2JqLSQoQ09ORklHX0JQRl9KSVQpICs9IGJwZl9qaXRfY29tcDMyLm9cXG5hcmNoL3Jpc2N2L25ldC9NYWtlZmlsZS05LWVuZGlmXFxuLS1cXG5hcmNoL3MzOTAvY29uZmlncy9kZWJ1Z19kZWZjb25maWc9OT1DT05GSUdfQlBGX1NZU0NBTEw9eVxcbmFyY2gvczM5MC9jb25maWdzL2RlYnVnX2RlZmNvbmZpZzoxMDpDT05GSUdfQlBGX0pJVD15XFxuYXJjaC9zMzkwL2NvbmZpZ3MvZGVidWdfZGVmY29uZmlnOjExOkNPTkZJR19CUEZfSklUX0FMV0FZU19PTj15XFxuYXJjaC9zMzkwL2NvbmZpZ3MvZGVidWdfZGVmY29uZmlnLTEyLUNPTkZJR19CUEZfTFNNPXlcXG4tLVxcbmFyY2gvczM5MC9jb25maWdzL2RlZmNvbmZpZz04PUNPTkZJR19CUEZfU1lTQ0FMTD15XFxuYXJjaC9zMzkwL2NvbmZpZ3MvZGVmY29uZmlnOjk6Q09ORklHX0JQRl9KSVQ9eVxcbmFyY2gvczM5MC9jb25maWdzL2RlZmNvbmZpZzoxMDpDT05GSUdfQlBGX0pJVF9BTFdBWVNfT049eVxcbmFyY2gvczM5MC9jb25maWdzL2RlZmNvbmZpZy0xMS1DT05GSUdfQlBGX0xTTT15XFxuLS1cXG5hcmNoL3MzOTAvaW5jbHVkZS9hc20vZXh0YWJsZS5oPTQzPXN0YXRpYyBpbmxpbmUgdm9pZCBzd2FwX2V4X2VudHJ5X2ZpeHVwKHN0cnVjdCBleGNlcHRpb25fdGFibGVfZW50cnkgKmEsXFxuLS1cXG5hcmNoL3MzOTAvaW5jbHVkZS9hc20vZXh0YWJsZS5oLTU2LVxcbmFyY2gvczM5MC9pbmNsdWRlL2FzbS9leHRhYmxlLmg6NTc6I2lmZGVmIENPTkZJR19CUEZfSklUXFxuYXJjaC9zMzkwL2luY2x1ZGUvYXNtL2V4dGFibGUuaC01OC1cXG5hcmNoL3MzOTAvaW5jbHVkZS9hc20vZXh0YWJsZS5oPTU5PWJvb2wgZXhfaGFuZGxlcl9icGYoY29uc3Qgc3RydWN0IGV4Y2VwdGlvbl90YWJsZV9lbnRyeSAqZXgsIHN0cnVjdCBwdF9yZWdzICpyZWdzKTtcXG5hcmNoL3MzOTAvaW5jbHVkZS9hc20vZXh0YWJsZS5oLTYwLVxcbmFyY2gvczM5MC9pbmNsdWRlL2FzbS9leHRhYmxlLmg6NjE6I2Vsc2UgLyogIUNPTkZJR19CUEZfSklUICovXFxuYXJjaC9zMzkwL2luY2x1ZGUvYXNtL2V4dGFibGUuaC02Mi1cXG5hcmNoL3MzOTAvaW5jbHVkZS9hc20vZXh0YWJsZS5oPTYzPXN0YXRpYyBpbmxpbmUgYm9vbCBleF9oYW5kbGVyX2JwZihjb25zdCBzdHJ1Y3QgZXhjZXB0aW9uX3RhYmxlX2VudHJ5ICpleCwgc3RydWN0IHB0X3JlZ3MgKnJlZ3MpXFxuLS1cXG5hcmNoL3MzOTAvaW5jbHVkZS9hc20vZXh0YWJsZS5oLTY3LVxcbmFyY2gvczM5MC9pbmNsdWRlL2FzbS9leHRhYmxlLmg6Njg6I2VuZGlmIC8qIENPTkZJR19CUEZfSklUICovXFxuYXJjaC9zMzkwL2luY2x1ZGUvYXNtL2V4dGFibGUuaC02OS1cXG4tLVxcbmFyY2gvczM5MC9uZXQvTWFrZWZpbGUtNC0jXFxuYXJjaC9zMzkwL25ldC9NYWtlZmlsZTo1Om9iai0kKENPTkZJR19CUEZfSklUKSArPSBicGZfaml0X2NvbXAubyBicGZfdGltZWRfbWF5X2dvdG8ub1xcbmFyY2gvczM5MC9uZXQvTWFrZWZpbGUtNi1vYmotJChDT05GSUdfSEFWRV9QTkVUSUQpICs9IHBuZXQub1xcbi0tXFxuYXJjaC9zcGFyYy9uZXQvTWFrZWZpbGUtNC0jXFxuYXJjaC9zcGFyYy9uZXQvTWFrZWZpbGU6NTpvYmotJChDT05GSUdfQlBGX0pJVCkgKz0gYnBmX2ppdF9jb21wXyQoQklUUykub1xcbmFyY2gvc3BhcmMvbmV0L01ha2VmaWxlLTYtaWZlcSAoJChCSVRTKSwzMilcXG5hcmNoL3NwYXJjL25ldC9NYWtlZmlsZTo3Om9iai0kKENPTkZJR19CUEZfSklUKSArPSBicGZfaml0X2FzbV8zMi5vXFxuYXJjaC9zcGFyYy9uZXQvTWFrZWZpbGUtOC1lbmRpZlxcbi0tXFxuYXJjaC94ODYvaW5jbHVkZS9hc20vZXh0YWJsZS5oPTQ2PXN0YXRpYyBpbmxpbmUgdm9pZCBfX25vcmV0dXJuIGV4X2hhbmRsZXJfbXNyX21jZShzdHJ1Y3QgcHRfcmVncyAqcmVncywgYm9vbCB3cm1zcilcXG4tLVxcbmFyY2gveDg2L2luY2x1ZGUvYXNtL2V4dGFibGUuaC01Mi1cXG5hcmNoL3g4Ni9pbmNsdWRlL2FzbS9leHRhYmxlLmg6NTM6I2lmIGRlZmluZWQoQ09ORklHX0JQRl9KSVQpIFxcdTAwMjZcXHUwMDI2IGRlZmluZWQoQ09ORklHX1g4Nl82NClcXG5hcmNoL3g4Ni9pbmNsdWRlL2FzbS9leHRhYmxlLmgtNTQtYm9vbCBleF9oYW5kbGVyX2JwZihjb25zdCBzdHJ1Y3QgZXhjZXB0aW9uX3RhYmxlX2VudHJ5ICp4LCBzdHJ1Y3QgcHRfcmVncyAqcmVncyk7XFxuLS1cXG5hcmNoL3g4Ni9rZXJuZWwvY2FsbHRodW5rcy5jPTI2NT12b2lkICpjYWxsdGh1bmtzX3RyYW5zbGF0ZV9jYWxsX2Rlc3Qodm9pZCAqZGVzdClcXG4tLVxcbmFyY2gveDg2L2tlcm5lbC9jYWxsdGh1bmtzLmMtMjgwLVxcbmFyY2gveDg2L2tlcm5lbC9jYWxsdGh1bmtzLmM6MjgxOiNpZmRlZiBDT05GSUdfQlBGX0pJVFxcbmFyY2gveDg2L2tlcm5lbC9jYWxsdGh1bmtzLmMtMjgyLXN0YXRpYyBib29sIGlzX2NhbGx0aHVuayh2b2lkICphZGRyKVxcbi0tXFxuYXJjaC94ODYva2VybmVsL3Vud2luZF9vcmMuYz0xODU9c3RhdGljIHN0cnVjdCBvcmNfZW50cnkgKm9yY19icGZfZmluZCh1bnNpZ25lZCBsb25nIGlwKVxcbmFyY2gveDg2L2tlcm5lbC91bndpbmRfb3JjLmMtMTg2LXtcXG5hcmNoL3g4Ni9rZXJuZWwvdW53aW5kX29yYy5jOjE4NzojaWZkZWYgQ09ORklHX0JQRl9KSVRcXG5hcmNoL3g4Ni9rZXJuZWwvdW53aW5kX29yYy5jLTE4OC1cXHRpZiAoYnBmX2hhc19mcmFtZV9wb2ludGVyKGlwKSlcXG4tLVxcbmFyY2gveDg2L25ldC9NYWtlZmlsZT02PWlmZXEgKCQoQ09ORklHX1g4Nl8zMikseSlcXG5hcmNoL3g4Ni9uZXQvTWFrZWZpbGU6NzogICAgICAgIG9iai0kKENPTkZJR19CUEZfSklUKSArPSBicGZfaml0X2NvbXAzMi5vXFxuYXJjaC94ODYvbmV0L01ha2VmaWxlLTgtZWxzZVxcbmFyY2gveDg2L25ldC9NYWtlZmlsZTo5OiAgICAgICAgb2JqLSQoQ09ORklHX0JQRl9KSVQpICs9IGJwZl9qaXRfY29tcC5vIGJwZl90aW1lZF9tYXlfZ290by5vXFxuYXJjaC94ODYvbmV0L01ha2VmaWxlLTEwLWVuZGlmXFxuLS1cXG5pbmNsdWRlL2xpbnV4L2JwZi5oPTE1MDk9c3RydWN0IGJwZl90cmFjaW5nX211bHRpX2xpbms7XFxuaW5jbHVkZS9saW51eC9icGYuaC0xNTEwLVxcbmluY2x1ZGUvbGludXgvYnBmLmg6MTUxMTojaWZkZWYgQ09ORklHX0JQRl9KSVRcXG5pbmNsdWRlL2xpbnV4L2JwZi5oLTE1MTItaW50IGJwZl90cmFtcG9saW5lX2xpbmtfcHJvZyhzdHJ1Y3QgYnBmX3RyYW1wX25vZGUgKm5vZGUsXFxuLS1cXG5pbmNsdWRlL2xpbnV4L2JwZi5oPTIxOTM9c3RhdGljIGlubGluZSBib29sIGlzX3RyYWNpbmdfbXVsdGkoZW51bSBicGZfYXR0YWNoX3R5cGUgdHlwZSlcXG4tLVxcbmluY2x1ZGUvbGludXgvYnBmLmgtMjE5OC1cXG5pbmNsdWRlL2xpbnV4L2JwZi5oOjIxOTk6I2lmIGRlZmluZWQoQ09ORklHX0JQRl9KSVQpIFxcdTAwMjZcXHUwMDI2IGRlZmluZWQoQ09ORklHX0JQRl9TWVNDQUxMKVxcbmluY2x1ZGUvbGludXgvYnBmLmgtMjIwMC0vKiBUaGlzIG1hY3JvIGhlbHBzIGRldmVsb3BlciB0byByZWdpc3RlciBhIHN0cnVjdF9vcHMgdHlwZSBhbmQgZ2VuZXJhdGVcXG4tLVxcbmluY2x1ZGUvbGludXgvYnBmLmg9MzA0Nz1pbnQgYnBmX2NoZWNrKHN0cnVjdCBicGZfcHJvZyAqKmZwLCB1bmlvbiBicGZfYXR0ciAqYXR0ciwgYnBmcHRyX3QgdWF0dHIsXFxuLS1cXG5pbmNsdWRlL2xpbnV4L2JwZi5oLTMwNDktXFxuaW5jbHVkZS9saW51eC9icGYuaDozMDUwOiNpZm5kZWYgQ09ORklHX0JQRl9KSVRfQUxXQVlTX09OXFxuaW5jbHVkZS9saW51eC9icGYuaC0zMDUxLWludCBicGZfcGF0Y2hfY2FsbF9hcmdzKHN0cnVjdCBicGZfaW5zbiAqaW5zbiwgdTMyIHN0YWNrX2RlcHRoKTtcXG4tLVxcbmluY2x1ZGUvbGludXgvYnBmX3R5cGVzLmg9Njc9QlBGX1BST0dfVFlQRShCUEZfUFJPR19UWVBFX1NLX0xPT0tVUCwgc2tfbG9va3VwLFxcbi0tXFxuaW5jbHVkZS9saW51eC9icGZfdHlwZXMuaC02OS0jZW5kaWZcXG5pbmNsdWRlL2xpbnV4L2JwZl90eXBlcy5oOjcwOiNpZiBkZWZpbmVkKENPTkZJR19CUEZfSklUKVxcbmluY2x1ZGUvbGludXgvYnBmX3R5cGVzLmgtNzEtQlBGX1BST0dfVFlQRShCUEZfUFJPR19UWVBFX1NUUlVDVF9PUFMsIGJwZl9zdHJ1Y3Rfb3BzLFxcbi0tXFxuaW5jbHVkZS9saW51eC9icGZfdHlwZXMuaD0xMjg9QlBGX01BUF9UWVBFKEJQRl9NQVBfVFlQRV9TVEFDSywgc3RhY2tfbWFwX29wcylcXG5pbmNsdWRlL2xpbnV4L2JwZl90eXBlcy5oOjEyOTojaWYgZGVmaW5lZChDT05GSUdfQlBGX0pJVClcXG5pbmNsdWRlL2xpbnV4L2JwZl90eXBlcy5oLTEzMC1CUEZfTUFQX1RZUEUoQlBGX01BUF9UWVBFX1NUUlVDVF9PUFMsIGJwZl9zdHJ1Y3Rfb3BzX21hcF9vcHMpXFxuLS1cXG5pbmNsdWRlL2xpbnV4L2J0Zi5oPTUzMj1zdHJ1Y3QgYnBmX3ZlcmlmaWVyX2xvZztcXG5pbmNsdWRlL2xpbnV4L2J0Zi5oLTUzMy1cXG5pbmNsdWRlL2xpbnV4L2J0Zi5oOjUzNDojaWYgZGVmaW5lZChDT05GSUdfQlBGX0pJVCkgXFx1MDAyNlxcdTAwMjYgZGVmaW5lZChDT05GSUdfQlBGX1NZU0NBTEwpXFxuaW5jbHVkZS9saW51eC9idGYuaC01MzUtc3RydWN0IGJwZl9zdHJ1Y3Rfb3BzO1xcbi0tXFxuaW5jbHVkZS9saW51eC9leHRhYmxlLmg9MzA9c2VhcmNoX21vZHVsZV9leHRhYmxlcyh1bnNpZ25lZCBsb25nIGFkZHIpXFxuLS1cXG5pbmNsdWRlL2xpbnV4L2V4dGFibGUuaC0zNS1cXG5pbmNsdWRlL2xpbnV4L2V4dGFibGUuaDozNjojaWZkZWYgQ09ORklHX0JQRl9KSVRcXG5pbmNsdWRlL2xpbnV4L2V4dGFibGUuaC0zNy1jb25zdCBzdHJ1Y3QgZXhjZXB0aW9uX3RhYmxlX2VudHJ5ICpzZWFyY2hfYnBmX2V4dGFibGVzKHVuc2lnbmVkIGxvbmcgYWRkcik7XFxuLS1cXG5pbmNsdWRlL2xpbnV4L2ZpbHRlci5oPTEwOTg9c3RhdGljIGlubGluZSBpbnQgX19tdXN0X2NoZWNrIGJwZl9wcm9nX2xvY2tfcm8oc3RydWN0IGJwZl9wcm9nICpmcClcXG5pbmNsdWRlL2xpbnV4L2ZpbHRlci5oLTEwOTkte1xcbmluY2x1ZGUvbGludXgvZmlsdGVyLmg6MTEwMDojaWZuZGVmIENPTkZJR19CUEZfSklUX0FMV0FZU19PTlxcbmluY2x1ZGUvbGludXgvZmlsdGVyLmgtMTEwMS1cXHRpZiAoIWZwLVxcdTAwM2VqaXRlZCkge1xcbi0tXFxuaW5jbHVkZS9saW51eC9maWx0ZXIuaD0xMjk5PWJwZl9ydW5fc2tfcmV1c2Vwb3J0KHN0cnVjdCBzb2NrX3JldXNlcG9ydCAqcmV1c2UsIHN0cnVjdCBzb2NrICpzayxcXG4tLVxcbmluY2x1ZGUvbGludXgvZmlsdGVyLmgtMTMwNy1cXG5pbmNsdWRlL2xpbnV4L2ZpbHRlci5oOjEzMDg6I2lmZGVmIENPTkZJR19CUEZfSklUXFxuaW5jbHVkZS9saW51eC9maWx0ZXIuaC0xMzA5LWV4dGVybiBpbnQgYnBmX2ppdF9lbmFibGU7XFxuLS1cXG5pbmNsdWRlL2xpbnV4L2ZpbHRlci5oPTE0NDA9dm9pZCBicGZfcHJvZ19rYWxsc3ltc19kZWwoc3RydWN0IGJwZl9wcm9nICpmcCk7XFxuaW5jbHVkZS9saW51eC9maWx0ZXIuaC0xNDQxLVxcbmluY2x1ZGUvbGludXgvZmlsdGVyLmg6MTQ0MjojZWxzZSAvKiBDT05GSUdfQlBGX0pJVCAqL1xcbmluY2x1ZGUvbGludXgvZmlsdGVyLmgtMTQ0My1cXG4tLVxcbmluY2x1ZGUvbGludXgvZmlsdGVyLmg9MTUxOD1zdGF0aWMgaW5saW5lIHZvaWQgYnBmX2ppdF9wcm9nX3JlbGVhc2Vfb3RoZXIoc3RydWN0IGJwZl9wcm9nICpmcCwgc3RydWN0IGJwZl9wcm9nICpmcF9vdGhlcilcXG4tLVxcbmluY2x1ZGUvbGludXgvZmlsdGVyLmgtMTUyMC19XFxuaW5jbHVkZS9saW51eC9maWx0ZXIuaDoxNTIxOiNlbmRpZiAvKiBDT05GSUdfQlBGX0pJVCAqL1xcbmluY2x1ZGUvbGludXgvZmlsdGVyLmgtMTUyMi1cXG4tLVxcbmtlcm5lbC9icGYvS2NvbmZpZz01OD1jb25maWcgQlBGX0pJVF9BTFdBWVNfT05cXG4tLVxcbmtlcm5lbC9icGYvS2NvbmZpZy02NC1cXG5rZXJuZWwvYnBmL0tjb25maWc6NjU6XFx0ICBXaGVuIENPTkZJR19CUEZfSklUX0FMV0FZU19PTiBpcyBlbmFibGVkLCAvcHJvYy9zeXMvbmV0L2NvcmUvYnBmX2ppdF9lbmFibGVcXG5rZXJuZWwvYnBmL0tjb25maWctNjYtXFx0ICBpcyBwZXJtYW5lbnRseSBzZXQgdG8gMSBhbmQgc2V0dGluZyBhbnkgb3RoZXIgdmFsdWUgdGhhbiB0aGF0IHdpbGxcXG4tLVxcbmtlcm5lbC9icGYvTWFrZWZpbGU9Mj1vYmoteSA6PSBjb3JlLm9cXG5rZXJuZWwvYnBmL01ha2VmaWxlOjM6aWZuZXEgKCQoQ09ORklHX0JQRl9KSVRfQUxXQVlTX09OKSx5KVxcbmtlcm5lbC9icGYvTWFrZWZpbGUtNC0jIF9fX2JwZl9wcm9nX3J1bigpIG5lZWRzIEdDU0UgZGlzYWJsZWQgb24geDg2OyBzZWUgMzE5M2MwODM2ZjIwMyBmb3IgZGV0YWlsc1xcbi0tXFxua2VybmVsL2JwZi9NYWtlZmlsZT0xNj1vYmotJChDT05GSUdfQlBGX1NZU0NBTEwpICs9IGRpc2FzbS5vIG1wcm9nLm9cXG5rZXJuZWwvYnBmL01ha2VmaWxlOjE3Om9iai0kKENPTkZJR19CUEZfSklUKSArPSB0cmFtcG9saW5lLm9cXG5rZXJuZWwvYnBmL01ha2VmaWxlLTE4LW9iai0kKENPTkZJR19CUEZfU1lTQ0FMTCkgKz0gYnRmLm8gbWVtYWxsb2MubyBycXNwaW5sb2NrLm8gc3RyZWFtLm9cXG4tLVxcbmtlcm5lbC9icGYvTWFrZWZpbGU9MjE9ZW5kaWZcXG5rZXJuZWwvYnBmL01ha2VmaWxlOjIyOm9iai0kKENPTkZJR19CUEZfSklUKSArPSBkaXNwYXRjaGVyLm9cXG5rZXJuZWwvYnBmL01ha2VmaWxlLTIzLWlmZXEgKCQoQ09ORklHX05FVCkseSlcXG4tLVxcbmtlcm5lbC9icGYvTWFrZWZpbGU9NDI9ZW5kaWZcXG5rZXJuZWwvYnBmL01ha2VmaWxlOjQzOmlmZXEgKCQoQ09ORklHX0JQRl9KSVQpLHkpXFxua2VybmVsL2JwZi9NYWtlZmlsZS00NC1vYmotJChDT05GSUdfQlBGX1NZU0NBTEwpICs9IGJwZl9zdHJ1Y3Rfb3BzLm9cXG4tLVxcbmtlcm5lbC9icGYvYnRmLmM9OTc3OD1ib29sIGJ0Zl90eXBlX2lkc19ub2Nhc3RfYWxpYXMoc3RydWN0IGJwZl92ZXJpZmllcl9sb2cgKmxvZyxcXG4tLVxcbmtlcm5lbC9icGYvYnRmLmMtOTgzMi1cXG5rZXJuZWwvYnBmL2J0Zi5jOjk4MzM6I2lmZGVmIENPTkZJR19CUEZfSklUXFxua2VybmVsL2JwZi9idGYuYy05ODM0LXN0YXRpYyBpbnRcXG4tLVxcbmtlcm5lbC9icGYvY29yZS5jPTUzOT12b2lkIGJwZl9wcm9nX2thbGxzeW1zX2RlbF9hbGwoc3RydWN0IGJwZl9wcm9nICpmcClcXG4tLVxcbmtlcm5lbC9icGYvY29yZS5jLTU0NC1cXG5rZXJuZWwvYnBmL2NvcmUuYzo1NDU6I2lmZGVmIENPTkZJR19CUEZfSklUXFxua2VybmVsL2JwZi9jb3JlLmMtNTQ2LS8qIEFsbCBCUEYgSklUIHN5c2N0bCBrbm9icyBoZXJlLiAqL1xcbmtlcm5lbC9icGYvY29yZS5jOjU0NzppbnQgYnBmX2ppdF9lbmFibGUgICBfX3JlYWRfbW9zdGx5ID0gSVNfQlVJTFRJTihDT05GSUdfQlBGX0pJVF9ERUZBVUxUX09OKTtcXG5rZXJuZWwvYnBmL2NvcmUuYzo1NDg6aW50IGJwZl9qaXRfa2FsbHN5bXMgX19yZWFkX21vc3RseSA9IElTX0JVSUxUSU4oQ09ORklHX0JQRl9KSVRfREVGQVVMVF9PTik7XFxua2VybmVsL2JwZi9jb3JlLmMtNTQ5LWludCBicGZfaml0X2hhcmRlbiAgIF9fcmVhZF9tb3N0bHk7XFxuLS1cXG5rZXJuZWwvYnBmL2NvcmUuYz0xNTk4PXUxNiBicGZfb3V0X3N0YWNrX2FyZ19jbnQoY29uc3Qgc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudiwgY29uc3Qgc3RydWN0IGJwZl9wcm9nICpwcm9nKVxcbi0tXFxua2VybmVsL2JwZi9jb3JlLmMtMTYwNi19XFxua2VybmVsL2JwZi9jb3JlLmM6MTYwNzojZW5kaWYgLyogQ09ORklHX0JQRl9KSVQgKi9cXG5rZXJuZWwvYnBmL2NvcmUuYy0xNjA4LVxcbi0tXFxua2VybmVsL2JwZi9jb3JlLmM9MTc2Nj1ib29sIGJwZl9vcGNvZGVfaW5faW5zbnRhYmxlKHU4IGNvZGUpXFxuLS1cXG5rZXJuZWwvYnBmL2NvcmUuYy0xNzg4LVxcbmtlcm5lbC9icGYvY29yZS5jOjE3ODk6I2lmbmRlZiBDT05GSUdfQlBGX0pJVF9BTFdBWVNfT05cXG5rZXJuZWwvYnBmL2NvcmUuYy0xNzkwLS8qIEFic29sdXRlIHZhbHVlIG9mIHMzMiB3aXRob3V0IHVuZGVmaW5lZCBiZWhhdmlvciBmb3IgUzMyX01JTiAqL1xcbi0tXFxua2VybmVsL2JwZi9jb3JlLmM9MjU1Mz1zdGF0aWMgYm9vbCBicGZfcHJvZ19zZWxlY3RfaW50ZXJwcmV0ZXIoc3RydWN0IGJwZl9wcm9nICpmcClcXG4tLVxcbmtlcm5lbC9icGYvY29yZS5jLTI1NTUtXFx0Ym9vbCBzZWxlY3RfaW50ZXJwcmV0ZXIgPSBmYWxzZTtcXG5rZXJuZWwvYnBmL2NvcmUuYzoyNTU2OiNpZm5kZWYgQ09ORklHX0JQRl9KSVRfQUxXQVlTX09OXFxua2VybmVsL2JwZi9jb3JlLmMtMjU1Ny1cXHR1MzIgc3RhY2tfZGVwdGggPSBtYXhfdCh1MzIsIGZwLVxcdTAwM2VhdXgtXFx1MDAzZXN0YWNrX2RlcHRoLCAxKTtcXG4tLVxcbmtlcm5lbC9icGYvY29yZS5jPTI1NzY9c3RhdGljIHN0cnVjdCBicGZfcHJvZyAqYnBmX3Byb2dfaml0X2NvbXBpbGUoc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudiwgc3RydWN0IGJwZl9wcm9nICpwcm9nKVxcbmtlcm5lbC9icGYvY29yZS5jLTI1Nzcte1xcbmtlcm5lbC9icGYvY29yZS5jOjI1Nzg6I2lmZGVmIENPTkZJR19CUEZfSklUXFxua2VybmVsL2JwZi9jb3JlLmMtMjU3OS1cXHRzdHJ1Y3QgYnBmX3Byb2cgKm9yaWdfcHJvZztcXG4tLVxcbmtlcm5lbC9icGYvY29yZS5jPTI2MjM9c3RydWN0IGJwZl9wcm9nICpfX2JwZl9wcm9nX3NlbGVjdF9ydW50aW1lKHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYsIHN0cnVjdCBicGZfcHJvZyAqZnAsXFxuLS1cXG5rZXJuZWwvYnBmL2NvcmUuYy0yNjMzLVxcbmtlcm5lbC9icGYvY29yZS5jOjI2MzQ6XFx0aWYgKElTX0VOQUJMRUQoQ09ORklHX0JQRl9KSVRfQUxXQVlTX09OKSB8fFxcbmtlcm5lbC9icGYvY29yZS5jLTI2MzUtXFx0ICAgIGJwZl9wcm9nX2hhc19rZnVuY19jYWxsKGZwKSlcXG4tLVxcbmtlcm5lbC9icGYvZml4dXBzLmM9MTI3PXN0YXRpYyBpbnQgYWRkX2tmdW5jX2luX2luc25zKHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYsXFxuLS1cXG5rZXJuZWwvYnBmL2ZpeHVwcy5jLTE0MS1cXG5rZXJuZWwvYnBmL2ZpeHVwcy5jOjE0MjojaWZuZGVmIENPTkZJR19CUEZfSklUX0FMV0FZU19PTlxcbmtlcm5lbC9icGYvZml4dXBzLmMtMTQzLXN0YXRpYyBpbnQgZ2V0X2NhbGxlZV9zdGFja19kZXB0aChzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52LFxcbi0tXFxua2VybmVsL2JwZi9maXh1cHMuYz0xMzc2PWludCBicGZfZml4dXBfY2FsbF9hcmdzKHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYpXFxua2VybmVsL2JwZi9maXh1cHMuYy0xMzc3LXtcXG5rZXJuZWwvYnBmL2ZpeHVwcy5jOjEzNzg6I2lmbmRlZiBDT05GSUdfQlBGX0pJVF9BTFdBWVNfT05cXG5rZXJuZWwvYnBmL2ZpeHVwcy5jLTEzNzktXFx0c3RydWN0IGJwZl9wcm9nICpwcm9nID0gZW52LVxcdTAwM2Vwcm9nO1xcbi0tXFxua2VybmVsL2JwZi9maXh1cHMuYy0xNDA1LVxcdH1cXG5rZXJuZWwvYnBmL2ZpeHVwcy5jOjE0MDY6I2lmbmRlZiBDT05GSUdfQlBGX0pJVF9BTFdBWVNfT05cXG5rZXJuZWwvYnBmL2ZpeHVwcy5jLTE0MDctXFx0aWYgKGhhc19rZnVuY19jYWxsKSB7XFxuLS1cXG5rZXJuZWwvYnBmL3N5c2NhbGwuYz02NTc4PWludCBrZXJuX3N5c19icGYoaW50IGNtZCwgdW5pb24gYnBmX2F0dHIgKmF0dHIsIHVuc2lnbmVkIGludCBzaXplKVxcbi0tXFxua2VybmVsL2JwZi9zeXNjYWxsLmMtNjU4My1cXHRzd2l0Y2ggKGNtZCkge1xcbmtlcm5lbC9icGYvc3lzY2FsbC5jOjY1ODQ6I2lmZGVmIENPTkZJR19CUEZfSklUIC8qIF9fYnBmX3Byb2dfZW50ZXJfc2xlZXBhYmxlIHVzZWQgYnkgdHJhbXBvbGluZSBhbmQgSklUICovXFxua2VybmVsL2JwZi9zeXNjYWxsLmMtNjU4NS1cXHRjYXNlIEJQRl9QUk9HX1RFU1RfUlVOOlxcbi0tXFxua2VybmVsL2JwZi92ZXJpZmllci5jPTQ0MTg9QlRGX0lEKHN0cnVjdCwgY2dyb3VwKVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy00NDE5LSNlbmRpZlxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYzo0NDIwOiNpZmRlZiBDT05GSUdfQlBGX0pJVFxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy00NDIxLUJURl9JRChzdHJ1Y3QsIGJwZl9jcHVtYXNrKVxcbi0tXFxubmV0L2JwZi9NYWtlZmlsZT0yPW9iai0kKENPTkZJR19CUEZfU1lTQ0FMTClcXHQ6PSB0ZXN0X3J1bi5vXFxubmV0L2JwZi9NYWtlZmlsZTozOmlmZXEgKCQoQ09ORklHX0JQRl9KSVQpLHkpXFxubmV0L2JwZi9NYWtlZmlsZS00LW9iai0kKENPTkZJR19CUEZfU1lTQ0FMTClcXHQrPSBicGZfZHVtbXlfc3RydWN0X29wcy5vXFxuLS1cXG5uZXQvY29yZS9zeXNjdGxfbmV0X2NvcmUuYz0zNTI9c3RhdGljIGludCBwcm9jX2RvX3NrYl9kZWZlcl9tYXgoY29uc3Qgc3RydWN0IGN0bF90YWJsZSAqdGFibGUsIGludCB3cml0ZSxcXG4tLVxcbm5ldC9jb3JlL3N5c2N0bF9uZXRfY29yZS5jLTM3NC1cXG5uZXQvY29yZS9zeXNjdGxfbmV0X2NvcmUuYzozNzU6I2lmZGVmIENPTkZJR19CUEZfSklUXFxubmV0L2NvcmUvc3lzY3RsX25ldF9jb3JlLmMtMzc2LXN0YXRpYyBpbnQgcHJvY19kb2ludHZlY19taW5tYXhfYnBmX2VuYWJsZShjb25zdCBzdHJ1Y3QgY3RsX3RhYmxlICp0YWJsZSwgaW50IHdyaXRlLFxcbi0tXFxubmV0L2NvcmUvc3lzY3RsX25ldF9jb3JlLmMtNDAxLVxcdGlmICh3cml0ZSBcXHUwMDI2XFx1MDAyNiByZXQgXFx1MDAyNlxcdTAwMjYgbWluID09IG1heClcXG5uZXQvY29yZS9zeXNjdGxfbmV0X2NvcmUuYzo0MDI6XFx0XFx0cHJfaW5mb19vbmNlKFxcXCJDT05GSUdfQlBGX0pJVF9BTFdBWVNfT04gaXMgZW5hYmxlZCwgYnBmX2ppdF9lbmFibGUgaXMgcGVybWFuZW50bHkgc2V0IHRvIDEuXFxcXG5cXFwiKTtcXG5uZXQvY29yZS9zeXNjdGxfbmV0X2NvcmUuYy00MDMtXFxuLS1cXG5uZXQvY29yZS9zeXNjdGxfbmV0X2NvcmUuYz00MzA9c3RhdGljIHN0cnVjdCBjdGxfdGFibGUgbmV0X2NvcmVfdGFibGVbXSA9IHtcXG4tLVxcbm5ldC9jb3JlL3N5c2N0bF9uZXRfY29yZS5jLTQ4My1cXHR9LFxcbm5ldC9jb3JlL3N5c2N0bF9uZXRfY29yZS5jOjQ4NDojaWZkZWYgQ09ORklHX0JQRl9KSVRcXG5uZXQvY29yZS9zeXNjdGxfbmV0X2NvcmUuYy00ODUtXFx0e1xcbi0tXFxubmV0L2NvcmUvc3lzY3RsX25ldF9jb3JlLmMtNDkwLVxcdFxcdC5wcm9jX2hhbmRsZXJcXHQ9IHByb2NfZG9pbnR2ZWNfbWlubWF4X2JwZl9lbmFibGUsXFxubmV0L2NvcmUvc3lzY3RsX25ldF9jb3JlLmM6NDkxOiMgaWZkZWYgQ09ORklHX0JQRl9KSVRfQUxXQVlTX09OXFxubmV0L2NvcmUvc3lzY3RsX25ldF9jb3JlLmMtNDkyLVxcdFxcdC5leHRyYTFcXHRcXHQ9IFNZU0NUTF9PTkUsXFxuLS1cXG5uZXQvaXB2NC9NYWtlZmlsZT02OT1vYmotJChDT05GSUdfVENQX0FPKSArPSB0Y3BfYW8ub1xcbm5ldC9pcHY0L01ha2VmaWxlLTcwLVxcbm5ldC9pcHY0L01ha2VmaWxlOjcxOmlmZXEgKCQoQ09ORklHX0JQRl9KSVQpLHkpXFxubmV0L2lwdjQvTWFrZWZpbGUtNzItb2JqLSQoQ09ORklHX0JQRl9TWVNDQUxMKSArPSBicGZfdGNwX2NhLm9cXG4tLVxcbnNjcmlwdHMvZ2RiL2xpbnV4L2JwZi5weT05PWZyb20gbGludXggaW1wb3J0IGNvbnN0YW50cywgbGlzdHMsIHJhZGl4dHJlZSwgdXRpbHNcXG4tLVxcbnNjcmlwdHMvZ2RiL2xpbnV4L2JwZi5weS0xMS1cXG5zY3JpcHRzL2dkYi9saW51eC9icGYucHk6MTI6aWYgY29uc3RhbnRzLkxYX0NPTkZJR19CUEYgYW5kIGNvbnN0YW50cy5MWF9DT05GSUdfQlBGX0pJVDpcXG5zY3JpcHRzL2dkYi9saW51eC9icGYucHktMTMtICAgIGJwZl9rc3ltX3R5cGUgPSB1dGlscy5DYWNoZWRUeXBlKFxcXCJzdHJ1Y3QgYnBmX2tzeW1cXFwiKVxcbi0tXFxuc2NyaXB0cy9nZGIvbGludXgvYnBmLnB5PTI2PWRlZiBsaXN0X2tzeW1zKCk6XFxuc2NyaXB0cy9nZGIvbGludXgvYnBmLnB5OjI3OiAgICBpZiBub3QgKGNvbnN0YW50cy5MWF9DT05GSUdfQlBGIGFuZCBjb25zdGFudHMuTFhfQ09ORklHX0JQRl9KSVQpOlxcbnNjcmlwdHMvZ2RiL2xpbnV4L2JwZi5weS0yOC0gICAgICAgIHJldHVybiBbXVxcbi0tXFxuc2NyaXB0cy9nZGIvbGludXgvY29uc3RhbnRzLnB5LmluPTE3Mz1MWF9DT05GSUcoQ09ORklHX0JQRilcXG5zY3JpcHRzL2dkYi9saW51eC9jb25zdGFudHMucHkuaW46MTc0OkxYX0NPTkZJRyhDT05GSUdfQlBGX0pJVClcXG5zY3JpcHRzL2dkYi9saW51eC9jb25zdGFudHMucHkuaW4tMTc1LUxYX0NPTkZJRyhDT05GSUdfQlBGX1NZU0NBTEwpXFxuLS1cXG5zY3JpcHRzL2dkYi9saW51eC9zeW1ib2xzLnB5PTEyMT1hcmUgbG9hZGVkIGFzIHdlbGwuXFxcIlxcXCJcXFwiXFxuLS1cXG5zY3JpcHRzL2dkYi9saW51eC9zeW1ib2xzLnB5LTMzMi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYucmVtb3ZlX2JwZl9wcm9nKVxcbnNjcmlwdHMvZ2RiL2xpbnV4L3N5bWJvbHMucHk6MzMzOiAgICAgICAgICAgIGlmIGNvbnN0YW50cy5MWF9DT05GSUdfQlBGIGFuZCBjb25zdGFudHMuTFhfQ09ORklHX0JQRl9KSVQ6XFxuc2NyaXB0cy9nZGIvbGludXgvc3ltYm9scy5weS0zMzQtICAgICAgICAgICAgICAgIHNlbGYuYnBmX2tzeW1fbW9uaXRvciA9IGJwZi5Lc3ltTW9uaXRvcihzZWxmLmFkZF9icGZfa3N5bSxcXG4tLVxcbnRvb2xzL2JwZi9icGZ0b29sL2ZlYXR1cmUuYz0zMjg9c3RhdGljIHZvaWQgcHJvYmVfa2VybmVsX2ltYWdlX2NvbmZpZyhjb25zdCBjaGFyICpkZWZpbmVfcHJlZml4KVxcbi0tXFxudG9vbHMvYnBmL2JwZnRvb2wvZmVhdHVyZS5jLTMzNy1cXHRcXHQvKiBDb21waWxlIGVCUEYgSklUIGNvbXBpbGVyICovXFxudG9vbHMvYnBmL2JwZnRvb2wvZmVhdHVyZS5jOjMzODpcXHRcXHR7IFxcXCJDT05GSUdfQlBGX0pJVFxcXCIsIH0sXFxudG9vbHMvYnBmL2JwZnRvb2wvZmVhdHVyZS5jLTMzOS1cXHRcXHQvKiBBdm9pZCBjb21waWxpbmcgZUJQRiBpbnRlcnByZXRlciAodXNlIEpJVCBvbmx5KSAqL1xcbnRvb2xzL2JwZi9icGZ0b29sL2ZlYXR1cmUuYzozNDA6XFx0XFx0eyBcXFwiQ09ORklHX0JQRl9KSVRfQUxXQVlTX09OXFxcIiwgfSxcXG50b29scy9icGYvYnBmdG9vbC9mZWF0dXJlLmMtMzQxLVxcdFxcdC8qIEtlcm5lbCBCVEYgZGVidWcgaW5mb3JtYXRpb24gYXZhaWxhYmxlICovXFxuLS1cXG50b29scy9zY2hlZF9leHQvS2NvbmZpZz00PUNPTkZJR19CUEZfU1lTQ0FMTD15XFxudG9vbHMvc2NoZWRfZXh0L0tjb25maWc6NTpDT05GSUdfQlBGX0pJVD15XFxudG9vbHMvc2NoZWRfZXh0L0tjb25maWctNi1DT05GSUdfREVCVUdfSU5GT19CVEY9eVxcbnRvb2xzL3NjaGVkX2V4dC9LY29uZmlnOjc6Q09ORklHX0JQRl9KSVRfQUxXQVlTX09OPXlcXG50b29scy9zY2hlZF9leHQvS2NvbmZpZzo4OkNPTkZJR19CUEZfSklUX0RFRkFVTFRfT049eVxcbnRvb2xzL3NjaGVkX2V4dC9LY29uZmlnLTktQ09ORklHX1NDSEVEX0NMQVNTX0VYVD15XFxuLS1cXG50b29scy9zY2hlZF9leHQvUkVBRE1FLm1kPTU4PUNPTkZJR19CUEZfU1lTQ0FMTD15XFxudG9vbHMvc2NoZWRfZXh0L1JFQURNRS5tZDo1OTpDT05GSUdfQlBGX0pJVD15XFxudG9vbHMvc2NoZWRfZXh0L1JFQURNRS5tZC02MC1DT05GSUdfREVCVUdfSU5GT19CVEY9eVxcbnRvb2xzL3NjaGVkX2V4dC9SRUFETUUubWQ6NjE6Q09ORklHX0JQRl9KSVRfQUxXQVlTX09OPXlcXG50b29scy9zY2hlZF9leHQvUkVBRE1FLm1kOjYyOkNPTkZJR19CUEZfSklUX0RFRkFVTFRfT049eVxcbnRvb2xzL3NjaGVkX2V4dC9SRUFETUUubWQtNjMtYGBgXFxuLS1cXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvY29uZmlnPTU9Q09ORklHX0JQRl9FVkVOVFM9eVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9jb25maWc6NjpDT05GSUdfQlBGX0pJVD15XFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL2NvbmZpZy03LUNPTkZJR19CUEZfS1BST0JFX09WRVJSSURFPXlcXG4tLVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9jb25maWcuYWFyY2g2ND0xMz1DT05GSUdfQk9ORElORz15XFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL2NvbmZpZy5hYXJjaDY0OjE0OkNPTkZJR19CUEZfSklUX0FMV0FZU19PTj15XFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL2NvbmZpZy5hYXJjaDY0OjE1OkNPTkZJR19CUEZfSklUX0RFRkFVTFRfT049eVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9jb25maWcuYWFyY2g2NC0xNi1DT05GSUdfQlBGX1BSRUxPQURfVU1EPXlcXG4tLVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9jb25maWcucHBjNjRlbD02PUNPTkZJR19CT05ESU5HPXlcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvY29uZmlnLnBwYzY0ZWw6NzpDT05GSUdfQlBGX0pJVF9BTFdBWVNfT049eVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9jb25maWcucHBjNjRlbC04LUNPTkZJR19CUEZfUFJFTE9BRF9VTUQ9eVxcbi0tXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL2NvbmZpZy5yaXNjdjY0PTU9Q09ORklHX0JPTkRJTkc9eVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9jb25maWcucmlzY3Y2NDo2OkNPTkZJR19CUEZfSklUX0FMV0FZU19PTj15XFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL2NvbmZpZy5yaXNjdjY0LTctQ09ORklHX0JQRl9QUkVMT0FEPXlcXG4tLVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9jb25maWcuczM5MHg9Nz1DT05GSUdfQk9ORElORz15XFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL2NvbmZpZy5zMzkweDo4OkNPTkZJR19CUEZfSklUX0FMV0FZU19PTj15XFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL2NvbmZpZy5zMzkweDo5OkNPTkZJR19CUEZfSklUX0RFRkFVTFRfT049eVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9jb25maWcuczM5MHgtMTAtQ09ORklHX0JQRl9QUkVMT0FEPXlcXG4tLVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9jb25maWcueDg2XzY0PTE4PUNPTkZJR19CT09UVElNRV9UUkFDSU5HPXlcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvY29uZmlnLng4Nl82NDoxOTpDT05GSUdfQlBGX0pJVF9BTFdBWVNfT049eVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9jb25maWcueDg2XzY0LTIwLUNPTkZJR19CUEZfUFJFTE9BRD15XFxuLS1cXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9oaWQvY29uZmlnPTE9Q09ORklHX0JQRl9FVkVOVFM9eVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2hpZC9jb25maWc6MjpDT05GSUdfQlBGX0pJVF9BTFdBWVNfT049eVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2hpZC9jb25maWc6MzpDT05GSUdfQlBGX0pJVD15XFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvaGlkL2NvbmZpZy00LUNPTkZJR19CUEZfS1BST0JFX09WRVJSSURFPXlcXG4tLVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL3Zzb2NrL2NvbmZpZz0zPUNPTkZJR19CUEZfU1lTQ0FMTD15XFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvdnNvY2svY29uZmlnOjQ6Q09ORklHX0JQRl9KSVQ9eVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL3Zzb2NrL2NvbmZpZy01LUNPTkZJR19IQVZFX0VCUEZfSklUPXlcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjZUMjA6MjY6MDQuNTI4OTg5MDAzWiIsIlNlcSI6MTcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjg3NTgxNzMyODMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQlBGIEpJVCBNZW1vcnkgQWxsb2NhdGlvbiBSZXZpZXcqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGFuZCB0aGUgcHJpbWFyeSBwb2ludCBvZiBpbnRlcmVzdCBpcyBgQ09ORklHX0JQRl9KSVRgLiBUaGF0J3MgdGhlIGtleS4gTGV0J3Mgc2VlIHdoYXQncyBiZWluZyB0b3VjaGVkLiBJIG5lZWQgdG8gZm9jdXMgb24gdGhlc2Ugc3ltYm9sczogYGJwZl9qaXRfYWxsb2NfZXhlY2AsIGBicGZfaml0X2FsbG9jX2V4ZWNfcndgLCBgYnBmX3Byb2dfcGFja19hbGxvY2AsIGFuZCBgYnBmX2Rpc3BhdGNoZXJfY2hhbmdlX3Byb2dgLiBJIGFscmVhZHkga25vdyBgYWxsb2NfbmV3X3BhY2tgIGlzIHN0YXRpYywgc28gSSBjYW4gaWdub3JlIGl0IGZvciBteSBwdXJwb3Nlcy5cblxuTm93LCBsZXQgbWUgY29uZmlybTogYXJlIHRob3NlIGNyaXRpY2FsIGZ1bmN0aW9ucyBleHBvcnRlZD8gWWVzLCBgYnBmX2ppdF9hbGxvY19leGVjYCwgYGJwZl9qaXRfYWxsb2NfZXhlY19yd2AsIGBicGZfcHJvZ19wYWNrX2FsbG9jYCwgYW5kIGBicGZfZGlzcGF0Y2hlcl9jaGFuZ2VfcHJvZ2AgYXJlIGFsbCBnbG9iYWwgc3ltYm9scy4gVGhhdCBtZWFucyB0aGV5IGFyZSBkZWZpbml0ZWx5IHdpdGhpbiByZWFjaC5cblxuVGhlcmVmb3JlLCBJJ2xsIGluY2x1ZGUgYWxsIG9mIHRob3NlIGluIG15IGFuYWx5c2lzOiBgYnBmX2ppdF9hbGxvY19leGVjYCwgYGJwZl9qaXRfYWxsb2NfZXhlY19yd2AsIGBicGZfcHJvZ19wYWNrX2FsbG9jYCwgYW5kIGBicGZfZGlzcGF0Y2hlcl9jaGFuZ2VfcHJvZ2AuXG5cbk15IHJlYXNvbmluZyBpcyB0aGlzOiBUaGlzIHBhdGNoIGlzIGZ1bmRhbWVudGFsbHkgYWx0ZXJpbmcgdGhlIEJQRiBKSVQgbWVtb3J5IGFsbG9jYXRpb24gc3RyYXRlZ3kuIEl0J3MgaW50cm9kdWNpbmcgYGJwZl9qaXRfYWxsb2NfZXhlY19yd2AsIGFuZCBpdCdzIGNvbmRpdGlvbmFsbHkgbWFraW5nIG1lbW9yeSByZWFkLW9ubHkgYmFzZWQgb24gYGJwZl9qaXRfbWVtX2lzX3JveCgpYC4gRnVydGhlcm1vcmUsIEkgc2VlIHRoYXQgdGhlIHBhdGNoIGFsdGVycyBgYnBmX2Rpc3BhdGNoZXJfY2hhbmdlX3Byb2dgIHRvIGVtcGxveSBgdm1hbGxvY2AgaW5zdGVhZCBvZiB1c2luZyBgYnBmX2ppdF9hbGxvY19leGVjYC4gVGhhdCdzIGEgc2lnbmlmaWNhbnQgY2hhbmdlLiBUaGVzZSBhcmUgYWxsIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byBCUEYgSklUIG1lbW9yeSBtYW5hZ2VtZW50LiBUaGV5IGFyZSAqcmVhY2hhYmxlKiB0aHJvdWdoIEJQRiBwcm9ncmFtIGxvYWRpbmcgYW5kIGRpc3BhdGNoZXIgdXBkYXRlcywgd2hpY2ggbWVhbnMgdGhleSdyZSBhYnNvbHV0ZWx5IHdvcnRoIGludmVzdGlnYXRpbmcuXG5cblRoaXMgcGF0Y2ggZGVwZW5kcyBvbiBgQlBGX0pJVGAuIFRoYXQncyBub3Qgc3VycHJpc2luZy4gQW5kLCBzaW5jZSB0aGUgY2hhbmdlcyBhcmUgc2lnbmlmaWNhbnQgYW5kIGludm9sdmUgbWVtb3J5IG1hbmFnZW1lbnQsIHRoaXMgaXMgZGVmaW5pdGVseSB3b3J0aCBmdXp6aW5nLlxuXG5KdXN0IHRvIGRvdWJsZSBjaGVjaywgSSB3YW50IHRvIGNvbmZpcm0gYGJwZl9kaXNwYXRjaGVyX2NoYW5nZV9wcm9nYCdzIGNvbnRleHQuIEkgY2FuIHNlZSBpdCBpcyBsb2NhdGVkIGluIGBrZXJuZWwvYnBmL2Rpc3BhdGNoZXIuY2AuIElzIGl0IGNvbnRyb2xsZWQgYnkgYENPTkZJR19CUEZfSklUYD8gQWgsIHllcywgbG9va2luZyBhdCB0aGUgYGtlcm5lbC9icGYvTWFrZWZpbGVgLCB0aGUgZGlzcGF0Y2hlciBjb2RlIGlzIGJ1aWx0IGlmIGBDT05GSUdfQlBGX0pJVGAgaXMgZW5hYmxlZC5cblxuQW5kIHJlZ2FyZGluZyBgYnBmX2ppdF9hbGxvY19leGVjX3J3YCwgSSBzZWUgaXQgaXMgaW4gYGtlcm5lbC9icGYvY29yZS5jYC4gSGFuZyBvbi4gSXQgc2VlbXMgYGtlcm5lbC9icGYvY29yZS5jYCBpcyBhbHdheXMgY29tcGlsZWQuIEhvd2V2ZXIsIGlzIGBicGZfaml0X2FsbG9jX2V4ZWNfcndgICp1bmNvbmRpdGlvbmFsbHkqIGRlZmluZWQgaW4gYGtlcm5lbC9icGYvY29yZS5jYD8gT2theSwgSSdsbCBxdWlja2x5IGxvb2sgYXJvdW5kIGxpbmUgMTA3MCBpbiBga2VybmVsL2JwZi9jb3JlLmNgIHRvIGJlIGNlcnRhaW4uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIxNzMyLCJPdXRwdXRUb2tlbnMiOjM3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NTc4LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI2VDIwOjI2OjEzLjI4NzE2Mzg3NloiLCJTZXEiOjE4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxODE0NzAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwia2VybmVsL2JwZi9jb3JlLmNcIixcbiAgXCJGaXJzdExpbmVcIjogMTA2MCxcbiAgXCJMaW5lQ291bnRcIjogMzBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiMTA2MDpcXHRcXHR9XFxuMTA2MTpcXHRcXG4xMDYyOlxcdFxcdHJldHVybiAwO1xcbjEwNjM6XFx0fVxcbjEwNjQ6XFx0XFxuMTA2NTpcXHR2b2lkIGJwZl9qaXRfdW5jaGFyZ2VfbW9kbWVtKHUzMiBzaXplKVxcbjEwNjY6XFx0e1xcbjEwNjc6XFx0XFx0YXRvbWljX2xvbmdfc3ViKHNpemUsIFxcdTAwMjZicGZfaml0X2N1cnJlbnQpO1xcbjEwNjg6XFx0fVxcbjEwNjk6XFx0XFxuMTA3MDpcXHR2b2lkICpicGZfaml0X2FsbG9jX2V4ZWModW5zaWduZWQgbG9uZyBzaXplKVxcbjEwNzE6XFx0e1xcbjEwNzI6XFx0XFx0cmV0dXJuIGV4ZWNtZW1fYWxsb2MoRVhFQ01FTV9CUEYsIHNpemUpO1xcbjEwNzM6XFx0fVxcbjEwNzQ6XFx0XFxuMTA3NTpcXHR2b2lkICpicGZfaml0X2FsbG9jX2V4ZWNfcncodW5zaWduZWQgbG9uZyBzaXplKVxcbjEwNzY6XFx0e1xcbjEwNzc6XFx0XFx0cmV0dXJuIGV4ZWNtZW1fYWxsb2NfcncoRVhFQ01FTV9CUEYsIHNpemUpO1xcbjEwNzg6XFx0fVxcbjEwNzk6XFx0XFxuMTA4MDpcXHR2b2lkIGJwZl9qaXRfZnJlZV9leGVjKHZvaWQgKmFkZHIpXFxuMTA4MTpcXHR7XFxuMTA4MjpcXHRcXHRleGVjbWVtX2ZyZWUoYWRkcik7XFxuMTA4MzpcXHR9XFxuMTA4NDpcXHRcXG4xMDg1OlxcdHN0cnVjdCBicGZfYmluYXJ5X2hlYWRlciAqXFxuMTA4NjpcXHRicGZfaml0X2JpbmFyeV9hbGxvYyh1bnNpZ25lZCBpbnQgcHJvZ2xlbiwgdTggKippbWFnZV9wdHIsXFxuMTA4NzpcXHRcXHRcXHQgICAgIHVuc2lnbmVkIGludCBhbGlnbm1lbnQsXFxuMTA4ODpcXHRcXHRcXHQgICAgIGJwZl9qaXRfZmlsbF9ob2xlX3QgYnBmX2ZpbGxfaWxsX2luc25zKVxcbjEwODk6XFx0e1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0yNlQyMDoyNjoxMy4yODczNDc0MzZaIiwiU2VxIjoxOSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MjI1ODk3NTk0ODUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aGF0LlxuXG4qKkJQRiBKSVQgRGVwZW5kZW5jeSoqXG5cblJpZ2h0LCBzbywgSSBzZWUgdGhhdCB0aGlzIGlzICp1bmNvbmRpdGlvbmFsbHkqIGRlZmluZWQsIHdoaWNoIGlzIGdvb2QuIFRoYXQncyBhIHNvbGlkIGZvdW5kYXRpb24uIFNwZWNpZmljYWxseSwgdGhlIGRlZmluaXRpb24gaXMgc2l0dGluZyBpbiBga2VybmVsL2JwZi9jb3JlLmNgLiBObyBzdXJwcmlzZXMgdGhlcmUuXG5cbkhvd2V2ZXIsIGFuZCB0aGlzIGlzIHRoZSBjcnVjaWFsIHBvaW50LCBpdHMgcHJhY3RpY2FsIGFwcGxpY2F0aW9u4oCUaXRzIGFjdHVhbCAqdXNlKuKAlGhpbmdlcyBvbiB0aGUgQlBGIEpJVCBjb21waWxlci4gVGhlIGZ1bmN0aW9uIGBicGZfaml0X2FsbG9jX2V4ZWNfcndgIGlzIGtleSBoZXJlLiBJIG5lZWQgdGhhdCBCUEYgSklUIGZ1bmN0aW9uYWxpdHkuIExvb2tpbmcgYXQgdGhlIGNvZGUgcGF0aCwgdGhpcyBgYnBmX2ppdF9hbGxvY19leGVjX3J3YCBpcyBhY3R1YWxseSBjYWxsZWQgZnJvbSBgYXJjaC94ODYvbmV0L2JwZl9qaXRfY29tcC5jYC4gVGhhdCB0ZWxscyBtZSBJIG5lZWQgdG8gYmUgc3VyZSB0aGF0IHRoZSBKSVQgaXMgZW5hYmxlZCBhbmQgZnVuY3Rpb25hbCB3aXRoaW4gdGhhdCBhcmNoaXRlY3R1cmUsIHNwZWNpZmljYWxseS5cblxuTm93IEkgaGF2ZSB3aGF0IEkgbmVlZCwgSSdtIHJlYWR5IHRvIHByb2NlZWQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIzMzg3LCJPdXRwdXRUb2tlbnMiOjE4NiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjc1LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjZUMjA6MjY6MzUuODc3MTA4NzEyWiIsIlNlcSI6MjAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6Nzc5NjUxOTksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIkJQRl9KSVRcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJicGZfaml0X2FsbG9jX2V4ZWNcIixcbiAgICBcImJwZl9qaXRfYWxsb2NfZXhlY19yd1wiLFxuICAgIFwiYnBmX3Byb2dfcGFja19hbGxvY1wiLFxuICAgIFwiYnBmX2Rpc3BhdGNoZXJfY2hhbmdlX3Byb2dcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyBCUEYgSklUIG1lbW9yeSBhbGxvY2F0aW9uIGxvZ2ljLCBpbnRyb2R1Y2luZyBhIG5ldyBgYnBmX2ppdF9hbGxvY19leGVjX3J3YCBmdW5jdGlvbiBhbmQgY29uZGl0aW9uYWxseSBzZXR0aW5nIG1lbW9yeSB0byBST1ggYmFzZWQgb24gYGJwZl9qaXRfbWVtX2lzX3JveCgpYC4gSXQgYWxzbyBjaGFuZ2VzIGBicGZfZGlzcGF0Y2hlcl9jaGFuZ2VfcHJvZ2AgdG8gdXNlIGB2bWFsbG9jYCBpbnN0ZWFkIG9mIGBicGZfaml0X2FsbG9jX2V4ZWNgLiBUaGVzZSBhcmUgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIEJQRiBKSVQgbWVtb3J5IG1hbmFnZW1lbnQgYW5kIGFyZSByZWFjaGFibGUgdmlhIEJQRiBwcm9ncmFtIGxvYWRpbmcgYW5kIGRpc3BhdGNoZXIgdXBkYXRlcy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJCUEZfSklUXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiYnBmX2ppdF9hbGxvY19leGVjXCIsXG4gICAgXCJicGZfaml0X2FsbG9jX2V4ZWNfcndcIixcbiAgICBcImJwZl9wcm9nX3BhY2tfYWxsb2NcIixcbiAgICBcImJwZl9kaXNwYXRjaGVyX2NoYW5nZV9wcm9nXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgQlBGIEpJVCBtZW1vcnkgYWxsb2NhdGlvbiBsb2dpYywgaW50cm9kdWNpbmcgYSBuZXcgYGJwZl9qaXRfYWxsb2NfZXhlY19yd2AgZnVuY3Rpb24gYW5kIGNvbmRpdGlvbmFsbHkgc2V0dGluZyBtZW1vcnkgdG8gUk9YIGJhc2VkIG9uIGBicGZfaml0X21lbV9pc19yb3goKWAuIEl0IGFsc28gY2hhbmdlcyBgYnBmX2Rpc3BhdGNoZXJfY2hhbmdlX3Byb2dgIHRvIHVzZSBgdm1hbGxvY2AgaW5zdGVhZCBvZiBgYnBmX2ppdF9hbGxvY19leGVjYC4gVGhlc2UgYXJlIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byBCUEYgSklUIG1lbW9yeSBtYW5hZ2VtZW50IGFuZCBhcmUgcmVhY2hhYmxlIHZpYSBCUEYgcHJvZ3JhbSBsb2FkaW5nIGFuZCBkaXNwYXRjaGVyIHVwZGF0ZXMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0udG9rZW5zIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnVG9vbER1ciA9IHN0YXRzLnRvb2wuY291bnQgPiAwID8gKHN0YXRzLnRvb2wuZHVyYXRpb24gLyBzdGF0cy50b29sLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCgkJCWNvbnN0IGxsbVN1bWFyeUNlbGxzID0gW3N0YXRzLmxsbS5jb3VudCwgc3RhdHMubGxtLnRva2VucywgYXZnTGxtVG9rZW4sIHN0YXRzLmxsbS5kdXJhdGlvbiwgYXZnTGxtRHVyXTsKCQkJY29uc3QgdG9vbFN1bW1hcnlDZWxscyA9IFtzdGF0cy50b29sLmNvdW50LCBzdGF0cy50b29sLmR1cmF0aW9uLCBhdmdUb29sRHVyXTsKCgkJCWNvbnN0IGxsbVN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xsbV9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJbGxtU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IGxsbVRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJbGxtU3VtYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCWxsbVRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCWxsbVN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKGxsbVRyKTsKCgkJCWNvbnN0IHRvb2xTdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b29sX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQl0b29sU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IHRvb2xUciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCXRvb2xTdW1tYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCXRvb2xUci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQl0b29sU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQodG9vbFRyKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgZmlsdGVyZWRTdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gWyJsbG0iLCAidG9vbCJdLmluY2x1ZGVzKGQuVHlwZSkpOwoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdEdXJhdGlvbicpOwoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOyAKCgkJCWZpbHRlcmVkU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCQoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7CgkJCQlsZXQgdG9vbHRpcCA9IHMuTmFtZTsKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iICYmIHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCQkJCWRhdGEuYWRkUm93KFtgJHtzLlNlcX1gLCBkdXIsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUaW1lIENvbnN1bXB0aW9uIG9mIExMTS9Ub29sIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0vVG9vbCBTdGVwcycsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdTZWNvbmRzJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkdXJhdGlvbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgbGxtU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IGQuVHlwZSA9PT0gImxsbSIpOwoJCQlpZiAobGxtU3RlcHMubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdUb2tlbnMnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAnc3R5bGUnfSk7CQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOwkKCgkJCWNvbnN0IGFnZW50Q29sb3JzID0ge307CgkJCWNvbnN0IHBhbGV0dGUgPSBbJyM0Mjg1RjQnLCAnI0RCNDQzNycsICcjRjRCNDAwJywgJyMwRjlENTgnLCAnI0FCNDdCQycsICcjMDBBQ0MxJ107CgkJCWxldCBjb2xvcklkeCA9IDA7CgkJCWNvbnN0IGFnZW50TExNQ291bnRzID0ge307CgkJCWxsbVN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQlpZiAoIWFnZW50Q29sb3JzW3MuTmFtZV0pIHsKCQkJCQlhZ2VudENvbG9yc1tzLk5hbWVdID0gcGFsZXR0ZVtjb2xvcklkeCAlIHBhbGV0dGUubGVuZ3RoXTsKCQkJCQljb2xvcklkeCsrOwoJCQkJfQoKCQkJCWFnZW50TExNQ291bnRzW3MuTmFtZV0gPSAoYWdlbnRMTE1Db3VudHNbcy5OYW1lXSB8fCAwKSArIDE7CgkJCQljb25zdCBsYWJlbCA9IGAke3MuTmFtZX0tJHthZ2VudExMTUNvdW50c1tzLk5hbWVdfWA7CgkJCQljb25zdCB0b3RhbFRva2VucyA9IHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnM7CgkJCQljb25zdCBzdHlsZSA9IGBjb2xvcjogJHthZ2VudENvbG9yc1tzLk5hbWVdfWA7CgkJCQlsZXQgdG9vbHRpcCA9IGBUb3RhbCBUb2tlbnM6ICR7dG90YWxUb2tlbnN9XG4oSW46ICR7cy5JbnB1dFRva2Vuc30sIE91dDogJHtzLk91dHB1dFRva2Vuc30sIFRob3VnaHRzOiAke3MuT3V0cHV0VGhvdWdodHNUb2tlbnN9KWA7CgkJCQlpZiAocy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoKCQkJCWRhdGEuYWRkUm93KFtsYWJlbCwgdG90YWxUb2tlbnMsIHN0eWxlLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVG9rZW4gQ29uc3VtcHRpb24gYnkgTExNIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0gQ2FsbCBTZXF1ZW5jZScsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdDb25zdW1lZCBUb2tlbnMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rva2VuX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgkJbGV0IGFsbEV4cGFuZGVkID0gZmFsc2U7CgkJZnVuY3Rpb24gdG9nZ2xlQWxsRGV0YWlscygpIHsKCQkJYWxsRXhwYW5kZWQgPSAhYWxsRXhwYW5kZWQ7CgkJCWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ2RldGFpbHMnKS5mb3JFYWNoKGQgPT4gewoJCQkJaWYgKGFsbEV4cGFuZGVkKSBkLnNldEF0dHJpYnV0ZSgnb3BlbicsICcnKTsKCQkJCWVsc2UgZC5yZW1vdmVBdHRyaWJ1dGUoJ29wZW4nKTsKCQkJfSk7CgkJfQoJPC9zY3JpcHQ+CgoKPC9ib2R5Pgo8L2h0bWw+Cg==" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowb6x7d[1] Phase: Succeeded StartedAt: 2026-06-26 20:26:47 +0000 UTC FinishedAt: 2026-06-26 20:26:47 +0000 UTC Input: nil Output: nil --------- Name: series-workflowb6x7d[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-06-26 20:26:47 +0000 UTC FinishedAt: 2026-06-26 20:26:47 +0000 UTC Input: nil Output: nil --------- Name: series-workflowb6x7d[2] Phase: Succeeded StartedAt: 2026-06-26 20:26:47 +0000 UTC FinishedAt: 2026-06-26 22:26:47 +0000 UTC Input: nil Output: nil --------- Name: series-workflowb6x7d[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"53435562a725962e4de0c29653223129ba11643a","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["bpf_jit_alloc_exec","bpf_jit_alloc_exec_rw","bpf_prog_pack_alloc","bpf_dispatcher_change_prog"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"53435562a725962e4de0c29653223129ba11643a","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT"],"series_id":"c05b7734-95d0-4937-b801-ff01b95dbffe","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN) Phase: Failed StartedAt: 2026-06-26 20:26:47 +0000 UTC FinishedAt: 2026-06-26 22:26:47 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"53435562a725962e4de0c29653223129ba11643a","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},"fuzz":{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["bpf_jit_alloc_exec","bpf_jit_alloc_exec_rw","bpf_prog_pack_alloc","bpf_dispatcher_change_prog"],"skip_cover_check":false},"patched":{"arch":"amd64","commit_hash":"53435562a725962e4de0c29653223129ba11643a","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT"],"series_id":"c05b7734-95d0-4937-b801-ff01b95dbffe","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},"retest":null,"track":"KASAN"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: nil --------- Name: series-workflowb6x7d[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"53435562a725962e4de0c29653223129ba11643a","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["bpf_jit_alloc_exec","bpf_jit_alloc_exec_rw","bpf_prog_pack_alloc","bpf_dispatcher_change_prog"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"53435562a725962e4de0c29653223129ba11643a","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT"],"series_id":"c05b7734-95d0-4937-b801-ff01b95dbffe","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[0] Phase: Succeeded StartedAt: 2026-06-26 20:26:47 +0000 UTC FinishedAt: 2026-06-26 20:26:57 +0000 UTC Input: nil Output: nil --------- Name: series-workflowb6x7d[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"53435562a725962e4de0c29653223129ba11643a","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["bpf_jit_alloc_exec","bpf_jit_alloc_exec_rw","bpf_prog_pack_alloc","bpf_dispatcher_change_prog"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"53435562a725962e4de0c29653223129ba11643a","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT"],"series_id":"c05b7734-95d0-4937-b801-ff01b95dbffe","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[0].save-base-req Phase: Succeeded StartedAt: 2026-06-26 20:26:47 +0000 UTC FinishedAt: 2026-06-26 20:26:53 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"53435562a725962e4de0c29653223129ba11643a","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-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-workflowb6x7d/series-workflowb6x7d-convert-artifact-307596260/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowb6x7d[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"53435562a725962e4de0c29653223129ba11643a","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["bpf_jit_alloc_exec","bpf_jit_alloc_exec_rw","bpf_prog_pack_alloc","bpf_dispatcher_change_prog"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"53435562a725962e4de0c29653223129ba11643a","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT"],"series_id":"c05b7734-95d0-4937-b801-ff01b95dbffe","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[1] Phase: Succeeded StartedAt: 2026-06-26 20:26:57 +0000 UTC FinishedAt: 2026-06-26 20:53:16 +0000 UTC Input: nil Output: nil --------- Name: series-workflowb6x7d[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"53435562a725962e4de0c29653223129ba11643a","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["bpf_jit_alloc_exec","bpf_jit_alloc_exec_rw","bpf_prog_pack_alloc","bpf_dispatcher_change_prog"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"53435562a725962e4de0c29653223129ba11643a","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT"],"series_id":"c05b7734-95d0-4937-b801-ff01b95dbffe","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[1].base-build Phase: Succeeded StartedAt: 2026-06-26 20:26:57 +0000 UTC FinishedAt: 2026-06-26 20:53:16 +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:*ee73e0e9-1005-4cf9-a567-d1f2a8792978,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-workflowb6x7d/series-workflowb6x7d-convert-artifact-307596260/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": "5d847ccb-3196-468c-833d-4e06da453d72", "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-workflowb6x7d/series-workflowb6x7d-build-action-1031875618/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowb6x7d[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"53435562a725962e4de0c29653223129ba11643a","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["bpf_jit_alloc_exec","bpf_jit_alloc_exec_rw","bpf_prog_pack_alloc","bpf_dispatcher_change_prog"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"53435562a725962e4de0c29653223129ba11643a","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT"],"series_id":"c05b7734-95d0-4937-b801-ff01b95dbffe","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[1].base-build(0) Phase: Succeeded StartedAt: 2026-06-26 20:26:57 +0000 UTC FinishedAt: 2026-06-26 20:53:06 +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:*ee73e0e9-1005-4cf9-a567-d1f2a8792978,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-workflowb6x7d/series-workflowb6x7d-convert-artifact-307596260/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": "5d847ccb-3196-468c-833d-4e06da453d72", "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-workflowb6x7d/series-workflowb6x7d-build-action-1031875618/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowb6x7d[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"53435562a725962e4de0c29653223129ba11643a","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["bpf_jit_alloc_exec","bpf_jit_alloc_exec_rw","bpf_prog_pack_alloc","bpf_dispatcher_change_prog"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"53435562a725962e4de0c29653223129ba11643a","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT"],"series_id":"c05b7734-95d0-4937-b801-ff01b95dbffe","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[2] Phase: Succeeded StartedAt: 2026-06-26 20:53:16 +0000 UTC FinishedAt: 2026-06-26 20:53:16 +0000 UTC Input: nil Output: nil --------- Name: series-workflowb6x7d[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"53435562a725962e4de0c29653223129ba11643a","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["bpf_jit_alloc_exec","bpf_jit_alloc_exec_rw","bpf_prog_pack_alloc","bpf_dispatcher_change_prog"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"53435562a725962e4de0c29653223129ba11643a","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT"],"series_id":"c05b7734-95d0-4937-b801-ff01b95dbffe","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[2].abort-if-base-build-failed Phase: Skipped StartedAt: 2026-06-26 20:53:16 +0000 UTC FinishedAt: 2026-06-26 20:53:16 +0000 UTC Input: nil Output: nil --------- Name: series-workflowb6x7d[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"53435562a725962e4de0c29653223129ba11643a","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["bpf_jit_alloc_exec","bpf_jit_alloc_exec_rw","bpf_prog_pack_alloc","bpf_dispatcher_change_prog"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"53435562a725962e4de0c29653223129ba11643a","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT"],"series_id":"c05b7734-95d0-4937-b801-ff01b95dbffe","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[3] Phase: Succeeded StartedAt: 2026-06-26 20:53:16 +0000 UTC FinishedAt: 2026-06-26 20:53:26 +0000 UTC Input: nil Output: nil --------- Name: series-workflowb6x7d[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"53435562a725962e4de0c29653223129ba11643a","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["bpf_jit_alloc_exec","bpf_jit_alloc_exec_rw","bpf_prog_pack_alloc","bpf_dispatcher_change_prog"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"53435562a725962e4de0c29653223129ba11643a","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT"],"series_id":"c05b7734-95d0-4937-b801-ff01b95dbffe","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[3].save-patched-req Phase: Succeeded StartedAt: 2026-06-26 20:53:16 +0000 UTC FinishedAt: 2026-06-26 20:53:22 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"53435562a725962e4de0c29653223129ba11643a","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT"],"series_id":"c05b7734-95d0-4937-b801-ff01b95dbffe","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-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-workflowb6x7d/series-workflowb6x7d-convert-artifact-324405219/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowb6x7d[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"53435562a725962e4de0c29653223129ba11643a","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["bpf_jit_alloc_exec","bpf_jit_alloc_exec_rw","bpf_prog_pack_alloc","bpf_dispatcher_change_prog"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"53435562a725962e4de0c29653223129ba11643a","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT"],"series_id":"c05b7734-95d0-4937-b801-ff01b95dbffe","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[4] Phase: Succeeded StartedAt: 2026-06-26 20:53:26 +0000 UTC FinishedAt: 2026-06-26 20:55:46 +0000 UTC Input: nil Output: nil --------- Name: series-workflowb6x7d[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"53435562a725962e4de0c29653223129ba11643a","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["bpf_jit_alloc_exec","bpf_jit_alloc_exec_rw","bpf_prog_pack_alloc","bpf_dispatcher_change_prog"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"53435562a725962e4de0c29653223129ba11643a","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT"],"series_id":"c05b7734-95d0-4937-b801-ff01b95dbffe","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[4].boot-test-base Phase: Succeeded StartedAt: 2026-06-26 20:53:26 +0000 UTC FinishedAt: 2026-06-26 20:55:36 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*5d847ccb-3196-468c-833d-4e06da453d72,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-workflowb6x7d/series-workflowb6x7d-build-action-1031875618/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-workflowb6x7d[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"53435562a725962e4de0c29653223129ba11643a","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["bpf_jit_alloc_exec","bpf_jit_alloc_exec_rw","bpf_prog_pack_alloc","bpf_dispatcher_change_prog"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"53435562a725962e4de0c29653223129ba11643a","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT"],"series_id":"c05b7734-95d0-4937-b801-ff01b95dbffe","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[5] Phase: Succeeded StartedAt: 2026-06-26 20:55:46 +0000 UTC FinishedAt: 2026-06-26 20:55:46 +0000 UTC Input: nil Output: nil --------- Name: series-workflowb6x7d[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"53435562a725962e4de0c29653223129ba11643a","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["bpf_jit_alloc_exec","bpf_jit_alloc_exec_rw","bpf_prog_pack_alloc","bpf_dispatcher_change_prog"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"53435562a725962e4de0c29653223129ba11643a","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT"],"series_id":"c05b7734-95d0-4937-b801-ff01b95dbffe","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[5].abort-if-base-boot-failed Phase: Skipped StartedAt: 2026-06-26 20:55:46 +0000 UTC FinishedAt: 2026-06-26 20:55:46 +0000 UTC Input: nil Output: nil --------- Name: series-workflowb6x7d[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"53435562a725962e4de0c29653223129ba11643a","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["bpf_jit_alloc_exec","bpf_jit_alloc_exec_rw","bpf_prog_pack_alloc","bpf_dispatcher_change_prog"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"53435562a725962e4de0c29653223129ba11643a","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT"],"series_id":"c05b7734-95d0-4937-b801-ff01b95dbffe","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[6] Phase: Succeeded StartedAt: 2026-06-26 20:55:46 +0000 UTC FinishedAt: 2026-06-26 21:29:41 +0000 UTC Input: nil Output: nil --------- Name: series-workflowb6x7d[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"53435562a725962e4de0c29653223129ba11643a","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["bpf_jit_alloc_exec","bpf_jit_alloc_exec_rw","bpf_prog_pack_alloc","bpf_dispatcher_change_prog"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"53435562a725962e4de0c29653223129ba11643a","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT"],"series_id":"c05b7734-95d0-4937-b801-ff01b95dbffe","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[6].patched-build Phase: Succeeded StartedAt: 2026-06-26 20:55:46 +0000 UTC FinishedAt: 2026-06-26 21:29:41 +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:*ee73e0e9-1005-4cf9-a567-d1f2a8792978,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-workflowb6x7d/series-workflowb6x7d-convert-artifact-324405219/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": "fb764982-1fb5-4751-8110-295f606b3808", "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-workflowb6x7d/series-workflowb6x7d-build-action-2708165783/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowb6x7d[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"53435562a725962e4de0c29653223129ba11643a","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["bpf_jit_alloc_exec","bpf_jit_alloc_exec_rw","bpf_prog_pack_alloc","bpf_dispatcher_change_prog"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"53435562a725962e4de0c29653223129ba11643a","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT"],"series_id":"c05b7734-95d0-4937-b801-ff01b95dbffe","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[6].patched-build(0) Phase: Succeeded StartedAt: 2026-06-26 20:55:46 +0000 UTC FinishedAt: 2026-06-26 21:29:20 +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:*ee73e0e9-1005-4cf9-a567-d1f2a8792978,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-workflowb6x7d/series-workflowb6x7d-convert-artifact-324405219/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": "fb764982-1fb5-4751-8110-295f606b3808", "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-workflowb6x7d/series-workflowb6x7d-build-action-2708165783/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowb6x7d[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"53435562a725962e4de0c29653223129ba11643a","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["bpf_jit_alloc_exec","bpf_jit_alloc_exec_rw","bpf_prog_pack_alloc","bpf_dispatcher_change_prog"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"53435562a725962e4de0c29653223129ba11643a","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT"],"series_id":"c05b7734-95d0-4937-b801-ff01b95dbffe","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[7] Phase: Succeeded StartedAt: 2026-06-26 21:29:41 +0000 UTC FinishedAt: 2026-06-26 21:29:41 +0000 UTC Input: nil Output: nil --------- Name: series-workflowb6x7d[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"53435562a725962e4de0c29653223129ba11643a","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["bpf_jit_alloc_exec","bpf_jit_alloc_exec_rw","bpf_prog_pack_alloc","bpf_dispatcher_change_prog"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"53435562a725962e4de0c29653223129ba11643a","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT"],"series_id":"c05b7734-95d0-4937-b801-ff01b95dbffe","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[7].abort-if-patched-build-failed Phase: Skipped StartedAt: 2026-06-26 21:29:41 +0000 UTC FinishedAt: 2026-06-26 21:29:41 +0000 UTC Input: nil Output: nil --------- Name: series-workflowb6x7d[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"53435562a725962e4de0c29653223129ba11643a","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["bpf_jit_alloc_exec","bpf_jit_alloc_exec_rw","bpf_prog_pack_alloc","bpf_dispatcher_change_prog"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"53435562a725962e4de0c29653223129ba11643a","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT"],"series_id":"c05b7734-95d0-4937-b801-ff01b95dbffe","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[8] Phase: Succeeded StartedAt: 2026-06-26 21:29:41 +0000 UTC FinishedAt: 2026-06-26 21:31:27 +0000 UTC Input: nil Output: nil --------- Name: series-workflowb6x7d[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"53435562a725962e4de0c29653223129ba11643a","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["bpf_jit_alloc_exec","bpf_jit_alloc_exec_rw","bpf_prog_pack_alloc","bpf_dispatcher_change_prog"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"53435562a725962e4de0c29653223129ba11643a","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT"],"series_id":"c05b7734-95d0-4937-b801-ff01b95dbffe","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[8].boot-test-patched Phase: Succeeded StartedAt: 2026-06-26 21:29:41 +0000 UTC FinishedAt: 2026-06-26 21:31:17 +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:*fb764982-1fb5-4751-8110-295f606b3808,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-workflowb6x7d/series-workflowb6x7d-build-action-2708165783/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-workflowb6x7d[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"53435562a725962e4de0c29653223129ba11643a","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["bpf_jit_alloc_exec","bpf_jit_alloc_exec_rw","bpf_prog_pack_alloc","bpf_dispatcher_change_prog"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"53435562a725962e4de0c29653223129ba11643a","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT"],"series_id":"c05b7734-95d0-4937-b801-ff01b95dbffe","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[10] Phase: Failed StartedAt: 2026-06-26 21:31:27 +0000 UTC FinishedAt: 2026-06-26 22:26:47 +0000 UTC Input: nil Output: nil --------- Name: series-workflowb6x7d[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"53435562a725962e4de0c29653223129ba11643a","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["bpf_jit_alloc_exec","bpf_jit_alloc_exec_rw","bpf_prog_pack_alloc","bpf_dispatcher_change_prog"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"53435562a725962e4de0c29653223129ba11643a","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT"],"series_id":"c05b7734-95d0-4937-b801-ff01b95dbffe","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[10].run-fuzz Phase: Failed StartedAt: 2026-06-26 21:31:27 +0000 UTC FinishedAt: 2026-06-26 22:26:47 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:config,Default:nil,Value:*{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["bpf_jit_alloc_exec","bpf_jit_alloc_exec_rw","bpf_prog_pack_alloc","bpf_dispatcher_change_prog"],"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:*5d847ccb-3196-468c-833d-4e06da453d72,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*fb764982-1fb5-4751-8110-295f606b3808,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-workflowb6x7d/series-workflowb6x7d-build-action-1031875618/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-workflowb6x7d/series-workflowb6x7d-build-action-2708165783/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflowb6x7d[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"53435562a725962e4de0c29653223129ba11643a","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["bpf_jit_alloc_exec","bpf_jit_alloc_exec_rw","bpf_prog_pack_alloc","bpf_dispatcher_change_prog"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"53435562a725962e4de0c29653223129ba11643a","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT"],"series_id":"c05b7734-95d0-4937-b801-ff01b95dbffe","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[10].run-fuzz[0] Phase: Succeeded StartedAt: 2026-06-26 21:31:27 +0000 UTC FinishedAt: 2026-06-26 21:31:37 +0000 UTC Input: nil Output: nil --------- Name: series-workflowb6x7d[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"53435562a725962e4de0c29653223129ba11643a","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["bpf_jit_alloc_exec","bpf_jit_alloc_exec_rw","bpf_prog_pack_alloc","bpf_dispatcher_change_prog"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"53435562a725962e4de0c29653223129ba11643a","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT"],"series_id":"c05b7734-95d0-4937-b801-ff01b95dbffe","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[10].run-fuzz[0].save-fuzz-config Phase: Succeeded StartedAt: 2026-06-26 21:31:27 +0000 UTC FinishedAt: 2026-06-26 21:31:33 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["bpf_jit_alloc_exec","bpf_jit_alloc_exec_rw","bpf_prog_pack_alloc","bpf_dispatcher_change_prog"],"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-workflowb6x7d/series-workflowb6x7d-convert-artifact-442423292/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowb6x7d[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"53435562a725962e4de0c29653223129ba11643a","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["bpf_jit_alloc_exec","bpf_jit_alloc_exec_rw","bpf_prog_pack_alloc","bpf_dispatcher_change_prog"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"53435562a725962e4de0c29653223129ba11643a","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT"],"series_id":"c05b7734-95d0-4937-b801-ff01b95dbffe","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[10].run-retest Phase: Skipped StartedAt: 2026-06-26 21:31:27 +0000 UTC FinishedAt: 2026-06-26 21:31:27 +0000 UTC Input: nil Output: nil --------- Name: series-workflowb6x7d[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"53435562a725962e4de0c29653223129ba11643a","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["bpf_jit_alloc_exec","bpf_jit_alloc_exec_rw","bpf_prog_pack_alloc","bpf_dispatcher_change_prog"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"53435562a725962e4de0c29653223129ba11643a","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT"],"series_id":"c05b7734-95d0-4937-b801-ff01b95dbffe","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[9] Phase: Succeeded StartedAt: 2026-06-26 21:31:27 +0000 UTC FinishedAt: 2026-06-26 21:31:27 +0000 UTC Input: nil Output: nil --------- Name: series-workflowb6x7d[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"53435562a725962e4de0c29653223129ba11643a","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["bpf_jit_alloc_exec","bpf_jit_alloc_exec_rw","bpf_prog_pack_alloc","bpf_dispatcher_change_prog"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"53435562a725962e4de0c29653223129ba11643a","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT"],"series_id":"c05b7734-95d0-4937-b801-ff01b95dbffe","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[9].abort-if-patched-boot-failed Phase: Skipped StartedAt: 2026-06-26 21:31:27 +0000 UTC FinishedAt: 2026-06-26 21:31:27 +0000 UTC Input: nil Output: nil --------- Name: series-workflowb6x7d[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"53435562a725962e4de0c29653223129ba11643a","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["bpf_jit_alloc_exec","bpf_jit_alloc_exec_rw","bpf_prog_pack_alloc","bpf_dispatcher_change_prog"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"53435562a725962e4de0c29653223129ba11643a","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT"],"series_id":"c05b7734-95d0-4937-b801-ff01b95dbffe","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[10].run-fuzz[1] Phase: Failed StartedAt: 2026-06-26 21:31:37 +0000 UTC FinishedAt: 2026-06-26 22:26:47 +0000 UTC Input: nil Output: nil --------- Name: series-workflowb6x7d[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"53435562a725962e4de0c29653223129ba11643a","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["bpf_jit_alloc_exec","bpf_jit_alloc_exec_rw","bpf_prog_pack_alloc","bpf_dispatcher_change_prog"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"53435562a725962e4de0c29653223129ba11643a","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT"],"series_id":"c05b7734-95d0-4937-b801-ff01b95dbffe","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[10].run-fuzz[1].fuzz Phase: Error StartedAt: 2026-06-26 21:31:37 +0000 UTC FinishedAt: 2026-06-26 22:26:47 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*5d847ccb-3196-468c-833d-4e06da453d72,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*fb764982-1fb5-4751-8110-295f606b3808,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-workflowb6x7d/series-workflowb6x7d-build-action-1031875618/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-workflowb6x7d/series-workflowb6x7d-build-action-2708165783/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-workflowb6x7d/series-workflowb6x7d-convert-artifact-442423292/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil