Name: series-workflowdzbqr Phase: Succeeded StartedAt: 2026-07-11 13:39:35 +0000 UTC FinishedAt: 2026-07-11 18:14:17 +0000 UTC Input: nil Output: nil --------- Name: series-workflowdzbqr[0] Phase: Succeeded StartedAt: 2026-07-11 13:39:35 +0000 UTC FinishedAt: 2026-07-11 13:57:10 +0000 UTC Input: nil Output: nil --------- Name: series-workflowdzbqr[0].run-triage Phase: Succeeded StartedAt: 2026-07-11 13:39:35 +0000 UTC FinishedAt: 2026-07-11 13:57:10 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "mm-new", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git", "commit_hash": "a02ab76061e6be0bfb6640f96f180b167d461c94", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "MEMCG", "LRU_GEN" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "mm-new", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git", "commit_hash": "a02ab76061e6be0bfb6640f96f180b167d461c94", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "MEMCG", "LRU_GEN" ], "series_id": "d2a57b0f-8bff-4803-9f48-d9fd77c8deec" }, "track": "KASAN", "fuzz": { "focus": null, "focus_symbols": [ "reset_batch_size", "walk_mm", "evict_folios", "try_to_inc_max_seq" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db" ], "skip_cover_check": true, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzExIDEzOjU1PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O01FTUNHJiMzNDssCiAgICAmIzM0O0xSVV9HRU4mIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtyZXNldF9iYXRjaF9zaXplJiMzNDssCiAgICAmIzM0O3dhbGtfbW0mIzM0OywKICAgICYjMzQ7ZXZpY3RfZm9saW9zJiMzNDssCiAgICAmIzM0O3RyeV90b19pbmNfbWF4X3NlcSYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBpbnRyb2R1Y2VzIGEgbmV3IGxvY2tpbmcgbWVjaGFuaXNtIChgbHJ1dmVjX2xpdmVfbG9ja19pcnFgKSBmb3IgYGxydXZlY2AgaW4gdGhlIG11bHRpLWdlbiBMUlUgcGFnZSByZWNsYWltIHBhdGggKGByZXNldF9iYXRjaF9zaXplYCkuIEl0IHRyYXZlcnNlcyB0aGUgbWVtY2cgaGllcmFyY2h5IHRvIGZpbmQgYSBub24tZHlpbmcgbWVtY2cgdG8gbG9jayBpdHMgbHJ1dmVjLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gY29yZSBtZW1vcnkgbWFuYWdlbWVudCBsb2dpYyB0aGF0IGNhbiBiZSByZWFjaGVkIGR1cmluZyBtZW1vcnkgcHJlc3N1cmUgYW5kIG1lbWNnIHRlYXJkb3duLCBtYWtpbmcgaXQgd29ydGggZnV6emluZy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMSAxMzo1NTwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IDA3ZGQ2Mjc5MjgxOTAyMjkzNTMyMGJmZmIzZGVjNTUzM2VmYTQwZDZcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgU2F0IEp1bCAxMSAxMzo1NTo0NCAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4L21lbWNvbnRyb2wuaCBiL2luY2x1ZGUvbGludXgvbWVtY29udHJvbC5oXG5pbmRleCBlMWY0NmEwMDE2ZmNmZC4uOTU3MjYwNjc3Njc4MTUgMTAwNjQ0XG4tLS0gYS9pbmNsdWRlL2xpbnV4L21lbWNvbnRyb2wuaFxuJiM0MzsmIzQzOyYjNDM7IGIvaW5jbHVkZS9saW51eC9tZW1jb250cm9sLmhcbkBAIC0xNDcyLDYgJiM0MzsxNDcyLDMxIEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBscnV2ZWNfbG9ja19pcnEoc3RydWN0IGxydXZlYyAqbHJ1dmVjKVxuIFx0c3Bpbl9sb2NrX2lycShcdTAwMjZscnV2ZWMtXHUwMDNlbHJ1X2xvY2spO1xuIH1cbiBcbiYjNDM7c3RhdGljIGlubGluZSBzdHJ1Y3QgbHJ1dmVjICpscnV2ZWNfbGl2ZV9sb2NrX2lycShzdHJ1Y3QgbHJ1dmVjICpscnV2ZWMpXG4mIzQzO3tcbiYjNDM7I2lmZGVmIENPTkZJR19NRU1DR1xuJiM0MztcdHN0cnVjdCBwZ2xpc3RfZGF0YSAqcGdkYXQgPSBscnV2ZWNfcGdkYXQobHJ1dmVjKTtcbiYjNDM7XHRzdHJ1Y3QgbWVtX2Nncm91cCAqbWVtY2cgPSBscnV2ZWNfbWVtY2cobHJ1dmVjKTtcbiYjNDM7XG4mIzQzO1x0cmN1X3JlYWRfbG9jaygpO1xuJiM0MztcbiYjNDM7XHQvKlxuJiM0MztcdCAqIFRoZSBtZW1jZyBjYW4gYmUgTlVMTCB3aGVuIHRoZSBtZW1vcnkgY29udHJvbGxlciBpcyBkaXNhYmxlZC5cbiYjNDM7XHQgKiBPdGhlcndpc2UsIHRoZSBjYWxsZXIga2VlcHMgdGhlIG1lbWNnIG93bmluZyBAbHJ1dmVjIGFsaXZlLlxuJiM0MztcdCAqL1xuJiM0MztcdHdoaWxlICh1bmxpa2VseShtZW1jZyBcdTAwMjZcdTAwMjYgY3NzX2lzX2R5aW5nKFx1MDAyNm1lbWNnLVx1MDAzZWNzcykpKSB7XG4mIzQzO1x0XHRtZW1jZyA9IHBhcmVudF9tZW1fY2dyb3VwKG1lbWNnKTtcbiYjNDM7XHRcdGxydXZlYyA9IG1lbV9jZ3JvdXBfbHJ1dmVjKG1lbWNnLCBwZ2RhdCk7XG4mIzQzO1x0fVxuJiM0MztcbiYjNDM7XHRzcGluX2xvY2tfaXJxKFx1MDAyNmxydXZlYy1cdTAwM2VscnVfbG9jayk7XG4mIzQzOyNlbHNlXG4mIzQzO1x0bHJ1dmVjX2xvY2tfaXJxKGxydXZlYyk7XG4mIzQzOyNlbmRpZlxuJiM0MztcbiYjNDM7XHRyZXR1cm4gbHJ1dmVjO1xuJiM0Mzt9XG4mIzQzO1xuIHN0YXRpYyBpbmxpbmUgdm9pZCBscnV2ZWNfdW5sb2NrKHN0cnVjdCBscnV2ZWMgKmxydXZlYylcbiB7XG4gXHRzcGluX3VubG9jayhcdTAwMjZscnV2ZWMtXHUwMDNlbHJ1X2xvY2spO1xuZGlmZiAtLWdpdCBhL21tL3Ztc2Nhbi5jIGIvbW0vdm1zY2FuLmNcbmluZGV4IDM1YzNiYjE1YWU5NmEzLi4xYTE0MmM1ODcwMGQwMCAxMDA2NDRcbi0tLSBhL21tL3Ztc2Nhbi5jXG4mIzQzOyYjNDM7JiM0MzsgYi9tbS92bXNjYW4uY1xuQEAgLTMyNjUsNyAmIzQzOzMyNjUsNyBAQCBzdGF0aWMgdm9pZCB1cGRhdGVfYmF0Y2hfc2l6ZShzdHJ1Y3QgbHJ1X2dlbl9tbV93YWxrICp3YWxrLCBzdHJ1Y3QgZm9saW8gKmZvbGlvLFxuIHN0YXRpYyB2b2lkIHJlc2V0X2JhdGNoX3NpemUoc3RydWN0IGxydV9nZW5fbW1fd2FsayAqd2FsaylcbiB7XG4gXHRpbnQgZ2VuLCB0eXBlLCB6b25lO1xuLVx0c3RydWN0IGxydXZlYyAqbHJ1dmVjID0gd2Fsay1cdTAwM2VscnV2ZWM7XG4mIzQzO1x0c3RydWN0IGxydXZlYyAqbHJ1dmVjID0gbHJ1dmVjX2xpdmVfbG9ja19pcnEod2Fsay1cdTAwM2VscnV2ZWMpO1xuIFx0c3RydWN0IGxydV9nZW5fZm9saW8gKmxydWdlbiA9IFx1MDAyNmxydXZlYy1cdTAwM2VscnVnZW47XG4gXG4gXHR3YWxrLVx1MDAzZWJhdGNoZWQgPSAwO1xuQEAgLTMyODUsNiAmIzQzOzMyODUsOCBAQCBzdGF0aWMgdm9pZCByZXNldF9iYXRjaF9zaXplKHN0cnVjdCBscnVfZ2VuX21tX3dhbGsgKndhbGspXG4gXHRcdFx0bHJ1ICYjNDM7PSBMUlVfQUNUSVZFO1xuIFx0XHRfX3VwZGF0ZV9scnVfc2l6ZShscnV2ZWMsIGxydSwgem9uZSwgZGVsdGEpO1xuIFx0fVxuJiM0MztcbiYjNDM7XHRscnV2ZWNfdW5sb2NrX2lycShscnV2ZWMpO1xuIH1cbiBcbiBzdGF0aWMgaW50IHNob3VsZF9za2lwX3ZtYSh1bnNpZ25lZCBsb25nIHN0YXJ0LCB1bnNpZ25lZCBsb25nIGVuZCwgc3RydWN0IG1tX3dhbGsgKmFyZ3MpXG5AQCAtMzc3OSwxMSAmIzQzOzM3ODEsOCBAQCBzdGF0aWMgdm9pZCB3YWxrX21tKHN0cnVjdCBtbV9zdHJ1Y3QgKm1tLCBzdHJ1Y3QgbHJ1X2dlbl9tbV93YWxrICp3YWxrKVxuIFx0XHRcdG1tYXBfcmVhZF91bmxvY2sobW0pO1xuIFx0XHR9XG4gXG4tXHRcdGlmICh3YWxrLVx1MDAzZWJhdGNoZWQpIHtcbi1cdFx0XHRscnV2ZWNfbG9ja19pcnEobHJ1dmVjKTtcbiYjNDM7XHRcdGlmICh3YWxrLVx1MDAzZWJhdGNoZWQpXG4gXHRcdFx0cmVzZXRfYmF0Y2hfc2l6ZSh3YWxrKTtcbi1cdFx0XHRscnV2ZWNfdW5sb2NrX2lycShscnV2ZWMpO1xuLVx0XHR9XG4gXG4gXHRcdGNvbmRfcmVzY2hlZCgpO1xuIFx0fSB3aGlsZSAoZXJyID09IC1FQUdBSU4pO1xuQEAgLTQ4NjcsOSAmIzQzOzQ4NjYsNyBAQCBzdGF0aWMgaW50IGV2aWN0X2ZvbGlvcyh1bnNpZ25lZCBsb25nIG5yX3RvX3NjYW4sIHN0cnVjdCBscnV2ZWMgKmxydXZlYyxcbiBcdHdhbGsgPSBjdXJyZW50LVx1MDAzZXJlY2xhaW1fc3RhdGUtXHUwMDNlbW1fd2FsaztcbiBcdGlmICh3YWxrIFx1MDAyNlx1MDAyNiB3YWxrLVx1MDAzZWJhdGNoZWQpIHtcbiBcdFx0d2Fsay1cdTAwM2VscnV2ZWMgPSBscnV2ZWM7XG4tXHRcdGxydXZlY19sb2NrX2lycShscnV2ZWMpO1xuIFx0XHRyZXNldF9iYXRjaF9zaXplKHdhbGspO1xuLVx0XHRscnV2ZWNfdW5sb2NrX2lycShscnV2ZWMpO1xuIFx0fVxuIFxuIFx0bW9kX2xydXZlY19zdGF0ZShscnV2ZWMsIFBHREVNT1RFX0tTV0FQRCAmIzQzOyByZWNsYWltZXJfb2Zmc2V0KHNjKSxcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMSAxMzo1NTwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4xbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtNRU1DRyYjMzQ7LAogICAgJiMzNDtMUlVfR0VOJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7cmVzZXRfYmF0Y2hfc2l6ZSYjMzQ7LAogICAgJiMzNDt3YWxrX21tJiMzNDssCiAgICAmIzM0O2V2aWN0X2ZvbGlvcyYjMzQ7LAogICAgJiMzNDt0cnlfdG9faW5jX21heF9zZXEmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggaW50cm9kdWNlcyBhIG5ldyBsb2NraW5nIG1lY2hhbmlzbSAoYGxydXZlY19saXZlX2xvY2tfaXJxYCkgZm9yIGBscnV2ZWNgIGluIHRoZSBtdWx0aS1nZW4gTFJVIHBhZ2UgcmVjbGFpbSBwYXRoIChgcmVzZXRfYmF0Y2hfc2l6ZWApLiBJdCB0cmF2ZXJzZXMgdGhlIG1lbWNnIGhpZXJhcmNoeSB0byBmaW5kIGEgbm9uLWR5aW5nIG1lbWNnIHRvIGxvY2sgaXRzIGxydXZlYy4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIGNvcmUgbWVtb3J5IG1hbmFnZW1lbnQgbG9naWMgdGhhdCBjYW4gYmUgcmVhY2hlZCBkdXJpbmcgbWVtb3J5IHByZXNzdXJlIGFuZCBtZW1jZyB0ZWFyZG93biwgbWFraW5nIGl0IHdvcnRoIGZ1enppbmcuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZQppZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5CnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuCgpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOgotIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuCi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuCi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LgotIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwKZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLgoKSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaAp0b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS4KCldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOgoxLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLgogICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy4KMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuCiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KICAgRG8gbm90IGxpc3QgdG9vIGdlbmVyaWMgY29uZmlncyAod2UgYWxyZWFkeSBoYXZlIHRoZW0gZW5hYmxlZCkuIE9ubHkgbGlzdCB0aG9zZSB0aGF0CiAgIHNwZWNpZmljYWxseSBjb3ZlciB0aGUgbW9kaWZpZWQgY29kZS4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzIG91dHB1dCBhcnJheSwKICAgYW5kIERPIE5PVCBhZGQgYSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IDA3ZGQ2Mjc5MjgxOTAyMjkzNTMyMGJmZmIzZGVjNTUzM2VmYTQwZDYKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgU2F0IEp1bCAxMSAxMzo1NTo0NCAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgvbWVtY29udHJvbC5oIGIvaW5jbHVkZS9saW51eC9tZW1jb250cm9sLmgKaW5kZXggZTFmNDZhMDAxNmZjZmQuLjk1NzI2MDY3NzY3ODE1IDEwMDY0NAotLS0gYS9pbmNsdWRlL2xpbnV4L21lbWNvbnRyb2wuaAomIzQzOyYjNDM7JiM0MzsgYi9pbmNsdWRlL2xpbnV4L21lbWNvbnRyb2wuaApAQCAtMTQ3Miw2ICYjNDM7MTQ3MiwzMSBAQCBzdGF0aWMgaW5saW5lIHZvaWQgbHJ1dmVjX2xvY2tfaXJxKHN0cnVjdCBscnV2ZWMgKmxydXZlYykKIAlzcGluX2xvY2tfaXJxKCZhbXA7bHJ1dmVjLSZndDtscnVfbG9jayk7CiB9CiAKJiM0MztzdGF0aWMgaW5saW5lIHN0cnVjdCBscnV2ZWMgKmxydXZlY19saXZlX2xvY2tfaXJxKHN0cnVjdCBscnV2ZWMgKmxydXZlYykKJiM0Mzt7CiYjNDM7I2lmZGVmIENPTkZJR19NRU1DRwomIzQzOwlzdHJ1Y3QgcGdsaXN0X2RhdGEgKnBnZGF0ID0gbHJ1dmVjX3BnZGF0KGxydXZlYyk7CiYjNDM7CXN0cnVjdCBtZW1fY2dyb3VwICptZW1jZyA9IGxydXZlY19tZW1jZyhscnV2ZWMpOwomIzQzOwomIzQzOwlyY3VfcmVhZF9sb2NrKCk7CiYjNDM7CiYjNDM7CS8qCiYjNDM7CSAqIFRoZSBtZW1jZyBjYW4gYmUgTlVMTCB3aGVuIHRoZSBtZW1vcnkgY29udHJvbGxlciBpcyBkaXNhYmxlZC4KJiM0MzsJICogT3RoZXJ3aXNlLCB0aGUgY2FsbGVyIGtlZXBzIHRoZSBtZW1jZyBvd25pbmcgQGxydXZlYyBhbGl2ZS4KJiM0MzsJICovCiYjNDM7CXdoaWxlICh1bmxpa2VseShtZW1jZyAmYW1wOyZhbXA7IGNzc19pc19keWluZygmYW1wO21lbWNnLSZndDtjc3MpKSkgewomIzQzOwkJbWVtY2cgPSBwYXJlbnRfbWVtX2Nncm91cChtZW1jZyk7CiYjNDM7CQlscnV2ZWMgPSBtZW1fY2dyb3VwX2xydXZlYyhtZW1jZywgcGdkYXQpOwomIzQzOwl9CiYjNDM7CiYjNDM7CXNwaW5fbG9ja19pcnEoJmFtcDtscnV2ZWMtJmd0O2xydV9sb2NrKTsKJiM0MzsjZWxzZQomIzQzOwlscnV2ZWNfbG9ja19pcnEobHJ1dmVjKTsKJiM0MzsjZW5kaWYKJiM0MzsKJiM0MzsJcmV0dXJuIGxydXZlYzsKJiM0Mzt9CiYjNDM7CiBzdGF0aWMgaW5saW5lIHZvaWQgbHJ1dmVjX3VubG9jayhzdHJ1Y3QgbHJ1dmVjICpscnV2ZWMpCiB7CiAJc3Bpbl91bmxvY2soJmFtcDtscnV2ZWMtJmd0O2xydV9sb2NrKTsKZGlmZiAtLWdpdCBhL21tL3Ztc2Nhbi5jIGIvbW0vdm1zY2FuLmMKaW5kZXggMzVjM2JiMTVhZTk2YTMuLjFhMTQyYzU4NzAwZDAwIDEwMDY0NAotLS0gYS9tbS92bXNjYW4uYwomIzQzOyYjNDM7JiM0MzsgYi9tbS92bXNjYW4uYwpAQCAtMzI2NSw3ICYjNDM7MzI2NSw3IEBAIHN0YXRpYyB2b2lkIHVwZGF0ZV9iYXRjaF9zaXplKHN0cnVjdCBscnVfZ2VuX21tX3dhbGsgKndhbGssIHN0cnVjdCBmb2xpbyAqZm9saW8sCiBzdGF0aWMgdm9pZCByZXNldF9iYXRjaF9zaXplKHN0cnVjdCBscnVfZ2VuX21tX3dhbGsgKndhbGspCiB7CiAJaW50IGdlbiwgdHlwZSwgem9uZTsKLQlzdHJ1Y3QgbHJ1dmVjICpscnV2ZWMgPSB3YWxrLSZndDtscnV2ZWM7CiYjNDM7CXN0cnVjdCBscnV2ZWMgKmxydXZlYyA9IGxydXZlY19saXZlX2xvY2tfaXJxKHdhbGstJmd0O2xydXZlYyk7CiAJc3RydWN0IGxydV9nZW5fZm9saW8gKmxydWdlbiA9ICZhbXA7bHJ1dmVjLSZndDtscnVnZW47CiAKIAl3YWxrLSZndDtiYXRjaGVkID0gMDsKQEAgLTMyODUsNiAmIzQzOzMyODUsOCBAQCBzdGF0aWMgdm9pZCByZXNldF9iYXRjaF9zaXplKHN0cnVjdCBscnVfZ2VuX21tX3dhbGsgKndhbGspCiAJCQlscnUgJiM0Mzs9IExSVV9BQ1RJVkU7CiAJCV9fdXBkYXRlX2xydV9zaXplKGxydXZlYywgbHJ1LCB6b25lLCBkZWx0YSk7CiAJfQomIzQzOwomIzQzOwlscnV2ZWNfdW5sb2NrX2lycShscnV2ZWMpOwogfQogCiBzdGF0aWMgaW50IHNob3VsZF9za2lwX3ZtYSh1bnNpZ25lZCBsb25nIHN0YXJ0LCB1bnNpZ25lZCBsb25nIGVuZCwgc3RydWN0IG1tX3dhbGsgKmFyZ3MpCkBAIC0zNzc5LDExICYjNDM7Mzc4MSw4IEBAIHN0YXRpYyB2b2lkIHdhbGtfbW0oc3RydWN0IG1tX3N0cnVjdCAqbW0sIHN0cnVjdCBscnVfZ2VuX21tX3dhbGsgKndhbGspCiAJCQltbWFwX3JlYWRfdW5sb2NrKG1tKTsKIAkJfQogCi0JCWlmICh3YWxrLSZndDtiYXRjaGVkKSB7Ci0JCQlscnV2ZWNfbG9ja19pcnEobHJ1dmVjKTsKJiM0MzsJCWlmICh3YWxrLSZndDtiYXRjaGVkKQogCQkJcmVzZXRfYmF0Y2hfc2l6ZSh3YWxrKTsKLQkJCWxydXZlY191bmxvY2tfaXJxKGxydXZlYyk7Ci0JCX0KIAogCQljb25kX3Jlc2NoZWQoKTsKIAl9IHdoaWxlIChlcnIgPT0gLUVBR0FJTik7CkBAIC00ODY3LDkgJiM0Mzs0ODY2LDcgQEAgc3RhdGljIGludCBldmljdF9mb2xpb3ModW5zaWduZWQgbG9uZyBucl90b19zY2FuLCBzdHJ1Y3QgbHJ1dmVjICpscnV2ZWMsCiAJd2FsayA9IGN1cnJlbnQtJmd0O3JlY2xhaW1fc3RhdGUtJmd0O21tX3dhbGs7CiAJaWYgKHdhbGsgJmFtcDsmYW1wOyB3YWxrLSZndDtiYXRjaGVkKSB7CiAJCXdhbGstJmd0O2xydXZlYyA9IGxydXZlYzsKLQkJbHJ1dmVjX2xvY2tfaXJxKGxydXZlYyk7CiAJCXJlc2V0X2JhdGNoX3NpemUod2Fsayk7Ci0JCWxydXZlY191bmxvY2tfaXJxKGxydXZlYyk7CiAJfQogCiAJbW9kX2xydXZlY19zdGF0ZShscnV2ZWMsIFBHREVNT1RFX0tTV0FQRCAmIzQzOyByZWNsYWltZXJfb2Zmc2V0KHNjKSwKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTEgMTM6NTU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjc0MgoJCQkJCQkJb3V0cHV0OiAzNAoJCQkJCQkJdGhvdWdodHM6IDI2NgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIExSVSBQYWdlIFJlY2xhaW0gUGF0Y2gqKgoKT2theSwgc28gdGhpcyBwYXRjaCBpcyBtYWtpbmcgc29tZSBpbnRlcmVzdGluZyBjaGFuZ2VzIHdpdGhpbiB0aGUgbWVtb3J5IG1hbmFnZW1lbnQgc3Vic3lzdGVtLiBTcGVjaWZpY2FsbHksIGl0JiMzOTtzIGFib3V0IGhvdyB3ZSBoYW5kbGUgTFJVIHBhZ2UgcmVjbGFpbSBhbmQgdGhlIGludGVyYWN0aW9uIHdpdGggbWVtY2dzLiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdGhhdCB0aGlzIGlzIGxpa2VseSBhZGRyZXNzaW5nIHNvbWUgc3VidGxlIHBlcmZvcm1hbmNlIG9yIGNvcnJlY3RuZXNzIGlzc3VlLCBhcyB3ZSBhcmUgcmFyZWx5IG1ha2luZyBmdW5jdGlvbmFsIGNoYW5nZXMgaW4gdGhpcyBhcmVhIHVubGVzcyB0aGVyZSYjMzk7cyBhIGdvb2QgcmVhc29uLgoKVGhlIGNvcmUgb2YgdGhlIGNoYW5nZSBzZWVtcyB0byBiZSBpbnRyb2R1Y2luZyBhIG5ldyBmdW5jdGlvbiwgYGxydXZlY19saXZlX2xvY2tfaXJxYCwgYW5kIHVzaW5nIGl0IGluIGBtbS92bXNjYW4uY2AgdG8gcmVwbGFjZSB0aGUgZXhpc3RpbmcgYGxydXZlY19sb2NrX2lycWAgd2l0aGluIHRoZSBgcmVzZXRfYmF0Y2hfc2l6ZWAgZnVuY3Rpb24uIFRoZSBrZXkgZGlmZmVyZW5jZSwgYXMgSSB1bmRlcnN0YW5kIGl0LCBpcyB0aGF0IHRoaXMgbmV3IGZ1bmN0aW9uIGNhcmVmdWxseSBuYXZpZ2F0ZXMgdGhlIG1lbWNnIGhpZXJhcmNoeSB0byBmaW5kIGEgJiMzNDtsaXZlJiMzNDsgKG5vbi1keWluZykgbWVtY2cgYW5kIGxvY2tzIGl0cyBgbHJ1dmVjYC4KCk15IGZpcnN0IGluY2xpbmF0aW9uIGlzIHRvIGRlbHZlIGludG8gdGhlIGNvbmZpZ3VyYXRpb24gcmVxdWlyZW1lbnRzLiBUaGUgY29kZSBpdHNlbGYsIGBscnV2ZWNfbGl2ZV9sb2NrX2lycWAsIGlzIGNvbmRpdGlvbmFsbHkgY29tcGlsZWQgYmFzZWQgb24gYENPTkZJR19NRU1DR2AuIEdpdmVuIHRoaXMgYW5kIHRoZSBmYWN0IHRoYXQgYG1tL3Ztc2Nhbi5jYCBpcyBhbHdheXMgcGFydCBvZiB0aGUgYnVpbGQsIGl0JiMzOTtzIGNsZWFyIHRoZSBjaGFuZ2VzIHdpbGwgZGVwZW5kIG9uIGBDT05GSUdfTUVNQ0dgLiBIb3dldmVyLCBzaW5jZSBgbHJ1X2dlbl9tbV93YWxrYCBhbmQgYGxydV9nZW5fZm9saW9gIGFyZSBhbHNvIGJlaW5nIHVzZWQsIEkgd2FudCB0byB2ZXJpZnkgaWYgYENPTkZJR19MUlVfR0VOYCB3aWxsIGFsc28gY29tZSBpbnRvIHBsYXkuIFRvIGJlIHN1cmUsIEkmIzM5O2xsIHF1aWNrbHkgY2hlY2sgdGhlIGNvZGViYXNlIHdpdGggYGdyZXBwZXJgIGFuZCBzZWUgd2hlcmUgdGhlc2UgZnVuY3Rpb25zIGFyZSBkZWZpbmVkIGFuZCB1c2VkLCBhbmQgd2hpY2ggY29uZmlndXJhdGlvbnMgYWZmZWN0IHRoZWlyIGNvbXBpbGF0aW9uLiBUaGlzIHNob3VsZCBxdWlja2x5IGNsYXJpZnkgdGhlIGV4YWN0IGNvbmZpZ3VyYXRpb24gZGVwZW5kZW5jaWVzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzExIDEzOjU1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2xydV9nZW5fbW1fd2FsayYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O21tL3Ztc2Nhbi5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O21tL3Ztc2Nhbi5jPTI4NDc9c3RhdGljIHN0cnVjdCBscnVfZ2VuX21tX3N0YXRlICpnZXRfbW1fc3RhdGUoc3RydWN0IGxydXZlYyAqbHJ1dmVjKVxuLS1cbm1tL3Ztc2Nhbi5jLTI4NTEtXG5tbS92bXNjYW4uYzoyODUyOnN0YXRpYyBzdHJ1Y3QgbW1fc3RydWN0ICpnZXRfbmV4dF9tbShzdHJ1Y3QgbHJ1X2dlbl9tbV93YWxrICp3YWxrKVxubW0vdm1zY2FuLmMtMjg1My17XG4tLVxubW0vdm1zY2FuLmM9Mjk3ND1zdGF0aWMgc3RydWN0IGxydV9nZW5fbW1fc3RhdGUgKmdldF9tbV9zdGF0ZShzdHJ1Y3QgbHJ1dmVjICpscnV2ZWMpXG4tLVxubW0vdm1zY2FuLmMtMjk3OC1cbm1tL3Ztc2Nhbi5jOjI5Nzk6c3RhdGljIHN0cnVjdCBtbV9zdHJ1Y3QgKmdldF9uZXh0X21tKHN0cnVjdCBscnVfZ2VuX21tX3dhbGsgKndhbGspXG5tbS92bXNjYW4uYy0yOTgwLXtcbi0tXG5tbS92bXNjYW4uYy0yOTg1LVxubW0vdm1zY2FuLmM6Mjk4NjpzdGF0aWMgdm9pZCByZXNldF9tbV9zdGF0cyhzdHJ1Y3QgbHJ1X2dlbl9tbV93YWxrICp3YWxrLCBib29sIGxhc3QpXG5tbS92bXNjYW4uYy0yOTg3LXtcbi0tXG5tbS92bXNjYW4uYy0zMDEwLVxubW0vdm1zY2FuLmM6MzAxMTpzdGF0aWMgYm9vbCBpdGVyYXRlX21tX2xpc3Qoc3RydWN0IGxydV9nZW5fbW1fd2FsayAqd2Fsaywgc3RydWN0IG1tX3N0cnVjdCAqKml0ZXIpXG5tbS92bXNjYW4uYy0zMDEyLXtcbi0tXG5tbS92bXNjYW4uYz0zMjIzPXN0YXRpYyBpbnQgZm9saW9faW5jX2dlbihzdHJ1Y3QgbHJ1dmVjICpscnV2ZWMsIHN0cnVjdCBmb2xpbyAqZm9saW8pXG4tLVxubW0vdm1zY2FuLmMtMzI0OC1cbm1tL3Ztc2Nhbi5jOjMyNDk6c3RhdGljIHZvaWQgdXBkYXRlX2JhdGNoX3NpemUoc3RydWN0IGxydV9nZW5fbW1fd2FsayAqd2Fsaywgc3RydWN0IGZvbGlvICpmb2xpbyxcbm1tL3Ztc2Nhbi5jLTMyNTAtXHRcdFx0ICAgICAgaW50IG9sZF9nZW4sIGludCBuZXdfZ2VuKVxuLS1cbm1tL3Ztc2Nhbi5jLTMyNjQtXG5tbS92bXNjYW4uYzozMjY1OnN0YXRpYyB2b2lkIHJlc2V0X2JhdGNoX3NpemUoc3RydWN0IGxydV9nZW5fbW1fd2FsayAqd2Fsaylcbm1tL3Ztc2Nhbi5jLTMyNjYte1xuLS1cbm1tL3Ztc2Nhbi5jPTMyOTI9c3RhdGljIGludCBzaG91bGRfc2tpcF92bWEodW5zaWduZWQgbG9uZyBzdGFydCwgdW5zaWduZWQgbG9uZyBlbmQsIHN0cnVjdCBtbV93YWxrICphcmdzKVxuLS1cbm1tL3Ztc2Nhbi5jLTMyOTUtXHRzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKnZtYSA9IGFyZ3MtXHUwMDNldm1hO1xubW0vdm1zY2FuLmM6MzI5NjpcdHN0cnVjdCBscnVfZ2VuX21tX3dhbGsgKndhbGsgPSBhcmdzLVx1MDAzZXByaXZhdGU7XG5tbS92bXNjYW4uYy0zMjk3LVxuLS1cbm1tL3Ztc2Nhbi5jPTM0MzA9c3RhdGljIGJvb2wgc3VpdGFibGVfdG9fc2NhbihpbnQgdG90YWwsIGludCB5b3VuZylcbi0tXG5tbS92bXNjYW4uYy0zNDM3LVxubW0vdm1zY2FuLmM6MzQzODpzdGF0aWMgdm9pZCB3YWxrX3VwZGF0ZV9mb2xpbyhzdHJ1Y3QgbHJ1X2dlbl9tbV93YWxrICp3YWxrLCBzdHJ1Y3QgZm9saW8gKmZvbGlvLFxubW0vdm1zY2FuLmMtMzQzOS1cdFx0XHQgICAgICBpbnQgbmV3X2dlbiwgYm9vbCBkaXJ0eSlcbi0tXG5tbS92bXNjYW4uYz0zNDYyPXN0YXRpYyBib29sIHdhbGtfcHRlX3JhbmdlKHBtZF90ICpwbWQsIHVuc2lnbmVkIGxvbmcgc3RhcnQsIHVuc2lnbmVkIGxvbmcgZW5kLFxuLS1cbm1tL3Ztc2Nhbi5jLTM0NzItXHRzdHJ1Y3QgZm9saW8gKmxhc3QgPSBOVUxMO1xubW0vdm1zY2FuLmM6MzQ3MzpcdHN0cnVjdCBscnVfZ2VuX21tX3dhbGsgKndhbGsgPSBhcmdzLVx1MDAzZXByaXZhdGU7XG5tbS92bXNjYW4uYy0zNDc0LVx0c3RydWN0IG1lbV9jZ3JvdXAgKm1lbWNnID0gbHJ1dmVjX21lbWNnKHdhbGstXHUwMDNlbHJ1dmVjKTtcbi0tXG5tbS92bXNjYW4uYz0zNTUzPXN0YXRpYyB2b2lkIHdhbGtfcG1kX3JhbmdlX2xvY2tlZChwdWRfdCAqcHVkLCB1bnNpZ25lZCBsb25nIGFkZHIsIHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqdm1hLFxuLS1cbm1tL3Ztc2Nhbi5jLTM1NjAtXHRzdHJ1Y3QgZm9saW8gKmxhc3QgPSBOVUxMO1xubW0vdm1zY2FuLmM6MzU2MTpcdHN0cnVjdCBscnVfZ2VuX21tX3dhbGsgKndhbGsgPSBhcmdzLVx1MDAzZXByaXZhdGU7XG5tbS92bXNjYW4uYy0zNTYyLVx0c3RydWN0IG1lbV9jZ3JvdXAgKm1lbWNnID0gbHJ1dmVjX21lbWNnKHdhbGstXHUwMDNlbHJ1dmVjKTtcbi0tXG5tbS92bXNjYW4uYz0zNjQxPXN0YXRpYyB2b2lkIHdhbGtfcG1kX3JhbmdlKHB1ZF90ICpwdWQsIHVuc2lnbmVkIGxvbmcgc3RhcnQsIHVuc2lnbmVkIGxvbmcgZW5kLFxuLS1cbm1tL3Ztc2Nhbi5jLTM2NTAtXHR1bnNpZ25lZCBsb25nIGZpcnN0ID0gLTE7XG5tbS92bXNjYW4uYzozNjUxOlx0c3RydWN0IGxydV9nZW5fbW1fd2FsayAqd2FsayA9IGFyZ3MtXHUwMDNlcHJpdmF0ZTtcbm1tL3Ztc2Nhbi5jLTM2NTItXHRzdHJ1Y3QgbHJ1X2dlbl9tbV9zdGF0ZSAqbW1fc3RhdGUgPSBnZXRfbW1fc3RhdGUod2Fsay1cdTAwM2VscnV2ZWMpO1xuLS1cbm1tL3Ztc2Nhbi5jPTM3MTQ9c3RhdGljIGludCB3YWxrX3B1ZF9yYW5nZShwNGRfdCAqcDRkLCB1bnNpZ25lZCBsb25nIHN0YXJ0LCB1bnNpZ25lZCBsb25nIGVuZCxcbi0tXG5tbS92bXNjYW4uYy0zNzIwLVx0dW5zaWduZWQgbG9uZyBuZXh0O1xubW0vdm1zY2FuLmM6MzcyMTpcdHN0cnVjdCBscnVfZ2VuX21tX3dhbGsgKndhbGsgPSBhcmdzLVx1MDAzZXByaXZhdGU7XG5tbS92bXNjYW4uYy0zNzIyLVxuLS1cbm1tL3Ztc2Nhbi5jLTM3NTUtXG5tbS92bXNjYW4uYzozNzU2OnN0YXRpYyB2b2lkIHdhbGtfbW0oc3RydWN0IG1tX3N0cnVjdCAqbW0sIHN0cnVjdCBscnVfZ2VuX21tX3dhbGsgKndhbGspXG5tbS92bXNjYW4uYy0zNzU3LXtcbi0tXG5tbS92bXNjYW4uYy0zNzkwLVxubW0vdm1zY2FuLmM6Mzc5MTpzdGF0aWMgc3RydWN0IGxydV9nZW5fbW1fd2FsayAqc2V0X21tX3dhbGsoc3RydWN0IHBnbGlzdF9kYXRhICpwZ2RhdCwgYm9vbCBmb3JjZV9hbGxvYylcbm1tL3Ztc2Nhbi5jLTM3OTIte1xubW0vdm1zY2FuLmM6Mzc5MzpcdHN0cnVjdCBscnVfZ2VuX21tX3dhbGsgKndhbGsgPSBjdXJyZW50LVx1MDAzZXJlY2xhaW1fc3RhdGUtXHUwMDNlbW1fd2Fsaztcbm1tL3Ztc2Nhbi5jLTM3OTQtXG4tLVxubW0vdm1zY2FuLmM9MzgxMT1zdGF0aWMgdm9pZCBjbGVhcl9tbV93YWxrKHZvaWQpXG5tbS92bXNjYW4uYy0zODEyLXtcbm1tL3Ztc2Nhbi5jOjM4MTM6XHRzdHJ1Y3QgbHJ1X2dlbl9tbV93YWxrICp3YWxrID0gY3VycmVudC1cdTAwM2VyZWNsYWltX3N0YXRlLVx1MDAzZW1tX3dhbGs7XG5tbS92bXNjYW4uYy0zODE0LVxuLS1cbm1tL3Ztc2Nhbi5jPTM5OTQ9c3RhdGljIGJvb2wgdHJ5X3RvX2luY19tYXhfc2VxKHN0cnVjdCBscnV2ZWMgKmxydXZlYywgdW5zaWduZWQgbG9uZyBzZXEsXG4tLVxubW0vdm1zY2FuLmMtMzk5Ny1cdGJvb2wgc3VjY2Vzcztcbm1tL3Ztc2Nhbi5jOjM5OTg6XHRzdHJ1Y3QgbHJ1X2dlbl9tbV93YWxrICp3YWxrO1xubW0vdm1zY2FuLmMtMzk5OS1cdHN0cnVjdCBtbV9zdHJ1Y3QgKm1tID0gTlVMTDtcbi0tXG5tbS92bXNjYW4uYz00MTgwPWJvb2wgbHJ1X2dlbl9sb29rX2Fyb3VuZChzdHJ1Y3QgcGFnZV92bWFfbWFwcGVkX3dhbGsgKnB2bXcsIHVuc2lnbmVkIGludCBucilcbi0tXG5tbS92bXNjYW4uYy00MTg1LVx0dW5zaWduZWQgbG9uZyBlbmQ7XG5tbS92bXNjYW4uYzo0MTg2Olx0c3RydWN0IGxydV9nZW5fbW1fd2FsayAqd2Fsaztcbm1tL3Ztc2Nhbi5jLTQxODctXHRzdHJ1Y3QgZm9saW8gKmxhc3QgPSBOVUxMO1xuLS1cbm1tL3Ztc2Nhbi5jPTQ4MDE9c3RhdGljIGludCBldmljdF9mb2xpb3ModW5zaWduZWQgbG9uZyBucl90b19zY2FuLCBzdHJ1Y3QgbHJ1dmVjICpscnV2ZWMsXG4tLVxubW0vdm1zY2FuLmMtNDgwOS1cdHN0cnVjdCByZWNsYWltX3N0YXQgc3RhdDtcbm1tL3Ztc2Nhbi5jOjQ4MTA6XHRzdHJ1Y3QgbHJ1X2dlbl9tbV93YWxrICp3YWxrO1xubW0vdm1zY2FuLmMtNDgxMS1cdGludCBzY2FubmVkLCByZWNsYWltZWQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTEgMTM6NTU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNTI0NQoJCQkJCQkJb3V0cHV0OiAzMQoJCQkJCQkJdGhvdWdodHM6IDQzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBteSBvd246CgoqKkFuYWx5emluZyBhIFZNU2NhbiBQYXRjaCBhbmQgaXRzIERlcGVuZGVuY3kgb24gTFJVX0dFTioqCgpSaWdodCwgc28gdGhpcyBwYXRjaCBpcyB0b3VjaGluZyBgcmVzZXRfYmF0Y2hfc2l6ZWAgd2l0aGluIHRoZSBgbW0vdm1zY2FuLmNgIGZpbGUuIE15IGltbWVkaWF0ZSB0aG91Z2h0IGlzIHRvIHVuZGVyc3RhbmQgdGhlIGNvbnRleHQuIFdoYXQmIzM5O3MgZHJpdmluZyB0aGlzIGNoYW5nZSB0byB0aGUgYmF0Y2ggc2l6ZSByZXNldD8gTW9yZSBpbXBvcnRhbnRseSwgaXMgdGhpcyBjaGFuZ2UgY29udGluZ2VudCBvbiBgQ09ORklHX0xSVV9HRU5gIGJlaW5nIGVuYWJsZWQ/IEl0JiMzOTtzIGEga2V5IHF1ZXN0aW9uLiBgQ09ORklHX0xSVV9HRU5gLCBpZiBwcmVzZW50LCBjYW4gaGF2ZSBwcm9mb3VuZCBpbXBsaWNhdGlvbnMgZm9yIGhvdyB0aGUga2VybmVsIGhhbmRsZXMgcGFnZSByZXBsYWNlbWVudCBhbmQsIGJ5IGV4dGVuc2lvbiwgYmF0Y2ggc2l6ZXMgdXNlZCBpbiB0aGUgc2Nhbm5pbmcgcHJvY2Vzcy4gQSBjaGFuZ2UgaGVyZSBjb3VsZCBiZSBhIGRpcmVjdCByZXN1bHQgb2Ygd2FudGluZyBhIG5ldyBmZWF0dXJlIGluIExSVV9HRU4uIEl0IGNvdWxkIGJlIGZvciBwZXJmb3JtYW5jZSByZWFzb25zLCBvciBtYXliZSB0byBmaXggYSBidWcgaW4gTFJVX0dFTi4gSSB3YW50IHRvIGNoZWNrIGFsbCBvZiB0aGVzZSBwb3NzaWJpbGl0ZXMuIEkmIzM5O2xsIG5lZWQgdG8gZGlnIGludG8gdGhlIGNvZGUsIGFuZCBwcm9iYWJseSBjcm9zcy1yZWZlcmVuY2UgdGhlIGNvbW1pdCBtZXNzYWdlcy4gSSBhbSBob3BpbmcgdGhhdCBhIGNhcmVmdWwgY29tcGFyaXNvbiBvZiB0aGUgY29kZSBhbmQgY29tbWl0IG1lc3NhZ2VzIHNob3VsZCByZXZlYWwgd2hldGhlciBgQ09ORklHX0xSVV9HRU5gIGlzIHRydWx5IGEgcHJlcmVxdWlzaXRlIG9yIGlmIHRoaXMgbW9kaWZpY2F0aW9uIGlzIGluZGVwZW5kZW50LiBVbmRlcnN0YW5kaW5nIHRoaXMgZGVwZW5kZW5jeSBpcyBlc3NlbnRpYWwgYmVmb3JlIEkgY2FuIGFjY3VyYXRlbHkgYXNzZXNzIHRoZSBwYXRjaCYjMzk7cyBpbXBhY3QgYW5kIGl0cyBvdmVyYWxsIHZhbGlkaXR5LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzExIDEzOjU1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3Jlc2V0X2JhdGNoX3NpemUmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDttbS92bXNjYW4uYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDttbS92bXNjYW4uYz0zMjQ5PXN0YXRpYyB2b2lkIHVwZGF0ZV9iYXRjaF9zaXplKHN0cnVjdCBscnVfZ2VuX21tX3dhbGsgKndhbGssIHN0cnVjdCBmb2xpbyAqZm9saW8sXG4tLVxubW0vdm1zY2FuLmMtMzI2NC1cbm1tL3Ztc2Nhbi5jOjMyNjU6c3RhdGljIHZvaWQgcmVzZXRfYmF0Y2hfc2l6ZShzdHJ1Y3QgbHJ1X2dlbl9tbV93YWxrICp3YWxrKVxubW0vdm1zY2FuLmMtMzI2Ni17XG4tLVxubW0vdm1zY2FuLmM9Mzc1Nj1zdGF0aWMgdm9pZCB3YWxrX21tKHN0cnVjdCBtbV9zdHJ1Y3QgKm1tLCBzdHJ1Y3QgbHJ1X2dlbl9tbV93YWxrICp3YWxrKVxuLS1cbm1tL3Ztc2Nhbi5jLTM3ODQtXHRcdGlmICh3YWxrLVx1MDAzZWJhdGNoZWQpXG5tbS92bXNjYW4uYzozNzg1Olx0XHRcdHJlc2V0X2JhdGNoX3NpemUod2Fsayk7XG5tbS92bXNjYW4uYy0zNzg2LVxuLS1cbm1tL3Ztc2Nhbi5jPTQ4MDE9c3RhdGljIGludCBldmljdF9mb2xpb3ModW5zaWduZWQgbG9uZyBucl90b19zY2FuLCBzdHJ1Y3QgbHJ1dmVjICpscnV2ZWMsXG4tLVxubW0vdm1zY2FuLmMtNDg2OC1cdFx0d2Fsay1cdTAwM2VscnV2ZWMgPSBscnV2ZWM7XG5tbS92bXNjYW4uYzo0ODY5Olx0XHRyZXNldF9iYXRjaF9zaXplKHdhbGspO1xubW0vdm1zY2FuLmMtNDg3MC1cdH1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMSAxMzo1NTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1ODk0CgkJCQkJCQlvdXRwdXQ6IDMyCgkJCQkJCQl0aG91Z2h0czogMjgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhhdCB0aG91Z2h0IHByb2Nlc3MsIGFzIGlmIGl0IHdlcmUgbXkgb3duOgoKKipJbnZlc3RpZ2F0aW5nIGByZXNldF9iYXRjaF9zaXplYCoqCgpBbHJpZ2h0LCBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGVyZSBgcmVzZXRfYmF0Y2hfc2l6ZWAgaXMgZGVmaW5lZCB3aXRoaW4gdGhlIGNvZGUuIFRoaXMgbGlrZWx5IGltcGFjdHMgaXRzIHNjb3BlIGFuZCBob3cgaXQgYmVoYXZlcy4gVGhlIGZpcnN0IHRoaW5nIEkmIzM5O2xsIGNoZWNrIGlzIHdoZXRoZXIgaXQmIzM5O3MgY29uZGl0aW9uYWxseSBjb21waWxlZC4gU3BlY2lmaWNhbGx5LCBJJiMzOTttIHRoaW5raW5nLCBpcyBgcmVzZXRfYmF0Y2hfc2l6ZWAgZGVmaW5lZCAqb25seSogaWYgYENPTkZJR19MUlVfR0VOYCBpcyBhbHNvIGRlZmluZWQ/IFRoYXQgd291bGQgYmUgdGhlIHBsYWNlIHRvIHN0YXJ0IGlmIGl0JiMzOTtzIG5vdCBhIGRpcmVjdCBwYXJ0IG9mIHRoZSBjb3JlLiBDaGVja2luZyB0aGUgcHJlcHJvY2Vzc29yIGRpcmVjdGl2ZXMgd2lsbCByZXZlYWwgaWYgaXRzIHVzZSBpcyBjb250cm9sbGVkIGJ5IGEgY29uZmlndXJhdGlvbiBvcHRpb24sIHdoaWNoIHdpbGwgdGhlbiBoYXZlIGZ1cnRoZXIgaW1wbGljYXRpb25zIGFib3V0IGhvdyB0aGUgcHJvZ3JhbSBiZWhhdmVzIGJhc2VkIG9uIGl0cyBidWlsZCBjb25maWd1cmF0aW9uLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzExIDEzOjU2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O0NPTkZJR19MUlVfR0VOJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bW0vdm1zY2FuLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bW0vdm1zY2FuLmM9ODI0PWVudW0gZm9saW9fcmVmZXJlbmNlcyB7XG4tLVxubW0vdm1zY2FuLmMtODMwLVxubW0vdm1zY2FuLmM6ODMxOiNpZmRlZiBDT05GSUdfTFJVX0dFTlxubW0vdm1zY2FuLmMtODMyLS8qXG4tLVxubW0vdm1zY2FuLmM9ODU0PXN0YXRpYyBib29sIGxydV9nZW5fc2V0X3JlZnMoc3RydWN0IGZvbGlvICpmb2xpbylcbi0tXG5tbS92bXNjYW4uYy04NTctfVxubW0vdm1zY2FuLmM6ODU4OiNlbmRpZiAvKiBDT05GSUdfTFJVX0dFTiAqL1xubW0vdm1zY2FuLmMtODU5LVxuLS1cbm1tL3Ztc2Nhbi5jPTI2MTM9c3RhdGljIGJvb2wgY2FuX2FnZV9hbm9uX3BhZ2VzKHN0cnVjdCBscnV2ZWMgKmxydXZlYyxcbi0tXG5tbS92bXNjYW4uYy0yNjI0LVxubW0vdm1zY2FuLmM6MjYyNTojaWZkZWYgQ09ORklHX0xSVV9HRU5cbm1tL3Ztc2Nhbi5jLTI2MjYtXG5tbS92bXNjYW4uYz0yNjI3PURFRklORV9TVEFUSUNfS0VZX0ZBTFNFKGxydV9zd2l0Y2gpO1xubW0vdm1zY2FuLmM6MjYyODojaWZkZWYgQ09ORklHX0xSVV9HRU5fRU5BQkxFRFxubW0vdm1zY2FuLmMtMjYyOS1ERUZJTkVfU1RBVElDX0tFWV9BUlJBWV9UUlVFKGxydV9nZW5fY2FwcywgTlJfTFJVX0dFTl9DQVBTKTtcbi0tXG5tbS92bXNjYW4uYz0yODA5PXN0YXRpYyB2b2lkIHJlc2V0X2Jsb29tX2ZpbHRlcihzdHJ1Y3QgbHJ1X2dlbl9tbV9zdGF0ZSAqbW1fc3RhdGUsIHVuc2lnbmVkIGxvbmcgc2VxKVxuLS1cbm1tL3Ztc2Nhbi5jLTI4MjgtXG5tbS92bXNjYW4uYzoyODI5OiNpZmRlZiBDT05GSUdfTFJVX0dFTl9XQUxLU19NTVVcbm1tL3Ztc2Nhbi5jLTI4MzAtXG4tLVxubW0vdm1zY2FuLmM9MjkzOD12b2lkIGxydV9nZW5fbWlncmF0ZV9tbShzdHJ1Y3QgbW1fc3RydWN0ICptbSlcbi0tXG5tbS92bXNjYW4uYy0yOTY2LVxubW0vdm1zY2FuLmM6Mjk2NzojZWxzZSAvKiAhQ09ORklHX0xSVV9HRU5fV0FMS1NfTU1VICovXG5tbS92bXNjYW4uYy0yOTY4LVxuLS1cbm1tL3Ztc2Nhbi5jPTU4NTI9bGF0ZV9pbml0Y2FsbChpbml0X2xydV9nZW4pO1xubW0vdm1zY2FuLmMtNTg1My1cbm1tL3Ztc2Nhbi5jOjU4NTQ6I2Vsc2UgLyogIUNPTkZJR19MUlVfR0VOICovXG5tbS92bXNjYW4uYy01ODU1LVxuLS1cbm1tL3Ztc2Nhbi5jPTU4NjY9c3RhdGljIHZvaWQgbHJ1X2dlbl9zaHJpbmtfbm9kZShzdHJ1Y3QgcGdsaXN0X2RhdGEgKnBnZGF0LCBzdHJ1Y3Qgc2Nhbl9jb250cm9sICpzYylcbi0tXG5tbS92bXNjYW4uYy01ODcwLVxubW0vdm1zY2FuLmM6NTg3MTojZW5kaWYgLyogQ09ORklHX0xSVV9HRU4gKi9cbm1tL3Ztc2Nhbi5jLTU4NzItXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTEgMTM6NTY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNjc5MQoJCQkJCQkJb3V0cHV0OiAyOQoJCQkJCQkJdGhvdWdodHM6IDE5MgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIENvZGUmIzM5O3MgRGVwZW5kZW5jZSBhbmQgRnV6emluZyBTdHJhdGVneSoqCgpPa2F5LCBzbyBJJiMzOTt2ZSBwaW5wb2ludGVkIGByZXNldF9iYXRjaF9zaXplYC4gTG9va2luZyBhdCB0aGUgY29kZSwgaXQmIzM5O3MgZGVmaW5lZCBhcm91bmQgbGluZSAzMjY1LCB3aGljaCBpcyBmaXJtbHkgd2l0aGluIHRoZSBjb25kaXRpb25hbCBibG9jayB0aWVkIHRvIGAjaWZkZWYgQ09ORklHX0xSVV9HRU5gLiBFeGNlbGxlbnQsIHRoYXQgbWVhbnMgYENPTkZJR19MUlVfR0VOYCBpcyBkZWZpbml0ZWx5IGEgcHJlcmVxdWlzaXRlIGZvciB0aGlzIGZ1bmN0aW9uYWxpdHkgdG8gZXZlbiBleGlzdC4gQW5kLCBzaW5jZSBJIHdhbnQgdG8gdGVzdCB0aGUgbmV3IGxvZ2ljIHdpdGhpbiBgbHJ1dmVjX2xpdmVfbG9ja19pcnFgLCBJJiMzOTtsbCBuZWVkIHRvIG1ha2Ugc3VyZSBgQ09ORklHX01FTUNHYCBpcyBlbmFibGVkIHRvby4KCk5vdywgbGV0JiMzOTtzIHRoaW5rIGFib3V0IGZ1enppbmcgdGFyZ2V0cy4gYGxydXZlY19saXZlX2xvY2tfaXJxYCBpdHNlbGYgaXMgaW5saW5lIGluIGEgaGVhZGVyLCBzbyB0aGF0JiMzOTtzIG5vdCBkaXJlY3RseSBmdXp6YWJsZS4gQnV0LCBpdCYjMzk7cyB1c2VkIHdpdGhpbiBgcmVzZXRfYmF0Y2hfc2l6ZWAsIHdoaWNoIGlzIHN0YXRpYy4gYHJlc2V0X2JhdGNoX3NpemVgLCBpbiB0dXJuLCBpcyBjYWxsZWQgYnkgYHdhbGtfbW1gIGFuZCBgZXZpY3RfZm9saW9zYC4gVGhvc2UgYXJlIHRoZSBlbnRyeSBwb2ludHMgdG8gY29uY2VudHJhdGUgb24uIEkmIzM5O2xsIG5lZWQgdG8gYW5hbHl6ZSBgd2Fsa19tbWAgYW5kIGBldmljdF9mb2xpb3NgIHRvIHVuZGVyc3RhbmQgaG93IHRoZXkgdXNlIGByZXNldF9iYXRjaF9zaXplYCBhbmQgaW5kaXJlY3RseSBgbHJ1dmVjX2xpdmVfbG9ja19pcnFgLiBGcm9tIHRoZXJlIEkmIzM5O2xsIGNvbnN0cnVjdCBhIGZvY3VzZWQgZnV6emluZyBjYW1wYWlnbiB0YXJnZXRpbmcgdGhlbS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTEgMTM6NTY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7d2Fsa19tbSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O21tL3Ztc2Nhbi5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O21tL3Ztc2Nhbi5jPTI2MzI9REVGSU5FX1NUQVRJQ19LRVlfQVJSQVlfRkFMU0UobHJ1X2dlbl9jYXBzLCBOUl9MUlVfR0VOX0NBUFMpO1xuLS1cbm1tL3Ztc2Nhbi5jLTI2MzUtXG5tbS92bXNjYW4uYzoyNjM2OnN0YXRpYyBib29sIHNob3VsZF93YWxrX21tdSh2b2lkKVxubW0vdm1zY2FuLmMtMjYzNy17XG4tLVxubW0vdm1zY2FuLmM9MzcxND1zdGF0aWMgaW50IHdhbGtfcHVkX3JhbmdlKHA0ZF90ICpwNGQsIHVuc2lnbmVkIGxvbmcgc3RhcnQsIHVuc2lnbmVkIGxvbmcgZW5kLFxuLS1cbm1tL3Ztc2Nhbi5jLTM3NTUtXG5tbS92bXNjYW4uYzozNzU2OnN0YXRpYyB2b2lkIHdhbGtfbW0oc3RydWN0IG1tX3N0cnVjdCAqbW0sIHN0cnVjdCBscnVfZ2VuX21tX3dhbGsgKndhbGspXG5tbS92bXNjYW4uYy0zNzU3LXtcbi0tXG5tbS92bXNjYW4uYz0zOTk0PXN0YXRpYyBib29sIHRyeV90b19pbmNfbWF4X3NlcShzdHJ1Y3QgbHJ1dmVjICpscnV2ZWMsIHVuc2lnbmVkIGxvbmcgc2VxLFxuLS1cbm1tL3Ztc2Nhbi5jLTQwMTctXHQgKi9cbm1tL3Ztc2Nhbi5jOjQwMTg6XHRpZiAoIXNob3VsZF93YWxrX21tdSgpKSB7XG5tbS92bXNjYW4uYy00MDE5LVx0XHRzdWNjZXNzID0gaXRlcmF0ZV9tbV9saXN0X25vd2FsayhscnV2ZWMsIHNlcSk7XG4tLVxubW0vdm1zY2FuLmMtNDAzNi1cdFx0aWYgKG1tKVxubW0vdm1zY2FuLmM6NDAzNzpcdFx0XHR3YWxrX21tKG1tLCB3YWxrKTtcbm1tL3Ztc2Nhbi5jLTQwMzgtXHR9IHdoaWxlIChtbSk7XG4tLVxubW0vdm1zY2FuLmM9NTM0Mz1zdGF0aWMgc3NpemVfdCBlbmFibGVkX3Nob3coc3RydWN0IGtvYmplY3QgKmtvYmosIHN0cnVjdCBrb2JqX2F0dHJpYnV0ZSAqYXR0ciwgY2hhciAqYnVmKVxuLS1cbm1tL3Ztc2Nhbi5jLTUzNDktXG5tbS92bXNjYW4uYzo1MzUwOlx0aWYgKHNob3VsZF93YWxrX21tdSgpKVxubW0vdm1zY2FuLmMtNTM1MS1cdFx0Y2FwcyB8PSBCSVQoTFJVX0dFTl9NTV9XQUxLKTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTEgMTM6NTY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNzc4MwoJCQkJCQkJb3V0cHV0OiAzMAoJCQkJCQkJdGhvdWdodHM6IDMxCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IGFuYWx5c2lzIG9mIHRoZSBwcm92aWRlZCBjb2RlIHNuaXBwZXQ6CgoqKlN0YXRpYyBGdW5jdGlvbiBBbmFseXNpcyoqCgpPa2F5LCBzbyBgd2Fsa19tbWAgaXMgZGVjbGFyZWQgYXMgc3RhdGljLCBhbmQgYGV2aWN0X2ZvbGlvc2AgaXMgdG9vLiBUaGF0IG1ha2VzIG1lIGltbWVkaWF0ZWx5IGN1cmlvdXMgYWJvdXQgdGhlIGNhbGwgZ3JhcGggZm9yIGBldmljdF9mb2xpb3NgLCBnaXZlbiB0aGF0IHRoZXNlIHN0YXRpYyBmdW5jdGlvbnMgYXJlIG5vdCB2aXNpYmxlIG91dHNpZGUgdGhlaXIgY29tcGlsYXRpb24gdW5pdC4gSXQmIzM5O3MgYSBrZXkgcGllY2Ugb2YgaW5mb3JtYXRpb24gd2hlbiBkZWFsaW5nIHdpdGggbWVtb3J5IG1hbmFnZW1lbnQgYXQgdGhpcyBsZXZlbC4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGludGVyYWN0aW9ucyB3aXRoaW4gdGhpcyBzcGVjaWZpYyBtb2R1bGUgdG8gcHJvcGVybHkgZ3JvayB0aGUgc3lzdGVtJiMzOTtzIGV2aWN0aW9uIHN0cmF0ZWd5LiBMZXQgbWUgdHJhY2UgdGhlIHVzZXMgYW5kIGZpbmQgb3V0IHdobyB1c2VzIGBldmljdF9mb2xpb3NgLiBVbmRlcnN0YW5kaW5nIHdoZXJlIGFuZCBob3cgYGV2aWN0X2ZvbGlvc2AgaXMgYmVpbmcgdXNlZCBpcyBnb2luZyB0byBiZSBjZW50cmFsIHRvIGRldGVybWluaW5nIGl0cyBwdXJwb3NlIGFuZCBpbXBhY3Qgb24gdGhlIG92ZXJhbGwgbWVtb3J5IG1hbmFnZW1lbnQgc3RyYXRlZ3kuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzExIDEzOjU2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2V2aWN0X2ZvbGlvcyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O21tL3Ztc2Nhbi5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O21tL3Ztc2Nhbi5jPTQ3Njc9c3RhdGljIGludCBpc29sYXRlX2ZvbGlvcyh1bnNpZ25lZCBsb25nIG5yX3RvX3NjYW4sIHN0cnVjdCBscnV2ZWMgKmxydXZlYyxcbi0tXG5tbS92bXNjYW4uYy00ODAwLVxubW0vdm1zY2FuLmM6NDgwMTpzdGF0aWMgaW50IGV2aWN0X2ZvbGlvcyh1bnNpZ25lZCBsb25nIG5yX3RvX3NjYW4sIHN0cnVjdCBscnV2ZWMgKmxydXZlYyxcbm1tL3Ztc2Nhbi5jLTQ4MDItXHRcdFx0c3RydWN0IHNjYW5fY29udHJvbCAqc2MsIGludCBzd2FwcGluZXNzKVxuLS1cbm1tL3Ztc2Nhbi5jPTQ5NTY9c3RhdGljIGJvb2wgdHJ5X3RvX3Nocmlua19scnV2ZWMoc3RydWN0IGxydXZlYyAqbHJ1dmVjLCBzdHJ1Y3Qgc2Nhbl9jb250cm9sICpzYylcbi0tXG5tbS92bXNjYW4uYy00OTc5LVx0XHRucl9iYXRjaCA9IG1pbihucl90b19zY2FuLCBNSU5fTFJVX0JBVENIKTtcbm1tL3Ztc2Nhbi5jOjQ5ODA6XHRcdGRlbHRhID0gZXZpY3RfZm9saW9zKG5yX2JhdGNoLCBscnV2ZWMsIHNjLCBzd2FwcGluZXNzKTtcbm1tL3Ztc2Nhbi5jLTQ5ODEtXHRcdGlmICghZGVsdGEpXG4tLVxubW0vdm1zY2FuLmM9NTU4Mz1zdGF0aWMgaW50IHJ1bl9ldmljdGlvbihzdHJ1Y3QgbHJ1dmVjICpscnV2ZWMsIHVuc2lnbmVkIGxvbmcgc2VxLCBzdHJ1Y3Qgc2Nhbl9jb250cm9sICpzYyxcbi0tXG5tbS92bXNjYW4uYy01NjAzLVx0XHRucl9iYXRjaCA9IG1pbihucl90b19yZWNsYWltIC0gc2MtXHUwMDNlbnJfcmVjbGFpbWVkLCBNQVhfTFJVX0JBVENIKTtcbm1tL3Ztc2Nhbi5jOjU2MDQ6XHRcdGlmICghZXZpY3RfZm9saW9zKG5yX2JhdGNoLCBscnV2ZWMsIHNjLCBzd2FwcGluZXNzKSlcbm1tL3Ztc2Nhbi5jLTU2MDUtXHRcdFx0cmV0dXJuIDA7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzExIDEzOjU2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDgzOTUKCQkJCQkJCW91dHB1dDogMzUKCQkJCQkJCXRob3VnaHRzOiA1MAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB0aG91Z2h0IHByb2Nlc3MsIGFzIGlmIEkgd2VyZSBhbmFseXppbmcgdGhpcyBjb2RlOgoKKipBbmFseXppbmcgdGhlIEV2aWN0aW9uIFBhdGggaW4gdGhlIExSVSBWZWN0b3IqKgoKT2theSwgc28gSSBzZWUgdGhhdCBgZXZpY3RfZm9saW9zYCBpcyBiZWluZyBjYWxsZWQgZnJvbSBib3RoIGB0cnlfdG9fc2hyaW5rX2xydXZlY2AgYW5kIGBydW5fZXZpY3Rpb25gLiBUaGF0JiMzOTtzIGEgcHJldHR5IGNsZWFyIGluZGljYXRpb24gdGhhdCBpdCYjMzk7cyB0aGUgY29yZSBmdW5jdGlvbiBmb3IgYWN0dWFsbHkgcmVtb3ZpbmcgZm9saW9zLCB3aGljaCBtYWtlcyBzZW5zZSBnaXZlbiB0aGUgbmFtZXMuIE5vdywgSSB3YW50IHRvIHRyYWNlIHRoZSBjYWxsIGdyYXBoIGZ1cnRoZXIgdXBzdHJlYW0uIE15IGZvY3VzIGlzIHVuZGVyc3RhbmRpbmcgdGhlIHRyaWdnZXJzIGZvciBmb2xpbyBldmljdGlvbi4gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgd2hlcmUgYHRyeV90b19zaHJpbmtfbHJ1dmVjYCBhbmQgYHJ1bl9ldmljdGlvbmAgYXJlIGJlaW5nICpjYWxsZWQqIGZyb20uIFRoYXQmIzM5O3MgdGhlIGNydWNpYWwgbGluayDigJMgdGhvc2UgYXJlIHRoZSBwb2ludHMgaW4gdGhlIHN5c3RlbSB0aGF0IGFyZSBpbml0aWF0aW5nIHRoZSBldmljdGlvbiBwcm9jZXNzIGJhc2VkIG9uIHdoYXRldmVyIGNvbmRpdGlvbnMgYXJlIGluIHBsYXkuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRob3NlIGNvbmRpdGlvbnMgdG8gZ3Jhc3AgdGhlIG92ZXJhbGwgZXZpY3Rpb24gcG9saWN5LiBBcmUgd2UgZGVhbGluZyB3aXRoIG1lbW9yeSBwcmVzc3VyZSwgYWdpbmcgb2YgZW50cmllcywgb3Igc29tZXRoaW5nIGVsc2UgZW50aXJlbHk/IFRpbWUgdG8gZGlnIGRlZXBlciBhbmQgZmluZCBvdXQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzExIDEzOjU2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3RyeV90b19zaHJpbmtfbHJ1dmVjJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bW0vdm1zY2FuLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bW0vdm1zY2FuLmM9NDkyND1zdGF0aWMgYm9vbCBzaG91bGRfYWJvcnRfc2NhbihzdHJ1Y3QgbHJ1dmVjICpscnV2ZWMsIHN0cnVjdCBzY2FuX2NvbnRyb2wgKnNjKVxuLS1cbm1tL3Ztc2Nhbi5jLTQ5NTUtICovXG5tbS92bXNjYW4uYzo0OTU2OnN0YXRpYyBib29sIHRyeV90b19zaHJpbmtfbHJ1dmVjKHN0cnVjdCBscnV2ZWMgKmxydXZlYywgc3RydWN0IHNjYW5fY29udHJvbCAqc2MpXG5tbS92bXNjYW4uYy00OTU3LXtcbi0tXG5tbS92bXNjYW4uYz01MDAxPXN0YXRpYyBpbnQgc2hyaW5rX29uZShzdHJ1Y3QgbHJ1dmVjICpscnV2ZWMsIHN0cnVjdCBzY2FuX2NvbnRyb2wgKnNjKVxuLS1cbm1tL3Ztc2Nhbi5jLTUwMjAtXG5tbS92bXNjYW4uYzo1MDIxOlx0bmVlZF9yb3RhdGUgPSB0cnlfdG9fc2hyaW5rX2xydXZlYyhscnV2ZWMsIHNjKTtcbm1tL3Ztc2Nhbi5jLTUwMjItXG4tLVxubW0vdm1zY2FuLmM9NTExMj1zdGF0aWMgdm9pZCBscnVfZ2VuX3Nocmlua19scnV2ZWMoc3RydWN0IGxydXZlYyAqbHJ1dmVjLCBzdHJ1Y3Qgc2Nhbl9jb250cm9sICpzYylcbi0tXG5tbS92bXNjYW4uYy01MTI0LVxubW0vdm1zY2FuLmM6NTEyNTpcdGlmICh0cnlfdG9fc2hyaW5rX2xydXZlYyhscnV2ZWMsIHNjKSlcbm1tL3Ztc2Nhbi5jLTUxMjYtXHRcdGxydV9nZW5fcm90YXRlX21lbWNnKGxydXZlYywgTUVNQ0dfTFJVX1lPVU5HKTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTEgMTM6NTY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogOTAzNgoJCQkJCQkJb3V0cHV0OiAzNgoJCQkJCQkJdGhvdWdodHM6IDE3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHN1bW1hcnksIHByZXNlbnRlZCBhcyBhIHN0cmVhbSBvZiB0aG91Z2h0OgoKKipFdmFsdWF0aW5nIGBscnVfZ2VuX3Nocmlua19scnV2ZWNgIGFzIGEgU29sdXRpb24qKgoKQWxyaWdodCwgbGV0JiMzOTtzIHNlZS4uLiBsb29raW5nIGF0IHRoaXMsIGBscnVfZ2VuX3Nocmlua19scnV2ZWNgIHNlZW1zIGxpa2UgYSBzdHJvbmcgY29udGVuZGVyIGhlcmUuIEl0JiMzOTtzIGdvdCB0aGUgcmlnaHQgZmVlbCwgYmFzZWQgb24gd2hhdCBJJiMzOTt2ZSBiZWVuIGNvbnNpZGVyaW5nLiBJIG5lZWQgdG8gZGlnIGludG8gdGhlIGRldGFpbHMsIGJ1dCBteSBpbml0aWFsIGFzc2Vzc21lbnQgaXMgcHJvbWlzaW5nLiBJJiMzOTtsbCBuZWVkIHRvIGV4cGxvcmUgaXRzIG1lY2hhbmljcyB0byBtYWtlIHN1cmUgaXQgYWxpZ25zIHByZWNpc2VseSB3aXRoIHRoZSBvcHRpbWl6YXRpb24gb2JqZWN0aXZlcywgYW5kIG9mIGNvdXJzZSwgZW5zdXJlIHRoZXJlIGFyZSBubyB1bmZvcmVzZWVuIGNvbXBsaWNhdGlvbnMgd2l0aCB0aGUgZXhpc3Rpbmcgc3lzdGVtLiBUaGUgcG90ZW50aWFsIGZvciB0aGUgb3ZlcmFsbCBnb2FscyBzZWVtcyBoaWdoIHdpdGggdGhpcyBhcHByb2FjaC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTEgMTM6NTY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bHJ1X2dlbl9zaHJpbmtfbHJ1dmVjJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bW0vdm1zY2FuLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bW0vdm1zY2FuLmM9NTA0Mj1zdGF0aWMgdm9pZCBzaHJpbmtfbWFueShzdHJ1Y3QgcGdsaXN0X2RhdGEgKnBnZGF0LCBzdHJ1Y3Qgc2Nhbl9jb250cm9sICpzYylcbi0tXG5tbS92bXNjYW4uYy01MTExLVxubW0vdm1zY2FuLmM6NTExMjpzdGF0aWMgdm9pZCBscnVfZ2VuX3Nocmlua19scnV2ZWMoc3RydWN0IGxydXZlYyAqbHJ1dmVjLCBzdHJ1Y3Qgc2Nhbl9jb250cm9sICpzYylcbm1tL3Ztc2Nhbi5jLTUxMTMte1xuLS1cbm1tL3Ztc2Nhbi5jPTU4NTY9c3RhdGljIHZvaWQgbHJ1X2dlbl9hZ2Vfbm9kZShzdHJ1Y3QgcGdsaXN0X2RhdGEgKnBnZGF0LCBzdHJ1Y3Qgc2Nhbl9jb250cm9sICpzYylcbi0tXG5tbS92bXNjYW4uYy01ODYwLVxubW0vdm1zY2FuLmM6NTg2MTpzdGF0aWMgdm9pZCBscnVfZ2VuX3Nocmlua19scnV2ZWMoc3RydWN0IGxydXZlYyAqbHJ1dmVjLCBzdHJ1Y3Qgc2Nhbl9jb250cm9sICpzYylcbm1tL3Ztc2Nhbi5jLTU4NjIte1xuLS1cbm1tL3Ztc2Nhbi5jPTU4NzM9c3RhdGljIHZvaWQgc2hyaW5rX2xydXZlYyhzdHJ1Y3QgbHJ1dmVjICpscnV2ZWMsIHN0cnVjdCBzY2FuX2NvbnRyb2wgKnNjKVxuLS1cbm1tL3Ztc2Nhbi5jLTU4ODQtXHRpZiAoKGxydV9nZW5fZW5hYmxlZCgpIHx8IGxydV9nZW5fc3dpdGNoaW5nKCkpIFx1MDAyNlx1MDAyNiAhcm9vdF9yZWNsYWltKHNjKSkge1xubW0vdm1zY2FuLmM6NTg4NTpcdFx0bHJ1X2dlbl9zaHJpbmtfbHJ1dmVjKGxydXZlYywgc2MpO1xubW0vdm1zY2FuLmMtNTg4Ni1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNy8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTEgMTM6NTY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogOTU4OAoJCQkJCQkJb3V0cHV0OiAzMAoJCQkJCQkJdGhvdWdodHM6IDQ1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBteSBvd246CgoqKkFuYWx5emluZyBQb3RlbnRpYWwgQm90dGxlbmVja3MgaW4gdGhlIEV2aWN0aW9uIFByb2Nlc3MqKgoKUmlnaHQsIHNvIHdlJiMzOTtyZSBsb29raW5nIGF0IG9wdGltaXppbmcgdGhlIGV2aWN0aW9uIHByb2Nlc3MuIE15IGltbWVkaWF0ZSB0aG91Z2h0IGlzIHRoYXQgYHNocmlua19scnV2ZWNgICpjb3VsZCogYmUgYSBkZWNlbnQgcGxhY2UgdG8gc3RhcnQsIGJ1dCBJIG5lZWQgdG8gYmUgY2F1dGlvdXMuIEl0JiMzOTtzIGFsbW9zdCBjZXJ0YWlubHkgb24gdGhlIGhvdCBwYXRoLCBhbmQgd2UmIzM5O2xsIHdhbnQgdG8gYmUgY2FyZWZ1bCBhYm91dCBtYWtpbmcgYW55IGNoYW5nZXMgdGhlcmUuIEFueSBwZXJmb3JtYW5jZSBpbXByb3ZlbWVudHMgd2UgZ2FpbiBtaWdodCBiZSBlYXNpbHkgb2Zmc2V0IGJ5IGluY3JlYXNlZCBjb21wbGV4aXR5IG9yIHN1YnRsZSByZWdyZXNzaW9ucy4gTGV0JiMzOTtzIG5vdCBqdW1wIHRvIGNvbmNsdXNpb25zIGFib3V0IHRoYXQgb25lIGp1c3QgeWV0LgoKSW5zdGVhZCwgSSYjMzk7bGwgc2hpZnQgZm9jdXMgYW5kIHByaW9yaXRpemUgYSBkZWVwIGRpdmUgaW50byBgcnVuX2V2aWN0aW9uYCBhbmQgYHRyeV90b19pbmNfbWF4X3NlcWAuIFRob3NlIHNlZW0gbGlrZSBtb3JlIHByb21pc2luZyBhcmVhcyB0byBpbnZlc3RpZ2F0ZSBmb3IgcG90ZW50aWFsIGluZWZmaWNpZW5jaWVzLiBXZSBuZWVkIHRvIHVuZGVyc3RhbmQgaG93IHRoZSBldmljdGlvbiBwcm9jZXNzIGlzIHRyaWdnZXJlZCBhbmQgd2hhdCB0aGUgY3JpdGljYWwgbG9ja2luZyBhbmQgZGF0YSBhY2Nlc3MgcGF0dGVybnMgYXJlIHdpdGhpbiB0aG9zZSBmdW5jdGlvbnMuIEEgY2FyZWZ1bCBwcm9maWxpbmcgYW5kIGFuYWx5c2lzIG9mIHRob3NlIGZ1bmN0aW9ucyBzaG91bGQgcmV2ZWFsIHdoZXRoZXIgd2UgY2FuIHNxdWVlemUgb3V0IHNvbWUgbW9yZSBwZXJmb3JtYW5jZSBnYWlucywgYW5kIHdoaWNoIG9mIHRob3NlIGZ1bmN0aW9ucyBhcmUgb24gdGhlIGNyaXRpY2FsIHBhdGguCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzExIDEzOjU2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3J1bl9ldmljdGlvbiYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O21tL3Ztc2Nhbi5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O21tL3Ztc2Nhbi5jPTU1NzI9c3RhdGljIGludCBydW5fYWdpbmcoc3RydWN0IGxydXZlYyAqbHJ1dmVjLCB1bnNpZ25lZCBsb25nIHNlcSxcbi0tXG5tbS92bXNjYW4uYy01NTgyLVxubW0vdm1zY2FuLmM6NTU4MzpzdGF0aWMgaW50IHJ1bl9ldmljdGlvbihzdHJ1Y3QgbHJ1dmVjICpscnV2ZWMsIHVuc2lnbmVkIGxvbmcgc2VxLCBzdHJ1Y3Qgc2Nhbl9jb250cm9sICpzYyxcbm1tL3Ztc2Nhbi5jLTU1ODQtXHRcdFx0aW50IHN3YXBwaW5lc3MsIHVuc2lnbmVkIGxvbmcgbnJfdG9fcmVjbGFpbSlcbi0tXG5tbS92bXNjYW4uYz01NjEzPXN0YXRpYyBpbnQgcnVuX2NtZChjaGFyIGNtZCwgdTY0IG1lbWNnX2lkLCBpbnQgbmlkLCB1bnNpZ25lZCBsb25nIHNlcSxcbi0tXG5tbS92bXNjYW4uYy01NjQ0LVx0Y2FzZSAmIzM5Oy0mIzM5Ozpcbm1tL3Ztc2Nhbi5jOjU2NDU6XHRcdGVyciA9IHJ1bl9ldmljdGlvbihscnV2ZWMsIHNlcSwgc2MsIHN3YXBwaW5lc3MsIG9wdCk7XG5tbS92bXNjYW4uYy01NjQ2LVx0XHRicmVhaztcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTEgMTM6NTY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTAxMjMKCQkJCQkJCW91dHB1dDogMzEKCQkJCQkJCXRob3VnaHRzOiA5NQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB1bmRlcnN0YW5kaW5nIG9mIHRoZSBleGVjdXRpb24gcGF0aCwgbGFpZCBvdXQgbG9naWNhbGx5OgoKKipUcmFjaW5nIHRoZSBTZXF1ZW5jZTogQSBGbG93IG9mIE9wZXJhdGlvbnMqKgoKT2theSwgc28gSSYjMzk7bSBkaWdnaW5nIGludG8gaG93IHRoaXMgc2VxdWVuY2UgZ2VuZXJhdGlvbiB3b3Jrcy4gSXQgYXBwZWFycyBgcnVuX2NtZGAgaXMgaW5pdGlhdGVkIGZyb20gYGxydV9nZW5fc2VxX3dyaXRlYCwgd2hpY2ggaXMgYSBkZWJ1Z2ZzIG9yIHN5c2ZzIGludGVyZmFjZSDigJMgdGhhdCYjMzk7cyB0aGUgZW50cnkgcG9pbnQgZnJvbSB1c2Vyc3BhY2UgaW50ZXJhY3Rpb24uIEhvd2V2ZXIsIEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoYXQgdHJpZ2dlcnMgdGhlIGV4ZWN1dGlvbiBvZiBgcmVzZXRfYmF0Y2hfc2l6ZWAuIEFoYSwgYHJlc2V0X2JhdGNoX3NpemVgIGlzIGRpcmVjdGx5IGNhbGxlZCBmcm9tIHR3byBwbGFjZXM6IGB3YWxrX21tYCBhbmQgYGV2aWN0X2ZvbGlvc2AuICBOb3csIGB3YWxrX21tYCBpdHNlbGYgZ2V0cyBjYWxsZWQgYnkgYHRyeV90b19pbmNfbWF4X3NlcWAuIEZ1cnRoZXIgZG93biB0aGUgY2FsbCBzdGFjaywgYHRyeV90b19pbmNfbWF4X3NlcWAgaXMgdWx0aW1hdGVseSBpbnZva2VkIGJ5IGBpbmNfbWF4X3NlcWAuIFNvIHRoZSBrZXkgc2VlbXMgdG8gYmUgYGluY19tYXhfc2VxYCwgYXMgdGhhdCBpcyBhdCB0aGUgcm9vdCBvZiB0aGUgc2VxdWVuY2UuIEkgbmVlZCB0byBsb29rIGF0IHdoYXQgYGluY19tYXhfc2VxYCBkb2VzIGFuZCBnbyBmcm9tIHRoZXJlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMSAxMzo1NjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtpbmNfbWF4X3NlcSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O21tL3Ztc2Nhbi5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O21tL3Ztc2Nhbi5jPTM3NTY9c3RhdGljIHZvaWQgd2Fsa19tbShzdHJ1Y3QgbW1fc3RydWN0ICptbSwgc3RydWN0IGxydV9nZW5fbW1fd2FsayAqd2Fsaylcbi0tXG5tbS92bXNjYW4uYy0zNzcyLVxubW0vdm1zY2FuLmM6Mzc3MzpcdFx0LyogYW5vdGhlciB0aHJlYWQgbWlnaHQgaGF2ZSBjYWxsZWQgaW5jX21heF9zZXEoKSAqL1xubW0vdm1zY2FuLmMtMzc3NC1cdFx0aWYgKHdhbGstXHUwMDNlc2VxICE9IG1heF9zZXEpXG4tLVxubW0vdm1zY2FuLmM9Mzg3Nz1zdGF0aWMgdm9pZCB0cnlfdG9faW5jX21pbl9zZXEoc3RydWN0IGxydXZlYyAqbHJ1dmVjLCBpbnQgc3dhcHBpbmVzcylcbi0tXG5tbS92bXNjYW4uYy0zOTI4LVxubW0vdm1zY2FuLmM6MzkyOTpzdGF0aWMgYm9vbCBpbmNfbWF4X3NlcShzdHJ1Y3QgbHJ1dmVjICpscnV2ZWMsIHVuc2lnbmVkIGxvbmcgc2VxLCBpbnQgc3dhcHBpbmVzcylcbm1tL3Ztc2Nhbi5jLTM5MzAte1xuLS1cbm1tL3Ztc2Nhbi5jLTM5OTMtXG5tbS92bXNjYW4uYzozOTk0OnN0YXRpYyBib29sIHRyeV90b19pbmNfbWF4X3NlcShzdHJ1Y3QgbHJ1dmVjICpscnV2ZWMsIHVuc2lnbmVkIGxvbmcgc2VxLFxubW0vdm1zY2FuLmMtMzk5NS1cdFx0XHQgICAgICAgaW50IHN3YXBwaW5lc3MsIGJvb2wgZm9yY2Vfc2Nhbilcbi0tXG5tbS92bXNjYW4uYy00MDA1LVx0aWYgKCFtbV9zdGF0ZSlcbm1tL3Ztc2Nhbi5jOjQwMDY6XHRcdHJldHVybiBpbmNfbWF4X3NlcShscnV2ZWMsIHNlcSwgc3dhcHBpbmVzcyk7XG5tbS92bXNjYW4uYy00MDA3LVxuLS1cbm1tL3Ztc2Nhbi5jLTQwNDAtXHRpZiAoc3VjY2Vzcykge1xubW0vdm1zY2FuLmM6NDA0MTpcdFx0c3VjY2VzcyA9IGluY19tYXhfc2VxKGxydXZlYywgc2VxLCBzd2FwcGluZXNzKTtcbm1tL3Ztc2Nhbi5jLTQwNDItXHRcdFdBUk5fT05fT05DRSghc3VjY2Vzcyk7XG4tLVxubW0vdm1zY2FuLmM9NDQyNT1ib29sIHJlY2hlY2tfbHJ1X2dlbl9tYXhfbWVtY2coc3RydWN0IG1lbV9jZ3JvdXAgKm1lbWNnLCBpbnQgbmlkKVxuLS1cbm1tL3Ztc2Nhbi5jLTQ0MzctXG5tbS92bXNjYW4uYzo0NDM4OnN0YXRpYyB2b2lkIHRyeV90b19pbmNfbWF4X3NlcV9ub3dhbGsoc3RydWN0IG1lbV9jZ3JvdXAgKm1lbWNnLFxubW0vdm1zY2FuLmMtNDQzOS1cdFx0XHRcdCAgICAgIHN0cnVjdCBscnV2ZWMgKmxydXZlYylcbi0tXG5tbS92bXNjYW4uYy00NDYzLVx0aWYgKHN1Y2Nlc3MpXG5tbS92bXNjYW4uYzo0NDY0Olx0XHRpbmNfbWF4X3NlcShscnV2ZWMsIG1heF9zZXEsIHN3YXBwaW5lc3MpO1xubW0vdm1zY2FuLmMtNDQ2NS19XG4tLVxubW0vdm1zY2FuLmM9NDQ3Mj12b2lkIG1heF9scnVfZ2VuX21lbWNnKHN0cnVjdCBtZW1fY2dyb3VwICptZW1jZywgaW50IG5pZClcbi0tXG5tbS92bXNjYW4uYy00NDc4LVx0XHR3aGlsZSAoZ2V0X25yX2dlbnMobHJ1dmVjLCB0eXBlKSBcdTAwM2MgTUFYX05SX0dFTlMpIHtcbm1tL3Ztc2Nhbi5jOjQ0Nzk6XHRcdFx0dHJ5X3RvX2luY19tYXhfc2VxX25vd2FsayhtZW1jZywgbHJ1dmVjKTtcbm1tL3Ztc2Nhbi5jLTQ0ODAtXHRcdFx0Y29uZF9yZXNjaGVkKCk7XG4tLVxubW0vdm1zY2FuLmM9NDkyND1zdGF0aWMgYm9vbCBzaG91bGRfYWJvcnRfc2NhbihzdHJ1Y3QgbHJ1dmVjICpscnV2ZWMsIHN0cnVjdCBzY2FuX2NvbnRyb2wgKnNjKVxuLS1cbm1tL3Ztc2Nhbi5jLTQ5NTItICogRm9yIGZ1dHVyZSBvcHRpbWl6YXRpb25zOlxubW0vdm1zY2FuLmM6NDk1MzogKiAxLiBEZWZlciB0cnlfdG9faW5jX21heF9zZXEoKSB0byB3b3JrcXVldWVzIHRvIHJlZHVjZSBsYXRlbmN5IGZvciBtZW1jZ1xubW0vdm1zY2FuLmMtNDk1NC0gKiAgICByZWNsYWltLlxuLS1cbm1tL3Ztc2Nhbi5jPTQ5NTY9c3RhdGljIGJvb2wgdHJ5X3RvX3Nocmlua19scnV2ZWMoc3RydWN0IGxydXZlYyAqbHJ1dmVjLCBzdHJ1Y3Qgc2Nhbl9jb250cm9sICpzYylcbi0tXG5tbS92bXNjYW4uYy00OTczLVx0XHRpZiAoc2hvdWxkX3J1bl9hZ2luZyhscnV2ZWMsIG1heF9zZXEsIHNjLCBzd2FwcGluZXNzKSkge1xubW0vdm1zY2FuLmM6NDk3NDpcdFx0XHRpZiAodHJ5X3RvX2luY19tYXhfc2VxKGxydXZlYywgbWF4X3NlcSwgc3dhcHBpbmVzcywgZmFsc2UpKVxubW0vdm1zY2FuLmMtNDk3NS1cdFx0XHRcdG5lZWRfcm90YXRlID0gdHJ1ZTtcbi0tXG5tbS92bXNjYW4uYz01NTcyPXN0YXRpYyBpbnQgcnVuX2FnaW5nKHN0cnVjdCBscnV2ZWMgKmxydXZlYywgdW5zaWduZWQgbG9uZyBzZXEsXG4tLVxubW0vdm1zY2FuLmMtNTU3OS1cbm1tL3Ztc2Nhbi5jOjU1ODA6XHRyZXR1cm4gdHJ5X3RvX2luY19tYXhfc2VxKGxydXZlYywgbWF4X3NlcSwgc3dhcHBpbmVzcywgZm9yY2Vfc2NhbikgPyAwIDogLUVFWElTVDtcbm1tL3Ztc2Nhbi5jLTU1ODEtfVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIxLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMSAxMzo1NjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMTU5NQoJCQkJCQkJb3V0cHV0OiAzMAoJCQkJCQkJdGhvdWdodHM6IDQwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBteSBvd246CgoqKlByaW9yaXRpemluZyBPcHRpbWl6YXRpb24gRWZmb3J0cyoqCgpSaWdodCwgbGV0JiMzOTtzIHplcm8gaW4uIFRoaW5raW5nIGFib3V0IGltcHJvdmluZyBvdmVyYWxsIHBlcmZvcm1hbmNlLCB0aGUgYHRyeV90b19pbmNfbWF4X3NlcWAgZnVuY3Rpb24gaXMgZGVmaW5pdGVseSBhIGtleSBhcmVhIHRvIGNvbmNlbnRyYXRlIG9uLiBJdCYjMzk7cyBsaWtlbHkgYSBib3R0bGVuZWNrIHRoYXQgY291bGQgeWllbGQgc2lnbmlmaWNhbnQgZ2FpbnMgaWYgb3B0aW1pemVkIGNvcnJlY3RseS4KCkFuZCwgb2YgY291cnNlLCBgZXZpY3RfZm9saW9zYC4gSSBrZWVwIGNvbWluZyBiYWNrIHRvIHRoYXQgb25lLiBNZW1vcnkgbWFuYWdlbWVudCBpcyBhbHdheXMgY3JpdGljYWwsIGFuZCB0aGlzIGZ1bmN0aW9uIGlzIGF0IHRoZSBoZWFydCBvZiB0aGF0LiBMZXQgbWUgcmUtZXhhbWluZSBgZXZpY3RfZm9saW9zYC4gUHJvYmFibHkgd29ydGggYW5vdGhlciBkZWVwIGRpdmUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzExIDEzOjU2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2V2aWN0X2ZvbGlvcyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O21tL3Ztc2Nhbi5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O21tL3Ztc2Nhbi5jPTQ3Njc9c3RhdGljIGludCBpc29sYXRlX2ZvbGlvcyh1bnNpZ25lZCBsb25nIG5yX3RvX3NjYW4sIHN0cnVjdCBscnV2ZWMgKmxydXZlYyxcbi0tXG5tbS92bXNjYW4uYy00ODAwLVxubW0vdm1zY2FuLmM6NDgwMTpzdGF0aWMgaW50IGV2aWN0X2ZvbGlvcyh1bnNpZ25lZCBsb25nIG5yX3RvX3NjYW4sIHN0cnVjdCBscnV2ZWMgKmxydXZlYyxcbm1tL3Ztc2Nhbi5jLTQ4MDItXHRcdFx0c3RydWN0IHNjYW5fY29udHJvbCAqc2MsIGludCBzd2FwcGluZXNzKVxuLS1cbm1tL3Ztc2Nhbi5jPTQ5NTY9c3RhdGljIGJvb2wgdHJ5X3RvX3Nocmlua19scnV2ZWMoc3RydWN0IGxydXZlYyAqbHJ1dmVjLCBzdHJ1Y3Qgc2Nhbl9jb250cm9sICpzYylcbi0tXG5tbS92bXNjYW4uYy00OTc5LVx0XHRucl9iYXRjaCA9IG1pbihucl90b19zY2FuLCBNSU5fTFJVX0JBVENIKTtcbm1tL3Ztc2Nhbi5jOjQ5ODA6XHRcdGRlbHRhID0gZXZpY3RfZm9saW9zKG5yX2JhdGNoLCBscnV2ZWMsIHNjLCBzd2FwcGluZXNzKTtcbm1tL3Ztc2Nhbi5jLTQ5ODEtXHRcdGlmICghZGVsdGEpXG4tLVxubW0vdm1zY2FuLmM9NTU4Mz1zdGF0aWMgaW50IHJ1bl9ldmljdGlvbihzdHJ1Y3QgbHJ1dmVjICpscnV2ZWMsIHVuc2lnbmVkIGxvbmcgc2VxLCBzdHJ1Y3Qgc2Nhbl9jb250cm9sICpzYyxcbi0tXG5tbS92bXNjYW4uYy01NjAzLVx0XHRucl9iYXRjaCA9IG1pbihucl90b19yZWNsYWltIC0gc2MtXHUwMDNlbnJfcmVjbGFpbWVkLCBNQVhfTFJVX0JBVENIKTtcbm1tL3Ztc2Nhbi5jOjU2MDQ6XHRcdGlmICghZXZpY3RfZm9saW9zKG5yX2JhdGNoLCBscnV2ZWMsIHNjLCBzd2FwcGluZXNzKSlcbm1tL3Ztc2Nhbi5jLTU2MDUtXHRcdFx0cmV0dXJuIDA7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzExIDEzOjU2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDEyMTkwCgkJCQkJCQlvdXRwdXQ6IDM4CgkJCQkJCQl0aG91Z2h0czogMjE0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkZvY3VzaW5nIG9uIFBvdGVudGlhbCBTeXprYWxsZXIgVGFyZ2V0cyoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhlc2UgZnVuY3Rpb25zIGFzIHBvdGVudGlhbCBjYW5kaWRhdGVzIGZvciBmdXp6aW5nIHdpdGggc3l6a2FsbGVyLiBJIHdhcyBpbml0aWFsbHkgdGhpbmtpbmcgYHRyeV90b19pbmNfbWF4X3NlcWAgYW5kIGBldmljdF9mb2xpb3NgIGxvb2tlZCBwcm9taXNpbmcgZm9yIGBGb2N1c1N5bWJvbHNgLiBIb2xkIG9uIHRob3VnaCwgSSBuZWVkIHRvIHJlbWluZCBteXNlbGYgdGhhdCBgZXZpY3RfZm9saW9zYCBpcyBzdGF0aWMuIFRoYXQgYnJpbmdzIHVwIGFuIGludGVyZXN0aW5nIHBvaW50OiBjYW4gd2UgZXZlbiB1c2Ugc3l6a2FsbGVyIHRvIHRhcmdldCBzdGF0aWMgZnVuY3Rpb25zPyBZZXMsIHRoYXQmIzM5O3MgcmlnaHQsIGlmIHRoZXkmIzM5O3JlIGJha2VkIGludG8gdGhlIGtlcm5lbCBpbWFnZSwgc3l6a2FsbGVyICpjYW4qIGZvY3VzIG9uIHRoZW0uIFdhaXQgYSBzZWNvbmQuLi4gYHRyeV90b19pbmNfbWF4X3NlcWAgaXMgYWxzbyBzdGF0aWMhCgpBbHJpZ2h0LCBsZXQmIzM5O3MgYnJvYWRlbiB0aGUgc2VhcmNoIGEgYml0LiBBcmUgdGhlcmUgYW55ICpub24qLXN0YXRpYyBmdW5jdGlvbnMgd2l0aGluIHRoaXMgYXJlYSB0aGF0IG1pZ2h0IGJlIGdvb2QgdGFyZ2V0cz8gVGhlIHN0YXRpYyBvbmVzIGFyZSBub3QgbG9va2luZyBzbyBoZWxwZnVsLiBMZXQmIzM5O3Mgc2VlLi4uIGBscnVfZ2VuX3Nocmlua19scnV2ZWNgIGlzIHN0YXRpYy4gSG1tLCB3aGF0IGFib3V0IGBzaHJpbmtfbHJ1dmVjYD8gQWxzbyBzdGF0aWMuIGBzaHJpbmtfbm9kZWA/IFN0YXRpYy4gYHNocmlua196b25lc2A/IFN0YXRpYyBhcyB3ZWxsLiBTdGFydGluZyB0byBmZWVsIGxpa2UgSSYjMzk7bSBzdHVjayB3aXRoIHN0YXRpY3MgaGVyZSwgYnV0IEkganVzdCBmb3VuZCBvbmU6IGBkb190cnlfdG9fZnJlZV9wYWdlc2AgaXMgc3RhdGljLiBPaywgYHRyeV90b19mcmVlX3BhZ2VzYCBpcyBub24tc3RhdGljIGFuZCB0aGVuIGB0cnlfdG9fZnJlZV9tZW1fY2dyb3VwX3BhZ2VzYCBpcyBub24tc3RhdGljIGFzIHdlbGwuIFRoYXQgbG9va3MgbGlrZSB3ZSBoYXZlIGEgd2lubmVyLiBMZXQmIzM5O3MgZGlnIGRlZXBlciBpbnRvIGB0cnlfdG9fZnJlZV9tZW1fY2dyb3VwX3BhZ2VzYC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTEgMTM6NTY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7dHJ5X3RvX2ZyZWVfbWVtX2Nncm91cF9wYWdlcyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O21tL3Ztc2Nhbi5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O21tL3Ztc2Nhbi5jPTY3MTk9dW5zaWduZWQgbG9uZyBtZW1fY2dyb3VwX3Nocmlua19ub2RlKHN0cnVjdCBtZW1fY2dyb3VwICptZW1jZyxcbi0tXG5tbS92bXNjYW4uYy02NzU4LVxubW0vdm1zY2FuLmM6Njc1OTp1bnNpZ25lZCBsb25nIHRyeV90b19mcmVlX21lbV9jZ3JvdXBfcGFnZXMoc3RydWN0IG1lbV9jZ3JvdXAgKm1lbWNnLFxubW0vdm1zY2FuLmMtNjc2MC1cdFx0XHRcdFx0ICAgdW5zaWduZWQgbG9uZyBucl9wYWdlcyxcbi0tXG5tbS92bXNjYW4uYy02Nzk5LSNlbHNlXG5tbS92bXNjYW4uYzo2ODAwOnVuc2lnbmVkIGxvbmcgdHJ5X3RvX2ZyZWVfbWVtX2Nncm91cF9wYWdlcyhzdHJ1Y3QgbWVtX2Nncm91cCAqbWVtY2csXG5tbS92bXNjYW4uYy02ODAxLVx0XHRcdFx0XHQgICB1bnNpZ25lZCBsb25nIG5yX3BhZ2VzLFxuLS1cbm1tL3Ztc2Nhbi5jPTc4NjM9aW50IHVzZXJfcHJvYWN0aXZlX3JlY2xhaW0oY2hhciAqYnVmLFxuLS1cbm1tL3Ztc2Nhbi5jLTc5MjMtXHRcdFx0XHRcdCAgTUVNQ0dfUkVDTEFJTV9QUk9BQ1RJVkU7XG5tbS92bXNjYW4uYzo3OTI0Olx0XHRcdHJlY2xhaW1lZCA9IHRyeV90b19mcmVlX21lbV9jZ3JvdXBfcGFnZXMobWVtY2csXG5tbS92bXNjYW4uYy03OTI1LVx0XHRcdFx0XHRcdCBiYXRjaF9zaXplLCBnZnBfbWFzayxcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTEgMTM6NTY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTMwODAKCQkJCQkJCW91dHB1dDogMzQKCQkJCQkJCXRob3VnaHRzOiA0NQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgbXkgb3duIG1lbnRhbCBwcm9jZXNzaW5nOgoKKipBbmFseXppbmcgTWVtb3J5IE1hbmFnZW1lbnQgQ2FuZGlkYXRlcyoqCgpBbHJpZ2h0LCBsZXQmIzM5O3Mgc2VlLCB3aGVuIHdlJiMzOTtyZSB0aGlua2luZyBhYm91dCBwb3RlbnRpYWwgY2FuZGlkYXRlcyBmb3IgbWVtb3J5IGZyZWVpbmcgc3RyYXRlZ2llcywgYHRyeV90b19mcmVlX21lbV9jZ3JvdXBfcGFnZXNgIGRlZmluaXRlbHkgc3RhbmRzIG91dCBhcyBhIHN0cm9uZyBjb250ZW5kZXIuIEl0JiMzOTtzIHRhcmdldGVkIGFuZCBsaWtlbHkgcHJvdmlkZXMgYSBmb2N1c2VkIGFwcHJvYWNoIHRvIHJlY2xhaW0gbWVtb3J5IHdpdGhpbiBhIGNvbnRyb2wgZ3JvdXAgY29udGV4dC4gVGhhdCBzZWVtcyBwcm9taXNpbmcuCgpPbiB0aGUgb3RoZXIgaGFuZCwgSSYjMzk7bSBub3RpbmcgdGhlIGRpZmZlcmVuY2UgaW4gdGhlIHNjb3BlIG9mIHNvbWUgb2YgdGhlc2UgZnVuY3Rpb25zLiBgd2Fsa19tbWAgaXMgc3RhdGljLCB3aGljaCB1c3VhbGx5IG1lYW5zIGl0JiMzOTtzIGxpbWl0ZWQgaW4gaXRzIGFjY2Vzc2liaWxpdHkuIGBscnVfZ2VuX2xvb2tfYXJvdW5kYCBpcyBub24tc3RhdGljLCB3aGljaCBpbXBsaWVzIGl0JiMzOTtzIG1vcmUgZ2VuZXJhbGx5IHVzYWJsZS4gSSYjMzk7bGwgbmVlZCB0byBjb25zaWRlciBob3cgdGhlaXIgcmVzcGVjdGl2ZSBzY29wZSBhZmZlY3RzIHRoZWlyIHVzZWZ1bG5lc3MgaW4gdGhpcyBzY2VuYXJpby4gVGhpcyB3aWxsIGxpa2VseSBlZmZlY3QgYW55IGRvd25zdHJlYW0gaW50ZXJhY3Rpb24uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzExIDEzOjU2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2xydV9nZW5fbG9va19hcm91bmQmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDttbS92bXNjYW4uYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDttbS92bXNjYW4uYz0yNzE3PXN0YXRpYyBib29sIF9fbWF5YmVfdW51c2VkIHNlcV9pc192YWxpZChzdHJ1Y3QgbHJ1dmVjICpscnV2ZWMpXG4tLVxubW0vdm1zY2FuLmMtMjc0Ni0gKiB3YWxrX3BtZF9yYW5nZSgpOyB0aGUgZXZpY3Rpb24gYWxzbyByZXBvcnQgdGhlbSB3aGVuIHdhbGtpbmcgdGhlIHJtYXBcbm1tL3Ztc2Nhbi5jOjI3NDc6ICogaW4gbHJ1X2dlbl9sb29rX2Fyb3VuZCgpLlxubW0vdm1zY2FuLmMtMjc0OC0gKlxuLS1cbm1tL3Ztc2Nhbi5jPTM5OTQ9c3RhdGljIGJvb2wgdHJ5X3RvX2luY19tYXhfc2VxKHN0cnVjdCBscnV2ZWMgKmxydXZlYywgdW5zaWduZWQgbG9uZyBzZXEsXG4tLVxubW0vdm1zY2FuLmMtNDAxMy1cdCAqIElmIHRoZSBoYXJkd2FyZSBkb2VzbiYjMzk7dCBhdXRvbWF0aWNhbGx5IHNldCB0aGUgYWNjZXNzZWQgYml0LCBmYWxsYmFja1xubW0vdm1zY2FuLmM6NDAxNDpcdCAqIHRvIGxydV9nZW5fbG9va19hcm91bmQoKSwgd2hpY2ggb25seSBjbGVhcnMgdGhlIGFjY2Vzc2VkIGJpdCBpbiBhXG5tbS92bXNjYW4uYy00MDE1LVx0ICogaGFuZGZ1bCBvZiBQVEVzLiBTcHJlYWRpbmcgdGhlIHdvcmsgb3V0IG92ZXIgYSBwZXJpb2Qgb2YgdGltZSB1c3VhbGx5XG4tLVxubW0vdm1zY2FuLmM9NDEzMz1zdGF0aWMgdm9pZCBscnVfZ2VuX2FnZV9ub2RlKHN0cnVjdCBwZ2xpc3RfZGF0YSAqcGdkYXQsIHN0cnVjdCBzY2FuX2NvbnRyb2wgKnNjKVxuLS1cbm1tL3Ztc2Nhbi5jLTQxNzktICovXG5tbS92bXNjYW4uYzo0MTgwOmJvb2wgbHJ1X2dlbl9sb29rX2Fyb3VuZChzdHJ1Y3QgcGFnZV92bWFfbWFwcGVkX3dhbGsgKnB2bXcsIHVuc2lnbmVkIGludCBucilcbm1tL3Ztc2Nhbi5jLTQxODEte1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI3LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMSAxMzo1NjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMzcwMwoJCQkJCQkJb3V0cHV0OiAyOQoJCQkJCQkJdGhvdWdodHM6IDQ3NAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIExSVSBHZW5lcmF0aW9uIFBhZ2UgUmVjbGFpbSBMb2dpYyoqCgpPa2F5LCBzbyBgbHJ1X2dlbl9sb29rX2Fyb3VuZGAgaXNuJiMzOTt0IHN0YXRpYywgd2hpY2ggaXMgZ29vZCB0byBrZWVwIGluIG1pbmQuIExldCYjMzk7cyByZXZpc2l0IGByZXNldF9iYXRjaF9zaXplYC4gSSBzZWUgaXQmIzM5O3MgY2FsbGVkIGZyb20gYm90aCBgd2Fsa19tbWAgYW5kIGBldmljdF9mb2xpb3NgLiBgd2Fsa19tbWAgdHJhY2VzIGJhY2sgdG8gYHRyeV90b19pbmNfbWF4X3NlcWAsIHdoaWxlIGBldmljdF9mb2xpb3NgIGlzIGNhbGxlZCBieSBgdHJ5X3RvX3Nocmlua19scnV2ZWNgIGFuZCBgcnVuX2V2aWN0aW9uYC4gTm93LCBgdHJ5X3RvX3Nocmlua19scnV2ZWNgIGl0c2VsZiBpcyBjYWxsZWQgYnkgYHNocmlua19vbmVgIGFuZCBgbHJ1X2dlbl9zaHJpbmtfbHJ1dmVjYC4gVGhhdCBsYXR0ZXIgZnVuY3Rpb24gbGVhZHMgdG8gYHNocmlua19scnV2ZWNgLCB3aGljaCBnZXRzIGNhbGxlZCBieSBgc2hyaW5rX25vZGVgLiBGaW5hbGx5LCBgc2hyaW5rX25vZGVgIHRpZXMgaW50byBzZXZlcmFsIG90aGVyIGZ1bmN0aW9uczogYHNocmlua196b25lc2AsIGBkb190cnlfdG9fZnJlZV9wYWdlc2AsIGBrc3dhcGRfc2hyaW5rX25vZGVgLCBhbmQgYG1lbV9jZ3JvdXBfc2hyaW5rX25vZGVgLgoKU28sIGNvbnNpZGVyaW5nIHRoZSBjb250ZXh0LCBgdHJ5X3RvX2ZyZWVfbWVtX2Nncm91cF9wYWdlc2AgbG9va3MgbGlrZSBhIGdvb2Qgbm9uLXN0YXRpYyBmdW5jdGlvbiB0byBmb2N1cyBvbi4gQWxzbyBgdHJ5X3RvX2ZyZWVfcGFnZXNgLCBidXQgdGhhdCBmdW5jdGlvbiBpcyBwcm9iYWJseSBhIGhvdCBwYXRoLiBTaW5jZSBTeXprYWxsZXIgY2FuIGhhbmRsZSBzdGF0aWMgZnVuY3Rpb25zLCBJIHRoaW5rIGZvY3VzaW5nIG9uIGBldmljdF9mb2xpb3NgIGFuZCBgdHJ5X3RvX2luY19tYXhfc2VxYCBhcyB0aGUgYEZvY3VzU3ltYm9sc2Agc2VlbXMgbGlrZSBhIHNvbGlkIGFwcHJvYWNoIGZvciBub3cuCgpIb2xkIG9uLCB0aGUgcGF0Y2ggdG91Y2hlcyBgbHJ1dmVjX2xpdmVfbG9ja19pcnFgLCB3aGljaCBpcyB1c2VkIGluIGByZXNldF9iYXRjaF9zaXplYC4gSSByZW1lbWJlciBgcmVzZXRfYmF0Y2hfc2l6ZWAgZ2V0cyBjYWxsZWQgd2hlbiBgd2Fsay0mZ3Q7YmF0Y2hlZGAgaXMgdHJ1ZS4gTGV0JiMzOTtzIHRyYWNlIHRoYXQgYmFjazogYHdhbGstJmd0O2JhdGNoZWRgIGdldHMgaW5jcmVtZW50ZWQgaW4gYHVwZGF0ZV9iYXRjaF9zaXplYCwgYW5kIHRoYXQgZnVuY3Rpb24gaXMgY2FsbGVkIGJ5IGBmb2xpb19pbmNfZ2VuYCBhbmQgYHdhbGtfdXBkYXRlX2ZvbGlvYC4gYHdhbGtfdXBkYXRlX2ZvbGlvYCBpcyBjYWxsZWQgYnkgYHdhbGtfcHRlX3JhbmdlYCBhbmQgYHdhbGtfcG1kX3JhbmdlX2xvY2tlZGAuIEFoLCB0aGVzZSBhcmUgYWxsIGNyaXRpY2FsIGNvbXBvbmVudHMgb2YgdGhlIExSVSBnZW5lcmF0aW9uIHBhZ2UgcmVjbGFpbSBsb2dpYy4KCkZpbmFsbHksIHRoZSByZXF1aXJlZCBjb25maWdzIGFyZSBgQ09ORklHX01FTUNHYCBhbmQgYENPTkZJR19MUlVfR0VOYC4gTGV0IG1lIGp1c3QgZG91YmxlLWNoZWNrIHRoYXQgYENPTkZJR19MUlVfR0VOYCBpcyB0aGUgZXhhY3QgbmFtZSwgdG8gYmUgYWJzb2x1dGVseSBzdXJlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMSAxMzo1NjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgTFJVX0dFTiYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O21tL0tjb25maWcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bW0vS2NvbmZpZz0xNDA2PWVuZGlmICMgVVNFUkZBVUxURkRcbi0tXG5tbS9LY29uZmlnLTE0MDgtIyBtdWx0aS1nZW4gTFJVIHtcbm1tL0tjb25maWc6MTQwOTpjb25maWcgTFJVX0dFTlxubW0vS2NvbmZpZy0xNDEwLVx0Ym9vbCBcJiMzNDtNdWx0aS1HZW4gTFJVXCYjMzQ7XG4tLVxubW0vS2NvbmZpZy0xNDE3LVxubW0vS2NvbmZpZzoxNDE4OmNvbmZpZyBMUlVfR0VOX0VOQUJMRURcbm1tL0tjb25maWctMTQxOS1cdGJvb2wgXCYjMzQ7RW5hYmxlIGJ5IGRlZmF1bHRcJiMzNDtcbi0tXG5tbS9LY29uZmlnLTE0MjMtXG5tbS9LY29uZmlnOjE0MjQ6Y29uZmlnIExSVV9HRU5fU1RBVFNcbm1tL0tjb25maWctMTQyNS1cdGJvb2wgXCYjMzQ7RnVsbCBzdGF0cyBmb3IgZGVidWdnaW5nXCYjMzQ7XG4tLVxubW0vS2NvbmZpZy0xNDMyLVxubW0vS2NvbmZpZzoxNDMzOmNvbmZpZyBMUlVfR0VOX1dBTEtTX01NVVxubW0vS2NvbmZpZy0xNDM0LVx0ZGVmX2Jvb2wgeVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI5LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMSAxMzo1NjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxNDk0NQoJCQkJCQkJb3V0cHV0OiAyNwoJCQkJCQkJdGhvdWdodHM6IDM5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IGludGVycHJldGF0aW9uIG9mIHRoZXNlIHRob3VnaHRzLCBzdW1tYXJpemVkIGZyb20gbXkgcGVyc3BlY3RpdmUgYXMgc29tZW9uZSBmYW1pbGlhciB3aXRoIHN5c3RlbSBjb25maWd1cmF0aW9uOgoKKipDaGVja2luZyBDb25maWd1cmF0aW9uIFBhcmFtZXRlcnMqKgoKQWxyaWdodCwgc28gSSBzZWUgd2UmIzM5O3JlIGRlYWxpbmcgd2l0aCB0d28ga2V5IGNvbmZpZ3VyYXRpb25zIGhlcmU6IGBMUlVfR0VOYCBhbmQgYE1FTUNHYC4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRoYXQgYExSVV9HRU5gIHByb2JhYmx5IGRlYWxzIHdpdGggTGVhc3QgUmVjZW50bHkgVXNlZCBwYWdlIHJlcGxhY2VtZW50IGdlbmVyYXRpb24sIHdoaWNoIG1ha2VzIHNlbnNlLiBgTUVNQ0dgLCBhcyBJJiMzOTttIHN1cmUgbW9zdCBvZiB1cyBrbm93LCBpcyBsaWtlbHkgcmVsYXRlZCB0byBNZW1vcnkgQ29udHJvbCBHcm91cHMuCgpCdXQgYmVmb3JlIEkgZ28gYW55IGZ1cnRoZXIgYXNzdW1pbmcgYW55dGhpbmcsIGl04oCZcyBhbHdheXMgd2lzZSB0byBkb3VibGUtY2hlY2suIEkgc2hvdWxkIGNvbmZpcm0gdGhlIGV4YWN0IG5hbWUgb2YgdGhhdCBgQ09ORklHX01FTUNHYCBwYXJhbWV0ZXIsIGp1c3QgdG8gYmUgYWJzb2x1dGVseSBzdXJlLiBCZXN0IHRvIGJlIHByZWNpc2Ugd2hlbiBkaWdnaW5nIGludG8gdGhlc2UgZGV0YWlscy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTEgMTM6NTY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIE1FTUNHJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7aW5pdC9LY29uZmlnJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2luaXQvS2NvbmZpZz0xMDYzPWNvbmZpZyBDR1JPVVBfRkFWT1JfRFlOTU9EU1xuLS1cbmluaXQvS2NvbmZpZy0xMDcyLVxuaW5pdC9LY29uZmlnOjEwNzM6Y29uZmlnIE1FTUNHXG5pbml0L0tjb25maWctMTA3NC1cdGJvb2wgXCYjMzQ7TWVtb3J5IGNvbnRyb2xsZXJcJiMzNDtcbi0tXG5pbml0L0tjb25maWctMTA4MS1cbmluaXQvS2NvbmZpZzoxMDgyOmNvbmZpZyBNRU1DR19OTUlfVU5TQUZFXG5pbml0L0tjb25maWctMTA4My1cdGJvb2xcbi0tXG5pbml0L0tjb25maWctMTA4OC1cbmluaXQvS2NvbmZpZzoxMDg5OmNvbmZpZyBNRU1DR19OTUlfU0FGRVRZX1JFUVVJUkVTX0FUT01JQ1xuaW5pdC9LY29uZmlnLTEwOTAtXHRib29sXG4tLVxuaW5pdC9LY29uZmlnLTEwOTUtXG5pbml0L0tjb25maWc6MTA5Njpjb25maWcgTUVNQ0dfVjFcbmluaXQvS2NvbmZpZy0xMDk3LVx0Ym9vbCBcJiMzNDtMZWdhY3kgY2dyb3VwIHYxIG1lbW9yeSBjb250cm9sbGVyXCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzExIDEzOjU2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE1Mzk0CgkJCQkJCQlvdXRwdXQ6IDMxCgkJCQkJCQl0aG91Z2h0czogMjcxCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkZ1enppbmcgU3RyYXRlZ3kgZm9yIE1lbWNnIE1lbW9yeSBNYW5hZ2VtZW50KioKCk9rYXksIHNvIHRoZSBwYXRjaCBpbnRyb2R1Y2VzIGEgbmV3IGxvY2tpbmcgbWVjaGFuaXNtLCBgbHJ1dmVjX2xpdmVfbG9ja19pcnFgLCBzcGVjaWZpY2FsbHkgd2l0aGluIHRoZSBtdWx0aS1nZW4gTFJVIHBhZ2UgcmVjbGFpbSBwcm9jZXNzLiBJdCYjMzk7cyB0YXJnZXRlZCBhdCBgbHJ1dmVjYCBpbiB0aGUgYHJlc2V0X2JhdGNoX3NpemVgIGZ1bmN0aW9uLCBhbmQgaXQmIzM5O3MgdHJhdmVyc2luZyB0aGUgbWVtY2cgaGllcmFyY2h5IHRvIGZpbmQgYSBub24tZHlpbmcgbWVtY2cgdG8gbG9jayBpdHMgYGxydXZlY2AuIFRoaXMgaXMgYSBwcmV0dHkgc2lnbmlmaWNhbnQgY2hhbmdlIGluIGNvcmUgbWVtb3J5IG1hbmFnZW1lbnQuIEdpdmVuIHRoYXQgaXQmIzM5O3MgYWN0aXZlIGR1cmluZyBtZW1vcnkgcHJlc3N1cmUgYW5kIG1lbWNnIHRlYXJkb3duLCBmdXp6aW5nIHRoaXMgYXJlYSBpcyBkZWZpbml0ZWx5IHdhcnJhbnRlZC4gVGhlIHBhdGNoIGlzIGNlbnRlcmVkIGFyb3VuZCBgTUVNQ0dgLgoKTm93LCB0aGUgaW1wb3J0YW50IHN5bWJvbHMgdG8gZm9jdXMgb24gYXJlIGByZXNldF9iYXRjaF9zaXplYCwgYGV2aWN0X2ZvbGlvc2AsIGFuZCBgdHJ5X3RvX2luY19tYXhfc2VxYC4gTGV0JiMzOTtzIGV2YWx1YXRlIHRoZW0uIGByZXNldF9iYXRjaF9zaXplYCBpcyBzdGF0aWMsIHdoaWNoIGNhbiBiZSB0cmlja3kgYnV0IGl0IGlzIGRpcmVjdGx5IG1vZGlmaWVkLCB3aGljaCBtYWtlcyBpdCBhIGdvb2QgY2FuZGlkYXRlLiBIb2xkIG9uLCBgcmVzZXRfYmF0Y2hfc2l6ZWAgaGFzIGJlZW4gbW9kaWZpZWQgdG8gdXNlIGBscnV2ZWNfbGl2ZV9sb2NrX2lycWAuIFBlcmZlY3QhIFRoaXMgbWFrZXMgYHJlc2V0X2JhdGNoX3NpemVgIGFuIGlkZWFsIGZvY3VzIHN5bWJvbC4KClRoZW4sIGBldmljdF9mb2xpb3NgIGFuZCBgdHJ5X3RvX2luY19tYXhfc2VxYCBhcmUgaXRzIGNhbGxlcnMsIHNvIGxldCYjMzk7cyBkZWZpbml0ZWx5IGluY2x1ZGUgdGhlbSBpbiB0aGUgZnV6emluZyBzY29wZS4gSnVzdCB0byBiZSB0aG9yb3VnaCwgbGV0JiMzOTtzIG1ha2Ugc3VyZSB0aGVyZSBhcmUgbm8gb3RoZXIgY2FsbGVycyBvZiBgcmVzZXRfYmF0Y2hfc2l6ZWAgdGhhdCB3ZSYjMzk7cmUgbWlzc2luZy4gV2Ugd2FudCB0byBiZSBjb21wcmVoZW5zaXZlIGluIHRoZSBhcHByb2FjaC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTEgMTM6NTY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7cmVzZXRfYmF0Y2hfc2l6ZSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O21tL3Ztc2Nhbi5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O21tL3Ztc2Nhbi5jPTMyNDk9c3RhdGljIHZvaWQgdXBkYXRlX2JhdGNoX3NpemUoc3RydWN0IGxydV9nZW5fbW1fd2FsayAqd2Fsaywgc3RydWN0IGZvbGlvICpmb2xpbyxcbi0tXG5tbS92bXNjYW4uYy0zMjY0LVxubW0vdm1zY2FuLmM6MzI2NTpzdGF0aWMgdm9pZCByZXNldF9iYXRjaF9zaXplKHN0cnVjdCBscnVfZ2VuX21tX3dhbGsgKndhbGspXG5tbS92bXNjYW4uYy0zMjY2LXtcbi0tXG5tbS92bXNjYW4uYz0zNzU2PXN0YXRpYyB2b2lkIHdhbGtfbW0oc3RydWN0IG1tX3N0cnVjdCAqbW0sIHN0cnVjdCBscnVfZ2VuX21tX3dhbGsgKndhbGspXG4tLVxubW0vdm1zY2FuLmMtMzc4NC1cdFx0aWYgKHdhbGstXHUwMDNlYmF0Y2hlZClcbm1tL3Ztc2Nhbi5jOjM3ODU6XHRcdFx0cmVzZXRfYmF0Y2hfc2l6ZSh3YWxrKTtcbm1tL3Ztc2Nhbi5jLTM3ODYtXG4tLVxubW0vdm1zY2FuLmM9NDgwMT1zdGF0aWMgaW50IGV2aWN0X2ZvbGlvcyh1bnNpZ25lZCBsb25nIG5yX3RvX3NjYW4sIHN0cnVjdCBscnV2ZWMgKmxydXZlYyxcbi0tXG5tbS92bXNjYW4uYy00ODY4LVx0XHR3YWxrLVx1MDAzZWxydXZlYyA9IGxydXZlYztcbm1tL3Ztc2Nhbi5jOjQ4Njk6XHRcdHJlc2V0X2JhdGNoX3NpemUod2Fsayk7XG5tbS92bXNjYW4uYy00ODcwLVx0fVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMSAxMzo1NjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxNjMzMgoJCQkJCQkJb3V0cHV0OiAxNjcKCQkJCQkJCXRob3VnaHRzOiA2NAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgbXkgb3duIG1lbnRhbCBwcm9jZXNzaW5nOgoKKipBbmFseXppbmcgS2V5IEZ1bmN0aW9ucyBhbmQgQ2FsbCBQYXRocyoqCgpSaWdodCwgc28gSSYjMzk7dmUgY29uZmlybWVkIHRoYXQgYHdhbGtfbW1gIGFuZCBgZXZpY3RfZm9saW9zYCBhcmUgdGhlICpzb2xlKiBjYWxsZXJzIG9mIHdoYXRldmVyIGZ1bmN0aW9uIHdlJiMzOTtyZSBkZWFsaW5nIHdpdGguIFRoYXQmIzM5O3MgY3J1Y2lhbC4gS25vd2luZyB0aGUgY2FsbCBncmFwaCBuYXJyb3dzIGRvd24gdGhlIHBvdGVudGlhbCBpc3N1ZXMgc2lnbmlmaWNhbnRseS4gU28sIGlmIEkmIzM5O20gdHJhY2tpbmcgZG93biBhIHBlcmZvcm1hbmNlIGJvdHRsZW5lY2ssIGJ1Zywgb3IgdHJ5aW5nIHRvIHVuZGVyc3RhbmQgdGhlIGNvbnRyb2wgZmxvdywgSSBrbm93IG15IHByaW1hcnkgZm9jdXMgbmVlZHMgdG8gYmUgb24gdGhlc2UgZm91ciBzeW1ib2xzOiBgcmVzZXRfYmF0Y2hfc2l6ZWAsIGB3YWxrX21tYCwgYGV2aWN0X2ZvbGlvc2AsIGFuZCBgdHJ5X3RvX2luY19tYXhfc2VxYC4gVGhlc2UgYXJlIG15IGVudHJ5IHBvaW50cyBhbmQgcG90ZW50aWFsIHByb2JsZW0gYXJlYXMuCgpOb3csIGxldCYjMzk7cyBnZXQgZG93biB0byBhY3R1YWxseSBzZXR0aW5nIHVwIHRoZSByZXN1bHRzLiBJJiMzOTttIHJlYWR5IHRvIG1vdmUgZm9yd2FyZC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTEgMTM6NTY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O01FTUNHJiMzNDssCiAgICAmIzM0O0xSVV9HRU4mIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtyZXNldF9iYXRjaF9zaXplJiMzNDssCiAgICAmIzM0O3dhbGtfbW0mIzM0OywKICAgICYjMzQ7ZXZpY3RfZm9saW9zJiMzNDssCiAgICAmIzM0O3RyeV90b19pbmNfbWF4X3NlcSYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBpbnRyb2R1Y2VzIGEgbmV3IGxvY2tpbmcgbWVjaGFuaXNtIChgbHJ1dmVjX2xpdmVfbG9ja19pcnFgKSBmb3IgYGxydXZlY2AgaW4gdGhlIG11bHRpLWdlbiBMUlUgcGFnZSByZWNsYWltIHBhdGggKGByZXNldF9iYXRjaF9zaXplYCkuIEl0IHRyYXZlcnNlcyB0aGUgbWVtY2cgaGllcmFyY2h5IHRvIGZpbmQgYSBub24tZHlpbmcgbWVtY2cgdG8gbG9jayBpdHMgbHJ1dmVjLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gY29yZSBtZW1vcnkgbWFuYWdlbWVudCBsb2dpYyB0aGF0IGNhbiBiZSByZWFjaGVkIGR1cmluZyBtZW1vcnkgcHJlc3N1cmUgYW5kIG1lbWNnIHRlYXJkb3duLCBtYWtpbmcgaXQgd29ydGggZnV6emluZy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7TUVNQ0cmIzM0OywKICAgICYjMzQ7TFJVX0dFTiYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O3Jlc2V0X2JhdGNoX3NpemUmIzM0OywKICAgICYjMzQ7d2Fsa19tbSYjMzQ7LAogICAgJiMzNDtldmljdF9mb2xpb3MmIzM0OywKICAgICYjMzQ7dHJ5X3RvX2luY19tYXhfc2VxJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGludHJvZHVjZXMgYSBuZXcgbG9ja2luZyBtZWNoYW5pc20gKGBscnV2ZWNfbGl2ZV9sb2NrX2lycWApIGZvciBgbHJ1dmVjYCBpbiB0aGUgbXVsdGktZ2VuIExSVSBwYWdlIHJlY2xhaW0gcGF0aCAoYHJlc2V0X2JhdGNoX3NpemVgKS4gSXQgdHJhdmVyc2VzIHRoZSBtZW1jZyBoaWVyYXJjaHkgdG8gZmluZCBhIG5vbi1keWluZyBtZW1jZyB0byBsb2NrIGl0cyBscnV2ZWMuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiBjb3JlIG1lbW9yeSBtYW5hZ2VtZW50IGxvZ2ljIHRoYXQgY2FuIGJlIHJlYWNoZWQgZHVyaW5nIG1lbW9yeSBwcmVzc3VyZSBhbmQgbWVtY2cgdGVhcmRvd24sIG1ha2luZyBpdCB3b3J0aCBmdXp6aW5nLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgoKCTxkaXYgaWQ9ImxsbV9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+TExNIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgVG9rZW5zPC90aD4KCQkJCQk8dGg+QXZnIFRva2VuczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJsbG1fc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJ0b29sX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5Ub29sIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9InRvb2xfc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJkdXJhdGlvbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+Cgk8ZGl2IGlkPSJ0b2tlbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+CgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9qc2FwaSI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDctMTFUMTM6NTU6NDYuMzAxMDgyMjIxWiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NzIyMzk0ODI1MjQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiTUVNQ0dcIixcbiAgICBcIkxSVV9HRU5cIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJyZXNldF9iYXRjaF9zaXplXCIsXG4gICAgXCJ3YWxrX21tXCIsXG4gICAgXCJldmljdF9mb2xpb3NcIixcbiAgICBcInRyeV90b19pbmNfbWF4X3NlcVwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGludHJvZHVjZXMgYSBuZXcgbG9ja2luZyBtZWNoYW5pc20gKGBscnV2ZWNfbGl2ZV9sb2NrX2lycWApIGZvciBgbHJ1dmVjYCBpbiB0aGUgbXVsdGktZ2VuIExSVSBwYWdlIHJlY2xhaW0gcGF0aCAoYHJlc2V0X2JhdGNoX3NpemVgKS4gSXQgdHJhdmVyc2VzIHRoZSBtZW1jZyBoaWVyYXJjaHkgdG8gZmluZCBhIG5vbi1keWluZyBtZW1jZyB0byBsb2NrIGl0cyBscnV2ZWMuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiBjb3JlIG1lbW9yeSBtYW5hZ2VtZW50IGxvZ2ljIHRoYXQgY2FuIGJlIHJlYWNoZWQgZHVyaW5nIG1lbW9yeSBwcmVzc3VyZSBhbmQgbWVtY2cgdGVhcmRvd24sIG1ha2luZyBpdCB3b3J0aCBmdXp6aW5nLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xMVQxMzo1NTo0Ni4zMDEwODY3MzFaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjM0NjM0NjIzMCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IDA3ZGQ2Mjc5MjgxOTAyMjkzNTMyMGJmZmIzZGVjNTUzM2VmYTQwZDZcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIFNhdCBKdWwgMTEgMTM6NTU6NDQgMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51eC9tZW1jb250cm9sLmggYi9pbmNsdWRlL2xpbnV4L21lbWNvbnRyb2wuaFxcbmluZGV4IGUxZjQ2YTAwMTZmY2ZkLi45NTcyNjA2Nzc2NzgxNSAxMDA2NDRcXG4tLS0gYS9pbmNsdWRlL2xpbnV4L21lbWNvbnRyb2wuaFxcbisrKyBiL2luY2x1ZGUvbGludXgvbWVtY29udHJvbC5oXFxuQEAgLTE0NzIsNiArMTQ3MiwzMSBAQCBzdGF0aWMgaW5saW5lIHZvaWQgbHJ1dmVjX2xvY2tfaXJxKHN0cnVjdCBscnV2ZWMgKmxydXZlYylcXG4gXFx0c3Bpbl9sb2NrX2lycShcXHUwMDI2bHJ1dmVjLVxcdTAwM2VscnVfbG9jayk7XFxuIH1cXG4gXFxuK3N0YXRpYyBpbmxpbmUgc3RydWN0IGxydXZlYyAqbHJ1dmVjX2xpdmVfbG9ja19pcnEoc3RydWN0IGxydXZlYyAqbHJ1dmVjKVxcbit7XFxuKyNpZmRlZiBDT05GSUdfTUVNQ0dcXG4rXFx0c3RydWN0IHBnbGlzdF9kYXRhICpwZ2RhdCA9IGxydXZlY19wZ2RhdChscnV2ZWMpO1xcbitcXHRzdHJ1Y3QgbWVtX2Nncm91cCAqbWVtY2cgPSBscnV2ZWNfbWVtY2cobHJ1dmVjKTtcXG4rXFxuK1xcdHJjdV9yZWFkX2xvY2soKTtcXG4rXFxuK1xcdC8qXFxuK1xcdCAqIFRoZSBtZW1jZyBjYW4gYmUgTlVMTCB3aGVuIHRoZSBtZW1vcnkgY29udHJvbGxlciBpcyBkaXNhYmxlZC5cXG4rXFx0ICogT3RoZXJ3aXNlLCB0aGUgY2FsbGVyIGtlZXBzIHRoZSBtZW1jZyBvd25pbmcgQGxydXZlYyBhbGl2ZS5cXG4rXFx0ICovXFxuK1xcdHdoaWxlICh1bmxpa2VseShtZW1jZyBcXHUwMDI2XFx1MDAyNiBjc3NfaXNfZHlpbmcoXFx1MDAyNm1lbWNnLVxcdTAwM2Vjc3MpKSkge1xcbitcXHRcXHRtZW1jZyA9IHBhcmVudF9tZW1fY2dyb3VwKG1lbWNnKTtcXG4rXFx0XFx0bHJ1dmVjID0gbWVtX2Nncm91cF9scnV2ZWMobWVtY2csIHBnZGF0KTtcXG4rXFx0fVxcbitcXG4rXFx0c3Bpbl9sb2NrX2lycShcXHUwMDI2bHJ1dmVjLVxcdTAwM2VscnVfbG9jayk7XFxuKyNlbHNlXFxuK1xcdGxydXZlY19sb2NrX2lycShscnV2ZWMpO1xcbisjZW5kaWZcXG4rXFxuK1xcdHJldHVybiBscnV2ZWM7XFxuK31cXG4rXFxuIHN0YXRpYyBpbmxpbmUgdm9pZCBscnV2ZWNfdW5sb2NrKHN0cnVjdCBscnV2ZWMgKmxydXZlYylcXG4ge1xcbiBcXHRzcGluX3VubG9jayhcXHUwMDI2bHJ1dmVjLVxcdTAwM2VscnVfbG9jayk7XFxuZGlmZiAtLWdpdCBhL21tL3Ztc2Nhbi5jIGIvbW0vdm1zY2FuLmNcXG5pbmRleCAzNWMzYmIxNWFlOTZhMy4uMWExNDJjNTg3MDBkMDAgMTAwNjQ0XFxuLS0tIGEvbW0vdm1zY2FuLmNcXG4rKysgYi9tbS92bXNjYW4uY1xcbkBAIC0zMjY1LDcgKzMyNjUsNyBAQCBzdGF0aWMgdm9pZCB1cGRhdGVfYmF0Y2hfc2l6ZShzdHJ1Y3QgbHJ1X2dlbl9tbV93YWxrICp3YWxrLCBzdHJ1Y3QgZm9saW8gKmZvbGlvLFxcbiBzdGF0aWMgdm9pZCByZXNldF9iYXRjaF9zaXplKHN0cnVjdCBscnVfZ2VuX21tX3dhbGsgKndhbGspXFxuIHtcXG4gXFx0aW50IGdlbiwgdHlwZSwgem9uZTtcXG4tXFx0c3RydWN0IGxydXZlYyAqbHJ1dmVjID0gd2Fsay1cXHUwMDNlbHJ1dmVjO1xcbitcXHRzdHJ1Y3QgbHJ1dmVjICpscnV2ZWMgPSBscnV2ZWNfbGl2ZV9sb2NrX2lycSh3YWxrLVxcdTAwM2VscnV2ZWMpO1xcbiBcXHRzdHJ1Y3QgbHJ1X2dlbl9mb2xpbyAqbHJ1Z2VuID0gXFx1MDAyNmxydXZlYy1cXHUwMDNlbHJ1Z2VuO1xcbiBcXG4gXFx0d2Fsay1cXHUwMDNlYmF0Y2hlZCA9IDA7XFxuQEAgLTMyODUsNiArMzI4NSw4IEBAIHN0YXRpYyB2b2lkIHJlc2V0X2JhdGNoX3NpemUoc3RydWN0IGxydV9nZW5fbW1fd2FsayAqd2FsaylcXG4gXFx0XFx0XFx0bHJ1ICs9IExSVV9BQ1RJVkU7XFxuIFxcdFxcdF9fdXBkYXRlX2xydV9zaXplKGxydXZlYywgbHJ1LCB6b25lLCBkZWx0YSk7XFxuIFxcdH1cXG4rXFxuK1xcdGxydXZlY191bmxvY2tfaXJxKGxydXZlYyk7XFxuIH1cXG4gXFxuIHN0YXRpYyBpbnQgc2hvdWxkX3NraXBfdm1hKHVuc2lnbmVkIGxvbmcgc3RhcnQsIHVuc2lnbmVkIGxvbmcgZW5kLCBzdHJ1Y3QgbW1fd2FsayAqYXJncylcXG5AQCAtMzc3OSwxMSArMzc4MSw4IEBAIHN0YXRpYyB2b2lkIHdhbGtfbW0oc3RydWN0IG1tX3N0cnVjdCAqbW0sIHN0cnVjdCBscnVfZ2VuX21tX3dhbGsgKndhbGspXFxuIFxcdFxcdFxcdG1tYXBfcmVhZF91bmxvY2sobW0pO1xcbiBcXHRcXHR9XFxuIFxcbi1cXHRcXHRpZiAod2Fsay1cXHUwMDNlYmF0Y2hlZCkge1xcbi1cXHRcXHRcXHRscnV2ZWNfbG9ja19pcnEobHJ1dmVjKTtcXG4rXFx0XFx0aWYgKHdhbGstXFx1MDAzZWJhdGNoZWQpXFxuIFxcdFxcdFxcdHJlc2V0X2JhdGNoX3NpemUod2Fsayk7XFxuLVxcdFxcdFxcdGxydXZlY191bmxvY2tfaXJxKGxydXZlYyk7XFxuLVxcdFxcdH1cXG4gXFxuIFxcdFxcdGNvbmRfcmVzY2hlZCgpO1xcbiBcXHR9IHdoaWxlIChlcnIgPT0gLUVBR0FJTik7XFxuQEAgLTQ4NjcsOSArNDg2Niw3IEBAIHN0YXRpYyBpbnQgZXZpY3RfZm9saW9zKHVuc2lnbmVkIGxvbmcgbnJfdG9fc2Nhbiwgc3RydWN0IGxydXZlYyAqbHJ1dmVjLFxcbiBcXHR3YWxrID0gY3VycmVudC1cXHUwMDNlcmVjbGFpbV9zdGF0ZS1cXHUwMDNlbW1fd2FsaztcXG4gXFx0aWYgKHdhbGsgXFx1MDAyNlxcdTAwMjYgd2Fsay1cXHUwMDNlYmF0Y2hlZCkge1xcbiBcXHRcXHR3YWxrLVxcdTAwM2VscnV2ZWMgPSBscnV2ZWM7XFxuLVxcdFxcdGxydXZlY19sb2NrX2lycShscnV2ZWMpO1xcbiBcXHRcXHRyZXNldF9iYXRjaF9zaXplKHdhbGspO1xcbi1cXHRcXHRscnV2ZWNfdW5sb2NrX2lycShscnV2ZWMpO1xcbiBcXHR9XFxuIFxcbiBcXHRtb2RfbHJ1dmVjX3N0YXRlKGxydXZlYywgUEdERU1PVEVfS1NXQVBEICsgcmVjbGFpbWVyX29mZnNldChzYyksXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTExVDEzOjU1OjQ2LjY0ODI5MzczMVoiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NzE4OTIyNjIzODQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiTUVNQ0dcIixcbiAgICBcIkxSVV9HRU5cIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJyZXNldF9iYXRjaF9zaXplXCIsXG4gICAgXCJ3YWxrX21tXCIsXG4gICAgXCJldmljdF9mb2xpb3NcIixcbiAgICBcInRyeV90b19pbmNfbWF4X3NlcVwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGludHJvZHVjZXMgYSBuZXcgbG9ja2luZyBtZWNoYW5pc20gKGBscnV2ZWNfbGl2ZV9sb2NrX2lycWApIGZvciBgbHJ1dmVjYCBpbiB0aGUgbXVsdGktZ2VuIExSVSBwYWdlIHJlY2xhaW0gcGF0aCAoYHJlc2V0X2JhdGNoX3NpemVgKS4gSXQgdHJhdmVyc2VzIHRoZSBtZW1jZyBoaWVyYXJjaHkgdG8gZmluZCBhIG5vbi1keWluZyBtZW1jZyB0byBsb2NrIGl0cyBscnV2ZWMuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiBjb3JlIG1lbW9yeSBtYW5hZ2VtZW50IGxvZ2ljIHRoYXQgY2FuIGJlIHJlYWNoZWQgZHVyaW5nIG1lbW9yeSBwcmVzc3VyZSBhbmQgbWVtY2cgdGVhcmRvd24sIG1ha2luZyBpdCB3b3J0aCBmdXp6aW5nLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lXG5pZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5XG51c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLlxuXG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOlxuLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLlxuLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy5cbi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LlxuLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsXG5ldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG5cbklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2hcbnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLlxuXG5XaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzpcbjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuXG4gICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy5cbjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLlxuICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuICAgRG8gbm90IGxpc3QgdG9vIGdlbmVyaWMgY29uZmlncyAod2UgYWxyZWFkeSBoYXZlIHRoZW0gZW5hYmxlZCkuIE9ubHkgbGlzdCB0aG9zZSB0aGF0XG4gICBzcGVjaWZpY2FsbHkgY292ZXIgdGhlIG1vZGlmaWVkIGNvZGUuIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncyBvdXRwdXQgYXJyYXksXG4gICBhbmQgRE8gTk9UIGFkZCBhICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IDA3ZGQ2Mjc5MjgxOTAyMjkzNTMyMGJmZmIzZGVjNTUzM2VmYTQwZDZcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgU2F0IEp1bCAxMSAxMzo1NTo0NCAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgvbWVtY29udHJvbC5oIGIvaW5jbHVkZS9saW51eC9tZW1jb250cm9sLmhcbmluZGV4IGUxZjQ2YTAwMTZmY2ZkLi45NTcyNjA2Nzc2NzgxNSAxMDA2NDRcbi0tLSBhL2luY2x1ZGUvbGludXgvbWVtY29udHJvbC5oXG4rKysgYi9pbmNsdWRlL2xpbnV4L21lbWNvbnRyb2wuaFxuQEAgLTE0NzIsNiArMTQ3MiwzMSBAQCBzdGF0aWMgaW5saW5lIHZvaWQgbHJ1dmVjX2xvY2tfaXJxKHN0cnVjdCBscnV2ZWMgKmxydXZlYylcbiBcdHNwaW5fbG9ja19pcnEoXHUwMDI2bHJ1dmVjLVx1MDAzZWxydV9sb2NrKTtcbiB9XG4gXG4rc3RhdGljIGlubGluZSBzdHJ1Y3QgbHJ1dmVjICpscnV2ZWNfbGl2ZV9sb2NrX2lycShzdHJ1Y3QgbHJ1dmVjICpscnV2ZWMpXG4re1xuKyNpZmRlZiBDT05GSUdfTUVNQ0dcbitcdHN0cnVjdCBwZ2xpc3RfZGF0YSAqcGdkYXQgPSBscnV2ZWNfcGdkYXQobHJ1dmVjKTtcbitcdHN0cnVjdCBtZW1fY2dyb3VwICptZW1jZyA9IGxydXZlY19tZW1jZyhscnV2ZWMpO1xuK1xuK1x0cmN1X3JlYWRfbG9jaygpO1xuK1xuK1x0LypcbitcdCAqIFRoZSBtZW1jZyBjYW4gYmUgTlVMTCB3aGVuIHRoZSBtZW1vcnkgY29udHJvbGxlciBpcyBkaXNhYmxlZC5cbitcdCAqIE90aGVyd2lzZSwgdGhlIGNhbGxlciBrZWVwcyB0aGUgbWVtY2cgb3duaW5nIEBscnV2ZWMgYWxpdmUuXG4rXHQgKi9cbitcdHdoaWxlICh1bmxpa2VseShtZW1jZyBcdTAwMjZcdTAwMjYgY3NzX2lzX2R5aW5nKFx1MDAyNm1lbWNnLVx1MDAzZWNzcykpKSB7XG4rXHRcdG1lbWNnID0gcGFyZW50X21lbV9jZ3JvdXAobWVtY2cpO1xuK1x0XHRscnV2ZWMgPSBtZW1fY2dyb3VwX2xydXZlYyhtZW1jZywgcGdkYXQpO1xuK1x0fVxuK1xuK1x0c3Bpbl9sb2NrX2lycShcdTAwMjZscnV2ZWMtXHUwMDNlbHJ1X2xvY2spO1xuKyNlbHNlXG4rXHRscnV2ZWNfbG9ja19pcnEobHJ1dmVjKTtcbisjZW5kaWZcbitcbitcdHJldHVybiBscnV2ZWM7XG4rfVxuK1xuIHN0YXRpYyBpbmxpbmUgdm9pZCBscnV2ZWNfdW5sb2NrKHN0cnVjdCBscnV2ZWMgKmxydXZlYylcbiB7XG4gXHRzcGluX3VubG9jayhcdTAwMjZscnV2ZWMtXHUwMDNlbHJ1X2xvY2spO1xuZGlmZiAtLWdpdCBhL21tL3Ztc2Nhbi5jIGIvbW0vdm1zY2FuLmNcbmluZGV4IDM1YzNiYjE1YWU5NmEzLi4xYTE0MmM1ODcwMGQwMCAxMDA2NDRcbi0tLSBhL21tL3Ztc2Nhbi5jXG4rKysgYi9tbS92bXNjYW4uY1xuQEAgLTMyNjUsNyArMzI2NSw3IEBAIHN0YXRpYyB2b2lkIHVwZGF0ZV9iYXRjaF9zaXplKHN0cnVjdCBscnVfZ2VuX21tX3dhbGsgKndhbGssIHN0cnVjdCBmb2xpbyAqZm9saW8sXG4gc3RhdGljIHZvaWQgcmVzZXRfYmF0Y2hfc2l6ZShzdHJ1Y3QgbHJ1X2dlbl9tbV93YWxrICp3YWxrKVxuIHtcbiBcdGludCBnZW4sIHR5cGUsIHpvbmU7XG4tXHRzdHJ1Y3QgbHJ1dmVjICpscnV2ZWMgPSB3YWxrLVx1MDAzZWxydXZlYztcbitcdHN0cnVjdCBscnV2ZWMgKmxydXZlYyA9IGxydXZlY19saXZlX2xvY2tfaXJxKHdhbGstXHUwMDNlbHJ1dmVjKTtcbiBcdHN0cnVjdCBscnVfZ2VuX2ZvbGlvICpscnVnZW4gPSBcdTAwMjZscnV2ZWMtXHUwMDNlbHJ1Z2VuO1xuIFxuIFx0d2Fsay1cdTAwM2ViYXRjaGVkID0gMDtcbkBAIC0zMjg1LDYgKzMyODUsOCBAQCBzdGF0aWMgdm9pZCByZXNldF9iYXRjaF9zaXplKHN0cnVjdCBscnVfZ2VuX21tX3dhbGsgKndhbGspXG4gXHRcdFx0bHJ1ICs9IExSVV9BQ1RJVkU7XG4gXHRcdF9fdXBkYXRlX2xydV9zaXplKGxydXZlYywgbHJ1LCB6b25lLCBkZWx0YSk7XG4gXHR9XG4rXG4rXHRscnV2ZWNfdW5sb2NrX2lycShscnV2ZWMpO1xuIH1cbiBcbiBzdGF0aWMgaW50IHNob3VsZF9za2lwX3ZtYSh1bnNpZ25lZCBsb25nIHN0YXJ0LCB1bnNpZ25lZCBsb25nIGVuZCwgc3RydWN0IG1tX3dhbGsgKmFyZ3MpXG5AQCAtMzc3OSwxMSArMzc4MSw4IEBAIHN0YXRpYyB2b2lkIHdhbGtfbW0oc3RydWN0IG1tX3N0cnVjdCAqbW0sIHN0cnVjdCBscnVfZ2VuX21tX3dhbGsgKndhbGspXG4gXHRcdFx0bW1hcF9yZWFkX3VubG9jayhtbSk7XG4gXHRcdH1cbiBcbi1cdFx0aWYgKHdhbGstXHUwMDNlYmF0Y2hlZCkge1xuLVx0XHRcdGxydXZlY19sb2NrX2lycShscnV2ZWMpO1xuK1x0XHRpZiAod2Fsay1cdTAwM2ViYXRjaGVkKVxuIFx0XHRcdHJlc2V0X2JhdGNoX3NpemUod2Fsayk7XG4tXHRcdFx0bHJ1dmVjX3VubG9ja19pcnEobHJ1dmVjKTtcbi1cdFx0fVxuIFxuIFx0XHRjb25kX3Jlc2NoZWQoKTtcbiBcdH0gd2hpbGUgKGVyciA9PSAtRUFHQUlOKTtcbkBAIC00ODY3LDkgKzQ4NjYsNyBAQCBzdGF0aWMgaW50IGV2aWN0X2ZvbGlvcyh1bnNpZ25lZCBsb25nIG5yX3RvX3NjYW4sIHN0cnVjdCBscnV2ZWMgKmxydXZlYyxcbiBcdHdhbGsgPSBjdXJyZW50LVx1MDAzZXJlY2xhaW1fc3RhdGUtXHUwMDNlbW1fd2FsaztcbiBcdGlmICh3YWxrIFx1MDAyNlx1MDAyNiB3YWxrLVx1MDAzZWJhdGNoZWQpIHtcbiBcdFx0d2Fsay1cdTAwM2VscnV2ZWMgPSBscnV2ZWM7XG4tXHRcdGxydXZlY19sb2NrX2lycShscnV2ZWMpO1xuIFx0XHRyZXNldF9iYXRjaF9zaXplKHdhbGspO1xuLVx0XHRscnV2ZWNfdW5sb2NrX2lycShscnV2ZWMpO1xuIFx0fVxuIFxuIFx0bW9kX2xydXZlY19zdGF0ZShscnV2ZWMsIFBHREVNT1RFX0tTV0FQRCArIHJlY2xhaW1lcl9vZmZzZXQoc2MpLFxuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTFUMTM6NTU6NDYuNjQ4Mjk1NDIxWiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTQ4MTMyMzY4MywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIExSVSBQYWdlIFJlY2xhaW0gUGF0Y2gqKlxuXG5Pa2F5LCBzbyB0aGlzIHBhdGNoIGlzIG1ha2luZyBzb21lIGludGVyZXN0aW5nIGNoYW5nZXMgd2l0aGluIHRoZSBtZW1vcnkgbWFuYWdlbWVudCBzdWJzeXN0ZW0uIFNwZWNpZmljYWxseSwgaXQncyBhYm91dCBob3cgd2UgaGFuZGxlIExSVSBwYWdlIHJlY2xhaW0gYW5kIHRoZSBpbnRlcmFjdGlvbiB3aXRoIG1lbWNncy4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRoYXQgdGhpcyBpcyBsaWtlbHkgYWRkcmVzc2luZyBzb21lIHN1YnRsZSBwZXJmb3JtYW5jZSBvciBjb3JyZWN0bmVzcyBpc3N1ZSwgYXMgd2UgYXJlIHJhcmVseSBtYWtpbmcgZnVuY3Rpb25hbCBjaGFuZ2VzIGluIHRoaXMgYXJlYSB1bmxlc3MgdGhlcmUncyBhIGdvb2QgcmVhc29uLlxuXG5UaGUgY29yZSBvZiB0aGUgY2hhbmdlIHNlZW1zIHRvIGJlIGludHJvZHVjaW5nIGEgbmV3IGZ1bmN0aW9uLCBgbHJ1dmVjX2xpdmVfbG9ja19pcnFgLCBhbmQgdXNpbmcgaXQgaW4gYG1tL3Ztc2Nhbi5jYCB0byByZXBsYWNlIHRoZSBleGlzdGluZyBgbHJ1dmVjX2xvY2tfaXJxYCB3aXRoaW4gdGhlIGByZXNldF9iYXRjaF9zaXplYCBmdW5jdGlvbi4gVGhlIGtleSBkaWZmZXJlbmNlLCBhcyBJIHVuZGVyc3RhbmQgaXQsIGlzIHRoYXQgdGhpcyBuZXcgZnVuY3Rpb24gY2FyZWZ1bGx5IG5hdmlnYXRlcyB0aGUgbWVtY2cgaGllcmFyY2h5IHRvIGZpbmQgYSBcImxpdmVcIiAobm9uLWR5aW5nKSBtZW1jZyBhbmQgbG9ja3MgaXRzIGBscnV2ZWNgLlxuXG5NeSBmaXJzdCBpbmNsaW5hdGlvbiBpcyB0byBkZWx2ZSBpbnRvIHRoZSBjb25maWd1cmF0aW9uIHJlcXVpcmVtZW50cy4gVGhlIGNvZGUgaXRzZWxmLCBgbHJ1dmVjX2xpdmVfbG9ja19pcnFgLCBpcyBjb25kaXRpb25hbGx5IGNvbXBpbGVkIGJhc2VkIG9uIGBDT05GSUdfTUVNQ0dgLiBHaXZlbiB0aGlzIGFuZCB0aGUgZmFjdCB0aGF0IGBtbS92bXNjYW4uY2AgaXMgYWx3YXlzIHBhcnQgb2YgdGhlIGJ1aWxkLCBpdCdzIGNsZWFyIHRoZSBjaGFuZ2VzIHdpbGwgZGVwZW5kIG9uIGBDT05GSUdfTUVNQ0dgLiBIb3dldmVyLCBzaW5jZSBgbHJ1X2dlbl9tbV93YWxrYCBhbmQgYGxydV9nZW5fZm9saW9gIGFyZSBhbHNvIGJlaW5nIHVzZWQsIEkgd2FudCB0byB2ZXJpZnkgaWYgYENPTkZJR19MUlVfR0VOYCB3aWxsIGFsc28gY29tZSBpbnRvIHBsYXkuIFRvIGJlIHN1cmUsIEknbGwgcXVpY2tseSBjaGVjayB0aGUgY29kZWJhc2Ugd2l0aCBgZ3JlcHBlcmAgYW5kIHNlZSB3aGVyZSB0aGVzZSBmdW5jdGlvbnMgYXJlIGRlZmluZWQgYW5kIHVzZWQsIGFuZCB3aGljaCBjb25maWd1cmF0aW9ucyBhZmZlY3QgdGhlaXIgY29tcGlsYXRpb24uIFRoaXMgc2hvdWxkIHF1aWNrbHkgY2xhcmlmeSB0aGUgZXhhY3QgY29uZmlndXJhdGlvbiBkZXBlbmRlbmNpZXMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI3NDIsIk91dHB1dFRva2VucyI6MzQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyNjYsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xMVQxMzo1NTo1Mi4xMjk2MjExMjRaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTg5MzkxMDksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibHJ1X2dlbl9tbV93YWxrXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm1tL3Ztc2Nhbi5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm1tL3Ztc2Nhbi5jPTI4NDc9c3RhdGljIHN0cnVjdCBscnVfZ2VuX21tX3N0YXRlICpnZXRfbW1fc3RhdGUoc3RydWN0IGxydXZlYyAqbHJ1dmVjKVxcbi0tXFxubW0vdm1zY2FuLmMtMjg1MS1cXG5tbS92bXNjYW4uYzoyODUyOnN0YXRpYyBzdHJ1Y3QgbW1fc3RydWN0ICpnZXRfbmV4dF9tbShzdHJ1Y3QgbHJ1X2dlbl9tbV93YWxrICp3YWxrKVxcbm1tL3Ztc2Nhbi5jLTI4NTMte1xcbi0tXFxubW0vdm1zY2FuLmM9Mjk3ND1zdGF0aWMgc3RydWN0IGxydV9nZW5fbW1fc3RhdGUgKmdldF9tbV9zdGF0ZShzdHJ1Y3QgbHJ1dmVjICpscnV2ZWMpXFxuLS1cXG5tbS92bXNjYW4uYy0yOTc4LVxcbm1tL3Ztc2Nhbi5jOjI5Nzk6c3RhdGljIHN0cnVjdCBtbV9zdHJ1Y3QgKmdldF9uZXh0X21tKHN0cnVjdCBscnVfZ2VuX21tX3dhbGsgKndhbGspXFxubW0vdm1zY2FuLmMtMjk4MC17XFxuLS1cXG5tbS92bXNjYW4uYy0yOTg1LVxcbm1tL3Ztc2Nhbi5jOjI5ODY6c3RhdGljIHZvaWQgcmVzZXRfbW1fc3RhdHMoc3RydWN0IGxydV9nZW5fbW1fd2FsayAqd2FsaywgYm9vbCBsYXN0KVxcbm1tL3Ztc2Nhbi5jLTI5ODcte1xcbi0tXFxubW0vdm1zY2FuLmMtMzAxMC1cXG5tbS92bXNjYW4uYzozMDExOnN0YXRpYyBib29sIGl0ZXJhdGVfbW1fbGlzdChzdHJ1Y3QgbHJ1X2dlbl9tbV93YWxrICp3YWxrLCBzdHJ1Y3QgbW1fc3RydWN0ICoqaXRlcilcXG5tbS92bXNjYW4uYy0zMDEyLXtcXG4tLVxcbm1tL3Ztc2Nhbi5jPTMyMjM9c3RhdGljIGludCBmb2xpb19pbmNfZ2VuKHN0cnVjdCBscnV2ZWMgKmxydXZlYywgc3RydWN0IGZvbGlvICpmb2xpbylcXG4tLVxcbm1tL3Ztc2Nhbi5jLTMyNDgtXFxubW0vdm1zY2FuLmM6MzI0OTpzdGF0aWMgdm9pZCB1cGRhdGVfYmF0Y2hfc2l6ZShzdHJ1Y3QgbHJ1X2dlbl9tbV93YWxrICp3YWxrLCBzdHJ1Y3QgZm9saW8gKmZvbGlvLFxcbm1tL3Ztc2Nhbi5jLTMyNTAtXFx0XFx0XFx0ICAgICAgaW50IG9sZF9nZW4sIGludCBuZXdfZ2VuKVxcbi0tXFxubW0vdm1zY2FuLmMtMzI2NC1cXG5tbS92bXNjYW4uYzozMjY1OnN0YXRpYyB2b2lkIHJlc2V0X2JhdGNoX3NpemUoc3RydWN0IGxydV9nZW5fbW1fd2FsayAqd2FsaylcXG5tbS92bXNjYW4uYy0zMjY2LXtcXG4tLVxcbm1tL3Ztc2Nhbi5jPTMyOTI9c3RhdGljIGludCBzaG91bGRfc2tpcF92bWEodW5zaWduZWQgbG9uZyBzdGFydCwgdW5zaWduZWQgbG9uZyBlbmQsIHN0cnVjdCBtbV93YWxrICphcmdzKVxcbi0tXFxubW0vdm1zY2FuLmMtMzI5NS1cXHRzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKnZtYSA9IGFyZ3MtXFx1MDAzZXZtYTtcXG5tbS92bXNjYW4uYzozMjk2OlxcdHN0cnVjdCBscnVfZ2VuX21tX3dhbGsgKndhbGsgPSBhcmdzLVxcdTAwM2Vwcml2YXRlO1xcbm1tL3Ztc2Nhbi5jLTMyOTctXFxuLS1cXG5tbS92bXNjYW4uYz0zNDMwPXN0YXRpYyBib29sIHN1aXRhYmxlX3RvX3NjYW4oaW50IHRvdGFsLCBpbnQgeW91bmcpXFxuLS1cXG5tbS92bXNjYW4uYy0zNDM3LVxcbm1tL3Ztc2Nhbi5jOjM0Mzg6c3RhdGljIHZvaWQgd2Fsa191cGRhdGVfZm9saW8oc3RydWN0IGxydV9nZW5fbW1fd2FsayAqd2Fsaywgc3RydWN0IGZvbGlvICpmb2xpbyxcXG5tbS92bXNjYW4uYy0zNDM5LVxcdFxcdFxcdCAgICAgIGludCBuZXdfZ2VuLCBib29sIGRpcnR5KVxcbi0tXFxubW0vdm1zY2FuLmM9MzQ2Mj1zdGF0aWMgYm9vbCB3YWxrX3B0ZV9yYW5nZShwbWRfdCAqcG1kLCB1bnNpZ25lZCBsb25nIHN0YXJ0LCB1bnNpZ25lZCBsb25nIGVuZCxcXG4tLVxcbm1tL3Ztc2Nhbi5jLTM0NzItXFx0c3RydWN0IGZvbGlvICpsYXN0ID0gTlVMTDtcXG5tbS92bXNjYW4uYzozNDczOlxcdHN0cnVjdCBscnVfZ2VuX21tX3dhbGsgKndhbGsgPSBhcmdzLVxcdTAwM2Vwcml2YXRlO1xcbm1tL3Ztc2Nhbi5jLTM0NzQtXFx0c3RydWN0IG1lbV9jZ3JvdXAgKm1lbWNnID0gbHJ1dmVjX21lbWNnKHdhbGstXFx1MDAzZWxydXZlYyk7XFxuLS1cXG5tbS92bXNjYW4uYz0zNTUzPXN0YXRpYyB2b2lkIHdhbGtfcG1kX3JhbmdlX2xvY2tlZChwdWRfdCAqcHVkLCB1bnNpZ25lZCBsb25nIGFkZHIsIHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqdm1hLFxcbi0tXFxubW0vdm1zY2FuLmMtMzU2MC1cXHRzdHJ1Y3QgZm9saW8gKmxhc3QgPSBOVUxMO1xcbm1tL3Ztc2Nhbi5jOjM1NjE6XFx0c3RydWN0IGxydV9nZW5fbW1fd2FsayAqd2FsayA9IGFyZ3MtXFx1MDAzZXByaXZhdGU7XFxubW0vdm1zY2FuLmMtMzU2Mi1cXHRzdHJ1Y3QgbWVtX2Nncm91cCAqbWVtY2cgPSBscnV2ZWNfbWVtY2cod2Fsay1cXHUwMDNlbHJ1dmVjKTtcXG4tLVxcbm1tL3Ztc2Nhbi5jPTM2NDE9c3RhdGljIHZvaWQgd2Fsa19wbWRfcmFuZ2UocHVkX3QgKnB1ZCwgdW5zaWduZWQgbG9uZyBzdGFydCwgdW5zaWduZWQgbG9uZyBlbmQsXFxuLS1cXG5tbS92bXNjYW4uYy0zNjUwLVxcdHVuc2lnbmVkIGxvbmcgZmlyc3QgPSAtMTtcXG5tbS92bXNjYW4uYzozNjUxOlxcdHN0cnVjdCBscnVfZ2VuX21tX3dhbGsgKndhbGsgPSBhcmdzLVxcdTAwM2Vwcml2YXRlO1xcbm1tL3Ztc2Nhbi5jLTM2NTItXFx0c3RydWN0IGxydV9nZW5fbW1fc3RhdGUgKm1tX3N0YXRlID0gZ2V0X21tX3N0YXRlKHdhbGstXFx1MDAzZWxydXZlYyk7XFxuLS1cXG5tbS92bXNjYW4uYz0zNzE0PXN0YXRpYyBpbnQgd2Fsa19wdWRfcmFuZ2UocDRkX3QgKnA0ZCwgdW5zaWduZWQgbG9uZyBzdGFydCwgdW5zaWduZWQgbG9uZyBlbmQsXFxuLS1cXG5tbS92bXNjYW4uYy0zNzIwLVxcdHVuc2lnbmVkIGxvbmcgbmV4dDtcXG5tbS92bXNjYW4uYzozNzIxOlxcdHN0cnVjdCBscnVfZ2VuX21tX3dhbGsgKndhbGsgPSBhcmdzLVxcdTAwM2Vwcml2YXRlO1xcbm1tL3Ztc2Nhbi5jLTM3MjItXFxuLS1cXG5tbS92bXNjYW4uYy0zNzU1LVxcbm1tL3Ztc2Nhbi5jOjM3NTY6c3RhdGljIHZvaWQgd2Fsa19tbShzdHJ1Y3QgbW1fc3RydWN0ICptbSwgc3RydWN0IGxydV9nZW5fbW1fd2FsayAqd2FsaylcXG5tbS92bXNjYW4uYy0zNzU3LXtcXG4tLVxcbm1tL3Ztc2Nhbi5jLTM3OTAtXFxubW0vdm1zY2FuLmM6Mzc5MTpzdGF0aWMgc3RydWN0IGxydV9nZW5fbW1fd2FsayAqc2V0X21tX3dhbGsoc3RydWN0IHBnbGlzdF9kYXRhICpwZ2RhdCwgYm9vbCBmb3JjZV9hbGxvYylcXG5tbS92bXNjYW4uYy0zNzkyLXtcXG5tbS92bXNjYW4uYzozNzkzOlxcdHN0cnVjdCBscnVfZ2VuX21tX3dhbGsgKndhbGsgPSBjdXJyZW50LVxcdTAwM2VyZWNsYWltX3N0YXRlLVxcdTAwM2VtbV93YWxrO1xcbm1tL3Ztc2Nhbi5jLTM3OTQtXFxuLS1cXG5tbS92bXNjYW4uYz0zODExPXN0YXRpYyB2b2lkIGNsZWFyX21tX3dhbGsodm9pZClcXG5tbS92bXNjYW4uYy0zODEyLXtcXG5tbS92bXNjYW4uYzozODEzOlxcdHN0cnVjdCBscnVfZ2VuX21tX3dhbGsgKndhbGsgPSBjdXJyZW50LVxcdTAwM2VyZWNsYWltX3N0YXRlLVxcdTAwM2VtbV93YWxrO1xcbm1tL3Ztc2Nhbi5jLTM4MTQtXFxuLS1cXG5tbS92bXNjYW4uYz0zOTk0PXN0YXRpYyBib29sIHRyeV90b19pbmNfbWF4X3NlcShzdHJ1Y3QgbHJ1dmVjICpscnV2ZWMsIHVuc2lnbmVkIGxvbmcgc2VxLFxcbi0tXFxubW0vdm1zY2FuLmMtMzk5Ny1cXHRib29sIHN1Y2Nlc3M7XFxubW0vdm1zY2FuLmM6Mzk5ODpcXHRzdHJ1Y3QgbHJ1X2dlbl9tbV93YWxrICp3YWxrO1xcbm1tL3Ztc2Nhbi5jLTM5OTktXFx0c3RydWN0IG1tX3N0cnVjdCAqbW0gPSBOVUxMO1xcbi0tXFxubW0vdm1zY2FuLmM9NDE4MD1ib29sIGxydV9nZW5fbG9va19hcm91bmQoc3RydWN0IHBhZ2Vfdm1hX21hcHBlZF93YWxrICpwdm13LCB1bnNpZ25lZCBpbnQgbnIpXFxuLS1cXG5tbS92bXNjYW4uYy00MTg1LVxcdHVuc2lnbmVkIGxvbmcgZW5kO1xcbm1tL3Ztc2Nhbi5jOjQxODY6XFx0c3RydWN0IGxydV9nZW5fbW1fd2FsayAqd2FsaztcXG5tbS92bXNjYW4uYy00MTg3LVxcdHN0cnVjdCBmb2xpbyAqbGFzdCA9IE5VTEw7XFxuLS1cXG5tbS92bXNjYW4uYz00ODAxPXN0YXRpYyBpbnQgZXZpY3RfZm9saW9zKHVuc2lnbmVkIGxvbmcgbnJfdG9fc2Nhbiwgc3RydWN0IGxydXZlYyAqbHJ1dmVjLFxcbi0tXFxubW0vdm1zY2FuLmMtNDgwOS1cXHRzdHJ1Y3QgcmVjbGFpbV9zdGF0IHN0YXQ7XFxubW0vdm1zY2FuLmM6NDgxMDpcXHRzdHJ1Y3QgbHJ1X2dlbl9tbV93YWxrICp3YWxrO1xcbm1tL3Ztc2Nhbi5jLTQ4MTEtXFx0aW50IHNjYW5uZWQsIHJlY2xhaW1lZDtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTFUMTM6NTU6NTIuMTg4NTY3Nzc0WiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzQ1NjQxNzE1MywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBteSBvd246XG5cbioqQW5hbHl6aW5nIGEgVk1TY2FuIFBhdGNoIGFuZCBpdHMgRGVwZW5kZW5jeSBvbiBMUlVfR0VOKipcblxuUmlnaHQsIHNvIHRoaXMgcGF0Y2ggaXMgdG91Y2hpbmcgYHJlc2V0X2JhdGNoX3NpemVgIHdpdGhpbiB0aGUgYG1tL3Ztc2Nhbi5jYCBmaWxlLiBNeSBpbW1lZGlhdGUgdGhvdWdodCBpcyB0byB1bmRlcnN0YW5kIHRoZSBjb250ZXh0LiBXaGF0J3MgZHJpdmluZyB0aGlzIGNoYW5nZSB0byB0aGUgYmF0Y2ggc2l6ZSByZXNldD8gTW9yZSBpbXBvcnRhbnRseSwgaXMgdGhpcyBjaGFuZ2UgY29udGluZ2VudCBvbiBgQ09ORklHX0xSVV9HRU5gIGJlaW5nIGVuYWJsZWQ/IEl0J3MgYSBrZXkgcXVlc3Rpb24uIGBDT05GSUdfTFJVX0dFTmAsIGlmIHByZXNlbnQsIGNhbiBoYXZlIHByb2ZvdW5kIGltcGxpY2F0aW9ucyBmb3IgaG93IHRoZSBrZXJuZWwgaGFuZGxlcyBwYWdlIHJlcGxhY2VtZW50IGFuZCwgYnkgZXh0ZW5zaW9uLCBiYXRjaCBzaXplcyB1c2VkIGluIHRoZSBzY2FubmluZyBwcm9jZXNzLiBBIGNoYW5nZSBoZXJlIGNvdWxkIGJlIGEgZGlyZWN0IHJlc3VsdCBvZiB3YW50aW5nIGEgbmV3IGZlYXR1cmUgaW4gTFJVX0dFTi4gSXQgY291bGQgYmUgZm9yIHBlcmZvcm1hbmNlIHJlYXNvbnMsIG9yIG1heWJlIHRvIGZpeCBhIGJ1ZyBpbiBMUlVfR0VOLiBJIHdhbnQgdG8gY2hlY2sgYWxsIG9mIHRoZXNlIHBvc3NpYmlsaXRlcy4gSSdsbCBuZWVkIHRvIGRpZyBpbnRvIHRoZSBjb2RlLCBhbmQgcHJvYmFibHkgY3Jvc3MtcmVmZXJlbmNlIHRoZSBjb21taXQgbWVzc2FnZXMuIEkgYW0gaG9waW5nIHRoYXQgYSBjYXJlZnVsIGNvbXBhcmlzb24gb2YgdGhlIGNvZGUgYW5kIGNvbW1pdCBtZXNzYWdlcyBzaG91bGQgcmV2ZWFsIHdoZXRoZXIgYENPTkZJR19MUlVfR0VOYCBpcyB0cnVseSBhIHByZXJlcXVpc2l0ZSBvciBpZiB0aGlzIG1vZGlmaWNhdGlvbiBpcyBpbmRlcGVuZGVudC4gVW5kZXJzdGFuZGluZyB0aGlzIGRlcGVuZGVuY3kgaXMgZXNzZW50aWFsIGJlZm9yZSBJIGNhbiBhY2N1cmF0ZWx5IGFzc2VzcyB0aGUgcGF0Y2gncyBpbXBhY3QgYW5kIGl0cyBvdmVyYWxsIHZhbGlkaXR5LlxuXG5cbiIsIklucHV0VG9rZW5zIjo1MjQ1LCJPdXRwdXRUb2tlbnMiOjMxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDMsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTFUMTM6NTU6NTUuNjQ0OTg2MzE3WiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU0NzA0MDUxLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInJlc2V0X2JhdGNoX3NpemVcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibW0vdm1zY2FuLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibW0vdm1zY2FuLmM9MzI0OT1zdGF0aWMgdm9pZCB1cGRhdGVfYmF0Y2hfc2l6ZShzdHJ1Y3QgbHJ1X2dlbl9tbV93YWxrICp3YWxrLCBzdHJ1Y3QgZm9saW8gKmZvbGlvLFxcbi0tXFxubW0vdm1zY2FuLmMtMzI2NC1cXG5tbS92bXNjYW4uYzozMjY1OnN0YXRpYyB2b2lkIHJlc2V0X2JhdGNoX3NpemUoc3RydWN0IGxydV9nZW5fbW1fd2FsayAqd2FsaylcXG5tbS92bXNjYW4uYy0zMjY2LXtcXG4tLVxcbm1tL3Ztc2Nhbi5jPTM3NTY9c3RhdGljIHZvaWQgd2Fsa19tbShzdHJ1Y3QgbW1fc3RydWN0ICptbSwgc3RydWN0IGxydV9nZW5fbW1fd2FsayAqd2FsaylcXG4tLVxcbm1tL3Ztc2Nhbi5jLTM3ODQtXFx0XFx0aWYgKHdhbGstXFx1MDAzZWJhdGNoZWQpXFxubW0vdm1zY2FuLmM6Mzc4NTpcXHRcXHRcXHRyZXNldF9iYXRjaF9zaXplKHdhbGspO1xcbm1tL3Ztc2Nhbi5jLTM3ODYtXFxuLS1cXG5tbS92bXNjYW4uYz00ODAxPXN0YXRpYyBpbnQgZXZpY3RfZm9saW9zKHVuc2lnbmVkIGxvbmcgbnJfdG9fc2Nhbiwgc3RydWN0IGxydXZlYyAqbHJ1dmVjLFxcbi0tXFxubW0vdm1zY2FuLmMtNDg2OC1cXHRcXHR3YWxrLVxcdTAwM2VscnV2ZWMgPSBscnV2ZWM7XFxubW0vdm1zY2FuLmM6NDg2OTpcXHRcXHRyZXNldF9iYXRjaF9zaXplKHdhbGspO1xcbm1tL3Ztc2Nhbi5jLTQ4NzAtXFx0fVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xMVQxMzo1NTo1NS42OTk2OTU3MzhaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo3MzE5NjY2MTM2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhhdCB0aG91Z2h0IHByb2Nlc3MsIGFzIGlmIGl0IHdlcmUgbXkgb3duOlxuXG4qKkludmVzdGlnYXRpbmcgYHJlc2V0X2JhdGNoX3NpemVgKipcblxuQWxyaWdodCwgSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2hlcmUgYHJlc2V0X2JhdGNoX3NpemVgIGlzIGRlZmluZWQgd2l0aGluIHRoZSBjb2RlLiBUaGlzIGxpa2VseSBpbXBhY3RzIGl0cyBzY29wZSBhbmQgaG93IGl0IGJlaGF2ZXMuIFRoZSBmaXJzdCB0aGluZyBJJ2xsIGNoZWNrIGlzIHdoZXRoZXIgaXQncyBjb25kaXRpb25hbGx5IGNvbXBpbGVkLiBTcGVjaWZpY2FsbHksIEknbSB0aGlua2luZywgaXMgYHJlc2V0X2JhdGNoX3NpemVgIGRlZmluZWQgKm9ubHkqIGlmIGBDT05GSUdfTFJVX0dFTmAgaXMgYWxzbyBkZWZpbmVkPyBUaGF0IHdvdWxkIGJlIHRoZSBwbGFjZSB0byBzdGFydCBpZiBpdCdzIG5vdCBhIGRpcmVjdCBwYXJ0IG9mIHRoZSBjb3JlLiBDaGVja2luZyB0aGUgcHJlcHJvY2Vzc29yIGRpcmVjdGl2ZXMgd2lsbCByZXZlYWwgaWYgaXRzIHVzZSBpcyBjb250cm9sbGVkIGJ5IGEgY29uZmlndXJhdGlvbiBvcHRpb24sIHdoaWNoIHdpbGwgdGhlbiBoYXZlIGZ1cnRoZXIgaW1wbGljYXRpb25zIGFib3V0IGhvdyB0aGUgcHJvZ3JhbSBiZWhhdmVzIGJhc2VkIG9uIGl0cyBidWlsZCBjb25maWd1cmF0aW9uLlxuXG5cbiIsIklucHV0VG9rZW5zIjo1ODk0LCJPdXRwdXRUb2tlbnMiOjMyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjgsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTFUMTM6NTY6MDMuMDE5MzYzNzk0WiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU1OTczMTcwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIkNPTkZJR19MUlVfR0VOXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm1tL3Ztc2Nhbi5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm1tL3Ztc2Nhbi5jPTgyND1lbnVtIGZvbGlvX3JlZmVyZW5jZXMge1xcbi0tXFxubW0vdm1zY2FuLmMtODMwLVxcbm1tL3Ztc2Nhbi5jOjgzMTojaWZkZWYgQ09ORklHX0xSVV9HRU5cXG5tbS92bXNjYW4uYy04MzItLypcXG4tLVxcbm1tL3Ztc2Nhbi5jPTg1ND1zdGF0aWMgYm9vbCBscnVfZ2VuX3NldF9yZWZzKHN0cnVjdCBmb2xpbyAqZm9saW8pXFxuLS1cXG5tbS92bXNjYW4uYy04NTctfVxcbm1tL3Ztc2Nhbi5jOjg1ODojZW5kaWYgLyogQ09ORklHX0xSVV9HRU4gKi9cXG5tbS92bXNjYW4uYy04NTktXFxuLS1cXG5tbS92bXNjYW4uYz0yNjEzPXN0YXRpYyBib29sIGNhbl9hZ2VfYW5vbl9wYWdlcyhzdHJ1Y3QgbHJ1dmVjICpscnV2ZWMsXFxuLS1cXG5tbS92bXNjYW4uYy0yNjI0LVxcbm1tL3Ztc2Nhbi5jOjI2MjU6I2lmZGVmIENPTkZJR19MUlVfR0VOXFxubW0vdm1zY2FuLmMtMjYyNi1cXG5tbS92bXNjYW4uYz0yNjI3PURFRklORV9TVEFUSUNfS0VZX0ZBTFNFKGxydV9zd2l0Y2gpO1xcbm1tL3Ztc2Nhbi5jOjI2Mjg6I2lmZGVmIENPTkZJR19MUlVfR0VOX0VOQUJMRURcXG5tbS92bXNjYW4uYy0yNjI5LURFRklORV9TVEFUSUNfS0VZX0FSUkFZX1RSVUUobHJ1X2dlbl9jYXBzLCBOUl9MUlVfR0VOX0NBUFMpO1xcbi0tXFxubW0vdm1zY2FuLmM9MjgwOT1zdGF0aWMgdm9pZCByZXNldF9ibG9vbV9maWx0ZXIoc3RydWN0IGxydV9nZW5fbW1fc3RhdGUgKm1tX3N0YXRlLCB1bnNpZ25lZCBsb25nIHNlcSlcXG4tLVxcbm1tL3Ztc2Nhbi5jLTI4MjgtXFxubW0vdm1zY2FuLmM6MjgyOTojaWZkZWYgQ09ORklHX0xSVV9HRU5fV0FMS1NfTU1VXFxubW0vdm1zY2FuLmMtMjgzMC1cXG4tLVxcbm1tL3Ztc2Nhbi5jPTI5Mzg9dm9pZCBscnVfZ2VuX21pZ3JhdGVfbW0oc3RydWN0IG1tX3N0cnVjdCAqbW0pXFxuLS1cXG5tbS92bXNjYW4uYy0yOTY2LVxcbm1tL3Ztc2Nhbi5jOjI5Njc6I2Vsc2UgLyogIUNPTkZJR19MUlVfR0VOX1dBTEtTX01NVSAqL1xcbm1tL3Ztc2Nhbi5jLTI5NjgtXFxuLS1cXG5tbS92bXNjYW4uYz01ODUyPWxhdGVfaW5pdGNhbGwoaW5pdF9scnVfZ2VuKTtcXG5tbS92bXNjYW4uYy01ODUzLVxcbm1tL3Ztc2Nhbi5jOjU4NTQ6I2Vsc2UgLyogIUNPTkZJR19MUlVfR0VOICovXFxubW0vdm1zY2FuLmMtNTg1NS1cXG4tLVxcbm1tL3Ztc2Nhbi5jPTU4NjY9c3RhdGljIHZvaWQgbHJ1X2dlbl9zaHJpbmtfbm9kZShzdHJ1Y3QgcGdsaXN0X2RhdGEgKnBnZGF0LCBzdHJ1Y3Qgc2Nhbl9jb250cm9sICpzYylcXG4tLVxcbm1tL3Ztc2Nhbi5jLTU4NzAtXFxubW0vdm1zY2FuLmM6NTg3MTojZW5kaWYgLyogQ09ORklHX0xSVV9HRU4gKi9cXG5tbS92bXNjYW4uYy01ODcyLVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xMVQxMzo1NjowMy4wNzUzNDM2MjRaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0NjE4MTYzNjYzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgQ29kZSdzIERlcGVuZGVuY2UgYW5kIEZ1enppbmcgU3RyYXRlZ3kqKlxuXG5Pa2F5LCBzbyBJJ3ZlIHBpbnBvaW50ZWQgYHJlc2V0X2JhdGNoX3NpemVgLiBMb29raW5nIGF0IHRoZSBjb2RlLCBpdCdzIGRlZmluZWQgYXJvdW5kIGxpbmUgMzI2NSwgd2hpY2ggaXMgZmlybWx5IHdpdGhpbiB0aGUgY29uZGl0aW9uYWwgYmxvY2sgdGllZCB0byBgI2lmZGVmIENPTkZJR19MUlVfR0VOYC4gRXhjZWxsZW50LCB0aGF0IG1lYW5zIGBDT05GSUdfTFJVX0dFTmAgaXMgZGVmaW5pdGVseSBhIHByZXJlcXVpc2l0ZSBmb3IgdGhpcyBmdW5jdGlvbmFsaXR5IHRvIGV2ZW4gZXhpc3QuIEFuZCwgc2luY2UgSSB3YW50IHRvIHRlc3QgdGhlIG5ldyBsb2dpYyB3aXRoaW4gYGxydXZlY19saXZlX2xvY2tfaXJxYCwgSSdsbCBuZWVkIHRvIG1ha2Ugc3VyZSBgQ09ORklHX01FTUNHYCBpcyBlbmFibGVkIHRvby5cblxuTm93LCBsZXQncyB0aGluayBhYm91dCBmdXp6aW5nIHRhcmdldHMuIGBscnV2ZWNfbGl2ZV9sb2NrX2lycWAgaXRzZWxmIGlzIGlubGluZSBpbiBhIGhlYWRlciwgc28gdGhhdCdzIG5vdCBkaXJlY3RseSBmdXp6YWJsZS4gQnV0LCBpdCdzIHVzZWQgd2l0aGluIGByZXNldF9iYXRjaF9zaXplYCwgd2hpY2ggaXMgc3RhdGljLiBgcmVzZXRfYmF0Y2hfc2l6ZWAsIGluIHR1cm4sIGlzIGNhbGxlZCBieSBgd2Fsa19tbWAgYW5kIGBldmljdF9mb2xpb3NgLiBUaG9zZSBhcmUgdGhlIGVudHJ5IHBvaW50cyB0byBjb25jZW50cmF0ZSBvbi4gSSdsbCBuZWVkIHRvIGFuYWx5emUgYHdhbGtfbW1gIGFuZCBgZXZpY3RfZm9saW9zYCB0byB1bmRlcnN0YW5kIGhvdyB0aGV5IHVzZSBgcmVzZXRfYmF0Y2hfc2l6ZWAgYW5kIGluZGlyZWN0bHkgYGxydXZlY19saXZlX2xvY2tfaXJxYC4gRnJvbSB0aGVyZSBJJ2xsIGNvbnN0cnVjdCBhIGZvY3VzZWQgZnV6emluZyBjYW1wYWlnbiB0YXJnZXRpbmcgdGhlbS5cblxuXG4iLCJJbnB1dFRva2VucyI6Njc5MSwiT3V0cHV0VG9rZW5zIjoyOSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE5MiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xMVQxMzo1NjowNy42OTM1MDkwMDdaIiwiU2VxIjoxMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU2ODY4MzExLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIndhbGtfbW1cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibW0vdm1zY2FuLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibW0vdm1zY2FuLmM9MjYzMj1ERUZJTkVfU1RBVElDX0tFWV9BUlJBWV9GQUxTRShscnVfZ2VuX2NhcHMsIE5SX0xSVV9HRU5fQ0FQUyk7XFxuLS1cXG5tbS92bXNjYW4uYy0yNjM1LVxcbm1tL3Ztc2Nhbi5jOjI2MzY6c3RhdGljIGJvb2wgc2hvdWxkX3dhbGtfbW11KHZvaWQpXFxubW0vdm1zY2FuLmMtMjYzNy17XFxuLS1cXG5tbS92bXNjYW4uYz0zNzE0PXN0YXRpYyBpbnQgd2Fsa19wdWRfcmFuZ2UocDRkX3QgKnA0ZCwgdW5zaWduZWQgbG9uZyBzdGFydCwgdW5zaWduZWQgbG9uZyBlbmQsXFxuLS1cXG5tbS92bXNjYW4uYy0zNzU1LVxcbm1tL3Ztc2Nhbi5jOjM3NTY6c3RhdGljIHZvaWQgd2Fsa19tbShzdHJ1Y3QgbW1fc3RydWN0ICptbSwgc3RydWN0IGxydV9nZW5fbW1fd2FsayAqd2FsaylcXG5tbS92bXNjYW4uYy0zNzU3LXtcXG4tLVxcbm1tL3Ztc2Nhbi5jPTM5OTQ9c3RhdGljIGJvb2wgdHJ5X3RvX2luY19tYXhfc2VxKHN0cnVjdCBscnV2ZWMgKmxydXZlYywgdW5zaWduZWQgbG9uZyBzZXEsXFxuLS1cXG5tbS92bXNjYW4uYy00MDE3LVxcdCAqL1xcbm1tL3Ztc2Nhbi5jOjQwMTg6XFx0aWYgKCFzaG91bGRfd2Fsa19tbXUoKSkge1xcbm1tL3Ztc2Nhbi5jLTQwMTktXFx0XFx0c3VjY2VzcyA9IGl0ZXJhdGVfbW1fbGlzdF9ub3dhbGsobHJ1dmVjLCBzZXEpO1xcbi0tXFxubW0vdm1zY2FuLmMtNDAzNi1cXHRcXHRpZiAobW0pXFxubW0vdm1zY2FuLmM6NDAzNzpcXHRcXHRcXHR3YWxrX21tKG1tLCB3YWxrKTtcXG5tbS92bXNjYW4uYy00MDM4LVxcdH0gd2hpbGUgKG1tKTtcXG4tLVxcbm1tL3Ztc2Nhbi5jPTUzNDM9c3RhdGljIHNzaXplX3QgZW5hYmxlZF9zaG93KHN0cnVjdCBrb2JqZWN0ICprb2JqLCBzdHJ1Y3Qga29ial9hdHRyaWJ1dGUgKmF0dHIsIGNoYXIgKmJ1ZilcXG4tLVxcbm1tL3Ztc2Nhbi5jLTUzNDktXFxubW0vdm1zY2FuLmM6NTM1MDpcXHRpZiAoc2hvdWxkX3dhbGtfbW11KCkpXFxubW0vdm1zY2FuLmMtNTM1MS1cXHRcXHRjYXBzIHw9IEJJVChMUlVfR0VOX01NX1dBTEspO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xMVQxMzo1NjowNy43NTAzODY2OTdaIiwiU2VxIjoxMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6Mjg2NzY4MTUyNCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IGFuYWx5c2lzIG9mIHRoZSBwcm92aWRlZCBjb2RlIHNuaXBwZXQ6XG5cbioqU3RhdGljIEZ1bmN0aW9uIEFuYWx5c2lzKipcblxuT2theSwgc28gYHdhbGtfbW1gIGlzIGRlY2xhcmVkIGFzIHN0YXRpYywgYW5kIGBldmljdF9mb2xpb3NgIGlzIHRvby4gVGhhdCBtYWtlcyBtZSBpbW1lZGlhdGVseSBjdXJpb3VzIGFib3V0IHRoZSBjYWxsIGdyYXBoIGZvciBgZXZpY3RfZm9saW9zYCwgZ2l2ZW4gdGhhdCB0aGVzZSBzdGF0aWMgZnVuY3Rpb25zIGFyZSBub3QgdmlzaWJsZSBvdXRzaWRlIHRoZWlyIGNvbXBpbGF0aW9uIHVuaXQuIEl0J3MgYSBrZXkgcGllY2Ugb2YgaW5mb3JtYXRpb24gd2hlbiBkZWFsaW5nIHdpdGggbWVtb3J5IG1hbmFnZW1lbnQgYXQgdGhpcyBsZXZlbC4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGludGVyYWN0aW9ucyB3aXRoaW4gdGhpcyBzcGVjaWZpYyBtb2R1bGUgdG8gcHJvcGVybHkgZ3JvayB0aGUgc3lzdGVtJ3MgZXZpY3Rpb24gc3RyYXRlZ3kuIExldCBtZSB0cmFjZSB0aGUgdXNlcyBhbmQgZmluZCBvdXQgd2hvIHVzZXMgYGV2aWN0X2ZvbGlvc2AuIFVuZGVyc3RhbmRpbmcgd2hlcmUgYW5kIGhvdyBgZXZpY3RfZm9saW9zYCBpcyBiZWluZyB1c2VkIGlzIGdvaW5nIHRvIGJlIGNlbnRyYWwgdG8gZGV0ZXJtaW5pbmcgaXRzIHB1cnBvc2UgYW5kIGltcGFjdCBvbiB0aGUgb3ZlcmFsbCBtZW1vcnkgbWFuYWdlbWVudCBzdHJhdGVneS5cblxuXG4iLCJJbnB1dFRva2VucyI6Nzc4MywiT3V0cHV0VG9rZW5zIjozMCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjMxLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTExVDEzOjU2OjEwLjYxODA3MDI3MVoiLCJTZXEiOjEyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTUyNzc4NzEsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiZXZpY3RfZm9saW9zXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm1tL3Ztc2Nhbi5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm1tL3Ztc2Nhbi5jPTQ3Njc9c3RhdGljIGludCBpc29sYXRlX2ZvbGlvcyh1bnNpZ25lZCBsb25nIG5yX3RvX3NjYW4sIHN0cnVjdCBscnV2ZWMgKmxydXZlYyxcXG4tLVxcbm1tL3Ztc2Nhbi5jLTQ4MDAtXFxubW0vdm1zY2FuLmM6NDgwMTpzdGF0aWMgaW50IGV2aWN0X2ZvbGlvcyh1bnNpZ25lZCBsb25nIG5yX3RvX3NjYW4sIHN0cnVjdCBscnV2ZWMgKmxydXZlYyxcXG5tbS92bXNjYW4uYy00ODAyLVxcdFxcdFxcdHN0cnVjdCBzY2FuX2NvbnRyb2wgKnNjLCBpbnQgc3dhcHBpbmVzcylcXG4tLVxcbm1tL3Ztc2Nhbi5jPTQ5NTY9c3RhdGljIGJvb2wgdHJ5X3RvX3Nocmlua19scnV2ZWMoc3RydWN0IGxydXZlYyAqbHJ1dmVjLCBzdHJ1Y3Qgc2Nhbl9jb250cm9sICpzYylcXG4tLVxcbm1tL3Ztc2Nhbi5jLTQ5NzktXFx0XFx0bnJfYmF0Y2ggPSBtaW4obnJfdG9fc2NhbiwgTUlOX0xSVV9CQVRDSCk7XFxubW0vdm1zY2FuLmM6NDk4MDpcXHRcXHRkZWx0YSA9IGV2aWN0X2ZvbGlvcyhucl9iYXRjaCwgbHJ1dmVjLCBzYywgc3dhcHBpbmVzcyk7XFxubW0vdm1zY2FuLmMtNDk4MS1cXHRcXHRpZiAoIWRlbHRhKVxcbi0tXFxubW0vdm1zY2FuLmM9NTU4Mz1zdGF0aWMgaW50IHJ1bl9ldmljdGlvbihzdHJ1Y3QgbHJ1dmVjICpscnV2ZWMsIHVuc2lnbmVkIGxvbmcgc2VxLCBzdHJ1Y3Qgc2Nhbl9jb250cm9sICpzYyxcXG4tLVxcbm1tL3Ztc2Nhbi5jLTU2MDMtXFx0XFx0bnJfYmF0Y2ggPSBtaW4obnJfdG9fcmVjbGFpbSAtIHNjLVxcdTAwM2Vucl9yZWNsYWltZWQsIE1BWF9MUlVfQkFUQ0gpO1xcbm1tL3Ztc2Nhbi5jOjU2MDQ6XFx0XFx0aWYgKCFldmljdF9mb2xpb3MobnJfYmF0Y2gsIGxydXZlYywgc2MsIHN3YXBwaW5lc3MpKVxcbm1tL3Ztc2Nhbi5jLTU2MDUtXFx0XFx0XFx0cmV0dXJuIDA7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTExVDEzOjU2OjEwLjY3MzM1NDAwMloiLCJTZXEiOjEzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNjc2MTY0MzQ1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdGhvdWdodCBwcm9jZXNzLCBhcyBpZiBJIHdlcmUgYW5hbHl6aW5nIHRoaXMgY29kZTpcblxuKipBbmFseXppbmcgdGhlIEV2aWN0aW9uIFBhdGggaW4gdGhlIExSVSBWZWN0b3IqKlxuXG5Pa2F5LCBzbyBJIHNlZSB0aGF0IGBldmljdF9mb2xpb3NgIGlzIGJlaW5nIGNhbGxlZCBmcm9tIGJvdGggYHRyeV90b19zaHJpbmtfbHJ1dmVjYCBhbmQgYHJ1bl9ldmljdGlvbmAuIFRoYXQncyBhIHByZXR0eSBjbGVhciBpbmRpY2F0aW9uIHRoYXQgaXQncyB0aGUgY29yZSBmdW5jdGlvbiBmb3IgYWN0dWFsbHkgcmVtb3ZpbmcgZm9saW9zLCB3aGljaCBtYWtlcyBzZW5zZSBnaXZlbiB0aGUgbmFtZXMuIE5vdywgSSB3YW50IHRvIHRyYWNlIHRoZSBjYWxsIGdyYXBoIGZ1cnRoZXIgdXBzdHJlYW0uIE15IGZvY3VzIGlzIHVuZGVyc3RhbmRpbmcgdGhlIHRyaWdnZXJzIGZvciBmb2xpbyBldmljdGlvbi4gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgd2hlcmUgYHRyeV90b19zaHJpbmtfbHJ1dmVjYCBhbmQgYHJ1bl9ldmljdGlvbmAgYXJlIGJlaW5nICpjYWxsZWQqIGZyb20uIFRoYXQncyB0aGUgY3J1Y2lhbCBsaW5rIOKAkyB0aG9zZSBhcmUgdGhlIHBvaW50cyBpbiB0aGUgc3lzdGVtIHRoYXQgYXJlIGluaXRpYXRpbmcgdGhlIGV2aWN0aW9uIHByb2Nlc3MgYmFzZWQgb24gd2hhdGV2ZXIgY29uZGl0aW9ucyBhcmUgaW4gcGxheS4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhvc2UgY29uZGl0aW9ucyB0byBncmFzcCB0aGUgb3ZlcmFsbCBldmljdGlvbiBwb2xpY3kuIEFyZSB3ZSBkZWFsaW5nIHdpdGggbWVtb3J5IHByZXNzdXJlLCBhZ2luZyBvZiBlbnRyaWVzLCBvciBzb21ldGhpbmcgZWxzZSBlbnRpcmVseT8gVGltZSB0byBkaWcgZGVlcGVyIGFuZCBmaW5kIG91dC5cblxuXG4iLCJJbnB1dFRva2VucyI6ODM5NSwiT3V0cHV0VG9rZW5zIjozNSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjUwLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTExVDEzOjU2OjE0LjM0OTUyMDE0N1oiLCJTZXEiOjE0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTUxNjk0MzEsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwidHJ5X3RvX3Nocmlua19scnV2ZWNcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibW0vdm1zY2FuLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibW0vdm1zY2FuLmM9NDkyND1zdGF0aWMgYm9vbCBzaG91bGRfYWJvcnRfc2NhbihzdHJ1Y3QgbHJ1dmVjICpscnV2ZWMsIHN0cnVjdCBzY2FuX2NvbnRyb2wgKnNjKVxcbi0tXFxubW0vdm1zY2FuLmMtNDk1NS0gKi9cXG5tbS92bXNjYW4uYzo0OTU2OnN0YXRpYyBib29sIHRyeV90b19zaHJpbmtfbHJ1dmVjKHN0cnVjdCBscnV2ZWMgKmxydXZlYywgc3RydWN0IHNjYW5fY29udHJvbCAqc2MpXFxubW0vdm1zY2FuLmMtNDk1Ny17XFxuLS1cXG5tbS92bXNjYW4uYz01MDAxPXN0YXRpYyBpbnQgc2hyaW5rX29uZShzdHJ1Y3QgbHJ1dmVjICpscnV2ZWMsIHN0cnVjdCBzY2FuX2NvbnRyb2wgKnNjKVxcbi0tXFxubW0vdm1zY2FuLmMtNTAyMC1cXG5tbS92bXNjYW4uYzo1MDIxOlxcdG5lZWRfcm90YXRlID0gdHJ5X3RvX3Nocmlua19scnV2ZWMobHJ1dmVjLCBzYyk7XFxubW0vdm1zY2FuLmMtNTAyMi1cXG4tLVxcbm1tL3Ztc2Nhbi5jPTUxMTI9c3RhdGljIHZvaWQgbHJ1X2dlbl9zaHJpbmtfbHJ1dmVjKHN0cnVjdCBscnV2ZWMgKmxydXZlYywgc3RydWN0IHNjYW5fY29udHJvbCAqc2MpXFxuLS1cXG5tbS92bXNjYW4uYy01MTI0LVxcbm1tL3Ztc2Nhbi5jOjUxMjU6XFx0aWYgKHRyeV90b19zaHJpbmtfbHJ1dmVjKGxydXZlYywgc2MpKVxcbm1tL3Ztc2Nhbi5jLTUxMjYtXFx0XFx0bHJ1X2dlbl9yb3RhdGVfbWVtY2cobHJ1dmVjLCBNRU1DR19MUlVfWU9VTkcpO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xMVQxMzo1NjoxNC40MDQ2OTUyMzdaIiwiU2VxIjoxNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6Mjc5OTQ4MzI0NiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHN1bW1hcnksIHByZXNlbnRlZCBhcyBhIHN0cmVhbSBvZiB0aG91Z2h0OlxuXG4qKkV2YWx1YXRpbmcgYGxydV9nZW5fc2hyaW5rX2xydXZlY2AgYXMgYSBTb2x1dGlvbioqXG5cbkFscmlnaHQsIGxldCdzIHNlZS4uLiBsb29raW5nIGF0IHRoaXMsIGBscnVfZ2VuX3Nocmlua19scnV2ZWNgIHNlZW1zIGxpa2UgYSBzdHJvbmcgY29udGVuZGVyIGhlcmUuIEl0J3MgZ290IHRoZSByaWdodCBmZWVsLCBiYXNlZCBvbiB3aGF0IEkndmUgYmVlbiBjb25zaWRlcmluZy4gSSBuZWVkIHRvIGRpZyBpbnRvIHRoZSBkZXRhaWxzLCBidXQgbXkgaW5pdGlhbCBhc3Nlc3NtZW50IGlzIHByb21pc2luZy4gSSdsbCBuZWVkIHRvIGV4cGxvcmUgaXRzIG1lY2hhbmljcyB0byBtYWtlIHN1cmUgaXQgYWxpZ25zIHByZWNpc2VseSB3aXRoIHRoZSBvcHRpbWl6YXRpb24gb2JqZWN0aXZlcywgYW5kIG9mIGNvdXJzZSwgZW5zdXJlIHRoZXJlIGFyZSBubyB1bmZvcmVzZWVuIGNvbXBsaWNhdGlvbnMgd2l0aCB0aGUgZXhpc3Rpbmcgc3lzdGVtLiBUaGUgcG90ZW50aWFsIGZvciB0aGUgb3ZlcmFsbCBnb2FscyBzZWVtcyBoaWdoIHdpdGggdGhpcyBhcHByb2FjaC5cblxuXG4iLCJJbnB1dFRva2VucyI6OTAzNiwiT3V0cHV0VG9rZW5zIjozNiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE3LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTExVDEzOjU2OjE3LjIwNDE4MDc1NFoiLCJTZXEiOjE2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTc0MTE5MTAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibHJ1X2dlbl9zaHJpbmtfbHJ1dmVjXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm1tL3Ztc2Nhbi5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm1tL3Ztc2Nhbi5jPTUwNDI9c3RhdGljIHZvaWQgc2hyaW5rX21hbnkoc3RydWN0IHBnbGlzdF9kYXRhICpwZ2RhdCwgc3RydWN0IHNjYW5fY29udHJvbCAqc2MpXFxuLS1cXG5tbS92bXNjYW4uYy01MTExLVxcbm1tL3Ztc2Nhbi5jOjUxMTI6c3RhdGljIHZvaWQgbHJ1X2dlbl9zaHJpbmtfbHJ1dmVjKHN0cnVjdCBscnV2ZWMgKmxydXZlYywgc3RydWN0IHNjYW5fY29udHJvbCAqc2MpXFxubW0vdm1zY2FuLmMtNTExMy17XFxuLS1cXG5tbS92bXNjYW4uYz01ODU2PXN0YXRpYyB2b2lkIGxydV9nZW5fYWdlX25vZGUoc3RydWN0IHBnbGlzdF9kYXRhICpwZ2RhdCwgc3RydWN0IHNjYW5fY29udHJvbCAqc2MpXFxuLS1cXG5tbS92bXNjYW4uYy01ODYwLVxcbm1tL3Ztc2Nhbi5jOjU4NjE6c3RhdGljIHZvaWQgbHJ1X2dlbl9zaHJpbmtfbHJ1dmVjKHN0cnVjdCBscnV2ZWMgKmxydXZlYywgc3RydWN0IHNjYW5fY29udHJvbCAqc2MpXFxubW0vdm1zY2FuLmMtNTg2Mi17XFxuLS1cXG5tbS92bXNjYW4uYz01ODczPXN0YXRpYyB2b2lkIHNocmlua19scnV2ZWMoc3RydWN0IGxydXZlYyAqbHJ1dmVjLCBzdHJ1Y3Qgc2Nhbl9jb250cm9sICpzYylcXG4tLVxcbm1tL3Ztc2Nhbi5jLTU4ODQtXFx0aWYgKChscnVfZ2VuX2VuYWJsZWQoKSB8fCBscnVfZ2VuX3N3aXRjaGluZygpKSBcXHUwMDI2XFx1MDAyNiAhcm9vdF9yZWNsYWltKHNjKSkge1xcbm1tL3Ztc2Nhbi5jOjU4ODU6XFx0XFx0bHJ1X2dlbl9zaHJpbmtfbHJ1dmVjKGxydXZlYywgc2MpO1xcbm1tL3Ztc2Nhbi5jLTU4ODYtXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTExVDEzOjU2OjE3LjI2MTU5ODIyNFoiLCJTZXEiOjE3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNzAwMzY4MzYxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIG15IG93bjpcblxuKipBbmFseXppbmcgUG90ZW50aWFsIEJvdHRsZW5lY2tzIGluIHRoZSBFdmljdGlvbiBQcm9jZXNzKipcblxuUmlnaHQsIHNvIHdlJ3JlIGxvb2tpbmcgYXQgb3B0aW1pemluZyB0aGUgZXZpY3Rpb24gcHJvY2Vzcy4gTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMgdGhhdCBgc2hyaW5rX2xydXZlY2AgKmNvdWxkKiBiZSBhIGRlY2VudCBwbGFjZSB0byBzdGFydCwgYnV0IEkgbmVlZCB0byBiZSBjYXV0aW91cy4gSXQncyBhbG1vc3QgY2VydGFpbmx5IG9uIHRoZSBob3QgcGF0aCwgYW5kIHdlJ2xsIHdhbnQgdG8gYmUgY2FyZWZ1bCBhYm91dCBtYWtpbmcgYW55IGNoYW5nZXMgdGhlcmUuIEFueSBwZXJmb3JtYW5jZSBpbXByb3ZlbWVudHMgd2UgZ2FpbiBtaWdodCBiZSBlYXNpbHkgb2Zmc2V0IGJ5IGluY3JlYXNlZCBjb21wbGV4aXR5IG9yIHN1YnRsZSByZWdyZXNzaW9ucy4gTGV0J3Mgbm90IGp1bXAgdG8gY29uY2x1c2lvbnMgYWJvdXQgdGhhdCBvbmUganVzdCB5ZXQuXG5cbkluc3RlYWQsIEknbGwgc2hpZnQgZm9jdXMgYW5kIHByaW9yaXRpemUgYSBkZWVwIGRpdmUgaW50byBgcnVuX2V2aWN0aW9uYCBhbmQgYHRyeV90b19pbmNfbWF4X3NlcWAuIFRob3NlIHNlZW0gbGlrZSBtb3JlIHByb21pc2luZyBhcmVhcyB0byBpbnZlc3RpZ2F0ZSBmb3IgcG90ZW50aWFsIGluZWZmaWNpZW5jaWVzLiBXZSBuZWVkIHRvIHVuZGVyc3RhbmQgaG93IHRoZSBldmljdGlvbiBwcm9jZXNzIGlzIHRyaWdnZXJlZCBhbmQgd2hhdCB0aGUgY3JpdGljYWwgbG9ja2luZyBhbmQgZGF0YSBhY2Nlc3MgcGF0dGVybnMgYXJlIHdpdGhpbiB0aG9zZSBmdW5jdGlvbnMuIEEgY2FyZWZ1bCBwcm9maWxpbmcgYW5kIGFuYWx5c2lzIG9mIHRob3NlIGZ1bmN0aW9ucyBzaG91bGQgcmV2ZWFsIHdoZXRoZXIgd2UgY2FuIHNxdWVlemUgb3V0IHNvbWUgbW9yZSBwZXJmb3JtYW5jZSBnYWlucywgYW5kIHdoaWNoIG9mIHRob3NlIGZ1bmN0aW9ucyBhcmUgb24gdGhlIGNyaXRpY2FsIHBhdGguXG5cblxuIiwiSW5wdXRUb2tlbnMiOjk1ODgsIk91dHB1dFRva2VucyI6MzAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0NSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xMVQxMzo1NjoyMC45NjE5NjgyMDVaIiwiU2VxIjoxOCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU4MjM4MDYwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInJ1bl9ldmljdGlvblwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJtbS92bXNjYW4uY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJtbS92bXNjYW4uYz01NTcyPXN0YXRpYyBpbnQgcnVuX2FnaW5nKHN0cnVjdCBscnV2ZWMgKmxydXZlYywgdW5zaWduZWQgbG9uZyBzZXEsXFxuLS1cXG5tbS92bXNjYW4uYy01NTgyLVxcbm1tL3Ztc2Nhbi5jOjU1ODM6c3RhdGljIGludCBydW5fZXZpY3Rpb24oc3RydWN0IGxydXZlYyAqbHJ1dmVjLCB1bnNpZ25lZCBsb25nIHNlcSwgc3RydWN0IHNjYW5fY29udHJvbCAqc2MsXFxubW0vdm1zY2FuLmMtNTU4NC1cXHRcXHRcXHRpbnQgc3dhcHBpbmVzcywgdW5zaWduZWQgbG9uZyBucl90b19yZWNsYWltKVxcbi0tXFxubW0vdm1zY2FuLmM9NTYxMz1zdGF0aWMgaW50IHJ1bl9jbWQoY2hhciBjbWQsIHU2NCBtZW1jZ19pZCwgaW50IG5pZCwgdW5zaWduZWQgbG9uZyBzZXEsXFxuLS1cXG5tbS92bXNjYW4uYy01NjQ0LVxcdGNhc2UgJy0nOlxcbm1tL3Ztc2Nhbi5jOjU2NDU6XFx0XFx0ZXJyID0gcnVuX2V2aWN0aW9uKGxydXZlYywgc2VxLCBzYywgc3dhcHBpbmVzcywgb3B0KTtcXG5tbS92bXNjYW4uYy01NjQ2LVxcdFxcdGJyZWFrO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xMVQxMzo1NjoyMS4wMjAyMTEwNDVaIiwiU2VxIjoxOSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzcxMzk4MTA2OSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHVuZGVyc3RhbmRpbmcgb2YgdGhlIGV4ZWN1dGlvbiBwYXRoLCBsYWlkIG91dCBsb2dpY2FsbHk6XG5cbioqVHJhY2luZyB0aGUgU2VxdWVuY2U6IEEgRmxvdyBvZiBPcGVyYXRpb25zKipcblxuT2theSwgc28gSSdtIGRpZ2dpbmcgaW50byBob3cgdGhpcyBzZXF1ZW5jZSBnZW5lcmF0aW9uIHdvcmtzLiBJdCBhcHBlYXJzIGBydW5fY21kYCBpcyBpbml0aWF0ZWQgZnJvbSBgbHJ1X2dlbl9zZXFfd3JpdGVgLCB3aGljaCBpcyBhIGRlYnVnZnMgb3Igc3lzZnMgaW50ZXJmYWNlIOKAkyB0aGF0J3MgdGhlIGVudHJ5IHBvaW50IGZyb20gdXNlcnNwYWNlIGludGVyYWN0aW9uLiBIb3dldmVyLCBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGF0IHRyaWdnZXJzIHRoZSBleGVjdXRpb24gb2YgYHJlc2V0X2JhdGNoX3NpemVgLiBBaGEsIGByZXNldF9iYXRjaF9zaXplYCBpcyBkaXJlY3RseSBjYWxsZWQgZnJvbSB0d28gcGxhY2VzOiBgd2Fsa19tbWAgYW5kIGBldmljdF9mb2xpb3NgLiAgTm93LCBgd2Fsa19tbWAgaXRzZWxmIGdldHMgY2FsbGVkIGJ5IGB0cnlfdG9faW5jX21heF9zZXFgLiBGdXJ0aGVyIGRvd24gdGhlIGNhbGwgc3RhY2ssIGB0cnlfdG9faW5jX21heF9zZXFgIGlzIHVsdGltYXRlbHkgaW52b2tlZCBieSBgaW5jX21heF9zZXFgLiBTbyB0aGUga2V5IHNlZW1zIHRvIGJlIGBpbmNfbWF4X3NlcWAsIGFzIHRoYXQgaXMgYXQgdGhlIHJvb3Qgb2YgdGhlIHNlcXVlbmNlLiBJIG5lZWQgdG8gbG9vayBhdCB3aGF0IGBpbmNfbWF4X3NlcWAgZG9lcyBhbmQgZ28gZnJvbSB0aGVyZS5cblxuXG4iLCJJbnB1dFRva2VucyI6MTAxMjMsIk91dHB1dFRva2VucyI6MzEsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo5NSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xMVQxMzo1NjoyNC43MzQxOTM5MjRaIiwiU2VxIjoyMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU5Mjg5NzkwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImluY19tYXhfc2VxXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm1tL3Ztc2Nhbi5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm1tL3Ztc2Nhbi5jPTM3NTY9c3RhdGljIHZvaWQgd2Fsa19tbShzdHJ1Y3QgbW1fc3RydWN0ICptbSwgc3RydWN0IGxydV9nZW5fbW1fd2FsayAqd2FsaylcXG4tLVxcbm1tL3Ztc2Nhbi5jLTM3NzItXFxubW0vdm1zY2FuLmM6Mzc3MzpcXHRcXHQvKiBhbm90aGVyIHRocmVhZCBtaWdodCBoYXZlIGNhbGxlZCBpbmNfbWF4X3NlcSgpICovXFxubW0vdm1zY2FuLmMtMzc3NC1cXHRcXHRpZiAod2Fsay1cXHUwMDNlc2VxICE9IG1heF9zZXEpXFxuLS1cXG5tbS92bXNjYW4uYz0zODc3PXN0YXRpYyB2b2lkIHRyeV90b19pbmNfbWluX3NlcShzdHJ1Y3QgbHJ1dmVjICpscnV2ZWMsIGludCBzd2FwcGluZXNzKVxcbi0tXFxubW0vdm1zY2FuLmMtMzkyOC1cXG5tbS92bXNjYW4uYzozOTI5OnN0YXRpYyBib29sIGluY19tYXhfc2VxKHN0cnVjdCBscnV2ZWMgKmxydXZlYywgdW5zaWduZWQgbG9uZyBzZXEsIGludCBzd2FwcGluZXNzKVxcbm1tL3Ztc2Nhbi5jLTM5MzAte1xcbi0tXFxubW0vdm1zY2FuLmMtMzk5My1cXG5tbS92bXNjYW4uYzozOTk0OnN0YXRpYyBib29sIHRyeV90b19pbmNfbWF4X3NlcShzdHJ1Y3QgbHJ1dmVjICpscnV2ZWMsIHVuc2lnbmVkIGxvbmcgc2VxLFxcbm1tL3Ztc2Nhbi5jLTM5OTUtXFx0XFx0XFx0ICAgICAgIGludCBzd2FwcGluZXNzLCBib29sIGZvcmNlX3NjYW4pXFxuLS1cXG5tbS92bXNjYW4uYy00MDA1LVxcdGlmICghbW1fc3RhdGUpXFxubW0vdm1zY2FuLmM6NDAwNjpcXHRcXHRyZXR1cm4gaW5jX21heF9zZXEobHJ1dmVjLCBzZXEsIHN3YXBwaW5lc3MpO1xcbm1tL3Ztc2Nhbi5jLTQwMDctXFxuLS1cXG5tbS92bXNjYW4uYy00MDQwLVxcdGlmIChzdWNjZXNzKSB7XFxubW0vdm1zY2FuLmM6NDA0MTpcXHRcXHRzdWNjZXNzID0gaW5jX21heF9zZXEobHJ1dmVjLCBzZXEsIHN3YXBwaW5lc3MpO1xcbm1tL3Ztc2Nhbi5jLTQwNDItXFx0XFx0V0FSTl9PTl9PTkNFKCFzdWNjZXNzKTtcXG4tLVxcbm1tL3Ztc2Nhbi5jPTQ0MjU9Ym9vbCByZWNoZWNrX2xydV9nZW5fbWF4X21lbWNnKHN0cnVjdCBtZW1fY2dyb3VwICptZW1jZywgaW50IG5pZClcXG4tLVxcbm1tL3Ztc2Nhbi5jLTQ0MzctXFxubW0vdm1zY2FuLmM6NDQzODpzdGF0aWMgdm9pZCB0cnlfdG9faW5jX21heF9zZXFfbm93YWxrKHN0cnVjdCBtZW1fY2dyb3VwICptZW1jZyxcXG5tbS92bXNjYW4uYy00NDM5LVxcdFxcdFxcdFxcdCAgICAgIHN0cnVjdCBscnV2ZWMgKmxydXZlYylcXG4tLVxcbm1tL3Ztc2Nhbi5jLTQ0NjMtXFx0aWYgKHN1Y2Nlc3MpXFxubW0vdm1zY2FuLmM6NDQ2NDpcXHRcXHRpbmNfbWF4X3NlcShscnV2ZWMsIG1heF9zZXEsIHN3YXBwaW5lc3MpO1xcbm1tL3Ztc2Nhbi5jLTQ0NjUtfVxcbi0tXFxubW0vdm1zY2FuLmM9NDQ3Mj12b2lkIG1heF9scnVfZ2VuX21lbWNnKHN0cnVjdCBtZW1fY2dyb3VwICptZW1jZywgaW50IG5pZClcXG4tLVxcbm1tL3Ztc2Nhbi5jLTQ0NzgtXFx0XFx0d2hpbGUgKGdldF9ucl9nZW5zKGxydXZlYywgdHlwZSkgXFx1MDAzYyBNQVhfTlJfR0VOUykge1xcbm1tL3Ztc2Nhbi5jOjQ0Nzk6XFx0XFx0XFx0dHJ5X3RvX2luY19tYXhfc2VxX25vd2FsayhtZW1jZywgbHJ1dmVjKTtcXG5tbS92bXNjYW4uYy00NDgwLVxcdFxcdFxcdGNvbmRfcmVzY2hlZCgpO1xcbi0tXFxubW0vdm1zY2FuLmM9NDkyND1zdGF0aWMgYm9vbCBzaG91bGRfYWJvcnRfc2NhbihzdHJ1Y3QgbHJ1dmVjICpscnV2ZWMsIHN0cnVjdCBzY2FuX2NvbnRyb2wgKnNjKVxcbi0tXFxubW0vdm1zY2FuLmMtNDk1Mi0gKiBGb3IgZnV0dXJlIG9wdGltaXphdGlvbnM6XFxubW0vdm1zY2FuLmM6NDk1MzogKiAxLiBEZWZlciB0cnlfdG9faW5jX21heF9zZXEoKSB0byB3b3JrcXVldWVzIHRvIHJlZHVjZSBsYXRlbmN5IGZvciBtZW1jZ1xcbm1tL3Ztc2Nhbi5jLTQ5NTQtICogICAgcmVjbGFpbS5cXG4tLVxcbm1tL3Ztc2Nhbi5jPTQ5NTY9c3RhdGljIGJvb2wgdHJ5X3RvX3Nocmlua19scnV2ZWMoc3RydWN0IGxydXZlYyAqbHJ1dmVjLCBzdHJ1Y3Qgc2Nhbl9jb250cm9sICpzYylcXG4tLVxcbm1tL3Ztc2Nhbi5jLTQ5NzMtXFx0XFx0aWYgKHNob3VsZF9ydW5fYWdpbmcobHJ1dmVjLCBtYXhfc2VxLCBzYywgc3dhcHBpbmVzcykpIHtcXG5tbS92bXNjYW4uYzo0OTc0OlxcdFxcdFxcdGlmICh0cnlfdG9faW5jX21heF9zZXEobHJ1dmVjLCBtYXhfc2VxLCBzd2FwcGluZXNzLCBmYWxzZSkpXFxubW0vdm1zY2FuLmMtNDk3NS1cXHRcXHRcXHRcXHRuZWVkX3JvdGF0ZSA9IHRydWU7XFxuLS1cXG5tbS92bXNjYW4uYz01NTcyPXN0YXRpYyBpbnQgcnVuX2FnaW5nKHN0cnVjdCBscnV2ZWMgKmxydXZlYywgdW5zaWduZWQgbG9uZyBzZXEsXFxuLS1cXG5tbS92bXNjYW4uYy01NTc5LVxcbm1tL3Ztc2Nhbi5jOjU1ODA6XFx0cmV0dXJuIHRyeV90b19pbmNfbWF4X3NlcShscnV2ZWMsIG1heF9zZXEsIHN3YXBwaW5lc3MsIGZvcmNlX3NjYW4pID8gMCA6IC1FRVhJU1Q7XFxubW0vdm1zY2FuLmMtNTU4MS19XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTExVDEzOjU2OjI0Ljc5MzQ4NzYwM1oiLCJTZXEiOjIxLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMDM5ODA5NDg0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIG15IG93bjpcblxuKipQcmlvcml0aXppbmcgT3B0aW1pemF0aW9uIEVmZm9ydHMqKlxuXG5SaWdodCwgbGV0J3MgemVybyBpbi4gVGhpbmtpbmcgYWJvdXQgaW1wcm92aW5nIG92ZXJhbGwgcGVyZm9ybWFuY2UsIHRoZSBgdHJ5X3RvX2luY19tYXhfc2VxYCBmdW5jdGlvbiBpcyBkZWZpbml0ZWx5IGEga2V5IGFyZWEgdG8gY29uY2VudHJhdGUgb24uIEl0J3MgbGlrZWx5IGEgYm90dGxlbmVjayB0aGF0IGNvdWxkIHlpZWxkIHNpZ25pZmljYW50IGdhaW5zIGlmIG9wdGltaXplZCBjb3JyZWN0bHkuXG5cbkFuZCwgb2YgY291cnNlLCBgZXZpY3RfZm9saW9zYC4gSSBrZWVwIGNvbWluZyBiYWNrIHRvIHRoYXQgb25lLiBNZW1vcnkgbWFuYWdlbWVudCBpcyBhbHdheXMgY3JpdGljYWwsIGFuZCB0aGlzIGZ1bmN0aW9uIGlzIGF0IHRoZSBoZWFydCBvZiB0aGF0LiBMZXQgbWUgcmUtZXhhbWluZSBgZXZpY3RfZm9saW9zYC4gUHJvYmFibHkgd29ydGggYW5vdGhlciBkZWVwIGRpdmUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjExNTk1LCJPdXRwdXRUb2tlbnMiOjMwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDAsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTFUMTM6NTY6MjcuODMzMjk5MDg5WiIsIlNlcSI6MjIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo4ODMwMDY2ODgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiZXZpY3RfZm9saW9zXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm1tL3Ztc2Nhbi5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm1tL3Ztc2Nhbi5jPTQ3Njc9c3RhdGljIGludCBpc29sYXRlX2ZvbGlvcyh1bnNpZ25lZCBsb25nIG5yX3RvX3NjYW4sIHN0cnVjdCBscnV2ZWMgKmxydXZlYyxcXG4tLVxcbm1tL3Ztc2Nhbi5jLTQ4MDAtXFxubW0vdm1zY2FuLmM6NDgwMTpzdGF0aWMgaW50IGV2aWN0X2ZvbGlvcyh1bnNpZ25lZCBsb25nIG5yX3RvX3NjYW4sIHN0cnVjdCBscnV2ZWMgKmxydXZlYyxcXG5tbS92bXNjYW4uYy00ODAyLVxcdFxcdFxcdHN0cnVjdCBzY2FuX2NvbnRyb2wgKnNjLCBpbnQgc3dhcHBpbmVzcylcXG4tLVxcbm1tL3Ztc2Nhbi5jPTQ5NTY9c3RhdGljIGJvb2wgdHJ5X3RvX3Nocmlua19scnV2ZWMoc3RydWN0IGxydXZlYyAqbHJ1dmVjLCBzdHJ1Y3Qgc2Nhbl9jb250cm9sICpzYylcXG4tLVxcbm1tL3Ztc2Nhbi5jLTQ5NzktXFx0XFx0bnJfYmF0Y2ggPSBtaW4obnJfdG9fc2NhbiwgTUlOX0xSVV9CQVRDSCk7XFxubW0vdm1zY2FuLmM6NDk4MDpcXHRcXHRkZWx0YSA9IGV2aWN0X2ZvbGlvcyhucl9iYXRjaCwgbHJ1dmVjLCBzYywgc3dhcHBpbmVzcyk7XFxubW0vdm1zY2FuLmMtNDk4MS1cXHRcXHRpZiAoIWRlbHRhKVxcbi0tXFxubW0vdm1zY2FuLmM9NTU4Mz1zdGF0aWMgaW50IHJ1bl9ldmljdGlvbihzdHJ1Y3QgbHJ1dmVjICpscnV2ZWMsIHVuc2lnbmVkIGxvbmcgc2VxLCBzdHJ1Y3Qgc2Nhbl9jb250cm9sICpzYyxcXG4tLVxcbm1tL3Ztc2Nhbi5jLTU2MDMtXFx0XFx0bnJfYmF0Y2ggPSBtaW4obnJfdG9fcmVjbGFpbSAtIHNjLVxcdTAwM2Vucl9yZWNsYWltZWQsIE1BWF9MUlVfQkFUQ0gpO1xcbm1tL3Ztc2Nhbi5jOjU2MDQ6XFx0XFx0aWYgKCFldmljdF9mb2xpb3MobnJfYmF0Y2gsIGxydXZlYywgc2MsIHN3YXBwaW5lc3MpKVxcbm1tL3Ztc2Nhbi5jLTU2MDUtXFx0XFx0XFx0cmV0dXJuIDA7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTExVDEzOjU2OjI4LjcxNjMxMzA5NloiLCJTZXEiOjIzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1Mzg1NDQyNzkwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkZvY3VzaW5nIG9uIFBvdGVudGlhbCBTeXprYWxsZXIgVGFyZ2V0cyoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoZXNlIGZ1bmN0aW9ucyBhcyBwb3RlbnRpYWwgY2FuZGlkYXRlcyBmb3IgZnV6emluZyB3aXRoIHN5emthbGxlci4gSSB3YXMgaW5pdGlhbGx5IHRoaW5raW5nIGB0cnlfdG9faW5jX21heF9zZXFgIGFuZCBgZXZpY3RfZm9saW9zYCBsb29rZWQgcHJvbWlzaW5nIGZvciBgRm9jdXNTeW1ib2xzYC4gSG9sZCBvbiB0aG91Z2gsIEkgbmVlZCB0byByZW1pbmQgbXlzZWxmIHRoYXQgYGV2aWN0X2ZvbGlvc2AgaXMgc3RhdGljLiBUaGF0IGJyaW5ncyB1cCBhbiBpbnRlcmVzdGluZyBwb2ludDogY2FuIHdlIGV2ZW4gdXNlIHN5emthbGxlciB0byB0YXJnZXQgc3RhdGljIGZ1bmN0aW9ucz8gWWVzLCB0aGF0J3MgcmlnaHQsIGlmIHRoZXkncmUgYmFrZWQgaW50byB0aGUga2VybmVsIGltYWdlLCBzeXprYWxsZXIgKmNhbiogZm9jdXMgb24gdGhlbS4gV2FpdCBhIHNlY29uZC4uLiBgdHJ5X3RvX2luY19tYXhfc2VxYCBpcyBhbHNvIHN0YXRpYyFcblxuQWxyaWdodCwgbGV0J3MgYnJvYWRlbiB0aGUgc2VhcmNoIGEgYml0LiBBcmUgdGhlcmUgYW55ICpub24qLXN0YXRpYyBmdW5jdGlvbnMgd2l0aGluIHRoaXMgYXJlYSB0aGF0IG1pZ2h0IGJlIGdvb2QgdGFyZ2V0cz8gVGhlIHN0YXRpYyBvbmVzIGFyZSBub3QgbG9va2luZyBzbyBoZWxwZnVsLiBMZXQncyBzZWUuLi4gYGxydV9nZW5fc2hyaW5rX2xydXZlY2AgaXMgc3RhdGljLiBIbW0sIHdoYXQgYWJvdXQgYHNocmlua19scnV2ZWNgPyBBbHNvIHN0YXRpYy4gYHNocmlua19ub2RlYD8gU3RhdGljLiBgc2hyaW5rX3pvbmVzYD8gU3RhdGljIGFzIHdlbGwuIFN0YXJ0aW5nIHRvIGZlZWwgbGlrZSBJJ20gc3R1Y2sgd2l0aCBzdGF0aWNzIGhlcmUsIGJ1dCBJIGp1c3QgZm91bmQgb25lOiBgZG9fdHJ5X3RvX2ZyZWVfcGFnZXNgIGlzIHN0YXRpYy4gT2ssIGB0cnlfdG9fZnJlZV9wYWdlc2AgaXMgbm9uLXN0YXRpYyBhbmQgdGhlbiBgdHJ5X3RvX2ZyZWVfbWVtX2Nncm91cF9wYWdlc2AgaXMgbm9uLXN0YXRpYyBhcyB3ZWxsLiBUaGF0IGxvb2tzIGxpa2Ugd2UgaGF2ZSBhIHdpbm5lci4gTGV0J3MgZGlnIGRlZXBlciBpbnRvIGB0cnlfdG9fZnJlZV9tZW1fY2dyb3VwX3BhZ2VzYC5cblxuXG4iLCJJbnB1dFRva2VucyI6MTIxOTAsIk91dHB1dFRva2VucyI6MzgsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMTQsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTFUMTM6NTY6MzQuMTAxNzU4MTk2WiIsIlNlcSI6MjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyNTE5NTAwMjYsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwidHJ5X3RvX2ZyZWVfbWVtX2Nncm91cF9wYWdlc1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJtbS92bXNjYW4uY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJtbS92bXNjYW4uYz02NzE5PXVuc2lnbmVkIGxvbmcgbWVtX2Nncm91cF9zaHJpbmtfbm9kZShzdHJ1Y3QgbWVtX2Nncm91cCAqbWVtY2csXFxuLS1cXG5tbS92bXNjYW4uYy02NzU4LVxcbm1tL3Ztc2Nhbi5jOjY3NTk6dW5zaWduZWQgbG9uZyB0cnlfdG9fZnJlZV9tZW1fY2dyb3VwX3BhZ2VzKHN0cnVjdCBtZW1fY2dyb3VwICptZW1jZyxcXG5tbS92bXNjYW4uYy02NzYwLVxcdFxcdFxcdFxcdFxcdCAgIHVuc2lnbmVkIGxvbmcgbnJfcGFnZXMsXFxuLS1cXG5tbS92bXNjYW4uYy02Nzk5LSNlbHNlXFxubW0vdm1zY2FuLmM6NjgwMDp1bnNpZ25lZCBsb25nIHRyeV90b19mcmVlX21lbV9jZ3JvdXBfcGFnZXMoc3RydWN0IG1lbV9jZ3JvdXAgKm1lbWNnLFxcbm1tL3Ztc2Nhbi5jLTY4MDEtXFx0XFx0XFx0XFx0XFx0ICAgdW5zaWduZWQgbG9uZyBucl9wYWdlcyxcXG4tLVxcbm1tL3Ztc2Nhbi5jPTc4NjM9aW50IHVzZXJfcHJvYWN0aXZlX3JlY2xhaW0oY2hhciAqYnVmLFxcbi0tXFxubW0vdm1zY2FuLmMtNzkyMy1cXHRcXHRcXHRcXHRcXHQgIE1FTUNHX1JFQ0xBSU1fUFJPQUNUSVZFO1xcbm1tL3Ztc2Nhbi5jOjc5MjQ6XFx0XFx0XFx0cmVjbGFpbWVkID0gdHJ5X3RvX2ZyZWVfbWVtX2Nncm91cF9wYWdlcyhtZW1jZyxcXG5tbS92bXNjYW4uYy03OTI1LVxcdFxcdFxcdFxcdFxcdFxcdCBiYXRjaF9zaXplLCBnZnBfbWFzayxcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTFUMTM6NTY6MzQuMzUzNzE0NDcyWiIsIlNlcSI6MjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM4NDY0MTQ5MzYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgbXkgb3duIG1lbnRhbCBwcm9jZXNzaW5nOlxuXG4qKkFuYWx5emluZyBNZW1vcnkgTWFuYWdlbWVudCBDYW5kaWRhdGVzKipcblxuQWxyaWdodCwgbGV0J3Mgc2VlLCB3aGVuIHdlJ3JlIHRoaW5raW5nIGFib3V0IHBvdGVudGlhbCBjYW5kaWRhdGVzIGZvciBtZW1vcnkgZnJlZWluZyBzdHJhdGVnaWVzLCBgdHJ5X3RvX2ZyZWVfbWVtX2Nncm91cF9wYWdlc2AgZGVmaW5pdGVseSBzdGFuZHMgb3V0IGFzIGEgc3Ryb25nIGNvbnRlbmRlci4gSXQncyB0YXJnZXRlZCBhbmQgbGlrZWx5IHByb3ZpZGVzIGEgZm9jdXNlZCBhcHByb2FjaCB0byByZWNsYWltIG1lbW9yeSB3aXRoaW4gYSBjb250cm9sIGdyb3VwIGNvbnRleHQuIFRoYXQgc2VlbXMgcHJvbWlzaW5nLlxuXG5PbiB0aGUgb3RoZXIgaGFuZCwgSSdtIG5vdGluZyB0aGUgZGlmZmVyZW5jZSBpbiB0aGUgc2NvcGUgb2Ygc29tZSBvZiB0aGVzZSBmdW5jdGlvbnMuIGB3YWxrX21tYCBpcyBzdGF0aWMsIHdoaWNoIHVzdWFsbHkgbWVhbnMgaXQncyBsaW1pdGVkIGluIGl0cyBhY2Nlc3NpYmlsaXR5LiBgbHJ1X2dlbl9sb29rX2Fyb3VuZGAgaXMgbm9uLXN0YXRpYywgd2hpY2ggaW1wbGllcyBpdCdzIG1vcmUgZ2VuZXJhbGx5IHVzYWJsZS4gSSdsbCBuZWVkIHRvIGNvbnNpZGVyIGhvdyB0aGVpciByZXNwZWN0aXZlIHNjb3BlIGFmZmVjdHMgdGhlaXIgdXNlZnVsbmVzcyBpbiB0aGlzIHNjZW5hcmlvLiBUaGlzIHdpbGwgbGlrZWx5IGVmZmVjdCBhbnkgZG93bnN0cmVhbSBpbnRlcmFjdGlvbi5cblxuXG4iLCJJbnB1dFRva2VucyI6MTMwODAsIk91dHB1dFRva2VucyI6MzQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0NSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xMVQxMzo1NjozOC4yMDAxMzEzMThaIiwiU2VxIjoyNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjYwOTMyNzUwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImxydV9nZW5fbG9va19hcm91bmRcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibW0vdm1zY2FuLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibW0vdm1zY2FuLmM9MjcxNz1zdGF0aWMgYm9vbCBfX21heWJlX3VudXNlZCBzZXFfaXNfdmFsaWQoc3RydWN0IGxydXZlYyAqbHJ1dmVjKVxcbi0tXFxubW0vdm1zY2FuLmMtMjc0Ni0gKiB3YWxrX3BtZF9yYW5nZSgpOyB0aGUgZXZpY3Rpb24gYWxzbyByZXBvcnQgdGhlbSB3aGVuIHdhbGtpbmcgdGhlIHJtYXBcXG5tbS92bXNjYW4uYzoyNzQ3OiAqIGluIGxydV9nZW5fbG9va19hcm91bmQoKS5cXG5tbS92bXNjYW4uYy0yNzQ4LSAqXFxuLS1cXG5tbS92bXNjYW4uYz0zOTk0PXN0YXRpYyBib29sIHRyeV90b19pbmNfbWF4X3NlcShzdHJ1Y3QgbHJ1dmVjICpscnV2ZWMsIHVuc2lnbmVkIGxvbmcgc2VxLFxcbi0tXFxubW0vdm1zY2FuLmMtNDAxMy1cXHQgKiBJZiB0aGUgaGFyZHdhcmUgZG9lc24ndCBhdXRvbWF0aWNhbGx5IHNldCB0aGUgYWNjZXNzZWQgYml0LCBmYWxsYmFja1xcbm1tL3Ztc2Nhbi5jOjQwMTQ6XFx0ICogdG8gbHJ1X2dlbl9sb29rX2Fyb3VuZCgpLCB3aGljaCBvbmx5IGNsZWFycyB0aGUgYWNjZXNzZWQgYml0IGluIGFcXG5tbS92bXNjYW4uYy00MDE1LVxcdCAqIGhhbmRmdWwgb2YgUFRFcy4gU3ByZWFkaW5nIHRoZSB3b3JrIG91dCBvdmVyIGEgcGVyaW9kIG9mIHRpbWUgdXN1YWxseVxcbi0tXFxubW0vdm1zY2FuLmM9NDEzMz1zdGF0aWMgdm9pZCBscnVfZ2VuX2FnZV9ub2RlKHN0cnVjdCBwZ2xpc3RfZGF0YSAqcGdkYXQsIHN0cnVjdCBzY2FuX2NvbnRyb2wgKnNjKVxcbi0tXFxubW0vdm1zY2FuLmMtNDE3OS0gKi9cXG5tbS92bXNjYW4uYzo0MTgwOmJvb2wgbHJ1X2dlbl9sb29rX2Fyb3VuZChzdHJ1Y3QgcGFnZV92bWFfbWFwcGVkX3dhbGsgKnB2bXcsIHVuc2lnbmVkIGludCBucilcXG5tbS92bXNjYW4uYy00MTgxLXtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTFUMTM6NTY6MzguMjYxMDY5Nzc3WiIsIlNlcSI6MjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjY5ODExMDAwMzQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBMUlUgR2VuZXJhdGlvbiBQYWdlIFJlY2xhaW0gTG9naWMqKlxuXG5Pa2F5LCBzbyBgbHJ1X2dlbl9sb29rX2Fyb3VuZGAgaXNuJ3Qgc3RhdGljLCB3aGljaCBpcyBnb29kIHRvIGtlZXAgaW4gbWluZC4gTGV0J3MgcmV2aXNpdCBgcmVzZXRfYmF0Y2hfc2l6ZWAuIEkgc2VlIGl0J3MgY2FsbGVkIGZyb20gYm90aCBgd2Fsa19tbWAgYW5kIGBldmljdF9mb2xpb3NgLiBgd2Fsa19tbWAgdHJhY2VzIGJhY2sgdG8gYHRyeV90b19pbmNfbWF4X3NlcWAsIHdoaWxlIGBldmljdF9mb2xpb3NgIGlzIGNhbGxlZCBieSBgdHJ5X3RvX3Nocmlua19scnV2ZWNgIGFuZCBgcnVuX2V2aWN0aW9uYC4gTm93LCBgdHJ5X3RvX3Nocmlua19scnV2ZWNgIGl0c2VsZiBpcyBjYWxsZWQgYnkgYHNocmlua19vbmVgIGFuZCBgbHJ1X2dlbl9zaHJpbmtfbHJ1dmVjYC4gVGhhdCBsYXR0ZXIgZnVuY3Rpb24gbGVhZHMgdG8gYHNocmlua19scnV2ZWNgLCB3aGljaCBnZXRzIGNhbGxlZCBieSBgc2hyaW5rX25vZGVgLiBGaW5hbGx5LCBgc2hyaW5rX25vZGVgIHRpZXMgaW50byBzZXZlcmFsIG90aGVyIGZ1bmN0aW9uczogYHNocmlua196b25lc2AsIGBkb190cnlfdG9fZnJlZV9wYWdlc2AsIGBrc3dhcGRfc2hyaW5rX25vZGVgLCBhbmQgYG1lbV9jZ3JvdXBfc2hyaW5rX25vZGVgLlxuXG5TbywgY29uc2lkZXJpbmcgdGhlIGNvbnRleHQsIGB0cnlfdG9fZnJlZV9tZW1fY2dyb3VwX3BhZ2VzYCBsb29rcyBsaWtlIGEgZ29vZCBub24tc3RhdGljIGZ1bmN0aW9uIHRvIGZvY3VzIG9uLiBBbHNvIGB0cnlfdG9fZnJlZV9wYWdlc2AsIGJ1dCB0aGF0IGZ1bmN0aW9uIGlzIHByb2JhYmx5IGEgaG90IHBhdGguIFNpbmNlIFN5emthbGxlciBjYW4gaGFuZGxlIHN0YXRpYyBmdW5jdGlvbnMsIEkgdGhpbmsgZm9jdXNpbmcgb24gYGV2aWN0X2ZvbGlvc2AgYW5kIGB0cnlfdG9faW5jX21heF9zZXFgIGFzIHRoZSBgRm9jdXNTeW1ib2xzYCBzZWVtcyBsaWtlIGEgc29saWQgYXBwcm9hY2ggZm9yIG5vdy5cblxuSG9sZCBvbiwgdGhlIHBhdGNoIHRvdWNoZXMgYGxydXZlY19saXZlX2xvY2tfaXJxYCwgd2hpY2ggaXMgdXNlZCBpbiBgcmVzZXRfYmF0Y2hfc2l6ZWAuIEkgcmVtZW1iZXIgYHJlc2V0X2JhdGNoX3NpemVgIGdldHMgY2FsbGVkIHdoZW4gYHdhbGstXHUwMDNlYmF0Y2hlZGAgaXMgdHJ1ZS4gTGV0J3MgdHJhY2UgdGhhdCBiYWNrOiBgd2Fsay1cdTAwM2ViYXRjaGVkYCBnZXRzIGluY3JlbWVudGVkIGluIGB1cGRhdGVfYmF0Y2hfc2l6ZWAsIGFuZCB0aGF0IGZ1bmN0aW9uIGlzIGNhbGxlZCBieSBgZm9saW9faW5jX2dlbmAgYW5kIGB3YWxrX3VwZGF0ZV9mb2xpb2AuIGB3YWxrX3VwZGF0ZV9mb2xpb2AgaXMgY2FsbGVkIGJ5IGB3YWxrX3B0ZV9yYW5nZWAgYW5kIGB3YWxrX3BtZF9yYW5nZV9sb2NrZWRgLiBBaCwgdGhlc2UgYXJlIGFsbCBjcml0aWNhbCBjb21wb25lbnRzIG9mIHRoZSBMUlUgZ2VuZXJhdGlvbiBwYWdlIHJlY2xhaW0gbG9naWMuXG5cbkZpbmFsbHksIHRoZSByZXF1aXJlZCBjb25maWdzIGFyZSBgQ09ORklHX01FTUNHYCBhbmQgYENPTkZJR19MUlVfR0VOYC4gTGV0IG1lIGp1c3QgZG91YmxlLWNoZWNrIHRoYXQgYENPTkZJR19MUlVfR0VOYCBpcyB0aGUgZXhhY3QgbmFtZSwgdG8gYmUgYWJzb2x1dGVseSBzdXJlLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMzcwMywiT3V0cHV0VG9rZW5zIjoyOSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjQ3NCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xMVQxMzo1Njo0NS4yNDIxNzIwNjJaIiwiU2VxIjoyOCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI1MDI1Mzc5NywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgTFJVX0dFTlwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJtbS9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm1tL0tjb25maWc9MTQwNj1lbmRpZiAjIFVTRVJGQVVMVEZEXFxuLS1cXG5tbS9LY29uZmlnLTE0MDgtIyBtdWx0aS1nZW4gTFJVIHtcXG5tbS9LY29uZmlnOjE0MDk6Y29uZmlnIExSVV9HRU5cXG5tbS9LY29uZmlnLTE0MTAtXFx0Ym9vbCBcXFwiTXVsdGktR2VuIExSVVxcXCJcXG4tLVxcbm1tL0tjb25maWctMTQxNy1cXG5tbS9LY29uZmlnOjE0MTg6Y29uZmlnIExSVV9HRU5fRU5BQkxFRFxcbm1tL0tjb25maWctMTQxOS1cXHRib29sIFxcXCJFbmFibGUgYnkgZGVmYXVsdFxcXCJcXG4tLVxcbm1tL0tjb25maWctMTQyMy1cXG5tbS9LY29uZmlnOjE0MjQ6Y29uZmlnIExSVV9HRU5fU1RBVFNcXG5tbS9LY29uZmlnLTE0MjUtXFx0Ym9vbCBcXFwiRnVsbCBzdGF0cyBmb3IgZGVidWdnaW5nXFxcIlxcbi0tXFxubW0vS2NvbmZpZy0xNDMyLVxcbm1tL0tjb25maWc6MTQzMzpjb25maWcgTFJVX0dFTl9XQUxLU19NTVVcXG5tbS9LY29uZmlnLTE0MzQtXFx0ZGVmX2Jvb2wgeVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xMVQxMzo1Njo0NS40OTI0MzA4OTlaIiwiU2VxIjoyOSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzQ5NDQ0NzY5NiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IGludGVycHJldGF0aW9uIG9mIHRoZXNlIHRob3VnaHRzLCBzdW1tYXJpemVkIGZyb20gbXkgcGVyc3BlY3RpdmUgYXMgc29tZW9uZSBmYW1pbGlhciB3aXRoIHN5c3RlbSBjb25maWd1cmF0aW9uOlxuXG4qKkNoZWNraW5nIENvbmZpZ3VyYXRpb24gUGFyYW1ldGVycyoqXG5cbkFscmlnaHQsIHNvIEkgc2VlIHdlJ3JlIGRlYWxpbmcgd2l0aCB0d28ga2V5IGNvbmZpZ3VyYXRpb25zIGhlcmU6IGBMUlVfR0VOYCBhbmQgYE1FTUNHYC4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRoYXQgYExSVV9HRU5gIHByb2JhYmx5IGRlYWxzIHdpdGggTGVhc3QgUmVjZW50bHkgVXNlZCBwYWdlIHJlcGxhY2VtZW50IGdlbmVyYXRpb24sIHdoaWNoIG1ha2VzIHNlbnNlLiBgTUVNQ0dgLCBhcyBJJ20gc3VyZSBtb3N0IG9mIHVzIGtub3csIGlzIGxpa2VseSByZWxhdGVkIHRvIE1lbW9yeSBDb250cm9sIEdyb3Vwcy5cblxuQnV0IGJlZm9yZSBJIGdvIGFueSBmdXJ0aGVyIGFzc3VtaW5nIGFueXRoaW5nLCBpdOKAmXMgYWx3YXlzIHdpc2UgdG8gZG91YmxlLWNoZWNrLiBJIHNob3VsZCBjb25maXJtIHRoZSBleGFjdCBuYW1lIG9mIHRoYXQgYENPTkZJR19NRU1DR2AgcGFyYW1ldGVyLCBqdXN0IHRvIGJlIGFic29sdXRlbHkgc3VyZS4gQmVzdCB0byBiZSBwcmVjaXNlIHdoZW4gZGlnZ2luZyBpbnRvIHRoZXNlIGRldGFpbHMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE0OTQ1LCJPdXRwdXRUb2tlbnMiOjI3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzksIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTFUMTM6NTY6NDguOTg2ODgxODQ1WiIsIlNlcSI6MzAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo2MTQ0NzM0OSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgTUVNQ0dcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiaW5pdC9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImluaXQvS2NvbmZpZz0xMDYzPWNvbmZpZyBDR1JPVVBfRkFWT1JfRFlOTU9EU1xcbi0tXFxuaW5pdC9LY29uZmlnLTEwNzItXFxuaW5pdC9LY29uZmlnOjEwNzM6Y29uZmlnIE1FTUNHXFxuaW5pdC9LY29uZmlnLTEwNzQtXFx0Ym9vbCBcXFwiTWVtb3J5IGNvbnRyb2xsZXJcXFwiXFxuLS1cXG5pbml0L0tjb25maWctMTA4MS1cXG5pbml0L0tjb25maWc6MTA4Mjpjb25maWcgTUVNQ0dfTk1JX1VOU0FGRVxcbmluaXQvS2NvbmZpZy0xMDgzLVxcdGJvb2xcXG4tLVxcbmluaXQvS2NvbmZpZy0xMDg4LVxcbmluaXQvS2NvbmZpZzoxMDg5OmNvbmZpZyBNRU1DR19OTUlfU0FGRVRZX1JFUVVJUkVTX0FUT01JQ1xcbmluaXQvS2NvbmZpZy0xMDkwLVxcdGJvb2xcXG4tLVxcbmluaXQvS2NvbmZpZy0xMDk1LVxcbmluaXQvS2NvbmZpZzoxMDk2OmNvbmZpZyBNRU1DR19WMVxcbmluaXQvS2NvbmZpZy0xMDk3LVxcdGJvb2wgXFxcIkxlZ2FjeSBjZ3JvdXAgdjEgbWVtb3J5IGNvbnRyb2xsZXJcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTExVDEzOjU2OjQ5LjA0ODMzMTc3NFoiLCJTZXEiOjMxLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1MzM4NDkxMDE4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkZ1enppbmcgU3RyYXRlZ3kgZm9yIE1lbWNnIE1lbW9yeSBNYW5hZ2VtZW50KipcblxuT2theSwgc28gdGhlIHBhdGNoIGludHJvZHVjZXMgYSBuZXcgbG9ja2luZyBtZWNoYW5pc20sIGBscnV2ZWNfbGl2ZV9sb2NrX2lycWAsIHNwZWNpZmljYWxseSB3aXRoaW4gdGhlIG11bHRpLWdlbiBMUlUgcGFnZSByZWNsYWltIHByb2Nlc3MuIEl0J3MgdGFyZ2V0ZWQgYXQgYGxydXZlY2AgaW4gdGhlIGByZXNldF9iYXRjaF9zaXplYCBmdW5jdGlvbiwgYW5kIGl0J3MgdHJhdmVyc2luZyB0aGUgbWVtY2cgaGllcmFyY2h5IHRvIGZpbmQgYSBub24tZHlpbmcgbWVtY2cgdG8gbG9jayBpdHMgYGxydXZlY2AuIFRoaXMgaXMgYSBwcmV0dHkgc2lnbmlmaWNhbnQgY2hhbmdlIGluIGNvcmUgbWVtb3J5IG1hbmFnZW1lbnQuIEdpdmVuIHRoYXQgaXQncyBhY3RpdmUgZHVyaW5nIG1lbW9yeSBwcmVzc3VyZSBhbmQgbWVtY2cgdGVhcmRvd24sIGZ1enppbmcgdGhpcyBhcmVhIGlzIGRlZmluaXRlbHkgd2FycmFudGVkLiBUaGUgcGF0Y2ggaXMgY2VudGVyZWQgYXJvdW5kIGBNRU1DR2AuXG5cbk5vdywgdGhlIGltcG9ydGFudCBzeW1ib2xzIHRvIGZvY3VzIG9uIGFyZSBgcmVzZXRfYmF0Y2hfc2l6ZWAsIGBldmljdF9mb2xpb3NgLCBhbmQgYHRyeV90b19pbmNfbWF4X3NlcWAuIExldCdzIGV2YWx1YXRlIHRoZW0uIGByZXNldF9iYXRjaF9zaXplYCBpcyBzdGF0aWMsIHdoaWNoIGNhbiBiZSB0cmlja3kgYnV0IGl0IGlzIGRpcmVjdGx5IG1vZGlmaWVkLCB3aGljaCBtYWtlcyBpdCBhIGdvb2QgY2FuZGlkYXRlLiBIb2xkIG9uLCBgcmVzZXRfYmF0Y2hfc2l6ZWAgaGFzIGJlZW4gbW9kaWZpZWQgdG8gdXNlIGBscnV2ZWNfbGl2ZV9sb2NrX2lycWAuIFBlcmZlY3QhIFRoaXMgbWFrZXMgYHJlc2V0X2JhdGNoX3NpemVgIGFuIGlkZWFsIGZvY3VzIHN5bWJvbC5cblxuVGhlbiwgYGV2aWN0X2ZvbGlvc2AgYW5kIGB0cnlfdG9faW5jX21heF9zZXFgIGFyZSBpdHMgY2FsbGVycywgc28gbGV0J3MgZGVmaW5pdGVseSBpbmNsdWRlIHRoZW0gaW4gdGhlIGZ1enppbmcgc2NvcGUuIEp1c3QgdG8gYmUgdGhvcm91Z2gsIGxldCdzIG1ha2Ugc3VyZSB0aGVyZSBhcmUgbm8gb3RoZXIgY2FsbGVycyBvZiBgcmVzZXRfYmF0Y2hfc2l6ZWAgdGhhdCB3ZSdyZSBtaXNzaW5nLiBXZSB3YW50IHRvIGJlIGNvbXByZWhlbnNpdmUgaW4gdGhlIGFwcHJvYWNoLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxNTM5NCwiT3V0cHV0VG9rZW5zIjozMSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI3MSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xMVQxMzo1Njo1NC4zODY4MjU2MzJaIiwiU2VxIjozMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjYyOTI4NDE5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInJlc2V0X2JhdGNoX3NpemVcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibW0vdm1zY2FuLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibW0vdm1zY2FuLmM9MzI0OT1zdGF0aWMgdm9pZCB1cGRhdGVfYmF0Y2hfc2l6ZShzdHJ1Y3QgbHJ1X2dlbl9tbV93YWxrICp3YWxrLCBzdHJ1Y3QgZm9saW8gKmZvbGlvLFxcbi0tXFxubW0vdm1zY2FuLmMtMzI2NC1cXG5tbS92bXNjYW4uYzozMjY1OnN0YXRpYyB2b2lkIHJlc2V0X2JhdGNoX3NpemUoc3RydWN0IGxydV9nZW5fbW1fd2FsayAqd2FsaylcXG5tbS92bXNjYW4uYy0zMjY2LXtcXG4tLVxcbm1tL3Ztc2Nhbi5jPTM3NTY9c3RhdGljIHZvaWQgd2Fsa19tbShzdHJ1Y3QgbW1fc3RydWN0ICptbSwgc3RydWN0IGxydV9nZW5fbW1fd2FsayAqd2FsaylcXG4tLVxcbm1tL3Ztc2Nhbi5jLTM3ODQtXFx0XFx0aWYgKHdhbGstXFx1MDAzZWJhdGNoZWQpXFxubW0vdm1zY2FuLmM6Mzc4NTpcXHRcXHRcXHRyZXNldF9iYXRjaF9zaXplKHdhbGspO1xcbm1tL3Ztc2Nhbi5jLTM3ODYtXFxuLS1cXG5tbS92bXNjYW4uYz00ODAxPXN0YXRpYyBpbnQgZXZpY3RfZm9saW9zKHVuc2lnbmVkIGxvbmcgbnJfdG9fc2Nhbiwgc3RydWN0IGxydXZlYyAqbHJ1dmVjLFxcbi0tXFxubW0vdm1zY2FuLmMtNDg2OC1cXHRcXHR3YWxrLVxcdTAwM2VscnV2ZWMgPSBscnV2ZWM7XFxubW0vdm1zY2FuLmM6NDg2OTpcXHRcXHRyZXNldF9iYXRjaF9zaXplKHdhbGspO1xcbm1tL3Ztc2Nhbi5jLTQ4NzAtXFx0fVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xMVQxMzo1Njo1NC40NDk3NTkwODJaIiwiU2VxIjozMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDAxMzkyNDUxNiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBteSBvd24gbWVudGFsIHByb2Nlc3Npbmc6XG5cbioqQW5hbHl6aW5nIEtleSBGdW5jdGlvbnMgYW5kIENhbGwgUGF0aHMqKlxuXG5SaWdodCwgc28gSSd2ZSBjb25maXJtZWQgdGhhdCBgd2Fsa19tbWAgYW5kIGBldmljdF9mb2xpb3NgIGFyZSB0aGUgKnNvbGUqIGNhbGxlcnMgb2Ygd2hhdGV2ZXIgZnVuY3Rpb24gd2UncmUgZGVhbGluZyB3aXRoLiBUaGF0J3MgY3J1Y2lhbC4gS25vd2luZyB0aGUgY2FsbCBncmFwaCBuYXJyb3dzIGRvd24gdGhlIHBvdGVudGlhbCBpc3N1ZXMgc2lnbmlmaWNhbnRseS4gU28sIGlmIEknbSB0cmFja2luZyBkb3duIGEgcGVyZm9ybWFuY2UgYm90dGxlbmVjaywgYnVnLCBvciB0cnlpbmcgdG8gdW5kZXJzdGFuZCB0aGUgY29udHJvbCBmbG93LCBJIGtub3cgbXkgcHJpbWFyeSBmb2N1cyBuZWVkcyB0byBiZSBvbiB0aGVzZSBmb3VyIHN5bWJvbHM6IGByZXNldF9iYXRjaF9zaXplYCwgYHdhbGtfbW1gLCBgZXZpY3RfZm9saW9zYCwgYW5kIGB0cnlfdG9faW5jX21heF9zZXFgLiBUaGVzZSBhcmUgbXkgZW50cnkgcG9pbnRzIGFuZCBwb3RlbnRpYWwgcHJvYmxlbSBhcmVhcy5cblxuTm93LCBsZXQncyBnZXQgZG93biB0byBhY3R1YWxseSBzZXR0aW5nIHVwIHRoZSByZXN1bHRzLiBJJ20gcmVhZHkgdG8gbW92ZSBmb3J3YXJkLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxNjMzMiwiT3V0cHV0VG9rZW5zIjoxNjcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo2NCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xMVQxMzo1Njo1OC40NjM2ODU1NDhaIiwiU2VxIjozNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo3Njg2NjA1NiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiTUVNQ0dcIixcbiAgICBcIkxSVV9HRU5cIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJyZXNldF9iYXRjaF9zaXplXCIsXG4gICAgXCJ3YWxrX21tXCIsXG4gICAgXCJldmljdF9mb2xpb3NcIixcbiAgICBcInRyeV90b19pbmNfbWF4X3NlcVwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGludHJvZHVjZXMgYSBuZXcgbG9ja2luZyBtZWNoYW5pc20gKGBscnV2ZWNfbGl2ZV9sb2NrX2lycWApIGZvciBgbHJ1dmVjYCBpbiB0aGUgbXVsdGktZ2VuIExSVSBwYWdlIHJlY2xhaW0gcGF0aCAoYHJlc2V0X2JhdGNoX3NpemVgKS4gSXQgdHJhdmVyc2VzIHRoZSBtZW1jZyBoaWVyYXJjaHkgdG8gZmluZCBhIG5vbi1keWluZyBtZW1jZyB0byBsb2NrIGl0cyBscnV2ZWMuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiBjb3JlIG1lbW9yeSBtYW5hZ2VtZW50IGxvZ2ljIHRoYXQgY2FuIGJlIHJlYWNoZWQgZHVyaW5nIG1lbW9yeSBwcmVzc3VyZSBhbmQgbWVtY2cgdGVhcmRvd24sIG1ha2luZyBpdCB3b3J0aCBmdXp6aW5nLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIk1FTUNHXCIsXG4gICAgXCJMUlVfR0VOXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwicmVzZXRfYmF0Y2hfc2l6ZVwiLFxuICAgIFwid2Fsa19tbVwiLFxuICAgIFwiZXZpY3RfZm9saW9zXCIsXG4gICAgXCJ0cnlfdG9faW5jX21heF9zZXFcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBpbnRyb2R1Y2VzIGEgbmV3IGxvY2tpbmcgbWVjaGFuaXNtIChgbHJ1dmVjX2xpdmVfbG9ja19pcnFgKSBmb3IgYGxydXZlY2AgaW4gdGhlIG11bHRpLWdlbiBMUlUgcGFnZSByZWNsYWltIHBhdGggKGByZXNldF9iYXRjaF9zaXplYCkuIEl0IHRyYXZlcnNlcyB0aGUgbWVtY2cgaGllcmFyY2h5IHRvIGZpbmQgYSBub24tZHlpbmcgbWVtY2cgdG8gbG9jayBpdHMgbHJ1dmVjLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gY29yZSBtZW1vcnkgbWFuYWdlbWVudCBsb2dpYyB0aGF0IGNhbiBiZSByZWFjaGVkIGR1cmluZyBtZW1vcnkgcHJlc3N1cmUgYW5kIG1lbWNnIHRlYXJkb3duLCBtYWtpbmcgaXQgd29ydGggZnV6emluZy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLmR1cmF0aW9uIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnTGxtVG9rZW4gPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS50b2tlbnMgLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdUb29sRHVyID0gc3RhdHMudG9vbC5jb3VudCA+IDAgPyAoc3RhdHMudG9vbC5kdXJhdGlvbiAvIHN0YXRzLnRvb2wuY291bnQpLnRvRml4ZWQoMikgOiAwOwoKCQkJY29uc3QgbGxtU3VtYXJ5Q2VsbHMgPSBbc3RhdHMubGxtLmNvdW50LCBzdGF0cy5sbG0udG9rZW5zLCBhdmdMbG1Ub2tlbiwgc3RhdHMubGxtLmR1cmF0aW9uLCBhdmdMbG1EdXJdOwoJCQljb25zdCB0b29sU3VtbWFyeUNlbGxzID0gW3N0YXRzLnRvb2wuY291bnQsIHN0YXRzLnRvb2wuZHVyYXRpb24sIGF2Z1Rvb2xEdXJdOwoKCQkJY29uc3QgbGxtU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbGxtX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQlsbG1TdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgbGxtVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQlsbG1TdW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJbGxtVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJbGxtU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQobGxtVHIpOwoKCQkJY29uc3QgdG9vbFN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rvb2xfc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgdG9vbFRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJdG9vbFN1bW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJdG9vbFRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZCh0b29sVHIpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBmaWx0ZXJlZFN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBbImxsbSIsICJ0b29sIl0uaW5jbHVkZXMoZC5UeXBlKSk7CgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ0R1cmF0aW9uJyk7CgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7IAoKCQkJZmlsdGVyZWRTdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJCgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsKCQkJCWxldCB0b29sdGlwID0gcy5OYW1lOwoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIgJiYgcy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoJCQkJZGF0YS5hZGRSb3coW2Ake3MuU2VxfWAsIGR1ciwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1RpbWUgQ29uc3VtcHRpb24gb2YgTExNL1Rvb2wgQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTS9Ub29sIFN0ZXBzJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ1NlY29uZHMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2R1cmF0aW9uX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBsbG1TdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gZC5UeXBlID09PSAibGxtIik7CgkJCWlmIChsbG1TdGVwcy5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwkJCQoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ1Rva2VucycpOwkJCQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICdzdHlsZSd9KTsJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7CQoKCQkJY29uc3QgYWdlbnRDb2xvcnMgPSB7fTsKCQkJY29uc3QgcGFsZXR0ZSA9IFsnIzQyODVGNCcsICcjREI0NDM3JywgJyNGNEI0MDAnLCAnIzBGOUQ1OCcsICcjQUI0N0JDJywgJyMwMEFDQzEnXTsKCQkJbGV0IGNvbG9ySWR4ID0gMDsKCQkJY29uc3QgYWdlbnRMTE1Db3VudHMgPSB7fTsKCQkJbGxtU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCWlmICghYWdlbnRDb2xvcnNbcy5OYW1lXSkgewoJCQkJCWFnZW50Q29sb3JzW3MuTmFtZV0gPSBwYWxldHRlW2NvbG9ySWR4ICUgcGFsZXR0ZS5sZW5ndGhdOwoJCQkJCWNvbG9ySWR4Kys7CgkJCQl9CgoJCQkJYWdlbnRMTE1Db3VudHNbcy5OYW1lXSA9IChhZ2VudExMTUNvdW50c1tzLk5hbWVdIHx8IDApICsgMTsKCQkJCWNvbnN0IGxhYmVsID0gYCR7cy5OYW1lfS0ke2FnZW50TExNQ291bnRzW3MuTmFtZV19YDsKCQkJCWNvbnN0IHRvdGFsVG9rZW5zID0gcy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2VuczsKCQkJCWNvbnN0IHN0eWxlID0gYGNvbG9yOiAke2FnZW50Q29sb3JzW3MuTmFtZV19YDsKCQkJCWxldCB0b29sdGlwID0gYFRvdGFsIFRva2VuczogJHt0b3RhbFRva2Vuc31cbihJbjogJHtzLklucHV0VG9rZW5zfSwgT3V0OiAke3MuT3V0cHV0VG9rZW5zfSwgVGhvdWdodHM6ICR7cy5PdXRwdXRUaG91Z2h0c1Rva2Vuc30pYDsKCQkJCWlmIChzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgoJCQkJZGF0YS5hZGRSb3coW2xhYmVsLCB0b3RhbFRva2Vucywgc3R5bGUsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUb2tlbiBDb25zdW1wdGlvbiBieSBMTE0gQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTSBDYWxsIFNlcXVlbmNlJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ0NvbnN1bWVkIFRva2VucycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9rZW5fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCQlsZXQgYWxsRXhwYW5kZWQgPSBmYWxzZTsKCQlmdW5jdGlvbiB0b2dnbGVBbGxEZXRhaWxzKCkgewoJCQlhbGxFeHBhbmRlZCA9ICFhbGxFeHBhbmRlZDsKCQkJZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnZGV0YWlscycpLmZvckVhY2goZCA9PiB7CgkJCQlpZiAoYWxsRXhwYW5kZWQpIGQuc2V0QXR0cmlidXRlKCdvcGVuJywgJycpOwoJCQkJZWxzZSBkLnJlbW92ZUF0dHJpYnV0ZSgnb3BlbicpOwoJCQl9KTsKCQl9Cgk8L3NjcmlwdD4KCgo8L2JvZHk+CjwvaHRtbD4K" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowdzbqr[0].run-triage(0) Phase: Succeeded StartedAt: 2026-07-11 13:39:35 +0000 UTC FinishedAt: 2026-07-11 13:57:00 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "mm-new", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git", "commit_hash": "a02ab76061e6be0bfb6640f96f180b167d461c94", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "MEMCG", "LRU_GEN" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "mm-new", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git", "commit_hash": "a02ab76061e6be0bfb6640f96f180b167d461c94", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "MEMCG", "LRU_GEN" ], "series_id": "d2a57b0f-8bff-4803-9f48-d9fd77c8deec" }, "track": "KASAN", "fuzz": { "focus": null, "focus_symbols": [ "reset_batch_size", "walk_mm", "evict_folios", "try_to_inc_max_seq" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db" ], "skip_cover_check": true, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzExIDEzOjU1PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O01FTUNHJiMzNDssCiAgICAmIzM0O0xSVV9HRU4mIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtyZXNldF9iYXRjaF9zaXplJiMzNDssCiAgICAmIzM0O3dhbGtfbW0mIzM0OywKICAgICYjMzQ7ZXZpY3RfZm9saW9zJiMzNDssCiAgICAmIzM0O3RyeV90b19pbmNfbWF4X3NlcSYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBpbnRyb2R1Y2VzIGEgbmV3IGxvY2tpbmcgbWVjaGFuaXNtIChgbHJ1dmVjX2xpdmVfbG9ja19pcnFgKSBmb3IgYGxydXZlY2AgaW4gdGhlIG11bHRpLWdlbiBMUlUgcGFnZSByZWNsYWltIHBhdGggKGByZXNldF9iYXRjaF9zaXplYCkuIEl0IHRyYXZlcnNlcyB0aGUgbWVtY2cgaGllcmFyY2h5IHRvIGZpbmQgYSBub24tZHlpbmcgbWVtY2cgdG8gbG9jayBpdHMgbHJ1dmVjLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gY29yZSBtZW1vcnkgbWFuYWdlbWVudCBsb2dpYyB0aGF0IGNhbiBiZSByZWFjaGVkIGR1cmluZyBtZW1vcnkgcHJlc3N1cmUgYW5kIG1lbWNnIHRlYXJkb3duLCBtYWtpbmcgaXQgd29ydGggZnV6emluZy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMSAxMzo1NTwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IDA3ZGQ2Mjc5MjgxOTAyMjkzNTMyMGJmZmIzZGVjNTUzM2VmYTQwZDZcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgU2F0IEp1bCAxMSAxMzo1NTo0NCAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4L21lbWNvbnRyb2wuaCBiL2luY2x1ZGUvbGludXgvbWVtY29udHJvbC5oXG5pbmRleCBlMWY0NmEwMDE2ZmNmZC4uOTU3MjYwNjc3Njc4MTUgMTAwNjQ0XG4tLS0gYS9pbmNsdWRlL2xpbnV4L21lbWNvbnRyb2wuaFxuJiM0MzsmIzQzOyYjNDM7IGIvaW5jbHVkZS9saW51eC9tZW1jb250cm9sLmhcbkBAIC0xNDcyLDYgJiM0MzsxNDcyLDMxIEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBscnV2ZWNfbG9ja19pcnEoc3RydWN0IGxydXZlYyAqbHJ1dmVjKVxuIFx0c3Bpbl9sb2NrX2lycShcdTAwMjZscnV2ZWMtXHUwMDNlbHJ1X2xvY2spO1xuIH1cbiBcbiYjNDM7c3RhdGljIGlubGluZSBzdHJ1Y3QgbHJ1dmVjICpscnV2ZWNfbGl2ZV9sb2NrX2lycShzdHJ1Y3QgbHJ1dmVjICpscnV2ZWMpXG4mIzQzO3tcbiYjNDM7I2lmZGVmIENPTkZJR19NRU1DR1xuJiM0MztcdHN0cnVjdCBwZ2xpc3RfZGF0YSAqcGdkYXQgPSBscnV2ZWNfcGdkYXQobHJ1dmVjKTtcbiYjNDM7XHRzdHJ1Y3QgbWVtX2Nncm91cCAqbWVtY2cgPSBscnV2ZWNfbWVtY2cobHJ1dmVjKTtcbiYjNDM7XG4mIzQzO1x0cmN1X3JlYWRfbG9jaygpO1xuJiM0MztcbiYjNDM7XHQvKlxuJiM0MztcdCAqIFRoZSBtZW1jZyBjYW4gYmUgTlVMTCB3aGVuIHRoZSBtZW1vcnkgY29udHJvbGxlciBpcyBkaXNhYmxlZC5cbiYjNDM7XHQgKiBPdGhlcndpc2UsIHRoZSBjYWxsZXIga2VlcHMgdGhlIG1lbWNnIG93bmluZyBAbHJ1dmVjIGFsaXZlLlxuJiM0MztcdCAqL1xuJiM0MztcdHdoaWxlICh1bmxpa2VseShtZW1jZyBcdTAwMjZcdTAwMjYgY3NzX2lzX2R5aW5nKFx1MDAyNm1lbWNnLVx1MDAzZWNzcykpKSB7XG4mIzQzO1x0XHRtZW1jZyA9IHBhcmVudF9tZW1fY2dyb3VwKG1lbWNnKTtcbiYjNDM7XHRcdGxydXZlYyA9IG1lbV9jZ3JvdXBfbHJ1dmVjKG1lbWNnLCBwZ2RhdCk7XG4mIzQzO1x0fVxuJiM0MztcbiYjNDM7XHRzcGluX2xvY2tfaXJxKFx1MDAyNmxydXZlYy1cdTAwM2VscnVfbG9jayk7XG4mIzQzOyNlbHNlXG4mIzQzO1x0bHJ1dmVjX2xvY2tfaXJxKGxydXZlYyk7XG4mIzQzOyNlbmRpZlxuJiM0MztcbiYjNDM7XHRyZXR1cm4gbHJ1dmVjO1xuJiM0Mzt9XG4mIzQzO1xuIHN0YXRpYyBpbmxpbmUgdm9pZCBscnV2ZWNfdW5sb2NrKHN0cnVjdCBscnV2ZWMgKmxydXZlYylcbiB7XG4gXHRzcGluX3VubG9jayhcdTAwMjZscnV2ZWMtXHUwMDNlbHJ1X2xvY2spO1xuZGlmZiAtLWdpdCBhL21tL3Ztc2Nhbi5jIGIvbW0vdm1zY2FuLmNcbmluZGV4IDM1YzNiYjE1YWU5NmEzLi4xYTE0MmM1ODcwMGQwMCAxMDA2NDRcbi0tLSBhL21tL3Ztc2Nhbi5jXG4mIzQzOyYjNDM7JiM0MzsgYi9tbS92bXNjYW4uY1xuQEAgLTMyNjUsNyAmIzQzOzMyNjUsNyBAQCBzdGF0aWMgdm9pZCB1cGRhdGVfYmF0Y2hfc2l6ZShzdHJ1Y3QgbHJ1X2dlbl9tbV93YWxrICp3YWxrLCBzdHJ1Y3QgZm9saW8gKmZvbGlvLFxuIHN0YXRpYyB2b2lkIHJlc2V0X2JhdGNoX3NpemUoc3RydWN0IGxydV9nZW5fbW1fd2FsayAqd2FsaylcbiB7XG4gXHRpbnQgZ2VuLCB0eXBlLCB6b25lO1xuLVx0c3RydWN0IGxydXZlYyAqbHJ1dmVjID0gd2Fsay1cdTAwM2VscnV2ZWM7XG4mIzQzO1x0c3RydWN0IGxydXZlYyAqbHJ1dmVjID0gbHJ1dmVjX2xpdmVfbG9ja19pcnEod2Fsay1cdTAwM2VscnV2ZWMpO1xuIFx0c3RydWN0IGxydV9nZW5fZm9saW8gKmxydWdlbiA9IFx1MDAyNmxydXZlYy1cdTAwM2VscnVnZW47XG4gXG4gXHR3YWxrLVx1MDAzZWJhdGNoZWQgPSAwO1xuQEAgLTMyODUsNiAmIzQzOzMyODUsOCBAQCBzdGF0aWMgdm9pZCByZXNldF9iYXRjaF9zaXplKHN0cnVjdCBscnVfZ2VuX21tX3dhbGsgKndhbGspXG4gXHRcdFx0bHJ1ICYjNDM7PSBMUlVfQUNUSVZFO1xuIFx0XHRfX3VwZGF0ZV9scnVfc2l6ZShscnV2ZWMsIGxydSwgem9uZSwgZGVsdGEpO1xuIFx0fVxuJiM0MztcbiYjNDM7XHRscnV2ZWNfdW5sb2NrX2lycShscnV2ZWMpO1xuIH1cbiBcbiBzdGF0aWMgaW50IHNob3VsZF9za2lwX3ZtYSh1bnNpZ25lZCBsb25nIHN0YXJ0LCB1bnNpZ25lZCBsb25nIGVuZCwgc3RydWN0IG1tX3dhbGsgKmFyZ3MpXG5AQCAtMzc3OSwxMSAmIzQzOzM3ODEsOCBAQCBzdGF0aWMgdm9pZCB3YWxrX21tKHN0cnVjdCBtbV9zdHJ1Y3QgKm1tLCBzdHJ1Y3QgbHJ1X2dlbl9tbV93YWxrICp3YWxrKVxuIFx0XHRcdG1tYXBfcmVhZF91bmxvY2sobW0pO1xuIFx0XHR9XG4gXG4tXHRcdGlmICh3YWxrLVx1MDAzZWJhdGNoZWQpIHtcbi1cdFx0XHRscnV2ZWNfbG9ja19pcnEobHJ1dmVjKTtcbiYjNDM7XHRcdGlmICh3YWxrLVx1MDAzZWJhdGNoZWQpXG4gXHRcdFx0cmVzZXRfYmF0Y2hfc2l6ZSh3YWxrKTtcbi1cdFx0XHRscnV2ZWNfdW5sb2NrX2lycShscnV2ZWMpO1xuLVx0XHR9XG4gXG4gXHRcdGNvbmRfcmVzY2hlZCgpO1xuIFx0fSB3aGlsZSAoZXJyID09IC1FQUdBSU4pO1xuQEAgLTQ4NjcsOSAmIzQzOzQ4NjYsNyBAQCBzdGF0aWMgaW50IGV2aWN0X2ZvbGlvcyh1bnNpZ25lZCBsb25nIG5yX3RvX3NjYW4sIHN0cnVjdCBscnV2ZWMgKmxydXZlYyxcbiBcdHdhbGsgPSBjdXJyZW50LVx1MDAzZXJlY2xhaW1fc3RhdGUtXHUwMDNlbW1fd2FsaztcbiBcdGlmICh3YWxrIFx1MDAyNlx1MDAyNiB3YWxrLVx1MDAzZWJhdGNoZWQpIHtcbiBcdFx0d2Fsay1cdTAwM2VscnV2ZWMgPSBscnV2ZWM7XG4tXHRcdGxydXZlY19sb2NrX2lycShscnV2ZWMpO1xuIFx0XHRyZXNldF9iYXRjaF9zaXplKHdhbGspO1xuLVx0XHRscnV2ZWNfdW5sb2NrX2lycShscnV2ZWMpO1xuIFx0fVxuIFxuIFx0bW9kX2xydXZlY19zdGF0ZShscnV2ZWMsIFBHREVNT1RFX0tTV0FQRCAmIzQzOyByZWNsYWltZXJfb2Zmc2V0KHNjKSxcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMSAxMzo1NTwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4xbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtNRU1DRyYjMzQ7LAogICAgJiMzNDtMUlVfR0VOJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7cmVzZXRfYmF0Y2hfc2l6ZSYjMzQ7LAogICAgJiMzNDt3YWxrX21tJiMzNDssCiAgICAmIzM0O2V2aWN0X2ZvbGlvcyYjMzQ7LAogICAgJiMzNDt0cnlfdG9faW5jX21heF9zZXEmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggaW50cm9kdWNlcyBhIG5ldyBsb2NraW5nIG1lY2hhbmlzbSAoYGxydXZlY19saXZlX2xvY2tfaXJxYCkgZm9yIGBscnV2ZWNgIGluIHRoZSBtdWx0aS1nZW4gTFJVIHBhZ2UgcmVjbGFpbSBwYXRoIChgcmVzZXRfYmF0Y2hfc2l6ZWApLiBJdCB0cmF2ZXJzZXMgdGhlIG1lbWNnIGhpZXJhcmNoeSB0byBmaW5kIGEgbm9uLWR5aW5nIG1lbWNnIHRvIGxvY2sgaXRzIGxydXZlYy4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIGNvcmUgbWVtb3J5IG1hbmFnZW1lbnQgbG9naWMgdGhhdCBjYW4gYmUgcmVhY2hlZCBkdXJpbmcgbWVtb3J5IHByZXNzdXJlIGFuZCBtZW1jZyB0ZWFyZG93biwgbWFraW5nIGl0IHdvcnRoIGZ1enppbmcuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZQppZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5CnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuCgpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOgotIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuCi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuCi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LgotIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwKZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLgoKSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaAp0b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS4KCldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOgoxLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLgogICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy4KMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuCiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KICAgRG8gbm90IGxpc3QgdG9vIGdlbmVyaWMgY29uZmlncyAod2UgYWxyZWFkeSBoYXZlIHRoZW0gZW5hYmxlZCkuIE9ubHkgbGlzdCB0aG9zZSB0aGF0CiAgIHNwZWNpZmljYWxseSBjb3ZlciB0aGUgbW9kaWZpZWQgY29kZS4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzIG91dHB1dCBhcnJheSwKICAgYW5kIERPIE5PVCBhZGQgYSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IDA3ZGQ2Mjc5MjgxOTAyMjkzNTMyMGJmZmIzZGVjNTUzM2VmYTQwZDYKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgU2F0IEp1bCAxMSAxMzo1NTo0NCAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgvbWVtY29udHJvbC5oIGIvaW5jbHVkZS9saW51eC9tZW1jb250cm9sLmgKaW5kZXggZTFmNDZhMDAxNmZjZmQuLjk1NzI2MDY3NzY3ODE1IDEwMDY0NAotLS0gYS9pbmNsdWRlL2xpbnV4L21lbWNvbnRyb2wuaAomIzQzOyYjNDM7JiM0MzsgYi9pbmNsdWRlL2xpbnV4L21lbWNvbnRyb2wuaApAQCAtMTQ3Miw2ICYjNDM7MTQ3MiwzMSBAQCBzdGF0aWMgaW5saW5lIHZvaWQgbHJ1dmVjX2xvY2tfaXJxKHN0cnVjdCBscnV2ZWMgKmxydXZlYykKIAlzcGluX2xvY2tfaXJxKCZhbXA7bHJ1dmVjLSZndDtscnVfbG9jayk7CiB9CiAKJiM0MztzdGF0aWMgaW5saW5lIHN0cnVjdCBscnV2ZWMgKmxydXZlY19saXZlX2xvY2tfaXJxKHN0cnVjdCBscnV2ZWMgKmxydXZlYykKJiM0Mzt7CiYjNDM7I2lmZGVmIENPTkZJR19NRU1DRwomIzQzOwlzdHJ1Y3QgcGdsaXN0X2RhdGEgKnBnZGF0ID0gbHJ1dmVjX3BnZGF0KGxydXZlYyk7CiYjNDM7CXN0cnVjdCBtZW1fY2dyb3VwICptZW1jZyA9IGxydXZlY19tZW1jZyhscnV2ZWMpOwomIzQzOwomIzQzOwlyY3VfcmVhZF9sb2NrKCk7CiYjNDM7CiYjNDM7CS8qCiYjNDM7CSAqIFRoZSBtZW1jZyBjYW4gYmUgTlVMTCB3aGVuIHRoZSBtZW1vcnkgY29udHJvbGxlciBpcyBkaXNhYmxlZC4KJiM0MzsJICogT3RoZXJ3aXNlLCB0aGUgY2FsbGVyIGtlZXBzIHRoZSBtZW1jZyBvd25pbmcgQGxydXZlYyBhbGl2ZS4KJiM0MzsJICovCiYjNDM7CXdoaWxlICh1bmxpa2VseShtZW1jZyAmYW1wOyZhbXA7IGNzc19pc19keWluZygmYW1wO21lbWNnLSZndDtjc3MpKSkgewomIzQzOwkJbWVtY2cgPSBwYXJlbnRfbWVtX2Nncm91cChtZW1jZyk7CiYjNDM7CQlscnV2ZWMgPSBtZW1fY2dyb3VwX2xydXZlYyhtZW1jZywgcGdkYXQpOwomIzQzOwl9CiYjNDM7CiYjNDM7CXNwaW5fbG9ja19pcnEoJmFtcDtscnV2ZWMtJmd0O2xydV9sb2NrKTsKJiM0MzsjZWxzZQomIzQzOwlscnV2ZWNfbG9ja19pcnEobHJ1dmVjKTsKJiM0MzsjZW5kaWYKJiM0MzsKJiM0MzsJcmV0dXJuIGxydXZlYzsKJiM0Mzt9CiYjNDM7CiBzdGF0aWMgaW5saW5lIHZvaWQgbHJ1dmVjX3VubG9jayhzdHJ1Y3QgbHJ1dmVjICpscnV2ZWMpCiB7CiAJc3Bpbl91bmxvY2soJmFtcDtscnV2ZWMtJmd0O2xydV9sb2NrKTsKZGlmZiAtLWdpdCBhL21tL3Ztc2Nhbi5jIGIvbW0vdm1zY2FuLmMKaW5kZXggMzVjM2JiMTVhZTk2YTMuLjFhMTQyYzU4NzAwZDAwIDEwMDY0NAotLS0gYS9tbS92bXNjYW4uYwomIzQzOyYjNDM7JiM0MzsgYi9tbS92bXNjYW4uYwpAQCAtMzI2NSw3ICYjNDM7MzI2NSw3IEBAIHN0YXRpYyB2b2lkIHVwZGF0ZV9iYXRjaF9zaXplKHN0cnVjdCBscnVfZ2VuX21tX3dhbGsgKndhbGssIHN0cnVjdCBmb2xpbyAqZm9saW8sCiBzdGF0aWMgdm9pZCByZXNldF9iYXRjaF9zaXplKHN0cnVjdCBscnVfZ2VuX21tX3dhbGsgKndhbGspCiB7CiAJaW50IGdlbiwgdHlwZSwgem9uZTsKLQlzdHJ1Y3QgbHJ1dmVjICpscnV2ZWMgPSB3YWxrLSZndDtscnV2ZWM7CiYjNDM7CXN0cnVjdCBscnV2ZWMgKmxydXZlYyA9IGxydXZlY19saXZlX2xvY2tfaXJxKHdhbGstJmd0O2xydXZlYyk7CiAJc3RydWN0IGxydV9nZW5fZm9saW8gKmxydWdlbiA9ICZhbXA7bHJ1dmVjLSZndDtscnVnZW47CiAKIAl3YWxrLSZndDtiYXRjaGVkID0gMDsKQEAgLTMyODUsNiAmIzQzOzMyODUsOCBAQCBzdGF0aWMgdm9pZCByZXNldF9iYXRjaF9zaXplKHN0cnVjdCBscnVfZ2VuX21tX3dhbGsgKndhbGspCiAJCQlscnUgJiM0Mzs9IExSVV9BQ1RJVkU7CiAJCV9fdXBkYXRlX2xydV9zaXplKGxydXZlYywgbHJ1LCB6b25lLCBkZWx0YSk7CiAJfQomIzQzOwomIzQzOwlscnV2ZWNfdW5sb2NrX2lycShscnV2ZWMpOwogfQogCiBzdGF0aWMgaW50IHNob3VsZF9za2lwX3ZtYSh1bnNpZ25lZCBsb25nIHN0YXJ0LCB1bnNpZ25lZCBsb25nIGVuZCwgc3RydWN0IG1tX3dhbGsgKmFyZ3MpCkBAIC0zNzc5LDExICYjNDM7Mzc4MSw4IEBAIHN0YXRpYyB2b2lkIHdhbGtfbW0oc3RydWN0IG1tX3N0cnVjdCAqbW0sIHN0cnVjdCBscnVfZ2VuX21tX3dhbGsgKndhbGspCiAJCQltbWFwX3JlYWRfdW5sb2NrKG1tKTsKIAkJfQogCi0JCWlmICh3YWxrLSZndDtiYXRjaGVkKSB7Ci0JCQlscnV2ZWNfbG9ja19pcnEobHJ1dmVjKTsKJiM0MzsJCWlmICh3YWxrLSZndDtiYXRjaGVkKQogCQkJcmVzZXRfYmF0Y2hfc2l6ZSh3YWxrKTsKLQkJCWxydXZlY191bmxvY2tfaXJxKGxydXZlYyk7Ci0JCX0KIAogCQljb25kX3Jlc2NoZWQoKTsKIAl9IHdoaWxlIChlcnIgPT0gLUVBR0FJTik7CkBAIC00ODY3LDkgJiM0Mzs0ODY2LDcgQEAgc3RhdGljIGludCBldmljdF9mb2xpb3ModW5zaWduZWQgbG9uZyBucl90b19zY2FuLCBzdHJ1Y3QgbHJ1dmVjICpscnV2ZWMsCiAJd2FsayA9IGN1cnJlbnQtJmd0O3JlY2xhaW1fc3RhdGUtJmd0O21tX3dhbGs7CiAJaWYgKHdhbGsgJmFtcDsmYW1wOyB3YWxrLSZndDtiYXRjaGVkKSB7CiAJCXdhbGstJmd0O2xydXZlYyA9IGxydXZlYzsKLQkJbHJ1dmVjX2xvY2tfaXJxKGxydXZlYyk7CiAJCXJlc2V0X2JhdGNoX3NpemUod2Fsayk7Ci0JCWxydXZlY191bmxvY2tfaXJxKGxydXZlYyk7CiAJfQogCiAJbW9kX2xydXZlY19zdGF0ZShscnV2ZWMsIFBHREVNT1RFX0tTV0FQRCAmIzQzOyByZWNsYWltZXJfb2Zmc2V0KHNjKSwKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTEgMTM6NTU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjc0MgoJCQkJCQkJb3V0cHV0OiAzNAoJCQkJCQkJdGhvdWdodHM6IDI2NgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIExSVSBQYWdlIFJlY2xhaW0gUGF0Y2gqKgoKT2theSwgc28gdGhpcyBwYXRjaCBpcyBtYWtpbmcgc29tZSBpbnRlcmVzdGluZyBjaGFuZ2VzIHdpdGhpbiB0aGUgbWVtb3J5IG1hbmFnZW1lbnQgc3Vic3lzdGVtLiBTcGVjaWZpY2FsbHksIGl0JiMzOTtzIGFib3V0IGhvdyB3ZSBoYW5kbGUgTFJVIHBhZ2UgcmVjbGFpbSBhbmQgdGhlIGludGVyYWN0aW9uIHdpdGggbWVtY2dzLiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdGhhdCB0aGlzIGlzIGxpa2VseSBhZGRyZXNzaW5nIHNvbWUgc3VidGxlIHBlcmZvcm1hbmNlIG9yIGNvcnJlY3RuZXNzIGlzc3VlLCBhcyB3ZSBhcmUgcmFyZWx5IG1ha2luZyBmdW5jdGlvbmFsIGNoYW5nZXMgaW4gdGhpcyBhcmVhIHVubGVzcyB0aGVyZSYjMzk7cyBhIGdvb2QgcmVhc29uLgoKVGhlIGNvcmUgb2YgdGhlIGNoYW5nZSBzZWVtcyB0byBiZSBpbnRyb2R1Y2luZyBhIG5ldyBmdW5jdGlvbiwgYGxydXZlY19saXZlX2xvY2tfaXJxYCwgYW5kIHVzaW5nIGl0IGluIGBtbS92bXNjYW4uY2AgdG8gcmVwbGFjZSB0aGUgZXhpc3RpbmcgYGxydXZlY19sb2NrX2lycWAgd2l0aGluIHRoZSBgcmVzZXRfYmF0Y2hfc2l6ZWAgZnVuY3Rpb24uIFRoZSBrZXkgZGlmZmVyZW5jZSwgYXMgSSB1bmRlcnN0YW5kIGl0LCBpcyB0aGF0IHRoaXMgbmV3IGZ1bmN0aW9uIGNhcmVmdWxseSBuYXZpZ2F0ZXMgdGhlIG1lbWNnIGhpZXJhcmNoeSB0byBmaW5kIGEgJiMzNDtsaXZlJiMzNDsgKG5vbi1keWluZykgbWVtY2cgYW5kIGxvY2tzIGl0cyBgbHJ1dmVjYC4KCk15IGZpcnN0IGluY2xpbmF0aW9uIGlzIHRvIGRlbHZlIGludG8gdGhlIGNvbmZpZ3VyYXRpb24gcmVxdWlyZW1lbnRzLiBUaGUgY29kZSBpdHNlbGYsIGBscnV2ZWNfbGl2ZV9sb2NrX2lycWAsIGlzIGNvbmRpdGlvbmFsbHkgY29tcGlsZWQgYmFzZWQgb24gYENPTkZJR19NRU1DR2AuIEdpdmVuIHRoaXMgYW5kIHRoZSBmYWN0IHRoYXQgYG1tL3Ztc2Nhbi5jYCBpcyBhbHdheXMgcGFydCBvZiB0aGUgYnVpbGQsIGl0JiMzOTtzIGNsZWFyIHRoZSBjaGFuZ2VzIHdpbGwgZGVwZW5kIG9uIGBDT05GSUdfTUVNQ0dgLiBIb3dldmVyLCBzaW5jZSBgbHJ1X2dlbl9tbV93YWxrYCBhbmQgYGxydV9nZW5fZm9saW9gIGFyZSBhbHNvIGJlaW5nIHVzZWQsIEkgd2FudCB0byB2ZXJpZnkgaWYgYENPTkZJR19MUlVfR0VOYCB3aWxsIGFsc28gY29tZSBpbnRvIHBsYXkuIFRvIGJlIHN1cmUsIEkmIzM5O2xsIHF1aWNrbHkgY2hlY2sgdGhlIGNvZGViYXNlIHdpdGggYGdyZXBwZXJgIGFuZCBzZWUgd2hlcmUgdGhlc2UgZnVuY3Rpb25zIGFyZSBkZWZpbmVkIGFuZCB1c2VkLCBhbmQgd2hpY2ggY29uZmlndXJhdGlvbnMgYWZmZWN0IHRoZWlyIGNvbXBpbGF0aW9uLiBUaGlzIHNob3VsZCBxdWlja2x5IGNsYXJpZnkgdGhlIGV4YWN0IGNvbmZpZ3VyYXRpb24gZGVwZW5kZW5jaWVzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzExIDEzOjU1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2xydV9nZW5fbW1fd2FsayYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O21tL3Ztc2Nhbi5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O21tL3Ztc2Nhbi5jPTI4NDc9c3RhdGljIHN0cnVjdCBscnVfZ2VuX21tX3N0YXRlICpnZXRfbW1fc3RhdGUoc3RydWN0IGxydXZlYyAqbHJ1dmVjKVxuLS1cbm1tL3Ztc2Nhbi5jLTI4NTEtXG5tbS92bXNjYW4uYzoyODUyOnN0YXRpYyBzdHJ1Y3QgbW1fc3RydWN0ICpnZXRfbmV4dF9tbShzdHJ1Y3QgbHJ1X2dlbl9tbV93YWxrICp3YWxrKVxubW0vdm1zY2FuLmMtMjg1My17XG4tLVxubW0vdm1zY2FuLmM9Mjk3ND1zdGF0aWMgc3RydWN0IGxydV9nZW5fbW1fc3RhdGUgKmdldF9tbV9zdGF0ZShzdHJ1Y3QgbHJ1dmVjICpscnV2ZWMpXG4tLVxubW0vdm1zY2FuLmMtMjk3OC1cbm1tL3Ztc2Nhbi5jOjI5Nzk6c3RhdGljIHN0cnVjdCBtbV9zdHJ1Y3QgKmdldF9uZXh0X21tKHN0cnVjdCBscnVfZ2VuX21tX3dhbGsgKndhbGspXG5tbS92bXNjYW4uYy0yOTgwLXtcbi0tXG5tbS92bXNjYW4uYy0yOTg1LVxubW0vdm1zY2FuLmM6Mjk4NjpzdGF0aWMgdm9pZCByZXNldF9tbV9zdGF0cyhzdHJ1Y3QgbHJ1X2dlbl9tbV93YWxrICp3YWxrLCBib29sIGxhc3QpXG5tbS92bXNjYW4uYy0yOTg3LXtcbi0tXG5tbS92bXNjYW4uYy0zMDEwLVxubW0vdm1zY2FuLmM6MzAxMTpzdGF0aWMgYm9vbCBpdGVyYXRlX21tX2xpc3Qoc3RydWN0IGxydV9nZW5fbW1fd2FsayAqd2Fsaywgc3RydWN0IG1tX3N0cnVjdCAqKml0ZXIpXG5tbS92bXNjYW4uYy0zMDEyLXtcbi0tXG5tbS92bXNjYW4uYz0zMjIzPXN0YXRpYyBpbnQgZm9saW9faW5jX2dlbihzdHJ1Y3QgbHJ1dmVjICpscnV2ZWMsIHN0cnVjdCBmb2xpbyAqZm9saW8pXG4tLVxubW0vdm1zY2FuLmMtMzI0OC1cbm1tL3Ztc2Nhbi5jOjMyNDk6c3RhdGljIHZvaWQgdXBkYXRlX2JhdGNoX3NpemUoc3RydWN0IGxydV9nZW5fbW1fd2FsayAqd2Fsaywgc3RydWN0IGZvbGlvICpmb2xpbyxcbm1tL3Ztc2Nhbi5jLTMyNTAtXHRcdFx0ICAgICAgaW50IG9sZF9nZW4sIGludCBuZXdfZ2VuKVxuLS1cbm1tL3Ztc2Nhbi5jLTMyNjQtXG5tbS92bXNjYW4uYzozMjY1OnN0YXRpYyB2b2lkIHJlc2V0X2JhdGNoX3NpemUoc3RydWN0IGxydV9nZW5fbW1fd2FsayAqd2Fsaylcbm1tL3Ztc2Nhbi5jLTMyNjYte1xuLS1cbm1tL3Ztc2Nhbi5jPTMyOTI9c3RhdGljIGludCBzaG91bGRfc2tpcF92bWEodW5zaWduZWQgbG9uZyBzdGFydCwgdW5zaWduZWQgbG9uZyBlbmQsIHN0cnVjdCBtbV93YWxrICphcmdzKVxuLS1cbm1tL3Ztc2Nhbi5jLTMyOTUtXHRzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKnZtYSA9IGFyZ3MtXHUwMDNldm1hO1xubW0vdm1zY2FuLmM6MzI5NjpcdHN0cnVjdCBscnVfZ2VuX21tX3dhbGsgKndhbGsgPSBhcmdzLVx1MDAzZXByaXZhdGU7XG5tbS92bXNjYW4uYy0zMjk3LVxuLS1cbm1tL3Ztc2Nhbi5jPTM0MzA9c3RhdGljIGJvb2wgc3VpdGFibGVfdG9fc2NhbihpbnQgdG90YWwsIGludCB5b3VuZylcbi0tXG5tbS92bXNjYW4uYy0zNDM3LVxubW0vdm1zY2FuLmM6MzQzODpzdGF0aWMgdm9pZCB3YWxrX3VwZGF0ZV9mb2xpbyhzdHJ1Y3QgbHJ1X2dlbl9tbV93YWxrICp3YWxrLCBzdHJ1Y3QgZm9saW8gKmZvbGlvLFxubW0vdm1zY2FuLmMtMzQzOS1cdFx0XHQgICAgICBpbnQgbmV3X2dlbiwgYm9vbCBkaXJ0eSlcbi0tXG5tbS92bXNjYW4uYz0zNDYyPXN0YXRpYyBib29sIHdhbGtfcHRlX3JhbmdlKHBtZF90ICpwbWQsIHVuc2lnbmVkIGxvbmcgc3RhcnQsIHVuc2lnbmVkIGxvbmcgZW5kLFxuLS1cbm1tL3Ztc2Nhbi5jLTM0NzItXHRzdHJ1Y3QgZm9saW8gKmxhc3QgPSBOVUxMO1xubW0vdm1zY2FuLmM6MzQ3MzpcdHN0cnVjdCBscnVfZ2VuX21tX3dhbGsgKndhbGsgPSBhcmdzLVx1MDAzZXByaXZhdGU7XG5tbS92bXNjYW4uYy0zNDc0LVx0c3RydWN0IG1lbV9jZ3JvdXAgKm1lbWNnID0gbHJ1dmVjX21lbWNnKHdhbGstXHUwMDNlbHJ1dmVjKTtcbi0tXG5tbS92bXNjYW4uYz0zNTUzPXN0YXRpYyB2b2lkIHdhbGtfcG1kX3JhbmdlX2xvY2tlZChwdWRfdCAqcHVkLCB1bnNpZ25lZCBsb25nIGFkZHIsIHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqdm1hLFxuLS1cbm1tL3Ztc2Nhbi5jLTM1NjAtXHRzdHJ1Y3QgZm9saW8gKmxhc3QgPSBOVUxMO1xubW0vdm1zY2FuLmM6MzU2MTpcdHN0cnVjdCBscnVfZ2VuX21tX3dhbGsgKndhbGsgPSBhcmdzLVx1MDAzZXByaXZhdGU7XG5tbS92bXNjYW4uYy0zNTYyLVx0c3RydWN0IG1lbV9jZ3JvdXAgKm1lbWNnID0gbHJ1dmVjX21lbWNnKHdhbGstXHUwMDNlbHJ1dmVjKTtcbi0tXG5tbS92bXNjYW4uYz0zNjQxPXN0YXRpYyB2b2lkIHdhbGtfcG1kX3JhbmdlKHB1ZF90ICpwdWQsIHVuc2lnbmVkIGxvbmcgc3RhcnQsIHVuc2lnbmVkIGxvbmcgZW5kLFxuLS1cbm1tL3Ztc2Nhbi5jLTM2NTAtXHR1bnNpZ25lZCBsb25nIGZpcnN0ID0gLTE7XG5tbS92bXNjYW4uYzozNjUxOlx0c3RydWN0IGxydV9nZW5fbW1fd2FsayAqd2FsayA9IGFyZ3MtXHUwMDNlcHJpdmF0ZTtcbm1tL3Ztc2Nhbi5jLTM2NTItXHRzdHJ1Y3QgbHJ1X2dlbl9tbV9zdGF0ZSAqbW1fc3RhdGUgPSBnZXRfbW1fc3RhdGUod2Fsay1cdTAwM2VscnV2ZWMpO1xuLS1cbm1tL3Ztc2Nhbi5jPTM3MTQ9c3RhdGljIGludCB3YWxrX3B1ZF9yYW5nZShwNGRfdCAqcDRkLCB1bnNpZ25lZCBsb25nIHN0YXJ0LCB1bnNpZ25lZCBsb25nIGVuZCxcbi0tXG5tbS92bXNjYW4uYy0zNzIwLVx0dW5zaWduZWQgbG9uZyBuZXh0O1xubW0vdm1zY2FuLmM6MzcyMTpcdHN0cnVjdCBscnVfZ2VuX21tX3dhbGsgKndhbGsgPSBhcmdzLVx1MDAzZXByaXZhdGU7XG5tbS92bXNjYW4uYy0zNzIyLVxuLS1cbm1tL3Ztc2Nhbi5jLTM3NTUtXG5tbS92bXNjYW4uYzozNzU2OnN0YXRpYyB2b2lkIHdhbGtfbW0oc3RydWN0IG1tX3N0cnVjdCAqbW0sIHN0cnVjdCBscnVfZ2VuX21tX3dhbGsgKndhbGspXG5tbS92bXNjYW4uYy0zNzU3LXtcbi0tXG5tbS92bXNjYW4uYy0zNzkwLVxubW0vdm1zY2FuLmM6Mzc5MTpzdGF0aWMgc3RydWN0IGxydV9nZW5fbW1fd2FsayAqc2V0X21tX3dhbGsoc3RydWN0IHBnbGlzdF9kYXRhICpwZ2RhdCwgYm9vbCBmb3JjZV9hbGxvYylcbm1tL3Ztc2Nhbi5jLTM3OTIte1xubW0vdm1zY2FuLmM6Mzc5MzpcdHN0cnVjdCBscnVfZ2VuX21tX3dhbGsgKndhbGsgPSBjdXJyZW50LVx1MDAzZXJlY2xhaW1fc3RhdGUtXHUwMDNlbW1fd2Fsaztcbm1tL3Ztc2Nhbi5jLTM3OTQtXG4tLVxubW0vdm1zY2FuLmM9MzgxMT1zdGF0aWMgdm9pZCBjbGVhcl9tbV93YWxrKHZvaWQpXG5tbS92bXNjYW4uYy0zODEyLXtcbm1tL3Ztc2Nhbi5jOjM4MTM6XHRzdHJ1Y3QgbHJ1X2dlbl9tbV93YWxrICp3YWxrID0gY3VycmVudC1cdTAwM2VyZWNsYWltX3N0YXRlLVx1MDAzZW1tX3dhbGs7XG5tbS92bXNjYW4uYy0zODE0LVxuLS1cbm1tL3Ztc2Nhbi5jPTM5OTQ9c3RhdGljIGJvb2wgdHJ5X3RvX2luY19tYXhfc2VxKHN0cnVjdCBscnV2ZWMgKmxydXZlYywgdW5zaWduZWQgbG9uZyBzZXEsXG4tLVxubW0vdm1zY2FuLmMtMzk5Ny1cdGJvb2wgc3VjY2Vzcztcbm1tL3Ztc2Nhbi5jOjM5OTg6XHRzdHJ1Y3QgbHJ1X2dlbl9tbV93YWxrICp3YWxrO1xubW0vdm1zY2FuLmMtMzk5OS1cdHN0cnVjdCBtbV9zdHJ1Y3QgKm1tID0gTlVMTDtcbi0tXG5tbS92bXNjYW4uYz00MTgwPWJvb2wgbHJ1X2dlbl9sb29rX2Fyb3VuZChzdHJ1Y3QgcGFnZV92bWFfbWFwcGVkX3dhbGsgKnB2bXcsIHVuc2lnbmVkIGludCBucilcbi0tXG5tbS92bXNjYW4uYy00MTg1LVx0dW5zaWduZWQgbG9uZyBlbmQ7XG5tbS92bXNjYW4uYzo0MTg2Olx0c3RydWN0IGxydV9nZW5fbW1fd2FsayAqd2Fsaztcbm1tL3Ztc2Nhbi5jLTQxODctXHRzdHJ1Y3QgZm9saW8gKmxhc3QgPSBOVUxMO1xuLS1cbm1tL3Ztc2Nhbi5jPTQ4MDE9c3RhdGljIGludCBldmljdF9mb2xpb3ModW5zaWduZWQgbG9uZyBucl90b19zY2FuLCBzdHJ1Y3QgbHJ1dmVjICpscnV2ZWMsXG4tLVxubW0vdm1zY2FuLmMtNDgwOS1cdHN0cnVjdCByZWNsYWltX3N0YXQgc3RhdDtcbm1tL3Ztc2Nhbi5jOjQ4MTA6XHRzdHJ1Y3QgbHJ1X2dlbl9tbV93YWxrICp3YWxrO1xubW0vdm1zY2FuLmMtNDgxMS1cdGludCBzY2FubmVkLCByZWNsYWltZWQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTEgMTM6NTU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNTI0NQoJCQkJCQkJb3V0cHV0OiAzMQoJCQkJCQkJdGhvdWdodHM6IDQzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBteSBvd246CgoqKkFuYWx5emluZyBhIFZNU2NhbiBQYXRjaCBhbmQgaXRzIERlcGVuZGVuY3kgb24gTFJVX0dFTioqCgpSaWdodCwgc28gdGhpcyBwYXRjaCBpcyB0b3VjaGluZyBgcmVzZXRfYmF0Y2hfc2l6ZWAgd2l0aGluIHRoZSBgbW0vdm1zY2FuLmNgIGZpbGUuIE15IGltbWVkaWF0ZSB0aG91Z2h0IGlzIHRvIHVuZGVyc3RhbmQgdGhlIGNvbnRleHQuIFdoYXQmIzM5O3MgZHJpdmluZyB0aGlzIGNoYW5nZSB0byB0aGUgYmF0Y2ggc2l6ZSByZXNldD8gTW9yZSBpbXBvcnRhbnRseSwgaXMgdGhpcyBjaGFuZ2UgY29udGluZ2VudCBvbiBgQ09ORklHX0xSVV9HRU5gIGJlaW5nIGVuYWJsZWQ/IEl0JiMzOTtzIGEga2V5IHF1ZXN0aW9uLiBgQ09ORklHX0xSVV9HRU5gLCBpZiBwcmVzZW50LCBjYW4gaGF2ZSBwcm9mb3VuZCBpbXBsaWNhdGlvbnMgZm9yIGhvdyB0aGUga2VybmVsIGhhbmRsZXMgcGFnZSByZXBsYWNlbWVudCBhbmQsIGJ5IGV4dGVuc2lvbiwgYmF0Y2ggc2l6ZXMgdXNlZCBpbiB0aGUgc2Nhbm5pbmcgcHJvY2Vzcy4gQSBjaGFuZ2UgaGVyZSBjb3VsZCBiZSBhIGRpcmVjdCByZXN1bHQgb2Ygd2FudGluZyBhIG5ldyBmZWF0dXJlIGluIExSVV9HRU4uIEl0IGNvdWxkIGJlIGZvciBwZXJmb3JtYW5jZSByZWFzb25zLCBvciBtYXliZSB0byBmaXggYSBidWcgaW4gTFJVX0dFTi4gSSB3YW50IHRvIGNoZWNrIGFsbCBvZiB0aGVzZSBwb3NzaWJpbGl0ZXMuIEkmIzM5O2xsIG5lZWQgdG8gZGlnIGludG8gdGhlIGNvZGUsIGFuZCBwcm9iYWJseSBjcm9zcy1yZWZlcmVuY2UgdGhlIGNvbW1pdCBtZXNzYWdlcy4gSSBhbSBob3BpbmcgdGhhdCBhIGNhcmVmdWwgY29tcGFyaXNvbiBvZiB0aGUgY29kZSBhbmQgY29tbWl0IG1lc3NhZ2VzIHNob3VsZCByZXZlYWwgd2hldGhlciBgQ09ORklHX0xSVV9HRU5gIGlzIHRydWx5IGEgcHJlcmVxdWlzaXRlIG9yIGlmIHRoaXMgbW9kaWZpY2F0aW9uIGlzIGluZGVwZW5kZW50LiBVbmRlcnN0YW5kaW5nIHRoaXMgZGVwZW5kZW5jeSBpcyBlc3NlbnRpYWwgYmVmb3JlIEkgY2FuIGFjY3VyYXRlbHkgYXNzZXNzIHRoZSBwYXRjaCYjMzk7cyBpbXBhY3QgYW5kIGl0cyBvdmVyYWxsIHZhbGlkaXR5LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzExIDEzOjU1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3Jlc2V0X2JhdGNoX3NpemUmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDttbS92bXNjYW4uYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDttbS92bXNjYW4uYz0zMjQ5PXN0YXRpYyB2b2lkIHVwZGF0ZV9iYXRjaF9zaXplKHN0cnVjdCBscnVfZ2VuX21tX3dhbGsgKndhbGssIHN0cnVjdCBmb2xpbyAqZm9saW8sXG4tLVxubW0vdm1zY2FuLmMtMzI2NC1cbm1tL3Ztc2Nhbi5jOjMyNjU6c3RhdGljIHZvaWQgcmVzZXRfYmF0Y2hfc2l6ZShzdHJ1Y3QgbHJ1X2dlbl9tbV93YWxrICp3YWxrKVxubW0vdm1zY2FuLmMtMzI2Ni17XG4tLVxubW0vdm1zY2FuLmM9Mzc1Nj1zdGF0aWMgdm9pZCB3YWxrX21tKHN0cnVjdCBtbV9zdHJ1Y3QgKm1tLCBzdHJ1Y3QgbHJ1X2dlbl9tbV93YWxrICp3YWxrKVxuLS1cbm1tL3Ztc2Nhbi5jLTM3ODQtXHRcdGlmICh3YWxrLVx1MDAzZWJhdGNoZWQpXG5tbS92bXNjYW4uYzozNzg1Olx0XHRcdHJlc2V0X2JhdGNoX3NpemUod2Fsayk7XG5tbS92bXNjYW4uYy0zNzg2LVxuLS1cbm1tL3Ztc2Nhbi5jPTQ4MDE9c3RhdGljIGludCBldmljdF9mb2xpb3ModW5zaWduZWQgbG9uZyBucl90b19zY2FuLCBzdHJ1Y3QgbHJ1dmVjICpscnV2ZWMsXG4tLVxubW0vdm1zY2FuLmMtNDg2OC1cdFx0d2Fsay1cdTAwM2VscnV2ZWMgPSBscnV2ZWM7XG5tbS92bXNjYW4uYzo0ODY5Olx0XHRyZXNldF9iYXRjaF9zaXplKHdhbGspO1xubW0vdm1zY2FuLmMtNDg3MC1cdH1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMSAxMzo1NTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1ODk0CgkJCQkJCQlvdXRwdXQ6IDMyCgkJCQkJCQl0aG91Z2h0czogMjgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhhdCB0aG91Z2h0IHByb2Nlc3MsIGFzIGlmIGl0IHdlcmUgbXkgb3duOgoKKipJbnZlc3RpZ2F0aW5nIGByZXNldF9iYXRjaF9zaXplYCoqCgpBbHJpZ2h0LCBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGVyZSBgcmVzZXRfYmF0Y2hfc2l6ZWAgaXMgZGVmaW5lZCB3aXRoaW4gdGhlIGNvZGUuIFRoaXMgbGlrZWx5IGltcGFjdHMgaXRzIHNjb3BlIGFuZCBob3cgaXQgYmVoYXZlcy4gVGhlIGZpcnN0IHRoaW5nIEkmIzM5O2xsIGNoZWNrIGlzIHdoZXRoZXIgaXQmIzM5O3MgY29uZGl0aW9uYWxseSBjb21waWxlZC4gU3BlY2lmaWNhbGx5LCBJJiMzOTttIHRoaW5raW5nLCBpcyBgcmVzZXRfYmF0Y2hfc2l6ZWAgZGVmaW5lZCAqb25seSogaWYgYENPTkZJR19MUlVfR0VOYCBpcyBhbHNvIGRlZmluZWQ/IFRoYXQgd291bGQgYmUgdGhlIHBsYWNlIHRvIHN0YXJ0IGlmIGl0JiMzOTtzIG5vdCBhIGRpcmVjdCBwYXJ0IG9mIHRoZSBjb3JlLiBDaGVja2luZyB0aGUgcHJlcHJvY2Vzc29yIGRpcmVjdGl2ZXMgd2lsbCByZXZlYWwgaWYgaXRzIHVzZSBpcyBjb250cm9sbGVkIGJ5IGEgY29uZmlndXJhdGlvbiBvcHRpb24sIHdoaWNoIHdpbGwgdGhlbiBoYXZlIGZ1cnRoZXIgaW1wbGljYXRpb25zIGFib3V0IGhvdyB0aGUgcHJvZ3JhbSBiZWhhdmVzIGJhc2VkIG9uIGl0cyBidWlsZCBjb25maWd1cmF0aW9uLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzExIDEzOjU2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O0NPTkZJR19MUlVfR0VOJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bW0vdm1zY2FuLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bW0vdm1zY2FuLmM9ODI0PWVudW0gZm9saW9fcmVmZXJlbmNlcyB7XG4tLVxubW0vdm1zY2FuLmMtODMwLVxubW0vdm1zY2FuLmM6ODMxOiNpZmRlZiBDT05GSUdfTFJVX0dFTlxubW0vdm1zY2FuLmMtODMyLS8qXG4tLVxubW0vdm1zY2FuLmM9ODU0PXN0YXRpYyBib29sIGxydV9nZW5fc2V0X3JlZnMoc3RydWN0IGZvbGlvICpmb2xpbylcbi0tXG5tbS92bXNjYW4uYy04NTctfVxubW0vdm1zY2FuLmM6ODU4OiNlbmRpZiAvKiBDT05GSUdfTFJVX0dFTiAqL1xubW0vdm1zY2FuLmMtODU5LVxuLS1cbm1tL3Ztc2Nhbi5jPTI2MTM9c3RhdGljIGJvb2wgY2FuX2FnZV9hbm9uX3BhZ2VzKHN0cnVjdCBscnV2ZWMgKmxydXZlYyxcbi0tXG5tbS92bXNjYW4uYy0yNjI0LVxubW0vdm1zY2FuLmM6MjYyNTojaWZkZWYgQ09ORklHX0xSVV9HRU5cbm1tL3Ztc2Nhbi5jLTI2MjYtXG5tbS92bXNjYW4uYz0yNjI3PURFRklORV9TVEFUSUNfS0VZX0ZBTFNFKGxydV9zd2l0Y2gpO1xubW0vdm1zY2FuLmM6MjYyODojaWZkZWYgQ09ORklHX0xSVV9HRU5fRU5BQkxFRFxubW0vdm1zY2FuLmMtMjYyOS1ERUZJTkVfU1RBVElDX0tFWV9BUlJBWV9UUlVFKGxydV9nZW5fY2FwcywgTlJfTFJVX0dFTl9DQVBTKTtcbi0tXG5tbS92bXNjYW4uYz0yODA5PXN0YXRpYyB2b2lkIHJlc2V0X2Jsb29tX2ZpbHRlcihzdHJ1Y3QgbHJ1X2dlbl9tbV9zdGF0ZSAqbW1fc3RhdGUsIHVuc2lnbmVkIGxvbmcgc2VxKVxuLS1cbm1tL3Ztc2Nhbi5jLTI4MjgtXG5tbS92bXNjYW4uYzoyODI5OiNpZmRlZiBDT05GSUdfTFJVX0dFTl9XQUxLU19NTVVcbm1tL3Ztc2Nhbi5jLTI4MzAtXG4tLVxubW0vdm1zY2FuLmM9MjkzOD12b2lkIGxydV9nZW5fbWlncmF0ZV9tbShzdHJ1Y3QgbW1fc3RydWN0ICptbSlcbi0tXG5tbS92bXNjYW4uYy0yOTY2LVxubW0vdm1zY2FuLmM6Mjk2NzojZWxzZSAvKiAhQ09ORklHX0xSVV9HRU5fV0FMS1NfTU1VICovXG5tbS92bXNjYW4uYy0yOTY4LVxuLS1cbm1tL3Ztc2Nhbi5jPTU4NTI9bGF0ZV9pbml0Y2FsbChpbml0X2xydV9nZW4pO1xubW0vdm1zY2FuLmMtNTg1My1cbm1tL3Ztc2Nhbi5jOjU4NTQ6I2Vsc2UgLyogIUNPTkZJR19MUlVfR0VOICovXG5tbS92bXNjYW4uYy01ODU1LVxuLS1cbm1tL3Ztc2Nhbi5jPTU4NjY9c3RhdGljIHZvaWQgbHJ1X2dlbl9zaHJpbmtfbm9kZShzdHJ1Y3QgcGdsaXN0X2RhdGEgKnBnZGF0LCBzdHJ1Y3Qgc2Nhbl9jb250cm9sICpzYylcbi0tXG5tbS92bXNjYW4uYy01ODcwLVxubW0vdm1zY2FuLmM6NTg3MTojZW5kaWYgLyogQ09ORklHX0xSVV9HRU4gKi9cbm1tL3Ztc2Nhbi5jLTU4NzItXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTEgMTM6NTY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNjc5MQoJCQkJCQkJb3V0cHV0OiAyOQoJCQkJCQkJdGhvdWdodHM6IDE5MgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIENvZGUmIzM5O3MgRGVwZW5kZW5jZSBhbmQgRnV6emluZyBTdHJhdGVneSoqCgpPa2F5LCBzbyBJJiMzOTt2ZSBwaW5wb2ludGVkIGByZXNldF9iYXRjaF9zaXplYC4gTG9va2luZyBhdCB0aGUgY29kZSwgaXQmIzM5O3MgZGVmaW5lZCBhcm91bmQgbGluZSAzMjY1LCB3aGljaCBpcyBmaXJtbHkgd2l0aGluIHRoZSBjb25kaXRpb25hbCBibG9jayB0aWVkIHRvIGAjaWZkZWYgQ09ORklHX0xSVV9HRU5gLiBFeGNlbGxlbnQsIHRoYXQgbWVhbnMgYENPTkZJR19MUlVfR0VOYCBpcyBkZWZpbml0ZWx5IGEgcHJlcmVxdWlzaXRlIGZvciB0aGlzIGZ1bmN0aW9uYWxpdHkgdG8gZXZlbiBleGlzdC4gQW5kLCBzaW5jZSBJIHdhbnQgdG8gdGVzdCB0aGUgbmV3IGxvZ2ljIHdpdGhpbiBgbHJ1dmVjX2xpdmVfbG9ja19pcnFgLCBJJiMzOTtsbCBuZWVkIHRvIG1ha2Ugc3VyZSBgQ09ORklHX01FTUNHYCBpcyBlbmFibGVkIHRvby4KCk5vdywgbGV0JiMzOTtzIHRoaW5rIGFib3V0IGZ1enppbmcgdGFyZ2V0cy4gYGxydXZlY19saXZlX2xvY2tfaXJxYCBpdHNlbGYgaXMgaW5saW5lIGluIGEgaGVhZGVyLCBzbyB0aGF0JiMzOTtzIG5vdCBkaXJlY3RseSBmdXp6YWJsZS4gQnV0LCBpdCYjMzk7cyB1c2VkIHdpdGhpbiBgcmVzZXRfYmF0Y2hfc2l6ZWAsIHdoaWNoIGlzIHN0YXRpYy4gYHJlc2V0X2JhdGNoX3NpemVgLCBpbiB0dXJuLCBpcyBjYWxsZWQgYnkgYHdhbGtfbW1gIGFuZCBgZXZpY3RfZm9saW9zYC4gVGhvc2UgYXJlIHRoZSBlbnRyeSBwb2ludHMgdG8gY29uY2VudHJhdGUgb24uIEkmIzM5O2xsIG5lZWQgdG8gYW5hbHl6ZSBgd2Fsa19tbWAgYW5kIGBldmljdF9mb2xpb3NgIHRvIHVuZGVyc3RhbmQgaG93IHRoZXkgdXNlIGByZXNldF9iYXRjaF9zaXplYCBhbmQgaW5kaXJlY3RseSBgbHJ1dmVjX2xpdmVfbG9ja19pcnFgLiBGcm9tIHRoZXJlIEkmIzM5O2xsIGNvbnN0cnVjdCBhIGZvY3VzZWQgZnV6emluZyBjYW1wYWlnbiB0YXJnZXRpbmcgdGhlbS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTEgMTM6NTY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7d2Fsa19tbSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O21tL3Ztc2Nhbi5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O21tL3Ztc2Nhbi5jPTI2MzI9REVGSU5FX1NUQVRJQ19LRVlfQVJSQVlfRkFMU0UobHJ1X2dlbl9jYXBzLCBOUl9MUlVfR0VOX0NBUFMpO1xuLS1cbm1tL3Ztc2Nhbi5jLTI2MzUtXG5tbS92bXNjYW4uYzoyNjM2OnN0YXRpYyBib29sIHNob3VsZF93YWxrX21tdSh2b2lkKVxubW0vdm1zY2FuLmMtMjYzNy17XG4tLVxubW0vdm1zY2FuLmM9MzcxND1zdGF0aWMgaW50IHdhbGtfcHVkX3JhbmdlKHA0ZF90ICpwNGQsIHVuc2lnbmVkIGxvbmcgc3RhcnQsIHVuc2lnbmVkIGxvbmcgZW5kLFxuLS1cbm1tL3Ztc2Nhbi5jLTM3NTUtXG5tbS92bXNjYW4uYzozNzU2OnN0YXRpYyB2b2lkIHdhbGtfbW0oc3RydWN0IG1tX3N0cnVjdCAqbW0sIHN0cnVjdCBscnVfZ2VuX21tX3dhbGsgKndhbGspXG5tbS92bXNjYW4uYy0zNzU3LXtcbi0tXG5tbS92bXNjYW4uYz0zOTk0PXN0YXRpYyBib29sIHRyeV90b19pbmNfbWF4X3NlcShzdHJ1Y3QgbHJ1dmVjICpscnV2ZWMsIHVuc2lnbmVkIGxvbmcgc2VxLFxuLS1cbm1tL3Ztc2Nhbi5jLTQwMTctXHQgKi9cbm1tL3Ztc2Nhbi5jOjQwMTg6XHRpZiAoIXNob3VsZF93YWxrX21tdSgpKSB7XG5tbS92bXNjYW4uYy00MDE5LVx0XHRzdWNjZXNzID0gaXRlcmF0ZV9tbV9saXN0X25vd2FsayhscnV2ZWMsIHNlcSk7XG4tLVxubW0vdm1zY2FuLmMtNDAzNi1cdFx0aWYgKG1tKVxubW0vdm1zY2FuLmM6NDAzNzpcdFx0XHR3YWxrX21tKG1tLCB3YWxrKTtcbm1tL3Ztc2Nhbi5jLTQwMzgtXHR9IHdoaWxlIChtbSk7XG4tLVxubW0vdm1zY2FuLmM9NTM0Mz1zdGF0aWMgc3NpemVfdCBlbmFibGVkX3Nob3coc3RydWN0IGtvYmplY3QgKmtvYmosIHN0cnVjdCBrb2JqX2F0dHJpYnV0ZSAqYXR0ciwgY2hhciAqYnVmKVxuLS1cbm1tL3Ztc2Nhbi5jLTUzNDktXG5tbS92bXNjYW4uYzo1MzUwOlx0aWYgKHNob3VsZF93YWxrX21tdSgpKVxubW0vdm1zY2FuLmMtNTM1MS1cdFx0Y2FwcyB8PSBCSVQoTFJVX0dFTl9NTV9XQUxLKTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTEgMTM6NTY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNzc4MwoJCQkJCQkJb3V0cHV0OiAzMAoJCQkJCQkJdGhvdWdodHM6IDMxCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IGFuYWx5c2lzIG9mIHRoZSBwcm92aWRlZCBjb2RlIHNuaXBwZXQ6CgoqKlN0YXRpYyBGdW5jdGlvbiBBbmFseXNpcyoqCgpPa2F5LCBzbyBgd2Fsa19tbWAgaXMgZGVjbGFyZWQgYXMgc3RhdGljLCBhbmQgYGV2aWN0X2ZvbGlvc2AgaXMgdG9vLiBUaGF0IG1ha2VzIG1lIGltbWVkaWF0ZWx5IGN1cmlvdXMgYWJvdXQgdGhlIGNhbGwgZ3JhcGggZm9yIGBldmljdF9mb2xpb3NgLCBnaXZlbiB0aGF0IHRoZXNlIHN0YXRpYyBmdW5jdGlvbnMgYXJlIG5vdCB2aXNpYmxlIG91dHNpZGUgdGhlaXIgY29tcGlsYXRpb24gdW5pdC4gSXQmIzM5O3MgYSBrZXkgcGllY2Ugb2YgaW5mb3JtYXRpb24gd2hlbiBkZWFsaW5nIHdpdGggbWVtb3J5IG1hbmFnZW1lbnQgYXQgdGhpcyBsZXZlbC4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGludGVyYWN0aW9ucyB3aXRoaW4gdGhpcyBzcGVjaWZpYyBtb2R1bGUgdG8gcHJvcGVybHkgZ3JvayB0aGUgc3lzdGVtJiMzOTtzIGV2aWN0aW9uIHN0cmF0ZWd5LiBMZXQgbWUgdHJhY2UgdGhlIHVzZXMgYW5kIGZpbmQgb3V0IHdobyB1c2VzIGBldmljdF9mb2xpb3NgLiBVbmRlcnN0YW5kaW5nIHdoZXJlIGFuZCBob3cgYGV2aWN0X2ZvbGlvc2AgaXMgYmVpbmcgdXNlZCBpcyBnb2luZyB0byBiZSBjZW50cmFsIHRvIGRldGVybWluaW5nIGl0cyBwdXJwb3NlIGFuZCBpbXBhY3Qgb24gdGhlIG92ZXJhbGwgbWVtb3J5IG1hbmFnZW1lbnQgc3RyYXRlZ3kuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzExIDEzOjU2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2V2aWN0X2ZvbGlvcyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O21tL3Ztc2Nhbi5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O21tL3Ztc2Nhbi5jPTQ3Njc9c3RhdGljIGludCBpc29sYXRlX2ZvbGlvcyh1bnNpZ25lZCBsb25nIG5yX3RvX3NjYW4sIHN0cnVjdCBscnV2ZWMgKmxydXZlYyxcbi0tXG5tbS92bXNjYW4uYy00ODAwLVxubW0vdm1zY2FuLmM6NDgwMTpzdGF0aWMgaW50IGV2aWN0X2ZvbGlvcyh1bnNpZ25lZCBsb25nIG5yX3RvX3NjYW4sIHN0cnVjdCBscnV2ZWMgKmxydXZlYyxcbm1tL3Ztc2Nhbi5jLTQ4MDItXHRcdFx0c3RydWN0IHNjYW5fY29udHJvbCAqc2MsIGludCBzd2FwcGluZXNzKVxuLS1cbm1tL3Ztc2Nhbi5jPTQ5NTY9c3RhdGljIGJvb2wgdHJ5X3RvX3Nocmlua19scnV2ZWMoc3RydWN0IGxydXZlYyAqbHJ1dmVjLCBzdHJ1Y3Qgc2Nhbl9jb250cm9sICpzYylcbi0tXG5tbS92bXNjYW4uYy00OTc5LVx0XHRucl9iYXRjaCA9IG1pbihucl90b19zY2FuLCBNSU5fTFJVX0JBVENIKTtcbm1tL3Ztc2Nhbi5jOjQ5ODA6XHRcdGRlbHRhID0gZXZpY3RfZm9saW9zKG5yX2JhdGNoLCBscnV2ZWMsIHNjLCBzd2FwcGluZXNzKTtcbm1tL3Ztc2Nhbi5jLTQ5ODEtXHRcdGlmICghZGVsdGEpXG4tLVxubW0vdm1zY2FuLmM9NTU4Mz1zdGF0aWMgaW50IHJ1bl9ldmljdGlvbihzdHJ1Y3QgbHJ1dmVjICpscnV2ZWMsIHVuc2lnbmVkIGxvbmcgc2VxLCBzdHJ1Y3Qgc2Nhbl9jb250cm9sICpzYyxcbi0tXG5tbS92bXNjYW4uYy01NjAzLVx0XHRucl9iYXRjaCA9IG1pbihucl90b19yZWNsYWltIC0gc2MtXHUwMDNlbnJfcmVjbGFpbWVkLCBNQVhfTFJVX0JBVENIKTtcbm1tL3Ztc2Nhbi5jOjU2MDQ6XHRcdGlmICghZXZpY3RfZm9saW9zKG5yX2JhdGNoLCBscnV2ZWMsIHNjLCBzd2FwcGluZXNzKSlcbm1tL3Ztc2Nhbi5jLTU2MDUtXHRcdFx0cmV0dXJuIDA7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzExIDEzOjU2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDgzOTUKCQkJCQkJCW91dHB1dDogMzUKCQkJCQkJCXRob3VnaHRzOiA1MAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB0aG91Z2h0IHByb2Nlc3MsIGFzIGlmIEkgd2VyZSBhbmFseXppbmcgdGhpcyBjb2RlOgoKKipBbmFseXppbmcgdGhlIEV2aWN0aW9uIFBhdGggaW4gdGhlIExSVSBWZWN0b3IqKgoKT2theSwgc28gSSBzZWUgdGhhdCBgZXZpY3RfZm9saW9zYCBpcyBiZWluZyBjYWxsZWQgZnJvbSBib3RoIGB0cnlfdG9fc2hyaW5rX2xydXZlY2AgYW5kIGBydW5fZXZpY3Rpb25gLiBUaGF0JiMzOTtzIGEgcHJldHR5IGNsZWFyIGluZGljYXRpb24gdGhhdCBpdCYjMzk7cyB0aGUgY29yZSBmdW5jdGlvbiBmb3IgYWN0dWFsbHkgcmVtb3ZpbmcgZm9saW9zLCB3aGljaCBtYWtlcyBzZW5zZSBnaXZlbiB0aGUgbmFtZXMuIE5vdywgSSB3YW50IHRvIHRyYWNlIHRoZSBjYWxsIGdyYXBoIGZ1cnRoZXIgdXBzdHJlYW0uIE15IGZvY3VzIGlzIHVuZGVyc3RhbmRpbmcgdGhlIHRyaWdnZXJzIGZvciBmb2xpbyBldmljdGlvbi4gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgd2hlcmUgYHRyeV90b19zaHJpbmtfbHJ1dmVjYCBhbmQgYHJ1bl9ldmljdGlvbmAgYXJlIGJlaW5nICpjYWxsZWQqIGZyb20uIFRoYXQmIzM5O3MgdGhlIGNydWNpYWwgbGluayDigJMgdGhvc2UgYXJlIHRoZSBwb2ludHMgaW4gdGhlIHN5c3RlbSB0aGF0IGFyZSBpbml0aWF0aW5nIHRoZSBldmljdGlvbiBwcm9jZXNzIGJhc2VkIG9uIHdoYXRldmVyIGNvbmRpdGlvbnMgYXJlIGluIHBsYXkuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRob3NlIGNvbmRpdGlvbnMgdG8gZ3Jhc3AgdGhlIG92ZXJhbGwgZXZpY3Rpb24gcG9saWN5LiBBcmUgd2UgZGVhbGluZyB3aXRoIG1lbW9yeSBwcmVzc3VyZSwgYWdpbmcgb2YgZW50cmllcywgb3Igc29tZXRoaW5nIGVsc2UgZW50aXJlbHk/IFRpbWUgdG8gZGlnIGRlZXBlciBhbmQgZmluZCBvdXQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzExIDEzOjU2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3RyeV90b19zaHJpbmtfbHJ1dmVjJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bW0vdm1zY2FuLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bW0vdm1zY2FuLmM9NDkyND1zdGF0aWMgYm9vbCBzaG91bGRfYWJvcnRfc2NhbihzdHJ1Y3QgbHJ1dmVjICpscnV2ZWMsIHN0cnVjdCBzY2FuX2NvbnRyb2wgKnNjKVxuLS1cbm1tL3Ztc2Nhbi5jLTQ5NTUtICovXG5tbS92bXNjYW4uYzo0OTU2OnN0YXRpYyBib29sIHRyeV90b19zaHJpbmtfbHJ1dmVjKHN0cnVjdCBscnV2ZWMgKmxydXZlYywgc3RydWN0IHNjYW5fY29udHJvbCAqc2MpXG5tbS92bXNjYW4uYy00OTU3LXtcbi0tXG5tbS92bXNjYW4uYz01MDAxPXN0YXRpYyBpbnQgc2hyaW5rX29uZShzdHJ1Y3QgbHJ1dmVjICpscnV2ZWMsIHN0cnVjdCBzY2FuX2NvbnRyb2wgKnNjKVxuLS1cbm1tL3Ztc2Nhbi5jLTUwMjAtXG5tbS92bXNjYW4uYzo1MDIxOlx0bmVlZF9yb3RhdGUgPSB0cnlfdG9fc2hyaW5rX2xydXZlYyhscnV2ZWMsIHNjKTtcbm1tL3Ztc2Nhbi5jLTUwMjItXG4tLVxubW0vdm1zY2FuLmM9NTExMj1zdGF0aWMgdm9pZCBscnVfZ2VuX3Nocmlua19scnV2ZWMoc3RydWN0IGxydXZlYyAqbHJ1dmVjLCBzdHJ1Y3Qgc2Nhbl9jb250cm9sICpzYylcbi0tXG5tbS92bXNjYW4uYy01MTI0LVxubW0vdm1zY2FuLmM6NTEyNTpcdGlmICh0cnlfdG9fc2hyaW5rX2xydXZlYyhscnV2ZWMsIHNjKSlcbm1tL3Ztc2Nhbi5jLTUxMjYtXHRcdGxydV9nZW5fcm90YXRlX21lbWNnKGxydXZlYywgTUVNQ0dfTFJVX1lPVU5HKTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTEgMTM6NTY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogOTAzNgoJCQkJCQkJb3V0cHV0OiAzNgoJCQkJCQkJdGhvdWdodHM6IDE3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHN1bW1hcnksIHByZXNlbnRlZCBhcyBhIHN0cmVhbSBvZiB0aG91Z2h0OgoKKipFdmFsdWF0aW5nIGBscnVfZ2VuX3Nocmlua19scnV2ZWNgIGFzIGEgU29sdXRpb24qKgoKQWxyaWdodCwgbGV0JiMzOTtzIHNlZS4uLiBsb29raW5nIGF0IHRoaXMsIGBscnVfZ2VuX3Nocmlua19scnV2ZWNgIHNlZW1zIGxpa2UgYSBzdHJvbmcgY29udGVuZGVyIGhlcmUuIEl0JiMzOTtzIGdvdCB0aGUgcmlnaHQgZmVlbCwgYmFzZWQgb24gd2hhdCBJJiMzOTt2ZSBiZWVuIGNvbnNpZGVyaW5nLiBJIG5lZWQgdG8gZGlnIGludG8gdGhlIGRldGFpbHMsIGJ1dCBteSBpbml0aWFsIGFzc2Vzc21lbnQgaXMgcHJvbWlzaW5nLiBJJiMzOTtsbCBuZWVkIHRvIGV4cGxvcmUgaXRzIG1lY2hhbmljcyB0byBtYWtlIHN1cmUgaXQgYWxpZ25zIHByZWNpc2VseSB3aXRoIHRoZSBvcHRpbWl6YXRpb24gb2JqZWN0aXZlcywgYW5kIG9mIGNvdXJzZSwgZW5zdXJlIHRoZXJlIGFyZSBubyB1bmZvcmVzZWVuIGNvbXBsaWNhdGlvbnMgd2l0aCB0aGUgZXhpc3Rpbmcgc3lzdGVtLiBUaGUgcG90ZW50aWFsIGZvciB0aGUgb3ZlcmFsbCBnb2FscyBzZWVtcyBoaWdoIHdpdGggdGhpcyBhcHByb2FjaC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTEgMTM6NTY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bHJ1X2dlbl9zaHJpbmtfbHJ1dmVjJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bW0vdm1zY2FuLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bW0vdm1zY2FuLmM9NTA0Mj1zdGF0aWMgdm9pZCBzaHJpbmtfbWFueShzdHJ1Y3QgcGdsaXN0X2RhdGEgKnBnZGF0LCBzdHJ1Y3Qgc2Nhbl9jb250cm9sICpzYylcbi0tXG5tbS92bXNjYW4uYy01MTExLVxubW0vdm1zY2FuLmM6NTExMjpzdGF0aWMgdm9pZCBscnVfZ2VuX3Nocmlua19scnV2ZWMoc3RydWN0IGxydXZlYyAqbHJ1dmVjLCBzdHJ1Y3Qgc2Nhbl9jb250cm9sICpzYylcbm1tL3Ztc2Nhbi5jLTUxMTMte1xuLS1cbm1tL3Ztc2Nhbi5jPTU4NTY9c3RhdGljIHZvaWQgbHJ1X2dlbl9hZ2Vfbm9kZShzdHJ1Y3QgcGdsaXN0X2RhdGEgKnBnZGF0LCBzdHJ1Y3Qgc2Nhbl9jb250cm9sICpzYylcbi0tXG5tbS92bXNjYW4uYy01ODYwLVxubW0vdm1zY2FuLmM6NTg2MTpzdGF0aWMgdm9pZCBscnVfZ2VuX3Nocmlua19scnV2ZWMoc3RydWN0IGxydXZlYyAqbHJ1dmVjLCBzdHJ1Y3Qgc2Nhbl9jb250cm9sICpzYylcbm1tL3Ztc2Nhbi5jLTU4NjIte1xuLS1cbm1tL3Ztc2Nhbi5jPTU4NzM9c3RhdGljIHZvaWQgc2hyaW5rX2xydXZlYyhzdHJ1Y3QgbHJ1dmVjICpscnV2ZWMsIHN0cnVjdCBzY2FuX2NvbnRyb2wgKnNjKVxuLS1cbm1tL3Ztc2Nhbi5jLTU4ODQtXHRpZiAoKGxydV9nZW5fZW5hYmxlZCgpIHx8IGxydV9nZW5fc3dpdGNoaW5nKCkpIFx1MDAyNlx1MDAyNiAhcm9vdF9yZWNsYWltKHNjKSkge1xubW0vdm1zY2FuLmM6NTg4NTpcdFx0bHJ1X2dlbl9zaHJpbmtfbHJ1dmVjKGxydXZlYywgc2MpO1xubW0vdm1zY2FuLmMtNTg4Ni1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNy8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTEgMTM6NTY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogOTU4OAoJCQkJCQkJb3V0cHV0OiAzMAoJCQkJCQkJdGhvdWdodHM6IDQ1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBteSBvd246CgoqKkFuYWx5emluZyBQb3RlbnRpYWwgQm90dGxlbmVja3MgaW4gdGhlIEV2aWN0aW9uIFByb2Nlc3MqKgoKUmlnaHQsIHNvIHdlJiMzOTtyZSBsb29raW5nIGF0IG9wdGltaXppbmcgdGhlIGV2aWN0aW9uIHByb2Nlc3MuIE15IGltbWVkaWF0ZSB0aG91Z2h0IGlzIHRoYXQgYHNocmlua19scnV2ZWNgICpjb3VsZCogYmUgYSBkZWNlbnQgcGxhY2UgdG8gc3RhcnQsIGJ1dCBJIG5lZWQgdG8gYmUgY2F1dGlvdXMuIEl0JiMzOTtzIGFsbW9zdCBjZXJ0YWlubHkgb24gdGhlIGhvdCBwYXRoLCBhbmQgd2UmIzM5O2xsIHdhbnQgdG8gYmUgY2FyZWZ1bCBhYm91dCBtYWtpbmcgYW55IGNoYW5nZXMgdGhlcmUuIEFueSBwZXJmb3JtYW5jZSBpbXByb3ZlbWVudHMgd2UgZ2FpbiBtaWdodCBiZSBlYXNpbHkgb2Zmc2V0IGJ5IGluY3JlYXNlZCBjb21wbGV4aXR5IG9yIHN1YnRsZSByZWdyZXNzaW9ucy4gTGV0JiMzOTtzIG5vdCBqdW1wIHRvIGNvbmNsdXNpb25zIGFib3V0IHRoYXQgb25lIGp1c3QgeWV0LgoKSW5zdGVhZCwgSSYjMzk7bGwgc2hpZnQgZm9jdXMgYW5kIHByaW9yaXRpemUgYSBkZWVwIGRpdmUgaW50byBgcnVuX2V2aWN0aW9uYCBhbmQgYHRyeV90b19pbmNfbWF4X3NlcWAuIFRob3NlIHNlZW0gbGlrZSBtb3JlIHByb21pc2luZyBhcmVhcyB0byBpbnZlc3RpZ2F0ZSBmb3IgcG90ZW50aWFsIGluZWZmaWNpZW5jaWVzLiBXZSBuZWVkIHRvIHVuZGVyc3RhbmQgaG93IHRoZSBldmljdGlvbiBwcm9jZXNzIGlzIHRyaWdnZXJlZCBhbmQgd2hhdCB0aGUgY3JpdGljYWwgbG9ja2luZyBhbmQgZGF0YSBhY2Nlc3MgcGF0dGVybnMgYXJlIHdpdGhpbiB0aG9zZSBmdW5jdGlvbnMuIEEgY2FyZWZ1bCBwcm9maWxpbmcgYW5kIGFuYWx5c2lzIG9mIHRob3NlIGZ1bmN0aW9ucyBzaG91bGQgcmV2ZWFsIHdoZXRoZXIgd2UgY2FuIHNxdWVlemUgb3V0IHNvbWUgbW9yZSBwZXJmb3JtYW5jZSBnYWlucywgYW5kIHdoaWNoIG9mIHRob3NlIGZ1bmN0aW9ucyBhcmUgb24gdGhlIGNyaXRpY2FsIHBhdGguCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzExIDEzOjU2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3J1bl9ldmljdGlvbiYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O21tL3Ztc2Nhbi5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O21tL3Ztc2Nhbi5jPTU1NzI9c3RhdGljIGludCBydW5fYWdpbmcoc3RydWN0IGxydXZlYyAqbHJ1dmVjLCB1bnNpZ25lZCBsb25nIHNlcSxcbi0tXG5tbS92bXNjYW4uYy01NTgyLVxubW0vdm1zY2FuLmM6NTU4MzpzdGF0aWMgaW50IHJ1bl9ldmljdGlvbihzdHJ1Y3QgbHJ1dmVjICpscnV2ZWMsIHVuc2lnbmVkIGxvbmcgc2VxLCBzdHJ1Y3Qgc2Nhbl9jb250cm9sICpzYyxcbm1tL3Ztc2Nhbi5jLTU1ODQtXHRcdFx0aW50IHN3YXBwaW5lc3MsIHVuc2lnbmVkIGxvbmcgbnJfdG9fcmVjbGFpbSlcbi0tXG5tbS92bXNjYW4uYz01NjEzPXN0YXRpYyBpbnQgcnVuX2NtZChjaGFyIGNtZCwgdTY0IG1lbWNnX2lkLCBpbnQgbmlkLCB1bnNpZ25lZCBsb25nIHNlcSxcbi0tXG5tbS92bXNjYW4uYy01NjQ0LVx0Y2FzZSAmIzM5Oy0mIzM5Ozpcbm1tL3Ztc2Nhbi5jOjU2NDU6XHRcdGVyciA9IHJ1bl9ldmljdGlvbihscnV2ZWMsIHNlcSwgc2MsIHN3YXBwaW5lc3MsIG9wdCk7XG5tbS92bXNjYW4uYy01NjQ2LVx0XHRicmVhaztcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTEgMTM6NTY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTAxMjMKCQkJCQkJCW91dHB1dDogMzEKCQkJCQkJCXRob3VnaHRzOiA5NQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB1bmRlcnN0YW5kaW5nIG9mIHRoZSBleGVjdXRpb24gcGF0aCwgbGFpZCBvdXQgbG9naWNhbGx5OgoKKipUcmFjaW5nIHRoZSBTZXF1ZW5jZTogQSBGbG93IG9mIE9wZXJhdGlvbnMqKgoKT2theSwgc28gSSYjMzk7bSBkaWdnaW5nIGludG8gaG93IHRoaXMgc2VxdWVuY2UgZ2VuZXJhdGlvbiB3b3Jrcy4gSXQgYXBwZWFycyBgcnVuX2NtZGAgaXMgaW5pdGlhdGVkIGZyb20gYGxydV9nZW5fc2VxX3dyaXRlYCwgd2hpY2ggaXMgYSBkZWJ1Z2ZzIG9yIHN5c2ZzIGludGVyZmFjZSDigJMgdGhhdCYjMzk7cyB0aGUgZW50cnkgcG9pbnQgZnJvbSB1c2Vyc3BhY2UgaW50ZXJhY3Rpb24uIEhvd2V2ZXIsIEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoYXQgdHJpZ2dlcnMgdGhlIGV4ZWN1dGlvbiBvZiBgcmVzZXRfYmF0Y2hfc2l6ZWAuIEFoYSwgYHJlc2V0X2JhdGNoX3NpemVgIGlzIGRpcmVjdGx5IGNhbGxlZCBmcm9tIHR3byBwbGFjZXM6IGB3YWxrX21tYCBhbmQgYGV2aWN0X2ZvbGlvc2AuICBOb3csIGB3YWxrX21tYCBpdHNlbGYgZ2V0cyBjYWxsZWQgYnkgYHRyeV90b19pbmNfbWF4X3NlcWAuIEZ1cnRoZXIgZG93biB0aGUgY2FsbCBzdGFjaywgYHRyeV90b19pbmNfbWF4X3NlcWAgaXMgdWx0aW1hdGVseSBpbnZva2VkIGJ5IGBpbmNfbWF4X3NlcWAuIFNvIHRoZSBrZXkgc2VlbXMgdG8gYmUgYGluY19tYXhfc2VxYCwgYXMgdGhhdCBpcyBhdCB0aGUgcm9vdCBvZiB0aGUgc2VxdWVuY2UuIEkgbmVlZCB0byBsb29rIGF0IHdoYXQgYGluY19tYXhfc2VxYCBkb2VzIGFuZCBnbyBmcm9tIHRoZXJlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMSAxMzo1NjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtpbmNfbWF4X3NlcSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O21tL3Ztc2Nhbi5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O21tL3Ztc2Nhbi5jPTM3NTY9c3RhdGljIHZvaWQgd2Fsa19tbShzdHJ1Y3QgbW1fc3RydWN0ICptbSwgc3RydWN0IGxydV9nZW5fbW1fd2FsayAqd2Fsaylcbi0tXG5tbS92bXNjYW4uYy0zNzcyLVxubW0vdm1zY2FuLmM6Mzc3MzpcdFx0LyogYW5vdGhlciB0aHJlYWQgbWlnaHQgaGF2ZSBjYWxsZWQgaW5jX21heF9zZXEoKSAqL1xubW0vdm1zY2FuLmMtMzc3NC1cdFx0aWYgKHdhbGstXHUwMDNlc2VxICE9IG1heF9zZXEpXG4tLVxubW0vdm1zY2FuLmM9Mzg3Nz1zdGF0aWMgdm9pZCB0cnlfdG9faW5jX21pbl9zZXEoc3RydWN0IGxydXZlYyAqbHJ1dmVjLCBpbnQgc3dhcHBpbmVzcylcbi0tXG5tbS92bXNjYW4uYy0zOTI4LVxubW0vdm1zY2FuLmM6MzkyOTpzdGF0aWMgYm9vbCBpbmNfbWF4X3NlcShzdHJ1Y3QgbHJ1dmVjICpscnV2ZWMsIHVuc2lnbmVkIGxvbmcgc2VxLCBpbnQgc3dhcHBpbmVzcylcbm1tL3Ztc2Nhbi5jLTM5MzAte1xuLS1cbm1tL3Ztc2Nhbi5jLTM5OTMtXG5tbS92bXNjYW4uYzozOTk0OnN0YXRpYyBib29sIHRyeV90b19pbmNfbWF4X3NlcShzdHJ1Y3QgbHJ1dmVjICpscnV2ZWMsIHVuc2lnbmVkIGxvbmcgc2VxLFxubW0vdm1zY2FuLmMtMzk5NS1cdFx0XHQgICAgICAgaW50IHN3YXBwaW5lc3MsIGJvb2wgZm9yY2Vfc2Nhbilcbi0tXG5tbS92bXNjYW4uYy00MDA1LVx0aWYgKCFtbV9zdGF0ZSlcbm1tL3Ztc2Nhbi5jOjQwMDY6XHRcdHJldHVybiBpbmNfbWF4X3NlcShscnV2ZWMsIHNlcSwgc3dhcHBpbmVzcyk7XG5tbS92bXNjYW4uYy00MDA3LVxuLS1cbm1tL3Ztc2Nhbi5jLTQwNDAtXHRpZiAoc3VjY2Vzcykge1xubW0vdm1zY2FuLmM6NDA0MTpcdFx0c3VjY2VzcyA9IGluY19tYXhfc2VxKGxydXZlYywgc2VxLCBzd2FwcGluZXNzKTtcbm1tL3Ztc2Nhbi5jLTQwNDItXHRcdFdBUk5fT05fT05DRSghc3VjY2Vzcyk7XG4tLVxubW0vdm1zY2FuLmM9NDQyNT1ib29sIHJlY2hlY2tfbHJ1X2dlbl9tYXhfbWVtY2coc3RydWN0IG1lbV9jZ3JvdXAgKm1lbWNnLCBpbnQgbmlkKVxuLS1cbm1tL3Ztc2Nhbi5jLTQ0MzctXG5tbS92bXNjYW4uYzo0NDM4OnN0YXRpYyB2b2lkIHRyeV90b19pbmNfbWF4X3NlcV9ub3dhbGsoc3RydWN0IG1lbV9jZ3JvdXAgKm1lbWNnLFxubW0vdm1zY2FuLmMtNDQzOS1cdFx0XHRcdCAgICAgIHN0cnVjdCBscnV2ZWMgKmxydXZlYylcbi0tXG5tbS92bXNjYW4uYy00NDYzLVx0aWYgKHN1Y2Nlc3MpXG5tbS92bXNjYW4uYzo0NDY0Olx0XHRpbmNfbWF4X3NlcShscnV2ZWMsIG1heF9zZXEsIHN3YXBwaW5lc3MpO1xubW0vdm1zY2FuLmMtNDQ2NS19XG4tLVxubW0vdm1zY2FuLmM9NDQ3Mj12b2lkIG1heF9scnVfZ2VuX21lbWNnKHN0cnVjdCBtZW1fY2dyb3VwICptZW1jZywgaW50IG5pZClcbi0tXG5tbS92bXNjYW4uYy00NDc4LVx0XHR3aGlsZSAoZ2V0X25yX2dlbnMobHJ1dmVjLCB0eXBlKSBcdTAwM2MgTUFYX05SX0dFTlMpIHtcbm1tL3Ztc2Nhbi5jOjQ0Nzk6XHRcdFx0dHJ5X3RvX2luY19tYXhfc2VxX25vd2FsayhtZW1jZywgbHJ1dmVjKTtcbm1tL3Ztc2Nhbi5jLTQ0ODAtXHRcdFx0Y29uZF9yZXNjaGVkKCk7XG4tLVxubW0vdm1zY2FuLmM9NDkyND1zdGF0aWMgYm9vbCBzaG91bGRfYWJvcnRfc2NhbihzdHJ1Y3QgbHJ1dmVjICpscnV2ZWMsIHN0cnVjdCBzY2FuX2NvbnRyb2wgKnNjKVxuLS1cbm1tL3Ztc2Nhbi5jLTQ5NTItICogRm9yIGZ1dHVyZSBvcHRpbWl6YXRpb25zOlxubW0vdm1zY2FuLmM6NDk1MzogKiAxLiBEZWZlciB0cnlfdG9faW5jX21heF9zZXEoKSB0byB3b3JrcXVldWVzIHRvIHJlZHVjZSBsYXRlbmN5IGZvciBtZW1jZ1xubW0vdm1zY2FuLmMtNDk1NC0gKiAgICByZWNsYWltLlxuLS1cbm1tL3Ztc2Nhbi5jPTQ5NTY9c3RhdGljIGJvb2wgdHJ5X3RvX3Nocmlua19scnV2ZWMoc3RydWN0IGxydXZlYyAqbHJ1dmVjLCBzdHJ1Y3Qgc2Nhbl9jb250cm9sICpzYylcbi0tXG5tbS92bXNjYW4uYy00OTczLVx0XHRpZiAoc2hvdWxkX3J1bl9hZ2luZyhscnV2ZWMsIG1heF9zZXEsIHNjLCBzd2FwcGluZXNzKSkge1xubW0vdm1zY2FuLmM6NDk3NDpcdFx0XHRpZiAodHJ5X3RvX2luY19tYXhfc2VxKGxydXZlYywgbWF4X3NlcSwgc3dhcHBpbmVzcywgZmFsc2UpKVxubW0vdm1zY2FuLmMtNDk3NS1cdFx0XHRcdG5lZWRfcm90YXRlID0gdHJ1ZTtcbi0tXG5tbS92bXNjYW4uYz01NTcyPXN0YXRpYyBpbnQgcnVuX2FnaW5nKHN0cnVjdCBscnV2ZWMgKmxydXZlYywgdW5zaWduZWQgbG9uZyBzZXEsXG4tLVxubW0vdm1zY2FuLmMtNTU3OS1cbm1tL3Ztc2Nhbi5jOjU1ODA6XHRyZXR1cm4gdHJ5X3RvX2luY19tYXhfc2VxKGxydXZlYywgbWF4X3NlcSwgc3dhcHBpbmVzcywgZm9yY2Vfc2NhbikgPyAwIDogLUVFWElTVDtcbm1tL3Ztc2Nhbi5jLTU1ODEtfVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIxLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMSAxMzo1NjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMTU5NQoJCQkJCQkJb3V0cHV0OiAzMAoJCQkJCQkJdGhvdWdodHM6IDQwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBteSBvd246CgoqKlByaW9yaXRpemluZyBPcHRpbWl6YXRpb24gRWZmb3J0cyoqCgpSaWdodCwgbGV0JiMzOTtzIHplcm8gaW4uIFRoaW5raW5nIGFib3V0IGltcHJvdmluZyBvdmVyYWxsIHBlcmZvcm1hbmNlLCB0aGUgYHRyeV90b19pbmNfbWF4X3NlcWAgZnVuY3Rpb24gaXMgZGVmaW5pdGVseSBhIGtleSBhcmVhIHRvIGNvbmNlbnRyYXRlIG9uLiBJdCYjMzk7cyBsaWtlbHkgYSBib3R0bGVuZWNrIHRoYXQgY291bGQgeWllbGQgc2lnbmlmaWNhbnQgZ2FpbnMgaWYgb3B0aW1pemVkIGNvcnJlY3RseS4KCkFuZCwgb2YgY291cnNlLCBgZXZpY3RfZm9saW9zYC4gSSBrZWVwIGNvbWluZyBiYWNrIHRvIHRoYXQgb25lLiBNZW1vcnkgbWFuYWdlbWVudCBpcyBhbHdheXMgY3JpdGljYWwsIGFuZCB0aGlzIGZ1bmN0aW9uIGlzIGF0IHRoZSBoZWFydCBvZiB0aGF0LiBMZXQgbWUgcmUtZXhhbWluZSBgZXZpY3RfZm9saW9zYC4gUHJvYmFibHkgd29ydGggYW5vdGhlciBkZWVwIGRpdmUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzExIDEzOjU2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2V2aWN0X2ZvbGlvcyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O21tL3Ztc2Nhbi5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O21tL3Ztc2Nhbi5jPTQ3Njc9c3RhdGljIGludCBpc29sYXRlX2ZvbGlvcyh1bnNpZ25lZCBsb25nIG5yX3RvX3NjYW4sIHN0cnVjdCBscnV2ZWMgKmxydXZlYyxcbi0tXG5tbS92bXNjYW4uYy00ODAwLVxubW0vdm1zY2FuLmM6NDgwMTpzdGF0aWMgaW50IGV2aWN0X2ZvbGlvcyh1bnNpZ25lZCBsb25nIG5yX3RvX3NjYW4sIHN0cnVjdCBscnV2ZWMgKmxydXZlYyxcbm1tL3Ztc2Nhbi5jLTQ4MDItXHRcdFx0c3RydWN0IHNjYW5fY29udHJvbCAqc2MsIGludCBzd2FwcGluZXNzKVxuLS1cbm1tL3Ztc2Nhbi5jPTQ5NTY9c3RhdGljIGJvb2wgdHJ5X3RvX3Nocmlua19scnV2ZWMoc3RydWN0IGxydXZlYyAqbHJ1dmVjLCBzdHJ1Y3Qgc2Nhbl9jb250cm9sICpzYylcbi0tXG5tbS92bXNjYW4uYy00OTc5LVx0XHRucl9iYXRjaCA9IG1pbihucl90b19zY2FuLCBNSU5fTFJVX0JBVENIKTtcbm1tL3Ztc2Nhbi5jOjQ5ODA6XHRcdGRlbHRhID0gZXZpY3RfZm9saW9zKG5yX2JhdGNoLCBscnV2ZWMsIHNjLCBzd2FwcGluZXNzKTtcbm1tL3Ztc2Nhbi5jLTQ5ODEtXHRcdGlmICghZGVsdGEpXG4tLVxubW0vdm1zY2FuLmM9NTU4Mz1zdGF0aWMgaW50IHJ1bl9ldmljdGlvbihzdHJ1Y3QgbHJ1dmVjICpscnV2ZWMsIHVuc2lnbmVkIGxvbmcgc2VxLCBzdHJ1Y3Qgc2Nhbl9jb250cm9sICpzYyxcbi0tXG5tbS92bXNjYW4uYy01NjAzLVx0XHRucl9iYXRjaCA9IG1pbihucl90b19yZWNsYWltIC0gc2MtXHUwMDNlbnJfcmVjbGFpbWVkLCBNQVhfTFJVX0JBVENIKTtcbm1tL3Ztc2Nhbi5jOjU2MDQ6XHRcdGlmICghZXZpY3RfZm9saW9zKG5yX2JhdGNoLCBscnV2ZWMsIHNjLCBzd2FwcGluZXNzKSlcbm1tL3Ztc2Nhbi5jLTU2MDUtXHRcdFx0cmV0dXJuIDA7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzExIDEzOjU2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDEyMTkwCgkJCQkJCQlvdXRwdXQ6IDM4CgkJCQkJCQl0aG91Z2h0czogMjE0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkZvY3VzaW5nIG9uIFBvdGVudGlhbCBTeXprYWxsZXIgVGFyZ2V0cyoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhlc2UgZnVuY3Rpb25zIGFzIHBvdGVudGlhbCBjYW5kaWRhdGVzIGZvciBmdXp6aW5nIHdpdGggc3l6a2FsbGVyLiBJIHdhcyBpbml0aWFsbHkgdGhpbmtpbmcgYHRyeV90b19pbmNfbWF4X3NlcWAgYW5kIGBldmljdF9mb2xpb3NgIGxvb2tlZCBwcm9taXNpbmcgZm9yIGBGb2N1c1N5bWJvbHNgLiBIb2xkIG9uIHRob3VnaCwgSSBuZWVkIHRvIHJlbWluZCBteXNlbGYgdGhhdCBgZXZpY3RfZm9saW9zYCBpcyBzdGF0aWMuIFRoYXQgYnJpbmdzIHVwIGFuIGludGVyZXN0aW5nIHBvaW50OiBjYW4gd2UgZXZlbiB1c2Ugc3l6a2FsbGVyIHRvIHRhcmdldCBzdGF0aWMgZnVuY3Rpb25zPyBZZXMsIHRoYXQmIzM5O3MgcmlnaHQsIGlmIHRoZXkmIzM5O3JlIGJha2VkIGludG8gdGhlIGtlcm5lbCBpbWFnZSwgc3l6a2FsbGVyICpjYW4qIGZvY3VzIG9uIHRoZW0uIFdhaXQgYSBzZWNvbmQuLi4gYHRyeV90b19pbmNfbWF4X3NlcWAgaXMgYWxzbyBzdGF0aWMhCgpBbHJpZ2h0LCBsZXQmIzM5O3MgYnJvYWRlbiB0aGUgc2VhcmNoIGEgYml0LiBBcmUgdGhlcmUgYW55ICpub24qLXN0YXRpYyBmdW5jdGlvbnMgd2l0aGluIHRoaXMgYXJlYSB0aGF0IG1pZ2h0IGJlIGdvb2QgdGFyZ2V0cz8gVGhlIHN0YXRpYyBvbmVzIGFyZSBub3QgbG9va2luZyBzbyBoZWxwZnVsLiBMZXQmIzM5O3Mgc2VlLi4uIGBscnVfZ2VuX3Nocmlua19scnV2ZWNgIGlzIHN0YXRpYy4gSG1tLCB3aGF0IGFib3V0IGBzaHJpbmtfbHJ1dmVjYD8gQWxzbyBzdGF0aWMuIGBzaHJpbmtfbm9kZWA/IFN0YXRpYy4gYHNocmlua196b25lc2A/IFN0YXRpYyBhcyB3ZWxsLiBTdGFydGluZyB0byBmZWVsIGxpa2UgSSYjMzk7bSBzdHVjayB3aXRoIHN0YXRpY3MgaGVyZSwgYnV0IEkganVzdCBmb3VuZCBvbmU6IGBkb190cnlfdG9fZnJlZV9wYWdlc2AgaXMgc3RhdGljLiBPaywgYHRyeV90b19mcmVlX3BhZ2VzYCBpcyBub24tc3RhdGljIGFuZCB0aGVuIGB0cnlfdG9fZnJlZV9tZW1fY2dyb3VwX3BhZ2VzYCBpcyBub24tc3RhdGljIGFzIHdlbGwuIFRoYXQgbG9va3MgbGlrZSB3ZSBoYXZlIGEgd2lubmVyLiBMZXQmIzM5O3MgZGlnIGRlZXBlciBpbnRvIGB0cnlfdG9fZnJlZV9tZW1fY2dyb3VwX3BhZ2VzYC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTEgMTM6NTY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7dHJ5X3RvX2ZyZWVfbWVtX2Nncm91cF9wYWdlcyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O21tL3Ztc2Nhbi5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O21tL3Ztc2Nhbi5jPTY3MTk9dW5zaWduZWQgbG9uZyBtZW1fY2dyb3VwX3Nocmlua19ub2RlKHN0cnVjdCBtZW1fY2dyb3VwICptZW1jZyxcbi0tXG5tbS92bXNjYW4uYy02NzU4LVxubW0vdm1zY2FuLmM6Njc1OTp1bnNpZ25lZCBsb25nIHRyeV90b19mcmVlX21lbV9jZ3JvdXBfcGFnZXMoc3RydWN0IG1lbV9jZ3JvdXAgKm1lbWNnLFxubW0vdm1zY2FuLmMtNjc2MC1cdFx0XHRcdFx0ICAgdW5zaWduZWQgbG9uZyBucl9wYWdlcyxcbi0tXG5tbS92bXNjYW4uYy02Nzk5LSNlbHNlXG5tbS92bXNjYW4uYzo2ODAwOnVuc2lnbmVkIGxvbmcgdHJ5X3RvX2ZyZWVfbWVtX2Nncm91cF9wYWdlcyhzdHJ1Y3QgbWVtX2Nncm91cCAqbWVtY2csXG5tbS92bXNjYW4uYy02ODAxLVx0XHRcdFx0XHQgICB1bnNpZ25lZCBsb25nIG5yX3BhZ2VzLFxuLS1cbm1tL3Ztc2Nhbi5jPTc4NjM9aW50IHVzZXJfcHJvYWN0aXZlX3JlY2xhaW0oY2hhciAqYnVmLFxuLS1cbm1tL3Ztc2Nhbi5jLTc5MjMtXHRcdFx0XHRcdCAgTUVNQ0dfUkVDTEFJTV9QUk9BQ1RJVkU7XG5tbS92bXNjYW4uYzo3OTI0Olx0XHRcdHJlY2xhaW1lZCA9IHRyeV90b19mcmVlX21lbV9jZ3JvdXBfcGFnZXMobWVtY2csXG5tbS92bXNjYW4uYy03OTI1LVx0XHRcdFx0XHRcdCBiYXRjaF9zaXplLCBnZnBfbWFzayxcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTEgMTM6NTY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTMwODAKCQkJCQkJCW91dHB1dDogMzQKCQkJCQkJCXRob3VnaHRzOiA0NQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgbXkgb3duIG1lbnRhbCBwcm9jZXNzaW5nOgoKKipBbmFseXppbmcgTWVtb3J5IE1hbmFnZW1lbnQgQ2FuZGlkYXRlcyoqCgpBbHJpZ2h0LCBsZXQmIzM5O3Mgc2VlLCB3aGVuIHdlJiMzOTtyZSB0aGlua2luZyBhYm91dCBwb3RlbnRpYWwgY2FuZGlkYXRlcyBmb3IgbWVtb3J5IGZyZWVpbmcgc3RyYXRlZ2llcywgYHRyeV90b19mcmVlX21lbV9jZ3JvdXBfcGFnZXNgIGRlZmluaXRlbHkgc3RhbmRzIG91dCBhcyBhIHN0cm9uZyBjb250ZW5kZXIuIEl0JiMzOTtzIHRhcmdldGVkIGFuZCBsaWtlbHkgcHJvdmlkZXMgYSBmb2N1c2VkIGFwcHJvYWNoIHRvIHJlY2xhaW0gbWVtb3J5IHdpdGhpbiBhIGNvbnRyb2wgZ3JvdXAgY29udGV4dC4gVGhhdCBzZWVtcyBwcm9taXNpbmcuCgpPbiB0aGUgb3RoZXIgaGFuZCwgSSYjMzk7bSBub3RpbmcgdGhlIGRpZmZlcmVuY2UgaW4gdGhlIHNjb3BlIG9mIHNvbWUgb2YgdGhlc2UgZnVuY3Rpb25zLiBgd2Fsa19tbWAgaXMgc3RhdGljLCB3aGljaCB1c3VhbGx5IG1lYW5zIGl0JiMzOTtzIGxpbWl0ZWQgaW4gaXRzIGFjY2Vzc2liaWxpdHkuIGBscnVfZ2VuX2xvb2tfYXJvdW5kYCBpcyBub24tc3RhdGljLCB3aGljaCBpbXBsaWVzIGl0JiMzOTtzIG1vcmUgZ2VuZXJhbGx5IHVzYWJsZS4gSSYjMzk7bGwgbmVlZCB0byBjb25zaWRlciBob3cgdGhlaXIgcmVzcGVjdGl2ZSBzY29wZSBhZmZlY3RzIHRoZWlyIHVzZWZ1bG5lc3MgaW4gdGhpcyBzY2VuYXJpby4gVGhpcyB3aWxsIGxpa2VseSBlZmZlY3QgYW55IGRvd25zdHJlYW0gaW50ZXJhY3Rpb24uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzExIDEzOjU2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2xydV9nZW5fbG9va19hcm91bmQmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDttbS92bXNjYW4uYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDttbS92bXNjYW4uYz0yNzE3PXN0YXRpYyBib29sIF9fbWF5YmVfdW51c2VkIHNlcV9pc192YWxpZChzdHJ1Y3QgbHJ1dmVjICpscnV2ZWMpXG4tLVxubW0vdm1zY2FuLmMtMjc0Ni0gKiB3YWxrX3BtZF9yYW5nZSgpOyB0aGUgZXZpY3Rpb24gYWxzbyByZXBvcnQgdGhlbSB3aGVuIHdhbGtpbmcgdGhlIHJtYXBcbm1tL3Ztc2Nhbi5jOjI3NDc6ICogaW4gbHJ1X2dlbl9sb29rX2Fyb3VuZCgpLlxubW0vdm1zY2FuLmMtMjc0OC0gKlxuLS1cbm1tL3Ztc2Nhbi5jPTM5OTQ9c3RhdGljIGJvb2wgdHJ5X3RvX2luY19tYXhfc2VxKHN0cnVjdCBscnV2ZWMgKmxydXZlYywgdW5zaWduZWQgbG9uZyBzZXEsXG4tLVxubW0vdm1zY2FuLmMtNDAxMy1cdCAqIElmIHRoZSBoYXJkd2FyZSBkb2VzbiYjMzk7dCBhdXRvbWF0aWNhbGx5IHNldCB0aGUgYWNjZXNzZWQgYml0LCBmYWxsYmFja1xubW0vdm1zY2FuLmM6NDAxNDpcdCAqIHRvIGxydV9nZW5fbG9va19hcm91bmQoKSwgd2hpY2ggb25seSBjbGVhcnMgdGhlIGFjY2Vzc2VkIGJpdCBpbiBhXG5tbS92bXNjYW4uYy00MDE1LVx0ICogaGFuZGZ1bCBvZiBQVEVzLiBTcHJlYWRpbmcgdGhlIHdvcmsgb3V0IG92ZXIgYSBwZXJpb2Qgb2YgdGltZSB1c3VhbGx5XG4tLVxubW0vdm1zY2FuLmM9NDEzMz1zdGF0aWMgdm9pZCBscnVfZ2VuX2FnZV9ub2RlKHN0cnVjdCBwZ2xpc3RfZGF0YSAqcGdkYXQsIHN0cnVjdCBzY2FuX2NvbnRyb2wgKnNjKVxuLS1cbm1tL3Ztc2Nhbi5jLTQxNzktICovXG5tbS92bXNjYW4uYzo0MTgwOmJvb2wgbHJ1X2dlbl9sb29rX2Fyb3VuZChzdHJ1Y3QgcGFnZV92bWFfbWFwcGVkX3dhbGsgKnB2bXcsIHVuc2lnbmVkIGludCBucilcbm1tL3Ztc2Nhbi5jLTQxODEte1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI3LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMSAxMzo1NjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMzcwMwoJCQkJCQkJb3V0cHV0OiAyOQoJCQkJCQkJdGhvdWdodHM6IDQ3NAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIExSVSBHZW5lcmF0aW9uIFBhZ2UgUmVjbGFpbSBMb2dpYyoqCgpPa2F5LCBzbyBgbHJ1X2dlbl9sb29rX2Fyb3VuZGAgaXNuJiMzOTt0IHN0YXRpYywgd2hpY2ggaXMgZ29vZCB0byBrZWVwIGluIG1pbmQuIExldCYjMzk7cyByZXZpc2l0IGByZXNldF9iYXRjaF9zaXplYC4gSSBzZWUgaXQmIzM5O3MgY2FsbGVkIGZyb20gYm90aCBgd2Fsa19tbWAgYW5kIGBldmljdF9mb2xpb3NgLiBgd2Fsa19tbWAgdHJhY2VzIGJhY2sgdG8gYHRyeV90b19pbmNfbWF4X3NlcWAsIHdoaWxlIGBldmljdF9mb2xpb3NgIGlzIGNhbGxlZCBieSBgdHJ5X3RvX3Nocmlua19scnV2ZWNgIGFuZCBgcnVuX2V2aWN0aW9uYC4gTm93LCBgdHJ5X3RvX3Nocmlua19scnV2ZWNgIGl0c2VsZiBpcyBjYWxsZWQgYnkgYHNocmlua19vbmVgIGFuZCBgbHJ1X2dlbl9zaHJpbmtfbHJ1dmVjYC4gVGhhdCBsYXR0ZXIgZnVuY3Rpb24gbGVhZHMgdG8gYHNocmlua19scnV2ZWNgLCB3aGljaCBnZXRzIGNhbGxlZCBieSBgc2hyaW5rX25vZGVgLiBGaW5hbGx5LCBgc2hyaW5rX25vZGVgIHRpZXMgaW50byBzZXZlcmFsIG90aGVyIGZ1bmN0aW9uczogYHNocmlua196b25lc2AsIGBkb190cnlfdG9fZnJlZV9wYWdlc2AsIGBrc3dhcGRfc2hyaW5rX25vZGVgLCBhbmQgYG1lbV9jZ3JvdXBfc2hyaW5rX25vZGVgLgoKU28sIGNvbnNpZGVyaW5nIHRoZSBjb250ZXh0LCBgdHJ5X3RvX2ZyZWVfbWVtX2Nncm91cF9wYWdlc2AgbG9va3MgbGlrZSBhIGdvb2Qgbm9uLXN0YXRpYyBmdW5jdGlvbiB0byBmb2N1cyBvbi4gQWxzbyBgdHJ5X3RvX2ZyZWVfcGFnZXNgLCBidXQgdGhhdCBmdW5jdGlvbiBpcyBwcm9iYWJseSBhIGhvdCBwYXRoLiBTaW5jZSBTeXprYWxsZXIgY2FuIGhhbmRsZSBzdGF0aWMgZnVuY3Rpb25zLCBJIHRoaW5rIGZvY3VzaW5nIG9uIGBldmljdF9mb2xpb3NgIGFuZCBgdHJ5X3RvX2luY19tYXhfc2VxYCBhcyB0aGUgYEZvY3VzU3ltYm9sc2Agc2VlbXMgbGlrZSBhIHNvbGlkIGFwcHJvYWNoIGZvciBub3cuCgpIb2xkIG9uLCB0aGUgcGF0Y2ggdG91Y2hlcyBgbHJ1dmVjX2xpdmVfbG9ja19pcnFgLCB3aGljaCBpcyB1c2VkIGluIGByZXNldF9iYXRjaF9zaXplYC4gSSByZW1lbWJlciBgcmVzZXRfYmF0Y2hfc2l6ZWAgZ2V0cyBjYWxsZWQgd2hlbiBgd2Fsay0mZ3Q7YmF0Y2hlZGAgaXMgdHJ1ZS4gTGV0JiMzOTtzIHRyYWNlIHRoYXQgYmFjazogYHdhbGstJmd0O2JhdGNoZWRgIGdldHMgaW5jcmVtZW50ZWQgaW4gYHVwZGF0ZV9iYXRjaF9zaXplYCwgYW5kIHRoYXQgZnVuY3Rpb24gaXMgY2FsbGVkIGJ5IGBmb2xpb19pbmNfZ2VuYCBhbmQgYHdhbGtfdXBkYXRlX2ZvbGlvYC4gYHdhbGtfdXBkYXRlX2ZvbGlvYCBpcyBjYWxsZWQgYnkgYHdhbGtfcHRlX3JhbmdlYCBhbmQgYHdhbGtfcG1kX3JhbmdlX2xvY2tlZGAuIEFoLCB0aGVzZSBhcmUgYWxsIGNyaXRpY2FsIGNvbXBvbmVudHMgb2YgdGhlIExSVSBnZW5lcmF0aW9uIHBhZ2UgcmVjbGFpbSBsb2dpYy4KCkZpbmFsbHksIHRoZSByZXF1aXJlZCBjb25maWdzIGFyZSBgQ09ORklHX01FTUNHYCBhbmQgYENPTkZJR19MUlVfR0VOYC4gTGV0IG1lIGp1c3QgZG91YmxlLWNoZWNrIHRoYXQgYENPTkZJR19MUlVfR0VOYCBpcyB0aGUgZXhhY3QgbmFtZSwgdG8gYmUgYWJzb2x1dGVseSBzdXJlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMSAxMzo1NjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgTFJVX0dFTiYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O21tL0tjb25maWcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bW0vS2NvbmZpZz0xNDA2PWVuZGlmICMgVVNFUkZBVUxURkRcbi0tXG5tbS9LY29uZmlnLTE0MDgtIyBtdWx0aS1nZW4gTFJVIHtcbm1tL0tjb25maWc6MTQwOTpjb25maWcgTFJVX0dFTlxubW0vS2NvbmZpZy0xNDEwLVx0Ym9vbCBcJiMzNDtNdWx0aS1HZW4gTFJVXCYjMzQ7XG4tLVxubW0vS2NvbmZpZy0xNDE3LVxubW0vS2NvbmZpZzoxNDE4OmNvbmZpZyBMUlVfR0VOX0VOQUJMRURcbm1tL0tjb25maWctMTQxOS1cdGJvb2wgXCYjMzQ7RW5hYmxlIGJ5IGRlZmF1bHRcJiMzNDtcbi0tXG5tbS9LY29uZmlnLTE0MjMtXG5tbS9LY29uZmlnOjE0MjQ6Y29uZmlnIExSVV9HRU5fU1RBVFNcbm1tL0tjb25maWctMTQyNS1cdGJvb2wgXCYjMzQ7RnVsbCBzdGF0cyBmb3IgZGVidWdnaW5nXCYjMzQ7XG4tLVxubW0vS2NvbmZpZy0xNDMyLVxubW0vS2NvbmZpZzoxNDMzOmNvbmZpZyBMUlVfR0VOX1dBTEtTX01NVVxubW0vS2NvbmZpZy0xNDM0LVx0ZGVmX2Jvb2wgeVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI5LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMSAxMzo1NjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxNDk0NQoJCQkJCQkJb3V0cHV0OiAyNwoJCQkJCQkJdGhvdWdodHM6IDM5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IGludGVycHJldGF0aW9uIG9mIHRoZXNlIHRob3VnaHRzLCBzdW1tYXJpemVkIGZyb20gbXkgcGVyc3BlY3RpdmUgYXMgc29tZW9uZSBmYW1pbGlhciB3aXRoIHN5c3RlbSBjb25maWd1cmF0aW9uOgoKKipDaGVja2luZyBDb25maWd1cmF0aW9uIFBhcmFtZXRlcnMqKgoKQWxyaWdodCwgc28gSSBzZWUgd2UmIzM5O3JlIGRlYWxpbmcgd2l0aCB0d28ga2V5IGNvbmZpZ3VyYXRpb25zIGhlcmU6IGBMUlVfR0VOYCBhbmQgYE1FTUNHYC4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRoYXQgYExSVV9HRU5gIHByb2JhYmx5IGRlYWxzIHdpdGggTGVhc3QgUmVjZW50bHkgVXNlZCBwYWdlIHJlcGxhY2VtZW50IGdlbmVyYXRpb24sIHdoaWNoIG1ha2VzIHNlbnNlLiBgTUVNQ0dgLCBhcyBJJiMzOTttIHN1cmUgbW9zdCBvZiB1cyBrbm93LCBpcyBsaWtlbHkgcmVsYXRlZCB0byBNZW1vcnkgQ29udHJvbCBHcm91cHMuCgpCdXQgYmVmb3JlIEkgZ28gYW55IGZ1cnRoZXIgYXNzdW1pbmcgYW55dGhpbmcsIGl04oCZcyBhbHdheXMgd2lzZSB0byBkb3VibGUtY2hlY2suIEkgc2hvdWxkIGNvbmZpcm0gdGhlIGV4YWN0IG5hbWUgb2YgdGhhdCBgQ09ORklHX01FTUNHYCBwYXJhbWV0ZXIsIGp1c3QgdG8gYmUgYWJzb2x1dGVseSBzdXJlLiBCZXN0IHRvIGJlIHByZWNpc2Ugd2hlbiBkaWdnaW5nIGludG8gdGhlc2UgZGV0YWlscy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTEgMTM6NTY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIE1FTUNHJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7aW5pdC9LY29uZmlnJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2luaXQvS2NvbmZpZz0xMDYzPWNvbmZpZyBDR1JPVVBfRkFWT1JfRFlOTU9EU1xuLS1cbmluaXQvS2NvbmZpZy0xMDcyLVxuaW5pdC9LY29uZmlnOjEwNzM6Y29uZmlnIE1FTUNHXG5pbml0L0tjb25maWctMTA3NC1cdGJvb2wgXCYjMzQ7TWVtb3J5IGNvbnRyb2xsZXJcJiMzNDtcbi0tXG5pbml0L0tjb25maWctMTA4MS1cbmluaXQvS2NvbmZpZzoxMDgyOmNvbmZpZyBNRU1DR19OTUlfVU5TQUZFXG5pbml0L0tjb25maWctMTA4My1cdGJvb2xcbi0tXG5pbml0L0tjb25maWctMTA4OC1cbmluaXQvS2NvbmZpZzoxMDg5OmNvbmZpZyBNRU1DR19OTUlfU0FGRVRZX1JFUVVJUkVTX0FUT01JQ1xuaW5pdC9LY29uZmlnLTEwOTAtXHRib29sXG4tLVxuaW5pdC9LY29uZmlnLTEwOTUtXG5pbml0L0tjb25maWc6MTA5Njpjb25maWcgTUVNQ0dfVjFcbmluaXQvS2NvbmZpZy0xMDk3LVx0Ym9vbCBcJiMzNDtMZWdhY3kgY2dyb3VwIHYxIG1lbW9yeSBjb250cm9sbGVyXCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzExIDEzOjU2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE1Mzk0CgkJCQkJCQlvdXRwdXQ6IDMxCgkJCQkJCQl0aG91Z2h0czogMjcxCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkZ1enppbmcgU3RyYXRlZ3kgZm9yIE1lbWNnIE1lbW9yeSBNYW5hZ2VtZW50KioKCk9rYXksIHNvIHRoZSBwYXRjaCBpbnRyb2R1Y2VzIGEgbmV3IGxvY2tpbmcgbWVjaGFuaXNtLCBgbHJ1dmVjX2xpdmVfbG9ja19pcnFgLCBzcGVjaWZpY2FsbHkgd2l0aGluIHRoZSBtdWx0aS1nZW4gTFJVIHBhZ2UgcmVjbGFpbSBwcm9jZXNzLiBJdCYjMzk7cyB0YXJnZXRlZCBhdCBgbHJ1dmVjYCBpbiB0aGUgYHJlc2V0X2JhdGNoX3NpemVgIGZ1bmN0aW9uLCBhbmQgaXQmIzM5O3MgdHJhdmVyc2luZyB0aGUgbWVtY2cgaGllcmFyY2h5IHRvIGZpbmQgYSBub24tZHlpbmcgbWVtY2cgdG8gbG9jayBpdHMgYGxydXZlY2AuIFRoaXMgaXMgYSBwcmV0dHkgc2lnbmlmaWNhbnQgY2hhbmdlIGluIGNvcmUgbWVtb3J5IG1hbmFnZW1lbnQuIEdpdmVuIHRoYXQgaXQmIzM5O3MgYWN0aXZlIGR1cmluZyBtZW1vcnkgcHJlc3N1cmUgYW5kIG1lbWNnIHRlYXJkb3duLCBmdXp6aW5nIHRoaXMgYXJlYSBpcyBkZWZpbml0ZWx5IHdhcnJhbnRlZC4gVGhlIHBhdGNoIGlzIGNlbnRlcmVkIGFyb3VuZCBgTUVNQ0dgLgoKTm93LCB0aGUgaW1wb3J0YW50IHN5bWJvbHMgdG8gZm9jdXMgb24gYXJlIGByZXNldF9iYXRjaF9zaXplYCwgYGV2aWN0X2ZvbGlvc2AsIGFuZCBgdHJ5X3RvX2luY19tYXhfc2VxYC4gTGV0JiMzOTtzIGV2YWx1YXRlIHRoZW0uIGByZXNldF9iYXRjaF9zaXplYCBpcyBzdGF0aWMsIHdoaWNoIGNhbiBiZSB0cmlja3kgYnV0IGl0IGlzIGRpcmVjdGx5IG1vZGlmaWVkLCB3aGljaCBtYWtlcyBpdCBhIGdvb2QgY2FuZGlkYXRlLiBIb2xkIG9uLCBgcmVzZXRfYmF0Y2hfc2l6ZWAgaGFzIGJlZW4gbW9kaWZpZWQgdG8gdXNlIGBscnV2ZWNfbGl2ZV9sb2NrX2lycWAuIFBlcmZlY3QhIFRoaXMgbWFrZXMgYHJlc2V0X2JhdGNoX3NpemVgIGFuIGlkZWFsIGZvY3VzIHN5bWJvbC4KClRoZW4sIGBldmljdF9mb2xpb3NgIGFuZCBgdHJ5X3RvX2luY19tYXhfc2VxYCBhcmUgaXRzIGNhbGxlcnMsIHNvIGxldCYjMzk7cyBkZWZpbml0ZWx5IGluY2x1ZGUgdGhlbSBpbiB0aGUgZnV6emluZyBzY29wZS4gSnVzdCB0byBiZSB0aG9yb3VnaCwgbGV0JiMzOTtzIG1ha2Ugc3VyZSB0aGVyZSBhcmUgbm8gb3RoZXIgY2FsbGVycyBvZiBgcmVzZXRfYmF0Y2hfc2l6ZWAgdGhhdCB3ZSYjMzk7cmUgbWlzc2luZy4gV2Ugd2FudCB0byBiZSBjb21wcmVoZW5zaXZlIGluIHRoZSBhcHByb2FjaC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTEgMTM6NTY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7cmVzZXRfYmF0Y2hfc2l6ZSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O21tL3Ztc2Nhbi5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O21tL3Ztc2Nhbi5jPTMyNDk9c3RhdGljIHZvaWQgdXBkYXRlX2JhdGNoX3NpemUoc3RydWN0IGxydV9nZW5fbW1fd2FsayAqd2Fsaywgc3RydWN0IGZvbGlvICpmb2xpbyxcbi0tXG5tbS92bXNjYW4uYy0zMjY0LVxubW0vdm1zY2FuLmM6MzI2NTpzdGF0aWMgdm9pZCByZXNldF9iYXRjaF9zaXplKHN0cnVjdCBscnVfZ2VuX21tX3dhbGsgKndhbGspXG5tbS92bXNjYW4uYy0zMjY2LXtcbi0tXG5tbS92bXNjYW4uYz0zNzU2PXN0YXRpYyB2b2lkIHdhbGtfbW0oc3RydWN0IG1tX3N0cnVjdCAqbW0sIHN0cnVjdCBscnVfZ2VuX21tX3dhbGsgKndhbGspXG4tLVxubW0vdm1zY2FuLmMtMzc4NC1cdFx0aWYgKHdhbGstXHUwMDNlYmF0Y2hlZClcbm1tL3Ztc2Nhbi5jOjM3ODU6XHRcdFx0cmVzZXRfYmF0Y2hfc2l6ZSh3YWxrKTtcbm1tL3Ztc2Nhbi5jLTM3ODYtXG4tLVxubW0vdm1zY2FuLmM9NDgwMT1zdGF0aWMgaW50IGV2aWN0X2ZvbGlvcyh1bnNpZ25lZCBsb25nIG5yX3RvX3NjYW4sIHN0cnVjdCBscnV2ZWMgKmxydXZlYyxcbi0tXG5tbS92bXNjYW4uYy00ODY4LVx0XHR3YWxrLVx1MDAzZWxydXZlYyA9IGxydXZlYztcbm1tL3Ztc2Nhbi5jOjQ4Njk6XHRcdHJlc2V0X2JhdGNoX3NpemUod2Fsayk7XG5tbS92bXNjYW4uYy00ODcwLVx0fVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMSAxMzo1NjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxNjMzMgoJCQkJCQkJb3V0cHV0OiAxNjcKCQkJCQkJCXRob3VnaHRzOiA2NAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgbXkgb3duIG1lbnRhbCBwcm9jZXNzaW5nOgoKKipBbmFseXppbmcgS2V5IEZ1bmN0aW9ucyBhbmQgQ2FsbCBQYXRocyoqCgpSaWdodCwgc28gSSYjMzk7dmUgY29uZmlybWVkIHRoYXQgYHdhbGtfbW1gIGFuZCBgZXZpY3RfZm9saW9zYCBhcmUgdGhlICpzb2xlKiBjYWxsZXJzIG9mIHdoYXRldmVyIGZ1bmN0aW9uIHdlJiMzOTtyZSBkZWFsaW5nIHdpdGguIFRoYXQmIzM5O3MgY3J1Y2lhbC4gS25vd2luZyB0aGUgY2FsbCBncmFwaCBuYXJyb3dzIGRvd24gdGhlIHBvdGVudGlhbCBpc3N1ZXMgc2lnbmlmaWNhbnRseS4gU28sIGlmIEkmIzM5O20gdHJhY2tpbmcgZG93biBhIHBlcmZvcm1hbmNlIGJvdHRsZW5lY2ssIGJ1Zywgb3IgdHJ5aW5nIHRvIHVuZGVyc3RhbmQgdGhlIGNvbnRyb2wgZmxvdywgSSBrbm93IG15IHByaW1hcnkgZm9jdXMgbmVlZHMgdG8gYmUgb24gdGhlc2UgZm91ciBzeW1ib2xzOiBgcmVzZXRfYmF0Y2hfc2l6ZWAsIGB3YWxrX21tYCwgYGV2aWN0X2ZvbGlvc2AsIGFuZCBgdHJ5X3RvX2luY19tYXhfc2VxYC4gVGhlc2UgYXJlIG15IGVudHJ5IHBvaW50cyBhbmQgcG90ZW50aWFsIHByb2JsZW0gYXJlYXMuCgpOb3csIGxldCYjMzk7cyBnZXQgZG93biB0byBhY3R1YWxseSBzZXR0aW5nIHVwIHRoZSByZXN1bHRzLiBJJiMzOTttIHJlYWR5IHRvIG1vdmUgZm9yd2FyZC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTEgMTM6NTY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O01FTUNHJiMzNDssCiAgICAmIzM0O0xSVV9HRU4mIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtyZXNldF9iYXRjaF9zaXplJiMzNDssCiAgICAmIzM0O3dhbGtfbW0mIzM0OywKICAgICYjMzQ7ZXZpY3RfZm9saW9zJiMzNDssCiAgICAmIzM0O3RyeV90b19pbmNfbWF4X3NlcSYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBpbnRyb2R1Y2VzIGEgbmV3IGxvY2tpbmcgbWVjaGFuaXNtIChgbHJ1dmVjX2xpdmVfbG9ja19pcnFgKSBmb3IgYGxydXZlY2AgaW4gdGhlIG11bHRpLWdlbiBMUlUgcGFnZSByZWNsYWltIHBhdGggKGByZXNldF9iYXRjaF9zaXplYCkuIEl0IHRyYXZlcnNlcyB0aGUgbWVtY2cgaGllcmFyY2h5IHRvIGZpbmQgYSBub24tZHlpbmcgbWVtY2cgdG8gbG9jayBpdHMgbHJ1dmVjLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gY29yZSBtZW1vcnkgbWFuYWdlbWVudCBsb2dpYyB0aGF0IGNhbiBiZSByZWFjaGVkIGR1cmluZyBtZW1vcnkgcHJlc3N1cmUgYW5kIG1lbWNnIHRlYXJkb3duLCBtYWtpbmcgaXQgd29ydGggZnV6emluZy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7TUVNQ0cmIzM0OywKICAgICYjMzQ7TFJVX0dFTiYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O3Jlc2V0X2JhdGNoX3NpemUmIzM0OywKICAgICYjMzQ7d2Fsa19tbSYjMzQ7LAogICAgJiMzNDtldmljdF9mb2xpb3MmIzM0OywKICAgICYjMzQ7dHJ5X3RvX2luY19tYXhfc2VxJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGludHJvZHVjZXMgYSBuZXcgbG9ja2luZyBtZWNoYW5pc20gKGBscnV2ZWNfbGl2ZV9sb2NrX2lycWApIGZvciBgbHJ1dmVjYCBpbiB0aGUgbXVsdGktZ2VuIExSVSBwYWdlIHJlY2xhaW0gcGF0aCAoYHJlc2V0X2JhdGNoX3NpemVgKS4gSXQgdHJhdmVyc2VzIHRoZSBtZW1jZyBoaWVyYXJjaHkgdG8gZmluZCBhIG5vbi1keWluZyBtZW1jZyB0byBsb2NrIGl0cyBscnV2ZWMuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiBjb3JlIG1lbW9yeSBtYW5hZ2VtZW50IGxvZ2ljIHRoYXQgY2FuIGJlIHJlYWNoZWQgZHVyaW5nIG1lbW9yeSBwcmVzc3VyZSBhbmQgbWVtY2cgdGVhcmRvd24sIG1ha2luZyBpdCB3b3J0aCBmdXp6aW5nLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgoKCTxkaXYgaWQ9ImxsbV9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+TExNIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgVG9rZW5zPC90aD4KCQkJCQk8dGg+QXZnIFRva2VuczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJsbG1fc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJ0b29sX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5Ub29sIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9InRvb2xfc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJkdXJhdGlvbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+Cgk8ZGl2IGlkPSJ0b2tlbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+CgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9qc2FwaSI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDctMTFUMTM6NTU6NDYuMzAxMDgyMjIxWiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NzIyMzk0ODI1MjQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiTUVNQ0dcIixcbiAgICBcIkxSVV9HRU5cIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJyZXNldF9iYXRjaF9zaXplXCIsXG4gICAgXCJ3YWxrX21tXCIsXG4gICAgXCJldmljdF9mb2xpb3NcIixcbiAgICBcInRyeV90b19pbmNfbWF4X3NlcVwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGludHJvZHVjZXMgYSBuZXcgbG9ja2luZyBtZWNoYW5pc20gKGBscnV2ZWNfbGl2ZV9sb2NrX2lycWApIGZvciBgbHJ1dmVjYCBpbiB0aGUgbXVsdGktZ2VuIExSVSBwYWdlIHJlY2xhaW0gcGF0aCAoYHJlc2V0X2JhdGNoX3NpemVgKS4gSXQgdHJhdmVyc2VzIHRoZSBtZW1jZyBoaWVyYXJjaHkgdG8gZmluZCBhIG5vbi1keWluZyBtZW1jZyB0byBsb2NrIGl0cyBscnV2ZWMuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiBjb3JlIG1lbW9yeSBtYW5hZ2VtZW50IGxvZ2ljIHRoYXQgY2FuIGJlIHJlYWNoZWQgZHVyaW5nIG1lbW9yeSBwcmVzc3VyZSBhbmQgbWVtY2cgdGVhcmRvd24sIG1ha2luZyBpdCB3b3J0aCBmdXp6aW5nLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xMVQxMzo1NTo0Ni4zMDEwODY3MzFaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjM0NjM0NjIzMCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IDA3ZGQ2Mjc5MjgxOTAyMjkzNTMyMGJmZmIzZGVjNTUzM2VmYTQwZDZcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIFNhdCBKdWwgMTEgMTM6NTU6NDQgMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51eC9tZW1jb250cm9sLmggYi9pbmNsdWRlL2xpbnV4L21lbWNvbnRyb2wuaFxcbmluZGV4IGUxZjQ2YTAwMTZmY2ZkLi45NTcyNjA2Nzc2NzgxNSAxMDA2NDRcXG4tLS0gYS9pbmNsdWRlL2xpbnV4L21lbWNvbnRyb2wuaFxcbisrKyBiL2luY2x1ZGUvbGludXgvbWVtY29udHJvbC5oXFxuQEAgLTE0NzIsNiArMTQ3MiwzMSBAQCBzdGF0aWMgaW5saW5lIHZvaWQgbHJ1dmVjX2xvY2tfaXJxKHN0cnVjdCBscnV2ZWMgKmxydXZlYylcXG4gXFx0c3Bpbl9sb2NrX2lycShcXHUwMDI2bHJ1dmVjLVxcdTAwM2VscnVfbG9jayk7XFxuIH1cXG4gXFxuK3N0YXRpYyBpbmxpbmUgc3RydWN0IGxydXZlYyAqbHJ1dmVjX2xpdmVfbG9ja19pcnEoc3RydWN0IGxydXZlYyAqbHJ1dmVjKVxcbit7XFxuKyNpZmRlZiBDT05GSUdfTUVNQ0dcXG4rXFx0c3RydWN0IHBnbGlzdF9kYXRhICpwZ2RhdCA9IGxydXZlY19wZ2RhdChscnV2ZWMpO1xcbitcXHRzdHJ1Y3QgbWVtX2Nncm91cCAqbWVtY2cgPSBscnV2ZWNfbWVtY2cobHJ1dmVjKTtcXG4rXFxuK1xcdHJjdV9yZWFkX2xvY2soKTtcXG4rXFxuK1xcdC8qXFxuK1xcdCAqIFRoZSBtZW1jZyBjYW4gYmUgTlVMTCB3aGVuIHRoZSBtZW1vcnkgY29udHJvbGxlciBpcyBkaXNhYmxlZC5cXG4rXFx0ICogT3RoZXJ3aXNlLCB0aGUgY2FsbGVyIGtlZXBzIHRoZSBtZW1jZyBvd25pbmcgQGxydXZlYyBhbGl2ZS5cXG4rXFx0ICovXFxuK1xcdHdoaWxlICh1bmxpa2VseShtZW1jZyBcXHUwMDI2XFx1MDAyNiBjc3NfaXNfZHlpbmcoXFx1MDAyNm1lbWNnLVxcdTAwM2Vjc3MpKSkge1xcbitcXHRcXHRtZW1jZyA9IHBhcmVudF9tZW1fY2dyb3VwKG1lbWNnKTtcXG4rXFx0XFx0bHJ1dmVjID0gbWVtX2Nncm91cF9scnV2ZWMobWVtY2csIHBnZGF0KTtcXG4rXFx0fVxcbitcXG4rXFx0c3Bpbl9sb2NrX2lycShcXHUwMDI2bHJ1dmVjLVxcdTAwM2VscnVfbG9jayk7XFxuKyNlbHNlXFxuK1xcdGxydXZlY19sb2NrX2lycShscnV2ZWMpO1xcbisjZW5kaWZcXG4rXFxuK1xcdHJldHVybiBscnV2ZWM7XFxuK31cXG4rXFxuIHN0YXRpYyBpbmxpbmUgdm9pZCBscnV2ZWNfdW5sb2NrKHN0cnVjdCBscnV2ZWMgKmxydXZlYylcXG4ge1xcbiBcXHRzcGluX3VubG9jayhcXHUwMDI2bHJ1dmVjLVxcdTAwM2VscnVfbG9jayk7XFxuZGlmZiAtLWdpdCBhL21tL3Ztc2Nhbi5jIGIvbW0vdm1zY2FuLmNcXG5pbmRleCAzNWMzYmIxNWFlOTZhMy4uMWExNDJjNTg3MDBkMDAgMTAwNjQ0XFxuLS0tIGEvbW0vdm1zY2FuLmNcXG4rKysgYi9tbS92bXNjYW4uY1xcbkBAIC0zMjY1LDcgKzMyNjUsNyBAQCBzdGF0aWMgdm9pZCB1cGRhdGVfYmF0Y2hfc2l6ZShzdHJ1Y3QgbHJ1X2dlbl9tbV93YWxrICp3YWxrLCBzdHJ1Y3QgZm9saW8gKmZvbGlvLFxcbiBzdGF0aWMgdm9pZCByZXNldF9iYXRjaF9zaXplKHN0cnVjdCBscnVfZ2VuX21tX3dhbGsgKndhbGspXFxuIHtcXG4gXFx0aW50IGdlbiwgdHlwZSwgem9uZTtcXG4tXFx0c3RydWN0IGxydXZlYyAqbHJ1dmVjID0gd2Fsay1cXHUwMDNlbHJ1dmVjO1xcbitcXHRzdHJ1Y3QgbHJ1dmVjICpscnV2ZWMgPSBscnV2ZWNfbGl2ZV9sb2NrX2lycSh3YWxrLVxcdTAwM2VscnV2ZWMpO1xcbiBcXHRzdHJ1Y3QgbHJ1X2dlbl9mb2xpbyAqbHJ1Z2VuID0gXFx1MDAyNmxydXZlYy1cXHUwMDNlbHJ1Z2VuO1xcbiBcXG4gXFx0d2Fsay1cXHUwMDNlYmF0Y2hlZCA9IDA7XFxuQEAgLTMyODUsNiArMzI4NSw4IEBAIHN0YXRpYyB2b2lkIHJlc2V0X2JhdGNoX3NpemUoc3RydWN0IGxydV9nZW5fbW1fd2FsayAqd2FsaylcXG4gXFx0XFx0XFx0bHJ1ICs9IExSVV9BQ1RJVkU7XFxuIFxcdFxcdF9fdXBkYXRlX2xydV9zaXplKGxydXZlYywgbHJ1LCB6b25lLCBkZWx0YSk7XFxuIFxcdH1cXG4rXFxuK1xcdGxydXZlY191bmxvY2tfaXJxKGxydXZlYyk7XFxuIH1cXG4gXFxuIHN0YXRpYyBpbnQgc2hvdWxkX3NraXBfdm1hKHVuc2lnbmVkIGxvbmcgc3RhcnQsIHVuc2lnbmVkIGxvbmcgZW5kLCBzdHJ1Y3QgbW1fd2FsayAqYXJncylcXG5AQCAtMzc3OSwxMSArMzc4MSw4IEBAIHN0YXRpYyB2b2lkIHdhbGtfbW0oc3RydWN0IG1tX3N0cnVjdCAqbW0sIHN0cnVjdCBscnVfZ2VuX21tX3dhbGsgKndhbGspXFxuIFxcdFxcdFxcdG1tYXBfcmVhZF91bmxvY2sobW0pO1xcbiBcXHRcXHR9XFxuIFxcbi1cXHRcXHRpZiAod2Fsay1cXHUwMDNlYmF0Y2hlZCkge1xcbi1cXHRcXHRcXHRscnV2ZWNfbG9ja19pcnEobHJ1dmVjKTtcXG4rXFx0XFx0aWYgKHdhbGstXFx1MDAzZWJhdGNoZWQpXFxuIFxcdFxcdFxcdHJlc2V0X2JhdGNoX3NpemUod2Fsayk7XFxuLVxcdFxcdFxcdGxydXZlY191bmxvY2tfaXJxKGxydXZlYyk7XFxuLVxcdFxcdH1cXG4gXFxuIFxcdFxcdGNvbmRfcmVzY2hlZCgpO1xcbiBcXHR9IHdoaWxlIChlcnIgPT0gLUVBR0FJTik7XFxuQEAgLTQ4NjcsOSArNDg2Niw3IEBAIHN0YXRpYyBpbnQgZXZpY3RfZm9saW9zKHVuc2lnbmVkIGxvbmcgbnJfdG9fc2Nhbiwgc3RydWN0IGxydXZlYyAqbHJ1dmVjLFxcbiBcXHR3YWxrID0gY3VycmVudC1cXHUwMDNlcmVjbGFpbV9zdGF0ZS1cXHUwMDNlbW1fd2FsaztcXG4gXFx0aWYgKHdhbGsgXFx1MDAyNlxcdTAwMjYgd2Fsay1cXHUwMDNlYmF0Y2hlZCkge1xcbiBcXHRcXHR3YWxrLVxcdTAwM2VscnV2ZWMgPSBscnV2ZWM7XFxuLVxcdFxcdGxydXZlY19sb2NrX2lycShscnV2ZWMpO1xcbiBcXHRcXHRyZXNldF9iYXRjaF9zaXplKHdhbGspO1xcbi1cXHRcXHRscnV2ZWNfdW5sb2NrX2lycShscnV2ZWMpO1xcbiBcXHR9XFxuIFxcbiBcXHRtb2RfbHJ1dmVjX3N0YXRlKGxydXZlYywgUEdERU1PVEVfS1NXQVBEICsgcmVjbGFpbWVyX29mZnNldChzYyksXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTExVDEzOjU1OjQ2LjY0ODI5MzczMVoiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NzE4OTIyNjIzODQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiTUVNQ0dcIixcbiAgICBcIkxSVV9HRU5cIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJyZXNldF9iYXRjaF9zaXplXCIsXG4gICAgXCJ3YWxrX21tXCIsXG4gICAgXCJldmljdF9mb2xpb3NcIixcbiAgICBcInRyeV90b19pbmNfbWF4X3NlcVwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGludHJvZHVjZXMgYSBuZXcgbG9ja2luZyBtZWNoYW5pc20gKGBscnV2ZWNfbGl2ZV9sb2NrX2lycWApIGZvciBgbHJ1dmVjYCBpbiB0aGUgbXVsdGktZ2VuIExSVSBwYWdlIHJlY2xhaW0gcGF0aCAoYHJlc2V0X2JhdGNoX3NpemVgKS4gSXQgdHJhdmVyc2VzIHRoZSBtZW1jZyBoaWVyYXJjaHkgdG8gZmluZCBhIG5vbi1keWluZyBtZW1jZyB0byBsb2NrIGl0cyBscnV2ZWMuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiBjb3JlIG1lbW9yeSBtYW5hZ2VtZW50IGxvZ2ljIHRoYXQgY2FuIGJlIHJlYWNoZWQgZHVyaW5nIG1lbW9yeSBwcmVzc3VyZSBhbmQgbWVtY2cgdGVhcmRvd24sIG1ha2luZyBpdCB3b3J0aCBmdXp6aW5nLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lXG5pZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5XG51c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLlxuXG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOlxuLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLlxuLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy5cbi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LlxuLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsXG5ldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG5cbklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2hcbnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLlxuXG5XaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzpcbjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuXG4gICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy5cbjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLlxuICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuICAgRG8gbm90IGxpc3QgdG9vIGdlbmVyaWMgY29uZmlncyAod2UgYWxyZWFkeSBoYXZlIHRoZW0gZW5hYmxlZCkuIE9ubHkgbGlzdCB0aG9zZSB0aGF0XG4gICBzcGVjaWZpY2FsbHkgY292ZXIgdGhlIG1vZGlmaWVkIGNvZGUuIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncyBvdXRwdXQgYXJyYXksXG4gICBhbmQgRE8gTk9UIGFkZCBhICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IDA3ZGQ2Mjc5MjgxOTAyMjkzNTMyMGJmZmIzZGVjNTUzM2VmYTQwZDZcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgU2F0IEp1bCAxMSAxMzo1NTo0NCAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgvbWVtY29udHJvbC5oIGIvaW5jbHVkZS9saW51eC9tZW1jb250cm9sLmhcbmluZGV4IGUxZjQ2YTAwMTZmY2ZkLi45NTcyNjA2Nzc2NzgxNSAxMDA2NDRcbi0tLSBhL2luY2x1ZGUvbGludXgvbWVtY29udHJvbC5oXG4rKysgYi9pbmNsdWRlL2xpbnV4L21lbWNvbnRyb2wuaFxuQEAgLTE0NzIsNiArMTQ3MiwzMSBAQCBzdGF0aWMgaW5saW5lIHZvaWQgbHJ1dmVjX2xvY2tfaXJxKHN0cnVjdCBscnV2ZWMgKmxydXZlYylcbiBcdHNwaW5fbG9ja19pcnEoXHUwMDI2bHJ1dmVjLVx1MDAzZWxydV9sb2NrKTtcbiB9XG4gXG4rc3RhdGljIGlubGluZSBzdHJ1Y3QgbHJ1dmVjICpscnV2ZWNfbGl2ZV9sb2NrX2lycShzdHJ1Y3QgbHJ1dmVjICpscnV2ZWMpXG4re1xuKyNpZmRlZiBDT05GSUdfTUVNQ0dcbitcdHN0cnVjdCBwZ2xpc3RfZGF0YSAqcGdkYXQgPSBscnV2ZWNfcGdkYXQobHJ1dmVjKTtcbitcdHN0cnVjdCBtZW1fY2dyb3VwICptZW1jZyA9IGxydXZlY19tZW1jZyhscnV2ZWMpO1xuK1xuK1x0cmN1X3JlYWRfbG9jaygpO1xuK1xuK1x0LypcbitcdCAqIFRoZSBtZW1jZyBjYW4gYmUgTlVMTCB3aGVuIHRoZSBtZW1vcnkgY29udHJvbGxlciBpcyBkaXNhYmxlZC5cbitcdCAqIE90aGVyd2lzZSwgdGhlIGNhbGxlciBrZWVwcyB0aGUgbWVtY2cgb3duaW5nIEBscnV2ZWMgYWxpdmUuXG4rXHQgKi9cbitcdHdoaWxlICh1bmxpa2VseShtZW1jZyBcdTAwMjZcdTAwMjYgY3NzX2lzX2R5aW5nKFx1MDAyNm1lbWNnLVx1MDAzZWNzcykpKSB7XG4rXHRcdG1lbWNnID0gcGFyZW50X21lbV9jZ3JvdXAobWVtY2cpO1xuK1x0XHRscnV2ZWMgPSBtZW1fY2dyb3VwX2xydXZlYyhtZW1jZywgcGdkYXQpO1xuK1x0fVxuK1xuK1x0c3Bpbl9sb2NrX2lycShcdTAwMjZscnV2ZWMtXHUwMDNlbHJ1X2xvY2spO1xuKyNlbHNlXG4rXHRscnV2ZWNfbG9ja19pcnEobHJ1dmVjKTtcbisjZW5kaWZcbitcbitcdHJldHVybiBscnV2ZWM7XG4rfVxuK1xuIHN0YXRpYyBpbmxpbmUgdm9pZCBscnV2ZWNfdW5sb2NrKHN0cnVjdCBscnV2ZWMgKmxydXZlYylcbiB7XG4gXHRzcGluX3VubG9jayhcdTAwMjZscnV2ZWMtXHUwMDNlbHJ1X2xvY2spO1xuZGlmZiAtLWdpdCBhL21tL3Ztc2Nhbi5jIGIvbW0vdm1zY2FuLmNcbmluZGV4IDM1YzNiYjE1YWU5NmEzLi4xYTE0MmM1ODcwMGQwMCAxMDA2NDRcbi0tLSBhL21tL3Ztc2Nhbi5jXG4rKysgYi9tbS92bXNjYW4uY1xuQEAgLTMyNjUsNyArMzI2NSw3IEBAIHN0YXRpYyB2b2lkIHVwZGF0ZV9iYXRjaF9zaXplKHN0cnVjdCBscnVfZ2VuX21tX3dhbGsgKndhbGssIHN0cnVjdCBmb2xpbyAqZm9saW8sXG4gc3RhdGljIHZvaWQgcmVzZXRfYmF0Y2hfc2l6ZShzdHJ1Y3QgbHJ1X2dlbl9tbV93YWxrICp3YWxrKVxuIHtcbiBcdGludCBnZW4sIHR5cGUsIHpvbmU7XG4tXHRzdHJ1Y3QgbHJ1dmVjICpscnV2ZWMgPSB3YWxrLVx1MDAzZWxydXZlYztcbitcdHN0cnVjdCBscnV2ZWMgKmxydXZlYyA9IGxydXZlY19saXZlX2xvY2tfaXJxKHdhbGstXHUwMDNlbHJ1dmVjKTtcbiBcdHN0cnVjdCBscnVfZ2VuX2ZvbGlvICpscnVnZW4gPSBcdTAwMjZscnV2ZWMtXHUwMDNlbHJ1Z2VuO1xuIFxuIFx0d2Fsay1cdTAwM2ViYXRjaGVkID0gMDtcbkBAIC0zMjg1LDYgKzMyODUsOCBAQCBzdGF0aWMgdm9pZCByZXNldF9iYXRjaF9zaXplKHN0cnVjdCBscnVfZ2VuX21tX3dhbGsgKndhbGspXG4gXHRcdFx0bHJ1ICs9IExSVV9BQ1RJVkU7XG4gXHRcdF9fdXBkYXRlX2xydV9zaXplKGxydXZlYywgbHJ1LCB6b25lLCBkZWx0YSk7XG4gXHR9XG4rXG4rXHRscnV2ZWNfdW5sb2NrX2lycShscnV2ZWMpO1xuIH1cbiBcbiBzdGF0aWMgaW50IHNob3VsZF9za2lwX3ZtYSh1bnNpZ25lZCBsb25nIHN0YXJ0LCB1bnNpZ25lZCBsb25nIGVuZCwgc3RydWN0IG1tX3dhbGsgKmFyZ3MpXG5AQCAtMzc3OSwxMSArMzc4MSw4IEBAIHN0YXRpYyB2b2lkIHdhbGtfbW0oc3RydWN0IG1tX3N0cnVjdCAqbW0sIHN0cnVjdCBscnVfZ2VuX21tX3dhbGsgKndhbGspXG4gXHRcdFx0bW1hcF9yZWFkX3VubG9jayhtbSk7XG4gXHRcdH1cbiBcbi1cdFx0aWYgKHdhbGstXHUwMDNlYmF0Y2hlZCkge1xuLVx0XHRcdGxydXZlY19sb2NrX2lycShscnV2ZWMpO1xuK1x0XHRpZiAod2Fsay1cdTAwM2ViYXRjaGVkKVxuIFx0XHRcdHJlc2V0X2JhdGNoX3NpemUod2Fsayk7XG4tXHRcdFx0bHJ1dmVjX3VubG9ja19pcnEobHJ1dmVjKTtcbi1cdFx0fVxuIFxuIFx0XHRjb25kX3Jlc2NoZWQoKTtcbiBcdH0gd2hpbGUgKGVyciA9PSAtRUFHQUlOKTtcbkBAIC00ODY3LDkgKzQ4NjYsNyBAQCBzdGF0aWMgaW50IGV2aWN0X2ZvbGlvcyh1bnNpZ25lZCBsb25nIG5yX3RvX3NjYW4sIHN0cnVjdCBscnV2ZWMgKmxydXZlYyxcbiBcdHdhbGsgPSBjdXJyZW50LVx1MDAzZXJlY2xhaW1fc3RhdGUtXHUwMDNlbW1fd2FsaztcbiBcdGlmICh3YWxrIFx1MDAyNlx1MDAyNiB3YWxrLVx1MDAzZWJhdGNoZWQpIHtcbiBcdFx0d2Fsay1cdTAwM2VscnV2ZWMgPSBscnV2ZWM7XG4tXHRcdGxydXZlY19sb2NrX2lycShscnV2ZWMpO1xuIFx0XHRyZXNldF9iYXRjaF9zaXplKHdhbGspO1xuLVx0XHRscnV2ZWNfdW5sb2NrX2lycShscnV2ZWMpO1xuIFx0fVxuIFxuIFx0bW9kX2xydXZlY19zdGF0ZShscnV2ZWMsIFBHREVNT1RFX0tTV0FQRCArIHJlY2xhaW1lcl9vZmZzZXQoc2MpLFxuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTFUMTM6NTU6NDYuNjQ4Mjk1NDIxWiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTQ4MTMyMzY4MywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIExSVSBQYWdlIFJlY2xhaW0gUGF0Y2gqKlxuXG5Pa2F5LCBzbyB0aGlzIHBhdGNoIGlzIG1ha2luZyBzb21lIGludGVyZXN0aW5nIGNoYW5nZXMgd2l0aGluIHRoZSBtZW1vcnkgbWFuYWdlbWVudCBzdWJzeXN0ZW0uIFNwZWNpZmljYWxseSwgaXQncyBhYm91dCBob3cgd2UgaGFuZGxlIExSVSBwYWdlIHJlY2xhaW0gYW5kIHRoZSBpbnRlcmFjdGlvbiB3aXRoIG1lbWNncy4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRoYXQgdGhpcyBpcyBsaWtlbHkgYWRkcmVzc2luZyBzb21lIHN1YnRsZSBwZXJmb3JtYW5jZSBvciBjb3JyZWN0bmVzcyBpc3N1ZSwgYXMgd2UgYXJlIHJhcmVseSBtYWtpbmcgZnVuY3Rpb25hbCBjaGFuZ2VzIGluIHRoaXMgYXJlYSB1bmxlc3MgdGhlcmUncyBhIGdvb2QgcmVhc29uLlxuXG5UaGUgY29yZSBvZiB0aGUgY2hhbmdlIHNlZW1zIHRvIGJlIGludHJvZHVjaW5nIGEgbmV3IGZ1bmN0aW9uLCBgbHJ1dmVjX2xpdmVfbG9ja19pcnFgLCBhbmQgdXNpbmcgaXQgaW4gYG1tL3Ztc2Nhbi5jYCB0byByZXBsYWNlIHRoZSBleGlzdGluZyBgbHJ1dmVjX2xvY2tfaXJxYCB3aXRoaW4gdGhlIGByZXNldF9iYXRjaF9zaXplYCBmdW5jdGlvbi4gVGhlIGtleSBkaWZmZXJlbmNlLCBhcyBJIHVuZGVyc3RhbmQgaXQsIGlzIHRoYXQgdGhpcyBuZXcgZnVuY3Rpb24gY2FyZWZ1bGx5IG5hdmlnYXRlcyB0aGUgbWVtY2cgaGllcmFyY2h5IHRvIGZpbmQgYSBcImxpdmVcIiAobm9uLWR5aW5nKSBtZW1jZyBhbmQgbG9ja3MgaXRzIGBscnV2ZWNgLlxuXG5NeSBmaXJzdCBpbmNsaW5hdGlvbiBpcyB0byBkZWx2ZSBpbnRvIHRoZSBjb25maWd1cmF0aW9uIHJlcXVpcmVtZW50cy4gVGhlIGNvZGUgaXRzZWxmLCBgbHJ1dmVjX2xpdmVfbG9ja19pcnFgLCBpcyBjb25kaXRpb25hbGx5IGNvbXBpbGVkIGJhc2VkIG9uIGBDT05GSUdfTUVNQ0dgLiBHaXZlbiB0aGlzIGFuZCB0aGUgZmFjdCB0aGF0IGBtbS92bXNjYW4uY2AgaXMgYWx3YXlzIHBhcnQgb2YgdGhlIGJ1aWxkLCBpdCdzIGNsZWFyIHRoZSBjaGFuZ2VzIHdpbGwgZGVwZW5kIG9uIGBDT05GSUdfTUVNQ0dgLiBIb3dldmVyLCBzaW5jZSBgbHJ1X2dlbl9tbV93YWxrYCBhbmQgYGxydV9nZW5fZm9saW9gIGFyZSBhbHNvIGJlaW5nIHVzZWQsIEkgd2FudCB0byB2ZXJpZnkgaWYgYENPTkZJR19MUlVfR0VOYCB3aWxsIGFsc28gY29tZSBpbnRvIHBsYXkuIFRvIGJlIHN1cmUsIEknbGwgcXVpY2tseSBjaGVjayB0aGUgY29kZWJhc2Ugd2l0aCBgZ3JlcHBlcmAgYW5kIHNlZSB3aGVyZSB0aGVzZSBmdW5jdGlvbnMgYXJlIGRlZmluZWQgYW5kIHVzZWQsIGFuZCB3aGljaCBjb25maWd1cmF0aW9ucyBhZmZlY3QgdGhlaXIgY29tcGlsYXRpb24uIFRoaXMgc2hvdWxkIHF1aWNrbHkgY2xhcmlmeSB0aGUgZXhhY3QgY29uZmlndXJhdGlvbiBkZXBlbmRlbmNpZXMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI3NDIsIk91dHB1dFRva2VucyI6MzQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyNjYsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xMVQxMzo1NTo1Mi4xMjk2MjExMjRaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTg5MzkxMDksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibHJ1X2dlbl9tbV93YWxrXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm1tL3Ztc2Nhbi5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm1tL3Ztc2Nhbi5jPTI4NDc9c3RhdGljIHN0cnVjdCBscnVfZ2VuX21tX3N0YXRlICpnZXRfbW1fc3RhdGUoc3RydWN0IGxydXZlYyAqbHJ1dmVjKVxcbi0tXFxubW0vdm1zY2FuLmMtMjg1MS1cXG5tbS92bXNjYW4uYzoyODUyOnN0YXRpYyBzdHJ1Y3QgbW1fc3RydWN0ICpnZXRfbmV4dF9tbShzdHJ1Y3QgbHJ1X2dlbl9tbV93YWxrICp3YWxrKVxcbm1tL3Ztc2Nhbi5jLTI4NTMte1xcbi0tXFxubW0vdm1zY2FuLmM9Mjk3ND1zdGF0aWMgc3RydWN0IGxydV9nZW5fbW1fc3RhdGUgKmdldF9tbV9zdGF0ZShzdHJ1Y3QgbHJ1dmVjICpscnV2ZWMpXFxuLS1cXG5tbS92bXNjYW4uYy0yOTc4LVxcbm1tL3Ztc2Nhbi5jOjI5Nzk6c3RhdGljIHN0cnVjdCBtbV9zdHJ1Y3QgKmdldF9uZXh0X21tKHN0cnVjdCBscnVfZ2VuX21tX3dhbGsgKndhbGspXFxubW0vdm1zY2FuLmMtMjk4MC17XFxuLS1cXG5tbS92bXNjYW4uYy0yOTg1LVxcbm1tL3Ztc2Nhbi5jOjI5ODY6c3RhdGljIHZvaWQgcmVzZXRfbW1fc3RhdHMoc3RydWN0IGxydV9nZW5fbW1fd2FsayAqd2FsaywgYm9vbCBsYXN0KVxcbm1tL3Ztc2Nhbi5jLTI5ODcte1xcbi0tXFxubW0vdm1zY2FuLmMtMzAxMC1cXG5tbS92bXNjYW4uYzozMDExOnN0YXRpYyBib29sIGl0ZXJhdGVfbW1fbGlzdChzdHJ1Y3QgbHJ1X2dlbl9tbV93YWxrICp3YWxrLCBzdHJ1Y3QgbW1fc3RydWN0ICoqaXRlcilcXG5tbS92bXNjYW4uYy0zMDEyLXtcXG4tLVxcbm1tL3Ztc2Nhbi5jPTMyMjM9c3RhdGljIGludCBmb2xpb19pbmNfZ2VuKHN0cnVjdCBscnV2ZWMgKmxydXZlYywgc3RydWN0IGZvbGlvICpmb2xpbylcXG4tLVxcbm1tL3Ztc2Nhbi5jLTMyNDgtXFxubW0vdm1zY2FuLmM6MzI0OTpzdGF0aWMgdm9pZCB1cGRhdGVfYmF0Y2hfc2l6ZShzdHJ1Y3QgbHJ1X2dlbl9tbV93YWxrICp3YWxrLCBzdHJ1Y3QgZm9saW8gKmZvbGlvLFxcbm1tL3Ztc2Nhbi5jLTMyNTAtXFx0XFx0XFx0ICAgICAgaW50IG9sZF9nZW4sIGludCBuZXdfZ2VuKVxcbi0tXFxubW0vdm1zY2FuLmMtMzI2NC1cXG5tbS92bXNjYW4uYzozMjY1OnN0YXRpYyB2b2lkIHJlc2V0X2JhdGNoX3NpemUoc3RydWN0IGxydV9nZW5fbW1fd2FsayAqd2FsaylcXG5tbS92bXNjYW4uYy0zMjY2LXtcXG4tLVxcbm1tL3Ztc2Nhbi5jPTMyOTI9c3RhdGljIGludCBzaG91bGRfc2tpcF92bWEodW5zaWduZWQgbG9uZyBzdGFydCwgdW5zaWduZWQgbG9uZyBlbmQsIHN0cnVjdCBtbV93YWxrICphcmdzKVxcbi0tXFxubW0vdm1zY2FuLmMtMzI5NS1cXHRzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKnZtYSA9IGFyZ3MtXFx1MDAzZXZtYTtcXG5tbS92bXNjYW4uYzozMjk2OlxcdHN0cnVjdCBscnVfZ2VuX21tX3dhbGsgKndhbGsgPSBhcmdzLVxcdTAwM2Vwcml2YXRlO1xcbm1tL3Ztc2Nhbi5jLTMyOTctXFxuLS1cXG5tbS92bXNjYW4uYz0zNDMwPXN0YXRpYyBib29sIHN1aXRhYmxlX3RvX3NjYW4oaW50IHRvdGFsLCBpbnQgeW91bmcpXFxuLS1cXG5tbS92bXNjYW4uYy0zNDM3LVxcbm1tL3Ztc2Nhbi5jOjM0Mzg6c3RhdGljIHZvaWQgd2Fsa191cGRhdGVfZm9saW8oc3RydWN0IGxydV9nZW5fbW1fd2FsayAqd2Fsaywgc3RydWN0IGZvbGlvICpmb2xpbyxcXG5tbS92bXNjYW4uYy0zNDM5LVxcdFxcdFxcdCAgICAgIGludCBuZXdfZ2VuLCBib29sIGRpcnR5KVxcbi0tXFxubW0vdm1zY2FuLmM9MzQ2Mj1zdGF0aWMgYm9vbCB3YWxrX3B0ZV9yYW5nZShwbWRfdCAqcG1kLCB1bnNpZ25lZCBsb25nIHN0YXJ0LCB1bnNpZ25lZCBsb25nIGVuZCxcXG4tLVxcbm1tL3Ztc2Nhbi5jLTM0NzItXFx0c3RydWN0IGZvbGlvICpsYXN0ID0gTlVMTDtcXG5tbS92bXNjYW4uYzozNDczOlxcdHN0cnVjdCBscnVfZ2VuX21tX3dhbGsgKndhbGsgPSBhcmdzLVxcdTAwM2Vwcml2YXRlO1xcbm1tL3Ztc2Nhbi5jLTM0NzQtXFx0c3RydWN0IG1lbV9jZ3JvdXAgKm1lbWNnID0gbHJ1dmVjX21lbWNnKHdhbGstXFx1MDAzZWxydXZlYyk7XFxuLS1cXG5tbS92bXNjYW4uYz0zNTUzPXN0YXRpYyB2b2lkIHdhbGtfcG1kX3JhbmdlX2xvY2tlZChwdWRfdCAqcHVkLCB1bnNpZ25lZCBsb25nIGFkZHIsIHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqdm1hLFxcbi0tXFxubW0vdm1zY2FuLmMtMzU2MC1cXHRzdHJ1Y3QgZm9saW8gKmxhc3QgPSBOVUxMO1xcbm1tL3Ztc2Nhbi5jOjM1NjE6XFx0c3RydWN0IGxydV9nZW5fbW1fd2FsayAqd2FsayA9IGFyZ3MtXFx1MDAzZXByaXZhdGU7XFxubW0vdm1zY2FuLmMtMzU2Mi1cXHRzdHJ1Y3QgbWVtX2Nncm91cCAqbWVtY2cgPSBscnV2ZWNfbWVtY2cod2Fsay1cXHUwMDNlbHJ1dmVjKTtcXG4tLVxcbm1tL3Ztc2Nhbi5jPTM2NDE9c3RhdGljIHZvaWQgd2Fsa19wbWRfcmFuZ2UocHVkX3QgKnB1ZCwgdW5zaWduZWQgbG9uZyBzdGFydCwgdW5zaWduZWQgbG9uZyBlbmQsXFxuLS1cXG5tbS92bXNjYW4uYy0zNjUwLVxcdHVuc2lnbmVkIGxvbmcgZmlyc3QgPSAtMTtcXG5tbS92bXNjYW4uYzozNjUxOlxcdHN0cnVjdCBscnVfZ2VuX21tX3dhbGsgKndhbGsgPSBhcmdzLVxcdTAwM2Vwcml2YXRlO1xcbm1tL3Ztc2Nhbi5jLTM2NTItXFx0c3RydWN0IGxydV9nZW5fbW1fc3RhdGUgKm1tX3N0YXRlID0gZ2V0X21tX3N0YXRlKHdhbGstXFx1MDAzZWxydXZlYyk7XFxuLS1cXG5tbS92bXNjYW4uYz0zNzE0PXN0YXRpYyBpbnQgd2Fsa19wdWRfcmFuZ2UocDRkX3QgKnA0ZCwgdW5zaWduZWQgbG9uZyBzdGFydCwgdW5zaWduZWQgbG9uZyBlbmQsXFxuLS1cXG5tbS92bXNjYW4uYy0zNzIwLVxcdHVuc2lnbmVkIGxvbmcgbmV4dDtcXG5tbS92bXNjYW4uYzozNzIxOlxcdHN0cnVjdCBscnVfZ2VuX21tX3dhbGsgKndhbGsgPSBhcmdzLVxcdTAwM2Vwcml2YXRlO1xcbm1tL3Ztc2Nhbi5jLTM3MjItXFxuLS1cXG5tbS92bXNjYW4uYy0zNzU1LVxcbm1tL3Ztc2Nhbi5jOjM3NTY6c3RhdGljIHZvaWQgd2Fsa19tbShzdHJ1Y3QgbW1fc3RydWN0ICptbSwgc3RydWN0IGxydV9nZW5fbW1fd2FsayAqd2FsaylcXG5tbS92bXNjYW4uYy0zNzU3LXtcXG4tLVxcbm1tL3Ztc2Nhbi5jLTM3OTAtXFxubW0vdm1zY2FuLmM6Mzc5MTpzdGF0aWMgc3RydWN0IGxydV9nZW5fbW1fd2FsayAqc2V0X21tX3dhbGsoc3RydWN0IHBnbGlzdF9kYXRhICpwZ2RhdCwgYm9vbCBmb3JjZV9hbGxvYylcXG5tbS92bXNjYW4uYy0zNzkyLXtcXG5tbS92bXNjYW4uYzozNzkzOlxcdHN0cnVjdCBscnVfZ2VuX21tX3dhbGsgKndhbGsgPSBjdXJyZW50LVxcdTAwM2VyZWNsYWltX3N0YXRlLVxcdTAwM2VtbV93YWxrO1xcbm1tL3Ztc2Nhbi5jLTM3OTQtXFxuLS1cXG5tbS92bXNjYW4uYz0zODExPXN0YXRpYyB2b2lkIGNsZWFyX21tX3dhbGsodm9pZClcXG5tbS92bXNjYW4uYy0zODEyLXtcXG5tbS92bXNjYW4uYzozODEzOlxcdHN0cnVjdCBscnVfZ2VuX21tX3dhbGsgKndhbGsgPSBjdXJyZW50LVxcdTAwM2VyZWNsYWltX3N0YXRlLVxcdTAwM2VtbV93YWxrO1xcbm1tL3Ztc2Nhbi5jLTM4MTQtXFxuLS1cXG5tbS92bXNjYW4uYz0zOTk0PXN0YXRpYyBib29sIHRyeV90b19pbmNfbWF4X3NlcShzdHJ1Y3QgbHJ1dmVjICpscnV2ZWMsIHVuc2lnbmVkIGxvbmcgc2VxLFxcbi0tXFxubW0vdm1zY2FuLmMtMzk5Ny1cXHRib29sIHN1Y2Nlc3M7XFxubW0vdm1zY2FuLmM6Mzk5ODpcXHRzdHJ1Y3QgbHJ1X2dlbl9tbV93YWxrICp3YWxrO1xcbm1tL3Ztc2Nhbi5jLTM5OTktXFx0c3RydWN0IG1tX3N0cnVjdCAqbW0gPSBOVUxMO1xcbi0tXFxubW0vdm1zY2FuLmM9NDE4MD1ib29sIGxydV9nZW5fbG9va19hcm91bmQoc3RydWN0IHBhZ2Vfdm1hX21hcHBlZF93YWxrICpwdm13LCB1bnNpZ25lZCBpbnQgbnIpXFxuLS1cXG5tbS92bXNjYW4uYy00MTg1LVxcdHVuc2lnbmVkIGxvbmcgZW5kO1xcbm1tL3Ztc2Nhbi5jOjQxODY6XFx0c3RydWN0IGxydV9nZW5fbW1fd2FsayAqd2FsaztcXG5tbS92bXNjYW4uYy00MTg3LVxcdHN0cnVjdCBmb2xpbyAqbGFzdCA9IE5VTEw7XFxuLS1cXG5tbS92bXNjYW4uYz00ODAxPXN0YXRpYyBpbnQgZXZpY3RfZm9saW9zKHVuc2lnbmVkIGxvbmcgbnJfdG9fc2Nhbiwgc3RydWN0IGxydXZlYyAqbHJ1dmVjLFxcbi0tXFxubW0vdm1zY2FuLmMtNDgwOS1cXHRzdHJ1Y3QgcmVjbGFpbV9zdGF0IHN0YXQ7XFxubW0vdm1zY2FuLmM6NDgxMDpcXHRzdHJ1Y3QgbHJ1X2dlbl9tbV93YWxrICp3YWxrO1xcbm1tL3Ztc2Nhbi5jLTQ4MTEtXFx0aW50IHNjYW5uZWQsIHJlY2xhaW1lZDtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTFUMTM6NTU6NTIuMTg4NTY3Nzc0WiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzQ1NjQxNzE1MywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBteSBvd246XG5cbioqQW5hbHl6aW5nIGEgVk1TY2FuIFBhdGNoIGFuZCBpdHMgRGVwZW5kZW5jeSBvbiBMUlVfR0VOKipcblxuUmlnaHQsIHNvIHRoaXMgcGF0Y2ggaXMgdG91Y2hpbmcgYHJlc2V0X2JhdGNoX3NpemVgIHdpdGhpbiB0aGUgYG1tL3Ztc2Nhbi5jYCBmaWxlLiBNeSBpbW1lZGlhdGUgdGhvdWdodCBpcyB0byB1bmRlcnN0YW5kIHRoZSBjb250ZXh0LiBXaGF0J3MgZHJpdmluZyB0aGlzIGNoYW5nZSB0byB0aGUgYmF0Y2ggc2l6ZSByZXNldD8gTW9yZSBpbXBvcnRhbnRseSwgaXMgdGhpcyBjaGFuZ2UgY29udGluZ2VudCBvbiBgQ09ORklHX0xSVV9HRU5gIGJlaW5nIGVuYWJsZWQ/IEl0J3MgYSBrZXkgcXVlc3Rpb24uIGBDT05GSUdfTFJVX0dFTmAsIGlmIHByZXNlbnQsIGNhbiBoYXZlIHByb2ZvdW5kIGltcGxpY2F0aW9ucyBmb3IgaG93IHRoZSBrZXJuZWwgaGFuZGxlcyBwYWdlIHJlcGxhY2VtZW50IGFuZCwgYnkgZXh0ZW5zaW9uLCBiYXRjaCBzaXplcyB1c2VkIGluIHRoZSBzY2FubmluZyBwcm9jZXNzLiBBIGNoYW5nZSBoZXJlIGNvdWxkIGJlIGEgZGlyZWN0IHJlc3VsdCBvZiB3YW50aW5nIGEgbmV3IGZlYXR1cmUgaW4gTFJVX0dFTi4gSXQgY291bGQgYmUgZm9yIHBlcmZvcm1hbmNlIHJlYXNvbnMsIG9yIG1heWJlIHRvIGZpeCBhIGJ1ZyBpbiBMUlVfR0VOLiBJIHdhbnQgdG8gY2hlY2sgYWxsIG9mIHRoZXNlIHBvc3NpYmlsaXRlcy4gSSdsbCBuZWVkIHRvIGRpZyBpbnRvIHRoZSBjb2RlLCBhbmQgcHJvYmFibHkgY3Jvc3MtcmVmZXJlbmNlIHRoZSBjb21taXQgbWVzc2FnZXMuIEkgYW0gaG9waW5nIHRoYXQgYSBjYXJlZnVsIGNvbXBhcmlzb24gb2YgdGhlIGNvZGUgYW5kIGNvbW1pdCBtZXNzYWdlcyBzaG91bGQgcmV2ZWFsIHdoZXRoZXIgYENPTkZJR19MUlVfR0VOYCBpcyB0cnVseSBhIHByZXJlcXVpc2l0ZSBvciBpZiB0aGlzIG1vZGlmaWNhdGlvbiBpcyBpbmRlcGVuZGVudC4gVW5kZXJzdGFuZGluZyB0aGlzIGRlcGVuZGVuY3kgaXMgZXNzZW50aWFsIGJlZm9yZSBJIGNhbiBhY2N1cmF0ZWx5IGFzc2VzcyB0aGUgcGF0Y2gncyBpbXBhY3QgYW5kIGl0cyBvdmVyYWxsIHZhbGlkaXR5LlxuXG5cbiIsIklucHV0VG9rZW5zIjo1MjQ1LCJPdXRwdXRUb2tlbnMiOjMxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDMsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTFUMTM6NTU6NTUuNjQ0OTg2MzE3WiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU0NzA0MDUxLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInJlc2V0X2JhdGNoX3NpemVcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibW0vdm1zY2FuLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibW0vdm1zY2FuLmM9MzI0OT1zdGF0aWMgdm9pZCB1cGRhdGVfYmF0Y2hfc2l6ZShzdHJ1Y3QgbHJ1X2dlbl9tbV93YWxrICp3YWxrLCBzdHJ1Y3QgZm9saW8gKmZvbGlvLFxcbi0tXFxubW0vdm1zY2FuLmMtMzI2NC1cXG5tbS92bXNjYW4uYzozMjY1OnN0YXRpYyB2b2lkIHJlc2V0X2JhdGNoX3NpemUoc3RydWN0IGxydV9nZW5fbW1fd2FsayAqd2FsaylcXG5tbS92bXNjYW4uYy0zMjY2LXtcXG4tLVxcbm1tL3Ztc2Nhbi5jPTM3NTY9c3RhdGljIHZvaWQgd2Fsa19tbShzdHJ1Y3QgbW1fc3RydWN0ICptbSwgc3RydWN0IGxydV9nZW5fbW1fd2FsayAqd2FsaylcXG4tLVxcbm1tL3Ztc2Nhbi5jLTM3ODQtXFx0XFx0aWYgKHdhbGstXFx1MDAzZWJhdGNoZWQpXFxubW0vdm1zY2FuLmM6Mzc4NTpcXHRcXHRcXHRyZXNldF9iYXRjaF9zaXplKHdhbGspO1xcbm1tL3Ztc2Nhbi5jLTM3ODYtXFxuLS1cXG5tbS92bXNjYW4uYz00ODAxPXN0YXRpYyBpbnQgZXZpY3RfZm9saW9zKHVuc2lnbmVkIGxvbmcgbnJfdG9fc2Nhbiwgc3RydWN0IGxydXZlYyAqbHJ1dmVjLFxcbi0tXFxubW0vdm1zY2FuLmMtNDg2OC1cXHRcXHR3YWxrLVxcdTAwM2VscnV2ZWMgPSBscnV2ZWM7XFxubW0vdm1zY2FuLmM6NDg2OTpcXHRcXHRyZXNldF9iYXRjaF9zaXplKHdhbGspO1xcbm1tL3Ztc2Nhbi5jLTQ4NzAtXFx0fVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xMVQxMzo1NTo1NS42OTk2OTU3MzhaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo3MzE5NjY2MTM2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhhdCB0aG91Z2h0IHByb2Nlc3MsIGFzIGlmIGl0IHdlcmUgbXkgb3duOlxuXG4qKkludmVzdGlnYXRpbmcgYHJlc2V0X2JhdGNoX3NpemVgKipcblxuQWxyaWdodCwgSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2hlcmUgYHJlc2V0X2JhdGNoX3NpemVgIGlzIGRlZmluZWQgd2l0aGluIHRoZSBjb2RlLiBUaGlzIGxpa2VseSBpbXBhY3RzIGl0cyBzY29wZSBhbmQgaG93IGl0IGJlaGF2ZXMuIFRoZSBmaXJzdCB0aGluZyBJJ2xsIGNoZWNrIGlzIHdoZXRoZXIgaXQncyBjb25kaXRpb25hbGx5IGNvbXBpbGVkLiBTcGVjaWZpY2FsbHksIEknbSB0aGlua2luZywgaXMgYHJlc2V0X2JhdGNoX3NpemVgIGRlZmluZWQgKm9ubHkqIGlmIGBDT05GSUdfTFJVX0dFTmAgaXMgYWxzbyBkZWZpbmVkPyBUaGF0IHdvdWxkIGJlIHRoZSBwbGFjZSB0byBzdGFydCBpZiBpdCdzIG5vdCBhIGRpcmVjdCBwYXJ0IG9mIHRoZSBjb3JlLiBDaGVja2luZyB0aGUgcHJlcHJvY2Vzc29yIGRpcmVjdGl2ZXMgd2lsbCByZXZlYWwgaWYgaXRzIHVzZSBpcyBjb250cm9sbGVkIGJ5IGEgY29uZmlndXJhdGlvbiBvcHRpb24sIHdoaWNoIHdpbGwgdGhlbiBoYXZlIGZ1cnRoZXIgaW1wbGljYXRpb25zIGFib3V0IGhvdyB0aGUgcHJvZ3JhbSBiZWhhdmVzIGJhc2VkIG9uIGl0cyBidWlsZCBjb25maWd1cmF0aW9uLlxuXG5cbiIsIklucHV0VG9rZW5zIjo1ODk0LCJPdXRwdXRUb2tlbnMiOjMyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjgsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTFUMTM6NTY6MDMuMDE5MzYzNzk0WiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU1OTczMTcwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIkNPTkZJR19MUlVfR0VOXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm1tL3Ztc2Nhbi5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm1tL3Ztc2Nhbi5jPTgyND1lbnVtIGZvbGlvX3JlZmVyZW5jZXMge1xcbi0tXFxubW0vdm1zY2FuLmMtODMwLVxcbm1tL3Ztc2Nhbi5jOjgzMTojaWZkZWYgQ09ORklHX0xSVV9HRU5cXG5tbS92bXNjYW4uYy04MzItLypcXG4tLVxcbm1tL3Ztc2Nhbi5jPTg1ND1zdGF0aWMgYm9vbCBscnVfZ2VuX3NldF9yZWZzKHN0cnVjdCBmb2xpbyAqZm9saW8pXFxuLS1cXG5tbS92bXNjYW4uYy04NTctfVxcbm1tL3Ztc2Nhbi5jOjg1ODojZW5kaWYgLyogQ09ORklHX0xSVV9HRU4gKi9cXG5tbS92bXNjYW4uYy04NTktXFxuLS1cXG5tbS92bXNjYW4uYz0yNjEzPXN0YXRpYyBib29sIGNhbl9hZ2VfYW5vbl9wYWdlcyhzdHJ1Y3QgbHJ1dmVjICpscnV2ZWMsXFxuLS1cXG5tbS92bXNjYW4uYy0yNjI0LVxcbm1tL3Ztc2Nhbi5jOjI2MjU6I2lmZGVmIENPTkZJR19MUlVfR0VOXFxubW0vdm1zY2FuLmMtMjYyNi1cXG5tbS92bXNjYW4uYz0yNjI3PURFRklORV9TVEFUSUNfS0VZX0ZBTFNFKGxydV9zd2l0Y2gpO1xcbm1tL3Ztc2Nhbi5jOjI2Mjg6I2lmZGVmIENPTkZJR19MUlVfR0VOX0VOQUJMRURcXG5tbS92bXNjYW4uYy0yNjI5LURFRklORV9TVEFUSUNfS0VZX0FSUkFZX1RSVUUobHJ1X2dlbl9jYXBzLCBOUl9MUlVfR0VOX0NBUFMpO1xcbi0tXFxubW0vdm1zY2FuLmM9MjgwOT1zdGF0aWMgdm9pZCByZXNldF9ibG9vbV9maWx0ZXIoc3RydWN0IGxydV9nZW5fbW1fc3RhdGUgKm1tX3N0YXRlLCB1bnNpZ25lZCBsb25nIHNlcSlcXG4tLVxcbm1tL3Ztc2Nhbi5jLTI4MjgtXFxubW0vdm1zY2FuLmM6MjgyOTojaWZkZWYgQ09ORklHX0xSVV9HRU5fV0FMS1NfTU1VXFxubW0vdm1zY2FuLmMtMjgzMC1cXG4tLVxcbm1tL3Ztc2Nhbi5jPTI5Mzg9dm9pZCBscnVfZ2VuX21pZ3JhdGVfbW0oc3RydWN0IG1tX3N0cnVjdCAqbW0pXFxuLS1cXG5tbS92bXNjYW4uYy0yOTY2LVxcbm1tL3Ztc2Nhbi5jOjI5Njc6I2Vsc2UgLyogIUNPTkZJR19MUlVfR0VOX1dBTEtTX01NVSAqL1xcbm1tL3Ztc2Nhbi5jLTI5NjgtXFxuLS1cXG5tbS92bXNjYW4uYz01ODUyPWxhdGVfaW5pdGNhbGwoaW5pdF9scnVfZ2VuKTtcXG5tbS92bXNjYW4uYy01ODUzLVxcbm1tL3Ztc2Nhbi5jOjU4NTQ6I2Vsc2UgLyogIUNPTkZJR19MUlVfR0VOICovXFxubW0vdm1zY2FuLmMtNTg1NS1cXG4tLVxcbm1tL3Ztc2Nhbi5jPTU4NjY9c3RhdGljIHZvaWQgbHJ1X2dlbl9zaHJpbmtfbm9kZShzdHJ1Y3QgcGdsaXN0X2RhdGEgKnBnZGF0LCBzdHJ1Y3Qgc2Nhbl9jb250cm9sICpzYylcXG4tLVxcbm1tL3Ztc2Nhbi5jLTU4NzAtXFxubW0vdm1zY2FuLmM6NTg3MTojZW5kaWYgLyogQ09ORklHX0xSVV9HRU4gKi9cXG5tbS92bXNjYW4uYy01ODcyLVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xMVQxMzo1NjowMy4wNzUzNDM2MjRaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0NjE4MTYzNjYzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgQ29kZSdzIERlcGVuZGVuY2UgYW5kIEZ1enppbmcgU3RyYXRlZ3kqKlxuXG5Pa2F5LCBzbyBJJ3ZlIHBpbnBvaW50ZWQgYHJlc2V0X2JhdGNoX3NpemVgLiBMb29raW5nIGF0IHRoZSBjb2RlLCBpdCdzIGRlZmluZWQgYXJvdW5kIGxpbmUgMzI2NSwgd2hpY2ggaXMgZmlybWx5IHdpdGhpbiB0aGUgY29uZGl0aW9uYWwgYmxvY2sgdGllZCB0byBgI2lmZGVmIENPTkZJR19MUlVfR0VOYC4gRXhjZWxsZW50LCB0aGF0IG1lYW5zIGBDT05GSUdfTFJVX0dFTmAgaXMgZGVmaW5pdGVseSBhIHByZXJlcXVpc2l0ZSBmb3IgdGhpcyBmdW5jdGlvbmFsaXR5IHRvIGV2ZW4gZXhpc3QuIEFuZCwgc2luY2UgSSB3YW50IHRvIHRlc3QgdGhlIG5ldyBsb2dpYyB3aXRoaW4gYGxydXZlY19saXZlX2xvY2tfaXJxYCwgSSdsbCBuZWVkIHRvIG1ha2Ugc3VyZSBgQ09ORklHX01FTUNHYCBpcyBlbmFibGVkIHRvby5cblxuTm93LCBsZXQncyB0aGluayBhYm91dCBmdXp6aW5nIHRhcmdldHMuIGBscnV2ZWNfbGl2ZV9sb2NrX2lycWAgaXRzZWxmIGlzIGlubGluZSBpbiBhIGhlYWRlciwgc28gdGhhdCdzIG5vdCBkaXJlY3RseSBmdXp6YWJsZS4gQnV0LCBpdCdzIHVzZWQgd2l0aGluIGByZXNldF9iYXRjaF9zaXplYCwgd2hpY2ggaXMgc3RhdGljLiBgcmVzZXRfYmF0Y2hfc2l6ZWAsIGluIHR1cm4sIGlzIGNhbGxlZCBieSBgd2Fsa19tbWAgYW5kIGBldmljdF9mb2xpb3NgLiBUaG9zZSBhcmUgdGhlIGVudHJ5IHBvaW50cyB0byBjb25jZW50cmF0ZSBvbi4gSSdsbCBuZWVkIHRvIGFuYWx5emUgYHdhbGtfbW1gIGFuZCBgZXZpY3RfZm9saW9zYCB0byB1bmRlcnN0YW5kIGhvdyB0aGV5IHVzZSBgcmVzZXRfYmF0Y2hfc2l6ZWAgYW5kIGluZGlyZWN0bHkgYGxydXZlY19saXZlX2xvY2tfaXJxYC4gRnJvbSB0aGVyZSBJJ2xsIGNvbnN0cnVjdCBhIGZvY3VzZWQgZnV6emluZyBjYW1wYWlnbiB0YXJnZXRpbmcgdGhlbS5cblxuXG4iLCJJbnB1dFRva2VucyI6Njc5MSwiT3V0cHV0VG9rZW5zIjoyOSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE5MiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xMVQxMzo1NjowNy42OTM1MDkwMDdaIiwiU2VxIjoxMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU2ODY4MzExLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIndhbGtfbW1cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibW0vdm1zY2FuLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibW0vdm1zY2FuLmM9MjYzMj1ERUZJTkVfU1RBVElDX0tFWV9BUlJBWV9GQUxTRShscnVfZ2VuX2NhcHMsIE5SX0xSVV9HRU5fQ0FQUyk7XFxuLS1cXG5tbS92bXNjYW4uYy0yNjM1LVxcbm1tL3Ztc2Nhbi5jOjI2MzY6c3RhdGljIGJvb2wgc2hvdWxkX3dhbGtfbW11KHZvaWQpXFxubW0vdm1zY2FuLmMtMjYzNy17XFxuLS1cXG5tbS92bXNjYW4uYz0zNzE0PXN0YXRpYyBpbnQgd2Fsa19wdWRfcmFuZ2UocDRkX3QgKnA0ZCwgdW5zaWduZWQgbG9uZyBzdGFydCwgdW5zaWduZWQgbG9uZyBlbmQsXFxuLS1cXG5tbS92bXNjYW4uYy0zNzU1LVxcbm1tL3Ztc2Nhbi5jOjM3NTY6c3RhdGljIHZvaWQgd2Fsa19tbShzdHJ1Y3QgbW1fc3RydWN0ICptbSwgc3RydWN0IGxydV9nZW5fbW1fd2FsayAqd2FsaylcXG5tbS92bXNjYW4uYy0zNzU3LXtcXG4tLVxcbm1tL3Ztc2Nhbi5jPTM5OTQ9c3RhdGljIGJvb2wgdHJ5X3RvX2luY19tYXhfc2VxKHN0cnVjdCBscnV2ZWMgKmxydXZlYywgdW5zaWduZWQgbG9uZyBzZXEsXFxuLS1cXG5tbS92bXNjYW4uYy00MDE3LVxcdCAqL1xcbm1tL3Ztc2Nhbi5jOjQwMTg6XFx0aWYgKCFzaG91bGRfd2Fsa19tbXUoKSkge1xcbm1tL3Ztc2Nhbi5jLTQwMTktXFx0XFx0c3VjY2VzcyA9IGl0ZXJhdGVfbW1fbGlzdF9ub3dhbGsobHJ1dmVjLCBzZXEpO1xcbi0tXFxubW0vdm1zY2FuLmMtNDAzNi1cXHRcXHRpZiAobW0pXFxubW0vdm1zY2FuLmM6NDAzNzpcXHRcXHRcXHR3YWxrX21tKG1tLCB3YWxrKTtcXG5tbS92bXNjYW4uYy00MDM4LVxcdH0gd2hpbGUgKG1tKTtcXG4tLVxcbm1tL3Ztc2Nhbi5jPTUzNDM9c3RhdGljIHNzaXplX3QgZW5hYmxlZF9zaG93KHN0cnVjdCBrb2JqZWN0ICprb2JqLCBzdHJ1Y3Qga29ial9hdHRyaWJ1dGUgKmF0dHIsIGNoYXIgKmJ1ZilcXG4tLVxcbm1tL3Ztc2Nhbi5jLTUzNDktXFxubW0vdm1zY2FuLmM6NTM1MDpcXHRpZiAoc2hvdWxkX3dhbGtfbW11KCkpXFxubW0vdm1zY2FuLmMtNTM1MS1cXHRcXHRjYXBzIHw9IEJJVChMUlVfR0VOX01NX1dBTEspO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xMVQxMzo1NjowNy43NTAzODY2OTdaIiwiU2VxIjoxMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6Mjg2NzY4MTUyNCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IGFuYWx5c2lzIG9mIHRoZSBwcm92aWRlZCBjb2RlIHNuaXBwZXQ6XG5cbioqU3RhdGljIEZ1bmN0aW9uIEFuYWx5c2lzKipcblxuT2theSwgc28gYHdhbGtfbW1gIGlzIGRlY2xhcmVkIGFzIHN0YXRpYywgYW5kIGBldmljdF9mb2xpb3NgIGlzIHRvby4gVGhhdCBtYWtlcyBtZSBpbW1lZGlhdGVseSBjdXJpb3VzIGFib3V0IHRoZSBjYWxsIGdyYXBoIGZvciBgZXZpY3RfZm9saW9zYCwgZ2l2ZW4gdGhhdCB0aGVzZSBzdGF0aWMgZnVuY3Rpb25zIGFyZSBub3QgdmlzaWJsZSBvdXRzaWRlIHRoZWlyIGNvbXBpbGF0aW9uIHVuaXQuIEl0J3MgYSBrZXkgcGllY2Ugb2YgaW5mb3JtYXRpb24gd2hlbiBkZWFsaW5nIHdpdGggbWVtb3J5IG1hbmFnZW1lbnQgYXQgdGhpcyBsZXZlbC4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGludGVyYWN0aW9ucyB3aXRoaW4gdGhpcyBzcGVjaWZpYyBtb2R1bGUgdG8gcHJvcGVybHkgZ3JvayB0aGUgc3lzdGVtJ3MgZXZpY3Rpb24gc3RyYXRlZ3kuIExldCBtZSB0cmFjZSB0aGUgdXNlcyBhbmQgZmluZCBvdXQgd2hvIHVzZXMgYGV2aWN0X2ZvbGlvc2AuIFVuZGVyc3RhbmRpbmcgd2hlcmUgYW5kIGhvdyBgZXZpY3RfZm9saW9zYCBpcyBiZWluZyB1c2VkIGlzIGdvaW5nIHRvIGJlIGNlbnRyYWwgdG8gZGV0ZXJtaW5pbmcgaXRzIHB1cnBvc2UgYW5kIGltcGFjdCBvbiB0aGUgb3ZlcmFsbCBtZW1vcnkgbWFuYWdlbWVudCBzdHJhdGVneS5cblxuXG4iLCJJbnB1dFRva2VucyI6Nzc4MywiT3V0cHV0VG9rZW5zIjozMCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjMxLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTExVDEzOjU2OjEwLjYxODA3MDI3MVoiLCJTZXEiOjEyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTUyNzc4NzEsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiZXZpY3RfZm9saW9zXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm1tL3Ztc2Nhbi5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm1tL3Ztc2Nhbi5jPTQ3Njc9c3RhdGljIGludCBpc29sYXRlX2ZvbGlvcyh1bnNpZ25lZCBsb25nIG5yX3RvX3NjYW4sIHN0cnVjdCBscnV2ZWMgKmxydXZlYyxcXG4tLVxcbm1tL3Ztc2Nhbi5jLTQ4MDAtXFxubW0vdm1zY2FuLmM6NDgwMTpzdGF0aWMgaW50IGV2aWN0X2ZvbGlvcyh1bnNpZ25lZCBsb25nIG5yX3RvX3NjYW4sIHN0cnVjdCBscnV2ZWMgKmxydXZlYyxcXG5tbS92bXNjYW4uYy00ODAyLVxcdFxcdFxcdHN0cnVjdCBzY2FuX2NvbnRyb2wgKnNjLCBpbnQgc3dhcHBpbmVzcylcXG4tLVxcbm1tL3Ztc2Nhbi5jPTQ5NTY9c3RhdGljIGJvb2wgdHJ5X3RvX3Nocmlua19scnV2ZWMoc3RydWN0IGxydXZlYyAqbHJ1dmVjLCBzdHJ1Y3Qgc2Nhbl9jb250cm9sICpzYylcXG4tLVxcbm1tL3Ztc2Nhbi5jLTQ5NzktXFx0XFx0bnJfYmF0Y2ggPSBtaW4obnJfdG9fc2NhbiwgTUlOX0xSVV9CQVRDSCk7XFxubW0vdm1zY2FuLmM6NDk4MDpcXHRcXHRkZWx0YSA9IGV2aWN0X2ZvbGlvcyhucl9iYXRjaCwgbHJ1dmVjLCBzYywgc3dhcHBpbmVzcyk7XFxubW0vdm1zY2FuLmMtNDk4MS1cXHRcXHRpZiAoIWRlbHRhKVxcbi0tXFxubW0vdm1zY2FuLmM9NTU4Mz1zdGF0aWMgaW50IHJ1bl9ldmljdGlvbihzdHJ1Y3QgbHJ1dmVjICpscnV2ZWMsIHVuc2lnbmVkIGxvbmcgc2VxLCBzdHJ1Y3Qgc2Nhbl9jb250cm9sICpzYyxcXG4tLVxcbm1tL3Ztc2Nhbi5jLTU2MDMtXFx0XFx0bnJfYmF0Y2ggPSBtaW4obnJfdG9fcmVjbGFpbSAtIHNjLVxcdTAwM2Vucl9yZWNsYWltZWQsIE1BWF9MUlVfQkFUQ0gpO1xcbm1tL3Ztc2Nhbi5jOjU2MDQ6XFx0XFx0aWYgKCFldmljdF9mb2xpb3MobnJfYmF0Y2gsIGxydXZlYywgc2MsIHN3YXBwaW5lc3MpKVxcbm1tL3Ztc2Nhbi5jLTU2MDUtXFx0XFx0XFx0cmV0dXJuIDA7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTExVDEzOjU2OjEwLjY3MzM1NDAwMloiLCJTZXEiOjEzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNjc2MTY0MzQ1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdGhvdWdodCBwcm9jZXNzLCBhcyBpZiBJIHdlcmUgYW5hbHl6aW5nIHRoaXMgY29kZTpcblxuKipBbmFseXppbmcgdGhlIEV2aWN0aW9uIFBhdGggaW4gdGhlIExSVSBWZWN0b3IqKlxuXG5Pa2F5LCBzbyBJIHNlZSB0aGF0IGBldmljdF9mb2xpb3NgIGlzIGJlaW5nIGNhbGxlZCBmcm9tIGJvdGggYHRyeV90b19zaHJpbmtfbHJ1dmVjYCBhbmQgYHJ1bl9ldmljdGlvbmAuIFRoYXQncyBhIHByZXR0eSBjbGVhciBpbmRpY2F0aW9uIHRoYXQgaXQncyB0aGUgY29yZSBmdW5jdGlvbiBmb3IgYWN0dWFsbHkgcmVtb3ZpbmcgZm9saW9zLCB3aGljaCBtYWtlcyBzZW5zZSBnaXZlbiB0aGUgbmFtZXMuIE5vdywgSSB3YW50IHRvIHRyYWNlIHRoZSBjYWxsIGdyYXBoIGZ1cnRoZXIgdXBzdHJlYW0uIE15IGZvY3VzIGlzIHVuZGVyc3RhbmRpbmcgdGhlIHRyaWdnZXJzIGZvciBmb2xpbyBldmljdGlvbi4gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgd2hlcmUgYHRyeV90b19zaHJpbmtfbHJ1dmVjYCBhbmQgYHJ1bl9ldmljdGlvbmAgYXJlIGJlaW5nICpjYWxsZWQqIGZyb20uIFRoYXQncyB0aGUgY3J1Y2lhbCBsaW5rIOKAkyB0aG9zZSBhcmUgdGhlIHBvaW50cyBpbiB0aGUgc3lzdGVtIHRoYXQgYXJlIGluaXRpYXRpbmcgdGhlIGV2aWN0aW9uIHByb2Nlc3MgYmFzZWQgb24gd2hhdGV2ZXIgY29uZGl0aW9ucyBhcmUgaW4gcGxheS4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhvc2UgY29uZGl0aW9ucyB0byBncmFzcCB0aGUgb3ZlcmFsbCBldmljdGlvbiBwb2xpY3kuIEFyZSB3ZSBkZWFsaW5nIHdpdGggbWVtb3J5IHByZXNzdXJlLCBhZ2luZyBvZiBlbnRyaWVzLCBvciBzb21ldGhpbmcgZWxzZSBlbnRpcmVseT8gVGltZSB0byBkaWcgZGVlcGVyIGFuZCBmaW5kIG91dC5cblxuXG4iLCJJbnB1dFRva2VucyI6ODM5NSwiT3V0cHV0VG9rZW5zIjozNSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjUwLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTExVDEzOjU2OjE0LjM0OTUyMDE0N1oiLCJTZXEiOjE0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTUxNjk0MzEsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwidHJ5X3RvX3Nocmlua19scnV2ZWNcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibW0vdm1zY2FuLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibW0vdm1zY2FuLmM9NDkyND1zdGF0aWMgYm9vbCBzaG91bGRfYWJvcnRfc2NhbihzdHJ1Y3QgbHJ1dmVjICpscnV2ZWMsIHN0cnVjdCBzY2FuX2NvbnRyb2wgKnNjKVxcbi0tXFxubW0vdm1zY2FuLmMtNDk1NS0gKi9cXG5tbS92bXNjYW4uYzo0OTU2OnN0YXRpYyBib29sIHRyeV90b19zaHJpbmtfbHJ1dmVjKHN0cnVjdCBscnV2ZWMgKmxydXZlYywgc3RydWN0IHNjYW5fY29udHJvbCAqc2MpXFxubW0vdm1zY2FuLmMtNDk1Ny17XFxuLS1cXG5tbS92bXNjYW4uYz01MDAxPXN0YXRpYyBpbnQgc2hyaW5rX29uZShzdHJ1Y3QgbHJ1dmVjICpscnV2ZWMsIHN0cnVjdCBzY2FuX2NvbnRyb2wgKnNjKVxcbi0tXFxubW0vdm1zY2FuLmMtNTAyMC1cXG5tbS92bXNjYW4uYzo1MDIxOlxcdG5lZWRfcm90YXRlID0gdHJ5X3RvX3Nocmlua19scnV2ZWMobHJ1dmVjLCBzYyk7XFxubW0vdm1zY2FuLmMtNTAyMi1cXG4tLVxcbm1tL3Ztc2Nhbi5jPTUxMTI9c3RhdGljIHZvaWQgbHJ1X2dlbl9zaHJpbmtfbHJ1dmVjKHN0cnVjdCBscnV2ZWMgKmxydXZlYywgc3RydWN0IHNjYW5fY29udHJvbCAqc2MpXFxuLS1cXG5tbS92bXNjYW4uYy01MTI0LVxcbm1tL3Ztc2Nhbi5jOjUxMjU6XFx0aWYgKHRyeV90b19zaHJpbmtfbHJ1dmVjKGxydXZlYywgc2MpKVxcbm1tL3Ztc2Nhbi5jLTUxMjYtXFx0XFx0bHJ1X2dlbl9yb3RhdGVfbWVtY2cobHJ1dmVjLCBNRU1DR19MUlVfWU9VTkcpO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xMVQxMzo1NjoxNC40MDQ2OTUyMzdaIiwiU2VxIjoxNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6Mjc5OTQ4MzI0NiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHN1bW1hcnksIHByZXNlbnRlZCBhcyBhIHN0cmVhbSBvZiB0aG91Z2h0OlxuXG4qKkV2YWx1YXRpbmcgYGxydV9nZW5fc2hyaW5rX2xydXZlY2AgYXMgYSBTb2x1dGlvbioqXG5cbkFscmlnaHQsIGxldCdzIHNlZS4uLiBsb29raW5nIGF0IHRoaXMsIGBscnVfZ2VuX3Nocmlua19scnV2ZWNgIHNlZW1zIGxpa2UgYSBzdHJvbmcgY29udGVuZGVyIGhlcmUuIEl0J3MgZ290IHRoZSByaWdodCBmZWVsLCBiYXNlZCBvbiB3aGF0IEkndmUgYmVlbiBjb25zaWRlcmluZy4gSSBuZWVkIHRvIGRpZyBpbnRvIHRoZSBkZXRhaWxzLCBidXQgbXkgaW5pdGlhbCBhc3Nlc3NtZW50IGlzIHByb21pc2luZy4gSSdsbCBuZWVkIHRvIGV4cGxvcmUgaXRzIG1lY2hhbmljcyB0byBtYWtlIHN1cmUgaXQgYWxpZ25zIHByZWNpc2VseSB3aXRoIHRoZSBvcHRpbWl6YXRpb24gb2JqZWN0aXZlcywgYW5kIG9mIGNvdXJzZSwgZW5zdXJlIHRoZXJlIGFyZSBubyB1bmZvcmVzZWVuIGNvbXBsaWNhdGlvbnMgd2l0aCB0aGUgZXhpc3Rpbmcgc3lzdGVtLiBUaGUgcG90ZW50aWFsIGZvciB0aGUgb3ZlcmFsbCBnb2FscyBzZWVtcyBoaWdoIHdpdGggdGhpcyBhcHByb2FjaC5cblxuXG4iLCJJbnB1dFRva2VucyI6OTAzNiwiT3V0cHV0VG9rZW5zIjozNiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE3LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTExVDEzOjU2OjE3LjIwNDE4MDc1NFoiLCJTZXEiOjE2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTc0MTE5MTAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibHJ1X2dlbl9zaHJpbmtfbHJ1dmVjXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm1tL3Ztc2Nhbi5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm1tL3Ztc2Nhbi5jPTUwNDI9c3RhdGljIHZvaWQgc2hyaW5rX21hbnkoc3RydWN0IHBnbGlzdF9kYXRhICpwZ2RhdCwgc3RydWN0IHNjYW5fY29udHJvbCAqc2MpXFxuLS1cXG5tbS92bXNjYW4uYy01MTExLVxcbm1tL3Ztc2Nhbi5jOjUxMTI6c3RhdGljIHZvaWQgbHJ1X2dlbl9zaHJpbmtfbHJ1dmVjKHN0cnVjdCBscnV2ZWMgKmxydXZlYywgc3RydWN0IHNjYW5fY29udHJvbCAqc2MpXFxubW0vdm1zY2FuLmMtNTExMy17XFxuLS1cXG5tbS92bXNjYW4uYz01ODU2PXN0YXRpYyB2b2lkIGxydV9nZW5fYWdlX25vZGUoc3RydWN0IHBnbGlzdF9kYXRhICpwZ2RhdCwgc3RydWN0IHNjYW5fY29udHJvbCAqc2MpXFxuLS1cXG5tbS92bXNjYW4uYy01ODYwLVxcbm1tL3Ztc2Nhbi5jOjU4NjE6c3RhdGljIHZvaWQgbHJ1X2dlbl9zaHJpbmtfbHJ1dmVjKHN0cnVjdCBscnV2ZWMgKmxydXZlYywgc3RydWN0IHNjYW5fY29udHJvbCAqc2MpXFxubW0vdm1zY2FuLmMtNTg2Mi17XFxuLS1cXG5tbS92bXNjYW4uYz01ODczPXN0YXRpYyB2b2lkIHNocmlua19scnV2ZWMoc3RydWN0IGxydXZlYyAqbHJ1dmVjLCBzdHJ1Y3Qgc2Nhbl9jb250cm9sICpzYylcXG4tLVxcbm1tL3Ztc2Nhbi5jLTU4ODQtXFx0aWYgKChscnVfZ2VuX2VuYWJsZWQoKSB8fCBscnVfZ2VuX3N3aXRjaGluZygpKSBcXHUwMDI2XFx1MDAyNiAhcm9vdF9yZWNsYWltKHNjKSkge1xcbm1tL3Ztc2Nhbi5jOjU4ODU6XFx0XFx0bHJ1X2dlbl9zaHJpbmtfbHJ1dmVjKGxydXZlYywgc2MpO1xcbm1tL3Ztc2Nhbi5jLTU4ODYtXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTExVDEzOjU2OjE3LjI2MTU5ODIyNFoiLCJTZXEiOjE3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNzAwMzY4MzYxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIG15IG93bjpcblxuKipBbmFseXppbmcgUG90ZW50aWFsIEJvdHRsZW5lY2tzIGluIHRoZSBFdmljdGlvbiBQcm9jZXNzKipcblxuUmlnaHQsIHNvIHdlJ3JlIGxvb2tpbmcgYXQgb3B0aW1pemluZyB0aGUgZXZpY3Rpb24gcHJvY2Vzcy4gTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMgdGhhdCBgc2hyaW5rX2xydXZlY2AgKmNvdWxkKiBiZSBhIGRlY2VudCBwbGFjZSB0byBzdGFydCwgYnV0IEkgbmVlZCB0byBiZSBjYXV0aW91cy4gSXQncyBhbG1vc3QgY2VydGFpbmx5IG9uIHRoZSBob3QgcGF0aCwgYW5kIHdlJ2xsIHdhbnQgdG8gYmUgY2FyZWZ1bCBhYm91dCBtYWtpbmcgYW55IGNoYW5nZXMgdGhlcmUuIEFueSBwZXJmb3JtYW5jZSBpbXByb3ZlbWVudHMgd2UgZ2FpbiBtaWdodCBiZSBlYXNpbHkgb2Zmc2V0IGJ5IGluY3JlYXNlZCBjb21wbGV4aXR5IG9yIHN1YnRsZSByZWdyZXNzaW9ucy4gTGV0J3Mgbm90IGp1bXAgdG8gY29uY2x1c2lvbnMgYWJvdXQgdGhhdCBvbmUganVzdCB5ZXQuXG5cbkluc3RlYWQsIEknbGwgc2hpZnQgZm9jdXMgYW5kIHByaW9yaXRpemUgYSBkZWVwIGRpdmUgaW50byBgcnVuX2V2aWN0aW9uYCBhbmQgYHRyeV90b19pbmNfbWF4X3NlcWAuIFRob3NlIHNlZW0gbGlrZSBtb3JlIHByb21pc2luZyBhcmVhcyB0byBpbnZlc3RpZ2F0ZSBmb3IgcG90ZW50aWFsIGluZWZmaWNpZW5jaWVzLiBXZSBuZWVkIHRvIHVuZGVyc3RhbmQgaG93IHRoZSBldmljdGlvbiBwcm9jZXNzIGlzIHRyaWdnZXJlZCBhbmQgd2hhdCB0aGUgY3JpdGljYWwgbG9ja2luZyBhbmQgZGF0YSBhY2Nlc3MgcGF0dGVybnMgYXJlIHdpdGhpbiB0aG9zZSBmdW5jdGlvbnMuIEEgY2FyZWZ1bCBwcm9maWxpbmcgYW5kIGFuYWx5c2lzIG9mIHRob3NlIGZ1bmN0aW9ucyBzaG91bGQgcmV2ZWFsIHdoZXRoZXIgd2UgY2FuIHNxdWVlemUgb3V0IHNvbWUgbW9yZSBwZXJmb3JtYW5jZSBnYWlucywgYW5kIHdoaWNoIG9mIHRob3NlIGZ1bmN0aW9ucyBhcmUgb24gdGhlIGNyaXRpY2FsIHBhdGguXG5cblxuIiwiSW5wdXRUb2tlbnMiOjk1ODgsIk91dHB1dFRva2VucyI6MzAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0NSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xMVQxMzo1NjoyMC45NjE5NjgyMDVaIiwiU2VxIjoxOCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU4MjM4MDYwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInJ1bl9ldmljdGlvblwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJtbS92bXNjYW4uY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJtbS92bXNjYW4uYz01NTcyPXN0YXRpYyBpbnQgcnVuX2FnaW5nKHN0cnVjdCBscnV2ZWMgKmxydXZlYywgdW5zaWduZWQgbG9uZyBzZXEsXFxuLS1cXG5tbS92bXNjYW4uYy01NTgyLVxcbm1tL3Ztc2Nhbi5jOjU1ODM6c3RhdGljIGludCBydW5fZXZpY3Rpb24oc3RydWN0IGxydXZlYyAqbHJ1dmVjLCB1bnNpZ25lZCBsb25nIHNlcSwgc3RydWN0IHNjYW5fY29udHJvbCAqc2MsXFxubW0vdm1zY2FuLmMtNTU4NC1cXHRcXHRcXHRpbnQgc3dhcHBpbmVzcywgdW5zaWduZWQgbG9uZyBucl90b19yZWNsYWltKVxcbi0tXFxubW0vdm1zY2FuLmM9NTYxMz1zdGF0aWMgaW50IHJ1bl9jbWQoY2hhciBjbWQsIHU2NCBtZW1jZ19pZCwgaW50IG5pZCwgdW5zaWduZWQgbG9uZyBzZXEsXFxuLS1cXG5tbS92bXNjYW4uYy01NjQ0LVxcdGNhc2UgJy0nOlxcbm1tL3Ztc2Nhbi5jOjU2NDU6XFx0XFx0ZXJyID0gcnVuX2V2aWN0aW9uKGxydXZlYywgc2VxLCBzYywgc3dhcHBpbmVzcywgb3B0KTtcXG5tbS92bXNjYW4uYy01NjQ2LVxcdFxcdGJyZWFrO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xMVQxMzo1NjoyMS4wMjAyMTEwNDVaIiwiU2VxIjoxOSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzcxMzk4MTA2OSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHVuZGVyc3RhbmRpbmcgb2YgdGhlIGV4ZWN1dGlvbiBwYXRoLCBsYWlkIG91dCBsb2dpY2FsbHk6XG5cbioqVHJhY2luZyB0aGUgU2VxdWVuY2U6IEEgRmxvdyBvZiBPcGVyYXRpb25zKipcblxuT2theSwgc28gSSdtIGRpZ2dpbmcgaW50byBob3cgdGhpcyBzZXF1ZW5jZSBnZW5lcmF0aW9uIHdvcmtzLiBJdCBhcHBlYXJzIGBydW5fY21kYCBpcyBpbml0aWF0ZWQgZnJvbSBgbHJ1X2dlbl9zZXFfd3JpdGVgLCB3aGljaCBpcyBhIGRlYnVnZnMgb3Igc3lzZnMgaW50ZXJmYWNlIOKAkyB0aGF0J3MgdGhlIGVudHJ5IHBvaW50IGZyb20gdXNlcnNwYWNlIGludGVyYWN0aW9uLiBIb3dldmVyLCBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGF0IHRyaWdnZXJzIHRoZSBleGVjdXRpb24gb2YgYHJlc2V0X2JhdGNoX3NpemVgLiBBaGEsIGByZXNldF9iYXRjaF9zaXplYCBpcyBkaXJlY3RseSBjYWxsZWQgZnJvbSB0d28gcGxhY2VzOiBgd2Fsa19tbWAgYW5kIGBldmljdF9mb2xpb3NgLiAgTm93LCBgd2Fsa19tbWAgaXRzZWxmIGdldHMgY2FsbGVkIGJ5IGB0cnlfdG9faW5jX21heF9zZXFgLiBGdXJ0aGVyIGRvd24gdGhlIGNhbGwgc3RhY2ssIGB0cnlfdG9faW5jX21heF9zZXFgIGlzIHVsdGltYXRlbHkgaW52b2tlZCBieSBgaW5jX21heF9zZXFgLiBTbyB0aGUga2V5IHNlZW1zIHRvIGJlIGBpbmNfbWF4X3NlcWAsIGFzIHRoYXQgaXMgYXQgdGhlIHJvb3Qgb2YgdGhlIHNlcXVlbmNlLiBJIG5lZWQgdG8gbG9vayBhdCB3aGF0IGBpbmNfbWF4X3NlcWAgZG9lcyBhbmQgZ28gZnJvbSB0aGVyZS5cblxuXG4iLCJJbnB1dFRva2VucyI6MTAxMjMsIk91dHB1dFRva2VucyI6MzEsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo5NSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xMVQxMzo1NjoyNC43MzQxOTM5MjRaIiwiU2VxIjoyMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU5Mjg5NzkwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImluY19tYXhfc2VxXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm1tL3Ztc2Nhbi5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm1tL3Ztc2Nhbi5jPTM3NTY9c3RhdGljIHZvaWQgd2Fsa19tbShzdHJ1Y3QgbW1fc3RydWN0ICptbSwgc3RydWN0IGxydV9nZW5fbW1fd2FsayAqd2FsaylcXG4tLVxcbm1tL3Ztc2Nhbi5jLTM3NzItXFxubW0vdm1zY2FuLmM6Mzc3MzpcXHRcXHQvKiBhbm90aGVyIHRocmVhZCBtaWdodCBoYXZlIGNhbGxlZCBpbmNfbWF4X3NlcSgpICovXFxubW0vdm1zY2FuLmMtMzc3NC1cXHRcXHRpZiAod2Fsay1cXHUwMDNlc2VxICE9IG1heF9zZXEpXFxuLS1cXG5tbS92bXNjYW4uYz0zODc3PXN0YXRpYyB2b2lkIHRyeV90b19pbmNfbWluX3NlcShzdHJ1Y3QgbHJ1dmVjICpscnV2ZWMsIGludCBzd2FwcGluZXNzKVxcbi0tXFxubW0vdm1zY2FuLmMtMzkyOC1cXG5tbS92bXNjYW4uYzozOTI5OnN0YXRpYyBib29sIGluY19tYXhfc2VxKHN0cnVjdCBscnV2ZWMgKmxydXZlYywgdW5zaWduZWQgbG9uZyBzZXEsIGludCBzd2FwcGluZXNzKVxcbm1tL3Ztc2Nhbi5jLTM5MzAte1xcbi0tXFxubW0vdm1zY2FuLmMtMzk5My1cXG5tbS92bXNjYW4uYzozOTk0OnN0YXRpYyBib29sIHRyeV90b19pbmNfbWF4X3NlcShzdHJ1Y3QgbHJ1dmVjICpscnV2ZWMsIHVuc2lnbmVkIGxvbmcgc2VxLFxcbm1tL3Ztc2Nhbi5jLTM5OTUtXFx0XFx0XFx0ICAgICAgIGludCBzd2FwcGluZXNzLCBib29sIGZvcmNlX3NjYW4pXFxuLS1cXG5tbS92bXNjYW4uYy00MDA1LVxcdGlmICghbW1fc3RhdGUpXFxubW0vdm1zY2FuLmM6NDAwNjpcXHRcXHRyZXR1cm4gaW5jX21heF9zZXEobHJ1dmVjLCBzZXEsIHN3YXBwaW5lc3MpO1xcbm1tL3Ztc2Nhbi5jLTQwMDctXFxuLS1cXG5tbS92bXNjYW4uYy00MDQwLVxcdGlmIChzdWNjZXNzKSB7XFxubW0vdm1zY2FuLmM6NDA0MTpcXHRcXHRzdWNjZXNzID0gaW5jX21heF9zZXEobHJ1dmVjLCBzZXEsIHN3YXBwaW5lc3MpO1xcbm1tL3Ztc2Nhbi5jLTQwNDItXFx0XFx0V0FSTl9PTl9PTkNFKCFzdWNjZXNzKTtcXG4tLVxcbm1tL3Ztc2Nhbi5jPTQ0MjU9Ym9vbCByZWNoZWNrX2xydV9nZW5fbWF4X21lbWNnKHN0cnVjdCBtZW1fY2dyb3VwICptZW1jZywgaW50IG5pZClcXG4tLVxcbm1tL3Ztc2Nhbi5jLTQ0MzctXFxubW0vdm1zY2FuLmM6NDQzODpzdGF0aWMgdm9pZCB0cnlfdG9faW5jX21heF9zZXFfbm93YWxrKHN0cnVjdCBtZW1fY2dyb3VwICptZW1jZyxcXG5tbS92bXNjYW4uYy00NDM5LVxcdFxcdFxcdFxcdCAgICAgIHN0cnVjdCBscnV2ZWMgKmxydXZlYylcXG4tLVxcbm1tL3Ztc2Nhbi5jLTQ0NjMtXFx0aWYgKHN1Y2Nlc3MpXFxubW0vdm1zY2FuLmM6NDQ2NDpcXHRcXHRpbmNfbWF4X3NlcShscnV2ZWMsIG1heF9zZXEsIHN3YXBwaW5lc3MpO1xcbm1tL3Ztc2Nhbi5jLTQ0NjUtfVxcbi0tXFxubW0vdm1zY2FuLmM9NDQ3Mj12b2lkIG1heF9scnVfZ2VuX21lbWNnKHN0cnVjdCBtZW1fY2dyb3VwICptZW1jZywgaW50IG5pZClcXG4tLVxcbm1tL3Ztc2Nhbi5jLTQ0NzgtXFx0XFx0d2hpbGUgKGdldF9ucl9nZW5zKGxydXZlYywgdHlwZSkgXFx1MDAzYyBNQVhfTlJfR0VOUykge1xcbm1tL3Ztc2Nhbi5jOjQ0Nzk6XFx0XFx0XFx0dHJ5X3RvX2luY19tYXhfc2VxX25vd2FsayhtZW1jZywgbHJ1dmVjKTtcXG5tbS92bXNjYW4uYy00NDgwLVxcdFxcdFxcdGNvbmRfcmVzY2hlZCgpO1xcbi0tXFxubW0vdm1zY2FuLmM9NDkyND1zdGF0aWMgYm9vbCBzaG91bGRfYWJvcnRfc2NhbihzdHJ1Y3QgbHJ1dmVjICpscnV2ZWMsIHN0cnVjdCBzY2FuX2NvbnRyb2wgKnNjKVxcbi0tXFxubW0vdm1zY2FuLmMtNDk1Mi0gKiBGb3IgZnV0dXJlIG9wdGltaXphdGlvbnM6XFxubW0vdm1zY2FuLmM6NDk1MzogKiAxLiBEZWZlciB0cnlfdG9faW5jX21heF9zZXEoKSB0byB3b3JrcXVldWVzIHRvIHJlZHVjZSBsYXRlbmN5IGZvciBtZW1jZ1xcbm1tL3Ztc2Nhbi5jLTQ5NTQtICogICAgcmVjbGFpbS5cXG4tLVxcbm1tL3Ztc2Nhbi5jPTQ5NTY9c3RhdGljIGJvb2wgdHJ5X3RvX3Nocmlua19scnV2ZWMoc3RydWN0IGxydXZlYyAqbHJ1dmVjLCBzdHJ1Y3Qgc2Nhbl9jb250cm9sICpzYylcXG4tLVxcbm1tL3Ztc2Nhbi5jLTQ5NzMtXFx0XFx0aWYgKHNob3VsZF9ydW5fYWdpbmcobHJ1dmVjLCBtYXhfc2VxLCBzYywgc3dhcHBpbmVzcykpIHtcXG5tbS92bXNjYW4uYzo0OTc0OlxcdFxcdFxcdGlmICh0cnlfdG9faW5jX21heF9zZXEobHJ1dmVjLCBtYXhfc2VxLCBzd2FwcGluZXNzLCBmYWxzZSkpXFxubW0vdm1zY2FuLmMtNDk3NS1cXHRcXHRcXHRcXHRuZWVkX3JvdGF0ZSA9IHRydWU7XFxuLS1cXG5tbS92bXNjYW4uYz01NTcyPXN0YXRpYyBpbnQgcnVuX2FnaW5nKHN0cnVjdCBscnV2ZWMgKmxydXZlYywgdW5zaWduZWQgbG9uZyBzZXEsXFxuLS1cXG5tbS92bXNjYW4uYy01NTc5LVxcbm1tL3Ztc2Nhbi5jOjU1ODA6XFx0cmV0dXJuIHRyeV90b19pbmNfbWF4X3NlcShscnV2ZWMsIG1heF9zZXEsIHN3YXBwaW5lc3MsIGZvcmNlX3NjYW4pID8gMCA6IC1FRVhJU1Q7XFxubW0vdm1zY2FuLmMtNTU4MS19XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTExVDEzOjU2OjI0Ljc5MzQ4NzYwM1oiLCJTZXEiOjIxLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMDM5ODA5NDg0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIG15IG93bjpcblxuKipQcmlvcml0aXppbmcgT3B0aW1pemF0aW9uIEVmZm9ydHMqKlxuXG5SaWdodCwgbGV0J3MgemVybyBpbi4gVGhpbmtpbmcgYWJvdXQgaW1wcm92aW5nIG92ZXJhbGwgcGVyZm9ybWFuY2UsIHRoZSBgdHJ5X3RvX2luY19tYXhfc2VxYCBmdW5jdGlvbiBpcyBkZWZpbml0ZWx5IGEga2V5IGFyZWEgdG8gY29uY2VudHJhdGUgb24uIEl0J3MgbGlrZWx5IGEgYm90dGxlbmVjayB0aGF0IGNvdWxkIHlpZWxkIHNpZ25pZmljYW50IGdhaW5zIGlmIG9wdGltaXplZCBjb3JyZWN0bHkuXG5cbkFuZCwgb2YgY291cnNlLCBgZXZpY3RfZm9saW9zYC4gSSBrZWVwIGNvbWluZyBiYWNrIHRvIHRoYXQgb25lLiBNZW1vcnkgbWFuYWdlbWVudCBpcyBhbHdheXMgY3JpdGljYWwsIGFuZCB0aGlzIGZ1bmN0aW9uIGlzIGF0IHRoZSBoZWFydCBvZiB0aGF0LiBMZXQgbWUgcmUtZXhhbWluZSBgZXZpY3RfZm9saW9zYC4gUHJvYmFibHkgd29ydGggYW5vdGhlciBkZWVwIGRpdmUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjExNTk1LCJPdXRwdXRUb2tlbnMiOjMwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDAsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTFUMTM6NTY6MjcuODMzMjk5MDg5WiIsIlNlcSI6MjIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo4ODMwMDY2ODgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiZXZpY3RfZm9saW9zXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm1tL3Ztc2Nhbi5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm1tL3Ztc2Nhbi5jPTQ3Njc9c3RhdGljIGludCBpc29sYXRlX2ZvbGlvcyh1bnNpZ25lZCBsb25nIG5yX3RvX3NjYW4sIHN0cnVjdCBscnV2ZWMgKmxydXZlYyxcXG4tLVxcbm1tL3Ztc2Nhbi5jLTQ4MDAtXFxubW0vdm1zY2FuLmM6NDgwMTpzdGF0aWMgaW50IGV2aWN0X2ZvbGlvcyh1bnNpZ25lZCBsb25nIG5yX3RvX3NjYW4sIHN0cnVjdCBscnV2ZWMgKmxydXZlYyxcXG5tbS92bXNjYW4uYy00ODAyLVxcdFxcdFxcdHN0cnVjdCBzY2FuX2NvbnRyb2wgKnNjLCBpbnQgc3dhcHBpbmVzcylcXG4tLVxcbm1tL3Ztc2Nhbi5jPTQ5NTY9c3RhdGljIGJvb2wgdHJ5X3RvX3Nocmlua19scnV2ZWMoc3RydWN0IGxydXZlYyAqbHJ1dmVjLCBzdHJ1Y3Qgc2Nhbl9jb250cm9sICpzYylcXG4tLVxcbm1tL3Ztc2Nhbi5jLTQ5NzktXFx0XFx0bnJfYmF0Y2ggPSBtaW4obnJfdG9fc2NhbiwgTUlOX0xSVV9CQVRDSCk7XFxubW0vdm1zY2FuLmM6NDk4MDpcXHRcXHRkZWx0YSA9IGV2aWN0X2ZvbGlvcyhucl9iYXRjaCwgbHJ1dmVjLCBzYywgc3dhcHBpbmVzcyk7XFxubW0vdm1zY2FuLmMtNDk4MS1cXHRcXHRpZiAoIWRlbHRhKVxcbi0tXFxubW0vdm1zY2FuLmM9NTU4Mz1zdGF0aWMgaW50IHJ1bl9ldmljdGlvbihzdHJ1Y3QgbHJ1dmVjICpscnV2ZWMsIHVuc2lnbmVkIGxvbmcgc2VxLCBzdHJ1Y3Qgc2Nhbl9jb250cm9sICpzYyxcXG4tLVxcbm1tL3Ztc2Nhbi5jLTU2MDMtXFx0XFx0bnJfYmF0Y2ggPSBtaW4obnJfdG9fcmVjbGFpbSAtIHNjLVxcdTAwM2Vucl9yZWNsYWltZWQsIE1BWF9MUlVfQkFUQ0gpO1xcbm1tL3Ztc2Nhbi5jOjU2MDQ6XFx0XFx0aWYgKCFldmljdF9mb2xpb3MobnJfYmF0Y2gsIGxydXZlYywgc2MsIHN3YXBwaW5lc3MpKVxcbm1tL3Ztc2Nhbi5jLTU2MDUtXFx0XFx0XFx0cmV0dXJuIDA7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTExVDEzOjU2OjI4LjcxNjMxMzA5NloiLCJTZXEiOjIzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1Mzg1NDQyNzkwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkZvY3VzaW5nIG9uIFBvdGVudGlhbCBTeXprYWxsZXIgVGFyZ2V0cyoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoZXNlIGZ1bmN0aW9ucyBhcyBwb3RlbnRpYWwgY2FuZGlkYXRlcyBmb3IgZnV6emluZyB3aXRoIHN5emthbGxlci4gSSB3YXMgaW5pdGlhbGx5IHRoaW5raW5nIGB0cnlfdG9faW5jX21heF9zZXFgIGFuZCBgZXZpY3RfZm9saW9zYCBsb29rZWQgcHJvbWlzaW5nIGZvciBgRm9jdXNTeW1ib2xzYC4gSG9sZCBvbiB0aG91Z2gsIEkgbmVlZCB0byByZW1pbmQgbXlzZWxmIHRoYXQgYGV2aWN0X2ZvbGlvc2AgaXMgc3RhdGljLiBUaGF0IGJyaW5ncyB1cCBhbiBpbnRlcmVzdGluZyBwb2ludDogY2FuIHdlIGV2ZW4gdXNlIHN5emthbGxlciB0byB0YXJnZXQgc3RhdGljIGZ1bmN0aW9ucz8gWWVzLCB0aGF0J3MgcmlnaHQsIGlmIHRoZXkncmUgYmFrZWQgaW50byB0aGUga2VybmVsIGltYWdlLCBzeXprYWxsZXIgKmNhbiogZm9jdXMgb24gdGhlbS4gV2FpdCBhIHNlY29uZC4uLiBgdHJ5X3RvX2luY19tYXhfc2VxYCBpcyBhbHNvIHN0YXRpYyFcblxuQWxyaWdodCwgbGV0J3MgYnJvYWRlbiB0aGUgc2VhcmNoIGEgYml0LiBBcmUgdGhlcmUgYW55ICpub24qLXN0YXRpYyBmdW5jdGlvbnMgd2l0aGluIHRoaXMgYXJlYSB0aGF0IG1pZ2h0IGJlIGdvb2QgdGFyZ2V0cz8gVGhlIHN0YXRpYyBvbmVzIGFyZSBub3QgbG9va2luZyBzbyBoZWxwZnVsLiBMZXQncyBzZWUuLi4gYGxydV9nZW5fc2hyaW5rX2xydXZlY2AgaXMgc3RhdGljLiBIbW0sIHdoYXQgYWJvdXQgYHNocmlua19scnV2ZWNgPyBBbHNvIHN0YXRpYy4gYHNocmlua19ub2RlYD8gU3RhdGljLiBgc2hyaW5rX3pvbmVzYD8gU3RhdGljIGFzIHdlbGwuIFN0YXJ0aW5nIHRvIGZlZWwgbGlrZSBJJ20gc3R1Y2sgd2l0aCBzdGF0aWNzIGhlcmUsIGJ1dCBJIGp1c3QgZm91bmQgb25lOiBgZG9fdHJ5X3RvX2ZyZWVfcGFnZXNgIGlzIHN0YXRpYy4gT2ssIGB0cnlfdG9fZnJlZV9wYWdlc2AgaXMgbm9uLXN0YXRpYyBhbmQgdGhlbiBgdHJ5X3RvX2ZyZWVfbWVtX2Nncm91cF9wYWdlc2AgaXMgbm9uLXN0YXRpYyBhcyB3ZWxsLiBUaGF0IGxvb2tzIGxpa2Ugd2UgaGF2ZSBhIHdpbm5lci4gTGV0J3MgZGlnIGRlZXBlciBpbnRvIGB0cnlfdG9fZnJlZV9tZW1fY2dyb3VwX3BhZ2VzYC5cblxuXG4iLCJJbnB1dFRva2VucyI6MTIxOTAsIk91dHB1dFRva2VucyI6MzgsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMTQsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTFUMTM6NTY6MzQuMTAxNzU4MTk2WiIsIlNlcSI6MjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyNTE5NTAwMjYsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwidHJ5X3RvX2ZyZWVfbWVtX2Nncm91cF9wYWdlc1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJtbS92bXNjYW4uY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJtbS92bXNjYW4uYz02NzE5PXVuc2lnbmVkIGxvbmcgbWVtX2Nncm91cF9zaHJpbmtfbm9kZShzdHJ1Y3QgbWVtX2Nncm91cCAqbWVtY2csXFxuLS1cXG5tbS92bXNjYW4uYy02NzU4LVxcbm1tL3Ztc2Nhbi5jOjY3NTk6dW5zaWduZWQgbG9uZyB0cnlfdG9fZnJlZV9tZW1fY2dyb3VwX3BhZ2VzKHN0cnVjdCBtZW1fY2dyb3VwICptZW1jZyxcXG5tbS92bXNjYW4uYy02NzYwLVxcdFxcdFxcdFxcdFxcdCAgIHVuc2lnbmVkIGxvbmcgbnJfcGFnZXMsXFxuLS1cXG5tbS92bXNjYW4uYy02Nzk5LSNlbHNlXFxubW0vdm1zY2FuLmM6NjgwMDp1bnNpZ25lZCBsb25nIHRyeV90b19mcmVlX21lbV9jZ3JvdXBfcGFnZXMoc3RydWN0IG1lbV9jZ3JvdXAgKm1lbWNnLFxcbm1tL3Ztc2Nhbi5jLTY4MDEtXFx0XFx0XFx0XFx0XFx0ICAgdW5zaWduZWQgbG9uZyBucl9wYWdlcyxcXG4tLVxcbm1tL3Ztc2Nhbi5jPTc4NjM9aW50IHVzZXJfcHJvYWN0aXZlX3JlY2xhaW0oY2hhciAqYnVmLFxcbi0tXFxubW0vdm1zY2FuLmMtNzkyMy1cXHRcXHRcXHRcXHRcXHQgIE1FTUNHX1JFQ0xBSU1fUFJPQUNUSVZFO1xcbm1tL3Ztc2Nhbi5jOjc5MjQ6XFx0XFx0XFx0cmVjbGFpbWVkID0gdHJ5X3RvX2ZyZWVfbWVtX2Nncm91cF9wYWdlcyhtZW1jZyxcXG5tbS92bXNjYW4uYy03OTI1LVxcdFxcdFxcdFxcdFxcdFxcdCBiYXRjaF9zaXplLCBnZnBfbWFzayxcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTFUMTM6NTY6MzQuMzUzNzE0NDcyWiIsIlNlcSI6MjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM4NDY0MTQ5MzYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgbXkgb3duIG1lbnRhbCBwcm9jZXNzaW5nOlxuXG4qKkFuYWx5emluZyBNZW1vcnkgTWFuYWdlbWVudCBDYW5kaWRhdGVzKipcblxuQWxyaWdodCwgbGV0J3Mgc2VlLCB3aGVuIHdlJ3JlIHRoaW5raW5nIGFib3V0IHBvdGVudGlhbCBjYW5kaWRhdGVzIGZvciBtZW1vcnkgZnJlZWluZyBzdHJhdGVnaWVzLCBgdHJ5X3RvX2ZyZWVfbWVtX2Nncm91cF9wYWdlc2AgZGVmaW5pdGVseSBzdGFuZHMgb3V0IGFzIGEgc3Ryb25nIGNvbnRlbmRlci4gSXQncyB0YXJnZXRlZCBhbmQgbGlrZWx5IHByb3ZpZGVzIGEgZm9jdXNlZCBhcHByb2FjaCB0byByZWNsYWltIG1lbW9yeSB3aXRoaW4gYSBjb250cm9sIGdyb3VwIGNvbnRleHQuIFRoYXQgc2VlbXMgcHJvbWlzaW5nLlxuXG5PbiB0aGUgb3RoZXIgaGFuZCwgSSdtIG5vdGluZyB0aGUgZGlmZmVyZW5jZSBpbiB0aGUgc2NvcGUgb2Ygc29tZSBvZiB0aGVzZSBmdW5jdGlvbnMuIGB3YWxrX21tYCBpcyBzdGF0aWMsIHdoaWNoIHVzdWFsbHkgbWVhbnMgaXQncyBsaW1pdGVkIGluIGl0cyBhY2Nlc3NpYmlsaXR5LiBgbHJ1X2dlbl9sb29rX2Fyb3VuZGAgaXMgbm9uLXN0YXRpYywgd2hpY2ggaW1wbGllcyBpdCdzIG1vcmUgZ2VuZXJhbGx5IHVzYWJsZS4gSSdsbCBuZWVkIHRvIGNvbnNpZGVyIGhvdyB0aGVpciByZXNwZWN0aXZlIHNjb3BlIGFmZmVjdHMgdGhlaXIgdXNlZnVsbmVzcyBpbiB0aGlzIHNjZW5hcmlvLiBUaGlzIHdpbGwgbGlrZWx5IGVmZmVjdCBhbnkgZG93bnN0cmVhbSBpbnRlcmFjdGlvbi5cblxuXG4iLCJJbnB1dFRva2VucyI6MTMwODAsIk91dHB1dFRva2VucyI6MzQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0NSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xMVQxMzo1NjozOC4yMDAxMzEzMThaIiwiU2VxIjoyNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjYwOTMyNzUwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImxydV9nZW5fbG9va19hcm91bmRcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibW0vdm1zY2FuLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibW0vdm1zY2FuLmM9MjcxNz1zdGF0aWMgYm9vbCBfX21heWJlX3VudXNlZCBzZXFfaXNfdmFsaWQoc3RydWN0IGxydXZlYyAqbHJ1dmVjKVxcbi0tXFxubW0vdm1zY2FuLmMtMjc0Ni0gKiB3YWxrX3BtZF9yYW5nZSgpOyB0aGUgZXZpY3Rpb24gYWxzbyByZXBvcnQgdGhlbSB3aGVuIHdhbGtpbmcgdGhlIHJtYXBcXG5tbS92bXNjYW4uYzoyNzQ3OiAqIGluIGxydV9nZW5fbG9va19hcm91bmQoKS5cXG5tbS92bXNjYW4uYy0yNzQ4LSAqXFxuLS1cXG5tbS92bXNjYW4uYz0zOTk0PXN0YXRpYyBib29sIHRyeV90b19pbmNfbWF4X3NlcShzdHJ1Y3QgbHJ1dmVjICpscnV2ZWMsIHVuc2lnbmVkIGxvbmcgc2VxLFxcbi0tXFxubW0vdm1zY2FuLmMtNDAxMy1cXHQgKiBJZiB0aGUgaGFyZHdhcmUgZG9lc24ndCBhdXRvbWF0aWNhbGx5IHNldCB0aGUgYWNjZXNzZWQgYml0LCBmYWxsYmFja1xcbm1tL3Ztc2Nhbi5jOjQwMTQ6XFx0ICogdG8gbHJ1X2dlbl9sb29rX2Fyb3VuZCgpLCB3aGljaCBvbmx5IGNsZWFycyB0aGUgYWNjZXNzZWQgYml0IGluIGFcXG5tbS92bXNjYW4uYy00MDE1LVxcdCAqIGhhbmRmdWwgb2YgUFRFcy4gU3ByZWFkaW5nIHRoZSB3b3JrIG91dCBvdmVyIGEgcGVyaW9kIG9mIHRpbWUgdXN1YWxseVxcbi0tXFxubW0vdm1zY2FuLmM9NDEzMz1zdGF0aWMgdm9pZCBscnVfZ2VuX2FnZV9ub2RlKHN0cnVjdCBwZ2xpc3RfZGF0YSAqcGdkYXQsIHN0cnVjdCBzY2FuX2NvbnRyb2wgKnNjKVxcbi0tXFxubW0vdm1zY2FuLmMtNDE3OS0gKi9cXG5tbS92bXNjYW4uYzo0MTgwOmJvb2wgbHJ1X2dlbl9sb29rX2Fyb3VuZChzdHJ1Y3QgcGFnZV92bWFfbWFwcGVkX3dhbGsgKnB2bXcsIHVuc2lnbmVkIGludCBucilcXG5tbS92bXNjYW4uYy00MTgxLXtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTFUMTM6NTY6MzguMjYxMDY5Nzc3WiIsIlNlcSI6MjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjY5ODExMDAwMzQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBMUlUgR2VuZXJhdGlvbiBQYWdlIFJlY2xhaW0gTG9naWMqKlxuXG5Pa2F5LCBzbyBgbHJ1X2dlbl9sb29rX2Fyb3VuZGAgaXNuJ3Qgc3RhdGljLCB3aGljaCBpcyBnb29kIHRvIGtlZXAgaW4gbWluZC4gTGV0J3MgcmV2aXNpdCBgcmVzZXRfYmF0Y2hfc2l6ZWAuIEkgc2VlIGl0J3MgY2FsbGVkIGZyb20gYm90aCBgd2Fsa19tbWAgYW5kIGBldmljdF9mb2xpb3NgLiBgd2Fsa19tbWAgdHJhY2VzIGJhY2sgdG8gYHRyeV90b19pbmNfbWF4X3NlcWAsIHdoaWxlIGBldmljdF9mb2xpb3NgIGlzIGNhbGxlZCBieSBgdHJ5X3RvX3Nocmlua19scnV2ZWNgIGFuZCBgcnVuX2V2aWN0aW9uYC4gTm93LCBgdHJ5X3RvX3Nocmlua19scnV2ZWNgIGl0c2VsZiBpcyBjYWxsZWQgYnkgYHNocmlua19vbmVgIGFuZCBgbHJ1X2dlbl9zaHJpbmtfbHJ1dmVjYC4gVGhhdCBsYXR0ZXIgZnVuY3Rpb24gbGVhZHMgdG8gYHNocmlua19scnV2ZWNgLCB3aGljaCBnZXRzIGNhbGxlZCBieSBgc2hyaW5rX25vZGVgLiBGaW5hbGx5LCBgc2hyaW5rX25vZGVgIHRpZXMgaW50byBzZXZlcmFsIG90aGVyIGZ1bmN0aW9uczogYHNocmlua196b25lc2AsIGBkb190cnlfdG9fZnJlZV9wYWdlc2AsIGBrc3dhcGRfc2hyaW5rX25vZGVgLCBhbmQgYG1lbV9jZ3JvdXBfc2hyaW5rX25vZGVgLlxuXG5TbywgY29uc2lkZXJpbmcgdGhlIGNvbnRleHQsIGB0cnlfdG9fZnJlZV9tZW1fY2dyb3VwX3BhZ2VzYCBsb29rcyBsaWtlIGEgZ29vZCBub24tc3RhdGljIGZ1bmN0aW9uIHRvIGZvY3VzIG9uLiBBbHNvIGB0cnlfdG9fZnJlZV9wYWdlc2AsIGJ1dCB0aGF0IGZ1bmN0aW9uIGlzIHByb2JhYmx5IGEgaG90IHBhdGguIFNpbmNlIFN5emthbGxlciBjYW4gaGFuZGxlIHN0YXRpYyBmdW5jdGlvbnMsIEkgdGhpbmsgZm9jdXNpbmcgb24gYGV2aWN0X2ZvbGlvc2AgYW5kIGB0cnlfdG9faW5jX21heF9zZXFgIGFzIHRoZSBgRm9jdXNTeW1ib2xzYCBzZWVtcyBsaWtlIGEgc29saWQgYXBwcm9hY2ggZm9yIG5vdy5cblxuSG9sZCBvbiwgdGhlIHBhdGNoIHRvdWNoZXMgYGxydXZlY19saXZlX2xvY2tfaXJxYCwgd2hpY2ggaXMgdXNlZCBpbiBgcmVzZXRfYmF0Y2hfc2l6ZWAuIEkgcmVtZW1iZXIgYHJlc2V0X2JhdGNoX3NpemVgIGdldHMgY2FsbGVkIHdoZW4gYHdhbGstXHUwMDNlYmF0Y2hlZGAgaXMgdHJ1ZS4gTGV0J3MgdHJhY2UgdGhhdCBiYWNrOiBgd2Fsay1cdTAwM2ViYXRjaGVkYCBnZXRzIGluY3JlbWVudGVkIGluIGB1cGRhdGVfYmF0Y2hfc2l6ZWAsIGFuZCB0aGF0IGZ1bmN0aW9uIGlzIGNhbGxlZCBieSBgZm9saW9faW5jX2dlbmAgYW5kIGB3YWxrX3VwZGF0ZV9mb2xpb2AuIGB3YWxrX3VwZGF0ZV9mb2xpb2AgaXMgY2FsbGVkIGJ5IGB3YWxrX3B0ZV9yYW5nZWAgYW5kIGB3YWxrX3BtZF9yYW5nZV9sb2NrZWRgLiBBaCwgdGhlc2UgYXJlIGFsbCBjcml0aWNhbCBjb21wb25lbnRzIG9mIHRoZSBMUlUgZ2VuZXJhdGlvbiBwYWdlIHJlY2xhaW0gbG9naWMuXG5cbkZpbmFsbHksIHRoZSByZXF1aXJlZCBjb25maWdzIGFyZSBgQ09ORklHX01FTUNHYCBhbmQgYENPTkZJR19MUlVfR0VOYC4gTGV0IG1lIGp1c3QgZG91YmxlLWNoZWNrIHRoYXQgYENPTkZJR19MUlVfR0VOYCBpcyB0aGUgZXhhY3QgbmFtZSwgdG8gYmUgYWJzb2x1dGVseSBzdXJlLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMzcwMywiT3V0cHV0VG9rZW5zIjoyOSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjQ3NCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xMVQxMzo1Njo0NS4yNDIxNzIwNjJaIiwiU2VxIjoyOCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI1MDI1Mzc5NywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgTFJVX0dFTlwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJtbS9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm1tL0tjb25maWc9MTQwNj1lbmRpZiAjIFVTRVJGQVVMVEZEXFxuLS1cXG5tbS9LY29uZmlnLTE0MDgtIyBtdWx0aS1nZW4gTFJVIHtcXG5tbS9LY29uZmlnOjE0MDk6Y29uZmlnIExSVV9HRU5cXG5tbS9LY29uZmlnLTE0MTAtXFx0Ym9vbCBcXFwiTXVsdGktR2VuIExSVVxcXCJcXG4tLVxcbm1tL0tjb25maWctMTQxNy1cXG5tbS9LY29uZmlnOjE0MTg6Y29uZmlnIExSVV9HRU5fRU5BQkxFRFxcbm1tL0tjb25maWctMTQxOS1cXHRib29sIFxcXCJFbmFibGUgYnkgZGVmYXVsdFxcXCJcXG4tLVxcbm1tL0tjb25maWctMTQyMy1cXG5tbS9LY29uZmlnOjE0MjQ6Y29uZmlnIExSVV9HRU5fU1RBVFNcXG5tbS9LY29uZmlnLTE0MjUtXFx0Ym9vbCBcXFwiRnVsbCBzdGF0cyBmb3IgZGVidWdnaW5nXFxcIlxcbi0tXFxubW0vS2NvbmZpZy0xNDMyLVxcbm1tL0tjb25maWc6MTQzMzpjb25maWcgTFJVX0dFTl9XQUxLU19NTVVcXG5tbS9LY29uZmlnLTE0MzQtXFx0ZGVmX2Jvb2wgeVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xMVQxMzo1Njo0NS40OTI0MzA4OTlaIiwiU2VxIjoyOSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzQ5NDQ0NzY5NiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IGludGVycHJldGF0aW9uIG9mIHRoZXNlIHRob3VnaHRzLCBzdW1tYXJpemVkIGZyb20gbXkgcGVyc3BlY3RpdmUgYXMgc29tZW9uZSBmYW1pbGlhciB3aXRoIHN5c3RlbSBjb25maWd1cmF0aW9uOlxuXG4qKkNoZWNraW5nIENvbmZpZ3VyYXRpb24gUGFyYW1ldGVycyoqXG5cbkFscmlnaHQsIHNvIEkgc2VlIHdlJ3JlIGRlYWxpbmcgd2l0aCB0d28ga2V5IGNvbmZpZ3VyYXRpb25zIGhlcmU6IGBMUlVfR0VOYCBhbmQgYE1FTUNHYC4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRoYXQgYExSVV9HRU5gIHByb2JhYmx5IGRlYWxzIHdpdGggTGVhc3QgUmVjZW50bHkgVXNlZCBwYWdlIHJlcGxhY2VtZW50IGdlbmVyYXRpb24sIHdoaWNoIG1ha2VzIHNlbnNlLiBgTUVNQ0dgLCBhcyBJJ20gc3VyZSBtb3N0IG9mIHVzIGtub3csIGlzIGxpa2VseSByZWxhdGVkIHRvIE1lbW9yeSBDb250cm9sIEdyb3Vwcy5cblxuQnV0IGJlZm9yZSBJIGdvIGFueSBmdXJ0aGVyIGFzc3VtaW5nIGFueXRoaW5nLCBpdOKAmXMgYWx3YXlzIHdpc2UgdG8gZG91YmxlLWNoZWNrLiBJIHNob3VsZCBjb25maXJtIHRoZSBleGFjdCBuYW1lIG9mIHRoYXQgYENPTkZJR19NRU1DR2AgcGFyYW1ldGVyLCBqdXN0IHRvIGJlIGFic29sdXRlbHkgc3VyZS4gQmVzdCB0byBiZSBwcmVjaXNlIHdoZW4gZGlnZ2luZyBpbnRvIHRoZXNlIGRldGFpbHMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE0OTQ1LCJPdXRwdXRUb2tlbnMiOjI3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzksIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTFUMTM6NTY6NDguOTg2ODgxODQ1WiIsIlNlcSI6MzAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo2MTQ0NzM0OSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgTUVNQ0dcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiaW5pdC9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImluaXQvS2NvbmZpZz0xMDYzPWNvbmZpZyBDR1JPVVBfRkFWT1JfRFlOTU9EU1xcbi0tXFxuaW5pdC9LY29uZmlnLTEwNzItXFxuaW5pdC9LY29uZmlnOjEwNzM6Y29uZmlnIE1FTUNHXFxuaW5pdC9LY29uZmlnLTEwNzQtXFx0Ym9vbCBcXFwiTWVtb3J5IGNvbnRyb2xsZXJcXFwiXFxuLS1cXG5pbml0L0tjb25maWctMTA4MS1cXG5pbml0L0tjb25maWc6MTA4Mjpjb25maWcgTUVNQ0dfTk1JX1VOU0FGRVxcbmluaXQvS2NvbmZpZy0xMDgzLVxcdGJvb2xcXG4tLVxcbmluaXQvS2NvbmZpZy0xMDg4LVxcbmluaXQvS2NvbmZpZzoxMDg5OmNvbmZpZyBNRU1DR19OTUlfU0FGRVRZX1JFUVVJUkVTX0FUT01JQ1xcbmluaXQvS2NvbmZpZy0xMDkwLVxcdGJvb2xcXG4tLVxcbmluaXQvS2NvbmZpZy0xMDk1LVxcbmluaXQvS2NvbmZpZzoxMDk2OmNvbmZpZyBNRU1DR19WMVxcbmluaXQvS2NvbmZpZy0xMDk3LVxcdGJvb2wgXFxcIkxlZ2FjeSBjZ3JvdXAgdjEgbWVtb3J5IGNvbnRyb2xsZXJcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTExVDEzOjU2OjQ5LjA0ODMzMTc3NFoiLCJTZXEiOjMxLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1MzM4NDkxMDE4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkZ1enppbmcgU3RyYXRlZ3kgZm9yIE1lbWNnIE1lbW9yeSBNYW5hZ2VtZW50KipcblxuT2theSwgc28gdGhlIHBhdGNoIGludHJvZHVjZXMgYSBuZXcgbG9ja2luZyBtZWNoYW5pc20sIGBscnV2ZWNfbGl2ZV9sb2NrX2lycWAsIHNwZWNpZmljYWxseSB3aXRoaW4gdGhlIG11bHRpLWdlbiBMUlUgcGFnZSByZWNsYWltIHByb2Nlc3MuIEl0J3MgdGFyZ2V0ZWQgYXQgYGxydXZlY2AgaW4gdGhlIGByZXNldF9iYXRjaF9zaXplYCBmdW5jdGlvbiwgYW5kIGl0J3MgdHJhdmVyc2luZyB0aGUgbWVtY2cgaGllcmFyY2h5IHRvIGZpbmQgYSBub24tZHlpbmcgbWVtY2cgdG8gbG9jayBpdHMgYGxydXZlY2AuIFRoaXMgaXMgYSBwcmV0dHkgc2lnbmlmaWNhbnQgY2hhbmdlIGluIGNvcmUgbWVtb3J5IG1hbmFnZW1lbnQuIEdpdmVuIHRoYXQgaXQncyBhY3RpdmUgZHVyaW5nIG1lbW9yeSBwcmVzc3VyZSBhbmQgbWVtY2cgdGVhcmRvd24sIGZ1enppbmcgdGhpcyBhcmVhIGlzIGRlZmluaXRlbHkgd2FycmFudGVkLiBUaGUgcGF0Y2ggaXMgY2VudGVyZWQgYXJvdW5kIGBNRU1DR2AuXG5cbk5vdywgdGhlIGltcG9ydGFudCBzeW1ib2xzIHRvIGZvY3VzIG9uIGFyZSBgcmVzZXRfYmF0Y2hfc2l6ZWAsIGBldmljdF9mb2xpb3NgLCBhbmQgYHRyeV90b19pbmNfbWF4X3NlcWAuIExldCdzIGV2YWx1YXRlIHRoZW0uIGByZXNldF9iYXRjaF9zaXplYCBpcyBzdGF0aWMsIHdoaWNoIGNhbiBiZSB0cmlja3kgYnV0IGl0IGlzIGRpcmVjdGx5IG1vZGlmaWVkLCB3aGljaCBtYWtlcyBpdCBhIGdvb2QgY2FuZGlkYXRlLiBIb2xkIG9uLCBgcmVzZXRfYmF0Y2hfc2l6ZWAgaGFzIGJlZW4gbW9kaWZpZWQgdG8gdXNlIGBscnV2ZWNfbGl2ZV9sb2NrX2lycWAuIFBlcmZlY3QhIFRoaXMgbWFrZXMgYHJlc2V0X2JhdGNoX3NpemVgIGFuIGlkZWFsIGZvY3VzIHN5bWJvbC5cblxuVGhlbiwgYGV2aWN0X2ZvbGlvc2AgYW5kIGB0cnlfdG9faW5jX21heF9zZXFgIGFyZSBpdHMgY2FsbGVycywgc28gbGV0J3MgZGVmaW5pdGVseSBpbmNsdWRlIHRoZW0gaW4gdGhlIGZ1enppbmcgc2NvcGUuIEp1c3QgdG8gYmUgdGhvcm91Z2gsIGxldCdzIG1ha2Ugc3VyZSB0aGVyZSBhcmUgbm8gb3RoZXIgY2FsbGVycyBvZiBgcmVzZXRfYmF0Y2hfc2l6ZWAgdGhhdCB3ZSdyZSBtaXNzaW5nLiBXZSB3YW50IHRvIGJlIGNvbXByZWhlbnNpdmUgaW4gdGhlIGFwcHJvYWNoLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxNTM5NCwiT3V0cHV0VG9rZW5zIjozMSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI3MSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xMVQxMzo1Njo1NC4zODY4MjU2MzJaIiwiU2VxIjozMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjYyOTI4NDE5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInJlc2V0X2JhdGNoX3NpemVcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibW0vdm1zY2FuLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibW0vdm1zY2FuLmM9MzI0OT1zdGF0aWMgdm9pZCB1cGRhdGVfYmF0Y2hfc2l6ZShzdHJ1Y3QgbHJ1X2dlbl9tbV93YWxrICp3YWxrLCBzdHJ1Y3QgZm9saW8gKmZvbGlvLFxcbi0tXFxubW0vdm1zY2FuLmMtMzI2NC1cXG5tbS92bXNjYW4uYzozMjY1OnN0YXRpYyB2b2lkIHJlc2V0X2JhdGNoX3NpemUoc3RydWN0IGxydV9nZW5fbW1fd2FsayAqd2FsaylcXG5tbS92bXNjYW4uYy0zMjY2LXtcXG4tLVxcbm1tL3Ztc2Nhbi5jPTM3NTY9c3RhdGljIHZvaWQgd2Fsa19tbShzdHJ1Y3QgbW1fc3RydWN0ICptbSwgc3RydWN0IGxydV9nZW5fbW1fd2FsayAqd2FsaylcXG4tLVxcbm1tL3Ztc2Nhbi5jLTM3ODQtXFx0XFx0aWYgKHdhbGstXFx1MDAzZWJhdGNoZWQpXFxubW0vdm1zY2FuLmM6Mzc4NTpcXHRcXHRcXHRyZXNldF9iYXRjaF9zaXplKHdhbGspO1xcbm1tL3Ztc2Nhbi5jLTM3ODYtXFxuLS1cXG5tbS92bXNjYW4uYz00ODAxPXN0YXRpYyBpbnQgZXZpY3RfZm9saW9zKHVuc2lnbmVkIGxvbmcgbnJfdG9fc2Nhbiwgc3RydWN0IGxydXZlYyAqbHJ1dmVjLFxcbi0tXFxubW0vdm1zY2FuLmMtNDg2OC1cXHRcXHR3YWxrLVxcdTAwM2VscnV2ZWMgPSBscnV2ZWM7XFxubW0vdm1zY2FuLmM6NDg2OTpcXHRcXHRyZXNldF9iYXRjaF9zaXplKHdhbGspO1xcbm1tL3Ztc2Nhbi5jLTQ4NzAtXFx0fVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xMVQxMzo1Njo1NC40NDk3NTkwODJaIiwiU2VxIjozMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDAxMzkyNDUxNiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBteSBvd24gbWVudGFsIHByb2Nlc3Npbmc6XG5cbioqQW5hbHl6aW5nIEtleSBGdW5jdGlvbnMgYW5kIENhbGwgUGF0aHMqKlxuXG5SaWdodCwgc28gSSd2ZSBjb25maXJtZWQgdGhhdCBgd2Fsa19tbWAgYW5kIGBldmljdF9mb2xpb3NgIGFyZSB0aGUgKnNvbGUqIGNhbGxlcnMgb2Ygd2hhdGV2ZXIgZnVuY3Rpb24gd2UncmUgZGVhbGluZyB3aXRoLiBUaGF0J3MgY3J1Y2lhbC4gS25vd2luZyB0aGUgY2FsbCBncmFwaCBuYXJyb3dzIGRvd24gdGhlIHBvdGVudGlhbCBpc3N1ZXMgc2lnbmlmaWNhbnRseS4gU28sIGlmIEknbSB0cmFja2luZyBkb3duIGEgcGVyZm9ybWFuY2UgYm90dGxlbmVjaywgYnVnLCBvciB0cnlpbmcgdG8gdW5kZXJzdGFuZCB0aGUgY29udHJvbCBmbG93LCBJIGtub3cgbXkgcHJpbWFyeSBmb2N1cyBuZWVkcyB0byBiZSBvbiB0aGVzZSBmb3VyIHN5bWJvbHM6IGByZXNldF9iYXRjaF9zaXplYCwgYHdhbGtfbW1gLCBgZXZpY3RfZm9saW9zYCwgYW5kIGB0cnlfdG9faW5jX21heF9zZXFgLiBUaGVzZSBhcmUgbXkgZW50cnkgcG9pbnRzIGFuZCBwb3RlbnRpYWwgcHJvYmxlbSBhcmVhcy5cblxuTm93LCBsZXQncyBnZXQgZG93biB0byBhY3R1YWxseSBzZXR0aW5nIHVwIHRoZSByZXN1bHRzLiBJJ20gcmVhZHkgdG8gbW92ZSBmb3J3YXJkLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxNjMzMiwiT3V0cHV0VG9rZW5zIjoxNjcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo2NCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xMVQxMzo1Njo1OC40NjM2ODU1NDhaIiwiU2VxIjozNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo3Njg2NjA1NiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiTUVNQ0dcIixcbiAgICBcIkxSVV9HRU5cIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJyZXNldF9iYXRjaF9zaXplXCIsXG4gICAgXCJ3YWxrX21tXCIsXG4gICAgXCJldmljdF9mb2xpb3NcIixcbiAgICBcInRyeV90b19pbmNfbWF4X3NlcVwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGludHJvZHVjZXMgYSBuZXcgbG9ja2luZyBtZWNoYW5pc20gKGBscnV2ZWNfbGl2ZV9sb2NrX2lycWApIGZvciBgbHJ1dmVjYCBpbiB0aGUgbXVsdGktZ2VuIExSVSBwYWdlIHJlY2xhaW0gcGF0aCAoYHJlc2V0X2JhdGNoX3NpemVgKS4gSXQgdHJhdmVyc2VzIHRoZSBtZW1jZyBoaWVyYXJjaHkgdG8gZmluZCBhIG5vbi1keWluZyBtZW1jZyB0byBsb2NrIGl0cyBscnV2ZWMuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiBjb3JlIG1lbW9yeSBtYW5hZ2VtZW50IGxvZ2ljIHRoYXQgY2FuIGJlIHJlYWNoZWQgZHVyaW5nIG1lbW9yeSBwcmVzc3VyZSBhbmQgbWVtY2cgdGVhcmRvd24sIG1ha2luZyBpdCB3b3J0aCBmdXp6aW5nLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIk1FTUNHXCIsXG4gICAgXCJMUlVfR0VOXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwicmVzZXRfYmF0Y2hfc2l6ZVwiLFxuICAgIFwid2Fsa19tbVwiLFxuICAgIFwiZXZpY3RfZm9saW9zXCIsXG4gICAgXCJ0cnlfdG9faW5jX21heF9zZXFcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBpbnRyb2R1Y2VzIGEgbmV3IGxvY2tpbmcgbWVjaGFuaXNtIChgbHJ1dmVjX2xpdmVfbG9ja19pcnFgKSBmb3IgYGxydXZlY2AgaW4gdGhlIG11bHRpLWdlbiBMUlUgcGFnZSByZWNsYWltIHBhdGggKGByZXNldF9iYXRjaF9zaXplYCkuIEl0IHRyYXZlcnNlcyB0aGUgbWVtY2cgaGllcmFyY2h5IHRvIGZpbmQgYSBub24tZHlpbmcgbWVtY2cgdG8gbG9jayBpdHMgbHJ1dmVjLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gY29yZSBtZW1vcnkgbWFuYWdlbWVudCBsb2dpYyB0aGF0IGNhbiBiZSByZWFjaGVkIGR1cmluZyBtZW1vcnkgcHJlc3N1cmUgYW5kIG1lbWNnIHRlYXJkb3duLCBtYWtpbmcgaXQgd29ydGggZnV6emluZy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLmR1cmF0aW9uIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnTGxtVG9rZW4gPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS50b2tlbnMgLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdUb29sRHVyID0gc3RhdHMudG9vbC5jb3VudCA+IDAgPyAoc3RhdHMudG9vbC5kdXJhdGlvbiAvIHN0YXRzLnRvb2wuY291bnQpLnRvRml4ZWQoMikgOiAwOwoKCQkJY29uc3QgbGxtU3VtYXJ5Q2VsbHMgPSBbc3RhdHMubGxtLmNvdW50LCBzdGF0cy5sbG0udG9rZW5zLCBhdmdMbG1Ub2tlbiwgc3RhdHMubGxtLmR1cmF0aW9uLCBhdmdMbG1EdXJdOwoJCQljb25zdCB0b29sU3VtbWFyeUNlbGxzID0gW3N0YXRzLnRvb2wuY291bnQsIHN0YXRzLnRvb2wuZHVyYXRpb24sIGF2Z1Rvb2xEdXJdOwoKCQkJY29uc3QgbGxtU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbGxtX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQlsbG1TdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgbGxtVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQlsbG1TdW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJbGxtVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJbGxtU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQobGxtVHIpOwoKCQkJY29uc3QgdG9vbFN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rvb2xfc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgdG9vbFRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJdG9vbFN1bW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJdG9vbFRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZCh0b29sVHIpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBmaWx0ZXJlZFN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBbImxsbSIsICJ0b29sIl0uaW5jbHVkZXMoZC5UeXBlKSk7CgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ0R1cmF0aW9uJyk7CgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7IAoKCQkJZmlsdGVyZWRTdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJCgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsKCQkJCWxldCB0b29sdGlwID0gcy5OYW1lOwoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIgJiYgcy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoJCQkJZGF0YS5hZGRSb3coW2Ake3MuU2VxfWAsIGR1ciwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1RpbWUgQ29uc3VtcHRpb24gb2YgTExNL1Rvb2wgQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTS9Ub29sIFN0ZXBzJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ1NlY29uZHMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2R1cmF0aW9uX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBsbG1TdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gZC5UeXBlID09PSAibGxtIik7CgkJCWlmIChsbG1TdGVwcy5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwkJCQoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ1Rva2VucycpOwkJCQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICdzdHlsZSd9KTsJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7CQoKCQkJY29uc3QgYWdlbnRDb2xvcnMgPSB7fTsKCQkJY29uc3QgcGFsZXR0ZSA9IFsnIzQyODVGNCcsICcjREI0NDM3JywgJyNGNEI0MDAnLCAnIzBGOUQ1OCcsICcjQUI0N0JDJywgJyMwMEFDQzEnXTsKCQkJbGV0IGNvbG9ySWR4ID0gMDsKCQkJY29uc3QgYWdlbnRMTE1Db3VudHMgPSB7fTsKCQkJbGxtU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCWlmICghYWdlbnRDb2xvcnNbcy5OYW1lXSkgewoJCQkJCWFnZW50Q29sb3JzW3MuTmFtZV0gPSBwYWxldHRlW2NvbG9ySWR4ICUgcGFsZXR0ZS5sZW5ndGhdOwoJCQkJCWNvbG9ySWR4Kys7CgkJCQl9CgoJCQkJYWdlbnRMTE1Db3VudHNbcy5OYW1lXSA9IChhZ2VudExMTUNvdW50c1tzLk5hbWVdIHx8IDApICsgMTsKCQkJCWNvbnN0IGxhYmVsID0gYCR7cy5OYW1lfS0ke2FnZW50TExNQ291bnRzW3MuTmFtZV19YDsKCQkJCWNvbnN0IHRvdGFsVG9rZW5zID0gcy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2VuczsKCQkJCWNvbnN0IHN0eWxlID0gYGNvbG9yOiAke2FnZW50Q29sb3JzW3MuTmFtZV19YDsKCQkJCWxldCB0b29sdGlwID0gYFRvdGFsIFRva2VuczogJHt0b3RhbFRva2Vuc31cbihJbjogJHtzLklucHV0VG9rZW5zfSwgT3V0OiAke3MuT3V0cHV0VG9rZW5zfSwgVGhvdWdodHM6ICR7cy5PdXRwdXRUaG91Z2h0c1Rva2Vuc30pYDsKCQkJCWlmIChzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgoJCQkJZGF0YS5hZGRSb3coW2xhYmVsLCB0b3RhbFRva2Vucywgc3R5bGUsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUb2tlbiBDb25zdW1wdGlvbiBieSBMTE0gQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTSBDYWxsIFNlcXVlbmNlJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ0NvbnN1bWVkIFRva2VucycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9rZW5fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCQlsZXQgYWxsRXhwYW5kZWQgPSBmYWxzZTsKCQlmdW5jdGlvbiB0b2dnbGVBbGxEZXRhaWxzKCkgewoJCQlhbGxFeHBhbmRlZCA9ICFhbGxFeHBhbmRlZDsKCQkJZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnZGV0YWlscycpLmZvckVhY2goZCA9PiB7CgkJCQlpZiAoYWxsRXhwYW5kZWQpIGQuc2V0QXR0cmlidXRlKCdvcGVuJywgJycpOwoJCQkJZWxzZSBkLnJlbW92ZUF0dHJpYnV0ZSgnb3BlbicpOwoJCQl9KTsKCQl9Cgk8L3NjcmlwdD4KCgo8L2JvZHk+CjwvaHRtbD4K" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowdzbqr[1] Phase: Succeeded StartedAt: 2026-07-11 13:57:10 +0000 UTC FinishedAt: 2026-07-11 13:57:10 +0000 UTC Input: nil Output: nil --------- Name: series-workflowdzbqr[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-07-11 13:57:10 +0000 UTC FinishedAt: 2026-07-11 13:57:10 +0000 UTC Input: nil Output: nil --------- Name: series-workflowdzbqr[2] Phase: Succeeded StartedAt: 2026-07-11 13:57:10 +0000 UTC FinishedAt: 2026-07-11 18:14:17 +0000 UTC Input: nil Output: nil --------- Name: series-workflowdzbqr[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a02ab76061e6be0bfb6640f96f180b167d461c94","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEMCG","LRU_GEN"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["reset_batch_size","walk_mm","evict_folios","try_to_inc_max_seq"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"a02ab76061e6be0bfb6640f96f180b167d461c94","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEMCG","LRU_GEN"],"series_id":"d2a57b0f-8bff-4803-9f48-d9fd77c8deec","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN) Phase: Succeeded StartedAt: 2026-07-11 13:57:10 +0000 UTC FinishedAt: 2026-07-11 18:14:17 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"a02ab76061e6be0bfb6640f96f180b167d461c94","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEMCG","LRU_GEN"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},"fuzz":{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["reset_batch_size","walk_mm","evict_folios","try_to_inc_max_seq"],"skip_cover_check":true},"patched":{"arch":"amd64","commit_hash":"a02ab76061e6be0bfb6640f96f180b167d461c94","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEMCG","LRU_GEN"],"series_id":"d2a57b0f-8bff-4803-9f48-d9fd77c8deec","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},"retest":null,"track":"KASAN"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: nil --------- Name: series-workflowdzbqr[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a02ab76061e6be0bfb6640f96f180b167d461c94","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEMCG","LRU_GEN"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["reset_batch_size","walk_mm","evict_folios","try_to_inc_max_seq"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"a02ab76061e6be0bfb6640f96f180b167d461c94","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEMCG","LRU_GEN"],"series_id":"d2a57b0f-8bff-4803-9f48-d9fd77c8deec","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[0] Phase: Succeeded StartedAt: 2026-07-11 13:57:10 +0000 UTC FinishedAt: 2026-07-11 13:57:20 +0000 UTC Input: nil Output: nil --------- Name: series-workflowdzbqr[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a02ab76061e6be0bfb6640f96f180b167d461c94","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEMCG","LRU_GEN"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["reset_batch_size","walk_mm","evict_folios","try_to_inc_max_seq"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"a02ab76061e6be0bfb6640f96f180b167d461c94","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEMCG","LRU_GEN"],"series_id":"d2a57b0f-8bff-4803-9f48-d9fd77c8deec","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[0].save-base-req Phase: Succeeded StartedAt: 2026-07-11 13:57:10 +0000 UTC FinishedAt: 2026-07-11 13:57:14 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"a02ab76061e6be0bfb6640f96f180b167d461c94","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEMCG","LRU_GEN"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.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-workflowdzbqr/series-workflowdzbqr-convert-artifact-3805480075/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowdzbqr[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a02ab76061e6be0bfb6640f96f180b167d461c94","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEMCG","LRU_GEN"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["reset_batch_size","walk_mm","evict_folios","try_to_inc_max_seq"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"a02ab76061e6be0bfb6640f96f180b167d461c94","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEMCG","LRU_GEN"],"series_id":"d2a57b0f-8bff-4803-9f48-d9fd77c8deec","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[1] Phase: Succeeded StartedAt: 2026-07-11 13:57:20 +0000 UTC FinishedAt: 2026-07-11 14:27:56 +0000 UTC Input: nil Output: nil --------- Name: series-workflowdzbqr[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a02ab76061e6be0bfb6640f96f180b167d461c94","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEMCG","LRU_GEN"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["reset_batch_size","walk_mm","evict_folios","try_to_inc_max_seq"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"a02ab76061e6be0bfb6640f96f180b167d461c94","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEMCG","LRU_GEN"],"series_id":"d2a57b0f-8bff-4803-9f48-d9fd77c8deec","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[1].base-build Phase: Succeeded StartedAt: 2026-07-11 13:57:20 +0000 UTC FinishedAt: 2026-07-11 14:27:56 +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:*2f0e5685-9719-4e86-a644-79ab6cb8fdae,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-workflowdzbqr/series-workflowdzbqr-convert-artifact-3805480075/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": "0a643f4b-49cb-4f84-8bb3-e06040c7abb6", "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-workflowdzbqr/series-workflowdzbqr-build-action-2014773129/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowdzbqr[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a02ab76061e6be0bfb6640f96f180b167d461c94","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEMCG","LRU_GEN"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["reset_batch_size","walk_mm","evict_folios","try_to_inc_max_seq"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"a02ab76061e6be0bfb6640f96f180b167d461c94","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEMCG","LRU_GEN"],"series_id":"d2a57b0f-8bff-4803-9f48-d9fd77c8deec","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[1].base-build(0) Phase: Succeeded StartedAt: 2026-07-11 13:57:20 +0000 UTC FinishedAt: 2026-07-11 14:27:45 +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:*2f0e5685-9719-4e86-a644-79ab6cb8fdae,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-workflowdzbqr/series-workflowdzbqr-convert-artifact-3805480075/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": "0a643f4b-49cb-4f84-8bb3-e06040c7abb6", "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-workflowdzbqr/series-workflowdzbqr-build-action-2014773129/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowdzbqr[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a02ab76061e6be0bfb6640f96f180b167d461c94","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEMCG","LRU_GEN"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["reset_batch_size","walk_mm","evict_folios","try_to_inc_max_seq"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"a02ab76061e6be0bfb6640f96f180b167d461c94","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEMCG","LRU_GEN"],"series_id":"d2a57b0f-8bff-4803-9f48-d9fd77c8deec","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[2] Phase: Succeeded StartedAt: 2026-07-11 14:27:56 +0000 UTC FinishedAt: 2026-07-11 14:27:56 +0000 UTC Input: nil Output: nil --------- Name: series-workflowdzbqr[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a02ab76061e6be0bfb6640f96f180b167d461c94","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEMCG","LRU_GEN"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["reset_batch_size","walk_mm","evict_folios","try_to_inc_max_seq"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"a02ab76061e6be0bfb6640f96f180b167d461c94","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEMCG","LRU_GEN"],"series_id":"d2a57b0f-8bff-4803-9f48-d9fd77c8deec","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[2].abort-if-base-build-failed Phase: Skipped StartedAt: 2026-07-11 14:27:56 +0000 UTC FinishedAt: 2026-07-11 14:27:56 +0000 UTC Input: nil Output: nil --------- Name: series-workflowdzbqr[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a02ab76061e6be0bfb6640f96f180b167d461c94","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEMCG","LRU_GEN"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["reset_batch_size","walk_mm","evict_folios","try_to_inc_max_seq"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"a02ab76061e6be0bfb6640f96f180b167d461c94","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEMCG","LRU_GEN"],"series_id":"d2a57b0f-8bff-4803-9f48-d9fd77c8deec","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[3] Phase: Succeeded StartedAt: 2026-07-11 14:27:56 +0000 UTC FinishedAt: 2026-07-11 14:28:07 +0000 UTC Input: nil Output: nil --------- Name: series-workflowdzbqr[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a02ab76061e6be0bfb6640f96f180b167d461c94","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEMCG","LRU_GEN"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["reset_batch_size","walk_mm","evict_folios","try_to_inc_max_seq"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"a02ab76061e6be0bfb6640f96f180b167d461c94","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEMCG","LRU_GEN"],"series_id":"d2a57b0f-8bff-4803-9f48-d9fd77c8deec","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[3].save-patched-req Phase: Succeeded StartedAt: 2026-07-11 14:27:56 +0000 UTC FinishedAt: 2026-07-11 14:28:00 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"a02ab76061e6be0bfb6640f96f180b167d461c94","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEMCG","LRU_GEN"],"series_id":"d2a57b0f-8bff-4803-9f48-d9fd77c8deec","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.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-workflowdzbqr/series-workflowdzbqr-convert-artifact-929569506/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowdzbqr[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a02ab76061e6be0bfb6640f96f180b167d461c94","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEMCG","LRU_GEN"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["reset_batch_size","walk_mm","evict_folios","try_to_inc_max_seq"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"a02ab76061e6be0bfb6640f96f180b167d461c94","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEMCG","LRU_GEN"],"series_id":"d2a57b0f-8bff-4803-9f48-d9fd77c8deec","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[4] Phase: Succeeded StartedAt: 2026-07-11 14:28:07 +0000 UTC FinishedAt: 2026-07-11 14:30:02 +0000 UTC Input: nil Output: nil --------- Name: series-workflowdzbqr[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a02ab76061e6be0bfb6640f96f180b167d461c94","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEMCG","LRU_GEN"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["reset_batch_size","walk_mm","evict_folios","try_to_inc_max_seq"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"a02ab76061e6be0bfb6640f96f180b167d461c94","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEMCG","LRU_GEN"],"series_id":"d2a57b0f-8bff-4803-9f48-d9fd77c8deec","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[4].boot-test-base Phase: Succeeded StartedAt: 2026-07-11 14:28:07 +0000 UTC FinishedAt: 2026-07-11 14:29:51 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*0a643f4b-49cb-4f84-8bb3-e06040c7abb6,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-workflowdzbqr/series-workflowdzbqr-build-action-2014773129/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-workflowdzbqr[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a02ab76061e6be0bfb6640f96f180b167d461c94","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEMCG","LRU_GEN"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["reset_batch_size","walk_mm","evict_folios","try_to_inc_max_seq"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"a02ab76061e6be0bfb6640f96f180b167d461c94","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEMCG","LRU_GEN"],"series_id":"d2a57b0f-8bff-4803-9f48-d9fd77c8deec","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[5] Phase: Succeeded StartedAt: 2026-07-11 14:30:02 +0000 UTC FinishedAt: 2026-07-11 14:30:02 +0000 UTC Input: nil Output: nil --------- Name: series-workflowdzbqr[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a02ab76061e6be0bfb6640f96f180b167d461c94","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEMCG","LRU_GEN"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["reset_batch_size","walk_mm","evict_folios","try_to_inc_max_seq"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"a02ab76061e6be0bfb6640f96f180b167d461c94","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEMCG","LRU_GEN"],"series_id":"d2a57b0f-8bff-4803-9f48-d9fd77c8deec","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[5].abort-if-base-boot-failed Phase: Skipped StartedAt: 2026-07-11 14:30:02 +0000 UTC FinishedAt: 2026-07-11 14:30:02 +0000 UTC Input: nil Output: nil --------- Name: series-workflowdzbqr[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a02ab76061e6be0bfb6640f96f180b167d461c94","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEMCG","LRU_GEN"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["reset_batch_size","walk_mm","evict_folios","try_to_inc_max_seq"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"a02ab76061e6be0bfb6640f96f180b167d461c94","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEMCG","LRU_GEN"],"series_id":"d2a57b0f-8bff-4803-9f48-d9fd77c8deec","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[6] Phase: Succeeded StartedAt: 2026-07-11 14:30:02 +0000 UTC FinishedAt: 2026-07-11 15:10:15 +0000 UTC Input: nil Output: nil --------- Name: series-workflowdzbqr[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a02ab76061e6be0bfb6640f96f180b167d461c94","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEMCG","LRU_GEN"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["reset_batch_size","walk_mm","evict_folios","try_to_inc_max_seq"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"a02ab76061e6be0bfb6640f96f180b167d461c94","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEMCG","LRU_GEN"],"series_id":"d2a57b0f-8bff-4803-9f48-d9fd77c8deec","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[6].patched-build Phase: Succeeded StartedAt: 2026-07-11 14:30:02 +0000 UTC FinishedAt: 2026-07-11 15:10:15 +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:*2f0e5685-9719-4e86-a644-79ab6cb8fdae,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-workflowdzbqr/series-workflowdzbqr-convert-artifact-929569506/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": "e1accbb1-0a94-43c2-a3db-5ed3afde8f2b", "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-workflowdzbqr/series-workflowdzbqr-build-action-2540341046/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowdzbqr[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a02ab76061e6be0bfb6640f96f180b167d461c94","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEMCG","LRU_GEN"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["reset_batch_size","walk_mm","evict_folios","try_to_inc_max_seq"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"a02ab76061e6be0bfb6640f96f180b167d461c94","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEMCG","LRU_GEN"],"series_id":"d2a57b0f-8bff-4803-9f48-d9fd77c8deec","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[6].patched-build(0) Phase: Succeeded StartedAt: 2026-07-11 14:30:02 +0000 UTC FinishedAt: 2026-07-11 15:10:04 +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:*2f0e5685-9719-4e86-a644-79ab6cb8fdae,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-workflowdzbqr/series-workflowdzbqr-convert-artifact-929569506/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": "e1accbb1-0a94-43c2-a3db-5ed3afde8f2b", "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-workflowdzbqr/series-workflowdzbqr-build-action-2540341046/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowdzbqr[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a02ab76061e6be0bfb6640f96f180b167d461c94","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEMCG","LRU_GEN"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["reset_batch_size","walk_mm","evict_folios","try_to_inc_max_seq"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"a02ab76061e6be0bfb6640f96f180b167d461c94","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEMCG","LRU_GEN"],"series_id":"d2a57b0f-8bff-4803-9f48-d9fd77c8deec","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[7] Phase: Succeeded StartedAt: 2026-07-11 15:10:15 +0000 UTC FinishedAt: 2026-07-11 15:10:15 +0000 UTC Input: nil Output: nil --------- Name: series-workflowdzbqr[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a02ab76061e6be0bfb6640f96f180b167d461c94","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEMCG","LRU_GEN"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["reset_batch_size","walk_mm","evict_folios","try_to_inc_max_seq"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"a02ab76061e6be0bfb6640f96f180b167d461c94","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEMCG","LRU_GEN"],"series_id":"d2a57b0f-8bff-4803-9f48-d9fd77c8deec","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[7].abort-if-patched-build-failed Phase: Skipped StartedAt: 2026-07-11 15:10:15 +0000 UTC FinishedAt: 2026-07-11 15:10:15 +0000 UTC Input: nil Output: nil --------- Name: series-workflowdzbqr[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a02ab76061e6be0bfb6640f96f180b167d461c94","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEMCG","LRU_GEN"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["reset_batch_size","walk_mm","evict_folios","try_to_inc_max_seq"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"a02ab76061e6be0bfb6640f96f180b167d461c94","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEMCG","LRU_GEN"],"series_id":"d2a57b0f-8bff-4803-9f48-d9fd77c8deec","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[8] Phase: Succeeded StartedAt: 2026-07-11 15:10:15 +0000 UTC FinishedAt: 2026-07-11 15:12:43 +0000 UTC Input: nil Output: nil --------- Name: series-workflowdzbqr[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a02ab76061e6be0bfb6640f96f180b167d461c94","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEMCG","LRU_GEN"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["reset_batch_size","walk_mm","evict_folios","try_to_inc_max_seq"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"a02ab76061e6be0bfb6640f96f180b167d461c94","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEMCG","LRU_GEN"],"series_id":"d2a57b0f-8bff-4803-9f48-d9fd77c8deec","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[8].boot-test-patched Phase: Succeeded StartedAt: 2026-07-11 15:10:15 +0000 UTC FinishedAt: 2026-07-11 15:12:32 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*e1accbb1-0a94-43c2-a3db-5ed3afde8f2b,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-workflowdzbqr/series-workflowdzbqr-build-action-2540341046/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-workflowdzbqr[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a02ab76061e6be0bfb6640f96f180b167d461c94","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEMCG","LRU_GEN"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["reset_batch_size","walk_mm","evict_folios","try_to_inc_max_seq"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"a02ab76061e6be0bfb6640f96f180b167d461c94","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEMCG","LRU_GEN"],"series_id":"d2a57b0f-8bff-4803-9f48-d9fd77c8deec","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[10] Phase: Succeeded StartedAt: 2026-07-11 15:12:43 +0000 UTC FinishedAt: 2026-07-11 18:14:17 +0000 UTC Input: nil Output: nil --------- Name: series-workflowdzbqr[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a02ab76061e6be0bfb6640f96f180b167d461c94","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEMCG","LRU_GEN"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["reset_batch_size","walk_mm","evict_folios","try_to_inc_max_seq"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"a02ab76061e6be0bfb6640f96f180b167d461c94","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEMCG","LRU_GEN"],"series_id":"d2a57b0f-8bff-4803-9f48-d9fd77c8deec","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[10].run-fuzz Phase: Succeeded StartedAt: 2026-07-11 15:12:43 +0000 UTC FinishedAt: 2026-07-11 18:14:17 +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-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["reset_batch_size","walk_mm","evict_folios","try_to_inc_max_seq"],"skip_cover_check":true},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:*0a643f4b-49cb-4f84-8bb3-e06040c7abb6,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*e1accbb1-0a94-43c2-a3db-5ed3afde8f2b,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-workflowdzbqr/series-workflowdzbqr-build-action-2014773129/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-workflowdzbqr/series-workflowdzbqr-build-action-2540341046/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflowdzbqr[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a02ab76061e6be0bfb6640f96f180b167d461c94","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEMCG","LRU_GEN"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["reset_batch_size","walk_mm","evict_folios","try_to_inc_max_seq"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"a02ab76061e6be0bfb6640f96f180b167d461c94","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEMCG","LRU_GEN"],"series_id":"d2a57b0f-8bff-4803-9f48-d9fd77c8deec","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[10].run-fuzz[0] Phase: Succeeded StartedAt: 2026-07-11 15:12:43 +0000 UTC FinishedAt: 2026-07-11 15:12:55 +0000 UTC Input: nil Output: nil --------- Name: series-workflowdzbqr[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a02ab76061e6be0bfb6640f96f180b167d461c94","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEMCG","LRU_GEN"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["reset_batch_size","walk_mm","evict_folios","try_to_inc_max_seq"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"a02ab76061e6be0bfb6640f96f180b167d461c94","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEMCG","LRU_GEN"],"series_id":"d2a57b0f-8bff-4803-9f48-d9fd77c8deec","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[10].run-fuzz[0].save-fuzz-config Phase: Succeeded StartedAt: 2026-07-11 15:12:43 +0000 UTC FinishedAt: 2026-07-11 15:12:50 +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-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["reset_batch_size","walk_mm","evict_folios","try_to_inc_max_seq"],"skip_cover_check":true},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-workflowdzbqr/series-workflowdzbqr-convert-artifact-890135319/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowdzbqr[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a02ab76061e6be0bfb6640f96f180b167d461c94","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEMCG","LRU_GEN"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["reset_batch_size","walk_mm","evict_folios","try_to_inc_max_seq"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"a02ab76061e6be0bfb6640f96f180b167d461c94","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEMCG","LRU_GEN"],"series_id":"d2a57b0f-8bff-4803-9f48-d9fd77c8deec","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[9] Phase: Succeeded StartedAt: 2026-07-11 15:12:43 +0000 UTC FinishedAt: 2026-07-11 15:12:43 +0000 UTC Input: nil Output: nil --------- Name: series-workflowdzbqr[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a02ab76061e6be0bfb6640f96f180b167d461c94","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEMCG","LRU_GEN"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["reset_batch_size","walk_mm","evict_folios","try_to_inc_max_seq"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"a02ab76061e6be0bfb6640f96f180b167d461c94","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEMCG","LRU_GEN"],"series_id":"d2a57b0f-8bff-4803-9f48-d9fd77c8deec","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[9].abort-if-patched-boot-failed Phase: Skipped StartedAt: 2026-07-11 15:12:43 +0000 UTC FinishedAt: 2026-07-11 15:12:43 +0000 UTC Input: nil Output: nil --------- Name: series-workflowdzbqr[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a02ab76061e6be0bfb6640f96f180b167d461c94","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEMCG","LRU_GEN"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["reset_batch_size","walk_mm","evict_folios","try_to_inc_max_seq"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"a02ab76061e6be0bfb6640f96f180b167d461c94","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEMCG","LRU_GEN"],"series_id":"d2a57b0f-8bff-4803-9f48-d9fd77c8deec","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[10].run-retest Phase: Skipped StartedAt: 2026-07-11 15:12:44 +0000 UTC FinishedAt: 2026-07-11 15:12:44 +0000 UTC Input: nil Output: nil --------- Name: series-workflowdzbqr[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a02ab76061e6be0bfb6640f96f180b167d461c94","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEMCG","LRU_GEN"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["reset_batch_size","walk_mm","evict_folios","try_to_inc_max_seq"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"a02ab76061e6be0bfb6640f96f180b167d461c94","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEMCG","LRU_GEN"],"series_id":"d2a57b0f-8bff-4803-9f48-d9fd77c8deec","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[10].run-fuzz[1] Phase: Succeeded StartedAt: 2026-07-11 15:12:55 +0000 UTC FinishedAt: 2026-07-11 18:14:17 +0000 UTC Input: nil Output: nil --------- Name: series-workflowdzbqr[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a02ab76061e6be0bfb6640f96f180b167d461c94","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEMCG","LRU_GEN"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["reset_batch_size","walk_mm","evict_folios","try_to_inc_max_seq"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"a02ab76061e6be0bfb6640f96f180b167d461c94","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEMCG","LRU_GEN"],"series_id":"d2a57b0f-8bff-4803-9f48-d9fd77c8deec","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[10].run-fuzz[1].fuzz Phase: Succeeded StartedAt: 2026-07-11 15:12:55 +0000 UTC FinishedAt: 2026-07-11 18:14:07 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*0a643f4b-49cb-4f84-8bb3-e06040c7abb6,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*e1accbb1-0a94-43c2-a3db-5ed3afde8f2b,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-workflowdzbqr/series-workflowdzbqr-build-action-2014773129/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-workflowdzbqr/series-workflowdzbqr-build-action-2540341046/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-workflowdzbqr/series-workflowdzbqr-convert-artifact-890135319/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,}