Name: series-workflow745ml Phase: Running StartedAt: 2026-06-25 08:21:30 +0000 UTC FinishedAt: 0001-01-01 00:00:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflow745ml[0] Phase: Succeeded StartedAt: 2026-06-25 08:21:30 +0000 UTC FinishedAt: 2026-06-25 08:31:05 +0000 UTC Input: nil Output: nil --------- Name: series-workflow745ml[0].run-triage Phase: Succeeded StartedAt: 2026-06-25 08:21:30 +0000 UTC FinishedAt: 2026-06-25 08:31:05 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "bpf-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git", "commit_hash": "f34c6b3a3c3d98f34918e1d2ea846a5acccac6d1", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "NET_DSA", "NET_DSA_LOOP", "NET_DSA_TAG_AR9331", "NET_DSA_TAG_BRCM", "NET_DSA_TAG_BRCM_LEGACY", "NET_DSA_TAG_BRCM_PREPEND", "NET_DSA_TAG_HELLCREEK", "NET_DSA_TAG_GSWIP", "NET_DSA_TAG_DSA", "NET_DSA_TAG_EDSA", "NET_DSA_TAG_MTK", "NET_DSA_TAG_MXL_862XX", "NET_DSA_TAG_MXL_GSW1XX", "NET_DSA_TAG_KSZ", "NET_DSA_TAG_NETC", "NET_DSA_TAG_OCELOT", "NET_DSA_TAG_OCELOT_8021Q", "NET_DSA_TAG_QCA", "NET_DSA_TAG_RTL4_A", "NET_DSA_TAG_RTL8_4", "NET_DSA_TAG_RZN1_A5PSW", "NET_DSA_TAG_LAN9303", "NET_DSA_TAG_SJA1105", "NET_DSA_TAG_TRAILER", "NET_DSA_TAG_VSC73XX_8021Q", "NET_DSA_TAG_XRS700X", "NET_DSA_TAG_YT921X" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "bpf-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git", "commit_hash": "f34c6b3a3c3d98f34918e1d2ea846a5acccac6d1", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "NET_DSA", "NET_DSA_LOOP", "NET_DSA_TAG_AR9331", "NET_DSA_TAG_BRCM", "NET_DSA_TAG_BRCM_LEGACY", "NET_DSA_TAG_BRCM_PREPEND", "NET_DSA_TAG_HELLCREEK", "NET_DSA_TAG_GSWIP", "NET_DSA_TAG_DSA", "NET_DSA_TAG_EDSA", "NET_DSA_TAG_MTK", "NET_DSA_TAG_MXL_862XX", "NET_DSA_TAG_MXL_GSW1XX", "NET_DSA_TAG_KSZ", "NET_DSA_TAG_NETC", "NET_DSA_TAG_OCELOT", "NET_DSA_TAG_OCELOT_8021Q", "NET_DSA_TAG_QCA", "NET_DSA_TAG_RTL4_A", "NET_DSA_TAG_RTL8_4", "NET_DSA_TAG_RZN1_A5PSW", "NET_DSA_TAG_LAN9303", "NET_DSA_TAG_SJA1105", "NET_DSA_TAG_TRAILER", "NET_DSA_TAG_VSC73XX_8021Q", "NET_DSA_TAG_XRS700X", "NET_DSA_TAG_YT921X" ], "series_id": "2e62e044-69c2-4487-9819-b9332e30abaa" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "dsa_switch_rcv", "dsa_user_xmit", "ar9331_tag_rcv", "brcm_tag_xmit_ll", "brcm_tag_rcv_ll", "dsa_rcv_ll", "edsa_rcv", "ksz_common_rcv", "ocelot_rcv", "qca_tag_rcv", "sja1105_rcv", "trailer_rcv" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db" ], "skip_cover_check": false, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI1IDA4OjI5PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O05FVF9EU0EmIzM0OywKICAgICYjMzQ7TkVUX0RTQV9MT09QJiMzNDssCiAgICAmIzM0O05FVF9EU0FfVEFHX0FSOTMzMSYjMzQ7LAogICAgJiMzNDtORVRfRFNBX1RBR19CUkNNJiMzNDssCiAgICAmIzM0O05FVF9EU0FfVEFHX0JSQ01fTEVHQUNZJiMzNDssCiAgICAmIzM0O05FVF9EU0FfVEFHX0JSQ01fUFJFUEVORCYjMzQ7LAogICAgJiMzNDtORVRfRFNBX1RBR19IRUxMQ1JFRUsmIzM0OywKICAgICYjMzQ7TkVUX0RTQV9UQUdfR1NXSVAmIzM0OywKICAgICYjMzQ7TkVUX0RTQV9UQUdfRFNBJiMzNDssCiAgICAmIzM0O05FVF9EU0FfVEFHX0VEU0EmIzM0OywKICAgICYjMzQ7TkVUX0RTQV9UQUdfTVRLJiMzNDssCiAgICAmIzM0O05FVF9EU0FfVEFHX01YTF84NjJYWCYjMzQ7LAogICAgJiMzNDtORVRfRFNBX1RBR19NWExfR1NXMVhYJiMzNDssCiAgICAmIzM0O05FVF9EU0FfVEFHX0tTWiYjMzQ7LAogICAgJiMzNDtORVRfRFNBX1RBR19ORVRDJiMzNDssCiAgICAmIzM0O05FVF9EU0FfVEFHX09DRUxPVCYjMzQ7LAogICAgJiMzNDtORVRfRFNBX1RBR19PQ0VMT1RfODAyMVEmIzM0OywKICAgICYjMzQ7TkVUX0RTQV9UQUdfUUNBJiMzNDssCiAgICAmIzM0O05FVF9EU0FfVEFHX1JUTDRfQSYjMzQ7LAogICAgJiMzNDtORVRfRFNBX1RBR19SVEw4XzQmIzM0OywKICAgICYjMzQ7TkVUX0RTQV9UQUdfUlpOMV9BNVBTVyYjMzQ7LAogICAgJiMzNDtORVRfRFNBX1RBR19MQU45MzAzJiMzNDssCiAgICAmIzM0O05FVF9EU0FfVEFHX1NKQTExMDUmIzM0OywKICAgICYjMzQ7TkVUX0RTQV9UQUdfVFJBSUxFUiYjMzQ7LAogICAgJiMzNDtORVRfRFNBX1RBR19WU0M3M1hYXzgwMjFRJiMzNDssCiAgICAmIzM0O05FVF9EU0FfVEFHX1hSUzcwMFgmIzM0OywKICAgICYjMzQ7TkVUX0RTQV9UQUdfWVQ5MjFYJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7ZHNhX3N3aXRjaF9yY3YmIzM0OywKICAgICYjMzQ7ZHNhX3VzZXJfeG1pdCYjMzQ7LAogICAgJiMzNDthcjkzMzFfdGFnX3JjdiYjMzQ7LAogICAgJiMzNDticmNtX3RhZ194bWl0X2xsJiMzNDssCiAgICAmIzM0O2JyY21fdGFnX3Jjdl9sbCYjMzQ7LAogICAgJiMzNDtkc2FfcmN2X2xsJiMzNDssCiAgICAmIzM0O2Vkc2FfcmN2JiMzNDssCiAgICAmIzM0O2tzel9jb21tb25fcmN2JiMzNDssCiAgICAmIzM0O29jZWxvdF9yY3YmIzM0OywKICAgICYjMzQ7cWNhX3RhZ19yY3YmIzM0OywKICAgICYjMzQ7c2phMTEwNV9yY3YmIzM0OywKICAgICYjMzQ7dHJhaWxlcl9yY3YmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggcmVmYWN0b3JzIHNrYiBtZW1vcnkgbWFuYWdlbWVudCBpbiB0aGUgRFNBIChEaXN0cmlidXRlZCBTd2l0Y2ggQXJjaGl0ZWN0dXJlKSBzdWJzeXN0ZW0uIEl0IHNoaWZ0cyB0aGUgcmVzcG9uc2liaWxpdHkgb2YgZnJlZWluZyB0aGUgc2tiIG9uIGVycm9yIHBhdGhzIGZyb20gdGhlIGNvcmUgRFNBIGZ1bmN0aW9ucyAoZHNhX3VzZXJfeG1pdCwgZHNhX3N3aXRjaF9yY3YpIHRvIHRoZSBpbmRpdmlkdWFsIHRhZ2dlciBkcml2ZXJzLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgdGhhdCBjb3VsZCBpbnRyb2R1Y2UgbWVtb3J5IGxlYWtzIG9yIGRvdWJsZSBmcmVlcyBpZiBhbnkgZXJyb3IgcGF0aCBpbiBhIHRhZ2dlciBkcml2ZXIgaXMgbWlzc2VkIG9yIG1pc2hhbmRsZWQuIFRoZSBjb2RlIGlzIHJlYWNoYWJsZSBpbiBhIHZpcnR1YWxpemVkIGVudmlyb25tZW50IGJ5IHVzaW5nIHRoZSBkc2FfbG9vcCBtb2NrLXVwIHN3aXRjaCBkcml2ZXIgYW5kIGR5bmFtaWNhbGx5IGNoYW5naW5nIHRoZSB0YWdnaW5nIHByb3RvY29sIHZpYSBzeXNmcy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yNSAwODoyOTwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IDY3NGU4OTk4Mzc3Y2M2ZjE3Y2IyOWZmYzY2NTVmOTJmYzM5YTE5ZjdcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgVGh1IEp1biAyNSAwODoyOTowNCAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9uZXQvZHNhL3RhZy5jIGIvbmV0L2RzYS90YWcuY1xuaW5kZXggNzlhZDEwNTkwMmQ5NzguLjk5MTczMmQ2ZWFlMmMzIDEwMDY0NFxuLS0tIGEvbmV0L2RzYS90YWcuY1xuJiM0MzsmIzQzOyYjNDM7IGIvbmV0L2RzYS90YWcuY1xuQEAgLTc5LDE1ICYjNDM7NzksMTYgQEAgc3RhdGljIGludCBkc2Ffc3dpdGNoX3JjdihzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxuIFx0XHRpZiAobGlrZWx5KHNrYi1cdTAwM2VkZXYpKSB7XG4gXHRcdFx0ZHNhX2RlZmF1bHRfb2ZmbG9hZF9md2RfbWFyayhza2IpO1xuIFx0XHRcdG5za2IgPSBza2I7XG4mIzQzO1x0XHR9IGVsc2Uge1xuJiM0MztcdFx0XHQvKiBKdXN0IGRyb3AgdGhlIHNrYiBpZiB3ZSBjYW4mIzM5O3QgZmluZCB0aGUgdXNlciAqL1xuJiM0MztcdFx0XHRrZnJlZV9za2Ioc2tiKTtcbiBcdFx0fVxuIFx0fSBlbHNlIHtcbiBcdFx0bnNrYiA9IGNwdV9kcC1cdTAwM2VyY3Yoc2tiLCBkZXYpO1xuIFx0fVxuIFxuLVx0aWYgKCFuc2tiKSB7XG4tXHRcdGtmcmVlX3NrYihza2IpO1xuJiM0MztcdGlmICghbnNrYilcbiBcdFx0cmV0dXJuIDA7XG4tXHR9XG4gXG4gXHRza2IgPSBuc2tiO1xuIFx0c2tiX3B1c2goc2tiLCBFVEhfSExFTik7XG5AQCAtMTA3LDExICYjNDM7MTA4LDEwIEBAIHN0YXRpYyBpbnQgZHNhX3N3aXRjaF9yY3Yoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IG5ldF9kZXZpY2UgKmRldixcbiBcbiBcdGlmICh1bmxpa2VseShjcHVfZHAtXHUwMDNlZHMtXHUwMDNldW50YWdfYnJpZGdlX3B2aWQgfHxcbiBcdFx0ICAgICBjcHVfZHAtXHUwMDNlZHMtXHUwMDNldW50YWdfdmxhbl9hd2FyZV9icmlkZ2VfcHZpZCkpIHtcbiYjNDM7XHRcdC8qIGRzYV9zb2Z0d2FyZV92bGFuX3VudGFnKCkgZHJvcHMgc2tiIG9uIGZhaWx1cmUgKi9cbiBcdFx0bnNrYiA9IGRzYV9zb2Z0d2FyZV92bGFuX3VudGFnKHNrYik7XG4tXHRcdGlmICghbnNrYikge1xuLVx0XHRcdGtmcmVlX3NrYihza2IpO1xuJiM0MztcdFx0aWYgKCFuc2tiKVxuIFx0XHRcdHJldHVybiAwO1xuLVx0XHR9XG4gXHRcdHNrYiA9IG5za2I7XG4gXHR9XG4gXG5kaWZmIC0tZ2l0IGEvbmV0L2RzYS90YWdfYXI5MzMxLmMgYi9uZXQvZHNhL3RhZ19hcjkzMzEuY1xuaW5kZXggY2JiNTg4Y2E3M2FhZjUuLjJlMjM4ODE0M2IwMjUxIDEwMDY0NFxuLS0tIGEvbmV0L2RzYS90YWdfYXI5MzMxLmNcbiYjNDM7JiM0MzsmIzQzOyBiL25ldC9kc2EvdGFnX2FyOTMzMS5jXG5AQCAtNTEsOCAmIzQzOzUxLDEwIEBAIHN0YXRpYyBzdHJ1Y3Qgc2tfYnVmZiAqYXI5MzMxX3RhZ19yY3Yoc3RydWN0IHNrX2J1ZmYgKnNrYixcbiBcdHU4IHZlciwgcG9ydDtcbiBcdHUxNiBoZHI7XG4gXG4tXHRpZiAodW5saWtlbHkoIXBza2JfbWF5X3B1bGwoc2tiLCBBUjkzMzFfSERSX0xFTikpKVxuJiM0MztcdGlmICh1bmxpa2VseSghcHNrYl9tYXlfcHVsbChza2IsIEFSOTMzMV9IRFJfTEVOKSkpIHtcbiYjNDM7XHRcdGtmcmVlX3NrYihza2IpO1xuIFx0XHRyZXR1cm4gTlVMTDtcbiYjNDM7XHR9XG4gXG4gXHRoZHIgPSBsZTE2X3RvX2NwdSgqKF9fbGUxNiAqKXNrYl9tYWNfaGVhZGVyKHNrYikpO1xuIFxuQEAgLTYwLDEyICYjNDM7NjIsMTQgQEAgc3RhdGljIHN0cnVjdCBza19idWZmICphcjkzMzFfdGFnX3JjdihzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxuIFx0aWYgKHVubGlrZWx5KHZlciAhPSBBUjkzMzFfSERSX1ZFUlNJT04pKSB7XG4gXHRcdG5ldGRldl93YXJuX29uY2UobmRldiwgXCYjMzQ7JXM6JWkgd3JvbmcgaGVhZGVyIHZlcnNpb24gMHglMnhcXG5cJiMzNDssXG4gXHRcdFx0XHQgX19mdW5jX18sIF9fTElORV9fLCBoZHIpO1xuJiM0MztcdFx0a2ZyZWVfc2tiKHNrYik7XG4gXHRcdHJldHVybiBOVUxMO1xuIFx0fVxuIFxuIFx0aWYgKHVubGlrZWx5KGhkciBcdTAwMjYgQVI5MzMxX0hEUl9GUk9NX0NQVSkpIHtcbiBcdFx0bmV0ZGV2X3dhcm5fb25jZShuZGV2LCBcJiMzNDslczolaSBwYWNrZXQgc2hvdWxkIG5vdCBiZSBmcm9tIGNwdSAweCUyeFxcblwmIzM0OyxcbiBcdFx0XHRcdCBfX2Z1bmNfXywgX19MSU5FX18sIGhkcik7XG4mIzQzO1x0XHRrZnJlZV9za2Ioc2tiKTtcbiBcdFx0cmV0dXJuIE5VTEw7XG4gXHR9XG4gXG5AQCAtNzUsOCAmIzQzOzc5LDEwIEBAIHN0YXRpYyBzdHJ1Y3Qgc2tfYnVmZiAqYXI5MzMxX3RhZ19yY3Yoc3RydWN0IHNrX2J1ZmYgKnNrYixcbiBcdHBvcnQgPSBGSUVMRF9HRVQoQVI5MzMxX0hEUl9QT1JUX05VTV9NQVNLLCBoZHIpO1xuIFxuIFx0c2tiLVx1MDAzZWRldiA9IGRzYV9jb25kdWl0X2ZpbmRfdXNlcihuZGV2LCAwLCBwb3J0KTtcbi1cdGlmICghc2tiLVx1MDAzZWRldilcbiYjNDM7XHRpZiAoIXNrYi1cdTAwM2VkZXYpIHtcbiYjNDM7XHRcdGtmcmVlX3NrYihza2IpO1xuIFx0XHRyZXR1cm4gTlVMTDtcbiYjNDM7XHR9XG4gXG4gXHRyZXR1cm4gc2tiO1xuIH1cbmRpZmYgLS1naXQgYS9uZXQvZHNhL3RhZ19icmNtLmMgYi9uZXQvZHNhL3RhZ19icmNtLmNcbmluZGV4IGNmOTQyMDQzOTA1NDNmLi40MTFlM2I1N2QxNmFmNSAxMDA2NDRcbi0tLSBhL25ldC9kc2EvdGFnX2JyY20uY1xuJiM0MzsmIzQzOyYjNDM7IGIvbmV0L2RzYS90YWdfYnJjbS5jXG5AQCAtMTAyLDkgJiM0MzsxMDIsOSBAQCBzdGF0aWMgc3RydWN0IHNrX2J1ZmYgKmJyY21fdGFnX3htaXRfbGwoc3RydWN0IHNrX2J1ZmYgKnNrYixcbiBcdCAqIChpbmNsdWRpbmcgRkNTIGFuZCB0YWcpIGJlY2F1c2UgdGhlIGxlbmd0aCB2ZXJpZmljYXRpb24gaXMgZG9uZSBhZnRlclxuIFx0ICogdGhlIEJyb2FkY29tIHRhZyBpcyBzdHJpcHBlZCBvZmYgdGhlIGluZ3Jlc3MgcGFja2V0LlxuIFx0ICpcbi1cdCAqIExldCBkc2FfdXNlcl94bWl0KCkgZnJlZSB0aGUgU0tCXG4mIzQzO1x0ICogRnJlZSB0aGUgU0tCIG9uIGVycm9yLlxuIFx0ICovXG4tXHRpZiAoX19za2JfcHV0X3BhZHRvKHNrYiwgRVRIX1pMRU4gJiM0MzsgQlJDTV9UQUdfTEVOLCBmYWxzZSkpXG4mIzQzO1x0aWYgKHNrYl9wdXRfcGFkdG8oc2tiLCBFVEhfWkxFTiAmIzQzOyBCUkNNX1RBR19MRU4pKVxuIFx0XHRyZXR1cm4gTlVMTDtcbiBcbiBcdHNrYl9wdXNoKHNrYiwgQlJDTV9UQUdfTEVOKTtcbkBAIC0xNTEsMjcgJiM0MzsxNTEsMzUgQEAgc3RhdGljIHN0cnVjdCBza19idWZmICpicmNtX3RhZ19yY3ZfbGwoc3RydWN0IHNrX2J1ZmYgKnNrYixcbiBcdGludCBzb3VyY2VfcG9ydDtcbiBcdHU4ICpicmNtX3RhZztcbiBcbi1cdGlmICh1bmxpa2VseSghcHNrYl9tYXlfcHVsbChza2IsIEJSQ01fVEFHX0xFTikpKVxuJiM0MztcdGlmICh1bmxpa2VseSghcHNrYl9tYXlfcHVsbChza2IsIEJSQ01fVEFHX0xFTikpKSB7XG4mIzQzO1x0XHRrZnJlZV9za2Ioc2tiKTtcbiBcdFx0cmV0dXJuIE5VTEw7XG4mIzQzO1x0fVxuIFxuIFx0YnJjbV90YWcgPSBza2ItXHUwMDNlZGF0YSAtIG9mZnNldDtcbiBcbiBcdC8qIFRoZSBvcGNvZGUgc2hvdWxkIG5ldmVyIGJlIGRpZmZlcmVudCB0aGFuIDBiMDAwICovXG4tXHRpZiAodW5saWtlbHkoKGJyY21fdGFnWzBdIFx1MDAzZVx1MDAzZSBCUkNNX09QQ09ERV9TSElGVCkgXHUwMDI2IEJSQ01fT1BDT0RFX01BU0spKVxuJiM0MztcdGlmICh1bmxpa2VseSgoYnJjbV90YWdbMF0gXHUwMDNlXHUwMDNlIEJSQ01fT1BDT0RFX1NISUZUKSBcdTAwMjYgQlJDTV9PUENPREVfTUFTSykpIHtcbiYjNDM7XHRcdGtmcmVlX3NrYihza2IpO1xuIFx0XHRyZXR1cm4gTlVMTDtcbiYjNDM7XHR9XG4gXG4gXHQvKiBXZSBzaG91bGQgbmV2ZXIgc2VlIGEgcmVzZXJ2ZWQgcmVhc29uIGNvZGUgd2l0aG91dCBrbm93aW5nIGhvdyB0b1xuIFx0ICogaGFuZGxlIGl0XG4gXHQgKi9cbi1cdGlmICh1bmxpa2VseShicmNtX3RhZ1syXSBcdTAwMjYgQlJDTV9FR19SQ19SU1ZEKSlcbiYjNDM7XHRpZiAodW5saWtlbHkoYnJjbV90YWdbMl0gXHUwMDI2IEJSQ01fRUdfUkNfUlNWRCkpIHtcbiYjNDM7XHRcdGtmcmVlX3NrYihza2IpO1xuIFx0XHRyZXR1cm4gTlVMTDtcbiYjNDM7XHR9XG4gXG4gXHQvKiBMb2NhdGUgd2hpY2ggcG9ydCB0aGlzIGlzIGNvbWluZyBmcm9tICovXG4gXHRzb3VyY2VfcG9ydCA9IGJyY21fdGFnWzNdIFx1MDAyNiBCUkNNX0VHX1BJRF9NQVNLO1xuIFxuIFx0c2tiLVx1MDAzZWRldiA9IGRzYV9jb25kdWl0X2ZpbmRfdXNlcihkZXYsIDAsIHNvdXJjZV9wb3J0KTtcbi1cdGlmICghc2tiLVx1MDAzZWRldilcbiYjNDM7XHRpZiAoIXNrYi1cdTAwM2VkZXYpIHtcbiYjNDM7XHRcdGtmcmVlX3NrYihza2IpO1xuIFx0XHRyZXR1cm4gTlVMTDtcbiYjNDM7XHR9XG4gXG4gXHQvKiBSZW1vdmUgQnJvYWRjb20gdGFnIGFuZCB1cGRhdGUgY2hlY2tzdW0gKi9cbiBcdHNrYl9wdWxsX3Jjc3VtKHNrYiwgQlJDTV9UQUdfTEVOKTtcbkBAIC0yMjgsOCAmIzQzOzIzNiwxMCBAQCBzdGF0aWMgc3RydWN0IHNrX2J1ZmYgKmJyY21fbGVnX3RhZ19yY3Yoc3RydWN0IHNrX2J1ZmYgKnNrYixcbiBcdF9fYmUxNiAqcHJvdG87XG4gXHR1OCAqYnJjbV90YWc7XG4gXG4tXHRpZiAodW5saWtlbHkoIXBza2JfbWF5X3B1bGwoc2tiLCBCUkNNX0xFR19UQUdfTEVOICYjNDM7IFZMQU5fSExFTikpKVxuJiM0MztcdGlmICh1bmxpa2VseSghcHNrYl9tYXlfcHVsbChza2IsIEJSQ01fTEVHX1RBR19MRU4gJiM0MzsgVkxBTl9ITEVOKSkpIHtcbiYjNDM7XHRcdGtmcmVlX3NrYihza2IpO1xuIFx0XHRyZXR1cm4gTlVMTDtcbiYjNDM7XHR9XG4gXG4gXHRicmNtX3RhZyA9IGRzYV9ldHlwZV9oZWFkZXJfcG9zX3J4KHNrYik7XG4gXHRwcm90byA9IChfX2JlMTYgKikoYnJjbV90YWcgJiM0MzsgQlJDTV9MRUdfVEFHX0xFTik7XG5AQCAtMjM3LDggJiM0MzsyNDcsMTAgQEAgc3RhdGljIHN0cnVjdCBza19idWZmICpicmNtX2xlZ190YWdfcmN2KHN0cnVjdCBza19idWZmICpza2IsXG4gXHRzb3VyY2VfcG9ydCA9IGJyY21fdGFnWzVdIFx1MDAyNiBCUkNNX0xFR19QT1JUX0lEO1xuIFxuIFx0c2tiLVx1MDAzZWRldiA9IGRzYV9jb25kdWl0X2ZpbmRfdXNlcihkZXYsIDAsIHNvdXJjZV9wb3J0KTtcbi1cdGlmICghc2tiLVx1MDAzZWRldilcbiYjNDM7XHRpZiAoIXNrYi1cdTAwM2VkZXYpIHtcbiYjNDM7XHRcdGtmcmVlX3NrYihza2IpO1xuIFx0XHRyZXR1cm4gTlVMTDtcbiYjNDM7XHR9XG4gXG4gXHQvKiBUaGUgaW50ZXJuYWwgc3dpdGNoIGluIEJDTTYzWFggU29DcyBhbHdheXMgdGFncyBvbiBlZ3Jlc3Mgb24gdGhlIENQVVxuIFx0ICogcG9ydC4gV2UgdXNlIFZJRCAwIGludGVybmFsbHkgZm9yIHVudGFnZ2VkIHRyYWZmaWMsIHNvIHN0cmlwIHRoZSB0YWdcbkBAIC0yNzMsMTAgJiM0MzsyODUsOCBAQCBzdGF0aWMgc3RydWN0IHNrX2J1ZmYgKmJyY21fbGVnX3RhZ194bWl0KHN0cnVjdCBza19idWZmICpza2IsXG4gXHQgKiBuZWVkIHRvIG1ha2Ugc3VyZSB0aGF0IHBhY2tldHMgYXJlIGF0IGxlYXN0IDcwIGJ5dGVzXG4gXHQgKiAoaW5jbHVkaW5nIEZDUyBhbmQgdGFnKSBiZWNhdXNlIHRoZSBsZW5ndGggdmVyaWZpY2F0aW9uIGlzIGRvbmUgYWZ0ZXJcbiBcdCAqIHRoZSBCcm9hZGNvbSB0YWcgaXMgc3RyaXBwZWQgb2ZmIHRoZSBpbmdyZXNzIHBhY2tldC5cbi1cdCAqXG4tXHQgKiBMZXQgZHNhX3VzZXJfeG1pdCgpIGZyZWUgdGhlIFNLQlxuIFx0ICovXG4tXHRpZiAoX19za2JfcHV0X3BhZHRvKHNrYiwgRVRIX1pMRU4gJiM0MzsgQlJDTV9MRUdfVEFHX0xFTiwgZmFsc2UpKVxuJiM0MztcdGlmIChza2JfcHV0X3BhZHRvKHNrYiwgRVRIX1pMRU4gJiM0MzsgQlJDTV9MRUdfVEFHX0xFTikpXG4gXHRcdHJldHVybiBOVUxMO1xuIFxuIFx0c2tiX3B1c2goc2tiLCBCUkNNX0xFR19UQUdfTEVOKTtcbkBAIC0zMjUsMTAgJiM0MzszMzUsOCBAQCBzdGF0aWMgc3RydWN0IHNrX2J1ZmYgKmJyY21fbGVnX2Zjc190YWdfeG1pdChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxuIFx0ICogbmVlZCB0byBtYWtlIHN1cmUgdGhhdCBwYWNrZXRzIGFyZSBhdCBsZWFzdCA3MCBieXRlcyAoaW5jbHVkaW5nIEZDU1xuIFx0ICogYW5kIHRhZykgYmVjYXVzZSB0aGUgbGVuZ3RoIHZlcmlmaWNhdGlvbiBpcyBkb25lIGFmdGVyIHRoZSBCcm9hZGNvbVxuIFx0ICogdGFnIGlzIHN0cmlwcGVkIG9mZiB0aGUgaW5ncmVzcyBwYWNrZXQuXG4tXHQgKlxuLVx0ICogTGV0IGRzYV91c2VyX3htaXQoKSBmcmVlIHRoZSBTS0IuXG4gXHQgKi9cbi1cdGlmIChfX3NrYl9wdXRfcGFkdG8oc2tiLCBFVEhfWkxFTiAmIzQzOyBCUkNNX0xFR19UQUdfTEVOLCBmYWxzZSkpXG4mIzQzO1x0aWYgKHNrYl9wdXRfcGFkdG8oc2tiLCBFVEhfWkxFTiAmIzQzOyBCUkNNX0xFR19UQUdfTEVOKSlcbiBcdFx0cmV0dXJuIE5VTEw7XG4gXG4gXHRmY3NfbGVuID0gc2tiLVx1MDAzZWxlbjtcbkBAIC0zNTEsOCAmIzQzOzM1OSw5IEBAIHN0YXRpYyBzdHJ1Y3Qgc2tfYnVmZiAqYnJjbV9sZWdfZmNzX3RhZ194bWl0KHN0cnVjdCBza19idWZmICpza2IsXG4gXHRicmNtX3RhZ1s1XSA9IGRwLVx1MDAzZWluZGV4IFx1MDAyNiBCUkNNX0xFR19QT1JUX0lEO1xuIFxuIFx0LyogT3JpZ2luYWwgRkNTIHZhbHVlICovXG4tXHRpZiAoX19za2JfcGFkKHNrYiwgRVRIX0ZDU19MRU4sIGZhbHNlKSlcbiYjNDM7XHRpZiAoc2tiX3BhZChza2IsIEVUSF9GQ1NfTEVOKSlcbiBcdFx0cmV0dXJuIE5VTEw7XG4mIzQzO1xuIFx0c2tiX3B1dF9kYXRhKHNrYiwgXHUwMDI2ZmNzX3ZhbCwgRVRIX0ZDU19MRU4pO1xuIFxuIFx0cmV0dXJuIHNrYjtcbmRpZmYgLS1naXQgYS9uZXQvZHNhL3RhZ19kc2EuYyBiL25ldC9kc2EvdGFnX2RzYS5jXG5pbmRleCAyYTJjNGZiNjFhNjVjNi4uZDVmZmVlMzVmYmI1M2IgMTAwNjQ0XG4tLS0gYS9uZXQvZHNhL3RhZ19kc2EuY1xuJiM0MzsmIzQzOyYjNDM7IGIvbmV0L2RzYS90YWdfZHNhLmNcbkBAIC0yMjQsNiAmIzQzOzIyNCw3IEBAIHN0YXRpYyBzdHJ1Y3Qgc2tfYnVmZiAqZHNhX3Jjdl9sbChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxuIFx0XHRcdC8qIFJlbW90ZSBtYW5hZ2VtZW50IGlzIG5vdCBpbXBsZW1lbnRlZCB5ZXQsXG4gXHRcdFx0ICogZHJvcC5cbiBcdFx0XHQgKi9cbiYjNDM7XHRcdFx0a2ZyZWVfc2tiKHNrYik7XG4gXHRcdFx0cmV0dXJuIE5VTEw7XG4gXHRcdGNhc2UgRFNBX0NPREVfQVJQX01JUlJPUjpcbiBcdFx0Y2FzZSBEU0FfQ09ERV9QT0xJQ1lfTUlSUk9SOlxuQEAgLTI0NCwxMiAmIzQzOzI0NSwxNCBAQCBzdGF0aWMgc3RydWN0IHNrX2J1ZmYgKmRzYV9yY3ZfbGwoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IG5ldF9kZXZpY2UgKmRldixcbiBcdFx0XHQvKiBSZXNlcnZlZCBjb2RlLCB0aGlzIGNvdWxkIGJlIGFueXRoaW5nLiBEcm9wXG4gXHRcdFx0ICogc2VlbXMgbGlrZSB0aGUgc2FmZXN0IG9wdGlvbi5cbiBcdFx0XHQgKi9cbiYjNDM7XHRcdFx0a2ZyZWVfc2tiKHNrYik7XG4gXHRcdFx0cmV0dXJuIE5VTEw7XG4gXHRcdH1cbiBcbiBcdFx0YnJlYWs7XG4gXG4gXHRkZWZhdWx0OlxuJiM0MztcdFx0a2ZyZWVfc2tiKHNrYik7XG4gXHRcdHJldHVybiBOVUxMO1xuIFx0fVxuIFxuQEAgLTI3MSw4ICYjNDM7Mjc0LDEwIEBAIHN0YXRpYyBzdHJ1Y3Qgc2tfYnVmZiAqZHNhX3Jjdl9sbChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxuIFx0XHRcdFx0XHRcdCBzb3VyY2VfcG9ydCk7XG4gXHR9XG4gXG4tXHRpZiAoIXNrYi1cdTAwM2VkZXYpXG4mIzQzO1x0aWYgKCFza2ItXHUwMDNlZGV2KSB7XG4mIzQzO1x0XHRrZnJlZV9za2Ioc2tiKTtcbiBcdFx0cmV0dXJuIE5VTEw7XG4mIzQzO1x0fVxuIFxuIFx0LyogV2hlbiB1c2luZyBMQUcgb2ZmbG9hZCwgc2tiLVx1MDAzZWRldiBpcyBub3QgYSBEU0EgdXNlciBpbnRlcmZhY2UsXG4gXHQgKiBzbyB3ZSBjYW5ub3QgY2FsbCBkc2FfZGVmYXVsdF9vZmZsb2FkX2Z3ZF9tYXJrIGFuZCB3ZSBuZWVkIHRvXG5AQCAtMzM1LDggJiM0MzszNDAsMTAgQEAgc3RhdGljIHN0cnVjdCBza19idWZmICpkc2FfeG1pdChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxuIFxuIHN0YXRpYyBzdHJ1Y3Qgc2tfYnVmZiAqZHNhX3JjdihzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxuIHtcbi1cdGlmICh1bmxpa2VseSghcHNrYl9tYXlfcHVsbChza2IsIERTQV9ITEVOKSkpXG4mIzQzO1x0aWYgKHVubGlrZWx5KCFwc2tiX21heV9wdWxsKHNrYiwgRFNBX0hMRU4pKSkge1xuJiM0MztcdFx0a2ZyZWVfc2tiKHNrYik7XG4gXHRcdHJldHVybiBOVUxMO1xuJiM0MztcdH1cbiBcbiBcdHJldHVybiBkc2FfcmN2X2xsKHNrYiwgZGV2LCAwKTtcbiB9XG5AQCAtMzc1LDggJiM0MzszODIsMTAgQEAgc3RhdGljIHN0cnVjdCBza19idWZmICplZHNhX3htaXQoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IG5ldF9kZXZpY2UgKmRldilcbiBcbiBzdGF0aWMgc3RydWN0IHNrX2J1ZmYgKmVkc2FfcmN2KHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXG4ge1xuLVx0aWYgKHVubGlrZWx5KCFwc2tiX21heV9wdWxsKHNrYiwgRURTQV9ITEVOKSkpXG4mIzQzO1x0aWYgKHVubGlrZWx5KCFwc2tiX21heV9wdWxsKHNrYiwgRURTQV9ITEVOKSkpIHtcbiYjNDM7XHRcdGtmcmVlX3NrYihza2IpO1xuIFx0XHRyZXR1cm4gTlVMTDtcbiYjNDM7XHR9XG4gXG4gXHRza2JfcHVsbF9yY3N1bShza2IsIEVEU0FfSExFTiAtIERTQV9ITEVOKTtcbiBcbmRpZmYgLS1naXQgYS9uZXQvZHNhL3RhZ19nc3dpcC5jIGIvbmV0L2RzYS90YWdfZ3N3aXAuY1xuaW5kZXggNWZhNDM2MTIxMDg3YjQuLjVjNDA3ZDQ0OGM5ZmVlIDEwMDY0NFxuLS0tIGEvbmV0L2RzYS90YWdfZ3N3aXAuY1xuJiM0MzsmIzQzOyYjNDM7IGIvbmV0L2RzYS90YWdfZ3N3aXAuY1xuQEAgLTgwLDE2ICYjNDM7ODAsMjAgQEAgc3RhdGljIHN0cnVjdCBza19idWZmICpnc3dpcF90YWdfcmN2KHN0cnVjdCBza19idWZmICpza2IsXG4gXHRpbnQgcG9ydDtcbiBcdHU4ICpnc3dpcF90YWc7XG4gXG4tXHRpZiAodW5saWtlbHkoIXBza2JfbWF5X3B1bGwoc2tiLCBHU1dJUF9SWF9IRUFERVJfTEVOKSkpXG4mIzQzO1x0aWYgKHVubGlrZWx5KCFwc2tiX21heV9wdWxsKHNrYiwgR1NXSVBfUlhfSEVBREVSX0xFTikpKSB7XG4mIzQzO1x0XHRrZnJlZV9za2Ioc2tiKTtcbiBcdFx0cmV0dXJuIE5VTEw7XG4mIzQzO1x0fVxuIFxuIFx0Z3N3aXBfdGFnID0gc2tiLVx1MDAzZWRhdGEgLSBFVEhfSExFTjtcbiBcbiBcdC8qIEdldCBzb3VyY2UgcG9ydCBpbmZvcm1hdGlvbiAqL1xuIFx0cG9ydCA9IChnc3dpcF90YWdbN10gXHUwMDI2IEdTV0lQX1JYX1NQUElEX01BU0spIFx1MDAzZVx1MDAzZSBHU1dJUF9SWF9TUFBJRF9TSElGVDtcbiBcdHNrYi1cdTAwM2VkZXYgPSBkc2FfY29uZHVpdF9maW5kX3VzZXIoZGV2LCAwLCBwb3J0KTtcbi1cdGlmICghc2tiLVx1MDAzZWRldilcbiYjNDM7XHRpZiAoIXNrYi1cdTAwM2VkZXYpIHtcbiYjNDM7XHRcdGtmcmVlX3NrYihza2IpO1xuIFx0XHRyZXR1cm4gTlVMTDtcbiYjNDM7XHR9XG4gXG4gXHQvKiByZW1vdmUgR1NXSVAgdGFnICovXG4gXHRza2JfcHVsbF9yY3N1bShza2IsIEdTV0lQX1JYX0hFQURFUl9MRU4pO1xuZGlmZiAtLWdpdCBhL25ldC9kc2EvdGFnX2hlbGxjcmVlay5jIGIvbmV0L2RzYS90YWdfaGVsbGNyZWVrLmNcbmluZGV4IDU0NGFiMTU2ODVhMmI4Li5kZDlmMzI4ZjMxODIxMCAxMDA2NDRcbi0tLSBhL25ldC9kc2EvdGFnX2hlbGxjcmVlay5jXG4mIzQzOyYjNDM7JiM0MzsgYi9uZXQvZHNhL3RhZ19oZWxsY3JlZWsuY1xuQEAgLTI3LDggJiM0MzsyNywxMCBAQCBzdGF0aWMgc3RydWN0IHNrX2J1ZmYgKmhlbGxjcmVla194bWl0KHN0cnVjdCBza19idWZmICpza2IsXG4gXHQgKiBjaGVja3N1bXMgYWZ0ZXIgdGhlIHN3aXRjaCBzdHJpcHMgdGhlIHRhZy5cbiBcdCAqL1xuIFx0aWYgKHNrYi1cdTAwM2VpcF9zdW1tZWQgPT0gQ0hFQ0tTVU1fUEFSVElBTCBcdTAwMjZcdTAwMjZcbi1cdCAgICBza2JfY2hlY2tzdW1faGVscChza2IpKVxuJiM0MztcdCAgICBza2JfY2hlY2tzdW1faGVscChza2IpKSB7XG4mIzQzO1x0XHRrZnJlZV9za2Ioc2tiKTtcbiBcdFx0cmV0dXJuIE5VTEw7XG4mIzQzO1x0fVxuIFxuIFx0LyogVGFnIGVuY29kaW5nICovXG4gXHR0YWcgID0gc2tiX3B1dChza2IsIEhFTExDUkVFS19UQUdfTEVOKTtcbkBAIC00NywxMSAmIzQzOzQ5LDE0IEBAIHN0YXRpYyBzdHJ1Y3Qgc2tfYnVmZiAqaGVsbGNyZWVrX3JjdihzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxuIFx0c2tiLVx1MDAzZWRldiA9IGRzYV9jb25kdWl0X2ZpbmRfdXNlcihkZXYsIDAsIHBvcnQpO1xuIFx0aWYgKCFza2ItXHUwMDNlZGV2KSB7XG4gXHRcdG5ldGRldl93YXJuX29uY2UoZGV2LCBcJiMzNDtGYWlsZWQgdG8gZ2V0IHNvdXJjZSBwb3J0OiAlZFxcblwmIzM0OywgcG9ydCk7XG4mIzQzO1x0XHRrZnJlZV9za2Ioc2tiKTtcbiBcdFx0cmV0dXJuIE5VTEw7XG4gXHR9XG4gXG4tXHRpZiAocHNrYl90cmltX3Jjc3VtKHNrYiwgc2tiLVx1MDAzZWxlbiAtIEhFTExDUkVFS19UQUdfTEVOKSlcbiYjNDM7XHRpZiAocHNrYl90cmltX3Jjc3VtKHNrYiwgc2tiLVx1MDAzZWxlbiAtIEhFTExDUkVFS19UQUdfTEVOKSkge1xuJiM0MztcdFx0a2ZyZWVfc2tiKHNrYik7XG4gXHRcdHJldHVybiBOVUxMO1xuJiM0MztcdH1cbiBcbiBcdGRzYV9kZWZhdWx0X29mZmxvYWRfZndkX21hcmsoc2tiKTtcbiBcbmRpZmYgLS1naXQgYS9uZXQvZHNhL3RhZ19rc3ouYyBiL25ldC9kc2EvdGFnX2tzei5jXG5pbmRleCBkMjQ3NWMzYmJiN2QyMi4uNjdmYTg5ZjEwMmUwNzAgMTAwNjQ0XG4tLS0gYS9uZXQvZHNhL3RhZ19rc3ouY1xuJiM0MzsmIzQzOyYjNDM7IGIvbmV0L2RzYS90YWdfa3N6LmNcbkBAIC04OCwxMSAmIzQzOzg4LDE1IEBAIHN0YXRpYyBzdHJ1Y3Qgc2tfYnVmZiAqa3N6X2NvbW1vbl9yY3Yoc3RydWN0IHNrX2J1ZmYgKnNrYixcbiBcdFx0XHRcdCAgICAgIHVuc2lnbmVkIGludCBwb3J0LCB1bnNpZ25lZCBpbnQgbGVuKVxuIHtcbiBcdHNrYi1cdTAwM2VkZXYgPSBkc2FfY29uZHVpdF9maW5kX3VzZXIoZGV2LCAwLCBwb3J0KTtcbi1cdGlmICghc2tiLVx1MDAzZWRldilcbiYjNDM7XHRpZiAoIXNrYi1cdTAwM2VkZXYpIHtcbiYjNDM7XHRcdGtmcmVlX3NrYihza2IpO1xuIFx0XHRyZXR1cm4gTlVMTDtcbiYjNDM7XHR9XG4gXG4tXHRpZiAocHNrYl90cmltX3Jjc3VtKHNrYiwgc2tiLVx1MDAzZWxlbiAtIGxlbikpXG4mIzQzO1x0aWYgKHBza2JfdHJpbV9yY3N1bShza2IsIHNrYi1cdTAwM2VsZW4gLSBsZW4pKSB7XG4mIzQzO1x0XHRrZnJlZV9za2Ioc2tiKTtcbiBcdFx0cmV0dXJuIE5VTEw7XG4mIzQzO1x0fVxuIFxuIFx0ZHNhX2RlZmF1bHRfb2ZmbG9hZF9md2RfbWFyayhza2IpO1xuIFxuQEAgLTEyMyw4ICYjNDM7MTI3LDEwIEBAIHN0YXRpYyBzdHJ1Y3Qgc2tfYnVmZiAqa3N6ODc5NV94bWl0KHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXG4gXHRzdHJ1Y3QgZXRoaGRyICpoZHI7XG4gXHR1OCAqdGFnO1xuIFxuLVx0aWYgKHNrYi1cdTAwM2VpcF9zdW1tZWQgPT0gQ0hFQ0tTVU1fUEFSVElBTCBcdTAwMjZcdTAwMjYgc2tiX2NoZWNrc3VtX2hlbHAoc2tiKSlcbiYjNDM7XHRpZiAoc2tiLVx1MDAzZWlwX3N1bW1lZCA9PSBDSEVDS1NVTV9QQVJUSUFMIFx1MDAyNlx1MDAyNiBza2JfY2hlY2tzdW1faGVscChza2IpKSB7XG4mIzQzO1x0XHRrZnJlZV9za2Ioc2tiKTtcbiBcdFx0cmV0dXJuIE5VTEw7XG4mIzQzO1x0fVxuIFxuIFx0LyogVGFnIGVuY29kaW5nICovXG4gXHR0YWcgPSBza2JfcHV0KHNrYiwgS1NaX0lOR1JFU1NfVEFHX0xFTik7XG5AQCAtMTQxLDggJiM0MzsxNDcsMTAgQEAgc3RhdGljIHN0cnVjdCBza19idWZmICprc3o4Nzk1X3JjdihzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxuIHtcbiBcdHU4ICp0YWc7XG4gXG4tXHRpZiAoc2tiX2xpbmVhcml6ZShza2IpKVxuJiM0MztcdGlmIChza2JfbGluZWFyaXplKHNrYikpIHtcbiYjNDM7XHRcdGtmcmVlX3NrYihza2IpO1xuIFx0XHRyZXR1cm4gTlVMTDtcbiYjNDM7XHR9XG4gXG4gXHR0YWcgPSBza2JfdGFpbF9wb2ludGVyKHNrYikgLSBLU1pfRUdSRVNTX1RBR19MRU47XG4gXG5AQCAtMjU1LDIyICYjNDM7MjYzLDI0IEBAIHN0YXRpYyBzdHJ1Y3Qgc2tfYnVmZiAqa3N6X2RlZmVyX3htaXQoc3RydWN0IGRzYV9wb3J0ICpkcCwgc3RydWN0IHNrX2J1ZmYgKnNrYilcbiBcdHhtaXRfd29ya19mbiA9IHRhZ2dlcl9kYXRhLVx1MDAzZXhtaXRfd29ya19mbjtcbiBcdHhtaXRfd29ya2VyID0gcHJpdi1cdTAwM2V4bWl0X3dvcmtlcjtcbiBcbi1cdGlmICgheG1pdF93b3JrX2ZuIHx8ICF4bWl0X3dvcmtlcilcbiYjNDM7XHRpZiAoIXhtaXRfd29ya19mbiB8fCAheG1pdF93b3JrZXIpIHtcbiYjNDM7XHRcdGtmcmVlX3NrYihza2IpO1xuIFx0XHRyZXR1cm4gTlVMTDtcbiYjNDM7XHR9XG4gXG4gXHR4bWl0X3dvcmsgPSBremFsbG9jX29iaigqeG1pdF93b3JrLCBHRlBfQVRPTUlDKTtcbi1cdGlmICgheG1pdF93b3JrKVxuJiM0MztcdGlmICgheG1pdF93b3JrKSB7XG4mIzQzO1x0XHRrZnJlZV9za2Ioc2tiKTtcbiBcdFx0cmV0dXJuIE5VTEw7XG4mIzQzO1x0fVxuIFxuIFx0a3RocmVhZF9pbml0X3dvcmsoXHUwMDI2eG1pdF93b3JrLVx1MDAzZXdvcmssIHhtaXRfd29ya19mbik7XG4tXHQvKiBJbmNyZWFzZSByZWZjb3VudCBzbyB0aGUga2ZyZWVfc2tiIGluIGRzYV91c2VyX3htaXRcbi1cdCAqIHdvbiYjMzk7dCByZWFsbHkgZnJlZSB0aGUgcGFja2V0LlxuLVx0ICovXG4gXHR4bWl0X3dvcmstXHUwMDNlZHAgPSBkcDtcbiBcdHhtaXRfd29yay1cdTAwM2Vza2IgPSBza2JfZ2V0KHNrYik7XG4gXG4gXHRrdGhyZWFkX3F1ZXVlX3dvcmsoeG1pdF93b3JrZXIsIFx1MDAyNnhtaXRfd29yay1cdTAwM2V3b3JrKTtcbiBcbiYjNDM7XHRrZnJlZV9za2Ioc2tiKTtcbiBcdHJldHVybiBOVUxMO1xuIH1cbiBcbkBAIC0yODQsOCAmIzQzOzI5NCwxMCBAQCBzdGF0aWMgc3RydWN0IHNrX2J1ZmYgKmtzejk0NzdfeG1pdChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxuIFx0X19iZTE2ICp0YWc7XG4gXHR1MTYgdmFsO1xuIFxuLVx0aWYgKHNrYi1cdTAwM2VpcF9zdW1tZWQgPT0gQ0hFQ0tTVU1fUEFSVElBTCBcdTAwMjZcdTAwMjYgc2tiX2NoZWNrc3VtX2hlbHAoc2tiKSlcbiYjNDM7XHRpZiAoc2tiLVx1MDAzZWlwX3N1bW1lZCA9PSBDSEVDS1NVTV9QQVJUSUFMIFx1MDAyNlx1MDAyNiBza2JfY2hlY2tzdW1faGVscChza2IpKSB7XG4mIzQzO1x0XHRrZnJlZV9za2Ioc2tiKTtcbiBcdFx0cmV0dXJuIE5VTEw7XG4mIzQzO1x0fVxuIFxuIFx0LyogVGFnIGVuY29kaW5nICovXG4gXHRrc3pfeG1pdF90aW1lc3RhbXAoZHAsIHNrYik7XG5AQCAtMzEwLDggJiM0MzszMjIsMTAgQEAgc3RhdGljIHN0cnVjdCBza19idWZmICprc3o5NDc3X3JjdihzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxuIFx0dW5zaWduZWQgaW50IHBvcnQ7XG4gXHR1OCAqdGFnO1xuIFxuLVx0aWYgKHNrYl9saW5lYXJpemUoc2tiKSlcbiYjNDM7XHRpZiAoc2tiX2xpbmVhcml6ZShza2IpKSB7XG4mIzQzO1x0XHRrZnJlZV9za2Ioc2tiKTtcbiBcdFx0cmV0dXJuIE5VTEw7XG4mIzQzO1x0fVxuIFxuIFx0LyogVGFnIGRlY29kaW5nICovXG4gXHR0YWcgPSBza2JfdGFpbF9wb2ludGVyKHNrYikgLSBLU1pfRUdSRVNTX1RBR19MRU47XG5AQCAtMzUyLDggJiM0MzszNjYsMTAgQEAgc3RhdGljIHN0cnVjdCBza19idWZmICprc3o5ODkzX3htaXQoc3RydWN0IHNrX2J1ZmYgKnNrYixcbiBcdHN0cnVjdCBldGhoZHIgKmhkcjtcbiBcdHU4ICp0YWc7XG4gXG4tXHRpZiAoc2tiLVx1MDAzZWlwX3N1bW1lZCA9PSBDSEVDS1NVTV9QQVJUSUFMIFx1MDAyNlx1MDAyNiBza2JfY2hlY2tzdW1faGVscChza2IpKVxuJiM0MztcdGlmIChza2ItXHUwMDNlaXBfc3VtbWVkID09IENIRUNLU1VNX1BBUlRJQUwgXHUwMDI2XHUwMDI2IHNrYl9jaGVja3N1bV9oZWxwKHNrYikpIHtcbiYjNDM7XHRcdGtmcmVlX3NrYihza2IpO1xuIFx0XHRyZXR1cm4gTlVMTDtcbiYjNDM7XHR9XG4gXG4gXHQvKiBUYWcgZW5jb2RpbmcgKi9cbiBcdGtzel94bWl0X3RpbWVzdGFtcChkcCwgc2tiKTtcbkBAIC00MTgsOCAmIzQzOzQzNCwxMCBAQCBzdGF0aWMgc3RydWN0IHNrX2J1ZmYgKmxhbjkzN3hfeG1pdChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxuIFx0X19iZTE2ICp0YWc7XG4gXHR1MTYgdmFsO1xuIFxuLVx0aWYgKHNrYi1cdTAwM2VpcF9zdW1tZWQgPT0gQ0hFQ0tTVU1fUEFSVElBTCBcdTAwMjZcdTAwMjYgc2tiX2NoZWNrc3VtX2hlbHAoc2tiKSlcbiYjNDM7XHRpZiAoc2tiLVx1MDAzZWlwX3N1bW1lZCA9PSBDSEVDS1NVTV9QQVJUSUFMIFx1MDAyNlx1MDAyNiBza2JfY2hlY2tzdW1faGVscChza2IpKSB7XG4mIzQzO1x0XHRrZnJlZV9za2Ioc2tiKTtcbiBcdFx0cmV0dXJuIE5VTEw7XG4mIzQzO1x0fVxuIFxuIFx0a3N6X3htaXRfdGltZXN0YW1wKGRwLCBza2IpO1xuIFxuZGlmZiAtLWdpdCBhL25ldC9kc2EvdGFnX2xhbjkzMDMuYyBiL25ldC9kc2EvdGFnX2xhbjkzMDMuY1xuaW5kZXggMjU4ZTVkN2RjNWVmODQuLmQxMTk0Njk2NDk5YWI4IDEwMDY0NFxuLS0tIGEvbmV0L2RzYS90YWdfbGFuOTMwMy5jXG4mIzQzOyYjNDM7JiM0MzsgYi9uZXQvZHNhL3RhZ19sYW45MzAzLmNcbkBAIC04NSw2ICYjNDM7ODUsNyBAQCBzdGF0aWMgc3RydWN0IHNrX2J1ZmYgKmxhbjkzMDNfcmN2KHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXG4gXHRpZiAodW5saWtlbHkoIXBza2JfbWF5X3B1bGwoc2tiLCBMQU45MzAzX1RBR19MRU4pKSkge1xuIFx0XHRkZXZfd2Fybl9yYXRlbGltaXRlZChcdTAwMjZkZXYtXHUwMDNlZGV2LFxuIFx0XHRcdFx0ICAgICBcJiMzNDtEcm9wcGluZyBwYWNrZXQsIGNhbm5vdCBwdWxsXFxuXCYjMzQ7KTtcbiYjNDM7XHRcdGtmcmVlX3NrYihza2IpO1xuIFx0XHRyZXR1cm4gTlVMTDtcbiBcdH1cbiBcbkBAIC0xMDIsNiAmIzQzOzEwMyw3IEBAIHN0YXRpYyBzdHJ1Y3Qgc2tfYnVmZiAqbGFuOTMwM19yY3Yoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IG5ldF9kZXZpY2UgKmRldilcbiBcdHNrYi1cdTAwM2VkZXYgPSBkc2FfY29uZHVpdF9maW5kX3VzZXIoZGV2LCAwLCBzb3VyY2VfcG9ydCk7XG4gXHRpZiAoIXNrYi1cdTAwM2VkZXYpIHtcbiBcdFx0ZGV2X3dhcm5fcmF0ZWxpbWl0ZWQoXHUwMDI2ZGV2LVx1MDAzZWRldiwgXCYjMzQ7RHJvcHBpbmcgcGFja2V0IGR1ZSB0byBpbnZhbGlkIHNvdXJjZSBwb3J0XFxuXCYjMzQ7KTtcbiYjNDM7XHRcdGtmcmVlX3NrYihza2IpO1xuIFx0XHRyZXR1cm4gTlVMTDtcbiBcdH1cbiBcbmRpZmYgLS1naXQgYS9uZXQvZHNhL3RhZ19tdGsuYyBiL25ldC9kc2EvdGFnX210ay5jXG5pbmRleCBkZWEzZWVjYWYwOTNkZi4uYzdkYzc3MzE2NzVlYzAgMTAwNjQ0XG4tLS0gYS9uZXQvZHNhL3RhZ19tdGsuY1xuJiM0MzsmIzQzOyYjNDM7IGIvbmV0L2RzYS90YWdfbXRrLmNcbkBAIC03Miw4ICYjNDM7NzIsMTAgQEAgc3RhdGljIHN0cnVjdCBza19idWZmICptdGtfdGFnX3JjdihzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxuIFx0aW50IHBvcnQ7XG4gXHRfX2JlMTYgKnBoZHI7XG4gXG4tXHRpZiAodW5saWtlbHkoIXBza2JfbWF5X3B1bGwoc2tiLCBNVEtfSERSX0xFTikpKVxuJiM0MztcdGlmICh1bmxpa2VseSghcHNrYl9tYXlfcHVsbChza2IsIE1US19IRFJfTEVOKSkpIHtcbiYjNDM7XHRcdGtmcmVlX3NrYihza2IpO1xuIFx0XHRyZXR1cm4gTlVMTDtcbiYjNDM7XHR9XG4gXG4gXHRwaGRyID0gZHNhX2V0eXBlX2hlYWRlcl9wb3Nfcngoc2tiKTtcbiBcdGhkciA9IG50b2hzKCpwaGRyKTtcbkBAIC04Nyw4ICYjNDM7ODksMTAgQEAgc3RhdGljIHN0cnVjdCBza19idWZmICptdGtfdGFnX3JjdihzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxuIFx0cG9ydCA9IChoZHIgXHUwMDI2IE1US19IRFJfUkVDVl9TT1VSQ0VfUE9SVF9NQVNLKTtcbiBcbiBcdHNrYi1cdTAwM2VkZXYgPSBkc2FfY29uZHVpdF9maW5kX3VzZXIoZGV2LCAwLCBwb3J0KTtcbi1cdGlmICghc2tiLVx1MDAzZWRldilcbiYjNDM7XHRpZiAoIXNrYi1cdTAwM2VkZXYpIHtcbiYjNDM7XHRcdGtmcmVlX3NrYihza2IpO1xuIFx0XHRyZXR1cm4gTlVMTDtcbiYjNDM7XHR9XG4gXG4gXHRkc2FfZGVmYXVsdF9vZmZsb2FkX2Z3ZF9tYXJrKHNrYik7XG4gXG5kaWZmIC0tZ2l0IGEvbmV0L2RzYS90YWdfbXhsLWdzdzF4eC5jIGIvbmV0L2RzYS90YWdfbXhsLWdzdzF4eC5jXG5pbmRleCA2MGY3YzQ0NWU2NTYxMC4uNGIxYjZlZjk0MTk2MzQgMTAwNjQ0XG4tLS0gYS9uZXQvZHNhL3RhZ19teGwtZ3N3MXh4LmNcbiYjNDM7JiM0MzsmIzQzOyBiL25ldC9kc2EvdGFnX214bC1nc3cxeHguY1xuQEAgLTczLDYgJiM0Mzs3Myw3IEBAIHN0YXRpYyBzdHJ1Y3Qgc2tfYnVmZiAqZ3N3MXh4X3RhZ19yY3Yoc3RydWN0IHNrX2J1ZmYgKnNrYixcbiBcbiBcdGlmICh1bmxpa2VseSghcHNrYl9tYXlfcHVsbChza2IsIEdTVzFYWF9IRUFERVJfTEVOKSkpIHtcbiBcdFx0ZGV2X3dhcm5fcmF0ZWxpbWl0ZWQoXHUwMDI2ZGV2LVx1MDAzZWRldiwgXCYjMzQ7RHJvcHBpbmcgcGFja2V0LCBjYW5ub3QgcHVsbCBTS0JcXG5cJiMzNDspO1xuJiM0MztcdFx0a2ZyZWVfc2tiKHNrYik7XG4gXHRcdHJldHVybiBOVUxMO1xuIFx0fVxuIFxuQEAgLTgxLDYgJiM0Mzs4Miw3IEBAIHN0YXRpYyBzdHJ1Y3Qgc2tfYnVmZiAqZ3N3MXh4X3RhZ19yY3Yoc3RydWN0IHNrX2J1ZmYgKnNrYixcbiBcdGlmICh1bmxpa2VseShudG9ocyhnc3cxeHhfdGFnWzBdKSAhPSBFVEhfUF9NWExHU1cpKSB7XG4gXHRcdGRldl93YXJuX3JhdGVsaW1pdGVkKFx1MDAyNmRldi1cdTAwM2VkZXYsIFwmIzM0O0Ryb3BwaW5nIHBhY2tldCBkdWUgdG8gaW52YWxpZCBzcGVjaWFsIHRhZ1xcblwmIzM0Oyk7XG4gXHRcdGRldl93YXJuX3JhdGVsaW1pdGVkKFx1MDAyNmRldi1cdTAwM2VkZXYsIFwmIzM0O1RhZzogJThwaFxcblwmIzM0OywgZ3N3MXh4X3RhZyk7XG4mIzQzO1x0XHRrZnJlZV9za2Ioc2tiKTtcbiBcdFx0cmV0dXJuIE5VTEw7XG4gXHR9XG4gXG5AQCAtOTAsNiAmIzQzOzkyLDcgQEAgc3RhdGljIHN0cnVjdCBza19idWZmICpnc3cxeHhfdGFnX3JjdihzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxuIFx0aWYgKCFza2ItXHUwMDNlZGV2KSB7XG4gXHRcdGRldl93YXJuX3JhdGVsaW1pdGVkKFx1MDAyNmRldi1cdTAwM2VkZXYsIFwmIzM0O0Ryb3BwaW5nIHBhY2tldCBkdWUgdG8gaW52YWxpZCBzb3VyY2UgcG9ydFxcblwmIzM0Oyk7XG4gXHRcdGRldl93YXJuX3JhdGVsaW1pdGVkKFx1MDAyNmRldi1cdTAwM2VkZXYsIFwmIzM0O1RhZzogJThwaFxcblwmIzM0OywgZ3N3MXh4X3RhZyk7XG4mIzQzO1x0XHRrZnJlZV9za2Ioc2tiKTtcbiBcdFx0cmV0dXJuIE5VTEw7XG4gXHR9XG4gXG5kaWZmIC0tZ2l0IGEvbmV0L2RzYS90YWdfbXhsODYyeHguYyBiL25ldC9kc2EvdGFnX214bDg2Mnh4LmNcbmluZGV4IDhkYWVmZWI4ZDQ5ZGZhLi44N2I4MGRkZjA5NDYzMiAxMDA2NDRcbi0tLSBhL25ldC9kc2EvdGFnX214bDg2Mnh4LmNcbiYjNDM7JiM0MzsmIzQzOyBiL25ldC9kc2EvdGFnX214bDg2Mnh4LmNcbkBAIC02NCw2ICYjNDM7NjQsNyBAQCBzdGF0aWMgc3RydWN0IHNrX2J1ZmYgKm14bDg2Ml90YWdfcmN2KHN0cnVjdCBza19idWZmICpza2IsXG4gXG4gXHRpZiAodW5saWtlbHkoIXBza2JfbWF5X3B1bGwoc2tiLCBNWEw4NjJfSEVBREVSX0xFTikpKSB7XG4gXHRcdGRldl93YXJuX3JhdGVsaW1pdGVkKFx1MDAyNmRldi1cdTAwM2VkZXYsIFwmIzM0O0Nhbm5vdCBwdWxsIFNLQiwgcGFja2V0IGRyb3BwZWRcXG5cJiMzNDspO1xuJiM0MztcdFx0a2ZyZWVfc2tiKHNrYik7XG4gXHRcdHJldHVybiBOVUxMO1xuIFx0fVxuIFxuQEAgLTczLDYgJiM0Mzs3NCw3IEBAIHN0YXRpYyBzdHJ1Y3Qgc2tfYnVmZiAqbXhsODYyX3RhZ19yY3Yoc3RydWN0IHNrX2J1ZmYgKnNrYixcbiBcdFx0ZGV2X3dhcm5fcmF0ZWxpbWl0ZWQoXHUwMDI2ZGV2LVx1MDAzZWRldixcbiBcdFx0XHRcdCAgICAgXCYjMzQ7SW52YWxpZCBzcGVjaWFsIHRhZyBtYXJrZXIsIHBhY2tldCBkcm9wcGVkLCB0YWc6ICU4cGhcXG5cJiMzNDssXG4gXHRcdFx0XHQgICAgIG14bDg2Ml90YWcpO1xuJiM0MztcdFx0a2ZyZWVfc2tiKHNrYik7XG4gXHRcdHJldHVybiBOVUxMO1xuIFx0fVxuIFxuQEAgLTgzLDYgJiM0Mzs4NSw3IEBAIHN0YXRpYyBzdHJ1Y3Qgc2tfYnVmZiAqbXhsODYyX3RhZ19yY3Yoc3RydWN0IHNrX2J1ZmYgKnNrYixcbiBcdFx0ZGV2X3dhcm5fcmF0ZWxpbWl0ZWQoXHUwMDI2ZGV2LVx1MDAzZWRldixcbiBcdFx0XHRcdCAgICAgXCYjMzQ7SW52YWxpZCBzb3VyY2UgcG9ydCwgcGFja2V0IGRyb3BwZWQsIHRhZzogJThwaFxcblwmIzM0OyxcbiBcdFx0XHRcdCAgICAgbXhsODYyX3RhZyk7XG4mIzQzO1x0XHRrZnJlZV9za2Ioc2tiKTtcbiBcdFx0cmV0dXJuIE5VTEw7XG4gXHR9XG4gXG5kaWZmIC0tZ2l0IGEvbmV0L2RzYS90YWdfbmV0Yy5jIGIvbmV0L2RzYS90YWdfbmV0Yy5jXG5pbmRleCBjY2VkZmUzYTgwYjY0ZC4uZGY3MmE2MTc5NmFkNWYgMTAwNjQ0XG4tLS0gYS9uZXQvZHNhL3RhZ19uZXRjLmNcbiYjNDM7JiM0MzsmIzQzOyBiL25ldC9kc2EvdGFnX25ldGMuY1xuQEAgLTEzMSwxNCAmIzQzOzEzMSwxMyBAQCBzdGF0aWMgc3RydWN0IHNrX2J1ZmYgKm5ldGNfcmN2KHN0cnVjdCBza19idWZmICpza2IsXG4gXHRpbnQgdHlwZSwgc3VidHlwZTtcbiBcbiBcdGlmICh1bmxpa2VseSghcHNrYl9tYXlfcHVsbChza2IsIE5FVENfVEFHX01BWF9MRU4pKSlcbi1cdFx0cmV0dXJuIE5VTEw7XG4mIzQzO1x0XHRnb3RvIGVycl9mcmVlX3NrYjtcbiBcbiBcdHRhZ19jbW4gPSBkc2FfZXR5cGVfaGVhZGVyX3Bvc19yeChza2IpO1xuIFx0aWYgKG50b2hzKHRhZ19jbW4tXHUwMDNldHBpZCkgIT0gRVRIX1BfTlhQX05FVEMpIHtcbiBcdFx0ZGV2X3dhcm5fcmF0ZWxpbWl0ZWQoXHUwMDI2bmRldi1cdTAwM2VkZXYsIFwmIzM0O1Vua25vd24gVFBJRCAweCUwNHhcXG5cJiMzNDssXG4gXHRcdFx0XHQgICAgIG50b2hzKHRhZ19jbW4tXHUwMDNldHBpZCkpO1xuLVxuLVx0XHRyZXR1cm4gTlVMTDtcbiYjNDM7XHRcdGdvdG8gZXJyX2ZyZWVfc2tiO1xuIFx0fVxuIFxuIFx0aWYgKHRhZ19jbW4tXHUwMDNlcW9zIFx1MDAyNiBORVRDX1RBR19RVilcbkBAIC0xNDksMTQgJiM0MzsxNDgsMTMgQEAgc3RhdGljIHN0cnVjdCBza19idWZmICpuZXRjX3JjdihzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxuIFx0aWYgKCFzd19pZCkge1xuIFx0XHRkZXZfd2Fybl9yYXRlbGltaXRlZChcdTAwMjZuZGV2LVx1MDAzZWRldixcbiBcdFx0XHRcdCAgICAgXCYjMzQ7VkVQQSBzd2l0Y2ggSUQgaXMgbm90IHN1cHBvcnRlZCB5ZXRcXG5cJiMzNDspO1xuLVxuLVx0XHRyZXR1cm4gTlVMTDtcbiYjNDM7XHRcdGdvdG8gZXJyX2ZyZWVfc2tiO1xuIFx0fVxuIFxuIFx0cG9ydCA9IEZJRUxEX0dFVChORVRDX1RBR19QT1JULCB0YWdfY21uLVx1MDAzZXN3aXRjaF9wb3J0KTtcbiBcdHNrYi1cdTAwM2VkZXYgPSBkc2FfY29uZHVpdF9maW5kX3VzZXIobmRldiwgc3dfaWQsIHBvcnQpO1xuIFx0aWYgKCFza2ItXHUwMDNlZGV2KVxuLVx0XHRyZXR1cm4gTlVMTDtcbiYjNDM7XHRcdGdvdG8gZXJyX2ZyZWVfc2tiO1xuIFxuIFx0dHlwZSA9IEZJRUxEX0dFVChORVRDX1RBR19UWVBFLCB0YWdfY21uLVx1MDAzZXR5cGUpO1xuIFx0c3VidHlwZSA9IEZJRUxEX0dFVChORVRDX1RBR19TVUJUWVBFLCB0YWdfY21uLVx1MDAzZXR5cGUpO1xuQEAgLTE2NSwxMSAmIzQzOzE2MywxMSBAQCBzdGF0aWMgc3RydWN0IHNrX2J1ZmYgKm5ldGNfcmN2KHN0cnVjdCBza19idWZmICpza2IsXG4gXHR9IGVsc2UgaWYgKHR5cGUgPT0gTkVUQ19UQUdfVE9fSE9TVCkge1xuIFx0XHQvKiBDdXJyZW50bHkgb25seSBzdWJ0eXBlMCBzdXBwb3J0ZWQgKi9cbiBcdFx0aWYgKHN1YnR5cGUgIT0gTkVUQ19UQUdfVEhfU1VCVFlQRTApXG4tXHRcdFx0cmV0dXJuIE5VTEw7XG4mIzQzO1x0XHRcdGdvdG8gZXJyX2ZyZWVfc2tiO1xuIFx0fSBlbHNlIHtcbiBcdFx0ZGV2X3dhcm5fcmF0ZWxpbWl0ZWQoXHUwMDI2bmRldi1cdTAwM2VkZXYsXG4gXHRcdFx0XHQgICAgIFwmIzM0O1VuZXhwZWN0ZWQgIHRhZyB0eXBlICVkXFxuXCYjMzQ7LCB0eXBlKTtcbi1cdFx0cmV0dXJuIE5VTEw7XG4mIzQzO1x0XHRnb3RvIGVycl9mcmVlX3NrYjtcbiBcdH1cbiBcbiBcdC8qIFJlbW92ZSBTd2l0Y2ggdGFnIGZyb20gdGhlIGZyYW1lICovXG5AQCAtMTc4LDYgJiM0MzsxNzYsMTAgQEAgc3RhdGljIHN0cnVjdCBza19idWZmICpuZXRjX3JjdihzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxuIFx0ZHNhX3N0cmlwX2V0eXBlX2hlYWRlcihza2IsIHRhZ19sZW4pO1xuIFxuIFx0cmV0dXJuIHNrYjtcbiYjNDM7XG4mIzQzO2Vycl9mcmVlX3NrYjpcbiYjNDM7XHRrZnJlZV9za2Ioc2tiKTtcbiYjNDM7XHRyZXR1cm4gTlVMTDtcbiB9XG4gXG4gc3RhdGljIHZvaWQgbmV0Y19mbG93X2Rpc3NlY3QoY29uc3Qgc3RydWN0IHNrX2J1ZmYgKnNrYiwgX19iZTE2ICpwcm90byxcbmRpZmYgLS1naXQgYS9uZXQvZHNhL3RhZ19vY2Vsb3QuYyBiL25ldC9kc2EvdGFnX29jZWxvdC5jXG5pbmRleCAzNDA1ZGVmNzljMmRlZi4uZDIwOGM3MzIyY2Q2MjYgMTAwNjQ0XG4tLS0gYS9uZXQvZHNhL3RhZ19vY2Vsb3QuY1xuJiM0MzsmIzQzOyYjNDM7IGIvbmV0L2RzYS90YWdfb2NlbG90LmNcbkBAIC0xMDcsMTQgJiM0MzsxMDcsMTYgQEAgc3RhdGljIHN0cnVjdCBza19idWZmICpvY2Vsb3RfcmN2KHN0cnVjdCBza19idWZmICpza2IsXG4gXHRvY2Vsb3RfeGZoX2dldF9yZXdfdmFsKGV4dHJhY3Rpb24sIFx1MDAyNnJld192YWwpO1xuIFxuIFx0c2tiLVx1MDAzZWRldiA9IGRzYV9jb25kdWl0X2ZpbmRfdXNlcihuZXRkZXYsIDAsIHNyY19wb3J0KTtcbi1cdGlmICghc2tiLVx1MDAzZWRldilcbiYjNDM7XHRpZiAoIXNrYi1cdTAwM2VkZXYpIHtcbiBcdFx0LyogVGhlIHN3aXRjaCB3aWxsIHJlZmxlY3QgYmFjayBzb21lIGZyYW1lcyBzZW50IHRocm91Z2hcbiBcdFx0ICogc29ja2V0cyBvcGVuZWQgb24gdGhlIGJhcmUgRFNBIGNvbmR1aXQuIFRoZXNlIHdpbGwgY29tZSBiYWNrXG4gXHRcdCAqIHdpdGggc3JjX3BvcnQgZXF1YWwgdG8gdGhlIGluZGV4IG9mIHRoZSBDUFUgcG9ydCwgZm9yIHdoaWNoXG4gXHRcdCAqIHRoZXJlIGlzIG5vIHVzZXIgcmVnaXN0ZXJlZC4gU28gZG9uJiMzOTt0IHByaW50IGFueSBlcnJvclxuIFx0XHQgKiBtZXNzYWdlIGhlcmUgKGlnbm9yZSBhbmQgZHJvcCB0aG9zZSBmcmFtZXMpLlxuIFx0XHQgKi9cbiYjNDM7XHRcdGtmcmVlX3NrYihza2IpO1xuIFx0XHRyZXR1cm4gTlVMTDtcbiYjNDM7XHR9XG4gXG4gXHRkc2FfZGVmYXVsdF9vZmZsb2FkX2Z3ZF9tYXJrKHNrYik7XG4gXHRza2ItXHUwMDNlcHJpb3JpdHkgPSBxb3NfY2xhc3M7XG5kaWZmIC0tZ2l0IGEvbmV0L2RzYS90YWdfb2NlbG90XzgwMjFxLmMgYi9uZXQvZHNhL3RhZ19vY2Vsb3RfODAyMXEuY1xuaW5kZXggZTg5ZDkyNTRlOTBhM2EuLmY1MGYxY2Q4M2YxNjFjIDEwMDY0NFxuLS0tIGEvbmV0L2RzYS90YWdfb2NlbG90XzgwMjFxLmNcbiYjNDM7JiM0MzsmIzQzOyBiL25ldC9kc2EvdGFnX29jZWxvdF84MDIxcS5jXG5AQCAtMzMsMzAgJiM0MzszMywzNCBAQCBzdGF0aWMgc3RydWN0IHNrX2J1ZmYgKm9jZWxvdF9kZWZlcl94bWl0KHN0cnVjdCBkc2FfcG9ydCAqZHAsXG4gXHR4bWl0X3dvcmtfZm4gPSBkYXRhLVx1MDAzZXhtaXRfd29ya19mbjtcbiBcdHhtaXRfd29ya2VyID0gcHJpdi1cdTAwM2V4bWl0X3dvcmtlcjtcbiBcbi1cdGlmICgheG1pdF93b3JrX2ZuIHx8ICF4bWl0X3dvcmtlcilcbiYjNDM7XHRpZiAoIXhtaXRfd29ya19mbiB8fCAheG1pdF93b3JrZXIpIHtcbiYjNDM7XHRcdGtmcmVlX3NrYihza2IpO1xuIFx0XHRyZXR1cm4gTlVMTDtcbiYjNDM7XHR9XG4gXG4gXHQvKiBQVFAgb3ZlciBJUCBwYWNrZXRzIG5lZWQgVURQIGNoZWNrc3VtbWluZy4gV2UgbWF5IGhhdmUgaW5oZXJpdGVkXG4gXHQgKiBORVRJRl9GX0hXX0NTVU0gZnJvbSB0aGUgRFNBIGNvbmR1aXQsIGJ1dCB0aGVzZSBwYWNrZXRzIGFyZSBub3Qgc2VudFxuIFx0ICogdGhyb3VnaCB0aGUgRFNBIGNvbmR1aXQsIHNvIGNhbGN1bGF0ZSB0aGUgY2hlY2tzdW0gaGVyZS5cbiBcdCAqL1xuLVx0aWYgKHNrYi1cdTAwM2VpcF9zdW1tZWQgPT0gQ0hFQ0tTVU1fUEFSVElBTCBcdTAwMjZcdTAwMjYgc2tiX2NoZWNrc3VtX2hlbHAoc2tiKSlcbiYjNDM7XHRpZiAoc2tiLVx1MDAzZWlwX3N1bW1lZCA9PSBDSEVDS1NVTV9QQVJUSUFMIFx1MDAyNlx1MDAyNiBza2JfY2hlY2tzdW1faGVscChza2IpKSB7XG4mIzQzO1x0XHRrZnJlZV9za2Ioc2tiKTtcbiBcdFx0cmV0dXJuIE5VTEw7XG4mIzQzO1x0fVxuIFxuIFx0eG1pdF93b3JrID0ga3phbGxvY19vYmooKnhtaXRfd29yaywgR0ZQX0FUT01JQyk7XG4tXHRpZiAoIXhtaXRfd29yaylcbiYjNDM7XHRpZiAoIXhtaXRfd29yaykge1xuJiM0MztcdFx0a2ZyZWVfc2tiKHNrYik7XG4gXHRcdHJldHVybiBOVUxMO1xuJiM0MztcdH1cbiBcbiBcdC8qIENhbGxzIGZlbGl4X3BvcnRfZGVmZXJyZWRfeG1pdCBpbiBmZWxpeC5jICovXG4gXHRrdGhyZWFkX2luaXRfd29yayhcdTAwMjZ4bWl0X3dvcmstXHUwMDNld29yaywgeG1pdF93b3JrX2ZuKTtcbi1cdC8qIEluY3JlYXNlIHJlZmNvdW50IHNvIHRoZSBrZnJlZV9za2IgaW4gZHNhX3VzZXJfeG1pdFxuLVx0ICogd29uJiMzOTt0IHJlYWxseSBmcmVlIHRoZSBwYWNrZXQuXG4tXHQgKi9cbiBcdHhtaXRfd29yay1cdTAwM2VkcCA9IGRwO1xuIFx0eG1pdF93b3JrLVx1MDAzZXNrYiA9IHNrYl9nZXQoc2tiKTtcbiBcbiBcdGt0aHJlYWRfcXVldWVfd29yayh4bWl0X3dvcmtlciwgXHUwMDI2eG1pdF93b3JrLVx1MDAzZXdvcmspO1xuIFxuJiM0MztcdGtmcmVlX3NrYihza2IpO1xuIFx0cmV0dXJuIE5VTEw7XG4gfVxuIFxuQEAgLTg0LDggJiM0Mzs4OCwxMCBAQCBzdGF0aWMgc3RydWN0IHNrX2J1ZmYgKm9jZWxvdF9yY3Yoc3RydWN0IHNrX2J1ZmYgKnNrYixcbiBcdGRzYV84MDIxcV9yY3Yoc2tiLCBcdTAwMjZzcmNfcG9ydCwgXHUwMDI2c3dpdGNoX2lkLCBOVUxMLCBOVUxMKTtcbiBcbiBcdHNrYi1cdTAwM2VkZXYgPSBkc2FfY29uZHVpdF9maW5kX3VzZXIobmV0ZGV2LCBzd2l0Y2hfaWQsIHNyY19wb3J0KTtcbi1cdGlmICghc2tiLVx1MDAzZWRldilcbiYjNDM7XHRpZiAoIXNrYi1cdTAwM2VkZXYpIHtcbiYjNDM7XHRcdGtmcmVlX3NrYihza2IpO1xuIFx0XHRyZXR1cm4gTlVMTDtcbiYjNDM7XHR9XG4gXG4gXHRkc2FfZGVmYXVsdF9vZmZsb2FkX2Z3ZF9tYXJrKHNrYik7XG4gXG5kaWZmIC0tZ2l0IGEvbmV0L2RzYS90YWdfcWNhLmMgYi9uZXQvZHNhL3RhZ19xY2EuY1xuaW5kZXggOWUzYjQyOWU4YjM2MjUuLjUxMDc5MmZiZmE5MmRkIDEwMDY0NFxuLS0tIGEvbmV0L2RzYS90YWdfcWNhLmNcbiYjNDM7JiM0MzsmIzQzOyBiL25ldC9kc2EvdGFnX3FjYS5jXG5AQCAtNDYsMTYgJiM0Mzs0NiwyMCBAQCBzdGF0aWMgc3RydWN0IHNrX2J1ZmYgKnFjYV90YWdfcmN2KHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXG4gXG4gXHR0YWdnZXJfZGF0YSA9IGRzLVx1MDAzZXRhZ2dlcl9kYXRhO1xuIFxuLVx0aWYgKHVubGlrZWx5KCFwc2tiX21heV9wdWxsKHNrYiwgUUNBX0hEUl9MRU4pKSlcbiYjNDM7XHRpZiAodW5saWtlbHkoIXBza2JfbWF5X3B1bGwoc2tiLCBRQ0FfSERSX0xFTikpKSB7XG4mIzQzO1x0XHRrZnJlZV9za2Ioc2tiKTtcbiBcdFx0cmV0dXJuIE5VTEw7XG4mIzQzO1x0fVxuIFxuIFx0cGhkciA9IGRzYV9ldHlwZV9oZWFkZXJfcG9zX3J4KHNrYik7XG4gXHRoZHIgPSBudG9ocygqcGhkcik7XG4gXG4gXHQvKiBNYWtlIHN1cmUgdGhlIHZlcnNpb24gaXMgY29ycmVjdCAqL1xuIFx0dmVyID0gRklFTERfR0VUKFFDQV9IRFJfUkVDVl9WRVJTSU9OLCBoZHIpO1xuLVx0aWYgKHVubGlrZWx5KHZlciAhPSBRQ0FfSERSX1ZFUlNJT04pKVxuJiM0MztcdGlmICh1bmxpa2VseSh2ZXIgIT0gUUNBX0hEUl9WRVJTSU9OKSkge1xuJiM0MztcdFx0a2ZyZWVfc2tiKHNrYik7XG4gXHRcdHJldHVybiBOVUxMO1xuJiM0MztcdH1cbiBcbiBcdC8qIEdldCBwayB0eXBlICovXG4gXHRwa190eXBlID0gRklFTERfR0VUKFFDQV9IRFJfUkVDVl9UWVBFLCBoZHIpO1xuQEAgLTY0LDYgJiM0Mzs2OCw3IEBAIHN0YXRpYyBzdHJ1Y3Qgc2tfYnVmZiAqcWNhX3RhZ19yY3Yoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IG5ldF9kZXZpY2UgKmRldilcbiBcdGlmIChwa190eXBlID09IFFDQV9IRFJfUkVDVl9UWVBFX1JXX1JFR19BQ0spIHtcbiBcdFx0aWYgKGxpa2VseSh0YWdnZXJfZGF0YS1cdTAwM2Vyd19yZWdfYWNrX2hhbmRsZXIpKVxuIFx0XHRcdHRhZ2dlcl9kYXRhLVx1MDAzZXJ3X3JlZ19hY2tfaGFuZGxlcihkcywgc2tiKTtcbiYjNDM7XHRcdGtmcmVlX3NrYihza2IpO1xuIFx0XHRyZXR1cm4gTlVMTDtcbiBcdH1cbiBcbkBAIC03MSw2ICYjNDM7NzYsNyBAQCBzdGF0aWMgc3RydWN0IHNrX2J1ZmYgKnFjYV90YWdfcmN2KHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXG4gXHRpZiAocGtfdHlwZSA9PSBRQ0FfSERSX1JFQ1ZfVFlQRV9NSUIpIHtcbiBcdFx0aWYgKGxpa2VseSh0YWdnZXJfZGF0YS1cdTAwM2VtaWJfYXV0b2Nhc3RfaGFuZGxlcikpXG4gXHRcdFx0dGFnZ2VyX2RhdGEtXHUwMDNlbWliX2F1dG9jYXN0X2hhbmRsZXIoZHMsIHNrYik7XG4mIzQzO1x0XHRrZnJlZV9za2Ioc2tiKTtcbiBcdFx0cmV0dXJuIE5VTEw7XG4gXHR9XG4gXG5AQCAtNzgsOCAmIzQzOzg0LDEwIEBAIHN0YXRpYyBzdHJ1Y3Qgc2tfYnVmZiAqcWNhX3RhZ19yY3Yoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IG5ldF9kZXZpY2UgKmRldilcbiBcdHBvcnQgPSBGSUVMRF9HRVQoUUNBX0hEUl9SRUNWX1NPVVJDRV9QT1JULCBoZHIpO1xuIFxuIFx0c2tiLVx1MDAzZWRldiA9IGRzYV9jb25kdWl0X2ZpbmRfdXNlcihkZXYsIDAsIHBvcnQpO1xuLVx0aWYgKCFza2ItXHUwMDNlZGV2KVxuJiM0MztcdGlmICghc2tiLVx1MDAzZWRldikge1xuJiM0MztcdFx0a2ZyZWVfc2tiKHNrYik7XG4gXHRcdHJldHVybiBOVUxMO1xuJiM0MztcdH1cbiBcbiBcdC8qIFJlbW92ZSBRQ0EgdGFnIGFuZCByZWNhbGN1bGF0ZSBjaGVja3N1bSAqL1xuIFx0c2tiX3B1bGxfcmNzdW0oc2tiLCBRQ0FfSERSX0xFTik7XG5kaWZmIC0tZ2l0IGEvbmV0L2RzYS90YWdfcnRsNF9hLmMgYi9uZXQvZHNhL3RhZ19ydGw0X2EuY1xuaW5kZXggM2NjNjNlYWNmYTAzNTIuLjU5MGVhM2I5MjFjOWQ5IDEwMDY0NFxuLS0tIGEvbmV0L2RzYS90YWdfcnRsNF9hLmNcbiYjNDM7JiM0MzsmIzQzOyBiL25ldC9kc2EvdGFnX3J0bDRfYS5jXG5AQCAtNDEsNyAmIzQzOzQxLDcgQEAgc3RhdGljIHN0cnVjdCBza19idWZmICpydGw0YV90YWdfeG1pdChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxuIFx0dTE2IG91dDtcbiBcbiBcdC8qIFBhZCBvdXQgdG8gYXQgbGVhc3QgNjAgYnl0ZXMgKi9cbi1cdGlmICh1bmxpa2VseShfX3NrYl9wdXRfcGFkdG8oc2tiLCBFVEhfWkxFTiwgZmFsc2UpKSlcbiYjNDM7XHRpZiAodW5saWtlbHkoZXRoX3NrYl9wYWQoc2tiKSkpXG4gXHRcdHJldHVybiBOVUxMO1xuIFxuIFx0bmV0ZGV2X2RiZyhkZXYsIFwmIzM0O2FkZCByZWFsdGVrIHRhZyB0byBwYWNrYWdlIHRvIHBvcnQgJWRcXG5cJiMzNDssXG5AQCAtNzUsOCAmIzQzOzc1LDEwIEBAIHN0YXRpYyBzdHJ1Y3Qgc2tfYnVmZiAqcnRsNGFfdGFnX3JjdihzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxuIFx0dTggcHJvdDtcbiBcdHU4IHBvcnQ7XG4gXG4tXHRpZiAodW5saWtlbHkoIXBza2JfbWF5X3B1bGwoc2tiLCBSVEw0X0FfSERSX0xFTikpKVxuJiM0MztcdGlmICh1bmxpa2VseSghcHNrYl9tYXlfcHVsbChza2IsIFJUTDRfQV9IRFJfTEVOKSkpIHtcbiYjNDM7XHRcdGtmcmVlX3NrYihza2IpO1xuIFx0XHRyZXR1cm4gTlVMTDtcbiYjNDM7XHR9XG4gXG4gXHR0YWcgPSBkc2FfZXR5cGVfaGVhZGVyX3Bvc19yeChza2IpO1xuIFx0cCA9IChfX2JlMTYgKil0YWc7XG5AQCAtOTIsNiAmIzQzOzk0LDcgQEAgc3RhdGljIHN0cnVjdCBza19idWZmICpydGw0YV90YWdfcmN2KHN0cnVjdCBza19idWZmICpza2IsXG4gXHRwcm90ID0gKHByb3Rwb3J0IFx1MDAzZVx1MDAzZSBSVEw0X0FfUFJPVE9DT0xfU0hJRlQpIFx1MDAyNiAweDBmO1xuIFx0aWYgKHByb3QgIT0gUlRMNF9BX1BST1RPQ09MX1JUTDgzNjZSQikge1xuIFx0XHRuZXRkZXZfZXJyKGRldiwgXCYjMzQ7dW5rbm93biByZWFsdGVrIHByb3RvY29sIDB4JTAxeFxcblwmIzM0OywgcHJvdCk7XG4mIzQzO1x0XHRrZnJlZV9za2Ioc2tiKTtcbiBcdFx0cmV0dXJuIE5VTEw7XG4gXHR9XG4gXHRwb3J0ID0gcHJvdHBvcnQgXHUwMDI2IDB4ZmY7XG5AQCAtOTksNiAmIzQzOzEwMiw3IEBAIHN0YXRpYyBzdHJ1Y3Qgc2tfYnVmZiAqcnRsNGFfdGFnX3JjdihzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxuIFx0c2tiLVx1MDAzZWRldiA9IGRzYV9jb25kdWl0X2ZpbmRfdXNlcihkZXYsIDAsIHBvcnQpO1xuIFx0aWYgKCFza2ItXHUwMDNlZGV2KSB7XG4gXHRcdG5ldGRldl9kYmcoZGV2LCBcJiMzNDtjb3VsZCBub3QgZmluZCB1c2VyIGZvciBwb3J0ICVkXFxuXCYjMzQ7LCBwb3J0KTtcbiYjNDM7XHRcdGtmcmVlX3NrYihza2IpO1xuIFx0XHRyZXR1cm4gTlVMTDtcbiBcdH1cbiBcbmRpZmYgLS1naXQgYS9uZXQvZHNhL3RhZ19ydGw4XzQuYyBiL25ldC9kc2EvdGFnX3J0bDhfNC5jXG5pbmRleCA4NTJjNmI4ODA3OWExMy4uNGRhM2JlZWJlZjc1ZTIgMTAwNjQ0XG4tLS0gYS9uZXQvZHNhL3RhZ19ydGw4XzQuY1xuJiM0MzsmIzQzOyYjNDM7IGIvbmV0L2RzYS90YWdfcnRsOF80LmNcbkBAIC0xNDMsOCAmIzQzOzE0MywxMCBAQCBzdGF0aWMgc3RydWN0IHNrX2J1ZmYgKnJ0bDhfNHRfdGFnX3htaXQoc3RydWN0IHNrX2J1ZmYgKnNrYixcbiBcdC8qIENhbGN1bGF0ZSB0aGUgY2hlY2tzdW0gaGVyZSBpZiBub3QgZG9uZSB5ZXQgYXMgdHJhaWxpbmcgdGFncyB3aWxsXG4gXHQgKiBicmVhayBlaXRoZXIgc29mdHdhcmUgb3IgaGFyZHdhcmUgYmFzZWQgY2hlY2tzdW1cbiBcdCAqL1xuLVx0aWYgKHNrYi1cdTAwM2VpcF9zdW1tZWQgPT0gQ0hFQ0tTVU1fUEFSVElBTCBcdTAwMjZcdTAwMjYgc2tiX2NoZWNrc3VtX2hlbHAoc2tiKSlcbiYjNDM7XHRpZiAoc2tiLVx1MDAzZWlwX3N1bW1lZCA9PSBDSEVDS1NVTV9QQVJUSUFMIFx1MDAyNlx1MDAyNiBza2JfY2hlY2tzdW1faGVscChza2IpKSB7XG4mIzQzO1x0XHRrZnJlZV9za2Ioc2tiKTtcbiBcdFx0cmV0dXJuIE5VTEw7XG4mIzQzO1x0fVxuIFxuIFx0cnRsOF80X3dyaXRlX3RhZyhza2IsIGRldiwgc2tiX3B1dChza2IsIFJUTDhfNF9UQUdfTEVOKSk7XG4gXG5AQCAtMjAxLDExICYjNDM7MjAzLDE1IEBAIHN0YXRpYyBpbnQgcnRsOF80X3JlYWRfdGFnKHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXG4gc3RhdGljIHN0cnVjdCBza19idWZmICpydGw4XzRfdGFnX3JjdihzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxuIFx0XHRcdFx0ICAgICAgc3RydWN0IG5ldF9kZXZpY2UgKmRldilcbiB7XG4tXHRpZiAodW5saWtlbHkoIXBza2JfbWF5X3B1bGwoc2tiLCBSVEw4XzRfVEFHX0xFTikpKVxuJiM0MztcdGlmICh1bmxpa2VseSghcHNrYl9tYXlfcHVsbChza2IsIFJUTDhfNF9UQUdfTEVOKSkpIHtcbiYjNDM7XHRcdGtmcmVlX3NrYihza2IpO1xuIFx0XHRyZXR1cm4gTlVMTDtcbiYjNDM7XHR9XG4gXG4tXHRpZiAodW5saWtlbHkocnRsOF80X3JlYWRfdGFnKHNrYiwgZGV2LCBkc2FfZXR5cGVfaGVhZGVyX3Bvc19yeChza2IpKSkpXG4mIzQzO1x0aWYgKHVubGlrZWx5KHJ0bDhfNF9yZWFkX3RhZyhza2IsIGRldiwgZHNhX2V0eXBlX2hlYWRlcl9wb3Nfcngoc2tiKSkpKSB7XG4mIzQzO1x0XHRrZnJlZV9za2Ioc2tiKTtcbiBcdFx0cmV0dXJuIE5VTEw7XG4mIzQzO1x0fVxuIFxuIFx0LyogUmVtb3ZlIHRhZyBhbmQgcmVjYWxjdWxhdGUgY2hlY2tzdW0gKi9cbiBcdHNrYl9wdWxsX3Jjc3VtKHNrYiwgUlRMOF80X1RBR19MRU4pO1xuQEAgLTIxOCwxNCAmIzQzOzIyNCwyMCBAQCBzdGF0aWMgc3RydWN0IHNrX2J1ZmYgKnJ0bDhfNF90YWdfcmN2KHN0cnVjdCBza19idWZmICpza2IsXG4gc3RhdGljIHN0cnVjdCBza19idWZmICpydGw4XzR0X3RhZ19yY3Yoc3RydWN0IHNrX2J1ZmYgKnNrYixcbiBcdFx0XHRcdCAgICAgICBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxuIHtcbi1cdGlmIChza2JfbGluZWFyaXplKHNrYikpXG4mIzQzO1x0aWYgKHNrYl9saW5lYXJpemUoc2tiKSkge1xuJiM0MztcdFx0a2ZyZWVfc2tiKHNrYik7XG4gXHRcdHJldHVybiBOVUxMO1xuJiM0MztcdH1cbiBcbi1cdGlmICh1bmxpa2VseShydGw4XzRfcmVhZF90YWcoc2tiLCBkZXYsIHNrYl90YWlsX3BvaW50ZXIoc2tiKSAtIFJUTDhfNF9UQUdfTEVOKSkpXG4mIzQzO1x0aWYgKHVubGlrZWx5KHJ0bDhfNF9yZWFkX3RhZyhza2IsIGRldiwgc2tiX3RhaWxfcG9pbnRlcihza2IpIC0gUlRMOF80X1RBR19MRU4pKSkge1xuJiM0MztcdFx0a2ZyZWVfc2tiKHNrYik7XG4gXHRcdHJldHVybiBOVUxMO1xuJiM0MztcdH1cbiBcbi1cdGlmIChwc2tiX3RyaW1fcmNzdW0oc2tiLCBza2ItXHUwMDNlbGVuIC0gUlRMOF80X1RBR19MRU4pKVxuJiM0MztcdGlmIChwc2tiX3RyaW1fcmNzdW0oc2tiLCBza2ItXHUwMDNlbGVuIC0gUlRMOF80X1RBR19MRU4pKSB7XG4mIzQzO1x0XHRrZnJlZV9za2Ioc2tiKTtcbiBcdFx0cmV0dXJuIE5VTEw7XG4mIzQzO1x0fVxuIFxuIFx0cmV0dXJuIHNrYjtcbiB9XG5kaWZmIC0tZ2l0IGEvbmV0L2RzYS90YWdfcnpuMV9hNXBzdy5jIGIvbmV0L2RzYS90YWdfcnpuMV9hNXBzdy5jXG5pbmRleCAxMDk5NGIzNDcwZjY3YS4uNzM0OTEwMTU2ZGMzMzMgMTAwNjQ0XG4tLS0gYS9uZXQvZHNhL3RhZ19yem4xX2E1cHN3LmNcbiYjNDM7JiM0MzsmIzQzOyBiL25ldC9kc2EvdGFnX3J6bjFfYTVwc3cuY1xuQEAgLTQ4LDcgJiM0Mzs0OCw3IEBAIHN0YXRpYyBzdHJ1Y3Qgc2tfYnVmZiAqYTVwc3dfdGFnX3htaXQoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IG5ldF9kZXZpY2UgKmRlXG4gXHQgKiBsZWFzdCA2MCBieXRlcyBvdGhlcndpc2UgdGhleSB3aWxsIGJlIGRpc2NhcmRlZCB3aGVuIHRoZXkgZW50ZXIgdGhlXG4gXHQgKiBzd2l0Y2ggcG9ydCBsb2dpYy5cbiBcdCAqL1xuLVx0aWYgKF9fc2tiX3B1dF9wYWR0byhza2IsIEVUSF9aTEVOLCBmYWxzZSkpXG4mIzQzO1x0aWYgKGV0aF9za2JfcGFkKHNrYikpXG4gXHRcdHJldHVybiBOVUxMO1xuIFxuIFx0LyogcHJvdmlkZSAmIzM5O0E1UFNXX1RBR19MRU4mIzM5OyBieXRlcyBhZGRpdGlvbmFsIHNwYWNlICovXG5AQCAtNzcsNiAmIzQzOzc3LDcgQEAgc3RhdGljIHN0cnVjdCBza19idWZmICphNXBzd190YWdfcmN2KHN0cnVjdCBza19idWZmICpza2IsXG4gXHRpZiAodW5saWtlbHkoIXBza2JfbWF5X3B1bGwoc2tiLCBBNVBTV19UQUdfTEVOKSkpIHtcbiBcdFx0ZGV2X3dhcm5fcmF0ZWxpbWl0ZWQoXHUwMDI2ZGV2LVx1MDAzZWRldixcbiBcdFx0XHRcdCAgICAgXCYjMzQ7RHJvcHBpbmcgcGFja2V0LCBjYW5ub3QgcHVsbFxcblwmIzM0Oyk7XG4mIzQzO1x0XHRrZnJlZV9za2Ioc2tiKTtcbiBcdFx0cmV0dXJuIE5VTEw7XG4gXHR9XG4gXG5AQCAtODQsMTQgJiM0Mzs4NSwxNyBAQCBzdGF0aWMgc3RydWN0IHNrX2J1ZmYgKmE1cHN3X3RhZ19yY3Yoc3RydWN0IHNrX2J1ZmYgKnNrYixcbiBcbiBcdGlmICh0YWctXHUwMDNlY3RybF90YWcgIT0gaHRvbnMoRVRIX1BfRFNBX0E1UFNXKSkge1xuIFx0XHRkZXZfd2Fybl9yYXRlbGltaXRlZChcdTAwMjZkZXYtXHUwMDNlZGV2LCBcJiMzNDtEcm9wcGluZyBwYWNrZXQgZHVlIHRvIGludmFsaWQgVEFHIG1hcmtlclxcblwmIzM0Oyk7XG4mIzQzO1x0XHRrZnJlZV9za2Ioc2tiKTtcbiBcdFx0cmV0dXJuIE5VTEw7XG4gXHR9XG4gXG4gXHRwb3J0ID0gRklFTERfR0VUKEE1UFNXX0NUUkxfREFUQV9QT1JULCBudG9ocyh0YWctXHUwMDNlY3RybF9kYXRhKSk7XG4gXG4gXHRza2ItXHUwMDNlZGV2ID0gZHNhX2NvbmR1aXRfZmluZF91c2VyKGRldiwgMCwgcG9ydCk7XG4tXHRpZiAoIXNrYi1cdTAwM2VkZXYpXG4mIzQzO1x0aWYgKCFza2ItXHUwMDNlZGV2KSB7XG4mIzQzO1x0XHRrZnJlZV9za2Ioc2tiKTtcbiBcdFx0cmV0dXJuIE5VTEw7XG4mIzQzO1x0fVxuIFxuIFx0c2tiX3B1bGxfcmNzdW0oc2tiLCBBNVBTV19UQUdfTEVOKTtcbiBcdGRzYV9zdHJpcF9ldHlwZV9oZWFkZXIoc2tiLCBBNVBTV19UQUdfTEVOKTtcbmRpZmYgLS1naXQgYS9uZXQvZHNhL3RhZ19zamExMTA1LmMgYi9uZXQvZHNhL3RhZ19zamExMTA1LmNcbmluZGV4IGRlNmQ0Y2U4NjY4YmUxLi5iZmUxZjc0NmY1NWJlNSAxMDA2NDRcbi0tLSBhL25ldC9kc2EvdGFnX3NqYTExMDUuY1xuJiM0MzsmIzQzOyYjNDM7IGIvbmV0L2RzYS90YWdfc2phMTEwNS5jXG5AQCAtMTQ5LDE5ICYjNDM7MTQ5LDIwIEBAIHN0YXRpYyBzdHJ1Y3Qgc2tfYnVmZiAqc2phMTEwNV9kZWZlcl94bWl0KHN0cnVjdCBkc2FfcG9ydCAqZHAsXG4gXHR4bWl0X3dvcmtfZm4gPSB0YWdnZXJfZGF0YS1cdTAwM2V4bWl0X3dvcmtfZm47XG4gXHR4bWl0X3dvcmtlciA9IHByaXYtXHUwMDNleG1pdF93b3JrZXI7XG4gXG4tXHRpZiAoIXhtaXRfd29ya19mbiB8fCAheG1pdF93b3JrZXIpXG4mIzQzO1x0aWYgKCF4bWl0X3dvcmtfZm4gfHwgIXhtaXRfd29ya2VyKSB7XG4mIzQzO1x0XHRrZnJlZV9za2Ioc2tiKTtcbiBcdFx0cmV0dXJuIE5VTEw7XG4mIzQzO1x0fVxuIFxuIFx0eG1pdF93b3JrID0ga3phbGxvY19vYmooKnhtaXRfd29yaywgR0ZQX0FUT01JQyk7XG4tXHRpZiAoIXhtaXRfd29yaylcbiYjNDM7XHRpZiAoIXhtaXRfd29yaykge1xuJiM0MztcdFx0a2ZyZWVfc2tiKHNrYik7XG4gXHRcdHJldHVybiBOVUxMO1xuJiM0MztcdH1cbiBcbiBcdGt0aHJlYWRfaW5pdF93b3JrKFx1MDAyNnhtaXRfd29yay1cdTAwM2V3b3JrLCB4bWl0X3dvcmtfZm4pO1xuLVx0LyogSW5jcmVhc2UgcmVmY291bnQgc28gdGhlIGtmcmVlX3NrYiBpbiBkc2FfdXNlcl94bWl0XG4tXHQgKiB3b24mIzM5O3QgcmVhbGx5IGZyZWUgdGhlIHBhY2tldC5cbi1cdCAqL1xuIFx0eG1pdF93b3JrLVx1MDAzZWRwID0gZHA7XG4tXHR4bWl0X3dvcmstXHUwMDNlc2tiID0gc2tiX2dldChza2IpO1xuJiM0MztcdHhtaXRfd29yay1cdTAwM2Vza2IgPSBza2I7XG4gXG4gXHRrdGhyZWFkX3F1ZXVlX3dvcmsoeG1pdF93b3JrZXIsIFx1MDAyNnhtaXRfd29yay1cdTAwM2V3b3JrKTtcbiBcbkBAIC00MDEsMTAgJiM0Mzs0MDIsNyBAQCBzdGF0aWMgc3RydWN0IHNrX2J1ZmZcbiBcdFx0XHRrZnJlZV9za2IocHJpdi1cdTAwM2VzdGFtcGFibGVfc2tiKTtcbiBcdFx0fVxuIFxuLVx0XHQvKiBIb2xkIGEgcmVmZXJlbmNlIHRvIGF2b2lkIGRzYV9zd2l0Y2hfcmN2XG4tXHRcdCAqIGZyb20gZnJlZWluZyB0aGUgc2tiLlxuLVx0XHQgKi9cbi1cdFx0cHJpdi1cdTAwM2VzdGFtcGFibGVfc2tiID0gc2tiX2dldChza2IpO1xuJiM0MztcdFx0cHJpdi1cdTAwM2VzdGFtcGFibGVfc2tiID0gc2tiO1xuIFx0XHRzcGluX3VubG9jayhcdTAwMjZwcml2LVx1MDAzZW1ldGFfbG9jayk7XG4gXG4gXHRcdC8qIFRlbGwgRFNBIHdlIGdvdCBub3RoaW5nICovXG5AQCAtNDM2LDYgJiM0Mzs0MzQsNyBAQCBzdGF0aWMgc3RydWN0IHNrX2J1ZmZcbiBcdFx0XHRkZXZfZXJyX3JhdGVsaW1pdGVkKGRzLVx1MDAzZWRldixcbiBcdFx0XHRcdFx0ICAgIFwmIzM0O1VuZXhwZWN0ZWQgbWV0YSBmcmFtZVxcblwmIzM0Oyk7XG4gXHRcdFx0c3Bpbl91bmxvY2soXHUwMDI2cHJpdi1cdTAwM2VtZXRhX2xvY2spO1xuJiM0MztcdFx0XHRrZnJlZV9za2Ioc2tiKTtcbiBcdFx0XHRyZXR1cm4gTlVMTDtcbiBcdFx0fVxuIFxuQEAgLTQ0Myw2ICYjNDM7NDQyLDcgQEAgc3RhdGljIHN0cnVjdCBza19idWZmXG4gXHRcdFx0ZGV2X2Vycl9yYXRlbGltaXRlZChkcy1cdTAwM2VkZXYsXG4gXHRcdFx0XHRcdCAgICBcJiMzNDtNZXRhIGZyYW1lIG9uIHdyb25nIHBvcnRcXG5cJiMzNDspO1xuIFx0XHRcdHNwaW5fdW5sb2NrKFx1MDAyNnByaXYtXHUwMDNlbWV0YV9sb2NrKTtcbiYjNDM7XHRcdFx0a2ZyZWVfc2tiKHNrYik7XG4gXHRcdFx0cmV0dXJuIE5VTEw7XG4gXHRcdH1cbiBcbkBAIC01MDEsMTggJiM0Mzs1MDEsMjEgQEAgc3RhdGljIHN0cnVjdCBza19idWZmICpzamExMTA1X3JjdihzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxuIFx0LyogTm9ybWFsIGRhdGEgcGxhbmUgdHJhZmZpYyBhbmQgbGluay1sb2NhbCBmcmFtZXMgYXJlIHRhZ2dlZCB3aXRoXG4gXHQgKiBhIHRhZ184MDIxcSBWTEFOIHdoaWNoIHdlIGhhdmUgdG8gc3RyaXBcbiBcdCAqL1xuLVx0aWYgKHNqYTExMDVfc2tiX2hhc190YWdfODAyMXEoc2tiKSlcbiYjNDM7XHRpZiAoc2phMTEwNV9za2JfaGFzX3RhZ184MDIxcShza2IpKSB7XG4gXHRcdGRzYV84MDIxcV9yY3Yoc2tiLCBcdTAwMjZzb3VyY2VfcG9ydCwgXHUwMDI2c3dpdGNoX2lkLCBcdTAwMjZ2YmlkLCBcdTAwMjZ2aWQpO1xuLVx0ZWxzZSBpZiAoc291cmNlX3BvcnQgPT0gLTEgXHUwMDI2XHUwMDI2IHN3aXRjaF9pZCA9PSAtMSlcbiYjNDM7XHR9IGVsc2UgaWYgKHNvdXJjZV9wb3J0ID09IC0xIFx1MDAyNlx1MDAyNiBzd2l0Y2hfaWQgPT0gLTEpIHtcbiBcdFx0LyogUGFja2V0cyB3aXRoIG5vIHNvdXJjZSBpbmZvcm1hdGlvbiBoYXZlIG5vIGNoYW5jZSBvZlxuIFx0XHQgKiBnZXR0aW5nIGFjY2VwdGVkLCBkcm9wIHRoZW0gc3RyYWlnaHQgYXdheS5cbiBcdFx0ICovXG4mIzQzO1x0XHRrZnJlZV9za2Ioc2tiKTtcbiBcdFx0cmV0dXJuIE5VTEw7XG4mIzQzO1x0fVxuIFxuIFx0c2tiLVx1MDAzZWRldiA9IGRzYV90YWdfODAyMXFfZmluZF91c2VyKG5ldGRldiwgc291cmNlX3BvcnQsIHN3aXRjaF9pZCxcbiBcdFx0XHRcdFx0ICAgdmlkLCB2YmlkKTtcbiBcdGlmICghc2tiLVx1MDAzZWRldikge1xuIFx0XHRuZXRkZXZfd2FybihuZXRkZXYsIFwmIzM0O0NvdWxkbiYjMzk7dCBkZWNvZGUgc291cmNlIHBvcnRcXG5cJiMzNDspO1xuJiM0MztcdFx0a2ZyZWVfc2tiKHNrYik7XG4gXHRcdHJldHVybiBOVUxMO1xuIFx0fVxuIFxuQEAgLTUzOSwxMiAmIzQzOzU0MiwxNSBAQCBzdGF0aWMgc3RydWN0IHNrX2J1ZmYgKnNqYTExMTBfcmN2X21ldGEoc3RydWN0IHNrX2J1ZmYgKnNrYiwgdTE2IHJ4X2hlYWRlcilcbiBcdGlmICghZHMpIHtcbiBcdFx0bmV0X2Vycl9yYXRlbGltaXRlZChcJiMzNDslczogY2Fubm90IGZpbmQgc3dpdGNoIGlkICVkXFxuXCYjMzQ7LFxuIFx0XHRcdFx0ICAgIGNvbmR1aXQtXHUwMDNlbmFtZSwgc3dpdGNoX2lkKTtcbiYjNDM7XHRcdGtmcmVlX3NrYihza2IpO1xuIFx0XHRyZXR1cm4gTlVMTDtcbiBcdH1cbiBcbiBcdHRhZ2dlcl9kYXRhID0gc2phMTEwNV90YWdnZXJfZGF0YShkcyk7XG4tXHRpZiAoIXRhZ2dlcl9kYXRhLVx1MDAzZW1ldGFfdHN0YW1wX2hhbmRsZXIpXG4mIzQzO1x0aWYgKCF0YWdnZXJfZGF0YS1cdTAwM2VtZXRhX3RzdGFtcF9oYW5kbGVyKSB7XG4mIzQzO1x0XHRrZnJlZV9za2Ioc2tiKTtcbiBcdFx0cmV0dXJuIE5VTEw7XG4mIzQzO1x0fVxuIFxuIFx0Zm9yIChpID0gMDsgaSBcdTAwM2M9IG5fdHM7IGkmIzQzOyYjNDM7KSB7XG4gXHRcdHU4IHRzX2lkLCBzb3VyY2VfcG9ydCwgZGlyO1xuQEAgLTU2Miw2ICYjNDM7NTY4LDcgQEAgc3RhdGljIHN0cnVjdCBza19idWZmICpzamExMTEwX3Jjdl9tZXRhKHN0cnVjdCBza19idWZmICpza2IsIHUxNiByeF9oZWFkZXIpXG4gXHR9XG4gXG4gXHQvKiBEaXNjYXJkIHRoZSBtZXRhIGZyYW1lLCB3ZSYjMzk7dmUgY29uc3VtZWQgdGhlIHRpbWVzdGFtcHMgaXQgY29udGFpbmVkICovXG4mIzQzO1x0a2ZyZWVfc2tiKHNrYik7XG4gXHRyZXR1cm4gTlVMTDtcbiB9XG4gXG5AQCAtNTcyLDggJiM0Mzs1NzksMTAgQEAgc3RhdGljIHN0cnVjdCBza19idWZmICpzamExMTEwX3Jjdl9pbmJhbmRfY29udHJvbF9leHRlbnNpb24oc3RydWN0IHNrX2J1ZmYgKnNrYixcbiB7XG4gXHR1MTYgcnhfaGVhZGVyO1xuIFxuLVx0aWYgKHVubGlrZWx5KCFwc2tiX21heV9wdWxsKHNrYiwgU0pBMTExMF9IRUFERVJfTEVOKSkpXG4mIzQzO1x0aWYgKHVubGlrZWx5KCFwc2tiX21heV9wdWxsKHNrYiwgU0pBMTExMF9IRUFERVJfTEVOKSkpIHtcbiYjNDM7XHRcdGtmcmVlX3NrYihza2IpO1xuIFx0XHRyZXR1cm4gTlVMTDtcbiYjNDM7XHR9XG4gXG4gXHQvKiBza2ItXHUwMDNlZGF0YSBwb2ludHMgdG8gc2tiX21hY19oZWFkZXIoc2tiKSAmIzQzOyBFVEhfSExFTiwgd2hpY2ggaXMgZXhhY3RseVxuIFx0ICogd2hhdCB3ZSBuZWVkIGJlY2F1c2UgdGhlIGNhbGxlciBoYXMgY2hlY2tlZCB0aGUgRXRoZXJUeXBlICh3aGljaCBpc1xuQEAgLTYwOSw4ICYjNDM7NjE4LDEwIEBAIHN0YXRpYyBzdHJ1Y3Qgc2tfYnVmZiAqc2phMTExMF9yY3ZfaW5iYW5kX2NvbnRyb2xfZXh0ZW5zaW9uKHN0cnVjdCBza19idWZmICpza2IsXG4gXHRcdCAqIHBhZGRpbmcgYW5kIHRyYWlsZXIgd2UgbmVlZCB0byBhY2NvdW50IGZvciB0aGUgZmFjdCB0aGF0XG4gXHRcdCAqIHNrYi1cdTAwM2VkYXRhIHBvaW50cyB0byBza2JfbWFjX2hlYWRlcihza2IpICYjNDM7IEVUSF9ITEVOLlxuIFx0XHQgKi9cbi1cdFx0aWYgKHBza2JfdHJpbV9yY3N1bShza2IsIHN0YXJ0X29mX3BhZGRpbmcgLSBFVEhfSExFTikpXG4mIzQzO1x0XHRpZiAocHNrYl90cmltX3Jjc3VtKHNrYiwgc3RhcnRfb2ZfcGFkZGluZyAtIEVUSF9ITEVOKSkge1xuJiM0MztcdFx0XHRrZnJlZV9za2Ioc2tiKTtcbiBcdFx0XHRyZXR1cm4gTlVMTDtcbiYjNDM7XHRcdH1cbiBcdC8qIFRyYXAtdG8taG9zdCBmcmFtZSwgbm8gdGltZXN0YW1wIHRyYWlsZXIgKi9cbiBcdH0gZWxzZSB7XG4gXHRcdCpzb3VyY2VfcG9ydCA9IFNKQTExMTBfUlhfSEVBREVSX1NSQ19QT1JUKHJ4X2hlYWRlcik7XG5AQCAtNjUzLDYgJiM0Mzs2NjQsNyBAQCBzdGF0aWMgc3RydWN0IHNrX2J1ZmYgKnNqYTExMTBfcmN2KHN0cnVjdCBza19idWZmICpza2IsXG4gXG4gXHRpZiAoIXNrYi1cdTAwM2VkZXYpIHtcbiBcdFx0bmV0ZGV2X3dhcm4obmV0ZGV2LCBcJiMzNDtDb3VsZG4mIzM5O3QgZGVjb2RlIHNvdXJjZSBwb3J0XFxuXCYjMzQ7KTtcbiYjNDM7XHRcdGtmcmVlX3NrYihza2IpO1xuIFx0XHRyZXR1cm4gTlVMTDtcbiBcdH1cbiBcbmRpZmYgLS1naXQgYS9uZXQvZHNhL3RhZ190cmFpbGVyLmMgYi9uZXQvZHNhL3RhZ190cmFpbGVyLmNcbmluZGV4IDRkY2UyNGNmZTZhNzE2Li40OWM4MDJjMTBjYTYzYSAxMDA2NDRcbi0tLSBhL25ldC9kc2EvdGFnX3RyYWlsZXIuY1xuJiM0MzsmIzQzOyYjNDM7IGIvbmV0L2RzYS90YWdfdHJhaWxlci5jXG5AQCAtMzAsMjIgJiM0MzszMCwzMCBAQCBzdGF0aWMgc3RydWN0IHNrX2J1ZmYgKnRyYWlsZXJfcmN2KHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXG4gXHR1OCAqdHJhaWxlcjtcbiBcdGludCBzb3VyY2VfcG9ydDtcbiBcbi1cdGlmIChza2JfbGluZWFyaXplKHNrYikpXG4mIzQzO1x0aWYgKHNrYl9saW5lYXJpemUoc2tiKSkge1xuJiM0MztcdFx0a2ZyZWVfc2tiKHNrYik7XG4gXHRcdHJldHVybiBOVUxMO1xuJiM0MztcdH1cbiBcbiBcdHRyYWlsZXIgPSBza2JfdGFpbF9wb2ludGVyKHNrYikgLSA0O1xuIFx0aWYgKHRyYWlsZXJbMF0gIT0gMHg4MCB8fCAodHJhaWxlclsxXSBcdTAwMjYgMHhmOCkgIT0gMHgwMCB8fFxuLVx0ICAgICh0cmFpbGVyWzJdIFx1MDAyNiAweGVmKSAhPSAweDAwIHx8IHRyYWlsZXJbM10gIT0gMHgwMClcbiYjNDM7XHQgICAgKHRyYWlsZXJbMl0gXHUwMDI2IDB4ZWYpICE9IDB4MDAgfHwgdHJhaWxlclszXSAhPSAweDAwKSB7XG4mIzQzO1x0XHRrZnJlZV9za2Ioc2tiKTtcbiBcdFx0cmV0dXJuIE5VTEw7XG4mIzQzO1x0fVxuIFxuIFx0c291cmNlX3BvcnQgPSB0cmFpbGVyWzFdIFx1MDAyNiA3O1xuIFxuIFx0c2tiLVx1MDAzZWRldiA9IGRzYV9jb25kdWl0X2ZpbmRfdXNlcihkZXYsIDAsIHNvdXJjZV9wb3J0KTtcbi1cdGlmICghc2tiLVx1MDAzZWRldilcbiYjNDM7XHRpZiAoIXNrYi1cdTAwM2VkZXYpIHtcbiYjNDM7XHRcdGtmcmVlX3NrYihza2IpO1xuIFx0XHRyZXR1cm4gTlVMTDtcbiYjNDM7XHR9XG4gXG4tXHRpZiAocHNrYl90cmltX3Jjc3VtKHNrYiwgc2tiLVx1MDAzZWxlbiAtIDQpKVxuJiM0MztcdGlmIChwc2tiX3RyaW1fcmNzdW0oc2tiLCBza2ItXHUwMDNlbGVuIC0gNCkpIHtcbiYjNDM7XHRcdGtmcmVlX3NrYihza2IpO1xuIFx0XHRyZXR1cm4gTlVMTDtcbiYjNDM7XHR9XG4gXG4gXHRyZXR1cm4gc2tiO1xuIH1cbmRpZmYgLS1naXQgYS9uZXQvZHNhL3RhZ192c2M3M3h4XzgwMjFxLmMgYi9uZXQvZHNhL3RhZ192c2M3M3h4XzgwMjFxLmNcbmluZGV4IGFmMTIxYTlhZmY3ZmJkLi5mNDczNmExYTdhMGYwZiAxMDA2NDRcbi0tLSBhL25ldC9kc2EvdGFnX3ZzYzczeHhfODAyMXEuY1xuJiM0MzsmIzQzOyYjNDM7IGIvbmV0L2RzYS90YWdfdnNjNzN4eF84MDIxcS5jXG5AQCAtNDQsNiAmIzQzOzQ0LDcgQEAgdnNjNzN4eF9yY3Yoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldilcbiBcdGlmICghc2tiLVx1MDAzZWRldikge1xuIFx0XHRkZXZfd2Fybl9yYXRlbGltaXRlZChcdTAwMjZuZXRkZXYtXHUwMDNlZGV2LFxuIFx0XHRcdFx0ICAgICBcJiMzNDtDb3VsZG4mIzM5O3QgZGVjb2RlIHNvdXJjZSBwb3J0XFxuXCYjMzQ7KTtcbiYjNDM7XHRcdGtmcmVlX3NrYihza2IpO1xuIFx0XHRyZXR1cm4gTlVMTDtcbiBcdH1cbiBcbmRpZmYgLS1naXQgYS9uZXQvZHNhL3RhZ194cnM3MDB4LmMgYi9uZXQvZHNhL3RhZ194cnM3MDB4LmNcbmluZGV4IGEwNTIxOWY3MDJjNjVhLi5iYjI2ODAyMGVlODY1ZSAxMDA2NDRcbi0tLSBhL25ldC9kc2EvdGFnX3hyczcwMHguY1xuJiM0MzsmIzQzOyYjNDM7IGIvbmV0L2RzYS90YWdfeHJzNzAweC5jXG5AQCAtMzAsMTUgJiM0MzszMCwyMSBAQCBzdGF0aWMgc3RydWN0IHNrX2J1ZmYgKnhyczcwMHhfcmN2KHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXG4gXG4gXHRzb3VyY2VfcG9ydCA9IGZmcygoaW50KXRyYWlsZXJbMF0pIC0gMTtcbiBcbi1cdGlmIChzb3VyY2VfcG9ydCBcdTAwM2MgMClcbiYjNDM7XHRpZiAoc291cmNlX3BvcnQgXHUwMDNjIDApIHtcbiYjNDM7XHRcdGtmcmVlX3NrYihza2IpO1xuIFx0XHRyZXR1cm4gTlVMTDtcbiYjNDM7XHR9XG4gXG4gXHRza2ItXHUwMDNlZGV2ID0gZHNhX2NvbmR1aXRfZmluZF91c2VyKGRldiwgMCwgc291cmNlX3BvcnQpO1xuLVx0aWYgKCFza2ItXHUwMDNlZGV2KVxuJiM0MztcdGlmICghc2tiLVx1MDAzZWRldikge1xuJiM0MztcdFx0a2ZyZWVfc2tiKHNrYik7XG4gXHRcdHJldHVybiBOVUxMO1xuJiM0MztcdH1cbiBcbi1cdGlmIChwc2tiX3RyaW1fcmNzdW0oc2tiLCBza2ItXHUwMDNlbGVuIC0gMSkpXG4mIzQzO1x0aWYgKHBza2JfdHJpbV9yY3N1bShza2IsIHNrYi1cdTAwM2VsZW4gLSAxKSkge1xuJiM0MztcdFx0a2ZyZWVfc2tiKHNrYik7XG4gXHRcdHJldHVybiBOVUxMO1xuJiM0MztcdH1cbiBcbiBcdC8qIEZyYW1lIGlzIGZvcndhcmRlZCBieSBoYXJkd2FyZSwgZG9uJiMzOTt0IGZvcndhcmQgaW4gc29mdHdhcmUuICovXG4gXHRkc2FfZGVmYXVsdF9vZmZsb2FkX2Z3ZF9tYXJrKHNrYik7XG5kaWZmIC0tZ2l0IGEvbmV0L2RzYS90YWdfeXQ5MjF4LmMgYi9uZXQvZHNhL3RhZ195dDkyMXguY1xuaW5kZXggZjNjZWQ5OWIxYzg1MmUuLjI5NDc4NGFiNjY5NGI2IDEwMDY0NFxuLS0tIGEvbmV0L2RzYS90YWdfeXQ5MjF4LmNcbiYjNDM7JiM0MzsmIzQzOyBiL25ldC9kc2EvdGFnX3l0OTIxeC5jXG5AQCAtODcsOCAmIzQzOzg3LDEwIEBAIHl0OTIxeF90YWdfcmN2KHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYpXG4gXHRfX2JlMTYgKnRhZztcbiBcdHUxNiByeDtcbiBcbi1cdGlmICh1bmxpa2VseSghcHNrYl9tYXlfcHVsbChza2IsIFlUOTIxWF9UQUdfTEVOKSkpXG4mIzQzO1x0aWYgKHVubGlrZWx5KCFwc2tiX21heV9wdWxsKHNrYiwgWVQ5MjFYX1RBR19MRU4pKSkge1xuJiM0MztcdFx0a2ZyZWVfc2tiKHNrYik7XG4gXHRcdHJldHVybiBOVUxMO1xuJiM0MztcdH1cbiBcbiBcdHRhZyA9IGRzYV9ldHlwZV9oZWFkZXJfcG9zX3J4KHNrYik7XG4gXG5AQCAtOTYsNiAmIzQzOzk4LDcgQEAgeXQ5MjF4X3RhZ19yY3Yoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldilcbiBcdFx0ZGV2X3dhcm5fcmF0ZWxpbWl0ZWQoXHUwMDI2bmV0ZGV2LVx1MDAzZWRldixcbiBcdFx0XHRcdCAgICAgXCYjMzQ7VW5leHBlY3RlZCBFdGhlclR5cGUgMHglMDR4XFxuXCYjMzQ7LFxuIFx0XHRcdFx0ICAgICBudG9ocyh0YWdbMF0pKTtcbiYjNDM7XHRcdGtmcmVlX3NrYihza2IpO1xuIFx0XHRyZXR1cm4gTlVMTDtcbiBcdH1cbiBcbkBAIC0xMDQsNiAmIzQzOzEwNyw3IEBAIHl0OTIxeF90YWdfcmN2KHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYpXG4gXHRpZiAodW5saWtlbHkoKHJ4IFx1MDAyNiBZVDkyMVhfVEFHX1BPUlRfRU4pID09IDApKSB7XG4gXHRcdGRldl93YXJuX3JhdGVsaW1pdGVkKFx1MDAyNm5ldGRldi1cdTAwM2VkZXYsXG4gXHRcdFx0XHQgICAgIFwmIzM0O1VuZXhwZWN0ZWQgcnggdGFnIDB4JTA0eFxcblwmIzM0OywgcngpO1xuJiM0MztcdFx0a2ZyZWVfc2tiKHNrYik7XG4gXHRcdHJldHVybiBOVUxMO1xuIFx0fVxuIFxuQEAgLTExMiw2ICYjNDM7MTE2LDcgQEAgeXQ5MjF4X3RhZ19yY3Yoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldilcbiBcdGlmICh1bmxpa2VseSghc2tiLVx1MDAzZWRldikpIHtcbiBcdFx0ZGV2X3dhcm5fcmF0ZWxpbWl0ZWQoXHUwMDI2bmV0ZGV2LVx1MDAzZWRldixcbiBcdFx0XHRcdCAgICAgXCYjMzQ7Q291bGRuJiMzOTt0IGRlY29kZSBzb3VyY2UgcG9ydCAldVxcblwmIzM0OywgcG9ydCk7XG4mIzQzO1x0XHRrZnJlZV9za2Ioc2tiKTtcbiBcdFx0cmV0dXJuIE5VTEw7XG4gXHR9XG4gXG5kaWZmIC0tZ2l0IGEvbmV0L2RzYS91c2VyLmMgYi9uZXQvZHNhL3VzZXIuY1xuaW5kZXggODcwNGMxYTNhNWI3NDEuLjA3MmZhNzY5NzJjYzY1IDEwMDY0NFxuLS0tIGEvbmV0L2RzYS91c2VyLmNcbiYjNDM7JiM0MzsmIzQzOyBiL25ldC9kc2EvdXNlci5jXG5AQCAtOTM1LDEzICYjNDM7OTM1LDEyIEBAIHN0YXRpYyBuZXRkZXZfdHhfdCBkc2FfdXNlcl94bWl0KHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXG4gXHRcdGV0aF9za2JfcGFkKHNrYik7XG4gXG4gXHQvKiBUcmFuc21pdCBmdW5jdGlvbiBtYXkgaGF2ZSB0byByZWFsbG9jYXRlIHRoZSBvcmlnaW5hbCBTS0IsXG4tXHQgKiBpbiB3aGljaCBjYXNlIGl0IG11c3QgaGF2ZSBmcmVlZCBpdC4gT25seSBmcmVlIGl0IGhlcmUgb24gZXJyb3IuXG4mIzQzO1x0ICogaW4gd2hpY2ggY2FzZSBpdCBtdXN0IGhhdmUgZnJlZWQgaXQuIFRhZ2dlcnMgd2lsbCBkcm9wIHRoZVxuJiM0MztcdCAqIHBhc3NlZCBza2Igb24gZXJyb3IuXG4gXHQgKi9cbiBcdG5za2IgPSBwLVx1MDAzZXhtaXQoc2tiLCBkZXYpO1xuLVx0aWYgKCFuc2tiKSB7XG4tXHRcdGtmcmVlX3NrYihza2IpO1xuJiM0MztcdGlmICghbnNrYilcbiBcdFx0cmV0dXJuIE5FVERFVl9UWF9PSztcbi1cdH1cbiBcbiBcdHJldHVybiBkc2FfZW5xdWV1ZV9za2IobnNrYiwgZGV2KTtcbiB9XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjUgMDg6Mjk8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7TkVUX0RTQSYjMzQ7LAogICAgJiMzNDtORVRfRFNBX0xPT1AmIzM0OywKICAgICYjMzQ7TkVUX0RTQV9UQUdfQVI5MzMxJiMzNDssCiAgICAmIzM0O05FVF9EU0FfVEFHX0JSQ00mIzM0OywKICAgICYjMzQ7TkVUX0RTQV9UQUdfQlJDTV9MRUdBQ1kmIzM0OywKICAgICYjMzQ7TkVUX0RTQV9UQUdfQlJDTV9QUkVQRU5EJiMzNDssCiAgICAmIzM0O05FVF9EU0FfVEFHX0hFTExDUkVFSyYjMzQ7LAogICAgJiMzNDtORVRfRFNBX1RBR19HU1dJUCYjMzQ7LAogICAgJiMzNDtORVRfRFNBX1RBR19EU0EmIzM0OywKICAgICYjMzQ7TkVUX0RTQV9UQUdfRURTQSYjMzQ7LAogICAgJiMzNDtORVRfRFNBX1RBR19NVEsmIzM0OywKICAgICYjMzQ7TkVUX0RTQV9UQUdfTVhMXzg2MlhYJiMzNDssCiAgICAmIzM0O05FVF9EU0FfVEFHX01YTF9HU1cxWFgmIzM0OywKICAgICYjMzQ7TkVUX0RTQV9UQUdfS1NaJiMzNDssCiAgICAmIzM0O05FVF9EU0FfVEFHX05FVEMmIzM0OywKICAgICYjMzQ7TkVUX0RTQV9UQUdfT0NFTE9UJiMzNDssCiAgICAmIzM0O05FVF9EU0FfVEFHX09DRUxPVF84MDIxUSYjMzQ7LAogICAgJiMzNDtORVRfRFNBX1RBR19RQ0EmIzM0OywKICAgICYjMzQ7TkVUX0RTQV9UQUdfUlRMNF9BJiMzNDssCiAgICAmIzM0O05FVF9EU0FfVEFHX1JUTDhfNCYjMzQ7LAogICAgJiMzNDtORVRfRFNBX1RBR19SWk4xX0E1UFNXJiMzNDssCiAgICAmIzM0O05FVF9EU0FfVEFHX0xBTjkzMDMmIzM0OywKICAgICYjMzQ7TkVUX0RTQV9UQUdfU0pBMTEwNSYjMzQ7LAogICAgJiMzNDtORVRfRFNBX1RBR19UUkFJTEVSJiMzNDssCiAgICAmIzM0O05FVF9EU0FfVEFHX1ZTQzczWFhfODAyMVEmIzM0OywKICAgICYjMzQ7TkVUX0RTQV9UQUdfWFJTNzAwWCYjMzQ7LAogICAgJiMzNDtORVRfRFNBX1RBR19ZVDkyMVgmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtkc2Ffc3dpdGNoX3JjdiYjMzQ7LAogICAgJiMzNDtkc2FfdXNlcl94bWl0JiMzNDssCiAgICAmIzM0O2FyOTMzMV90YWdfcmN2JiMzNDssCiAgICAmIzM0O2JyY21fdGFnX3htaXRfbGwmIzM0OywKICAgICYjMzQ7YnJjbV90YWdfcmN2X2xsJiMzNDssCiAgICAmIzM0O2RzYV9yY3ZfbGwmIzM0OywKICAgICYjMzQ7ZWRzYV9yY3YmIzM0OywKICAgICYjMzQ7a3N6X2NvbW1vbl9yY3YmIzM0OywKICAgICYjMzQ7b2NlbG90X3JjdiYjMzQ7LAogICAgJiMzNDtxY2FfdGFnX3JjdiYjMzQ7LAogICAgJiMzNDtzamExMTA1X3JjdiYjMzQ7LAogICAgJiMzNDt0cmFpbGVyX3JjdiYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCByZWZhY3RvcnMgc2tiIG1lbW9yeSBtYW5hZ2VtZW50IGluIHRoZSBEU0EgKERpc3RyaWJ1dGVkIFN3aXRjaCBBcmNoaXRlY3R1cmUpIHN1YnN5c3RlbS4gSXQgc2hpZnRzIHRoZSByZXNwb25zaWJpbGl0eSBvZiBmcmVlaW5nIHRoZSBza2Igb24gZXJyb3IgcGF0aHMgZnJvbSB0aGUgY29yZSBEU0EgZnVuY3Rpb25zIChkc2FfdXNlcl94bWl0LCBkc2Ffc3dpdGNoX3JjdikgdG8gdGhlIGluZGl2aWR1YWwgdGFnZ2VyIGRyaXZlcnMuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSB0aGF0IGNvdWxkIGludHJvZHVjZSBtZW1vcnkgbGVha3Mgb3IgZG91YmxlIGZyZWVzIGlmIGFueSBlcnJvciBwYXRoIGluIGEgdGFnZ2VyIGRyaXZlciBpcyBtaXNzZWQgb3IgbWlzaGFuZGxlZC4gVGhlIGNvZGUgaXMgcmVhY2hhYmxlIGluIGEgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQgYnkgdXNpbmcgdGhlIGRzYV9sb29wIG1vY2stdXAgc3dpdGNoIGRyaXZlciBhbmQgZHluYW1pY2FsbHkgY2hhbmdpbmcgdGhlIHRhZ2dpbmcgcHJvdG9jb2wgdmlhIHN5c2ZzLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmUKaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseQp1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLgoKUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczoKLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLgotIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLgotIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4KLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsCmV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLgogICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCiAgIERvIG5vdCBsaXN0IHRvbyBnZW5lcmljIGNvbmZpZ3MgKHdlIGFscmVhZHkgaGF2ZSB0aGVtIGVuYWJsZWQpLiBPbmx5IGxpc3QgdGhvc2UgdGhhdAogICBzcGVjaWZpY2FsbHkgY292ZXIgdGhlIG1vZGlmaWVkIGNvZGUuIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncyBvdXRwdXQgYXJyYXksCiAgIGFuZCBETyBOT1QgYWRkIGEgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCA2NzRlODk5ODM3N2NjNmYxN2NiMjlmZmM2NjU1ZjkyZmMzOWExOWY3CkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIFRodSBKdW4gMjUgMDg6Mjk6MDQgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9uZXQvZHNhL3RhZy5jIGIvbmV0L2RzYS90YWcuYwppbmRleCA3OWFkMTA1OTAyZDk3OC4uOTkxNzMyZDZlYWUyYzMgMTAwNjQ0Ci0tLSBhL25ldC9kc2EvdGFnLmMKJiM0MzsmIzQzOyYjNDM7IGIvbmV0L2RzYS90YWcuYwpAQCAtNzksMTUgJiM0Mzs3OSwxNiBAQCBzdGF0aWMgaW50IGRzYV9zd2l0Y2hfcmN2KHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsCiAJCWlmIChsaWtlbHkoc2tiLSZndDtkZXYpKSB7CiAJCQlkc2FfZGVmYXVsdF9vZmZsb2FkX2Z3ZF9tYXJrKHNrYik7CiAJCQluc2tiID0gc2tiOwomIzQzOwkJfSBlbHNlIHsKJiM0MzsJCQkvKiBKdXN0IGRyb3AgdGhlIHNrYiBpZiB3ZSBjYW4mIzM5O3QgZmluZCB0aGUgdXNlciAqLwomIzQzOwkJCWtmcmVlX3NrYihza2IpOwogCQl9CiAJfSBlbHNlIHsKIAkJbnNrYiA9IGNwdV9kcC0mZ3Q7cmN2KHNrYiwgZGV2KTsKIAl9CiAKLQlpZiAoIW5za2IpIHsKLQkJa2ZyZWVfc2tiKHNrYik7CiYjNDM7CWlmICghbnNrYikKIAkJcmV0dXJuIDA7Ci0JfQogCiAJc2tiID0gbnNrYjsKIAlza2JfcHVzaChza2IsIEVUSF9ITEVOKTsKQEAgLTEwNywxMSAmIzQzOzEwOCwxMCBAQCBzdGF0aWMgaW50IGRzYV9zd2l0Y2hfcmN2KHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsCiAKIAlpZiAodW5saWtlbHkoY3B1X2RwLSZndDtkcy0mZ3Q7dW50YWdfYnJpZGdlX3B2aWQgfHwKIAkJICAgICBjcHVfZHAtJmd0O2RzLSZndDt1bnRhZ192bGFuX2F3YXJlX2JyaWRnZV9wdmlkKSkgewomIzQzOwkJLyogZHNhX3NvZnR3YXJlX3ZsYW5fdW50YWcoKSBkcm9wcyBza2Igb24gZmFpbHVyZSAqLwogCQluc2tiID0gZHNhX3NvZnR3YXJlX3ZsYW5fdW50YWcoc2tiKTsKLQkJaWYgKCFuc2tiKSB7Ci0JCQlrZnJlZV9za2Ioc2tiKTsKJiM0MzsJCWlmICghbnNrYikKIAkJCXJldHVybiAwOwotCQl9CiAJCXNrYiA9IG5za2I7CiAJfQogCmRpZmYgLS1naXQgYS9uZXQvZHNhL3RhZ19hcjkzMzEuYyBiL25ldC9kc2EvdGFnX2FyOTMzMS5jCmluZGV4IGNiYjU4OGNhNzNhYWY1Li4yZTIzODgxNDNiMDI1MSAxMDA2NDQKLS0tIGEvbmV0L2RzYS90YWdfYXI5MzMxLmMKJiM0MzsmIzQzOyYjNDM7IGIvbmV0L2RzYS90YWdfYXI5MzMxLmMKQEAgLTUxLDggJiM0Mzs1MSwxMCBAQCBzdGF0aWMgc3RydWN0IHNrX2J1ZmYgKmFyOTMzMV90YWdfcmN2KHN0cnVjdCBza19idWZmICpza2IsCiAJdTggdmVyLCBwb3J0OwogCXUxNiBoZHI7CiAKLQlpZiAodW5saWtlbHkoIXBza2JfbWF5X3B1bGwoc2tiLCBBUjkzMzFfSERSX0xFTikpKQomIzQzOwlpZiAodW5saWtlbHkoIXBza2JfbWF5X3B1bGwoc2tiLCBBUjkzMzFfSERSX0xFTikpKSB7CiYjNDM7CQlrZnJlZV9za2Ioc2tiKTsKIAkJcmV0dXJuIE5VTEw7CiYjNDM7CX0KIAogCWhkciA9IGxlMTZfdG9fY3B1KCooX19sZTE2ICopc2tiX21hY19oZWFkZXIoc2tiKSk7CiAKQEAgLTYwLDEyICYjNDM7NjIsMTQgQEAgc3RhdGljIHN0cnVjdCBza19idWZmICphcjkzMzFfdGFnX3JjdihzdHJ1Y3Qgc2tfYnVmZiAqc2tiLAogCWlmICh1bmxpa2VseSh2ZXIgIT0gQVI5MzMxX0hEUl9WRVJTSU9OKSkgewogCQluZXRkZXZfd2Fybl9vbmNlKG5kZXYsICYjMzQ7JXM6JWkgd3JvbmcgaGVhZGVyIHZlcnNpb24gMHglMnhcbiYjMzQ7LAogCQkJCSBfX2Z1bmNfXywgX19MSU5FX18sIGhkcik7CiYjNDM7CQlrZnJlZV9za2Ioc2tiKTsKIAkJcmV0dXJuIE5VTEw7CiAJfQogCiAJaWYgKHVubGlrZWx5KGhkciAmYW1wOyBBUjkzMzFfSERSX0ZST01fQ1BVKSkgewogCQluZXRkZXZfd2Fybl9vbmNlKG5kZXYsICYjMzQ7JXM6JWkgcGFja2V0IHNob3VsZCBub3QgYmUgZnJvbSBjcHUgMHglMnhcbiYjMzQ7LAogCQkJCSBfX2Z1bmNfXywgX19MSU5FX18sIGhkcik7CiYjNDM7CQlrZnJlZV9za2Ioc2tiKTsKIAkJcmV0dXJuIE5VTEw7CiAJfQogCkBAIC03NSw4ICYjNDM7NzksMTAgQEAgc3RhdGljIHN0cnVjdCBza19idWZmICphcjkzMzFfdGFnX3JjdihzdHJ1Y3Qgc2tfYnVmZiAqc2tiLAogCXBvcnQgPSBGSUVMRF9HRVQoQVI5MzMxX0hEUl9QT1JUX05VTV9NQVNLLCBoZHIpOwogCiAJc2tiLSZndDtkZXYgPSBkc2FfY29uZHVpdF9maW5kX3VzZXIobmRldiwgMCwgcG9ydCk7Ci0JaWYgKCFza2ItJmd0O2RldikKJiM0MzsJaWYgKCFza2ItJmd0O2RldikgewomIzQzOwkJa2ZyZWVfc2tiKHNrYik7CiAJCXJldHVybiBOVUxMOwomIzQzOwl9CiAKIAlyZXR1cm4gc2tiOwogfQpkaWZmIC0tZ2l0IGEvbmV0L2RzYS90YWdfYnJjbS5jIGIvbmV0L2RzYS90YWdfYnJjbS5jCmluZGV4IGNmOTQyMDQzOTA1NDNmLi40MTFlM2I1N2QxNmFmNSAxMDA2NDQKLS0tIGEvbmV0L2RzYS90YWdfYnJjbS5jCiYjNDM7JiM0MzsmIzQzOyBiL25ldC9kc2EvdGFnX2JyY20uYwpAQCAtMTAyLDkgJiM0MzsxMDIsOSBAQCBzdGF0aWMgc3RydWN0IHNrX2J1ZmYgKmJyY21fdGFnX3htaXRfbGwoc3RydWN0IHNrX2J1ZmYgKnNrYiwKIAkgKiAoaW5jbHVkaW5nIEZDUyBhbmQgdGFnKSBiZWNhdXNlIHRoZSBsZW5ndGggdmVyaWZpY2F0aW9uIGlzIGRvbmUgYWZ0ZXIKIAkgKiB0aGUgQnJvYWRjb20gdGFnIGlzIHN0cmlwcGVkIG9mZiB0aGUgaW5ncmVzcyBwYWNrZXQuCiAJICoKLQkgKiBMZXQgZHNhX3VzZXJfeG1pdCgpIGZyZWUgdGhlIFNLQgomIzQzOwkgKiBGcmVlIHRoZSBTS0Igb24gZXJyb3IuCiAJICovCi0JaWYgKF9fc2tiX3B1dF9wYWR0byhza2IsIEVUSF9aTEVOICYjNDM7IEJSQ01fVEFHX0xFTiwgZmFsc2UpKQomIzQzOwlpZiAoc2tiX3B1dF9wYWR0byhza2IsIEVUSF9aTEVOICYjNDM7IEJSQ01fVEFHX0xFTikpCiAJCXJldHVybiBOVUxMOwogCiAJc2tiX3B1c2goc2tiLCBCUkNNX1RBR19MRU4pOwpAQCAtMTUxLDI3ICYjNDM7MTUxLDM1IEBAIHN0YXRpYyBzdHJ1Y3Qgc2tfYnVmZiAqYnJjbV90YWdfcmN2X2xsKHN0cnVjdCBza19idWZmICpza2IsCiAJaW50IHNvdXJjZV9wb3J0OwogCXU4ICpicmNtX3RhZzsKIAotCWlmICh1bmxpa2VseSghcHNrYl9tYXlfcHVsbChza2IsIEJSQ01fVEFHX0xFTikpKQomIzQzOwlpZiAodW5saWtlbHkoIXBza2JfbWF5X3B1bGwoc2tiLCBCUkNNX1RBR19MRU4pKSkgewomIzQzOwkJa2ZyZWVfc2tiKHNrYik7CiAJCXJldHVybiBOVUxMOwomIzQzOwl9CiAKIAlicmNtX3RhZyA9IHNrYi0mZ3Q7ZGF0YSAtIG9mZnNldDsKIAogCS8qIFRoZSBvcGNvZGUgc2hvdWxkIG5ldmVyIGJlIGRpZmZlcmVudCB0aGFuIDBiMDAwICovCi0JaWYgKHVubGlrZWx5KChicmNtX3RhZ1swXSAmZ3Q7Jmd0OyBCUkNNX09QQ09ERV9TSElGVCkgJmFtcDsgQlJDTV9PUENPREVfTUFTSykpCiYjNDM7CWlmICh1bmxpa2VseSgoYnJjbV90YWdbMF0gJmd0OyZndDsgQlJDTV9PUENPREVfU0hJRlQpICZhbXA7IEJSQ01fT1BDT0RFX01BU0spKSB7CiYjNDM7CQlrZnJlZV9za2Ioc2tiKTsKIAkJcmV0dXJuIE5VTEw7CiYjNDM7CX0KIAogCS8qIFdlIHNob3VsZCBuZXZlciBzZWUgYSByZXNlcnZlZCByZWFzb24gY29kZSB3aXRob3V0IGtub3dpbmcgaG93IHRvCiAJICogaGFuZGxlIGl0CiAJICovCi0JaWYgKHVubGlrZWx5KGJyY21fdGFnWzJdICZhbXA7IEJSQ01fRUdfUkNfUlNWRCkpCiYjNDM7CWlmICh1bmxpa2VseShicmNtX3RhZ1syXSAmYW1wOyBCUkNNX0VHX1JDX1JTVkQpKSB7CiYjNDM7CQlrZnJlZV9za2Ioc2tiKTsKIAkJcmV0dXJuIE5VTEw7CiYjNDM7CX0KIAogCS8qIExvY2F0ZSB3aGljaCBwb3J0IHRoaXMgaXMgY29taW5nIGZyb20gKi8KIAlzb3VyY2VfcG9ydCA9IGJyY21fdGFnWzNdICZhbXA7IEJSQ01fRUdfUElEX01BU0s7CiAKIAlza2ItJmd0O2RldiA9IGRzYV9jb25kdWl0X2ZpbmRfdXNlcihkZXYsIDAsIHNvdXJjZV9wb3J0KTsKLQlpZiAoIXNrYi0mZ3Q7ZGV2KQomIzQzOwlpZiAoIXNrYi0mZ3Q7ZGV2KSB7CiYjNDM7CQlrZnJlZV9za2Ioc2tiKTsKIAkJcmV0dXJuIE5VTEw7CiYjNDM7CX0KIAogCS8qIFJlbW92ZSBCcm9hZGNvbSB0YWcgYW5kIHVwZGF0ZSBjaGVja3N1bSAqLwogCXNrYl9wdWxsX3Jjc3VtKHNrYiwgQlJDTV9UQUdfTEVOKTsKQEAgLTIyOCw4ICYjNDM7MjM2LDEwIEBAIHN0YXRpYyBzdHJ1Y3Qgc2tfYnVmZiAqYnJjbV9sZWdfdGFnX3JjdihzdHJ1Y3Qgc2tfYnVmZiAqc2tiLAogCV9fYmUxNiAqcHJvdG87CiAJdTggKmJyY21fdGFnOwogCi0JaWYgKHVubGlrZWx5KCFwc2tiX21heV9wdWxsKHNrYiwgQlJDTV9MRUdfVEFHX0xFTiAmIzQzOyBWTEFOX0hMRU4pKSkKJiM0MzsJaWYgKHVubGlrZWx5KCFwc2tiX21heV9wdWxsKHNrYiwgQlJDTV9MRUdfVEFHX0xFTiAmIzQzOyBWTEFOX0hMRU4pKSkgewomIzQzOwkJa2ZyZWVfc2tiKHNrYik7CiAJCXJldHVybiBOVUxMOwomIzQzOwl9CiAKIAlicmNtX3RhZyA9IGRzYV9ldHlwZV9oZWFkZXJfcG9zX3J4KHNrYik7CiAJcHJvdG8gPSAoX19iZTE2ICopKGJyY21fdGFnICYjNDM7IEJSQ01fTEVHX1RBR19MRU4pOwpAQCAtMjM3LDggJiM0MzsyNDcsMTAgQEAgc3RhdGljIHN0cnVjdCBza19idWZmICpicmNtX2xlZ190YWdfcmN2KHN0cnVjdCBza19idWZmICpza2IsCiAJc291cmNlX3BvcnQgPSBicmNtX3RhZ1s1XSAmYW1wOyBCUkNNX0xFR19QT1JUX0lEOwogCiAJc2tiLSZndDtkZXYgPSBkc2FfY29uZHVpdF9maW5kX3VzZXIoZGV2LCAwLCBzb3VyY2VfcG9ydCk7Ci0JaWYgKCFza2ItJmd0O2RldikKJiM0MzsJaWYgKCFza2ItJmd0O2RldikgewomIzQzOwkJa2ZyZWVfc2tiKHNrYik7CiAJCXJldHVybiBOVUxMOwomIzQzOwl9CiAKIAkvKiBUaGUgaW50ZXJuYWwgc3dpdGNoIGluIEJDTTYzWFggU29DcyBhbHdheXMgdGFncyBvbiBlZ3Jlc3Mgb24gdGhlIENQVQogCSAqIHBvcnQuIFdlIHVzZSBWSUQgMCBpbnRlcm5hbGx5IGZvciB1bnRhZ2dlZCB0cmFmZmljLCBzbyBzdHJpcCB0aGUgdGFnCkBAIC0yNzMsMTAgJiM0MzsyODUsOCBAQCBzdGF0aWMgc3RydWN0IHNrX2J1ZmYgKmJyY21fbGVnX3RhZ194bWl0KHN0cnVjdCBza19idWZmICpza2IsCiAJICogbmVlZCB0byBtYWtlIHN1cmUgdGhhdCBwYWNrZXRzIGFyZSBhdCBsZWFzdCA3MCBieXRlcwogCSAqIChpbmNsdWRpbmcgRkNTIGFuZCB0YWcpIGJlY2F1c2UgdGhlIGxlbmd0aCB2ZXJpZmljYXRpb24gaXMgZG9uZSBhZnRlcgogCSAqIHRoZSBCcm9hZGNvbSB0YWcgaXMgc3RyaXBwZWQgb2ZmIHRoZSBpbmdyZXNzIHBhY2tldC4KLQkgKgotCSAqIExldCBkc2FfdXNlcl94bWl0KCkgZnJlZSB0aGUgU0tCCiAJICovCi0JaWYgKF9fc2tiX3B1dF9wYWR0byhza2IsIEVUSF9aTEVOICYjNDM7IEJSQ01fTEVHX1RBR19MRU4sIGZhbHNlKSkKJiM0MzsJaWYgKHNrYl9wdXRfcGFkdG8oc2tiLCBFVEhfWkxFTiAmIzQzOyBCUkNNX0xFR19UQUdfTEVOKSkKIAkJcmV0dXJuIE5VTEw7CiAKIAlza2JfcHVzaChza2IsIEJSQ01fTEVHX1RBR19MRU4pOwpAQCAtMzI1LDEwICYjNDM7MzM1LDggQEAgc3RhdGljIHN0cnVjdCBza19idWZmICpicmNtX2xlZ19mY3NfdGFnX3htaXQoc3RydWN0IHNrX2J1ZmYgKnNrYiwKIAkgKiBuZWVkIHRvIG1ha2Ugc3VyZSB0aGF0IHBhY2tldHMgYXJlIGF0IGxlYXN0IDcwIGJ5dGVzIChpbmNsdWRpbmcgRkNTCiAJICogYW5kIHRhZykgYmVjYXVzZSB0aGUgbGVuZ3RoIHZlcmlmaWNhdGlvbiBpcyBkb25lIGFmdGVyIHRoZSBCcm9hZGNvbQogCSAqIHRhZyBpcyBzdHJpcHBlZCBvZmYgdGhlIGluZ3Jlc3MgcGFja2V0LgotCSAqCi0JICogTGV0IGRzYV91c2VyX3htaXQoKSBmcmVlIHRoZSBTS0IuCiAJICovCi0JaWYgKF9fc2tiX3B1dF9wYWR0byhza2IsIEVUSF9aTEVOICYjNDM7IEJSQ01fTEVHX1RBR19MRU4sIGZhbHNlKSkKJiM0MzsJaWYgKHNrYl9wdXRfcGFkdG8oc2tiLCBFVEhfWkxFTiAmIzQzOyBCUkNNX0xFR19UQUdfTEVOKSkKIAkJcmV0dXJuIE5VTEw7CiAKIAlmY3NfbGVuID0gc2tiLSZndDtsZW47CkBAIC0zNTEsOCAmIzQzOzM1OSw5IEBAIHN0YXRpYyBzdHJ1Y3Qgc2tfYnVmZiAqYnJjbV9sZWdfZmNzX3RhZ194bWl0KHN0cnVjdCBza19idWZmICpza2IsCiAJYnJjbV90YWdbNV0gPSBkcC0mZ3Q7aW5kZXggJmFtcDsgQlJDTV9MRUdfUE9SVF9JRDsKIAogCS8qIE9yaWdpbmFsIEZDUyB2YWx1ZSAqLwotCWlmIChfX3NrYl9wYWQoc2tiLCBFVEhfRkNTX0xFTiwgZmFsc2UpKQomIzQzOwlpZiAoc2tiX3BhZChza2IsIEVUSF9GQ1NfTEVOKSkKIAkJcmV0dXJuIE5VTEw7CiYjNDM7CiAJc2tiX3B1dF9kYXRhKHNrYiwgJmFtcDtmY3NfdmFsLCBFVEhfRkNTX0xFTik7CiAKIAlyZXR1cm4gc2tiOwpkaWZmIC0tZ2l0IGEvbmV0L2RzYS90YWdfZHNhLmMgYi9uZXQvZHNhL3RhZ19kc2EuYwppbmRleCAyYTJjNGZiNjFhNjVjNi4uZDVmZmVlMzVmYmI1M2IgMTAwNjQ0Ci0tLSBhL25ldC9kc2EvdGFnX2RzYS5jCiYjNDM7JiM0MzsmIzQzOyBiL25ldC9kc2EvdGFnX2RzYS5jCkBAIC0yMjQsNiAmIzQzOzIyNCw3IEBAIHN0YXRpYyBzdHJ1Y3Qgc2tfYnVmZiAqZHNhX3Jjdl9sbChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LAogCQkJLyogUmVtb3RlIG1hbmFnZW1lbnQgaXMgbm90IGltcGxlbWVudGVkIHlldCwKIAkJCSAqIGRyb3AuCiAJCQkgKi8KJiM0MzsJCQlrZnJlZV9za2Ioc2tiKTsKIAkJCXJldHVybiBOVUxMOwogCQljYXNlIERTQV9DT0RFX0FSUF9NSVJST1I6CiAJCWNhc2UgRFNBX0NPREVfUE9MSUNZX01JUlJPUjoKQEAgLTI0NCwxMiAmIzQzOzI0NSwxNCBAQCBzdGF0aWMgc3RydWN0IHNrX2J1ZmYgKmRzYV9yY3ZfbGwoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IG5ldF9kZXZpY2UgKmRldiwKIAkJCS8qIFJlc2VydmVkIGNvZGUsIHRoaXMgY291bGQgYmUgYW55dGhpbmcuIERyb3AKIAkJCSAqIHNlZW1zIGxpa2UgdGhlIHNhZmVzdCBvcHRpb24uCiAJCQkgKi8KJiM0MzsJCQlrZnJlZV9za2Ioc2tiKTsKIAkJCXJldHVybiBOVUxMOwogCQl9CiAKIAkJYnJlYWs7CiAKIAlkZWZhdWx0OgomIzQzOwkJa2ZyZWVfc2tiKHNrYik7CiAJCXJldHVybiBOVUxMOwogCX0KIApAQCAtMjcxLDggJiM0MzsyNzQsMTAgQEAgc3RhdGljIHN0cnVjdCBza19idWZmICpkc2FfcmN2X2xsKHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsCiAJCQkJCQkgc291cmNlX3BvcnQpOwogCX0KIAotCWlmICghc2tiLSZndDtkZXYpCiYjNDM7CWlmICghc2tiLSZndDtkZXYpIHsKJiM0MzsJCWtmcmVlX3NrYihza2IpOwogCQlyZXR1cm4gTlVMTDsKJiM0MzsJfQogCiAJLyogV2hlbiB1c2luZyBMQUcgb2ZmbG9hZCwgc2tiLSZndDtkZXYgaXMgbm90IGEgRFNBIHVzZXIgaW50ZXJmYWNlLAogCSAqIHNvIHdlIGNhbm5vdCBjYWxsIGRzYV9kZWZhdWx0X29mZmxvYWRfZndkX21hcmsgYW5kIHdlIG5lZWQgdG8KQEAgLTMzNSw4ICYjNDM7MzQwLDEwIEBAIHN0YXRpYyBzdHJ1Y3Qgc2tfYnVmZiAqZHNhX3htaXQoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IG5ldF9kZXZpY2UgKmRldikKIAogc3RhdGljIHN0cnVjdCBza19idWZmICpkc2FfcmN2KHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpCiB7Ci0JaWYgKHVubGlrZWx5KCFwc2tiX21heV9wdWxsKHNrYiwgRFNBX0hMRU4pKSkKJiM0MzsJaWYgKHVubGlrZWx5KCFwc2tiX21heV9wdWxsKHNrYiwgRFNBX0hMRU4pKSkgewomIzQzOwkJa2ZyZWVfc2tiKHNrYik7CiAJCXJldHVybiBOVUxMOwomIzQzOwl9CiAKIAlyZXR1cm4gZHNhX3Jjdl9sbChza2IsIGRldiwgMCk7CiB9CkBAIC0zNzUsOCAmIzQzOzM4MiwxMCBAQCBzdGF0aWMgc3RydWN0IHNrX2J1ZmYgKmVkc2FfeG1pdChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KQogCiBzdGF0aWMgc3RydWN0IHNrX2J1ZmYgKmVkc2FfcmN2KHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpCiB7Ci0JaWYgKHVubGlrZWx5KCFwc2tiX21heV9wdWxsKHNrYiwgRURTQV9ITEVOKSkpCiYjNDM7CWlmICh1bmxpa2VseSghcHNrYl9tYXlfcHVsbChza2IsIEVEU0FfSExFTikpKSB7CiYjNDM7CQlrZnJlZV9za2Ioc2tiKTsKIAkJcmV0dXJuIE5VTEw7CiYjNDM7CX0KIAogCXNrYl9wdWxsX3Jjc3VtKHNrYiwgRURTQV9ITEVOIC0gRFNBX0hMRU4pOwogCmRpZmYgLS1naXQgYS9uZXQvZHNhL3RhZ19nc3dpcC5jIGIvbmV0L2RzYS90YWdfZ3N3aXAuYwppbmRleCA1ZmE0MzYxMjEwODdiNC4uNWM0MDdkNDQ4YzlmZWUgMTAwNjQ0Ci0tLSBhL25ldC9kc2EvdGFnX2dzd2lwLmMKJiM0MzsmIzQzOyYjNDM7IGIvbmV0L2RzYS90YWdfZ3N3aXAuYwpAQCAtODAsMTYgJiM0Mzs4MCwyMCBAQCBzdGF0aWMgc3RydWN0IHNrX2J1ZmYgKmdzd2lwX3RhZ19yY3Yoc3RydWN0IHNrX2J1ZmYgKnNrYiwKIAlpbnQgcG9ydDsKIAl1OCAqZ3N3aXBfdGFnOwogCi0JaWYgKHVubGlrZWx5KCFwc2tiX21heV9wdWxsKHNrYiwgR1NXSVBfUlhfSEVBREVSX0xFTikpKQomIzQzOwlpZiAodW5saWtlbHkoIXBza2JfbWF5X3B1bGwoc2tiLCBHU1dJUF9SWF9IRUFERVJfTEVOKSkpIHsKJiM0MzsJCWtmcmVlX3NrYihza2IpOwogCQlyZXR1cm4gTlVMTDsKJiM0MzsJfQogCiAJZ3N3aXBfdGFnID0gc2tiLSZndDtkYXRhIC0gRVRIX0hMRU47CiAKIAkvKiBHZXQgc291cmNlIHBvcnQgaW5mb3JtYXRpb24gKi8KIAlwb3J0ID0gKGdzd2lwX3RhZ1s3XSAmYW1wOyBHU1dJUF9SWF9TUFBJRF9NQVNLKSAmZ3Q7Jmd0OyBHU1dJUF9SWF9TUFBJRF9TSElGVDsKIAlza2ItJmd0O2RldiA9IGRzYV9jb25kdWl0X2ZpbmRfdXNlcihkZXYsIDAsIHBvcnQpOwotCWlmICghc2tiLSZndDtkZXYpCiYjNDM7CWlmICghc2tiLSZndDtkZXYpIHsKJiM0MzsJCWtmcmVlX3NrYihza2IpOwogCQlyZXR1cm4gTlVMTDsKJiM0MzsJfQogCiAJLyogcmVtb3ZlIEdTV0lQIHRhZyAqLwogCXNrYl9wdWxsX3Jjc3VtKHNrYiwgR1NXSVBfUlhfSEVBREVSX0xFTik7CmRpZmYgLS1naXQgYS9uZXQvZHNhL3RhZ19oZWxsY3JlZWsuYyBiL25ldC9kc2EvdGFnX2hlbGxjcmVlay5jCmluZGV4IDU0NGFiMTU2ODVhMmI4Li5kZDlmMzI4ZjMxODIxMCAxMDA2NDQKLS0tIGEvbmV0L2RzYS90YWdfaGVsbGNyZWVrLmMKJiM0MzsmIzQzOyYjNDM7IGIvbmV0L2RzYS90YWdfaGVsbGNyZWVrLmMKQEAgLTI3LDggJiM0MzsyNywxMCBAQCBzdGF0aWMgc3RydWN0IHNrX2J1ZmYgKmhlbGxjcmVla194bWl0KHN0cnVjdCBza19idWZmICpza2IsCiAJICogY2hlY2tzdW1zIGFmdGVyIHRoZSBzd2l0Y2ggc3RyaXBzIHRoZSB0YWcuCiAJICovCiAJaWYgKHNrYi0mZ3Q7aXBfc3VtbWVkID09IENIRUNLU1VNX1BBUlRJQUwgJmFtcDsmYW1wOwotCSAgICBza2JfY2hlY2tzdW1faGVscChza2IpKQomIzQzOwkgICAgc2tiX2NoZWNrc3VtX2hlbHAoc2tiKSkgewomIzQzOwkJa2ZyZWVfc2tiKHNrYik7CiAJCXJldHVybiBOVUxMOwomIzQzOwl9CiAKIAkvKiBUYWcgZW5jb2RpbmcgKi8KIAl0YWcgID0gc2tiX3B1dChza2IsIEhFTExDUkVFS19UQUdfTEVOKTsKQEAgLTQ3LDExICYjNDM7NDksMTQgQEAgc3RhdGljIHN0cnVjdCBza19idWZmICpoZWxsY3JlZWtfcmN2KHN0cnVjdCBza19idWZmICpza2IsCiAJc2tiLSZndDtkZXYgPSBkc2FfY29uZHVpdF9maW5kX3VzZXIoZGV2LCAwLCBwb3J0KTsKIAlpZiAoIXNrYi0mZ3Q7ZGV2KSB7CiAJCW5ldGRldl93YXJuX29uY2UoZGV2LCAmIzM0O0ZhaWxlZCB0byBnZXQgc291cmNlIHBvcnQ6ICVkXG4mIzM0OywgcG9ydCk7CiYjNDM7CQlrZnJlZV9za2Ioc2tiKTsKIAkJcmV0dXJuIE5VTEw7CiAJfQogCi0JaWYgKHBza2JfdHJpbV9yY3N1bShza2IsIHNrYi0mZ3Q7bGVuIC0gSEVMTENSRUVLX1RBR19MRU4pKQomIzQzOwlpZiAocHNrYl90cmltX3Jjc3VtKHNrYiwgc2tiLSZndDtsZW4gLSBIRUxMQ1JFRUtfVEFHX0xFTikpIHsKJiM0MzsJCWtmcmVlX3NrYihza2IpOwogCQlyZXR1cm4gTlVMTDsKJiM0MzsJfQogCiAJZHNhX2RlZmF1bHRfb2ZmbG9hZF9md2RfbWFyayhza2IpOwogCmRpZmYgLS1naXQgYS9uZXQvZHNhL3RhZ19rc3ouYyBiL25ldC9kc2EvdGFnX2tzei5jCmluZGV4IGQyNDc1YzNiYmI3ZDIyLi42N2ZhODlmMTAyZTA3MCAxMDA2NDQKLS0tIGEvbmV0L2RzYS90YWdfa3N6LmMKJiM0MzsmIzQzOyYjNDM7IGIvbmV0L2RzYS90YWdfa3N6LmMKQEAgLTg4LDExICYjNDM7ODgsMTUgQEAgc3RhdGljIHN0cnVjdCBza19idWZmICprc3pfY29tbW9uX3JjdihzdHJ1Y3Qgc2tfYnVmZiAqc2tiLAogCQkJCSAgICAgIHVuc2lnbmVkIGludCBwb3J0LCB1bnNpZ25lZCBpbnQgbGVuKQogewogCXNrYi0mZ3Q7ZGV2ID0gZHNhX2NvbmR1aXRfZmluZF91c2VyKGRldiwgMCwgcG9ydCk7Ci0JaWYgKCFza2ItJmd0O2RldikKJiM0MzsJaWYgKCFza2ItJmd0O2RldikgewomIzQzOwkJa2ZyZWVfc2tiKHNrYik7CiAJCXJldHVybiBOVUxMOwomIzQzOwl9CiAKLQlpZiAocHNrYl90cmltX3Jjc3VtKHNrYiwgc2tiLSZndDtsZW4gLSBsZW4pKQomIzQzOwlpZiAocHNrYl90cmltX3Jjc3VtKHNrYiwgc2tiLSZndDtsZW4gLSBsZW4pKSB7CiYjNDM7CQlrZnJlZV9za2Ioc2tiKTsKIAkJcmV0dXJuIE5VTEw7CiYjNDM7CX0KIAogCWRzYV9kZWZhdWx0X29mZmxvYWRfZndkX21hcmsoc2tiKTsKIApAQCAtMTIzLDggJiM0MzsxMjcsMTAgQEAgc3RhdGljIHN0cnVjdCBza19idWZmICprc3o4Nzk1X3htaXQoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IG5ldF9kZXZpY2UgKmRldikKIAlzdHJ1Y3QgZXRoaGRyICpoZHI7CiAJdTggKnRhZzsKIAotCWlmIChza2ItJmd0O2lwX3N1bW1lZCA9PSBDSEVDS1NVTV9QQVJUSUFMICZhbXA7JmFtcDsgc2tiX2NoZWNrc3VtX2hlbHAoc2tiKSkKJiM0MzsJaWYgKHNrYi0mZ3Q7aXBfc3VtbWVkID09IENIRUNLU1VNX1BBUlRJQUwgJmFtcDsmYW1wOyBza2JfY2hlY2tzdW1faGVscChza2IpKSB7CiYjNDM7CQlrZnJlZV9za2Ioc2tiKTsKIAkJcmV0dXJuIE5VTEw7CiYjNDM7CX0KIAogCS8qIFRhZyBlbmNvZGluZyAqLwogCXRhZyA9IHNrYl9wdXQoc2tiLCBLU1pfSU5HUkVTU19UQUdfTEVOKTsKQEAgLTE0MSw4ICYjNDM7MTQ3LDEwIEBAIHN0YXRpYyBzdHJ1Y3Qgc2tfYnVmZiAqa3N6ODc5NV9yY3Yoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IG5ldF9kZXZpY2UgKmRldikKIHsKIAl1OCAqdGFnOwogCi0JaWYgKHNrYl9saW5lYXJpemUoc2tiKSkKJiM0MzsJaWYgKHNrYl9saW5lYXJpemUoc2tiKSkgewomIzQzOwkJa2ZyZWVfc2tiKHNrYik7CiAJCXJldHVybiBOVUxMOwomIzQzOwl9CiAKIAl0YWcgPSBza2JfdGFpbF9wb2ludGVyKHNrYikgLSBLU1pfRUdSRVNTX1RBR19MRU47CiAKQEAgLTI1NSwyMiAmIzQzOzI2MywyNCBAQCBzdGF0aWMgc3RydWN0IHNrX2J1ZmYgKmtzel9kZWZlcl94bWl0KHN0cnVjdCBkc2FfcG9ydCAqZHAsIHN0cnVjdCBza19idWZmICpza2IpCiAJeG1pdF93b3JrX2ZuID0gdGFnZ2VyX2RhdGEtJmd0O3htaXRfd29ya19mbjsKIAl4bWl0X3dvcmtlciA9IHByaXYtJmd0O3htaXRfd29ya2VyOwogCi0JaWYgKCF4bWl0X3dvcmtfZm4gfHwgIXhtaXRfd29ya2VyKQomIzQzOwlpZiAoIXhtaXRfd29ya19mbiB8fCAheG1pdF93b3JrZXIpIHsKJiM0MzsJCWtmcmVlX3NrYihza2IpOwogCQlyZXR1cm4gTlVMTDsKJiM0MzsJfQogCiAJeG1pdF93b3JrID0ga3phbGxvY19vYmooKnhtaXRfd29yaywgR0ZQX0FUT01JQyk7Ci0JaWYgKCF4bWl0X3dvcmspCiYjNDM7CWlmICgheG1pdF93b3JrKSB7CiYjNDM7CQlrZnJlZV9za2Ioc2tiKTsKIAkJcmV0dXJuIE5VTEw7CiYjNDM7CX0KIAogCWt0aHJlYWRfaW5pdF93b3JrKCZhbXA7eG1pdF93b3JrLSZndDt3b3JrLCB4bWl0X3dvcmtfZm4pOwotCS8qIEluY3JlYXNlIHJlZmNvdW50IHNvIHRoZSBrZnJlZV9za2IgaW4gZHNhX3VzZXJfeG1pdAotCSAqIHdvbiYjMzk7dCByZWFsbHkgZnJlZSB0aGUgcGFja2V0LgotCSAqLwogCXhtaXRfd29yay0mZ3Q7ZHAgPSBkcDsKIAl4bWl0X3dvcmstJmd0O3NrYiA9IHNrYl9nZXQoc2tiKTsKIAogCWt0aHJlYWRfcXVldWVfd29yayh4bWl0X3dvcmtlciwgJmFtcDt4bWl0X3dvcmstJmd0O3dvcmspOwogCiYjNDM7CWtmcmVlX3NrYihza2IpOwogCXJldHVybiBOVUxMOwogfQogCkBAIC0yODQsOCAmIzQzOzI5NCwxMCBAQCBzdGF0aWMgc3RydWN0IHNrX2J1ZmYgKmtzejk0NzdfeG1pdChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLAogCV9fYmUxNiAqdGFnOwogCXUxNiB2YWw7CiAKLQlpZiAoc2tiLSZndDtpcF9zdW1tZWQgPT0gQ0hFQ0tTVU1fUEFSVElBTCAmYW1wOyZhbXA7IHNrYl9jaGVja3N1bV9oZWxwKHNrYikpCiYjNDM7CWlmIChza2ItJmd0O2lwX3N1bW1lZCA9PSBDSEVDS1NVTV9QQVJUSUFMICZhbXA7JmFtcDsgc2tiX2NoZWNrc3VtX2hlbHAoc2tiKSkgewomIzQzOwkJa2ZyZWVfc2tiKHNrYik7CiAJCXJldHVybiBOVUxMOwomIzQzOwl9CiAKIAkvKiBUYWcgZW5jb2RpbmcgKi8KIAlrc3pfeG1pdF90aW1lc3RhbXAoZHAsIHNrYik7CkBAIC0zMTAsOCAmIzQzOzMyMiwxMCBAQCBzdGF0aWMgc3RydWN0IHNrX2J1ZmYgKmtzejk0NzdfcmN2KHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpCiAJdW5zaWduZWQgaW50IHBvcnQ7CiAJdTggKnRhZzsKIAotCWlmIChza2JfbGluZWFyaXplKHNrYikpCiYjNDM7CWlmIChza2JfbGluZWFyaXplKHNrYikpIHsKJiM0MzsJCWtmcmVlX3NrYihza2IpOwogCQlyZXR1cm4gTlVMTDsKJiM0MzsJfQogCiAJLyogVGFnIGRlY29kaW5nICovCiAJdGFnID0gc2tiX3RhaWxfcG9pbnRlcihza2IpIC0gS1NaX0VHUkVTU19UQUdfTEVOOwpAQCAtMzUyLDggJiM0MzszNjYsMTAgQEAgc3RhdGljIHN0cnVjdCBza19idWZmICprc3o5ODkzX3htaXQoc3RydWN0IHNrX2J1ZmYgKnNrYiwKIAlzdHJ1Y3QgZXRoaGRyICpoZHI7CiAJdTggKnRhZzsKIAotCWlmIChza2ItJmd0O2lwX3N1bW1lZCA9PSBDSEVDS1NVTV9QQVJUSUFMICZhbXA7JmFtcDsgc2tiX2NoZWNrc3VtX2hlbHAoc2tiKSkKJiM0MzsJaWYgKHNrYi0mZ3Q7aXBfc3VtbWVkID09IENIRUNLU1VNX1BBUlRJQUwgJmFtcDsmYW1wOyBza2JfY2hlY2tzdW1faGVscChza2IpKSB7CiYjNDM7CQlrZnJlZV9za2Ioc2tiKTsKIAkJcmV0dXJuIE5VTEw7CiYjNDM7CX0KIAogCS8qIFRhZyBlbmNvZGluZyAqLwogCWtzel94bWl0X3RpbWVzdGFtcChkcCwgc2tiKTsKQEAgLTQxOCw4ICYjNDM7NDM0LDEwIEBAIHN0YXRpYyBzdHJ1Y3Qgc2tfYnVmZiAqbGFuOTM3eF94bWl0KHN0cnVjdCBza19idWZmICpza2IsCiAJX19iZTE2ICp0YWc7CiAJdTE2IHZhbDsKIAotCWlmIChza2ItJmd0O2lwX3N1bW1lZCA9PSBDSEVDS1NVTV9QQVJUSUFMICZhbXA7JmFtcDsgc2tiX2NoZWNrc3VtX2hlbHAoc2tiKSkKJiM0MzsJaWYgKHNrYi0mZ3Q7aXBfc3VtbWVkID09IENIRUNLU1VNX1BBUlRJQUwgJmFtcDsmYW1wOyBza2JfY2hlY2tzdW1faGVscChza2IpKSB7CiYjNDM7CQlrZnJlZV9za2Ioc2tiKTsKIAkJcmV0dXJuIE5VTEw7CiYjNDM7CX0KIAogCWtzel94bWl0X3RpbWVzdGFtcChkcCwgc2tiKTsKIApkaWZmIC0tZ2l0IGEvbmV0L2RzYS90YWdfbGFuOTMwMy5jIGIvbmV0L2RzYS90YWdfbGFuOTMwMy5jCmluZGV4IDI1OGU1ZDdkYzVlZjg0Li5kMTE5NDY5NjQ5OWFiOCAxMDA2NDQKLS0tIGEvbmV0L2RzYS90YWdfbGFuOTMwMy5jCiYjNDM7JiM0MzsmIzQzOyBiL25ldC9kc2EvdGFnX2xhbjkzMDMuYwpAQCAtODUsNiAmIzQzOzg1LDcgQEAgc3RhdGljIHN0cnVjdCBza19idWZmICpsYW45MzAzX3JjdihzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KQogCWlmICh1bmxpa2VseSghcHNrYl9tYXlfcHVsbChza2IsIExBTjkzMDNfVEFHX0xFTikpKSB7CiAJCWRldl93YXJuX3JhdGVsaW1pdGVkKCZhbXA7ZGV2LSZndDtkZXYsCiAJCQkJICAgICAmIzM0O0Ryb3BwaW5nIHBhY2tldCwgY2Fubm90IHB1bGxcbiYjMzQ7KTsKJiM0MzsJCWtmcmVlX3NrYihza2IpOwogCQlyZXR1cm4gTlVMTDsKIAl9CiAKQEAgLTEwMiw2ICYjNDM7MTAzLDcgQEAgc3RhdGljIHN0cnVjdCBza19idWZmICpsYW45MzAzX3JjdihzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KQogCXNrYi0mZ3Q7ZGV2ID0gZHNhX2NvbmR1aXRfZmluZF91c2VyKGRldiwgMCwgc291cmNlX3BvcnQpOwogCWlmICghc2tiLSZndDtkZXYpIHsKIAkJZGV2X3dhcm5fcmF0ZWxpbWl0ZWQoJmFtcDtkZXYtJmd0O2RldiwgJiMzNDtEcm9wcGluZyBwYWNrZXQgZHVlIHRvIGludmFsaWQgc291cmNlIHBvcnRcbiYjMzQ7KTsKJiM0MzsJCWtmcmVlX3NrYihza2IpOwogCQlyZXR1cm4gTlVMTDsKIAl9CiAKZGlmZiAtLWdpdCBhL25ldC9kc2EvdGFnX210ay5jIGIvbmV0L2RzYS90YWdfbXRrLmMKaW5kZXggZGVhM2VlY2FmMDkzZGYuLmM3ZGM3NzMxNjc1ZWMwIDEwMDY0NAotLS0gYS9uZXQvZHNhL3RhZ19tdGsuYwomIzQzOyYjNDM7JiM0MzsgYi9uZXQvZHNhL3RhZ19tdGsuYwpAQCAtNzIsOCAmIzQzOzcyLDEwIEBAIHN0YXRpYyBzdHJ1Y3Qgc2tfYnVmZiAqbXRrX3RhZ19yY3Yoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IG5ldF9kZXZpY2UgKmRldikKIAlpbnQgcG9ydDsKIAlfX2JlMTYgKnBoZHI7CiAKLQlpZiAodW5saWtlbHkoIXBza2JfbWF5X3B1bGwoc2tiLCBNVEtfSERSX0xFTikpKQomIzQzOwlpZiAodW5saWtlbHkoIXBza2JfbWF5X3B1bGwoc2tiLCBNVEtfSERSX0xFTikpKSB7CiYjNDM7CQlrZnJlZV9za2Ioc2tiKTsKIAkJcmV0dXJuIE5VTEw7CiYjNDM7CX0KIAogCXBoZHIgPSBkc2FfZXR5cGVfaGVhZGVyX3Bvc19yeChza2IpOwogCWhkciA9IG50b2hzKCpwaGRyKTsKQEAgLTg3LDggJiM0Mzs4OSwxMCBAQCBzdGF0aWMgc3RydWN0IHNrX2J1ZmYgKm10a190YWdfcmN2KHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpCiAJcG9ydCA9IChoZHIgJmFtcDsgTVRLX0hEUl9SRUNWX1NPVVJDRV9QT1JUX01BU0spOwogCiAJc2tiLSZndDtkZXYgPSBkc2FfY29uZHVpdF9maW5kX3VzZXIoZGV2LCAwLCBwb3J0KTsKLQlpZiAoIXNrYi0mZ3Q7ZGV2KQomIzQzOwlpZiAoIXNrYi0mZ3Q7ZGV2KSB7CiYjNDM7CQlrZnJlZV9za2Ioc2tiKTsKIAkJcmV0dXJuIE5VTEw7CiYjNDM7CX0KIAogCWRzYV9kZWZhdWx0X29mZmxvYWRfZndkX21hcmsoc2tiKTsKIApkaWZmIC0tZ2l0IGEvbmV0L2RzYS90YWdfbXhsLWdzdzF4eC5jIGIvbmV0L2RzYS90YWdfbXhsLWdzdzF4eC5jCmluZGV4IDYwZjdjNDQ1ZTY1NjEwLi40YjFiNmVmOTQxOTYzNCAxMDA2NDQKLS0tIGEvbmV0L2RzYS90YWdfbXhsLWdzdzF4eC5jCiYjNDM7JiM0MzsmIzQzOyBiL25ldC9kc2EvdGFnX214bC1nc3cxeHguYwpAQCAtNzMsNiAmIzQzOzczLDcgQEAgc3RhdGljIHN0cnVjdCBza19idWZmICpnc3cxeHhfdGFnX3JjdihzdHJ1Y3Qgc2tfYnVmZiAqc2tiLAogCiAJaWYgKHVubGlrZWx5KCFwc2tiX21heV9wdWxsKHNrYiwgR1NXMVhYX0hFQURFUl9MRU4pKSkgewogCQlkZXZfd2Fybl9yYXRlbGltaXRlZCgmYW1wO2Rldi0mZ3Q7ZGV2LCAmIzM0O0Ryb3BwaW5nIHBhY2tldCwgY2Fubm90IHB1bGwgU0tCXG4mIzM0Oyk7CiYjNDM7CQlrZnJlZV9za2Ioc2tiKTsKIAkJcmV0dXJuIE5VTEw7CiAJfQogCkBAIC04MSw2ICYjNDM7ODIsNyBAQCBzdGF0aWMgc3RydWN0IHNrX2J1ZmYgKmdzdzF4eF90YWdfcmN2KHN0cnVjdCBza19idWZmICpza2IsCiAJaWYgKHVubGlrZWx5KG50b2hzKGdzdzF4eF90YWdbMF0pICE9IEVUSF9QX01YTEdTVykpIHsKIAkJZGV2X3dhcm5fcmF0ZWxpbWl0ZWQoJmFtcDtkZXYtJmd0O2RldiwgJiMzNDtEcm9wcGluZyBwYWNrZXQgZHVlIHRvIGludmFsaWQgc3BlY2lhbCB0YWdcbiYjMzQ7KTsKIAkJZGV2X3dhcm5fcmF0ZWxpbWl0ZWQoJmFtcDtkZXYtJmd0O2RldiwgJiMzNDtUYWc6ICU4cGhcbiYjMzQ7LCBnc3cxeHhfdGFnKTsKJiM0MzsJCWtmcmVlX3NrYihza2IpOwogCQlyZXR1cm4gTlVMTDsKIAl9CiAKQEAgLTkwLDYgJiM0Mzs5Miw3IEBAIHN0YXRpYyBzdHJ1Y3Qgc2tfYnVmZiAqZ3N3MXh4X3RhZ19yY3Yoc3RydWN0IHNrX2J1ZmYgKnNrYiwKIAlpZiAoIXNrYi0mZ3Q7ZGV2KSB7CiAJCWRldl93YXJuX3JhdGVsaW1pdGVkKCZhbXA7ZGV2LSZndDtkZXYsICYjMzQ7RHJvcHBpbmcgcGFja2V0IGR1ZSB0byBpbnZhbGlkIHNvdXJjZSBwb3J0XG4mIzM0Oyk7CiAJCWRldl93YXJuX3JhdGVsaW1pdGVkKCZhbXA7ZGV2LSZndDtkZXYsICYjMzQ7VGFnOiAlOHBoXG4mIzM0OywgZ3N3MXh4X3RhZyk7CiYjNDM7CQlrZnJlZV9za2Ioc2tiKTsKIAkJcmV0dXJuIE5VTEw7CiAJfQogCmRpZmYgLS1naXQgYS9uZXQvZHNhL3RhZ19teGw4NjJ4eC5jIGIvbmV0L2RzYS90YWdfbXhsODYyeHguYwppbmRleCA4ZGFlZmViOGQ0OWRmYS4uODdiODBkZGYwOTQ2MzIgMTAwNjQ0Ci0tLSBhL25ldC9kc2EvdGFnX214bDg2Mnh4LmMKJiM0MzsmIzQzOyYjNDM7IGIvbmV0L2RzYS90YWdfbXhsODYyeHguYwpAQCAtNjQsNiAmIzQzOzY0LDcgQEAgc3RhdGljIHN0cnVjdCBza19idWZmICpteGw4NjJfdGFnX3JjdihzdHJ1Y3Qgc2tfYnVmZiAqc2tiLAogCiAJaWYgKHVubGlrZWx5KCFwc2tiX21heV9wdWxsKHNrYiwgTVhMODYyX0hFQURFUl9MRU4pKSkgewogCQlkZXZfd2Fybl9yYXRlbGltaXRlZCgmYW1wO2Rldi0mZ3Q7ZGV2LCAmIzM0O0Nhbm5vdCBwdWxsIFNLQiwgcGFja2V0IGRyb3BwZWRcbiYjMzQ7KTsKJiM0MzsJCWtmcmVlX3NrYihza2IpOwogCQlyZXR1cm4gTlVMTDsKIAl9CiAKQEAgLTczLDYgJiM0Mzs3NCw3IEBAIHN0YXRpYyBzdHJ1Y3Qgc2tfYnVmZiAqbXhsODYyX3RhZ19yY3Yoc3RydWN0IHNrX2J1ZmYgKnNrYiwKIAkJZGV2X3dhcm5fcmF0ZWxpbWl0ZWQoJmFtcDtkZXYtJmd0O2RldiwKIAkJCQkgICAgICYjMzQ7SW52YWxpZCBzcGVjaWFsIHRhZyBtYXJrZXIsIHBhY2tldCBkcm9wcGVkLCB0YWc6ICU4cGhcbiYjMzQ7LAogCQkJCSAgICAgbXhsODYyX3RhZyk7CiYjNDM7CQlrZnJlZV9za2Ioc2tiKTsKIAkJcmV0dXJuIE5VTEw7CiAJfQogCkBAIC04Myw2ICYjNDM7ODUsNyBAQCBzdGF0aWMgc3RydWN0IHNrX2J1ZmYgKm14bDg2Ml90YWdfcmN2KHN0cnVjdCBza19idWZmICpza2IsCiAJCWRldl93YXJuX3JhdGVsaW1pdGVkKCZhbXA7ZGV2LSZndDtkZXYsCiAJCQkJICAgICAmIzM0O0ludmFsaWQgc291cmNlIHBvcnQsIHBhY2tldCBkcm9wcGVkLCB0YWc6ICU4cGhcbiYjMzQ7LAogCQkJCSAgICAgbXhsODYyX3RhZyk7CiYjNDM7CQlrZnJlZV9za2Ioc2tiKTsKIAkJcmV0dXJuIE5VTEw7CiAJfQogCmRpZmYgLS1naXQgYS9uZXQvZHNhL3RhZ19uZXRjLmMgYi9uZXQvZHNhL3RhZ19uZXRjLmMKaW5kZXggY2NlZGZlM2E4MGI2NGQuLmRmNzJhNjE3OTZhZDVmIDEwMDY0NAotLS0gYS9uZXQvZHNhL3RhZ19uZXRjLmMKJiM0MzsmIzQzOyYjNDM7IGIvbmV0L2RzYS90YWdfbmV0Yy5jCkBAIC0xMzEsMTQgJiM0MzsxMzEsMTMgQEAgc3RhdGljIHN0cnVjdCBza19idWZmICpuZXRjX3JjdihzdHJ1Y3Qgc2tfYnVmZiAqc2tiLAogCWludCB0eXBlLCBzdWJ0eXBlOwogCiAJaWYgKHVubGlrZWx5KCFwc2tiX21heV9wdWxsKHNrYiwgTkVUQ19UQUdfTUFYX0xFTikpKQotCQlyZXR1cm4gTlVMTDsKJiM0MzsJCWdvdG8gZXJyX2ZyZWVfc2tiOwogCiAJdGFnX2NtbiA9IGRzYV9ldHlwZV9oZWFkZXJfcG9zX3J4KHNrYik7CiAJaWYgKG50b2hzKHRhZ19jbW4tJmd0O3RwaWQpICE9IEVUSF9QX05YUF9ORVRDKSB7CiAJCWRldl93YXJuX3JhdGVsaW1pdGVkKCZhbXA7bmRldi0mZ3Q7ZGV2LCAmIzM0O1Vua25vd24gVFBJRCAweCUwNHhcbiYjMzQ7LAogCQkJCSAgICAgbnRvaHModGFnX2Ntbi0mZ3Q7dHBpZCkpOwotCi0JCXJldHVybiBOVUxMOwomIzQzOwkJZ290byBlcnJfZnJlZV9za2I7CiAJfQogCiAJaWYgKHRhZ19jbW4tJmd0O3FvcyAmYW1wOyBORVRDX1RBR19RVikKQEAgLTE0OSwxNCAmIzQzOzE0OCwxMyBAQCBzdGF0aWMgc3RydWN0IHNrX2J1ZmYgKm5ldGNfcmN2KHN0cnVjdCBza19idWZmICpza2IsCiAJaWYgKCFzd19pZCkgewogCQlkZXZfd2Fybl9yYXRlbGltaXRlZCgmYW1wO25kZXYtJmd0O2RldiwKIAkJCQkgICAgICYjMzQ7VkVQQSBzd2l0Y2ggSUQgaXMgbm90IHN1cHBvcnRlZCB5ZXRcbiYjMzQ7KTsKLQotCQlyZXR1cm4gTlVMTDsKJiM0MzsJCWdvdG8gZXJyX2ZyZWVfc2tiOwogCX0KIAogCXBvcnQgPSBGSUVMRF9HRVQoTkVUQ19UQUdfUE9SVCwgdGFnX2Ntbi0mZ3Q7c3dpdGNoX3BvcnQpOwogCXNrYi0mZ3Q7ZGV2ID0gZHNhX2NvbmR1aXRfZmluZF91c2VyKG5kZXYsIHN3X2lkLCBwb3J0KTsKIAlpZiAoIXNrYi0mZ3Q7ZGV2KQotCQlyZXR1cm4gTlVMTDsKJiM0MzsJCWdvdG8gZXJyX2ZyZWVfc2tiOwogCiAJdHlwZSA9IEZJRUxEX0dFVChORVRDX1RBR19UWVBFLCB0YWdfY21uLSZndDt0eXBlKTsKIAlzdWJ0eXBlID0gRklFTERfR0VUKE5FVENfVEFHX1NVQlRZUEUsIHRhZ19jbW4tJmd0O3R5cGUpOwpAQCAtMTY1LDExICYjNDM7MTYzLDExIEBAIHN0YXRpYyBzdHJ1Y3Qgc2tfYnVmZiAqbmV0Y19yY3Yoc3RydWN0IHNrX2J1ZmYgKnNrYiwKIAl9IGVsc2UgaWYgKHR5cGUgPT0gTkVUQ19UQUdfVE9fSE9TVCkgewogCQkvKiBDdXJyZW50bHkgb25seSBzdWJ0eXBlMCBzdXBwb3J0ZWQgKi8KIAkJaWYgKHN1YnR5cGUgIT0gTkVUQ19UQUdfVEhfU1VCVFlQRTApCi0JCQlyZXR1cm4gTlVMTDsKJiM0MzsJCQlnb3RvIGVycl9mcmVlX3NrYjsKIAl9IGVsc2UgewogCQlkZXZfd2Fybl9yYXRlbGltaXRlZCgmYW1wO25kZXYtJmd0O2RldiwKIAkJCQkgICAgICYjMzQ7VW5leHBlY3RlZCAgdGFnIHR5cGUgJWRcbiYjMzQ7LCB0eXBlKTsKLQkJcmV0dXJuIE5VTEw7CiYjNDM7CQlnb3RvIGVycl9mcmVlX3NrYjsKIAl9CiAKIAkvKiBSZW1vdmUgU3dpdGNoIHRhZyBmcm9tIHRoZSBmcmFtZSAqLwpAQCAtMTc4LDYgJiM0MzsxNzYsMTAgQEAgc3RhdGljIHN0cnVjdCBza19idWZmICpuZXRjX3JjdihzdHJ1Y3Qgc2tfYnVmZiAqc2tiLAogCWRzYV9zdHJpcF9ldHlwZV9oZWFkZXIoc2tiLCB0YWdfbGVuKTsKIAogCXJldHVybiBza2I7CiYjNDM7CiYjNDM7ZXJyX2ZyZWVfc2tiOgomIzQzOwlrZnJlZV9za2Ioc2tiKTsKJiM0MzsJcmV0dXJuIE5VTEw7CiB9CiAKIHN0YXRpYyB2b2lkIG5ldGNfZmxvd19kaXNzZWN0KGNvbnN0IHN0cnVjdCBza19idWZmICpza2IsIF9fYmUxNiAqcHJvdG8sCmRpZmYgLS1naXQgYS9uZXQvZHNhL3RhZ19vY2Vsb3QuYyBiL25ldC9kc2EvdGFnX29jZWxvdC5jCmluZGV4IDM0MDVkZWY3OWMyZGVmLi5kMjA4YzczMjJjZDYyNiAxMDA2NDQKLS0tIGEvbmV0L2RzYS90YWdfb2NlbG90LmMKJiM0MzsmIzQzOyYjNDM7IGIvbmV0L2RzYS90YWdfb2NlbG90LmMKQEAgLTEwNywxNCAmIzQzOzEwNywxNiBAQCBzdGF0aWMgc3RydWN0IHNrX2J1ZmYgKm9jZWxvdF9yY3Yoc3RydWN0IHNrX2J1ZmYgKnNrYiwKIAlvY2Vsb3RfeGZoX2dldF9yZXdfdmFsKGV4dHJhY3Rpb24sICZhbXA7cmV3X3ZhbCk7CiAKIAlza2ItJmd0O2RldiA9IGRzYV9jb25kdWl0X2ZpbmRfdXNlcihuZXRkZXYsIDAsIHNyY19wb3J0KTsKLQlpZiAoIXNrYi0mZ3Q7ZGV2KQomIzQzOwlpZiAoIXNrYi0mZ3Q7ZGV2KSB7CiAJCS8qIFRoZSBzd2l0Y2ggd2lsbCByZWZsZWN0IGJhY2sgc29tZSBmcmFtZXMgc2VudCB0aHJvdWdoCiAJCSAqIHNvY2tldHMgb3BlbmVkIG9uIHRoZSBiYXJlIERTQSBjb25kdWl0LiBUaGVzZSB3aWxsIGNvbWUgYmFjawogCQkgKiB3aXRoIHNyY19wb3J0IGVxdWFsIHRvIHRoZSBpbmRleCBvZiB0aGUgQ1BVIHBvcnQsIGZvciB3aGljaAogCQkgKiB0aGVyZSBpcyBubyB1c2VyIHJlZ2lzdGVyZWQuIFNvIGRvbiYjMzk7dCBwcmludCBhbnkgZXJyb3IKIAkJICogbWVzc2FnZSBoZXJlIChpZ25vcmUgYW5kIGRyb3AgdGhvc2UgZnJhbWVzKS4KIAkJICovCiYjNDM7CQlrZnJlZV9za2Ioc2tiKTsKIAkJcmV0dXJuIE5VTEw7CiYjNDM7CX0KIAogCWRzYV9kZWZhdWx0X29mZmxvYWRfZndkX21hcmsoc2tiKTsKIAlza2ItJmd0O3ByaW9yaXR5ID0gcW9zX2NsYXNzOwpkaWZmIC0tZ2l0IGEvbmV0L2RzYS90YWdfb2NlbG90XzgwMjFxLmMgYi9uZXQvZHNhL3RhZ19vY2Vsb3RfODAyMXEuYwppbmRleCBlODlkOTI1NGU5MGEzYS4uZjUwZjFjZDgzZjE2MWMgMTAwNjQ0Ci0tLSBhL25ldC9kc2EvdGFnX29jZWxvdF84MDIxcS5jCiYjNDM7JiM0MzsmIzQzOyBiL25ldC9kc2EvdGFnX29jZWxvdF84MDIxcS5jCkBAIC0zMywzMCAmIzQzOzMzLDM0IEBAIHN0YXRpYyBzdHJ1Y3Qgc2tfYnVmZiAqb2NlbG90X2RlZmVyX3htaXQoc3RydWN0IGRzYV9wb3J0ICpkcCwKIAl4bWl0X3dvcmtfZm4gPSBkYXRhLSZndDt4bWl0X3dvcmtfZm47CiAJeG1pdF93b3JrZXIgPSBwcml2LSZndDt4bWl0X3dvcmtlcjsKIAotCWlmICgheG1pdF93b3JrX2ZuIHx8ICF4bWl0X3dvcmtlcikKJiM0MzsJaWYgKCF4bWl0X3dvcmtfZm4gfHwgIXhtaXRfd29ya2VyKSB7CiYjNDM7CQlrZnJlZV9za2Ioc2tiKTsKIAkJcmV0dXJuIE5VTEw7CiYjNDM7CX0KIAogCS8qIFBUUCBvdmVyIElQIHBhY2tldHMgbmVlZCBVRFAgY2hlY2tzdW1taW5nLiBXZSBtYXkgaGF2ZSBpbmhlcml0ZWQKIAkgKiBORVRJRl9GX0hXX0NTVU0gZnJvbSB0aGUgRFNBIGNvbmR1aXQsIGJ1dCB0aGVzZSBwYWNrZXRzIGFyZSBub3Qgc2VudAogCSAqIHRocm91Z2ggdGhlIERTQSBjb25kdWl0LCBzbyBjYWxjdWxhdGUgdGhlIGNoZWNrc3VtIGhlcmUuCiAJICovCi0JaWYgKHNrYi0mZ3Q7aXBfc3VtbWVkID09IENIRUNLU1VNX1BBUlRJQUwgJmFtcDsmYW1wOyBza2JfY2hlY2tzdW1faGVscChza2IpKQomIzQzOwlpZiAoc2tiLSZndDtpcF9zdW1tZWQgPT0gQ0hFQ0tTVU1fUEFSVElBTCAmYW1wOyZhbXA7IHNrYl9jaGVja3N1bV9oZWxwKHNrYikpIHsKJiM0MzsJCWtmcmVlX3NrYihza2IpOwogCQlyZXR1cm4gTlVMTDsKJiM0MzsJfQogCiAJeG1pdF93b3JrID0ga3phbGxvY19vYmooKnhtaXRfd29yaywgR0ZQX0FUT01JQyk7Ci0JaWYgKCF4bWl0X3dvcmspCiYjNDM7CWlmICgheG1pdF93b3JrKSB7CiYjNDM7CQlrZnJlZV9za2Ioc2tiKTsKIAkJcmV0dXJuIE5VTEw7CiYjNDM7CX0KIAogCS8qIENhbGxzIGZlbGl4X3BvcnRfZGVmZXJyZWRfeG1pdCBpbiBmZWxpeC5jICovCiAJa3RocmVhZF9pbml0X3dvcmsoJmFtcDt4bWl0X3dvcmstJmd0O3dvcmssIHhtaXRfd29ya19mbik7Ci0JLyogSW5jcmVhc2UgcmVmY291bnQgc28gdGhlIGtmcmVlX3NrYiBpbiBkc2FfdXNlcl94bWl0Ci0JICogd29uJiMzOTt0IHJlYWxseSBmcmVlIHRoZSBwYWNrZXQuCi0JICovCiAJeG1pdF93b3JrLSZndDtkcCA9IGRwOwogCXhtaXRfd29yay0mZ3Q7c2tiID0gc2tiX2dldChza2IpOwogCiAJa3RocmVhZF9xdWV1ZV93b3JrKHhtaXRfd29ya2VyLCAmYW1wO3htaXRfd29yay0mZ3Q7d29yayk7CiAKJiM0MzsJa2ZyZWVfc2tiKHNrYik7CiAJcmV0dXJuIE5VTEw7CiB9CiAKQEAgLTg0LDggJiM0Mzs4OCwxMCBAQCBzdGF0aWMgc3RydWN0IHNrX2J1ZmYgKm9jZWxvdF9yY3Yoc3RydWN0IHNrX2J1ZmYgKnNrYiwKIAlkc2FfODAyMXFfcmN2KHNrYiwgJmFtcDtzcmNfcG9ydCwgJmFtcDtzd2l0Y2hfaWQsIE5VTEwsIE5VTEwpOwogCiAJc2tiLSZndDtkZXYgPSBkc2FfY29uZHVpdF9maW5kX3VzZXIobmV0ZGV2LCBzd2l0Y2hfaWQsIHNyY19wb3J0KTsKLQlpZiAoIXNrYi0mZ3Q7ZGV2KQomIzQzOwlpZiAoIXNrYi0mZ3Q7ZGV2KSB7CiYjNDM7CQlrZnJlZV9za2Ioc2tiKTsKIAkJcmV0dXJuIE5VTEw7CiYjNDM7CX0KIAogCWRzYV9kZWZhdWx0X29mZmxvYWRfZndkX21hcmsoc2tiKTsKIApkaWZmIC0tZ2l0IGEvbmV0L2RzYS90YWdfcWNhLmMgYi9uZXQvZHNhL3RhZ19xY2EuYwppbmRleCA5ZTNiNDI5ZThiMzYyNS4uNTEwNzkyZmJmYTkyZGQgMTAwNjQ0Ci0tLSBhL25ldC9kc2EvdGFnX3FjYS5jCiYjNDM7JiM0MzsmIzQzOyBiL25ldC9kc2EvdGFnX3FjYS5jCkBAIC00NiwxNiAmIzQzOzQ2LDIwIEBAIHN0YXRpYyBzdHJ1Y3Qgc2tfYnVmZiAqcWNhX3RhZ19yY3Yoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IG5ldF9kZXZpY2UgKmRldikKIAogCXRhZ2dlcl9kYXRhID0gZHMtJmd0O3RhZ2dlcl9kYXRhOwogCi0JaWYgKHVubGlrZWx5KCFwc2tiX21heV9wdWxsKHNrYiwgUUNBX0hEUl9MRU4pKSkKJiM0MzsJaWYgKHVubGlrZWx5KCFwc2tiX21heV9wdWxsKHNrYiwgUUNBX0hEUl9MRU4pKSkgewomIzQzOwkJa2ZyZWVfc2tiKHNrYik7CiAJCXJldHVybiBOVUxMOwomIzQzOwl9CiAKIAlwaGRyID0gZHNhX2V0eXBlX2hlYWRlcl9wb3Nfcngoc2tiKTsKIAloZHIgPSBudG9ocygqcGhkcik7CiAKIAkvKiBNYWtlIHN1cmUgdGhlIHZlcnNpb24gaXMgY29ycmVjdCAqLwogCXZlciA9IEZJRUxEX0dFVChRQ0FfSERSX1JFQ1ZfVkVSU0lPTiwgaGRyKTsKLQlpZiAodW5saWtlbHkodmVyICE9IFFDQV9IRFJfVkVSU0lPTikpCiYjNDM7CWlmICh1bmxpa2VseSh2ZXIgIT0gUUNBX0hEUl9WRVJTSU9OKSkgewomIzQzOwkJa2ZyZWVfc2tiKHNrYik7CiAJCXJldHVybiBOVUxMOwomIzQzOwl9CiAKIAkvKiBHZXQgcGsgdHlwZSAqLwogCXBrX3R5cGUgPSBGSUVMRF9HRVQoUUNBX0hEUl9SRUNWX1RZUEUsIGhkcik7CkBAIC02NCw2ICYjNDM7NjgsNyBAQCBzdGF0aWMgc3RydWN0IHNrX2J1ZmYgKnFjYV90YWdfcmN2KHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpCiAJaWYgKHBrX3R5cGUgPT0gUUNBX0hEUl9SRUNWX1RZUEVfUldfUkVHX0FDSykgewogCQlpZiAobGlrZWx5KHRhZ2dlcl9kYXRhLSZndDtyd19yZWdfYWNrX2hhbmRsZXIpKQogCQkJdGFnZ2VyX2RhdGEtJmd0O3J3X3JlZ19hY2tfaGFuZGxlcihkcywgc2tiKTsKJiM0MzsJCWtmcmVlX3NrYihza2IpOwogCQlyZXR1cm4gTlVMTDsKIAl9CiAKQEAgLTcxLDYgJiM0Mzs3Niw3IEBAIHN0YXRpYyBzdHJ1Y3Qgc2tfYnVmZiAqcWNhX3RhZ19yY3Yoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IG5ldF9kZXZpY2UgKmRldikKIAlpZiAocGtfdHlwZSA9PSBRQ0FfSERSX1JFQ1ZfVFlQRV9NSUIpIHsKIAkJaWYgKGxpa2VseSh0YWdnZXJfZGF0YS0mZ3Q7bWliX2F1dG9jYXN0X2hhbmRsZXIpKQogCQkJdGFnZ2VyX2RhdGEtJmd0O21pYl9hdXRvY2FzdF9oYW5kbGVyKGRzLCBza2IpOwomIzQzOwkJa2ZyZWVfc2tiKHNrYik7CiAJCXJldHVybiBOVUxMOwogCX0KIApAQCAtNzgsOCAmIzQzOzg0LDEwIEBAIHN0YXRpYyBzdHJ1Y3Qgc2tfYnVmZiAqcWNhX3RhZ19yY3Yoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IG5ldF9kZXZpY2UgKmRldikKIAlwb3J0ID0gRklFTERfR0VUKFFDQV9IRFJfUkVDVl9TT1VSQ0VfUE9SVCwgaGRyKTsKIAogCXNrYi0mZ3Q7ZGV2ID0gZHNhX2NvbmR1aXRfZmluZF91c2VyKGRldiwgMCwgcG9ydCk7Ci0JaWYgKCFza2ItJmd0O2RldikKJiM0MzsJaWYgKCFza2ItJmd0O2RldikgewomIzQzOwkJa2ZyZWVfc2tiKHNrYik7CiAJCXJldHVybiBOVUxMOwomIzQzOwl9CiAKIAkvKiBSZW1vdmUgUUNBIHRhZyBhbmQgcmVjYWxjdWxhdGUgY2hlY2tzdW0gKi8KIAlza2JfcHVsbF9yY3N1bShza2IsIFFDQV9IRFJfTEVOKTsKZGlmZiAtLWdpdCBhL25ldC9kc2EvdGFnX3J0bDRfYS5jIGIvbmV0L2RzYS90YWdfcnRsNF9hLmMKaW5kZXggM2NjNjNlYWNmYTAzNTIuLjU5MGVhM2I5MjFjOWQ5IDEwMDY0NAotLS0gYS9uZXQvZHNhL3RhZ19ydGw0X2EuYwomIzQzOyYjNDM7JiM0MzsgYi9uZXQvZHNhL3RhZ19ydGw0X2EuYwpAQCAtNDEsNyAmIzQzOzQxLDcgQEAgc3RhdGljIHN0cnVjdCBza19idWZmICpydGw0YV90YWdfeG1pdChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLAogCXUxNiBvdXQ7CiAKIAkvKiBQYWQgb3V0IHRvIGF0IGxlYXN0IDYwIGJ5dGVzICovCi0JaWYgKHVubGlrZWx5KF9fc2tiX3B1dF9wYWR0byhza2IsIEVUSF9aTEVOLCBmYWxzZSkpKQomIzQzOwlpZiAodW5saWtlbHkoZXRoX3NrYl9wYWQoc2tiKSkpCiAJCXJldHVybiBOVUxMOwogCiAJbmV0ZGV2X2RiZyhkZXYsICYjMzQ7YWRkIHJlYWx0ZWsgdGFnIHRvIHBhY2thZ2UgdG8gcG9ydCAlZFxuJiMzNDssCkBAIC03NSw4ICYjNDM7NzUsMTAgQEAgc3RhdGljIHN0cnVjdCBza19idWZmICpydGw0YV90YWdfcmN2KHN0cnVjdCBza19idWZmICpza2IsCiAJdTggcHJvdDsKIAl1OCBwb3J0OwogCi0JaWYgKHVubGlrZWx5KCFwc2tiX21heV9wdWxsKHNrYiwgUlRMNF9BX0hEUl9MRU4pKSkKJiM0MzsJaWYgKHVubGlrZWx5KCFwc2tiX21heV9wdWxsKHNrYiwgUlRMNF9BX0hEUl9MRU4pKSkgewomIzQzOwkJa2ZyZWVfc2tiKHNrYik7CiAJCXJldHVybiBOVUxMOwomIzQzOwl9CiAKIAl0YWcgPSBkc2FfZXR5cGVfaGVhZGVyX3Bvc19yeChza2IpOwogCXAgPSAoX19iZTE2ICopdGFnOwpAQCAtOTIsNiAmIzQzOzk0LDcgQEAgc3RhdGljIHN0cnVjdCBza19idWZmICpydGw0YV90YWdfcmN2KHN0cnVjdCBza19idWZmICpza2IsCiAJcHJvdCA9IChwcm90cG9ydCAmZ3Q7Jmd0OyBSVEw0X0FfUFJPVE9DT0xfU0hJRlQpICZhbXA7IDB4MGY7CiAJaWYgKHByb3QgIT0gUlRMNF9BX1BST1RPQ09MX1JUTDgzNjZSQikgewogCQluZXRkZXZfZXJyKGRldiwgJiMzNDt1bmtub3duIHJlYWx0ZWsgcHJvdG9jb2wgMHglMDF4XG4mIzM0OywgcHJvdCk7CiYjNDM7CQlrZnJlZV9za2Ioc2tiKTsKIAkJcmV0dXJuIE5VTEw7CiAJfQogCXBvcnQgPSBwcm90cG9ydCAmYW1wOyAweGZmOwpAQCAtOTksNiAmIzQzOzEwMiw3IEBAIHN0YXRpYyBzdHJ1Y3Qgc2tfYnVmZiAqcnRsNGFfdGFnX3JjdihzdHJ1Y3Qgc2tfYnVmZiAqc2tiLAogCXNrYi0mZ3Q7ZGV2ID0gZHNhX2NvbmR1aXRfZmluZF91c2VyKGRldiwgMCwgcG9ydCk7CiAJaWYgKCFza2ItJmd0O2RldikgewogCQluZXRkZXZfZGJnKGRldiwgJiMzNDtjb3VsZCBub3QgZmluZCB1c2VyIGZvciBwb3J0ICVkXG4mIzM0OywgcG9ydCk7CiYjNDM7CQlrZnJlZV9za2Ioc2tiKTsKIAkJcmV0dXJuIE5VTEw7CiAJfQogCmRpZmYgLS1naXQgYS9uZXQvZHNhL3RhZ19ydGw4XzQuYyBiL25ldC9kc2EvdGFnX3J0bDhfNC5jCmluZGV4IDg1MmM2Yjg4MDc5YTEzLi40ZGEzYmVlYmVmNzVlMiAxMDA2NDQKLS0tIGEvbmV0L2RzYS90YWdfcnRsOF80LmMKJiM0MzsmIzQzOyYjNDM7IGIvbmV0L2RzYS90YWdfcnRsOF80LmMKQEAgLTE0Myw4ICYjNDM7MTQzLDEwIEBAIHN0YXRpYyBzdHJ1Y3Qgc2tfYnVmZiAqcnRsOF80dF90YWdfeG1pdChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLAogCS8qIENhbGN1bGF0ZSB0aGUgY2hlY2tzdW0gaGVyZSBpZiBub3QgZG9uZSB5ZXQgYXMgdHJhaWxpbmcgdGFncyB3aWxsCiAJICogYnJlYWsgZWl0aGVyIHNvZnR3YXJlIG9yIGhhcmR3YXJlIGJhc2VkIGNoZWNrc3VtCiAJICovCi0JaWYgKHNrYi0mZ3Q7aXBfc3VtbWVkID09IENIRUNLU1VNX1BBUlRJQUwgJmFtcDsmYW1wOyBza2JfY2hlY2tzdW1faGVscChza2IpKQomIzQzOwlpZiAoc2tiLSZndDtpcF9zdW1tZWQgPT0gQ0hFQ0tTVU1fUEFSVElBTCAmYW1wOyZhbXA7IHNrYl9jaGVja3N1bV9oZWxwKHNrYikpIHsKJiM0MzsJCWtmcmVlX3NrYihza2IpOwogCQlyZXR1cm4gTlVMTDsKJiM0MzsJfQogCiAJcnRsOF80X3dyaXRlX3RhZyhza2IsIGRldiwgc2tiX3B1dChza2IsIFJUTDhfNF9UQUdfTEVOKSk7CiAKQEAgLTIwMSwxMSAmIzQzOzIwMywxNSBAQCBzdGF0aWMgaW50IHJ0bDhfNF9yZWFkX3RhZyhzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LAogc3RhdGljIHN0cnVjdCBza19idWZmICpydGw4XzRfdGFnX3JjdihzdHJ1Y3Qgc2tfYnVmZiAqc2tiLAogCQkJCSAgICAgIHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpCiB7Ci0JaWYgKHVubGlrZWx5KCFwc2tiX21heV9wdWxsKHNrYiwgUlRMOF80X1RBR19MRU4pKSkKJiM0MzsJaWYgKHVubGlrZWx5KCFwc2tiX21heV9wdWxsKHNrYiwgUlRMOF80X1RBR19MRU4pKSkgewomIzQzOwkJa2ZyZWVfc2tiKHNrYik7CiAJCXJldHVybiBOVUxMOwomIzQzOwl9CiAKLQlpZiAodW5saWtlbHkocnRsOF80X3JlYWRfdGFnKHNrYiwgZGV2LCBkc2FfZXR5cGVfaGVhZGVyX3Bvc19yeChza2IpKSkpCiYjNDM7CWlmICh1bmxpa2VseShydGw4XzRfcmVhZF90YWcoc2tiLCBkZXYsIGRzYV9ldHlwZV9oZWFkZXJfcG9zX3J4KHNrYikpKSkgewomIzQzOwkJa2ZyZWVfc2tiKHNrYik7CiAJCXJldHVybiBOVUxMOwomIzQzOwl9CiAKIAkvKiBSZW1vdmUgdGFnIGFuZCByZWNhbGN1bGF0ZSBjaGVja3N1bSAqLwogCXNrYl9wdWxsX3Jjc3VtKHNrYiwgUlRMOF80X1RBR19MRU4pOwpAQCAtMjE4LDE0ICYjNDM7MjI0LDIwIEBAIHN0YXRpYyBzdHJ1Y3Qgc2tfYnVmZiAqcnRsOF80X3RhZ19yY3Yoc3RydWN0IHNrX2J1ZmYgKnNrYiwKIHN0YXRpYyBzdHJ1Y3Qgc2tfYnVmZiAqcnRsOF80dF90YWdfcmN2KHN0cnVjdCBza19idWZmICpza2IsCiAJCQkJICAgICAgIHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpCiB7Ci0JaWYgKHNrYl9saW5lYXJpemUoc2tiKSkKJiM0MzsJaWYgKHNrYl9saW5lYXJpemUoc2tiKSkgewomIzQzOwkJa2ZyZWVfc2tiKHNrYik7CiAJCXJldHVybiBOVUxMOwomIzQzOwl9CiAKLQlpZiAodW5saWtlbHkocnRsOF80X3JlYWRfdGFnKHNrYiwgZGV2LCBza2JfdGFpbF9wb2ludGVyKHNrYikgLSBSVEw4XzRfVEFHX0xFTikpKQomIzQzOwlpZiAodW5saWtlbHkocnRsOF80X3JlYWRfdGFnKHNrYiwgZGV2LCBza2JfdGFpbF9wb2ludGVyKHNrYikgLSBSVEw4XzRfVEFHX0xFTikpKSB7CiYjNDM7CQlrZnJlZV9za2Ioc2tiKTsKIAkJcmV0dXJuIE5VTEw7CiYjNDM7CX0KIAotCWlmIChwc2tiX3RyaW1fcmNzdW0oc2tiLCBza2ItJmd0O2xlbiAtIFJUTDhfNF9UQUdfTEVOKSkKJiM0MzsJaWYgKHBza2JfdHJpbV9yY3N1bShza2IsIHNrYi0mZ3Q7bGVuIC0gUlRMOF80X1RBR19MRU4pKSB7CiYjNDM7CQlrZnJlZV9za2Ioc2tiKTsKIAkJcmV0dXJuIE5VTEw7CiYjNDM7CX0KIAogCXJldHVybiBza2I7CiB9CmRpZmYgLS1naXQgYS9uZXQvZHNhL3RhZ19yem4xX2E1cHN3LmMgYi9uZXQvZHNhL3RhZ19yem4xX2E1cHN3LmMKaW5kZXggMTA5OTRiMzQ3MGY2N2EuLjczNDkxMDE1NmRjMzMzIDEwMDY0NAotLS0gYS9uZXQvZHNhL3RhZ19yem4xX2E1cHN3LmMKJiM0MzsmIzQzOyYjNDM7IGIvbmV0L2RzYS90YWdfcnpuMV9hNXBzdy5jCkBAIC00OCw3ICYjNDM7NDgsNyBAQCBzdGF0aWMgc3RydWN0IHNrX2J1ZmYgKmE1cHN3X3RhZ194bWl0KHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBuZXRfZGV2aWNlICpkZQogCSAqIGxlYXN0IDYwIGJ5dGVzIG90aGVyd2lzZSB0aGV5IHdpbGwgYmUgZGlzY2FyZGVkIHdoZW4gdGhleSBlbnRlciB0aGUKIAkgKiBzd2l0Y2ggcG9ydCBsb2dpYy4KIAkgKi8KLQlpZiAoX19za2JfcHV0X3BhZHRvKHNrYiwgRVRIX1pMRU4sIGZhbHNlKSkKJiM0MzsJaWYgKGV0aF9za2JfcGFkKHNrYikpCiAJCXJldHVybiBOVUxMOwogCiAJLyogcHJvdmlkZSAmIzM5O0E1UFNXX1RBR19MRU4mIzM5OyBieXRlcyBhZGRpdGlvbmFsIHNwYWNlICovCkBAIC03Nyw2ICYjNDM7NzcsNyBAQCBzdGF0aWMgc3RydWN0IHNrX2J1ZmYgKmE1cHN3X3RhZ19yY3Yoc3RydWN0IHNrX2J1ZmYgKnNrYiwKIAlpZiAodW5saWtlbHkoIXBza2JfbWF5X3B1bGwoc2tiLCBBNVBTV19UQUdfTEVOKSkpIHsKIAkJZGV2X3dhcm5fcmF0ZWxpbWl0ZWQoJmFtcDtkZXYtJmd0O2RldiwKIAkJCQkgICAgICYjMzQ7RHJvcHBpbmcgcGFja2V0LCBjYW5ub3QgcHVsbFxuJiMzNDspOwomIzQzOwkJa2ZyZWVfc2tiKHNrYik7CiAJCXJldHVybiBOVUxMOwogCX0KIApAQCAtODQsMTQgJiM0Mzs4NSwxNyBAQCBzdGF0aWMgc3RydWN0IHNrX2J1ZmYgKmE1cHN3X3RhZ19yY3Yoc3RydWN0IHNrX2J1ZmYgKnNrYiwKIAogCWlmICh0YWctJmd0O2N0cmxfdGFnICE9IGh0b25zKEVUSF9QX0RTQV9BNVBTVykpIHsKIAkJZGV2X3dhcm5fcmF0ZWxpbWl0ZWQoJmFtcDtkZXYtJmd0O2RldiwgJiMzNDtEcm9wcGluZyBwYWNrZXQgZHVlIHRvIGludmFsaWQgVEFHIG1hcmtlclxuJiMzNDspOwomIzQzOwkJa2ZyZWVfc2tiKHNrYik7CiAJCXJldHVybiBOVUxMOwogCX0KIAogCXBvcnQgPSBGSUVMRF9HRVQoQTVQU1dfQ1RSTF9EQVRBX1BPUlQsIG50b2hzKHRhZy0mZ3Q7Y3RybF9kYXRhKSk7CiAKIAlza2ItJmd0O2RldiA9IGRzYV9jb25kdWl0X2ZpbmRfdXNlcihkZXYsIDAsIHBvcnQpOwotCWlmICghc2tiLSZndDtkZXYpCiYjNDM7CWlmICghc2tiLSZndDtkZXYpIHsKJiM0MzsJCWtmcmVlX3NrYihza2IpOwogCQlyZXR1cm4gTlVMTDsKJiM0MzsJfQogCiAJc2tiX3B1bGxfcmNzdW0oc2tiLCBBNVBTV19UQUdfTEVOKTsKIAlkc2Ffc3RyaXBfZXR5cGVfaGVhZGVyKHNrYiwgQTVQU1dfVEFHX0xFTik7CmRpZmYgLS1naXQgYS9uZXQvZHNhL3RhZ19zamExMTA1LmMgYi9uZXQvZHNhL3RhZ19zamExMTA1LmMKaW5kZXggZGU2ZDRjZTg2NjhiZTEuLmJmZTFmNzQ2ZjU1YmU1IDEwMDY0NAotLS0gYS9uZXQvZHNhL3RhZ19zamExMTA1LmMKJiM0MzsmIzQzOyYjNDM7IGIvbmV0L2RzYS90YWdfc2phMTEwNS5jCkBAIC0xNDksMTkgJiM0MzsxNDksMjAgQEAgc3RhdGljIHN0cnVjdCBza19idWZmICpzamExMTA1X2RlZmVyX3htaXQoc3RydWN0IGRzYV9wb3J0ICpkcCwKIAl4bWl0X3dvcmtfZm4gPSB0YWdnZXJfZGF0YS0mZ3Q7eG1pdF93b3JrX2ZuOwogCXhtaXRfd29ya2VyID0gcHJpdi0mZ3Q7eG1pdF93b3JrZXI7CiAKLQlpZiAoIXhtaXRfd29ya19mbiB8fCAheG1pdF93b3JrZXIpCiYjNDM7CWlmICgheG1pdF93b3JrX2ZuIHx8ICF4bWl0X3dvcmtlcikgewomIzQzOwkJa2ZyZWVfc2tiKHNrYik7CiAJCXJldHVybiBOVUxMOwomIzQzOwl9CiAKIAl4bWl0X3dvcmsgPSBremFsbG9jX29iaigqeG1pdF93b3JrLCBHRlBfQVRPTUlDKTsKLQlpZiAoIXhtaXRfd29yaykKJiM0MzsJaWYgKCF4bWl0X3dvcmspIHsKJiM0MzsJCWtmcmVlX3NrYihza2IpOwogCQlyZXR1cm4gTlVMTDsKJiM0MzsJfQogCiAJa3RocmVhZF9pbml0X3dvcmsoJmFtcDt4bWl0X3dvcmstJmd0O3dvcmssIHhtaXRfd29ya19mbik7Ci0JLyogSW5jcmVhc2UgcmVmY291bnQgc28gdGhlIGtmcmVlX3NrYiBpbiBkc2FfdXNlcl94bWl0Ci0JICogd29uJiMzOTt0IHJlYWxseSBmcmVlIHRoZSBwYWNrZXQuCi0JICovCiAJeG1pdF93b3JrLSZndDtkcCA9IGRwOwotCXhtaXRfd29yay0mZ3Q7c2tiID0gc2tiX2dldChza2IpOwomIzQzOwl4bWl0X3dvcmstJmd0O3NrYiA9IHNrYjsKIAogCWt0aHJlYWRfcXVldWVfd29yayh4bWl0X3dvcmtlciwgJmFtcDt4bWl0X3dvcmstJmd0O3dvcmspOwogCkBAIC00MDEsMTAgJiM0Mzs0MDIsNyBAQCBzdGF0aWMgc3RydWN0IHNrX2J1ZmYKIAkJCWtmcmVlX3NrYihwcml2LSZndDtzdGFtcGFibGVfc2tiKTsKIAkJfQogCi0JCS8qIEhvbGQgYSByZWZlcmVuY2UgdG8gYXZvaWQgZHNhX3N3aXRjaF9yY3YKLQkJICogZnJvbSBmcmVlaW5nIHRoZSBza2IuCi0JCSAqLwotCQlwcml2LSZndDtzdGFtcGFibGVfc2tiID0gc2tiX2dldChza2IpOwomIzQzOwkJcHJpdi0mZ3Q7c3RhbXBhYmxlX3NrYiA9IHNrYjsKIAkJc3Bpbl91bmxvY2soJmFtcDtwcml2LSZndDttZXRhX2xvY2spOwogCiAJCS8qIFRlbGwgRFNBIHdlIGdvdCBub3RoaW5nICovCkBAIC00MzYsNiAmIzQzOzQzNCw3IEBAIHN0YXRpYyBzdHJ1Y3Qgc2tfYnVmZgogCQkJZGV2X2Vycl9yYXRlbGltaXRlZChkcy0mZ3Q7ZGV2LAogCQkJCQkgICAgJiMzNDtVbmV4cGVjdGVkIG1ldGEgZnJhbWVcbiYjMzQ7KTsKIAkJCXNwaW5fdW5sb2NrKCZhbXA7cHJpdi0mZ3Q7bWV0YV9sb2NrKTsKJiM0MzsJCQlrZnJlZV9za2Ioc2tiKTsKIAkJCXJldHVybiBOVUxMOwogCQl9CiAKQEAgLTQ0Myw2ICYjNDM7NDQyLDcgQEAgc3RhdGljIHN0cnVjdCBza19idWZmCiAJCQlkZXZfZXJyX3JhdGVsaW1pdGVkKGRzLSZndDtkZXYsCiAJCQkJCSAgICAmIzM0O01ldGEgZnJhbWUgb24gd3JvbmcgcG9ydFxuJiMzNDspOwogCQkJc3Bpbl91bmxvY2soJmFtcDtwcml2LSZndDttZXRhX2xvY2spOwomIzQzOwkJCWtmcmVlX3NrYihza2IpOwogCQkJcmV0dXJuIE5VTEw7CiAJCX0KIApAQCAtNTAxLDE4ICYjNDM7NTAxLDIxIEBAIHN0YXRpYyBzdHJ1Y3Qgc2tfYnVmZiAqc2phMTEwNV9yY3Yoc3RydWN0IHNrX2J1ZmYgKnNrYiwKIAkvKiBOb3JtYWwgZGF0YSBwbGFuZSB0cmFmZmljIGFuZCBsaW5rLWxvY2FsIGZyYW1lcyBhcmUgdGFnZ2VkIHdpdGgKIAkgKiBhIHRhZ184MDIxcSBWTEFOIHdoaWNoIHdlIGhhdmUgdG8gc3RyaXAKIAkgKi8KLQlpZiAoc2phMTEwNV9za2JfaGFzX3RhZ184MDIxcShza2IpKQomIzQzOwlpZiAoc2phMTEwNV9za2JfaGFzX3RhZ184MDIxcShza2IpKSB7CiAJCWRzYV84MDIxcV9yY3Yoc2tiLCAmYW1wO3NvdXJjZV9wb3J0LCAmYW1wO3N3aXRjaF9pZCwgJmFtcDt2YmlkLCAmYW1wO3ZpZCk7Ci0JZWxzZSBpZiAoc291cmNlX3BvcnQgPT0gLTEgJmFtcDsmYW1wOyBzd2l0Y2hfaWQgPT0gLTEpCiYjNDM7CX0gZWxzZSBpZiAoc291cmNlX3BvcnQgPT0gLTEgJmFtcDsmYW1wOyBzd2l0Y2hfaWQgPT0gLTEpIHsKIAkJLyogUGFja2V0cyB3aXRoIG5vIHNvdXJjZSBpbmZvcm1hdGlvbiBoYXZlIG5vIGNoYW5jZSBvZgogCQkgKiBnZXR0aW5nIGFjY2VwdGVkLCBkcm9wIHRoZW0gc3RyYWlnaHQgYXdheS4KIAkJICovCiYjNDM7CQlrZnJlZV9za2Ioc2tiKTsKIAkJcmV0dXJuIE5VTEw7CiYjNDM7CX0KIAogCXNrYi0mZ3Q7ZGV2ID0gZHNhX3RhZ184MDIxcV9maW5kX3VzZXIobmV0ZGV2LCBzb3VyY2VfcG9ydCwgc3dpdGNoX2lkLAogCQkJCQkgICB2aWQsIHZiaWQpOwogCWlmICghc2tiLSZndDtkZXYpIHsKIAkJbmV0ZGV2X3dhcm4obmV0ZGV2LCAmIzM0O0NvdWxkbiYjMzk7dCBkZWNvZGUgc291cmNlIHBvcnRcbiYjMzQ7KTsKJiM0MzsJCWtmcmVlX3NrYihza2IpOwogCQlyZXR1cm4gTlVMTDsKIAl9CiAKQEAgLTUzOSwxMiAmIzQzOzU0MiwxNSBAQCBzdGF0aWMgc3RydWN0IHNrX2J1ZmYgKnNqYTExMTBfcmN2X21ldGEoc3RydWN0IHNrX2J1ZmYgKnNrYiwgdTE2IHJ4X2hlYWRlcikKIAlpZiAoIWRzKSB7CiAJCW5ldF9lcnJfcmF0ZWxpbWl0ZWQoJiMzNDslczogY2Fubm90IGZpbmQgc3dpdGNoIGlkICVkXG4mIzM0OywKIAkJCQkgICAgY29uZHVpdC0mZ3Q7bmFtZSwgc3dpdGNoX2lkKTsKJiM0MzsJCWtmcmVlX3NrYihza2IpOwogCQlyZXR1cm4gTlVMTDsKIAl9CiAKIAl0YWdnZXJfZGF0YSA9IHNqYTExMDVfdGFnZ2VyX2RhdGEoZHMpOwotCWlmICghdGFnZ2VyX2RhdGEtJmd0O21ldGFfdHN0YW1wX2hhbmRsZXIpCiYjNDM7CWlmICghdGFnZ2VyX2RhdGEtJmd0O21ldGFfdHN0YW1wX2hhbmRsZXIpIHsKJiM0MzsJCWtmcmVlX3NrYihza2IpOwogCQlyZXR1cm4gTlVMTDsKJiM0MzsJfQogCiAJZm9yIChpID0gMDsgaSAmbHQ7PSBuX3RzOyBpJiM0MzsmIzQzOykgewogCQl1OCB0c19pZCwgc291cmNlX3BvcnQsIGRpcjsKQEAgLTU2Miw2ICYjNDM7NTY4LDcgQEAgc3RhdGljIHN0cnVjdCBza19idWZmICpzamExMTEwX3Jjdl9tZXRhKHN0cnVjdCBza19idWZmICpza2IsIHUxNiByeF9oZWFkZXIpCiAJfQogCiAJLyogRGlzY2FyZCB0aGUgbWV0YSBmcmFtZSwgd2UmIzM5O3ZlIGNvbnN1bWVkIHRoZSB0aW1lc3RhbXBzIGl0IGNvbnRhaW5lZCAqLwomIzQzOwlrZnJlZV9za2Ioc2tiKTsKIAlyZXR1cm4gTlVMTDsKIH0KIApAQCAtNTcyLDggJiM0Mzs1NzksMTAgQEAgc3RhdGljIHN0cnVjdCBza19idWZmICpzamExMTEwX3Jjdl9pbmJhbmRfY29udHJvbF9leHRlbnNpb24oc3RydWN0IHNrX2J1ZmYgKnNrYiwKIHsKIAl1MTYgcnhfaGVhZGVyOwogCi0JaWYgKHVubGlrZWx5KCFwc2tiX21heV9wdWxsKHNrYiwgU0pBMTExMF9IRUFERVJfTEVOKSkpCiYjNDM7CWlmICh1bmxpa2VseSghcHNrYl9tYXlfcHVsbChza2IsIFNKQTExMTBfSEVBREVSX0xFTikpKSB7CiYjNDM7CQlrZnJlZV9za2Ioc2tiKTsKIAkJcmV0dXJuIE5VTEw7CiYjNDM7CX0KIAogCS8qIHNrYi0mZ3Q7ZGF0YSBwb2ludHMgdG8gc2tiX21hY19oZWFkZXIoc2tiKSAmIzQzOyBFVEhfSExFTiwgd2hpY2ggaXMgZXhhY3RseQogCSAqIHdoYXQgd2UgbmVlZCBiZWNhdXNlIHRoZSBjYWxsZXIgaGFzIGNoZWNrZWQgdGhlIEV0aGVyVHlwZSAod2hpY2ggaXMKQEAgLTYwOSw4ICYjNDM7NjE4LDEwIEBAIHN0YXRpYyBzdHJ1Y3Qgc2tfYnVmZiAqc2phMTExMF9yY3ZfaW5iYW5kX2NvbnRyb2xfZXh0ZW5zaW9uKHN0cnVjdCBza19idWZmICpza2IsCiAJCSAqIHBhZGRpbmcgYW5kIHRyYWlsZXIgd2UgbmVlZCB0byBhY2NvdW50IGZvciB0aGUgZmFjdCB0aGF0CiAJCSAqIHNrYi0mZ3Q7ZGF0YSBwb2ludHMgdG8gc2tiX21hY19oZWFkZXIoc2tiKSAmIzQzOyBFVEhfSExFTi4KIAkJICovCi0JCWlmIChwc2tiX3RyaW1fcmNzdW0oc2tiLCBzdGFydF9vZl9wYWRkaW5nIC0gRVRIX0hMRU4pKQomIzQzOwkJaWYgKHBza2JfdHJpbV9yY3N1bShza2IsIHN0YXJ0X29mX3BhZGRpbmcgLSBFVEhfSExFTikpIHsKJiM0MzsJCQlrZnJlZV9za2Ioc2tiKTsKIAkJCXJldHVybiBOVUxMOwomIzQzOwkJfQogCS8qIFRyYXAtdG8taG9zdCBmcmFtZSwgbm8gdGltZXN0YW1wIHRyYWlsZXIgKi8KIAl9IGVsc2UgewogCQkqc291cmNlX3BvcnQgPSBTSkExMTEwX1JYX0hFQURFUl9TUkNfUE9SVChyeF9oZWFkZXIpOwpAQCAtNjUzLDYgJiM0Mzs2NjQsNyBAQCBzdGF0aWMgc3RydWN0IHNrX2J1ZmYgKnNqYTExMTBfcmN2KHN0cnVjdCBza19idWZmICpza2IsCiAKIAlpZiAoIXNrYi0mZ3Q7ZGV2KSB7CiAJCW5ldGRldl93YXJuKG5ldGRldiwgJiMzNDtDb3VsZG4mIzM5O3QgZGVjb2RlIHNvdXJjZSBwb3J0XG4mIzM0Oyk7CiYjNDM7CQlrZnJlZV9za2Ioc2tiKTsKIAkJcmV0dXJuIE5VTEw7CiAJfQogCmRpZmYgLS1naXQgYS9uZXQvZHNhL3RhZ190cmFpbGVyLmMgYi9uZXQvZHNhL3RhZ190cmFpbGVyLmMKaW5kZXggNGRjZTI0Y2ZlNmE3MTYuLjQ5YzgwMmMxMGNhNjNhIDEwMDY0NAotLS0gYS9uZXQvZHNhL3RhZ190cmFpbGVyLmMKJiM0MzsmIzQzOyYjNDM7IGIvbmV0L2RzYS90YWdfdHJhaWxlci5jCkBAIC0zMCwyMiAmIzQzOzMwLDMwIEBAIHN0YXRpYyBzdHJ1Y3Qgc2tfYnVmZiAqdHJhaWxlcl9yY3Yoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IG5ldF9kZXZpY2UgKmRldikKIAl1OCAqdHJhaWxlcjsKIAlpbnQgc291cmNlX3BvcnQ7CiAKLQlpZiAoc2tiX2xpbmVhcml6ZShza2IpKQomIzQzOwlpZiAoc2tiX2xpbmVhcml6ZShza2IpKSB7CiYjNDM7CQlrZnJlZV9za2Ioc2tiKTsKIAkJcmV0dXJuIE5VTEw7CiYjNDM7CX0KIAogCXRyYWlsZXIgPSBza2JfdGFpbF9wb2ludGVyKHNrYikgLSA0OwogCWlmICh0cmFpbGVyWzBdICE9IDB4ODAgfHwgKHRyYWlsZXJbMV0gJmFtcDsgMHhmOCkgIT0gMHgwMCB8fAotCSAgICAodHJhaWxlclsyXSAmYW1wOyAweGVmKSAhPSAweDAwIHx8IHRyYWlsZXJbM10gIT0gMHgwMCkKJiM0MzsJICAgICh0cmFpbGVyWzJdICZhbXA7IDB4ZWYpICE9IDB4MDAgfHwgdHJhaWxlclszXSAhPSAweDAwKSB7CiYjNDM7CQlrZnJlZV9za2Ioc2tiKTsKIAkJcmV0dXJuIE5VTEw7CiYjNDM7CX0KIAogCXNvdXJjZV9wb3J0ID0gdHJhaWxlclsxXSAmYW1wOyA3OwogCiAJc2tiLSZndDtkZXYgPSBkc2FfY29uZHVpdF9maW5kX3VzZXIoZGV2LCAwLCBzb3VyY2VfcG9ydCk7Ci0JaWYgKCFza2ItJmd0O2RldikKJiM0MzsJaWYgKCFza2ItJmd0O2RldikgewomIzQzOwkJa2ZyZWVfc2tiKHNrYik7CiAJCXJldHVybiBOVUxMOwomIzQzOwl9CiAKLQlpZiAocHNrYl90cmltX3Jjc3VtKHNrYiwgc2tiLSZndDtsZW4gLSA0KSkKJiM0MzsJaWYgKHBza2JfdHJpbV9yY3N1bShza2IsIHNrYi0mZ3Q7bGVuIC0gNCkpIHsKJiM0MzsJCWtmcmVlX3NrYihza2IpOwogCQlyZXR1cm4gTlVMTDsKJiM0MzsJfQogCiAJcmV0dXJuIHNrYjsKIH0KZGlmZiAtLWdpdCBhL25ldC9kc2EvdGFnX3ZzYzczeHhfODAyMXEuYyBiL25ldC9kc2EvdGFnX3ZzYzczeHhfODAyMXEuYwppbmRleCBhZjEyMWE5YWZmN2ZiZC4uZjQ3MzZhMWE3YTBmMGYgMTAwNjQ0Ci0tLSBhL25ldC9kc2EvdGFnX3ZzYzczeHhfODAyMXEuYwomIzQzOyYjNDM7JiM0MzsgYi9uZXQvZHNhL3RhZ192c2M3M3h4XzgwMjFxLmMKQEAgLTQ0LDYgJiM0Mzs0NCw3IEBAIHZzYzczeHhfcmN2KHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYpCiAJaWYgKCFza2ItJmd0O2RldikgewogCQlkZXZfd2Fybl9yYXRlbGltaXRlZCgmYW1wO25ldGRldi0mZ3Q7ZGV2LAogCQkJCSAgICAgJiMzNDtDb3VsZG4mIzM5O3QgZGVjb2RlIHNvdXJjZSBwb3J0XG4mIzM0Oyk7CiYjNDM7CQlrZnJlZV9za2Ioc2tiKTsKIAkJcmV0dXJuIE5VTEw7CiAJfQogCmRpZmYgLS1naXQgYS9uZXQvZHNhL3RhZ194cnM3MDB4LmMgYi9uZXQvZHNhL3RhZ194cnM3MDB4LmMKaW5kZXggYTA1MjE5ZjcwMmM2NWEuLmJiMjY4MDIwZWU4NjVlIDEwMDY0NAotLS0gYS9uZXQvZHNhL3RhZ194cnM3MDB4LmMKJiM0MzsmIzQzOyYjNDM7IGIvbmV0L2RzYS90YWdfeHJzNzAweC5jCkBAIC0zMCwxNSAmIzQzOzMwLDIxIEBAIHN0YXRpYyBzdHJ1Y3Qgc2tfYnVmZiAqeHJzNzAweF9yY3Yoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IG5ldF9kZXZpY2UgKmRldikKIAogCXNvdXJjZV9wb3J0ID0gZmZzKChpbnQpdHJhaWxlclswXSkgLSAxOwogCi0JaWYgKHNvdXJjZV9wb3J0ICZsdDsgMCkKJiM0MzsJaWYgKHNvdXJjZV9wb3J0ICZsdDsgMCkgewomIzQzOwkJa2ZyZWVfc2tiKHNrYik7CiAJCXJldHVybiBOVUxMOwomIzQzOwl9CiAKIAlza2ItJmd0O2RldiA9IGRzYV9jb25kdWl0X2ZpbmRfdXNlcihkZXYsIDAsIHNvdXJjZV9wb3J0KTsKLQlpZiAoIXNrYi0mZ3Q7ZGV2KQomIzQzOwlpZiAoIXNrYi0mZ3Q7ZGV2KSB7CiYjNDM7CQlrZnJlZV9za2Ioc2tiKTsKIAkJcmV0dXJuIE5VTEw7CiYjNDM7CX0KIAotCWlmIChwc2tiX3RyaW1fcmNzdW0oc2tiLCBza2ItJmd0O2xlbiAtIDEpKQomIzQzOwlpZiAocHNrYl90cmltX3Jjc3VtKHNrYiwgc2tiLSZndDtsZW4gLSAxKSkgewomIzQzOwkJa2ZyZWVfc2tiKHNrYik7CiAJCXJldHVybiBOVUxMOwomIzQzOwl9CiAKIAkvKiBGcmFtZSBpcyBmb3J3YXJkZWQgYnkgaGFyZHdhcmUsIGRvbiYjMzk7dCBmb3J3YXJkIGluIHNvZnR3YXJlLiAqLwogCWRzYV9kZWZhdWx0X29mZmxvYWRfZndkX21hcmsoc2tiKTsKZGlmZiAtLWdpdCBhL25ldC9kc2EvdGFnX3l0OTIxeC5jIGIvbmV0L2RzYS90YWdfeXQ5MjF4LmMKaW5kZXggZjNjZWQ5OWIxYzg1MmUuLjI5NDc4NGFiNjY5NGI2IDEwMDY0NAotLS0gYS9uZXQvZHNhL3RhZ195dDkyMXguYwomIzQzOyYjNDM7JiM0MzsgYi9uZXQvZHNhL3RhZ195dDkyMXguYwpAQCAtODcsOCAmIzQzOzg3LDEwIEBAIHl0OTIxeF90YWdfcmN2KHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYpCiAJX19iZTE2ICp0YWc7CiAJdTE2IHJ4OwogCi0JaWYgKHVubGlrZWx5KCFwc2tiX21heV9wdWxsKHNrYiwgWVQ5MjFYX1RBR19MRU4pKSkKJiM0MzsJaWYgKHVubGlrZWx5KCFwc2tiX21heV9wdWxsKHNrYiwgWVQ5MjFYX1RBR19MRU4pKSkgewomIzQzOwkJa2ZyZWVfc2tiKHNrYik7CiAJCXJldHVybiBOVUxMOwomIzQzOwl9CiAKIAl0YWcgPSBkc2FfZXR5cGVfaGVhZGVyX3Bvc19yeChza2IpOwogCkBAIC05Niw2ICYjNDM7OTgsNyBAQCB5dDkyMXhfdGFnX3JjdihzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2KQogCQlkZXZfd2Fybl9yYXRlbGltaXRlZCgmYW1wO25ldGRldi0mZ3Q7ZGV2LAogCQkJCSAgICAgJiMzNDtVbmV4cGVjdGVkIEV0aGVyVHlwZSAweCUwNHhcbiYjMzQ7LAogCQkJCSAgICAgbnRvaHModGFnWzBdKSk7CiYjNDM7CQlrZnJlZV9za2Ioc2tiKTsKIAkJcmV0dXJuIE5VTEw7CiAJfQogCkBAIC0xMDQsNiAmIzQzOzEwNyw3IEBAIHl0OTIxeF90YWdfcmN2KHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYpCiAJaWYgKHVubGlrZWx5KChyeCAmYW1wOyBZVDkyMVhfVEFHX1BPUlRfRU4pID09IDApKSB7CiAJCWRldl93YXJuX3JhdGVsaW1pdGVkKCZhbXA7bmV0ZGV2LSZndDtkZXYsCiAJCQkJICAgICAmIzM0O1VuZXhwZWN0ZWQgcnggdGFnIDB4JTA0eFxuJiMzNDssIHJ4KTsKJiM0MzsJCWtmcmVlX3NrYihza2IpOwogCQlyZXR1cm4gTlVMTDsKIAl9CiAKQEAgLTExMiw2ICYjNDM7MTE2LDcgQEAgeXQ5MjF4X3RhZ19yY3Yoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldikKIAlpZiAodW5saWtlbHkoIXNrYi0mZ3Q7ZGV2KSkgewogCQlkZXZfd2Fybl9yYXRlbGltaXRlZCgmYW1wO25ldGRldi0mZ3Q7ZGV2LAogCQkJCSAgICAgJiMzNDtDb3VsZG4mIzM5O3QgZGVjb2RlIHNvdXJjZSBwb3J0ICV1XG4mIzM0OywgcG9ydCk7CiYjNDM7CQlrZnJlZV9za2Ioc2tiKTsKIAkJcmV0dXJuIE5VTEw7CiAJfQogCmRpZmYgLS1naXQgYS9uZXQvZHNhL3VzZXIuYyBiL25ldC9kc2EvdXNlci5jCmluZGV4IDg3MDRjMWEzYTViNzQxLi4wNzJmYTc2OTcyY2M2NSAxMDA2NDQKLS0tIGEvbmV0L2RzYS91c2VyLmMKJiM0MzsmIzQzOyYjNDM7IGIvbmV0L2RzYS91c2VyLmMKQEAgLTkzNSwxMyAmIzQzOzkzNSwxMiBAQCBzdGF0aWMgbmV0ZGV2X3R4X3QgZHNhX3VzZXJfeG1pdChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KQogCQlldGhfc2tiX3BhZChza2IpOwogCiAJLyogVHJhbnNtaXQgZnVuY3Rpb24gbWF5IGhhdmUgdG8gcmVhbGxvY2F0ZSB0aGUgb3JpZ2luYWwgU0tCLAotCSAqIGluIHdoaWNoIGNhc2UgaXQgbXVzdCBoYXZlIGZyZWVkIGl0LiBPbmx5IGZyZWUgaXQgaGVyZSBvbiBlcnJvci4KJiM0MzsJICogaW4gd2hpY2ggY2FzZSBpdCBtdXN0IGhhdmUgZnJlZWQgaXQuIFRhZ2dlcnMgd2lsbCBkcm9wIHRoZQomIzQzOwkgKiBwYXNzZWQgc2tiIG9uIGVycm9yLgogCSAqLwogCW5za2IgPSBwLSZndDt4bWl0KHNrYiwgZGV2KTsKLQlpZiAoIW5za2IpIHsKLQkJa2ZyZWVfc2tiKHNrYik7CiYjNDM7CWlmICghbnNrYikKIAkJcmV0dXJuIE5FVERFVl9UWF9PSzsKLQl9CiAKIAlyZXR1cm4gZHNhX2VucXVldWVfc2tiKG5za2IsIGRldik7CiB9CjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI1IDA4OjI5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE4NjgxCgkJCQkJCQlvdXRwdXQ6IDIxCgkJCQkJCQl0aG91Z2h0czogNDE3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgRFNBIFNLQiBNZW1vcnkgTWFuYWdlbWVudCBDaGFuZ2VzKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIHBhdGNoIHNlcmllcyB0b3VjaGluZyBgbmV0L2RzYS90YWdfKi5jYCwgYG5ldC9kc2EvdXNlci5jYCwgYW5kIGBuZXQvZHNhL3RhZy5jYC4gTXkgaW5pdGlhbCByZWFkIGlzIHRoYXQgdGhpcyBpcyBhYm91dCBTS0IgKFNvY2tldCBCdWZmZXIpIG1lbW9yeSBtYW5hZ2VtZW50IGluIHRoZSBEU0EgKERpc3RyaWJ1dGVkIFN3aXRjaCBBcmNoaXRlY3R1cmUpIHRhZ2dlciBmdW5jdGlvbnMuIFNwZWNpZmljYWxseSwgaXQmIzM5O3MgYWJvdXQgZXhwbGljaXRseSBmcmVlaW5nIHRoZSBgc2tiYCB3aXRoaW4gdGhlIHRhZ2dlciBmdW5jdGlvbnMgdGhlbXNlbHZlcywgaW5zdGVhZCBvZiByZWx5aW5nIG9uIHRoZSBjYWxsaW5nIGZ1bmN0aW9ucyAoYGRzYV91c2VyX3htaXRgLCBgZHNhX3N3aXRjaF9yY3ZgKSB0byBoYW5kbGUgaXQgd2hlbiBhIGBOVUxMYCBpcyByZXR1cm5lZC4KCkxldCBtZSBqdXN0IGRvdWJsZS1jaGVjayB0aGF0IGBkc2FfdXNlcl94bWl0YCBjb2RlIHNuaXBwZXQgdG8gYmUgc3VyZToKCmBgYGMKIAluc2tiID0gcC0mZ3Q7eG1pdChza2IsIGRldik7Ci0JaWYgKCFuc2tiKSB7Ci0JCWtmcmVlX3NrYihza2IpOwomIzQzOwlpZiAoIW5za2IpCiAJCXJldHVybiBORVRERVZfVFhfT0s7Ci0JfQpgYGAKCll1cCwgYW5kIHNpbWlsYXJseSBmb3IgYGRzYV9zd2l0Y2hfcmN2YC4uLgoKYGBgYwotCWlmICghbnNrYikgewotCQlrZnJlZV9za2Ioc2tiKTsKJiM0MzsJaWYgKCFuc2tiKQogCQlyZXR1cm4gMDsKLQl9CmBgYAoKU28gdGhlIHRhZ2dlcnMgYXJlIG5vdyBjYWxsaW5nIGBrZnJlZV9za2Ioc2tiKWAgKmJlZm9yZSogcmV0dXJuaW5nIGBOVUxMYC4gSXQmIzM5O3MgZGVmaW5pdGVseSBhIGZ1bmN0aW9uYWwgY2hhbmdlLCBzaGlmdGluZyB3aGVyZSB0aGUgbWVtb3J5IGlzIG1hbmFnZWQsIHRob3VnaCB0aGUgaW50ZW5kZWQgZnVuY3Rpb25hbGl0eSByZW1haW5zIGNvbnNpc3RlbnQuIFRoaXMgaXMgZXNzZW50aWFsbHkgYSBtZW1vcnkgbWFuYWdlbWVudCByZWZhY3RvcmluZyBpbiB0aGUgRFNBIHRhZ2dlciBjb2RlLgoKQnV0IGhlcmUmIzM5O3MgdGhlIGtleSBxdWVzdGlvbiwgZG9lcyB0aGlzICphY3R1YWxseSogY2hhbmdlIHRoZSBleGVjdXRpb24gZmxvdz8gWWVzLCBpdCBkb2VzIGNoYW5nZSB3aGVyZSBga2ZyZWVfc2tiYCBpcyBjYWxsZWQuIFRoYXQmIzM5O3MgdGhlIGNvcmUgb2YgdGhlIGNoYW5nZS4gSXMgdGhpcyBhIGNvZGUgcGF0aCB0aGF0JiMzOTtzIGV2ZW4gZXhlcmNpc2VkIGluIGEgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQgb3IgYnkgZnV6emVycz8gRFNBIGlzIGEgc3Vic3lzdGVtIGZvciBFdGhlcm5ldCBzd2l0Y2hlcywgc28gSSBuZWVkIHRvIHRoaW5rIGFib3V0IGlmIHRoaXMgaXMgcmVhY2hhYmxlLiBXZSBuZWVkIHRvIGNvbnNpZGVyIGhvdyBhY2Nlc3NpYmxlIHRoaXMgY29kZSBpcywgcGFydGljdWxhcmx5IGZvciBzZWN1cml0eSBhdWRpdGluZy4KCkNhbiB3ZSBoaXQgdGhpcyBpbiBzb21ldGhpbmcgbGlrZSBzeXprYWxsZXI/IFN5emthbGxlciBoYXMgc29tZSBEU0Egc3VwcG9ydCwgb3IgYXQgbGVhc3QgdGhlIGFiaWxpdHkgdG8gY3JlYXRlIGR1bW15IERTQSBpbnRlcmZhY2VzIHVzaW5nIHRoZSBgZHNhX2xvb3BgIGRyaXZlci4gSXQmIzM5O3MgdGltZSB0byBjaGVjayBpZiBgQ09ORklHX05FVF9EU0FgIGlzIGVuYWJsZWQgYW5kIGhvdyB3ZSBjYW4gcmVhY2ggdGhpcyBjb2RlLiBJJiMzOTtsbCBuZWVkIHRvIHNlYXJjaCBmb3IgYGRzYV9sb29wYCBhbmQgYGRzYV91c2VyX3htaXRgIGluIHJlbGV2YW50IGJ1aWxkIGNvbmZpZ3VyYXRpb25zIHRvIGNvbmZpcm0uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjUgMDg6Mjk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7ZHNhX3VzZXJfeG1pdCYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtEb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvZHNhL2RzYS5yc3Q9MzE3PUxBRyBzbGF2ZSkuIFRoZXJlZm9yZSwgdGhlIFJYIGRhdGEgcGF0aCBvZiB0aGUgTEFHIERTQSBjb25kdWl0IGlzIG5vdCB1c2VkLlxuRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL2RzYS9kc2EucnN0OjMxODpPbiB0aGUgb3RoZXIgaGFuZCwgVFggdGFrZXMgcGxhY2UgbGluZWFybHk6IGBgZHNhX3VzZXJfeG1pdGBgIGNhbGxzXG5Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvZHNhL2RzYS5yc3QtMzE5LWBgZHNhX2VucXVldWVfc2tiYGAsIHdoaWNoIGNhbGxzIGBgZGV2X3F1ZXVlX3htaXRgYCB0b3dhcmRzIHRoZSBMQUcgRFNBIGNvbmR1aXQuXG4tLVxubmV0L2RzYS91c2VyLmM9OTExPUVYUE9SVF9TWU1CT0xfR1BMKGRzYV9lbnF1ZXVlX3NrYik7XG5uZXQvZHNhL3VzZXIuYy05MTItXG5uZXQvZHNhL3VzZXIuYzo5MTM6c3RhdGljIG5ldGRldl90eF90IGRzYV91c2VyX3htaXQoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IG5ldF9kZXZpY2UgKmRldilcbm5ldC9kc2EvdXNlci5jLTkxNC17XG4tLVxubmV0L2RzYS91c2VyLmM9MjU4Nj1zdGF0aWMgY29uc3Qgc3RydWN0IG5ldF9kZXZpY2Vfb3BzIGRzYV91c2VyX25ldGRldl9vcHMgPSB7XG4tLVxubmV0L2RzYS91c2VyLmMtMjU4OC1cdC5uZG9fc3RvcFx0XHQ9IGRzYV91c2VyX2Nsb3NlLFxubmV0L2RzYS91c2VyLmM6MjU4OTpcdC5uZG9fc3RhcnRfeG1pdFx0XHQ9IGRzYV91c2VyX3htaXQsXG5uZXQvZHNhL3VzZXIuYy0yNTkwLVx0Lm5kb19jaGFuZ2VfcnhfZmxhZ3NcdD0gZHNhX3VzZXJfY2hhbmdlX3J4X2ZsYWdzLFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI1IDA4OjI5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIwMDI5CgkJCQkJCQlvdXRwdXQ6IDE4CgkJCQkJCQl0aG91Z2h0czogMTIxCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkZ1enppbmcgdGhlIERTQSBUYWdnaW5nIENvZGUqKgoKT2theSwgbGV0JiMzOTtzIHRha2UgYSBsb29rIGF0IHRoaXMuIE15IGd1dCB0ZWxscyBtZSB0aGlzIGlzIHJpcGUgZm9yIGZ1enppbmcuIFRoZSBwYXRjaCBpcyB0b3VjaGluZyBgbmV0L2RzYS90YWcuY2AgYW5kIGEgZmV3IG9mIHRoZSBgbmV0L2RzYS90YWdfKi5jYCBmaWxlcywgc28gaXQmIzM5O3MgYWxsIGFib3V0IERTQSB0YWdnaW5nLiBGcm9tIGEgcXVpY2sgZ2xhbmNlLCB0aGUgY2hhbmdlcyBhcmUgY2VudGVyZWQgYXJvdW5kIG1lbW9yeSBtYW5hZ2VtZW50IOKAkyBzcGVjaWZpY2FsbHksIGZyZWVpbmcgYHNrYmAgaW4gZXJyb3IgcGF0aHMuIFRoYXQgaW5zdGFudGx5IHNjcmVhbXMgJiMzNDtwb3RlbnRpYWwgbWVtb3J5IGxlYWsgb3IgZG91YmxlIGZyZWUmIzM0OyB0byBtZS4gSXTigJlzIGRlZmluaXRlbHkgd29ydGggdGhlIGVmZm9ydCB0byB0aHJvdyBzb21lIGZ1enppbmcgYXQgaXQuIE5vdywgd2hhdCYjMzk7cyB0aGUgYXBwcm9wcmlhdGUgc2V0dXA/IEkmIzM5O2xsIG5lZWQgdG8gZW5hYmxlIGBDT05GSUdfTkVUX0RTQWAsIGFuZCBwcm9iYWJseSBzb21lIG9mIHRoZSB0YWdnZXItc3BlY2lmaWMgY29uZmlndXJhdGlvbnMgdG9vLiBMZXQgbWUgZG91YmxlLWNoZWNrIHRoZSBgbmV0L2RzYS9LY29uZmlnYCBmaWxlIHRvIGJlIGNlcnRhaW4gSSBoYXZlIHRoZSByaWdodCBjb25maWd1cmF0aW9uLiBUaW1lIHRvIG1ha2Ugc3VyZSB0aGlzIGNvZGUgaXMgcm9idXN0LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI1IDA4OjI5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBORVRfRFNBJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2RzYS9LY29uZmlnPTU9c291cmNlIFwmIzM0O2RyaXZlcnMvbmV0L2RzYS9iNTMvS2NvbmZpZ1wmIzM0O1xuZHJpdmVycy9uZXQvZHNhL0tjb25maWctNi1cbmRyaXZlcnMvbmV0L2RzYS9LY29uZmlnOjc6Y29uZmlnIE5FVF9EU0FfQkNNX1NGMlxuZHJpdmVycy9uZXQvZHNhL0tjb25maWctOC1cdHRyaXN0YXRlIFwmIzM0O0Jyb2FkY29tIFN0YXJmaWdodGVyIDIgRXRoZXJuZXQgc3dpdGNoIHN1cHBvcnRcJiMzNDtcbi0tXG5kcml2ZXJzL25ldC9kc2EvS2NvbmZpZy0xOC1cbmRyaXZlcnMvbmV0L2RzYS9LY29uZmlnOjE5OmNvbmZpZyBORVRfRFNBX0xPT1BcbmRyaXZlcnMvbmV0L2RzYS9LY29uZmlnLTIwLVx0dHJpc3RhdGUgXCYjMzQ7RFNBIG1vY2stdXAgRXRoZXJuZXQgc3dpdGNoIGNoaXAgc3VwcG9ydFwmIzM0O1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9LY29uZmlnPTI5PXNvdXJjZSBcJiMzNDtkcml2ZXJzL25ldC9kc2EvbGFudGlxL0tjb25maWdcJiMzNDtcbmRyaXZlcnMvbmV0L2RzYS9LY29uZmlnLTMwLVxuZHJpdmVycy9uZXQvZHNhL0tjb25maWc6MzE6Y29uZmlnIE5FVF9EU0FfTVQ3NTMwXG5kcml2ZXJzL25ldC9kc2EvS2NvbmZpZy0zMi1cdHRyaXN0YXRlIFwmIzM0O01lZGlhVGVrIE1UNzUzMCBhbmQgTVQ3NTMxIEV0aGVybmV0IHN3aXRjaCBzdXBwb3J0XCYjMzQ7XG4tLVxuZHJpdmVycy9uZXQvZHNhL0tjb25maWctNDItXG5kcml2ZXJzL25ldC9kc2EvS2NvbmZpZzo0Mzpjb25maWcgTkVUX0RTQV9NVDc1MzBfTURJT1xuZHJpdmVycy9uZXQvZHNhL0tjb25maWctNDQtXHR0cmlzdGF0ZSBcJiMzNDtNZWRpYVRlayBNVDc1MzAgTURJTyBpbnRlcmZhY2UgZHJpdmVyXCYjMzQ7XG4tLVxuZHJpdmVycy9uZXQvZHNhL0tjb25maWctNTMtXG5kcml2ZXJzL25ldC9kc2EvS2NvbmZpZzo1NDpjb25maWcgTkVUX0RTQV9NVDc1MzBfTU1JT1xuZHJpdmVycy9uZXQvZHNhL0tjb25maWctNTUtXHR0cmlzdGF0ZSBcJiMzNDtNZWRpYVRlayBNVDc1MzAgTU1JTyBpbnRlcmZhY2UgZHJpdmVyXCYjMzQ7XG4tLVxuZHJpdmVycy9uZXQvZHNhL0tjb25maWctNjUtXG5kcml2ZXJzL25ldC9kc2EvS2NvbmZpZzo2Njpjb25maWcgTkVUX0RTQV9NVjg4RTYwNjBcbmRyaXZlcnMvbmV0L2RzYS9LY29uZmlnLTY3LVx0dHJpc3RhdGUgXCYjMzQ7TWFydmVsbCA4OEU2MDYwIGV0aGVybmV0IHN3aXRjaCBjaGlwIHN1cHBvcnRcJiMzNDtcbi0tXG5kcml2ZXJzL25ldC9kc2EvS2NvbmZpZz04OT1zb3VyY2UgXCYjMzQ7ZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvS2NvbmZpZ1wmIzM0O1xuZHJpdmVycy9uZXQvZHNhL0tjb25maWctOTAtXG5kcml2ZXJzL25ldC9kc2EvS2NvbmZpZzo5MTpjb25maWcgTkVUX0RTQV9SWk4xX0E1UFNXXG5kcml2ZXJzL25ldC9kc2EvS2NvbmZpZy05Mi1cdHRyaXN0YXRlIFwmIzM0O1JlbmVzYXMgUlovTjEgQTVQU1cgRXRoZXJuZXQgc3dpdGNoIHN1cHBvcnRcJiMzNDtcbi0tXG5kcml2ZXJzL25ldC9kc2EvS2NvbmZpZy05OS1cbmRyaXZlcnMvbmV0L2RzYS9LY29uZmlnOjEwMDpjb25maWcgTkVUX0RTQV9LUzg5OTVcbmRyaXZlcnMvbmV0L2RzYS9LY29uZmlnLTEwMS1cdHRyaXN0YXRlIFwmIzM0O01pY3JlbCBLUzg5OTUgZmFtaWx5IDUtcG9ydHMgMTAvMTAwIEV0aGVybmV0IHN3aXRjaGVzXCYjMzQ7XG4tLVxuZHJpdmVycy9uZXQvZHNhL0tjb25maWctMTA3LVxuZHJpdmVycy9uZXQvZHNhL0tjb25maWc6MTA4OmNvbmZpZyBORVRfRFNBX1NNU0NfTEFOOTMwM1xuZHJpdmVycy9uZXQvZHNhL0tjb25maWctMTA5LVx0dHJpc3RhdGVcbi0tXG5kcml2ZXJzL25ldC9kc2EvS2NvbmZpZy0xMTYtXG5kcml2ZXJzL25ldC9kc2EvS2NvbmZpZzoxMTc6Y29uZmlnIE5FVF9EU0FfU01TQ19MQU45MzAzX0kyQ1xuZHJpdmVycy9uZXQvZHNhL0tjb25maWctMTE4LVx0dHJpc3RhdGUgXCYjMzQ7U01TQy9NaWNyb2NoaXAgTEFOOTMwMyAzLXBvcnRzIDEwLzEwMCBldGhlcm5ldCBzd2l0Y2ggaW4gSTJDIG1hbmFnZWQgbW9kZVwmIzM0O1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9LY29uZmlnLTEyNi1cbmRyaXZlcnMvbmV0L2RzYS9LY29uZmlnOjEyNzpjb25maWcgTkVUX0RTQV9TTVNDX0xBTjkzMDNfTURJT1xuZHJpdmVycy9uZXQvZHNhL0tjb25maWctMTI4LVx0dHJpc3RhdGUgXCYjMzQ7TWljcm9jaGlwIExBTjkzMDMvTEFOOTM1NCAzLXBvcnRzIDEwLzEwMCBldGhlcm5ldCBzd2l0Y2ggaW4gTURJTyBtYW5hZ2VkIG1vZGVcJiMzNDtcbi0tXG5kcml2ZXJzL25ldC9kc2EvS2NvbmZpZy0xMzQtXG5kcml2ZXJzL25ldC9kc2EvS2NvbmZpZzoxMzU6Y29uZmlnIE5FVF9EU0FfVklURVNTRV9WU0M3M1hYXG5kcml2ZXJzL25ldC9kc2EvS2NvbmZpZy0xMzYtXHR0cmlzdGF0ZVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9LY29uZmlnLTE0NC1cbmRyaXZlcnMvbmV0L2RzYS9LY29uZmlnOjE0NTpjb25maWcgTkVUX0RTQV9WSVRFU1NFX1ZTQzczWFhfU1BJXG5kcml2ZXJzL25ldC9kc2EvS2NvbmZpZy0xNDYtXHR0cmlzdGF0ZSBcJiMzNDtWaXRlc3NlIFZTQzczODUvNzM4OC83Mzk1LzczOTggU1BJIG1vZGUgc3VwcG9ydFwmIzM0O1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9LY29uZmlnLTE1Mi1cbmRyaXZlcnMvbmV0L2RzYS9LY29uZmlnOjE1Mzpjb25maWcgTkVUX0RTQV9WSVRFU1NFX1ZTQzczWFhfUExBVEZPUk1cbmRyaXZlcnMvbmV0L2RzYS9LY29uZmlnLTE1NC1cdHRyaXN0YXRlIFwmIzM0O1ZpdGVzc2UgVlNDNzM4NS83Mzg4LzczOTUvNzM5OCBQbGF0Zm9ybSBtb2RlIHN1cHBvcnRcJiMzNDtcbi0tXG5kcml2ZXJzL25ldC9kc2EvS2NvbmZpZy0xNjEtXG5kcml2ZXJzL25ldC9kc2EvS2NvbmZpZzoxNjI6Y29uZmlnIE5FVF9EU0FfWVQ5MjFYXG5kcml2ZXJzL25ldC9kc2EvS2NvbmZpZy0xNjMtXHR0cmlzdGF0ZSBcJiMzNDtNb3RvcmNvbW0gWVQ5MjE1IGV0aGVybmV0IHN3aXRjaCBjaGlwIHN1cHBvcnRcJiMzNDtcbi0tXG5kcml2ZXJzL25ldC9kc2EvaGlyc2NobWFubi9LY29uZmlnLTEtIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMFxuZHJpdmVycy9uZXQvZHNhL2hpcnNjaG1hbm4vS2NvbmZpZzoyOmNvbmZpZyBORVRfRFNBX0hJUlNDSE1BTk5fSEVMTENSRUVLXG5kcml2ZXJzL25ldC9kc2EvaGlyc2NobWFubi9LY29uZmlnLTMtXHR0cmlzdGF0ZSBcJiMzNDtIaXJzY2htYW5uIEhlbGxjcmVlayBUU04gU3dpdGNoIHN1cHBvcnRcJiMzNDtcbi0tXG5kcml2ZXJzL25ldC9kc2EvbGFudGlxL0tjb25maWc6MTpjb25maWcgTkVUX0RTQV9MQU5USVFfQ09NTU9OXG5kcml2ZXJzL25ldC9kc2EvbGFudGlxL0tjb25maWctMi1cdHRyaXN0YXRlXG4tLVxuZHJpdmVycy9uZXQvZHNhL2xhbnRpcS9LY29uZmlnLTQtXG5kcml2ZXJzL25ldC9kc2EvbGFudGlxL0tjb25maWc6NTpjb25maWcgTkVUX0RTQV9MQU5USVFfR1NXSVBcbmRyaXZlcnMvbmV0L2RzYS9sYW50aXEvS2NvbmZpZy02LVx0dHJpc3RhdGUgXCYjMzQ7TGFudGlxIC8gSW50ZWwgR1NXSVBcJiMzNDtcbi0tXG5kcml2ZXJzL25ldC9kc2EvbGFudGlxL0tjb25maWctMTMtXG5kcml2ZXJzL25ldC9kc2EvbGFudGlxL0tjb25maWc6MTQ6Y29uZmlnIE5FVF9EU0FfTVhMX0dTVzFYWFxuZHJpdmVycy9uZXQvZHNhL2xhbnRpcS9LY29uZmlnLTE1LVx0dHJpc3RhdGUgXCYjMzQ7TWF4TGluZWFyIEdTVzF4eCBFdGhlcm5ldCBzd2l0Y2ggc3VwcG9ydFwmIzM0O1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAvS2NvbmZpZy0xLSMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9LY29uZmlnOjI6bWVudWNvbmZpZyBORVRfRFNBX01JQ1JPQ0hJUF9LU1pfQ09NTU9OXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL0tjb25maWctMy1cdHRyaXN0YXRlIFwmIzM0O01pY3JvY2hpcCBLU1o4WFhYL0tTWjlYWFgvTEFOOTM3WCBzZXJpZXMgc3dpdGNoIHN1cHBvcnRcJiMzNDtcbi0tXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL0tjb25maWctMTYtXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL0tjb25maWc6MTc6Y29uZmlnIE5FVF9EU0FfTUlDUk9DSElQX0tTWjk0NzdfSTJDXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL0tjb25maWctMTgtXHR0cmlzdGF0ZSBcJiMzNDtLU1ogc2VyaWVzIEkyQyBjb25uZWN0ZWQgc3dpdGNoIGRyaXZlclwmIzM0O1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAvS2NvbmZpZy0yMy1cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAvS2NvbmZpZzoyNDpjb25maWcgTkVUX0RTQV9NSUNST0NISVBfS1NaX1NQSVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9LY29uZmlnLTI1LVx0dHJpc3RhdGUgXCYjMzQ7S1NaIHNlcmllcyBTUEkgY29ubmVjdGVkIHN3aXRjaCBkcml2ZXJcJiMzNDtcbi0tXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL0tjb25maWctMzAtXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL0tjb25maWc6MzE6Y29uZmlnIE5FVF9EU0FfTUlDUk9DSElQX0tTWl9QVFBcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAvS2NvbmZpZy0zMi1cdGJvb2wgXCYjMzQ7U3VwcG9ydCBmb3IgdGhlIFBUUCBjbG9jayBvbiB0aGUgS1NaOTU2My9MQU45Mzd4IEV0aGVybmV0IFN3aXRjaFwmIzM0O1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAvS2NvbmZpZy00MC1cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAvS2NvbmZpZzo0MTpjb25maWcgTkVUX0RTQV9NSUNST0NISVBfS1NaODg2M19TTUlcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAvS2NvbmZpZy00Mi1cdHRyaXN0YXRlIFwmIzM0O0tTWiBzZXJpZXMgU01JIGNvbm5lY3RlZCBzd2l0Y2ggZHJpdmVyXCYjMzQ7XG4tLVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9LY29uZmlnLTEtIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L0tjb25maWc6Mjpjb25maWcgTkVUX0RTQV9NVjg4RTZYWFhcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvS2NvbmZpZy0zLVx0dHJpc3RhdGUgXCYjMzQ7TWFydmVsbCA4OEU2eHh4IEV0aGVybmV0IHN3aXRjaCBmYWJyaWMgc3VwcG9ydFwmIzM0O1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvS2NvbmZpZy0xMS1cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvS2NvbmZpZzoxMjpjb25maWcgTkVUX0RTQV9NVjg4RTZYWFhfUFRQXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L0tjb25maWctMTMtXHRib29sIFwmIzM0O1BUUCBzdXBwb3J0IGZvciBNYXJ2ZWxsIDg4RTZ4eHhcJiMzNDtcbi0tXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L0tjb25maWctMjAtXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L0tjb25maWc6MjE6Y29uZmlnIE5FVF9EU0FfTVY4OEU2WFhYX0xFRFNcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvS2NvbmZpZy0yMi1cdGJvb2wgXCYjMzQ7TEVEIHN1cHBvcnQgZm9yIE1hcnZlbGwgODhFNnh4eFwmIzM0O1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9LY29uZmlnLTEtIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XG5kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvS2NvbmZpZzoyOmNvbmZpZyBORVRfRFNBX01YTDg2MlxuZHJpdmVycy9uZXQvZHNhL214bDg2Mnh4L0tjb25maWctMy1cdHRyaXN0YXRlIFwmIzM0O01heExpbmVhciBNeEw4NjJ4eFwmIzM0O1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9uZXRjL0tjb25maWctMS0jIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcbmRyaXZlcnMvbmV0L2RzYS9uZXRjL0tjb25maWc6Mjpjb25maWcgTkVUX0RTQV9ORVRDX1NXSVRDSFxuZHJpdmVycy9uZXQvZHNhL25ldGMvS2NvbmZpZy0zLVx0dHJpc3RhdGUgXCYjMzQ7TlhQIE5FVEMgRXRoZXJuZXQgc3dpdGNoIHN1cHBvcnRcJiMzNDtcbi0tXG5kcml2ZXJzL25ldC9kc2Evb2NlbG90L0tjb25maWctMS0jIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcbmRyaXZlcnMvbmV0L2RzYS9vY2Vsb3QvS2NvbmZpZzoyOmNvbmZpZyBORVRfRFNBX01TQ0NfRkVMSVhfRFNBX0xJQlxuZHJpdmVycy9uZXQvZHNhL29jZWxvdC9LY29uZmlnLTMtXHR0cmlzdGF0ZVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9vY2Vsb3QvS2NvbmZpZy0xMC1cbmRyaXZlcnMvbmV0L2RzYS9vY2Vsb3QvS2NvbmZpZzoxMTpjb25maWcgTkVUX0RTQV9NU0NDX09DRUxPVF9FWFRcbmRyaXZlcnMvbmV0L2RzYS9vY2Vsb3QvS2NvbmZpZy0xMi1cdHRyaXN0YXRlIFwmIzM0O09jZWxvdCBFeHRlcm5hbCBFdGhlcm5ldCBzd2l0Y2ggc3VwcG9ydFwmIzM0O1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9vY2Vsb3QvS2NvbmZpZy0zMS1cbmRyaXZlcnMvbmV0L2RzYS9vY2Vsb3QvS2NvbmZpZzozMjpjb25maWcgTkVUX0RTQV9NU0NDX0ZFTElYXG5kcml2ZXJzL25ldC9kc2Evb2NlbG90L0tjb25maWctMzMtXHR0cmlzdGF0ZSBcJiMzNDtPY2Vsb3QgLyBGZWxpeCBFdGhlcm5ldCBzd2l0Y2ggc3VwcG9ydFwmIzM0O1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9vY2Vsb3QvS2NvbmZpZy00OS1cbmRyaXZlcnMvbmV0L2RzYS9vY2Vsb3QvS2NvbmZpZzo1MDpjb25maWcgTkVUX0RTQV9NU0NDX1NFVklMTEVcbmRyaXZlcnMvbmV0L2RzYS9vY2Vsb3QvS2NvbmZpZy01MS1cdHRyaXN0YXRlIFwmIzM0O09jZWxvdCAvIFNldmlsbGUgRXRoZXJuZXQgc3dpdGNoIHN1cHBvcnRcJiMzNDtcbi0tXG5kcml2ZXJzL25ldC9kc2EvcWNhL0tjb25maWctMS0jIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcbmRyaXZlcnMvbmV0L2RzYS9xY2EvS2NvbmZpZzoyOmNvbmZpZyBORVRfRFNBX0FSOTMzMVxuZHJpdmVycy9uZXQvZHNhL3FjYS9LY29uZmlnLTMtXHR0cmlzdGF0ZSBcJiMzNDtRdWFsY29tbSBBdGhlcm9zIEFSOTMzMSBFdGhlcm5ldCBzd2l0Y2ggc3VwcG9ydFwmIzM0O1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9xY2EvS2NvbmZpZy0xMC1cbmRyaXZlcnMvbmV0L2RzYS9xY2EvS2NvbmZpZzoxMTpjb25maWcgTkVUX0RTQV9RQ0E4S1xuZHJpdmVycy9uZXQvZHNhL3FjYS9LY29uZmlnLTEyLVx0dHJpc3RhdGUgXCYjMzQ7UXVhbGNvbW0gQXRoZXJvcyBRQ0E4SyBFdGhlcm5ldCBzd2l0Y2ggZmFtaWx5IHN1cHBvcnRcJiMzNDtcbi0tXG5kcml2ZXJzL25ldC9kc2EvcWNhL0tjb25maWctMTgtXG5kcml2ZXJzL25ldC9kc2EvcWNhL0tjb25maWc6MTk6Y29uZmlnIE5FVF9EU0FfUUNBOEtfTEVEU19TVVBQT1JUXG5kcml2ZXJzL25ldC9kc2EvcWNhL0tjb25maWctMjAtXHRib29sIFwmIzM0O1F1YWxjb21tIEF0aGVyb3MgUUNBOEsgRXRoZXJuZXQgc3dpdGNoIGZhbWlseSBMRURzIHN1cHBvcnRcJiMzNDtcbi0tXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9LY29uZmlnLTEtIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9LY29uZmlnOjI6bWVudWNvbmZpZyBORVRfRFNBX1JFQUxURUtcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL0tjb25maWctMy1cdHRyaXN0YXRlIFwmIzM0O1JlYWx0ZWsgRXRoZXJuZXQgc3dpdGNoIGZhbWlseSBzdXBwb3J0XCYjMzQ7XG4tLVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvS2NvbmZpZz0xNj1pZiBORVRfRFNBX1JFQUxURUtcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL0tjb25maWctMTctXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9LY29uZmlnOjE4OmNvbmZpZyBORVRfRFNBX1JFQUxURUtfTURJT1xuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvS2NvbmZpZy0xOS1cdGJvb2wgXCYjMzQ7UmVhbHRlayBNRElPIGludGVyZmFjZSBzdXBwb3J0XCYjMzQ7XG4tLVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvS2NvbmZpZy0yNC1cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL0tjb25maWc6MjU6Y29uZmlnIE5FVF9EU0FfUkVBTFRFS19TTUlcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL0tjb25maWctMjYtXHRib29sIFwmIzM0O1JlYWx0ZWsgU01JIGludGVyZmFjZSBzdXBwb3J0XCYjMzQ7XG4tLVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvS2NvbmZpZy0zMS1cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL0tjb25maWc6MzI6Y29uZmlnIE5FVF9EU0FfUkVBTFRFS19SVEw4MzY1TUJcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL0tjb25maWctMzMtXHR0cmlzdGF0ZSBcJiMzNDtSZWFsdGVrIFJUTDgzNjVNQiBzd2l0Y2ggZHJpdmVyXCYjMzQ7XG4tLVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvS2NvbmZpZy0zOC1cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL0tjb25maWc6Mzk6Y29uZmlnIE5FVF9EU0FfUkVBTFRFS19SVEw4MzY2UkJcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL0tjb25maWctNDAtXHR0cmlzdGF0ZSBcJiMzNDtSZWFsdGVrIFJUTDgzNjZSQiBzd2l0Y2ggZHJpdmVyXCYjMzQ7XG4tLVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvS2NvbmZpZy00NS1cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL0tjb25maWc6NDY6Y29uZmlnIE5FVF9EU0FfUkVBTFRFS19SVEw4MzY2UkJfTEVEU1xuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvS2NvbmZpZy00Ny1cdGJvb2xcbi0tXG5kcml2ZXJzL25ldC9kc2Evc2phMTEwNS9LY29uZmlnLTEtIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XG5kcml2ZXJzL25ldC9kc2Evc2phMTEwNS9LY29uZmlnOjI6Y29uZmlnIE5FVF9EU0FfU0pBMTEwNVxuZHJpdmVycy9uZXQvZHNhL3NqYTExMDUvS2NvbmZpZy0zLXRyaXN0YXRlIFwmIzM0O05YUCBTSkExMTA1IEV0aGVybmV0IHN3aXRjaCBmYW1pbHkgc3VwcG9ydFwmIzM0O1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9zamExMTA1L0tjb25maWctMjUtXG5kcml2ZXJzL25ldC9kc2Evc2phMTEwNS9LY29uZmlnOjI2OmNvbmZpZyBORVRfRFNBX1NKQTExMDVfUFRQXG5kcml2ZXJzL25ldC9kc2Evc2phMTEwNS9LY29uZmlnLTI3LVx0Ym9vbCBcJiMzNDtTdXBwb3J0IGZvciB0aGUgUFRQIGNsb2NrIG9uIHRoZSBOWFAgU0pBMTEwNSBFdGhlcm5ldCBzd2l0Y2hcJiMzNDtcbi0tXG5kcml2ZXJzL25ldC9kc2Evc2phMTEwNS9LY29uZmlnLTMzLVxuZHJpdmVycy9uZXQvZHNhL3NqYTExMDUvS2NvbmZpZzozNDpjb25maWcgTkVUX0RTQV9TSkExMTA1X1RBU1xuZHJpdmVycy9uZXQvZHNhL3NqYTExMDUvS2NvbmZpZy0zNS1cdGJvb2wgXCYjMzQ7U3VwcG9ydCBmb3IgdGhlIFRpbWUtQXdhcmUgU2NoZWR1bGVyIG9uIE5YUCBTSkExMTA1XCYjMzQ7XG4tLVxuZHJpdmVycy9uZXQvZHNhL3NqYTExMDUvS2NvbmZpZy00My1cbmRyaXZlcnMvbmV0L2RzYS9zamExMTA1L0tjb25maWc6NDQ6Y29uZmlnIE5FVF9EU0FfU0pBMTEwNV9WTFxuZHJpdmVycy9uZXQvZHNhL3NqYTExMDUvS2NvbmZpZy00NS1cdGJvb2wgXCYjMzQ7U3VwcG9ydCBmb3IgVmlydHVhbCBMaW5rcyBvbiBOWFAgU0pBMTEwNVwmIzM0O1xuLS1cbmRyaXZlcnMvbmV0L2RzYS94cnM3MDB4L0tjb25maWctMS0jIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcbmRyaXZlcnMvbmV0L2RzYS94cnM3MDB4L0tjb25maWc6Mjpjb25maWcgTkVUX0RTQV9YUlM3MDBYXG5kcml2ZXJzL25ldC9kc2EveHJzNzAweC9LY29uZmlnLTMtXHR0cmlzdGF0ZVxuLS1cbmRyaXZlcnMvbmV0L2RzYS94cnM3MDB4L0tjb25maWctMTAtXG5kcml2ZXJzL25ldC9kc2EveHJzNzAweC9LY29uZmlnOjExOmNvbmZpZyBORVRfRFNBX1hSUzcwMFhfSTJDXG5kcml2ZXJzL25ldC9kc2EveHJzNzAweC9LY29uZmlnLTEyLVx0dHJpc3RhdGUgXCYjMzQ7QXJyb3cgWFJTNzAwMFggc2VyaWVzIHN3aXRjaCBpbiBJMkMgbW9kZVwmIzM0O1xuLS1cbmRyaXZlcnMvbmV0L2RzYS94cnM3MDB4L0tjb25maWctMTktXG5kcml2ZXJzL25ldC9kc2EveHJzNzAweC9LY29uZmlnOjIwOmNvbmZpZyBORVRfRFNBX1hSUzcwMFhfTURJT1xuZHJpdmVycy9uZXQvZHNhL3hyczcwMHgvS2NvbmZpZy0yMS1cdHRyaXN0YXRlIFwmIzM0O0Fycm93IFhSUzcwMDBYIHNlcmllcyBzd2l0Y2ggaW4gTURJTyBtb2RlXCYjMzQ7XG4tLVxubmV0L2RzYS9LY29uZmlnLTItXG5uZXQvZHNhL0tjb25maWc6MzptZW51Y29uZmlnIE5FVF9EU0Fcbm5ldC9kc2EvS2NvbmZpZy00LVx0dHJpc3RhdGUgXCYjMzQ7RGlzdHJpYnV0ZWQgU3dpdGNoIEFyY2hpdGVjdHVyZVwmIzM0O1xuLS1cbm5ldC9kc2EvS2NvbmZpZz0xNz1pZiBORVRfRFNBXG4tLVxubmV0L2RzYS9LY29uZmlnLTIwLVxubmV0L2RzYS9LY29uZmlnOjIxOmNvbmZpZyBORVRfRFNBX1RBR19OT05FXG5uZXQvZHNhL0tjb25maWctMjItXHR0cmlzdGF0ZSBcJiMzNDtOby1vcCB0YWcgZHJpdmVyXCYjMzQ7XG4tLVxubmV0L2RzYS9LY29uZmlnLTI2LVxubmV0L2RzYS9LY29uZmlnOjI3OmNvbmZpZyBORVRfRFNBX1RBR19BUjkzMzFcbm5ldC9kc2EvS2NvbmZpZy0yOC1cdHRyaXN0YXRlIFwmIzM0O1RhZyBkcml2ZXIgZm9yIEF0aGVyb3MgQVI5MzMxIFNvQyB3aXRoIGJ1aWx0LWluIHN3aXRjaFwmIzM0O1xuLS1cbm5ldC9kc2EvS2NvbmZpZy0zMi1cbm5ldC9kc2EvS2NvbmZpZzozMzpjb25maWcgTkVUX0RTQV9UQUdfQlJDTV9DT01NT05cbm5ldC9kc2EvS2NvbmZpZy0zNC1cdHRyaXN0YXRlXG4tLVxubmV0L2RzYS9LY29uZmlnLTM2LVxubmV0L2RzYS9LY29uZmlnOjM3OmNvbmZpZyBORVRfRFNBX1RBR19CUkNNXG5uZXQvZHNhL0tjb25maWctMzgtXHR0cmlzdGF0ZSBcJiMzNDtUYWcgZHJpdmVyIGZvciBCcm9hZGNvbSBzd2l0Y2hlcyB1c2luZyBpbi1mcmFtZSBoZWFkZXJzXCYjMzQ7XG4tLVxubmV0L2RzYS9LY29uZmlnLTQzLVxubmV0L2RzYS9LY29uZmlnOjQ0OmNvbmZpZyBORVRfRFNBX1RBR19CUkNNX0xFR0FDWVxubmV0L2RzYS9LY29uZmlnLTQ1LVx0dHJpc3RhdGUgXCYjMzQ7VGFnIGRyaXZlciBmb3IgQkNNNjN4eCBsZWdhY3kgc3dpdGNoZXMgdXNpbmcgaW4tZnJhbWUgaGVhZGVyc1wmIzM0O1xuLS1cbm5ldC9kc2EvS2NvbmZpZy01My1cbm5ldC9kc2EvS2NvbmZpZzo1NDpjb25maWcgTkVUX0RTQV9UQUdfQlJDTV9MRUdBQ1lfRkNTXG5uZXQvZHNhL0tjb25maWctNTUtXHR0cmlzdGF0ZSBcJiMzNDtUYWcgZHJpdmVyIGZvciBCQ001M3h4IGxlZ2FjeSBzd2l0Y2hlcyB1c2luZyBpbi1mcmFtZSBoZWFkZXJzXCYjMzQ7XG4tLVxubmV0L2RzYS9LY29uZmlnLTYzLVxubmV0L2RzYS9LY29uZmlnOjY0OmNvbmZpZyBORVRfRFNBX1RBR19CUkNNX1BSRVBFTkRcbm5ldC9kc2EvS2NvbmZpZy02NS1cdHRyaXN0YXRlIFwmIzM0O1RhZyBkcml2ZXIgZm9yIEJyb2FkY29tIHN3aXRjaGVzIHVzaW5nIHByZXBlbmRlZCBoZWFkZXJzXCYjMzQ7XG4tLVxubmV0L2RzYS9LY29uZmlnLTcxLVxubmV0L2RzYS9LY29uZmlnOjcyOmNvbmZpZyBORVRfRFNBX1RBR19IRUxMQ1JFRUtcbm5ldC9kc2EvS2NvbmZpZy03My1cdHRyaXN0YXRlIFwmIzM0O1RhZyBkcml2ZXIgZm9yIEhpcnNjaG1hbm4gSGVsbGNyZWVrIFRTTiBzd2l0Y2hlc1wmIzM0O1xuLS1cbm5ldC9kc2EvS2NvbmZpZy03Ny1cbm5ldC9kc2EvS2NvbmZpZzo3ODpjb25maWcgTkVUX0RTQV9UQUdfR1NXSVBcbm5ldC9kc2EvS2NvbmZpZy03OS1cdHRyaXN0YXRlIFwmIzM0O1RhZyBkcml2ZXIgZm9yIExhbnRpcSAvIEludGVsIEdTV0lQIHN3aXRjaGVzXCYjMzQ7XG4tLVxubmV0L2RzYS9LY29uZmlnLTgzLVxubmV0L2RzYS9LY29uZmlnOjg0OmNvbmZpZyBORVRfRFNBX1RBR19EU0FfQ09NTU9OXG5uZXQvZHNhL0tjb25maWctODUtXHR0cmlzdGF0ZVxubmV0L2RzYS9LY29uZmlnLTg2LVxubmV0L2RzYS9LY29uZmlnOjg3OmNvbmZpZyBORVRfRFNBX1RBR19EU0Fcbm5ldC9kc2EvS2NvbmZpZy04OC1cdHRyaXN0YXRlIFwmIzM0O1RhZyBkcml2ZXIgZm9yIE1hcnZlbGwgc3dpdGNoZXMgdXNpbmcgRFNBIGhlYWRlcnNcJiMzNDtcbi0tXG5uZXQvZHNhL0tjb25maWctOTMtXG5uZXQvZHNhL0tjb25maWc6OTQ6Y29uZmlnIE5FVF9EU0FfVEFHX0VEU0Fcbm5ldC9kc2EvS2NvbmZpZy05NS1cdHRyaXN0YXRlIFwmIzM0O1RhZyBkcml2ZXIgZm9yIE1hcnZlbGwgc3dpdGNoZXMgdXNpbmcgRXRoZXJUeXBlIERTQSBoZWFkZXJzXCYjMzQ7XG4tLVxubmV0L2RzYS9LY29uZmlnLTEwMC1cbm5ldC9kc2EvS2NvbmZpZzoxMDE6Y29uZmlnIE5FVF9EU0FfVEFHX01US1xubmV0L2RzYS9LY29uZmlnLTEwMi1cdHRyaXN0YXRlIFwmIzM0O1RhZyBkcml2ZXIgZm9yIE1lZGlhdGVrIHN3aXRjaGVzXCYjMzQ7XG4tLVxubmV0L2RzYS9LY29uZmlnLTEwNi1cbm5ldC9kc2EvS2NvbmZpZzoxMDc6Y29uZmlnIE5FVF9EU0FfVEFHX01YTF84NjJYWFxubmV0L2RzYS9LY29uZmlnLTEwOC1cdHRyaXN0YXRlIFwmIzM0O1RhZyBkcml2ZXIgZm9yIE1heExpbmVhciBNeEw4NjJ4eCBzd2l0Y2hlc1wmIzM0O1xuLS1cbm5ldC9kc2EvS2NvbmZpZy0xMTMtXG5uZXQvZHNhL0tjb25maWc6MTE0OmNvbmZpZyBORVRfRFNBX1RBR19NWExfR1NXMVhYXG5uZXQvZHNhL0tjb25maWctMTE1LVx0dHJpc3RhdGUgXCYjMzQ7VGFnIGRyaXZlciBmb3IgTWF4TGluZWFyIEdTVzF4eCBzd2l0Y2hlc1wmIzM0O1xuLS1cbm5ldC9kc2EvS2NvbmZpZy0xMjEtXG5uZXQvZHNhL0tjb25maWc6MTIyOmNvbmZpZyBORVRfRFNBX1RBR19LU1pcbm5ldC9kc2EvS2NvbmZpZy0xMjMtXHR0cmlzdGF0ZSBcJiMzNDtUYWcgZHJpdmVyIGZvciBNaWNyb2NoaXAgODc5NS85Mzd4Lzk0NzcvOTg5MyBmYW1pbGllcyBvZiBzd2l0Y2hlc1wmIzM0O1xuLS1cbm5ldC9kc2EvS2NvbmZpZy0xMjctXG5uZXQvZHNhL0tjb25maWc6MTI4OmNvbmZpZyBORVRfRFNBX1RBR19ORVRDXG5uZXQvZHNhL0tjb25maWctMTI5LVx0dHJpc3RhdGUgXCYjMzQ7VGFnIGRyaXZlciBmb3IgTlhQIE5FVEMgc3dpdGNoZXNcJiMzNDtcbi0tXG5uZXQvZHNhL0tjb25maWctMTM3LVxubmV0L2RzYS9LY29uZmlnOjEzODpjb25maWcgTkVUX0RTQV9UQUdfT0NFTE9UXG5uZXQvZHNhL0tjb25maWctMTM5LVx0dHJpc3RhdGUgXCYjMzQ7VGFnIGRyaXZlciBmb3IgT2NlbG90IGZhbWlseSBvZiBzd2l0Y2hlcywgdXNpbmcgTlBJIHBvcnRcJiMzNDtcbi0tXG5uZXQvZHNhL0tjb25maWctMTQ4LVxubmV0L2RzYS9LY29uZmlnOjE0OTpjb25maWcgTkVUX0RTQV9UQUdfT0NFTE9UXzgwMjFRXG5uZXQvZHNhL0tjb25maWctMTUwLVx0dHJpc3RhdGUgXCYjMzQ7VGFnIGRyaXZlciBmb3IgT2NlbG90IGZhbWlseSBvZiBzd2l0Y2hlcywgdXNpbmcgVkxBTlwmIzM0O1xuLS1cbm5ldC9kc2EvS2NvbmZpZy0xNTgtXG5uZXQvZHNhL0tjb25maWc6MTU5OmNvbmZpZyBORVRfRFNBX1RBR19RQ0Fcbm5ldC9kc2EvS2NvbmZpZy0xNjAtXHR0cmlzdGF0ZSBcJiMzNDtUYWcgZHJpdmVyIGZvciBRdWFsY29tbSBBdGhlcm9zIFFDQThLIHN3aXRjaGVzXCYjMzQ7XG4tLVxubmV0L2RzYS9LY29uZmlnLTE2NC1cbm5ldC9kc2EvS2NvbmZpZzoxNjU6Y29uZmlnIE5FVF9EU0FfVEFHX1JUTDRfQVxubmV0L2RzYS9LY29uZmlnLTE2Ni1cdHRyaXN0YXRlIFwmIzM0O1RhZyBkcml2ZXIgZm9yIFJlYWx0ZWsgNCBieXRlIHByb3RvY29sIEEgdGFnc1wmIzM0O1xuLS1cbm5ldC9kc2EvS2NvbmZpZy0xNzEtXG5uZXQvZHNhL0tjb25maWc6MTcyOmNvbmZpZyBORVRfRFNBX1RBR19SVEw4XzRcbm5ldC9kc2EvS2NvbmZpZy0xNzMtXHR0cmlzdGF0ZSBcJiMzNDtUYWcgZHJpdmVyIGZvciBSZWFsdGVrIDggYnl0ZSBwcm90b2NvbCA0IHRhZ3NcJiMzNDtcbi0tXG5uZXQvZHNhL0tjb25maWctMTc3LVxubmV0L2RzYS9LY29uZmlnOjE3ODpjb25maWcgTkVUX0RTQV9UQUdfUlpOMV9BNVBTV1xubmV0L2RzYS9LY29uZmlnLTE3OS1cdHRyaXN0YXRlIFwmIzM0O1RhZyBkcml2ZXIgZm9yIFJlbmVzYXMgUlovTjEgQTVQU1cgc3dpdGNoXCYjMzQ7XG4tLVxubmV0L2RzYS9LY29uZmlnLTE4NC1cbm5ldC9kc2EvS2NvbmZpZzoxODU6Y29uZmlnIE5FVF9EU0FfVEFHX0xBTjkzMDNcbm5ldC9kc2EvS2NvbmZpZy0xODYtXHR0cmlzdGF0ZSBcJiMzNDtUYWcgZHJpdmVyIGZvciBTTVNDL01pY3JvY2hpcCBMQU45MzAzIGZhbWlseSBvZiBzd2l0Y2hlc1wmIzM0O1xuLS1cbm5ldC9kc2EvS2NvbmZpZy0xOTAtXG5uZXQvZHNhL0tjb25maWc6MTkxOmNvbmZpZyBORVRfRFNBX1RBR19TSkExMTA1XG5uZXQvZHNhL0tjb25maWctMTkyLVx0dHJpc3RhdGUgXCYjMzQ7VGFnIGRyaXZlciBmb3IgTlhQIFNKQTExMDUgc3dpdGNoZXNcJiMzNDtcbi0tXG5uZXQvZHNhL0tjb25maWctMTk5LVxubmV0L2RzYS9LY29uZmlnOjIwMDpjb25maWcgTkVUX0RTQV9UQUdfVFJBSUxFUlxubmV0L2RzYS9LY29uZmlnLTIwMS1cdHRyaXN0YXRlIFwmIzM0O1RhZyBkcml2ZXIgZm9yIHN3aXRjaGVzIHVzaW5nIGEgdHJhaWxlciB0YWdcJiMzNDtcbi0tXG5uZXQvZHNhL0tjb25maWctMjA1LVxubmV0L2RzYS9LY29uZmlnOjIwNjpjb25maWcgTkVUX0RTQV9UQUdfVlNDNzNYWF84MDIxUVxubmV0L2RzYS9LY29uZmlnLTIwNy1cdHRyaXN0YXRlIFwmIzM0O1RhZyBkcml2ZXIgZm9yIE1pY3JvY2hpcC9WaXRlc3NlIFZTQzczeHggZmFtaWx5IG9mIHN3aXRjaGVzLCB1c2luZyBWTEFOXCYjMzQ7XG4tLVxubmV0L2RzYS9LY29uZmlnLTIxMS1cbm5ldC9kc2EvS2NvbmZpZzoyMTI6Y29uZmlnIE5FVF9EU0FfVEFHX1hSUzcwMFhcbm5ldC9kc2EvS2NvbmZpZy0yMTMtXHR0cmlzdGF0ZSBcJiMzNDtUYWcgZHJpdmVyIGZvciBYUlM3MDB4IHN3aXRjaGVzXCYjMzQ7XG4tLVxubmV0L2RzYS9LY29uZmlnLTIxNy1cbm5ldC9kc2EvS2NvbmZpZzoyMTg6Y29uZmlnIE5FVF9EU0FfVEFHX1lUOTIxWFxubmV0L2RzYS9LY29uZmlnLTIxOS1cdHRyaXN0YXRlIFwmIzM0O1RhZyBkcml2ZXIgZm9yIE1vdG9yY29tbSBZVDkyMXggc3dpdGNoZXNcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yNSAwODoyOTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyNjY4OQoJCQkJCQkJb3V0cHV0OiAyMAoJCQkJCQkJdGhvdWdodHM6IDU3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkVuYWJsaW5nIERTQSBmb3IgRnV6emluZyoqCgpPa2F5LCBzbyB3ZSYjMzk7cmUgbG9va2luZyB0byBleHBhbmQgb3VyIGZ1enppbmcgY2FwYWJpbGl0aWVzIHdpdGhpbiB0aGUgbmV0d29ya2luZyBzdGFjay4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHdlIG5lZWQgdG8gZW5hYmxlIGBORVRfRFNBYCBhbmQgYWxzbyBzb21lIG9mIHRob3NlIHRhZ2dlcnMuIEJ1dCBob2xkIG9uLCBJIHJlbWVtYmVyIGBORVRfRFNBX0xPT1BgIOKAkyB0aGF0JiMzOTtzIHRoZSBtb2NrLXVwIHN3aXRjaCBjaGlwIHN1cHBvcnQsIGlzbiYjMzk7dCBpdD8gQmluZ28hIFRoYXQmIzM5O3MgYSBwZXJmZWN0IGNhbmRpZGF0ZSBmb3IgZGVlcGVyIERTQSBmdXp6aW5nLiBUaGUgc2ltdWxhdGVkIGVudmlyb25tZW50IGl0IHByb3ZpZGVzIHNlZW1zIGlkZWFsLiBOb3csIGJlZm9yZSB3ZSBkaXZlIGluLCBJIG5lZWQgdG8gY29uZmlybSB0aGUgZGVwZW5kZW5jaWVzIGZvciBgTkVUX0RTQV9MT09QYC4gTGV0IG1lIHF1aWNrbHkgY2hlY2sgdGhvc2XigKYgZ290dGEgbWFrZSBzdXJlIGV2ZXJ5dGhpbmcgaXMgaW4gcGxhY2UgdG8gbWluaW1pemUgYW55IHNldHVwIGhlYWRhY2hlcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD44LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yNSAwODoyOTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgTkVUX0RTQV9MT09QJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2RzYS9LY29uZmlnPTc9Y29uZmlnIE5FVF9EU0FfQkNNX1NGMlxuLS1cbmRyaXZlcnMvbmV0L2RzYS9LY29uZmlnLTE4LVxuZHJpdmVycy9uZXQvZHNhL0tjb25maWc6MTk6Y29uZmlnIE5FVF9EU0FfTE9PUFxuZHJpdmVycy9uZXQvZHNhL0tjb25maWctMjAtXHR0cmlzdGF0ZSBcJiMzNDtEU0EgbW9jay11cCBFdGhlcm5ldCBzd2l0Y2ggY2hpcCBzdXBwb3J0XCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjUgMDg6Mjk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjcwMDcKCQkJCQkJCW91dHB1dDogMzYKCQkJCQkJCXRob3VnaHRzOiAyNAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB0aG91Z2h0IHByb2Nlc3MsIHN1bW1hcml6ZWQgYXMgeW91IHJlcXVlc3RlZDoKCioqTmF2aWdhdGluZyB0aGUgQ29kZWJhc2U6IE5FVF9EU0FfTE9PUCBDb25maWd1cmF0aW9uKioKCk9rYXksIHNvIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBjb25maWd1cmF0aW9uIHJlbGF0ZWQgdG8gdGhlIGBORVRfRFNBX0xPT1BgIGZ1bmN0aW9uYWxpdHkgd2l0aGluIHRoZSBuZXR3b3JrIERTQSBzdWJzeXN0ZW0uIFdoZXJlIHdvdWxkIHRoZSByZWxldmFudCBzZXR0aW5ncyBiZSBkZWZpbmVkPyBNeSBpbml0aWFsIGluc3RpbmN0IGlzIHRvIGdvIHN0cmFpZ2h0IHRvIHRoZSBjb25maWd1cmF0aW9uIGZpbGVzLiBHaXZlbiB0aGUgbmF0dXJlIG9mIHRoaXMgZmVhdHVyZSwgSSYjMzk7bSBleHBlY3RpbmcgdG8gZmluZCBpdCB3aXRoaW4gdGhlIGBkcml2ZXJzL25ldC9kc2FgIGRpcmVjdG9yeSwgd2hpY2ggaXMgdGhlIHN0YW5kYXJkIGxvY2F0aW9uIGZvciBEU0EgKERpc3RyaWJ1dGVkIFN3aXRjaCBBcmNoaXRlY3R1cmUpIHJlbGF0ZWQgZHJpdmVycy4gTW9yZSBzcGVjaWZpY2FsbHksIEkgc2hvdWxkIGJlIGFibGUgdG8gZGlnIGFyb3VuZCBpbiBgS2NvbmZpZ2AgZmlsZXMgZm9yIGNvbmZpZ3VyYXRpb24gb3B0aW9ucy4gVGhlcmVmb3JlLCBJIHdpbGwgY2hlY2sgdGhlIGBkcml2ZXJzL25ldC9kc2EvS2NvbmZpZ2AgZmlsZS4gVGhhdCYjMzk7cyB0aGUgbW9zdCBsb2dpY2FsIHN0YXJ0aW5nIHBvaW50IGZvciB1bmRlcnN0YW5kaW5nIGhvdyB0aGlzIGZlYXR1cmUgaXMgZW5hYmxlZCwgZGlzYWJsZWQsIGFuZCBjb25maWd1cmVkLiBJJiMzOTttIGV4cGVjdGluZyB0byBmaW5kIGEgY29uZGl0aW9uYWwgc3RhdGVtZW50IG9yIGRlZmluaXRpb24gYXNzb2NpYXRlZCB3aXRoIGBORVRfRFNBX0xPT1BgIGluIHRoZXJlLiBMZXQmIzM5O3Mgc2VlIHdoYXQmIzM5O3MgaW4gYGRyaXZlcnMvbmV0L2RzYS9LY29uZmlnYC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjUgMDg6Mjk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9kc2EvS2NvbmZpZyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDE1LAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDIwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAgMTU6XHRcdGhlbHBcbiAgMTY6XHRcdCAgVGhpcyBlbmFibGVzIHN1cHBvcnQgZm9yIHRoZSBCcm9hZGNvbSBTdGFyZmlnaHRlciAyIEV0aGVybmV0XG4gIDE3Olx0XHQgIHN3aXRjaCBjaGlwcy5cbiAgMTg6XHRcbiAgMTk6XHRjb25maWcgTkVUX0RTQV9MT09QXG4gIDIwOlx0XHR0cmlzdGF0ZSBcJiMzNDtEU0EgbW9jay11cCBFdGhlcm5ldCBzd2l0Y2ggY2hpcCBzdXBwb3J0XCYjMzQ7XG4gIDIxOlx0XHRzZWxlY3QgTkVUX0RTQV9UQUdfTk9ORVxuICAyMjpcdFx0c2VsZWN0IEZJWEVEX1BIWVxuICAyMzpcdFx0aGVscFxuICAyNDpcdFx0ICBUaGlzIGVuYWJsZXMgc3VwcG9ydCBmb3IgYSBmYWtlIG1vY2stdXAgc3dpdGNoIGNoaXAgd2hpY2hcbiAgMjU6XHRcdCAgZXhlcmNpc2VzIHRoZSBEU0EgQVBJcy5cbiAgMjY6XHRcbiAgMjc6XHRzb3VyY2UgXCYjMzQ7ZHJpdmVycy9uZXQvZHNhL2hpcnNjaG1hbm4vS2NvbmZpZ1wmIzM0O1xuICAyODpcdFxuICAyOTpcdHNvdXJjZSBcJiMzNDtkcml2ZXJzL25ldC9kc2EvbGFudGlxL0tjb25maWdcJiMzNDtcbiAgMzA6XHRcbiAgMzE6XHRjb25maWcgTkVUX0RTQV9NVDc1MzBcbiAgMzI6XHRcdHRyaXN0YXRlIFwmIzM0O01lZGlhVGVrIE1UNzUzMCBhbmQgTVQ3NTMxIEV0aGVybmV0IHN3aXRjaCBzdXBwb3J0XCYjMzQ7XG4gIDMzOlx0XHRzZWxlY3QgTkVUX0RTQV9UQUdfTVRLXG4gIDM0Olx0XHRzZWxlY3QgUkVHTUFQX0lSUVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjExLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yNSAwODoyOTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyNzU2NQoJCQkJCQkJb3V0cHV0OiAxOAoJCQkJCQkJdGhvdWdodHM6IDgyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkludmVzdGlnYXRpbmcgdGhlIERTQSBMb29wIGFuZCBUYWdnaW5nIE9wdGlvbnMqKgoKT2theSwgc28gYE5FVF9EU0FfTE9PUGAgaXMgY29uZmlndXJlZCB0byB1c2UgYE5FVF9EU0FfVEFHX05PTkVgIGJ5IGRlZmF1bHQuIFRoYXQmIzM5O3MgZmluZSwgYnV0IHRoaXMgcGF0Y2ggc2VlbXMgdG8gYmUgdG91Y2hpbmcgYWxsIHRoZSBvdGhlciB0YWdnZXJzLiBJZiB3ZSYjMzk7cmUgc2VyaW91cyBhYm91dCBmdXp6aW5nIHRoZXNlIG90aGVyIHRhZ2dlcnMsIHRoZW4gaXQmIzM5O3MgcHJldHR5IGNsZWFyIHdlIG5lZWQgdG8gZW5hYmxlIHRoZW0uIEJ1dCB0aGUgcmVhbCBxdWVzdGlvbiBpcywgY2FuIHdlICphY3R1YWxseSogdXNlIGFueSBvZiB0aGVzZSBvdGhlciB0YWdnZXJzIGluIGNvbmp1bmN0aW9uIHdpdGggYGRzYV9sb29wYD8gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgaWYgdGhlcmUmIzM5O3MgYW55IGtpbmQgb2YgY29tcGF0aWJpbGl0eSBoZXJlLiBNeSBmaXJzdCBzdG9wPyBMZXQmIzM5O3MgZGl2ZSByaWdodCBpbnRvIHRoZSBjb2RlIGl0c2VsZi4gSSYjMzk7bSBnb2luZyB0byBjaGVjayBgZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmNgIGFuZCBzZWUgaWYgdGhlcmUgYXJlIGFueSBoaW50cyBvciBjb25maWd1cmF0aW9uIG9wdGlvbnMgaW4gdGhlcmUgdGhhdCB3b3VsZCBhbGxvdyBmb3IgZGlmZmVyZW50IHRhZ2dlcnMgdG8gd29yay4gSSYjMzk7bSBleHBlY3RpbmcgdG8gZmluZCBzb21lIGluZGljYXRpb24gb2YgaG93IHRoZSB0YWdnZXIgaXMgc2VsZWN0ZWQsIG9yIGlmIHRoZXJlIGlzIGEgd2F5IHRvIG92ZXJyaWRlIHRoaXMgYmVoYXZpb3VyLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yNSAwODoyOTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtkc2FfbG9vcCYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtEb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvZHNhL2RzYS5yc3Q9MTU5PWFsbCBhdHRhY2hlZCBzd2l0Y2ggcG9ydHMgbXVzdCBiZSBkb3duIHdoaWxlIGRvaW5nIHRoaXMpLlxuRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL2RzYS9kc2EucnN0LTE2MC1cbkRvY3VtZW50YXRpb24vbmV0d29ya2luZy9kc2EvZHNhLnJzdDoxNjE6SXQgaXMgZGVzaXJhYmxlIHRoYXQgYWxsIHRhZ2dpbmcgcHJvdG9jb2xzIGFyZSB0ZXN0YWJsZSB3aXRoIHRoZSBgYGRzYV9sb29wYGBcbkRvY3VtZW50YXRpb24vbmV0d29ya2luZy9kc2EvZHNhLnJzdC0xNjItbW9ja3VwIGRyaXZlciwgd2hpY2ggY2FuIGJlIGF0dGFjaGVkIHRvIGFueSBuZXR3b3JrIGludGVyZmFjZS4gVGhlIGdvYWwgaXMgdGhhdFxuLS1cbmRyaXZlcnMvbmV0L2RzYS9NYWtlZmlsZT0zPWJjbS1zZjItb2Jqc1x0XHRcdDo9IGJjbV9zZjIubyBiY21fc2YyX2NmcC5vXG5kcml2ZXJzL25ldC9kc2EvTWFrZWZpbGU6NDpvYmotJChDT05GSUdfTkVUX0RTQV9MT09QKVx0JiM0Mzs9IGRzYV9sb29wLm9cbmRyaXZlcnMvbmV0L2RzYS9NYWtlZmlsZS01LW9iai0kKENPTkZJR19ORVRfRFNBX0tTODk5NSkgXHQmIzQzOz0ga3M4OTk1Lm9cbi0tXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0yNC1cbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjI1OnN0cnVjdCBkc2FfbG9vcF92bGFuIHtcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTI2LVx0dTE2IG1lbWJlcnM7XG4tLVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMjktXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzozMDpzdHJ1Y3QgZHNhX2xvb3BfbWliX2VudHJ5IHtcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTMxLVx0Y2hhciBuYW1lW0VUSF9HU1RSSU5HX0xFTl07XG4tLVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMzQtXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzozNTplbnVtIGRzYV9sb29wX21pYl9jb3VudGVycyB7XG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0zNi1cdERTQV9MT09QX1BIWV9SRUFEX09LLFxuLS1cbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTQyLVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6NDM6c3RydWN0IGRzYV9sb29wX3BvcnQge1xuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6NDQ6XHRzdHJ1Y3QgZHNhX2xvb3BfbWliX2VudHJ5IG1pYltfX0RTQV9MT09QX0NOVF9NQVhdO1xuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtNDUtXHR1MTYgcHZpZDtcbi0tXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy00OC1cbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjQ5OnN0cnVjdCBkc2FfbG9vcF9wcml2IHtcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTUwLVx0c3RydWN0IG1paV9idXNcdCpidXM7XG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy01MS1cdHVuc2lnbmVkIGludFx0cG9ydF9iYXNlO1xuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6NTI6XHRzdHJ1Y3QgZHNhX2xvb3BfdmxhbiB2bGFuc1tWTEFOX05fVklEXTtcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTUzLVx0c3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldjtcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjU0Olx0c3RydWN0IGRzYV9sb29wX3BvcnQgcG9ydHNbRFNBX01BWF9QT1JUU107XG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy01NS19O1xuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtNTYtXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzo1NzpzdHJ1Y3QgZHNhX2xvb3BfcGRhdGEge1xuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtNTgtXHQvKiBNdXN0IGJlIGZpcnN0LCBzdWNoIHRoYXQgZHNhX3JlZ2lzdGVyX3N3aXRjaCgpIGNhbiBhY2Nlc3MgdGhpc1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTY2LVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6Njc6c3RhdGljIHN0cnVjdCBkc2FfbG9vcF9taWJfZW50cnkgZHNhX2xvb3BfbWlic1tdID0ge1xuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtNjgtXHRbRFNBX0xPT1BfUEhZX1JFQURfT0tdXHQ9IHsgXCYjMzQ7cGh5X3JlYWRfb2tcJiMzNDssIH0sXG4tLVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM9NzU9c3RhdGljIHN0cnVjdCBtZGlvX2RldmljZSAqc3dpdGNoX21kaW9kZXY7XG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy03Ni1cbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjc3OmVudW0gZHNhX2xvb3BfZGV2bGlua19yZXNvdXJjZV9pZCB7XG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy03OC1cdERTQV9MT09QX0RFVkxJTktfUEFSQU1fSURfTk9ORSwgIC8qIERFVkxJTktfUkVTT1VSQ0VfSURfUEFSRU5UX1RPUCAqL1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTgxLVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6ODI6c3RhdGljIHU2NCBkc2FfbG9vcF9kZXZsaW5rX3Z0dV9nZXQodm9pZCAqcHJpdilcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTgzLXtcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjg0Olx0c3RydWN0IGRzYV9sb29wX3ByaXYgKnBzID0gcHJpdjtcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTg1LVx0dW5zaWduZWQgaW50IGksIGNvdW50ID0gMDtcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjg2Olx0c3RydWN0IGRzYV9sb29wX3ZsYW4gKnZsO1xuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtODctXG4tLVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtOTYtXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzo5NzpzdGF0aWMgaW50IGRzYV9sb29wX3NldHVwX2RldmxpbmtfcmVzb3VyY2VzKHN0cnVjdCBkc2Ffc3dpdGNoICpkcylcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTk4LXtcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTk5LVx0c3RydWN0IGRldmxpbmtfcmVzb3VyY2Vfc2l6ZV9wYXJhbXMgc2l6ZV9wYXJhbXM7XG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzoxMDA6XHRzdHJ1Y3QgZHNhX2xvb3BfcHJpdiAqcHMgPSBkcy1cdTAwM2Vwcml2O1xuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMTAxLVx0aW50IGVycjtcbi0tXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0xMTUtXHRcdFx0XHRcdCAgICAgIERTQV9MT09QX0RFVkxJTktfUEFSQU1fSURfVlRVLFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MTE2Olx0XHRcdFx0XHQgICAgICBkc2FfbG9vcF9kZXZsaW5rX3Z0dV9nZXQsIHBzKTtcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTExNy1cbi0tXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0xMjQtXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzoxMjU6c3RhdGljIGVudW0gZHNhX3RhZ19wcm90b2NvbCBkc2FfbG9vcF9nZXRfcHJvdG9jb2woc3RydWN0IGRzYV9zd2l0Y2ggKmRzLFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMTI2LVx0XHRcdFx0XHRcdCAgIGludCBwb3J0LFxuLS1cbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTEzMy1cbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjEzNDpzdGF0aWMgaW50IGRzYV9sb29wX3NldHVwKHN0cnVjdCBkc2Ffc3dpdGNoICpkcylcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTEzNS17XG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzoxMzY6XHRzdHJ1Y3QgZHNhX2xvb3BfcHJpdiAqcHMgPSBkcy1cdTAwM2Vwcml2O1xuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMTM3LVx0dW5zaWduZWQgaW50IGk7XG4tLVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMTM5LVx0Zm9yIChpID0gMDsgaSBcdTAwM2MgZHMtXHUwMDNlbnVtX3BvcnRzOyBpJiM0MzsmIzQzOylcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjE0MDpcdFx0bWVtY3B5KHBzLVx1MDAzZXBvcnRzW2ldLm1pYiwgZHNhX2xvb3BfbWlicyxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjE0MTpcdFx0ICAgICAgIHNpemVvZihkc2FfbG9vcF9taWJzKSk7XG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0xNDItXG4tLVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMTQ0LVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MTQ1Olx0cmV0dXJuIGRzYV9sb29wX3NldHVwX2RldmxpbmtfcmVzb3VyY2VzKGRzKTtcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTE0Ni19XG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0xNDctXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzoxNDg6c3RhdGljIHZvaWQgZHNhX2xvb3BfdGVhcmRvd24oc3RydWN0IGRzYV9zd2l0Y2ggKmRzKVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMTQ5LXtcbi0tXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0xNTItXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzoxNTM6c3RhdGljIGludCBkc2FfbG9vcF9nZXRfc3NldF9jb3VudChzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMsIGludCBwb3J0LCBpbnQgc3NldClcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTE1NC17XG4tLVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMTYwLVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MTYxOnN0YXRpYyB2b2lkIGRzYV9sb29wX2dldF9zdHJpbmdzKHN0cnVjdCBkc2Ffc3dpdGNoICpkcywgaW50IHBvcnQsXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0xNjItXHRcdFx0XHQgdTMyIHN0cmluZ3NldCwgdWludDhfdCAqZGF0YSlcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTE2My17XG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzoxNjQ6XHRzdHJ1Y3QgZHNhX2xvb3BfcHJpdiAqcHMgPSBkcy1cdTAwM2Vwcml2O1xuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMTY1LVx0dW5zaWduZWQgaW50IGk7XG4tLVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMTczLVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MTc0OnN0YXRpYyB2b2lkIGRzYV9sb29wX2dldF9ldGh0b29sX3N0YXRzKHN0cnVjdCBkc2Ffc3dpdGNoICpkcywgaW50IHBvcnQsXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0xNzUtXHRcdFx0XHQgICAgICAgdWludDY0X3QgKmRhdGEpXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0xNzYte1xuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MTc3Olx0c3RydWN0IGRzYV9sb29wX3ByaXYgKnBzID0gZHMtXHUwMDNlcHJpdjtcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTE3OC1cdHVuc2lnbmVkIGludCBpO1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTE4My1cbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjE4NDpzdGF0aWMgaW50IGRzYV9sb29wX3BoeV9yZWFkKHN0cnVjdCBkc2Ffc3dpdGNoICpkcywgaW50IHBvcnQsIGludCByZWdudW0pXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0xODUte1xuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MTg2Olx0c3RydWN0IGRzYV9sb29wX3ByaXYgKnBzID0gZHMtXHUwMDNlcHJpdjtcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTE4Ny1cdHN0cnVjdCBtaWlfYnVzICpidXMgPSBwcy1cdTAwM2VidXM7XG4tLVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMTk4LVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MTk5OnN0YXRpYyBpbnQgZHNhX2xvb3BfcGh5X3dyaXRlKHN0cnVjdCBkc2Ffc3dpdGNoICpkcywgaW50IHBvcnQsXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0yMDAtXHRcdFx0ICAgICAgaW50IHJlZ251bSwgdTE2IHZhbHVlKVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMjAxLXtcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjIwMjpcdHN0cnVjdCBkc2FfbG9vcF9wcml2ICpwcyA9IGRzLVx1MDAzZXByaXY7XG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0yMDMtXHRzdHJ1Y3QgbWlpX2J1cyAqYnVzID0gcHMtXHUwMDNlYnVzO1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTIxNC1cbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjIxNTpzdGF0aWMgaW50IGRzYV9sb29wX3BvcnRfYnJpZGdlX2pvaW4oc3RydWN0IGRzYV9zd2l0Y2ggKmRzLCBpbnQgcG9ydCxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTIxNi1cdFx0XHRcdCAgICAgc3RydWN0IGRzYV9icmlkZ2UgYnJpZGdlLFxuLS1cbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTIyNS1cbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjIyNjpzdGF0aWMgdm9pZCBkc2FfbG9vcF9wb3J0X2JyaWRnZV9sZWF2ZShzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMsIGludCBwb3J0LFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMjI3LVx0XHRcdFx0ICAgICAgIHN0cnVjdCBkc2FfYnJpZGdlIGJyaWRnZSlcbi0tXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0yMzItXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzoyMzM6c3RhdGljIHZvaWQgZHNhX2xvb3BfcG9ydF9zdHBfc3RhdGVfc2V0KHN0cnVjdCBkc2Ffc3dpdGNoICpkcywgaW50IHBvcnQsXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0yMzQtXHRcdFx0XHRcdHU4IHN0YXRlKVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTIzOS1cbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjI0MDpzdGF0aWMgaW50IGRzYV9sb29wX3BvcnRfdmxhbl9maWx0ZXJpbmcoc3RydWN0IGRzYV9zd2l0Y2ggKmRzLCBpbnQgcG9ydCxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTI0MS1cdFx0XHRcdFx0Ym9vbCB2bGFuX2ZpbHRlcmluZyxcbi0tXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0yNDktXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzoyNTA6c3RhdGljIGludCBkc2FfbG9vcF9wb3J0X3ZsYW5fYWRkKHN0cnVjdCBkc2Ffc3dpdGNoICpkcywgaW50IHBvcnQsXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0yNTEtXHRcdFx0XHQgIGNvbnN0IHN0cnVjdCBzd2l0Y2hkZXZfb2JqX3BvcnRfdmxhbiAqdmxhbixcbi0tXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0yNTUtXHRib29sIHB2aWQgPSB2bGFuLVx1MDAzZWZsYWdzIFx1MDAyNiBCUklER0VfVkxBTl9JTkZPX1BWSUQ7XG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzoyNTY6XHRzdHJ1Y3QgZHNhX2xvb3BfcHJpdiAqcHMgPSBkcy1cdTAwM2Vwcml2O1xuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMjU3LVx0c3RydWN0IG1paV9idXMgKmJ1cyA9IHBzLVx1MDAzZWJ1cztcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjI1ODpcdHN0cnVjdCBkc2FfbG9vcF92bGFuICp2bDtcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTI1OS1cbi0tXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0yODItXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzoyODM6c3RhdGljIGludCBkc2FfbG9vcF9wb3J0X3ZsYW5fZGVsKHN0cnVjdCBkc2Ffc3dpdGNoICpkcywgaW50IHBvcnQsXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0yODQtXHRcdFx0XHQgIGNvbnN0IHN0cnVjdCBzd2l0Y2hkZXZfb2JqX3BvcnRfdmxhbiAqdmxhbilcbi0tXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0yODYtXHRib29sIHVudGFnZ2VkID0gdmxhbi1cdTAwM2VmbGFncyBcdTAwMjYgQlJJREdFX1ZMQU5fSU5GT19VTlRBR0dFRDtcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjI4NzpcdHN0cnVjdCBkc2FfbG9vcF9wcml2ICpwcyA9IGRzLVx1MDAzZXByaXY7XG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0yODgtXHR1MTYgcHZpZCA9IHBzLVx1MDAzZXBvcnRzW3BvcnRdLnB2aWQ7XG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0yODktXHRzdHJ1Y3QgbWlpX2J1cyAqYnVzID0gcHMtXHUwMDNlYnVzO1xuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MjkwOlx0c3RydWN0IGRzYV9sb29wX3ZsYW4gKnZsO1xuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMjkxLVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTMxMC1cbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjMxMTpzdGF0aWMgaW50IGRzYV9sb29wX3BvcnRfY2hhbmdlX210dShzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMsIGludCBwb3J0LFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMzEyLVx0XHRcdFx0ICAgIGludCBuZXdfbXR1KVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMzEzLXtcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjMxNDpcdHN0cnVjdCBkc2FfbG9vcF9wcml2ICpwcml2ID0gZHMtXHUwMDNlcHJpdjtcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTMxNS1cbi0tXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0zMjAtXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzozMjE6c3RhdGljIGludCBkc2FfbG9vcF9wb3J0X21heF9tdHUoc3RydWN0IGRzYV9zd2l0Y2ggKmRzLCBpbnQgcG9ydClcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTMyMi17XG4tLVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMzI1LVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MzI2OnN0YXRpYyB2b2lkIGRzYV9sb29wX3BoeWxpbmtfZ2V0X2NhcHMoc3RydWN0IGRzYV9zd2l0Y2ggKmRzYSwgaW50IHBvcnQsXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0zMjctXHRcdFx0XHQgICAgICBzdHJ1Y3QgcGh5bGlua19jb25maWcgKmNvbmZpZylcbi0tXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0zMzMtXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzozMzQ6c3RhdGljIGNvbnN0IHN0cnVjdCBkc2Ffc3dpdGNoX29wcyBkc2FfbG9vcF9kcml2ZXIgPSB7XG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzozMzU6XHQuZ2V0X3RhZ19wcm90b2NvbFx0PSBkc2FfbG9vcF9nZXRfcHJvdG9jb2wsXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzozMzY6XHQuc2V0dXBcdFx0XHQ9IGRzYV9sb29wX3NldHVwLFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MzM3Olx0LnRlYXJkb3duXHRcdD0gZHNhX2xvb3BfdGVhcmRvd24sXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzozMzg6XHQuZ2V0X3N0cmluZ3NcdFx0PSBkc2FfbG9vcF9nZXRfc3RyaW5ncyxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjMzOTpcdC5nZXRfZXRodG9vbF9zdGF0c1x0PSBkc2FfbG9vcF9nZXRfZXRodG9vbF9zdGF0cyxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjM0MDpcdC5nZXRfc3NldF9jb3VudFx0XHQ9IGRzYV9sb29wX2dldF9zc2V0X2NvdW50LFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MzQxOlx0LmdldF9ldGh0b29sX3BoeV9zdGF0c1x0PSBkc2FfbG9vcF9nZXRfZXRodG9vbF9zdGF0cyxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjM0MjpcdC5waHlfcmVhZFx0XHQ9IGRzYV9sb29wX3BoeV9yZWFkLFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MzQzOlx0LnBoeV93cml0ZVx0XHQ9IGRzYV9sb29wX3BoeV93cml0ZSxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjM0NDpcdC5wb3J0X2JyaWRnZV9qb2luXHQ9IGRzYV9sb29wX3BvcnRfYnJpZGdlX2pvaW4sXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzozNDU6XHQucG9ydF9icmlkZ2VfbGVhdmVcdD0gZHNhX2xvb3BfcG9ydF9icmlkZ2VfbGVhdmUsXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzozNDY6XHQucG9ydF9zdHBfc3RhdGVfc2V0XHQ9IGRzYV9sb29wX3BvcnRfc3RwX3N0YXRlX3NldCxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjM0NzpcdC5wb3J0X3ZsYW5fZmlsdGVyaW5nXHQ9IGRzYV9sb29wX3BvcnRfdmxhbl9maWx0ZXJpbmcsXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzozNDg6XHQucG9ydF92bGFuX2FkZFx0XHQ9IGRzYV9sb29wX3BvcnRfdmxhbl9hZGQsXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzozNDk6XHQucG9ydF92bGFuX2RlbFx0XHQ9IGRzYV9sb29wX3BvcnRfdmxhbl9kZWwsXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzozNTA6XHQucG9ydF9jaGFuZ2VfbXR1XHQ9IGRzYV9sb29wX3BvcnRfY2hhbmdlX210dSxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjM1MTpcdC5wb3J0X21heF9tdHVcdFx0PSBkc2FfbG9vcF9wb3J0X21heF9tdHUsXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzozNTI6XHQucGh5bGlua19nZXRfY2Fwc1x0PSBkc2FfbG9vcF9waHlsaW5rX2dldF9jYXBzLFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMzUzLX07XG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0zNTQtXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzozNTU6c3RhdGljIGludCBkc2FfbG9vcF9kcnZfcHJvYmUoc3RydWN0IG1kaW9fZGV2aWNlICptZGlvZGV2KVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMzU2LXtcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjM1NzpcdHN0cnVjdCBkc2FfbG9vcF9wZGF0YSAqcGRhdGEgPSBtZGlvZGV2LVx1MDAzZWRldi5wbGF0Zm9ybV9kYXRhO1xuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MzU4Olx0c3RydWN0IGRzYV9sb29wX3ByaXYgKnBzO1xuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMzU5LVx0c3RydWN0IGRzYV9zd2l0Y2ggKmRzO1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTM4Mi1cdGRzLVx1MDAzZWRldiA9IFx1MDAyNm1kaW9kZXYtXHUwMDNlZGV2O1xuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MzgzOlx0ZHMtXHUwMDNlb3BzID0gXHUwMDI2ZHNhX2xvb3BfZHJpdmVyO1xuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMzg0LVx0ZHMtXHUwMDNlcHJpdiA9IHBzO1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTM5Ni1cbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjM5NzpzdGF0aWMgdm9pZCBkc2FfbG9vcF9kcnZfcmVtb3ZlKHN0cnVjdCBtZGlvX2RldmljZSAqbWRpb2RldilcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTM5OC17XG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0zOTktXHRzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMgPSBkZXZfZ2V0X2RydmRhdGEoXHUwMDI2bWRpb2Rldi1cdTAwM2VkZXYpO1xuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6NDAwOlx0c3RydWN0IGRzYV9sb29wX3ByaXYgKnBzO1xuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtNDAxLVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTQxMC1cbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjQxMTpzdGF0aWMgdm9pZCBkc2FfbG9vcF9kcnZfc2h1dGRvd24oc3RydWN0IG1kaW9fZGV2aWNlICptZGlvZGV2KVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtNDEyLXtcbi0tXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy00MjItXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzo0MjM6c3RhdGljIHN0cnVjdCBtZGlvX2RyaXZlciBkc2FfbG9vcF9kcnYgPSB7XG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy00MjQtXHQubWRpb2Rydi5kcml2ZXJcdD0ge1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTQyNi1cdH0sXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzo0Mjc6XHQucHJvYmVcdD0gZHNhX2xvb3BfZHJ2X3Byb2JlLFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6NDI4Olx0LnJlbW92ZVx0PSBkc2FfbG9vcF9kcnZfcmVtb3ZlLFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6NDI5Olx0LnNodXRkb3duID0gZHNhX2xvb3BfZHJ2X3NodXRkb3duLFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtNDMwLX07XG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy00MzEtXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzo0MzI6c3RhdGljIGludCBkc2FfbG9vcF9idXNfbWF0Y2goc3RydWN0IGRldmljZSAqZGV2LFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtNDMzLVx0XHRcdCAgICAgIGNvbnN0IHN0cnVjdCBkZXZpY2VfZHJpdmVyICpkcnYpXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy00MzQte1xuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6NDM1Olx0cmV0dXJuIGRydiA9PSBcdTAwMjZkc2FfbG9vcF9kcnYubWRpb2Rydi5kcml2ZXI7XG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy00MzYtfVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtNDM3LVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6NDM4OnN0YXRpYyB2b2lkIGRzYV9sb29wX3BoeWRldnNfdW5yZWdpc3Rlcih2b2lkKVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtNDM5LXtcbi0tXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy00NDUtXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzo0NDY6c3RhdGljIGludCBfX2luaXQgZHNhX2xvb3BfY3JlYXRlX3N3aXRjaF9tZGlvZGV2KHZvaWQpXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy00NDcte1xuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6NDQ4Olx0c3RhdGljIHN0cnVjdCBkc2FfbG9vcF9wZGF0YSBkc2FfbG9vcF9wZGF0YSA9IHtcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTQ0OS1cdFx0LmNkID0ge1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTQ3MC1cbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjQ3MTpcdHN3aXRjaF9tZGlvZGV2LVx1MDAzZWJ1c19tYXRjaCA9IGRzYV9sb29wX2J1c19tYXRjaDtcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjQ3MjpcdHN3aXRjaF9tZGlvZGV2LVx1MDAzZWRldi5wbGF0Zm9ybV9kYXRhID0gXHUwMDI2ZHNhX2xvb3BfcGRhdGE7XG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy00NzMtXG4tLVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtNDgxLVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6NDgyOnN0YXRpYyBpbnQgX19pbml0IGRzYV9sb29wX2luaXQodm9pZClcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTQ4My17XG4tLVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtNDg2LVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6NDg3Olx0cmV0ID0gZHNhX2xvb3BfY3JlYXRlX3N3aXRjaF9tZGlvZGV2KCk7XG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy00ODgtXHRpZiAocmV0KVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTQ5My1cbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjQ5NDpcdHJldCA9IG1kaW9fZHJpdmVyX3JlZ2lzdGVyKFx1MDAyNmRzYV9sb29wX2Rydik7XG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy00OTUtXHRpZiAocmV0KSB7XG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzo0OTY6XHRcdGRzYV9sb29wX3BoeWRldnNfdW5yZWdpc3RlcigpO1xuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtNDk3LVx0XHRtZGlvX2RldmljZV9yZW1vdmUoc3dpdGNoX21kaW9kZXYpO1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTUwMi19XG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzo1MDM6bW9kdWxlX2luaXQoZHNhX2xvb3BfaW5pdCk7XG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy01MDQtXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzo1MDU6c3RhdGljIHZvaWQgX19leGl0IGRzYV9sb29wX2V4aXQodm9pZClcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTUwNi17XG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzo1MDc6XHRtZGlvX2RyaXZlcl91bnJlZ2lzdGVyKFx1MDAyNmRzYV9sb29wX2Rydik7XG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzo1MDg6XHRkc2FfbG9vcF9waHlkZXZzX3VucmVnaXN0ZXIoKTtcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTUwOS1cdG1kaW9fZGV2aWNlX3JlbW92ZShzd2l0Y2hfbWRpb2Rldik7XG4tLVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtNTExLX1cbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjUxMjptb2R1bGVfZXhpdChkc2FfbG9vcF9leGl0KTtcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTUxMy1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjUgMDg6Mjk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzQ1MzIKCQkJCQkJCW91dHB1dDogMjcKCQkJCQkJCXRob3VnaHRzOiAyNzgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqRFNBIFN3aXRjaCBJbnN0YW50aWF0aW9uIGFuZCBGdXp6aW5nIFN0cmF0ZWd5KioKCk9rYXksIHNvIGBkc2FfbG9vcGAgdXNlcyBgTkVUX0RTQV9UQUdfTk9ORWAuIEFuZCBgZHNhX2xvb3BfZ2V0X3Byb3RvY29sYCByZXR1cm5zIGBEU0FfVEFHX1BST1RPX05PTkVgLiBUaGF0JiMzOTtzIHRoZSBiYXNlbGluZS4gQ2FuIHdlIGxldmVyYWdlIHRoaXMgdG8gZnV6eiBvdGhlciB0YWdnZXJzLCBtYXliZT8gVGhlIGtleSBpcyBnb2luZyB0byBiZSBmaWd1cmluZyBvdXQgaG93IHRvIGdldCB0cmFmZmljIHJvdXRlZCAqdGhyb3VnaCogdGhlIERTQSBpbmZyYXN0cnVjdHVyZS4KClN5emthbGxlciBpcyBncmVhdCB3aXRoIHBhY2tldCBpbmplY3Rpb24gdGhyb3VnaCBgdHVuYC9gdGFwYCwgYG1hYzgwMjExX2h3c2ltYCwgYW5kIGV2ZW4gYGR1bW15YCBpbnRlcmZhY2VzLiBUaGUgaW1tZWRpYXRlIHF1ZXN0aW9uIGlzLCBpZiB3ZSAqZW5hYmxlKiBgTkVUX0RTQWAgYW5kIHNvbWUgb2YgdGhlc2UgdGFnZ2VycywgY2FuIHN5emthbGxlciBhY3R1YWxseSAqcmVhY2gqIHRoZW0/CgpOb3csIHJlbWVtYmVyIGhvdyBgZHNhX3N3aXRjaF9yY3ZgIGdldHMgY2FsbGVkPyBJdCYjMzk7cyBmcm9tIGBuZXRpZl9yZWNlaXZlX3NrYl9jb3JlYCAqaWYqIGBza2ItJmd0O2Rldi0mZ3Q7ZHNhX3B0cmAgaXMgc2V0LiBSaWdodCwgYW5kIHRvIGhhdmUgYHNrYi0mZ3Q7ZGV2LSZndDtkc2FfcHRyYCBzZXQsIHlvdSBuZWVkIGEgRFNBIHN3aXRjaCBhdHRhY2hlZCB0byBhIGBuZXRfZGV2aWNlYC4gU28gdGhlIHJlYWwgcXVlc3Rpb24gaXM6IGNhbiBzeXprYWxsZXIgKmNyZWF0ZSogYSBEU0Egc3dpdGNoPwoKSXQgaGFzIGBzeXpfZ2VuZXRsaW5rX2dldF9mYW1pbHlgIGFuZCBvdGhlciBuZXRsaW5rIGJpdHMsIHdoaWNoIG1pZ2h0IGJlIGhlbHBmdWwuIEJ1dCBEU0Egc3dpdGNoZXMgYXJlIHR5cGljYWxseSBzZXQgdXAgdGhyb3VnaCBkZXZpY2UgdHJlZSwgcGxhdGZvcm0gZGF0YSwgb3IgZXZlbiBJMkMvTURJTyBkZXZpY2VzLiBUaGF0IHNlZW1zIGRpZmZpY3VsdCB0byBlbXVsYXRlLgoKV2FpdCBhIHNlY29uZCwgc3l6a2FsbGVyIGRvZXMgaGF2ZSBjbGV2ZXIgdmlydHVhbGl6YXRpb24gdHJpY2tzIGZvciBvdGhlciBzdWJzeXN0ZW1zLiBJdCBoYXMgYHZoY2lgIGZvciBVU0IsIGBtYWM4MDIxMV9od3NpbWAgZm9yIHdpZmkuIFNvIHRoZSBxdWVzdGlvbiBiZWNvbWVzLCBkb2VzIGl0IGhhdmUgYSB3YXkgdG8gaW5zdGFudGlhdGUgRFNBIHN3aXRjaGVzIHNvbWVob3c/IEEgdmlydHVhbCBvbmUsIG9yIHBlcmhhcHMgYSB3YXkgdG8gZmFrZSB0aGUgZGF0YSBzdHJ1Y3R1cmVzIHJlcXVpcmVkPwoKT2theSwgdGltZSB0byBzdG9wIHNwZWN1bGF0aW5nLiBMZXQmIzM5O3Mgc2VlIGlmIHRoZXJlIGlzIGFueSBleGlzdGluZyBzeXprYWxsZXIgZGVzY3JpcHRpb24sIGEgZGVkaWNhdGVkIG9uZSwgb2YgRFNBIGRldmljZXMuIFRoYXQmIzM5O3MgdGhlIGZpcnN0IHBsYWNlIHRvIGxvb2suIE1heWJlIHNvbWVvbmUgaGFzIGFscmVhZHkgZmlndXJlZCBvdXQgaG93IHRvIGRvIHRoaXMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI1IDA4OjMwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2RzYSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9kc2EvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O1xuRnVsbCBvdXRwdXQgaXMgdG9vIGxvbmcsIHNob3dpbmcgNTAwIG91dCBvZiA4MTA0IGxpbmVzLlxuVXNlIG1vcmUgcHJlY2lzZSBleHByZXNzaW9uIGlmIHBvc3NpYmxlLlxuXG5uZXQvZHNhL01ha2VmaWxlPTY9ZW5kaWZcbi0tXG5uZXQvZHNhL01ha2VmaWxlLTgtIyB0aGUgY29yZVxubmV0L2RzYS9NYWtlZmlsZTo5Om9iai0kKENPTkZJR19ORVRfRFNBKSAmIzQzOz0gZHNhX2NvcmUub1xubmV0L2RzYS9NYWtlZmlsZToxMDpkc2FfY29yZS15ICYjNDM7PSBcXFxubmV0L2RzYS9NYWtlZmlsZS0xMS1cdGNvbmR1aXQubyBcXFxubmV0L2RzYS9NYWtlZmlsZS0xMi1cdGRldmxpbmsubyBcXFxubmV0L2RzYS9NYWtlZmlsZToxMzpcdGRzYS5vIFxcXG5uZXQvZHNhL01ha2VmaWxlLTE0LVx0bmV0bGluay5vIFxcXG4tLVxubmV0L2RzYS9NYWtlZmlsZT0yND1vYmotJChDT05GSUdfTkVUX0RTQV9UQUdfQlJDTV9DT01NT04pICYjNDM7PSB0YWdfYnJjbS5vXG5uZXQvZHNhL01ha2VmaWxlOjI1Om9iai0kKENPTkZJR19ORVRfRFNBX1RBR19EU0FfQ09NTU9OKSAmIzQzOz0gdGFnX2RzYS5vXG5uZXQvZHNhL01ha2VmaWxlLTI2LW9iai0kKENPTkZJR19ORVRfRFNBX1RBR19HU1dJUCkgJiM0Mzs9IHRhZ19nc3dpcC5vXG4tLVxubmV0L2RzYS9jb25kdWl0LmMtMTEtI2luY2x1ZGUgXHUwMDNjbGludXgvbmV0bGluay5oXHUwMDNlXG5uZXQvZHNhL2NvbmR1aXQuYzoxMjojaW5jbHVkZSBcdTAwM2NuZXQvZHNhLmhcdTAwM2Vcbm5ldC9kc2EvY29uZHVpdC5jLTEzLSNpbmNsdWRlIFx1MDAzY25ldC9uZXRkZXZfbG9jay5oXHUwMDNlXG4tLVxubmV0L2RzYS9jb25kdWl0LmMtMTUtI2luY2x1ZGUgXCYjMzQ7Y29uZHVpdC5oXCYjMzQ7XG5uZXQvZHNhL2NvbmR1aXQuYzoxNjojaW5jbHVkZSBcJiMzNDtkc2EuaFwmIzM0O1xubmV0L2RzYS9jb25kdWl0LmMtMTctI2luY2x1ZGUgXCYjMzQ7cG9ydC5oXCYjMzQ7XG4tLVxubmV0L2RzYS9jb25kdWl0LmMtMTktXG5uZXQvZHNhL2NvbmR1aXQuYzoyMDpzdGF0aWMgaW50IGRzYV9jb25kdWl0X2dldF9yZWdzX2xlbihzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxubmV0L2RzYS9jb25kdWl0LmMtMjEte1xubmV0L2RzYS9jb25kdWl0LmM6MjI6XHRzdHJ1Y3QgZHNhX3BvcnQgKmNwdV9kcCA9IGRldi1cdTAwM2Vkc2FfcHRyO1xubmV0L2RzYS9jb25kdWl0LmMtMjMtXHRjb25zdCBzdHJ1Y3QgZXRodG9vbF9vcHMgKm9wcyA9IGNwdV9kcC1cdTAwM2VvcmlnX2V0aHRvb2xfb3BzO1xubmV0L2RzYS9jb25kdWl0LmM6MjQ6XHRzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMgPSBjcHVfZHAtXHUwMDNlZHM7XG5uZXQvZHNhL2NvbmR1aXQuYy0yNS1cdGludCBwb3J0ID0gY3B1X2RwLVx1MDAzZWluZGV4O1xuLS1cbm5ldC9kc2EvY29uZHVpdC5jLTQ4LVxubmV0L2RzYS9jb25kdWl0LmM6NDk6c3RhdGljIHZvaWQgZHNhX2NvbmR1aXRfZ2V0X3JlZ3Moc3RydWN0IG5ldF9kZXZpY2UgKmRldixcbm5ldC9kc2EvY29uZHVpdC5jLTUwLVx0XHRcdFx0IHN0cnVjdCBldGh0b29sX3JlZ3MgKnJlZ3MsIHZvaWQgKmRhdGEpXG5uZXQvZHNhL2NvbmR1aXQuYy01MS17XG5uZXQvZHNhL2NvbmR1aXQuYzo1MjpcdHN0cnVjdCBkc2FfcG9ydCAqY3B1X2RwID0gZGV2LVx1MDAzZWRzYV9wdHI7XG5uZXQvZHNhL2NvbmR1aXQuYy01My1cdGNvbnN0IHN0cnVjdCBldGh0b29sX29wcyAqb3BzID0gY3B1X2RwLVx1MDAzZW9yaWdfZXRodG9vbF9vcHM7XG5uZXQvZHNhL2NvbmR1aXQuYzo1NDpcdHN0cnVjdCBkc2Ffc3dpdGNoICpkcyA9IGNwdV9kcC1cdTAwM2Vkcztcbm5ldC9kc2EvY29uZHVpdC5jLTU1LVx0c3RydWN0IGV0aHRvb2xfZHJ2aW5mbyAqY3B1X2luZm87XG4tLVxubmV0L2RzYS9jb25kdWl0LmMtNjktXHRjcHVfaW5mbyA9IChzdHJ1Y3QgZXRodG9vbF9kcnZpbmZvICopZGF0YTtcbm5ldC9kc2EvY29uZHVpdC5jOjcwOlx0c3Ryc2NweShjcHVfaW5mby1cdTAwM2Vkcml2ZXIsIFwmIzM0O2RzYVwmIzM0Oywgc2l6ZW9mKGNwdV9pbmZvLVx1MDAzZWRyaXZlcikpO1xubmV0L2RzYS9jb25kdWl0LmMtNzEtXHRkYXRhICYjNDM7PSBzaXplb2YoKmNwdV9pbmZvKTtcbi0tXG5uZXQvZHNhL2NvbmR1aXQuYy04My1cbm5ldC9kc2EvY29uZHVpdC5jOjg0OnN0YXRpYyBzc2l6ZV90IGRzYV9jb25kdWl0X2FwcGVuZF9wb3J0X3N0YXRzKHN0cnVjdCBkc2Ffc3dpdGNoICpkcywgaW50IHBvcnQsXG5uZXQvZHNhL2NvbmR1aXQuYy04NS1cdFx0XHRcdFx0ICAgICB1NjQgKmRhdGEsIHNpemVfdCBzdGFydClcbi0tXG5uZXQvZHNhL2NvbmR1aXQuYy0xMDEtXG5uZXQvZHNhL2NvbmR1aXQuYzoxMDI6c3RhdGljIHZvaWQgZHNhX2NvbmR1aXRfZ2V0X2V0aHRvb2xfc3RhdHMoc3RydWN0IG5ldF9kZXZpY2UgKmRldixcbm5ldC9kc2EvY29uZHVpdC5jLTEwMy1cdFx0XHRcdFx0ICBzdHJ1Y3QgZXRodG9vbF9zdGF0cyAqc3RhdHMsXG4tLVxubmV0L2RzYS9jb25kdWl0LmMtMTA1LXtcbm5ldC9kc2EvY29uZHVpdC5jOjEwNjpcdHN0cnVjdCBkc2FfcG9ydCAqZHAsICpjcHVfZHAgPSBkZXYtXHUwMDNlZHNhX3B0cjtcbm5ldC9kc2EvY29uZHVpdC5jLTEwNy1cdGNvbnN0IHN0cnVjdCBldGh0b29sX29wcyAqb3BzID0gY3B1X2RwLVx1MDAzZW9yaWdfZXRodG9vbF9vcHM7XG5uZXQvZHNhL2NvbmR1aXQuYzoxMDg6XHRzdHJ1Y3QgZHNhX3N3aXRjaF90cmVlICpkc3QgPSBjcHVfZHAtXHUwMDNlZHN0O1xubmV0L2RzYS9jb25kdWl0LmMtMTA5LVx0aW50IGNvdW50LCBtY291bnQgPSAwO1xuLS1cbm5ldC9kc2EvY29uZHVpdC5jLTExNi1cdGxpc3RfZm9yX2VhY2hfZW50cnkoZHAsIFx1MDAyNmRzdC1cdTAwM2Vwb3J0cywgbGlzdCkge1xubmV0L2RzYS9jb25kdWl0LmM6MTE3Olx0XHRpZiAoIWRzYV9wb3J0X2lzX2RzYShkcCkgXHUwMDI2XHUwMDI2ICFkc2FfcG9ydF9pc19jcHUoZHApKVxubmV0L2RzYS9jb25kdWl0LmMtMTE4LVx0XHRcdGNvbnRpbnVlO1xubmV0L2RzYS9jb25kdWl0LmMtMTE5LVxubmV0L2RzYS9jb25kdWl0LmM6MTIwOlx0XHRjb3VudCA9IGRzYV9jb25kdWl0X2FwcGVuZF9wb3J0X3N0YXRzKGRwLVx1MDAzZWRzLCBkcC1cdTAwM2VpbmRleCxcbm5ldC9kc2EvY29uZHVpdC5jLTEyMS1cdFx0XHRcdFx0XHQgICAgICBkYXRhLCBtY291bnQpO1xuLS1cbm5ldC9kc2EvY29uZHVpdC5jLTEyOC1cbm5ldC9kc2EvY29uZHVpdC5jOjEyOTpzdGF0aWMgdm9pZCBkc2FfY29uZHVpdF9nZXRfZXRodG9vbF9waHlfc3RhdHMoc3RydWN0IG5ldF9kZXZpY2UgKmRldixcbm5ldC9kc2EvY29uZHVpdC5jLTEzMC1cdFx0XHRcdFx0ICAgICAgc3RydWN0IGV0aHRvb2xfc3RhdHMgKnN0YXRzLFxuLS1cbm5ldC9kc2EvY29uZHVpdC5jLTEzMi17XG5uZXQvZHNhL2NvbmR1aXQuYzoxMzM6XHRzdHJ1Y3QgZHNhX3BvcnQgKmNwdV9kcCA9IGRldi1cdTAwM2Vkc2FfcHRyO1xubmV0L2RzYS9jb25kdWl0LmMtMTM0LVx0Y29uc3Qgc3RydWN0IGV0aHRvb2xfb3BzICpvcHMgPSBjcHVfZHAtXHUwMDNlb3JpZ19ldGh0b29sX29wcztcbm5ldC9kc2EvY29uZHVpdC5jOjEzNTpcdHN0cnVjdCBkc2Ffc3dpdGNoICpkcyA9IGNwdV9kcC1cdTAwM2Vkcztcbm5ldC9kc2EvY29uZHVpdC5jLTEzNi1cdGludCBwb3J0ID0gY3B1X2RwLVx1MDAzZWluZGV4O1xuLS1cbm5ldC9kc2EvY29uZHVpdC5jLTE1NC1cbm5ldC9kc2EvY29uZHVpdC5jOjE1NTpzdGF0aWMgdm9pZCBkc2FfY29uZHVpdF9hcHBlbmRfcG9ydF9zc2V0X2NvdW50KHN0cnVjdCBkc2Ffc3dpdGNoICpkcywgaW50IHBvcnQsXG5uZXQvZHNhL2NvbmR1aXQuYy0xNTYtXHRcdFx0XHRcdCAgICAgICBpbnQgc3NldCwgaW50ICpjb3VudClcbi0tXG5uZXQvZHNhL2NvbmR1aXQuYy0xNjEtXG5uZXQvZHNhL2NvbmR1aXQuYzoxNjI6c3RhdGljIGludCBkc2FfY29uZHVpdF9nZXRfc3NldF9jb3VudChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBpbnQgc3NldClcbm5ldC9kc2EvY29uZHVpdC5jLTE2My17XG5uZXQvZHNhL2NvbmR1aXQuYzoxNjQ6XHRzdHJ1Y3QgZHNhX3BvcnQgKmRwLCAqY3B1X2RwID0gZGV2LVx1MDAzZWRzYV9wdHI7XG5uZXQvZHNhL2NvbmR1aXQuYy0xNjUtXHRjb25zdCBzdHJ1Y3QgZXRodG9vbF9vcHMgKm9wcyA9IGNwdV9kcC1cdTAwM2VvcmlnX2V0aHRvb2xfb3BzO1xubmV0L2RzYS9jb25kdWl0LmM6MTY2Olx0c3RydWN0IGRzYV9zd2l0Y2hfdHJlZSAqZHN0ID0gY3B1X2RwLVx1MDAzZWRzdDtcbm5ldC9kc2EvY29uZHVpdC5jLTE2Ny1cdGludCBjb3VudCA9IDA7XG4tLVxubmV0L2RzYS9jb25kdWl0LmMtMTc4LVx0bGlzdF9mb3JfZWFjaF9lbnRyeShkcCwgXHUwMDI2ZHN0LVx1MDAzZXBvcnRzLCBsaXN0KSB7XG5uZXQvZHNhL2NvbmR1aXQuYzoxNzk6XHRcdGlmICghZHNhX3BvcnRfaXNfZHNhKGRwKSBcdTAwMjZcdTAwMjYgIWRzYV9wb3J0X2lzX2NwdShkcCkpXG5uZXQvZHNhL2NvbmR1aXQuYy0xODAtXHRcdFx0Y29udGludWU7XG5uZXQvZHNhL2NvbmR1aXQuYy0xODEtXG5uZXQvZHNhL2NvbmR1aXQuYzoxODI6XHRcdGRzYV9jb25kdWl0X2FwcGVuZF9wb3J0X3NzZXRfY291bnQoZHAtXHUwMDNlZHMsIGRwLVx1MDAzZWluZGV4LCBzc2V0LFxubmV0L2RzYS9jb25kdWl0LmMtMTgzLVx0XHRcdFx0XHRcdCAgIFx1MDAyNmNvdW50KTtcbi0tXG5uZXQvZHNhL2NvbmR1aXQuYy0xODgtXG5uZXQvZHNhL2NvbmR1aXQuYzoxODk6c3RhdGljIHNzaXplX3QgZHNhX2NvbmR1aXRfYXBwZW5kX3BvcnRfc3RyaW5ncyhzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMsIGludCBwb3J0LFxubmV0L2RzYS9jb25kdWl0LmMtMTkwLVx0XHRcdFx0XHQgICAgICAgdTMyIHN0cmluZ3NldCwgdTggKmRhdGEsXG4tLVxubmV0L2RzYS9jb25kdWl0LmMtMjIxLVxubmV0L2RzYS9jb25kdWl0LmM6MjIyOnN0YXRpYyB2b2lkIGRzYV9jb25kdWl0X2dldF9zdHJpbmdzKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHUzMiBzdHJpbmdzZXQsXG5uZXQvZHNhL2NvbmR1aXQuYy0yMjMtXHRcdFx0XHQgICAgdTggKmRhdGEpXG5uZXQvZHNhL2NvbmR1aXQuYy0yMjQte1xubmV0L2RzYS9jb25kdWl0LmM6MjI1Olx0c3RydWN0IGRzYV9wb3J0ICpkcCwgKmNwdV9kcCA9IGRldi1cdTAwM2Vkc2FfcHRyO1xubmV0L2RzYS9jb25kdWl0LmMtMjI2LVx0Y29uc3Qgc3RydWN0IGV0aHRvb2xfb3BzICpvcHMgPSBjcHVfZHAtXHUwMDNlb3JpZ19ldGh0b29sX29wcztcbm5ldC9kc2EvY29uZHVpdC5jOjIyNzpcdHN0cnVjdCBkc2Ffc3dpdGNoX3RyZWUgKmRzdCA9IGNwdV9kcC1cdTAwM2Vkc3Q7XG5uZXQvZHNhL2NvbmR1aXQuYy0yMjgtXHRpbnQgY291bnQsIG1jb3VudCA9IDA7XG4tLVxubmV0L2RzYS9jb25kdWl0LmMtMjQ0LVx0bGlzdF9mb3JfZWFjaF9lbnRyeShkcCwgXHUwMDI2ZHN0LVx1MDAzZXBvcnRzLCBsaXN0KSB7XG5uZXQvZHNhL2NvbmR1aXQuYzoyNDU6XHRcdGlmICghZHNhX3BvcnRfaXNfZHNhKGRwKSBcdTAwMjZcdTAwMjYgIWRzYV9wb3J0X2lzX2NwdShkcCkpXG5uZXQvZHNhL2NvbmR1aXQuYy0yNDYtXHRcdFx0Y29udGludWU7XG5uZXQvZHNhL2NvbmR1aXQuYy0yNDctXG5uZXQvZHNhL2NvbmR1aXQuYzoyNDg6XHRcdGNvdW50ID0gZHNhX2NvbmR1aXRfYXBwZW5kX3BvcnRfc3RyaW5ncyhkcC1cdTAwM2VkcywgZHAtXHUwMDNlaW5kZXgsXG5uZXQvZHNhL2NvbmR1aXQuYy0yNDktXHRcdFx0XHRcdFx0XHRzdHJpbmdzZXQsIGRhdGEsXG4tLVxubmV0L2RzYS9jb25kdWl0LmMtMjYwLSAqL1xubmV0L2RzYS9jb25kdWl0LmM6MjYxOmludCBfX2RzYV9jb25kdWl0X2h3dHN0YW1wX3ZhbGlkYXRlKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXG5uZXQvZHNhL2NvbmR1aXQuYy0yNjItXHRcdFx0XHQgICAgY29uc3Qgc3RydWN0IGtlcm5lbF9od3RzdGFtcF9jb25maWcgKmNvbmZpZyxcbi0tXG5uZXQvZHNhL2NvbmR1aXQuYy0yNjQte1xubmV0L2RzYS9jb25kdWl0LmM6MjY1Olx0c3RydWN0IGRzYV9wb3J0ICpjcHVfZHAgPSBkZXYtXHUwMDNlZHNhX3B0cjtcbm5ldC9kc2EvY29uZHVpdC5jOjI2NjpcdHN0cnVjdCBkc2Ffc3dpdGNoICpkcyA9IGNwdV9kcC1cdTAwM2Vkcztcbm5ldC9kc2EvY29uZHVpdC5jOjI2NzpcdHN0cnVjdCBkc2Ffc3dpdGNoX3RyZWUgKmRzdDtcbm5ldC9kc2EvY29uZHVpdC5jOjI2ODpcdHN0cnVjdCBkc2FfcG9ydCAqZHA7XG5uZXQvZHNhL2NvbmR1aXQuYy0yNjktXG4tLVxubmV0L2RzYS9jb25kdWl0LmMtMjcyLVx0bGlzdF9mb3JfZWFjaF9lbnRyeShkcCwgXHUwMDI2ZHN0LVx1MDAzZXBvcnRzLCBsaXN0KSB7XG5uZXQvZHNhL2NvbmR1aXQuYzoyNzM6XHRcdGlmIChkc2FfcG9ydF9zdXBwb3J0c19od3RzdGFtcChkcCkpIHtcbm5ldC9kc2EvY29uZHVpdC5jLTI3NC1cdFx0XHROTF9TRVRfRVJSX01TRyhleHRhY2ssXG4tLVxubmV0L2RzYS9jb25kdWl0LmMtMjgyLVxubmV0L2RzYS9jb25kdWl0LmM6MjgzOnN0YXRpYyBpbnQgZHNhX2NvbmR1aXRfZXRodG9vbF9zZXR1cChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxubmV0L2RzYS9jb25kdWl0LmMtMjg0LXtcbm5ldC9kc2EvY29uZHVpdC5jOjI4NTpcdHN0cnVjdCBkc2FfcG9ydCAqY3B1X2RwID0gZGV2LVx1MDAzZWRzYV9wdHI7XG5uZXQvZHNhL2NvbmR1aXQuYzoyODY6XHRzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMgPSBjcHVfZHAtXHUwMDNlZHM7XG5uZXQvZHNhL2NvbmR1aXQuYy0yODctXHRzdHJ1Y3QgZXRodG9vbF9vcHMgKm9wcztcbi0tXG5uZXQvZHNhL2NvbmR1aXQuYy0yOTktXG5uZXQvZHNhL2NvbmR1aXQuYzozMDA6XHRvcHMtXHUwMDNlZ2V0X3JlZ3NfbGVuID0gZHNhX2NvbmR1aXRfZ2V0X3JlZ3NfbGVuO1xubmV0L2RzYS9jb25kdWl0LmM6MzAxOlx0b3BzLVx1MDAzZWdldF9yZWdzID0gZHNhX2NvbmR1aXRfZ2V0X3JlZ3M7XG5uZXQvZHNhL2NvbmR1aXQuYzozMDI6XHRvcHMtXHUwMDNlZ2V0X3NzZXRfY291bnQgPSBkc2FfY29uZHVpdF9nZXRfc3NldF9jb3VudDtcbm5ldC9kc2EvY29uZHVpdC5jOjMwMzpcdG9wcy1cdTAwM2VnZXRfZXRodG9vbF9zdGF0cyA9IGRzYV9jb25kdWl0X2dldF9ldGh0b29sX3N0YXRzO1xubmV0L2RzYS9jb25kdWl0LmM6MzA0Olx0b3BzLVx1MDAzZWdldF9zdHJpbmdzID0gZHNhX2NvbmR1aXRfZ2V0X3N0cmluZ3M7XG5uZXQvZHNhL2NvbmR1aXQuYzozMDU6XHRvcHMtXHUwMDNlZ2V0X2V0aHRvb2xfcGh5X3N0YXRzID0gZHNhX2NvbmR1aXRfZ2V0X2V0aHRvb2xfcGh5X3N0YXRzO1xubmV0L2RzYS9jb25kdWl0LmMtMzA2LVxuLS1cbm5ldC9kc2EvY29uZHVpdC5jLTMxMS1cbm5ldC9kc2EvY29uZHVpdC5jOjMxMjpzdGF0aWMgdm9pZCBkc2FfY29uZHVpdF9ldGh0b29sX3RlYXJkb3duKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXG5uZXQvZHNhL2NvbmR1aXQuYy0zMTMte1xubmV0L2RzYS9jb25kdWl0LmM6MzE0Olx0c3RydWN0IGRzYV9wb3J0ICpjcHVfZHAgPSBkZXYtXHUwMDNlZHNhX3B0cjtcbm5ldC9kc2EvY29uZHVpdC5jLTMxNS1cbi0tXG5uZXQvZHNhL2NvbmR1aXQuYy0zMjctICovXG5uZXQvZHNhL2NvbmR1aXQuYzozMjg6c3RhdGljIHZvaWQgZHNhX2NvbmR1aXRfc2V0X3Byb21pc2N1aXR5KHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIGludCBpbmMpXG5uZXQvZHNhL2NvbmR1aXQuYy0zMjkte1xubmV0L2RzYS9jb25kdWl0LmM6MzMwOlx0Y29uc3Qgc3RydWN0IGRzYV9kZXZpY2Vfb3BzICpvcHMgPSBkZXYtXHUwMDNlZHNhX3B0ci1cdTAwM2V0YWdfb3BzO1xubmV0L2RzYS9jb25kdWl0LmMtMzMxLVxuLS1cbm5ldC9kc2EvY29uZHVpdC5jPTM0MD1zdGF0aWMgc3NpemVfdCB0YWdnaW5nX3Nob3coc3RydWN0IGRldmljZSAqZCwgc3RydWN0IGRldmljZV9hdHRyaWJ1dGUgKmF0dHIsXG4tLVxubmV0L2RzYS9jb25kdWl0LmMtMzQzLVx0c3RydWN0IG5ldF9kZXZpY2UgKmRldiA9IHRvX25ldF9kZXYoZCk7XG5uZXQvZHNhL2NvbmR1aXQuYzozNDQ6XHRzdHJ1Y3QgZHNhX3BvcnQgKmNwdV9kcCA9IGRldi1cdTAwM2Vkc2FfcHRyO1xubmV0L2RzYS9jb25kdWl0LmMtMzQ1LVxubmV0L2RzYS9jb25kdWl0LmMtMzQ2LVx0cmV0dXJuIHN5c2ZzX2VtaXQoYnVmLCBcJiMzNDslc1xcblwmIzM0Oyxcbm5ldC9kc2EvY29uZHVpdC5jOjM0NzpcdFx0ICAgICAgIGRzYV90YWdfcHJvdG9jb2xfdG9fc3RyKGNwdV9kcC1cdTAwM2V0YWdfb3BzKSk7XG5uZXQvZHNhL2NvbmR1aXQuYy0zNDgtfVxuLS1cbm5ldC9kc2EvY29uZHVpdC5jPTM1MD1zdGF0aWMgc3NpemVfdCB0YWdnaW5nX3N0b3JlKHN0cnVjdCBkZXZpY2UgKmQsIHN0cnVjdCBkZXZpY2VfYXR0cmlidXRlICphdHRyLFxuLS1cbm5ldC9kc2EvY29uZHVpdC5jLTM1Mi17XG5uZXQvZHNhL2NvbmR1aXQuYzozNTM6XHRjb25zdCBzdHJ1Y3QgZHNhX2RldmljZV9vcHMgKm5ld190YWdfb3BzLCAqb2xkX3RhZ19vcHM7XG5uZXQvZHNhL2NvbmR1aXQuYy0zNTQtXHRjb25zdCBjaGFyICplbmQgPSBzdHJjaHJudWwoYnVmLCAmIzM5O1xcbiYjMzk7KSwgKm5hbWU7XG5uZXQvZHNhL2NvbmR1aXQuYy0zNTUtXHRzdHJ1Y3QgbmV0X2RldmljZSAqZGV2ID0gdG9fbmV0X2RldihkKTtcbm5ldC9kc2EvY29uZHVpdC5jOjM1NjpcdHN0cnVjdCBkc2FfcG9ydCAqY3B1X2RwID0gZGV2LVx1MDAzZWRzYV9wdHI7XG5uZXQvZHNhL2NvbmR1aXQuYy0zNTctXHRzaXplX3QgbGVuID0gZW5kIC0gYnVmO1xuLS1cbm5ldC9kc2EvY29uZHVpdC5jLTM2OC1cdG9sZF90YWdfb3BzID0gY3B1X2RwLVx1MDAzZXRhZ19vcHM7XG5uZXQvZHNhL2NvbmR1aXQuYzozNjk6XHRuZXdfdGFnX29wcyA9IGRzYV90YWdfZHJpdmVyX2dldF9ieV9uYW1lKG5hbWUpO1xubmV0L2RzYS9jb25kdWl0LmMtMzcwLVx0a2ZyZWUobmFtZSk7XG4tLVxubmV0L2RzYS9jb25kdWl0LmMtMzgwLVxubmV0L2RzYS9jb25kdWl0LmM6MzgxOlx0ZXJyID0gZHNhX3RyZWVfY2hhbmdlX3RhZ19wcm90byhjcHVfZHAtXHUwMDNlZHMtXHUwMDNlZHN0LCBuZXdfdGFnX29wcyxcbm5ldC9kc2EvY29uZHVpdC5jLTM4Mi1cdFx0XHRcdFx0b2xkX3RhZ19vcHMpO1xuLS1cbm5ldC9kc2EvY29uZHVpdC5jLTM4Ni1cdFx0ICovXG5uZXQvZHNhL2NvbmR1aXQuYzozODc6XHRcdGRzYV90YWdfZHJpdmVyX3B1dChuZXdfdGFnX29wcyk7XG5uZXQvZHNhL2NvbmR1aXQuYy0zODgtXHRcdHJldHVybiBlcnI7XG4tLVxubmV0L2RzYS9jb25kdWl0LmMtMzkzLW91dDpcbm5ldC9kc2EvY29uZHVpdC5jOjM5NDpcdGRzYV90YWdfZHJpdmVyX3B1dChvbGRfdGFnX29wcyk7XG5uZXQvZHNhL2NvbmR1aXQuYy0zOTUtXHRyZXR1cm4gY291bnQ7XG4tLVxubmV0L2RzYS9jb25kdWl0LmM9Mzk3PXN0YXRpYyBERVZJQ0VfQVRUUl9SVyh0YWdnaW5nKTtcbm5ldC9kc2EvY29uZHVpdC5jLTM5OC1cbm5ldC9kc2EvY29uZHVpdC5jOjM5OTpzdGF0aWMgc3RydWN0IGF0dHJpYnV0ZSAqZHNhX3VzZXJfYXR0cnNbXSA9IHtcbm5ldC9kc2EvY29uZHVpdC5jLTQwMC1cdFx1MDAyNmRldl9hdHRyX3RhZ2dpbmcuYXR0cixcbi0tXG5uZXQvZHNhL2NvbmR1aXQuYy00MDMtXG5uZXQvZHNhL2NvbmR1aXQuYzo0MDQ6c3RhdGljIGNvbnN0IHN0cnVjdCBhdHRyaWJ1dGVfZ3JvdXAgZHNhX2dyb3VwID0ge1xubmV0L2RzYS9jb25kdWl0LmM6NDA1Olx0Lm5hbWVcdD0gXCYjMzQ7ZHNhXCYjMzQ7LFxubmV0L2RzYS9jb25kdWl0LmM6NDA2Olx0LmF0dHJzXHQ9IGRzYV91c2VyX2F0dHJzLFxubmV0L2RzYS9jb25kdWl0LmMtNDA3LX07XG5uZXQvZHNhL2NvbmR1aXQuYy00MDgtXG5uZXQvZHNhL2NvbmR1aXQuYzo0MDk6c3RhdGljIHZvaWQgZHNhX2NvbmR1aXRfcmVzZXRfbXR1KHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXG5uZXQvZHNhL2NvbmR1aXQuYy00MTAte1xuLS1cbm5ldC9kc2EvY29uZHVpdC5jLTQxOC1cbm5ldC9kc2EvY29uZHVpdC5jOjQxOTppbnQgZHNhX2NvbmR1aXRfc2V0dXAoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgc3RydWN0IGRzYV9wb3J0ICpjcHVfZHApXG5uZXQvZHNhL2NvbmR1aXQuYy00MjAte1xubmV0L2RzYS9jb25kdWl0LmM6NDIxOlx0Y29uc3Qgc3RydWN0IGRzYV9kZXZpY2Vfb3BzICp0YWdfb3BzID0gY3B1X2RwLVx1MDAzZXRhZ19vcHM7XG5uZXQvZHNhL2NvbmR1aXQuYzo0MjI6XHRzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMgPSBjcHVfZHAtXHUwMDNlZHM7XG5uZXQvZHNhL2NvbmR1aXQuYy00MjMtXHRzdHJ1Y3QgZGV2aWNlX2xpbmsgKmNvbnN1bWVyX2xpbms7XG4tLVxubmV0L2RzYS9jb25kdWl0LmMtNDI1LVxubmV0L2RzYS9jb25kdWl0LmM6NDI2Olx0bXR1ID0gRVRIX0RBVEFfTEVOICYjNDM7IGRzYV90YWdfcHJvdG9jb2xfb3ZlcmhlYWQodGFnX29wcyk7XG5uZXQvZHNhL2NvbmR1aXQuYy00MjctXG4tLVxubmV0L2RzYS9jb25kdWl0LmMtNDM4LVx0LyogVGhlIHN3aXRjaCBkcml2ZXIgbWF5IG5vdCBpbXBsZW1lbnQgLVx1MDAzZXBvcnRfY2hhbmdlX210dSgpLCBjYXNlIGluXG5uZXQvZHNhL2NvbmR1aXQuYzo0Mzk6XHQgKiB3aGljaCBkc2FfdXNlcl9jaGFuZ2VfbXR1KCkgd2lsbCBub3QgdXBkYXRlIHRoZSBjb25kdWl0IE1UVSBlaXRoZXIsXG5uZXQvZHNhL2NvbmR1aXQuYy00NDAtXHQgKiBzbyB3ZSBuZWVkIHRvIGRvIHRoYXQgaGVyZS5cbi0tXG5uZXQvZHNhL2NvbmR1aXQuYy00NTItXG5uZXQvZHNhL2NvbmR1aXQuYzo0NTM6XHRkZXYtXHUwMDNlZHNhX3B0ciA9IGNwdV9kcDtcbm5ldC9kc2EvY29uZHVpdC5jLTQ1NC1cbm5ldC9kc2EvY29uZHVpdC5jOjQ1NTpcdGRzYV9jb25kdWl0X3NldF9wcm9taXNjdWl0eShkZXYsIDEpO1xubmV0L2RzYS9jb25kdWl0LmMtNDU2LVxubmV0L2RzYS9jb25kdWl0LmM6NDU3Olx0cmV0ID0gZHNhX2NvbmR1aXRfZXRodG9vbF9zZXR1cChkZXYpO1xubmV0L2RzYS9jb25kdWl0LmMtNDU4LVx0aWYgKHJldClcbi0tXG5uZXQvZHNhL2NvbmR1aXQuYy00NjAtXG5uZXQvZHNhL2NvbmR1aXQuYzo0NjE6XHRyZXQgPSBzeXNmc19jcmVhdGVfZ3JvdXAoXHUwMDI2ZGV2LVx1MDAzZWRldi5rb2JqLCBcdTAwMjZkc2FfZ3JvdXApO1xubmV0L2RzYS9jb25kdWl0LmMtNDYyLVx0aWYgKHJldClcbi0tXG5uZXQvZHNhL2NvbmR1aXQuYy00Njctb3V0X2Vycl9ldGh0b29sX3RlYXJkb3duOlxubmV0L2RzYS9jb25kdWl0LmM6NDY4Olx0ZHNhX2NvbmR1aXRfZXRodG9vbF90ZWFyZG93bihkZXYpO1xubmV0L2RzYS9jb25kdWl0LmMtNDY5LW91dF9lcnJfcmVzZXRfcHJvbWlzYzpcbm5ldC9kc2EvY29uZHVpdC5jOjQ3MDpcdGRzYV9jb25kdWl0X3NldF9wcm9taXNjdWl0eShkZXYsIC0xKTtcbm5ldC9kc2EvY29uZHVpdC5jLTQ3MS1cdHJldHVybiByZXQ7XG4tLVxubmV0L2RzYS9jb25kdWl0LmMtNDczLVxubmV0L2RzYS9jb25kdWl0LmM6NDc0OnZvaWQgZHNhX2NvbmR1aXRfdGVhcmRvd24oc3RydWN0IG5ldF9kZXZpY2UgKmRldilcbm5ldC9kc2EvY29uZHVpdC5jLTQ3NS17XG5uZXQvZHNhL2NvbmR1aXQuYzo0NzY6XHRzeXNmc19yZW1vdmVfZ3JvdXAoXHUwMDI2ZGV2LVx1MDAzZWRldi5rb2JqLCBcdTAwMjZkc2FfZ3JvdXApO1xubmV0L2RzYS9jb25kdWl0LmM6NDc3Olx0ZHNhX2NvbmR1aXRfZXRodG9vbF90ZWFyZG93bihkZXYpO1xubmV0L2RzYS9jb25kdWl0LmM6NDc4Olx0ZHNhX2NvbmR1aXRfcmVzZXRfbXR1KGRldik7XG5uZXQvZHNhL2NvbmR1aXQuYzo0Nzk6XHRkc2FfY29uZHVpdF9zZXRfcHJvbWlzY3VpdHkoZGV2LCAtMSk7XG5uZXQvZHNhL2NvbmR1aXQuYy00ODAtXG5uZXQvZHNhL2NvbmR1aXQuYzo0ODE6XHRkZXYtXHUwMDNlZHNhX3B0ciA9IE5VTEw7XG5uZXQvZHNhL2NvbmR1aXQuYy00ODItXG4tLVxubmV0L2RzYS9jb25kdWl0LmMtNDg5LVxubmV0L2RzYS9jb25kdWl0LmM6NDkwOmludCBkc2FfY29uZHVpdF9sYWdfc2V0dXAoc3RydWN0IG5ldF9kZXZpY2UgKmxhZ19kZXYsIHN0cnVjdCBkc2FfcG9ydCAqY3B1X2RwLFxubmV0L2RzYS9jb25kdWl0LmMtNDkxLVx0XHRcdCAgc3RydWN0IG5ldGRldl9sYWdfdXBwZXJfaW5mbyAqdWluZm8sXG4tLVxubmV0L2RzYS9jb25kdWl0LmMtNDk2LVxubmV0L2RzYS9jb25kdWl0LmM6NDk3Olx0aWYgKCFuZXRkZXZfdXNlc19kc2EobGFnX2RldikpIHtcbm5ldC9kc2EvY29uZHVpdC5jOjQ5ODpcdFx0ZXJyID0gZHNhX2NvbmR1aXRfc2V0dXAobGFnX2RldiwgY3B1X2RwKTtcbm5ldC9kc2EvY29uZHVpdC5jLTQ5OS1cdFx0aWYgKGVycilcbi0tXG5uZXQvZHNhL2NvbmR1aXQuYy01MDQtXG5uZXQvZHNhL2NvbmR1aXQuYzo1MDU6XHRlcnIgPSBkc2FfcG9ydF9sYWdfam9pbihjcHVfZHAsIGxhZ19kZXYsIHVpbmZvLCBleHRhY2spO1xubmV0L2RzYS9jb25kdWl0LmMtNTA2LVx0aWYgKGVycikge1xuLS1cbm5ldC9kc2EvY29uZHVpdC5jLTUxNC1cdGlmIChjb25kdWl0X3NldHVwKVxubmV0L2RzYS9jb25kdWl0LmM6NTE1Olx0XHRkc2FfY29uZHVpdF90ZWFyZG93bihsYWdfZGV2KTtcbm5ldC9kc2EvY29uZHVpdC5jLTUxNi1cdHJldHVybiBlcnI7XG4tLVxubmV0L2RzYS9jb25kdWl0LmMtNTIxLSAqL1xubmV0L2RzYS9jb25kdWl0LmM6NTIyOnZvaWQgZHNhX2NvbmR1aXRfbGFnX3RlYXJkb3duKHN0cnVjdCBuZXRfZGV2aWNlICpsYWdfZGV2LFxubmV0L2RzYS9jb25kdWl0LmM6NTIzOlx0XHRcdCAgICAgIHN0cnVjdCBkc2FfcG9ydCAqY3B1X2RwKVxubmV0L2RzYS9jb25kdWl0LmMtNTI0LXtcbi0tXG5uZXQvZHNhL2NvbmR1aXQuYy01MjctXG5uZXQvZHNhL2NvbmR1aXQuYzo1Mjg6XHRkc2FfcG9ydF9sYWdfbGVhdmUoY3B1X2RwLCBsYWdfZGV2KTtcbm5ldC9kc2EvY29uZHVpdC5jLTUyOS1cbm5ldC9kc2EvY29uZHVpdC5jLTUzMC1cdG5ldGRldl9mb3JfZWFjaF91cHBlcl9kZXZfcmN1KGxhZ19kZXYsIHVwcGVyLCBpdGVyKVxubmV0L2RzYS9jb25kdWl0LmM6NTMxOlx0XHRpZiAoZHNhX3VzZXJfZGV2X2NoZWNrKHVwcGVyKSlcbm5ldC9kc2EvY29uZHVpdC5jLTUzMi1cdFx0XHRyZXR1cm47XG5uZXQvZHNhL2NvbmR1aXQuYy01MzMtXG5uZXQvZHNhL2NvbmR1aXQuYzo1MzQ6XHRkc2FfY29uZHVpdF90ZWFyZG93bihsYWdfZGV2KTtcbm5ldC9kc2EvY29uZHVpdC5jLTUzNS19XG4tLVxubmV0L2RzYS9jb25kdWl0LmgtNS1cbm5ldC9kc2EvY29uZHVpdC5oOjY6c3RydWN0IGRzYV9wb3J0O1xubmV0L2RzYS9jb25kdWl0LmgtNy1zdHJ1Y3QgbmV0X2RldmljZTtcbi0tXG5uZXQvZHNhL2NvbmR1aXQuaD05PXN0cnVjdCBuZXRsaW5rX2V4dF9hY2s7XG5uZXQvZHNhL2NvbmR1aXQuaC0xMC1cbm5ldC9kc2EvY29uZHVpdC5oOjExOmludCBkc2FfY29uZHVpdF9zZXR1cChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBzdHJ1Y3QgZHNhX3BvcnQgKmNwdV9kcCk7XG5uZXQvZHNhL2NvbmR1aXQuaDoxMjp2b2lkIGRzYV9jb25kdWl0X3RlYXJkb3duKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpO1xubmV0L2RzYS9jb25kdWl0Lmg6MTM6aW50IGRzYV9jb25kdWl0X2xhZ19zZXR1cChzdHJ1Y3QgbmV0X2RldmljZSAqbGFnX2Rldiwgc3RydWN0IGRzYV9wb3J0ICpjcHVfZHAsXG5uZXQvZHNhL2NvbmR1aXQuaC0xNC1cdFx0XHQgIHN0cnVjdCBuZXRkZXZfbGFnX3VwcGVyX2luZm8gKnVpbmZvLFxubmV0L2RzYS9jb25kdWl0LmgtMTUtXHRcdFx0ICBzdHJ1Y3QgbmV0bGlua19leHRfYWNrICpleHRhY2spO1xubmV0L2RzYS9jb25kdWl0Lmg6MTY6dm9pZCBkc2FfY29uZHVpdF9sYWdfdGVhcmRvd24oc3RydWN0IG5ldF9kZXZpY2UgKmxhZ19kZXYsXG5uZXQvZHNhL2NvbmR1aXQuaDoxNzpcdFx0XHQgICAgICBzdHJ1Y3QgZHNhX3BvcnQgKmNwdV9kcCk7XG5uZXQvZHNhL2NvbmR1aXQuaDoxODppbnQgX19kc2FfY29uZHVpdF9od3RzdGFtcF92YWxpZGF0ZShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxubmV0L2RzYS9jb25kdWl0LmgtMTktXHRcdFx0XHQgICAgY29uc3Qgc3RydWN0IGtlcm5lbF9od3RzdGFtcF9jb25maWcgKmNvbmZpZyxcbi0tXG5uZXQvZHNhL2RldmxpbmsuYy01LVxubmV0L2RzYS9kZXZsaW5rLmM6NjojaW5jbHVkZSBcdTAwM2NuZXQvZHNhLmhcdTAwM2Vcbm5ldC9kc2EvZGV2bGluay5jLTctI2luY2x1ZGUgXHUwMDNjbmV0L2RldmxpbmsuaFx1MDAzZVxuLS1cbm5ldC9kc2EvZGV2bGluay5jLTEwLVxubmV0L2RzYS9kZXZsaW5rLmM6MTE6c3RhdGljIGludCBkc2FfZGV2bGlua19pbmZvX2dldChzdHJ1Y3QgZGV2bGluayAqZGwsXG5uZXQvZHNhL2RldmxpbmsuYy0xMi1cdFx0XHRcdHN0cnVjdCBkZXZsaW5rX2luZm9fcmVxICpyZXEsXG4tLVxubmV0L2RzYS9kZXZsaW5rLmMtMTQte1xubmV0L2RzYS9kZXZsaW5rLmM6MTU6XHRzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMgPSBkc2FfZGV2bGlua190b19kcyhkbCk7XG5uZXQvZHNhL2RldmxpbmsuYy0xNi1cbi0tXG5uZXQvZHNhL2RldmxpbmsuYy0yMi1cbm5ldC9kc2EvZGV2bGluay5jOjIzOnN0YXRpYyBpbnQgZHNhX2Rldmxpbmtfc2JfcG9vbF9nZXQoc3RydWN0IGRldmxpbmsgKmRsLFxubmV0L2RzYS9kZXZsaW5rLmMtMjQtXHRcdFx0XHQgICB1bnNpZ25lZCBpbnQgc2JfaW5kZXgsIHUxNiBwb29sX2luZGV4LFxuLS1cbm5ldC9kc2EvZGV2bGluay5jLTI2LXtcbm5ldC9kc2EvZGV2bGluay5jOjI3Olx0c3RydWN0IGRzYV9zd2l0Y2ggKmRzID0gZHNhX2RldmxpbmtfdG9fZHMoZGwpO1xubmV0L2RzYS9kZXZsaW5rLmMtMjgtXG4tLVxubmV0L2RzYS9kZXZsaW5rLmMtMzUtXG5uZXQvZHNhL2RldmxpbmsuYzozNjpzdGF0aWMgaW50IGRzYV9kZXZsaW5rX3NiX3Bvb2xfc2V0KHN0cnVjdCBkZXZsaW5rICpkbCwgdW5zaWduZWQgaW50IHNiX2luZGV4LFxubmV0L2RzYS9kZXZsaW5rLmMtMzctXHRcdFx0XHQgICB1MTYgcG9vbF9pbmRleCwgdTMyIHNpemUsXG4tLVxubmV0L2RzYS9kZXZsaW5rLmMtNDAte1xubmV0L2RzYS9kZXZsaW5rLmM6NDE6XHRzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMgPSBkc2FfZGV2bGlua190b19kcyhkbCk7XG5uZXQvZHNhL2RldmxpbmsuYy00Mi1cbi0tXG5uZXQvZHNhL2RldmxpbmsuYy00OS1cbm5ldC9kc2EvZGV2bGluay5jOjUwOnN0YXRpYyBpbnQgZHNhX2Rldmxpbmtfc2JfcG9ydF9wb29sX2dldChzdHJ1Y3QgZGV2bGlua19wb3J0ICpkbHAsXG5uZXQvZHNhL2RldmxpbmsuYy01MS1cdFx0XHRcdFx0dW5zaWduZWQgaW50IHNiX2luZGV4LCB1MTYgcG9vbF9pbmRleCxcbi0tXG5uZXQvZHNhL2RldmxpbmsuYy01My17XG5uZXQvZHNhL2RldmxpbmsuYzo1NDpcdHN0cnVjdCBkc2Ffc3dpdGNoICpkcyA9IGRzYV9kZXZsaW5rX3BvcnRfdG9fZHMoZGxwKTtcbm5ldC9kc2EvZGV2bGluay5jOjU1Olx0aW50IHBvcnQgPSBkc2FfZGV2bGlua19wb3J0X3RvX3BvcnQoZGxwKTtcbm5ldC9kc2EvZGV2bGluay5jLTU2LVxuLS1cbm5ldC9kc2EvZGV2bGluay5jLTYzLVxubmV0L2RzYS9kZXZsaW5rLmM6NjQ6c3RhdGljIGludCBkc2FfZGV2bGlua19zYl9wb3J0X3Bvb2xfc2V0KHN0cnVjdCBkZXZsaW5rX3BvcnQgKmRscCxcbm5ldC9kc2EvZGV2bGluay5jLTY1LVx0XHRcdFx0XHR1bnNpZ25lZCBpbnQgc2JfaW5kZXgsIHUxNiBwb29sX2luZGV4LFxuLS1cbm5ldC9kc2EvZGV2bGluay5jLTY4LXtcbm5ldC9kc2EvZGV2bGluay5jOjY5Olx0c3RydWN0IGRzYV9zd2l0Y2ggKmRzID0gZHNhX2RldmxpbmtfcG9ydF90b19kcyhkbHApO1xubmV0L2RzYS9kZXZsaW5rLmM6NzA6XHRpbnQgcG9ydCA9IGRzYV9kZXZsaW5rX3BvcnRfdG9fcG9ydChkbHApO1xubmV0L2RzYS9kZXZsaW5rLmMtNzEtXG4tLVxubmV0L2RzYS9kZXZsaW5rLmM9Nzk9c3RhdGljIGludFxubmV0L2RzYS9kZXZsaW5rLmM6ODA6ZHNhX2Rldmxpbmtfc2JfdGNfcG9vbF9iaW5kX2dldChzdHJ1Y3QgZGV2bGlua19wb3J0ICpkbHAsXG5uZXQvZHNhL2RldmxpbmsuYy04MS1cdFx0XHRcdHVuc2lnbmVkIGludCBzYl9pbmRleCwgdTE2IHRjX2luZGV4LFxuLS1cbm5ldC9kc2EvZGV2bGluay5jLTg0LXtcbm5ldC9kc2EvZGV2bGluay5jOjg1Olx0c3RydWN0IGRzYV9zd2l0Y2ggKmRzID0gZHNhX2RldmxpbmtfcG9ydF90b19kcyhkbHApO1xubmV0L2RzYS9kZXZsaW5rLmM6ODY6XHRpbnQgcG9ydCA9IGRzYV9kZXZsaW5rX3BvcnRfdG9fcG9ydChkbHApO1xubmV0L2RzYS9kZXZsaW5rLmMtODctXG4tLVxubmV0L2RzYS9kZXZsaW5rLmM9OTY9c3RhdGljIGludFxubmV0L2RzYS9kZXZsaW5rLmM6OTc6ZHNhX2Rldmxpbmtfc2JfdGNfcG9vbF9iaW5kX3NldChzdHJ1Y3QgZGV2bGlua19wb3J0ICpkbHAsXG5uZXQvZHNhL2RldmxpbmsuYy05OC1cdFx0XHRcdHVuc2lnbmVkIGludCBzYl9pbmRleCwgdTE2IHRjX2luZGV4LFxuLS1cbm5ldC9kc2EvZGV2bGluay5jLTEwMi17XG5uZXQvZHNhL2RldmxpbmsuYzoxMDM6XHRzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMgPSBkc2FfZGV2bGlua19wb3J0X3RvX2RzKGRscCk7XG5uZXQvZHNhL2RldmxpbmsuYzoxMDQ6XHRpbnQgcG9ydCA9IGRzYV9kZXZsaW5rX3BvcnRfdG9fcG9ydChkbHApO1xubmV0L2RzYS9kZXZsaW5rLmMtMTA1LVxuLS1cbm5ldC9kc2EvZGV2bGluay5jLTExNC1cbm5ldC9kc2EvZGV2bGluay5jOjExNTpzdGF0aWMgaW50IGRzYV9kZXZsaW5rX3NiX29jY19zbmFwc2hvdChzdHJ1Y3QgZGV2bGluayAqZGwsXG5uZXQvZHNhL2RldmxpbmsuYy0xMTYtXHRcdFx0XHQgICAgICAgdW5zaWduZWQgaW50IHNiX2luZGV4KVxubmV0L2RzYS9kZXZsaW5rLmMtMTE3LXtcbm5ldC9kc2EvZGV2bGluay5jOjExODpcdHN0cnVjdCBkc2Ffc3dpdGNoICpkcyA9IGRzYV9kZXZsaW5rX3RvX2RzKGRsKTtcbm5ldC9kc2EvZGV2bGluay5jLTExOS1cbi0tXG5uZXQvZHNhL2RldmxpbmsuYy0xMjUtXG5uZXQvZHNhL2RldmxpbmsuYzoxMjY6c3RhdGljIGludCBkc2FfZGV2bGlua19zYl9vY2NfbWF4X2NsZWFyKHN0cnVjdCBkZXZsaW5rICpkbCxcbm5ldC9kc2EvZGV2bGluay5jLTEyNy1cdFx0XHRcdFx0dW5zaWduZWQgaW50IHNiX2luZGV4KVxubmV0L2RzYS9kZXZsaW5rLmMtMTI4LXtcbm5ldC9kc2EvZGV2bGluay5jOjEyOTpcdHN0cnVjdCBkc2Ffc3dpdGNoICpkcyA9IGRzYV9kZXZsaW5rX3RvX2RzKGRsKTtcbm5ldC9kc2EvZGV2bGluay5jLTEzMC1cbi0tXG5uZXQvZHNhL2RldmxpbmsuYy0xMzYtXG5uZXQvZHNhL2RldmxpbmsuYzoxMzc6c3RhdGljIGludCBkc2FfZGV2bGlua19zYl9vY2NfcG9ydF9wb29sX2dldChzdHJ1Y3QgZGV2bGlua19wb3J0ICpkbHAsXG5uZXQvZHNhL2RldmxpbmsuYy0xMzgtXHRcdFx0XHRcdCAgICB1bnNpZ25lZCBpbnQgc2JfaW5kZXgsXG4tLVxubmV0L2RzYS9kZXZsaW5rLmMtMTQxLXtcbm5ldC9kc2EvZGV2bGluay5jOjE0MjpcdHN0cnVjdCBkc2Ffc3dpdGNoICpkcyA9IGRzYV9kZXZsaW5rX3BvcnRfdG9fZHMoZGxwKTtcbm5ldC9kc2EvZGV2bGluay5jOjE0MzpcdGludCBwb3J0ID0gZHNhX2RldmxpbmtfcG9ydF90b19wb3J0KGRscCk7XG5uZXQvZHNhL2RldmxpbmsuYy0xNDQtXG4tLVxubmV0L2RzYS9kZXZsaW5rLmM9MTUyPXN0YXRpYyBpbnRcbm5ldC9kc2EvZGV2bGluay5jOjE1Mzpkc2FfZGV2bGlua19zYl9vY2NfdGNfcG9ydF9iaW5kX2dldChzdHJ1Y3QgZGV2bGlua19wb3J0ICpkbHAsXG5uZXQvZHNhL2RldmxpbmsuYy0xNTQtXHRcdFx0XHQgICAgdW5zaWduZWQgaW50IHNiX2luZGV4LCB1MTYgdGNfaW5kZXgsXG4tLVxubmV0L2RzYS9kZXZsaW5rLmMtMTU3LXtcbm5ldC9kc2EvZGV2bGluay5jOjE1ODpcdHN0cnVjdCBkc2Ffc3dpdGNoICpkcyA9IGRzYV9kZXZsaW5rX3BvcnRfdG9fZHMoZGxwKTtcbm5ldC9kc2EvZGV2bGluay5jOjE1OTpcdGludCBwb3J0ID0gZHNhX2RldmxpbmtfcG9ydF90b19wb3J0KGRscCk7XG5uZXQvZHNhL2RldmxpbmsuYy0xNjAtXG4tLVxubmV0L2RzYS9kZXZsaW5rLmMtMTY5LVxubmV0L2RzYS9kZXZsaW5rLmM6MTcwOnN0YXRpYyBjb25zdCBzdHJ1Y3QgZGV2bGlua19vcHMgZHNhX2Rldmxpbmtfb3BzID0ge1xubmV0L2RzYS9kZXZsaW5rLmM6MTcxOlx0LmluZm9fZ2V0XHRcdFx0PSBkc2FfZGV2bGlua19pbmZvX2dldCxcbm5ldC9kc2EvZGV2bGluay5jOjE3MjpcdC5zYl9wb29sX2dldFx0XHRcdD0gZHNhX2Rldmxpbmtfc2JfcG9vbF9nZXQsXG5uZXQvZHNhL2RldmxpbmsuYzoxNzM6XHQuc2JfcG9vbF9zZXRcdFx0XHQ9IGRzYV9kZXZsaW5rX3NiX3Bvb2xfc2V0LFxubmV0L2RzYS9kZXZsaW5rLmM6MTc0Olx0LnNiX3BvcnRfcG9vbF9nZXRcdFx0PSBkc2FfZGV2bGlua19zYl9wb3J0X3Bvb2xfZ2V0LFxubmV0L2RzYS9kZXZsaW5rLmM6MTc1Olx0LnNiX3BvcnRfcG9vbF9zZXRcdFx0PSBkc2FfZGV2bGlua19zYl9wb3J0X3Bvb2xfc2V0LFxubmV0L2RzYS9kZXZsaW5rLmM6MTc2Olx0LnNiX3RjX3Bvb2xfYmluZF9nZXRcdFx0PSBkc2FfZGV2bGlua19zYl90Y19wb29sX2JpbmRfZ2V0LFxubmV0L2RzYS9kZXZsaW5rLmM6MTc3Olx0LnNiX3RjX3Bvb2xfYmluZF9zZXRcdFx0PSBkc2FfZGV2bGlua19zYl90Y19wb29sX2JpbmRfc2V0LFxubmV0L2RzYS9kZXZsaW5rLmM6MTc4Olx0LnNiX29jY19zbmFwc2hvdFx0XHQ9IGRzYV9kZXZsaW5rX3NiX29jY19zbmFwc2hvdCxcbm5ldC9kc2EvZGV2bGluay5jOjE3OTpcdC5zYl9vY2NfbWF4X2NsZWFyXHRcdD0gZHNhX2Rldmxpbmtfc2Jfb2NjX21heF9jbGVhcixcbm5ldC9kc2EvZGV2bGluay5jOjE4MDpcdC5zYl9vY2NfcG9ydF9wb29sX2dldFx0XHQ9IGRzYV9kZXZsaW5rX3NiX29jY19wb3J0X3Bvb2xfZ2V0LFxubmV0L2RzYS9kZXZsaW5rLmM6MTgxOlx0LnNiX29jY190Y19wb3J0X2JpbmRfZ2V0XHQ9IGRzYV9kZXZsaW5rX3NiX29jY190Y19wb3J0X2JpbmRfZ2V0LFxubmV0L2RzYS9kZXZsaW5rLmMtMTgyLX07XG5uZXQvZHNhL2RldmxpbmsuYy0xODMtXG5uZXQvZHNhL2RldmxpbmsuYzoxODQ6aW50IGRzYV9kZXZsaW5rX3BhcmFtX2dldChzdHJ1Y3QgZGV2bGluayAqZGwsIHUzMiBpZCxcbm5ldC9kc2EvZGV2bGluay5jLTE4NS1cdFx0XHQgIHN0cnVjdCBkZXZsaW5rX3BhcmFtX2dzZXRfY3R4ICpjdHgsXG4tLVxubmV0L2RzYS9kZXZsaW5rLmMtMTg3LXtcbm5ldC9kc2EvZGV2bGluay5jOjE4ODpcdHN0cnVjdCBkc2Ffc3dpdGNoICpkcyA9IGRzYV9kZXZsaW5rX3RvX2RzKGRsKTtcbm5ldC9kc2EvZGV2bGluay5jLTE4OS1cbi0tXG5uZXQvZHNhL2RldmxpbmsuYy0xOTQtfVxubmV0L2RzYS9kZXZsaW5rLmM6MTk1OkVYUE9SVF9TWU1CT0xfR1BMKGRzYV9kZXZsaW5rX3BhcmFtX2dldCk7XG5uZXQvZHNhL2RldmxpbmsuYy0xOTYtXG5uZXQvZHNhL2RldmxpbmsuYzoxOTc6aW50IGRzYV9kZXZsaW5rX3BhcmFtX3NldChzdHJ1Y3QgZGV2bGluayAqZGwsIHUzMiBpZCxcbm5ldC9kc2EvZGV2bGluay5jLTE5OC1cdFx0XHQgIHN0cnVjdCBkZXZsaW5rX3BhcmFtX2dzZXRfY3R4ICpjdHgsXG4tLVxubmV0L2RzYS9kZXZsaW5rLmMtMjAwLXtcbm5ldC9kc2EvZGV2bGluay5jOjIwMTpcdHN0cnVjdCBkc2Ffc3dpdGNoICpkcyA9IGRzYV9kZXZsaW5rX3RvX2RzKGRsKTtcbm5ldC9kc2EvZGV2bGluay5jLTIwMi1cbi0tXG5uZXQvZHNhL2RldmxpbmsuYy0yMDctfVxubmV0L2RzYS9kZXZsaW5rLmM6MjA4OkVYUE9SVF9TWU1CT0xfR1BMKGRzYV9kZXZsaW5rX3BhcmFtX3NldCk7XG5uZXQvZHNhL2RldmxpbmsuYy0yMDktXG5uZXQvZHNhL2RldmxpbmsuYzoyMTA6aW50IGRzYV9kZXZsaW5rX3BhcmFtc19yZWdpc3RlcihzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMsXG5uZXQvZHNhL2RldmxpbmsuYy0yMTEtXHRcdFx0XHRjb25zdCBzdHJ1Y3QgZGV2bGlua19wYXJhbSAqcGFyYW1zLFxuLS1cbm5ldC9kc2EvZGV2bGluay5jLTIxNS19XG5uZXQvZHNhL2RldmxpbmsuYzoyMTY6RVhQT1JUX1NZTUJPTF9HUEwoZHNhX2RldmxpbmtfcGFyYW1zX3JlZ2lzdGVyKTtcbm5ldC9kc2EvZGV2bGluay5jLTIxNy1cbm5ldC9kc2EvZGV2bGluay5jOjIxODp2b2lkIGRzYV9kZXZsaW5rX3BhcmFtc191bnJlZ2lzdGVyKHN0cnVjdCBkc2Ffc3dpdGNoICpkcyxcbm5ldC9kc2EvZGV2bGluay5jLTIxOS1cdFx0XHRcdCAgIGNvbnN0IHN0cnVjdCBkZXZsaW5rX3BhcmFtICpwYXJhbXMsXG4tLVxubmV0L2RzYS9kZXZsaW5rLmMtMjIzLX1cbm5ldC9kc2EvZGV2bGluay5jOjIyNDpFWFBPUlRfU1lNQk9MX0dQTChkc2FfZGV2bGlua19wYXJhbXNfdW5yZWdpc3Rlcik7XG5uZXQvZHNhL2RldmxpbmsuYy0yMjUtXG5uZXQvZHNhL2RldmxpbmsuYzoyMjY6aW50IGRzYV9kZXZsaW5rX3Jlc291cmNlX3JlZ2lzdGVyKHN0cnVjdCBkc2Ffc3dpdGNoICpkcyxcbm5ldC9kc2EvZGV2bGluay5jLTIyNy1cdFx0XHRcdCAgY29uc3QgY2hhciAqcmVzb3VyY2VfbmFtZSxcbi0tXG5uZXQvZHNhL2RldmxpbmsuYy0yNDItfVxubmV0L2RzYS9kZXZsaW5rLmM6MjQzOkVYUE9SVF9TWU1CT0xfR1BMKGRzYV9kZXZsaW5rX3Jlc291cmNlX3JlZ2lzdGVyKTtcbm5ldC9kc2EvZGV2bGluay5jLTI0NC1cbm5ldC9kc2EvZGV2bGluay5jOjI0NTp2b2lkIGRzYV9kZXZsaW5rX3Jlc291cmNlc191bnJlZ2lzdGVyKHN0cnVjdCBkc2Ffc3dpdGNoICpkcylcbm5ldC9kc2EvZGV2bGluay5jLTI0Ni17XG4tLVxubmV0L2RzYS9kZXZsaW5rLmMtMjQ4LX1cbm5ldC9kc2EvZGV2bGluay5jOjI0OTpFWFBPUlRfU1lNQk9MX0dQTChkc2FfZGV2bGlua19yZXNvdXJjZXNfdW5yZWdpc3Rlcik7XG5uZXQvZHNhL2RldmxpbmsuYy0yNTAtXG5uZXQvZHNhL2RldmxpbmsuYzoyNTE6dm9pZCBkc2FfZGV2bGlua19yZXNvdXJjZV9vY2NfZ2V0X3JlZ2lzdGVyKHN0cnVjdCBkc2Ffc3dpdGNoICpkcyxcbm5ldC9kc2EvZGV2bGluay5jLTI1Mi1cdFx0XHRcdFx0ICAgdTY0IHJlc291cmNlX2lkLFxuLS1cbm5ldC9kc2EvZGV2bGluay5jLTI2MC19XG5uZXQvZHNhL2RldmxpbmsuYzoyNjE6RVhQT1JUX1NZTUJPTF9HUEwoZHNhX2RldmxpbmtfcmVzb3VyY2Vfb2NjX2dldF9yZWdpc3Rlcik7XG5uZXQvZHNhL2RldmxpbmsuYy0yNjItXG5uZXQvZHNhL2RldmxpbmsuYzoyNjM6dm9pZCBkc2FfZGV2bGlua19yZXNvdXJjZV9vY2NfZ2V0X3VucmVnaXN0ZXIoc3RydWN0IGRzYV9zd2l0Y2ggKmRzLFxubmV0L2RzYS9kZXZsaW5rLmMtMjY0LVx0XHRcdFx0XHQgICAgIHU2NCByZXNvdXJjZV9pZClcbi0tXG5uZXQvZHNhL2RldmxpbmsuYy0yNjktfVxubmV0L2RzYS9kZXZsaW5rLmM6MjcwOkVYUE9SVF9TWU1CT0xfR1BMKGRzYV9kZXZsaW5rX3Jlc291cmNlX29jY19nZXRfdW5yZWdpc3Rlcik7XG5uZXQvZHNhL2RldmxpbmsuYy0yNzEtXG5uZXQvZHNhL2RldmxpbmsuYz0yNzI9c3RydWN0IGRldmxpbmtfcmVnaW9uICpcbm5ldC9kc2EvZGV2bGluay5jOjI3Mzpkc2FfZGV2bGlua19yZWdpb25fY3JlYXRlKHN0cnVjdCBkc2Ffc3dpdGNoICpkcyxcbm5ldC9kc2EvZGV2bGluay5jLTI3NC1cdFx0XHQgIGNvbnN0IHN0cnVjdCBkZXZsaW5rX3JlZ2lvbl9vcHMgKm9wcyxcbi0tXG5uZXQvZHNhL2RldmxpbmsuYy0yNzktfVxubmV0L2RzYS9kZXZsaW5rLmM6MjgwOkVYUE9SVF9TWU1CT0xfR1BMKGRzYV9kZXZsaW5rX3JlZ2lvbl9jcmVhdGUpO1xubmV0L2RzYS9kZXZsaW5rLmMtMjgxLVxubmV0L2RzYS9kZXZsaW5rLmM9MjgyPXN0cnVjdCBkZXZsaW5rX3JlZ2lvbiAqXG5uZXQvZHNhL2RldmxpbmsuYzoyODM6ZHNhX2RldmxpbmtfcG9ydF9yZWdpb25fY3JlYXRlKHN0cnVjdCBkc2Ffc3dpdGNoICpkcyxcbm5ldC9kc2EvZGV2bGluay5jLTI4NC1cdFx0XHQgICAgICAgaW50IHBvcnQsXG4tLVxubmV0L2RzYS9kZXZsaW5rLmMtMjg3LXtcbm5ldC9kc2EvZGV2bGluay5jOjI4ODpcdHN0cnVjdCBkc2FfcG9ydCAqZHAgPSBkc2FfdG9fcG9ydChkcywgcG9ydCk7XG5uZXQvZHNhL2RldmxpbmsuYy0yODktXG4tLVxubmV0L2RzYS9kZXZsaW5rLmMtMjkzLX1cbm5ldC9kc2EvZGV2bGluay5jOjI5NDpFWFBPUlRfU1lNQk9MX0dQTChkc2FfZGV2bGlua19wb3J0X3JlZ2lvbl9jcmVhdGUpO1xubmV0L2RzYS9kZXZsaW5rLmMtMjk1LVxubmV0L2RzYS9kZXZsaW5rLmM6Mjk2OnZvaWQgZHNhX2RldmxpbmtfcmVnaW9uX2Rlc3Ryb3koc3RydWN0IGRldmxpbmtfcmVnaW9uICpyZWdpb24pXG5uZXQvZHNhL2RldmxpbmsuYy0yOTcte1xuLS1cbm5ldC9kc2EvZGV2bGluay5jLTI5OS19XG5uZXQvZHNhL2RldmxpbmsuYzozMDA6RVhQT1JUX1NZTUJPTF9HUEwoZHNhX2RldmxpbmtfcmVnaW9uX2Rlc3Ryb3kpO1xubmV0L2RzYS9kZXZsaW5rLmMtMzAxLVxubmV0L2RzYS9kZXZsaW5rLmM6MzAyOmludCBkc2FfcG9ydF9kZXZsaW5rX3NldHVwKHN0cnVjdCBkc2FfcG9ydCAqZHApXG5uZXQvZHNhL2RldmxpbmsuYy0zMDMte1xubmV0L2RzYS9kZXZsaW5rLmMtMzA0LVx0c3RydWN0IGRldmxpbmtfcG9ydCAqZGxwID0gXHUwMDI2ZHAtXHUwMDNlZGV2bGlua19wb3J0O1xubmV0L2RzYS9kZXZsaW5rLmM6MzA1Olx0c3RydWN0IGRzYV9zd2l0Y2hfdHJlZSAqZHN0ID0gZHAtXHUwMDNlZHMtXHUwMDNlZHN0O1xubmV0L2RzYS9kZXZsaW5rLmMtMzA2LVx0c3RydWN0IGRldmxpbmtfcG9ydF9hdHRycyBhdHRycyA9IHt9O1xubmV0L2RzYS9kZXZsaW5rLmMtMzA3LVx0c3RydWN0IGRldmxpbmsgKmRsID0gZHAtXHUwMDNlZHMtXHUwMDNlZGV2bGluaztcbm5ldC9kc2EvZGV2bGluay5jOjMwODpcdHN0cnVjdCBkc2Ffc3dpdGNoICpkcyA9IGRwLVx1MDAzZWRzO1xubmV0L2RzYS9kZXZsaW5rLmMtMzA5LVx0Y29uc3QgdW5zaWduZWQgY2hhciAqaWQ7XG4tLVxubmV0L2RzYS9kZXZsaW5rLmMtMzU0LVxubmV0L2RzYS9kZXZsaW5rLmM6MzU1OnZvaWQgZHNhX3BvcnRfZGV2bGlua190ZWFyZG93bihzdHJ1Y3QgZHNhX3BvcnQgKmRwKVxubmV0L2RzYS9kZXZsaW5rLmMtMzU2LXtcbm5ldC9kc2EvZGV2bGluay5jLTM1Ny1cdHN0cnVjdCBkZXZsaW5rX3BvcnQgKmRscCA9IFx1MDAyNmRwLVx1MDAzZWRldmxpbmtfcG9ydDtcblxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yNSAwODozMDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0NjE0NgoJCQkJCQkJb3V0cHV0OiAyMQoJCQkJCQkJdGhvdWdodHM6IDExMDgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqRnV6emluZyBEU0EgVGFnZ2luZyBQcm90b2NvbHMgd2l0aCBgZHNhX2xvb3BgKioKCk9rYXksIHNvIEkmIzM5O3ZlIGJlZW4gZGlnZ2luZyBpbnRvIHRoZSBEU0EgKERpc3RyaWJ1dGVkIFN3aXRjaCBBcmNoaXRlY3R1cmUpIGNvZGUsIHNwZWNpZmljYWxseSBsb29raW5nIGZvciBmdXp6aW5nIG9wcG9ydHVuaXRpZXMuIFRoZSBgZHNhX2xvb3BgIGRyaXZlciBzZWVtcyBsaWtlIGEgZ3JlYXQgc3RhcnRpbmcgcG9pbnQg4oCTIGl0JiMzOTtzIGEgbW9jay11cCBkcml2ZXIsIGVzc2VudGlhbGx5IGEgdmlydHVhbCBzd2l0Y2ggaW5zdGFudGlhdGVkIHZpYSBgbWRpb19kcml2ZXJfcmVnaXN0ZXJgIGFuZCBgZHNhX2xvb3BfY3JlYXRlX3N3aXRjaF9tZGlvZGV2KClgLiBJZiBgQ09ORklHX05FVF9EU0FfTE9PUGAgaXMgZW5hYmxlZCwgdGhpcyB0aGluZyBhdXRvbWF0aWNhbGx5IHNldHMgdXAgYSBzd2l0Y2ggYW5kIGF0dGFjaGVzIGl0IHRvIGEgZml4ZWQgUEhZLCB3aGljaCBpcyBjb252ZW5pZW50LgoKTm93LCBgZHNhX2xvb3BfY3JlYXRlX3N3aXRjaF9tZGlvZGV2KClgIGNyZWF0ZXMgZWl0aGVyIGEgcGxhdGZvcm0gZGV2aWNlIG9yIGFuIE1ESU8gZGV2aWNlLCB3aGljaCBpcyBpbnRlcmVzdGluZyBpbiBpdHNlbGYuIFRoZSBjcml0aWNhbCBwYXJ0IGlzIHdoZXRoZXIgYGRzYV9sb29wYCBwcm92aWRlcyBhIHBhdGggdG8gdGhlIG1vZGlmaWVkIHRhZ2dpbmcgY29kZSBpbiBgbmV0L2RzYS90YWdfKi5jYCwgYG5ldC9kc2EvdXNlci5jYCwgYW5kIGBuZXQvZHNhL3RhZy5jYC4gSW5pdGlhbGx5LCBpdCBsb29rcyBsaWtlIGBkc2FfbG9vcGAgdXNlcyBgTkVUX0RTQV9UQUdfTk9ORWAsIHdoaWNoIGlzbiYjMzk7dCBnb2luZyB0byBnZXQgdXMgYW55d2hlcmUgd2l0aCB0aGUgZGlmZmVyZW50IHRhZ2dpbmcgcHJvdG9jb2xzLgoKSG93ZXZlciwgdGhlIGtleSBpcyB0aGUgYGRzYV9jb25kdWl0X3NldF9wcm9taXNjdWl0eWAgYW5kIGB0YWdnaW5nX3N0b3JlYCBmdW5jdGlvbnMgaW4gYG5ldC9kc2EvY29uZHVpdC5jYC4gSXQgbG9va3MgbGlrZSB0aGVzZSBvZmZlciBhIHdheSB0byAqZHluYW1pY2FsbHkqIGNoYW5nZSB0aGUgdGFnIHByb3RvY29sIHZpYSBzeXNmcyEgU3BlY2lmaWNhbGx5LCBzeXprYWxsZXIgY2FuIHdyaXRlIHRvIGAvc3lzL2NsYXNzL25ldC8mbHQ7Y29uZHVpdCZndDsvZHNhL3RhZ2dpbmdgIHRvIHN3YXAgb3V0IHRoZSB0YWcgcHJvdG9jb2wgdG8gQU5ZIG9mIHRoZSByZWdpc3RlcmVkIHRhZyBkcml2ZXJzLiBUaGUgYHRhZ2dpbmdfc3RvcmVgIGZ1bmN0aW9uIGFjdHVhbGx5IGNhbGxzIGBkc2FfdGFnX2RyaXZlcl9nZXRfYnlfbmFtZSgpYCBhbmQgdGhlbiBgZHNhX3RyZWVfY2hhbmdlX3RhZ19wcm90bygpYC4gVGhpcyBpcyBmYW50YXN0aWMhCgpUaGlzIG1lYW5zIHdlIGNhbiBlbmFibGUgKmFsbCogdGhlIGBORVRfRFNBX1RBR18qYCBjb25maWdzIGFuZCB1c2Ugc3l6a2FsbGVyIHRvIHN3aXRjaCBiZXR3ZWVuIHRoZW0gb24gdGhlIGZseS4gVGhpcyBnaXZlcyB1cyBjb21wbGV0ZSBkeW5hbWljIGNvbnRyb2wgb3ZlciB3aGF0IHByb3RvY29scyB3ZSBmdXp6LiBXZSBuZWVkIHRvIGNvbmZpcm0gdGhhdCB3ZSBjYW4gZW5hYmxlIGFsbCB0aGVzZSB0YWdzLCB3aGljaCBpcyB0aGUgbmV4dCBzdGVwLiBJJiMzOTtsbCBjaGVjayBgbmV0L2RzYS9LY29uZmlnYCB0byBiZSBzdXJlLgoKUmVnYXJkaW5nIGBkc2FfbG9vcGAgYW5kIHRoZSAmIzM0O2NvbmR1aXQmIzM0OyBkZXZpY2UsIGl0IGNyZWF0ZXMgYSBzd2l0Y2gsIGJ1dCB3aGljaCBuZXR3b3JrIGRldmljZSBkb2VzIGl0IGF0dGFjaCB0bz8gTG9va2luZyBhdCBgZHNhX2xvb3BfcGRhdGFgLCBpdCBkZWZpbmVzIGAuY2QgPSB7IC5uZXRkZXYgPSAmIzM0O2V0aDAmIzM0OywgfWAuIFBlcmZlY3QhIFN5emthbGxlciB1c3VhbGx5IGhhcyBgZXRoMGAgb3IgYGV0aDFgIHByZXNlbnQuIElmIGBkc2FfbG9vcGAgYXR0YWNoZXMgdG8gYGV0aDBgLCBpdCYjMzk7bGwgY3JlYXRlIERTQSB1c2VyIGludGVyZmFjZXMgbGlrZSBgbGFuMWAsIGBsYW4yYCwgZXRjLgoKVGhpcyBtZWFucyB3ZSBjYW4gc2VuZCBwYWNrZXRzIHRocm91Z2ggYGxhbjFgLCB3aGljaCB3aWxsIGNhbGwgYGRzYV91c2VyX3htaXRgLCB3aGljaCBpbiB0dXJuIGNhbGxzIHRoZSB0YWdnZXImIzM5O3MgYHhtaXRgIGZ1bmN0aW9uIChgcC0mZ3Q7eG1pdGApLiBDcnVjaWFsbHksIGlmIHdlIHNlbmQgcGFja2V0cyAqdG8qIGBldGgwYCwgaXQgY2FsbHMgYGRzYV9zd2l0Y2hfcmN2YCwgYW5kIGNhbGxzIHRoZSB0YWdnZXImIzM5O3MgYHJjdmAgZnVuY3Rpb24gKGBwLSZndDtyY3ZgKS4gV2Ugbm93IGhhdmUgYSBjbGVhbiBmdXp6aW5nIHBhdGggZm9yIGJvdGggdHJhbnNtaXQgYW5kIHJlY2VpdmUgcGF0aHMhCgpTbywgdGhlIGdhbWUgcGxhbiBpcyBjbGVhci4gV2UgbmVlZCB0byBlbmFibGUgdGhlIGZvbGxvd2luZyBjb25maWdzOgoKKiAgIGBORVRfRFNBYAoqICAgYE5FVF9EU0FfTE9PUGAKKiAgIEFsbCB0aGUgYE5FVF9EU0FfVEFHXypgIGNvbmZpZ3MuCgpTcGVjaWZpY2FsbHksIEkmIzM5O2xsIG5lZWQgdG8gZW5hYmxlIGFsbCBvZiB0aGVzZToKKiAgIGBORVRfRFNBX1RBR19BUjkzMzFgCiogICBgTkVUX0RTQV9UQUdfQlJDTWAKKiAgIGBORVRfRFNBX1RBR19CUkNNX0xFR0FDWWAKKiAgIGBORVRfRFNBX1RBR19CUkNNX1BSRVBFTkRgCiogICBgTkVUX0RTQV9UQUdfSEVMTENSRUVLYAoqICAgYE5FVF9EU0FfVEFHX0dTV0lQYAoqICAgYE5FVF9EU0FfVEFHX0RTQWAKKiAgIGBORVRfRFNBX1RBR19FRFNBYAoqICAgYE5FVF9EU0FfVEFHX01US2AKKiAgIGBORVRfRFNBX1RBR19NWExfODYyWFhgCiogICBgTkVUX0RTQV9UQUdfTVhMX0dTVzFYWGAKKiAgIGBORVRfRFNBX1RBR19LU1pgCiogICBgTkVUX0RTQV9UQUdfTkVUQ2AKKiAgIGBORVRfRFNBX1RBR19PQ0VMT1RgCiogICBgTkVUX0RTQV9UQUdfT0NFTE9UXzgwMjFRYAoqICAgYE5FVF9EU0FfVEFHX1FDQWAKKiAgIGBORVRfRFNBX1RBR19SVEw0X0FgCiogICBgTkVUX0RTQV9UQUdfUlRMOF80YAoqICAgYE5FVF9EU0FfVEFHX1JaTjEKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yNSAwODozMDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgTkVUX0RTQV9UQUdfJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9kc2EvS2NvbmZpZz0xNz1pZiBORVRfRFNBXG4tLVxubmV0L2RzYS9LY29uZmlnLTIwLVxubmV0L2RzYS9LY29uZmlnOjIxOmNvbmZpZyBORVRfRFNBX1RBR19OT05FXG5uZXQvZHNhL0tjb25maWctMjItXHR0cmlzdGF0ZSBcJiMzNDtOby1vcCB0YWcgZHJpdmVyXCYjMzQ7XG4tLVxubmV0L2RzYS9LY29uZmlnLTI2LVxubmV0L2RzYS9LY29uZmlnOjI3OmNvbmZpZyBORVRfRFNBX1RBR19BUjkzMzFcbm5ldC9kc2EvS2NvbmZpZy0yOC1cdHRyaXN0YXRlIFwmIzM0O1RhZyBkcml2ZXIgZm9yIEF0aGVyb3MgQVI5MzMxIFNvQyB3aXRoIGJ1aWx0LWluIHN3aXRjaFwmIzM0O1xuLS1cbm5ldC9kc2EvS2NvbmZpZy0zMi1cbm5ldC9kc2EvS2NvbmZpZzozMzpjb25maWcgTkVUX0RTQV9UQUdfQlJDTV9DT01NT05cbm5ldC9kc2EvS2NvbmZpZy0zNC1cdHRyaXN0YXRlXG4tLVxubmV0L2RzYS9LY29uZmlnLTM2LVxubmV0L2RzYS9LY29uZmlnOjM3OmNvbmZpZyBORVRfRFNBX1RBR19CUkNNXG5uZXQvZHNhL0tjb25maWctMzgtXHR0cmlzdGF0ZSBcJiMzNDtUYWcgZHJpdmVyIGZvciBCcm9hZGNvbSBzd2l0Y2hlcyB1c2luZyBpbi1mcmFtZSBoZWFkZXJzXCYjMzQ7XG4tLVxubmV0L2RzYS9LY29uZmlnLTQzLVxubmV0L2RzYS9LY29uZmlnOjQ0OmNvbmZpZyBORVRfRFNBX1RBR19CUkNNX0xFR0FDWVxubmV0L2RzYS9LY29uZmlnLTQ1LVx0dHJpc3RhdGUgXCYjMzQ7VGFnIGRyaXZlciBmb3IgQkNNNjN4eCBsZWdhY3kgc3dpdGNoZXMgdXNpbmcgaW4tZnJhbWUgaGVhZGVyc1wmIzM0O1xuLS1cbm5ldC9kc2EvS2NvbmZpZy01My1cbm5ldC9kc2EvS2NvbmZpZzo1NDpjb25maWcgTkVUX0RTQV9UQUdfQlJDTV9MRUdBQ1lfRkNTXG5uZXQvZHNhL0tjb25maWctNTUtXHR0cmlzdGF0ZSBcJiMzNDtUYWcgZHJpdmVyIGZvciBCQ001M3h4IGxlZ2FjeSBzd2l0Y2hlcyB1c2luZyBpbi1mcmFtZSBoZWFkZXJzXCYjMzQ7XG4tLVxubmV0L2RzYS9LY29uZmlnLTYzLVxubmV0L2RzYS9LY29uZmlnOjY0OmNvbmZpZyBORVRfRFNBX1RBR19CUkNNX1BSRVBFTkRcbm5ldC9kc2EvS2NvbmZpZy02NS1cdHRyaXN0YXRlIFwmIzM0O1RhZyBkcml2ZXIgZm9yIEJyb2FkY29tIHN3aXRjaGVzIHVzaW5nIHByZXBlbmRlZCBoZWFkZXJzXCYjMzQ7XG4tLVxubmV0L2RzYS9LY29uZmlnLTcxLVxubmV0L2RzYS9LY29uZmlnOjcyOmNvbmZpZyBORVRfRFNBX1RBR19IRUxMQ1JFRUtcbm5ldC9kc2EvS2NvbmZpZy03My1cdHRyaXN0YXRlIFwmIzM0O1RhZyBkcml2ZXIgZm9yIEhpcnNjaG1hbm4gSGVsbGNyZWVrIFRTTiBzd2l0Y2hlc1wmIzM0O1xuLS1cbm5ldC9kc2EvS2NvbmZpZy03Ny1cbm5ldC9kc2EvS2NvbmZpZzo3ODpjb25maWcgTkVUX0RTQV9UQUdfR1NXSVBcbm5ldC9kc2EvS2NvbmZpZy03OS1cdHRyaXN0YXRlIFwmIzM0O1RhZyBkcml2ZXIgZm9yIExhbnRpcSAvIEludGVsIEdTV0lQIHN3aXRjaGVzXCYjMzQ7XG4tLVxubmV0L2RzYS9LY29uZmlnLTgzLVxubmV0L2RzYS9LY29uZmlnOjg0OmNvbmZpZyBORVRfRFNBX1RBR19EU0FfQ09NTU9OXG5uZXQvZHNhL0tjb25maWctODUtXHR0cmlzdGF0ZVxubmV0L2RzYS9LY29uZmlnLTg2LVxubmV0L2RzYS9LY29uZmlnOjg3OmNvbmZpZyBORVRfRFNBX1RBR19EU0Fcbm5ldC9kc2EvS2NvbmZpZy04OC1cdHRyaXN0YXRlIFwmIzM0O1RhZyBkcml2ZXIgZm9yIE1hcnZlbGwgc3dpdGNoZXMgdXNpbmcgRFNBIGhlYWRlcnNcJiMzNDtcbi0tXG5uZXQvZHNhL0tjb25maWctOTMtXG5uZXQvZHNhL0tjb25maWc6OTQ6Y29uZmlnIE5FVF9EU0FfVEFHX0VEU0Fcbm5ldC9kc2EvS2NvbmZpZy05NS1cdHRyaXN0YXRlIFwmIzM0O1RhZyBkcml2ZXIgZm9yIE1hcnZlbGwgc3dpdGNoZXMgdXNpbmcgRXRoZXJUeXBlIERTQSBoZWFkZXJzXCYjMzQ7XG4tLVxubmV0L2RzYS9LY29uZmlnLTEwMC1cbm5ldC9kc2EvS2NvbmZpZzoxMDE6Y29uZmlnIE5FVF9EU0FfVEFHX01US1xubmV0L2RzYS9LY29uZmlnLTEwMi1cdHRyaXN0YXRlIFwmIzM0O1RhZyBkcml2ZXIgZm9yIE1lZGlhdGVrIHN3aXRjaGVzXCYjMzQ7XG4tLVxubmV0L2RzYS9LY29uZmlnLTEwNi1cbm5ldC9kc2EvS2NvbmZpZzoxMDc6Y29uZmlnIE5FVF9EU0FfVEFHX01YTF84NjJYWFxubmV0L2RzYS9LY29uZmlnLTEwOC1cdHRyaXN0YXRlIFwmIzM0O1RhZyBkcml2ZXIgZm9yIE1heExpbmVhciBNeEw4NjJ4eCBzd2l0Y2hlc1wmIzM0O1xuLS1cbm5ldC9kc2EvS2NvbmZpZy0xMTMtXG5uZXQvZHNhL0tjb25maWc6MTE0OmNvbmZpZyBORVRfRFNBX1RBR19NWExfR1NXMVhYXG5uZXQvZHNhL0tjb25maWctMTE1LVx0dHJpc3RhdGUgXCYjMzQ7VGFnIGRyaXZlciBmb3IgTWF4TGluZWFyIEdTVzF4eCBzd2l0Y2hlc1wmIzM0O1xuLS1cbm5ldC9kc2EvS2NvbmZpZy0xMjEtXG5uZXQvZHNhL0tjb25maWc6MTIyOmNvbmZpZyBORVRfRFNBX1RBR19LU1pcbm5ldC9kc2EvS2NvbmZpZy0xMjMtXHR0cmlzdGF0ZSBcJiMzNDtUYWcgZHJpdmVyIGZvciBNaWNyb2NoaXAgODc5NS85Mzd4Lzk0NzcvOTg5MyBmYW1pbGllcyBvZiBzd2l0Y2hlc1wmIzM0O1xuLS1cbm5ldC9kc2EvS2NvbmZpZy0xMjctXG5uZXQvZHNhL0tjb25maWc6MTI4OmNvbmZpZyBORVRfRFNBX1RBR19ORVRDXG5uZXQvZHNhL0tjb25maWctMTI5LVx0dHJpc3RhdGUgXCYjMzQ7VGFnIGRyaXZlciBmb3IgTlhQIE5FVEMgc3dpdGNoZXNcJiMzNDtcbi0tXG5uZXQvZHNhL0tjb25maWctMTM3LVxubmV0L2RzYS9LY29uZmlnOjEzODpjb25maWcgTkVUX0RTQV9UQUdfT0NFTE9UXG5uZXQvZHNhL0tjb25maWctMTM5LVx0dHJpc3RhdGUgXCYjMzQ7VGFnIGRyaXZlciBmb3IgT2NlbG90IGZhbWlseSBvZiBzd2l0Y2hlcywgdXNpbmcgTlBJIHBvcnRcJiMzNDtcbi0tXG5uZXQvZHNhL0tjb25maWctMTQ4LVxubmV0L2RzYS9LY29uZmlnOjE0OTpjb25maWcgTkVUX0RTQV9UQUdfT0NFTE9UXzgwMjFRXG5uZXQvZHNhL0tjb25maWctMTUwLVx0dHJpc3RhdGUgXCYjMzQ7VGFnIGRyaXZlciBmb3IgT2NlbG90IGZhbWlseSBvZiBzd2l0Y2hlcywgdXNpbmcgVkxBTlwmIzM0O1xuLS1cbm5ldC9kc2EvS2NvbmZpZy0xNTgtXG5uZXQvZHNhL0tjb25maWc6MTU5OmNvbmZpZyBORVRfRFNBX1RBR19RQ0Fcbm5ldC9kc2EvS2NvbmZpZy0xNjAtXHR0cmlzdGF0ZSBcJiMzNDtUYWcgZHJpdmVyIGZvciBRdWFsY29tbSBBdGhlcm9zIFFDQThLIHN3aXRjaGVzXCYjMzQ7XG4tLVxubmV0L2RzYS9LY29uZmlnLTE2NC1cbm5ldC9kc2EvS2NvbmZpZzoxNjU6Y29uZmlnIE5FVF9EU0FfVEFHX1JUTDRfQVxubmV0L2RzYS9LY29uZmlnLTE2Ni1cdHRyaXN0YXRlIFwmIzM0O1RhZyBkcml2ZXIgZm9yIFJlYWx0ZWsgNCBieXRlIHByb3RvY29sIEEgdGFnc1wmIzM0O1xuLS1cbm5ldC9kc2EvS2NvbmZpZy0xNzEtXG5uZXQvZHNhL0tjb25maWc6MTcyOmNvbmZpZyBORVRfRFNBX1RBR19SVEw4XzRcbm5ldC9kc2EvS2NvbmZpZy0xNzMtXHR0cmlzdGF0ZSBcJiMzNDtUYWcgZHJpdmVyIGZvciBSZWFsdGVrIDggYnl0ZSBwcm90b2NvbCA0IHRhZ3NcJiMzNDtcbi0tXG5uZXQvZHNhL0tjb25maWctMTc3LVxubmV0L2RzYS9LY29uZmlnOjE3ODpjb25maWcgTkVUX0RTQV9UQUdfUlpOMV9BNVBTV1xubmV0L2RzYS9LY29uZmlnLTE3OS1cdHRyaXN0YXRlIFwmIzM0O1RhZyBkcml2ZXIgZm9yIFJlbmVzYXMgUlovTjEgQTVQU1cgc3dpdGNoXCYjMzQ7XG4tLVxubmV0L2RzYS9LY29uZmlnLTE4NC1cbm5ldC9kc2EvS2NvbmZpZzoxODU6Y29uZmlnIE5FVF9EU0FfVEFHX0xBTjkzMDNcbm5ldC9kc2EvS2NvbmZpZy0xODYtXHR0cmlzdGF0ZSBcJiMzNDtUYWcgZHJpdmVyIGZvciBTTVNDL01pY3JvY2hpcCBMQU45MzAzIGZhbWlseSBvZiBzd2l0Y2hlc1wmIzM0O1xuLS1cbm5ldC9kc2EvS2NvbmZpZy0xOTAtXG5uZXQvZHNhL0tjb25maWc6MTkxOmNvbmZpZyBORVRfRFNBX1RBR19TSkExMTA1XG5uZXQvZHNhL0tjb25maWctMTkyLVx0dHJpc3RhdGUgXCYjMzQ7VGFnIGRyaXZlciBmb3IgTlhQIFNKQTExMDUgc3dpdGNoZXNcJiMzNDtcbi0tXG5uZXQvZHNhL0tjb25maWctMTk5LVxubmV0L2RzYS9LY29uZmlnOjIwMDpjb25maWcgTkVUX0RTQV9UQUdfVFJBSUxFUlxubmV0L2RzYS9LY29uZmlnLTIwMS1cdHRyaXN0YXRlIFwmIzM0O1RhZyBkcml2ZXIgZm9yIHN3aXRjaGVzIHVzaW5nIGEgdHJhaWxlciB0YWdcJiMzNDtcbi0tXG5uZXQvZHNhL0tjb25maWctMjA1LVxubmV0L2RzYS9LY29uZmlnOjIwNjpjb25maWcgTkVUX0RTQV9UQUdfVlNDNzNYWF84MDIxUVxubmV0L2RzYS9LY29uZmlnLTIwNy1cdHRyaXN0YXRlIFwmIzM0O1RhZyBkcml2ZXIgZm9yIE1pY3JvY2hpcC9WaXRlc3NlIFZTQzczeHggZmFtaWx5IG9mIHN3aXRjaGVzLCB1c2luZyBWTEFOXCYjMzQ7XG4tLVxubmV0L2RzYS9LY29uZmlnLTIxMS1cbm5ldC9kc2EvS2NvbmZpZzoyMTI6Y29uZmlnIE5FVF9EU0FfVEFHX1hSUzcwMFhcbm5ldC9kc2EvS2NvbmZpZy0yMTMtXHR0cmlzdGF0ZSBcJiMzNDtUYWcgZHJpdmVyIGZvciBYUlM3MDB4IHN3aXRjaGVzXCYjMzQ7XG4tLVxubmV0L2RzYS9LY29uZmlnLTIxNy1cbm5ldC9kc2EvS2NvbmZpZzoyMTg6Y29uZmlnIE5FVF9EU0FfVEFHX1lUOTIxWFxubmV0L2RzYS9LY29uZmlnLTIxOS1cdHRyaXN0YXRlIFwmIzM0O1RhZyBkcml2ZXIgZm9yIE1vdG9yY29tbSBZVDkyMXggc3dpdGNoZXNcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNy8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjUgMDg6MzA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNTAzMTAKCQkJCQkJCW91dHB1dDogNjIxCgkJCQkJCQl0aG91Z2h0czogMjg3NQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipEU0EgU3Vic3lzdGVtIEFuYWx5c2lzIGZvciBGdXp6aW5nKioKCkFscmlnaHQsIGxldCYjMzk7cyBicmVhayB0aGlzIGRvd24gc3lzdGVtYXRpY2FsbHkuIEZpcnN0LCBJIG5lZWQgdG8gbGlzdCB0aGUgcmVsZXZhbnQga2VybmVsIGNvbmZpZ3VyYXRpb25zLiBXaGlsZSBgTkVUX0RTQV9UQUdfQlJDTV9DT01NT05gIGFuZCBgTkVUX0RTQV9UQUdfRFNBX0NPTU1PTmAgYXJlIGxpa2VseSBhbHJlYWR5IGVuYWJsZWQgYnkgb3RoZXJzLCBpdCBkb2VzbiYjMzk7dCBodXJ0IHRvIGJlIGV4cGxpY2l0LiBUaGUgY3JpdGljYWwgb25lIGhlcmUgaXMgYE5FVF9EU0FfTE9PUGA7IHRoYXQmIzM5O3MgZXNzZW50aWFsIGZvciBpbnN0YW50aWF0aW5nIGEgdmlydHVhbCBzd2l0Y2gsIHdoaWNoIGlzIHRoZSBrZXkgdG8gdGVzdGluZyB0aGlzLiBUaGVuLCBvZiBjb3Vyc2UsIGBDT05GSUdfTkVUX0RTQWAgaXRzZWxmIGlzIHJlcXVpcmVkLgoKTm93LCB3aGljaCBmdW5jdGlvbnMgYXJlIG1vZGlmaWVkPyBUaGUgcGF0Y2ggdG91Y2hlcyBhIGxvdCBvZiBmaWxlcyB3aXRoaW4gdGhlIGBuZXQvZHNhYCBkaXJlY3RvcnkuIEkmIzM5O3ZlIGdvdCB0byBjb25zaWRlciBhbGwgb2YgdGhlIHRhZ2dpbmcgZnVuY3Rpb25zLCB0aGUgb25lcyB0aGF0IGFyZSBsaWtlbHkgdG8gaGF2ZSBhIG1lbW9yeSBtYW5hZ2VtZW50IGNoYW5nZS4KCkxldCBtZSBzZWUgd2hhdCBuZWVkcyB0byBiZSBjb25zaWRlcmVkIGFzIHRoZSBtYWluIGZvY3VzOgotICAgYGRzYV9zd2l0Y2hfcmN2YCBpbiBgbmV0L2RzYS90YWcuY2AKLSAgIGBhcjkzMzFfdGFnX3JjdmAgaW4gYG5ldC9kc2EvdGFnX2FyOTMzMS5jYAotICAgYGJyY21fdGFnX3htaXRfbGxgIGluIGBuZXQvZHNhL3RhZ19icmNtLmNgCi0gICBgYnJjbV90YWdfcmN2X2xsYCBpbiBgbmV0L2RzYS90YWdfYnJjbS5jYAotICAgYGJyY21fbGVnX3RhZ19yY3ZgIGluIGBuZXQvZHNhL3RhZ19icmNtLmNgCi0gICBgYnJjbV9sZWdfdGFnX3htaXRgIGluIGBuZXQvZHNhL3RhZ19icmNtLmNgCi0gICBgYnJjbV9sZWdfZmNzX3RhZ194bWl0YCBpbiBgbmV0L2RzYS90YWdfYnJjbS5jYAotICAgYGRzYV9yY3ZfbGxgIGluIGBuZXQvZHNhL3RhZ19kc2EuY2AKLSAgIGBkc2FfcmN2YCBpbiBgbmV0L2RzYS90YWdfZHNhLmNgCi0gICBgZWRzYV9yY3ZgIGluIGBuZXQvZHNhL3RhZ19kc2EuY2AKLSAgIGBnc3dpcF90YWdfcmN2YCBpbiBgbmV0L2RzYS90YWdfZ3N3aXAuY2AKLSAgIGBoZWxsY3JlZWtfeG1pdGAgaW4gYG5ldC9kc2EvdGFnX2hlbGxjcmVlay5jYAotICAgYGhlbGxjcmVla19yY3ZgIGluIGBuZXQvZHNhL3RhZ19oZWxsY3JlZWsuY2AKLSAgIGBrc3pfY29tbW9uX3JjdmAgaW4gYG5ldC9kc2EvdGFnX2tzei5jYAotICAgYGtzejg3OTVfeG1pdGAgaW4gYG5ldC9kc2EvdGFnX2tzei5jYAotICAgYGtzejg3OTVfcmN2YCBpbiBgbmV0L2RzYS90YWdfa3N6LmNgCi0gICBga3N6X2RlZmVyX3htaXRgIGluIGBuZXQvZHNhL3RhZ19rc3ouY2AKLSAgIGBrc3o5NDc3X3htaXRgIGluIGBuZXQvZHNhL3RhZ19rc3ouY2AKLSAgIGBrc3o5NDc3X3JjdmAgaW4gYG5ldC9kc2EvdGFnX2tzei5jYAotICAgYGtzejk4OTNfeG1pdGAgaW4gYG5ldC9kc2EvdGFnX2tzei5jYAotICAgYGxhbjkzN3hfeG1pdGAgaW4gYG5ldC9kc2EvdGFnX2tzei5jYAotICAgYGxhbjkzMDNfcmN2YCBpbiBgbmV0L2RzYS90YWdfbGFuOTMwMy5jYAotICAgYG10a190YWdfcmN2YCBpbiBgbmV0L2RzYS90YWdfbXRrLmNgCi0gICBgZ3N3MXh4X3RhZ19yY3ZgIGluIGBuZXQvZHNhL3RhZ19teGwtZ3N3MXh4LmNgCi0gICBgbXhsODYyX3RhZ19yY3ZgIGluIGBuZXQvZHNhL3RhZ19teGw4NjJ4eC5jYAotICAgYG5ldGNfcmN2YCBpbiBgbmV0L2RzYS90YWdfbmV0Yy5jYAotICAgYG9jZWxvdF9yY3ZgIGluIGBuZXQvZHNhL3RhZ19vY2Vsb3QuY2AKLSAgIGBvY2Vsb3RfZGVmZXJfeG1pdGAgaW4gYG5ldC9kc2EvdGFnX29jZWxvdF84MDIxcS5jYAotICAgYG9jZWxvdF9yY3ZgIGluIGBuZXQvZHNhL3RhZ19vY2Vsb3RfODAyMXEuY2AKLSAgIGBxY2FfdGFnX3JjdmAgaW4gYG5ldC9kc2EvdGFnX3FjYS5jYAotICAgYHJ0bDRhX3RhZ194bWl0YCBpbiBgbmV0L2RzYS8KCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yNSAwODozMDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7TkVUX0RTQSYjMzQ7LAogICAgJiMzNDtORVRfRFNBX0xPT1AmIzM0OywKICAgICYjMzQ7TkVUX0RTQV9UQUdfQVI5MzMxJiMzNDssCiAgICAmIzM0O05FVF9EU0FfVEFHX0JSQ00mIzM0OywKICAgICYjMzQ7TkVUX0RTQV9UQUdfQlJDTV9MRUdBQ1kmIzM0OywKICAgICYjMzQ7TkVUX0RTQV9UQUdfQlJDTV9QUkVQRU5EJiMzNDssCiAgICAmIzM0O05FVF9EU0FfVEFHX0hFTExDUkVFSyYjMzQ7LAogICAgJiMzNDtORVRfRFNBX1RBR19HU1dJUCYjMzQ7LAogICAgJiMzNDtORVRfRFNBX1RBR19EU0EmIzM0OywKICAgICYjMzQ7TkVUX0RTQV9UQUdfRURTQSYjMzQ7LAogICAgJiMzNDtORVRfRFNBX1RBR19NVEsmIzM0OywKICAgICYjMzQ7TkVUX0RTQV9UQUdfTVhMXzg2MlhYJiMzNDssCiAgICAmIzM0O05FVF9EU0FfVEFHX01YTF9HU1cxWFgmIzM0OywKICAgICYjMzQ7TkVUX0RTQV9UQUdfS1NaJiMzNDssCiAgICAmIzM0O05FVF9EU0FfVEFHX05FVEMmIzM0OywKICAgICYjMzQ7TkVUX0RTQV9UQUdfT0NFTE9UJiMzNDssCiAgICAmIzM0O05FVF9EU0FfVEFHX09DRUxPVF84MDIxUSYjMzQ7LAogICAgJiMzNDtORVRfRFNBX1RBR19RQ0EmIzM0OywKICAgICYjMzQ7TkVUX0RTQV9UQUdfUlRMNF9BJiMzNDssCiAgICAmIzM0O05FVF9EU0FfVEFHX1JUTDhfNCYjMzQ7LAogICAgJiMzNDtORVRfRFNBX1RBR19SWk4xX0E1UFNXJiMzNDssCiAgICAmIzM0O05FVF9EU0FfVEFHX0xBTjkzMDMmIzM0OywKICAgICYjMzQ7TkVUX0RTQV9UQUdfU0pBMTEwNSYjMzQ7LAogICAgJiMzNDtORVRfRFNBX1RBR19UUkFJTEVSJiMzNDssCiAgICAmIzM0O05FVF9EU0FfVEFHX1ZTQzczWFhfODAyMVEmIzM0OywKICAgICYjMzQ7TkVUX0RTQV9UQUdfWFJTNzAwWCYjMzQ7LAogICAgJiMzNDtORVRfRFNBX1RBR19ZVDkyMVgmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtkc2Ffc3dpdGNoX3JjdiYjMzQ7LAogICAgJiMzNDtkc2FfdXNlcl94bWl0JiMzNDssCiAgICAmIzM0O2FyOTMzMV90YWdfcmN2JiMzNDssCiAgICAmIzM0O2JyY21fdGFnX3htaXRfbGwmIzM0OywKICAgICYjMzQ7YnJjbV90YWdfcmN2X2xsJiMzNDssCiAgICAmIzM0O2RzYV9yY3ZfbGwmIzM0OywKICAgICYjMzQ7ZWRzYV9yY3YmIzM0OywKICAgICYjMzQ7a3N6X2NvbW1vbl9yY3YmIzM0OywKICAgICYjMzQ7b2NlbG90X3JjdiYjMzQ7LAogICAgJiMzNDtxY2FfdGFnX3JjdiYjMzQ7LAogICAgJiMzNDtzamExMTA1X3JjdiYjMzQ7LAogICAgJiMzNDt0cmFpbGVyX3JjdiYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCByZWZhY3RvcnMgc2tiIG1lbW9yeSBtYW5hZ2VtZW50IGluIHRoZSBEU0EgKERpc3RyaWJ1dGVkIFN3aXRjaCBBcmNoaXRlY3R1cmUpIHN1YnN5c3RlbS4gSXQgc2hpZnRzIHRoZSByZXNwb25zaWJpbGl0eSBvZiBmcmVlaW5nIHRoZSBza2Igb24gZXJyb3IgcGF0aHMgZnJvbSB0aGUgY29yZSBEU0EgZnVuY3Rpb25zIChkc2FfdXNlcl94bWl0LCBkc2Ffc3dpdGNoX3JjdikgdG8gdGhlIGluZGl2aWR1YWwgdGFnZ2VyIGRyaXZlcnMuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSB0aGF0IGNvdWxkIGludHJvZHVjZSBtZW1vcnkgbGVha3Mgb3IgZG91YmxlIGZyZWVzIGlmIGFueSBlcnJvciBwYXRoIGluIGEgdGFnZ2VyIGRyaXZlciBpcyBtaXNzZWQgb3IgbWlzaGFuZGxlZC4gVGhlIGNvZGUgaXMgcmVhY2hhYmxlIGluIGEgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQgYnkgdXNpbmcgdGhlIGRzYV9sb29wIG1vY2stdXAgc3dpdGNoIGRyaXZlciBhbmQgZHluYW1pY2FsbHkgY2hhbmdpbmcgdGhlIHRhZ2dpbmcgcHJvdG9jb2wgdmlhIHN5c2ZzLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtORVRfRFNBJiMzNDssCiAgICAmIzM0O05FVF9EU0FfTE9PUCYjMzQ7LAogICAgJiMzNDtORVRfRFNBX1RBR19BUjkzMzEmIzM0OywKICAgICYjMzQ7TkVUX0RTQV9UQUdfQlJDTSYjMzQ7LAogICAgJiMzNDtORVRfRFNBX1RBR19CUkNNX0xFR0FDWSYjMzQ7LAogICAgJiMzNDtORVRfRFNBX1RBR19CUkNNX1BSRVBFTkQmIzM0OywKICAgICYjMzQ7TkVUX0RTQV9UQUdfSEVMTENSRUVLJiMzNDssCiAgICAmIzM0O05FVF9EU0FfVEFHX0dTV0lQJiMzNDssCiAgICAmIzM0O05FVF9EU0FfVEFHX0RTQSYjMzQ7LAogICAgJiMzNDtORVRfRFNBX1RBR19FRFNBJiMzNDssCiAgICAmIzM0O05FVF9EU0FfVEFHX01USyYjMzQ7LAogICAgJiMzNDtORVRfRFNBX1RBR19NWExfODYyWFgmIzM0OywKICAgICYjMzQ7TkVUX0RTQV9UQUdfTVhMX0dTVzFYWCYjMzQ7LAogICAgJiMzNDtORVRfRFNBX1RBR19LU1omIzM0OywKICAgICYjMzQ7TkVUX0RTQV9UQUdfTkVUQyYjMzQ7LAogICAgJiMzNDtORVRfRFNBX1RBR19PQ0VMT1QmIzM0OywKICAgICYjMzQ7TkVUX0RTQV9UQUdfT0NFTE9UXzgwMjFRJiMzNDssCiAgICAmIzM0O05FVF9EU0FfVEFHX1FDQSYjMzQ7LAogICAgJiMzNDtORVRfRFNBX1RBR19SVEw0X0EmIzM0OywKICAgICYjMzQ7TkVUX0RTQV9UQUdfUlRMOF80JiMzNDssCiAgICAmIzM0O05FVF9EU0FfVEFHX1JaTjFfQTVQU1cmIzM0OywKICAgICYjMzQ7TkVUX0RTQV9UQUdfTEFOOTMwMyYjMzQ7LAogICAgJiMzNDtORVRfRFNBX1RBR19TSkExMTA1JiMzNDssCiAgICAmIzM0O05FVF9EU0FfVEFHX1RSQUlMRVImIzM0OywKICAgICYjMzQ7TkVUX0RTQV9UQUdfVlNDNzNYWF84MDIxUSYjMzQ7LAogICAgJiMzNDtORVRfRFNBX1RBR19YUlM3MDBYJiMzNDssCiAgICAmIzM0O05FVF9EU0FfVEFHX1lUOTIxWCYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2RzYV9zd2l0Y2hfcmN2JiMzNDssCiAgICAmIzM0O2RzYV91c2VyX3htaXQmIzM0OywKICAgICYjMzQ7YXI5MzMxX3RhZ19yY3YmIzM0OywKICAgICYjMzQ7YnJjbV90YWdfeG1pdF9sbCYjMzQ7LAogICAgJiMzNDticmNtX3RhZ19yY3ZfbGwmIzM0OywKICAgICYjMzQ7ZHNhX3Jjdl9sbCYjMzQ7LAogICAgJiMzNDtlZHNhX3JjdiYjMzQ7LAogICAgJiMzNDtrc3pfY29tbW9uX3JjdiYjMzQ7LAogICAgJiMzNDtvY2Vsb3RfcmN2JiMzNDssCiAgICAmIzM0O3FjYV90YWdfcmN2JiMzNDssCiAgICAmIzM0O3NqYTExMDVfcmN2JiMzNDssCiAgICAmIzM0O3RyYWlsZXJfcmN2JiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIHJlZmFjdG9ycyBza2IgbWVtb3J5IG1hbmFnZW1lbnQgaW4gdGhlIERTQSAoRGlzdHJpYnV0ZWQgU3dpdGNoIEFyY2hpdGVjdHVyZSkgc3Vic3lzdGVtLiBJdCBzaGlmdHMgdGhlIHJlc3BvbnNpYmlsaXR5IG9mIGZyZWVpbmcgdGhlIHNrYiBvbiBlcnJvciBwYXRocyBmcm9tIHRoZSBjb3JlIERTQSBmdW5jdGlvbnMgKGRzYV91c2VyX3htaXQsIGRzYV9zd2l0Y2hfcmN2KSB0byB0aGUgaW5kaXZpZHVhbCB0YWdnZXIgZHJpdmVycy4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIHRoYXQgY291bGQgaW50cm9kdWNlIG1lbW9yeSBsZWFrcyBvciBkb3VibGUgZnJlZXMgaWYgYW55IGVycm9yIHBhdGggaW4gYSB0YWdnZXIgZHJpdmVyIGlzIG1pc3NlZCBvciBtaXNoYW5kbGVkLiBUaGUgY29kZSBpcyByZWFjaGFibGUgaW4gYSB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudCBieSB1c2luZyB0aGUgZHNhX2xvb3AgbW9jay11cCBzd2l0Y2ggZHJpdmVyIGFuZCBkeW5hbWljYWxseSBjaGFuZ2luZyB0aGUgdGFnZ2luZyBwcm90b2NvbCB2aWEgc3lzZnMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wNi0yNVQwODoyOTowNi4wNTAwMjM0NjlaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMDc1MDQzNDc5MDgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiTkVUX0RTQVwiLFxuICAgIFwiTkVUX0RTQV9MT09QXCIsXG4gICAgXCJORVRfRFNBX1RBR19BUjkzMzFcIixcbiAgICBcIk5FVF9EU0FfVEFHX0JSQ01cIixcbiAgICBcIk5FVF9EU0FfVEFHX0JSQ01fTEVHQUNZXCIsXG4gICAgXCJORVRfRFNBX1RBR19CUkNNX1BSRVBFTkRcIixcbiAgICBcIk5FVF9EU0FfVEFHX0hFTExDUkVFS1wiLFxuICAgIFwiTkVUX0RTQV9UQUdfR1NXSVBcIixcbiAgICBcIk5FVF9EU0FfVEFHX0RTQVwiLFxuICAgIFwiTkVUX0RTQV9UQUdfRURTQVwiLFxuICAgIFwiTkVUX0RTQV9UQUdfTVRLXCIsXG4gICAgXCJORVRfRFNBX1RBR19NWExfODYyWFhcIixcbiAgICBcIk5FVF9EU0FfVEFHX01YTF9HU1cxWFhcIixcbiAgICBcIk5FVF9EU0FfVEFHX0tTWlwiLFxuICAgIFwiTkVUX0RTQV9UQUdfTkVUQ1wiLFxuICAgIFwiTkVUX0RTQV9UQUdfT0NFTE9UXCIsXG4gICAgXCJORVRfRFNBX1RBR19PQ0VMT1RfODAyMVFcIixcbiAgICBcIk5FVF9EU0FfVEFHX1FDQVwiLFxuICAgIFwiTkVUX0RTQV9UQUdfUlRMNF9BXCIsXG4gICAgXCJORVRfRFNBX1RBR19SVEw4XzRcIixcbiAgICBcIk5FVF9EU0FfVEFHX1JaTjFfQTVQU1dcIixcbiAgICBcIk5FVF9EU0FfVEFHX0xBTjkzMDNcIixcbiAgICBcIk5FVF9EU0FfVEFHX1NKQTExMDVcIixcbiAgICBcIk5FVF9EU0FfVEFHX1RSQUlMRVJcIixcbiAgICBcIk5FVF9EU0FfVEFHX1ZTQzczWFhfODAyMVFcIixcbiAgICBcIk5FVF9EU0FfVEFHX1hSUzcwMFhcIixcbiAgICBcIk5FVF9EU0FfVEFHX1lUOTIxWFwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImRzYV9zd2l0Y2hfcmN2XCIsXG4gICAgXCJkc2FfdXNlcl94bWl0XCIsXG4gICAgXCJhcjkzMzFfdGFnX3JjdlwiLFxuICAgIFwiYnJjbV90YWdfeG1pdF9sbFwiLFxuICAgIFwiYnJjbV90YWdfcmN2X2xsXCIsXG4gICAgXCJkc2FfcmN2X2xsXCIsXG4gICAgXCJlZHNhX3JjdlwiLFxuICAgIFwia3N6X2NvbW1vbl9yY3ZcIixcbiAgICBcIm9jZWxvdF9yY3ZcIixcbiAgICBcInFjYV90YWdfcmN2XCIsXG4gICAgXCJzamExMTA1X3JjdlwiLFxuICAgIFwidHJhaWxlcl9yY3ZcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCByZWZhY3RvcnMgc2tiIG1lbW9yeSBtYW5hZ2VtZW50IGluIHRoZSBEU0EgKERpc3RyaWJ1dGVkIFN3aXRjaCBBcmNoaXRlY3R1cmUpIHN1YnN5c3RlbS4gSXQgc2hpZnRzIHRoZSByZXNwb25zaWJpbGl0eSBvZiBmcmVlaW5nIHRoZSBza2Igb24gZXJyb3IgcGF0aHMgZnJvbSB0aGUgY29yZSBEU0EgZnVuY3Rpb25zIChkc2FfdXNlcl94bWl0LCBkc2Ffc3dpdGNoX3JjdikgdG8gdGhlIGluZGl2aWR1YWwgdGFnZ2VyIGRyaXZlcnMuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSB0aGF0IGNvdWxkIGludHJvZHVjZSBtZW1vcnkgbGVha3Mgb3IgZG91YmxlIGZyZWVzIGlmIGFueSBlcnJvciBwYXRoIGluIGEgdGFnZ2VyIGRyaXZlciBpcyBtaXNzZWQgb3IgbWlzaGFuZGxlZC4gVGhlIGNvZGUgaXMgcmVhY2hhYmxlIGluIGEgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQgYnkgdXNpbmcgdGhlIGRzYV9sb29wIG1vY2stdXAgc3dpdGNoIGRyaXZlciBhbmQgZHluYW1pY2FsbHkgY2hhbmdpbmcgdGhlIHRhZ2dpbmcgcHJvdG9jb2wgdmlhIHN5c2ZzLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0yNVQwODoyOTowNi4wNTAwMzEyODlaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjgwNjg1OTQxNSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IDY3NGU4OTk4Mzc3Y2M2ZjE3Y2IyOWZmYzY2NTVmOTJmYzM5YTE5ZjdcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIFRodSBKdW4gMjUgMDg6Mjk6MDQgMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvbmV0L2RzYS90YWcuYyBiL25ldC9kc2EvdGFnLmNcXG5pbmRleCA3OWFkMTA1OTAyZDk3OC4uOTkxNzMyZDZlYWUyYzMgMTAwNjQ0XFxuLS0tIGEvbmV0L2RzYS90YWcuY1xcbisrKyBiL25ldC9kc2EvdGFnLmNcXG5AQCAtNzksMTUgKzc5LDE2IEBAIHN0YXRpYyBpbnQgZHNhX3N3aXRjaF9yY3Yoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IG5ldF9kZXZpY2UgKmRldixcXG4gXFx0XFx0aWYgKGxpa2VseShza2ItXFx1MDAzZWRldikpIHtcXG4gXFx0XFx0XFx0ZHNhX2RlZmF1bHRfb2ZmbG9hZF9md2RfbWFyayhza2IpO1xcbiBcXHRcXHRcXHRuc2tiID0gc2tiO1xcbitcXHRcXHR9IGVsc2Uge1xcbitcXHRcXHRcXHQvKiBKdXN0IGRyb3AgdGhlIHNrYiBpZiB3ZSBjYW4ndCBmaW5kIHRoZSB1c2VyICovXFxuK1xcdFxcdFxcdGtmcmVlX3NrYihza2IpO1xcbiBcXHRcXHR9XFxuIFxcdH0gZWxzZSB7XFxuIFxcdFxcdG5za2IgPSBjcHVfZHAtXFx1MDAzZXJjdihza2IsIGRldik7XFxuIFxcdH1cXG4gXFxuLVxcdGlmICghbnNrYikge1xcbi1cXHRcXHRrZnJlZV9za2Ioc2tiKTtcXG4rXFx0aWYgKCFuc2tiKVxcbiBcXHRcXHRyZXR1cm4gMDtcXG4tXFx0fVxcbiBcXG4gXFx0c2tiID0gbnNrYjtcXG4gXFx0c2tiX3B1c2goc2tiLCBFVEhfSExFTik7XFxuQEAgLTEwNywxMSArMTA4LDEwIEBAIHN0YXRpYyBpbnQgZHNhX3N3aXRjaF9yY3Yoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IG5ldF9kZXZpY2UgKmRldixcXG4gXFxuIFxcdGlmICh1bmxpa2VseShjcHVfZHAtXFx1MDAzZWRzLVxcdTAwM2V1bnRhZ19icmlkZ2VfcHZpZCB8fFxcbiBcXHRcXHQgICAgIGNwdV9kcC1cXHUwMDNlZHMtXFx1MDAzZXVudGFnX3ZsYW5fYXdhcmVfYnJpZGdlX3B2aWQpKSB7XFxuK1xcdFxcdC8qIGRzYV9zb2Z0d2FyZV92bGFuX3VudGFnKCkgZHJvcHMgc2tiIG9uIGZhaWx1cmUgKi9cXG4gXFx0XFx0bnNrYiA9IGRzYV9zb2Z0d2FyZV92bGFuX3VudGFnKHNrYik7XFxuLVxcdFxcdGlmICghbnNrYikge1xcbi1cXHRcXHRcXHRrZnJlZV9za2Ioc2tiKTtcXG4rXFx0XFx0aWYgKCFuc2tiKVxcbiBcXHRcXHRcXHRyZXR1cm4gMDtcXG4tXFx0XFx0fVxcbiBcXHRcXHRza2IgPSBuc2tiO1xcbiBcXHR9XFxuIFxcbmRpZmYgLS1naXQgYS9uZXQvZHNhL3RhZ19hcjkzMzEuYyBiL25ldC9kc2EvdGFnX2FyOTMzMS5jXFxuaW5kZXggY2JiNTg4Y2E3M2FhZjUuLjJlMjM4ODE0M2IwMjUxIDEwMDY0NFxcbi0tLSBhL25ldC9kc2EvdGFnX2FyOTMzMS5jXFxuKysrIGIvbmV0L2RzYS90YWdfYXI5MzMxLmNcXG5AQCAtNTEsOCArNTEsMTAgQEAgc3RhdGljIHN0cnVjdCBza19idWZmICphcjkzMzFfdGFnX3JjdihzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxcbiBcXHR1OCB2ZXIsIHBvcnQ7XFxuIFxcdHUxNiBoZHI7XFxuIFxcbi1cXHRpZiAodW5saWtlbHkoIXBza2JfbWF5X3B1bGwoc2tiLCBBUjkzMzFfSERSX0xFTikpKVxcbitcXHRpZiAodW5saWtlbHkoIXBza2JfbWF5X3B1bGwoc2tiLCBBUjkzMzFfSERSX0xFTikpKSB7XFxuK1xcdFxcdGtmcmVlX3NrYihza2IpO1xcbiBcXHRcXHRyZXR1cm4gTlVMTDtcXG4rXFx0fVxcbiBcXG4gXFx0aGRyID0gbGUxNl90b19jcHUoKihfX2xlMTYgKilza2JfbWFjX2hlYWRlcihza2IpKTtcXG4gXFxuQEAgLTYwLDEyICs2MiwxNCBAQCBzdGF0aWMgc3RydWN0IHNrX2J1ZmYgKmFyOTMzMV90YWdfcmN2KHN0cnVjdCBza19idWZmICpza2IsXFxuIFxcdGlmICh1bmxpa2VseSh2ZXIgIT0gQVI5MzMxX0hEUl9WRVJTSU9OKSkge1xcbiBcXHRcXHRuZXRkZXZfd2Fybl9vbmNlKG5kZXYsIFxcXCIlczolaSB3cm9uZyBoZWFkZXIgdmVyc2lvbiAweCUyeFxcXFxuXFxcIixcXG4gXFx0XFx0XFx0XFx0IF9fZnVuY19fLCBfX0xJTkVfXywgaGRyKTtcXG4rXFx0XFx0a2ZyZWVfc2tiKHNrYik7XFxuIFxcdFxcdHJldHVybiBOVUxMO1xcbiBcXHR9XFxuIFxcbiBcXHRpZiAodW5saWtlbHkoaGRyIFxcdTAwMjYgQVI5MzMxX0hEUl9GUk9NX0NQVSkpIHtcXG4gXFx0XFx0bmV0ZGV2X3dhcm5fb25jZShuZGV2LCBcXFwiJXM6JWkgcGFja2V0IHNob3VsZCBub3QgYmUgZnJvbSBjcHUgMHglMnhcXFxcblxcXCIsXFxuIFxcdFxcdFxcdFxcdCBfX2Z1bmNfXywgX19MSU5FX18sIGhkcik7XFxuK1xcdFxcdGtmcmVlX3NrYihza2IpO1xcbiBcXHRcXHRyZXR1cm4gTlVMTDtcXG4gXFx0fVxcbiBcXG5AQCAtNzUsOCArNzksMTAgQEAgc3RhdGljIHN0cnVjdCBza19idWZmICphcjkzMzFfdGFnX3JjdihzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxcbiBcXHRwb3J0ID0gRklFTERfR0VUKEFSOTMzMV9IRFJfUE9SVF9OVU1fTUFTSywgaGRyKTtcXG4gXFxuIFxcdHNrYi1cXHUwMDNlZGV2ID0gZHNhX2NvbmR1aXRfZmluZF91c2VyKG5kZXYsIDAsIHBvcnQpO1xcbi1cXHRpZiAoIXNrYi1cXHUwMDNlZGV2KVxcbitcXHRpZiAoIXNrYi1cXHUwMDNlZGV2KSB7XFxuK1xcdFxcdGtmcmVlX3NrYihza2IpO1xcbiBcXHRcXHRyZXR1cm4gTlVMTDtcXG4rXFx0fVxcbiBcXG4gXFx0cmV0dXJuIHNrYjtcXG4gfVxcbmRpZmYgLS1naXQgYS9uZXQvZHNhL3RhZ19icmNtLmMgYi9uZXQvZHNhL3RhZ19icmNtLmNcXG5pbmRleCBjZjk0MjA0MzkwNTQzZi4uNDExZTNiNTdkMTZhZjUgMTAwNjQ0XFxuLS0tIGEvbmV0L2RzYS90YWdfYnJjbS5jXFxuKysrIGIvbmV0L2RzYS90YWdfYnJjbS5jXFxuQEAgLTEwMiw5ICsxMDIsOSBAQCBzdGF0aWMgc3RydWN0IHNrX2J1ZmYgKmJyY21fdGFnX3htaXRfbGwoc3RydWN0IHNrX2J1ZmYgKnNrYixcXG4gXFx0ICogKGluY2x1ZGluZyBGQ1MgYW5kIHRhZykgYmVjYXVzZSB0aGUgbGVuZ3RoIHZlcmlmaWNhdGlvbiBpcyBkb25lIGFmdGVyXFxuIFxcdCAqIHRoZSBCcm9hZGNvbSB0YWcgaXMgc3RyaXBwZWQgb2ZmIHRoZSBpbmdyZXNzIHBhY2tldC5cXG4gXFx0ICpcXG4tXFx0ICogTGV0IGRzYV91c2VyX3htaXQoKSBmcmVlIHRoZSBTS0JcXG4rXFx0ICogRnJlZSB0aGUgU0tCIG9uIGVycm9yLlxcbiBcXHQgKi9cXG4tXFx0aWYgKF9fc2tiX3B1dF9wYWR0byhza2IsIEVUSF9aTEVOICsgQlJDTV9UQUdfTEVOLCBmYWxzZSkpXFxuK1xcdGlmIChza2JfcHV0X3BhZHRvKHNrYiwgRVRIX1pMRU4gKyBCUkNNX1RBR19MRU4pKVxcbiBcXHRcXHRyZXR1cm4gTlVMTDtcXG4gXFxuIFxcdHNrYl9wdXNoKHNrYiwgQlJDTV9UQUdfTEVOKTtcXG5AQCAtMTUxLDI3ICsxNTEsMzUgQEAgc3RhdGljIHN0cnVjdCBza19idWZmICpicmNtX3RhZ19yY3ZfbGwoc3RydWN0IHNrX2J1ZmYgKnNrYixcXG4gXFx0aW50IHNvdXJjZV9wb3J0O1xcbiBcXHR1OCAqYnJjbV90YWc7XFxuIFxcbi1cXHRpZiAodW5saWtlbHkoIXBza2JfbWF5X3B1bGwoc2tiLCBCUkNNX1RBR19MRU4pKSlcXG4rXFx0aWYgKHVubGlrZWx5KCFwc2tiX21heV9wdWxsKHNrYiwgQlJDTV9UQUdfTEVOKSkpIHtcXG4rXFx0XFx0a2ZyZWVfc2tiKHNrYik7XFxuIFxcdFxcdHJldHVybiBOVUxMO1xcbitcXHR9XFxuIFxcbiBcXHRicmNtX3RhZyA9IHNrYi1cXHUwMDNlZGF0YSAtIG9mZnNldDtcXG4gXFxuIFxcdC8qIFRoZSBvcGNvZGUgc2hvdWxkIG5ldmVyIGJlIGRpZmZlcmVudCB0aGFuIDBiMDAwICovXFxuLVxcdGlmICh1bmxpa2VseSgoYnJjbV90YWdbMF0gXFx1MDAzZVxcdTAwM2UgQlJDTV9PUENPREVfU0hJRlQpIFxcdTAwMjYgQlJDTV9PUENPREVfTUFTSykpXFxuK1xcdGlmICh1bmxpa2VseSgoYnJjbV90YWdbMF0gXFx1MDAzZVxcdTAwM2UgQlJDTV9PUENPREVfU0hJRlQpIFxcdTAwMjYgQlJDTV9PUENPREVfTUFTSykpIHtcXG4rXFx0XFx0a2ZyZWVfc2tiKHNrYik7XFxuIFxcdFxcdHJldHVybiBOVUxMO1xcbitcXHR9XFxuIFxcbiBcXHQvKiBXZSBzaG91bGQgbmV2ZXIgc2VlIGEgcmVzZXJ2ZWQgcmVhc29uIGNvZGUgd2l0aG91dCBrbm93aW5nIGhvdyB0b1xcbiBcXHQgKiBoYW5kbGUgaXRcXG4gXFx0ICovXFxuLVxcdGlmICh1bmxpa2VseShicmNtX3RhZ1syXSBcXHUwMDI2IEJSQ01fRUdfUkNfUlNWRCkpXFxuK1xcdGlmICh1bmxpa2VseShicmNtX3RhZ1syXSBcXHUwMDI2IEJSQ01fRUdfUkNfUlNWRCkpIHtcXG4rXFx0XFx0a2ZyZWVfc2tiKHNrYik7XFxuIFxcdFxcdHJldHVybiBOVUxMO1xcbitcXHR9XFxuIFxcbiBcXHQvKiBMb2NhdGUgd2hpY2ggcG9ydCB0aGlzIGlzIGNvbWluZyBmcm9tICovXFxuIFxcdHNvdXJjZV9wb3J0ID0gYnJjbV90YWdbM10gXFx1MDAyNiBCUkNNX0VHX1BJRF9NQVNLO1xcbiBcXG4gXFx0c2tiLVxcdTAwM2VkZXYgPSBkc2FfY29uZHVpdF9maW5kX3VzZXIoZGV2LCAwLCBzb3VyY2VfcG9ydCk7XFxuLVxcdGlmICghc2tiLVxcdTAwM2VkZXYpXFxuK1xcdGlmICghc2tiLVxcdTAwM2VkZXYpIHtcXG4rXFx0XFx0a2ZyZWVfc2tiKHNrYik7XFxuIFxcdFxcdHJldHVybiBOVUxMO1xcbitcXHR9XFxuIFxcbiBcXHQvKiBSZW1vdmUgQnJvYWRjb20gdGFnIGFuZCB1cGRhdGUgY2hlY2tzdW0gKi9cXG4gXFx0c2tiX3B1bGxfcmNzdW0oc2tiLCBCUkNNX1RBR19MRU4pO1xcbkBAIC0yMjgsOCArMjM2LDEwIEBAIHN0YXRpYyBzdHJ1Y3Qgc2tfYnVmZiAqYnJjbV9sZWdfdGFnX3JjdihzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxcbiBcXHRfX2JlMTYgKnByb3RvO1xcbiBcXHR1OCAqYnJjbV90YWc7XFxuIFxcbi1cXHRpZiAodW5saWtlbHkoIXBza2JfbWF5X3B1bGwoc2tiLCBCUkNNX0xFR19UQUdfTEVOICsgVkxBTl9ITEVOKSkpXFxuK1xcdGlmICh1bmxpa2VseSghcHNrYl9tYXlfcHVsbChza2IsIEJSQ01fTEVHX1RBR19MRU4gKyBWTEFOX0hMRU4pKSkge1xcbitcXHRcXHRrZnJlZV9za2Ioc2tiKTtcXG4gXFx0XFx0cmV0dXJuIE5VTEw7XFxuK1xcdH1cXG4gXFxuIFxcdGJyY21fdGFnID0gZHNhX2V0eXBlX2hlYWRlcl9wb3Nfcngoc2tiKTtcXG4gXFx0cHJvdG8gPSAoX19iZTE2ICopKGJyY21fdGFnICsgQlJDTV9MRUdfVEFHX0xFTik7XFxuQEAgLTIzNyw4ICsyNDcsMTAgQEAgc3RhdGljIHN0cnVjdCBza19idWZmICpicmNtX2xlZ190YWdfcmN2KHN0cnVjdCBza19idWZmICpza2IsXFxuIFxcdHNvdXJjZV9wb3J0ID0gYnJjbV90YWdbNV0gXFx1MDAyNiBCUkNNX0xFR19QT1JUX0lEO1xcbiBcXG4gXFx0c2tiLVxcdTAwM2VkZXYgPSBkc2FfY29uZHVpdF9maW5kX3VzZXIoZGV2LCAwLCBzb3VyY2VfcG9ydCk7XFxuLVxcdGlmICghc2tiLVxcdTAwM2VkZXYpXFxuK1xcdGlmICghc2tiLVxcdTAwM2VkZXYpIHtcXG4rXFx0XFx0a2ZyZWVfc2tiKHNrYik7XFxuIFxcdFxcdHJldHVybiBOVUxMO1xcbitcXHR9XFxuIFxcbiBcXHQvKiBUaGUgaW50ZXJuYWwgc3dpdGNoIGluIEJDTTYzWFggU29DcyBhbHdheXMgdGFncyBvbiBlZ3Jlc3Mgb24gdGhlIENQVVxcbiBcXHQgKiBwb3J0LiBXZSB1c2UgVklEIDAgaW50ZXJuYWxseSBmb3IgdW50YWdnZWQgdHJhZmZpYywgc28gc3RyaXAgdGhlIHRhZ1xcbkBAIC0yNzMsMTAgKzI4NSw4IEBAIHN0YXRpYyBzdHJ1Y3Qgc2tfYnVmZiAqYnJjbV9sZWdfdGFnX3htaXQoc3RydWN0IHNrX2J1ZmYgKnNrYixcXG4gXFx0ICogbmVlZCB0byBtYWtlIHN1cmUgdGhhdCBwYWNrZXRzIGFyZSBhdCBsZWFzdCA3MCBieXRlc1xcbiBcXHQgKiAoaW5jbHVkaW5nIEZDUyBhbmQgdGFnKSBiZWNhdXNlIHRoZSBsZW5ndGggdmVyaWZpY2F0aW9uIGlzIGRvbmUgYWZ0ZXJcXG4gXFx0ICogdGhlIEJyb2FkY29tIHRhZyBpcyBzdHJpcHBlZCBvZmYgdGhlIGluZ3Jlc3MgcGFja2V0Llxcbi1cXHQgKlxcbi1cXHQgKiBMZXQgZHNhX3VzZXJfeG1pdCgpIGZyZWUgdGhlIFNLQlxcbiBcXHQgKi9cXG4tXFx0aWYgKF9fc2tiX3B1dF9wYWR0byhza2IsIEVUSF9aTEVOICsgQlJDTV9MRUdfVEFHX0xFTiwgZmFsc2UpKVxcbitcXHRpZiAoc2tiX3B1dF9wYWR0byhza2IsIEVUSF9aTEVOICsgQlJDTV9MRUdfVEFHX0xFTikpXFxuIFxcdFxcdHJldHVybiBOVUxMO1xcbiBcXG4gXFx0c2tiX3B1c2goc2tiLCBCUkNNX0xFR19UQUdfTEVOKTtcXG5AQCAtMzI1LDEwICszMzUsOCBAQCBzdGF0aWMgc3RydWN0IHNrX2J1ZmYgKmJyY21fbGVnX2Zjc190YWdfeG1pdChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxcbiBcXHQgKiBuZWVkIHRvIG1ha2Ugc3VyZSB0aGF0IHBhY2tldHMgYXJlIGF0IGxlYXN0IDcwIGJ5dGVzIChpbmNsdWRpbmcgRkNTXFxuIFxcdCAqIGFuZCB0YWcpIGJlY2F1c2UgdGhlIGxlbmd0aCB2ZXJpZmljYXRpb24gaXMgZG9uZSBhZnRlciB0aGUgQnJvYWRjb21cXG4gXFx0ICogdGFnIGlzIHN0cmlwcGVkIG9mZiB0aGUgaW5ncmVzcyBwYWNrZXQuXFxuLVxcdCAqXFxuLVxcdCAqIExldCBkc2FfdXNlcl94bWl0KCkgZnJlZSB0aGUgU0tCLlxcbiBcXHQgKi9cXG4tXFx0aWYgKF9fc2tiX3B1dF9wYWR0byhza2IsIEVUSF9aTEVOICsgQlJDTV9MRUdfVEFHX0xFTiwgZmFsc2UpKVxcbitcXHRpZiAoc2tiX3B1dF9wYWR0byhza2IsIEVUSF9aTEVOICsgQlJDTV9MRUdfVEFHX0xFTikpXFxuIFxcdFxcdHJldHVybiBOVUxMO1xcbiBcXG4gXFx0ZmNzX2xlbiA9IHNrYi1cXHUwMDNlbGVuO1xcbkBAIC0zNTEsOCArMzU5LDkgQEAgc3RhdGljIHN0cnVjdCBza19idWZmICpicmNtX2xlZ19mY3NfdGFnX3htaXQoc3RydWN0IHNrX2J1ZmYgKnNrYixcXG4gXFx0YnJjbV90YWdbNV0gPSBkcC1cXHUwMDNlaW5kZXggXFx1MDAyNiBCUkNNX0xFR19QT1JUX0lEO1xcbiBcXG4gXFx0LyogT3JpZ2luYWwgRkNTIHZhbHVlICovXFxuLVxcdGlmIChfX3NrYl9wYWQoc2tiLCBFVEhfRkNTX0xFTiwgZmFsc2UpKVxcbitcXHRpZiAoc2tiX3BhZChza2IsIEVUSF9GQ1NfTEVOKSlcXG4gXFx0XFx0cmV0dXJuIE5VTEw7XFxuK1xcbiBcXHRza2JfcHV0X2RhdGEoc2tiLCBcXHUwMDI2ZmNzX3ZhbCwgRVRIX0ZDU19MRU4pO1xcbiBcXG4gXFx0cmV0dXJuIHNrYjtcXG5kaWZmIC0tZ2l0IGEvbmV0L2RzYS90YWdfZHNhLmMgYi9uZXQvZHNhL3RhZ19kc2EuY1xcbmluZGV4IDJhMmM0ZmI2MWE2NWM2Li5kNWZmZWUzNWZiYjUzYiAxMDA2NDRcXG4tLS0gYS9uZXQvZHNhL3RhZ19kc2EuY1xcbisrKyBiL25ldC9kc2EvdGFnX2RzYS5jXFxuQEAgLTIyNCw2ICsyMjQsNyBAQCBzdGF0aWMgc3RydWN0IHNrX2J1ZmYgKmRzYV9yY3ZfbGwoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IG5ldF9kZXZpY2UgKmRldixcXG4gXFx0XFx0XFx0LyogUmVtb3RlIG1hbmFnZW1lbnQgaXMgbm90IGltcGxlbWVudGVkIHlldCxcXG4gXFx0XFx0XFx0ICogZHJvcC5cXG4gXFx0XFx0XFx0ICovXFxuK1xcdFxcdFxcdGtmcmVlX3NrYihza2IpO1xcbiBcXHRcXHRcXHRyZXR1cm4gTlVMTDtcXG4gXFx0XFx0Y2FzZSBEU0FfQ09ERV9BUlBfTUlSUk9SOlxcbiBcXHRcXHRjYXNlIERTQV9DT0RFX1BPTElDWV9NSVJST1I6XFxuQEAgLTI0NCwxMiArMjQ1LDE0IEBAIHN0YXRpYyBzdHJ1Y3Qgc2tfYnVmZiAqZHNhX3Jjdl9sbChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxcbiBcXHRcXHRcXHQvKiBSZXNlcnZlZCBjb2RlLCB0aGlzIGNvdWxkIGJlIGFueXRoaW5nLiBEcm9wXFxuIFxcdFxcdFxcdCAqIHNlZW1zIGxpa2UgdGhlIHNhZmVzdCBvcHRpb24uXFxuIFxcdFxcdFxcdCAqL1xcbitcXHRcXHRcXHRrZnJlZV9za2Ioc2tiKTtcXG4gXFx0XFx0XFx0cmV0dXJuIE5VTEw7XFxuIFxcdFxcdH1cXG4gXFxuIFxcdFxcdGJyZWFrO1xcbiBcXG4gXFx0ZGVmYXVsdDpcXG4rXFx0XFx0a2ZyZWVfc2tiKHNrYik7XFxuIFxcdFxcdHJldHVybiBOVUxMO1xcbiBcXHR9XFxuIFxcbkBAIC0yNzEsOCArMjc0LDEwIEBAIHN0YXRpYyBzdHJ1Y3Qgc2tfYnVmZiAqZHNhX3Jjdl9sbChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxcbiBcXHRcXHRcXHRcXHRcXHRcXHQgc291cmNlX3BvcnQpO1xcbiBcXHR9XFxuIFxcbi1cXHRpZiAoIXNrYi1cXHUwMDNlZGV2KVxcbitcXHRpZiAoIXNrYi1cXHUwMDNlZGV2KSB7XFxuK1xcdFxcdGtmcmVlX3NrYihza2IpO1xcbiBcXHRcXHRyZXR1cm4gTlVMTDtcXG4rXFx0fVxcbiBcXG4gXFx0LyogV2hlbiB1c2luZyBMQUcgb2ZmbG9hZCwgc2tiLVxcdTAwM2VkZXYgaXMgbm90IGEgRFNBIHVzZXIgaW50ZXJmYWNlLFxcbiBcXHQgKiBzbyB3ZSBjYW5ub3QgY2FsbCBkc2FfZGVmYXVsdF9vZmZsb2FkX2Z3ZF9tYXJrIGFuZCB3ZSBuZWVkIHRvXFxuQEAgLTMzNSw4ICszNDAsMTAgQEAgc3RhdGljIHN0cnVjdCBza19idWZmICpkc2FfeG1pdChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxcbiBcXG4gc3RhdGljIHN0cnVjdCBza19idWZmICpkc2FfcmN2KHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXFxuIHtcXG4tXFx0aWYgKHVubGlrZWx5KCFwc2tiX21heV9wdWxsKHNrYiwgRFNBX0hMRU4pKSlcXG4rXFx0aWYgKHVubGlrZWx5KCFwc2tiX21heV9wdWxsKHNrYiwgRFNBX0hMRU4pKSkge1xcbitcXHRcXHRrZnJlZV9za2Ioc2tiKTtcXG4gXFx0XFx0cmV0dXJuIE5VTEw7XFxuK1xcdH1cXG4gXFxuIFxcdHJldHVybiBkc2FfcmN2X2xsKHNrYiwgZGV2LCAwKTtcXG4gfVxcbkBAIC0zNzUsOCArMzgyLDEwIEBAIHN0YXRpYyBzdHJ1Y3Qgc2tfYnVmZiAqZWRzYV94bWl0KHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXFxuIFxcbiBzdGF0aWMgc3RydWN0IHNrX2J1ZmYgKmVkc2FfcmN2KHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXFxuIHtcXG4tXFx0aWYgKHVubGlrZWx5KCFwc2tiX21heV9wdWxsKHNrYiwgRURTQV9ITEVOKSkpXFxuK1xcdGlmICh1bmxpa2VseSghcHNrYl9tYXlfcHVsbChza2IsIEVEU0FfSExFTikpKSB7XFxuK1xcdFxcdGtmcmVlX3NrYihza2IpO1xcbiBcXHRcXHRyZXR1cm4gTlVMTDtcXG4rXFx0fVxcbiBcXG4gXFx0c2tiX3B1bGxfcmNzdW0oc2tiLCBFRFNBX0hMRU4gLSBEU0FfSExFTik7XFxuIFxcbmRpZmYgLS1naXQgYS9uZXQvZHNhL3RhZ19nc3dpcC5jIGIvbmV0L2RzYS90YWdfZ3N3aXAuY1xcbmluZGV4IDVmYTQzNjEyMTA4N2I0Li41YzQwN2Q0NDhjOWZlZSAxMDA2NDRcXG4tLS0gYS9uZXQvZHNhL3RhZ19nc3dpcC5jXFxuKysrIGIvbmV0L2RzYS90YWdfZ3N3aXAuY1xcbkBAIC04MCwxNiArODAsMjAgQEAgc3RhdGljIHN0cnVjdCBza19idWZmICpnc3dpcF90YWdfcmN2KHN0cnVjdCBza19idWZmICpza2IsXFxuIFxcdGludCBwb3J0O1xcbiBcXHR1OCAqZ3N3aXBfdGFnO1xcbiBcXG4tXFx0aWYgKHVubGlrZWx5KCFwc2tiX21heV9wdWxsKHNrYiwgR1NXSVBfUlhfSEVBREVSX0xFTikpKVxcbitcXHRpZiAodW5saWtlbHkoIXBza2JfbWF5X3B1bGwoc2tiLCBHU1dJUF9SWF9IRUFERVJfTEVOKSkpIHtcXG4rXFx0XFx0a2ZyZWVfc2tiKHNrYik7XFxuIFxcdFxcdHJldHVybiBOVUxMO1xcbitcXHR9XFxuIFxcbiBcXHRnc3dpcF90YWcgPSBza2ItXFx1MDAzZWRhdGEgLSBFVEhfSExFTjtcXG4gXFxuIFxcdC8qIEdldCBzb3VyY2UgcG9ydCBpbmZvcm1hdGlvbiAqL1xcbiBcXHRwb3J0ID0gKGdzd2lwX3RhZ1s3XSBcXHUwMDI2IEdTV0lQX1JYX1NQUElEX01BU0spIFxcdTAwM2VcXHUwMDNlIEdTV0lQX1JYX1NQUElEX1NISUZUO1xcbiBcXHRza2ItXFx1MDAzZWRldiA9IGRzYV9jb25kdWl0X2ZpbmRfdXNlcihkZXYsIDAsIHBvcnQpO1xcbi1cXHRpZiAoIXNrYi1cXHUwMDNlZGV2KVxcbitcXHRpZiAoIXNrYi1cXHUwMDNlZGV2KSB7XFxuK1xcdFxcdGtmcmVlX3NrYihza2IpO1xcbiBcXHRcXHRyZXR1cm4gTlVMTDtcXG4rXFx0fVxcbiBcXG4gXFx0LyogcmVtb3ZlIEdTV0lQIHRhZyAqL1xcbiBcXHRza2JfcHVsbF9yY3N1bShza2IsIEdTV0lQX1JYX0hFQURFUl9MRU4pO1xcbmRpZmYgLS1naXQgYS9uZXQvZHNhL3RhZ19oZWxsY3JlZWsuYyBiL25ldC9kc2EvdGFnX2hlbGxjcmVlay5jXFxuaW5kZXggNTQ0YWIxNTY4NWEyYjguLmRkOWYzMjhmMzE4MjEwIDEwMDY0NFxcbi0tLSBhL25ldC9kc2EvdGFnX2hlbGxjcmVlay5jXFxuKysrIGIvbmV0L2RzYS90YWdfaGVsbGNyZWVrLmNcXG5AQCAtMjcsOCArMjcsMTAgQEAgc3RhdGljIHN0cnVjdCBza19idWZmICpoZWxsY3JlZWtfeG1pdChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxcbiBcXHQgKiBjaGVja3N1bXMgYWZ0ZXIgdGhlIHN3aXRjaCBzdHJpcHMgdGhlIHRhZy5cXG4gXFx0ICovXFxuIFxcdGlmIChza2ItXFx1MDAzZWlwX3N1bW1lZCA9PSBDSEVDS1NVTV9QQVJUSUFMIFxcdTAwMjZcXHUwMDI2XFxuLVxcdCAgICBza2JfY2hlY2tzdW1faGVscChza2IpKVxcbitcXHQgICAgc2tiX2NoZWNrc3VtX2hlbHAoc2tiKSkge1xcbitcXHRcXHRrZnJlZV9za2Ioc2tiKTtcXG4gXFx0XFx0cmV0dXJuIE5VTEw7XFxuK1xcdH1cXG4gXFxuIFxcdC8qIFRhZyBlbmNvZGluZyAqL1xcbiBcXHR0YWcgID0gc2tiX3B1dChza2IsIEhFTExDUkVFS19UQUdfTEVOKTtcXG5AQCAtNDcsMTEgKzQ5LDE0IEBAIHN0YXRpYyBzdHJ1Y3Qgc2tfYnVmZiAqaGVsbGNyZWVrX3JjdihzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxcbiBcXHRza2ItXFx1MDAzZWRldiA9IGRzYV9jb25kdWl0X2ZpbmRfdXNlcihkZXYsIDAsIHBvcnQpO1xcbiBcXHRpZiAoIXNrYi1cXHUwMDNlZGV2KSB7XFxuIFxcdFxcdG5ldGRldl93YXJuX29uY2UoZGV2LCBcXFwiRmFpbGVkIHRvIGdldCBzb3VyY2UgcG9ydDogJWRcXFxcblxcXCIsIHBvcnQpO1xcbitcXHRcXHRrZnJlZV9za2Ioc2tiKTtcXG4gXFx0XFx0cmV0dXJuIE5VTEw7XFxuIFxcdH1cXG4gXFxuLVxcdGlmIChwc2tiX3RyaW1fcmNzdW0oc2tiLCBza2ItXFx1MDAzZWxlbiAtIEhFTExDUkVFS19UQUdfTEVOKSlcXG4rXFx0aWYgKHBza2JfdHJpbV9yY3N1bShza2IsIHNrYi1cXHUwMDNlbGVuIC0gSEVMTENSRUVLX1RBR19MRU4pKSB7XFxuK1xcdFxcdGtmcmVlX3NrYihza2IpO1xcbiBcXHRcXHRyZXR1cm4gTlVMTDtcXG4rXFx0fVxcbiBcXG4gXFx0ZHNhX2RlZmF1bHRfb2ZmbG9hZF9md2RfbWFyayhza2IpO1xcbiBcXG5kaWZmIC0tZ2l0IGEvbmV0L2RzYS90YWdfa3N6LmMgYi9uZXQvZHNhL3RhZ19rc3ouY1xcbmluZGV4IGQyNDc1YzNiYmI3ZDIyLi42N2ZhODlmMTAyZTA3MCAxMDA2NDRcXG4tLS0gYS9uZXQvZHNhL3RhZ19rc3ouY1xcbisrKyBiL25ldC9kc2EvdGFnX2tzei5jXFxuQEAgLTg4LDExICs4OCwxNSBAQCBzdGF0aWMgc3RydWN0IHNrX2J1ZmYgKmtzel9jb21tb25fcmN2KHN0cnVjdCBza19idWZmICpza2IsXFxuIFxcdFxcdFxcdFxcdCAgICAgIHVuc2lnbmVkIGludCBwb3J0LCB1bnNpZ25lZCBpbnQgbGVuKVxcbiB7XFxuIFxcdHNrYi1cXHUwMDNlZGV2ID0gZHNhX2NvbmR1aXRfZmluZF91c2VyKGRldiwgMCwgcG9ydCk7XFxuLVxcdGlmICghc2tiLVxcdTAwM2VkZXYpXFxuK1xcdGlmICghc2tiLVxcdTAwM2VkZXYpIHtcXG4rXFx0XFx0a2ZyZWVfc2tiKHNrYik7XFxuIFxcdFxcdHJldHVybiBOVUxMO1xcbitcXHR9XFxuIFxcbi1cXHRpZiAocHNrYl90cmltX3Jjc3VtKHNrYiwgc2tiLVxcdTAwM2VsZW4gLSBsZW4pKVxcbitcXHRpZiAocHNrYl90cmltX3Jjc3VtKHNrYiwgc2tiLVxcdTAwM2VsZW4gLSBsZW4pKSB7XFxuK1xcdFxcdGtmcmVlX3NrYihza2IpO1xcbiBcXHRcXHRyZXR1cm4gTlVMTDtcXG4rXFx0fVxcbiBcXG4gXFx0ZHNhX2RlZmF1bHRfb2ZmbG9hZF9md2RfbWFyayhza2IpO1xcbiBcXG5AQCAtMTIzLDggKzEyNywxMCBAQCBzdGF0aWMgc3RydWN0IHNrX2J1ZmYgKmtzejg3OTVfeG1pdChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxcbiBcXHRzdHJ1Y3QgZXRoaGRyICpoZHI7XFxuIFxcdHU4ICp0YWc7XFxuIFxcbi1cXHRpZiAoc2tiLVxcdTAwM2VpcF9zdW1tZWQgPT0gQ0hFQ0tTVU1fUEFSVElBTCBcXHUwMDI2XFx1MDAyNiBza2JfY2hlY2tzdW1faGVscChza2IpKVxcbitcXHRpZiAoc2tiLVxcdTAwM2VpcF9zdW1tZWQgPT0gQ0hFQ0tTVU1fUEFSVElBTCBcXHUwMDI2XFx1MDAyNiBza2JfY2hlY2tzdW1faGVscChza2IpKSB7XFxuK1xcdFxcdGtmcmVlX3NrYihza2IpO1xcbiBcXHRcXHRyZXR1cm4gTlVMTDtcXG4rXFx0fVxcbiBcXG4gXFx0LyogVGFnIGVuY29kaW5nICovXFxuIFxcdHRhZyA9IHNrYl9wdXQoc2tiLCBLU1pfSU5HUkVTU19UQUdfTEVOKTtcXG5AQCAtMTQxLDggKzE0NywxMCBAQCBzdGF0aWMgc3RydWN0IHNrX2J1ZmYgKmtzejg3OTVfcmN2KHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXFxuIHtcXG4gXFx0dTggKnRhZztcXG4gXFxuLVxcdGlmIChza2JfbGluZWFyaXplKHNrYikpXFxuK1xcdGlmIChza2JfbGluZWFyaXplKHNrYikpIHtcXG4rXFx0XFx0a2ZyZWVfc2tiKHNrYik7XFxuIFxcdFxcdHJldHVybiBOVUxMO1xcbitcXHR9XFxuIFxcbiBcXHR0YWcgPSBza2JfdGFpbF9wb2ludGVyKHNrYikgLSBLU1pfRUdSRVNTX1RBR19MRU47XFxuIFxcbkBAIC0yNTUsMjIgKzI2MywyNCBAQCBzdGF0aWMgc3RydWN0IHNrX2J1ZmYgKmtzel9kZWZlcl94bWl0KHN0cnVjdCBkc2FfcG9ydCAqZHAsIHN0cnVjdCBza19idWZmICpza2IpXFxuIFxcdHhtaXRfd29ya19mbiA9IHRhZ2dlcl9kYXRhLVxcdTAwM2V4bWl0X3dvcmtfZm47XFxuIFxcdHhtaXRfd29ya2VyID0gcHJpdi1cXHUwMDNleG1pdF93b3JrZXI7XFxuIFxcbi1cXHRpZiAoIXhtaXRfd29ya19mbiB8fCAheG1pdF93b3JrZXIpXFxuK1xcdGlmICgheG1pdF93b3JrX2ZuIHx8ICF4bWl0X3dvcmtlcikge1xcbitcXHRcXHRrZnJlZV9za2Ioc2tiKTtcXG4gXFx0XFx0cmV0dXJuIE5VTEw7XFxuK1xcdH1cXG4gXFxuIFxcdHhtaXRfd29yayA9IGt6YWxsb2Nfb2JqKCp4bWl0X3dvcmssIEdGUF9BVE9NSUMpO1xcbi1cXHRpZiAoIXhtaXRfd29yaylcXG4rXFx0aWYgKCF4bWl0X3dvcmspIHtcXG4rXFx0XFx0a2ZyZWVfc2tiKHNrYik7XFxuIFxcdFxcdHJldHVybiBOVUxMO1xcbitcXHR9XFxuIFxcbiBcXHRrdGhyZWFkX2luaXRfd29yayhcXHUwMDI2eG1pdF93b3JrLVxcdTAwM2V3b3JrLCB4bWl0X3dvcmtfZm4pO1xcbi1cXHQvKiBJbmNyZWFzZSByZWZjb3VudCBzbyB0aGUga2ZyZWVfc2tiIGluIGRzYV91c2VyX3htaXRcXG4tXFx0ICogd29uJ3QgcmVhbGx5IGZyZWUgdGhlIHBhY2tldC5cXG4tXFx0ICovXFxuIFxcdHhtaXRfd29yay1cXHUwMDNlZHAgPSBkcDtcXG4gXFx0eG1pdF93b3JrLVxcdTAwM2Vza2IgPSBza2JfZ2V0KHNrYik7XFxuIFxcbiBcXHRrdGhyZWFkX3F1ZXVlX3dvcmsoeG1pdF93b3JrZXIsIFxcdTAwMjZ4bWl0X3dvcmstXFx1MDAzZXdvcmspO1xcbiBcXG4rXFx0a2ZyZWVfc2tiKHNrYik7XFxuIFxcdHJldHVybiBOVUxMO1xcbiB9XFxuIFxcbkBAIC0yODQsOCArMjk0LDEwIEBAIHN0YXRpYyBzdHJ1Y3Qgc2tfYnVmZiAqa3N6OTQ3N194bWl0KHN0cnVjdCBza19idWZmICpza2IsXFxuIFxcdF9fYmUxNiAqdGFnO1xcbiBcXHR1MTYgdmFsO1xcbiBcXG4tXFx0aWYgKHNrYi1cXHUwMDNlaXBfc3VtbWVkID09IENIRUNLU1VNX1BBUlRJQUwgXFx1MDAyNlxcdTAwMjYgc2tiX2NoZWNrc3VtX2hlbHAoc2tiKSlcXG4rXFx0aWYgKHNrYi1cXHUwMDNlaXBfc3VtbWVkID09IENIRUNLU1VNX1BBUlRJQUwgXFx1MDAyNlxcdTAwMjYgc2tiX2NoZWNrc3VtX2hlbHAoc2tiKSkge1xcbitcXHRcXHRrZnJlZV9za2Ioc2tiKTtcXG4gXFx0XFx0cmV0dXJuIE5VTEw7XFxuK1xcdH1cXG4gXFxuIFxcdC8qIFRhZyBlbmNvZGluZyAqL1xcbiBcXHRrc3pfeG1pdF90aW1lc3RhbXAoZHAsIHNrYik7XFxuQEAgLTMxMCw4ICszMjIsMTAgQEAgc3RhdGljIHN0cnVjdCBza19idWZmICprc3o5NDc3X3JjdihzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxcbiBcXHR1bnNpZ25lZCBpbnQgcG9ydDtcXG4gXFx0dTggKnRhZztcXG4gXFxuLVxcdGlmIChza2JfbGluZWFyaXplKHNrYikpXFxuK1xcdGlmIChza2JfbGluZWFyaXplKHNrYikpIHtcXG4rXFx0XFx0a2ZyZWVfc2tiKHNrYik7XFxuIFxcdFxcdHJldHVybiBOVUxMO1xcbitcXHR9XFxuIFxcbiBcXHQvKiBUYWcgZGVjb2RpbmcgKi9cXG4gXFx0dGFnID0gc2tiX3RhaWxfcG9pbnRlcihza2IpIC0gS1NaX0VHUkVTU19UQUdfTEVOO1xcbkBAIC0zNTIsOCArMzY2LDEwIEBAIHN0YXRpYyBzdHJ1Y3Qgc2tfYnVmZiAqa3N6OTg5M194bWl0KHN0cnVjdCBza19idWZmICpza2IsXFxuIFxcdHN0cnVjdCBldGhoZHIgKmhkcjtcXG4gXFx0dTggKnRhZztcXG4gXFxuLVxcdGlmIChza2ItXFx1MDAzZWlwX3N1bW1lZCA9PSBDSEVDS1NVTV9QQVJUSUFMIFxcdTAwMjZcXHUwMDI2IHNrYl9jaGVja3N1bV9oZWxwKHNrYikpXFxuK1xcdGlmIChza2ItXFx1MDAzZWlwX3N1bW1lZCA9PSBDSEVDS1NVTV9QQVJUSUFMIFxcdTAwMjZcXHUwMDI2IHNrYl9jaGVja3N1bV9oZWxwKHNrYikpIHtcXG4rXFx0XFx0a2ZyZWVfc2tiKHNrYik7XFxuIFxcdFxcdHJldHVybiBOVUxMO1xcbitcXHR9XFxuIFxcbiBcXHQvKiBUYWcgZW5jb2RpbmcgKi9cXG4gXFx0a3N6X3htaXRfdGltZXN0YW1wKGRwLCBza2IpO1xcbkBAIC00MTgsOCArNDM0LDEwIEBAIHN0YXRpYyBzdHJ1Y3Qgc2tfYnVmZiAqbGFuOTM3eF94bWl0KHN0cnVjdCBza19idWZmICpza2IsXFxuIFxcdF9fYmUxNiAqdGFnO1xcbiBcXHR1MTYgdmFsO1xcbiBcXG4tXFx0aWYgKHNrYi1cXHUwMDNlaXBfc3VtbWVkID09IENIRUNLU1VNX1BBUlRJQUwgXFx1MDAyNlxcdTAwMjYgc2tiX2NoZWNrc3VtX2hlbHAoc2tiKSlcXG4rXFx0aWYgKHNrYi1cXHUwMDNlaXBfc3VtbWVkID09IENIRUNLU1VNX1BBUlRJQUwgXFx1MDAyNlxcdTAwMjYgc2tiX2NoZWNrc3VtX2hlbHAoc2tiKSkge1xcbitcXHRcXHRrZnJlZV9za2Ioc2tiKTtcXG4gXFx0XFx0cmV0dXJuIE5VTEw7XFxuK1xcdH1cXG4gXFxuIFxcdGtzel94bWl0X3RpbWVzdGFtcChkcCwgc2tiKTtcXG4gXFxuZGlmZiAtLWdpdCBhL25ldC9kc2EvdGFnX2xhbjkzMDMuYyBiL25ldC9kc2EvdGFnX2xhbjkzMDMuY1xcbmluZGV4IDI1OGU1ZDdkYzVlZjg0Li5kMTE5NDY5NjQ5OWFiOCAxMDA2NDRcXG4tLS0gYS9uZXQvZHNhL3RhZ19sYW45MzAzLmNcXG4rKysgYi9uZXQvZHNhL3RhZ19sYW45MzAzLmNcXG5AQCAtODUsNiArODUsNyBAQCBzdGF0aWMgc3RydWN0IHNrX2J1ZmYgKmxhbjkzMDNfcmN2KHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXFxuIFxcdGlmICh1bmxpa2VseSghcHNrYl9tYXlfcHVsbChza2IsIExBTjkzMDNfVEFHX0xFTikpKSB7XFxuIFxcdFxcdGRldl93YXJuX3JhdGVsaW1pdGVkKFxcdTAwMjZkZXYtXFx1MDAzZWRldixcXG4gXFx0XFx0XFx0XFx0ICAgICBcXFwiRHJvcHBpbmcgcGFja2V0LCBjYW5ub3QgcHVsbFxcXFxuXFxcIik7XFxuK1xcdFxcdGtmcmVlX3NrYihza2IpO1xcbiBcXHRcXHRyZXR1cm4gTlVMTDtcXG4gXFx0fVxcbiBcXG5AQCAtMTAyLDYgKzEwMyw3IEBAIHN0YXRpYyBzdHJ1Y3Qgc2tfYnVmZiAqbGFuOTMwM19yY3Yoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IG5ldF9kZXZpY2UgKmRldilcXG4gXFx0c2tiLVxcdTAwM2VkZXYgPSBkc2FfY29uZHVpdF9maW5kX3VzZXIoZGV2LCAwLCBzb3VyY2VfcG9ydCk7XFxuIFxcdGlmICghc2tiLVxcdTAwM2VkZXYpIHtcXG4gXFx0XFx0ZGV2X3dhcm5fcmF0ZWxpbWl0ZWQoXFx1MDAyNmRldi1cXHUwMDNlZGV2LCBcXFwiRHJvcHBpbmcgcGFja2V0IGR1ZSB0byBpbnZhbGlkIHNvdXJjZSBwb3J0XFxcXG5cXFwiKTtcXG4rXFx0XFx0a2ZyZWVfc2tiKHNrYik7XFxuIFxcdFxcdHJldHVybiBOVUxMO1xcbiBcXHR9XFxuIFxcbmRpZmYgLS1naXQgYS9uZXQvZHNhL3RhZ19tdGsuYyBiL25ldC9kc2EvdGFnX210ay5jXFxuaW5kZXggZGVhM2VlY2FmMDkzZGYuLmM3ZGM3NzMxNjc1ZWMwIDEwMDY0NFxcbi0tLSBhL25ldC9kc2EvdGFnX210ay5jXFxuKysrIGIvbmV0L2RzYS90YWdfbXRrLmNcXG5AQCAtNzIsOCArNzIsMTAgQEAgc3RhdGljIHN0cnVjdCBza19idWZmICptdGtfdGFnX3JjdihzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxcbiBcXHRpbnQgcG9ydDtcXG4gXFx0X19iZTE2ICpwaGRyO1xcbiBcXG4tXFx0aWYgKHVubGlrZWx5KCFwc2tiX21heV9wdWxsKHNrYiwgTVRLX0hEUl9MRU4pKSlcXG4rXFx0aWYgKHVubGlrZWx5KCFwc2tiX21heV9wdWxsKHNrYiwgTVRLX0hEUl9MRU4pKSkge1xcbitcXHRcXHRrZnJlZV9za2Ioc2tiKTtcXG4gXFx0XFx0cmV0dXJuIE5VTEw7XFxuK1xcdH1cXG4gXFxuIFxcdHBoZHIgPSBkc2FfZXR5cGVfaGVhZGVyX3Bvc19yeChza2IpO1xcbiBcXHRoZHIgPSBudG9ocygqcGhkcik7XFxuQEAgLTg3LDggKzg5LDEwIEBAIHN0YXRpYyBzdHJ1Y3Qgc2tfYnVmZiAqbXRrX3RhZ19yY3Yoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IG5ldF9kZXZpY2UgKmRldilcXG4gXFx0cG9ydCA9IChoZHIgXFx1MDAyNiBNVEtfSERSX1JFQ1ZfU09VUkNFX1BPUlRfTUFTSyk7XFxuIFxcbiBcXHRza2ItXFx1MDAzZWRldiA9IGRzYV9jb25kdWl0X2ZpbmRfdXNlcihkZXYsIDAsIHBvcnQpO1xcbi1cXHRpZiAoIXNrYi1cXHUwMDNlZGV2KVxcbitcXHRpZiAoIXNrYi1cXHUwMDNlZGV2KSB7XFxuK1xcdFxcdGtmcmVlX3NrYihza2IpO1xcbiBcXHRcXHRyZXR1cm4gTlVMTDtcXG4rXFx0fVxcbiBcXG4gXFx0ZHNhX2RlZmF1bHRfb2ZmbG9hZF9md2RfbWFyayhza2IpO1xcbiBcXG5kaWZmIC0tZ2l0IGEvbmV0L2RzYS90YWdfbXhsLWdzdzF4eC5jIGIvbmV0L2RzYS90YWdfbXhsLWdzdzF4eC5jXFxuaW5kZXggNjBmN2M0NDVlNjU2MTAuLjRiMWI2ZWY5NDE5NjM0IDEwMDY0NFxcbi0tLSBhL25ldC9kc2EvdGFnX214bC1nc3cxeHguY1xcbisrKyBiL25ldC9kc2EvdGFnX214bC1nc3cxeHguY1xcbkBAIC03Myw2ICs3Myw3IEBAIHN0YXRpYyBzdHJ1Y3Qgc2tfYnVmZiAqZ3N3MXh4X3RhZ19yY3Yoc3RydWN0IHNrX2J1ZmYgKnNrYixcXG4gXFxuIFxcdGlmICh1bmxpa2VseSghcHNrYl9tYXlfcHVsbChza2IsIEdTVzFYWF9IRUFERVJfTEVOKSkpIHtcXG4gXFx0XFx0ZGV2X3dhcm5fcmF0ZWxpbWl0ZWQoXFx1MDAyNmRldi1cXHUwMDNlZGV2LCBcXFwiRHJvcHBpbmcgcGFja2V0LCBjYW5ub3QgcHVsbCBTS0JcXFxcblxcXCIpO1xcbitcXHRcXHRrZnJlZV9za2Ioc2tiKTtcXG4gXFx0XFx0cmV0dXJuIE5VTEw7XFxuIFxcdH1cXG4gXFxuQEAgLTgxLDYgKzgyLDcgQEAgc3RhdGljIHN0cnVjdCBza19idWZmICpnc3cxeHhfdGFnX3JjdihzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxcbiBcXHRpZiAodW5saWtlbHkobnRvaHMoZ3N3MXh4X3RhZ1swXSkgIT0gRVRIX1BfTVhMR1NXKSkge1xcbiBcXHRcXHRkZXZfd2Fybl9yYXRlbGltaXRlZChcXHUwMDI2ZGV2LVxcdTAwM2VkZXYsIFxcXCJEcm9wcGluZyBwYWNrZXQgZHVlIHRvIGludmFsaWQgc3BlY2lhbCB0YWdcXFxcblxcXCIpO1xcbiBcXHRcXHRkZXZfd2Fybl9yYXRlbGltaXRlZChcXHUwMDI2ZGV2LVxcdTAwM2VkZXYsIFxcXCJUYWc6ICU4cGhcXFxcblxcXCIsIGdzdzF4eF90YWcpO1xcbitcXHRcXHRrZnJlZV9za2Ioc2tiKTtcXG4gXFx0XFx0cmV0dXJuIE5VTEw7XFxuIFxcdH1cXG4gXFxuQEAgLTkwLDYgKzkyLDcgQEAgc3RhdGljIHN0cnVjdCBza19idWZmICpnc3cxeHhfdGFnX3JjdihzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxcbiBcXHRpZiAoIXNrYi1cXHUwMDNlZGV2KSB7XFxuIFxcdFxcdGRldl93YXJuX3JhdGVsaW1pdGVkKFxcdTAwMjZkZXYtXFx1MDAzZWRldiwgXFxcIkRyb3BwaW5nIHBhY2tldCBkdWUgdG8gaW52YWxpZCBzb3VyY2UgcG9ydFxcXFxuXFxcIik7XFxuIFxcdFxcdGRldl93YXJuX3JhdGVsaW1pdGVkKFxcdTAwMjZkZXYtXFx1MDAzZWRldiwgXFxcIlRhZzogJThwaFxcXFxuXFxcIiwgZ3N3MXh4X3RhZyk7XFxuK1xcdFxcdGtmcmVlX3NrYihza2IpO1xcbiBcXHRcXHRyZXR1cm4gTlVMTDtcXG4gXFx0fVxcbiBcXG5kaWZmIC0tZ2l0IGEvbmV0L2RzYS90YWdfbXhsODYyeHguYyBiL25ldC9kc2EvdGFnX214bDg2Mnh4LmNcXG5pbmRleCA4ZGFlZmViOGQ0OWRmYS4uODdiODBkZGYwOTQ2MzIgMTAwNjQ0XFxuLS0tIGEvbmV0L2RzYS90YWdfbXhsODYyeHguY1xcbisrKyBiL25ldC9kc2EvdGFnX214bDg2Mnh4LmNcXG5AQCAtNjQsNiArNjQsNyBAQCBzdGF0aWMgc3RydWN0IHNrX2J1ZmYgKm14bDg2Ml90YWdfcmN2KHN0cnVjdCBza19idWZmICpza2IsXFxuIFxcbiBcXHRpZiAodW5saWtlbHkoIXBza2JfbWF5X3B1bGwoc2tiLCBNWEw4NjJfSEVBREVSX0xFTikpKSB7XFxuIFxcdFxcdGRldl93YXJuX3JhdGVsaW1pdGVkKFxcdTAwMjZkZXYtXFx1MDAzZWRldiwgXFxcIkNhbm5vdCBwdWxsIFNLQiwgcGFja2V0IGRyb3BwZWRcXFxcblxcXCIpO1xcbitcXHRcXHRrZnJlZV9za2Ioc2tiKTtcXG4gXFx0XFx0cmV0dXJuIE5VTEw7XFxuIFxcdH1cXG4gXFxuQEAgLTczLDYgKzc0LDcgQEAgc3RhdGljIHN0cnVjdCBza19idWZmICpteGw4NjJfdGFnX3JjdihzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxcbiBcXHRcXHRkZXZfd2Fybl9yYXRlbGltaXRlZChcXHUwMDI2ZGV2LVxcdTAwM2VkZXYsXFxuIFxcdFxcdFxcdFxcdCAgICAgXFxcIkludmFsaWQgc3BlY2lhbCB0YWcgbWFya2VyLCBwYWNrZXQgZHJvcHBlZCwgdGFnOiAlOHBoXFxcXG5cXFwiLFxcbiBcXHRcXHRcXHRcXHQgICAgIG14bDg2Ml90YWcpO1xcbitcXHRcXHRrZnJlZV9za2Ioc2tiKTtcXG4gXFx0XFx0cmV0dXJuIE5VTEw7XFxuIFxcdH1cXG4gXFxuQEAgLTgzLDYgKzg1LDcgQEAgc3RhdGljIHN0cnVjdCBza19idWZmICpteGw4NjJfdGFnX3JjdihzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxcbiBcXHRcXHRkZXZfd2Fybl9yYXRlbGltaXRlZChcXHUwMDI2ZGV2LVxcdTAwM2VkZXYsXFxuIFxcdFxcdFxcdFxcdCAgICAgXFxcIkludmFsaWQgc291cmNlIHBvcnQsIHBhY2tldCBkcm9wcGVkLCB0YWc6ICU4cGhcXFxcblxcXCIsXFxuIFxcdFxcdFxcdFxcdCAgICAgbXhsODYyX3RhZyk7XFxuK1xcdFxcdGtmcmVlX3NrYihza2IpO1xcbiBcXHRcXHRyZXR1cm4gTlVMTDtcXG4gXFx0fVxcbiBcXG5kaWZmIC0tZ2l0IGEvbmV0L2RzYS90YWdfbmV0Yy5jIGIvbmV0L2RzYS90YWdfbmV0Yy5jXFxuaW5kZXggY2NlZGZlM2E4MGI2NGQuLmRmNzJhNjE3OTZhZDVmIDEwMDY0NFxcbi0tLSBhL25ldC9kc2EvdGFnX25ldGMuY1xcbisrKyBiL25ldC9kc2EvdGFnX25ldGMuY1xcbkBAIC0xMzEsMTQgKzEzMSwxMyBAQCBzdGF0aWMgc3RydWN0IHNrX2J1ZmYgKm5ldGNfcmN2KHN0cnVjdCBza19idWZmICpza2IsXFxuIFxcdGludCB0eXBlLCBzdWJ0eXBlO1xcbiBcXG4gXFx0aWYgKHVubGlrZWx5KCFwc2tiX21heV9wdWxsKHNrYiwgTkVUQ19UQUdfTUFYX0xFTikpKVxcbi1cXHRcXHRyZXR1cm4gTlVMTDtcXG4rXFx0XFx0Z290byBlcnJfZnJlZV9za2I7XFxuIFxcbiBcXHR0YWdfY21uID0gZHNhX2V0eXBlX2hlYWRlcl9wb3Nfcngoc2tiKTtcXG4gXFx0aWYgKG50b2hzKHRhZ19jbW4tXFx1MDAzZXRwaWQpICE9IEVUSF9QX05YUF9ORVRDKSB7XFxuIFxcdFxcdGRldl93YXJuX3JhdGVsaW1pdGVkKFxcdTAwMjZuZGV2LVxcdTAwM2VkZXYsIFxcXCJVbmtub3duIFRQSUQgMHglMDR4XFxcXG5cXFwiLFxcbiBcXHRcXHRcXHRcXHQgICAgIG50b2hzKHRhZ19jbW4tXFx1MDAzZXRwaWQpKTtcXG4tXFxuLVxcdFxcdHJldHVybiBOVUxMO1xcbitcXHRcXHRnb3RvIGVycl9mcmVlX3NrYjtcXG4gXFx0fVxcbiBcXG4gXFx0aWYgKHRhZ19jbW4tXFx1MDAzZXFvcyBcXHUwMDI2IE5FVENfVEFHX1FWKVxcbkBAIC0xNDksMTQgKzE0OCwxMyBAQCBzdGF0aWMgc3RydWN0IHNrX2J1ZmYgKm5ldGNfcmN2KHN0cnVjdCBza19idWZmICpza2IsXFxuIFxcdGlmICghc3dfaWQpIHtcXG4gXFx0XFx0ZGV2X3dhcm5fcmF0ZWxpbWl0ZWQoXFx1MDAyNm5kZXYtXFx1MDAzZWRldixcXG4gXFx0XFx0XFx0XFx0ICAgICBcXFwiVkVQQSBzd2l0Y2ggSUQgaXMgbm90IHN1cHBvcnRlZCB5ZXRcXFxcblxcXCIpO1xcbi1cXG4tXFx0XFx0cmV0dXJuIE5VTEw7XFxuK1xcdFxcdGdvdG8gZXJyX2ZyZWVfc2tiO1xcbiBcXHR9XFxuIFxcbiBcXHRwb3J0ID0gRklFTERfR0VUKE5FVENfVEFHX1BPUlQsIHRhZ19jbW4tXFx1MDAzZXN3aXRjaF9wb3J0KTtcXG4gXFx0c2tiLVxcdTAwM2VkZXYgPSBkc2FfY29uZHVpdF9maW5kX3VzZXIobmRldiwgc3dfaWQsIHBvcnQpO1xcbiBcXHRpZiAoIXNrYi1cXHUwMDNlZGV2KVxcbi1cXHRcXHRyZXR1cm4gTlVMTDtcXG4rXFx0XFx0Z290byBlcnJfZnJlZV9za2I7XFxuIFxcbiBcXHR0eXBlID0gRklFTERfR0VUKE5FVENfVEFHX1RZUEUsIHRhZ19jbW4tXFx1MDAzZXR5cGUpO1xcbiBcXHRzdWJ0eXBlID0gRklFTERfR0VUKE5FVENfVEFHX1NVQlRZUEUsIHRhZ19jbW4tXFx1MDAzZXR5cGUpO1xcbkBAIC0xNjUsMTEgKzE2MywxMSBAQCBzdGF0aWMgc3RydWN0IHNrX2J1ZmYgKm5ldGNfcmN2KHN0cnVjdCBza19idWZmICpza2IsXFxuIFxcdH0gZWxzZSBpZiAodHlwZSA9PSBORVRDX1RBR19UT19IT1NUKSB7XFxuIFxcdFxcdC8qIEN1cnJlbnRseSBvbmx5IHN1YnR5cGUwIHN1cHBvcnRlZCAqL1xcbiBcXHRcXHRpZiAoc3VidHlwZSAhPSBORVRDX1RBR19USF9TVUJUWVBFMClcXG4tXFx0XFx0XFx0cmV0dXJuIE5VTEw7XFxuK1xcdFxcdFxcdGdvdG8gZXJyX2ZyZWVfc2tiO1xcbiBcXHR9IGVsc2Uge1xcbiBcXHRcXHRkZXZfd2Fybl9yYXRlbGltaXRlZChcXHUwMDI2bmRldi1cXHUwMDNlZGV2LFxcbiBcXHRcXHRcXHRcXHQgICAgIFxcXCJVbmV4cGVjdGVkICB0YWcgdHlwZSAlZFxcXFxuXFxcIiwgdHlwZSk7XFxuLVxcdFxcdHJldHVybiBOVUxMO1xcbitcXHRcXHRnb3RvIGVycl9mcmVlX3NrYjtcXG4gXFx0fVxcbiBcXG4gXFx0LyogUmVtb3ZlIFN3aXRjaCB0YWcgZnJvbSB0aGUgZnJhbWUgKi9cXG5AQCAtMTc4LDYgKzE3NiwxMCBAQCBzdGF0aWMgc3RydWN0IHNrX2J1ZmYgKm5ldGNfcmN2KHN0cnVjdCBza19idWZmICpza2IsXFxuIFxcdGRzYV9zdHJpcF9ldHlwZV9oZWFkZXIoc2tiLCB0YWdfbGVuKTtcXG4gXFxuIFxcdHJldHVybiBza2I7XFxuK1xcbitlcnJfZnJlZV9za2I6XFxuK1xcdGtmcmVlX3NrYihza2IpO1xcbitcXHRyZXR1cm4gTlVMTDtcXG4gfVxcbiBcXG4gc3RhdGljIHZvaWQgbmV0Y19mbG93X2Rpc3NlY3QoY29uc3Qgc3RydWN0IHNrX2J1ZmYgKnNrYiwgX19iZTE2ICpwcm90byxcXG5kaWZmIC0tZ2l0IGEvbmV0L2RzYS90YWdfb2NlbG90LmMgYi9uZXQvZHNhL3RhZ19vY2Vsb3QuY1xcbmluZGV4IDM0MDVkZWY3OWMyZGVmLi5kMjA4YzczMjJjZDYyNiAxMDA2NDRcXG4tLS0gYS9uZXQvZHNhL3RhZ19vY2Vsb3QuY1xcbisrKyBiL25ldC9kc2EvdGFnX29jZWxvdC5jXFxuQEAgLTEwNywxNCArMTA3LDE2IEBAIHN0YXRpYyBzdHJ1Y3Qgc2tfYnVmZiAqb2NlbG90X3JjdihzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxcbiBcXHRvY2Vsb3RfeGZoX2dldF9yZXdfdmFsKGV4dHJhY3Rpb24sIFxcdTAwMjZyZXdfdmFsKTtcXG4gXFxuIFxcdHNrYi1cXHUwMDNlZGV2ID0gZHNhX2NvbmR1aXRfZmluZF91c2VyKG5ldGRldiwgMCwgc3JjX3BvcnQpO1xcbi1cXHRpZiAoIXNrYi1cXHUwMDNlZGV2KVxcbitcXHRpZiAoIXNrYi1cXHUwMDNlZGV2KSB7XFxuIFxcdFxcdC8qIFRoZSBzd2l0Y2ggd2lsbCByZWZsZWN0IGJhY2sgc29tZSBmcmFtZXMgc2VudCB0aHJvdWdoXFxuIFxcdFxcdCAqIHNvY2tldHMgb3BlbmVkIG9uIHRoZSBiYXJlIERTQSBjb25kdWl0LiBUaGVzZSB3aWxsIGNvbWUgYmFja1xcbiBcXHRcXHQgKiB3aXRoIHNyY19wb3J0IGVxdWFsIHRvIHRoZSBpbmRleCBvZiB0aGUgQ1BVIHBvcnQsIGZvciB3aGljaFxcbiBcXHRcXHQgKiB0aGVyZSBpcyBubyB1c2VyIHJlZ2lzdGVyZWQuIFNvIGRvbid0IHByaW50IGFueSBlcnJvclxcbiBcXHRcXHQgKiBtZXNzYWdlIGhlcmUgKGlnbm9yZSBhbmQgZHJvcCB0aG9zZSBmcmFtZXMpLlxcbiBcXHRcXHQgKi9cXG4rXFx0XFx0a2ZyZWVfc2tiKHNrYik7XFxuIFxcdFxcdHJldHVybiBOVUxMO1xcbitcXHR9XFxuIFxcbiBcXHRkc2FfZGVmYXVsdF9vZmZsb2FkX2Z3ZF9tYXJrKHNrYik7XFxuIFxcdHNrYi1cXHUwMDNlcHJpb3JpdHkgPSBxb3NfY2xhc3M7XFxuZGlmZiAtLWdpdCBhL25ldC9kc2EvdGFnX29jZWxvdF84MDIxcS5jIGIvbmV0L2RzYS90YWdfb2NlbG90XzgwMjFxLmNcXG5pbmRleCBlODlkOTI1NGU5MGEzYS4uZjUwZjFjZDgzZjE2MWMgMTAwNjQ0XFxuLS0tIGEvbmV0L2RzYS90YWdfb2NlbG90XzgwMjFxLmNcXG4rKysgYi9uZXQvZHNhL3RhZ19vY2Vsb3RfODAyMXEuY1xcbkBAIC0zMywzMCArMzMsMzQgQEAgc3RhdGljIHN0cnVjdCBza19idWZmICpvY2Vsb3RfZGVmZXJfeG1pdChzdHJ1Y3QgZHNhX3BvcnQgKmRwLFxcbiBcXHR4bWl0X3dvcmtfZm4gPSBkYXRhLVxcdTAwM2V4bWl0X3dvcmtfZm47XFxuIFxcdHhtaXRfd29ya2VyID0gcHJpdi1cXHUwMDNleG1pdF93b3JrZXI7XFxuIFxcbi1cXHRpZiAoIXhtaXRfd29ya19mbiB8fCAheG1pdF93b3JrZXIpXFxuK1xcdGlmICgheG1pdF93b3JrX2ZuIHx8ICF4bWl0X3dvcmtlcikge1xcbitcXHRcXHRrZnJlZV9za2Ioc2tiKTtcXG4gXFx0XFx0cmV0dXJuIE5VTEw7XFxuK1xcdH1cXG4gXFxuIFxcdC8qIFBUUCBvdmVyIElQIHBhY2tldHMgbmVlZCBVRFAgY2hlY2tzdW1taW5nLiBXZSBtYXkgaGF2ZSBpbmhlcml0ZWRcXG4gXFx0ICogTkVUSUZfRl9IV19DU1VNIGZyb20gdGhlIERTQSBjb25kdWl0LCBidXQgdGhlc2UgcGFja2V0cyBhcmUgbm90IHNlbnRcXG4gXFx0ICogdGhyb3VnaCB0aGUgRFNBIGNvbmR1aXQsIHNvIGNhbGN1bGF0ZSB0aGUgY2hlY2tzdW0gaGVyZS5cXG4gXFx0ICovXFxuLVxcdGlmIChza2ItXFx1MDAzZWlwX3N1bW1lZCA9PSBDSEVDS1NVTV9QQVJUSUFMIFxcdTAwMjZcXHUwMDI2IHNrYl9jaGVja3N1bV9oZWxwKHNrYikpXFxuK1xcdGlmIChza2ItXFx1MDAzZWlwX3N1bW1lZCA9PSBDSEVDS1NVTV9QQVJUSUFMIFxcdTAwMjZcXHUwMDI2IHNrYl9jaGVja3N1bV9oZWxwKHNrYikpIHtcXG4rXFx0XFx0a2ZyZWVfc2tiKHNrYik7XFxuIFxcdFxcdHJldHVybiBOVUxMO1xcbitcXHR9XFxuIFxcbiBcXHR4bWl0X3dvcmsgPSBremFsbG9jX29iaigqeG1pdF93b3JrLCBHRlBfQVRPTUlDKTtcXG4tXFx0aWYgKCF4bWl0X3dvcmspXFxuK1xcdGlmICgheG1pdF93b3JrKSB7XFxuK1xcdFxcdGtmcmVlX3NrYihza2IpO1xcbiBcXHRcXHRyZXR1cm4gTlVMTDtcXG4rXFx0fVxcbiBcXG4gXFx0LyogQ2FsbHMgZmVsaXhfcG9ydF9kZWZlcnJlZF94bWl0IGluIGZlbGl4LmMgKi9cXG4gXFx0a3RocmVhZF9pbml0X3dvcmsoXFx1MDAyNnhtaXRfd29yay1cXHUwMDNld29yaywgeG1pdF93b3JrX2ZuKTtcXG4tXFx0LyogSW5jcmVhc2UgcmVmY291bnQgc28gdGhlIGtmcmVlX3NrYiBpbiBkc2FfdXNlcl94bWl0XFxuLVxcdCAqIHdvbid0IHJlYWxseSBmcmVlIHRoZSBwYWNrZXQuXFxuLVxcdCAqL1xcbiBcXHR4bWl0X3dvcmstXFx1MDAzZWRwID0gZHA7XFxuIFxcdHhtaXRfd29yay1cXHUwMDNlc2tiID0gc2tiX2dldChza2IpO1xcbiBcXG4gXFx0a3RocmVhZF9xdWV1ZV93b3JrKHhtaXRfd29ya2VyLCBcXHUwMDI2eG1pdF93b3JrLVxcdTAwM2V3b3JrKTtcXG4gXFxuK1xcdGtmcmVlX3NrYihza2IpO1xcbiBcXHRyZXR1cm4gTlVMTDtcXG4gfVxcbiBcXG5AQCAtODQsOCArODgsMTAgQEAgc3RhdGljIHN0cnVjdCBza19idWZmICpvY2Vsb3RfcmN2KHN0cnVjdCBza19idWZmICpza2IsXFxuIFxcdGRzYV84MDIxcV9yY3Yoc2tiLCBcXHUwMDI2c3JjX3BvcnQsIFxcdTAwMjZzd2l0Y2hfaWQsIE5VTEwsIE5VTEwpO1xcbiBcXG4gXFx0c2tiLVxcdTAwM2VkZXYgPSBkc2FfY29uZHVpdF9maW5kX3VzZXIobmV0ZGV2LCBzd2l0Y2hfaWQsIHNyY19wb3J0KTtcXG4tXFx0aWYgKCFza2ItXFx1MDAzZWRldilcXG4rXFx0aWYgKCFza2ItXFx1MDAzZWRldikge1xcbitcXHRcXHRrZnJlZV9za2Ioc2tiKTtcXG4gXFx0XFx0cmV0dXJuIE5VTEw7XFxuK1xcdH1cXG4gXFxuIFxcdGRzYV9kZWZhdWx0X29mZmxvYWRfZndkX21hcmsoc2tiKTtcXG4gXFxuZGlmZiAtLWdpdCBhL25ldC9kc2EvdGFnX3FjYS5jIGIvbmV0L2RzYS90YWdfcWNhLmNcXG5pbmRleCA5ZTNiNDI5ZThiMzYyNS4uNTEwNzkyZmJmYTkyZGQgMTAwNjQ0XFxuLS0tIGEvbmV0L2RzYS90YWdfcWNhLmNcXG4rKysgYi9uZXQvZHNhL3RhZ19xY2EuY1xcbkBAIC00NiwxNiArNDYsMjAgQEAgc3RhdGljIHN0cnVjdCBza19idWZmICpxY2FfdGFnX3JjdihzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxcbiBcXG4gXFx0dGFnZ2VyX2RhdGEgPSBkcy1cXHUwMDNldGFnZ2VyX2RhdGE7XFxuIFxcbi1cXHRpZiAodW5saWtlbHkoIXBza2JfbWF5X3B1bGwoc2tiLCBRQ0FfSERSX0xFTikpKVxcbitcXHRpZiAodW5saWtlbHkoIXBza2JfbWF5X3B1bGwoc2tiLCBRQ0FfSERSX0xFTikpKSB7XFxuK1xcdFxcdGtmcmVlX3NrYihza2IpO1xcbiBcXHRcXHRyZXR1cm4gTlVMTDtcXG4rXFx0fVxcbiBcXG4gXFx0cGhkciA9IGRzYV9ldHlwZV9oZWFkZXJfcG9zX3J4KHNrYik7XFxuIFxcdGhkciA9IG50b2hzKCpwaGRyKTtcXG4gXFxuIFxcdC8qIE1ha2Ugc3VyZSB0aGUgdmVyc2lvbiBpcyBjb3JyZWN0ICovXFxuIFxcdHZlciA9IEZJRUxEX0dFVChRQ0FfSERSX1JFQ1ZfVkVSU0lPTiwgaGRyKTtcXG4tXFx0aWYgKHVubGlrZWx5KHZlciAhPSBRQ0FfSERSX1ZFUlNJT04pKVxcbitcXHRpZiAodW5saWtlbHkodmVyICE9IFFDQV9IRFJfVkVSU0lPTikpIHtcXG4rXFx0XFx0a2ZyZWVfc2tiKHNrYik7XFxuIFxcdFxcdHJldHVybiBOVUxMO1xcbitcXHR9XFxuIFxcbiBcXHQvKiBHZXQgcGsgdHlwZSAqL1xcbiBcXHRwa190eXBlID0gRklFTERfR0VUKFFDQV9IRFJfUkVDVl9UWVBFLCBoZHIpO1xcbkBAIC02NCw2ICs2OCw3IEBAIHN0YXRpYyBzdHJ1Y3Qgc2tfYnVmZiAqcWNhX3RhZ19yY3Yoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IG5ldF9kZXZpY2UgKmRldilcXG4gXFx0aWYgKHBrX3R5cGUgPT0gUUNBX0hEUl9SRUNWX1RZUEVfUldfUkVHX0FDSykge1xcbiBcXHRcXHRpZiAobGlrZWx5KHRhZ2dlcl9kYXRhLVxcdTAwM2Vyd19yZWdfYWNrX2hhbmRsZXIpKVxcbiBcXHRcXHRcXHR0YWdnZXJfZGF0YS1cXHUwMDNlcndfcmVnX2Fja19oYW5kbGVyKGRzLCBza2IpO1xcbitcXHRcXHRrZnJlZV9za2Ioc2tiKTtcXG4gXFx0XFx0cmV0dXJuIE5VTEw7XFxuIFxcdH1cXG4gXFxuQEAgLTcxLDYgKzc2LDcgQEAgc3RhdGljIHN0cnVjdCBza19idWZmICpxY2FfdGFnX3JjdihzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxcbiBcXHRpZiAocGtfdHlwZSA9PSBRQ0FfSERSX1JFQ1ZfVFlQRV9NSUIpIHtcXG4gXFx0XFx0aWYgKGxpa2VseSh0YWdnZXJfZGF0YS1cXHUwMDNlbWliX2F1dG9jYXN0X2hhbmRsZXIpKVxcbiBcXHRcXHRcXHR0YWdnZXJfZGF0YS1cXHUwMDNlbWliX2F1dG9jYXN0X2hhbmRsZXIoZHMsIHNrYik7XFxuK1xcdFxcdGtmcmVlX3NrYihza2IpO1xcbiBcXHRcXHRyZXR1cm4gTlVMTDtcXG4gXFx0fVxcbiBcXG5AQCAtNzgsOCArODQsMTAgQEAgc3RhdGljIHN0cnVjdCBza19idWZmICpxY2FfdGFnX3JjdihzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxcbiBcXHRwb3J0ID0gRklFTERfR0VUKFFDQV9IRFJfUkVDVl9TT1VSQ0VfUE9SVCwgaGRyKTtcXG4gXFxuIFxcdHNrYi1cXHUwMDNlZGV2ID0gZHNhX2NvbmR1aXRfZmluZF91c2VyKGRldiwgMCwgcG9ydCk7XFxuLVxcdGlmICghc2tiLVxcdTAwM2VkZXYpXFxuK1xcdGlmICghc2tiLVxcdTAwM2VkZXYpIHtcXG4rXFx0XFx0a2ZyZWVfc2tiKHNrYik7XFxuIFxcdFxcdHJldHVybiBOVUxMO1xcbitcXHR9XFxuIFxcbiBcXHQvKiBSZW1vdmUgUUNBIHRhZyBhbmQgcmVjYWxjdWxhdGUgY2hlY2tzdW0gKi9cXG4gXFx0c2tiX3B1bGxfcmNzdW0oc2tiLCBRQ0FfSERSX0xFTik7XFxuZGlmZiAtLWdpdCBhL25ldC9kc2EvdGFnX3J0bDRfYS5jIGIvbmV0L2RzYS90YWdfcnRsNF9hLmNcXG5pbmRleCAzY2M2M2VhY2ZhMDM1Mi4uNTkwZWEzYjkyMWM5ZDkgMTAwNjQ0XFxuLS0tIGEvbmV0L2RzYS90YWdfcnRsNF9hLmNcXG4rKysgYi9uZXQvZHNhL3RhZ19ydGw0X2EuY1xcbkBAIC00MSw3ICs0MSw3IEBAIHN0YXRpYyBzdHJ1Y3Qgc2tfYnVmZiAqcnRsNGFfdGFnX3htaXQoc3RydWN0IHNrX2J1ZmYgKnNrYixcXG4gXFx0dTE2IG91dDtcXG4gXFxuIFxcdC8qIFBhZCBvdXQgdG8gYXQgbGVhc3QgNjAgYnl0ZXMgKi9cXG4tXFx0aWYgKHVubGlrZWx5KF9fc2tiX3B1dF9wYWR0byhza2IsIEVUSF9aTEVOLCBmYWxzZSkpKVxcbitcXHRpZiAodW5saWtlbHkoZXRoX3NrYl9wYWQoc2tiKSkpXFxuIFxcdFxcdHJldHVybiBOVUxMO1xcbiBcXG4gXFx0bmV0ZGV2X2RiZyhkZXYsIFxcXCJhZGQgcmVhbHRlayB0YWcgdG8gcGFja2FnZSB0byBwb3J0ICVkXFxcXG5cXFwiLFxcbkBAIC03NSw4ICs3NSwxMCBAQCBzdGF0aWMgc3RydWN0IHNrX2J1ZmYgKnJ0bDRhX3RhZ19yY3Yoc3RydWN0IHNrX2J1ZmYgKnNrYixcXG4gXFx0dTggcHJvdDtcXG4gXFx0dTggcG9ydDtcXG4gXFxuLVxcdGlmICh1bmxpa2VseSghcHNrYl9tYXlfcHVsbChza2IsIFJUTDRfQV9IRFJfTEVOKSkpXFxuK1xcdGlmICh1bmxpa2VseSghcHNrYl9tYXlfcHVsbChza2IsIFJUTDRfQV9IRFJfTEVOKSkpIHtcXG4rXFx0XFx0a2ZyZWVfc2tiKHNrYik7XFxuIFxcdFxcdHJldHVybiBOVUxMO1xcbitcXHR9XFxuIFxcbiBcXHR0YWcgPSBkc2FfZXR5cGVfaGVhZGVyX3Bvc19yeChza2IpO1xcbiBcXHRwID0gKF9fYmUxNiAqKXRhZztcXG5AQCAtOTIsNiArOTQsNyBAQCBzdGF0aWMgc3RydWN0IHNrX2J1ZmYgKnJ0bDRhX3RhZ19yY3Yoc3RydWN0IHNrX2J1ZmYgKnNrYixcXG4gXFx0cHJvdCA9IChwcm90cG9ydCBcXHUwMDNlXFx1MDAzZSBSVEw0X0FfUFJPVE9DT0xfU0hJRlQpIFxcdTAwMjYgMHgwZjtcXG4gXFx0aWYgKHByb3QgIT0gUlRMNF9BX1BST1RPQ09MX1JUTDgzNjZSQikge1xcbiBcXHRcXHRuZXRkZXZfZXJyKGRldiwgXFxcInVua25vd24gcmVhbHRlayBwcm90b2NvbCAweCUwMXhcXFxcblxcXCIsIHByb3QpO1xcbitcXHRcXHRrZnJlZV9za2Ioc2tiKTtcXG4gXFx0XFx0cmV0dXJuIE5VTEw7XFxuIFxcdH1cXG4gXFx0cG9ydCA9IHByb3Rwb3J0IFxcdTAwMjYgMHhmZjtcXG5AQCAtOTksNiArMTAyLDcgQEAgc3RhdGljIHN0cnVjdCBza19idWZmICpydGw0YV90YWdfcmN2KHN0cnVjdCBza19idWZmICpza2IsXFxuIFxcdHNrYi1cXHUwMDNlZGV2ID0gZHNhX2NvbmR1aXRfZmluZF91c2VyKGRldiwgMCwgcG9ydCk7XFxuIFxcdGlmICghc2tiLVxcdTAwM2VkZXYpIHtcXG4gXFx0XFx0bmV0ZGV2X2RiZyhkZXYsIFxcXCJjb3VsZCBub3QgZmluZCB1c2VyIGZvciBwb3J0ICVkXFxcXG5cXFwiLCBwb3J0KTtcXG4rXFx0XFx0a2ZyZWVfc2tiKHNrYik7XFxuIFxcdFxcdHJldHVybiBOVUxMO1xcbiBcXHR9XFxuIFxcbmRpZmYgLS1naXQgYS9uZXQvZHNhL3RhZ19ydGw4XzQuYyBiL25ldC9kc2EvdGFnX3J0bDhfNC5jXFxuaW5kZXggODUyYzZiODgwNzlhMTMuLjRkYTNiZWViZWY3NWUyIDEwMDY0NFxcbi0tLSBhL25ldC9kc2EvdGFnX3J0bDhfNC5jXFxuKysrIGIvbmV0L2RzYS90YWdfcnRsOF80LmNcXG5AQCAtMTQzLDggKzE0MywxMCBAQCBzdGF0aWMgc3RydWN0IHNrX2J1ZmYgKnJ0bDhfNHRfdGFnX3htaXQoc3RydWN0IHNrX2J1ZmYgKnNrYixcXG4gXFx0LyogQ2FsY3VsYXRlIHRoZSBjaGVja3N1bSBoZXJlIGlmIG5vdCBkb25lIHlldCBhcyB0cmFpbGluZyB0YWdzIHdpbGxcXG4gXFx0ICogYnJlYWsgZWl0aGVyIHNvZnR3YXJlIG9yIGhhcmR3YXJlIGJhc2VkIGNoZWNrc3VtXFxuIFxcdCAqL1xcbi1cXHRpZiAoc2tiLVxcdTAwM2VpcF9zdW1tZWQgPT0gQ0hFQ0tTVU1fUEFSVElBTCBcXHUwMDI2XFx1MDAyNiBza2JfY2hlY2tzdW1faGVscChza2IpKVxcbitcXHRpZiAoc2tiLVxcdTAwM2VpcF9zdW1tZWQgPT0gQ0hFQ0tTVU1fUEFSVElBTCBcXHUwMDI2XFx1MDAyNiBza2JfY2hlY2tzdW1faGVscChza2IpKSB7XFxuK1xcdFxcdGtmcmVlX3NrYihza2IpO1xcbiBcXHRcXHRyZXR1cm4gTlVMTDtcXG4rXFx0fVxcbiBcXG4gXFx0cnRsOF80X3dyaXRlX3RhZyhza2IsIGRldiwgc2tiX3B1dChza2IsIFJUTDhfNF9UQUdfTEVOKSk7XFxuIFxcbkBAIC0yMDEsMTEgKzIwMywxNSBAQCBzdGF0aWMgaW50IHJ0bDhfNF9yZWFkX3RhZyhzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxcbiBzdGF0aWMgc3RydWN0IHNrX2J1ZmYgKnJ0bDhfNF90YWdfcmN2KHN0cnVjdCBza19idWZmICpza2IsXFxuIFxcdFxcdFxcdFxcdCAgICAgIHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXFxuIHtcXG4tXFx0aWYgKHVubGlrZWx5KCFwc2tiX21heV9wdWxsKHNrYiwgUlRMOF80X1RBR19MRU4pKSlcXG4rXFx0aWYgKHVubGlrZWx5KCFwc2tiX21heV9wdWxsKHNrYiwgUlRMOF80X1RBR19MRU4pKSkge1xcbitcXHRcXHRrZnJlZV9za2Ioc2tiKTtcXG4gXFx0XFx0cmV0dXJuIE5VTEw7XFxuK1xcdH1cXG4gXFxuLVxcdGlmICh1bmxpa2VseShydGw4XzRfcmVhZF90YWcoc2tiLCBkZXYsIGRzYV9ldHlwZV9oZWFkZXJfcG9zX3J4KHNrYikpKSlcXG4rXFx0aWYgKHVubGlrZWx5KHJ0bDhfNF9yZWFkX3RhZyhza2IsIGRldiwgZHNhX2V0eXBlX2hlYWRlcl9wb3Nfcngoc2tiKSkpKSB7XFxuK1xcdFxcdGtmcmVlX3NrYihza2IpO1xcbiBcXHRcXHRyZXR1cm4gTlVMTDtcXG4rXFx0fVxcbiBcXG4gXFx0LyogUmVtb3ZlIHRhZyBhbmQgcmVjYWxjdWxhdGUgY2hlY2tzdW0gKi9cXG4gXFx0c2tiX3B1bGxfcmNzdW0oc2tiLCBSVEw4XzRfVEFHX0xFTik7XFxuQEAgLTIxOCwxNCArMjI0LDIwIEBAIHN0YXRpYyBzdHJ1Y3Qgc2tfYnVmZiAqcnRsOF80X3RhZ19yY3Yoc3RydWN0IHNrX2J1ZmYgKnNrYixcXG4gc3RhdGljIHN0cnVjdCBza19idWZmICpydGw4XzR0X3RhZ19yY3Yoc3RydWN0IHNrX2J1ZmYgKnNrYixcXG4gXFx0XFx0XFx0XFx0ICAgICAgIHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXFxuIHtcXG4tXFx0aWYgKHNrYl9saW5lYXJpemUoc2tiKSlcXG4rXFx0aWYgKHNrYl9saW5lYXJpemUoc2tiKSkge1xcbitcXHRcXHRrZnJlZV9za2Ioc2tiKTtcXG4gXFx0XFx0cmV0dXJuIE5VTEw7XFxuK1xcdH1cXG4gXFxuLVxcdGlmICh1bmxpa2VseShydGw4XzRfcmVhZF90YWcoc2tiLCBkZXYsIHNrYl90YWlsX3BvaW50ZXIoc2tiKSAtIFJUTDhfNF9UQUdfTEVOKSkpXFxuK1xcdGlmICh1bmxpa2VseShydGw4XzRfcmVhZF90YWcoc2tiLCBkZXYsIHNrYl90YWlsX3BvaW50ZXIoc2tiKSAtIFJUTDhfNF9UQUdfTEVOKSkpIHtcXG4rXFx0XFx0a2ZyZWVfc2tiKHNrYik7XFxuIFxcdFxcdHJldHVybiBOVUxMO1xcbitcXHR9XFxuIFxcbi1cXHRpZiAocHNrYl90cmltX3Jjc3VtKHNrYiwgc2tiLVxcdTAwM2VsZW4gLSBSVEw4XzRfVEFHX0xFTikpXFxuK1xcdGlmIChwc2tiX3RyaW1fcmNzdW0oc2tiLCBza2ItXFx1MDAzZWxlbiAtIFJUTDhfNF9UQUdfTEVOKSkge1xcbitcXHRcXHRrZnJlZV9za2Ioc2tiKTtcXG4gXFx0XFx0cmV0dXJuIE5VTEw7XFxuK1xcdH1cXG4gXFxuIFxcdHJldHVybiBza2I7XFxuIH1cXG5kaWZmIC0tZ2l0IGEvbmV0L2RzYS90YWdfcnpuMV9hNXBzdy5jIGIvbmV0L2RzYS90YWdfcnpuMV9hNXBzdy5jXFxuaW5kZXggMTA5OTRiMzQ3MGY2N2EuLjczNDkxMDE1NmRjMzMzIDEwMDY0NFxcbi0tLSBhL25ldC9kc2EvdGFnX3J6bjFfYTVwc3cuY1xcbisrKyBiL25ldC9kc2EvdGFnX3J6bjFfYTVwc3cuY1xcbkBAIC00OCw3ICs0OCw3IEBAIHN0YXRpYyBzdHJ1Y3Qgc2tfYnVmZiAqYTVwc3dfdGFnX3htaXQoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IG5ldF9kZXZpY2UgKmRlXFxuIFxcdCAqIGxlYXN0IDYwIGJ5dGVzIG90aGVyd2lzZSB0aGV5IHdpbGwgYmUgZGlzY2FyZGVkIHdoZW4gdGhleSBlbnRlciB0aGVcXG4gXFx0ICogc3dpdGNoIHBvcnQgbG9naWMuXFxuIFxcdCAqL1xcbi1cXHRpZiAoX19za2JfcHV0X3BhZHRvKHNrYiwgRVRIX1pMRU4sIGZhbHNlKSlcXG4rXFx0aWYgKGV0aF9za2JfcGFkKHNrYikpXFxuIFxcdFxcdHJldHVybiBOVUxMO1xcbiBcXG4gXFx0LyogcHJvdmlkZSAnQTVQU1dfVEFHX0xFTicgYnl0ZXMgYWRkaXRpb25hbCBzcGFjZSAqL1xcbkBAIC03Nyw2ICs3Nyw3IEBAIHN0YXRpYyBzdHJ1Y3Qgc2tfYnVmZiAqYTVwc3dfdGFnX3JjdihzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxcbiBcXHRpZiAodW5saWtlbHkoIXBza2JfbWF5X3B1bGwoc2tiLCBBNVBTV19UQUdfTEVOKSkpIHtcXG4gXFx0XFx0ZGV2X3dhcm5fcmF0ZWxpbWl0ZWQoXFx1MDAyNmRldi1cXHUwMDNlZGV2LFxcbiBcXHRcXHRcXHRcXHQgICAgIFxcXCJEcm9wcGluZyBwYWNrZXQsIGNhbm5vdCBwdWxsXFxcXG5cXFwiKTtcXG4rXFx0XFx0a2ZyZWVfc2tiKHNrYik7XFxuIFxcdFxcdHJldHVybiBOVUxMO1xcbiBcXHR9XFxuIFxcbkBAIC04NCwxNCArODUsMTcgQEAgc3RhdGljIHN0cnVjdCBza19idWZmICphNXBzd190YWdfcmN2KHN0cnVjdCBza19idWZmICpza2IsXFxuIFxcbiBcXHRpZiAodGFnLVxcdTAwM2VjdHJsX3RhZyAhPSBodG9ucyhFVEhfUF9EU0FfQTVQU1cpKSB7XFxuIFxcdFxcdGRldl93YXJuX3JhdGVsaW1pdGVkKFxcdTAwMjZkZXYtXFx1MDAzZWRldiwgXFxcIkRyb3BwaW5nIHBhY2tldCBkdWUgdG8gaW52YWxpZCBUQUcgbWFya2VyXFxcXG5cXFwiKTtcXG4rXFx0XFx0a2ZyZWVfc2tiKHNrYik7XFxuIFxcdFxcdHJldHVybiBOVUxMO1xcbiBcXHR9XFxuIFxcbiBcXHRwb3J0ID0gRklFTERfR0VUKEE1UFNXX0NUUkxfREFUQV9QT1JULCBudG9ocyh0YWctXFx1MDAzZWN0cmxfZGF0YSkpO1xcbiBcXG4gXFx0c2tiLVxcdTAwM2VkZXYgPSBkc2FfY29uZHVpdF9maW5kX3VzZXIoZGV2LCAwLCBwb3J0KTtcXG4tXFx0aWYgKCFza2ItXFx1MDAzZWRldilcXG4rXFx0aWYgKCFza2ItXFx1MDAzZWRldikge1xcbitcXHRcXHRrZnJlZV9za2Ioc2tiKTtcXG4gXFx0XFx0cmV0dXJuIE5VTEw7XFxuK1xcdH1cXG4gXFxuIFxcdHNrYl9wdWxsX3Jjc3VtKHNrYiwgQTVQU1dfVEFHX0xFTik7XFxuIFxcdGRzYV9zdHJpcF9ldHlwZV9oZWFkZXIoc2tiLCBBNVBTV19UQUdfTEVOKTtcXG5kaWZmIC0tZ2l0IGEvbmV0L2RzYS90YWdfc2phMTEwNS5jIGIvbmV0L2RzYS90YWdfc2phMTEwNS5jXFxuaW5kZXggZGU2ZDRjZTg2NjhiZTEuLmJmZTFmNzQ2ZjU1YmU1IDEwMDY0NFxcbi0tLSBhL25ldC9kc2EvdGFnX3NqYTExMDUuY1xcbisrKyBiL25ldC9kc2EvdGFnX3NqYTExMDUuY1xcbkBAIC0xNDksMTkgKzE0OSwyMCBAQCBzdGF0aWMgc3RydWN0IHNrX2J1ZmYgKnNqYTExMDVfZGVmZXJfeG1pdChzdHJ1Y3QgZHNhX3BvcnQgKmRwLFxcbiBcXHR4bWl0X3dvcmtfZm4gPSB0YWdnZXJfZGF0YS1cXHUwMDNleG1pdF93b3JrX2ZuO1xcbiBcXHR4bWl0X3dvcmtlciA9IHByaXYtXFx1MDAzZXhtaXRfd29ya2VyO1xcbiBcXG4tXFx0aWYgKCF4bWl0X3dvcmtfZm4gfHwgIXhtaXRfd29ya2VyKVxcbitcXHRpZiAoIXhtaXRfd29ya19mbiB8fCAheG1pdF93b3JrZXIpIHtcXG4rXFx0XFx0a2ZyZWVfc2tiKHNrYik7XFxuIFxcdFxcdHJldHVybiBOVUxMO1xcbitcXHR9XFxuIFxcbiBcXHR4bWl0X3dvcmsgPSBremFsbG9jX29iaigqeG1pdF93b3JrLCBHRlBfQVRPTUlDKTtcXG4tXFx0aWYgKCF4bWl0X3dvcmspXFxuK1xcdGlmICgheG1pdF93b3JrKSB7XFxuK1xcdFxcdGtmcmVlX3NrYihza2IpO1xcbiBcXHRcXHRyZXR1cm4gTlVMTDtcXG4rXFx0fVxcbiBcXG4gXFx0a3RocmVhZF9pbml0X3dvcmsoXFx1MDAyNnhtaXRfd29yay1cXHUwMDNld29yaywgeG1pdF93b3JrX2ZuKTtcXG4tXFx0LyogSW5jcmVhc2UgcmVmY291bnQgc28gdGhlIGtmcmVlX3NrYiBpbiBkc2FfdXNlcl94bWl0XFxuLVxcdCAqIHdvbid0IHJlYWxseSBmcmVlIHRoZSBwYWNrZXQuXFxuLVxcdCAqL1xcbiBcXHR4bWl0X3dvcmstXFx1MDAzZWRwID0gZHA7XFxuLVxcdHhtaXRfd29yay1cXHUwMDNlc2tiID0gc2tiX2dldChza2IpO1xcbitcXHR4bWl0X3dvcmstXFx1MDAzZXNrYiA9IHNrYjtcXG4gXFxuIFxcdGt0aHJlYWRfcXVldWVfd29yayh4bWl0X3dvcmtlciwgXFx1MDAyNnhtaXRfd29yay1cXHUwMDNld29yayk7XFxuIFxcbkBAIC00MDEsMTAgKzQwMiw3IEBAIHN0YXRpYyBzdHJ1Y3Qgc2tfYnVmZlxcbiBcXHRcXHRcXHRrZnJlZV9za2IocHJpdi1cXHUwMDNlc3RhbXBhYmxlX3NrYik7XFxuIFxcdFxcdH1cXG4gXFxuLVxcdFxcdC8qIEhvbGQgYSByZWZlcmVuY2UgdG8gYXZvaWQgZHNhX3N3aXRjaF9yY3ZcXG4tXFx0XFx0ICogZnJvbSBmcmVlaW5nIHRoZSBza2IuXFxuLVxcdFxcdCAqL1xcbi1cXHRcXHRwcml2LVxcdTAwM2VzdGFtcGFibGVfc2tiID0gc2tiX2dldChza2IpO1xcbitcXHRcXHRwcml2LVxcdTAwM2VzdGFtcGFibGVfc2tiID0gc2tiO1xcbiBcXHRcXHRzcGluX3VubG9jayhcXHUwMDI2cHJpdi1cXHUwMDNlbWV0YV9sb2NrKTtcXG4gXFxuIFxcdFxcdC8qIFRlbGwgRFNBIHdlIGdvdCBub3RoaW5nICovXFxuQEAgLTQzNiw2ICs0MzQsNyBAQCBzdGF0aWMgc3RydWN0IHNrX2J1ZmZcXG4gXFx0XFx0XFx0ZGV2X2Vycl9yYXRlbGltaXRlZChkcy1cXHUwMDNlZGV2LFxcbiBcXHRcXHRcXHRcXHRcXHQgICAgXFxcIlVuZXhwZWN0ZWQgbWV0YSBmcmFtZVxcXFxuXFxcIik7XFxuIFxcdFxcdFxcdHNwaW5fdW5sb2NrKFxcdTAwMjZwcml2LVxcdTAwM2VtZXRhX2xvY2spO1xcbitcXHRcXHRcXHRrZnJlZV9za2Ioc2tiKTtcXG4gXFx0XFx0XFx0cmV0dXJuIE5VTEw7XFxuIFxcdFxcdH1cXG4gXFxuQEAgLTQ0Myw2ICs0NDIsNyBAQCBzdGF0aWMgc3RydWN0IHNrX2J1ZmZcXG4gXFx0XFx0XFx0ZGV2X2Vycl9yYXRlbGltaXRlZChkcy1cXHUwMDNlZGV2LFxcbiBcXHRcXHRcXHRcXHRcXHQgICAgXFxcIk1ldGEgZnJhbWUgb24gd3JvbmcgcG9ydFxcXFxuXFxcIik7XFxuIFxcdFxcdFxcdHNwaW5fdW5sb2NrKFxcdTAwMjZwcml2LVxcdTAwM2VtZXRhX2xvY2spO1xcbitcXHRcXHRcXHRrZnJlZV9za2Ioc2tiKTtcXG4gXFx0XFx0XFx0cmV0dXJuIE5VTEw7XFxuIFxcdFxcdH1cXG4gXFxuQEAgLTUwMSwxOCArNTAxLDIxIEBAIHN0YXRpYyBzdHJ1Y3Qgc2tfYnVmZiAqc2phMTEwNV9yY3Yoc3RydWN0IHNrX2J1ZmYgKnNrYixcXG4gXFx0LyogTm9ybWFsIGRhdGEgcGxhbmUgdHJhZmZpYyBhbmQgbGluay1sb2NhbCBmcmFtZXMgYXJlIHRhZ2dlZCB3aXRoXFxuIFxcdCAqIGEgdGFnXzgwMjFxIFZMQU4gd2hpY2ggd2UgaGF2ZSB0byBzdHJpcFxcbiBcXHQgKi9cXG4tXFx0aWYgKHNqYTExMDVfc2tiX2hhc190YWdfODAyMXEoc2tiKSlcXG4rXFx0aWYgKHNqYTExMDVfc2tiX2hhc190YWdfODAyMXEoc2tiKSkge1xcbiBcXHRcXHRkc2FfODAyMXFfcmN2KHNrYiwgXFx1MDAyNnNvdXJjZV9wb3J0LCBcXHUwMDI2c3dpdGNoX2lkLCBcXHUwMDI2dmJpZCwgXFx1MDAyNnZpZCk7XFxuLVxcdGVsc2UgaWYgKHNvdXJjZV9wb3J0ID09IC0xIFxcdTAwMjZcXHUwMDI2IHN3aXRjaF9pZCA9PSAtMSlcXG4rXFx0fSBlbHNlIGlmIChzb3VyY2VfcG9ydCA9PSAtMSBcXHUwMDI2XFx1MDAyNiBzd2l0Y2hfaWQgPT0gLTEpIHtcXG4gXFx0XFx0LyogUGFja2V0cyB3aXRoIG5vIHNvdXJjZSBpbmZvcm1hdGlvbiBoYXZlIG5vIGNoYW5jZSBvZlxcbiBcXHRcXHQgKiBnZXR0aW5nIGFjY2VwdGVkLCBkcm9wIHRoZW0gc3RyYWlnaHQgYXdheS5cXG4gXFx0XFx0ICovXFxuK1xcdFxcdGtmcmVlX3NrYihza2IpO1xcbiBcXHRcXHRyZXR1cm4gTlVMTDtcXG4rXFx0fVxcbiBcXG4gXFx0c2tiLVxcdTAwM2VkZXYgPSBkc2FfdGFnXzgwMjFxX2ZpbmRfdXNlcihuZXRkZXYsIHNvdXJjZV9wb3J0LCBzd2l0Y2hfaWQsXFxuIFxcdFxcdFxcdFxcdFxcdCAgIHZpZCwgdmJpZCk7XFxuIFxcdGlmICghc2tiLVxcdTAwM2VkZXYpIHtcXG4gXFx0XFx0bmV0ZGV2X3dhcm4obmV0ZGV2LCBcXFwiQ291bGRuJ3QgZGVjb2RlIHNvdXJjZSBwb3J0XFxcXG5cXFwiKTtcXG4rXFx0XFx0a2ZyZWVfc2tiKHNrYik7XFxuIFxcdFxcdHJldHVybiBOVUxMO1xcbiBcXHR9XFxuIFxcbkBAIC01MzksMTIgKzU0MiwxNSBAQCBzdGF0aWMgc3RydWN0IHNrX2J1ZmYgKnNqYTExMTBfcmN2X21ldGEoc3RydWN0IHNrX2J1ZmYgKnNrYiwgdTE2IHJ4X2hlYWRlcilcXG4gXFx0aWYgKCFkcykge1xcbiBcXHRcXHRuZXRfZXJyX3JhdGVsaW1pdGVkKFxcXCIlczogY2Fubm90IGZpbmQgc3dpdGNoIGlkICVkXFxcXG5cXFwiLFxcbiBcXHRcXHRcXHRcXHQgICAgY29uZHVpdC1cXHUwMDNlbmFtZSwgc3dpdGNoX2lkKTtcXG4rXFx0XFx0a2ZyZWVfc2tiKHNrYik7XFxuIFxcdFxcdHJldHVybiBOVUxMO1xcbiBcXHR9XFxuIFxcbiBcXHR0YWdnZXJfZGF0YSA9IHNqYTExMDVfdGFnZ2VyX2RhdGEoZHMpO1xcbi1cXHRpZiAoIXRhZ2dlcl9kYXRhLVxcdTAwM2VtZXRhX3RzdGFtcF9oYW5kbGVyKVxcbitcXHRpZiAoIXRhZ2dlcl9kYXRhLVxcdTAwM2VtZXRhX3RzdGFtcF9oYW5kbGVyKSB7XFxuK1xcdFxcdGtmcmVlX3NrYihza2IpO1xcbiBcXHRcXHRyZXR1cm4gTlVMTDtcXG4rXFx0fVxcbiBcXG4gXFx0Zm9yIChpID0gMDsgaSBcXHUwMDNjPSBuX3RzOyBpKyspIHtcXG4gXFx0XFx0dTggdHNfaWQsIHNvdXJjZV9wb3J0LCBkaXI7XFxuQEAgLTU2Miw2ICs1NjgsNyBAQCBzdGF0aWMgc3RydWN0IHNrX2J1ZmYgKnNqYTExMTBfcmN2X21ldGEoc3RydWN0IHNrX2J1ZmYgKnNrYiwgdTE2IHJ4X2hlYWRlcilcXG4gXFx0fVxcbiBcXG4gXFx0LyogRGlzY2FyZCB0aGUgbWV0YSBmcmFtZSwgd2UndmUgY29uc3VtZWQgdGhlIHRpbWVzdGFtcHMgaXQgY29udGFpbmVkICovXFxuK1xcdGtmcmVlX3NrYihza2IpO1xcbiBcXHRyZXR1cm4gTlVMTDtcXG4gfVxcbiBcXG5AQCAtNTcyLDggKzU3OSwxMCBAQCBzdGF0aWMgc3RydWN0IHNrX2J1ZmYgKnNqYTExMTBfcmN2X2luYmFuZF9jb250cm9sX2V4dGVuc2lvbihzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxcbiB7XFxuIFxcdHUxNiByeF9oZWFkZXI7XFxuIFxcbi1cXHRpZiAodW5saWtlbHkoIXBza2JfbWF5X3B1bGwoc2tiLCBTSkExMTEwX0hFQURFUl9MRU4pKSlcXG4rXFx0aWYgKHVubGlrZWx5KCFwc2tiX21heV9wdWxsKHNrYiwgU0pBMTExMF9IRUFERVJfTEVOKSkpIHtcXG4rXFx0XFx0a2ZyZWVfc2tiKHNrYik7XFxuIFxcdFxcdHJldHVybiBOVUxMO1xcbitcXHR9XFxuIFxcbiBcXHQvKiBza2ItXFx1MDAzZWRhdGEgcG9pbnRzIHRvIHNrYl9tYWNfaGVhZGVyKHNrYikgKyBFVEhfSExFTiwgd2hpY2ggaXMgZXhhY3RseVxcbiBcXHQgKiB3aGF0IHdlIG5lZWQgYmVjYXVzZSB0aGUgY2FsbGVyIGhhcyBjaGVja2VkIHRoZSBFdGhlclR5cGUgKHdoaWNoIGlzXFxuQEAgLTYwOSw4ICs2MTgsMTAgQEAgc3RhdGljIHN0cnVjdCBza19idWZmICpzamExMTEwX3Jjdl9pbmJhbmRfY29udHJvbF9leHRlbnNpb24oc3RydWN0IHNrX2J1ZmYgKnNrYixcXG4gXFx0XFx0ICogcGFkZGluZyBhbmQgdHJhaWxlciB3ZSBuZWVkIHRvIGFjY291bnQgZm9yIHRoZSBmYWN0IHRoYXRcXG4gXFx0XFx0ICogc2tiLVxcdTAwM2VkYXRhIHBvaW50cyB0byBza2JfbWFjX2hlYWRlcihza2IpICsgRVRIX0hMRU4uXFxuIFxcdFxcdCAqL1xcbi1cXHRcXHRpZiAocHNrYl90cmltX3Jjc3VtKHNrYiwgc3RhcnRfb2ZfcGFkZGluZyAtIEVUSF9ITEVOKSlcXG4rXFx0XFx0aWYgKHBza2JfdHJpbV9yY3N1bShza2IsIHN0YXJ0X29mX3BhZGRpbmcgLSBFVEhfSExFTikpIHtcXG4rXFx0XFx0XFx0a2ZyZWVfc2tiKHNrYik7XFxuIFxcdFxcdFxcdHJldHVybiBOVUxMO1xcbitcXHRcXHR9XFxuIFxcdC8qIFRyYXAtdG8taG9zdCBmcmFtZSwgbm8gdGltZXN0YW1wIHRyYWlsZXIgKi9cXG4gXFx0fSBlbHNlIHtcXG4gXFx0XFx0KnNvdXJjZV9wb3J0ID0gU0pBMTExMF9SWF9IRUFERVJfU1JDX1BPUlQocnhfaGVhZGVyKTtcXG5AQCAtNjUzLDYgKzY2NCw3IEBAIHN0YXRpYyBzdHJ1Y3Qgc2tfYnVmZiAqc2phMTExMF9yY3Yoc3RydWN0IHNrX2J1ZmYgKnNrYixcXG4gXFxuIFxcdGlmICghc2tiLVxcdTAwM2VkZXYpIHtcXG4gXFx0XFx0bmV0ZGV2X3dhcm4obmV0ZGV2LCBcXFwiQ291bGRuJ3QgZGVjb2RlIHNvdXJjZSBwb3J0XFxcXG5cXFwiKTtcXG4rXFx0XFx0a2ZyZWVfc2tiKHNrYik7XFxuIFxcdFxcdHJldHVybiBOVUxMO1xcbiBcXHR9XFxuIFxcbmRpZmYgLS1naXQgYS9uZXQvZHNhL3RhZ190cmFpbGVyLmMgYi9uZXQvZHNhL3RhZ190cmFpbGVyLmNcXG5pbmRleCA0ZGNlMjRjZmU2YTcxNi4uNDljODAyYzEwY2E2M2EgMTAwNjQ0XFxuLS0tIGEvbmV0L2RzYS90YWdfdHJhaWxlci5jXFxuKysrIGIvbmV0L2RzYS90YWdfdHJhaWxlci5jXFxuQEAgLTMwLDIyICszMCwzMCBAQCBzdGF0aWMgc3RydWN0IHNrX2J1ZmYgKnRyYWlsZXJfcmN2KHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXFxuIFxcdHU4ICp0cmFpbGVyO1xcbiBcXHRpbnQgc291cmNlX3BvcnQ7XFxuIFxcbi1cXHRpZiAoc2tiX2xpbmVhcml6ZShza2IpKVxcbitcXHRpZiAoc2tiX2xpbmVhcml6ZShza2IpKSB7XFxuK1xcdFxcdGtmcmVlX3NrYihza2IpO1xcbiBcXHRcXHRyZXR1cm4gTlVMTDtcXG4rXFx0fVxcbiBcXG4gXFx0dHJhaWxlciA9IHNrYl90YWlsX3BvaW50ZXIoc2tiKSAtIDQ7XFxuIFxcdGlmICh0cmFpbGVyWzBdICE9IDB4ODAgfHwgKHRyYWlsZXJbMV0gXFx1MDAyNiAweGY4KSAhPSAweDAwIHx8XFxuLVxcdCAgICAodHJhaWxlclsyXSBcXHUwMDI2IDB4ZWYpICE9IDB4MDAgfHwgdHJhaWxlclszXSAhPSAweDAwKVxcbitcXHQgICAgKHRyYWlsZXJbMl0gXFx1MDAyNiAweGVmKSAhPSAweDAwIHx8IHRyYWlsZXJbM10gIT0gMHgwMCkge1xcbitcXHRcXHRrZnJlZV9za2Ioc2tiKTtcXG4gXFx0XFx0cmV0dXJuIE5VTEw7XFxuK1xcdH1cXG4gXFxuIFxcdHNvdXJjZV9wb3J0ID0gdHJhaWxlclsxXSBcXHUwMDI2IDc7XFxuIFxcbiBcXHRza2ItXFx1MDAzZWRldiA9IGRzYV9jb25kdWl0X2ZpbmRfdXNlcihkZXYsIDAsIHNvdXJjZV9wb3J0KTtcXG4tXFx0aWYgKCFza2ItXFx1MDAzZWRldilcXG4rXFx0aWYgKCFza2ItXFx1MDAzZWRldikge1xcbitcXHRcXHRrZnJlZV9za2Ioc2tiKTtcXG4gXFx0XFx0cmV0dXJuIE5VTEw7XFxuK1xcdH1cXG4gXFxuLVxcdGlmIChwc2tiX3RyaW1fcmNzdW0oc2tiLCBza2ItXFx1MDAzZWxlbiAtIDQpKVxcbitcXHRpZiAocHNrYl90cmltX3Jjc3VtKHNrYiwgc2tiLVxcdTAwM2VsZW4gLSA0KSkge1xcbitcXHRcXHRrZnJlZV9za2Ioc2tiKTtcXG4gXFx0XFx0cmV0dXJuIE5VTEw7XFxuK1xcdH1cXG4gXFxuIFxcdHJldHVybiBza2I7XFxuIH1cXG5kaWZmIC0tZ2l0IGEvbmV0L2RzYS90YWdfdnNjNzN4eF84MDIxcS5jIGIvbmV0L2RzYS90YWdfdnNjNzN4eF84MDIxcS5jXFxuaW5kZXggYWYxMjFhOWFmZjdmYmQuLmY0NzM2YTFhN2EwZjBmIDEwMDY0NFxcbi0tLSBhL25ldC9kc2EvdGFnX3ZzYzczeHhfODAyMXEuY1xcbisrKyBiL25ldC9kc2EvdGFnX3ZzYzczeHhfODAyMXEuY1xcbkBAIC00NCw2ICs0NCw3IEBAIHZzYzczeHhfcmN2KHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYpXFxuIFxcdGlmICghc2tiLVxcdTAwM2VkZXYpIHtcXG4gXFx0XFx0ZGV2X3dhcm5fcmF0ZWxpbWl0ZWQoXFx1MDAyNm5ldGRldi1cXHUwMDNlZGV2LFxcbiBcXHRcXHRcXHRcXHQgICAgIFxcXCJDb3VsZG4ndCBkZWNvZGUgc291cmNlIHBvcnRcXFxcblxcXCIpO1xcbitcXHRcXHRrZnJlZV9za2Ioc2tiKTtcXG4gXFx0XFx0cmV0dXJuIE5VTEw7XFxuIFxcdH1cXG4gXFxuZGlmZiAtLWdpdCBhL25ldC9kc2EvdGFnX3hyczcwMHguYyBiL25ldC9kc2EvdGFnX3hyczcwMHguY1xcbmluZGV4IGEwNTIxOWY3MDJjNjVhLi5iYjI2ODAyMGVlODY1ZSAxMDA2NDRcXG4tLS0gYS9uZXQvZHNhL3RhZ194cnM3MDB4LmNcXG4rKysgYi9uZXQvZHNhL3RhZ194cnM3MDB4LmNcXG5AQCAtMzAsMTUgKzMwLDIxIEBAIHN0YXRpYyBzdHJ1Y3Qgc2tfYnVmZiAqeHJzNzAweF9yY3Yoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IG5ldF9kZXZpY2UgKmRldilcXG4gXFxuIFxcdHNvdXJjZV9wb3J0ID0gZmZzKChpbnQpdHJhaWxlclswXSkgLSAxO1xcbiBcXG4tXFx0aWYgKHNvdXJjZV9wb3J0IFxcdTAwM2MgMClcXG4rXFx0aWYgKHNvdXJjZV9wb3J0IFxcdTAwM2MgMCkge1xcbitcXHRcXHRrZnJlZV9za2Ioc2tiKTtcXG4gXFx0XFx0cmV0dXJuIE5VTEw7XFxuK1xcdH1cXG4gXFxuIFxcdHNrYi1cXHUwMDNlZGV2ID0gZHNhX2NvbmR1aXRfZmluZF91c2VyKGRldiwgMCwgc291cmNlX3BvcnQpO1xcbi1cXHRpZiAoIXNrYi1cXHUwMDNlZGV2KVxcbitcXHRpZiAoIXNrYi1cXHUwMDNlZGV2KSB7XFxuK1xcdFxcdGtmcmVlX3NrYihza2IpO1xcbiBcXHRcXHRyZXR1cm4gTlVMTDtcXG4rXFx0fVxcbiBcXG4tXFx0aWYgKHBza2JfdHJpbV9yY3N1bShza2IsIHNrYi1cXHUwMDNlbGVuIC0gMSkpXFxuK1xcdGlmIChwc2tiX3RyaW1fcmNzdW0oc2tiLCBza2ItXFx1MDAzZWxlbiAtIDEpKSB7XFxuK1xcdFxcdGtmcmVlX3NrYihza2IpO1xcbiBcXHRcXHRyZXR1cm4gTlVMTDtcXG4rXFx0fVxcbiBcXG4gXFx0LyogRnJhbWUgaXMgZm9yd2FyZGVkIGJ5IGhhcmR3YXJlLCBkb24ndCBmb3J3YXJkIGluIHNvZnR3YXJlLiAqL1xcbiBcXHRkc2FfZGVmYXVsdF9vZmZsb2FkX2Z3ZF9tYXJrKHNrYik7XFxuZGlmZiAtLWdpdCBhL25ldC9kc2EvdGFnX3l0OTIxeC5jIGIvbmV0L2RzYS90YWdfeXQ5MjF4LmNcXG5pbmRleCBmM2NlZDk5YjFjODUyZS4uMjk0Nzg0YWI2Njk0YjYgMTAwNjQ0XFxuLS0tIGEvbmV0L2RzYS90YWdfeXQ5MjF4LmNcXG4rKysgYi9uZXQvZHNhL3RhZ195dDkyMXguY1xcbkBAIC04Nyw4ICs4NywxMCBAQCB5dDkyMXhfdGFnX3JjdihzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2KVxcbiBcXHRfX2JlMTYgKnRhZztcXG4gXFx0dTE2IHJ4O1xcbiBcXG4tXFx0aWYgKHVubGlrZWx5KCFwc2tiX21heV9wdWxsKHNrYiwgWVQ5MjFYX1RBR19MRU4pKSlcXG4rXFx0aWYgKHVubGlrZWx5KCFwc2tiX21heV9wdWxsKHNrYiwgWVQ5MjFYX1RBR19MRU4pKSkge1xcbitcXHRcXHRrZnJlZV9za2Ioc2tiKTtcXG4gXFx0XFx0cmV0dXJuIE5VTEw7XFxuK1xcdH1cXG4gXFxuIFxcdHRhZyA9IGRzYV9ldHlwZV9oZWFkZXJfcG9zX3J4KHNrYik7XFxuIFxcbkBAIC05Niw2ICs5OCw3IEBAIHl0OTIxeF90YWdfcmN2KHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYpXFxuIFxcdFxcdGRldl93YXJuX3JhdGVsaW1pdGVkKFxcdTAwMjZuZXRkZXYtXFx1MDAzZWRldixcXG4gXFx0XFx0XFx0XFx0ICAgICBcXFwiVW5leHBlY3RlZCBFdGhlclR5cGUgMHglMDR4XFxcXG5cXFwiLFxcbiBcXHRcXHRcXHRcXHQgICAgIG50b2hzKHRhZ1swXSkpO1xcbitcXHRcXHRrZnJlZV9za2Ioc2tiKTtcXG4gXFx0XFx0cmV0dXJuIE5VTEw7XFxuIFxcdH1cXG4gXFxuQEAgLTEwNCw2ICsxMDcsNyBAQCB5dDkyMXhfdGFnX3JjdihzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2KVxcbiBcXHRpZiAodW5saWtlbHkoKHJ4IFxcdTAwMjYgWVQ5MjFYX1RBR19QT1JUX0VOKSA9PSAwKSkge1xcbiBcXHRcXHRkZXZfd2Fybl9yYXRlbGltaXRlZChcXHUwMDI2bmV0ZGV2LVxcdTAwM2VkZXYsXFxuIFxcdFxcdFxcdFxcdCAgICAgXFxcIlVuZXhwZWN0ZWQgcnggdGFnIDB4JTA0eFxcXFxuXFxcIiwgcngpO1xcbitcXHRcXHRrZnJlZV9za2Ioc2tiKTtcXG4gXFx0XFx0cmV0dXJuIE5VTEw7XFxuIFxcdH1cXG4gXFxuQEAgLTExMiw2ICsxMTYsNyBAQCB5dDkyMXhfdGFnX3JjdihzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2KVxcbiBcXHRpZiAodW5saWtlbHkoIXNrYi1cXHUwMDNlZGV2KSkge1xcbiBcXHRcXHRkZXZfd2Fybl9yYXRlbGltaXRlZChcXHUwMDI2bmV0ZGV2LVxcdTAwM2VkZXYsXFxuIFxcdFxcdFxcdFxcdCAgICAgXFxcIkNvdWxkbid0IGRlY29kZSBzb3VyY2UgcG9ydCAldVxcXFxuXFxcIiwgcG9ydCk7XFxuK1xcdFxcdGtmcmVlX3NrYihza2IpO1xcbiBcXHRcXHRyZXR1cm4gTlVMTDtcXG4gXFx0fVxcbiBcXG5kaWZmIC0tZ2l0IGEvbmV0L2RzYS91c2VyLmMgYi9uZXQvZHNhL3VzZXIuY1xcbmluZGV4IDg3MDRjMWEzYTViNzQxLi4wNzJmYTc2OTcyY2M2NSAxMDA2NDRcXG4tLS0gYS9uZXQvZHNhL3VzZXIuY1xcbisrKyBiL25ldC9kc2EvdXNlci5jXFxuQEAgLTkzNSwxMyArOTM1LDEyIEBAIHN0YXRpYyBuZXRkZXZfdHhfdCBkc2FfdXNlcl94bWl0KHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXFxuIFxcdFxcdGV0aF9za2JfcGFkKHNrYik7XFxuIFxcbiBcXHQvKiBUcmFuc21pdCBmdW5jdGlvbiBtYXkgaGF2ZSB0byByZWFsbG9jYXRlIHRoZSBvcmlnaW5hbCBTS0IsXFxuLVxcdCAqIGluIHdoaWNoIGNhc2UgaXQgbXVzdCBoYXZlIGZyZWVkIGl0LiBPbmx5IGZyZWUgaXQgaGVyZSBvbiBlcnJvci5cXG4rXFx0ICogaW4gd2hpY2ggY2FzZSBpdCBtdXN0IGhhdmUgZnJlZWQgaXQuIFRhZ2dlcnMgd2lsbCBkcm9wIHRoZVxcbitcXHQgKiBwYXNzZWQgc2tiIG9uIGVycm9yLlxcbiBcXHQgKi9cXG4gXFx0bnNrYiA9IHAtXFx1MDAzZXhtaXQoc2tiLCBkZXYpO1xcbi1cXHRpZiAoIW5za2IpIHtcXG4tXFx0XFx0a2ZyZWVfc2tiKHNrYik7XFxuK1xcdGlmICghbnNrYilcXG4gXFx0XFx0cmV0dXJuIE5FVERFVl9UWF9PSztcXG4tXFx0fVxcbiBcXG4gXFx0cmV0dXJuIGRzYV9lbnF1ZXVlX3NrYihuc2tiLCBkZXYpO1xcbiB9XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI1VDA4OjI5OjA2Ljg1NzgzNjA0NFoiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MTA2Njk2NTE4NjEzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIk5FVF9EU0FcIixcbiAgICBcIk5FVF9EU0FfTE9PUFwiLFxuICAgIFwiTkVUX0RTQV9UQUdfQVI5MzMxXCIsXG4gICAgXCJORVRfRFNBX1RBR19CUkNNXCIsXG4gICAgXCJORVRfRFNBX1RBR19CUkNNX0xFR0FDWVwiLFxuICAgIFwiTkVUX0RTQV9UQUdfQlJDTV9QUkVQRU5EXCIsXG4gICAgXCJORVRfRFNBX1RBR19IRUxMQ1JFRUtcIixcbiAgICBcIk5FVF9EU0FfVEFHX0dTV0lQXCIsXG4gICAgXCJORVRfRFNBX1RBR19EU0FcIixcbiAgICBcIk5FVF9EU0FfVEFHX0VEU0FcIixcbiAgICBcIk5FVF9EU0FfVEFHX01US1wiLFxuICAgIFwiTkVUX0RTQV9UQUdfTVhMXzg2MlhYXCIsXG4gICAgXCJORVRfRFNBX1RBR19NWExfR1NXMVhYXCIsXG4gICAgXCJORVRfRFNBX1RBR19LU1pcIixcbiAgICBcIk5FVF9EU0FfVEFHX05FVENcIixcbiAgICBcIk5FVF9EU0FfVEFHX09DRUxPVFwiLFxuICAgIFwiTkVUX0RTQV9UQUdfT0NFTE9UXzgwMjFRXCIsXG4gICAgXCJORVRfRFNBX1RBR19RQ0FcIixcbiAgICBcIk5FVF9EU0FfVEFHX1JUTDRfQVwiLFxuICAgIFwiTkVUX0RTQV9UQUdfUlRMOF80XCIsXG4gICAgXCJORVRfRFNBX1RBR19SWk4xX0E1UFNXXCIsXG4gICAgXCJORVRfRFNBX1RBR19MQU45MzAzXCIsXG4gICAgXCJORVRfRFNBX1RBR19TSkExMTA1XCIsXG4gICAgXCJORVRfRFNBX1RBR19UUkFJTEVSXCIsXG4gICAgXCJORVRfRFNBX1RBR19WU0M3M1hYXzgwMjFRXCIsXG4gICAgXCJORVRfRFNBX1RBR19YUlM3MDBYXCIsXG4gICAgXCJORVRfRFNBX1RBR19ZVDkyMVhcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJkc2Ffc3dpdGNoX3JjdlwiLFxuICAgIFwiZHNhX3VzZXJfeG1pdFwiLFxuICAgIFwiYXI5MzMxX3RhZ19yY3ZcIixcbiAgICBcImJyY21fdGFnX3htaXRfbGxcIixcbiAgICBcImJyY21fdGFnX3Jjdl9sbFwiLFxuICAgIFwiZHNhX3Jjdl9sbFwiLFxuICAgIFwiZWRzYV9yY3ZcIixcbiAgICBcImtzel9jb21tb25fcmN2XCIsXG4gICAgXCJvY2Vsb3RfcmN2XCIsXG4gICAgXCJxY2FfdGFnX3JjdlwiLFxuICAgIFwic2phMTEwNV9yY3ZcIixcbiAgICBcInRyYWlsZXJfcmN2XCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggcmVmYWN0b3JzIHNrYiBtZW1vcnkgbWFuYWdlbWVudCBpbiB0aGUgRFNBIChEaXN0cmlidXRlZCBTd2l0Y2ggQXJjaGl0ZWN0dXJlKSBzdWJzeXN0ZW0uIEl0IHNoaWZ0cyB0aGUgcmVzcG9uc2liaWxpdHkgb2YgZnJlZWluZyB0aGUgc2tiIG9uIGVycm9yIHBhdGhzIGZyb20gdGhlIGNvcmUgRFNBIGZ1bmN0aW9ucyAoZHNhX3VzZXJfeG1pdCwgZHNhX3N3aXRjaF9yY3YpIHRvIHRoZSBpbmRpdmlkdWFsIHRhZ2dlciBkcml2ZXJzLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgdGhhdCBjb3VsZCBpbnRyb2R1Y2UgbWVtb3J5IGxlYWtzIG9yIGRvdWJsZSBmcmVlcyBpZiBhbnkgZXJyb3IgcGF0aCBpbiBhIHRhZ2dlciBkcml2ZXIgaXMgbWlzc2VkIG9yIG1pc2hhbmRsZWQuIFRoZSBjb2RlIGlzIHJlYWNoYWJsZSBpbiBhIHZpcnR1YWxpemVkIGVudmlyb25tZW50IGJ5IHVzaW5nIHRoZSBkc2FfbG9vcCBtb2NrLXVwIHN3aXRjaCBkcml2ZXIgYW5kIGR5bmFtaWNhbGx5IGNoYW5naW5nIHRoZSB0YWdnaW5nIHByb3RvY29sIHZpYSBzeXNmcy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4yLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS5cbiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbiAgIERvIG5vdCBsaXN0IHRvbyBnZW5lcmljIGNvbmZpZ3MgKHdlIGFscmVhZHkgaGF2ZSB0aGVtIGVuYWJsZWQpLiBPbmx5IGxpc3QgdGhvc2UgdGhhdFxuICAgc3BlY2lmaWNhbGx5IGNvdmVyIHRoZSBtb2RpZmllZCBjb2RlLiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3Mgb3V0cHV0IGFycmF5LFxuICAgYW5kIERPIE5PVCBhZGQgYSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCA2NzRlODk5ODM3N2NjNmYxN2NiMjlmZmM2NjU1ZjkyZmMzOWExOWY3XG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFRodSBKdW4gMjUgMDg6Mjk6MDQgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9uZXQvZHNhL3RhZy5jIGIvbmV0L2RzYS90YWcuY1xuaW5kZXggNzlhZDEwNTkwMmQ5NzguLjk5MTczMmQ2ZWFlMmMzIDEwMDY0NFxuLS0tIGEvbmV0L2RzYS90YWcuY1xuKysrIGIvbmV0L2RzYS90YWcuY1xuQEAgLTc5LDE1ICs3OSwxNiBAQCBzdGF0aWMgaW50IGRzYV9zd2l0Y2hfcmN2KHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXG4gXHRcdGlmIChsaWtlbHkoc2tiLVx1MDAzZWRldikpIHtcbiBcdFx0XHRkc2FfZGVmYXVsdF9vZmZsb2FkX2Z3ZF9tYXJrKHNrYik7XG4gXHRcdFx0bnNrYiA9IHNrYjtcbitcdFx0fSBlbHNlIHtcbitcdFx0XHQvKiBKdXN0IGRyb3AgdGhlIHNrYiBpZiB3ZSBjYW4ndCBmaW5kIHRoZSB1c2VyICovXG4rXHRcdFx0a2ZyZWVfc2tiKHNrYik7XG4gXHRcdH1cbiBcdH0gZWxzZSB7XG4gXHRcdG5za2IgPSBjcHVfZHAtXHUwMDNlcmN2KHNrYiwgZGV2KTtcbiBcdH1cbiBcbi1cdGlmICghbnNrYikge1xuLVx0XHRrZnJlZV9za2Ioc2tiKTtcbitcdGlmICghbnNrYilcbiBcdFx0cmV0dXJuIDA7XG4tXHR9XG4gXG4gXHRza2IgPSBuc2tiO1xuIFx0c2tiX3B1c2goc2tiLCBFVEhfSExFTik7XG5AQCAtMTA3LDExICsxMDgsMTAgQEAgc3RhdGljIGludCBkc2Ffc3dpdGNoX3JjdihzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxuIFxuIFx0aWYgKHVubGlrZWx5KGNwdV9kcC1cdTAwM2Vkcy1cdTAwM2V1bnRhZ19icmlkZ2VfcHZpZCB8fFxuIFx0XHQgICAgIGNwdV9kcC1cdTAwM2Vkcy1cdTAwM2V1bnRhZ192bGFuX2F3YXJlX2JyaWRnZV9wdmlkKSkge1xuK1x0XHQvKiBkc2Ffc29mdHdhcmVfdmxhbl91bnRhZygpIGRyb3BzIHNrYiBvbiBmYWlsdXJlICovXG4gXHRcdG5za2IgPSBkc2Ffc29mdHdhcmVfdmxhbl91bnRhZyhza2IpO1xuLVx0XHRpZiAoIW5za2IpIHtcbi1cdFx0XHRrZnJlZV9za2Ioc2tiKTtcbitcdFx0aWYgKCFuc2tiKVxuIFx0XHRcdHJldHVybiAwO1xuLVx0XHR9XG4gXHRcdHNrYiA9IG5za2I7XG4gXHR9XG4gXG5kaWZmIC0tZ2l0IGEvbmV0L2RzYS90YWdfYXI5MzMxLmMgYi9uZXQvZHNhL3RhZ19hcjkzMzEuY1xuaW5kZXggY2JiNTg4Y2E3M2FhZjUuLjJlMjM4ODE0M2IwMjUxIDEwMDY0NFxuLS0tIGEvbmV0L2RzYS90YWdfYXI5MzMxLmNcbisrKyBiL25ldC9kc2EvdGFnX2FyOTMzMS5jXG5AQCAtNTEsOCArNTEsMTAgQEAgc3RhdGljIHN0cnVjdCBza19idWZmICphcjkzMzFfdGFnX3JjdihzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxuIFx0dTggdmVyLCBwb3J0O1xuIFx0dTE2IGhkcjtcbiBcbi1cdGlmICh1bmxpa2VseSghcHNrYl9tYXlfcHVsbChza2IsIEFSOTMzMV9IRFJfTEVOKSkpXG4rXHRpZiAodW5saWtlbHkoIXBza2JfbWF5X3B1bGwoc2tiLCBBUjkzMzFfSERSX0xFTikpKSB7XG4rXHRcdGtmcmVlX3NrYihza2IpO1xuIFx0XHRyZXR1cm4gTlVMTDtcbitcdH1cbiBcbiBcdGhkciA9IGxlMTZfdG9fY3B1KCooX19sZTE2ICopc2tiX21hY19oZWFkZXIoc2tiKSk7XG4gXG5AQCAtNjAsMTIgKzYyLDE0IEBAIHN0YXRpYyBzdHJ1Y3Qgc2tfYnVmZiAqYXI5MzMxX3RhZ19yY3Yoc3RydWN0IHNrX2J1ZmYgKnNrYixcbiBcdGlmICh1bmxpa2VseSh2ZXIgIT0gQVI5MzMxX0hEUl9WRVJTSU9OKSkge1xuIFx0XHRuZXRkZXZfd2Fybl9vbmNlKG5kZXYsIFwiJXM6JWkgd3JvbmcgaGVhZGVyIHZlcnNpb24gMHglMnhcXG5cIixcbiBcdFx0XHRcdCBfX2Z1bmNfXywgX19MSU5FX18sIGhkcik7XG4rXHRcdGtmcmVlX3NrYihza2IpO1xuIFx0XHRyZXR1cm4gTlVMTDtcbiBcdH1cbiBcbiBcdGlmICh1bmxpa2VseShoZHIgXHUwMDI2IEFSOTMzMV9IRFJfRlJPTV9DUFUpKSB7XG4gXHRcdG5ldGRldl93YXJuX29uY2UobmRldiwgXCIlczolaSBwYWNrZXQgc2hvdWxkIG5vdCBiZSBmcm9tIGNwdSAweCUyeFxcblwiLFxuIFx0XHRcdFx0IF9fZnVuY19fLCBfX0xJTkVfXywgaGRyKTtcbitcdFx0a2ZyZWVfc2tiKHNrYik7XG4gXHRcdHJldHVybiBOVUxMO1xuIFx0fVxuIFxuQEAgLTc1LDggKzc5LDEwIEBAIHN0YXRpYyBzdHJ1Y3Qgc2tfYnVmZiAqYXI5MzMxX3RhZ19yY3Yoc3RydWN0IHNrX2J1ZmYgKnNrYixcbiBcdHBvcnQgPSBGSUVMRF9HRVQoQVI5MzMxX0hEUl9QT1JUX05VTV9NQVNLLCBoZHIpO1xuIFxuIFx0c2tiLVx1MDAzZWRldiA9IGRzYV9jb25kdWl0X2ZpbmRfdXNlcihuZGV2LCAwLCBwb3J0KTtcbi1cdGlmICghc2tiLVx1MDAzZWRldilcbitcdGlmICghc2tiLVx1MDAzZWRldikge1xuK1x0XHRrZnJlZV9za2Ioc2tiKTtcbiBcdFx0cmV0dXJuIE5VTEw7XG4rXHR9XG4gXG4gXHRyZXR1cm4gc2tiO1xuIH1cbmRpZmYgLS1naXQgYS9uZXQvZHNhL3RhZ19icmNtLmMgYi9uZXQvZHNhL3RhZ19icmNtLmNcbmluZGV4IGNmOTQyMDQzOTA1NDNmLi40MTFlM2I1N2QxNmFmNSAxMDA2NDRcbi0tLSBhL25ldC9kc2EvdGFnX2JyY20uY1xuKysrIGIvbmV0L2RzYS90YWdfYnJjbS5jXG5AQCAtMTAyLDkgKzEwMiw5IEBAIHN0YXRpYyBzdHJ1Y3Qgc2tfYnVmZiAqYnJjbV90YWdfeG1pdF9sbChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxuIFx0ICogKGluY2x1ZGluZyBGQ1MgYW5kIHRhZykgYmVjYXVzZSB0aGUgbGVuZ3RoIHZlcmlmaWNhdGlvbiBpcyBkb25lIGFmdGVyXG4gXHQgKiB0aGUgQnJvYWRjb20gdGFnIGlzIHN0cmlwcGVkIG9mZiB0aGUgaW5ncmVzcyBwYWNrZXQuXG4gXHQgKlxuLVx0ICogTGV0IGRzYV91c2VyX3htaXQoKSBmcmVlIHRoZSBTS0JcbitcdCAqIEZyZWUgdGhlIFNLQiBvbiBlcnJvci5cbiBcdCAqL1xuLVx0aWYgKF9fc2tiX3B1dF9wYWR0byhza2IsIEVUSF9aTEVOICsgQlJDTV9UQUdfTEVOLCBmYWxzZSkpXG4rXHRpZiAoc2tiX3B1dF9wYWR0byhza2IsIEVUSF9aTEVOICsgQlJDTV9UQUdfTEVOKSlcbiBcdFx0cmV0dXJuIE5VTEw7XG4gXG4gXHRza2JfcHVzaChza2IsIEJSQ01fVEFHX0xFTik7XG5AQCAtMTUxLDI3ICsxNTEsMzUgQEAgc3RhdGljIHN0cnVjdCBza19idWZmICpicmNtX3RhZ19yY3ZfbGwoc3RydWN0IHNrX2J1ZmYgKnNrYixcbiBcdGludCBzb3VyY2VfcG9ydDtcbiBcdHU4ICpicmNtX3RhZztcbiBcbi1cdGlmICh1bmxpa2VseSghcHNrYl9tYXlfcHVsbChza2IsIEJSQ01fVEFHX0xFTikpKVxuK1x0aWYgKHVubGlrZWx5KCFwc2tiX21heV9wdWxsKHNrYiwgQlJDTV9UQUdfTEVOKSkpIHtcbitcdFx0a2ZyZWVfc2tiKHNrYik7XG4gXHRcdHJldHVybiBOVUxMO1xuK1x0fVxuIFxuIFx0YnJjbV90YWcgPSBza2ItXHUwMDNlZGF0YSAtIG9mZnNldDtcbiBcbiBcdC8qIFRoZSBvcGNvZGUgc2hvdWxkIG5ldmVyIGJlIGRpZmZlcmVudCB0aGFuIDBiMDAwICovXG4tXHRpZiAodW5saWtlbHkoKGJyY21fdGFnWzBdIFx1MDAzZVx1MDAzZSBCUkNNX09QQ09ERV9TSElGVCkgXHUwMDI2IEJSQ01fT1BDT0RFX01BU0spKVxuK1x0aWYgKHVubGlrZWx5KChicmNtX3RhZ1swXSBcdTAwM2VcdTAwM2UgQlJDTV9PUENPREVfU0hJRlQpIFx1MDAyNiBCUkNNX09QQ09ERV9NQVNLKSkge1xuK1x0XHRrZnJlZV9za2Ioc2tiKTtcbiBcdFx0cmV0dXJuIE5VTEw7XG4rXHR9XG4gXG4gXHQvKiBXZSBzaG91bGQgbmV2ZXIgc2VlIGEgcmVzZXJ2ZWQgcmVhc29uIGNvZGUgd2l0aG91dCBrbm93aW5nIGhvdyB0b1xuIFx0ICogaGFuZGxlIGl0XG4gXHQgKi9cbi1cdGlmICh1bmxpa2VseShicmNtX3RhZ1syXSBcdTAwMjYgQlJDTV9FR19SQ19SU1ZEKSlcbitcdGlmICh1bmxpa2VseShicmNtX3RhZ1syXSBcdTAwMjYgQlJDTV9FR19SQ19SU1ZEKSkge1xuK1x0XHRrZnJlZV9za2Ioc2tiKTtcbiBcdFx0cmV0dXJuIE5VTEw7XG4rXHR9XG4gXG4gXHQvKiBMb2NhdGUgd2hpY2ggcG9ydCB0aGlzIGlzIGNvbWluZyBmcm9tICovXG4gXHRzb3VyY2VfcG9ydCA9IGJyY21fdGFnWzNdIFx1MDAyNiBCUkNNX0VHX1BJRF9NQVNLO1xuIFxuIFx0c2tiLVx1MDAzZWRldiA9IGRzYV9jb25kdWl0X2ZpbmRfdXNlcihkZXYsIDAsIHNvdXJjZV9wb3J0KTtcbi1cdGlmICghc2tiLVx1MDAzZWRldilcbitcdGlmICghc2tiLVx1MDAzZWRldikge1xuK1x0XHRrZnJlZV9za2Ioc2tiKTtcbiBcdFx0cmV0dXJuIE5VTEw7XG4rXHR9XG4gXG4gXHQvKiBSZW1vdmUgQnJvYWRjb20gdGFnIGFuZCB1cGRhdGUgY2hlY2tzdW0gKi9cbiBcdHNrYl9wdWxsX3Jjc3VtKHNrYiwgQlJDTV9UQUdfTEVOKTtcbkBAIC0yMjgsOCArMjM2LDEwIEBAIHN0YXRpYyBzdHJ1Y3Qgc2tfYnVmZiAqYnJjbV9sZWdfdGFnX3JjdihzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxuIFx0X19iZTE2ICpwcm90bztcbiBcdHU4ICpicmNtX3RhZztcbiBcbi1cdGlmICh1bmxpa2VseSghcHNrYl9tYXlfcHVsbChza2IsIEJSQ01fTEVHX1RBR19MRU4gKyBWTEFOX0hMRU4pKSlcbitcdGlmICh1bmxpa2VseSghcHNrYl9tYXlfcHVsbChza2IsIEJSQ01fTEVHX1RBR19MRU4gKyBWTEFOX0hMRU4pKSkge1xuK1x0XHRrZnJlZV9za2Ioc2tiKTtcbiBcdFx0cmV0dXJuIE5VTEw7XG4rXHR9XG4gXG4gXHRicmNtX3RhZyA9IGRzYV9ldHlwZV9oZWFkZXJfcG9zX3J4KHNrYik7XG4gXHRwcm90byA9IChfX2JlMTYgKikoYnJjbV90YWcgKyBCUkNNX0xFR19UQUdfTEVOKTtcbkBAIC0yMzcsOCArMjQ3LDEwIEBAIHN0YXRpYyBzdHJ1Y3Qgc2tfYnVmZiAqYnJjbV9sZWdfdGFnX3JjdihzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxuIFx0c291cmNlX3BvcnQgPSBicmNtX3RhZ1s1XSBcdTAwMjYgQlJDTV9MRUdfUE9SVF9JRDtcbiBcbiBcdHNrYi1cdTAwM2VkZXYgPSBkc2FfY29uZHVpdF9maW5kX3VzZXIoZGV2LCAwLCBzb3VyY2VfcG9ydCk7XG4tXHRpZiAoIXNrYi1cdTAwM2VkZXYpXG4rXHRpZiAoIXNrYi1cdTAwM2VkZXYpIHtcbitcdFx0a2ZyZWVfc2tiKHNrYik7XG4gXHRcdHJldHVybiBOVUxMO1xuK1x0fVxuIFxuIFx0LyogVGhlIGludGVybmFsIHN3aXRjaCBpbiBCQ002M1hYIFNvQ3MgYWx3YXlzIHRhZ3Mgb24gZWdyZXNzIG9uIHRoZSBDUFVcbiBcdCAqIHBvcnQuIFdlIHVzZSBWSUQgMCBpbnRlcm5hbGx5IGZvciB1bnRhZ2dlZCB0cmFmZmljLCBzbyBzdHJpcCB0aGUgdGFnXG5AQCAtMjczLDEwICsyODUsOCBAQCBzdGF0aWMgc3RydWN0IHNrX2J1ZmYgKmJyY21fbGVnX3RhZ194bWl0KHN0cnVjdCBza19idWZmICpza2IsXG4gXHQgKiBuZWVkIHRvIG1ha2Ugc3VyZSB0aGF0IHBhY2tldHMgYXJlIGF0IGxlYXN0IDcwIGJ5dGVzXG4gXHQgKiAoaW5jbHVkaW5nIEZDUyBhbmQgdGFnKSBiZWNhdXNlIHRoZSBsZW5ndGggdmVyaWZpY2F0aW9uIGlzIGRvbmUgYWZ0ZXJcbiBcdCAqIHRoZSBCcm9hZGNvbSB0YWcgaXMgc3RyaXBwZWQgb2ZmIHRoZSBpbmdyZXNzIHBhY2tldC5cbi1cdCAqXG4tXHQgKiBMZXQgZHNhX3VzZXJfeG1pdCgpIGZyZWUgdGhlIFNLQlxuIFx0ICovXG4tXHRpZiAoX19za2JfcHV0X3BhZHRvKHNrYiwgRVRIX1pMRU4gKyBCUkNNX0xFR19UQUdfTEVOLCBmYWxzZSkpXG4rXHRpZiAoc2tiX3B1dF9wYWR0byhza2IsIEVUSF9aTEVOICsgQlJDTV9MRUdfVEFHX0xFTikpXG4gXHRcdHJldHVybiBOVUxMO1xuIFxuIFx0c2tiX3B1c2goc2tiLCBCUkNNX0xFR19UQUdfTEVOKTtcbkBAIC0zMjUsMTAgKzMzNSw4IEBAIHN0YXRpYyBzdHJ1Y3Qgc2tfYnVmZiAqYnJjbV9sZWdfZmNzX3RhZ194bWl0KHN0cnVjdCBza19idWZmICpza2IsXG4gXHQgKiBuZWVkIHRvIG1ha2Ugc3VyZSB0aGF0IHBhY2tldHMgYXJlIGF0IGxlYXN0IDcwIGJ5dGVzIChpbmNsdWRpbmcgRkNTXG4gXHQgKiBhbmQgdGFnKSBiZWNhdXNlIHRoZSBsZW5ndGggdmVyaWZpY2F0aW9uIGlzIGRvbmUgYWZ0ZXIgdGhlIEJyb2FkY29tXG4gXHQgKiB0YWcgaXMgc3RyaXBwZWQgb2ZmIHRoZSBpbmdyZXNzIHBhY2tldC5cbi1cdCAqXG4tXHQgKiBMZXQgZHNhX3VzZXJfeG1pdCgpIGZyZWUgdGhlIFNLQi5cbiBcdCAqL1xuLVx0aWYgKF9fc2tiX3B1dF9wYWR0byhza2IsIEVUSF9aTEVOICsgQlJDTV9MRUdfVEFHX0xFTiwgZmFsc2UpKVxuK1x0aWYgKHNrYl9wdXRfcGFkdG8oc2tiLCBFVEhfWkxFTiArIEJSQ01fTEVHX1RBR19MRU4pKVxuIFx0XHRyZXR1cm4gTlVMTDtcbiBcbiBcdGZjc19sZW4gPSBza2ItXHUwMDNlbGVuO1xuQEAgLTM1MSw4ICszNTksOSBAQCBzdGF0aWMgc3RydWN0IHNrX2J1ZmYgKmJyY21fbGVnX2Zjc190YWdfeG1pdChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxuIFx0YnJjbV90YWdbNV0gPSBkcC1cdTAwM2VpbmRleCBcdTAwMjYgQlJDTV9MRUdfUE9SVF9JRDtcbiBcbiBcdC8qIE9yaWdpbmFsIEZDUyB2YWx1ZSAqL1xuLVx0aWYgKF9fc2tiX3BhZChza2IsIEVUSF9GQ1NfTEVOLCBmYWxzZSkpXG4rXHRpZiAoc2tiX3BhZChza2IsIEVUSF9GQ1NfTEVOKSlcbiBcdFx0cmV0dXJuIE5VTEw7XG4rXG4gXHRza2JfcHV0X2RhdGEoc2tiLCBcdTAwMjZmY3NfdmFsLCBFVEhfRkNTX0xFTik7XG4gXG4gXHRyZXR1cm4gc2tiO1xuZGlmZiAtLWdpdCBhL25ldC9kc2EvdGFnX2RzYS5jIGIvbmV0L2RzYS90YWdfZHNhLmNcbmluZGV4IDJhMmM0ZmI2MWE2NWM2Li5kNWZmZWUzNWZiYjUzYiAxMDA2NDRcbi0tLSBhL25ldC9kc2EvdGFnX2RzYS5jXG4rKysgYi9uZXQvZHNhL3RhZ19kc2EuY1xuQEAgLTIyNCw2ICsyMjQsNyBAQCBzdGF0aWMgc3RydWN0IHNrX2J1ZmYgKmRzYV9yY3ZfbGwoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IG5ldF9kZXZpY2UgKmRldixcbiBcdFx0XHQvKiBSZW1vdGUgbWFuYWdlbWVudCBpcyBub3QgaW1wbGVtZW50ZWQgeWV0LFxuIFx0XHRcdCAqIGRyb3AuXG4gXHRcdFx0ICovXG4rXHRcdFx0a2ZyZWVfc2tiKHNrYik7XG4gXHRcdFx0cmV0dXJuIE5VTEw7XG4gXHRcdGNhc2UgRFNBX0NPREVfQVJQX01JUlJPUjpcbiBcdFx0Y2FzZSBEU0FfQ09ERV9QT0xJQ1lfTUlSUk9SOlxuQEAgLTI0NCwxMiArMjQ1LDE0IEBAIHN0YXRpYyBzdHJ1Y3Qgc2tfYnVmZiAqZHNhX3Jjdl9sbChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxuIFx0XHRcdC8qIFJlc2VydmVkIGNvZGUsIHRoaXMgY291bGQgYmUgYW55dGhpbmcuIERyb3BcbiBcdFx0XHQgKiBzZWVtcyBsaWtlIHRoZSBzYWZlc3Qgb3B0aW9uLlxuIFx0XHRcdCAqL1xuK1x0XHRcdGtmcmVlX3NrYihza2IpO1xuIFx0XHRcdHJldHVybiBOVUxMO1xuIFx0XHR9XG4gXG4gXHRcdGJyZWFrO1xuIFxuIFx0ZGVmYXVsdDpcbitcdFx0a2ZyZWVfc2tiKHNrYik7XG4gXHRcdHJldHVybiBOVUxMO1xuIFx0fVxuIFxuQEAgLTI3MSw4ICsyNzQsMTAgQEAgc3RhdGljIHN0cnVjdCBza19idWZmICpkc2FfcmN2X2xsKHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXG4gXHRcdFx0XHRcdFx0IHNvdXJjZV9wb3J0KTtcbiBcdH1cbiBcbi1cdGlmICghc2tiLVx1MDAzZWRldilcbitcdGlmICghc2tiLVx1MDAzZWRldikge1xuK1x0XHRrZnJlZV9za2Ioc2tiKTtcbiBcdFx0cmV0dXJuIE5VTEw7XG4rXHR9XG4gXG4gXHQvKiBXaGVuIHVzaW5nIExBRyBvZmZsb2FkLCBza2ItXHUwMDNlZGV2IGlzIG5vdCBhIERTQSB1c2VyIGludGVyZmFjZSxcbiBcdCAqIHNvIHdlIGNhbm5vdCBjYWxsIGRzYV9kZWZhdWx0X29mZmxvYWRfZndkX21hcmsgYW5kIHdlIG5lZWQgdG9cbkBAIC0zMzUsOCArMzQwLDEwIEBAIHN0YXRpYyBzdHJ1Y3Qgc2tfYnVmZiAqZHNhX3htaXQoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IG5ldF9kZXZpY2UgKmRldilcbiBcbiBzdGF0aWMgc3RydWN0IHNrX2J1ZmYgKmRzYV9yY3Yoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IG5ldF9kZXZpY2UgKmRldilcbiB7XG4tXHRpZiAodW5saWtlbHkoIXBza2JfbWF5X3B1bGwoc2tiLCBEU0FfSExFTikpKVxuK1x0aWYgKHVubGlrZWx5KCFwc2tiX21heV9wdWxsKHNrYiwgRFNBX0hMRU4pKSkge1xuK1x0XHRrZnJlZV9za2Ioc2tiKTtcbiBcdFx0cmV0dXJuIE5VTEw7XG4rXHR9XG4gXG4gXHRyZXR1cm4gZHNhX3Jjdl9sbChza2IsIGRldiwgMCk7XG4gfVxuQEAgLTM3NSw4ICszODIsMTAgQEAgc3RhdGljIHN0cnVjdCBza19idWZmICplZHNhX3htaXQoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IG5ldF9kZXZpY2UgKmRldilcbiBcbiBzdGF0aWMgc3RydWN0IHNrX2J1ZmYgKmVkc2FfcmN2KHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXG4ge1xuLVx0aWYgKHVubGlrZWx5KCFwc2tiX21heV9wdWxsKHNrYiwgRURTQV9ITEVOKSkpXG4rXHRpZiAodW5saWtlbHkoIXBza2JfbWF5X3B1bGwoc2tiLCBFRFNBX0hMRU4pKSkge1xuK1x0XHRrZnJlZV9za2Ioc2tiKTtcbiBcdFx0cmV0dXJuIE5VTEw7XG4rXHR9XG4gXG4gXHRza2JfcHVsbF9yY3N1bShza2IsIEVEU0FfSExFTiAtIERTQV9ITEVOKTtcbiBcbmRpZmYgLS1naXQgYS9uZXQvZHNhL3RhZ19nc3dpcC5jIGIvbmV0L2RzYS90YWdfZ3N3aXAuY1xuaW5kZXggNWZhNDM2MTIxMDg3YjQuLjVjNDA3ZDQ0OGM5ZmVlIDEwMDY0NFxuLS0tIGEvbmV0L2RzYS90YWdfZ3N3aXAuY1xuKysrIGIvbmV0L2RzYS90YWdfZ3N3aXAuY1xuQEAgLTgwLDE2ICs4MCwyMCBAQCBzdGF0aWMgc3RydWN0IHNrX2J1ZmYgKmdzd2lwX3RhZ19yY3Yoc3RydWN0IHNrX2J1ZmYgKnNrYixcbiBcdGludCBwb3J0O1xuIFx0dTggKmdzd2lwX3RhZztcbiBcbi1cdGlmICh1bmxpa2VseSghcHNrYl9tYXlfcHVsbChza2IsIEdTV0lQX1JYX0hFQURFUl9MRU4pKSlcbitcdGlmICh1bmxpa2VseSghcHNrYl9tYXlfcHVsbChza2IsIEdTV0lQX1JYX0hFQURFUl9MRU4pKSkge1xuK1x0XHRrZnJlZV9za2Ioc2tiKTtcbiBcdFx0cmV0dXJuIE5VTEw7XG4rXHR9XG4gXG4gXHRnc3dpcF90YWcgPSBza2ItXHUwMDNlZGF0YSAtIEVUSF9ITEVOO1xuIFxuIFx0LyogR2V0IHNvdXJjZSBwb3J0IGluZm9ybWF0aW9uICovXG4gXHRwb3J0ID0gKGdzd2lwX3RhZ1s3XSBcdTAwMjYgR1NXSVBfUlhfU1BQSURfTUFTSykgXHUwMDNlXHUwMDNlIEdTV0lQX1JYX1NQUElEX1NISUZUO1xuIFx0c2tiLVx1MDAzZWRldiA9IGRzYV9jb25kdWl0X2ZpbmRfdXNlcihkZXYsIDAsIHBvcnQpO1xuLVx0aWYgKCFza2ItXHUwMDNlZGV2KVxuK1x0aWYgKCFza2ItXHUwMDNlZGV2KSB7XG4rXHRcdGtmcmVlX3NrYihza2IpO1xuIFx0XHRyZXR1cm4gTlVMTDtcbitcdH1cbiBcbiBcdC8qIHJlbW92ZSBHU1dJUCB0YWcgKi9cbiBcdHNrYl9wdWxsX3Jjc3VtKHNrYiwgR1NXSVBfUlhfSEVBREVSX0xFTik7XG5kaWZmIC0tZ2l0IGEvbmV0L2RzYS90YWdfaGVsbGNyZWVrLmMgYi9uZXQvZHNhL3RhZ19oZWxsY3JlZWsuY1xuaW5kZXggNTQ0YWIxNTY4NWEyYjguLmRkOWYzMjhmMzE4MjEwIDEwMDY0NFxuLS0tIGEvbmV0L2RzYS90YWdfaGVsbGNyZWVrLmNcbisrKyBiL25ldC9kc2EvdGFnX2hlbGxjcmVlay5jXG5AQCAtMjcsOCArMjcsMTAgQEAgc3RhdGljIHN0cnVjdCBza19idWZmICpoZWxsY3JlZWtfeG1pdChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxuIFx0ICogY2hlY2tzdW1zIGFmdGVyIHRoZSBzd2l0Y2ggc3RyaXBzIHRoZSB0YWcuXG4gXHQgKi9cbiBcdGlmIChza2ItXHUwMDNlaXBfc3VtbWVkID09IENIRUNLU1VNX1BBUlRJQUwgXHUwMDI2XHUwMDI2XG4tXHQgICAgc2tiX2NoZWNrc3VtX2hlbHAoc2tiKSlcbitcdCAgICBza2JfY2hlY2tzdW1faGVscChza2IpKSB7XG4rXHRcdGtmcmVlX3NrYihza2IpO1xuIFx0XHRyZXR1cm4gTlVMTDtcbitcdH1cbiBcbiBcdC8qIFRhZyBlbmNvZGluZyAqL1xuIFx0dGFnICA9IHNrYl9wdXQoc2tiLCBIRUxMQ1JFRUtfVEFHX0xFTik7XG5AQCAtNDcsMTEgKzQ5LDE0IEBAIHN0YXRpYyBzdHJ1Y3Qgc2tfYnVmZiAqaGVsbGNyZWVrX3JjdihzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxuIFx0c2tiLVx1MDAzZWRldiA9IGRzYV9jb25kdWl0X2ZpbmRfdXNlcihkZXYsIDAsIHBvcnQpO1xuIFx0aWYgKCFza2ItXHUwMDNlZGV2KSB7XG4gXHRcdG5ldGRldl93YXJuX29uY2UoZGV2LCBcIkZhaWxlZCB0byBnZXQgc291cmNlIHBvcnQ6ICVkXFxuXCIsIHBvcnQpO1xuK1x0XHRrZnJlZV9za2Ioc2tiKTtcbiBcdFx0cmV0dXJuIE5VTEw7XG4gXHR9XG4gXG4tXHRpZiAocHNrYl90cmltX3Jjc3VtKHNrYiwgc2tiLVx1MDAzZWxlbiAtIEhFTExDUkVFS19UQUdfTEVOKSlcbitcdGlmIChwc2tiX3RyaW1fcmNzdW0oc2tiLCBza2ItXHUwMDNlbGVuIC0gSEVMTENSRUVLX1RBR19MRU4pKSB7XG4rXHRcdGtmcmVlX3NrYihza2IpO1xuIFx0XHRyZXR1cm4gTlVMTDtcbitcdH1cbiBcbiBcdGRzYV9kZWZhdWx0X29mZmxvYWRfZndkX21hcmsoc2tiKTtcbiBcbmRpZmYgLS1naXQgYS9uZXQvZHNhL3RhZ19rc3ouYyBiL25ldC9kc2EvdGFnX2tzei5jXG5pbmRleCBkMjQ3NWMzYmJiN2QyMi4uNjdmYTg5ZjEwMmUwNzAgMTAwNjQ0XG4tLS0gYS9uZXQvZHNhL3RhZ19rc3ouY1xuKysrIGIvbmV0L2RzYS90YWdfa3N6LmNcbkBAIC04OCwxMSArODgsMTUgQEAgc3RhdGljIHN0cnVjdCBza19idWZmICprc3pfY29tbW9uX3JjdihzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxuIFx0XHRcdFx0ICAgICAgdW5zaWduZWQgaW50IHBvcnQsIHVuc2lnbmVkIGludCBsZW4pXG4ge1xuIFx0c2tiLVx1MDAzZWRldiA9IGRzYV9jb25kdWl0X2ZpbmRfdXNlcihkZXYsIDAsIHBvcnQpO1xuLVx0aWYgKCFza2ItXHUwMDNlZGV2KVxuK1x0aWYgKCFza2ItXHUwMDNlZGV2KSB7XG4rXHRcdGtmcmVlX3NrYihza2IpO1xuIFx0XHRyZXR1cm4gTlVMTDtcbitcdH1cbiBcbi1cdGlmIChwc2tiX3RyaW1fcmNzdW0oc2tiLCBza2ItXHUwMDNlbGVuIC0gbGVuKSlcbitcdGlmIChwc2tiX3RyaW1fcmNzdW0oc2tiLCBza2ItXHUwMDNlbGVuIC0gbGVuKSkge1xuK1x0XHRrZnJlZV9za2Ioc2tiKTtcbiBcdFx0cmV0dXJuIE5VTEw7XG4rXHR9XG4gXG4gXHRkc2FfZGVmYXVsdF9vZmZsb2FkX2Z3ZF9tYXJrKHNrYik7XG4gXG5AQCAtMTIzLDggKzEyNywxMCBAQCBzdGF0aWMgc3RydWN0IHNrX2J1ZmYgKmtzejg3OTVfeG1pdChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxuIFx0c3RydWN0IGV0aGhkciAqaGRyO1xuIFx0dTggKnRhZztcbiBcbi1cdGlmIChza2ItXHUwMDNlaXBfc3VtbWVkID09IENIRUNLU1VNX1BBUlRJQUwgXHUwMDI2XHUwMDI2IHNrYl9jaGVja3N1bV9oZWxwKHNrYikpXG4rXHRpZiAoc2tiLVx1MDAzZWlwX3N1bW1lZCA9PSBDSEVDS1NVTV9QQVJUSUFMIFx1MDAyNlx1MDAyNiBza2JfY2hlY2tzdW1faGVscChza2IpKSB7XG4rXHRcdGtmcmVlX3NrYihza2IpO1xuIFx0XHRyZXR1cm4gTlVMTDtcbitcdH1cbiBcbiBcdC8qIFRhZyBlbmNvZGluZyAqL1xuIFx0dGFnID0gc2tiX3B1dChza2IsIEtTWl9JTkdSRVNTX1RBR19MRU4pO1xuQEAgLTE0MSw4ICsxNDcsMTAgQEAgc3RhdGljIHN0cnVjdCBza19idWZmICprc3o4Nzk1X3JjdihzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxuIHtcbiBcdHU4ICp0YWc7XG4gXG4tXHRpZiAoc2tiX2xpbmVhcml6ZShza2IpKVxuK1x0aWYgKHNrYl9saW5lYXJpemUoc2tiKSkge1xuK1x0XHRrZnJlZV9za2Ioc2tiKTtcbiBcdFx0cmV0dXJuIE5VTEw7XG4rXHR9XG4gXG4gXHR0YWcgPSBza2JfdGFpbF9wb2ludGVyKHNrYikgLSBLU1pfRUdSRVNTX1RBR19MRU47XG4gXG5AQCAtMjU1LDIyICsyNjMsMjQgQEAgc3RhdGljIHN0cnVjdCBza19idWZmICprc3pfZGVmZXJfeG1pdChzdHJ1Y3QgZHNhX3BvcnQgKmRwLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxuIFx0eG1pdF93b3JrX2ZuID0gdGFnZ2VyX2RhdGEtXHUwMDNleG1pdF93b3JrX2ZuO1xuIFx0eG1pdF93b3JrZXIgPSBwcml2LVx1MDAzZXhtaXRfd29ya2VyO1xuIFxuLVx0aWYgKCF4bWl0X3dvcmtfZm4gfHwgIXhtaXRfd29ya2VyKVxuK1x0aWYgKCF4bWl0X3dvcmtfZm4gfHwgIXhtaXRfd29ya2VyKSB7XG4rXHRcdGtmcmVlX3NrYihza2IpO1xuIFx0XHRyZXR1cm4gTlVMTDtcbitcdH1cbiBcbiBcdHhtaXRfd29yayA9IGt6YWxsb2Nfb2JqKCp4bWl0X3dvcmssIEdGUF9BVE9NSUMpO1xuLVx0aWYgKCF4bWl0X3dvcmspXG4rXHRpZiAoIXhtaXRfd29yaykge1xuK1x0XHRrZnJlZV9za2Ioc2tiKTtcbiBcdFx0cmV0dXJuIE5VTEw7XG4rXHR9XG4gXG4gXHRrdGhyZWFkX2luaXRfd29yayhcdTAwMjZ4bWl0X3dvcmstXHUwMDNld29yaywgeG1pdF93b3JrX2ZuKTtcbi1cdC8qIEluY3JlYXNlIHJlZmNvdW50IHNvIHRoZSBrZnJlZV9za2IgaW4gZHNhX3VzZXJfeG1pdFxuLVx0ICogd29uJ3QgcmVhbGx5IGZyZWUgdGhlIHBhY2tldC5cbi1cdCAqL1xuIFx0eG1pdF93b3JrLVx1MDAzZWRwID0gZHA7XG4gXHR4bWl0X3dvcmstXHUwMDNlc2tiID0gc2tiX2dldChza2IpO1xuIFxuIFx0a3RocmVhZF9xdWV1ZV93b3JrKHhtaXRfd29ya2VyLCBcdTAwMjZ4bWl0X3dvcmstXHUwMDNld29yayk7XG4gXG4rXHRrZnJlZV9za2Ioc2tiKTtcbiBcdHJldHVybiBOVUxMO1xuIH1cbiBcbkBAIC0yODQsOCArMjk0LDEwIEBAIHN0YXRpYyBzdHJ1Y3Qgc2tfYnVmZiAqa3N6OTQ3N194bWl0KHN0cnVjdCBza19idWZmICpza2IsXG4gXHRfX2JlMTYgKnRhZztcbiBcdHUxNiB2YWw7XG4gXG4tXHRpZiAoc2tiLVx1MDAzZWlwX3N1bW1lZCA9PSBDSEVDS1NVTV9QQVJUSUFMIFx1MDAyNlx1MDAyNiBza2JfY2hlY2tzdW1faGVscChza2IpKVxuK1x0aWYgKHNrYi1cdTAwM2VpcF9zdW1tZWQgPT0gQ0hFQ0tTVU1fUEFSVElBTCBcdTAwMjZcdTAwMjYgc2tiX2NoZWNrc3VtX2hlbHAoc2tiKSkge1xuK1x0XHRrZnJlZV9za2Ioc2tiKTtcbiBcdFx0cmV0dXJuIE5VTEw7XG4rXHR9XG4gXG4gXHQvKiBUYWcgZW5jb2RpbmcgKi9cbiBcdGtzel94bWl0X3RpbWVzdGFtcChkcCwgc2tiKTtcbkBAIC0zMTAsOCArMzIyLDEwIEBAIHN0YXRpYyBzdHJ1Y3Qgc2tfYnVmZiAqa3N6OTQ3N19yY3Yoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IG5ldF9kZXZpY2UgKmRldilcbiBcdHVuc2lnbmVkIGludCBwb3J0O1xuIFx0dTggKnRhZztcbiBcbi1cdGlmIChza2JfbGluZWFyaXplKHNrYikpXG4rXHRpZiAoc2tiX2xpbmVhcml6ZShza2IpKSB7XG4rXHRcdGtmcmVlX3NrYihza2IpO1xuIFx0XHRyZXR1cm4gTlVMTDtcbitcdH1cbiBcbiBcdC8qIFRhZyBkZWNvZGluZyAqL1xuIFx0dGFnID0gc2tiX3RhaWxfcG9pbnRlcihza2IpIC0gS1NaX0VHUkVTU19UQUdfTEVOO1xuQEAgLTM1Miw4ICszNjYsMTAgQEAgc3RhdGljIHN0cnVjdCBza19idWZmICprc3o5ODkzX3htaXQoc3RydWN0IHNrX2J1ZmYgKnNrYixcbiBcdHN0cnVjdCBldGhoZHIgKmhkcjtcbiBcdHU4ICp0YWc7XG4gXG4tXHRpZiAoc2tiLVx1MDAzZWlwX3N1bW1lZCA9PSBDSEVDS1NVTV9QQVJUSUFMIFx1MDAyNlx1MDAyNiBza2JfY2hlY2tzdW1faGVscChza2IpKVxuK1x0aWYgKHNrYi1cdTAwM2VpcF9zdW1tZWQgPT0gQ0hFQ0tTVU1fUEFSVElBTCBcdTAwMjZcdTAwMjYgc2tiX2NoZWNrc3VtX2hlbHAoc2tiKSkge1xuK1x0XHRrZnJlZV9za2Ioc2tiKTtcbiBcdFx0cmV0dXJuIE5VTEw7XG4rXHR9XG4gXG4gXHQvKiBUYWcgZW5jb2RpbmcgKi9cbiBcdGtzel94bWl0X3RpbWVzdGFtcChkcCwgc2tiKTtcbkBAIC00MTgsOCArNDM0LDEwIEBAIHN0YXRpYyBzdHJ1Y3Qgc2tfYnVmZiAqbGFuOTM3eF94bWl0KHN0cnVjdCBza19idWZmICpza2IsXG4gXHRfX2JlMTYgKnRhZztcbiBcdHUxNiB2YWw7XG4gXG4tXHRpZiAoc2tiLVx1MDAzZWlwX3N1bW1lZCA9PSBDSEVDS1NVTV9QQVJUSUFMIFx1MDAyNlx1MDAyNiBza2JfY2hlY2tzdW1faGVscChza2IpKVxuK1x0aWYgKHNrYi1cdTAwM2VpcF9zdW1tZWQgPT0gQ0hFQ0tTVU1fUEFSVElBTCBcdTAwMjZcdTAwMjYgc2tiX2NoZWNrc3VtX2hlbHAoc2tiKSkge1xuK1x0XHRrZnJlZV9za2Ioc2tiKTtcbiBcdFx0cmV0dXJuIE5VTEw7XG4rXHR9XG4gXG4gXHRrc3pfeG1pdF90aW1lc3RhbXAoZHAsIHNrYik7XG4gXG5kaWZmIC0tZ2l0IGEvbmV0L2RzYS90YWdfbGFuOTMwMy5jIGIvbmV0L2RzYS90YWdfbGFuOTMwMy5jXG5pbmRleCAyNThlNWQ3ZGM1ZWY4NC4uZDExOTQ2OTY0OTlhYjggMTAwNjQ0XG4tLS0gYS9uZXQvZHNhL3RhZ19sYW45MzAzLmNcbisrKyBiL25ldC9kc2EvdGFnX2xhbjkzMDMuY1xuQEAgLTg1LDYgKzg1LDcgQEAgc3RhdGljIHN0cnVjdCBza19idWZmICpsYW45MzAzX3JjdihzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxuIFx0aWYgKHVubGlrZWx5KCFwc2tiX21heV9wdWxsKHNrYiwgTEFOOTMwM19UQUdfTEVOKSkpIHtcbiBcdFx0ZGV2X3dhcm5fcmF0ZWxpbWl0ZWQoXHUwMDI2ZGV2LVx1MDAzZWRldixcbiBcdFx0XHRcdCAgICAgXCJEcm9wcGluZyBwYWNrZXQsIGNhbm5vdCBwdWxsXFxuXCIpO1xuK1x0XHRrZnJlZV9za2Ioc2tiKTtcbiBcdFx0cmV0dXJuIE5VTEw7XG4gXHR9XG4gXG5AQCAtMTAyLDYgKzEwMyw3IEBAIHN0YXRpYyBzdHJ1Y3Qgc2tfYnVmZiAqbGFuOTMwM19yY3Yoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IG5ldF9kZXZpY2UgKmRldilcbiBcdHNrYi1cdTAwM2VkZXYgPSBkc2FfY29uZHVpdF9maW5kX3VzZXIoZGV2LCAwLCBzb3VyY2VfcG9ydCk7XG4gXHRpZiAoIXNrYi1cdTAwM2VkZXYpIHtcbiBcdFx0ZGV2X3dhcm5fcmF0ZWxpbWl0ZWQoXHUwMDI2ZGV2LVx1MDAzZWRldiwgXCJEcm9wcGluZyBwYWNrZXQgZHVlIHRvIGludmFsaWQgc291cmNlIHBvcnRcXG5cIik7XG4rXHRcdGtmcmVlX3NrYihza2IpO1xuIFx0XHRyZXR1cm4gTlVMTDtcbiBcdH1cbiBcbmRpZmYgLS1naXQgYS9uZXQvZHNhL3RhZ19tdGsuYyBiL25ldC9kc2EvdGFnX210ay5jXG5pbmRleCBkZWEzZWVjYWYwOTNkZi4uYzdkYzc3MzE2NzVlYzAgMTAwNjQ0XG4tLS0gYS9uZXQvZHNhL3RhZ19tdGsuY1xuKysrIGIvbmV0L2RzYS90YWdfbXRrLmNcbkBAIC03Miw4ICs3MiwxMCBAQCBzdGF0aWMgc3RydWN0IHNrX2J1ZmYgKm10a190YWdfcmN2KHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXG4gXHRpbnQgcG9ydDtcbiBcdF9fYmUxNiAqcGhkcjtcbiBcbi1cdGlmICh1bmxpa2VseSghcHNrYl9tYXlfcHVsbChza2IsIE1US19IRFJfTEVOKSkpXG4rXHRpZiAodW5saWtlbHkoIXBza2JfbWF5X3B1bGwoc2tiLCBNVEtfSERSX0xFTikpKSB7XG4rXHRcdGtmcmVlX3NrYihza2IpO1xuIFx0XHRyZXR1cm4gTlVMTDtcbitcdH1cbiBcbiBcdHBoZHIgPSBkc2FfZXR5cGVfaGVhZGVyX3Bvc19yeChza2IpO1xuIFx0aGRyID0gbnRvaHMoKnBoZHIpO1xuQEAgLTg3LDggKzg5LDEwIEBAIHN0YXRpYyBzdHJ1Y3Qgc2tfYnVmZiAqbXRrX3RhZ19yY3Yoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IG5ldF9kZXZpY2UgKmRldilcbiBcdHBvcnQgPSAoaGRyIFx1MDAyNiBNVEtfSERSX1JFQ1ZfU09VUkNFX1BPUlRfTUFTSyk7XG4gXG4gXHRza2ItXHUwMDNlZGV2ID0gZHNhX2NvbmR1aXRfZmluZF91c2VyKGRldiwgMCwgcG9ydCk7XG4tXHRpZiAoIXNrYi1cdTAwM2VkZXYpXG4rXHRpZiAoIXNrYi1cdTAwM2VkZXYpIHtcbitcdFx0a2ZyZWVfc2tiKHNrYik7XG4gXHRcdHJldHVybiBOVUxMO1xuK1x0fVxuIFxuIFx0ZHNhX2RlZmF1bHRfb2ZmbG9hZF9md2RfbWFyayhza2IpO1xuIFxuZGlmZiAtLWdpdCBhL25ldC9kc2EvdGFnX214bC1nc3cxeHguYyBiL25ldC9kc2EvdGFnX214bC1nc3cxeHguY1xuaW5kZXggNjBmN2M0NDVlNjU2MTAuLjRiMWI2ZWY5NDE5NjM0IDEwMDY0NFxuLS0tIGEvbmV0L2RzYS90YWdfbXhsLWdzdzF4eC5jXG4rKysgYi9uZXQvZHNhL3RhZ19teGwtZ3N3MXh4LmNcbkBAIC03Myw2ICs3Myw3IEBAIHN0YXRpYyBzdHJ1Y3Qgc2tfYnVmZiAqZ3N3MXh4X3RhZ19yY3Yoc3RydWN0IHNrX2J1ZmYgKnNrYixcbiBcbiBcdGlmICh1bmxpa2VseSghcHNrYl9tYXlfcHVsbChza2IsIEdTVzFYWF9IRUFERVJfTEVOKSkpIHtcbiBcdFx0ZGV2X3dhcm5fcmF0ZWxpbWl0ZWQoXHUwMDI2ZGV2LVx1MDAzZWRldiwgXCJEcm9wcGluZyBwYWNrZXQsIGNhbm5vdCBwdWxsIFNLQlxcblwiKTtcbitcdFx0a2ZyZWVfc2tiKHNrYik7XG4gXHRcdHJldHVybiBOVUxMO1xuIFx0fVxuIFxuQEAgLTgxLDYgKzgyLDcgQEAgc3RhdGljIHN0cnVjdCBza19idWZmICpnc3cxeHhfdGFnX3JjdihzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxuIFx0aWYgKHVubGlrZWx5KG50b2hzKGdzdzF4eF90YWdbMF0pICE9IEVUSF9QX01YTEdTVykpIHtcbiBcdFx0ZGV2X3dhcm5fcmF0ZWxpbWl0ZWQoXHUwMDI2ZGV2LVx1MDAzZWRldiwgXCJEcm9wcGluZyBwYWNrZXQgZHVlIHRvIGludmFsaWQgc3BlY2lhbCB0YWdcXG5cIik7XG4gXHRcdGRldl93YXJuX3JhdGVsaW1pdGVkKFx1MDAyNmRldi1cdTAwM2VkZXYsIFwiVGFnOiAlOHBoXFxuXCIsIGdzdzF4eF90YWcpO1xuK1x0XHRrZnJlZV9za2Ioc2tiKTtcbiBcdFx0cmV0dXJuIE5VTEw7XG4gXHR9XG4gXG5AQCAtOTAsNiArOTIsNyBAQCBzdGF0aWMgc3RydWN0IHNrX2J1ZmYgKmdzdzF4eF90YWdfcmN2KHN0cnVjdCBza19idWZmICpza2IsXG4gXHRpZiAoIXNrYi1cdTAwM2VkZXYpIHtcbiBcdFx0ZGV2X3dhcm5fcmF0ZWxpbWl0ZWQoXHUwMDI2ZGV2LVx1MDAzZWRldiwgXCJEcm9wcGluZyBwYWNrZXQgZHVlIHRvIGludmFsaWQgc291cmNlIHBvcnRcXG5cIik7XG4gXHRcdGRldl93YXJuX3JhdGVsaW1pdGVkKFx1MDAyNmRldi1cdTAwM2VkZXYsIFwiVGFnOiAlOHBoXFxuXCIsIGdzdzF4eF90YWcpO1xuK1x0XHRrZnJlZV9za2Ioc2tiKTtcbiBcdFx0cmV0dXJuIE5VTEw7XG4gXHR9XG4gXG5kaWZmIC0tZ2l0IGEvbmV0L2RzYS90YWdfbXhsODYyeHguYyBiL25ldC9kc2EvdGFnX214bDg2Mnh4LmNcbmluZGV4IDhkYWVmZWI4ZDQ5ZGZhLi44N2I4MGRkZjA5NDYzMiAxMDA2NDRcbi0tLSBhL25ldC9kc2EvdGFnX214bDg2Mnh4LmNcbisrKyBiL25ldC9kc2EvdGFnX214bDg2Mnh4LmNcbkBAIC02NCw2ICs2NCw3IEBAIHN0YXRpYyBzdHJ1Y3Qgc2tfYnVmZiAqbXhsODYyX3RhZ19yY3Yoc3RydWN0IHNrX2J1ZmYgKnNrYixcbiBcbiBcdGlmICh1bmxpa2VseSghcHNrYl9tYXlfcHVsbChza2IsIE1YTDg2Ml9IRUFERVJfTEVOKSkpIHtcbiBcdFx0ZGV2X3dhcm5fcmF0ZWxpbWl0ZWQoXHUwMDI2ZGV2LVx1MDAzZWRldiwgXCJDYW5ub3QgcHVsbCBTS0IsIHBhY2tldCBkcm9wcGVkXFxuXCIpO1xuK1x0XHRrZnJlZV9za2Ioc2tiKTtcbiBcdFx0cmV0dXJuIE5VTEw7XG4gXHR9XG4gXG5AQCAtNzMsNiArNzQsNyBAQCBzdGF0aWMgc3RydWN0IHNrX2J1ZmYgKm14bDg2Ml90YWdfcmN2KHN0cnVjdCBza19idWZmICpza2IsXG4gXHRcdGRldl93YXJuX3JhdGVsaW1pdGVkKFx1MDAyNmRldi1cdTAwM2VkZXYsXG4gXHRcdFx0XHQgICAgIFwiSW52YWxpZCBzcGVjaWFsIHRhZyBtYXJrZXIsIHBhY2tldCBkcm9wcGVkLCB0YWc6ICU4cGhcXG5cIixcbiBcdFx0XHRcdCAgICAgbXhsODYyX3RhZyk7XG4rXHRcdGtmcmVlX3NrYihza2IpO1xuIFx0XHRyZXR1cm4gTlVMTDtcbiBcdH1cbiBcbkBAIC04Myw2ICs4NSw3IEBAIHN0YXRpYyBzdHJ1Y3Qgc2tfYnVmZiAqbXhsODYyX3RhZ19yY3Yoc3RydWN0IHNrX2J1ZmYgKnNrYixcbiBcdFx0ZGV2X3dhcm5fcmF0ZWxpbWl0ZWQoXHUwMDI2ZGV2LVx1MDAzZWRldixcbiBcdFx0XHRcdCAgICAgXCJJbnZhbGlkIHNvdXJjZSBwb3J0LCBwYWNrZXQgZHJvcHBlZCwgdGFnOiAlOHBoXFxuXCIsXG4gXHRcdFx0XHQgICAgIG14bDg2Ml90YWcpO1xuK1x0XHRrZnJlZV9za2Ioc2tiKTtcbiBcdFx0cmV0dXJuIE5VTEw7XG4gXHR9XG4gXG5kaWZmIC0tZ2l0IGEvbmV0L2RzYS90YWdfbmV0Yy5jIGIvbmV0L2RzYS90YWdfbmV0Yy5jXG5pbmRleCBjY2VkZmUzYTgwYjY0ZC4uZGY3MmE2MTc5NmFkNWYgMTAwNjQ0XG4tLS0gYS9uZXQvZHNhL3RhZ19uZXRjLmNcbisrKyBiL25ldC9kc2EvdGFnX25ldGMuY1xuQEAgLTEzMSwxNCArMTMxLDEzIEBAIHN0YXRpYyBzdHJ1Y3Qgc2tfYnVmZiAqbmV0Y19yY3Yoc3RydWN0IHNrX2J1ZmYgKnNrYixcbiBcdGludCB0eXBlLCBzdWJ0eXBlO1xuIFxuIFx0aWYgKHVubGlrZWx5KCFwc2tiX21heV9wdWxsKHNrYiwgTkVUQ19UQUdfTUFYX0xFTikpKVxuLVx0XHRyZXR1cm4gTlVMTDtcbitcdFx0Z290byBlcnJfZnJlZV9za2I7XG4gXG4gXHR0YWdfY21uID0gZHNhX2V0eXBlX2hlYWRlcl9wb3Nfcngoc2tiKTtcbiBcdGlmIChudG9ocyh0YWdfY21uLVx1MDAzZXRwaWQpICE9IEVUSF9QX05YUF9ORVRDKSB7XG4gXHRcdGRldl93YXJuX3JhdGVsaW1pdGVkKFx1MDAyNm5kZXYtXHUwMDNlZGV2LCBcIlVua25vd24gVFBJRCAweCUwNHhcXG5cIixcbiBcdFx0XHRcdCAgICAgbnRvaHModGFnX2Ntbi1cdTAwM2V0cGlkKSk7XG4tXG4tXHRcdHJldHVybiBOVUxMO1xuK1x0XHRnb3RvIGVycl9mcmVlX3NrYjtcbiBcdH1cbiBcbiBcdGlmICh0YWdfY21uLVx1MDAzZXFvcyBcdTAwMjYgTkVUQ19UQUdfUVYpXG5AQCAtMTQ5LDE0ICsxNDgsMTMgQEAgc3RhdGljIHN0cnVjdCBza19idWZmICpuZXRjX3JjdihzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxuIFx0aWYgKCFzd19pZCkge1xuIFx0XHRkZXZfd2Fybl9yYXRlbGltaXRlZChcdTAwMjZuZGV2LVx1MDAzZWRldixcbiBcdFx0XHRcdCAgICAgXCJWRVBBIHN3aXRjaCBJRCBpcyBub3Qgc3VwcG9ydGVkIHlldFxcblwiKTtcbi1cbi1cdFx0cmV0dXJuIE5VTEw7XG4rXHRcdGdvdG8gZXJyX2ZyZWVfc2tiO1xuIFx0fVxuIFxuIFx0cG9ydCA9IEZJRUxEX0dFVChORVRDX1RBR19QT1JULCB0YWdfY21uLVx1MDAzZXN3aXRjaF9wb3J0KTtcbiBcdHNrYi1cdTAwM2VkZXYgPSBkc2FfY29uZHVpdF9maW5kX3VzZXIobmRldiwgc3dfaWQsIHBvcnQpO1xuIFx0aWYgKCFza2ItXHUwMDNlZGV2KVxuLVx0XHRyZXR1cm4gTlVMTDtcbitcdFx0Z290byBlcnJfZnJlZV9za2I7XG4gXG4gXHR0eXBlID0gRklFTERfR0VUKE5FVENfVEFHX1RZUEUsIHRhZ19jbW4tXHUwMDNldHlwZSk7XG4gXHRzdWJ0eXBlID0gRklFTERfR0VUKE5FVENfVEFHX1NVQlRZUEUsIHRhZ19jbW4tXHUwMDNldHlwZSk7XG5AQCAtMTY1LDExICsxNjMsMTEgQEAgc3RhdGljIHN0cnVjdCBza19idWZmICpuZXRjX3JjdihzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxuIFx0fSBlbHNlIGlmICh0eXBlID09IE5FVENfVEFHX1RPX0hPU1QpIHtcbiBcdFx0LyogQ3VycmVudGx5IG9ubHkgc3VidHlwZTAgc3VwcG9ydGVkICovXG4gXHRcdGlmIChzdWJ0eXBlICE9IE5FVENfVEFHX1RIX1NVQlRZUEUwKVxuLVx0XHRcdHJldHVybiBOVUxMO1xuK1x0XHRcdGdvdG8gZXJyX2ZyZWVfc2tiO1xuIFx0fSBlbHNlIHtcbiBcdFx0ZGV2X3dhcm5fcmF0ZWxpbWl0ZWQoXHUwMDI2bmRldi1cdTAwM2VkZXYsXG4gXHRcdFx0XHQgICAgIFwiVW5leHBlY3RlZCAgdGFnIHR5cGUgJWRcXG5cIiwgdHlwZSk7XG4tXHRcdHJldHVybiBOVUxMO1xuK1x0XHRnb3RvIGVycl9mcmVlX3NrYjtcbiBcdH1cbiBcbiBcdC8qIFJlbW92ZSBTd2l0Y2ggdGFnIGZyb20gdGhlIGZyYW1lICovXG5AQCAtMTc4LDYgKzE3NiwxMCBAQCBzdGF0aWMgc3RydWN0IHNrX2J1ZmYgKm5ldGNfcmN2KHN0cnVjdCBza19idWZmICpza2IsXG4gXHRkc2Ffc3RyaXBfZXR5cGVfaGVhZGVyKHNrYiwgdGFnX2xlbik7XG4gXG4gXHRyZXR1cm4gc2tiO1xuK1xuK2Vycl9mcmVlX3NrYjpcbitcdGtmcmVlX3NrYihza2IpO1xuK1x0cmV0dXJuIE5VTEw7XG4gfVxuIFxuIHN0YXRpYyB2b2lkIG5ldGNfZmxvd19kaXNzZWN0KGNvbnN0IHN0cnVjdCBza19idWZmICpza2IsIF9fYmUxNiAqcHJvdG8sXG5kaWZmIC0tZ2l0IGEvbmV0L2RzYS90YWdfb2NlbG90LmMgYi9uZXQvZHNhL3RhZ19vY2Vsb3QuY1xuaW5kZXggMzQwNWRlZjc5YzJkZWYuLmQyMDhjNzMyMmNkNjI2IDEwMDY0NFxuLS0tIGEvbmV0L2RzYS90YWdfb2NlbG90LmNcbisrKyBiL25ldC9kc2EvdGFnX29jZWxvdC5jXG5AQCAtMTA3LDE0ICsxMDcsMTYgQEAgc3RhdGljIHN0cnVjdCBza19idWZmICpvY2Vsb3RfcmN2KHN0cnVjdCBza19idWZmICpza2IsXG4gXHRvY2Vsb3RfeGZoX2dldF9yZXdfdmFsKGV4dHJhY3Rpb24sIFx1MDAyNnJld192YWwpO1xuIFxuIFx0c2tiLVx1MDAzZWRldiA9IGRzYV9jb25kdWl0X2ZpbmRfdXNlcihuZXRkZXYsIDAsIHNyY19wb3J0KTtcbi1cdGlmICghc2tiLVx1MDAzZWRldilcbitcdGlmICghc2tiLVx1MDAzZWRldikge1xuIFx0XHQvKiBUaGUgc3dpdGNoIHdpbGwgcmVmbGVjdCBiYWNrIHNvbWUgZnJhbWVzIHNlbnQgdGhyb3VnaFxuIFx0XHQgKiBzb2NrZXRzIG9wZW5lZCBvbiB0aGUgYmFyZSBEU0EgY29uZHVpdC4gVGhlc2Ugd2lsbCBjb21lIGJhY2tcbiBcdFx0ICogd2l0aCBzcmNfcG9ydCBlcXVhbCB0byB0aGUgaW5kZXggb2YgdGhlIENQVSBwb3J0LCBmb3Igd2hpY2hcbiBcdFx0ICogdGhlcmUgaXMgbm8gdXNlciByZWdpc3RlcmVkLiBTbyBkb24ndCBwcmludCBhbnkgZXJyb3JcbiBcdFx0ICogbWVzc2FnZSBoZXJlIChpZ25vcmUgYW5kIGRyb3AgdGhvc2UgZnJhbWVzKS5cbiBcdFx0ICovXG4rXHRcdGtmcmVlX3NrYihza2IpO1xuIFx0XHRyZXR1cm4gTlVMTDtcbitcdH1cbiBcbiBcdGRzYV9kZWZhdWx0X29mZmxvYWRfZndkX21hcmsoc2tiKTtcbiBcdHNrYi1cdTAwM2Vwcmlvcml0eSA9IHFvc19jbGFzcztcbmRpZmYgLS1naXQgYS9uZXQvZHNhL3RhZ19vY2Vsb3RfODAyMXEuYyBiL25ldC9kc2EvdGFnX29jZWxvdF84MDIxcS5jXG5pbmRleCBlODlkOTI1NGU5MGEzYS4uZjUwZjFjZDgzZjE2MWMgMTAwNjQ0XG4tLS0gYS9uZXQvZHNhL3RhZ19vY2Vsb3RfODAyMXEuY1xuKysrIGIvbmV0L2RzYS90YWdfb2NlbG90XzgwMjFxLmNcbkBAIC0zMywzMCArMzMsMzQgQEAgc3RhdGljIHN0cnVjdCBza19idWZmICpvY2Vsb3RfZGVmZXJfeG1pdChzdHJ1Y3QgZHNhX3BvcnQgKmRwLFxuIFx0eG1pdF93b3JrX2ZuID0gZGF0YS1cdTAwM2V4bWl0X3dvcmtfZm47XG4gXHR4bWl0X3dvcmtlciA9IHByaXYtXHUwMDNleG1pdF93b3JrZXI7XG4gXG4tXHRpZiAoIXhtaXRfd29ya19mbiB8fCAheG1pdF93b3JrZXIpXG4rXHRpZiAoIXhtaXRfd29ya19mbiB8fCAheG1pdF93b3JrZXIpIHtcbitcdFx0a2ZyZWVfc2tiKHNrYik7XG4gXHRcdHJldHVybiBOVUxMO1xuK1x0fVxuIFxuIFx0LyogUFRQIG92ZXIgSVAgcGFja2V0cyBuZWVkIFVEUCBjaGVja3N1bW1pbmcuIFdlIG1heSBoYXZlIGluaGVyaXRlZFxuIFx0ICogTkVUSUZfRl9IV19DU1VNIGZyb20gdGhlIERTQSBjb25kdWl0LCBidXQgdGhlc2UgcGFja2V0cyBhcmUgbm90IHNlbnRcbiBcdCAqIHRocm91Z2ggdGhlIERTQSBjb25kdWl0LCBzbyBjYWxjdWxhdGUgdGhlIGNoZWNrc3VtIGhlcmUuXG4gXHQgKi9cbi1cdGlmIChza2ItXHUwMDNlaXBfc3VtbWVkID09IENIRUNLU1VNX1BBUlRJQUwgXHUwMDI2XHUwMDI2IHNrYl9jaGVja3N1bV9oZWxwKHNrYikpXG4rXHRpZiAoc2tiLVx1MDAzZWlwX3N1bW1lZCA9PSBDSEVDS1NVTV9QQVJUSUFMIFx1MDAyNlx1MDAyNiBza2JfY2hlY2tzdW1faGVscChza2IpKSB7XG4rXHRcdGtmcmVlX3NrYihza2IpO1xuIFx0XHRyZXR1cm4gTlVMTDtcbitcdH1cbiBcbiBcdHhtaXRfd29yayA9IGt6YWxsb2Nfb2JqKCp4bWl0X3dvcmssIEdGUF9BVE9NSUMpO1xuLVx0aWYgKCF4bWl0X3dvcmspXG4rXHRpZiAoIXhtaXRfd29yaykge1xuK1x0XHRrZnJlZV9za2Ioc2tiKTtcbiBcdFx0cmV0dXJuIE5VTEw7XG4rXHR9XG4gXG4gXHQvKiBDYWxscyBmZWxpeF9wb3J0X2RlZmVycmVkX3htaXQgaW4gZmVsaXguYyAqL1xuIFx0a3RocmVhZF9pbml0X3dvcmsoXHUwMDI2eG1pdF93b3JrLVx1MDAzZXdvcmssIHhtaXRfd29ya19mbik7XG4tXHQvKiBJbmNyZWFzZSByZWZjb3VudCBzbyB0aGUga2ZyZWVfc2tiIGluIGRzYV91c2VyX3htaXRcbi1cdCAqIHdvbid0IHJlYWxseSBmcmVlIHRoZSBwYWNrZXQuXG4tXHQgKi9cbiBcdHhtaXRfd29yay1cdTAwM2VkcCA9IGRwO1xuIFx0eG1pdF93b3JrLVx1MDAzZXNrYiA9IHNrYl9nZXQoc2tiKTtcbiBcbiBcdGt0aHJlYWRfcXVldWVfd29yayh4bWl0X3dvcmtlciwgXHUwMDI2eG1pdF93b3JrLVx1MDAzZXdvcmspO1xuIFxuK1x0a2ZyZWVfc2tiKHNrYik7XG4gXHRyZXR1cm4gTlVMTDtcbiB9XG4gXG5AQCAtODQsOCArODgsMTAgQEAgc3RhdGljIHN0cnVjdCBza19idWZmICpvY2Vsb3RfcmN2KHN0cnVjdCBza19idWZmICpza2IsXG4gXHRkc2FfODAyMXFfcmN2KHNrYiwgXHUwMDI2c3JjX3BvcnQsIFx1MDAyNnN3aXRjaF9pZCwgTlVMTCwgTlVMTCk7XG4gXG4gXHRza2ItXHUwMDNlZGV2ID0gZHNhX2NvbmR1aXRfZmluZF91c2VyKG5ldGRldiwgc3dpdGNoX2lkLCBzcmNfcG9ydCk7XG4tXHRpZiAoIXNrYi1cdTAwM2VkZXYpXG4rXHRpZiAoIXNrYi1cdTAwM2VkZXYpIHtcbitcdFx0a2ZyZWVfc2tiKHNrYik7XG4gXHRcdHJldHVybiBOVUxMO1xuK1x0fVxuIFxuIFx0ZHNhX2RlZmF1bHRfb2ZmbG9hZF9md2RfbWFyayhza2IpO1xuIFxuZGlmZiAtLWdpdCBhL25ldC9kc2EvdGFnX3FjYS5jIGIvbmV0L2RzYS90YWdfcWNhLmNcbmluZGV4IDllM2I0MjllOGIzNjI1Li41MTA3OTJmYmZhOTJkZCAxMDA2NDRcbi0tLSBhL25ldC9kc2EvdGFnX3FjYS5jXG4rKysgYi9uZXQvZHNhL3RhZ19xY2EuY1xuQEAgLTQ2LDE2ICs0NiwyMCBAQCBzdGF0aWMgc3RydWN0IHNrX2J1ZmYgKnFjYV90YWdfcmN2KHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXG4gXG4gXHR0YWdnZXJfZGF0YSA9IGRzLVx1MDAzZXRhZ2dlcl9kYXRhO1xuIFxuLVx0aWYgKHVubGlrZWx5KCFwc2tiX21heV9wdWxsKHNrYiwgUUNBX0hEUl9MRU4pKSlcbitcdGlmICh1bmxpa2VseSghcHNrYl9tYXlfcHVsbChza2IsIFFDQV9IRFJfTEVOKSkpIHtcbitcdFx0a2ZyZWVfc2tiKHNrYik7XG4gXHRcdHJldHVybiBOVUxMO1xuK1x0fVxuIFxuIFx0cGhkciA9IGRzYV9ldHlwZV9oZWFkZXJfcG9zX3J4KHNrYik7XG4gXHRoZHIgPSBudG9ocygqcGhkcik7XG4gXG4gXHQvKiBNYWtlIHN1cmUgdGhlIHZlcnNpb24gaXMgY29ycmVjdCAqL1xuIFx0dmVyID0gRklFTERfR0VUKFFDQV9IRFJfUkVDVl9WRVJTSU9OLCBoZHIpO1xuLVx0aWYgKHVubGlrZWx5KHZlciAhPSBRQ0FfSERSX1ZFUlNJT04pKVxuK1x0aWYgKHVubGlrZWx5KHZlciAhPSBRQ0FfSERSX1ZFUlNJT04pKSB7XG4rXHRcdGtmcmVlX3NrYihza2IpO1xuIFx0XHRyZXR1cm4gTlVMTDtcbitcdH1cbiBcbiBcdC8qIEdldCBwayB0eXBlICovXG4gXHRwa190eXBlID0gRklFTERfR0VUKFFDQV9IRFJfUkVDVl9UWVBFLCBoZHIpO1xuQEAgLTY0LDYgKzY4LDcgQEAgc3RhdGljIHN0cnVjdCBza19idWZmICpxY2FfdGFnX3JjdihzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxuIFx0aWYgKHBrX3R5cGUgPT0gUUNBX0hEUl9SRUNWX1RZUEVfUldfUkVHX0FDSykge1xuIFx0XHRpZiAobGlrZWx5KHRhZ2dlcl9kYXRhLVx1MDAzZXJ3X3JlZ19hY2tfaGFuZGxlcikpXG4gXHRcdFx0dGFnZ2VyX2RhdGEtXHUwMDNlcndfcmVnX2Fja19oYW5kbGVyKGRzLCBza2IpO1xuK1x0XHRrZnJlZV9za2Ioc2tiKTtcbiBcdFx0cmV0dXJuIE5VTEw7XG4gXHR9XG4gXG5AQCAtNzEsNiArNzYsNyBAQCBzdGF0aWMgc3RydWN0IHNrX2J1ZmYgKnFjYV90YWdfcmN2KHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXG4gXHRpZiAocGtfdHlwZSA9PSBRQ0FfSERSX1JFQ1ZfVFlQRV9NSUIpIHtcbiBcdFx0aWYgKGxpa2VseSh0YWdnZXJfZGF0YS1cdTAwM2VtaWJfYXV0b2Nhc3RfaGFuZGxlcikpXG4gXHRcdFx0dGFnZ2VyX2RhdGEtXHUwMDNlbWliX2F1dG9jYXN0X2hhbmRsZXIoZHMsIHNrYik7XG4rXHRcdGtmcmVlX3NrYihza2IpO1xuIFx0XHRyZXR1cm4gTlVMTDtcbiBcdH1cbiBcbkBAIC03OCw4ICs4NCwxMCBAQCBzdGF0aWMgc3RydWN0IHNrX2J1ZmYgKnFjYV90YWdfcmN2KHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXG4gXHRwb3J0ID0gRklFTERfR0VUKFFDQV9IRFJfUkVDVl9TT1VSQ0VfUE9SVCwgaGRyKTtcbiBcbiBcdHNrYi1cdTAwM2VkZXYgPSBkc2FfY29uZHVpdF9maW5kX3VzZXIoZGV2LCAwLCBwb3J0KTtcbi1cdGlmICghc2tiLVx1MDAzZWRldilcbitcdGlmICghc2tiLVx1MDAzZWRldikge1xuK1x0XHRrZnJlZV9za2Ioc2tiKTtcbiBcdFx0cmV0dXJuIE5VTEw7XG4rXHR9XG4gXG4gXHQvKiBSZW1vdmUgUUNBIHRhZyBhbmQgcmVjYWxjdWxhdGUgY2hlY2tzdW0gKi9cbiBcdHNrYl9wdWxsX3Jjc3VtKHNrYiwgUUNBX0hEUl9MRU4pO1xuZGlmZiAtLWdpdCBhL25ldC9kc2EvdGFnX3J0bDRfYS5jIGIvbmV0L2RzYS90YWdfcnRsNF9hLmNcbmluZGV4IDNjYzYzZWFjZmEwMzUyLi41OTBlYTNiOTIxYzlkOSAxMDA2NDRcbi0tLSBhL25ldC9kc2EvdGFnX3J0bDRfYS5jXG4rKysgYi9uZXQvZHNhL3RhZ19ydGw0X2EuY1xuQEAgLTQxLDcgKzQxLDcgQEAgc3RhdGljIHN0cnVjdCBza19idWZmICpydGw0YV90YWdfeG1pdChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxuIFx0dTE2IG91dDtcbiBcbiBcdC8qIFBhZCBvdXQgdG8gYXQgbGVhc3QgNjAgYnl0ZXMgKi9cbi1cdGlmICh1bmxpa2VseShfX3NrYl9wdXRfcGFkdG8oc2tiLCBFVEhfWkxFTiwgZmFsc2UpKSlcbitcdGlmICh1bmxpa2VseShldGhfc2tiX3BhZChza2IpKSlcbiBcdFx0cmV0dXJuIE5VTEw7XG4gXG4gXHRuZXRkZXZfZGJnKGRldiwgXCJhZGQgcmVhbHRlayB0YWcgdG8gcGFja2FnZSB0byBwb3J0ICVkXFxuXCIsXG5AQCAtNzUsOCArNzUsMTAgQEAgc3RhdGljIHN0cnVjdCBza19idWZmICpydGw0YV90YWdfcmN2KHN0cnVjdCBza19idWZmICpza2IsXG4gXHR1OCBwcm90O1xuIFx0dTggcG9ydDtcbiBcbi1cdGlmICh1bmxpa2VseSghcHNrYl9tYXlfcHVsbChza2IsIFJUTDRfQV9IRFJfTEVOKSkpXG4rXHRpZiAodW5saWtlbHkoIXBza2JfbWF5X3B1bGwoc2tiLCBSVEw0X0FfSERSX0xFTikpKSB7XG4rXHRcdGtmcmVlX3NrYihza2IpO1xuIFx0XHRyZXR1cm4gTlVMTDtcbitcdH1cbiBcbiBcdHRhZyA9IGRzYV9ldHlwZV9oZWFkZXJfcG9zX3J4KHNrYik7XG4gXHRwID0gKF9fYmUxNiAqKXRhZztcbkBAIC05Miw2ICs5NCw3IEBAIHN0YXRpYyBzdHJ1Y3Qgc2tfYnVmZiAqcnRsNGFfdGFnX3JjdihzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxuIFx0cHJvdCA9IChwcm90cG9ydCBcdTAwM2VcdTAwM2UgUlRMNF9BX1BST1RPQ09MX1NISUZUKSBcdTAwMjYgMHgwZjtcbiBcdGlmIChwcm90ICE9IFJUTDRfQV9QUk9UT0NPTF9SVEw4MzY2UkIpIHtcbiBcdFx0bmV0ZGV2X2VycihkZXYsIFwidW5rbm93biByZWFsdGVrIHByb3RvY29sIDB4JTAxeFxcblwiLCBwcm90KTtcbitcdFx0a2ZyZWVfc2tiKHNrYik7XG4gXHRcdHJldHVybiBOVUxMO1xuIFx0fVxuIFx0cG9ydCA9IHByb3Rwb3J0IFx1MDAyNiAweGZmO1xuQEAgLTk5LDYgKzEwMiw3IEBAIHN0YXRpYyBzdHJ1Y3Qgc2tfYnVmZiAqcnRsNGFfdGFnX3JjdihzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxuIFx0c2tiLVx1MDAzZWRldiA9IGRzYV9jb25kdWl0X2ZpbmRfdXNlcihkZXYsIDAsIHBvcnQpO1xuIFx0aWYgKCFza2ItXHUwMDNlZGV2KSB7XG4gXHRcdG5ldGRldl9kYmcoZGV2LCBcImNvdWxkIG5vdCBmaW5kIHVzZXIgZm9yIHBvcnQgJWRcXG5cIiwgcG9ydCk7XG4rXHRcdGtmcmVlX3NrYihza2IpO1xuIFx0XHRyZXR1cm4gTlVMTDtcbiBcdH1cbiBcbmRpZmYgLS1naXQgYS9uZXQvZHNhL3RhZ19ydGw4XzQuYyBiL25ldC9kc2EvdGFnX3J0bDhfNC5jXG5pbmRleCA4NTJjNmI4ODA3OWExMy4uNGRhM2JlZWJlZjc1ZTIgMTAwNjQ0XG4tLS0gYS9uZXQvZHNhL3RhZ19ydGw4XzQuY1xuKysrIGIvbmV0L2RzYS90YWdfcnRsOF80LmNcbkBAIC0xNDMsOCArMTQzLDEwIEBAIHN0YXRpYyBzdHJ1Y3Qgc2tfYnVmZiAqcnRsOF80dF90YWdfeG1pdChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxuIFx0LyogQ2FsY3VsYXRlIHRoZSBjaGVja3N1bSBoZXJlIGlmIG5vdCBkb25lIHlldCBhcyB0cmFpbGluZyB0YWdzIHdpbGxcbiBcdCAqIGJyZWFrIGVpdGhlciBzb2Z0d2FyZSBvciBoYXJkd2FyZSBiYXNlZCBjaGVja3N1bVxuIFx0ICovXG4tXHRpZiAoc2tiLVx1MDAzZWlwX3N1bW1lZCA9PSBDSEVDS1NVTV9QQVJUSUFMIFx1MDAyNlx1MDAyNiBza2JfY2hlY2tzdW1faGVscChza2IpKVxuK1x0aWYgKHNrYi1cdTAwM2VpcF9zdW1tZWQgPT0gQ0hFQ0tTVU1fUEFSVElBTCBcdTAwMjZcdTAwMjYgc2tiX2NoZWNrc3VtX2hlbHAoc2tiKSkge1xuK1x0XHRrZnJlZV9za2Ioc2tiKTtcbiBcdFx0cmV0dXJuIE5VTEw7XG4rXHR9XG4gXG4gXHRydGw4XzRfd3JpdGVfdGFnKHNrYiwgZGV2LCBza2JfcHV0KHNrYiwgUlRMOF80X1RBR19MRU4pKTtcbiBcbkBAIC0yMDEsMTEgKzIwMywxNSBAQCBzdGF0aWMgaW50IHJ0bDhfNF9yZWFkX3RhZyhzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxuIHN0YXRpYyBzdHJ1Y3Qgc2tfYnVmZiAqcnRsOF80X3RhZ19yY3Yoc3RydWN0IHNrX2J1ZmYgKnNrYixcbiBcdFx0XHRcdCAgICAgIHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXG4ge1xuLVx0aWYgKHVubGlrZWx5KCFwc2tiX21heV9wdWxsKHNrYiwgUlRMOF80X1RBR19MRU4pKSlcbitcdGlmICh1bmxpa2VseSghcHNrYl9tYXlfcHVsbChza2IsIFJUTDhfNF9UQUdfTEVOKSkpIHtcbitcdFx0a2ZyZWVfc2tiKHNrYik7XG4gXHRcdHJldHVybiBOVUxMO1xuK1x0fVxuIFxuLVx0aWYgKHVubGlrZWx5KHJ0bDhfNF9yZWFkX3RhZyhza2IsIGRldiwgZHNhX2V0eXBlX2hlYWRlcl9wb3Nfcngoc2tiKSkpKVxuK1x0aWYgKHVubGlrZWx5KHJ0bDhfNF9yZWFkX3RhZyhza2IsIGRldiwgZHNhX2V0eXBlX2hlYWRlcl9wb3Nfcngoc2tiKSkpKSB7XG4rXHRcdGtmcmVlX3NrYihza2IpO1xuIFx0XHRyZXR1cm4gTlVMTDtcbitcdH1cbiBcbiBcdC8qIFJlbW92ZSB0YWcgYW5kIHJlY2FsY3VsYXRlIGNoZWNrc3VtICovXG4gXHRza2JfcHVsbF9yY3N1bShza2IsIFJUTDhfNF9UQUdfTEVOKTtcbkBAIC0yMTgsMTQgKzIyNCwyMCBAQCBzdGF0aWMgc3RydWN0IHNrX2J1ZmYgKnJ0bDhfNF90YWdfcmN2KHN0cnVjdCBza19idWZmICpza2IsXG4gc3RhdGljIHN0cnVjdCBza19idWZmICpydGw4XzR0X3RhZ19yY3Yoc3RydWN0IHNrX2J1ZmYgKnNrYixcbiBcdFx0XHRcdCAgICAgICBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxuIHtcbi1cdGlmIChza2JfbGluZWFyaXplKHNrYikpXG4rXHRpZiAoc2tiX2xpbmVhcml6ZShza2IpKSB7XG4rXHRcdGtmcmVlX3NrYihza2IpO1xuIFx0XHRyZXR1cm4gTlVMTDtcbitcdH1cbiBcbi1cdGlmICh1bmxpa2VseShydGw4XzRfcmVhZF90YWcoc2tiLCBkZXYsIHNrYl90YWlsX3BvaW50ZXIoc2tiKSAtIFJUTDhfNF9UQUdfTEVOKSkpXG4rXHRpZiAodW5saWtlbHkocnRsOF80X3JlYWRfdGFnKHNrYiwgZGV2LCBza2JfdGFpbF9wb2ludGVyKHNrYikgLSBSVEw4XzRfVEFHX0xFTikpKSB7XG4rXHRcdGtmcmVlX3NrYihza2IpO1xuIFx0XHRyZXR1cm4gTlVMTDtcbitcdH1cbiBcbi1cdGlmIChwc2tiX3RyaW1fcmNzdW0oc2tiLCBza2ItXHUwMDNlbGVuIC0gUlRMOF80X1RBR19MRU4pKVxuK1x0aWYgKHBza2JfdHJpbV9yY3N1bShza2IsIHNrYi1cdTAwM2VsZW4gLSBSVEw4XzRfVEFHX0xFTikpIHtcbitcdFx0a2ZyZWVfc2tiKHNrYik7XG4gXHRcdHJldHVybiBOVUxMO1xuK1x0fVxuIFxuIFx0cmV0dXJuIHNrYjtcbiB9XG5kaWZmIC0tZ2l0IGEvbmV0L2RzYS90YWdfcnpuMV9hNXBzdy5jIGIvbmV0L2RzYS90YWdfcnpuMV9hNXBzdy5jXG5pbmRleCAxMDk5NGIzNDcwZjY3YS4uNzM0OTEwMTU2ZGMzMzMgMTAwNjQ0XG4tLS0gYS9uZXQvZHNhL3RhZ19yem4xX2E1cHN3LmNcbisrKyBiL25ldC9kc2EvdGFnX3J6bjFfYTVwc3cuY1xuQEAgLTQ4LDcgKzQ4LDcgQEAgc3RhdGljIHN0cnVjdCBza19idWZmICphNXBzd190YWdfeG1pdChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgbmV0X2RldmljZSAqZGVcbiBcdCAqIGxlYXN0IDYwIGJ5dGVzIG90aGVyd2lzZSB0aGV5IHdpbGwgYmUgZGlzY2FyZGVkIHdoZW4gdGhleSBlbnRlciB0aGVcbiBcdCAqIHN3aXRjaCBwb3J0IGxvZ2ljLlxuIFx0ICovXG4tXHRpZiAoX19za2JfcHV0X3BhZHRvKHNrYiwgRVRIX1pMRU4sIGZhbHNlKSlcbitcdGlmIChldGhfc2tiX3BhZChza2IpKVxuIFx0XHRyZXR1cm4gTlVMTDtcbiBcbiBcdC8qIHByb3ZpZGUgJ0E1UFNXX1RBR19MRU4nIGJ5dGVzIGFkZGl0aW9uYWwgc3BhY2UgKi9cbkBAIC03Nyw2ICs3Nyw3IEBAIHN0YXRpYyBzdHJ1Y3Qgc2tfYnVmZiAqYTVwc3dfdGFnX3JjdihzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxuIFx0aWYgKHVubGlrZWx5KCFwc2tiX21heV9wdWxsKHNrYiwgQTVQU1dfVEFHX0xFTikpKSB7XG4gXHRcdGRldl93YXJuX3JhdGVsaW1pdGVkKFx1MDAyNmRldi1cdTAwM2VkZXYsXG4gXHRcdFx0XHQgICAgIFwiRHJvcHBpbmcgcGFja2V0LCBjYW5ub3QgcHVsbFxcblwiKTtcbitcdFx0a2ZyZWVfc2tiKHNrYik7XG4gXHRcdHJldHVybiBOVUxMO1xuIFx0fVxuIFxuQEAgLTg0LDE0ICs4NSwxNyBAQCBzdGF0aWMgc3RydWN0IHNrX2J1ZmYgKmE1cHN3X3RhZ19yY3Yoc3RydWN0IHNrX2J1ZmYgKnNrYixcbiBcbiBcdGlmICh0YWctXHUwMDNlY3RybF90YWcgIT0gaHRvbnMoRVRIX1BfRFNBX0E1UFNXKSkge1xuIFx0XHRkZXZfd2Fybl9yYXRlbGltaXRlZChcdTAwMjZkZXYtXHUwMDNlZGV2LCBcIkRyb3BwaW5nIHBhY2tldCBkdWUgdG8gaW52YWxpZCBUQUcgbWFya2VyXFxuXCIpO1xuK1x0XHRrZnJlZV9za2Ioc2tiKTtcbiBcdFx0cmV0dXJuIE5VTEw7XG4gXHR9XG4gXG4gXHRwb3J0ID0gRklFTERfR0VUKEE1UFNXX0NUUkxfREFUQV9QT1JULCBudG9ocyh0YWctXHUwMDNlY3RybF9kYXRhKSk7XG4gXG4gXHRza2ItXHUwMDNlZGV2ID0gZHNhX2NvbmR1aXRfZmluZF91c2VyKGRldiwgMCwgcG9ydCk7XG4tXHRpZiAoIXNrYi1cdTAwM2VkZXYpXG4rXHRpZiAoIXNrYi1cdTAwM2VkZXYpIHtcbitcdFx0a2ZyZWVfc2tiKHNrYik7XG4gXHRcdHJldHVybiBOVUxMO1xuK1x0fVxuIFxuIFx0c2tiX3B1bGxfcmNzdW0oc2tiLCBBNVBTV19UQUdfTEVOKTtcbiBcdGRzYV9zdHJpcF9ldHlwZV9oZWFkZXIoc2tiLCBBNVBTV19UQUdfTEVOKTtcbmRpZmYgLS1naXQgYS9uZXQvZHNhL3RhZ19zamExMTA1LmMgYi9uZXQvZHNhL3RhZ19zamExMTA1LmNcbmluZGV4IGRlNmQ0Y2U4NjY4YmUxLi5iZmUxZjc0NmY1NWJlNSAxMDA2NDRcbi0tLSBhL25ldC9kc2EvdGFnX3NqYTExMDUuY1xuKysrIGIvbmV0L2RzYS90YWdfc2phMTEwNS5jXG5AQCAtMTQ5LDE5ICsxNDksMjAgQEAgc3RhdGljIHN0cnVjdCBza19idWZmICpzamExMTA1X2RlZmVyX3htaXQoc3RydWN0IGRzYV9wb3J0ICpkcCxcbiBcdHhtaXRfd29ya19mbiA9IHRhZ2dlcl9kYXRhLVx1MDAzZXhtaXRfd29ya19mbjtcbiBcdHhtaXRfd29ya2VyID0gcHJpdi1cdTAwM2V4bWl0X3dvcmtlcjtcbiBcbi1cdGlmICgheG1pdF93b3JrX2ZuIHx8ICF4bWl0X3dvcmtlcilcbitcdGlmICgheG1pdF93b3JrX2ZuIHx8ICF4bWl0X3dvcmtlcikge1xuK1x0XHRrZnJlZV9za2Ioc2tiKTtcbiBcdFx0cmV0dXJuIE5VTEw7XG4rXHR9XG4gXG4gXHR4bWl0X3dvcmsgPSBremFsbG9jX29iaigqeG1pdF93b3JrLCBHRlBfQVRPTUlDKTtcbi1cdGlmICgheG1pdF93b3JrKVxuK1x0aWYgKCF4bWl0X3dvcmspIHtcbitcdFx0a2ZyZWVfc2tiKHNrYik7XG4gXHRcdHJldHVybiBOVUxMO1xuK1x0fVxuIFxuIFx0a3RocmVhZF9pbml0X3dvcmsoXHUwMDI2eG1pdF93b3JrLVx1MDAzZXdvcmssIHhtaXRfd29ya19mbik7XG4tXHQvKiBJbmNyZWFzZSByZWZjb3VudCBzbyB0aGUga2ZyZWVfc2tiIGluIGRzYV91c2VyX3htaXRcbi1cdCAqIHdvbid0IHJlYWxseSBmcmVlIHRoZSBwYWNrZXQuXG4tXHQgKi9cbiBcdHhtaXRfd29yay1cdTAwM2VkcCA9IGRwO1xuLVx0eG1pdF93b3JrLVx1MDAzZXNrYiA9IHNrYl9nZXQoc2tiKTtcbitcdHhtaXRfd29yay1cdTAwM2Vza2IgPSBza2I7XG4gXG4gXHRrdGhyZWFkX3F1ZXVlX3dvcmsoeG1pdF93b3JrZXIsIFx1MDAyNnhtaXRfd29yay1cdTAwM2V3b3JrKTtcbiBcbkBAIC00MDEsMTAgKzQwMiw3IEBAIHN0YXRpYyBzdHJ1Y3Qgc2tfYnVmZlxuIFx0XHRcdGtmcmVlX3NrYihwcml2LVx1MDAzZXN0YW1wYWJsZV9za2IpO1xuIFx0XHR9XG4gXG4tXHRcdC8qIEhvbGQgYSByZWZlcmVuY2UgdG8gYXZvaWQgZHNhX3N3aXRjaF9yY3Zcbi1cdFx0ICogZnJvbSBmcmVlaW5nIHRoZSBza2IuXG4tXHRcdCAqL1xuLVx0XHRwcml2LVx1MDAzZXN0YW1wYWJsZV9za2IgPSBza2JfZ2V0KHNrYik7XG4rXHRcdHByaXYtXHUwMDNlc3RhbXBhYmxlX3NrYiA9IHNrYjtcbiBcdFx0c3Bpbl91bmxvY2soXHUwMDI2cHJpdi1cdTAwM2VtZXRhX2xvY2spO1xuIFxuIFx0XHQvKiBUZWxsIERTQSB3ZSBnb3Qgbm90aGluZyAqL1xuQEAgLTQzNiw2ICs0MzQsNyBAQCBzdGF0aWMgc3RydWN0IHNrX2J1ZmZcbiBcdFx0XHRkZXZfZXJyX3JhdGVsaW1pdGVkKGRzLVx1MDAzZWRldixcbiBcdFx0XHRcdFx0ICAgIFwiVW5leHBlY3RlZCBtZXRhIGZyYW1lXFxuXCIpO1xuIFx0XHRcdHNwaW5fdW5sb2NrKFx1MDAyNnByaXYtXHUwMDNlbWV0YV9sb2NrKTtcbitcdFx0XHRrZnJlZV9za2Ioc2tiKTtcbiBcdFx0XHRyZXR1cm4gTlVMTDtcbiBcdFx0fVxuIFxuQEAgLTQ0Myw2ICs0NDIsNyBAQCBzdGF0aWMgc3RydWN0IHNrX2J1ZmZcbiBcdFx0XHRkZXZfZXJyX3JhdGVsaW1pdGVkKGRzLVx1MDAzZWRldixcbiBcdFx0XHRcdFx0ICAgIFwiTWV0YSBmcmFtZSBvbiB3cm9uZyBwb3J0XFxuXCIpO1xuIFx0XHRcdHNwaW5fdW5sb2NrKFx1MDAyNnByaXYtXHUwMDNlbWV0YV9sb2NrKTtcbitcdFx0XHRrZnJlZV9za2Ioc2tiKTtcbiBcdFx0XHRyZXR1cm4gTlVMTDtcbiBcdFx0fVxuIFxuQEAgLTUwMSwxOCArNTAxLDIxIEBAIHN0YXRpYyBzdHJ1Y3Qgc2tfYnVmZiAqc2phMTEwNV9yY3Yoc3RydWN0IHNrX2J1ZmYgKnNrYixcbiBcdC8qIE5vcm1hbCBkYXRhIHBsYW5lIHRyYWZmaWMgYW5kIGxpbmstbG9jYWwgZnJhbWVzIGFyZSB0YWdnZWQgd2l0aFxuIFx0ICogYSB0YWdfODAyMXEgVkxBTiB3aGljaCB3ZSBoYXZlIHRvIHN0cmlwXG4gXHQgKi9cbi1cdGlmIChzamExMTA1X3NrYl9oYXNfdGFnXzgwMjFxKHNrYikpXG4rXHRpZiAoc2phMTEwNV9za2JfaGFzX3RhZ184MDIxcShza2IpKSB7XG4gXHRcdGRzYV84MDIxcV9yY3Yoc2tiLCBcdTAwMjZzb3VyY2VfcG9ydCwgXHUwMDI2c3dpdGNoX2lkLCBcdTAwMjZ2YmlkLCBcdTAwMjZ2aWQpO1xuLVx0ZWxzZSBpZiAoc291cmNlX3BvcnQgPT0gLTEgXHUwMDI2XHUwMDI2IHN3aXRjaF9pZCA9PSAtMSlcbitcdH0gZWxzZSBpZiAoc291cmNlX3BvcnQgPT0gLTEgXHUwMDI2XHUwMDI2IHN3aXRjaF9pZCA9PSAtMSkge1xuIFx0XHQvKiBQYWNrZXRzIHdpdGggbm8gc291cmNlIGluZm9ybWF0aW9uIGhhdmUgbm8gY2hhbmNlIG9mXG4gXHRcdCAqIGdldHRpbmcgYWNjZXB0ZWQsIGRyb3AgdGhlbSBzdHJhaWdodCBhd2F5LlxuIFx0XHQgKi9cbitcdFx0a2ZyZWVfc2tiKHNrYik7XG4gXHRcdHJldHVybiBOVUxMO1xuK1x0fVxuIFxuIFx0c2tiLVx1MDAzZWRldiA9IGRzYV90YWdfODAyMXFfZmluZF91c2VyKG5ldGRldiwgc291cmNlX3BvcnQsIHN3aXRjaF9pZCxcbiBcdFx0XHRcdFx0ICAgdmlkLCB2YmlkKTtcbiBcdGlmICghc2tiLVx1MDAzZWRldikge1xuIFx0XHRuZXRkZXZfd2FybihuZXRkZXYsIFwiQ291bGRuJ3QgZGVjb2RlIHNvdXJjZSBwb3J0XFxuXCIpO1xuK1x0XHRrZnJlZV9za2Ioc2tiKTtcbiBcdFx0cmV0dXJuIE5VTEw7XG4gXHR9XG4gXG5AQCAtNTM5LDEyICs1NDIsMTUgQEAgc3RhdGljIHN0cnVjdCBza19idWZmICpzamExMTEwX3Jjdl9tZXRhKHN0cnVjdCBza19idWZmICpza2IsIHUxNiByeF9oZWFkZXIpXG4gXHRpZiAoIWRzKSB7XG4gXHRcdG5ldF9lcnJfcmF0ZWxpbWl0ZWQoXCIlczogY2Fubm90IGZpbmQgc3dpdGNoIGlkICVkXFxuXCIsXG4gXHRcdFx0XHQgICAgY29uZHVpdC1cdTAwM2VuYW1lLCBzd2l0Y2hfaWQpO1xuK1x0XHRrZnJlZV9za2Ioc2tiKTtcbiBcdFx0cmV0dXJuIE5VTEw7XG4gXHR9XG4gXG4gXHR0YWdnZXJfZGF0YSA9IHNqYTExMDVfdGFnZ2VyX2RhdGEoZHMpO1xuLVx0aWYgKCF0YWdnZXJfZGF0YS1cdTAwM2VtZXRhX3RzdGFtcF9oYW5kbGVyKVxuK1x0aWYgKCF0YWdnZXJfZGF0YS1cdTAwM2VtZXRhX3RzdGFtcF9oYW5kbGVyKSB7XG4rXHRcdGtmcmVlX3NrYihza2IpO1xuIFx0XHRyZXR1cm4gTlVMTDtcbitcdH1cbiBcbiBcdGZvciAoaSA9IDA7IGkgXHUwMDNjPSBuX3RzOyBpKyspIHtcbiBcdFx0dTggdHNfaWQsIHNvdXJjZV9wb3J0LCBkaXI7XG5AQCAtNTYyLDYgKzU2OCw3IEBAIHN0YXRpYyBzdHJ1Y3Qgc2tfYnVmZiAqc2phMTExMF9yY3ZfbWV0YShzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCB1MTYgcnhfaGVhZGVyKVxuIFx0fVxuIFxuIFx0LyogRGlzY2FyZCB0aGUgbWV0YSBmcmFtZSwgd2UndmUgY29uc3VtZWQgdGhlIHRpbWVzdGFtcHMgaXQgY29udGFpbmVkICovXG4rXHRrZnJlZV9za2Ioc2tiKTtcbiBcdHJldHVybiBOVUxMO1xuIH1cbiBcbkBAIC01NzIsOCArNTc5LDEwIEBAIHN0YXRpYyBzdHJ1Y3Qgc2tfYnVmZiAqc2phMTExMF9yY3ZfaW5iYW5kX2NvbnRyb2xfZXh0ZW5zaW9uKHN0cnVjdCBza19idWZmICpza2IsXG4ge1xuIFx0dTE2IHJ4X2hlYWRlcjtcbiBcbi1cdGlmICh1bmxpa2VseSghcHNrYl9tYXlfcHVsbChza2IsIFNKQTExMTBfSEVBREVSX0xFTikpKVxuK1x0aWYgKHVubGlrZWx5KCFwc2tiX21heV9wdWxsKHNrYiwgU0pBMTExMF9IRUFERVJfTEVOKSkpIHtcbitcdFx0a2ZyZWVfc2tiKHNrYik7XG4gXHRcdHJldHVybiBOVUxMO1xuK1x0fVxuIFxuIFx0Lyogc2tiLVx1MDAzZWRhdGEgcG9pbnRzIHRvIHNrYl9tYWNfaGVhZGVyKHNrYikgKyBFVEhfSExFTiwgd2hpY2ggaXMgZXhhY3RseVxuIFx0ICogd2hhdCB3ZSBuZWVkIGJlY2F1c2UgdGhlIGNhbGxlciBoYXMgY2hlY2tlZCB0aGUgRXRoZXJUeXBlICh3aGljaCBpc1xuQEAgLTYwOSw4ICs2MTgsMTAgQEAgc3RhdGljIHN0cnVjdCBza19idWZmICpzamExMTEwX3Jjdl9pbmJhbmRfY29udHJvbF9leHRlbnNpb24oc3RydWN0IHNrX2J1ZmYgKnNrYixcbiBcdFx0ICogcGFkZGluZyBhbmQgdHJhaWxlciB3ZSBuZWVkIHRvIGFjY291bnQgZm9yIHRoZSBmYWN0IHRoYXRcbiBcdFx0ICogc2tiLVx1MDAzZWRhdGEgcG9pbnRzIHRvIHNrYl9tYWNfaGVhZGVyKHNrYikgKyBFVEhfSExFTi5cbiBcdFx0ICovXG4tXHRcdGlmIChwc2tiX3RyaW1fcmNzdW0oc2tiLCBzdGFydF9vZl9wYWRkaW5nIC0gRVRIX0hMRU4pKVxuK1x0XHRpZiAocHNrYl90cmltX3Jjc3VtKHNrYiwgc3RhcnRfb2ZfcGFkZGluZyAtIEVUSF9ITEVOKSkge1xuK1x0XHRcdGtmcmVlX3NrYihza2IpO1xuIFx0XHRcdHJldHVybiBOVUxMO1xuK1x0XHR9XG4gXHQvKiBUcmFwLXRvLWhvc3QgZnJhbWUsIG5vIHRpbWVzdGFtcCB0cmFpbGVyICovXG4gXHR9IGVsc2Uge1xuIFx0XHQqc291cmNlX3BvcnQgPSBTSkExMTEwX1JYX0hFQURFUl9TUkNfUE9SVChyeF9oZWFkZXIpO1xuQEAgLTY1Myw2ICs2NjQsNyBAQCBzdGF0aWMgc3RydWN0IHNrX2J1ZmYgKnNqYTExMTBfcmN2KHN0cnVjdCBza19idWZmICpza2IsXG4gXG4gXHRpZiAoIXNrYi1cdTAwM2VkZXYpIHtcbiBcdFx0bmV0ZGV2X3dhcm4obmV0ZGV2LCBcIkNvdWxkbid0IGRlY29kZSBzb3VyY2UgcG9ydFxcblwiKTtcbitcdFx0a2ZyZWVfc2tiKHNrYik7XG4gXHRcdHJldHVybiBOVUxMO1xuIFx0fVxuIFxuZGlmZiAtLWdpdCBhL25ldC9kc2EvdGFnX3RyYWlsZXIuYyBiL25ldC9kc2EvdGFnX3RyYWlsZXIuY1xuaW5kZXggNGRjZTI0Y2ZlNmE3MTYuLjQ5YzgwMmMxMGNhNjNhIDEwMDY0NFxuLS0tIGEvbmV0L2RzYS90YWdfdHJhaWxlci5jXG4rKysgYi9uZXQvZHNhL3RhZ190cmFpbGVyLmNcbkBAIC0zMCwyMiArMzAsMzAgQEAgc3RhdGljIHN0cnVjdCBza19idWZmICp0cmFpbGVyX3JjdihzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxuIFx0dTggKnRyYWlsZXI7XG4gXHRpbnQgc291cmNlX3BvcnQ7XG4gXG4tXHRpZiAoc2tiX2xpbmVhcml6ZShza2IpKVxuK1x0aWYgKHNrYl9saW5lYXJpemUoc2tiKSkge1xuK1x0XHRrZnJlZV9za2Ioc2tiKTtcbiBcdFx0cmV0dXJuIE5VTEw7XG4rXHR9XG4gXG4gXHR0cmFpbGVyID0gc2tiX3RhaWxfcG9pbnRlcihza2IpIC0gNDtcbiBcdGlmICh0cmFpbGVyWzBdICE9IDB4ODAgfHwgKHRyYWlsZXJbMV0gXHUwMDI2IDB4ZjgpICE9IDB4MDAgfHxcbi1cdCAgICAodHJhaWxlclsyXSBcdTAwMjYgMHhlZikgIT0gMHgwMCB8fCB0cmFpbGVyWzNdICE9IDB4MDApXG4rXHQgICAgKHRyYWlsZXJbMl0gXHUwMDI2IDB4ZWYpICE9IDB4MDAgfHwgdHJhaWxlclszXSAhPSAweDAwKSB7XG4rXHRcdGtmcmVlX3NrYihza2IpO1xuIFx0XHRyZXR1cm4gTlVMTDtcbitcdH1cbiBcbiBcdHNvdXJjZV9wb3J0ID0gdHJhaWxlclsxXSBcdTAwMjYgNztcbiBcbiBcdHNrYi1cdTAwM2VkZXYgPSBkc2FfY29uZHVpdF9maW5kX3VzZXIoZGV2LCAwLCBzb3VyY2VfcG9ydCk7XG4tXHRpZiAoIXNrYi1cdTAwM2VkZXYpXG4rXHRpZiAoIXNrYi1cdTAwM2VkZXYpIHtcbitcdFx0a2ZyZWVfc2tiKHNrYik7XG4gXHRcdHJldHVybiBOVUxMO1xuK1x0fVxuIFxuLVx0aWYgKHBza2JfdHJpbV9yY3N1bShza2IsIHNrYi1cdTAwM2VsZW4gLSA0KSlcbitcdGlmIChwc2tiX3RyaW1fcmNzdW0oc2tiLCBza2ItXHUwMDNlbGVuIC0gNCkpIHtcbitcdFx0a2ZyZWVfc2tiKHNrYik7XG4gXHRcdHJldHVybiBOVUxMO1xuK1x0fVxuIFxuIFx0cmV0dXJuIHNrYjtcbiB9XG5kaWZmIC0tZ2l0IGEvbmV0L2RzYS90YWdfdnNjNzN4eF84MDIxcS5jIGIvbmV0L2RzYS90YWdfdnNjNzN4eF84MDIxcS5jXG5pbmRleCBhZjEyMWE5YWZmN2ZiZC4uZjQ3MzZhMWE3YTBmMGYgMTAwNjQ0XG4tLS0gYS9uZXQvZHNhL3RhZ192c2M3M3h4XzgwMjFxLmNcbisrKyBiL25ldC9kc2EvdGFnX3ZzYzczeHhfODAyMXEuY1xuQEAgLTQ0LDYgKzQ0LDcgQEAgdnNjNzN4eF9yY3Yoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldilcbiBcdGlmICghc2tiLVx1MDAzZWRldikge1xuIFx0XHRkZXZfd2Fybl9yYXRlbGltaXRlZChcdTAwMjZuZXRkZXYtXHUwMDNlZGV2LFxuIFx0XHRcdFx0ICAgICBcIkNvdWxkbid0IGRlY29kZSBzb3VyY2UgcG9ydFxcblwiKTtcbitcdFx0a2ZyZWVfc2tiKHNrYik7XG4gXHRcdHJldHVybiBOVUxMO1xuIFx0fVxuIFxuZGlmZiAtLWdpdCBhL25ldC9kc2EvdGFnX3hyczcwMHguYyBiL25ldC9kc2EvdGFnX3hyczcwMHguY1xuaW5kZXggYTA1MjE5ZjcwMmM2NWEuLmJiMjY4MDIwZWU4NjVlIDEwMDY0NFxuLS0tIGEvbmV0L2RzYS90YWdfeHJzNzAweC5jXG4rKysgYi9uZXQvZHNhL3RhZ194cnM3MDB4LmNcbkBAIC0zMCwxNSArMzAsMjEgQEAgc3RhdGljIHN0cnVjdCBza19idWZmICp4cnM3MDB4X3JjdihzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxuIFxuIFx0c291cmNlX3BvcnQgPSBmZnMoKGludCl0cmFpbGVyWzBdKSAtIDE7XG4gXG4tXHRpZiAoc291cmNlX3BvcnQgXHUwMDNjIDApXG4rXHRpZiAoc291cmNlX3BvcnQgXHUwMDNjIDApIHtcbitcdFx0a2ZyZWVfc2tiKHNrYik7XG4gXHRcdHJldHVybiBOVUxMO1xuK1x0fVxuIFxuIFx0c2tiLVx1MDAzZWRldiA9IGRzYV9jb25kdWl0X2ZpbmRfdXNlcihkZXYsIDAsIHNvdXJjZV9wb3J0KTtcbi1cdGlmICghc2tiLVx1MDAzZWRldilcbitcdGlmICghc2tiLVx1MDAzZWRldikge1xuK1x0XHRrZnJlZV9za2Ioc2tiKTtcbiBcdFx0cmV0dXJuIE5VTEw7XG4rXHR9XG4gXG4tXHRpZiAocHNrYl90cmltX3Jjc3VtKHNrYiwgc2tiLVx1MDAzZWxlbiAtIDEpKVxuK1x0aWYgKHBza2JfdHJpbV9yY3N1bShza2IsIHNrYi1cdTAwM2VsZW4gLSAxKSkge1xuK1x0XHRrZnJlZV9za2Ioc2tiKTtcbiBcdFx0cmV0dXJuIE5VTEw7XG4rXHR9XG4gXG4gXHQvKiBGcmFtZSBpcyBmb3J3YXJkZWQgYnkgaGFyZHdhcmUsIGRvbid0IGZvcndhcmQgaW4gc29mdHdhcmUuICovXG4gXHRkc2FfZGVmYXVsdF9vZmZsb2FkX2Z3ZF9tYXJrKHNrYik7XG5kaWZmIC0tZ2l0IGEvbmV0L2RzYS90YWdfeXQ5MjF4LmMgYi9uZXQvZHNhL3RhZ195dDkyMXguY1xuaW5kZXggZjNjZWQ5OWIxYzg1MmUuLjI5NDc4NGFiNjY5NGI2IDEwMDY0NFxuLS0tIGEvbmV0L2RzYS90YWdfeXQ5MjF4LmNcbisrKyBiL25ldC9kc2EvdGFnX3l0OTIxeC5jXG5AQCAtODcsOCArODcsMTAgQEAgeXQ5MjF4X3RhZ19yY3Yoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldilcbiBcdF9fYmUxNiAqdGFnO1xuIFx0dTE2IHJ4O1xuIFxuLVx0aWYgKHVubGlrZWx5KCFwc2tiX21heV9wdWxsKHNrYiwgWVQ5MjFYX1RBR19MRU4pKSlcbitcdGlmICh1bmxpa2VseSghcHNrYl9tYXlfcHVsbChza2IsIFlUOTIxWF9UQUdfTEVOKSkpIHtcbitcdFx0a2ZyZWVfc2tiKHNrYik7XG4gXHRcdHJldHVybiBOVUxMO1xuK1x0fVxuIFxuIFx0dGFnID0gZHNhX2V0eXBlX2hlYWRlcl9wb3Nfcngoc2tiKTtcbiBcbkBAIC05Niw2ICs5OCw3IEBAIHl0OTIxeF90YWdfcmN2KHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYpXG4gXHRcdGRldl93YXJuX3JhdGVsaW1pdGVkKFx1MDAyNm5ldGRldi1cdTAwM2VkZXYsXG4gXHRcdFx0XHQgICAgIFwiVW5leHBlY3RlZCBFdGhlclR5cGUgMHglMDR4XFxuXCIsXG4gXHRcdFx0XHQgICAgIG50b2hzKHRhZ1swXSkpO1xuK1x0XHRrZnJlZV9za2Ioc2tiKTtcbiBcdFx0cmV0dXJuIE5VTEw7XG4gXHR9XG4gXG5AQCAtMTA0LDYgKzEwNyw3IEBAIHl0OTIxeF90YWdfcmN2KHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYpXG4gXHRpZiAodW5saWtlbHkoKHJ4IFx1MDAyNiBZVDkyMVhfVEFHX1BPUlRfRU4pID09IDApKSB7XG4gXHRcdGRldl93YXJuX3JhdGVsaW1pdGVkKFx1MDAyNm5ldGRldi1cdTAwM2VkZXYsXG4gXHRcdFx0XHQgICAgIFwiVW5leHBlY3RlZCByeCB0YWcgMHglMDR4XFxuXCIsIHJ4KTtcbitcdFx0a2ZyZWVfc2tiKHNrYik7XG4gXHRcdHJldHVybiBOVUxMO1xuIFx0fVxuIFxuQEAgLTExMiw2ICsxMTYsNyBAQCB5dDkyMXhfdGFnX3JjdihzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2KVxuIFx0aWYgKHVubGlrZWx5KCFza2ItXHUwMDNlZGV2KSkge1xuIFx0XHRkZXZfd2Fybl9yYXRlbGltaXRlZChcdTAwMjZuZXRkZXYtXHUwMDNlZGV2LFxuIFx0XHRcdFx0ICAgICBcIkNvdWxkbid0IGRlY29kZSBzb3VyY2UgcG9ydCAldVxcblwiLCBwb3J0KTtcbitcdFx0a2ZyZWVfc2tiKHNrYik7XG4gXHRcdHJldHVybiBOVUxMO1xuIFx0fVxuIFxuZGlmZiAtLWdpdCBhL25ldC9kc2EvdXNlci5jIGIvbmV0L2RzYS91c2VyLmNcbmluZGV4IDg3MDRjMWEzYTViNzQxLi4wNzJmYTc2OTcyY2M2NSAxMDA2NDRcbi0tLSBhL25ldC9kc2EvdXNlci5jXG4rKysgYi9uZXQvZHNhL3VzZXIuY1xuQEAgLTkzNSwxMyArOTM1LDEyIEBAIHN0YXRpYyBuZXRkZXZfdHhfdCBkc2FfdXNlcl94bWl0KHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXG4gXHRcdGV0aF9za2JfcGFkKHNrYik7XG4gXG4gXHQvKiBUcmFuc21pdCBmdW5jdGlvbiBtYXkgaGF2ZSB0byByZWFsbG9jYXRlIHRoZSBvcmlnaW5hbCBTS0IsXG4tXHQgKiBpbiB3aGljaCBjYXNlIGl0IG11c3QgaGF2ZSBmcmVlZCBpdC4gT25seSBmcmVlIGl0IGhlcmUgb24gZXJyb3IuXG4rXHQgKiBpbiB3aGljaCBjYXNlIGl0IG11c3QgaGF2ZSBmcmVlZCBpdC4gVGFnZ2VycyB3aWxsIGRyb3AgdGhlXG4rXHQgKiBwYXNzZWQgc2tiIG9uIGVycm9yLlxuIFx0ICovXG4gXHRuc2tiID0gcC1cdTAwM2V4bWl0KHNrYiwgZGV2KTtcbi1cdGlmICghbnNrYikge1xuLVx0XHRrZnJlZV9za2Ioc2tiKTtcbitcdGlmICghbnNrYilcbiBcdFx0cmV0dXJuIE5FVERFVl9UWF9PSztcbi1cdH1cbiBcbiBcdHJldHVybiBkc2FfZW5xdWV1ZV9za2IobnNrYiwgZGV2KTtcbiB9XG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0yNVQwODoyOTowNi44NTc4Mzg2MTRaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo4OTU0NjI3MDg1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgRFNBIFNLQiBNZW1vcnkgTWFuYWdlbWVudCBDaGFuZ2VzKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBzZXJpZXMgdG91Y2hpbmcgYG5ldC9kc2EvdGFnXyouY2AsIGBuZXQvZHNhL3VzZXIuY2AsIGFuZCBgbmV0L2RzYS90YWcuY2AuIE15IGluaXRpYWwgcmVhZCBpcyB0aGF0IHRoaXMgaXMgYWJvdXQgU0tCIChTb2NrZXQgQnVmZmVyKSBtZW1vcnkgbWFuYWdlbWVudCBpbiB0aGUgRFNBIChEaXN0cmlidXRlZCBTd2l0Y2ggQXJjaGl0ZWN0dXJlKSB0YWdnZXIgZnVuY3Rpb25zLiBTcGVjaWZpY2FsbHksIGl0J3MgYWJvdXQgZXhwbGljaXRseSBmcmVlaW5nIHRoZSBgc2tiYCB3aXRoaW4gdGhlIHRhZ2dlciBmdW5jdGlvbnMgdGhlbXNlbHZlcywgaW5zdGVhZCBvZiByZWx5aW5nIG9uIHRoZSBjYWxsaW5nIGZ1bmN0aW9ucyAoYGRzYV91c2VyX3htaXRgLCBgZHNhX3N3aXRjaF9yY3ZgKSB0byBoYW5kbGUgaXQgd2hlbiBhIGBOVUxMYCBpcyByZXR1cm5lZC5cblxuTGV0IG1lIGp1c3QgZG91YmxlLWNoZWNrIHRoYXQgYGRzYV91c2VyX3htaXRgIGNvZGUgc25pcHBldCB0byBiZSBzdXJlOlxuXG5gYGBjXG4gXHRuc2tiID0gcC1cdTAwM2V4bWl0KHNrYiwgZGV2KTtcbi1cdGlmICghbnNrYikge1xuLVx0XHRrZnJlZV9za2Ioc2tiKTtcbitcdGlmICghbnNrYilcbiBcdFx0cmV0dXJuIE5FVERFVl9UWF9PSztcbi1cdH1cbmBgYFxuXG5ZdXAsIGFuZCBzaW1pbGFybHkgZm9yIGBkc2Ffc3dpdGNoX3JjdmAuLi5cblxuYGBgY1xuLVx0aWYgKCFuc2tiKSB7XG4tXHRcdGtmcmVlX3NrYihza2IpO1xuK1x0aWYgKCFuc2tiKVxuIFx0XHRyZXR1cm4gMDtcbi1cdH1cbmBgYFxuXG5TbyB0aGUgdGFnZ2VycyBhcmUgbm93IGNhbGxpbmcgYGtmcmVlX3NrYihza2IpYCAqYmVmb3JlKiByZXR1cm5pbmcgYE5VTExgLiBJdCdzIGRlZmluaXRlbHkgYSBmdW5jdGlvbmFsIGNoYW5nZSwgc2hpZnRpbmcgd2hlcmUgdGhlIG1lbW9yeSBpcyBtYW5hZ2VkLCB0aG91Z2ggdGhlIGludGVuZGVkIGZ1bmN0aW9uYWxpdHkgcmVtYWlucyBjb25zaXN0ZW50LiBUaGlzIGlzIGVzc2VudGlhbGx5IGEgbWVtb3J5IG1hbmFnZW1lbnQgcmVmYWN0b3JpbmcgaW4gdGhlIERTQSB0YWdnZXIgY29kZS5cblxuQnV0IGhlcmUncyB0aGUga2V5IHF1ZXN0aW9uLCBkb2VzIHRoaXMgKmFjdHVhbGx5KiBjaGFuZ2UgdGhlIGV4ZWN1dGlvbiBmbG93PyBZZXMsIGl0IGRvZXMgY2hhbmdlIHdoZXJlIGBrZnJlZV9za2JgIGlzIGNhbGxlZC4gVGhhdCdzIHRoZSBjb3JlIG9mIHRoZSBjaGFuZ2UuIElzIHRoaXMgYSBjb2RlIHBhdGggdGhhdCdzIGV2ZW4gZXhlcmNpc2VkIGluIGEgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQgb3IgYnkgZnV6emVycz8gRFNBIGlzIGEgc3Vic3lzdGVtIGZvciBFdGhlcm5ldCBzd2l0Y2hlcywgc28gSSBuZWVkIHRvIHRoaW5rIGFib3V0IGlmIHRoaXMgaXMgcmVhY2hhYmxlLiBXZSBuZWVkIHRvIGNvbnNpZGVyIGhvdyBhY2Nlc3NpYmxlIHRoaXMgY29kZSBpcywgcGFydGljdWxhcmx5IGZvciBzZWN1cml0eSBhdWRpdGluZy5cblxuQ2FuIHdlIGhpdCB0aGlzIGluIHNvbWV0aGluZyBsaWtlIHN5emthbGxlcj8gU3l6a2FsbGVyIGhhcyBzb21lIERTQSBzdXBwb3J0LCBvciBhdCBsZWFzdCB0aGUgYWJpbGl0eSB0byBjcmVhdGUgZHVtbXkgRFNBIGludGVyZmFjZXMgdXNpbmcgdGhlIGBkc2FfbG9vcGAgZHJpdmVyLiBJdCdzIHRpbWUgdG8gY2hlY2sgaWYgYENPTkZJR19ORVRfRFNBYCBpcyBlbmFibGVkIGFuZCBob3cgd2UgY2FuIHJlYWNoIHRoaXMgY29kZS4gSSdsbCBuZWVkIHRvIHNlYXJjaCBmb3IgYGRzYV9sb29wYCBhbmQgYGRzYV91c2VyX3htaXRgIGluIHJlbGV2YW50IGJ1aWxkIGNvbmZpZ3VyYXRpb25zIHRvIGNvbmZpcm0uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE4NjgxLCJPdXRwdXRUb2tlbnMiOjIxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDE3LCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjVUMDg6Mjk6MTUuODEyNDY3NTg5WiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjMxODkzNDgzNjEsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiZHNhX3VzZXJfeG1pdFwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJEb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvZHNhL2RzYS5yc3Q9MzE3PUxBRyBzbGF2ZSkuIFRoZXJlZm9yZSwgdGhlIFJYIGRhdGEgcGF0aCBvZiB0aGUgTEFHIERTQSBjb25kdWl0IGlzIG5vdCB1c2VkLlxcbkRvY3VtZW50YXRpb24vbmV0d29ya2luZy9kc2EvZHNhLnJzdDozMTg6T24gdGhlIG90aGVyIGhhbmQsIFRYIHRha2VzIHBsYWNlIGxpbmVhcmx5OiBgYGRzYV91c2VyX3htaXRgYCBjYWxsc1xcbkRvY3VtZW50YXRpb24vbmV0d29ya2luZy9kc2EvZHNhLnJzdC0zMTktYGBkc2FfZW5xdWV1ZV9za2JgYCwgd2hpY2ggY2FsbHMgYGBkZXZfcXVldWVfeG1pdGBgIHRvd2FyZHMgdGhlIExBRyBEU0EgY29uZHVpdC5cXG4tLVxcbm5ldC9kc2EvdXNlci5jPTkxMT1FWFBPUlRfU1lNQk9MX0dQTChkc2FfZW5xdWV1ZV9za2IpO1xcbm5ldC9kc2EvdXNlci5jLTkxMi1cXG5uZXQvZHNhL3VzZXIuYzo5MTM6c3RhdGljIG5ldGRldl90eF90IGRzYV91c2VyX3htaXQoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IG5ldF9kZXZpY2UgKmRldilcXG5uZXQvZHNhL3VzZXIuYy05MTQte1xcbi0tXFxubmV0L2RzYS91c2VyLmM9MjU4Nj1zdGF0aWMgY29uc3Qgc3RydWN0IG5ldF9kZXZpY2Vfb3BzIGRzYV91c2VyX25ldGRldl9vcHMgPSB7XFxuLS1cXG5uZXQvZHNhL3VzZXIuYy0yNTg4LVxcdC5uZG9fc3RvcFxcdFxcdD0gZHNhX3VzZXJfY2xvc2UsXFxubmV0L2RzYS91c2VyLmM6MjU4OTpcXHQubmRvX3N0YXJ0X3htaXRcXHRcXHQ9IGRzYV91c2VyX3htaXQsXFxubmV0L2RzYS91c2VyLmMtMjU5MC1cXHQubmRvX2NoYW5nZV9yeF9mbGFnc1xcdD0gZHNhX3VzZXJfY2hhbmdlX3J4X2ZsYWdzLFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0yNVQwODoyOToxOS4wMDE4MjE0N1oiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjUxNTM3NDIxNzUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqRnV6emluZyB0aGUgRFNBIFRhZ2dpbmcgQ29kZSoqXG5cbk9rYXksIGxldCdzIHRha2UgYSBsb29rIGF0IHRoaXMuIE15IGd1dCB0ZWxscyBtZSB0aGlzIGlzIHJpcGUgZm9yIGZ1enppbmcuIFRoZSBwYXRjaCBpcyB0b3VjaGluZyBgbmV0L2RzYS90YWcuY2AgYW5kIGEgZmV3IG9mIHRoZSBgbmV0L2RzYS90YWdfKi5jYCBmaWxlcywgc28gaXQncyBhbGwgYWJvdXQgRFNBIHRhZ2dpbmcuIEZyb20gYSBxdWljayBnbGFuY2UsIHRoZSBjaGFuZ2VzIGFyZSBjZW50ZXJlZCBhcm91bmQgbWVtb3J5IG1hbmFnZW1lbnQg4oCTIHNwZWNpZmljYWxseSwgZnJlZWluZyBgc2tiYCBpbiBlcnJvciBwYXRocy4gVGhhdCBpbnN0YW50bHkgc2NyZWFtcyBcInBvdGVudGlhbCBtZW1vcnkgbGVhayBvciBkb3VibGUgZnJlZVwiIHRvIG1lLiBJdOKAmXMgZGVmaW5pdGVseSB3b3J0aCB0aGUgZWZmb3J0IHRvIHRocm93IHNvbWUgZnV6emluZyBhdCBpdC4gTm93LCB3aGF0J3MgdGhlIGFwcHJvcHJpYXRlIHNldHVwPyBJJ2xsIG5lZWQgdG8gZW5hYmxlIGBDT05GSUdfTkVUX0RTQWAsIGFuZCBwcm9iYWJseSBzb21lIG9mIHRoZSB0YWdnZXItc3BlY2lmaWMgY29uZmlndXJhdGlvbnMgdG9vLiBMZXQgbWUgZG91YmxlLWNoZWNrIHRoZSBgbmV0L2RzYS9LY29uZmlnYCBmaWxlIHRvIGJlIGNlcnRhaW4gSSBoYXZlIHRoZSByaWdodCBjb25maWd1cmF0aW9uLiBUaW1lIHRvIG1ha2Ugc3VyZSB0aGlzIGNvZGUgaXMgcm9idXN0LlxuXG5cbiIsIklucHV0VG9rZW5zIjoyMDAyOSwiT3V0cHV0VG9rZW5zIjoxOCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEyMSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNi0yNVQwODoyOToyNC4xNTU1Njc3MDVaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjQ1NDU1MTQ1NSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgTkVUX0RTQVwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9kc2EvS2NvbmZpZz01PXNvdXJjZSBcXFwiZHJpdmVycy9uZXQvZHNhL2I1My9LY29uZmlnXFxcIlxcbmRyaXZlcnMvbmV0L2RzYS9LY29uZmlnLTYtXFxuZHJpdmVycy9uZXQvZHNhL0tjb25maWc6Nzpjb25maWcgTkVUX0RTQV9CQ01fU0YyXFxuZHJpdmVycy9uZXQvZHNhL0tjb25maWctOC1cXHR0cmlzdGF0ZSBcXFwiQnJvYWRjb20gU3RhcmZpZ2h0ZXIgMiBFdGhlcm5ldCBzd2l0Y2ggc3VwcG9ydFxcXCJcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9LY29uZmlnLTE4LVxcbmRyaXZlcnMvbmV0L2RzYS9LY29uZmlnOjE5OmNvbmZpZyBORVRfRFNBX0xPT1BcXG5kcml2ZXJzL25ldC9kc2EvS2NvbmZpZy0yMC1cXHR0cmlzdGF0ZSBcXFwiRFNBIG1vY2stdXAgRXRoZXJuZXQgc3dpdGNoIGNoaXAgc3VwcG9ydFxcXCJcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9LY29uZmlnPTI5PXNvdXJjZSBcXFwiZHJpdmVycy9uZXQvZHNhL2xhbnRpcS9LY29uZmlnXFxcIlxcbmRyaXZlcnMvbmV0L2RzYS9LY29uZmlnLTMwLVxcbmRyaXZlcnMvbmV0L2RzYS9LY29uZmlnOjMxOmNvbmZpZyBORVRfRFNBX01UNzUzMFxcbmRyaXZlcnMvbmV0L2RzYS9LY29uZmlnLTMyLVxcdHRyaXN0YXRlIFxcXCJNZWRpYVRlayBNVDc1MzAgYW5kIE1UNzUzMSBFdGhlcm5ldCBzd2l0Y2ggc3VwcG9ydFxcXCJcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9LY29uZmlnLTQyLVxcbmRyaXZlcnMvbmV0L2RzYS9LY29uZmlnOjQzOmNvbmZpZyBORVRfRFNBX01UNzUzMF9NRElPXFxuZHJpdmVycy9uZXQvZHNhL0tjb25maWctNDQtXFx0dHJpc3RhdGUgXFxcIk1lZGlhVGVrIE1UNzUzMCBNRElPIGludGVyZmFjZSBkcml2ZXJcXFwiXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvS2NvbmZpZy01My1cXG5kcml2ZXJzL25ldC9kc2EvS2NvbmZpZzo1NDpjb25maWcgTkVUX0RTQV9NVDc1MzBfTU1JT1xcbmRyaXZlcnMvbmV0L2RzYS9LY29uZmlnLTU1LVxcdHRyaXN0YXRlIFxcXCJNZWRpYVRlayBNVDc1MzAgTU1JTyBpbnRlcmZhY2UgZHJpdmVyXFxcIlxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL0tjb25maWctNjUtXFxuZHJpdmVycy9uZXQvZHNhL0tjb25maWc6NjY6Y29uZmlnIE5FVF9EU0FfTVY4OEU2MDYwXFxuZHJpdmVycy9uZXQvZHNhL0tjb25maWctNjctXFx0dHJpc3RhdGUgXFxcIk1hcnZlbGwgODhFNjA2MCBldGhlcm5ldCBzd2l0Y2ggY2hpcCBzdXBwb3J0XFxcIlxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL0tjb25maWc9ODk9c291cmNlIFxcXCJkcml2ZXJzL25ldC9kc2EvcmVhbHRlay9LY29uZmlnXFxcIlxcbmRyaXZlcnMvbmV0L2RzYS9LY29uZmlnLTkwLVxcbmRyaXZlcnMvbmV0L2RzYS9LY29uZmlnOjkxOmNvbmZpZyBORVRfRFNBX1JaTjFfQTVQU1dcXG5kcml2ZXJzL25ldC9kc2EvS2NvbmZpZy05Mi1cXHR0cmlzdGF0ZSBcXFwiUmVuZXNhcyBSWi9OMSBBNVBTVyBFdGhlcm5ldCBzd2l0Y2ggc3VwcG9ydFxcXCJcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9LY29uZmlnLTk5LVxcbmRyaXZlcnMvbmV0L2RzYS9LY29uZmlnOjEwMDpjb25maWcgTkVUX0RTQV9LUzg5OTVcXG5kcml2ZXJzL25ldC9kc2EvS2NvbmZpZy0xMDEtXFx0dHJpc3RhdGUgXFxcIk1pY3JlbCBLUzg5OTUgZmFtaWx5IDUtcG9ydHMgMTAvMTAwIEV0aGVybmV0IHN3aXRjaGVzXFxcIlxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL0tjb25maWctMTA3LVxcbmRyaXZlcnMvbmV0L2RzYS9LY29uZmlnOjEwODpjb25maWcgTkVUX0RTQV9TTVNDX0xBTjkzMDNcXG5kcml2ZXJzL25ldC9kc2EvS2NvbmZpZy0xMDktXFx0dHJpc3RhdGVcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9LY29uZmlnLTExNi1cXG5kcml2ZXJzL25ldC9kc2EvS2NvbmZpZzoxMTc6Y29uZmlnIE5FVF9EU0FfU01TQ19MQU45MzAzX0kyQ1xcbmRyaXZlcnMvbmV0L2RzYS9LY29uZmlnLTExOC1cXHR0cmlzdGF0ZSBcXFwiU01TQy9NaWNyb2NoaXAgTEFOOTMwMyAzLXBvcnRzIDEwLzEwMCBldGhlcm5ldCBzd2l0Y2ggaW4gSTJDIG1hbmFnZWQgbW9kZVxcXCJcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9LY29uZmlnLTEyNi1cXG5kcml2ZXJzL25ldC9kc2EvS2NvbmZpZzoxMjc6Y29uZmlnIE5FVF9EU0FfU01TQ19MQU45MzAzX01ESU9cXG5kcml2ZXJzL25ldC9kc2EvS2NvbmZpZy0xMjgtXFx0dHJpc3RhdGUgXFxcIk1pY3JvY2hpcCBMQU45MzAzL0xBTjkzNTQgMy1wb3J0cyAxMC8xMDAgZXRoZXJuZXQgc3dpdGNoIGluIE1ESU8gbWFuYWdlZCBtb2RlXFxcIlxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL0tjb25maWctMTM0LVxcbmRyaXZlcnMvbmV0L2RzYS9LY29uZmlnOjEzNTpjb25maWcgTkVUX0RTQV9WSVRFU1NFX1ZTQzczWFhcXG5kcml2ZXJzL25ldC9kc2EvS2NvbmZpZy0xMzYtXFx0dHJpc3RhdGVcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9LY29uZmlnLTE0NC1cXG5kcml2ZXJzL25ldC9kc2EvS2NvbmZpZzoxNDU6Y29uZmlnIE5FVF9EU0FfVklURVNTRV9WU0M3M1hYX1NQSVxcbmRyaXZlcnMvbmV0L2RzYS9LY29uZmlnLTE0Ni1cXHR0cmlzdGF0ZSBcXFwiVml0ZXNzZSBWU0M3Mzg1LzczODgvNzM5NS83Mzk4IFNQSSBtb2RlIHN1cHBvcnRcXFwiXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvS2NvbmZpZy0xNTItXFxuZHJpdmVycy9uZXQvZHNhL0tjb25maWc6MTUzOmNvbmZpZyBORVRfRFNBX1ZJVEVTU0VfVlNDNzNYWF9QTEFURk9STVxcbmRyaXZlcnMvbmV0L2RzYS9LY29uZmlnLTE1NC1cXHR0cmlzdGF0ZSBcXFwiVml0ZXNzZSBWU0M3Mzg1LzczODgvNzM5NS83Mzk4IFBsYXRmb3JtIG1vZGUgc3VwcG9ydFxcXCJcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9LY29uZmlnLTE2MS1cXG5kcml2ZXJzL25ldC9kc2EvS2NvbmZpZzoxNjI6Y29uZmlnIE5FVF9EU0FfWVQ5MjFYXFxuZHJpdmVycy9uZXQvZHNhL0tjb25maWctMTYzLVxcdHRyaXN0YXRlIFxcXCJNb3RvcmNvbW0gWVQ5MjE1IGV0aGVybmV0IHN3aXRjaCBjaGlwIHN1cHBvcnRcXFwiXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvaGlyc2NobWFubi9LY29uZmlnLTEtIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMFxcbmRyaXZlcnMvbmV0L2RzYS9oaXJzY2htYW5uL0tjb25maWc6Mjpjb25maWcgTkVUX0RTQV9ISVJTQ0hNQU5OX0hFTExDUkVFS1xcbmRyaXZlcnMvbmV0L2RzYS9oaXJzY2htYW5uL0tjb25maWctMy1cXHR0cmlzdGF0ZSBcXFwiSGlyc2NobWFubiBIZWxsY3JlZWsgVFNOIFN3aXRjaCBzdXBwb3J0XFxcIlxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL2xhbnRpcS9LY29uZmlnOjE6Y29uZmlnIE5FVF9EU0FfTEFOVElRX0NPTU1PTlxcbmRyaXZlcnMvbmV0L2RzYS9sYW50aXEvS2NvbmZpZy0yLVxcdHRyaXN0YXRlXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbGFudGlxL0tjb25maWctNC1cXG5kcml2ZXJzL25ldC9kc2EvbGFudGlxL0tjb25maWc6NTpjb25maWcgTkVUX0RTQV9MQU5USVFfR1NXSVBcXG5kcml2ZXJzL25ldC9kc2EvbGFudGlxL0tjb25maWctNi1cXHR0cmlzdGF0ZSBcXFwiTGFudGlxIC8gSW50ZWwgR1NXSVBcXFwiXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbGFudGlxL0tjb25maWctMTMtXFxuZHJpdmVycy9uZXQvZHNhL2xhbnRpcS9LY29uZmlnOjE0OmNvbmZpZyBORVRfRFNBX01YTF9HU1cxWFhcXG5kcml2ZXJzL25ldC9kc2EvbGFudGlxL0tjb25maWctMTUtXFx0dHJpc3RhdGUgXFxcIk1heExpbmVhciBHU1cxeHggRXRoZXJuZXQgc3dpdGNoIHN1cHBvcnRcXFwiXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL0tjb25maWctMS0jIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL0tjb25maWc6MjptZW51Y29uZmlnIE5FVF9EU0FfTUlDUk9DSElQX0tTWl9DT01NT05cXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL0tjb25maWctMy1cXHR0cmlzdGF0ZSBcXFwiTWljcm9jaGlwIEtTWjhYWFgvS1NaOVhYWC9MQU45MzdYIHNlcmllcyBzd2l0Y2ggc3VwcG9ydFxcXCJcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAvS2NvbmZpZy0xNi1cXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL0tjb25maWc6MTc6Y29uZmlnIE5FVF9EU0FfTUlDUk9DSElQX0tTWjk0NzdfSTJDXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9LY29uZmlnLTE4LVxcdHRyaXN0YXRlIFxcXCJLU1ogc2VyaWVzIEkyQyBjb25uZWN0ZWQgc3dpdGNoIGRyaXZlclxcXCJcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAvS2NvbmZpZy0yMy1cXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL0tjb25maWc6MjQ6Y29uZmlnIE5FVF9EU0FfTUlDUk9DSElQX0tTWl9TUElcXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL0tjb25maWctMjUtXFx0dHJpc3RhdGUgXFxcIktTWiBzZXJpZXMgU1BJIGNvbm5lY3RlZCBzd2l0Y2ggZHJpdmVyXFxcIlxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9LY29uZmlnLTMwLVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAvS2NvbmZpZzozMTpjb25maWcgTkVUX0RTQV9NSUNST0NISVBfS1NaX1BUUFxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAvS2NvbmZpZy0zMi1cXHRib29sIFxcXCJTdXBwb3J0IGZvciB0aGUgUFRQIGNsb2NrIG9uIHRoZSBLU1o5NTYzL0xBTjkzN3ggRXRoZXJuZXQgU3dpdGNoXFxcIlxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9LY29uZmlnLTQwLVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAvS2NvbmZpZzo0MTpjb25maWcgTkVUX0RTQV9NSUNST0NISVBfS1NaODg2M19TTUlcXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL0tjb25maWctNDItXFx0dHJpc3RhdGUgXFxcIktTWiBzZXJpZXMgU01JIGNvbm5lY3RlZCBzd2l0Y2ggZHJpdmVyXFxcIlxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9LY29uZmlnLTEtIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9LY29uZmlnOjI6Y29uZmlnIE5FVF9EU0FfTVY4OEU2WFhYXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9LY29uZmlnLTMtXFx0dHJpc3RhdGUgXFxcIk1hcnZlbGwgODhFNnh4eCBFdGhlcm5ldCBzd2l0Y2ggZmFicmljIHN1cHBvcnRcXFwiXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L0tjb25maWctMTEtXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9LY29uZmlnOjEyOmNvbmZpZyBORVRfRFNBX01WODhFNlhYWF9QVFBcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L0tjb25maWctMTMtXFx0Ym9vbCBcXFwiUFRQIHN1cHBvcnQgZm9yIE1hcnZlbGwgODhFNnh4eFxcXCJcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvS2NvbmZpZy0yMC1cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L0tjb25maWc6MjE6Y29uZmlnIE5FVF9EU0FfTVY4OEU2WFhYX0xFRFNcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L0tjb25maWctMjItXFx0Ym9vbCBcXFwiTEVEIHN1cHBvcnQgZm9yIE1hcnZlbGwgODhFNnh4eFxcXCJcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9LY29uZmlnLTEtIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XFxuZHJpdmVycy9uZXQvZHNhL214bDg2Mnh4L0tjb25maWc6Mjpjb25maWcgTkVUX0RTQV9NWEw4NjJcXG5kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvS2NvbmZpZy0zLVxcdHRyaXN0YXRlIFxcXCJNYXhMaW5lYXIgTXhMODYyeHhcXFwiXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbmV0Yy9LY29uZmlnLTEtIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XFxuZHJpdmVycy9uZXQvZHNhL25ldGMvS2NvbmZpZzoyOmNvbmZpZyBORVRfRFNBX05FVENfU1dJVENIXFxuZHJpdmVycy9uZXQvZHNhL25ldGMvS2NvbmZpZy0zLVxcdHRyaXN0YXRlIFxcXCJOWFAgTkVUQyBFdGhlcm5ldCBzd2l0Y2ggc3VwcG9ydFxcXCJcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9vY2Vsb3QvS2NvbmZpZy0xLSMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxcbmRyaXZlcnMvbmV0L2RzYS9vY2Vsb3QvS2NvbmZpZzoyOmNvbmZpZyBORVRfRFNBX01TQ0NfRkVMSVhfRFNBX0xJQlxcbmRyaXZlcnMvbmV0L2RzYS9vY2Vsb3QvS2NvbmZpZy0zLVxcdHRyaXN0YXRlXFxuLS1cXG5kcml2ZXJzL25ldC9kc2Evb2NlbG90L0tjb25maWctMTAtXFxuZHJpdmVycy9uZXQvZHNhL29jZWxvdC9LY29uZmlnOjExOmNvbmZpZyBORVRfRFNBX01TQ0NfT0NFTE9UX0VYVFxcbmRyaXZlcnMvbmV0L2RzYS9vY2Vsb3QvS2NvbmZpZy0xMi1cXHR0cmlzdGF0ZSBcXFwiT2NlbG90IEV4dGVybmFsIEV0aGVybmV0IHN3aXRjaCBzdXBwb3J0XFxcIlxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL29jZWxvdC9LY29uZmlnLTMxLVxcbmRyaXZlcnMvbmV0L2RzYS9vY2Vsb3QvS2NvbmZpZzozMjpjb25maWcgTkVUX0RTQV9NU0NDX0ZFTElYXFxuZHJpdmVycy9uZXQvZHNhL29jZWxvdC9LY29uZmlnLTMzLVxcdHRyaXN0YXRlIFxcXCJPY2Vsb3QgLyBGZWxpeCBFdGhlcm5ldCBzd2l0Y2ggc3VwcG9ydFxcXCJcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9vY2Vsb3QvS2NvbmZpZy00OS1cXG5kcml2ZXJzL25ldC9kc2Evb2NlbG90L0tjb25maWc6NTA6Y29uZmlnIE5FVF9EU0FfTVNDQ19TRVZJTExFXFxuZHJpdmVycy9uZXQvZHNhL29jZWxvdC9LY29uZmlnLTUxLVxcdHRyaXN0YXRlIFxcXCJPY2Vsb3QgLyBTZXZpbGxlIEV0aGVybmV0IHN3aXRjaCBzdXBwb3J0XFxcIlxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL3FjYS9LY29uZmlnLTEtIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XFxuZHJpdmVycy9uZXQvZHNhL3FjYS9LY29uZmlnOjI6Y29uZmlnIE5FVF9EU0FfQVI5MzMxXFxuZHJpdmVycy9uZXQvZHNhL3FjYS9LY29uZmlnLTMtXFx0dHJpc3RhdGUgXFxcIlF1YWxjb21tIEF0aGVyb3MgQVI5MzMxIEV0aGVybmV0IHN3aXRjaCBzdXBwb3J0XFxcIlxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL3FjYS9LY29uZmlnLTEwLVxcbmRyaXZlcnMvbmV0L2RzYS9xY2EvS2NvbmZpZzoxMTpjb25maWcgTkVUX0RTQV9RQ0E4S1xcbmRyaXZlcnMvbmV0L2RzYS9xY2EvS2NvbmZpZy0xMi1cXHR0cmlzdGF0ZSBcXFwiUXVhbGNvbW0gQXRoZXJvcyBRQ0E4SyBFdGhlcm5ldCBzd2l0Y2ggZmFtaWx5IHN1cHBvcnRcXFwiXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvcWNhL0tjb25maWctMTgtXFxuZHJpdmVycy9uZXQvZHNhL3FjYS9LY29uZmlnOjE5OmNvbmZpZyBORVRfRFNBX1FDQThLX0xFRFNfU1VQUE9SVFxcbmRyaXZlcnMvbmV0L2RzYS9xY2EvS2NvbmZpZy0yMC1cXHRib29sIFxcXCJRdWFsY29tbSBBdGhlcm9zIFFDQThLIEV0aGVybmV0IHN3aXRjaCBmYW1pbHkgTEVEcyBzdXBwb3J0XFxcIlxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvS2NvbmZpZy0xLSMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL0tjb25maWc6MjptZW51Y29uZmlnIE5FVF9EU0FfUkVBTFRFS1xcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL0tjb25maWctMy1cXHR0cmlzdGF0ZSBcXFwiUmVhbHRlayBFdGhlcm5ldCBzd2l0Y2ggZmFtaWx5IHN1cHBvcnRcXFwiXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9LY29uZmlnPTE2PWlmIE5FVF9EU0FfUkVBTFRFS1xcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL0tjb25maWctMTctXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvS2NvbmZpZzoxODpjb25maWcgTkVUX0RTQV9SRUFMVEVLX01ESU9cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9LY29uZmlnLTE5LVxcdGJvb2wgXFxcIlJlYWx0ZWsgTURJTyBpbnRlcmZhY2Ugc3VwcG9ydFxcXCJcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL0tjb25maWctMjQtXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvS2NvbmZpZzoyNTpjb25maWcgTkVUX0RTQV9SRUFMVEVLX1NNSVxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL0tjb25maWctMjYtXFx0Ym9vbCBcXFwiUmVhbHRlayBTTUkgaW50ZXJmYWNlIHN1cHBvcnRcXFwiXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9LY29uZmlnLTMxLVxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL0tjb25maWc6MzI6Y29uZmlnIE5FVF9EU0FfUkVBTFRFS19SVEw4MzY1TUJcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9LY29uZmlnLTMzLVxcdHRyaXN0YXRlIFxcXCJSZWFsdGVrIFJUTDgzNjVNQiBzd2l0Y2ggZHJpdmVyXFxcIlxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvS2NvbmZpZy0zOC1cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9LY29uZmlnOjM5OmNvbmZpZyBORVRfRFNBX1JFQUxURUtfUlRMODM2NlJCXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvS2NvbmZpZy00MC1cXHR0cmlzdGF0ZSBcXFwiUmVhbHRlayBSVEw4MzY2UkIgc3dpdGNoIGRyaXZlclxcXCJcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL0tjb25maWctNDUtXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvS2NvbmZpZzo0Njpjb25maWcgTkVUX0RTQV9SRUFMVEVLX1JUTDgzNjZSQl9MRURTXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvS2NvbmZpZy00Ny1cXHRib29sXFxuLS1cXG5kcml2ZXJzL25ldC9kc2Evc2phMTEwNS9LY29uZmlnLTEtIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XFxuZHJpdmVycy9uZXQvZHNhL3NqYTExMDUvS2NvbmZpZzoyOmNvbmZpZyBORVRfRFNBX1NKQTExMDVcXG5kcml2ZXJzL25ldC9kc2Evc2phMTEwNS9LY29uZmlnLTMtdHJpc3RhdGUgXFxcIk5YUCBTSkExMTA1IEV0aGVybmV0IHN3aXRjaCBmYW1pbHkgc3VwcG9ydFxcXCJcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9zamExMTA1L0tjb25maWctMjUtXFxuZHJpdmVycy9uZXQvZHNhL3NqYTExMDUvS2NvbmZpZzoyNjpjb25maWcgTkVUX0RTQV9TSkExMTA1X1BUUFxcbmRyaXZlcnMvbmV0L2RzYS9zamExMTA1L0tjb25maWctMjctXFx0Ym9vbCBcXFwiU3VwcG9ydCBmb3IgdGhlIFBUUCBjbG9jayBvbiB0aGUgTlhQIFNKQTExMDUgRXRoZXJuZXQgc3dpdGNoXFxcIlxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL3NqYTExMDUvS2NvbmZpZy0zMy1cXG5kcml2ZXJzL25ldC9kc2Evc2phMTEwNS9LY29uZmlnOjM0OmNvbmZpZyBORVRfRFNBX1NKQTExMDVfVEFTXFxuZHJpdmVycy9uZXQvZHNhL3NqYTExMDUvS2NvbmZpZy0zNS1cXHRib29sIFxcXCJTdXBwb3J0IGZvciB0aGUgVGltZS1Bd2FyZSBTY2hlZHVsZXIgb24gTlhQIFNKQTExMDVcXFwiXFxuLS1cXG5kcml2ZXJzL25ldC9kc2Evc2phMTEwNS9LY29uZmlnLTQzLVxcbmRyaXZlcnMvbmV0L2RzYS9zamExMTA1L0tjb25maWc6NDQ6Y29uZmlnIE5FVF9EU0FfU0pBMTEwNV9WTFxcbmRyaXZlcnMvbmV0L2RzYS9zamExMTA1L0tjb25maWctNDUtXFx0Ym9vbCBcXFwiU3VwcG9ydCBmb3IgVmlydHVhbCBMaW5rcyBvbiBOWFAgU0pBMTEwNVxcXCJcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS94cnM3MDB4L0tjb25maWctMS0jIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcXG5kcml2ZXJzL25ldC9kc2EveHJzNzAweC9LY29uZmlnOjI6Y29uZmlnIE5FVF9EU0FfWFJTNzAwWFxcbmRyaXZlcnMvbmV0L2RzYS94cnM3MDB4L0tjb25maWctMy1cXHR0cmlzdGF0ZVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL3hyczcwMHgvS2NvbmZpZy0xMC1cXG5kcml2ZXJzL25ldC9kc2EveHJzNzAweC9LY29uZmlnOjExOmNvbmZpZyBORVRfRFNBX1hSUzcwMFhfSTJDXFxuZHJpdmVycy9uZXQvZHNhL3hyczcwMHgvS2NvbmZpZy0xMi1cXHR0cmlzdGF0ZSBcXFwiQXJyb3cgWFJTNzAwMFggc2VyaWVzIHN3aXRjaCBpbiBJMkMgbW9kZVxcXCJcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS94cnM3MDB4L0tjb25maWctMTktXFxuZHJpdmVycy9uZXQvZHNhL3hyczcwMHgvS2NvbmZpZzoyMDpjb25maWcgTkVUX0RTQV9YUlM3MDBYX01ESU9cXG5kcml2ZXJzL25ldC9kc2EveHJzNzAweC9LY29uZmlnLTIxLVxcdHRyaXN0YXRlIFxcXCJBcnJvdyBYUlM3MDAwWCBzZXJpZXMgc3dpdGNoIGluIE1ESU8gbW9kZVxcXCJcXG4tLVxcbm5ldC9kc2EvS2NvbmZpZy0yLVxcbm5ldC9kc2EvS2NvbmZpZzozOm1lbnVjb25maWcgTkVUX0RTQVxcbm5ldC9kc2EvS2NvbmZpZy00LVxcdHRyaXN0YXRlIFxcXCJEaXN0cmlidXRlZCBTd2l0Y2ggQXJjaGl0ZWN0dXJlXFxcIlxcbi0tXFxubmV0L2RzYS9LY29uZmlnPTE3PWlmIE5FVF9EU0FcXG4tLVxcbm5ldC9kc2EvS2NvbmZpZy0yMC1cXG5uZXQvZHNhL0tjb25maWc6MjE6Y29uZmlnIE5FVF9EU0FfVEFHX05PTkVcXG5uZXQvZHNhL0tjb25maWctMjItXFx0dHJpc3RhdGUgXFxcIk5vLW9wIHRhZyBkcml2ZXJcXFwiXFxuLS1cXG5uZXQvZHNhL0tjb25maWctMjYtXFxubmV0L2RzYS9LY29uZmlnOjI3OmNvbmZpZyBORVRfRFNBX1RBR19BUjkzMzFcXG5uZXQvZHNhL0tjb25maWctMjgtXFx0dHJpc3RhdGUgXFxcIlRhZyBkcml2ZXIgZm9yIEF0aGVyb3MgQVI5MzMxIFNvQyB3aXRoIGJ1aWx0LWluIHN3aXRjaFxcXCJcXG4tLVxcbm5ldC9kc2EvS2NvbmZpZy0zMi1cXG5uZXQvZHNhL0tjb25maWc6MzM6Y29uZmlnIE5FVF9EU0FfVEFHX0JSQ01fQ09NTU9OXFxubmV0L2RzYS9LY29uZmlnLTM0LVxcdHRyaXN0YXRlXFxuLS1cXG5uZXQvZHNhL0tjb25maWctMzYtXFxubmV0L2RzYS9LY29uZmlnOjM3OmNvbmZpZyBORVRfRFNBX1RBR19CUkNNXFxubmV0L2RzYS9LY29uZmlnLTM4LVxcdHRyaXN0YXRlIFxcXCJUYWcgZHJpdmVyIGZvciBCcm9hZGNvbSBzd2l0Y2hlcyB1c2luZyBpbi1mcmFtZSBoZWFkZXJzXFxcIlxcbi0tXFxubmV0L2RzYS9LY29uZmlnLTQzLVxcbm5ldC9kc2EvS2NvbmZpZzo0NDpjb25maWcgTkVUX0RTQV9UQUdfQlJDTV9MRUdBQ1lcXG5uZXQvZHNhL0tjb25maWctNDUtXFx0dHJpc3RhdGUgXFxcIlRhZyBkcml2ZXIgZm9yIEJDTTYzeHggbGVnYWN5IHN3aXRjaGVzIHVzaW5nIGluLWZyYW1lIGhlYWRlcnNcXFwiXFxuLS1cXG5uZXQvZHNhL0tjb25maWctNTMtXFxubmV0L2RzYS9LY29uZmlnOjU0OmNvbmZpZyBORVRfRFNBX1RBR19CUkNNX0xFR0FDWV9GQ1NcXG5uZXQvZHNhL0tjb25maWctNTUtXFx0dHJpc3RhdGUgXFxcIlRhZyBkcml2ZXIgZm9yIEJDTTUzeHggbGVnYWN5IHN3aXRjaGVzIHVzaW5nIGluLWZyYW1lIGhlYWRlcnNcXFwiXFxuLS1cXG5uZXQvZHNhL0tjb25maWctNjMtXFxubmV0L2RzYS9LY29uZmlnOjY0OmNvbmZpZyBORVRfRFNBX1RBR19CUkNNX1BSRVBFTkRcXG5uZXQvZHNhL0tjb25maWctNjUtXFx0dHJpc3RhdGUgXFxcIlRhZyBkcml2ZXIgZm9yIEJyb2FkY29tIHN3aXRjaGVzIHVzaW5nIHByZXBlbmRlZCBoZWFkZXJzXFxcIlxcbi0tXFxubmV0L2RzYS9LY29uZmlnLTcxLVxcbm5ldC9kc2EvS2NvbmZpZzo3Mjpjb25maWcgTkVUX0RTQV9UQUdfSEVMTENSRUVLXFxubmV0L2RzYS9LY29uZmlnLTczLVxcdHRyaXN0YXRlIFxcXCJUYWcgZHJpdmVyIGZvciBIaXJzY2htYW5uIEhlbGxjcmVlayBUU04gc3dpdGNoZXNcXFwiXFxuLS1cXG5uZXQvZHNhL0tjb25maWctNzctXFxubmV0L2RzYS9LY29uZmlnOjc4OmNvbmZpZyBORVRfRFNBX1RBR19HU1dJUFxcbm5ldC9kc2EvS2NvbmZpZy03OS1cXHR0cmlzdGF0ZSBcXFwiVGFnIGRyaXZlciBmb3IgTGFudGlxIC8gSW50ZWwgR1NXSVAgc3dpdGNoZXNcXFwiXFxuLS1cXG5uZXQvZHNhL0tjb25maWctODMtXFxubmV0L2RzYS9LY29uZmlnOjg0OmNvbmZpZyBORVRfRFNBX1RBR19EU0FfQ09NTU9OXFxubmV0L2RzYS9LY29uZmlnLTg1LVxcdHRyaXN0YXRlXFxubmV0L2RzYS9LY29uZmlnLTg2LVxcbm5ldC9kc2EvS2NvbmZpZzo4Nzpjb25maWcgTkVUX0RTQV9UQUdfRFNBXFxubmV0L2RzYS9LY29uZmlnLTg4LVxcdHRyaXN0YXRlIFxcXCJUYWcgZHJpdmVyIGZvciBNYXJ2ZWxsIHN3aXRjaGVzIHVzaW5nIERTQSBoZWFkZXJzXFxcIlxcbi0tXFxubmV0L2RzYS9LY29uZmlnLTkzLVxcbm5ldC9kc2EvS2NvbmZpZzo5NDpjb25maWcgTkVUX0RTQV9UQUdfRURTQVxcbm5ldC9kc2EvS2NvbmZpZy05NS1cXHR0cmlzdGF0ZSBcXFwiVGFnIGRyaXZlciBmb3IgTWFydmVsbCBzd2l0Y2hlcyB1c2luZyBFdGhlclR5cGUgRFNBIGhlYWRlcnNcXFwiXFxuLS1cXG5uZXQvZHNhL0tjb25maWctMTAwLVxcbm5ldC9kc2EvS2NvbmZpZzoxMDE6Y29uZmlnIE5FVF9EU0FfVEFHX01US1xcbm5ldC9kc2EvS2NvbmZpZy0xMDItXFx0dHJpc3RhdGUgXFxcIlRhZyBkcml2ZXIgZm9yIE1lZGlhdGVrIHN3aXRjaGVzXFxcIlxcbi0tXFxubmV0L2RzYS9LY29uZmlnLTEwNi1cXG5uZXQvZHNhL0tjb25maWc6MTA3OmNvbmZpZyBORVRfRFNBX1RBR19NWExfODYyWFhcXG5uZXQvZHNhL0tjb25maWctMTA4LVxcdHRyaXN0YXRlIFxcXCJUYWcgZHJpdmVyIGZvciBNYXhMaW5lYXIgTXhMODYyeHggc3dpdGNoZXNcXFwiXFxuLS1cXG5uZXQvZHNhL0tjb25maWctMTEzLVxcbm5ldC9kc2EvS2NvbmZpZzoxMTQ6Y29uZmlnIE5FVF9EU0FfVEFHX01YTF9HU1cxWFhcXG5uZXQvZHNhL0tjb25maWctMTE1LVxcdHRyaXN0YXRlIFxcXCJUYWcgZHJpdmVyIGZvciBNYXhMaW5lYXIgR1NXMXh4IHN3aXRjaGVzXFxcIlxcbi0tXFxubmV0L2RzYS9LY29uZmlnLTEyMS1cXG5uZXQvZHNhL0tjb25maWc6MTIyOmNvbmZpZyBORVRfRFNBX1RBR19LU1pcXG5uZXQvZHNhL0tjb25maWctMTIzLVxcdHRyaXN0YXRlIFxcXCJUYWcgZHJpdmVyIGZvciBNaWNyb2NoaXAgODc5NS85Mzd4Lzk0NzcvOTg5MyBmYW1pbGllcyBvZiBzd2l0Y2hlc1xcXCJcXG4tLVxcbm5ldC9kc2EvS2NvbmZpZy0xMjctXFxubmV0L2RzYS9LY29uZmlnOjEyODpjb25maWcgTkVUX0RTQV9UQUdfTkVUQ1xcbm5ldC9kc2EvS2NvbmZpZy0xMjktXFx0dHJpc3RhdGUgXFxcIlRhZyBkcml2ZXIgZm9yIE5YUCBORVRDIHN3aXRjaGVzXFxcIlxcbi0tXFxubmV0L2RzYS9LY29uZmlnLTEzNy1cXG5uZXQvZHNhL0tjb25maWc6MTM4OmNvbmZpZyBORVRfRFNBX1RBR19PQ0VMT1RcXG5uZXQvZHNhL0tjb25maWctMTM5LVxcdHRyaXN0YXRlIFxcXCJUYWcgZHJpdmVyIGZvciBPY2Vsb3QgZmFtaWx5IG9mIHN3aXRjaGVzLCB1c2luZyBOUEkgcG9ydFxcXCJcXG4tLVxcbm5ldC9kc2EvS2NvbmZpZy0xNDgtXFxubmV0L2RzYS9LY29uZmlnOjE0OTpjb25maWcgTkVUX0RTQV9UQUdfT0NFTE9UXzgwMjFRXFxubmV0L2RzYS9LY29uZmlnLTE1MC1cXHR0cmlzdGF0ZSBcXFwiVGFnIGRyaXZlciBmb3IgT2NlbG90IGZhbWlseSBvZiBzd2l0Y2hlcywgdXNpbmcgVkxBTlxcXCJcXG4tLVxcbm5ldC9kc2EvS2NvbmZpZy0xNTgtXFxubmV0L2RzYS9LY29uZmlnOjE1OTpjb25maWcgTkVUX0RTQV9UQUdfUUNBXFxubmV0L2RzYS9LY29uZmlnLTE2MC1cXHR0cmlzdGF0ZSBcXFwiVGFnIGRyaXZlciBmb3IgUXVhbGNvbW0gQXRoZXJvcyBRQ0E4SyBzd2l0Y2hlc1xcXCJcXG4tLVxcbm5ldC9kc2EvS2NvbmZpZy0xNjQtXFxubmV0L2RzYS9LY29uZmlnOjE2NTpjb25maWcgTkVUX0RTQV9UQUdfUlRMNF9BXFxubmV0L2RzYS9LY29uZmlnLTE2Ni1cXHR0cmlzdGF0ZSBcXFwiVGFnIGRyaXZlciBmb3IgUmVhbHRlayA0IGJ5dGUgcHJvdG9jb2wgQSB0YWdzXFxcIlxcbi0tXFxubmV0L2RzYS9LY29uZmlnLTE3MS1cXG5uZXQvZHNhL0tjb25maWc6MTcyOmNvbmZpZyBORVRfRFNBX1RBR19SVEw4XzRcXG5uZXQvZHNhL0tjb25maWctMTczLVxcdHRyaXN0YXRlIFxcXCJUYWcgZHJpdmVyIGZvciBSZWFsdGVrIDggYnl0ZSBwcm90b2NvbCA0IHRhZ3NcXFwiXFxuLS1cXG5uZXQvZHNhL0tjb25maWctMTc3LVxcbm5ldC9kc2EvS2NvbmZpZzoxNzg6Y29uZmlnIE5FVF9EU0FfVEFHX1JaTjFfQTVQU1dcXG5uZXQvZHNhL0tjb25maWctMTc5LVxcdHRyaXN0YXRlIFxcXCJUYWcgZHJpdmVyIGZvciBSZW5lc2FzIFJaL04xIEE1UFNXIHN3aXRjaFxcXCJcXG4tLVxcbm5ldC9kc2EvS2NvbmZpZy0xODQtXFxubmV0L2RzYS9LY29uZmlnOjE4NTpjb25maWcgTkVUX0RTQV9UQUdfTEFOOTMwM1xcbm5ldC9kc2EvS2NvbmZpZy0xODYtXFx0dHJpc3RhdGUgXFxcIlRhZyBkcml2ZXIgZm9yIFNNU0MvTWljcm9jaGlwIExBTjkzMDMgZmFtaWx5IG9mIHN3aXRjaGVzXFxcIlxcbi0tXFxubmV0L2RzYS9LY29uZmlnLTE5MC1cXG5uZXQvZHNhL0tjb25maWc6MTkxOmNvbmZpZyBORVRfRFNBX1RBR19TSkExMTA1XFxubmV0L2RzYS9LY29uZmlnLTE5Mi1cXHR0cmlzdGF0ZSBcXFwiVGFnIGRyaXZlciBmb3IgTlhQIFNKQTExMDUgc3dpdGNoZXNcXFwiXFxuLS1cXG5uZXQvZHNhL0tjb25maWctMTk5LVxcbm5ldC9kc2EvS2NvbmZpZzoyMDA6Y29uZmlnIE5FVF9EU0FfVEFHX1RSQUlMRVJcXG5uZXQvZHNhL0tjb25maWctMjAxLVxcdHRyaXN0YXRlIFxcXCJUYWcgZHJpdmVyIGZvciBzd2l0Y2hlcyB1c2luZyBhIHRyYWlsZXIgdGFnXFxcIlxcbi0tXFxubmV0L2RzYS9LY29uZmlnLTIwNS1cXG5uZXQvZHNhL0tjb25maWc6MjA2OmNvbmZpZyBORVRfRFNBX1RBR19WU0M3M1hYXzgwMjFRXFxubmV0L2RzYS9LY29uZmlnLTIwNy1cXHR0cmlzdGF0ZSBcXFwiVGFnIGRyaXZlciBmb3IgTWljcm9jaGlwL1ZpdGVzc2UgVlNDNzN4eCBmYW1pbHkgb2Ygc3dpdGNoZXMsIHVzaW5nIFZMQU5cXFwiXFxuLS1cXG5uZXQvZHNhL0tjb25maWctMjExLVxcbm5ldC9kc2EvS2NvbmZpZzoyMTI6Y29uZmlnIE5FVF9EU0FfVEFHX1hSUzcwMFhcXG5uZXQvZHNhL0tjb25maWctMjEzLVxcdHRyaXN0YXRlIFxcXCJUYWcgZHJpdmVyIGZvciBYUlM3MDB4IHN3aXRjaGVzXFxcIlxcbi0tXFxubmV0L2RzYS9LY29uZmlnLTIxNy1cXG5uZXQvZHNhL0tjb25maWc6MjE4OmNvbmZpZyBORVRfRFNBX1RBR19ZVDkyMVhcXG5uZXQvZHNhL0tjb25maWctMjE5LVxcdHRyaXN0YXRlIFxcXCJUYWcgZHJpdmVyIGZvciBNb3RvcmNvbW0gWVQ5MjF4IHN3aXRjaGVzXFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0yNVQwODoyOToyNi42MTAxMjcyM1oiLCJTZXEiOjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMzODA0NDU3OTgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqRW5hYmxpbmcgRFNBIGZvciBGdXp6aW5nKipcblxuT2theSwgc28gd2UncmUgbG9va2luZyB0byBleHBhbmQgb3VyIGZ1enppbmcgY2FwYWJpbGl0aWVzIHdpdGhpbiB0aGUgbmV0d29ya2luZyBzdGFjay4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHdlIG5lZWQgdG8gZW5hYmxlIGBORVRfRFNBYCBhbmQgYWxzbyBzb21lIG9mIHRob3NlIHRhZ2dlcnMuIEJ1dCBob2xkIG9uLCBJIHJlbWVtYmVyIGBORVRfRFNBX0xPT1BgIOKAkyB0aGF0J3MgdGhlIG1vY2stdXAgc3dpdGNoIGNoaXAgc3VwcG9ydCwgaXNuJ3QgaXQ/IEJpbmdvISBUaGF0J3MgYSBwZXJmZWN0IGNhbmRpZGF0ZSBmb3IgZGVlcGVyIERTQSBmdXp6aW5nLiBUaGUgc2ltdWxhdGVkIGVudmlyb25tZW50IGl0IHByb3ZpZGVzIHNlZW1zIGlkZWFsLiBOb3csIGJlZm9yZSB3ZSBkaXZlIGluLCBJIG5lZWQgdG8gY29uZmlybSB0aGUgZGVwZW5kZW5jaWVzIGZvciBgTkVUX0RTQV9MT09QYC4gTGV0IG1lIHF1aWNrbHkgY2hlY2sgdGhvc2XigKYgZ290dGEgbWFrZSBzdXJlIGV2ZXJ5dGhpbmcgaXMgaW4gcGxhY2UgdG8gbWluaW1pemUgYW55IHNldHVwIGhlYWRhY2hlcy5cblxuXG4iLCJJbnB1dFRva2VucyI6MjY2ODksIk91dHB1dFRva2VucyI6MjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo1NywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNi0yNVQwODoyOToyOS45OTA1NzgwMjhaIiwiU2VxIjo4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjM0NTI5NjU0NywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgTkVUX0RTQV9MT09QXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L2RzYS9LY29uZmlnPTc9Y29uZmlnIE5FVF9EU0FfQkNNX1NGMlxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL0tjb25maWctMTgtXFxuZHJpdmVycy9uZXQvZHNhL0tjb25maWc6MTk6Y29uZmlnIE5FVF9EU0FfTE9PUFxcbmRyaXZlcnMvbmV0L2RzYS9LY29uZmlnLTIwLVxcdHRyaXN0YXRlIFxcXCJEU0EgbW9jay11cCBFdGhlcm5ldCBzd2l0Y2ggY2hpcCBzdXBwb3J0XFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0yNVQwODoyOTozMi4zMzU4ODAyNTVaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1Nzk1NDQxNTQzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdGhvdWdodCBwcm9jZXNzLCBzdW1tYXJpemVkIGFzIHlvdSByZXF1ZXN0ZWQ6XG5cbioqTmF2aWdhdGluZyB0aGUgQ29kZWJhc2U6IE5FVF9EU0FfTE9PUCBDb25maWd1cmF0aW9uKipcblxuT2theSwgc28gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGNvbmZpZ3VyYXRpb24gcmVsYXRlZCB0byB0aGUgYE5FVF9EU0FfTE9PUGAgZnVuY3Rpb25hbGl0eSB3aXRoaW4gdGhlIG5ldHdvcmsgRFNBIHN1YnN5c3RlbS4gV2hlcmUgd291bGQgdGhlIHJlbGV2YW50IHNldHRpbmdzIGJlIGRlZmluZWQ/IE15IGluaXRpYWwgaW5zdGluY3QgaXMgdG8gZ28gc3RyYWlnaHQgdG8gdGhlIGNvbmZpZ3VyYXRpb24gZmlsZXMuIEdpdmVuIHRoZSBuYXR1cmUgb2YgdGhpcyBmZWF0dXJlLCBJJ20gZXhwZWN0aW5nIHRvIGZpbmQgaXQgd2l0aGluIHRoZSBgZHJpdmVycy9uZXQvZHNhYCBkaXJlY3RvcnksIHdoaWNoIGlzIHRoZSBzdGFuZGFyZCBsb2NhdGlvbiBmb3IgRFNBIChEaXN0cmlidXRlZCBTd2l0Y2ggQXJjaGl0ZWN0dXJlKSByZWxhdGVkIGRyaXZlcnMuIE1vcmUgc3BlY2lmaWNhbGx5LCBJIHNob3VsZCBiZSBhYmxlIHRvIGRpZyBhcm91bmQgaW4gYEtjb25maWdgIGZpbGVzIGZvciBjb25maWd1cmF0aW9uIG9wdGlvbnMuIFRoZXJlZm9yZSwgSSB3aWxsIGNoZWNrIHRoZSBgZHJpdmVycy9uZXQvZHNhL0tjb25maWdgIGZpbGUuIFRoYXQncyB0aGUgbW9zdCBsb2dpY2FsIHN0YXJ0aW5nIHBvaW50IGZvciB1bmRlcnN0YW5kaW5nIGhvdyB0aGlzIGZlYXR1cmUgaXMgZW5hYmxlZCwgZGlzYWJsZWQsIGFuZCBjb25maWd1cmVkLiBJJ20gZXhwZWN0aW5nIHRvIGZpbmQgYSBjb25kaXRpb25hbCBzdGF0ZW1lbnQgb3IgZGVmaW5pdGlvbiBhc3NvY2lhdGVkIHdpdGggYE5FVF9EU0FfTE9PUGAgaW4gdGhlcmUuIExldCdzIHNlZSB3aGF0J3MgaW4gYGRyaXZlcnMvbmV0L2RzYS9LY29uZmlnYC5cblxuXG4iLCJJbnB1dFRva2VucyI6MjcwMDcsIk91dHB1dFRva2VucyI6MzYsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyNCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNi0yNVQwODoyOTozOC4xMzEzMjQ2NjhaIiwiU2VxIjoxMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTA4MzEwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L2RzYS9LY29uZmlnXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDE1LFxuICBcIkxpbmVDb3VudFwiOiAyMFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgIDE1OlxcdFxcdGhlbHBcXG4gIDE2OlxcdFxcdCAgVGhpcyBlbmFibGVzIHN1cHBvcnQgZm9yIHRoZSBCcm9hZGNvbSBTdGFyZmlnaHRlciAyIEV0aGVybmV0XFxuICAxNzpcXHRcXHQgIHN3aXRjaCBjaGlwcy5cXG4gIDE4OlxcdFxcbiAgMTk6XFx0Y29uZmlnIE5FVF9EU0FfTE9PUFxcbiAgMjA6XFx0XFx0dHJpc3RhdGUgXFxcIkRTQSBtb2NrLXVwIEV0aGVybmV0IHN3aXRjaCBjaGlwIHN1cHBvcnRcXFwiXFxuICAyMTpcXHRcXHRzZWxlY3QgTkVUX0RTQV9UQUdfTk9ORVxcbiAgMjI6XFx0XFx0c2VsZWN0IEZJWEVEX1BIWVxcbiAgMjM6XFx0XFx0aGVscFxcbiAgMjQ6XFx0XFx0ICBUaGlzIGVuYWJsZXMgc3VwcG9ydCBmb3IgYSBmYWtlIG1vY2stdXAgc3dpdGNoIGNoaXAgd2hpY2hcXG4gIDI1OlxcdFxcdCAgZXhlcmNpc2VzIHRoZSBEU0EgQVBJcy5cXG4gIDI2OlxcdFxcbiAgMjc6XFx0c291cmNlIFxcXCJkcml2ZXJzL25ldC9kc2EvaGlyc2NobWFubi9LY29uZmlnXFxcIlxcbiAgMjg6XFx0XFxuICAyOTpcXHRzb3VyY2UgXFxcImRyaXZlcnMvbmV0L2RzYS9sYW50aXEvS2NvbmZpZ1xcXCJcXG4gIDMwOlxcdFxcbiAgMzE6XFx0Y29uZmlnIE5FVF9EU0FfTVQ3NTMwXFxuICAzMjpcXHRcXHR0cmlzdGF0ZSBcXFwiTWVkaWFUZWsgTVQ3NTMwIGFuZCBNVDc1MzEgRXRoZXJuZXQgc3dpdGNoIHN1cHBvcnRcXFwiXFxuICAzMzpcXHRcXHRzZWxlY3QgTkVUX0RTQV9UQUdfTVRLXFxuICAzNDpcXHRcXHRzZWxlY3QgUkVHTUFQX0lSUVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0yNVQwODoyOTozOC4xMzE0MzU5MThaIiwiU2VxIjoxMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6OTk4Mjg0Mzg5NiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipJbnZlc3RpZ2F0aW5nIHRoZSBEU0EgTG9vcCBhbmQgVGFnZ2luZyBPcHRpb25zKipcblxuT2theSwgc28gYE5FVF9EU0FfTE9PUGAgaXMgY29uZmlndXJlZCB0byB1c2UgYE5FVF9EU0FfVEFHX05PTkVgIGJ5IGRlZmF1bHQuIFRoYXQncyBmaW5lLCBidXQgdGhpcyBwYXRjaCBzZWVtcyB0byBiZSB0b3VjaGluZyBhbGwgdGhlIG90aGVyIHRhZ2dlcnMuIElmIHdlJ3JlIHNlcmlvdXMgYWJvdXQgZnV6emluZyB0aGVzZSBvdGhlciB0YWdnZXJzLCB0aGVuIGl0J3MgcHJldHR5IGNsZWFyIHdlIG5lZWQgdG8gZW5hYmxlIHRoZW0uIEJ1dCB0aGUgcmVhbCBxdWVzdGlvbiBpcywgY2FuIHdlICphY3R1YWxseSogdXNlIGFueSBvZiB0aGVzZSBvdGhlciB0YWdnZXJzIGluIGNvbmp1bmN0aW9uIHdpdGggYGRzYV9sb29wYD8gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgaWYgdGhlcmUncyBhbnkga2luZCBvZiBjb21wYXRpYmlsaXR5IGhlcmUuIE15IGZpcnN0IHN0b3A/IExldCdzIGRpdmUgcmlnaHQgaW50byB0aGUgY29kZSBpdHNlbGYuIEknbSBnb2luZyB0byBjaGVjayBgZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmNgIGFuZCBzZWUgaWYgdGhlcmUgYXJlIGFueSBoaW50cyBvciBjb25maWd1cmF0aW9uIG9wdGlvbnMgaW4gdGhlcmUgdGhhdCB3b3VsZCBhbGxvdyBmb3IgZGlmZmVyZW50IHRhZ2dlcnMgdG8gd29yay4gSSdtIGV4cGVjdGluZyB0byBmaW5kIHNvbWUgaW5kaWNhdGlvbiBvZiBob3cgdGhlIHRhZ2dlciBpcyBzZWxlY3RlZCwgb3IgaWYgdGhlcmUgaXMgYSB3YXkgdG8gb3ZlcnJpZGUgdGhpcyBiZWhhdmlvdXIuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI3NTY1LCJPdXRwdXRUb2tlbnMiOjE4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6ODIsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wNi0yNVQwODoyOTo0OC4xMTQyODE4MzRaIiwiU2VxIjoxMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIyNzE2MzcwNTgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiZHNhX2xvb3BcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL2RzYS9kc2EucnN0PTE1OT1hbGwgYXR0YWNoZWQgc3dpdGNoIHBvcnRzIG11c3QgYmUgZG93biB3aGlsZSBkb2luZyB0aGlzKS5cXG5Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvZHNhL2RzYS5yc3QtMTYwLVxcbkRvY3VtZW50YXRpb24vbmV0d29ya2luZy9kc2EvZHNhLnJzdDoxNjE6SXQgaXMgZGVzaXJhYmxlIHRoYXQgYWxsIHRhZ2dpbmcgcHJvdG9jb2xzIGFyZSB0ZXN0YWJsZSB3aXRoIHRoZSBgYGRzYV9sb29wYGBcXG5Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvZHNhL2RzYS5yc3QtMTYyLW1vY2t1cCBkcml2ZXIsIHdoaWNoIGNhbiBiZSBhdHRhY2hlZCB0byBhbnkgbmV0d29yayBpbnRlcmZhY2UuIFRoZSBnb2FsIGlzIHRoYXRcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9NYWtlZmlsZT0zPWJjbS1zZjItb2Jqc1xcdFxcdFxcdDo9IGJjbV9zZjIubyBiY21fc2YyX2NmcC5vXFxuZHJpdmVycy9uZXQvZHNhL01ha2VmaWxlOjQ6b2JqLSQoQ09ORklHX05FVF9EU0FfTE9PUClcXHQrPSBkc2FfbG9vcC5vXFxuZHJpdmVycy9uZXQvZHNhL01ha2VmaWxlLTUtb2JqLSQoQ09ORklHX05FVF9EU0FfS1M4OTk1KSBcXHQrPSBrczg5OTUub1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMjQtXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MjU6c3RydWN0IGRzYV9sb29wX3ZsYW4ge1xcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTI2LVxcdHUxNiBtZW1iZXJzO1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMjktXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MzA6c3RydWN0IGRzYV9sb29wX21pYl9lbnRyeSB7XFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMzEtXFx0Y2hhciBuYW1lW0VUSF9HU1RSSU5HX0xFTl07XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0zNC1cXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzozNTplbnVtIGRzYV9sb29wX21pYl9jb3VudGVycyB7XFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMzYtXFx0RFNBX0xPT1BfUEhZX1JFQURfT0ssXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy00Mi1cXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzo0MzpzdHJ1Y3QgZHNhX2xvb3BfcG9ydCB7XFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6NDQ6XFx0c3RydWN0IGRzYV9sb29wX21pYl9lbnRyeSBtaWJbX19EU0FfTE9PUF9DTlRfTUFYXTtcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy00NS1cXHR1MTYgcHZpZDtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTQ4LVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjQ5OnN0cnVjdCBkc2FfbG9vcF9wcml2IHtcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy01MC1cXHRzdHJ1Y3QgbWlpX2J1c1xcdCpidXM7XFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtNTEtXFx0dW5zaWduZWQgaW50XFx0cG9ydF9iYXNlO1xcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjUyOlxcdHN0cnVjdCBkc2FfbG9vcF92bGFuIHZsYW5zW1ZMQU5fTl9WSURdO1xcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTUzLVxcdHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXY7XFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6NTQ6XFx0c3RydWN0IGRzYV9sb29wX3BvcnQgcG9ydHNbRFNBX01BWF9QT1JUU107XFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtNTUtfTtcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy01Ni1cXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzo1NzpzdHJ1Y3QgZHNhX2xvb3BfcGRhdGEge1xcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTU4LVxcdC8qIE11c3QgYmUgZmlyc3QsIHN1Y2ggdGhhdCBkc2FfcmVnaXN0ZXJfc3dpdGNoKCkgY2FuIGFjY2VzcyB0aGlzXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy02Ni1cXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzo2NzpzdGF0aWMgc3RydWN0IGRzYV9sb29wX21pYl9lbnRyeSBkc2FfbG9vcF9taWJzW10gPSB7XFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtNjgtXFx0W0RTQV9MT09QX1BIWV9SRUFEX09LXVxcdD0geyBcXFwicGh5X3JlYWRfb2tcXFwiLCB9LFxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM9NzU9c3RhdGljIHN0cnVjdCBtZGlvX2RldmljZSAqc3dpdGNoX21kaW9kZXY7XFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtNzYtXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6Nzc6ZW51bSBkc2FfbG9vcF9kZXZsaW5rX3Jlc291cmNlX2lkIHtcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy03OC1cXHREU0FfTE9PUF9ERVZMSU5LX1BBUkFNX0lEX05PTkUsICAvKiBERVZMSU5LX1JFU09VUkNFX0lEX1BBUkVOVF9UT1AgKi9cXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTgxLVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjgyOnN0YXRpYyB1NjQgZHNhX2xvb3BfZGV2bGlua192dHVfZ2V0KHZvaWQgKnByaXYpXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtODMte1xcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjg0OlxcdHN0cnVjdCBkc2FfbG9vcF9wcml2ICpwcyA9IHByaXY7XFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtODUtXFx0dW5zaWduZWQgaW50IGksIGNvdW50ID0gMDtcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzo4NjpcXHRzdHJ1Y3QgZHNhX2xvb3BfdmxhbiAqdmw7XFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtODctXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy05Ni1cXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzo5NzpzdGF0aWMgaW50IGRzYV9sb29wX3NldHVwX2RldmxpbmtfcmVzb3VyY2VzKHN0cnVjdCBkc2Ffc3dpdGNoICpkcylcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy05OC17XFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtOTktXFx0c3RydWN0IGRldmxpbmtfcmVzb3VyY2Vfc2l6ZV9wYXJhbXMgc2l6ZV9wYXJhbXM7XFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MTAwOlxcdHN0cnVjdCBkc2FfbG9vcF9wcml2ICpwcyA9IGRzLVxcdTAwM2Vwcml2O1xcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTEwMS1cXHRpbnQgZXJyO1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMTE1LVxcdFxcdFxcdFxcdFxcdCAgICAgIERTQV9MT09QX0RFVkxJTktfUEFSQU1fSURfVlRVLFxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjExNjpcXHRcXHRcXHRcXHRcXHQgICAgICBkc2FfbG9vcF9kZXZsaW5rX3Z0dV9nZXQsIHBzKTtcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0xMTctXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0xMjQtXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MTI1OnN0YXRpYyBlbnVtIGRzYV90YWdfcHJvdG9jb2wgZHNhX2xvb3BfZ2V0X3Byb3RvY29sKHN0cnVjdCBkc2Ffc3dpdGNoICpkcyxcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0xMjYtXFx0XFx0XFx0XFx0XFx0XFx0ICAgaW50IHBvcnQsXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0xMzMtXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MTM0OnN0YXRpYyBpbnQgZHNhX2xvb3Bfc2V0dXAoc3RydWN0IGRzYV9zd2l0Y2ggKmRzKVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTEzNS17XFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MTM2OlxcdHN0cnVjdCBkc2FfbG9vcF9wcml2ICpwcyA9IGRzLVxcdTAwM2Vwcml2O1xcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTEzNy1cXHR1bnNpZ25lZCBpbnQgaTtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTEzOS1cXHRmb3IgKGkgPSAwOyBpIFxcdTAwM2MgZHMtXFx1MDAzZW51bV9wb3J0czsgaSsrKVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjE0MDpcXHRcXHRtZW1jcHkocHMtXFx1MDAzZXBvcnRzW2ldLm1pYiwgZHNhX2xvb3BfbWlicyxcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzoxNDE6XFx0XFx0ICAgICAgIHNpemVvZihkc2FfbG9vcF9taWJzKSk7XFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMTQyLVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMTQ0LVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjE0NTpcXHRyZXR1cm4gZHNhX2xvb3Bfc2V0dXBfZGV2bGlua19yZXNvdXJjZXMoZHMpO1xcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTE0Ni19XFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMTQ3LVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjE0ODpzdGF0aWMgdm9pZCBkc2FfbG9vcF90ZWFyZG93bihzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMpXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMTQ5LXtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTE1Mi1cXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzoxNTM6c3RhdGljIGludCBkc2FfbG9vcF9nZXRfc3NldF9jb3VudChzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMsIGludCBwb3J0LCBpbnQgc3NldClcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0xNTQte1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMTYwLVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjE2MTpzdGF0aWMgdm9pZCBkc2FfbG9vcF9nZXRfc3RyaW5ncyhzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMsIGludCBwb3J0LFxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTE2Mi1cXHRcXHRcXHRcXHQgdTMyIHN0cmluZ3NldCwgdWludDhfdCAqZGF0YSlcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0xNjMte1xcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjE2NDpcXHRzdHJ1Y3QgZHNhX2xvb3BfcHJpdiAqcHMgPSBkcy1cXHUwMDNlcHJpdjtcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0xNjUtXFx0dW5zaWduZWQgaW50IGk7XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0xNzMtXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MTc0OnN0YXRpYyB2b2lkIGRzYV9sb29wX2dldF9ldGh0b29sX3N0YXRzKHN0cnVjdCBkc2Ffc3dpdGNoICpkcywgaW50IHBvcnQsXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMTc1LVxcdFxcdFxcdFxcdCAgICAgICB1aW50NjRfdCAqZGF0YSlcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0xNzYte1xcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjE3NzpcXHRzdHJ1Y3QgZHNhX2xvb3BfcHJpdiAqcHMgPSBkcy1cXHUwMDNlcHJpdjtcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0xNzgtXFx0dW5zaWduZWQgaW50IGk7XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0xODMtXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MTg0OnN0YXRpYyBpbnQgZHNhX2xvb3BfcGh5X3JlYWQoc3RydWN0IGRzYV9zd2l0Y2ggKmRzLCBpbnQgcG9ydCwgaW50IHJlZ251bSlcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0xODUte1xcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjE4NjpcXHRzdHJ1Y3QgZHNhX2xvb3BfcHJpdiAqcHMgPSBkcy1cXHUwMDNlcHJpdjtcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0xODctXFx0c3RydWN0IG1paV9idXMgKmJ1cyA9IHBzLVxcdTAwM2VidXM7XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0xOTgtXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MTk5OnN0YXRpYyBpbnQgZHNhX2xvb3BfcGh5X3dyaXRlKHN0cnVjdCBkc2Ffc3dpdGNoICpkcywgaW50IHBvcnQsXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMjAwLVxcdFxcdFxcdCAgICAgIGludCByZWdudW0sIHUxNiB2YWx1ZSlcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0yMDEte1xcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjIwMjpcXHRzdHJ1Y3QgZHNhX2xvb3BfcHJpdiAqcHMgPSBkcy1cXHUwMDNlcHJpdjtcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0yMDMtXFx0c3RydWN0IG1paV9idXMgKmJ1cyA9IHBzLVxcdTAwM2VidXM7XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0yMTQtXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MjE1OnN0YXRpYyBpbnQgZHNhX2xvb3BfcG9ydF9icmlkZ2Vfam9pbihzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMsIGludCBwb3J0LFxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTIxNi1cXHRcXHRcXHRcXHQgICAgIHN0cnVjdCBkc2FfYnJpZGdlIGJyaWRnZSxcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTIyNS1cXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzoyMjY6c3RhdGljIHZvaWQgZHNhX2xvb3BfcG9ydF9icmlkZ2VfbGVhdmUoc3RydWN0IGRzYV9zd2l0Y2ggKmRzLCBpbnQgcG9ydCxcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0yMjctXFx0XFx0XFx0XFx0ICAgICAgIHN0cnVjdCBkc2FfYnJpZGdlIGJyaWRnZSlcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTIzMi1cXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzoyMzM6c3RhdGljIHZvaWQgZHNhX2xvb3BfcG9ydF9zdHBfc3RhdGVfc2V0KHN0cnVjdCBkc2Ffc3dpdGNoICpkcywgaW50IHBvcnQsXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMjM0LVxcdFxcdFxcdFxcdFxcdHU4IHN0YXRlKVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMjM5LVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjI0MDpzdGF0aWMgaW50IGRzYV9sb29wX3BvcnRfdmxhbl9maWx0ZXJpbmcoc3RydWN0IGRzYV9zd2l0Y2ggKmRzLCBpbnQgcG9ydCxcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0yNDEtXFx0XFx0XFx0XFx0XFx0Ym9vbCB2bGFuX2ZpbHRlcmluZyxcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTI0OS1cXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzoyNTA6c3RhdGljIGludCBkc2FfbG9vcF9wb3J0X3ZsYW5fYWRkKHN0cnVjdCBkc2Ffc3dpdGNoICpkcywgaW50IHBvcnQsXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMjUxLVxcdFxcdFxcdFxcdCAgY29uc3Qgc3RydWN0IHN3aXRjaGRldl9vYmpfcG9ydF92bGFuICp2bGFuLFxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMjU1LVxcdGJvb2wgcHZpZCA9IHZsYW4tXFx1MDAzZWZsYWdzIFxcdTAwMjYgQlJJREdFX1ZMQU5fSU5GT19QVklEO1xcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjI1NjpcXHRzdHJ1Y3QgZHNhX2xvb3BfcHJpdiAqcHMgPSBkcy1cXHUwMDNlcHJpdjtcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0yNTctXFx0c3RydWN0IG1paV9idXMgKmJ1cyA9IHBzLVxcdTAwM2VidXM7XFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MjU4OlxcdHN0cnVjdCBkc2FfbG9vcF92bGFuICp2bDtcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0yNTktXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0yODItXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MjgzOnN0YXRpYyBpbnQgZHNhX2xvb3BfcG9ydF92bGFuX2RlbChzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMsIGludCBwb3J0LFxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTI4NC1cXHRcXHRcXHRcXHQgIGNvbnN0IHN0cnVjdCBzd2l0Y2hkZXZfb2JqX3BvcnRfdmxhbiAqdmxhbilcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTI4Ni1cXHRib29sIHVudGFnZ2VkID0gdmxhbi1cXHUwMDNlZmxhZ3MgXFx1MDAyNiBCUklER0VfVkxBTl9JTkZPX1VOVEFHR0VEO1xcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjI4NzpcXHRzdHJ1Y3QgZHNhX2xvb3BfcHJpdiAqcHMgPSBkcy1cXHUwMDNlcHJpdjtcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0yODgtXFx0dTE2IHB2aWQgPSBwcy1cXHUwMDNlcG9ydHNbcG9ydF0ucHZpZDtcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0yODktXFx0c3RydWN0IG1paV9idXMgKmJ1cyA9IHBzLVxcdTAwM2VidXM7XFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MjkwOlxcdHN0cnVjdCBkc2FfbG9vcF92bGFuICp2bDtcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0yOTEtXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0zMTAtXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MzExOnN0YXRpYyBpbnQgZHNhX2xvb3BfcG9ydF9jaGFuZ2VfbXR1KHN0cnVjdCBkc2Ffc3dpdGNoICpkcywgaW50IHBvcnQsXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMzEyLVxcdFxcdFxcdFxcdCAgICBpbnQgbmV3X210dSlcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0zMTMte1xcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjMxNDpcXHRzdHJ1Y3QgZHNhX2xvb3BfcHJpdiAqcHJpdiA9IGRzLVxcdTAwM2Vwcml2O1xcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTMxNS1cXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTMyMC1cXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzozMjE6c3RhdGljIGludCBkc2FfbG9vcF9wb3J0X21heF9tdHUoc3RydWN0IGRzYV9zd2l0Y2ggKmRzLCBpbnQgcG9ydClcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0zMjIte1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMzI1LVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjMyNjpzdGF0aWMgdm9pZCBkc2FfbG9vcF9waHlsaW5rX2dldF9jYXBzKHN0cnVjdCBkc2Ffc3dpdGNoICpkc2EsIGludCBwb3J0LFxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTMyNy1cXHRcXHRcXHRcXHQgICAgICBzdHJ1Y3QgcGh5bGlua19jb25maWcgKmNvbmZpZylcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTMzMy1cXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzozMzQ6c3RhdGljIGNvbnN0IHN0cnVjdCBkc2Ffc3dpdGNoX29wcyBkc2FfbG9vcF9kcml2ZXIgPSB7XFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MzM1OlxcdC5nZXRfdGFnX3Byb3RvY29sXFx0PSBkc2FfbG9vcF9nZXRfcHJvdG9jb2wsXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MzM2OlxcdC5zZXR1cFxcdFxcdFxcdD0gZHNhX2xvb3Bfc2V0dXAsXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MzM3OlxcdC50ZWFyZG93blxcdFxcdD0gZHNhX2xvb3BfdGVhcmRvd24sXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MzM4OlxcdC5nZXRfc3RyaW5nc1xcdFxcdD0gZHNhX2xvb3BfZ2V0X3N0cmluZ3MsXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MzM5OlxcdC5nZXRfZXRodG9vbF9zdGF0c1xcdD0gZHNhX2xvb3BfZ2V0X2V0aHRvb2xfc3RhdHMsXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MzQwOlxcdC5nZXRfc3NldF9jb3VudFxcdFxcdD0gZHNhX2xvb3BfZ2V0X3NzZXRfY291bnQsXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MzQxOlxcdC5nZXRfZXRodG9vbF9waHlfc3RhdHNcXHQ9IGRzYV9sb29wX2dldF9ldGh0b29sX3N0YXRzLFxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjM0MjpcXHQucGh5X3JlYWRcXHRcXHQ9IGRzYV9sb29wX3BoeV9yZWFkLFxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjM0MzpcXHQucGh5X3dyaXRlXFx0XFx0PSBkc2FfbG9vcF9waHlfd3JpdGUsXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MzQ0OlxcdC5wb3J0X2JyaWRnZV9qb2luXFx0PSBkc2FfbG9vcF9wb3J0X2JyaWRnZV9qb2luLFxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjM0NTpcXHQucG9ydF9icmlkZ2VfbGVhdmVcXHQ9IGRzYV9sb29wX3BvcnRfYnJpZGdlX2xlYXZlLFxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjM0NjpcXHQucG9ydF9zdHBfc3RhdGVfc2V0XFx0PSBkc2FfbG9vcF9wb3J0X3N0cF9zdGF0ZV9zZXQsXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MzQ3OlxcdC5wb3J0X3ZsYW5fZmlsdGVyaW5nXFx0PSBkc2FfbG9vcF9wb3J0X3ZsYW5fZmlsdGVyaW5nLFxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjM0ODpcXHQucG9ydF92bGFuX2FkZFxcdFxcdD0gZHNhX2xvb3BfcG9ydF92bGFuX2FkZCxcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzozNDk6XFx0LnBvcnRfdmxhbl9kZWxcXHRcXHQ9IGRzYV9sb29wX3BvcnRfdmxhbl9kZWwsXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MzUwOlxcdC5wb3J0X2NoYW5nZV9tdHVcXHQ9IGRzYV9sb29wX3BvcnRfY2hhbmdlX210dSxcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzozNTE6XFx0LnBvcnRfbWF4X210dVxcdFxcdD0gZHNhX2xvb3BfcG9ydF9tYXhfbXR1LFxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjM1MjpcXHQucGh5bGlua19nZXRfY2Fwc1xcdD0gZHNhX2xvb3BfcGh5bGlua19nZXRfY2FwcyxcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0zNTMtfTtcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0zNTQtXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MzU1OnN0YXRpYyBpbnQgZHNhX2xvb3BfZHJ2X3Byb2JlKHN0cnVjdCBtZGlvX2RldmljZSAqbWRpb2RldilcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0zNTYte1xcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjM1NzpcXHRzdHJ1Y3QgZHNhX2xvb3BfcGRhdGEgKnBkYXRhID0gbWRpb2Rldi1cXHUwMDNlZGV2LnBsYXRmb3JtX2RhdGE7XFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MzU4OlxcdHN0cnVjdCBkc2FfbG9vcF9wcml2ICpwcztcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0zNTktXFx0c3RydWN0IGRzYV9zd2l0Y2ggKmRzO1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMzgyLVxcdGRzLVxcdTAwM2VkZXYgPSBcXHUwMDI2bWRpb2Rldi1cXHUwMDNlZGV2O1xcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjM4MzpcXHRkcy1cXHUwMDNlb3BzID0gXFx1MDAyNmRzYV9sb29wX2RyaXZlcjtcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0zODQtXFx0ZHMtXFx1MDAzZXByaXYgPSBwcztcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTM5Ni1cXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzozOTc6c3RhdGljIHZvaWQgZHNhX2xvb3BfZHJ2X3JlbW92ZShzdHJ1Y3QgbWRpb19kZXZpY2UgKm1kaW9kZXYpXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMzk4LXtcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0zOTktXFx0c3RydWN0IGRzYV9zd2l0Y2ggKmRzID0gZGV2X2dldF9kcnZkYXRhKFxcdTAwMjZtZGlvZGV2LVxcdTAwM2VkZXYpO1xcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjQwMDpcXHRzdHJ1Y3QgZHNhX2xvb3BfcHJpdiAqcHM7XFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtNDAxLVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtNDEwLVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjQxMTpzdGF0aWMgdm9pZCBkc2FfbG9vcF9kcnZfc2h1dGRvd24oc3RydWN0IG1kaW9fZGV2aWNlICptZGlvZGV2KVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTQxMi17XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy00MjItXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6NDIzOnN0YXRpYyBzdHJ1Y3QgbWRpb19kcml2ZXIgZHNhX2xvb3BfZHJ2ID0ge1xcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTQyNC1cXHQubWRpb2Rydi5kcml2ZXJcXHQ9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTQyNi1cXHR9LFxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjQyNzpcXHQucHJvYmVcXHQ9IGRzYV9sb29wX2Rydl9wcm9iZSxcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzo0Mjg6XFx0LnJlbW92ZVxcdD0gZHNhX2xvb3BfZHJ2X3JlbW92ZSxcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzo0Mjk6XFx0LnNodXRkb3duID0gZHNhX2xvb3BfZHJ2X3NodXRkb3duLFxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTQzMC19O1xcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTQzMS1cXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzo0MzI6c3RhdGljIGludCBkc2FfbG9vcF9idXNfbWF0Y2goc3RydWN0IGRldmljZSAqZGV2LFxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTQzMy1cXHRcXHRcXHQgICAgICBjb25zdCBzdHJ1Y3QgZGV2aWNlX2RyaXZlciAqZHJ2KVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTQzNC17XFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6NDM1OlxcdHJldHVybiBkcnYgPT0gXFx1MDAyNmRzYV9sb29wX2Rydi5tZGlvZHJ2LmRyaXZlcjtcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy00MzYtfVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTQzNy1cXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzo0Mzg6c3RhdGljIHZvaWQgZHNhX2xvb3BfcGh5ZGV2c191bnJlZ2lzdGVyKHZvaWQpXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtNDM5LXtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTQ0NS1cXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzo0NDY6c3RhdGljIGludCBfX2luaXQgZHNhX2xvb3BfY3JlYXRlX3N3aXRjaF9tZGlvZGV2KHZvaWQpXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtNDQ3LXtcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzo0NDg6XFx0c3RhdGljIHN0cnVjdCBkc2FfbG9vcF9wZGF0YSBkc2FfbG9vcF9wZGF0YSA9IHtcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy00NDktXFx0XFx0LmNkID0ge1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtNDcwLVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjQ3MTpcXHRzd2l0Y2hfbWRpb2Rldi1cXHUwMDNlYnVzX21hdGNoID0gZHNhX2xvb3BfYnVzX21hdGNoO1xcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjQ3MjpcXHRzd2l0Y2hfbWRpb2Rldi1cXHUwMDNlZGV2LnBsYXRmb3JtX2RhdGEgPSBcXHUwMDI2ZHNhX2xvb3BfcGRhdGE7XFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtNDczLVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtNDgxLVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjQ4MjpzdGF0aWMgaW50IF9faW5pdCBkc2FfbG9vcF9pbml0KHZvaWQpXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtNDgzLXtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTQ4Ni1cXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzo0ODc6XFx0cmV0ID0gZHNhX2xvb3BfY3JlYXRlX3N3aXRjaF9tZGlvZGV2KCk7XFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtNDg4LVxcdGlmIChyZXQpXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy00OTMtXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6NDk0OlxcdHJldCA9IG1kaW9fZHJpdmVyX3JlZ2lzdGVyKFxcdTAwMjZkc2FfbG9vcF9kcnYpO1xcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTQ5NS1cXHRpZiAocmV0KSB7XFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6NDk2OlxcdFxcdGRzYV9sb29wX3BoeWRldnNfdW5yZWdpc3RlcigpO1xcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTQ5Ny1cXHRcXHRtZGlvX2RldmljZV9yZW1vdmUoc3dpdGNoX21kaW9kZXYpO1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtNTAyLX1cXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzo1MDM6bW9kdWxlX2luaXQoZHNhX2xvb3BfaW5pdCk7XFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtNTA0LVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjUwNTpzdGF0aWMgdm9pZCBfX2V4aXQgZHNhX2xvb3BfZXhpdCh2b2lkKVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTUwNi17XFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6NTA3OlxcdG1kaW9fZHJpdmVyX3VucmVnaXN0ZXIoXFx1MDAyNmRzYV9sb29wX2Rydik7XFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6NTA4OlxcdGRzYV9sb29wX3BoeWRldnNfdW5yZWdpc3RlcigpO1xcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTUwOS1cXHRtZGlvX2RldmljZV9yZW1vdmUoc3dpdGNoX21kaW9kZXYpO1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtNTExLX1cXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzo1MTI6bW9kdWxlX2V4aXQoZHNhX2xvb3BfZXhpdCk7XFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtNTEzLVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0yNVQwODoyOTo1MC4zODU5MjU2OTJaIiwiU2VxIjoxMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MTA1NDkzNDc3NjUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqRFNBIFN3aXRjaCBJbnN0YW50aWF0aW9uIGFuZCBGdXp6aW5nIFN0cmF0ZWd5KipcblxuT2theSwgc28gYGRzYV9sb29wYCB1c2VzIGBORVRfRFNBX1RBR19OT05FYC4gQW5kIGBkc2FfbG9vcF9nZXRfcHJvdG9jb2xgIHJldHVybnMgYERTQV9UQUdfUFJPVE9fTk9ORWAuIFRoYXQncyB0aGUgYmFzZWxpbmUuIENhbiB3ZSBsZXZlcmFnZSB0aGlzIHRvIGZ1enogb3RoZXIgdGFnZ2VycywgbWF5YmU/IFRoZSBrZXkgaXMgZ29pbmcgdG8gYmUgZmlndXJpbmcgb3V0IGhvdyB0byBnZXQgdHJhZmZpYyByb3V0ZWQgKnRocm91Z2gqIHRoZSBEU0EgaW5mcmFzdHJ1Y3R1cmUuXG5cblN5emthbGxlciBpcyBncmVhdCB3aXRoIHBhY2tldCBpbmplY3Rpb24gdGhyb3VnaCBgdHVuYC9gdGFwYCwgYG1hYzgwMjExX2h3c2ltYCwgYW5kIGV2ZW4gYGR1bW15YCBpbnRlcmZhY2VzLiBUaGUgaW1tZWRpYXRlIHF1ZXN0aW9uIGlzLCBpZiB3ZSAqZW5hYmxlKiBgTkVUX0RTQWAgYW5kIHNvbWUgb2YgdGhlc2UgdGFnZ2VycywgY2FuIHN5emthbGxlciBhY3R1YWxseSAqcmVhY2gqIHRoZW0/XG5cbk5vdywgcmVtZW1iZXIgaG93IGBkc2Ffc3dpdGNoX3JjdmAgZ2V0cyBjYWxsZWQ/IEl0J3MgZnJvbSBgbmV0aWZfcmVjZWl2ZV9za2JfY29yZWAgKmlmKiBgc2tiLVx1MDAzZWRldi1cdTAwM2Vkc2FfcHRyYCBpcyBzZXQuIFJpZ2h0LCBhbmQgdG8gaGF2ZSBgc2tiLVx1MDAzZWRldi1cdTAwM2Vkc2FfcHRyYCBzZXQsIHlvdSBuZWVkIGEgRFNBIHN3aXRjaCBhdHRhY2hlZCB0byBhIGBuZXRfZGV2aWNlYC4gU28gdGhlIHJlYWwgcXVlc3Rpb24gaXM6IGNhbiBzeXprYWxsZXIgKmNyZWF0ZSogYSBEU0Egc3dpdGNoP1xuXG5JdCBoYXMgYHN5el9nZW5ldGxpbmtfZ2V0X2ZhbWlseWAgYW5kIG90aGVyIG5ldGxpbmsgYml0cywgd2hpY2ggbWlnaHQgYmUgaGVscGZ1bC4gQnV0IERTQSBzd2l0Y2hlcyBhcmUgdHlwaWNhbGx5IHNldCB1cCB0aHJvdWdoIGRldmljZSB0cmVlLCBwbGF0Zm9ybSBkYXRhLCBvciBldmVuIEkyQy9NRElPIGRldmljZXMuIFRoYXQgc2VlbXMgZGlmZmljdWx0IHRvIGVtdWxhdGUuXG5cbldhaXQgYSBzZWNvbmQsIHN5emthbGxlciBkb2VzIGhhdmUgY2xldmVyIHZpcnR1YWxpemF0aW9uIHRyaWNrcyBmb3Igb3RoZXIgc3Vic3lzdGVtcy4gSXQgaGFzIGB2aGNpYCBmb3IgVVNCLCBgbWFjODAyMTFfaHdzaW1gIGZvciB3aWZpLiBTbyB0aGUgcXVlc3Rpb24gYmVjb21lcywgZG9lcyBpdCBoYXZlIGEgd2F5IHRvIGluc3RhbnRpYXRlIERTQSBzd2l0Y2hlcyBzb21laG93PyBBIHZpcnR1YWwgb25lLCBvciBwZXJoYXBzIGEgd2F5IHRvIGZha2UgdGhlIGRhdGEgc3RydWN0dXJlcyByZXF1aXJlZD9cblxuT2theSwgdGltZSB0byBzdG9wIHNwZWN1bGF0aW5nLiBMZXQncyBzZWUgaWYgdGhlcmUgaXMgYW55IGV4aXN0aW5nIHN5emthbGxlciBkZXNjcmlwdGlvbiwgYSBkZWRpY2F0ZWQgb25lLCBvZiBEU0EgZGV2aWNlcy4gVGhhdCdzIHRoZSBmaXJzdCBwbGFjZSB0byBsb29rLiBNYXliZSBzb21lb25lIGhhcyBhbHJlYWR5IGZpZ3VyZWQgb3V0IGhvdyB0byBkbyB0aGlzLlxuXG5cbiIsIklucHV0VG9rZW5zIjozNDUzMiwiT3V0cHV0VG9rZW5zIjoyNywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI3OCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNi0yNVQwODozMDowMC45MzUyNzY1NDdaIiwiU2VxIjoxNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI5NDMxMzk5NCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJkc2FcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L2RzYS9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiXFxuRnVsbCBvdXRwdXQgaXMgdG9vIGxvbmcsIHNob3dpbmcgNTAwIG91dCBvZiA4MTA0IGxpbmVzLlxcblVzZSBtb3JlIHByZWNpc2UgZXhwcmVzc2lvbiBpZiBwb3NzaWJsZS5cXG5cXG5uZXQvZHNhL01ha2VmaWxlPTY9ZW5kaWZcXG4tLVxcbm5ldC9kc2EvTWFrZWZpbGUtOC0jIHRoZSBjb3JlXFxubmV0L2RzYS9NYWtlZmlsZTo5Om9iai0kKENPTkZJR19ORVRfRFNBKSArPSBkc2FfY29yZS5vXFxubmV0L2RzYS9NYWtlZmlsZToxMDpkc2FfY29yZS15ICs9IFxcXFxcXG5uZXQvZHNhL01ha2VmaWxlLTExLVxcdGNvbmR1aXQubyBcXFxcXFxubmV0L2RzYS9NYWtlZmlsZS0xMi1cXHRkZXZsaW5rLm8gXFxcXFxcbm5ldC9kc2EvTWFrZWZpbGU6MTM6XFx0ZHNhLm8gXFxcXFxcbm5ldC9kc2EvTWFrZWZpbGUtMTQtXFx0bmV0bGluay5vIFxcXFxcXG4tLVxcbm5ldC9kc2EvTWFrZWZpbGU9MjQ9b2JqLSQoQ09ORklHX05FVF9EU0FfVEFHX0JSQ01fQ09NTU9OKSArPSB0YWdfYnJjbS5vXFxubmV0L2RzYS9NYWtlZmlsZToyNTpvYmotJChDT05GSUdfTkVUX0RTQV9UQUdfRFNBX0NPTU1PTikgKz0gdGFnX2RzYS5vXFxubmV0L2RzYS9NYWtlZmlsZS0yNi1vYmotJChDT05GSUdfTkVUX0RTQV9UQUdfR1NXSVApICs9IHRhZ19nc3dpcC5vXFxuLS1cXG5uZXQvZHNhL2NvbmR1aXQuYy0xMS0jaW5jbHVkZSBcXHUwMDNjbGludXgvbmV0bGluay5oXFx1MDAzZVxcbm5ldC9kc2EvY29uZHVpdC5jOjEyOiNpbmNsdWRlIFxcdTAwM2NuZXQvZHNhLmhcXHUwMDNlXFxubmV0L2RzYS9jb25kdWl0LmMtMTMtI2luY2x1ZGUgXFx1MDAzY25ldC9uZXRkZXZfbG9jay5oXFx1MDAzZVxcbi0tXFxubmV0L2RzYS9jb25kdWl0LmMtMTUtI2luY2x1ZGUgXFxcImNvbmR1aXQuaFxcXCJcXG5uZXQvZHNhL2NvbmR1aXQuYzoxNjojaW5jbHVkZSBcXFwiZHNhLmhcXFwiXFxubmV0L2RzYS9jb25kdWl0LmMtMTctI2luY2x1ZGUgXFxcInBvcnQuaFxcXCJcXG4tLVxcbm5ldC9kc2EvY29uZHVpdC5jLTE5LVxcbm5ldC9kc2EvY29uZHVpdC5jOjIwOnN0YXRpYyBpbnQgZHNhX2NvbmR1aXRfZ2V0X3JlZ3NfbGVuKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXFxubmV0L2RzYS9jb25kdWl0LmMtMjEte1xcbm5ldC9kc2EvY29uZHVpdC5jOjIyOlxcdHN0cnVjdCBkc2FfcG9ydCAqY3B1X2RwID0gZGV2LVxcdTAwM2Vkc2FfcHRyO1xcbm5ldC9kc2EvY29uZHVpdC5jLTIzLVxcdGNvbnN0IHN0cnVjdCBldGh0b29sX29wcyAqb3BzID0gY3B1X2RwLVxcdTAwM2VvcmlnX2V0aHRvb2xfb3BzO1xcbm5ldC9kc2EvY29uZHVpdC5jOjI0OlxcdHN0cnVjdCBkc2Ffc3dpdGNoICpkcyA9IGNwdV9kcC1cXHUwMDNlZHM7XFxubmV0L2RzYS9jb25kdWl0LmMtMjUtXFx0aW50IHBvcnQgPSBjcHVfZHAtXFx1MDAzZWluZGV4O1xcbi0tXFxubmV0L2RzYS9jb25kdWl0LmMtNDgtXFxubmV0L2RzYS9jb25kdWl0LmM6NDk6c3RhdGljIHZvaWQgZHNhX2NvbmR1aXRfZ2V0X3JlZ3Moc3RydWN0IG5ldF9kZXZpY2UgKmRldixcXG5uZXQvZHNhL2NvbmR1aXQuYy01MC1cXHRcXHRcXHRcXHQgc3RydWN0IGV0aHRvb2xfcmVncyAqcmVncywgdm9pZCAqZGF0YSlcXG5uZXQvZHNhL2NvbmR1aXQuYy01MS17XFxubmV0L2RzYS9jb25kdWl0LmM6NTI6XFx0c3RydWN0IGRzYV9wb3J0ICpjcHVfZHAgPSBkZXYtXFx1MDAzZWRzYV9wdHI7XFxubmV0L2RzYS9jb25kdWl0LmMtNTMtXFx0Y29uc3Qgc3RydWN0IGV0aHRvb2xfb3BzICpvcHMgPSBjcHVfZHAtXFx1MDAzZW9yaWdfZXRodG9vbF9vcHM7XFxubmV0L2RzYS9jb25kdWl0LmM6NTQ6XFx0c3RydWN0IGRzYV9zd2l0Y2ggKmRzID0gY3B1X2RwLVxcdTAwM2VkcztcXG5uZXQvZHNhL2NvbmR1aXQuYy01NS1cXHRzdHJ1Y3QgZXRodG9vbF9kcnZpbmZvICpjcHVfaW5mbztcXG4tLVxcbm5ldC9kc2EvY29uZHVpdC5jLTY5LVxcdGNwdV9pbmZvID0gKHN0cnVjdCBldGh0b29sX2RydmluZm8gKilkYXRhO1xcbm5ldC9kc2EvY29uZHVpdC5jOjcwOlxcdHN0cnNjcHkoY3B1X2luZm8tXFx1MDAzZWRyaXZlciwgXFxcImRzYVxcXCIsIHNpemVvZihjcHVfaW5mby1cXHUwMDNlZHJpdmVyKSk7XFxubmV0L2RzYS9jb25kdWl0LmMtNzEtXFx0ZGF0YSArPSBzaXplb2YoKmNwdV9pbmZvKTtcXG4tLVxcbm5ldC9kc2EvY29uZHVpdC5jLTgzLVxcbm5ldC9kc2EvY29uZHVpdC5jOjg0OnN0YXRpYyBzc2l6ZV90IGRzYV9jb25kdWl0X2FwcGVuZF9wb3J0X3N0YXRzKHN0cnVjdCBkc2Ffc3dpdGNoICpkcywgaW50IHBvcnQsXFxubmV0L2RzYS9jb25kdWl0LmMtODUtXFx0XFx0XFx0XFx0XFx0ICAgICB1NjQgKmRhdGEsIHNpemVfdCBzdGFydClcXG4tLVxcbm5ldC9kc2EvY29uZHVpdC5jLTEwMS1cXG5uZXQvZHNhL2NvbmR1aXQuYzoxMDI6c3RhdGljIHZvaWQgZHNhX2NvbmR1aXRfZ2V0X2V0aHRvb2xfc3RhdHMoc3RydWN0IG5ldF9kZXZpY2UgKmRldixcXG5uZXQvZHNhL2NvbmR1aXQuYy0xMDMtXFx0XFx0XFx0XFx0XFx0ICBzdHJ1Y3QgZXRodG9vbF9zdGF0cyAqc3RhdHMsXFxuLS1cXG5uZXQvZHNhL2NvbmR1aXQuYy0xMDUte1xcbm5ldC9kc2EvY29uZHVpdC5jOjEwNjpcXHRzdHJ1Y3QgZHNhX3BvcnQgKmRwLCAqY3B1X2RwID0gZGV2LVxcdTAwM2Vkc2FfcHRyO1xcbm5ldC9kc2EvY29uZHVpdC5jLTEwNy1cXHRjb25zdCBzdHJ1Y3QgZXRodG9vbF9vcHMgKm9wcyA9IGNwdV9kcC1cXHUwMDNlb3JpZ19ldGh0b29sX29wcztcXG5uZXQvZHNhL2NvbmR1aXQuYzoxMDg6XFx0c3RydWN0IGRzYV9zd2l0Y2hfdHJlZSAqZHN0ID0gY3B1X2RwLVxcdTAwM2Vkc3Q7XFxubmV0L2RzYS9jb25kdWl0LmMtMTA5LVxcdGludCBjb3VudCwgbWNvdW50ID0gMDtcXG4tLVxcbm5ldC9kc2EvY29uZHVpdC5jLTExNi1cXHRsaXN0X2Zvcl9lYWNoX2VudHJ5KGRwLCBcXHUwMDI2ZHN0LVxcdTAwM2Vwb3J0cywgbGlzdCkge1xcbm5ldC9kc2EvY29uZHVpdC5jOjExNzpcXHRcXHRpZiAoIWRzYV9wb3J0X2lzX2RzYShkcCkgXFx1MDAyNlxcdTAwMjYgIWRzYV9wb3J0X2lzX2NwdShkcCkpXFxubmV0L2RzYS9jb25kdWl0LmMtMTE4LVxcdFxcdFxcdGNvbnRpbnVlO1xcbm5ldC9kc2EvY29uZHVpdC5jLTExOS1cXG5uZXQvZHNhL2NvbmR1aXQuYzoxMjA6XFx0XFx0Y291bnQgPSBkc2FfY29uZHVpdF9hcHBlbmRfcG9ydF9zdGF0cyhkcC1cXHUwMDNlZHMsIGRwLVxcdTAwM2VpbmRleCxcXG5uZXQvZHNhL2NvbmR1aXQuYy0xMjEtXFx0XFx0XFx0XFx0XFx0XFx0ICAgICAgZGF0YSwgbWNvdW50KTtcXG4tLVxcbm5ldC9kc2EvY29uZHVpdC5jLTEyOC1cXG5uZXQvZHNhL2NvbmR1aXQuYzoxMjk6c3RhdGljIHZvaWQgZHNhX2NvbmR1aXRfZ2V0X2V0aHRvb2xfcGh5X3N0YXRzKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXFxubmV0L2RzYS9jb25kdWl0LmMtMTMwLVxcdFxcdFxcdFxcdFxcdCAgICAgIHN0cnVjdCBldGh0b29sX3N0YXRzICpzdGF0cyxcXG4tLVxcbm5ldC9kc2EvY29uZHVpdC5jLTEzMi17XFxubmV0L2RzYS9jb25kdWl0LmM6MTMzOlxcdHN0cnVjdCBkc2FfcG9ydCAqY3B1X2RwID0gZGV2LVxcdTAwM2Vkc2FfcHRyO1xcbm5ldC9kc2EvY29uZHVpdC5jLTEzNC1cXHRjb25zdCBzdHJ1Y3QgZXRodG9vbF9vcHMgKm9wcyA9IGNwdV9kcC1cXHUwMDNlb3JpZ19ldGh0b29sX29wcztcXG5uZXQvZHNhL2NvbmR1aXQuYzoxMzU6XFx0c3RydWN0IGRzYV9zd2l0Y2ggKmRzID0gY3B1X2RwLVxcdTAwM2VkcztcXG5uZXQvZHNhL2NvbmR1aXQuYy0xMzYtXFx0aW50IHBvcnQgPSBjcHVfZHAtXFx1MDAzZWluZGV4O1xcbi0tXFxubmV0L2RzYS9jb25kdWl0LmMtMTU0LVxcbm5ldC9kc2EvY29uZHVpdC5jOjE1NTpzdGF0aWMgdm9pZCBkc2FfY29uZHVpdF9hcHBlbmRfcG9ydF9zc2V0X2NvdW50KHN0cnVjdCBkc2Ffc3dpdGNoICpkcywgaW50IHBvcnQsXFxubmV0L2RzYS9jb25kdWl0LmMtMTU2LVxcdFxcdFxcdFxcdFxcdCAgICAgICBpbnQgc3NldCwgaW50ICpjb3VudClcXG4tLVxcbm5ldC9kc2EvY29uZHVpdC5jLTE2MS1cXG5uZXQvZHNhL2NvbmR1aXQuYzoxNjI6c3RhdGljIGludCBkc2FfY29uZHVpdF9nZXRfc3NldF9jb3VudChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBpbnQgc3NldClcXG5uZXQvZHNhL2NvbmR1aXQuYy0xNjMte1xcbm5ldC9kc2EvY29uZHVpdC5jOjE2NDpcXHRzdHJ1Y3QgZHNhX3BvcnQgKmRwLCAqY3B1X2RwID0gZGV2LVxcdTAwM2Vkc2FfcHRyO1xcbm5ldC9kc2EvY29uZHVpdC5jLTE2NS1cXHRjb25zdCBzdHJ1Y3QgZXRodG9vbF9vcHMgKm9wcyA9IGNwdV9kcC1cXHUwMDNlb3JpZ19ldGh0b29sX29wcztcXG5uZXQvZHNhL2NvbmR1aXQuYzoxNjY6XFx0c3RydWN0IGRzYV9zd2l0Y2hfdHJlZSAqZHN0ID0gY3B1X2RwLVxcdTAwM2Vkc3Q7XFxubmV0L2RzYS9jb25kdWl0LmMtMTY3LVxcdGludCBjb3VudCA9IDA7XFxuLS1cXG5uZXQvZHNhL2NvbmR1aXQuYy0xNzgtXFx0bGlzdF9mb3JfZWFjaF9lbnRyeShkcCwgXFx1MDAyNmRzdC1cXHUwMDNlcG9ydHMsIGxpc3QpIHtcXG5uZXQvZHNhL2NvbmR1aXQuYzoxNzk6XFx0XFx0aWYgKCFkc2FfcG9ydF9pc19kc2EoZHApIFxcdTAwMjZcXHUwMDI2ICFkc2FfcG9ydF9pc19jcHUoZHApKVxcbm5ldC9kc2EvY29uZHVpdC5jLTE4MC1cXHRcXHRcXHRjb250aW51ZTtcXG5uZXQvZHNhL2NvbmR1aXQuYy0xODEtXFxubmV0L2RzYS9jb25kdWl0LmM6MTgyOlxcdFxcdGRzYV9jb25kdWl0X2FwcGVuZF9wb3J0X3NzZXRfY291bnQoZHAtXFx1MDAzZWRzLCBkcC1cXHUwMDNlaW5kZXgsIHNzZXQsXFxubmV0L2RzYS9jb25kdWl0LmMtMTgzLVxcdFxcdFxcdFxcdFxcdFxcdCAgIFxcdTAwMjZjb3VudCk7XFxuLS1cXG5uZXQvZHNhL2NvbmR1aXQuYy0xODgtXFxubmV0L2RzYS9jb25kdWl0LmM6MTg5OnN0YXRpYyBzc2l6ZV90IGRzYV9jb25kdWl0X2FwcGVuZF9wb3J0X3N0cmluZ3Moc3RydWN0IGRzYV9zd2l0Y2ggKmRzLCBpbnQgcG9ydCxcXG5uZXQvZHNhL2NvbmR1aXQuYy0xOTAtXFx0XFx0XFx0XFx0XFx0ICAgICAgIHUzMiBzdHJpbmdzZXQsIHU4ICpkYXRhLFxcbi0tXFxubmV0L2RzYS9jb25kdWl0LmMtMjIxLVxcbm5ldC9kc2EvY29uZHVpdC5jOjIyMjpzdGF0aWMgdm9pZCBkc2FfY29uZHVpdF9nZXRfc3RyaW5ncyhzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCB1MzIgc3RyaW5nc2V0LFxcbm5ldC9kc2EvY29uZHVpdC5jLTIyMy1cXHRcXHRcXHRcXHQgICAgdTggKmRhdGEpXFxubmV0L2RzYS9jb25kdWl0LmMtMjI0LXtcXG5uZXQvZHNhL2NvbmR1aXQuYzoyMjU6XFx0c3RydWN0IGRzYV9wb3J0ICpkcCwgKmNwdV9kcCA9IGRldi1cXHUwMDNlZHNhX3B0cjtcXG5uZXQvZHNhL2NvbmR1aXQuYy0yMjYtXFx0Y29uc3Qgc3RydWN0IGV0aHRvb2xfb3BzICpvcHMgPSBjcHVfZHAtXFx1MDAzZW9yaWdfZXRodG9vbF9vcHM7XFxubmV0L2RzYS9jb25kdWl0LmM6MjI3OlxcdHN0cnVjdCBkc2Ffc3dpdGNoX3RyZWUgKmRzdCA9IGNwdV9kcC1cXHUwMDNlZHN0O1xcbm5ldC9kc2EvY29uZHVpdC5jLTIyOC1cXHRpbnQgY291bnQsIG1jb3VudCA9IDA7XFxuLS1cXG5uZXQvZHNhL2NvbmR1aXQuYy0yNDQtXFx0bGlzdF9mb3JfZWFjaF9lbnRyeShkcCwgXFx1MDAyNmRzdC1cXHUwMDNlcG9ydHMsIGxpc3QpIHtcXG5uZXQvZHNhL2NvbmR1aXQuYzoyNDU6XFx0XFx0aWYgKCFkc2FfcG9ydF9pc19kc2EoZHApIFxcdTAwMjZcXHUwMDI2ICFkc2FfcG9ydF9pc19jcHUoZHApKVxcbm5ldC9kc2EvY29uZHVpdC5jLTI0Ni1cXHRcXHRcXHRjb250aW51ZTtcXG5uZXQvZHNhL2NvbmR1aXQuYy0yNDctXFxubmV0L2RzYS9jb25kdWl0LmM6MjQ4OlxcdFxcdGNvdW50ID0gZHNhX2NvbmR1aXRfYXBwZW5kX3BvcnRfc3RyaW5ncyhkcC1cXHUwMDNlZHMsIGRwLVxcdTAwM2VpbmRleCxcXG5uZXQvZHNhL2NvbmR1aXQuYy0yNDktXFx0XFx0XFx0XFx0XFx0XFx0XFx0c3RyaW5nc2V0LCBkYXRhLFxcbi0tXFxubmV0L2RzYS9jb25kdWl0LmMtMjYwLSAqL1xcbm5ldC9kc2EvY29uZHVpdC5jOjI2MTppbnQgX19kc2FfY29uZHVpdF9od3RzdGFtcF92YWxpZGF0ZShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxcbm5ldC9kc2EvY29uZHVpdC5jLTI2Mi1cXHRcXHRcXHRcXHQgICAgY29uc3Qgc3RydWN0IGtlcm5lbF9od3RzdGFtcF9jb25maWcgKmNvbmZpZyxcXG4tLVxcbm5ldC9kc2EvY29uZHVpdC5jLTI2NC17XFxubmV0L2RzYS9jb25kdWl0LmM6MjY1OlxcdHN0cnVjdCBkc2FfcG9ydCAqY3B1X2RwID0gZGV2LVxcdTAwM2Vkc2FfcHRyO1xcbm5ldC9kc2EvY29uZHVpdC5jOjI2NjpcXHRzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMgPSBjcHVfZHAtXFx1MDAzZWRzO1xcbm5ldC9kc2EvY29uZHVpdC5jOjI2NzpcXHRzdHJ1Y3QgZHNhX3N3aXRjaF90cmVlICpkc3Q7XFxubmV0L2RzYS9jb25kdWl0LmM6MjY4OlxcdHN0cnVjdCBkc2FfcG9ydCAqZHA7XFxubmV0L2RzYS9jb25kdWl0LmMtMjY5LVxcbi0tXFxubmV0L2RzYS9jb25kdWl0LmMtMjcyLVxcdGxpc3RfZm9yX2VhY2hfZW50cnkoZHAsIFxcdTAwMjZkc3QtXFx1MDAzZXBvcnRzLCBsaXN0KSB7XFxubmV0L2RzYS9jb25kdWl0LmM6MjczOlxcdFxcdGlmIChkc2FfcG9ydF9zdXBwb3J0c19od3RzdGFtcChkcCkpIHtcXG5uZXQvZHNhL2NvbmR1aXQuYy0yNzQtXFx0XFx0XFx0TkxfU0VUX0VSUl9NU0coZXh0YWNrLFxcbi0tXFxubmV0L2RzYS9jb25kdWl0LmMtMjgyLVxcbm5ldC9kc2EvY29uZHVpdC5jOjI4MzpzdGF0aWMgaW50IGRzYV9jb25kdWl0X2V0aHRvb2xfc2V0dXAoc3RydWN0IG5ldF9kZXZpY2UgKmRldilcXG5uZXQvZHNhL2NvbmR1aXQuYy0yODQte1xcbm5ldC9kc2EvY29uZHVpdC5jOjI4NTpcXHRzdHJ1Y3QgZHNhX3BvcnQgKmNwdV9kcCA9IGRldi1cXHUwMDNlZHNhX3B0cjtcXG5uZXQvZHNhL2NvbmR1aXQuYzoyODY6XFx0c3RydWN0IGRzYV9zd2l0Y2ggKmRzID0gY3B1X2RwLVxcdTAwM2VkcztcXG5uZXQvZHNhL2NvbmR1aXQuYy0yODctXFx0c3RydWN0IGV0aHRvb2xfb3BzICpvcHM7XFxuLS1cXG5uZXQvZHNhL2NvbmR1aXQuYy0yOTktXFxubmV0L2RzYS9jb25kdWl0LmM6MzAwOlxcdG9wcy1cXHUwMDNlZ2V0X3JlZ3NfbGVuID0gZHNhX2NvbmR1aXRfZ2V0X3JlZ3NfbGVuO1xcbm5ldC9kc2EvY29uZHVpdC5jOjMwMTpcXHRvcHMtXFx1MDAzZWdldF9yZWdzID0gZHNhX2NvbmR1aXRfZ2V0X3JlZ3M7XFxubmV0L2RzYS9jb25kdWl0LmM6MzAyOlxcdG9wcy1cXHUwMDNlZ2V0X3NzZXRfY291bnQgPSBkc2FfY29uZHVpdF9nZXRfc3NldF9jb3VudDtcXG5uZXQvZHNhL2NvbmR1aXQuYzozMDM6XFx0b3BzLVxcdTAwM2VnZXRfZXRodG9vbF9zdGF0cyA9IGRzYV9jb25kdWl0X2dldF9ldGh0b29sX3N0YXRzO1xcbm5ldC9kc2EvY29uZHVpdC5jOjMwNDpcXHRvcHMtXFx1MDAzZWdldF9zdHJpbmdzID0gZHNhX2NvbmR1aXRfZ2V0X3N0cmluZ3M7XFxubmV0L2RzYS9jb25kdWl0LmM6MzA1OlxcdG9wcy1cXHUwMDNlZ2V0X2V0aHRvb2xfcGh5X3N0YXRzID0gZHNhX2NvbmR1aXRfZ2V0X2V0aHRvb2xfcGh5X3N0YXRzO1xcbm5ldC9kc2EvY29uZHVpdC5jLTMwNi1cXG4tLVxcbm5ldC9kc2EvY29uZHVpdC5jLTMxMS1cXG5uZXQvZHNhL2NvbmR1aXQuYzozMTI6c3RhdGljIHZvaWQgZHNhX2NvbmR1aXRfZXRodG9vbF90ZWFyZG93bihzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxcbm5ldC9kc2EvY29uZHVpdC5jLTMxMy17XFxubmV0L2RzYS9jb25kdWl0LmM6MzE0OlxcdHN0cnVjdCBkc2FfcG9ydCAqY3B1X2RwID0gZGV2LVxcdTAwM2Vkc2FfcHRyO1xcbm5ldC9kc2EvY29uZHVpdC5jLTMxNS1cXG4tLVxcbm5ldC9kc2EvY29uZHVpdC5jLTMyNy0gKi9cXG5uZXQvZHNhL2NvbmR1aXQuYzozMjg6c3RhdGljIHZvaWQgZHNhX2NvbmR1aXRfc2V0X3Byb21pc2N1aXR5KHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIGludCBpbmMpXFxubmV0L2RzYS9jb25kdWl0LmMtMzI5LXtcXG5uZXQvZHNhL2NvbmR1aXQuYzozMzA6XFx0Y29uc3Qgc3RydWN0IGRzYV9kZXZpY2Vfb3BzICpvcHMgPSBkZXYtXFx1MDAzZWRzYV9wdHItXFx1MDAzZXRhZ19vcHM7XFxubmV0L2RzYS9jb25kdWl0LmMtMzMxLVxcbi0tXFxubmV0L2RzYS9jb25kdWl0LmM9MzQwPXN0YXRpYyBzc2l6ZV90IHRhZ2dpbmdfc2hvdyhzdHJ1Y3QgZGV2aWNlICpkLCBzdHJ1Y3QgZGV2aWNlX2F0dHJpYnV0ZSAqYXR0cixcXG4tLVxcbm5ldC9kc2EvY29uZHVpdC5jLTM0My1cXHRzdHJ1Y3QgbmV0X2RldmljZSAqZGV2ID0gdG9fbmV0X2RldihkKTtcXG5uZXQvZHNhL2NvbmR1aXQuYzozNDQ6XFx0c3RydWN0IGRzYV9wb3J0ICpjcHVfZHAgPSBkZXYtXFx1MDAzZWRzYV9wdHI7XFxubmV0L2RzYS9jb25kdWl0LmMtMzQ1LVxcbm5ldC9kc2EvY29uZHVpdC5jLTM0Ni1cXHRyZXR1cm4gc3lzZnNfZW1pdChidWYsIFxcXCIlc1xcXFxuXFxcIixcXG5uZXQvZHNhL2NvbmR1aXQuYzozNDc6XFx0XFx0ICAgICAgIGRzYV90YWdfcHJvdG9jb2xfdG9fc3RyKGNwdV9kcC1cXHUwMDNldGFnX29wcykpO1xcbm5ldC9kc2EvY29uZHVpdC5jLTM0OC19XFxuLS1cXG5uZXQvZHNhL2NvbmR1aXQuYz0zNTA9c3RhdGljIHNzaXplX3QgdGFnZ2luZ19zdG9yZShzdHJ1Y3QgZGV2aWNlICpkLCBzdHJ1Y3QgZGV2aWNlX2F0dHJpYnV0ZSAqYXR0cixcXG4tLVxcbm5ldC9kc2EvY29uZHVpdC5jLTM1Mi17XFxubmV0L2RzYS9jb25kdWl0LmM6MzUzOlxcdGNvbnN0IHN0cnVjdCBkc2FfZGV2aWNlX29wcyAqbmV3X3RhZ19vcHMsICpvbGRfdGFnX29wcztcXG5uZXQvZHNhL2NvbmR1aXQuYy0zNTQtXFx0Y29uc3QgY2hhciAqZW5kID0gc3RyY2hybnVsKGJ1ZiwgJ1xcXFxuJyksICpuYW1lO1xcbm5ldC9kc2EvY29uZHVpdC5jLTM1NS1cXHRzdHJ1Y3QgbmV0X2RldmljZSAqZGV2ID0gdG9fbmV0X2RldihkKTtcXG5uZXQvZHNhL2NvbmR1aXQuYzozNTY6XFx0c3RydWN0IGRzYV9wb3J0ICpjcHVfZHAgPSBkZXYtXFx1MDAzZWRzYV9wdHI7XFxubmV0L2RzYS9jb25kdWl0LmMtMzU3LVxcdHNpemVfdCBsZW4gPSBlbmQgLSBidWY7XFxuLS1cXG5uZXQvZHNhL2NvbmR1aXQuYy0zNjgtXFx0b2xkX3RhZ19vcHMgPSBjcHVfZHAtXFx1MDAzZXRhZ19vcHM7XFxubmV0L2RzYS9jb25kdWl0LmM6MzY5OlxcdG5ld190YWdfb3BzID0gZHNhX3RhZ19kcml2ZXJfZ2V0X2J5X25hbWUobmFtZSk7XFxubmV0L2RzYS9jb25kdWl0LmMtMzcwLVxcdGtmcmVlKG5hbWUpO1xcbi0tXFxubmV0L2RzYS9jb25kdWl0LmMtMzgwLVxcbm5ldC9kc2EvY29uZHVpdC5jOjM4MTpcXHRlcnIgPSBkc2FfdHJlZV9jaGFuZ2VfdGFnX3Byb3RvKGNwdV9kcC1cXHUwMDNlZHMtXFx1MDAzZWRzdCwgbmV3X3RhZ19vcHMsXFxubmV0L2RzYS9jb25kdWl0LmMtMzgyLVxcdFxcdFxcdFxcdFxcdG9sZF90YWdfb3BzKTtcXG4tLVxcbm5ldC9kc2EvY29uZHVpdC5jLTM4Ni1cXHRcXHQgKi9cXG5uZXQvZHNhL2NvbmR1aXQuYzozODc6XFx0XFx0ZHNhX3RhZ19kcml2ZXJfcHV0KG5ld190YWdfb3BzKTtcXG5uZXQvZHNhL2NvbmR1aXQuYy0zODgtXFx0XFx0cmV0dXJuIGVycjtcXG4tLVxcbm5ldC9kc2EvY29uZHVpdC5jLTM5My1vdXQ6XFxubmV0L2RzYS9jb25kdWl0LmM6Mzk0OlxcdGRzYV90YWdfZHJpdmVyX3B1dChvbGRfdGFnX29wcyk7XFxubmV0L2RzYS9jb25kdWl0LmMtMzk1LVxcdHJldHVybiBjb3VudDtcXG4tLVxcbm5ldC9kc2EvY29uZHVpdC5jPTM5Nz1zdGF0aWMgREVWSUNFX0FUVFJfUlcodGFnZ2luZyk7XFxubmV0L2RzYS9jb25kdWl0LmMtMzk4LVxcbm5ldC9kc2EvY29uZHVpdC5jOjM5OTpzdGF0aWMgc3RydWN0IGF0dHJpYnV0ZSAqZHNhX3VzZXJfYXR0cnNbXSA9IHtcXG5uZXQvZHNhL2NvbmR1aXQuYy00MDAtXFx0XFx1MDAyNmRldl9hdHRyX3RhZ2dpbmcuYXR0cixcXG4tLVxcbm5ldC9kc2EvY29uZHVpdC5jLTQwMy1cXG5uZXQvZHNhL2NvbmR1aXQuYzo0MDQ6c3RhdGljIGNvbnN0IHN0cnVjdCBhdHRyaWJ1dGVfZ3JvdXAgZHNhX2dyb3VwID0ge1xcbm5ldC9kc2EvY29uZHVpdC5jOjQwNTpcXHQubmFtZVxcdD0gXFxcImRzYVxcXCIsXFxubmV0L2RzYS9jb25kdWl0LmM6NDA2OlxcdC5hdHRyc1xcdD0gZHNhX3VzZXJfYXR0cnMsXFxubmV0L2RzYS9jb25kdWl0LmMtNDA3LX07XFxubmV0L2RzYS9jb25kdWl0LmMtNDA4LVxcbm5ldC9kc2EvY29uZHVpdC5jOjQwOTpzdGF0aWMgdm9pZCBkc2FfY29uZHVpdF9yZXNldF9tdHUoc3RydWN0IG5ldF9kZXZpY2UgKmRldilcXG5uZXQvZHNhL2NvbmR1aXQuYy00MTAte1xcbi0tXFxubmV0L2RzYS9jb25kdWl0LmMtNDE4LVxcbm5ldC9kc2EvY29uZHVpdC5jOjQxOTppbnQgZHNhX2NvbmR1aXRfc2V0dXAoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgc3RydWN0IGRzYV9wb3J0ICpjcHVfZHApXFxubmV0L2RzYS9jb25kdWl0LmMtNDIwLXtcXG5uZXQvZHNhL2NvbmR1aXQuYzo0MjE6XFx0Y29uc3Qgc3RydWN0IGRzYV9kZXZpY2Vfb3BzICp0YWdfb3BzID0gY3B1X2RwLVxcdTAwM2V0YWdfb3BzO1xcbm5ldC9kc2EvY29uZHVpdC5jOjQyMjpcXHRzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMgPSBjcHVfZHAtXFx1MDAzZWRzO1xcbm5ldC9kc2EvY29uZHVpdC5jLTQyMy1cXHRzdHJ1Y3QgZGV2aWNlX2xpbmsgKmNvbnN1bWVyX2xpbms7XFxuLS1cXG5uZXQvZHNhL2NvbmR1aXQuYy00MjUtXFxubmV0L2RzYS9jb25kdWl0LmM6NDI2OlxcdG10dSA9IEVUSF9EQVRBX0xFTiArIGRzYV90YWdfcHJvdG9jb2xfb3ZlcmhlYWQodGFnX29wcyk7XFxubmV0L2RzYS9jb25kdWl0LmMtNDI3LVxcbi0tXFxubmV0L2RzYS9jb25kdWl0LmMtNDM4LVxcdC8qIFRoZSBzd2l0Y2ggZHJpdmVyIG1heSBub3QgaW1wbGVtZW50IC1cXHUwMDNlcG9ydF9jaGFuZ2VfbXR1KCksIGNhc2UgaW5cXG5uZXQvZHNhL2NvbmR1aXQuYzo0Mzk6XFx0ICogd2hpY2ggZHNhX3VzZXJfY2hhbmdlX210dSgpIHdpbGwgbm90IHVwZGF0ZSB0aGUgY29uZHVpdCBNVFUgZWl0aGVyLFxcbm5ldC9kc2EvY29uZHVpdC5jLTQ0MC1cXHQgKiBzbyB3ZSBuZWVkIHRvIGRvIHRoYXQgaGVyZS5cXG4tLVxcbm5ldC9kc2EvY29uZHVpdC5jLTQ1Mi1cXG5uZXQvZHNhL2NvbmR1aXQuYzo0NTM6XFx0ZGV2LVxcdTAwM2Vkc2FfcHRyID0gY3B1X2RwO1xcbm5ldC9kc2EvY29uZHVpdC5jLTQ1NC1cXG5uZXQvZHNhL2NvbmR1aXQuYzo0NTU6XFx0ZHNhX2NvbmR1aXRfc2V0X3Byb21pc2N1aXR5KGRldiwgMSk7XFxubmV0L2RzYS9jb25kdWl0LmMtNDU2LVxcbm5ldC9kc2EvY29uZHVpdC5jOjQ1NzpcXHRyZXQgPSBkc2FfY29uZHVpdF9ldGh0b29sX3NldHVwKGRldik7XFxubmV0L2RzYS9jb25kdWl0LmMtNDU4LVxcdGlmIChyZXQpXFxuLS1cXG5uZXQvZHNhL2NvbmR1aXQuYy00NjAtXFxubmV0L2RzYS9jb25kdWl0LmM6NDYxOlxcdHJldCA9IHN5c2ZzX2NyZWF0ZV9ncm91cChcXHUwMDI2ZGV2LVxcdTAwM2VkZXYua29iaiwgXFx1MDAyNmRzYV9ncm91cCk7XFxubmV0L2RzYS9jb25kdWl0LmMtNDYyLVxcdGlmIChyZXQpXFxuLS1cXG5uZXQvZHNhL2NvbmR1aXQuYy00Njctb3V0X2Vycl9ldGh0b29sX3RlYXJkb3duOlxcbm5ldC9kc2EvY29uZHVpdC5jOjQ2ODpcXHRkc2FfY29uZHVpdF9ldGh0b29sX3RlYXJkb3duKGRldik7XFxubmV0L2RzYS9jb25kdWl0LmMtNDY5LW91dF9lcnJfcmVzZXRfcHJvbWlzYzpcXG5uZXQvZHNhL2NvbmR1aXQuYzo0NzA6XFx0ZHNhX2NvbmR1aXRfc2V0X3Byb21pc2N1aXR5KGRldiwgLTEpO1xcbm5ldC9kc2EvY29uZHVpdC5jLTQ3MS1cXHRyZXR1cm4gcmV0O1xcbi0tXFxubmV0L2RzYS9jb25kdWl0LmMtNDczLVxcbm5ldC9kc2EvY29uZHVpdC5jOjQ3NDp2b2lkIGRzYV9jb25kdWl0X3RlYXJkb3duKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXFxubmV0L2RzYS9jb25kdWl0LmMtNDc1LXtcXG5uZXQvZHNhL2NvbmR1aXQuYzo0NzY6XFx0c3lzZnNfcmVtb3ZlX2dyb3VwKFxcdTAwMjZkZXYtXFx1MDAzZWRldi5rb2JqLCBcXHUwMDI2ZHNhX2dyb3VwKTtcXG5uZXQvZHNhL2NvbmR1aXQuYzo0Nzc6XFx0ZHNhX2NvbmR1aXRfZXRodG9vbF90ZWFyZG93bihkZXYpO1xcbm5ldC9kc2EvY29uZHVpdC5jOjQ3ODpcXHRkc2FfY29uZHVpdF9yZXNldF9tdHUoZGV2KTtcXG5uZXQvZHNhL2NvbmR1aXQuYzo0Nzk6XFx0ZHNhX2NvbmR1aXRfc2V0X3Byb21pc2N1aXR5KGRldiwgLTEpO1xcbm5ldC9kc2EvY29uZHVpdC5jLTQ4MC1cXG5uZXQvZHNhL2NvbmR1aXQuYzo0ODE6XFx0ZGV2LVxcdTAwM2Vkc2FfcHRyID0gTlVMTDtcXG5uZXQvZHNhL2NvbmR1aXQuYy00ODItXFxuLS1cXG5uZXQvZHNhL2NvbmR1aXQuYy00ODktXFxubmV0L2RzYS9jb25kdWl0LmM6NDkwOmludCBkc2FfY29uZHVpdF9sYWdfc2V0dXAoc3RydWN0IG5ldF9kZXZpY2UgKmxhZ19kZXYsIHN0cnVjdCBkc2FfcG9ydCAqY3B1X2RwLFxcbm5ldC9kc2EvY29uZHVpdC5jLTQ5MS1cXHRcXHRcXHQgIHN0cnVjdCBuZXRkZXZfbGFnX3VwcGVyX2luZm8gKnVpbmZvLFxcbi0tXFxubmV0L2RzYS9jb25kdWl0LmMtNDk2LVxcbm5ldC9kc2EvY29uZHVpdC5jOjQ5NzpcXHRpZiAoIW5ldGRldl91c2VzX2RzYShsYWdfZGV2KSkge1xcbm5ldC9kc2EvY29uZHVpdC5jOjQ5ODpcXHRcXHRlcnIgPSBkc2FfY29uZHVpdF9zZXR1cChsYWdfZGV2LCBjcHVfZHApO1xcbm5ldC9kc2EvY29uZHVpdC5jLTQ5OS1cXHRcXHRpZiAoZXJyKVxcbi0tXFxubmV0L2RzYS9jb25kdWl0LmMtNTA0LVxcbm5ldC9kc2EvY29uZHVpdC5jOjUwNTpcXHRlcnIgPSBkc2FfcG9ydF9sYWdfam9pbihjcHVfZHAsIGxhZ19kZXYsIHVpbmZvLCBleHRhY2spO1xcbm5ldC9kc2EvY29uZHVpdC5jLTUwNi1cXHRpZiAoZXJyKSB7XFxuLS1cXG5uZXQvZHNhL2NvbmR1aXQuYy01MTQtXFx0aWYgKGNvbmR1aXRfc2V0dXApXFxubmV0L2RzYS9jb25kdWl0LmM6NTE1OlxcdFxcdGRzYV9jb25kdWl0X3RlYXJkb3duKGxhZ19kZXYpO1xcbm5ldC9kc2EvY29uZHVpdC5jLTUxNi1cXHRyZXR1cm4gZXJyO1xcbi0tXFxubmV0L2RzYS9jb25kdWl0LmMtNTIxLSAqL1xcbm5ldC9kc2EvY29uZHVpdC5jOjUyMjp2b2lkIGRzYV9jb25kdWl0X2xhZ190ZWFyZG93bihzdHJ1Y3QgbmV0X2RldmljZSAqbGFnX2RldixcXG5uZXQvZHNhL2NvbmR1aXQuYzo1MjM6XFx0XFx0XFx0ICAgICAgc3RydWN0IGRzYV9wb3J0ICpjcHVfZHApXFxubmV0L2RzYS9jb25kdWl0LmMtNTI0LXtcXG4tLVxcbm5ldC9kc2EvY29uZHVpdC5jLTUyNy1cXG5uZXQvZHNhL2NvbmR1aXQuYzo1Mjg6XFx0ZHNhX3BvcnRfbGFnX2xlYXZlKGNwdV9kcCwgbGFnX2Rldik7XFxubmV0L2RzYS9jb25kdWl0LmMtNTI5LVxcbm5ldC9kc2EvY29uZHVpdC5jLTUzMC1cXHRuZXRkZXZfZm9yX2VhY2hfdXBwZXJfZGV2X3JjdShsYWdfZGV2LCB1cHBlciwgaXRlcilcXG5uZXQvZHNhL2NvbmR1aXQuYzo1MzE6XFx0XFx0aWYgKGRzYV91c2VyX2Rldl9jaGVjayh1cHBlcikpXFxubmV0L2RzYS9jb25kdWl0LmMtNTMyLVxcdFxcdFxcdHJldHVybjtcXG5uZXQvZHNhL2NvbmR1aXQuYy01MzMtXFxubmV0L2RzYS9jb25kdWl0LmM6NTM0OlxcdGRzYV9jb25kdWl0X3RlYXJkb3duKGxhZ19kZXYpO1xcbm5ldC9kc2EvY29uZHVpdC5jLTUzNS19XFxuLS1cXG5uZXQvZHNhL2NvbmR1aXQuaC01LVxcbm5ldC9kc2EvY29uZHVpdC5oOjY6c3RydWN0IGRzYV9wb3J0O1xcbm5ldC9kc2EvY29uZHVpdC5oLTctc3RydWN0IG5ldF9kZXZpY2U7XFxuLS1cXG5uZXQvZHNhL2NvbmR1aXQuaD05PXN0cnVjdCBuZXRsaW5rX2V4dF9hY2s7XFxubmV0L2RzYS9jb25kdWl0LmgtMTAtXFxubmV0L2RzYS9jb25kdWl0Lmg6MTE6aW50IGRzYV9jb25kdWl0X3NldHVwKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHN0cnVjdCBkc2FfcG9ydCAqY3B1X2RwKTtcXG5uZXQvZHNhL2NvbmR1aXQuaDoxMjp2b2lkIGRzYV9jb25kdWl0X3RlYXJkb3duKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpO1xcbm5ldC9kc2EvY29uZHVpdC5oOjEzOmludCBkc2FfY29uZHVpdF9sYWdfc2V0dXAoc3RydWN0IG5ldF9kZXZpY2UgKmxhZ19kZXYsIHN0cnVjdCBkc2FfcG9ydCAqY3B1X2RwLFxcbm5ldC9kc2EvY29uZHVpdC5oLTE0LVxcdFxcdFxcdCAgc3RydWN0IG5ldGRldl9sYWdfdXBwZXJfaW5mbyAqdWluZm8sXFxubmV0L2RzYS9jb25kdWl0LmgtMTUtXFx0XFx0XFx0ICBzdHJ1Y3QgbmV0bGlua19leHRfYWNrICpleHRhY2spO1xcbm5ldC9kc2EvY29uZHVpdC5oOjE2OnZvaWQgZHNhX2NvbmR1aXRfbGFnX3RlYXJkb3duKHN0cnVjdCBuZXRfZGV2aWNlICpsYWdfZGV2LFxcbm5ldC9kc2EvY29uZHVpdC5oOjE3OlxcdFxcdFxcdCAgICAgIHN0cnVjdCBkc2FfcG9ydCAqY3B1X2RwKTtcXG5uZXQvZHNhL2NvbmR1aXQuaDoxODppbnQgX19kc2FfY29uZHVpdF9od3RzdGFtcF92YWxpZGF0ZShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxcbm5ldC9kc2EvY29uZHVpdC5oLTE5LVxcdFxcdFxcdFxcdCAgICBjb25zdCBzdHJ1Y3Qga2VybmVsX2h3dHN0YW1wX2NvbmZpZyAqY29uZmlnLFxcbi0tXFxubmV0L2RzYS9kZXZsaW5rLmMtNS1cXG5uZXQvZHNhL2RldmxpbmsuYzo2OiNpbmNsdWRlIFxcdTAwM2NuZXQvZHNhLmhcXHUwMDNlXFxubmV0L2RzYS9kZXZsaW5rLmMtNy0jaW5jbHVkZSBcXHUwMDNjbmV0L2RldmxpbmsuaFxcdTAwM2VcXG4tLVxcbm5ldC9kc2EvZGV2bGluay5jLTEwLVxcbm5ldC9kc2EvZGV2bGluay5jOjExOnN0YXRpYyBpbnQgZHNhX2RldmxpbmtfaW5mb19nZXQoc3RydWN0IGRldmxpbmsgKmRsLFxcbm5ldC9kc2EvZGV2bGluay5jLTEyLVxcdFxcdFxcdFxcdHN0cnVjdCBkZXZsaW5rX2luZm9fcmVxICpyZXEsXFxuLS1cXG5uZXQvZHNhL2RldmxpbmsuYy0xNC17XFxubmV0L2RzYS9kZXZsaW5rLmM6MTU6XFx0c3RydWN0IGRzYV9zd2l0Y2ggKmRzID0gZHNhX2RldmxpbmtfdG9fZHMoZGwpO1xcbm5ldC9kc2EvZGV2bGluay5jLTE2LVxcbi0tXFxubmV0L2RzYS9kZXZsaW5rLmMtMjItXFxubmV0L2RzYS9kZXZsaW5rLmM6MjM6c3RhdGljIGludCBkc2FfZGV2bGlua19zYl9wb29sX2dldChzdHJ1Y3QgZGV2bGluayAqZGwsXFxubmV0L2RzYS9kZXZsaW5rLmMtMjQtXFx0XFx0XFx0XFx0ICAgdW5zaWduZWQgaW50IHNiX2luZGV4LCB1MTYgcG9vbF9pbmRleCxcXG4tLVxcbm5ldC9kc2EvZGV2bGluay5jLTI2LXtcXG5uZXQvZHNhL2RldmxpbmsuYzoyNzpcXHRzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMgPSBkc2FfZGV2bGlua190b19kcyhkbCk7XFxubmV0L2RzYS9kZXZsaW5rLmMtMjgtXFxuLS1cXG5uZXQvZHNhL2RldmxpbmsuYy0zNS1cXG5uZXQvZHNhL2RldmxpbmsuYzozNjpzdGF0aWMgaW50IGRzYV9kZXZsaW5rX3NiX3Bvb2xfc2V0KHN0cnVjdCBkZXZsaW5rICpkbCwgdW5zaWduZWQgaW50IHNiX2luZGV4LFxcbm5ldC9kc2EvZGV2bGluay5jLTM3LVxcdFxcdFxcdFxcdCAgIHUxNiBwb29sX2luZGV4LCB1MzIgc2l6ZSxcXG4tLVxcbm5ldC9kc2EvZGV2bGluay5jLTQwLXtcXG5uZXQvZHNhL2RldmxpbmsuYzo0MTpcXHRzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMgPSBkc2FfZGV2bGlua190b19kcyhkbCk7XFxubmV0L2RzYS9kZXZsaW5rLmMtNDItXFxuLS1cXG5uZXQvZHNhL2RldmxpbmsuYy00OS1cXG5uZXQvZHNhL2RldmxpbmsuYzo1MDpzdGF0aWMgaW50IGRzYV9kZXZsaW5rX3NiX3BvcnRfcG9vbF9nZXQoc3RydWN0IGRldmxpbmtfcG9ydCAqZGxwLFxcbm5ldC9kc2EvZGV2bGluay5jLTUxLVxcdFxcdFxcdFxcdFxcdHVuc2lnbmVkIGludCBzYl9pbmRleCwgdTE2IHBvb2xfaW5kZXgsXFxuLS1cXG5uZXQvZHNhL2RldmxpbmsuYy01My17XFxubmV0L2RzYS9kZXZsaW5rLmM6NTQ6XFx0c3RydWN0IGRzYV9zd2l0Y2ggKmRzID0gZHNhX2RldmxpbmtfcG9ydF90b19kcyhkbHApO1xcbm5ldC9kc2EvZGV2bGluay5jOjU1OlxcdGludCBwb3J0ID0gZHNhX2RldmxpbmtfcG9ydF90b19wb3J0KGRscCk7XFxubmV0L2RzYS9kZXZsaW5rLmMtNTYtXFxuLS1cXG5uZXQvZHNhL2RldmxpbmsuYy02My1cXG5uZXQvZHNhL2RldmxpbmsuYzo2NDpzdGF0aWMgaW50IGRzYV9kZXZsaW5rX3NiX3BvcnRfcG9vbF9zZXQoc3RydWN0IGRldmxpbmtfcG9ydCAqZGxwLFxcbm5ldC9kc2EvZGV2bGluay5jLTY1LVxcdFxcdFxcdFxcdFxcdHVuc2lnbmVkIGludCBzYl9pbmRleCwgdTE2IHBvb2xfaW5kZXgsXFxuLS1cXG5uZXQvZHNhL2RldmxpbmsuYy02OC17XFxubmV0L2RzYS9kZXZsaW5rLmM6Njk6XFx0c3RydWN0IGRzYV9zd2l0Y2ggKmRzID0gZHNhX2RldmxpbmtfcG9ydF90b19kcyhkbHApO1xcbm5ldC9kc2EvZGV2bGluay5jOjcwOlxcdGludCBwb3J0ID0gZHNhX2RldmxpbmtfcG9ydF90b19wb3J0KGRscCk7XFxubmV0L2RzYS9kZXZsaW5rLmMtNzEtXFxuLS1cXG5uZXQvZHNhL2RldmxpbmsuYz03OT1zdGF0aWMgaW50XFxubmV0L2RzYS9kZXZsaW5rLmM6ODA6ZHNhX2Rldmxpbmtfc2JfdGNfcG9vbF9iaW5kX2dldChzdHJ1Y3QgZGV2bGlua19wb3J0ICpkbHAsXFxubmV0L2RzYS9kZXZsaW5rLmMtODEtXFx0XFx0XFx0XFx0dW5zaWduZWQgaW50IHNiX2luZGV4LCB1MTYgdGNfaW5kZXgsXFxuLS1cXG5uZXQvZHNhL2RldmxpbmsuYy04NC17XFxubmV0L2RzYS9kZXZsaW5rLmM6ODU6XFx0c3RydWN0IGRzYV9zd2l0Y2ggKmRzID0gZHNhX2RldmxpbmtfcG9ydF90b19kcyhkbHApO1xcbm5ldC9kc2EvZGV2bGluay5jOjg2OlxcdGludCBwb3J0ID0gZHNhX2RldmxpbmtfcG9ydF90b19wb3J0KGRscCk7XFxubmV0L2RzYS9kZXZsaW5rLmMtODctXFxuLS1cXG5uZXQvZHNhL2RldmxpbmsuYz05Nj1zdGF0aWMgaW50XFxubmV0L2RzYS9kZXZsaW5rLmM6OTc6ZHNhX2Rldmxpbmtfc2JfdGNfcG9vbF9iaW5kX3NldChzdHJ1Y3QgZGV2bGlua19wb3J0ICpkbHAsXFxubmV0L2RzYS9kZXZsaW5rLmMtOTgtXFx0XFx0XFx0XFx0dW5zaWduZWQgaW50IHNiX2luZGV4LCB1MTYgdGNfaW5kZXgsXFxuLS1cXG5uZXQvZHNhL2RldmxpbmsuYy0xMDIte1xcbm5ldC9kc2EvZGV2bGluay5jOjEwMzpcXHRzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMgPSBkc2FfZGV2bGlua19wb3J0X3RvX2RzKGRscCk7XFxubmV0L2RzYS9kZXZsaW5rLmM6MTA0OlxcdGludCBwb3J0ID0gZHNhX2RldmxpbmtfcG9ydF90b19wb3J0KGRscCk7XFxubmV0L2RzYS9kZXZsaW5rLmMtMTA1LVxcbi0tXFxubmV0L2RzYS9kZXZsaW5rLmMtMTE0LVxcbm5ldC9kc2EvZGV2bGluay5jOjExNTpzdGF0aWMgaW50IGRzYV9kZXZsaW5rX3NiX29jY19zbmFwc2hvdChzdHJ1Y3QgZGV2bGluayAqZGwsXFxubmV0L2RzYS9kZXZsaW5rLmMtMTE2LVxcdFxcdFxcdFxcdCAgICAgICB1bnNpZ25lZCBpbnQgc2JfaW5kZXgpXFxubmV0L2RzYS9kZXZsaW5rLmMtMTE3LXtcXG5uZXQvZHNhL2RldmxpbmsuYzoxMTg6XFx0c3RydWN0IGRzYV9zd2l0Y2ggKmRzID0gZHNhX2RldmxpbmtfdG9fZHMoZGwpO1xcbm5ldC9kc2EvZGV2bGluay5jLTExOS1cXG4tLVxcbm5ldC9kc2EvZGV2bGluay5jLTEyNS1cXG5uZXQvZHNhL2RldmxpbmsuYzoxMjY6c3RhdGljIGludCBkc2FfZGV2bGlua19zYl9vY2NfbWF4X2NsZWFyKHN0cnVjdCBkZXZsaW5rICpkbCxcXG5uZXQvZHNhL2RldmxpbmsuYy0xMjctXFx0XFx0XFx0XFx0XFx0dW5zaWduZWQgaW50IHNiX2luZGV4KVxcbm5ldC9kc2EvZGV2bGluay5jLTEyOC17XFxubmV0L2RzYS9kZXZsaW5rLmM6MTI5OlxcdHN0cnVjdCBkc2Ffc3dpdGNoICpkcyA9IGRzYV9kZXZsaW5rX3RvX2RzKGRsKTtcXG5uZXQvZHNhL2RldmxpbmsuYy0xMzAtXFxuLS1cXG5uZXQvZHNhL2RldmxpbmsuYy0xMzYtXFxubmV0L2RzYS9kZXZsaW5rLmM6MTM3OnN0YXRpYyBpbnQgZHNhX2Rldmxpbmtfc2Jfb2NjX3BvcnRfcG9vbF9nZXQoc3RydWN0IGRldmxpbmtfcG9ydCAqZGxwLFxcbm5ldC9kc2EvZGV2bGluay5jLTEzOC1cXHRcXHRcXHRcXHRcXHQgICAgdW5zaWduZWQgaW50IHNiX2luZGV4LFxcbi0tXFxubmV0L2RzYS9kZXZsaW5rLmMtMTQxLXtcXG5uZXQvZHNhL2RldmxpbmsuYzoxNDI6XFx0c3RydWN0IGRzYV9zd2l0Y2ggKmRzID0gZHNhX2RldmxpbmtfcG9ydF90b19kcyhkbHApO1xcbm5ldC9kc2EvZGV2bGluay5jOjE0MzpcXHRpbnQgcG9ydCA9IGRzYV9kZXZsaW5rX3BvcnRfdG9fcG9ydChkbHApO1xcbm5ldC9kc2EvZGV2bGluay5jLTE0NC1cXG4tLVxcbm5ldC9kc2EvZGV2bGluay5jPTE1Mj1zdGF0aWMgaW50XFxubmV0L2RzYS9kZXZsaW5rLmM6MTUzOmRzYV9kZXZsaW5rX3NiX29jY190Y19wb3J0X2JpbmRfZ2V0KHN0cnVjdCBkZXZsaW5rX3BvcnQgKmRscCxcXG5uZXQvZHNhL2RldmxpbmsuYy0xNTQtXFx0XFx0XFx0XFx0ICAgIHVuc2lnbmVkIGludCBzYl9pbmRleCwgdTE2IHRjX2luZGV4LFxcbi0tXFxubmV0L2RzYS9kZXZsaW5rLmMtMTU3LXtcXG5uZXQvZHNhL2RldmxpbmsuYzoxNTg6XFx0c3RydWN0IGRzYV9zd2l0Y2ggKmRzID0gZHNhX2RldmxpbmtfcG9ydF90b19kcyhkbHApO1xcbm5ldC9kc2EvZGV2bGluay5jOjE1OTpcXHRpbnQgcG9ydCA9IGRzYV9kZXZsaW5rX3BvcnRfdG9fcG9ydChkbHApO1xcbm5ldC9kc2EvZGV2bGluay5jLTE2MC1cXG4tLVxcbm5ldC9kc2EvZGV2bGluay5jLTE2OS1cXG5uZXQvZHNhL2RldmxpbmsuYzoxNzA6c3RhdGljIGNvbnN0IHN0cnVjdCBkZXZsaW5rX29wcyBkc2FfZGV2bGlua19vcHMgPSB7XFxubmV0L2RzYS9kZXZsaW5rLmM6MTcxOlxcdC5pbmZvX2dldFxcdFxcdFxcdD0gZHNhX2RldmxpbmtfaW5mb19nZXQsXFxubmV0L2RzYS9kZXZsaW5rLmM6MTcyOlxcdC5zYl9wb29sX2dldFxcdFxcdFxcdD0gZHNhX2Rldmxpbmtfc2JfcG9vbF9nZXQsXFxubmV0L2RzYS9kZXZsaW5rLmM6MTczOlxcdC5zYl9wb29sX3NldFxcdFxcdFxcdD0gZHNhX2Rldmxpbmtfc2JfcG9vbF9zZXQsXFxubmV0L2RzYS9kZXZsaW5rLmM6MTc0OlxcdC5zYl9wb3J0X3Bvb2xfZ2V0XFx0XFx0PSBkc2FfZGV2bGlua19zYl9wb3J0X3Bvb2xfZ2V0LFxcbm5ldC9kc2EvZGV2bGluay5jOjE3NTpcXHQuc2JfcG9ydF9wb29sX3NldFxcdFxcdD0gZHNhX2Rldmxpbmtfc2JfcG9ydF9wb29sX3NldCxcXG5uZXQvZHNhL2RldmxpbmsuYzoxNzY6XFx0LnNiX3RjX3Bvb2xfYmluZF9nZXRcXHRcXHQ9IGRzYV9kZXZsaW5rX3NiX3RjX3Bvb2xfYmluZF9nZXQsXFxubmV0L2RzYS9kZXZsaW5rLmM6MTc3OlxcdC5zYl90Y19wb29sX2JpbmRfc2V0XFx0XFx0PSBkc2FfZGV2bGlua19zYl90Y19wb29sX2JpbmRfc2V0LFxcbm5ldC9kc2EvZGV2bGluay5jOjE3ODpcXHQuc2Jfb2NjX3NuYXBzaG90XFx0XFx0PSBkc2FfZGV2bGlua19zYl9vY2Nfc25hcHNob3QsXFxubmV0L2RzYS9kZXZsaW5rLmM6MTc5OlxcdC5zYl9vY2NfbWF4X2NsZWFyXFx0XFx0PSBkc2FfZGV2bGlua19zYl9vY2NfbWF4X2NsZWFyLFxcbm5ldC9kc2EvZGV2bGluay5jOjE4MDpcXHQuc2Jfb2NjX3BvcnRfcG9vbF9nZXRcXHRcXHQ9IGRzYV9kZXZsaW5rX3NiX29jY19wb3J0X3Bvb2xfZ2V0LFxcbm5ldC9kc2EvZGV2bGluay5jOjE4MTpcXHQuc2Jfb2NjX3RjX3BvcnRfYmluZF9nZXRcXHQ9IGRzYV9kZXZsaW5rX3NiX29jY190Y19wb3J0X2JpbmRfZ2V0LFxcbm5ldC9kc2EvZGV2bGluay5jLTE4Mi19O1xcbm5ldC9kc2EvZGV2bGluay5jLTE4My1cXG5uZXQvZHNhL2RldmxpbmsuYzoxODQ6aW50IGRzYV9kZXZsaW5rX3BhcmFtX2dldChzdHJ1Y3QgZGV2bGluayAqZGwsIHUzMiBpZCxcXG5uZXQvZHNhL2RldmxpbmsuYy0xODUtXFx0XFx0XFx0ICBzdHJ1Y3QgZGV2bGlua19wYXJhbV9nc2V0X2N0eCAqY3R4LFxcbi0tXFxubmV0L2RzYS9kZXZsaW5rLmMtMTg3LXtcXG5uZXQvZHNhL2RldmxpbmsuYzoxODg6XFx0c3RydWN0IGRzYV9zd2l0Y2ggKmRzID0gZHNhX2RldmxpbmtfdG9fZHMoZGwpO1xcbm5ldC9kc2EvZGV2bGluay5jLTE4OS1cXG4tLVxcbm5ldC9kc2EvZGV2bGluay5jLTE5NC19XFxubmV0L2RzYS9kZXZsaW5rLmM6MTk1OkVYUE9SVF9TWU1CT0xfR1BMKGRzYV9kZXZsaW5rX3BhcmFtX2dldCk7XFxubmV0L2RzYS9kZXZsaW5rLmMtMTk2LVxcbm5ldC9kc2EvZGV2bGluay5jOjE5NzppbnQgZHNhX2RldmxpbmtfcGFyYW1fc2V0KHN0cnVjdCBkZXZsaW5rICpkbCwgdTMyIGlkLFxcbm5ldC9kc2EvZGV2bGluay5jLTE5OC1cXHRcXHRcXHQgIHN0cnVjdCBkZXZsaW5rX3BhcmFtX2dzZXRfY3R4ICpjdHgsXFxuLS1cXG5uZXQvZHNhL2RldmxpbmsuYy0yMDAte1xcbm5ldC9kc2EvZGV2bGluay5jOjIwMTpcXHRzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMgPSBkc2FfZGV2bGlua190b19kcyhkbCk7XFxubmV0L2RzYS9kZXZsaW5rLmMtMjAyLVxcbi0tXFxubmV0L2RzYS9kZXZsaW5rLmMtMjA3LX1cXG5uZXQvZHNhL2RldmxpbmsuYzoyMDg6RVhQT1JUX1NZTUJPTF9HUEwoZHNhX2RldmxpbmtfcGFyYW1fc2V0KTtcXG5uZXQvZHNhL2RldmxpbmsuYy0yMDktXFxubmV0L2RzYS9kZXZsaW5rLmM6MjEwOmludCBkc2FfZGV2bGlua19wYXJhbXNfcmVnaXN0ZXIoc3RydWN0IGRzYV9zd2l0Y2ggKmRzLFxcbm5ldC9kc2EvZGV2bGluay5jLTIxMS1cXHRcXHRcXHRcXHRjb25zdCBzdHJ1Y3QgZGV2bGlua19wYXJhbSAqcGFyYW1zLFxcbi0tXFxubmV0L2RzYS9kZXZsaW5rLmMtMjE1LX1cXG5uZXQvZHNhL2RldmxpbmsuYzoyMTY6RVhQT1JUX1NZTUJPTF9HUEwoZHNhX2RldmxpbmtfcGFyYW1zX3JlZ2lzdGVyKTtcXG5uZXQvZHNhL2RldmxpbmsuYy0yMTctXFxubmV0L2RzYS9kZXZsaW5rLmM6MjE4OnZvaWQgZHNhX2RldmxpbmtfcGFyYW1zX3VucmVnaXN0ZXIoc3RydWN0IGRzYV9zd2l0Y2ggKmRzLFxcbm5ldC9kc2EvZGV2bGluay5jLTIxOS1cXHRcXHRcXHRcXHQgICBjb25zdCBzdHJ1Y3QgZGV2bGlua19wYXJhbSAqcGFyYW1zLFxcbi0tXFxubmV0L2RzYS9kZXZsaW5rLmMtMjIzLX1cXG5uZXQvZHNhL2RldmxpbmsuYzoyMjQ6RVhQT1JUX1NZTUJPTF9HUEwoZHNhX2RldmxpbmtfcGFyYW1zX3VucmVnaXN0ZXIpO1xcbm5ldC9kc2EvZGV2bGluay5jLTIyNS1cXG5uZXQvZHNhL2RldmxpbmsuYzoyMjY6aW50IGRzYV9kZXZsaW5rX3Jlc291cmNlX3JlZ2lzdGVyKHN0cnVjdCBkc2Ffc3dpdGNoICpkcyxcXG5uZXQvZHNhL2RldmxpbmsuYy0yMjctXFx0XFx0XFx0XFx0ICBjb25zdCBjaGFyICpyZXNvdXJjZV9uYW1lLFxcbi0tXFxubmV0L2RzYS9kZXZsaW5rLmMtMjQyLX1cXG5uZXQvZHNhL2RldmxpbmsuYzoyNDM6RVhQT1JUX1NZTUJPTF9HUEwoZHNhX2RldmxpbmtfcmVzb3VyY2VfcmVnaXN0ZXIpO1xcbm5ldC9kc2EvZGV2bGluay5jLTI0NC1cXG5uZXQvZHNhL2RldmxpbmsuYzoyNDU6dm9pZCBkc2FfZGV2bGlua19yZXNvdXJjZXNfdW5yZWdpc3RlcihzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMpXFxubmV0L2RzYS9kZXZsaW5rLmMtMjQ2LXtcXG4tLVxcbm5ldC9kc2EvZGV2bGluay5jLTI0OC19XFxubmV0L2RzYS9kZXZsaW5rLmM6MjQ5OkVYUE9SVF9TWU1CT0xfR1BMKGRzYV9kZXZsaW5rX3Jlc291cmNlc191bnJlZ2lzdGVyKTtcXG5uZXQvZHNhL2RldmxpbmsuYy0yNTAtXFxubmV0L2RzYS9kZXZsaW5rLmM6MjUxOnZvaWQgZHNhX2RldmxpbmtfcmVzb3VyY2Vfb2NjX2dldF9yZWdpc3RlcihzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMsXFxubmV0L2RzYS9kZXZsaW5rLmMtMjUyLVxcdFxcdFxcdFxcdFxcdCAgIHU2NCByZXNvdXJjZV9pZCxcXG4tLVxcbm5ldC9kc2EvZGV2bGluay5jLTI2MC19XFxubmV0L2RzYS9kZXZsaW5rLmM6MjYxOkVYUE9SVF9TWU1CT0xfR1BMKGRzYV9kZXZsaW5rX3Jlc291cmNlX29jY19nZXRfcmVnaXN0ZXIpO1xcbm5ldC9kc2EvZGV2bGluay5jLTI2Mi1cXG5uZXQvZHNhL2RldmxpbmsuYzoyNjM6dm9pZCBkc2FfZGV2bGlua19yZXNvdXJjZV9vY2NfZ2V0X3VucmVnaXN0ZXIoc3RydWN0IGRzYV9zd2l0Y2ggKmRzLFxcbm5ldC9kc2EvZGV2bGluay5jLTI2NC1cXHRcXHRcXHRcXHRcXHQgICAgIHU2NCByZXNvdXJjZV9pZClcXG4tLVxcbm5ldC9kc2EvZGV2bGluay5jLTI2OS19XFxubmV0L2RzYS9kZXZsaW5rLmM6MjcwOkVYUE9SVF9TWU1CT0xfR1BMKGRzYV9kZXZsaW5rX3Jlc291cmNlX29jY19nZXRfdW5yZWdpc3Rlcik7XFxubmV0L2RzYS9kZXZsaW5rLmMtMjcxLVxcbm5ldC9kc2EvZGV2bGluay5jPTI3Mj1zdHJ1Y3QgZGV2bGlua19yZWdpb24gKlxcbm5ldC9kc2EvZGV2bGluay5jOjI3Mzpkc2FfZGV2bGlua19yZWdpb25fY3JlYXRlKHN0cnVjdCBkc2Ffc3dpdGNoICpkcyxcXG5uZXQvZHNhL2RldmxpbmsuYy0yNzQtXFx0XFx0XFx0ICBjb25zdCBzdHJ1Y3QgZGV2bGlua19yZWdpb25fb3BzICpvcHMsXFxuLS1cXG5uZXQvZHNhL2RldmxpbmsuYy0yNzktfVxcbm5ldC9kc2EvZGV2bGluay5jOjI4MDpFWFBPUlRfU1lNQk9MX0dQTChkc2FfZGV2bGlua19yZWdpb25fY3JlYXRlKTtcXG5uZXQvZHNhL2RldmxpbmsuYy0yODEtXFxubmV0L2RzYS9kZXZsaW5rLmM9MjgyPXN0cnVjdCBkZXZsaW5rX3JlZ2lvbiAqXFxubmV0L2RzYS9kZXZsaW5rLmM6MjgzOmRzYV9kZXZsaW5rX3BvcnRfcmVnaW9uX2NyZWF0ZShzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMsXFxubmV0L2RzYS9kZXZsaW5rLmMtMjg0LVxcdFxcdFxcdCAgICAgICBpbnQgcG9ydCxcXG4tLVxcbm5ldC9kc2EvZGV2bGluay5jLTI4Ny17XFxubmV0L2RzYS9kZXZsaW5rLmM6Mjg4OlxcdHN0cnVjdCBkc2FfcG9ydCAqZHAgPSBkc2FfdG9fcG9ydChkcywgcG9ydCk7XFxubmV0L2RzYS9kZXZsaW5rLmMtMjg5LVxcbi0tXFxubmV0L2RzYS9kZXZsaW5rLmMtMjkzLX1cXG5uZXQvZHNhL2RldmxpbmsuYzoyOTQ6RVhQT1JUX1NZTUJPTF9HUEwoZHNhX2RldmxpbmtfcG9ydF9yZWdpb25fY3JlYXRlKTtcXG5uZXQvZHNhL2RldmxpbmsuYy0yOTUtXFxubmV0L2RzYS9kZXZsaW5rLmM6Mjk2OnZvaWQgZHNhX2RldmxpbmtfcmVnaW9uX2Rlc3Ryb3koc3RydWN0IGRldmxpbmtfcmVnaW9uICpyZWdpb24pXFxubmV0L2RzYS9kZXZsaW5rLmMtMjk3LXtcXG4tLVxcbm5ldC9kc2EvZGV2bGluay5jLTI5OS19XFxubmV0L2RzYS9kZXZsaW5rLmM6MzAwOkVYUE9SVF9TWU1CT0xfR1BMKGRzYV9kZXZsaW5rX3JlZ2lvbl9kZXN0cm95KTtcXG5uZXQvZHNhL2RldmxpbmsuYy0zMDEtXFxubmV0L2RzYS9kZXZsaW5rLmM6MzAyOmludCBkc2FfcG9ydF9kZXZsaW5rX3NldHVwKHN0cnVjdCBkc2FfcG9ydCAqZHApXFxubmV0L2RzYS9kZXZsaW5rLmMtMzAzLXtcXG5uZXQvZHNhL2RldmxpbmsuYy0zMDQtXFx0c3RydWN0IGRldmxpbmtfcG9ydCAqZGxwID0gXFx1MDAyNmRwLVxcdTAwM2VkZXZsaW5rX3BvcnQ7XFxubmV0L2RzYS9kZXZsaW5rLmM6MzA1OlxcdHN0cnVjdCBkc2Ffc3dpdGNoX3RyZWUgKmRzdCA9IGRwLVxcdTAwM2Vkcy1cXHUwMDNlZHN0O1xcbm5ldC9kc2EvZGV2bGluay5jLTMwNi1cXHRzdHJ1Y3QgZGV2bGlua19wb3J0X2F0dHJzIGF0dHJzID0ge307XFxubmV0L2RzYS9kZXZsaW5rLmMtMzA3LVxcdHN0cnVjdCBkZXZsaW5rICpkbCA9IGRwLVxcdTAwM2Vkcy1cXHUwMDNlZGV2bGluaztcXG5uZXQvZHNhL2RldmxpbmsuYzozMDg6XFx0c3RydWN0IGRzYV9zd2l0Y2ggKmRzID0gZHAtXFx1MDAzZWRzO1xcbm5ldC9kc2EvZGV2bGluay5jLTMwOS1cXHRjb25zdCB1bnNpZ25lZCBjaGFyICppZDtcXG4tLVxcbm5ldC9kc2EvZGV2bGluay5jLTM1NC1cXG5uZXQvZHNhL2RldmxpbmsuYzozNTU6dm9pZCBkc2FfcG9ydF9kZXZsaW5rX3RlYXJkb3duKHN0cnVjdCBkc2FfcG9ydCAqZHApXFxubmV0L2RzYS9kZXZsaW5rLmMtMzU2LXtcXG5uZXQvZHNhL2RldmxpbmsuYy0zNTctXFx0c3RydWN0IGRldmxpbmtfcG9ydCAqZGxwID0gXFx1MDAyNmRwLVxcdTAwM2VkZXZsaW5rX3BvcnQ7XFxuXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI1VDA4OjMwOjAxLjIyOTU5OTAwMloiLCJTZXEiOjE1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoxNTA2MTE5MzkzMiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipGdXp6aW5nIERTQSBUYWdnaW5nIFByb3RvY29scyB3aXRoIGBkc2FfbG9vcGAqKlxuXG5Pa2F5LCBzbyBJJ3ZlIGJlZW4gZGlnZ2luZyBpbnRvIHRoZSBEU0EgKERpc3RyaWJ1dGVkIFN3aXRjaCBBcmNoaXRlY3R1cmUpIGNvZGUsIHNwZWNpZmljYWxseSBsb29raW5nIGZvciBmdXp6aW5nIG9wcG9ydHVuaXRpZXMuIFRoZSBgZHNhX2xvb3BgIGRyaXZlciBzZWVtcyBsaWtlIGEgZ3JlYXQgc3RhcnRpbmcgcG9pbnQg4oCTIGl0J3MgYSBtb2NrLXVwIGRyaXZlciwgZXNzZW50aWFsbHkgYSB2aXJ0dWFsIHN3aXRjaCBpbnN0YW50aWF0ZWQgdmlhIGBtZGlvX2RyaXZlcl9yZWdpc3RlcmAgYW5kIGBkc2FfbG9vcF9jcmVhdGVfc3dpdGNoX21kaW9kZXYoKWAuIElmIGBDT05GSUdfTkVUX0RTQV9MT09QYCBpcyBlbmFibGVkLCB0aGlzIHRoaW5nIGF1dG9tYXRpY2FsbHkgc2V0cyB1cCBhIHN3aXRjaCBhbmQgYXR0YWNoZXMgaXQgdG8gYSBmaXhlZCBQSFksIHdoaWNoIGlzIGNvbnZlbmllbnQuXG5cbk5vdywgYGRzYV9sb29wX2NyZWF0ZV9zd2l0Y2hfbWRpb2RldigpYCBjcmVhdGVzIGVpdGhlciBhIHBsYXRmb3JtIGRldmljZSBvciBhbiBNRElPIGRldmljZSwgd2hpY2ggaXMgaW50ZXJlc3RpbmcgaW4gaXRzZWxmLiBUaGUgY3JpdGljYWwgcGFydCBpcyB3aGV0aGVyIGBkc2FfbG9vcGAgcHJvdmlkZXMgYSBwYXRoIHRvIHRoZSBtb2RpZmllZCB0YWdnaW5nIGNvZGUgaW4gYG5ldC9kc2EvdGFnXyouY2AsIGBuZXQvZHNhL3VzZXIuY2AsIGFuZCBgbmV0L2RzYS90YWcuY2AuIEluaXRpYWxseSwgaXQgbG9va3MgbGlrZSBgZHNhX2xvb3BgIHVzZXMgYE5FVF9EU0FfVEFHX05PTkVgLCB3aGljaCBpc24ndCBnb2luZyB0byBnZXQgdXMgYW55d2hlcmUgd2l0aCB0aGUgZGlmZmVyZW50IHRhZ2dpbmcgcHJvdG9jb2xzLlxuXG5Ib3dldmVyLCB0aGUga2V5IGlzIHRoZSBgZHNhX2NvbmR1aXRfc2V0X3Byb21pc2N1aXR5YCBhbmQgYHRhZ2dpbmdfc3RvcmVgIGZ1bmN0aW9ucyBpbiBgbmV0L2RzYS9jb25kdWl0LmNgLiBJdCBsb29rcyBsaWtlIHRoZXNlIG9mZmVyIGEgd2F5IHRvICpkeW5hbWljYWxseSogY2hhbmdlIHRoZSB0YWcgcHJvdG9jb2wgdmlhIHN5c2ZzISBTcGVjaWZpY2FsbHksIHN5emthbGxlciBjYW4gd3JpdGUgdG8gYC9zeXMvY2xhc3MvbmV0L1x1MDAzY2NvbmR1aXRcdTAwM2UvZHNhL3RhZ2dpbmdgIHRvIHN3YXAgb3V0IHRoZSB0YWcgcHJvdG9jb2wgdG8gQU5ZIG9mIHRoZSByZWdpc3RlcmVkIHRhZyBkcml2ZXJzLiBUaGUgYHRhZ2dpbmdfc3RvcmVgIGZ1bmN0aW9uIGFjdHVhbGx5IGNhbGxzIGBkc2FfdGFnX2RyaXZlcl9nZXRfYnlfbmFtZSgpYCBhbmQgdGhlbiBgZHNhX3RyZWVfY2hhbmdlX3RhZ19wcm90bygpYC4gVGhpcyBpcyBmYW50YXN0aWMhXG5cblRoaXMgbWVhbnMgd2UgY2FuIGVuYWJsZSAqYWxsKiB0aGUgYE5FVF9EU0FfVEFHXypgIGNvbmZpZ3MgYW5kIHVzZSBzeXprYWxsZXIgdG8gc3dpdGNoIGJldHdlZW4gdGhlbSBvbiB0aGUgZmx5LiBUaGlzIGdpdmVzIHVzIGNvbXBsZXRlIGR5bmFtaWMgY29udHJvbCBvdmVyIHdoYXQgcHJvdG9jb2xzIHdlIGZ1enouIFdlIG5lZWQgdG8gY29uZmlybSB0aGF0IHdlIGNhbiBlbmFibGUgYWxsIHRoZXNlIHRhZ3MsIHdoaWNoIGlzIHRoZSBuZXh0IHN0ZXAuIEknbGwgY2hlY2sgYG5ldC9kc2EvS2NvbmZpZ2AgdG8gYmUgc3VyZS5cblxuUmVnYXJkaW5nIGBkc2FfbG9vcGAgYW5kIHRoZSBcImNvbmR1aXRcIiBkZXZpY2UsIGl0IGNyZWF0ZXMgYSBzd2l0Y2gsIGJ1dCB3aGljaCBuZXR3b3JrIGRldmljZSBkb2VzIGl0IGF0dGFjaCB0bz8gTG9va2luZyBhdCBgZHNhX2xvb3BfcGRhdGFgLCBpdCBkZWZpbmVzIGAuY2QgPSB7IC5uZXRkZXYgPSBcImV0aDBcIiwgfWAuIFBlcmZlY3QhIFN5emthbGxlciB1c3VhbGx5IGhhcyBgZXRoMGAgb3IgYGV0aDFgIHByZXNlbnQuIElmIGBkc2FfbG9vcGAgYXR0YWNoZXMgdG8gYGV0aDBgLCBpdCdsbCBjcmVhdGUgRFNBIHVzZXIgaW50ZXJmYWNlcyBsaWtlIGBsYW4xYCwgYGxhbjJgLCBldGMuXG5cblRoaXMgbWVhbnMgd2UgY2FuIHNlbmQgcGFja2V0cyB0aHJvdWdoIGBsYW4xYCwgd2hpY2ggd2lsbCBjYWxsIGBkc2FfdXNlcl94bWl0YCwgd2hpY2ggaW4gdHVybiBjYWxscyB0aGUgdGFnZ2VyJ3MgYHhtaXRgIGZ1bmN0aW9uIChgcC1cdTAwM2V4bWl0YCkuIENydWNpYWxseSwgaWYgd2Ugc2VuZCBwYWNrZXRzICp0byogYGV0aDBgLCBpdCBjYWxscyBgZHNhX3N3aXRjaF9yY3ZgLCBhbmQgY2FsbHMgdGhlIHRhZ2dlcidzIGByY3ZgIGZ1bmN0aW9uIChgcC1cdTAwM2VyY3ZgKS4gV2Ugbm93IGhhdmUgYSBjbGVhbiBmdXp6aW5nIHBhdGggZm9yIGJvdGggdHJhbnNtaXQgYW5kIHJlY2VpdmUgcGF0aHMhXG5cblNvLCB0aGUgZ2FtZSBwbGFuIGlzIGNsZWFyLiBXZSBuZWVkIHRvIGVuYWJsZSB0aGUgZm9sbG93aW5nIGNvbmZpZ3M6XG5cbiogICBgTkVUX0RTQWBcbiogICBgTkVUX0RTQV9MT09QYFxuKiAgIEFsbCB0aGUgYE5FVF9EU0FfVEFHXypgIGNvbmZpZ3MuXG5cblNwZWNpZmljYWxseSwgSSdsbCBuZWVkIHRvIGVuYWJsZSBhbGwgb2YgdGhlc2U6XG4qICAgYE5FVF9EU0FfVEFHX0FSOTMzMWBcbiogICBgTkVUX0RTQV9UQUdfQlJDTWBcbiogICBgTkVUX0RTQV9UQUdfQlJDTV9MRUdBQ1lgXG4qICAgYE5FVF9EU0FfVEFHX0JSQ01fUFJFUEVORGBcbiogICBgTkVUX0RTQV9UQUdfSEVMTENSRUVLYFxuKiAgIGBORVRfRFNBX1RBR19HU1dJUGBcbiogICBgTkVUX0RTQV9UQUdfRFNBYFxuKiAgIGBORVRfRFNBX1RBR19FRFNBYFxuKiAgIGBORVRfRFNBX1RBR19NVEtgXG4qICAgYE5FVF9EU0FfVEFHX01YTF84NjJYWGBcbiogICBgTkVUX0RTQV9UQUdfTVhMX0dTVzFYWGBcbiogICBgTkVUX0RTQV9UQUdfS1NaYFxuKiAgIGBORVRfRFNBX1RBR19ORVRDYFxuKiAgIGBORVRfRFNBX1RBR19PQ0VMT1RgXG4qICAgYE5FVF9EU0FfVEFHX09DRUxPVF84MDIxUWBcbiogICBgTkVUX0RTQV9UQUdfUUNBYFxuKiAgIGBORVRfRFNBX1RBR19SVEw0X0FgXG4qICAgYE5FVF9EU0FfVEFHX1JUTDhfNGBcbiogICBgTkVUX0RTQV9UQUdfUlpOMVxuXG4iLCJJbnB1dFRva2VucyI6NDYxNDYsIk91dHB1dFRva2VucyI6MjEsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMTA4LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI1VDA4OjMwOjE2LjI5MDc5NzI2NFoiLCJTZXEiOjE2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjQxMjY3OTI5NSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgTkVUX0RTQV9UQUdfXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9kc2EvS2NvbmZpZz0xNz1pZiBORVRfRFNBXFxuLS1cXG5uZXQvZHNhL0tjb25maWctMjAtXFxubmV0L2RzYS9LY29uZmlnOjIxOmNvbmZpZyBORVRfRFNBX1RBR19OT05FXFxubmV0L2RzYS9LY29uZmlnLTIyLVxcdHRyaXN0YXRlIFxcXCJOby1vcCB0YWcgZHJpdmVyXFxcIlxcbi0tXFxubmV0L2RzYS9LY29uZmlnLTI2LVxcbm5ldC9kc2EvS2NvbmZpZzoyNzpjb25maWcgTkVUX0RTQV9UQUdfQVI5MzMxXFxubmV0L2RzYS9LY29uZmlnLTI4LVxcdHRyaXN0YXRlIFxcXCJUYWcgZHJpdmVyIGZvciBBdGhlcm9zIEFSOTMzMSBTb0Mgd2l0aCBidWlsdC1pbiBzd2l0Y2hcXFwiXFxuLS1cXG5uZXQvZHNhL0tjb25maWctMzItXFxubmV0L2RzYS9LY29uZmlnOjMzOmNvbmZpZyBORVRfRFNBX1RBR19CUkNNX0NPTU1PTlxcbm5ldC9kc2EvS2NvbmZpZy0zNC1cXHR0cmlzdGF0ZVxcbi0tXFxubmV0L2RzYS9LY29uZmlnLTM2LVxcbm5ldC9kc2EvS2NvbmZpZzozNzpjb25maWcgTkVUX0RTQV9UQUdfQlJDTVxcbm5ldC9kc2EvS2NvbmZpZy0zOC1cXHR0cmlzdGF0ZSBcXFwiVGFnIGRyaXZlciBmb3IgQnJvYWRjb20gc3dpdGNoZXMgdXNpbmcgaW4tZnJhbWUgaGVhZGVyc1xcXCJcXG4tLVxcbm5ldC9kc2EvS2NvbmZpZy00My1cXG5uZXQvZHNhL0tjb25maWc6NDQ6Y29uZmlnIE5FVF9EU0FfVEFHX0JSQ01fTEVHQUNZXFxubmV0L2RzYS9LY29uZmlnLTQ1LVxcdHRyaXN0YXRlIFxcXCJUYWcgZHJpdmVyIGZvciBCQ002M3h4IGxlZ2FjeSBzd2l0Y2hlcyB1c2luZyBpbi1mcmFtZSBoZWFkZXJzXFxcIlxcbi0tXFxubmV0L2RzYS9LY29uZmlnLTUzLVxcbm5ldC9kc2EvS2NvbmZpZzo1NDpjb25maWcgTkVUX0RTQV9UQUdfQlJDTV9MRUdBQ1lfRkNTXFxubmV0L2RzYS9LY29uZmlnLTU1LVxcdHRyaXN0YXRlIFxcXCJUYWcgZHJpdmVyIGZvciBCQ001M3h4IGxlZ2FjeSBzd2l0Y2hlcyB1c2luZyBpbi1mcmFtZSBoZWFkZXJzXFxcIlxcbi0tXFxubmV0L2RzYS9LY29uZmlnLTYzLVxcbm5ldC9kc2EvS2NvbmZpZzo2NDpjb25maWcgTkVUX0RTQV9UQUdfQlJDTV9QUkVQRU5EXFxubmV0L2RzYS9LY29uZmlnLTY1LVxcdHRyaXN0YXRlIFxcXCJUYWcgZHJpdmVyIGZvciBCcm9hZGNvbSBzd2l0Y2hlcyB1c2luZyBwcmVwZW5kZWQgaGVhZGVyc1xcXCJcXG4tLVxcbm5ldC9kc2EvS2NvbmZpZy03MS1cXG5uZXQvZHNhL0tjb25maWc6NzI6Y29uZmlnIE5FVF9EU0FfVEFHX0hFTExDUkVFS1xcbm5ldC9kc2EvS2NvbmZpZy03My1cXHR0cmlzdGF0ZSBcXFwiVGFnIGRyaXZlciBmb3IgSGlyc2NobWFubiBIZWxsY3JlZWsgVFNOIHN3aXRjaGVzXFxcIlxcbi0tXFxubmV0L2RzYS9LY29uZmlnLTc3LVxcbm5ldC9kc2EvS2NvbmZpZzo3ODpjb25maWcgTkVUX0RTQV9UQUdfR1NXSVBcXG5uZXQvZHNhL0tjb25maWctNzktXFx0dHJpc3RhdGUgXFxcIlRhZyBkcml2ZXIgZm9yIExhbnRpcSAvIEludGVsIEdTV0lQIHN3aXRjaGVzXFxcIlxcbi0tXFxubmV0L2RzYS9LY29uZmlnLTgzLVxcbm5ldC9kc2EvS2NvbmZpZzo4NDpjb25maWcgTkVUX0RTQV9UQUdfRFNBX0NPTU1PTlxcbm5ldC9kc2EvS2NvbmZpZy04NS1cXHR0cmlzdGF0ZVxcbm5ldC9kc2EvS2NvbmZpZy04Ni1cXG5uZXQvZHNhL0tjb25maWc6ODc6Y29uZmlnIE5FVF9EU0FfVEFHX0RTQVxcbm5ldC9kc2EvS2NvbmZpZy04OC1cXHR0cmlzdGF0ZSBcXFwiVGFnIGRyaXZlciBmb3IgTWFydmVsbCBzd2l0Y2hlcyB1c2luZyBEU0EgaGVhZGVyc1xcXCJcXG4tLVxcbm5ldC9kc2EvS2NvbmZpZy05My1cXG5uZXQvZHNhL0tjb25maWc6OTQ6Y29uZmlnIE5FVF9EU0FfVEFHX0VEU0FcXG5uZXQvZHNhL0tjb25maWctOTUtXFx0dHJpc3RhdGUgXFxcIlRhZyBkcml2ZXIgZm9yIE1hcnZlbGwgc3dpdGNoZXMgdXNpbmcgRXRoZXJUeXBlIERTQSBoZWFkZXJzXFxcIlxcbi0tXFxubmV0L2RzYS9LY29uZmlnLTEwMC1cXG5uZXQvZHNhL0tjb25maWc6MTAxOmNvbmZpZyBORVRfRFNBX1RBR19NVEtcXG5uZXQvZHNhL0tjb25maWctMTAyLVxcdHRyaXN0YXRlIFxcXCJUYWcgZHJpdmVyIGZvciBNZWRpYXRlayBzd2l0Y2hlc1xcXCJcXG4tLVxcbm5ldC9kc2EvS2NvbmZpZy0xMDYtXFxubmV0L2RzYS9LY29uZmlnOjEwNzpjb25maWcgTkVUX0RTQV9UQUdfTVhMXzg2MlhYXFxubmV0L2RzYS9LY29uZmlnLTEwOC1cXHR0cmlzdGF0ZSBcXFwiVGFnIGRyaXZlciBmb3IgTWF4TGluZWFyIE14TDg2Mnh4IHN3aXRjaGVzXFxcIlxcbi0tXFxubmV0L2RzYS9LY29uZmlnLTExMy1cXG5uZXQvZHNhL0tjb25maWc6MTE0OmNvbmZpZyBORVRfRFNBX1RBR19NWExfR1NXMVhYXFxubmV0L2RzYS9LY29uZmlnLTExNS1cXHR0cmlzdGF0ZSBcXFwiVGFnIGRyaXZlciBmb3IgTWF4TGluZWFyIEdTVzF4eCBzd2l0Y2hlc1xcXCJcXG4tLVxcbm5ldC9kc2EvS2NvbmZpZy0xMjEtXFxubmV0L2RzYS9LY29uZmlnOjEyMjpjb25maWcgTkVUX0RTQV9UQUdfS1NaXFxubmV0L2RzYS9LY29uZmlnLTEyMy1cXHR0cmlzdGF0ZSBcXFwiVGFnIGRyaXZlciBmb3IgTWljcm9jaGlwIDg3OTUvOTM3eC85NDc3Lzk4OTMgZmFtaWxpZXMgb2Ygc3dpdGNoZXNcXFwiXFxuLS1cXG5uZXQvZHNhL0tjb25maWctMTI3LVxcbm5ldC9kc2EvS2NvbmZpZzoxMjg6Y29uZmlnIE5FVF9EU0FfVEFHX05FVENcXG5uZXQvZHNhL0tjb25maWctMTI5LVxcdHRyaXN0YXRlIFxcXCJUYWcgZHJpdmVyIGZvciBOWFAgTkVUQyBzd2l0Y2hlc1xcXCJcXG4tLVxcbm5ldC9kc2EvS2NvbmZpZy0xMzctXFxubmV0L2RzYS9LY29uZmlnOjEzODpjb25maWcgTkVUX0RTQV9UQUdfT0NFTE9UXFxubmV0L2RzYS9LY29uZmlnLTEzOS1cXHR0cmlzdGF0ZSBcXFwiVGFnIGRyaXZlciBmb3IgT2NlbG90IGZhbWlseSBvZiBzd2l0Y2hlcywgdXNpbmcgTlBJIHBvcnRcXFwiXFxuLS1cXG5uZXQvZHNhL0tjb25maWctMTQ4LVxcbm5ldC9kc2EvS2NvbmZpZzoxNDk6Y29uZmlnIE5FVF9EU0FfVEFHX09DRUxPVF84MDIxUVxcbm5ldC9kc2EvS2NvbmZpZy0xNTAtXFx0dHJpc3RhdGUgXFxcIlRhZyBkcml2ZXIgZm9yIE9jZWxvdCBmYW1pbHkgb2Ygc3dpdGNoZXMsIHVzaW5nIFZMQU5cXFwiXFxuLS1cXG5uZXQvZHNhL0tjb25maWctMTU4LVxcbm5ldC9kc2EvS2NvbmZpZzoxNTk6Y29uZmlnIE5FVF9EU0FfVEFHX1FDQVxcbm5ldC9kc2EvS2NvbmZpZy0xNjAtXFx0dHJpc3RhdGUgXFxcIlRhZyBkcml2ZXIgZm9yIFF1YWxjb21tIEF0aGVyb3MgUUNBOEsgc3dpdGNoZXNcXFwiXFxuLS1cXG5uZXQvZHNhL0tjb25maWctMTY0LVxcbm5ldC9kc2EvS2NvbmZpZzoxNjU6Y29uZmlnIE5FVF9EU0FfVEFHX1JUTDRfQVxcbm5ldC9kc2EvS2NvbmZpZy0xNjYtXFx0dHJpc3RhdGUgXFxcIlRhZyBkcml2ZXIgZm9yIFJlYWx0ZWsgNCBieXRlIHByb3RvY29sIEEgdGFnc1xcXCJcXG4tLVxcbm5ldC9kc2EvS2NvbmZpZy0xNzEtXFxubmV0L2RzYS9LY29uZmlnOjE3Mjpjb25maWcgTkVUX0RTQV9UQUdfUlRMOF80XFxubmV0L2RzYS9LY29uZmlnLTE3My1cXHR0cmlzdGF0ZSBcXFwiVGFnIGRyaXZlciBmb3IgUmVhbHRlayA4IGJ5dGUgcHJvdG9jb2wgNCB0YWdzXFxcIlxcbi0tXFxubmV0L2RzYS9LY29uZmlnLTE3Ny1cXG5uZXQvZHNhL0tjb25maWc6MTc4OmNvbmZpZyBORVRfRFNBX1RBR19SWk4xX0E1UFNXXFxubmV0L2RzYS9LY29uZmlnLTE3OS1cXHR0cmlzdGF0ZSBcXFwiVGFnIGRyaXZlciBmb3IgUmVuZXNhcyBSWi9OMSBBNVBTVyBzd2l0Y2hcXFwiXFxuLS1cXG5uZXQvZHNhL0tjb25maWctMTg0LVxcbm5ldC9kc2EvS2NvbmZpZzoxODU6Y29uZmlnIE5FVF9EU0FfVEFHX0xBTjkzMDNcXG5uZXQvZHNhL0tjb25maWctMTg2LVxcdHRyaXN0YXRlIFxcXCJUYWcgZHJpdmVyIGZvciBTTVNDL01pY3JvY2hpcCBMQU45MzAzIGZhbWlseSBvZiBzd2l0Y2hlc1xcXCJcXG4tLVxcbm5ldC9kc2EvS2NvbmZpZy0xOTAtXFxubmV0L2RzYS9LY29uZmlnOjE5MTpjb25maWcgTkVUX0RTQV9UQUdfU0pBMTEwNVxcbm5ldC9kc2EvS2NvbmZpZy0xOTItXFx0dHJpc3RhdGUgXFxcIlRhZyBkcml2ZXIgZm9yIE5YUCBTSkExMTA1IHN3aXRjaGVzXFxcIlxcbi0tXFxubmV0L2RzYS9LY29uZmlnLTE5OS1cXG5uZXQvZHNhL0tjb25maWc6MjAwOmNvbmZpZyBORVRfRFNBX1RBR19UUkFJTEVSXFxubmV0L2RzYS9LY29uZmlnLTIwMS1cXHR0cmlzdGF0ZSBcXFwiVGFnIGRyaXZlciBmb3Igc3dpdGNoZXMgdXNpbmcgYSB0cmFpbGVyIHRhZ1xcXCJcXG4tLVxcbm5ldC9kc2EvS2NvbmZpZy0yMDUtXFxubmV0L2RzYS9LY29uZmlnOjIwNjpjb25maWcgTkVUX0RTQV9UQUdfVlNDNzNYWF84MDIxUVxcbm5ldC9kc2EvS2NvbmZpZy0yMDctXFx0dHJpc3RhdGUgXFxcIlRhZyBkcml2ZXIgZm9yIE1pY3JvY2hpcC9WaXRlc3NlIFZTQzczeHggZmFtaWx5IG9mIHN3aXRjaGVzLCB1c2luZyBWTEFOXFxcIlxcbi0tXFxubmV0L2RzYS9LY29uZmlnLTIxMS1cXG5uZXQvZHNhL0tjb25maWc6MjEyOmNvbmZpZyBORVRfRFNBX1RBR19YUlM3MDBYXFxubmV0L2RzYS9LY29uZmlnLTIxMy1cXHR0cmlzdGF0ZSBcXFwiVGFnIGRyaXZlciBmb3IgWFJTNzAweCBzd2l0Y2hlc1xcXCJcXG4tLVxcbm5ldC9kc2EvS2NvbmZpZy0yMTctXFxubmV0L2RzYS9LY29uZmlnOjIxODpjb25maWcgTkVUX0RTQV9UQUdfWVQ5MjFYXFxubmV0L2RzYS9LY29uZmlnLTIxOS1cXHR0cmlzdGF0ZSBcXFwiVGFnIGRyaXZlciBmb3IgTW90b3Jjb21tIFlUOTIxeCBzd2l0Y2hlc1xcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjVUMDg6MzA6MTguNzAzNDgxNDFaIiwiU2VxIjoxNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzQ2MjI2ODQ3NjIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqRFNBIFN1YnN5c3RlbSBBbmFseXNpcyBmb3IgRnV6emluZyoqXG5cbkFscmlnaHQsIGxldCdzIGJyZWFrIHRoaXMgZG93biBzeXN0ZW1hdGljYWxseS4gRmlyc3QsIEkgbmVlZCB0byBsaXN0IHRoZSByZWxldmFudCBrZXJuZWwgY29uZmlndXJhdGlvbnMuIFdoaWxlIGBORVRfRFNBX1RBR19CUkNNX0NPTU1PTmAgYW5kIGBORVRfRFNBX1RBR19EU0FfQ09NTU9OYCBhcmUgbGlrZWx5IGFscmVhZHkgZW5hYmxlZCBieSBvdGhlcnMsIGl0IGRvZXNuJ3QgaHVydCB0byBiZSBleHBsaWNpdC4gVGhlIGNyaXRpY2FsIG9uZSBoZXJlIGlzIGBORVRfRFNBX0xPT1BgOyB0aGF0J3MgZXNzZW50aWFsIGZvciBpbnN0YW50aWF0aW5nIGEgdmlydHVhbCBzd2l0Y2gsIHdoaWNoIGlzIHRoZSBrZXkgdG8gdGVzdGluZyB0aGlzLiBUaGVuLCBvZiBjb3Vyc2UsIGBDT05GSUdfTkVUX0RTQWAgaXRzZWxmIGlzIHJlcXVpcmVkLlxuXG5Ob3csIHdoaWNoIGZ1bmN0aW9ucyBhcmUgbW9kaWZpZWQ/IFRoZSBwYXRjaCB0b3VjaGVzIGEgbG90IG9mIGZpbGVzIHdpdGhpbiB0aGUgYG5ldC9kc2FgIGRpcmVjdG9yeS4gSSd2ZSBnb3QgdG8gY29uc2lkZXIgYWxsIG9mIHRoZSB0YWdnaW5nIGZ1bmN0aW9ucywgdGhlIG9uZXMgdGhhdCBhcmUgbGlrZWx5IHRvIGhhdmUgYSBtZW1vcnkgbWFuYWdlbWVudCBjaGFuZ2UuXG5cbkxldCBtZSBzZWUgd2hhdCBuZWVkcyB0byBiZSBjb25zaWRlcmVkIGFzIHRoZSBtYWluIGZvY3VzOlxuLSAgIGBkc2Ffc3dpdGNoX3JjdmAgaW4gYG5ldC9kc2EvdGFnLmNgXG4tICAgYGFyOTMzMV90YWdfcmN2YCBpbiBgbmV0L2RzYS90YWdfYXI5MzMxLmNgXG4tICAgYGJyY21fdGFnX3htaXRfbGxgIGluIGBuZXQvZHNhL3RhZ19icmNtLmNgXG4tICAgYGJyY21fdGFnX3Jjdl9sbGAgaW4gYG5ldC9kc2EvdGFnX2JyY20uY2Bcbi0gICBgYnJjbV9sZWdfdGFnX3JjdmAgaW4gYG5ldC9kc2EvdGFnX2JyY20uY2Bcbi0gICBgYnJjbV9sZWdfdGFnX3htaXRgIGluIGBuZXQvZHNhL3RhZ19icmNtLmNgXG4tICAgYGJyY21fbGVnX2Zjc190YWdfeG1pdGAgaW4gYG5ldC9kc2EvdGFnX2JyY20uY2Bcbi0gICBgZHNhX3Jjdl9sbGAgaW4gYG5ldC9kc2EvdGFnX2RzYS5jYFxuLSAgIGBkc2FfcmN2YCBpbiBgbmV0L2RzYS90YWdfZHNhLmNgXG4tICAgYGVkc2FfcmN2YCBpbiBgbmV0L2RzYS90YWdfZHNhLmNgXG4tICAgYGdzd2lwX3RhZ19yY3ZgIGluIGBuZXQvZHNhL3RhZ19nc3dpcC5jYFxuLSAgIGBoZWxsY3JlZWtfeG1pdGAgaW4gYG5ldC9kc2EvdGFnX2hlbGxjcmVlay5jYFxuLSAgIGBoZWxsY3JlZWtfcmN2YCBpbiBgbmV0L2RzYS90YWdfaGVsbGNyZWVrLmNgXG4tICAgYGtzel9jb21tb25fcmN2YCBpbiBgbmV0L2RzYS90YWdfa3N6LmNgXG4tICAgYGtzejg3OTVfeG1pdGAgaW4gYG5ldC9kc2EvdGFnX2tzei5jYFxuLSAgIGBrc3o4Nzk1X3JjdmAgaW4gYG5ldC9kc2EvdGFnX2tzei5jYFxuLSAgIGBrc3pfZGVmZXJfeG1pdGAgaW4gYG5ldC9kc2EvdGFnX2tzei5jYFxuLSAgIGBrc3o5NDc3X3htaXRgIGluIGBuZXQvZHNhL3RhZ19rc3ouY2Bcbi0gICBga3N6OTQ3N19yY3ZgIGluIGBuZXQvZHNhL3RhZ19rc3ouY2Bcbi0gICBga3N6OTg5M194bWl0YCBpbiBgbmV0L2RzYS90YWdfa3N6LmNgXG4tICAgYGxhbjkzN3hfeG1pdGAgaW4gYG5ldC9kc2EvdGFnX2tzei5jYFxuLSAgIGBsYW45MzAzX3JjdmAgaW4gYG5ldC9kc2EvdGFnX2xhbjkzMDMuY2Bcbi0gICBgbXRrX3RhZ19yY3ZgIGluIGBuZXQvZHNhL3RhZ19tdGsuY2Bcbi0gICBgZ3N3MXh4X3RhZ19yY3ZgIGluIGBuZXQvZHNhL3RhZ19teGwtZ3N3MXh4LmNgXG4tICAgYG14bDg2Ml90YWdfcmN2YCBpbiBgbmV0L2RzYS90YWdfbXhsODYyeHguY2Bcbi0gICBgbmV0Y19yY3ZgIGluIGBuZXQvZHNhL3RhZ19uZXRjLmNgXG4tICAgYG9jZWxvdF9yY3ZgIGluIGBuZXQvZHNhL3RhZ19vY2Vsb3QuY2Bcbi0gICBgb2NlbG90X2RlZmVyX3htaXRgIGluIGBuZXQvZHNhL3RhZ19vY2Vsb3RfODAyMXEuY2Bcbi0gICBgb2NlbG90X3JjdmAgaW4gYG5ldC9kc2EvdGFnX29jZWxvdF84MDIxcS5jYFxuLSAgIGBxY2FfdGFnX3JjdmAgaW4gYG5ldC9kc2EvdGFnX3FjYS5jYFxuLSAgIGBydGw0YV90YWdfeG1pdGAgaW4gYG5ldC9kc2EvXG5cbiIsIklucHV0VG9rZW5zIjo1MDMxMCwiT3V0cHV0VG9rZW5zIjo2MjEsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyODc1LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI1VDA4OjMwOjUzLjMyNjE3MDgwMVoiLCJTZXEiOjE4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIyODE3NDA4NiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiTkVUX0RTQVwiLFxuICAgIFwiTkVUX0RTQV9MT09QXCIsXG4gICAgXCJORVRfRFNBX1RBR19BUjkzMzFcIixcbiAgICBcIk5FVF9EU0FfVEFHX0JSQ01cIixcbiAgICBcIk5FVF9EU0FfVEFHX0JSQ01fTEVHQUNZXCIsXG4gICAgXCJORVRfRFNBX1RBR19CUkNNX1BSRVBFTkRcIixcbiAgICBcIk5FVF9EU0FfVEFHX0hFTExDUkVFS1wiLFxuICAgIFwiTkVUX0RTQV9UQUdfR1NXSVBcIixcbiAgICBcIk5FVF9EU0FfVEFHX0RTQVwiLFxuICAgIFwiTkVUX0RTQV9UQUdfRURTQVwiLFxuICAgIFwiTkVUX0RTQV9UQUdfTVRLXCIsXG4gICAgXCJORVRfRFNBX1RBR19NWExfODYyWFhcIixcbiAgICBcIk5FVF9EU0FfVEFHX01YTF9HU1cxWFhcIixcbiAgICBcIk5FVF9EU0FfVEFHX0tTWlwiLFxuICAgIFwiTkVUX0RTQV9UQUdfTkVUQ1wiLFxuICAgIFwiTkVUX0RTQV9UQUdfT0NFTE9UXCIsXG4gICAgXCJORVRfRFNBX1RBR19PQ0VMT1RfODAyMVFcIixcbiAgICBcIk5FVF9EU0FfVEFHX1FDQVwiLFxuICAgIFwiTkVUX0RTQV9UQUdfUlRMNF9BXCIsXG4gICAgXCJORVRfRFNBX1RBR19SVEw4XzRcIixcbiAgICBcIk5FVF9EU0FfVEFHX1JaTjFfQTVQU1dcIixcbiAgICBcIk5FVF9EU0FfVEFHX0xBTjkzMDNcIixcbiAgICBcIk5FVF9EU0FfVEFHX1NKQTExMDVcIixcbiAgICBcIk5FVF9EU0FfVEFHX1RSQUlMRVJcIixcbiAgICBcIk5FVF9EU0FfVEFHX1ZTQzczWFhfODAyMVFcIixcbiAgICBcIk5FVF9EU0FfVEFHX1hSUzcwMFhcIixcbiAgICBcIk5FVF9EU0FfVEFHX1lUOTIxWFwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImRzYV9zd2l0Y2hfcmN2XCIsXG4gICAgXCJkc2FfdXNlcl94bWl0XCIsXG4gICAgXCJhcjkzMzFfdGFnX3JjdlwiLFxuICAgIFwiYnJjbV90YWdfeG1pdF9sbFwiLFxuICAgIFwiYnJjbV90YWdfcmN2X2xsXCIsXG4gICAgXCJkc2FfcmN2X2xsXCIsXG4gICAgXCJlZHNhX3JjdlwiLFxuICAgIFwia3N6X2NvbW1vbl9yY3ZcIixcbiAgICBcIm9jZWxvdF9yY3ZcIixcbiAgICBcInFjYV90YWdfcmN2XCIsXG4gICAgXCJzamExMTA1X3JjdlwiLFxuICAgIFwidHJhaWxlcl9yY3ZcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCByZWZhY3RvcnMgc2tiIG1lbW9yeSBtYW5hZ2VtZW50IGluIHRoZSBEU0EgKERpc3RyaWJ1dGVkIFN3aXRjaCBBcmNoaXRlY3R1cmUpIHN1YnN5c3RlbS4gSXQgc2hpZnRzIHRoZSByZXNwb25zaWJpbGl0eSBvZiBmcmVlaW5nIHRoZSBza2Igb24gZXJyb3IgcGF0aHMgZnJvbSB0aGUgY29yZSBEU0EgZnVuY3Rpb25zIChkc2FfdXNlcl94bWl0LCBkc2Ffc3dpdGNoX3JjdikgdG8gdGhlIGluZGl2aWR1YWwgdGFnZ2VyIGRyaXZlcnMuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSB0aGF0IGNvdWxkIGludHJvZHVjZSBtZW1vcnkgbGVha3Mgb3IgZG91YmxlIGZyZWVzIGlmIGFueSBlcnJvciBwYXRoIGluIGEgdGFnZ2VyIGRyaXZlciBpcyBtaXNzZWQgb3IgbWlzaGFuZGxlZC4gVGhlIGNvZGUgaXMgcmVhY2hhYmxlIGluIGEgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQgYnkgdXNpbmcgdGhlIGRzYV9sb29wIG1vY2stdXAgc3dpdGNoIGRyaXZlciBhbmQgZHluYW1pY2FsbHkgY2hhbmdpbmcgdGhlIHRhZ2dpbmcgcHJvdG9jb2wgdmlhIHN5c2ZzLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIk5FVF9EU0FcIixcbiAgICBcIk5FVF9EU0FfTE9PUFwiLFxuICAgIFwiTkVUX0RTQV9UQUdfQVI5MzMxXCIsXG4gICAgXCJORVRfRFNBX1RBR19CUkNNXCIsXG4gICAgXCJORVRfRFNBX1RBR19CUkNNX0xFR0FDWVwiLFxuICAgIFwiTkVUX0RTQV9UQUdfQlJDTV9QUkVQRU5EXCIsXG4gICAgXCJORVRfRFNBX1RBR19IRUxMQ1JFRUtcIixcbiAgICBcIk5FVF9EU0FfVEFHX0dTV0lQXCIsXG4gICAgXCJORVRfRFNBX1RBR19EU0FcIixcbiAgICBcIk5FVF9EU0FfVEFHX0VEU0FcIixcbiAgICBcIk5FVF9EU0FfVEFHX01US1wiLFxuICAgIFwiTkVUX0RTQV9UQUdfTVhMXzg2MlhYXCIsXG4gICAgXCJORVRfRFNBX1RBR19NWExfR1NXMVhYXCIsXG4gICAgXCJORVRfRFNBX1RBR19LU1pcIixcbiAgICBcIk5FVF9EU0FfVEFHX05FVENcIixcbiAgICBcIk5FVF9EU0FfVEFHX09DRUxPVFwiLFxuICAgIFwiTkVUX0RTQV9UQUdfT0NFTE9UXzgwMjFRXCIsXG4gICAgXCJORVRfRFNBX1RBR19RQ0FcIixcbiAgICBcIk5FVF9EU0FfVEFHX1JUTDRfQVwiLFxuICAgIFwiTkVUX0RTQV9UQUdfUlRMOF80XCIsXG4gICAgXCJORVRfRFNBX1RBR19SWk4xX0E1UFNXXCIsXG4gICAgXCJORVRfRFNBX1RBR19MQU45MzAzXCIsXG4gICAgXCJORVRfRFNBX1RBR19TSkExMTA1XCIsXG4gICAgXCJORVRfRFNBX1RBR19UUkFJTEVSXCIsXG4gICAgXCJORVRfRFNBX1RBR19WU0M3M1hYXzgwMjFRXCIsXG4gICAgXCJORVRfRFNBX1RBR19YUlM3MDBYXCIsXG4gICAgXCJORVRfRFNBX1RBR19ZVDkyMVhcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJkc2Ffc3dpdGNoX3JjdlwiLFxuICAgIFwiZHNhX3VzZXJfeG1pdFwiLFxuICAgIFwiYXI5MzMxX3RhZ19yY3ZcIixcbiAgICBcImJyY21fdGFnX3htaXRfbGxcIixcbiAgICBcImJyY21fdGFnX3Jjdl9sbFwiLFxuICAgIFwiZHNhX3Jjdl9sbFwiLFxuICAgIFwiZWRzYV9yY3ZcIixcbiAgICBcImtzel9jb21tb25fcmN2XCIsXG4gICAgXCJvY2Vsb3RfcmN2XCIsXG4gICAgXCJxY2FfdGFnX3JjdlwiLFxuICAgIFwic2phMTEwNV9yY3ZcIixcbiAgICBcInRyYWlsZXJfcmN2XCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggcmVmYWN0b3JzIHNrYiBtZW1vcnkgbWFuYWdlbWVudCBpbiB0aGUgRFNBIChEaXN0cmlidXRlZCBTd2l0Y2ggQXJjaGl0ZWN0dXJlKSBzdWJzeXN0ZW0uIEl0IHNoaWZ0cyB0aGUgcmVzcG9uc2liaWxpdHkgb2YgZnJlZWluZyB0aGUgc2tiIG9uIGVycm9yIHBhdGhzIGZyb20gdGhlIGNvcmUgRFNBIGZ1bmN0aW9ucyAoZHNhX3VzZXJfeG1pdCwgZHNhX3N3aXRjaF9yY3YpIHRvIHRoZSBpbmRpdmlkdWFsIHRhZ2dlciBkcml2ZXJzLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgdGhhdCBjb3VsZCBpbnRyb2R1Y2UgbWVtb3J5IGxlYWtzIG9yIGRvdWJsZSBmcmVlcyBpZiBhbnkgZXJyb3IgcGF0aCBpbiBhIHRhZ2dlciBkcml2ZXIgaXMgbWlzc2VkIG9yIG1pc2hhbmRsZWQuIFRoZSBjb2RlIGlzIHJlYWNoYWJsZSBpbiBhIHZpcnR1YWxpemVkIGVudmlyb25tZW50IGJ5IHVzaW5nIHRoZSBkc2FfbG9vcCBtb2NrLXVwIHN3aXRjaCBkcml2ZXIgYW5kIGR5bmFtaWNhbGx5IGNoYW5naW5nIHRoZSB0YWdnaW5nIHByb3RvY29sIHZpYSBzeXNmcy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+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-workflow745ml[0].run-triage(0) Phase: Succeeded StartedAt: 2026-06-25 08:21:30 +0000 UTC FinishedAt: 2026-06-25 08:30:55 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "bpf-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git", "commit_hash": "f34c6b3a3c3d98f34918e1d2ea846a5acccac6d1", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "NET_DSA", "NET_DSA_LOOP", "NET_DSA_TAG_AR9331", "NET_DSA_TAG_BRCM", "NET_DSA_TAG_BRCM_LEGACY", "NET_DSA_TAG_BRCM_PREPEND", "NET_DSA_TAG_HELLCREEK", "NET_DSA_TAG_GSWIP", "NET_DSA_TAG_DSA", "NET_DSA_TAG_EDSA", "NET_DSA_TAG_MTK", "NET_DSA_TAG_MXL_862XX", "NET_DSA_TAG_MXL_GSW1XX", "NET_DSA_TAG_KSZ", "NET_DSA_TAG_NETC", "NET_DSA_TAG_OCELOT", "NET_DSA_TAG_OCELOT_8021Q", "NET_DSA_TAG_QCA", "NET_DSA_TAG_RTL4_A", "NET_DSA_TAG_RTL8_4", "NET_DSA_TAG_RZN1_A5PSW", "NET_DSA_TAG_LAN9303", "NET_DSA_TAG_SJA1105", "NET_DSA_TAG_TRAILER", "NET_DSA_TAG_VSC73XX_8021Q", "NET_DSA_TAG_XRS700X", "NET_DSA_TAG_YT921X" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "bpf-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git", "commit_hash": "f34c6b3a3c3d98f34918e1d2ea846a5acccac6d1", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "NET_DSA", "NET_DSA_LOOP", "NET_DSA_TAG_AR9331", "NET_DSA_TAG_BRCM", "NET_DSA_TAG_BRCM_LEGACY", "NET_DSA_TAG_BRCM_PREPEND", "NET_DSA_TAG_HELLCREEK", "NET_DSA_TAG_GSWIP", "NET_DSA_TAG_DSA", "NET_DSA_TAG_EDSA", "NET_DSA_TAG_MTK", "NET_DSA_TAG_MXL_862XX", "NET_DSA_TAG_MXL_GSW1XX", "NET_DSA_TAG_KSZ", "NET_DSA_TAG_NETC", "NET_DSA_TAG_OCELOT", "NET_DSA_TAG_OCELOT_8021Q", "NET_DSA_TAG_QCA", "NET_DSA_TAG_RTL4_A", "NET_DSA_TAG_RTL8_4", "NET_DSA_TAG_RZN1_A5PSW", "NET_DSA_TAG_LAN9303", "NET_DSA_TAG_SJA1105", "NET_DSA_TAG_TRAILER", "NET_DSA_TAG_VSC73XX_8021Q", "NET_DSA_TAG_XRS700X", "NET_DSA_TAG_YT921X" ], "series_id": "2e62e044-69c2-4487-9819-b9332e30abaa" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "dsa_switch_rcv", "dsa_user_xmit", "ar9331_tag_rcv", "brcm_tag_xmit_ll", "brcm_tag_rcv_ll", "dsa_rcv_ll", "edsa_rcv", "ksz_common_rcv", "ocelot_rcv", "qca_tag_rcv", "sja1105_rcv", "trailer_rcv" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db" ], "skip_cover_check": false, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI1IDA4OjI5PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O05FVF9EU0EmIzM0OywKICAgICYjMzQ7TkVUX0RTQV9MT09QJiMzNDssCiAgICAmIzM0O05FVF9EU0FfVEFHX0FSOTMzMSYjMzQ7LAogICAgJiMzNDtORVRfRFNBX1RBR19CUkNNJiMzNDssCiAgICAmIzM0O05FVF9EU0FfVEFHX0JSQ01fTEVHQUNZJiMzNDssCiAgICAmIzM0O05FVF9EU0FfVEFHX0JSQ01fUFJFUEVORCYjMzQ7LAogICAgJiMzNDtORVRfRFNBX1RBR19IRUxMQ1JFRUsmIzM0OywKICAgICYjMzQ7TkVUX0RTQV9UQUdfR1NXSVAmIzM0OywKICAgICYjMzQ7TkVUX0RTQV9UQUdfRFNBJiMzNDssCiAgICAmIzM0O05FVF9EU0FfVEFHX0VEU0EmIzM0OywKICAgICYjMzQ7TkVUX0RTQV9UQUdfTVRLJiMzNDssCiAgICAmIzM0O05FVF9EU0FfVEFHX01YTF84NjJYWCYjMzQ7LAogICAgJiMzNDtORVRfRFNBX1RBR19NWExfR1NXMVhYJiMzNDssCiAgICAmIzM0O05FVF9EU0FfVEFHX0tTWiYjMzQ7LAogICAgJiMzNDtORVRfRFNBX1RBR19ORVRDJiMzNDssCiAgICAmIzM0O05FVF9EU0FfVEFHX09DRUxPVCYjMzQ7LAogICAgJiMzNDtORVRfRFNBX1RBR19PQ0VMT1RfODAyMVEmIzM0OywKICAgICYjMzQ7TkVUX0RTQV9UQUdfUUNBJiMzNDssCiAgICAmIzM0O05FVF9EU0FfVEFHX1JUTDRfQSYjMzQ7LAogICAgJiMzNDtORVRfRFNBX1RBR19SVEw4XzQmIzM0OywKICAgICYjMzQ7TkVUX0RTQV9UQUdfUlpOMV9BNVBTVyYjMzQ7LAogICAgJiMzNDtORVRfRFNBX1RBR19MQU45MzAzJiMzNDssCiAgICAmIzM0O05FVF9EU0FfVEFHX1NKQTExMDUmIzM0OywKICAgICYjMzQ7TkVUX0RTQV9UQUdfVFJBSUxFUiYjMzQ7LAogICAgJiMzNDtORVRfRFNBX1RBR19WU0M3M1hYXzgwMjFRJiMzNDssCiAgICAmIzM0O05FVF9EU0FfVEFHX1hSUzcwMFgmIzM0OywKICAgICYjMzQ7TkVUX0RTQV9UQUdfWVQ5MjFYJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7ZHNhX3N3aXRjaF9yY3YmIzM0OywKICAgICYjMzQ7ZHNhX3VzZXJfeG1pdCYjMzQ7LAogICAgJiMzNDthcjkzMzFfdGFnX3JjdiYjMzQ7LAogICAgJiMzNDticmNtX3RhZ194bWl0X2xsJiMzNDssCiAgICAmIzM0O2JyY21fdGFnX3Jjdl9sbCYjMzQ7LAogICAgJiMzNDtkc2FfcmN2X2xsJiMzNDssCiAgICAmIzM0O2Vkc2FfcmN2JiMzNDssCiAgICAmIzM0O2tzel9jb21tb25fcmN2JiMzNDssCiAgICAmIzM0O29jZWxvdF9yY3YmIzM0OywKICAgICYjMzQ7cWNhX3RhZ19yY3YmIzM0OywKICAgICYjMzQ7c2phMTEwNV9yY3YmIzM0OywKICAgICYjMzQ7dHJhaWxlcl9yY3YmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggcmVmYWN0b3JzIHNrYiBtZW1vcnkgbWFuYWdlbWVudCBpbiB0aGUgRFNBIChEaXN0cmlidXRlZCBTd2l0Y2ggQXJjaGl0ZWN0dXJlKSBzdWJzeXN0ZW0uIEl0IHNoaWZ0cyB0aGUgcmVzcG9uc2liaWxpdHkgb2YgZnJlZWluZyB0aGUgc2tiIG9uIGVycm9yIHBhdGhzIGZyb20gdGhlIGNvcmUgRFNBIGZ1bmN0aW9ucyAoZHNhX3VzZXJfeG1pdCwgZHNhX3N3aXRjaF9yY3YpIHRvIHRoZSBpbmRpdmlkdWFsIHRhZ2dlciBkcml2ZXJzLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgdGhhdCBjb3VsZCBpbnRyb2R1Y2UgbWVtb3J5IGxlYWtzIG9yIGRvdWJsZSBmcmVlcyBpZiBhbnkgZXJyb3IgcGF0aCBpbiBhIHRhZ2dlciBkcml2ZXIgaXMgbWlzc2VkIG9yIG1pc2hhbmRsZWQuIFRoZSBjb2RlIGlzIHJlYWNoYWJsZSBpbiBhIHZpcnR1YWxpemVkIGVudmlyb25tZW50IGJ5IHVzaW5nIHRoZSBkc2FfbG9vcCBtb2NrLXVwIHN3aXRjaCBkcml2ZXIgYW5kIGR5bmFtaWNhbGx5IGNoYW5naW5nIHRoZSB0YWdnaW5nIHByb3RvY29sIHZpYSBzeXNmcy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yNSAwODoyOTwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IDY3NGU4OTk4Mzc3Y2M2ZjE3Y2IyOWZmYzY2NTVmOTJmYzM5YTE5ZjdcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgVGh1IEp1biAyNSAwODoyOTowNCAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9uZXQvZHNhL3RhZy5jIGIvbmV0L2RzYS90YWcuY1xuaW5kZXggNzlhZDEwNTkwMmQ5NzguLjk5MTczMmQ2ZWFlMmMzIDEwMDY0NFxuLS0tIGEvbmV0L2RzYS90YWcuY1xuJiM0MzsmIzQzOyYjNDM7IGIvbmV0L2RzYS90YWcuY1xuQEAgLTc5LDE1ICYjNDM7NzksMTYgQEAgc3RhdGljIGludCBkc2Ffc3dpdGNoX3JjdihzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxuIFx0XHRpZiAobGlrZWx5KHNrYi1cdTAwM2VkZXYpKSB7XG4gXHRcdFx0ZHNhX2RlZmF1bHRfb2ZmbG9hZF9md2RfbWFyayhza2IpO1xuIFx0XHRcdG5za2IgPSBza2I7XG4mIzQzO1x0XHR9IGVsc2Uge1xuJiM0MztcdFx0XHQvKiBKdXN0IGRyb3AgdGhlIHNrYiBpZiB3ZSBjYW4mIzM5O3QgZmluZCB0aGUgdXNlciAqL1xuJiM0MztcdFx0XHRrZnJlZV9za2Ioc2tiKTtcbiBcdFx0fVxuIFx0fSBlbHNlIHtcbiBcdFx0bnNrYiA9IGNwdV9kcC1cdTAwM2VyY3Yoc2tiLCBkZXYpO1xuIFx0fVxuIFxuLVx0aWYgKCFuc2tiKSB7XG4tXHRcdGtmcmVlX3NrYihza2IpO1xuJiM0MztcdGlmICghbnNrYilcbiBcdFx0cmV0dXJuIDA7XG4tXHR9XG4gXG4gXHRza2IgPSBuc2tiO1xuIFx0c2tiX3B1c2goc2tiLCBFVEhfSExFTik7XG5AQCAtMTA3LDExICYjNDM7MTA4LDEwIEBAIHN0YXRpYyBpbnQgZHNhX3N3aXRjaF9yY3Yoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IG5ldF9kZXZpY2UgKmRldixcbiBcbiBcdGlmICh1bmxpa2VseShjcHVfZHAtXHUwMDNlZHMtXHUwMDNldW50YWdfYnJpZGdlX3B2aWQgfHxcbiBcdFx0ICAgICBjcHVfZHAtXHUwMDNlZHMtXHUwMDNldW50YWdfdmxhbl9hd2FyZV9icmlkZ2VfcHZpZCkpIHtcbiYjNDM7XHRcdC8qIGRzYV9zb2Z0d2FyZV92bGFuX3VudGFnKCkgZHJvcHMgc2tiIG9uIGZhaWx1cmUgKi9cbiBcdFx0bnNrYiA9IGRzYV9zb2Z0d2FyZV92bGFuX3VudGFnKHNrYik7XG4tXHRcdGlmICghbnNrYikge1xuLVx0XHRcdGtmcmVlX3NrYihza2IpO1xuJiM0MztcdFx0aWYgKCFuc2tiKVxuIFx0XHRcdHJldHVybiAwO1xuLVx0XHR9XG4gXHRcdHNrYiA9IG5za2I7XG4gXHR9XG4gXG5kaWZmIC0tZ2l0IGEvbmV0L2RzYS90YWdfYXI5MzMxLmMgYi9uZXQvZHNhL3RhZ19hcjkzMzEuY1xuaW5kZXggY2JiNTg4Y2E3M2FhZjUuLjJlMjM4ODE0M2IwMjUxIDEwMDY0NFxuLS0tIGEvbmV0L2RzYS90YWdfYXI5MzMxLmNcbiYjNDM7JiM0MzsmIzQzOyBiL25ldC9kc2EvdGFnX2FyOTMzMS5jXG5AQCAtNTEsOCAmIzQzOzUxLDEwIEBAIHN0YXRpYyBzdHJ1Y3Qgc2tfYnVmZiAqYXI5MzMxX3RhZ19yY3Yoc3RydWN0IHNrX2J1ZmYgKnNrYixcbiBcdHU4IHZlciwgcG9ydDtcbiBcdHUxNiBoZHI7XG4gXG4tXHRpZiAodW5saWtlbHkoIXBza2JfbWF5X3B1bGwoc2tiLCBBUjkzMzFfSERSX0xFTikpKVxuJiM0MztcdGlmICh1bmxpa2VseSghcHNrYl9tYXlfcHVsbChza2IsIEFSOTMzMV9IRFJfTEVOKSkpIHtcbiYjNDM7XHRcdGtmcmVlX3NrYihza2IpO1xuIFx0XHRyZXR1cm4gTlVMTDtcbiYjNDM7XHR9XG4gXG4gXHRoZHIgPSBsZTE2X3RvX2NwdSgqKF9fbGUxNiAqKXNrYl9tYWNfaGVhZGVyKHNrYikpO1xuIFxuQEAgLTYwLDEyICYjNDM7NjIsMTQgQEAgc3RhdGljIHN0cnVjdCBza19idWZmICphcjkzMzFfdGFnX3JjdihzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxuIFx0aWYgKHVubGlrZWx5KHZlciAhPSBBUjkzMzFfSERSX1ZFUlNJT04pKSB7XG4gXHRcdG5ldGRldl93YXJuX29uY2UobmRldiwgXCYjMzQ7JXM6JWkgd3JvbmcgaGVhZGVyIHZlcnNpb24gMHglMnhcXG5cJiMzNDssXG4gXHRcdFx0XHQgX19mdW5jX18sIF9fTElORV9fLCBoZHIpO1xuJiM0MztcdFx0a2ZyZWVfc2tiKHNrYik7XG4gXHRcdHJldHVybiBOVUxMO1xuIFx0fVxuIFxuIFx0aWYgKHVubGlrZWx5KGhkciBcdTAwMjYgQVI5MzMxX0hEUl9GUk9NX0NQVSkpIHtcbiBcdFx0bmV0ZGV2X3dhcm5fb25jZShuZGV2LCBcJiMzNDslczolaSBwYWNrZXQgc2hvdWxkIG5vdCBiZSBmcm9tIGNwdSAweCUyeFxcblwmIzM0OyxcbiBcdFx0XHRcdCBfX2Z1bmNfXywgX19MSU5FX18sIGhkcik7XG4mIzQzO1x0XHRrZnJlZV9za2Ioc2tiKTtcbiBcdFx0cmV0dXJuIE5VTEw7XG4gXHR9XG4gXG5AQCAtNzUsOCAmIzQzOzc5LDEwIEBAIHN0YXRpYyBzdHJ1Y3Qgc2tfYnVmZiAqYXI5MzMxX3RhZ19yY3Yoc3RydWN0IHNrX2J1ZmYgKnNrYixcbiBcdHBvcnQgPSBGSUVMRF9HRVQoQVI5MzMxX0hEUl9QT1JUX05VTV9NQVNLLCBoZHIpO1xuIFxuIFx0c2tiLVx1MDAzZWRldiA9IGRzYV9jb25kdWl0X2ZpbmRfdXNlcihuZGV2LCAwLCBwb3J0KTtcbi1cdGlmICghc2tiLVx1MDAzZWRldilcbiYjNDM7XHRpZiAoIXNrYi1cdTAwM2VkZXYpIHtcbiYjNDM7XHRcdGtmcmVlX3NrYihza2IpO1xuIFx0XHRyZXR1cm4gTlVMTDtcbiYjNDM7XHR9XG4gXG4gXHRyZXR1cm4gc2tiO1xuIH1cbmRpZmYgLS1naXQgYS9uZXQvZHNhL3RhZ19icmNtLmMgYi9uZXQvZHNhL3RhZ19icmNtLmNcbmluZGV4IGNmOTQyMDQzOTA1NDNmLi40MTFlM2I1N2QxNmFmNSAxMDA2NDRcbi0tLSBhL25ldC9kc2EvdGFnX2JyY20uY1xuJiM0MzsmIzQzOyYjNDM7IGIvbmV0L2RzYS90YWdfYnJjbS5jXG5AQCAtMTAyLDkgJiM0MzsxMDIsOSBAQCBzdGF0aWMgc3RydWN0IHNrX2J1ZmYgKmJyY21fdGFnX3htaXRfbGwoc3RydWN0IHNrX2J1ZmYgKnNrYixcbiBcdCAqIChpbmNsdWRpbmcgRkNTIGFuZCB0YWcpIGJlY2F1c2UgdGhlIGxlbmd0aCB2ZXJpZmljYXRpb24gaXMgZG9uZSBhZnRlclxuIFx0ICogdGhlIEJyb2FkY29tIHRhZyBpcyBzdHJpcHBlZCBvZmYgdGhlIGluZ3Jlc3MgcGFja2V0LlxuIFx0ICpcbi1cdCAqIExldCBkc2FfdXNlcl94bWl0KCkgZnJlZSB0aGUgU0tCXG4mIzQzO1x0ICogRnJlZSB0aGUgU0tCIG9uIGVycm9yLlxuIFx0ICovXG4tXHRpZiAoX19za2JfcHV0X3BhZHRvKHNrYiwgRVRIX1pMRU4gJiM0MzsgQlJDTV9UQUdfTEVOLCBmYWxzZSkpXG4mIzQzO1x0aWYgKHNrYl9wdXRfcGFkdG8oc2tiLCBFVEhfWkxFTiAmIzQzOyBCUkNNX1RBR19MRU4pKVxuIFx0XHRyZXR1cm4gTlVMTDtcbiBcbiBcdHNrYl9wdXNoKHNrYiwgQlJDTV9UQUdfTEVOKTtcbkBAIC0xNTEsMjcgJiM0MzsxNTEsMzUgQEAgc3RhdGljIHN0cnVjdCBza19idWZmICpicmNtX3RhZ19yY3ZfbGwoc3RydWN0IHNrX2J1ZmYgKnNrYixcbiBcdGludCBzb3VyY2VfcG9ydDtcbiBcdHU4ICpicmNtX3RhZztcbiBcbi1cdGlmICh1bmxpa2VseSghcHNrYl9tYXlfcHVsbChza2IsIEJSQ01fVEFHX0xFTikpKVxuJiM0MztcdGlmICh1bmxpa2VseSghcHNrYl9tYXlfcHVsbChza2IsIEJSQ01fVEFHX0xFTikpKSB7XG4mIzQzO1x0XHRrZnJlZV9za2Ioc2tiKTtcbiBcdFx0cmV0dXJuIE5VTEw7XG4mIzQzO1x0fVxuIFxuIFx0YnJjbV90YWcgPSBza2ItXHUwMDNlZGF0YSAtIG9mZnNldDtcbiBcbiBcdC8qIFRoZSBvcGNvZGUgc2hvdWxkIG5ldmVyIGJlIGRpZmZlcmVudCB0aGFuIDBiMDAwICovXG4tXHRpZiAodW5saWtlbHkoKGJyY21fdGFnWzBdIFx1MDAzZVx1MDAzZSBCUkNNX09QQ09ERV9TSElGVCkgXHUwMDI2IEJSQ01fT1BDT0RFX01BU0spKVxuJiM0MztcdGlmICh1bmxpa2VseSgoYnJjbV90YWdbMF0gXHUwMDNlXHUwMDNlIEJSQ01fT1BDT0RFX1NISUZUKSBcdTAwMjYgQlJDTV9PUENPREVfTUFTSykpIHtcbiYjNDM7XHRcdGtmcmVlX3NrYihza2IpO1xuIFx0XHRyZXR1cm4gTlVMTDtcbiYjNDM7XHR9XG4gXG4gXHQvKiBXZSBzaG91bGQgbmV2ZXIgc2VlIGEgcmVzZXJ2ZWQgcmVhc29uIGNvZGUgd2l0aG91dCBrbm93aW5nIGhvdyB0b1xuIFx0ICogaGFuZGxlIGl0XG4gXHQgKi9cbi1cdGlmICh1bmxpa2VseShicmNtX3RhZ1syXSBcdTAwMjYgQlJDTV9FR19SQ19SU1ZEKSlcbiYjNDM7XHRpZiAodW5saWtlbHkoYnJjbV90YWdbMl0gXHUwMDI2IEJSQ01fRUdfUkNfUlNWRCkpIHtcbiYjNDM7XHRcdGtmcmVlX3NrYihza2IpO1xuIFx0XHRyZXR1cm4gTlVMTDtcbiYjNDM7XHR9XG4gXG4gXHQvKiBMb2NhdGUgd2hpY2ggcG9ydCB0aGlzIGlzIGNvbWluZyBmcm9tICovXG4gXHRzb3VyY2VfcG9ydCA9IGJyY21fdGFnWzNdIFx1MDAyNiBCUkNNX0VHX1BJRF9NQVNLO1xuIFxuIFx0c2tiLVx1MDAzZWRldiA9IGRzYV9jb25kdWl0X2ZpbmRfdXNlcihkZXYsIDAsIHNvdXJjZV9wb3J0KTtcbi1cdGlmICghc2tiLVx1MDAzZWRldilcbiYjNDM7XHRpZiAoIXNrYi1cdTAwM2VkZXYpIHtcbiYjNDM7XHRcdGtmcmVlX3NrYihza2IpO1xuIFx0XHRyZXR1cm4gTlVMTDtcbiYjNDM7XHR9XG4gXG4gXHQvKiBSZW1vdmUgQnJvYWRjb20gdGFnIGFuZCB1cGRhdGUgY2hlY2tzdW0gKi9cbiBcdHNrYl9wdWxsX3Jjc3VtKHNrYiwgQlJDTV9UQUdfTEVOKTtcbkBAIC0yMjgsOCAmIzQzOzIzNiwxMCBAQCBzdGF0aWMgc3RydWN0IHNrX2J1ZmYgKmJyY21fbGVnX3RhZ19yY3Yoc3RydWN0IHNrX2J1ZmYgKnNrYixcbiBcdF9fYmUxNiAqcHJvdG87XG4gXHR1OCAqYnJjbV90YWc7XG4gXG4tXHRpZiAodW5saWtlbHkoIXBza2JfbWF5X3B1bGwoc2tiLCBCUkNNX0xFR19UQUdfTEVOICYjNDM7IFZMQU5fSExFTikpKVxuJiM0MztcdGlmICh1bmxpa2VseSghcHNrYl9tYXlfcHVsbChza2IsIEJSQ01fTEVHX1RBR19MRU4gJiM0MzsgVkxBTl9ITEVOKSkpIHtcbiYjNDM7XHRcdGtmcmVlX3NrYihza2IpO1xuIFx0XHRyZXR1cm4gTlVMTDtcbiYjNDM7XHR9XG4gXG4gXHRicmNtX3RhZyA9IGRzYV9ldHlwZV9oZWFkZXJfcG9zX3J4KHNrYik7XG4gXHRwcm90byA9IChfX2JlMTYgKikoYnJjbV90YWcgJiM0MzsgQlJDTV9MRUdfVEFHX0xFTik7XG5AQCAtMjM3LDggJiM0MzsyNDcsMTAgQEAgc3RhdGljIHN0cnVjdCBza19idWZmICpicmNtX2xlZ190YWdfcmN2KHN0cnVjdCBza19idWZmICpza2IsXG4gXHRzb3VyY2VfcG9ydCA9IGJyY21fdGFnWzVdIFx1MDAyNiBCUkNNX0xFR19QT1JUX0lEO1xuIFxuIFx0c2tiLVx1MDAzZWRldiA9IGRzYV9jb25kdWl0X2ZpbmRfdXNlcihkZXYsIDAsIHNvdXJjZV9wb3J0KTtcbi1cdGlmICghc2tiLVx1MDAzZWRldilcbiYjNDM7XHRpZiAoIXNrYi1cdTAwM2VkZXYpIHtcbiYjNDM7XHRcdGtmcmVlX3NrYihza2IpO1xuIFx0XHRyZXR1cm4gTlVMTDtcbiYjNDM7XHR9XG4gXG4gXHQvKiBUaGUgaW50ZXJuYWwgc3dpdGNoIGluIEJDTTYzWFggU29DcyBhbHdheXMgdGFncyBvbiBlZ3Jlc3Mgb24gdGhlIENQVVxuIFx0ICogcG9ydC4gV2UgdXNlIFZJRCAwIGludGVybmFsbHkgZm9yIHVudGFnZ2VkIHRyYWZmaWMsIHNvIHN0cmlwIHRoZSB0YWdcbkBAIC0yNzMsMTAgJiM0MzsyODUsOCBAQCBzdGF0aWMgc3RydWN0IHNrX2J1ZmYgKmJyY21fbGVnX3RhZ194bWl0KHN0cnVjdCBza19idWZmICpza2IsXG4gXHQgKiBuZWVkIHRvIG1ha2Ugc3VyZSB0aGF0IHBhY2tldHMgYXJlIGF0IGxlYXN0IDcwIGJ5dGVzXG4gXHQgKiAoaW5jbHVkaW5nIEZDUyBhbmQgdGFnKSBiZWNhdXNlIHRoZSBsZW5ndGggdmVyaWZpY2F0aW9uIGlzIGRvbmUgYWZ0ZXJcbiBcdCAqIHRoZSBCcm9hZGNvbSB0YWcgaXMgc3RyaXBwZWQgb2ZmIHRoZSBpbmdyZXNzIHBhY2tldC5cbi1cdCAqXG4tXHQgKiBMZXQgZHNhX3VzZXJfeG1pdCgpIGZyZWUgdGhlIFNLQlxuIFx0ICovXG4tXHRpZiAoX19za2JfcHV0X3BhZHRvKHNrYiwgRVRIX1pMRU4gJiM0MzsgQlJDTV9MRUdfVEFHX0xFTiwgZmFsc2UpKVxuJiM0MztcdGlmIChza2JfcHV0X3BhZHRvKHNrYiwgRVRIX1pMRU4gJiM0MzsgQlJDTV9MRUdfVEFHX0xFTikpXG4gXHRcdHJldHVybiBOVUxMO1xuIFxuIFx0c2tiX3B1c2goc2tiLCBCUkNNX0xFR19UQUdfTEVOKTtcbkBAIC0zMjUsMTAgJiM0MzszMzUsOCBAQCBzdGF0aWMgc3RydWN0IHNrX2J1ZmYgKmJyY21fbGVnX2Zjc190YWdfeG1pdChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxuIFx0ICogbmVlZCB0byBtYWtlIHN1cmUgdGhhdCBwYWNrZXRzIGFyZSBhdCBsZWFzdCA3MCBieXRlcyAoaW5jbHVkaW5nIEZDU1xuIFx0ICogYW5kIHRhZykgYmVjYXVzZSB0aGUgbGVuZ3RoIHZlcmlmaWNhdGlvbiBpcyBkb25lIGFmdGVyIHRoZSBCcm9hZGNvbVxuIFx0ICogdGFnIGlzIHN0cmlwcGVkIG9mZiB0aGUgaW5ncmVzcyBwYWNrZXQuXG4tXHQgKlxuLVx0ICogTGV0IGRzYV91c2VyX3htaXQoKSBmcmVlIHRoZSBTS0IuXG4gXHQgKi9cbi1cdGlmIChfX3NrYl9wdXRfcGFkdG8oc2tiLCBFVEhfWkxFTiAmIzQzOyBCUkNNX0xFR19UQUdfTEVOLCBmYWxzZSkpXG4mIzQzO1x0aWYgKHNrYl9wdXRfcGFkdG8oc2tiLCBFVEhfWkxFTiAmIzQzOyBCUkNNX0xFR19UQUdfTEVOKSlcbiBcdFx0cmV0dXJuIE5VTEw7XG4gXG4gXHRmY3NfbGVuID0gc2tiLVx1MDAzZWxlbjtcbkBAIC0zNTEsOCAmIzQzOzM1OSw5IEBAIHN0YXRpYyBzdHJ1Y3Qgc2tfYnVmZiAqYnJjbV9sZWdfZmNzX3RhZ194bWl0KHN0cnVjdCBza19idWZmICpza2IsXG4gXHRicmNtX3RhZ1s1XSA9IGRwLVx1MDAzZWluZGV4IFx1MDAyNiBCUkNNX0xFR19QT1JUX0lEO1xuIFxuIFx0LyogT3JpZ2luYWwgRkNTIHZhbHVlICovXG4tXHRpZiAoX19za2JfcGFkKHNrYiwgRVRIX0ZDU19MRU4sIGZhbHNlKSlcbiYjNDM7XHRpZiAoc2tiX3BhZChza2IsIEVUSF9GQ1NfTEVOKSlcbiBcdFx0cmV0dXJuIE5VTEw7XG4mIzQzO1xuIFx0c2tiX3B1dF9kYXRhKHNrYiwgXHUwMDI2ZmNzX3ZhbCwgRVRIX0ZDU19MRU4pO1xuIFxuIFx0cmV0dXJuIHNrYjtcbmRpZmYgLS1naXQgYS9uZXQvZHNhL3RhZ19kc2EuYyBiL25ldC9kc2EvdGFnX2RzYS5jXG5pbmRleCAyYTJjNGZiNjFhNjVjNi4uZDVmZmVlMzVmYmI1M2IgMTAwNjQ0XG4tLS0gYS9uZXQvZHNhL3RhZ19kc2EuY1xuJiM0MzsmIzQzOyYjNDM7IGIvbmV0L2RzYS90YWdfZHNhLmNcbkBAIC0yMjQsNiAmIzQzOzIyNCw3IEBAIHN0YXRpYyBzdHJ1Y3Qgc2tfYnVmZiAqZHNhX3Jjdl9sbChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxuIFx0XHRcdC8qIFJlbW90ZSBtYW5hZ2VtZW50IGlzIG5vdCBpbXBsZW1lbnRlZCB5ZXQsXG4gXHRcdFx0ICogZHJvcC5cbiBcdFx0XHQgKi9cbiYjNDM7XHRcdFx0a2ZyZWVfc2tiKHNrYik7XG4gXHRcdFx0cmV0dXJuIE5VTEw7XG4gXHRcdGNhc2UgRFNBX0NPREVfQVJQX01JUlJPUjpcbiBcdFx0Y2FzZSBEU0FfQ09ERV9QT0xJQ1lfTUlSUk9SOlxuQEAgLTI0NCwxMiAmIzQzOzI0NSwxNCBAQCBzdGF0aWMgc3RydWN0IHNrX2J1ZmYgKmRzYV9yY3ZfbGwoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IG5ldF9kZXZpY2UgKmRldixcbiBcdFx0XHQvKiBSZXNlcnZlZCBjb2RlLCB0aGlzIGNvdWxkIGJlIGFueXRoaW5nLiBEcm9wXG4gXHRcdFx0ICogc2VlbXMgbGlrZSB0aGUgc2FmZXN0IG9wdGlvbi5cbiBcdFx0XHQgKi9cbiYjNDM7XHRcdFx0a2ZyZWVfc2tiKHNrYik7XG4gXHRcdFx0cmV0dXJuIE5VTEw7XG4gXHRcdH1cbiBcbiBcdFx0YnJlYWs7XG4gXG4gXHRkZWZhdWx0OlxuJiM0MztcdFx0a2ZyZWVfc2tiKHNrYik7XG4gXHRcdHJldHVybiBOVUxMO1xuIFx0fVxuIFxuQEAgLTI3MSw4ICYjNDM7Mjc0LDEwIEBAIHN0YXRpYyBzdHJ1Y3Qgc2tfYnVmZiAqZHNhX3Jjdl9sbChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxuIFx0XHRcdFx0XHRcdCBzb3VyY2VfcG9ydCk7XG4gXHR9XG4gXG4tXHRpZiAoIXNrYi1cdTAwM2VkZXYpXG4mIzQzO1x0aWYgKCFza2ItXHUwMDNlZGV2KSB7XG4mIzQzO1x0XHRrZnJlZV9za2Ioc2tiKTtcbiBcdFx0cmV0dXJuIE5VTEw7XG4mIzQzO1x0fVxuIFxuIFx0LyogV2hlbiB1c2luZyBMQUcgb2ZmbG9hZCwgc2tiLVx1MDAzZWRldiBpcyBub3QgYSBEU0EgdXNlciBpbnRlcmZhY2UsXG4gXHQgKiBzbyB3ZSBjYW5ub3QgY2FsbCBkc2FfZGVmYXVsdF9vZmZsb2FkX2Z3ZF9tYXJrIGFuZCB3ZSBuZWVkIHRvXG5AQCAtMzM1LDggJiM0MzszNDAsMTAgQEAgc3RhdGljIHN0cnVjdCBza19idWZmICpkc2FfeG1pdChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxuIFxuIHN0YXRpYyBzdHJ1Y3Qgc2tfYnVmZiAqZHNhX3JjdihzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxuIHtcbi1cdGlmICh1bmxpa2VseSghcHNrYl9tYXlfcHVsbChza2IsIERTQV9ITEVOKSkpXG4mIzQzO1x0aWYgKHVubGlrZWx5KCFwc2tiX21heV9wdWxsKHNrYiwgRFNBX0hMRU4pKSkge1xuJiM0MztcdFx0a2ZyZWVfc2tiKHNrYik7XG4gXHRcdHJldHVybiBOVUxMO1xuJiM0MztcdH1cbiBcbiBcdHJldHVybiBkc2FfcmN2X2xsKHNrYiwgZGV2LCAwKTtcbiB9XG5AQCAtMzc1LDggJiM0MzszODIsMTAgQEAgc3RhdGljIHN0cnVjdCBza19idWZmICplZHNhX3htaXQoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IG5ldF9kZXZpY2UgKmRldilcbiBcbiBzdGF0aWMgc3RydWN0IHNrX2J1ZmYgKmVkc2FfcmN2KHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXG4ge1xuLVx0aWYgKHVubGlrZWx5KCFwc2tiX21heV9wdWxsKHNrYiwgRURTQV9ITEVOKSkpXG4mIzQzO1x0aWYgKHVubGlrZWx5KCFwc2tiX21heV9wdWxsKHNrYiwgRURTQV9ITEVOKSkpIHtcbiYjNDM7XHRcdGtmcmVlX3NrYihza2IpO1xuIFx0XHRyZXR1cm4gTlVMTDtcbiYjNDM7XHR9XG4gXG4gXHRza2JfcHVsbF9yY3N1bShza2IsIEVEU0FfSExFTiAtIERTQV9ITEVOKTtcbiBcbmRpZmYgLS1naXQgYS9uZXQvZHNhL3RhZ19nc3dpcC5jIGIvbmV0L2RzYS90YWdfZ3N3aXAuY1xuaW5kZXggNWZhNDM2MTIxMDg3YjQuLjVjNDA3ZDQ0OGM5ZmVlIDEwMDY0NFxuLS0tIGEvbmV0L2RzYS90YWdfZ3N3aXAuY1xuJiM0MzsmIzQzOyYjNDM7IGIvbmV0L2RzYS90YWdfZ3N3aXAuY1xuQEAgLTgwLDE2ICYjNDM7ODAsMjAgQEAgc3RhdGljIHN0cnVjdCBza19idWZmICpnc3dpcF90YWdfcmN2KHN0cnVjdCBza19idWZmICpza2IsXG4gXHRpbnQgcG9ydDtcbiBcdHU4ICpnc3dpcF90YWc7XG4gXG4tXHRpZiAodW5saWtlbHkoIXBza2JfbWF5X3B1bGwoc2tiLCBHU1dJUF9SWF9IRUFERVJfTEVOKSkpXG4mIzQzO1x0aWYgKHVubGlrZWx5KCFwc2tiX21heV9wdWxsKHNrYiwgR1NXSVBfUlhfSEVBREVSX0xFTikpKSB7XG4mIzQzO1x0XHRrZnJlZV9za2Ioc2tiKTtcbiBcdFx0cmV0dXJuIE5VTEw7XG4mIzQzO1x0fVxuIFxuIFx0Z3N3aXBfdGFnID0gc2tiLVx1MDAzZWRhdGEgLSBFVEhfSExFTjtcbiBcbiBcdC8qIEdldCBzb3VyY2UgcG9ydCBpbmZvcm1hdGlvbiAqL1xuIFx0cG9ydCA9IChnc3dpcF90YWdbN10gXHUwMDI2IEdTV0lQX1JYX1NQUElEX01BU0spIFx1MDAzZVx1MDAzZSBHU1dJUF9SWF9TUFBJRF9TSElGVDtcbiBcdHNrYi1cdTAwM2VkZXYgPSBkc2FfY29uZHVpdF9maW5kX3VzZXIoZGV2LCAwLCBwb3J0KTtcbi1cdGlmICghc2tiLVx1MDAzZWRldilcbiYjNDM7XHRpZiAoIXNrYi1cdTAwM2VkZXYpIHtcbiYjNDM7XHRcdGtmcmVlX3NrYihza2IpO1xuIFx0XHRyZXR1cm4gTlVMTDtcbiYjNDM7XHR9XG4gXG4gXHQvKiByZW1vdmUgR1NXSVAgdGFnICovXG4gXHRza2JfcHVsbF9yY3N1bShza2IsIEdTV0lQX1JYX0hFQURFUl9MRU4pO1xuZGlmZiAtLWdpdCBhL25ldC9kc2EvdGFnX2hlbGxjcmVlay5jIGIvbmV0L2RzYS90YWdfaGVsbGNyZWVrLmNcbmluZGV4IDU0NGFiMTU2ODVhMmI4Li5kZDlmMzI4ZjMxODIxMCAxMDA2NDRcbi0tLSBhL25ldC9kc2EvdGFnX2hlbGxjcmVlay5jXG4mIzQzOyYjNDM7JiM0MzsgYi9uZXQvZHNhL3RhZ19oZWxsY3JlZWsuY1xuQEAgLTI3LDggJiM0MzsyNywxMCBAQCBzdGF0aWMgc3RydWN0IHNrX2J1ZmYgKmhlbGxjcmVla194bWl0KHN0cnVjdCBza19idWZmICpza2IsXG4gXHQgKiBjaGVja3N1bXMgYWZ0ZXIgdGhlIHN3aXRjaCBzdHJpcHMgdGhlIHRhZy5cbiBcdCAqL1xuIFx0aWYgKHNrYi1cdTAwM2VpcF9zdW1tZWQgPT0gQ0hFQ0tTVU1fUEFSVElBTCBcdTAwMjZcdTAwMjZcbi1cdCAgICBza2JfY2hlY2tzdW1faGVscChza2IpKVxuJiM0MztcdCAgICBza2JfY2hlY2tzdW1faGVscChza2IpKSB7XG4mIzQzO1x0XHRrZnJlZV9za2Ioc2tiKTtcbiBcdFx0cmV0dXJuIE5VTEw7XG4mIzQzO1x0fVxuIFxuIFx0LyogVGFnIGVuY29kaW5nICovXG4gXHR0YWcgID0gc2tiX3B1dChza2IsIEhFTExDUkVFS19UQUdfTEVOKTtcbkBAIC00NywxMSAmIzQzOzQ5LDE0IEBAIHN0YXRpYyBzdHJ1Y3Qgc2tfYnVmZiAqaGVsbGNyZWVrX3JjdihzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxuIFx0c2tiLVx1MDAzZWRldiA9IGRzYV9jb25kdWl0X2ZpbmRfdXNlcihkZXYsIDAsIHBvcnQpO1xuIFx0aWYgKCFza2ItXHUwMDNlZGV2KSB7XG4gXHRcdG5ldGRldl93YXJuX29uY2UoZGV2LCBcJiMzNDtGYWlsZWQgdG8gZ2V0IHNvdXJjZSBwb3J0OiAlZFxcblwmIzM0OywgcG9ydCk7XG4mIzQzO1x0XHRrZnJlZV9za2Ioc2tiKTtcbiBcdFx0cmV0dXJuIE5VTEw7XG4gXHR9XG4gXG4tXHRpZiAocHNrYl90cmltX3Jjc3VtKHNrYiwgc2tiLVx1MDAzZWxlbiAtIEhFTExDUkVFS19UQUdfTEVOKSlcbiYjNDM7XHRpZiAocHNrYl90cmltX3Jjc3VtKHNrYiwgc2tiLVx1MDAzZWxlbiAtIEhFTExDUkVFS19UQUdfTEVOKSkge1xuJiM0MztcdFx0a2ZyZWVfc2tiKHNrYik7XG4gXHRcdHJldHVybiBOVUxMO1xuJiM0MztcdH1cbiBcbiBcdGRzYV9kZWZhdWx0X29mZmxvYWRfZndkX21hcmsoc2tiKTtcbiBcbmRpZmYgLS1naXQgYS9uZXQvZHNhL3RhZ19rc3ouYyBiL25ldC9kc2EvdGFnX2tzei5jXG5pbmRleCBkMjQ3NWMzYmJiN2QyMi4uNjdmYTg5ZjEwMmUwNzAgMTAwNjQ0XG4tLS0gYS9uZXQvZHNhL3RhZ19rc3ouY1xuJiM0MzsmIzQzOyYjNDM7IGIvbmV0L2RzYS90YWdfa3N6LmNcbkBAIC04OCwxMSAmIzQzOzg4LDE1IEBAIHN0YXRpYyBzdHJ1Y3Qgc2tfYnVmZiAqa3N6X2NvbW1vbl9yY3Yoc3RydWN0IHNrX2J1ZmYgKnNrYixcbiBcdFx0XHRcdCAgICAgIHVuc2lnbmVkIGludCBwb3J0LCB1bnNpZ25lZCBpbnQgbGVuKVxuIHtcbiBcdHNrYi1cdTAwM2VkZXYgPSBkc2FfY29uZHVpdF9maW5kX3VzZXIoZGV2LCAwLCBwb3J0KTtcbi1cdGlmICghc2tiLVx1MDAzZWRldilcbiYjNDM7XHRpZiAoIXNrYi1cdTAwM2VkZXYpIHtcbiYjNDM7XHRcdGtmcmVlX3NrYihza2IpO1xuIFx0XHRyZXR1cm4gTlVMTDtcbiYjNDM7XHR9XG4gXG4tXHRpZiAocHNrYl90cmltX3Jjc3VtKHNrYiwgc2tiLVx1MDAzZWxlbiAtIGxlbikpXG4mIzQzO1x0aWYgKHBza2JfdHJpbV9yY3N1bShza2IsIHNrYi1cdTAwM2VsZW4gLSBsZW4pKSB7XG4mIzQzO1x0XHRrZnJlZV9za2Ioc2tiKTtcbiBcdFx0cmV0dXJuIE5VTEw7XG4mIzQzO1x0fVxuIFxuIFx0ZHNhX2RlZmF1bHRfb2ZmbG9hZF9md2RfbWFyayhza2IpO1xuIFxuQEAgLTEyMyw4ICYjNDM7MTI3LDEwIEBAIHN0YXRpYyBzdHJ1Y3Qgc2tfYnVmZiAqa3N6ODc5NV94bWl0KHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXG4gXHRzdHJ1Y3QgZXRoaGRyICpoZHI7XG4gXHR1OCAqdGFnO1xuIFxuLVx0aWYgKHNrYi1cdTAwM2VpcF9zdW1tZWQgPT0gQ0hFQ0tTVU1fUEFSVElBTCBcdTAwMjZcdTAwMjYgc2tiX2NoZWNrc3VtX2hlbHAoc2tiKSlcbiYjNDM7XHRpZiAoc2tiLVx1MDAzZWlwX3N1bW1lZCA9PSBDSEVDS1NVTV9QQVJUSUFMIFx1MDAyNlx1MDAyNiBza2JfY2hlY2tzdW1faGVscChza2IpKSB7XG4mIzQzO1x0XHRrZnJlZV9za2Ioc2tiKTtcbiBcdFx0cmV0dXJuIE5VTEw7XG4mIzQzO1x0fVxuIFxuIFx0LyogVGFnIGVuY29kaW5nICovXG4gXHR0YWcgPSBza2JfcHV0KHNrYiwgS1NaX0lOR1JFU1NfVEFHX0xFTik7XG5AQCAtMTQxLDggJiM0MzsxNDcsMTAgQEAgc3RhdGljIHN0cnVjdCBza19idWZmICprc3o4Nzk1X3JjdihzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxuIHtcbiBcdHU4ICp0YWc7XG4gXG4tXHRpZiAoc2tiX2xpbmVhcml6ZShza2IpKVxuJiM0MztcdGlmIChza2JfbGluZWFyaXplKHNrYikpIHtcbiYjNDM7XHRcdGtmcmVlX3NrYihza2IpO1xuIFx0XHRyZXR1cm4gTlVMTDtcbiYjNDM7XHR9XG4gXG4gXHR0YWcgPSBza2JfdGFpbF9wb2ludGVyKHNrYikgLSBLU1pfRUdSRVNTX1RBR19MRU47XG4gXG5AQCAtMjU1LDIyICYjNDM7MjYzLDI0IEBAIHN0YXRpYyBzdHJ1Y3Qgc2tfYnVmZiAqa3N6X2RlZmVyX3htaXQoc3RydWN0IGRzYV9wb3J0ICpkcCwgc3RydWN0IHNrX2J1ZmYgKnNrYilcbiBcdHhtaXRfd29ya19mbiA9IHRhZ2dlcl9kYXRhLVx1MDAzZXhtaXRfd29ya19mbjtcbiBcdHhtaXRfd29ya2VyID0gcHJpdi1cdTAwM2V4bWl0X3dvcmtlcjtcbiBcbi1cdGlmICgheG1pdF93b3JrX2ZuIHx8ICF4bWl0X3dvcmtlcilcbiYjNDM7XHRpZiAoIXhtaXRfd29ya19mbiB8fCAheG1pdF93b3JrZXIpIHtcbiYjNDM7XHRcdGtmcmVlX3NrYihza2IpO1xuIFx0XHRyZXR1cm4gTlVMTDtcbiYjNDM7XHR9XG4gXG4gXHR4bWl0X3dvcmsgPSBremFsbG9jX29iaigqeG1pdF93b3JrLCBHRlBfQVRPTUlDKTtcbi1cdGlmICgheG1pdF93b3JrKVxuJiM0MztcdGlmICgheG1pdF93b3JrKSB7XG4mIzQzO1x0XHRrZnJlZV9za2Ioc2tiKTtcbiBcdFx0cmV0dXJuIE5VTEw7XG4mIzQzO1x0fVxuIFxuIFx0a3RocmVhZF9pbml0X3dvcmsoXHUwMDI2eG1pdF93b3JrLVx1MDAzZXdvcmssIHhtaXRfd29ya19mbik7XG4tXHQvKiBJbmNyZWFzZSByZWZjb3VudCBzbyB0aGUga2ZyZWVfc2tiIGluIGRzYV91c2VyX3htaXRcbi1cdCAqIHdvbiYjMzk7dCByZWFsbHkgZnJlZSB0aGUgcGFja2V0LlxuLVx0ICovXG4gXHR4bWl0X3dvcmstXHUwMDNlZHAgPSBkcDtcbiBcdHhtaXRfd29yay1cdTAwM2Vza2IgPSBza2JfZ2V0KHNrYik7XG4gXG4gXHRrdGhyZWFkX3F1ZXVlX3dvcmsoeG1pdF93b3JrZXIsIFx1MDAyNnhtaXRfd29yay1cdTAwM2V3b3JrKTtcbiBcbiYjNDM7XHRrZnJlZV9za2Ioc2tiKTtcbiBcdHJldHVybiBOVUxMO1xuIH1cbiBcbkBAIC0yODQsOCAmIzQzOzI5NCwxMCBAQCBzdGF0aWMgc3RydWN0IHNrX2J1ZmYgKmtzejk0NzdfeG1pdChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxuIFx0X19iZTE2ICp0YWc7XG4gXHR1MTYgdmFsO1xuIFxuLVx0aWYgKHNrYi1cdTAwM2VpcF9zdW1tZWQgPT0gQ0hFQ0tTVU1fUEFSVElBTCBcdTAwMjZcdTAwMjYgc2tiX2NoZWNrc3VtX2hlbHAoc2tiKSlcbiYjNDM7XHRpZiAoc2tiLVx1MDAzZWlwX3N1bW1lZCA9PSBDSEVDS1NVTV9QQVJUSUFMIFx1MDAyNlx1MDAyNiBza2JfY2hlY2tzdW1faGVscChza2IpKSB7XG4mIzQzO1x0XHRrZnJlZV9za2Ioc2tiKTtcbiBcdFx0cmV0dXJuIE5VTEw7XG4mIzQzO1x0fVxuIFxuIFx0LyogVGFnIGVuY29kaW5nICovXG4gXHRrc3pfeG1pdF90aW1lc3RhbXAoZHAsIHNrYik7XG5AQCAtMzEwLDggJiM0MzszMjIsMTAgQEAgc3RhdGljIHN0cnVjdCBza19idWZmICprc3o5NDc3X3JjdihzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxuIFx0dW5zaWduZWQgaW50IHBvcnQ7XG4gXHR1OCAqdGFnO1xuIFxuLVx0aWYgKHNrYl9saW5lYXJpemUoc2tiKSlcbiYjNDM7XHRpZiAoc2tiX2xpbmVhcml6ZShza2IpKSB7XG4mIzQzO1x0XHRrZnJlZV9za2Ioc2tiKTtcbiBcdFx0cmV0dXJuIE5VTEw7XG4mIzQzO1x0fVxuIFxuIFx0LyogVGFnIGRlY29kaW5nICovXG4gXHR0YWcgPSBza2JfdGFpbF9wb2ludGVyKHNrYikgLSBLU1pfRUdSRVNTX1RBR19MRU47XG5AQCAtMzUyLDggJiM0MzszNjYsMTAgQEAgc3RhdGljIHN0cnVjdCBza19idWZmICprc3o5ODkzX3htaXQoc3RydWN0IHNrX2J1ZmYgKnNrYixcbiBcdHN0cnVjdCBldGhoZHIgKmhkcjtcbiBcdHU4ICp0YWc7XG4gXG4tXHRpZiAoc2tiLVx1MDAzZWlwX3N1bW1lZCA9PSBDSEVDS1NVTV9QQVJUSUFMIFx1MDAyNlx1MDAyNiBza2JfY2hlY2tzdW1faGVscChza2IpKVxuJiM0MztcdGlmIChza2ItXHUwMDNlaXBfc3VtbWVkID09IENIRUNLU1VNX1BBUlRJQUwgXHUwMDI2XHUwMDI2IHNrYl9jaGVja3N1bV9oZWxwKHNrYikpIHtcbiYjNDM7XHRcdGtmcmVlX3NrYihza2IpO1xuIFx0XHRyZXR1cm4gTlVMTDtcbiYjNDM7XHR9XG4gXG4gXHQvKiBUYWcgZW5jb2RpbmcgKi9cbiBcdGtzel94bWl0X3RpbWVzdGFtcChkcCwgc2tiKTtcbkBAIC00MTgsOCAmIzQzOzQzNCwxMCBAQCBzdGF0aWMgc3RydWN0IHNrX2J1ZmYgKmxhbjkzN3hfeG1pdChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxuIFx0X19iZTE2ICp0YWc7XG4gXHR1MTYgdmFsO1xuIFxuLVx0aWYgKHNrYi1cdTAwM2VpcF9zdW1tZWQgPT0gQ0hFQ0tTVU1fUEFSVElBTCBcdTAwMjZcdTAwMjYgc2tiX2NoZWNrc3VtX2hlbHAoc2tiKSlcbiYjNDM7XHRpZiAoc2tiLVx1MDAzZWlwX3N1bW1lZCA9PSBDSEVDS1NVTV9QQVJUSUFMIFx1MDAyNlx1MDAyNiBza2JfY2hlY2tzdW1faGVscChza2IpKSB7XG4mIzQzO1x0XHRrZnJlZV9za2Ioc2tiKTtcbiBcdFx0cmV0dXJuIE5VTEw7XG4mIzQzO1x0fVxuIFxuIFx0a3N6X3htaXRfdGltZXN0YW1wKGRwLCBza2IpO1xuIFxuZGlmZiAtLWdpdCBhL25ldC9kc2EvdGFnX2xhbjkzMDMuYyBiL25ldC9kc2EvdGFnX2xhbjkzMDMuY1xuaW5kZXggMjU4ZTVkN2RjNWVmODQuLmQxMTk0Njk2NDk5YWI4IDEwMDY0NFxuLS0tIGEvbmV0L2RzYS90YWdfbGFuOTMwMy5jXG4mIzQzOyYjNDM7JiM0MzsgYi9uZXQvZHNhL3RhZ19sYW45MzAzLmNcbkBAIC04NSw2ICYjNDM7ODUsNyBAQCBzdGF0aWMgc3RydWN0IHNrX2J1ZmYgKmxhbjkzMDNfcmN2KHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXG4gXHRpZiAodW5saWtlbHkoIXBza2JfbWF5X3B1bGwoc2tiLCBMQU45MzAzX1RBR19MRU4pKSkge1xuIFx0XHRkZXZfd2Fybl9yYXRlbGltaXRlZChcdTAwMjZkZXYtXHUwMDNlZGV2LFxuIFx0XHRcdFx0ICAgICBcJiMzNDtEcm9wcGluZyBwYWNrZXQsIGNhbm5vdCBwdWxsXFxuXCYjMzQ7KTtcbiYjNDM7XHRcdGtmcmVlX3NrYihza2IpO1xuIFx0XHRyZXR1cm4gTlVMTDtcbiBcdH1cbiBcbkBAIC0xMDIsNiAmIzQzOzEwMyw3IEBAIHN0YXRpYyBzdHJ1Y3Qgc2tfYnVmZiAqbGFuOTMwM19yY3Yoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IG5ldF9kZXZpY2UgKmRldilcbiBcdHNrYi1cdTAwM2VkZXYgPSBkc2FfY29uZHVpdF9maW5kX3VzZXIoZGV2LCAwLCBzb3VyY2VfcG9ydCk7XG4gXHRpZiAoIXNrYi1cdTAwM2VkZXYpIHtcbiBcdFx0ZGV2X3dhcm5fcmF0ZWxpbWl0ZWQoXHUwMDI2ZGV2LVx1MDAzZWRldiwgXCYjMzQ7RHJvcHBpbmcgcGFja2V0IGR1ZSB0byBpbnZhbGlkIHNvdXJjZSBwb3J0XFxuXCYjMzQ7KTtcbiYjNDM7XHRcdGtmcmVlX3NrYihza2IpO1xuIFx0XHRyZXR1cm4gTlVMTDtcbiBcdH1cbiBcbmRpZmYgLS1naXQgYS9uZXQvZHNhL3RhZ19tdGsuYyBiL25ldC9kc2EvdGFnX210ay5jXG5pbmRleCBkZWEzZWVjYWYwOTNkZi4uYzdkYzc3MzE2NzVlYzAgMTAwNjQ0XG4tLS0gYS9uZXQvZHNhL3RhZ19tdGsuY1xuJiM0MzsmIzQzOyYjNDM7IGIvbmV0L2RzYS90YWdfbXRrLmNcbkBAIC03Miw4ICYjNDM7NzIsMTAgQEAgc3RhdGljIHN0cnVjdCBza19idWZmICptdGtfdGFnX3JjdihzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxuIFx0aW50IHBvcnQ7XG4gXHRfX2JlMTYgKnBoZHI7XG4gXG4tXHRpZiAodW5saWtlbHkoIXBza2JfbWF5X3B1bGwoc2tiLCBNVEtfSERSX0xFTikpKVxuJiM0MztcdGlmICh1bmxpa2VseSghcHNrYl9tYXlfcHVsbChza2IsIE1US19IRFJfTEVOKSkpIHtcbiYjNDM7XHRcdGtmcmVlX3NrYihza2IpO1xuIFx0XHRyZXR1cm4gTlVMTDtcbiYjNDM7XHR9XG4gXG4gXHRwaGRyID0gZHNhX2V0eXBlX2hlYWRlcl9wb3Nfcngoc2tiKTtcbiBcdGhkciA9IG50b2hzKCpwaGRyKTtcbkBAIC04Nyw4ICYjNDM7ODksMTAgQEAgc3RhdGljIHN0cnVjdCBza19idWZmICptdGtfdGFnX3JjdihzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxuIFx0cG9ydCA9IChoZHIgXHUwMDI2IE1US19IRFJfUkVDVl9TT1VSQ0VfUE9SVF9NQVNLKTtcbiBcbiBcdHNrYi1cdTAwM2VkZXYgPSBkc2FfY29uZHVpdF9maW5kX3VzZXIoZGV2LCAwLCBwb3J0KTtcbi1cdGlmICghc2tiLVx1MDAzZWRldilcbiYjNDM7XHRpZiAoIXNrYi1cdTAwM2VkZXYpIHtcbiYjNDM7XHRcdGtmcmVlX3NrYihza2IpO1xuIFx0XHRyZXR1cm4gTlVMTDtcbiYjNDM7XHR9XG4gXG4gXHRkc2FfZGVmYXVsdF9vZmZsb2FkX2Z3ZF9tYXJrKHNrYik7XG4gXG5kaWZmIC0tZ2l0IGEvbmV0L2RzYS90YWdfbXhsLWdzdzF4eC5jIGIvbmV0L2RzYS90YWdfbXhsLWdzdzF4eC5jXG5pbmRleCA2MGY3YzQ0NWU2NTYxMC4uNGIxYjZlZjk0MTk2MzQgMTAwNjQ0XG4tLS0gYS9uZXQvZHNhL3RhZ19teGwtZ3N3MXh4LmNcbiYjNDM7JiM0MzsmIzQzOyBiL25ldC9kc2EvdGFnX214bC1nc3cxeHguY1xuQEAgLTczLDYgJiM0Mzs3Myw3IEBAIHN0YXRpYyBzdHJ1Y3Qgc2tfYnVmZiAqZ3N3MXh4X3RhZ19yY3Yoc3RydWN0IHNrX2J1ZmYgKnNrYixcbiBcbiBcdGlmICh1bmxpa2VseSghcHNrYl9tYXlfcHVsbChza2IsIEdTVzFYWF9IRUFERVJfTEVOKSkpIHtcbiBcdFx0ZGV2X3dhcm5fcmF0ZWxpbWl0ZWQoXHUwMDI2ZGV2LVx1MDAzZWRldiwgXCYjMzQ7RHJvcHBpbmcgcGFja2V0LCBjYW5ub3QgcHVsbCBTS0JcXG5cJiMzNDspO1xuJiM0MztcdFx0a2ZyZWVfc2tiKHNrYik7XG4gXHRcdHJldHVybiBOVUxMO1xuIFx0fVxuIFxuQEAgLTgxLDYgJiM0Mzs4Miw3IEBAIHN0YXRpYyBzdHJ1Y3Qgc2tfYnVmZiAqZ3N3MXh4X3RhZ19yY3Yoc3RydWN0IHNrX2J1ZmYgKnNrYixcbiBcdGlmICh1bmxpa2VseShudG9ocyhnc3cxeHhfdGFnWzBdKSAhPSBFVEhfUF9NWExHU1cpKSB7XG4gXHRcdGRldl93YXJuX3JhdGVsaW1pdGVkKFx1MDAyNmRldi1cdTAwM2VkZXYsIFwmIzM0O0Ryb3BwaW5nIHBhY2tldCBkdWUgdG8gaW52YWxpZCBzcGVjaWFsIHRhZ1xcblwmIzM0Oyk7XG4gXHRcdGRldl93YXJuX3JhdGVsaW1pdGVkKFx1MDAyNmRldi1cdTAwM2VkZXYsIFwmIzM0O1RhZzogJThwaFxcblwmIzM0OywgZ3N3MXh4X3RhZyk7XG4mIzQzO1x0XHRrZnJlZV9za2Ioc2tiKTtcbiBcdFx0cmV0dXJuIE5VTEw7XG4gXHR9XG4gXG5AQCAtOTAsNiAmIzQzOzkyLDcgQEAgc3RhdGljIHN0cnVjdCBza19idWZmICpnc3cxeHhfdGFnX3JjdihzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxuIFx0aWYgKCFza2ItXHUwMDNlZGV2KSB7XG4gXHRcdGRldl93YXJuX3JhdGVsaW1pdGVkKFx1MDAyNmRldi1cdTAwM2VkZXYsIFwmIzM0O0Ryb3BwaW5nIHBhY2tldCBkdWUgdG8gaW52YWxpZCBzb3VyY2UgcG9ydFxcblwmIzM0Oyk7XG4gXHRcdGRldl93YXJuX3JhdGVsaW1pdGVkKFx1MDAyNmRldi1cdTAwM2VkZXYsIFwmIzM0O1RhZzogJThwaFxcblwmIzM0OywgZ3N3MXh4X3RhZyk7XG4mIzQzO1x0XHRrZnJlZV9za2Ioc2tiKTtcbiBcdFx0cmV0dXJuIE5VTEw7XG4gXHR9XG4gXG5kaWZmIC0tZ2l0IGEvbmV0L2RzYS90YWdfbXhsODYyeHguYyBiL25ldC9kc2EvdGFnX214bDg2Mnh4LmNcbmluZGV4IDhkYWVmZWI4ZDQ5ZGZhLi44N2I4MGRkZjA5NDYzMiAxMDA2NDRcbi0tLSBhL25ldC9kc2EvdGFnX214bDg2Mnh4LmNcbiYjNDM7JiM0MzsmIzQzOyBiL25ldC9kc2EvdGFnX214bDg2Mnh4LmNcbkBAIC02NCw2ICYjNDM7NjQsNyBAQCBzdGF0aWMgc3RydWN0IHNrX2J1ZmYgKm14bDg2Ml90YWdfcmN2KHN0cnVjdCBza19idWZmICpza2IsXG4gXG4gXHRpZiAodW5saWtlbHkoIXBza2JfbWF5X3B1bGwoc2tiLCBNWEw4NjJfSEVBREVSX0xFTikpKSB7XG4gXHRcdGRldl93YXJuX3JhdGVsaW1pdGVkKFx1MDAyNmRldi1cdTAwM2VkZXYsIFwmIzM0O0Nhbm5vdCBwdWxsIFNLQiwgcGFja2V0IGRyb3BwZWRcXG5cJiMzNDspO1xuJiM0MztcdFx0a2ZyZWVfc2tiKHNrYik7XG4gXHRcdHJldHVybiBOVUxMO1xuIFx0fVxuIFxuQEAgLTczLDYgJiM0Mzs3NCw3IEBAIHN0YXRpYyBzdHJ1Y3Qgc2tfYnVmZiAqbXhsODYyX3RhZ19yY3Yoc3RydWN0IHNrX2J1ZmYgKnNrYixcbiBcdFx0ZGV2X3dhcm5fcmF0ZWxpbWl0ZWQoXHUwMDI2ZGV2LVx1MDAzZWRldixcbiBcdFx0XHRcdCAgICAgXCYjMzQ7SW52YWxpZCBzcGVjaWFsIHRhZyBtYXJrZXIsIHBhY2tldCBkcm9wcGVkLCB0YWc6ICU4cGhcXG5cJiMzNDssXG4gXHRcdFx0XHQgICAgIG14bDg2Ml90YWcpO1xuJiM0MztcdFx0a2ZyZWVfc2tiKHNrYik7XG4gXHRcdHJldHVybiBOVUxMO1xuIFx0fVxuIFxuQEAgLTgzLDYgJiM0Mzs4NSw3IEBAIHN0YXRpYyBzdHJ1Y3Qgc2tfYnVmZiAqbXhsODYyX3RhZ19yY3Yoc3RydWN0IHNrX2J1ZmYgKnNrYixcbiBcdFx0ZGV2X3dhcm5fcmF0ZWxpbWl0ZWQoXHUwMDI2ZGV2LVx1MDAzZWRldixcbiBcdFx0XHRcdCAgICAgXCYjMzQ7SW52YWxpZCBzb3VyY2UgcG9ydCwgcGFja2V0IGRyb3BwZWQsIHRhZzogJThwaFxcblwmIzM0OyxcbiBcdFx0XHRcdCAgICAgbXhsODYyX3RhZyk7XG4mIzQzO1x0XHRrZnJlZV9za2Ioc2tiKTtcbiBcdFx0cmV0dXJuIE5VTEw7XG4gXHR9XG4gXG5kaWZmIC0tZ2l0IGEvbmV0L2RzYS90YWdfbmV0Yy5jIGIvbmV0L2RzYS90YWdfbmV0Yy5jXG5pbmRleCBjY2VkZmUzYTgwYjY0ZC4uZGY3MmE2MTc5NmFkNWYgMTAwNjQ0XG4tLS0gYS9uZXQvZHNhL3RhZ19uZXRjLmNcbiYjNDM7JiM0MzsmIzQzOyBiL25ldC9kc2EvdGFnX25ldGMuY1xuQEAgLTEzMSwxNCAmIzQzOzEzMSwxMyBAQCBzdGF0aWMgc3RydWN0IHNrX2J1ZmYgKm5ldGNfcmN2KHN0cnVjdCBza19idWZmICpza2IsXG4gXHRpbnQgdHlwZSwgc3VidHlwZTtcbiBcbiBcdGlmICh1bmxpa2VseSghcHNrYl9tYXlfcHVsbChza2IsIE5FVENfVEFHX01BWF9MRU4pKSlcbi1cdFx0cmV0dXJuIE5VTEw7XG4mIzQzO1x0XHRnb3RvIGVycl9mcmVlX3NrYjtcbiBcbiBcdHRhZ19jbW4gPSBkc2FfZXR5cGVfaGVhZGVyX3Bvc19yeChza2IpO1xuIFx0aWYgKG50b2hzKHRhZ19jbW4tXHUwMDNldHBpZCkgIT0gRVRIX1BfTlhQX05FVEMpIHtcbiBcdFx0ZGV2X3dhcm5fcmF0ZWxpbWl0ZWQoXHUwMDI2bmRldi1cdTAwM2VkZXYsIFwmIzM0O1Vua25vd24gVFBJRCAweCUwNHhcXG5cJiMzNDssXG4gXHRcdFx0XHQgICAgIG50b2hzKHRhZ19jbW4tXHUwMDNldHBpZCkpO1xuLVxuLVx0XHRyZXR1cm4gTlVMTDtcbiYjNDM7XHRcdGdvdG8gZXJyX2ZyZWVfc2tiO1xuIFx0fVxuIFxuIFx0aWYgKHRhZ19jbW4tXHUwMDNlcW9zIFx1MDAyNiBORVRDX1RBR19RVilcbkBAIC0xNDksMTQgJiM0MzsxNDgsMTMgQEAgc3RhdGljIHN0cnVjdCBza19idWZmICpuZXRjX3JjdihzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxuIFx0aWYgKCFzd19pZCkge1xuIFx0XHRkZXZfd2Fybl9yYXRlbGltaXRlZChcdTAwMjZuZGV2LVx1MDAzZWRldixcbiBcdFx0XHRcdCAgICAgXCYjMzQ7VkVQQSBzd2l0Y2ggSUQgaXMgbm90IHN1cHBvcnRlZCB5ZXRcXG5cJiMzNDspO1xuLVxuLVx0XHRyZXR1cm4gTlVMTDtcbiYjNDM7XHRcdGdvdG8gZXJyX2ZyZWVfc2tiO1xuIFx0fVxuIFxuIFx0cG9ydCA9IEZJRUxEX0dFVChORVRDX1RBR19QT1JULCB0YWdfY21uLVx1MDAzZXN3aXRjaF9wb3J0KTtcbiBcdHNrYi1cdTAwM2VkZXYgPSBkc2FfY29uZHVpdF9maW5kX3VzZXIobmRldiwgc3dfaWQsIHBvcnQpO1xuIFx0aWYgKCFza2ItXHUwMDNlZGV2KVxuLVx0XHRyZXR1cm4gTlVMTDtcbiYjNDM7XHRcdGdvdG8gZXJyX2ZyZWVfc2tiO1xuIFxuIFx0dHlwZSA9IEZJRUxEX0dFVChORVRDX1RBR19UWVBFLCB0YWdfY21uLVx1MDAzZXR5cGUpO1xuIFx0c3VidHlwZSA9IEZJRUxEX0dFVChORVRDX1RBR19TVUJUWVBFLCB0YWdfY21uLVx1MDAzZXR5cGUpO1xuQEAgLTE2NSwxMSAmIzQzOzE2MywxMSBAQCBzdGF0aWMgc3RydWN0IHNrX2J1ZmYgKm5ldGNfcmN2KHN0cnVjdCBza19idWZmICpza2IsXG4gXHR9IGVsc2UgaWYgKHR5cGUgPT0gTkVUQ19UQUdfVE9fSE9TVCkge1xuIFx0XHQvKiBDdXJyZW50bHkgb25seSBzdWJ0eXBlMCBzdXBwb3J0ZWQgKi9cbiBcdFx0aWYgKHN1YnR5cGUgIT0gTkVUQ19UQUdfVEhfU1VCVFlQRTApXG4tXHRcdFx0cmV0dXJuIE5VTEw7XG4mIzQzO1x0XHRcdGdvdG8gZXJyX2ZyZWVfc2tiO1xuIFx0fSBlbHNlIHtcbiBcdFx0ZGV2X3dhcm5fcmF0ZWxpbWl0ZWQoXHUwMDI2bmRldi1cdTAwM2VkZXYsXG4gXHRcdFx0XHQgICAgIFwmIzM0O1VuZXhwZWN0ZWQgIHRhZyB0eXBlICVkXFxuXCYjMzQ7LCB0eXBlKTtcbi1cdFx0cmV0dXJuIE5VTEw7XG4mIzQzO1x0XHRnb3RvIGVycl9mcmVlX3NrYjtcbiBcdH1cbiBcbiBcdC8qIFJlbW92ZSBTd2l0Y2ggdGFnIGZyb20gdGhlIGZyYW1lICovXG5AQCAtMTc4LDYgJiM0MzsxNzYsMTAgQEAgc3RhdGljIHN0cnVjdCBza19idWZmICpuZXRjX3JjdihzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxuIFx0ZHNhX3N0cmlwX2V0eXBlX2hlYWRlcihza2IsIHRhZ19sZW4pO1xuIFxuIFx0cmV0dXJuIHNrYjtcbiYjNDM7XG4mIzQzO2Vycl9mcmVlX3NrYjpcbiYjNDM7XHRrZnJlZV9za2Ioc2tiKTtcbiYjNDM7XHRyZXR1cm4gTlVMTDtcbiB9XG4gXG4gc3RhdGljIHZvaWQgbmV0Y19mbG93X2Rpc3NlY3QoY29uc3Qgc3RydWN0IHNrX2J1ZmYgKnNrYiwgX19iZTE2ICpwcm90byxcbmRpZmYgLS1naXQgYS9uZXQvZHNhL3RhZ19vY2Vsb3QuYyBiL25ldC9kc2EvdGFnX29jZWxvdC5jXG5pbmRleCAzNDA1ZGVmNzljMmRlZi4uZDIwOGM3MzIyY2Q2MjYgMTAwNjQ0XG4tLS0gYS9uZXQvZHNhL3RhZ19vY2Vsb3QuY1xuJiM0MzsmIzQzOyYjNDM7IGIvbmV0L2RzYS90YWdfb2NlbG90LmNcbkBAIC0xMDcsMTQgJiM0MzsxMDcsMTYgQEAgc3RhdGljIHN0cnVjdCBza19idWZmICpvY2Vsb3RfcmN2KHN0cnVjdCBza19idWZmICpza2IsXG4gXHRvY2Vsb3RfeGZoX2dldF9yZXdfdmFsKGV4dHJhY3Rpb24sIFx1MDAyNnJld192YWwpO1xuIFxuIFx0c2tiLVx1MDAzZWRldiA9IGRzYV9jb25kdWl0X2ZpbmRfdXNlcihuZXRkZXYsIDAsIHNyY19wb3J0KTtcbi1cdGlmICghc2tiLVx1MDAzZWRldilcbiYjNDM7XHRpZiAoIXNrYi1cdTAwM2VkZXYpIHtcbiBcdFx0LyogVGhlIHN3aXRjaCB3aWxsIHJlZmxlY3QgYmFjayBzb21lIGZyYW1lcyBzZW50IHRocm91Z2hcbiBcdFx0ICogc29ja2V0cyBvcGVuZWQgb24gdGhlIGJhcmUgRFNBIGNvbmR1aXQuIFRoZXNlIHdpbGwgY29tZSBiYWNrXG4gXHRcdCAqIHdpdGggc3JjX3BvcnQgZXF1YWwgdG8gdGhlIGluZGV4IG9mIHRoZSBDUFUgcG9ydCwgZm9yIHdoaWNoXG4gXHRcdCAqIHRoZXJlIGlzIG5vIHVzZXIgcmVnaXN0ZXJlZC4gU28gZG9uJiMzOTt0IHByaW50IGFueSBlcnJvclxuIFx0XHQgKiBtZXNzYWdlIGhlcmUgKGlnbm9yZSBhbmQgZHJvcCB0aG9zZSBmcmFtZXMpLlxuIFx0XHQgKi9cbiYjNDM7XHRcdGtmcmVlX3NrYihza2IpO1xuIFx0XHRyZXR1cm4gTlVMTDtcbiYjNDM7XHR9XG4gXG4gXHRkc2FfZGVmYXVsdF9vZmZsb2FkX2Z3ZF9tYXJrKHNrYik7XG4gXHRza2ItXHUwMDNlcHJpb3JpdHkgPSBxb3NfY2xhc3M7XG5kaWZmIC0tZ2l0IGEvbmV0L2RzYS90YWdfb2NlbG90XzgwMjFxLmMgYi9uZXQvZHNhL3RhZ19vY2Vsb3RfODAyMXEuY1xuaW5kZXggZTg5ZDkyNTRlOTBhM2EuLmY1MGYxY2Q4M2YxNjFjIDEwMDY0NFxuLS0tIGEvbmV0L2RzYS90YWdfb2NlbG90XzgwMjFxLmNcbiYjNDM7JiM0MzsmIzQzOyBiL25ldC9kc2EvdGFnX29jZWxvdF84MDIxcS5jXG5AQCAtMzMsMzAgJiM0MzszMywzNCBAQCBzdGF0aWMgc3RydWN0IHNrX2J1ZmYgKm9jZWxvdF9kZWZlcl94bWl0KHN0cnVjdCBkc2FfcG9ydCAqZHAsXG4gXHR4bWl0X3dvcmtfZm4gPSBkYXRhLVx1MDAzZXhtaXRfd29ya19mbjtcbiBcdHhtaXRfd29ya2VyID0gcHJpdi1cdTAwM2V4bWl0X3dvcmtlcjtcbiBcbi1cdGlmICgheG1pdF93b3JrX2ZuIHx8ICF4bWl0X3dvcmtlcilcbiYjNDM7XHRpZiAoIXhtaXRfd29ya19mbiB8fCAheG1pdF93b3JrZXIpIHtcbiYjNDM7XHRcdGtmcmVlX3NrYihza2IpO1xuIFx0XHRyZXR1cm4gTlVMTDtcbiYjNDM7XHR9XG4gXG4gXHQvKiBQVFAgb3ZlciBJUCBwYWNrZXRzIG5lZWQgVURQIGNoZWNrc3VtbWluZy4gV2UgbWF5IGhhdmUgaW5oZXJpdGVkXG4gXHQgKiBORVRJRl9GX0hXX0NTVU0gZnJvbSB0aGUgRFNBIGNvbmR1aXQsIGJ1dCB0aGVzZSBwYWNrZXRzIGFyZSBub3Qgc2VudFxuIFx0ICogdGhyb3VnaCB0aGUgRFNBIGNvbmR1aXQsIHNvIGNhbGN1bGF0ZSB0aGUgY2hlY2tzdW0gaGVyZS5cbiBcdCAqL1xuLVx0aWYgKHNrYi1cdTAwM2VpcF9zdW1tZWQgPT0gQ0hFQ0tTVU1fUEFSVElBTCBcdTAwMjZcdTAwMjYgc2tiX2NoZWNrc3VtX2hlbHAoc2tiKSlcbiYjNDM7XHRpZiAoc2tiLVx1MDAzZWlwX3N1bW1lZCA9PSBDSEVDS1NVTV9QQVJUSUFMIFx1MDAyNlx1MDAyNiBza2JfY2hlY2tzdW1faGVscChza2IpKSB7XG4mIzQzO1x0XHRrZnJlZV9za2Ioc2tiKTtcbiBcdFx0cmV0dXJuIE5VTEw7XG4mIzQzO1x0fVxuIFxuIFx0eG1pdF93b3JrID0ga3phbGxvY19vYmooKnhtaXRfd29yaywgR0ZQX0FUT01JQyk7XG4tXHRpZiAoIXhtaXRfd29yaylcbiYjNDM7XHRpZiAoIXhtaXRfd29yaykge1xuJiM0MztcdFx0a2ZyZWVfc2tiKHNrYik7XG4gXHRcdHJldHVybiBOVUxMO1xuJiM0MztcdH1cbiBcbiBcdC8qIENhbGxzIGZlbGl4X3BvcnRfZGVmZXJyZWRfeG1pdCBpbiBmZWxpeC5jICovXG4gXHRrdGhyZWFkX2luaXRfd29yayhcdTAwMjZ4bWl0X3dvcmstXHUwMDNld29yaywgeG1pdF93b3JrX2ZuKTtcbi1cdC8qIEluY3JlYXNlIHJlZmNvdW50IHNvIHRoZSBrZnJlZV9za2IgaW4gZHNhX3VzZXJfeG1pdFxuLVx0ICogd29uJiMzOTt0IHJlYWxseSBmcmVlIHRoZSBwYWNrZXQuXG4tXHQgKi9cbiBcdHhtaXRfd29yay1cdTAwM2VkcCA9IGRwO1xuIFx0eG1pdF93b3JrLVx1MDAzZXNrYiA9IHNrYl9nZXQoc2tiKTtcbiBcbiBcdGt0aHJlYWRfcXVldWVfd29yayh4bWl0X3dvcmtlciwgXHUwMDI2eG1pdF93b3JrLVx1MDAzZXdvcmspO1xuIFxuJiM0MztcdGtmcmVlX3NrYihza2IpO1xuIFx0cmV0dXJuIE5VTEw7XG4gfVxuIFxuQEAgLTg0LDggJiM0Mzs4OCwxMCBAQCBzdGF0aWMgc3RydWN0IHNrX2J1ZmYgKm9jZWxvdF9yY3Yoc3RydWN0IHNrX2J1ZmYgKnNrYixcbiBcdGRzYV84MDIxcV9yY3Yoc2tiLCBcdTAwMjZzcmNfcG9ydCwgXHUwMDI2c3dpdGNoX2lkLCBOVUxMLCBOVUxMKTtcbiBcbiBcdHNrYi1cdTAwM2VkZXYgPSBkc2FfY29uZHVpdF9maW5kX3VzZXIobmV0ZGV2LCBzd2l0Y2hfaWQsIHNyY19wb3J0KTtcbi1cdGlmICghc2tiLVx1MDAzZWRldilcbiYjNDM7XHRpZiAoIXNrYi1cdTAwM2VkZXYpIHtcbiYjNDM7XHRcdGtmcmVlX3NrYihza2IpO1xuIFx0XHRyZXR1cm4gTlVMTDtcbiYjNDM7XHR9XG4gXG4gXHRkc2FfZGVmYXVsdF9vZmZsb2FkX2Z3ZF9tYXJrKHNrYik7XG4gXG5kaWZmIC0tZ2l0IGEvbmV0L2RzYS90YWdfcWNhLmMgYi9uZXQvZHNhL3RhZ19xY2EuY1xuaW5kZXggOWUzYjQyOWU4YjM2MjUuLjUxMDc5MmZiZmE5MmRkIDEwMDY0NFxuLS0tIGEvbmV0L2RzYS90YWdfcWNhLmNcbiYjNDM7JiM0MzsmIzQzOyBiL25ldC9kc2EvdGFnX3FjYS5jXG5AQCAtNDYsMTYgJiM0Mzs0NiwyMCBAQCBzdGF0aWMgc3RydWN0IHNrX2J1ZmYgKnFjYV90YWdfcmN2KHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXG4gXG4gXHR0YWdnZXJfZGF0YSA9IGRzLVx1MDAzZXRhZ2dlcl9kYXRhO1xuIFxuLVx0aWYgKHVubGlrZWx5KCFwc2tiX21heV9wdWxsKHNrYiwgUUNBX0hEUl9MRU4pKSlcbiYjNDM7XHRpZiAodW5saWtlbHkoIXBza2JfbWF5X3B1bGwoc2tiLCBRQ0FfSERSX0xFTikpKSB7XG4mIzQzO1x0XHRrZnJlZV9za2Ioc2tiKTtcbiBcdFx0cmV0dXJuIE5VTEw7XG4mIzQzO1x0fVxuIFxuIFx0cGhkciA9IGRzYV9ldHlwZV9oZWFkZXJfcG9zX3J4KHNrYik7XG4gXHRoZHIgPSBudG9ocygqcGhkcik7XG4gXG4gXHQvKiBNYWtlIHN1cmUgdGhlIHZlcnNpb24gaXMgY29ycmVjdCAqL1xuIFx0dmVyID0gRklFTERfR0VUKFFDQV9IRFJfUkVDVl9WRVJTSU9OLCBoZHIpO1xuLVx0aWYgKHVubGlrZWx5KHZlciAhPSBRQ0FfSERSX1ZFUlNJT04pKVxuJiM0MztcdGlmICh1bmxpa2VseSh2ZXIgIT0gUUNBX0hEUl9WRVJTSU9OKSkge1xuJiM0MztcdFx0a2ZyZWVfc2tiKHNrYik7XG4gXHRcdHJldHVybiBOVUxMO1xuJiM0MztcdH1cbiBcbiBcdC8qIEdldCBwayB0eXBlICovXG4gXHRwa190eXBlID0gRklFTERfR0VUKFFDQV9IRFJfUkVDVl9UWVBFLCBoZHIpO1xuQEAgLTY0LDYgJiM0Mzs2OCw3IEBAIHN0YXRpYyBzdHJ1Y3Qgc2tfYnVmZiAqcWNhX3RhZ19yY3Yoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IG5ldF9kZXZpY2UgKmRldilcbiBcdGlmIChwa190eXBlID09IFFDQV9IRFJfUkVDVl9UWVBFX1JXX1JFR19BQ0spIHtcbiBcdFx0aWYgKGxpa2VseSh0YWdnZXJfZGF0YS1cdTAwM2Vyd19yZWdfYWNrX2hhbmRsZXIpKVxuIFx0XHRcdHRhZ2dlcl9kYXRhLVx1MDAzZXJ3X3JlZ19hY2tfaGFuZGxlcihkcywgc2tiKTtcbiYjNDM7XHRcdGtmcmVlX3NrYihza2IpO1xuIFx0XHRyZXR1cm4gTlVMTDtcbiBcdH1cbiBcbkBAIC03MSw2ICYjNDM7NzYsNyBAQCBzdGF0aWMgc3RydWN0IHNrX2J1ZmYgKnFjYV90YWdfcmN2KHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXG4gXHRpZiAocGtfdHlwZSA9PSBRQ0FfSERSX1JFQ1ZfVFlQRV9NSUIpIHtcbiBcdFx0aWYgKGxpa2VseSh0YWdnZXJfZGF0YS1cdTAwM2VtaWJfYXV0b2Nhc3RfaGFuZGxlcikpXG4gXHRcdFx0dGFnZ2VyX2RhdGEtXHUwMDNlbWliX2F1dG9jYXN0X2hhbmRsZXIoZHMsIHNrYik7XG4mIzQzO1x0XHRrZnJlZV9za2Ioc2tiKTtcbiBcdFx0cmV0dXJuIE5VTEw7XG4gXHR9XG4gXG5AQCAtNzgsOCAmIzQzOzg0LDEwIEBAIHN0YXRpYyBzdHJ1Y3Qgc2tfYnVmZiAqcWNhX3RhZ19yY3Yoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IG5ldF9kZXZpY2UgKmRldilcbiBcdHBvcnQgPSBGSUVMRF9HRVQoUUNBX0hEUl9SRUNWX1NPVVJDRV9QT1JULCBoZHIpO1xuIFxuIFx0c2tiLVx1MDAzZWRldiA9IGRzYV9jb25kdWl0X2ZpbmRfdXNlcihkZXYsIDAsIHBvcnQpO1xuLVx0aWYgKCFza2ItXHUwMDNlZGV2KVxuJiM0MztcdGlmICghc2tiLVx1MDAzZWRldikge1xuJiM0MztcdFx0a2ZyZWVfc2tiKHNrYik7XG4gXHRcdHJldHVybiBOVUxMO1xuJiM0MztcdH1cbiBcbiBcdC8qIFJlbW92ZSBRQ0EgdGFnIGFuZCByZWNhbGN1bGF0ZSBjaGVja3N1bSAqL1xuIFx0c2tiX3B1bGxfcmNzdW0oc2tiLCBRQ0FfSERSX0xFTik7XG5kaWZmIC0tZ2l0IGEvbmV0L2RzYS90YWdfcnRsNF9hLmMgYi9uZXQvZHNhL3RhZ19ydGw0X2EuY1xuaW5kZXggM2NjNjNlYWNmYTAzNTIuLjU5MGVhM2I5MjFjOWQ5IDEwMDY0NFxuLS0tIGEvbmV0L2RzYS90YWdfcnRsNF9hLmNcbiYjNDM7JiM0MzsmIzQzOyBiL25ldC9kc2EvdGFnX3J0bDRfYS5jXG5AQCAtNDEsNyAmIzQzOzQxLDcgQEAgc3RhdGljIHN0cnVjdCBza19idWZmICpydGw0YV90YWdfeG1pdChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxuIFx0dTE2IG91dDtcbiBcbiBcdC8qIFBhZCBvdXQgdG8gYXQgbGVhc3QgNjAgYnl0ZXMgKi9cbi1cdGlmICh1bmxpa2VseShfX3NrYl9wdXRfcGFkdG8oc2tiLCBFVEhfWkxFTiwgZmFsc2UpKSlcbiYjNDM7XHRpZiAodW5saWtlbHkoZXRoX3NrYl9wYWQoc2tiKSkpXG4gXHRcdHJldHVybiBOVUxMO1xuIFxuIFx0bmV0ZGV2X2RiZyhkZXYsIFwmIzM0O2FkZCByZWFsdGVrIHRhZyB0byBwYWNrYWdlIHRvIHBvcnQgJWRcXG5cJiMzNDssXG5AQCAtNzUsOCAmIzQzOzc1LDEwIEBAIHN0YXRpYyBzdHJ1Y3Qgc2tfYnVmZiAqcnRsNGFfdGFnX3JjdihzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxuIFx0dTggcHJvdDtcbiBcdHU4IHBvcnQ7XG4gXG4tXHRpZiAodW5saWtlbHkoIXBza2JfbWF5X3B1bGwoc2tiLCBSVEw0X0FfSERSX0xFTikpKVxuJiM0MztcdGlmICh1bmxpa2VseSghcHNrYl9tYXlfcHVsbChza2IsIFJUTDRfQV9IRFJfTEVOKSkpIHtcbiYjNDM7XHRcdGtmcmVlX3NrYihza2IpO1xuIFx0XHRyZXR1cm4gTlVMTDtcbiYjNDM7XHR9XG4gXG4gXHR0YWcgPSBkc2FfZXR5cGVfaGVhZGVyX3Bvc19yeChza2IpO1xuIFx0cCA9IChfX2JlMTYgKil0YWc7XG5AQCAtOTIsNiAmIzQzOzk0LDcgQEAgc3RhdGljIHN0cnVjdCBza19idWZmICpydGw0YV90YWdfcmN2KHN0cnVjdCBza19idWZmICpza2IsXG4gXHRwcm90ID0gKHByb3Rwb3J0IFx1MDAzZVx1MDAzZSBSVEw0X0FfUFJPVE9DT0xfU0hJRlQpIFx1MDAyNiAweDBmO1xuIFx0aWYgKHByb3QgIT0gUlRMNF9BX1BST1RPQ09MX1JUTDgzNjZSQikge1xuIFx0XHRuZXRkZXZfZXJyKGRldiwgXCYjMzQ7dW5rbm93biByZWFsdGVrIHByb3RvY29sIDB4JTAxeFxcblwmIzM0OywgcHJvdCk7XG4mIzQzO1x0XHRrZnJlZV9za2Ioc2tiKTtcbiBcdFx0cmV0dXJuIE5VTEw7XG4gXHR9XG4gXHRwb3J0ID0gcHJvdHBvcnQgXHUwMDI2IDB4ZmY7XG5AQCAtOTksNiAmIzQzOzEwMiw3IEBAIHN0YXRpYyBzdHJ1Y3Qgc2tfYnVmZiAqcnRsNGFfdGFnX3JjdihzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxuIFx0c2tiLVx1MDAzZWRldiA9IGRzYV9jb25kdWl0X2ZpbmRfdXNlcihkZXYsIDAsIHBvcnQpO1xuIFx0aWYgKCFza2ItXHUwMDNlZGV2KSB7XG4gXHRcdG5ldGRldl9kYmcoZGV2LCBcJiMzNDtjb3VsZCBub3QgZmluZCB1c2VyIGZvciBwb3J0ICVkXFxuXCYjMzQ7LCBwb3J0KTtcbiYjNDM7XHRcdGtmcmVlX3NrYihza2IpO1xuIFx0XHRyZXR1cm4gTlVMTDtcbiBcdH1cbiBcbmRpZmYgLS1naXQgYS9uZXQvZHNhL3RhZ19ydGw4XzQuYyBiL25ldC9kc2EvdGFnX3J0bDhfNC5jXG5pbmRleCA4NTJjNmI4ODA3OWExMy4uNGRhM2JlZWJlZjc1ZTIgMTAwNjQ0XG4tLS0gYS9uZXQvZHNhL3RhZ19ydGw4XzQuY1xuJiM0MzsmIzQzOyYjNDM7IGIvbmV0L2RzYS90YWdfcnRsOF80LmNcbkBAIC0xNDMsOCAmIzQzOzE0MywxMCBAQCBzdGF0aWMgc3RydWN0IHNrX2J1ZmYgKnJ0bDhfNHRfdGFnX3htaXQoc3RydWN0IHNrX2J1ZmYgKnNrYixcbiBcdC8qIENhbGN1bGF0ZSB0aGUgY2hlY2tzdW0gaGVyZSBpZiBub3QgZG9uZSB5ZXQgYXMgdHJhaWxpbmcgdGFncyB3aWxsXG4gXHQgKiBicmVhayBlaXRoZXIgc29mdHdhcmUgb3IgaGFyZHdhcmUgYmFzZWQgY2hlY2tzdW1cbiBcdCAqL1xuLVx0aWYgKHNrYi1cdTAwM2VpcF9zdW1tZWQgPT0gQ0hFQ0tTVU1fUEFSVElBTCBcdTAwMjZcdTAwMjYgc2tiX2NoZWNrc3VtX2hlbHAoc2tiKSlcbiYjNDM7XHRpZiAoc2tiLVx1MDAzZWlwX3N1bW1lZCA9PSBDSEVDS1NVTV9QQVJUSUFMIFx1MDAyNlx1MDAyNiBza2JfY2hlY2tzdW1faGVscChza2IpKSB7XG4mIzQzO1x0XHRrZnJlZV9za2Ioc2tiKTtcbiBcdFx0cmV0dXJuIE5VTEw7XG4mIzQzO1x0fVxuIFxuIFx0cnRsOF80X3dyaXRlX3RhZyhza2IsIGRldiwgc2tiX3B1dChza2IsIFJUTDhfNF9UQUdfTEVOKSk7XG4gXG5AQCAtMjAxLDExICYjNDM7MjAzLDE1IEBAIHN0YXRpYyBpbnQgcnRsOF80X3JlYWRfdGFnKHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXG4gc3RhdGljIHN0cnVjdCBza19idWZmICpydGw4XzRfdGFnX3JjdihzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxuIFx0XHRcdFx0ICAgICAgc3RydWN0IG5ldF9kZXZpY2UgKmRldilcbiB7XG4tXHRpZiAodW5saWtlbHkoIXBza2JfbWF5X3B1bGwoc2tiLCBSVEw4XzRfVEFHX0xFTikpKVxuJiM0MztcdGlmICh1bmxpa2VseSghcHNrYl9tYXlfcHVsbChza2IsIFJUTDhfNF9UQUdfTEVOKSkpIHtcbiYjNDM7XHRcdGtmcmVlX3NrYihza2IpO1xuIFx0XHRyZXR1cm4gTlVMTDtcbiYjNDM7XHR9XG4gXG4tXHRpZiAodW5saWtlbHkocnRsOF80X3JlYWRfdGFnKHNrYiwgZGV2LCBkc2FfZXR5cGVfaGVhZGVyX3Bvc19yeChza2IpKSkpXG4mIzQzO1x0aWYgKHVubGlrZWx5KHJ0bDhfNF9yZWFkX3RhZyhza2IsIGRldiwgZHNhX2V0eXBlX2hlYWRlcl9wb3Nfcngoc2tiKSkpKSB7XG4mIzQzO1x0XHRrZnJlZV9za2Ioc2tiKTtcbiBcdFx0cmV0dXJuIE5VTEw7XG4mIzQzO1x0fVxuIFxuIFx0LyogUmVtb3ZlIHRhZyBhbmQgcmVjYWxjdWxhdGUgY2hlY2tzdW0gKi9cbiBcdHNrYl9wdWxsX3Jjc3VtKHNrYiwgUlRMOF80X1RBR19MRU4pO1xuQEAgLTIxOCwxNCAmIzQzOzIyNCwyMCBAQCBzdGF0aWMgc3RydWN0IHNrX2J1ZmYgKnJ0bDhfNF90YWdfcmN2KHN0cnVjdCBza19idWZmICpza2IsXG4gc3RhdGljIHN0cnVjdCBza19idWZmICpydGw4XzR0X3RhZ19yY3Yoc3RydWN0IHNrX2J1ZmYgKnNrYixcbiBcdFx0XHRcdCAgICAgICBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxuIHtcbi1cdGlmIChza2JfbGluZWFyaXplKHNrYikpXG4mIzQzO1x0aWYgKHNrYl9saW5lYXJpemUoc2tiKSkge1xuJiM0MztcdFx0a2ZyZWVfc2tiKHNrYik7XG4gXHRcdHJldHVybiBOVUxMO1xuJiM0MztcdH1cbiBcbi1cdGlmICh1bmxpa2VseShydGw4XzRfcmVhZF90YWcoc2tiLCBkZXYsIHNrYl90YWlsX3BvaW50ZXIoc2tiKSAtIFJUTDhfNF9UQUdfTEVOKSkpXG4mIzQzO1x0aWYgKHVubGlrZWx5KHJ0bDhfNF9yZWFkX3RhZyhza2IsIGRldiwgc2tiX3RhaWxfcG9pbnRlcihza2IpIC0gUlRMOF80X1RBR19MRU4pKSkge1xuJiM0MztcdFx0a2ZyZWVfc2tiKHNrYik7XG4gXHRcdHJldHVybiBOVUxMO1xuJiM0MztcdH1cbiBcbi1cdGlmIChwc2tiX3RyaW1fcmNzdW0oc2tiLCBza2ItXHUwMDNlbGVuIC0gUlRMOF80X1RBR19MRU4pKVxuJiM0MztcdGlmIChwc2tiX3RyaW1fcmNzdW0oc2tiLCBza2ItXHUwMDNlbGVuIC0gUlRMOF80X1RBR19MRU4pKSB7XG4mIzQzO1x0XHRrZnJlZV9za2Ioc2tiKTtcbiBcdFx0cmV0dXJuIE5VTEw7XG4mIzQzO1x0fVxuIFxuIFx0cmV0dXJuIHNrYjtcbiB9XG5kaWZmIC0tZ2l0IGEvbmV0L2RzYS90YWdfcnpuMV9hNXBzdy5jIGIvbmV0L2RzYS90YWdfcnpuMV9hNXBzdy5jXG5pbmRleCAxMDk5NGIzNDcwZjY3YS4uNzM0OTEwMTU2ZGMzMzMgMTAwNjQ0XG4tLS0gYS9uZXQvZHNhL3RhZ19yem4xX2E1cHN3LmNcbiYjNDM7JiM0MzsmIzQzOyBiL25ldC9kc2EvdGFnX3J6bjFfYTVwc3cuY1xuQEAgLTQ4LDcgJiM0Mzs0OCw3IEBAIHN0YXRpYyBzdHJ1Y3Qgc2tfYnVmZiAqYTVwc3dfdGFnX3htaXQoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IG5ldF9kZXZpY2UgKmRlXG4gXHQgKiBsZWFzdCA2MCBieXRlcyBvdGhlcndpc2UgdGhleSB3aWxsIGJlIGRpc2NhcmRlZCB3aGVuIHRoZXkgZW50ZXIgdGhlXG4gXHQgKiBzd2l0Y2ggcG9ydCBsb2dpYy5cbiBcdCAqL1xuLVx0aWYgKF9fc2tiX3B1dF9wYWR0byhza2IsIEVUSF9aTEVOLCBmYWxzZSkpXG4mIzQzO1x0aWYgKGV0aF9za2JfcGFkKHNrYikpXG4gXHRcdHJldHVybiBOVUxMO1xuIFxuIFx0LyogcHJvdmlkZSAmIzM5O0E1UFNXX1RBR19MRU4mIzM5OyBieXRlcyBhZGRpdGlvbmFsIHNwYWNlICovXG5AQCAtNzcsNiAmIzQzOzc3LDcgQEAgc3RhdGljIHN0cnVjdCBza19idWZmICphNXBzd190YWdfcmN2KHN0cnVjdCBza19idWZmICpza2IsXG4gXHRpZiAodW5saWtlbHkoIXBza2JfbWF5X3B1bGwoc2tiLCBBNVBTV19UQUdfTEVOKSkpIHtcbiBcdFx0ZGV2X3dhcm5fcmF0ZWxpbWl0ZWQoXHUwMDI2ZGV2LVx1MDAzZWRldixcbiBcdFx0XHRcdCAgICAgXCYjMzQ7RHJvcHBpbmcgcGFja2V0LCBjYW5ub3QgcHVsbFxcblwmIzM0Oyk7XG4mIzQzO1x0XHRrZnJlZV9za2Ioc2tiKTtcbiBcdFx0cmV0dXJuIE5VTEw7XG4gXHR9XG4gXG5AQCAtODQsMTQgJiM0Mzs4NSwxNyBAQCBzdGF0aWMgc3RydWN0IHNrX2J1ZmYgKmE1cHN3X3RhZ19yY3Yoc3RydWN0IHNrX2J1ZmYgKnNrYixcbiBcbiBcdGlmICh0YWctXHUwMDNlY3RybF90YWcgIT0gaHRvbnMoRVRIX1BfRFNBX0E1UFNXKSkge1xuIFx0XHRkZXZfd2Fybl9yYXRlbGltaXRlZChcdTAwMjZkZXYtXHUwMDNlZGV2LCBcJiMzNDtEcm9wcGluZyBwYWNrZXQgZHVlIHRvIGludmFsaWQgVEFHIG1hcmtlclxcblwmIzM0Oyk7XG4mIzQzO1x0XHRrZnJlZV9za2Ioc2tiKTtcbiBcdFx0cmV0dXJuIE5VTEw7XG4gXHR9XG4gXG4gXHRwb3J0ID0gRklFTERfR0VUKEE1UFNXX0NUUkxfREFUQV9QT1JULCBudG9ocyh0YWctXHUwMDNlY3RybF9kYXRhKSk7XG4gXG4gXHRza2ItXHUwMDNlZGV2ID0gZHNhX2NvbmR1aXRfZmluZF91c2VyKGRldiwgMCwgcG9ydCk7XG4tXHRpZiAoIXNrYi1cdTAwM2VkZXYpXG4mIzQzO1x0aWYgKCFza2ItXHUwMDNlZGV2KSB7XG4mIzQzO1x0XHRrZnJlZV9za2Ioc2tiKTtcbiBcdFx0cmV0dXJuIE5VTEw7XG4mIzQzO1x0fVxuIFxuIFx0c2tiX3B1bGxfcmNzdW0oc2tiLCBBNVBTV19UQUdfTEVOKTtcbiBcdGRzYV9zdHJpcF9ldHlwZV9oZWFkZXIoc2tiLCBBNVBTV19UQUdfTEVOKTtcbmRpZmYgLS1naXQgYS9uZXQvZHNhL3RhZ19zamExMTA1LmMgYi9uZXQvZHNhL3RhZ19zamExMTA1LmNcbmluZGV4IGRlNmQ0Y2U4NjY4YmUxLi5iZmUxZjc0NmY1NWJlNSAxMDA2NDRcbi0tLSBhL25ldC9kc2EvdGFnX3NqYTExMDUuY1xuJiM0MzsmIzQzOyYjNDM7IGIvbmV0L2RzYS90YWdfc2phMTEwNS5jXG5AQCAtMTQ5LDE5ICYjNDM7MTQ5LDIwIEBAIHN0YXRpYyBzdHJ1Y3Qgc2tfYnVmZiAqc2phMTEwNV9kZWZlcl94bWl0KHN0cnVjdCBkc2FfcG9ydCAqZHAsXG4gXHR4bWl0X3dvcmtfZm4gPSB0YWdnZXJfZGF0YS1cdTAwM2V4bWl0X3dvcmtfZm47XG4gXHR4bWl0X3dvcmtlciA9IHByaXYtXHUwMDNleG1pdF93b3JrZXI7XG4gXG4tXHRpZiAoIXhtaXRfd29ya19mbiB8fCAheG1pdF93b3JrZXIpXG4mIzQzO1x0aWYgKCF4bWl0X3dvcmtfZm4gfHwgIXhtaXRfd29ya2VyKSB7XG4mIzQzO1x0XHRrZnJlZV9za2Ioc2tiKTtcbiBcdFx0cmV0dXJuIE5VTEw7XG4mIzQzO1x0fVxuIFxuIFx0eG1pdF93b3JrID0ga3phbGxvY19vYmooKnhtaXRfd29yaywgR0ZQX0FUT01JQyk7XG4tXHRpZiAoIXhtaXRfd29yaylcbiYjNDM7XHRpZiAoIXhtaXRfd29yaykge1xuJiM0MztcdFx0a2ZyZWVfc2tiKHNrYik7XG4gXHRcdHJldHVybiBOVUxMO1xuJiM0MztcdH1cbiBcbiBcdGt0aHJlYWRfaW5pdF93b3JrKFx1MDAyNnhtaXRfd29yay1cdTAwM2V3b3JrLCB4bWl0X3dvcmtfZm4pO1xuLVx0LyogSW5jcmVhc2UgcmVmY291bnQgc28gdGhlIGtmcmVlX3NrYiBpbiBkc2FfdXNlcl94bWl0XG4tXHQgKiB3b24mIzM5O3QgcmVhbGx5IGZyZWUgdGhlIHBhY2tldC5cbi1cdCAqL1xuIFx0eG1pdF93b3JrLVx1MDAzZWRwID0gZHA7XG4tXHR4bWl0X3dvcmstXHUwMDNlc2tiID0gc2tiX2dldChza2IpO1xuJiM0MztcdHhtaXRfd29yay1cdTAwM2Vza2IgPSBza2I7XG4gXG4gXHRrdGhyZWFkX3F1ZXVlX3dvcmsoeG1pdF93b3JrZXIsIFx1MDAyNnhtaXRfd29yay1cdTAwM2V3b3JrKTtcbiBcbkBAIC00MDEsMTAgJiM0Mzs0MDIsNyBAQCBzdGF0aWMgc3RydWN0IHNrX2J1ZmZcbiBcdFx0XHRrZnJlZV9za2IocHJpdi1cdTAwM2VzdGFtcGFibGVfc2tiKTtcbiBcdFx0fVxuIFxuLVx0XHQvKiBIb2xkIGEgcmVmZXJlbmNlIHRvIGF2b2lkIGRzYV9zd2l0Y2hfcmN2XG4tXHRcdCAqIGZyb20gZnJlZWluZyB0aGUgc2tiLlxuLVx0XHQgKi9cbi1cdFx0cHJpdi1cdTAwM2VzdGFtcGFibGVfc2tiID0gc2tiX2dldChza2IpO1xuJiM0MztcdFx0cHJpdi1cdTAwM2VzdGFtcGFibGVfc2tiID0gc2tiO1xuIFx0XHRzcGluX3VubG9jayhcdTAwMjZwcml2LVx1MDAzZW1ldGFfbG9jayk7XG4gXG4gXHRcdC8qIFRlbGwgRFNBIHdlIGdvdCBub3RoaW5nICovXG5AQCAtNDM2LDYgJiM0Mzs0MzQsNyBAQCBzdGF0aWMgc3RydWN0IHNrX2J1ZmZcbiBcdFx0XHRkZXZfZXJyX3JhdGVsaW1pdGVkKGRzLVx1MDAzZWRldixcbiBcdFx0XHRcdFx0ICAgIFwmIzM0O1VuZXhwZWN0ZWQgbWV0YSBmcmFtZVxcblwmIzM0Oyk7XG4gXHRcdFx0c3Bpbl91bmxvY2soXHUwMDI2cHJpdi1cdTAwM2VtZXRhX2xvY2spO1xuJiM0MztcdFx0XHRrZnJlZV9za2Ioc2tiKTtcbiBcdFx0XHRyZXR1cm4gTlVMTDtcbiBcdFx0fVxuIFxuQEAgLTQ0Myw2ICYjNDM7NDQyLDcgQEAgc3RhdGljIHN0cnVjdCBza19idWZmXG4gXHRcdFx0ZGV2X2Vycl9yYXRlbGltaXRlZChkcy1cdTAwM2VkZXYsXG4gXHRcdFx0XHRcdCAgICBcJiMzNDtNZXRhIGZyYW1lIG9uIHdyb25nIHBvcnRcXG5cJiMzNDspO1xuIFx0XHRcdHNwaW5fdW5sb2NrKFx1MDAyNnByaXYtXHUwMDNlbWV0YV9sb2NrKTtcbiYjNDM7XHRcdFx0a2ZyZWVfc2tiKHNrYik7XG4gXHRcdFx0cmV0dXJuIE5VTEw7XG4gXHRcdH1cbiBcbkBAIC01MDEsMTggJiM0Mzs1MDEsMjEgQEAgc3RhdGljIHN0cnVjdCBza19idWZmICpzamExMTA1X3JjdihzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxuIFx0LyogTm9ybWFsIGRhdGEgcGxhbmUgdHJhZmZpYyBhbmQgbGluay1sb2NhbCBmcmFtZXMgYXJlIHRhZ2dlZCB3aXRoXG4gXHQgKiBhIHRhZ184MDIxcSBWTEFOIHdoaWNoIHdlIGhhdmUgdG8gc3RyaXBcbiBcdCAqL1xuLVx0aWYgKHNqYTExMDVfc2tiX2hhc190YWdfODAyMXEoc2tiKSlcbiYjNDM7XHRpZiAoc2phMTEwNV9za2JfaGFzX3RhZ184MDIxcShza2IpKSB7XG4gXHRcdGRzYV84MDIxcV9yY3Yoc2tiLCBcdTAwMjZzb3VyY2VfcG9ydCwgXHUwMDI2c3dpdGNoX2lkLCBcdTAwMjZ2YmlkLCBcdTAwMjZ2aWQpO1xuLVx0ZWxzZSBpZiAoc291cmNlX3BvcnQgPT0gLTEgXHUwMDI2XHUwMDI2IHN3aXRjaF9pZCA9PSAtMSlcbiYjNDM7XHR9IGVsc2UgaWYgKHNvdXJjZV9wb3J0ID09IC0xIFx1MDAyNlx1MDAyNiBzd2l0Y2hfaWQgPT0gLTEpIHtcbiBcdFx0LyogUGFja2V0cyB3aXRoIG5vIHNvdXJjZSBpbmZvcm1hdGlvbiBoYXZlIG5vIGNoYW5jZSBvZlxuIFx0XHQgKiBnZXR0aW5nIGFjY2VwdGVkLCBkcm9wIHRoZW0gc3RyYWlnaHQgYXdheS5cbiBcdFx0ICovXG4mIzQzO1x0XHRrZnJlZV9za2Ioc2tiKTtcbiBcdFx0cmV0dXJuIE5VTEw7XG4mIzQzO1x0fVxuIFxuIFx0c2tiLVx1MDAzZWRldiA9IGRzYV90YWdfODAyMXFfZmluZF91c2VyKG5ldGRldiwgc291cmNlX3BvcnQsIHN3aXRjaF9pZCxcbiBcdFx0XHRcdFx0ICAgdmlkLCB2YmlkKTtcbiBcdGlmICghc2tiLVx1MDAzZWRldikge1xuIFx0XHRuZXRkZXZfd2FybihuZXRkZXYsIFwmIzM0O0NvdWxkbiYjMzk7dCBkZWNvZGUgc291cmNlIHBvcnRcXG5cJiMzNDspO1xuJiM0MztcdFx0a2ZyZWVfc2tiKHNrYik7XG4gXHRcdHJldHVybiBOVUxMO1xuIFx0fVxuIFxuQEAgLTUzOSwxMiAmIzQzOzU0MiwxNSBAQCBzdGF0aWMgc3RydWN0IHNrX2J1ZmYgKnNqYTExMTBfcmN2X21ldGEoc3RydWN0IHNrX2J1ZmYgKnNrYiwgdTE2IHJ4X2hlYWRlcilcbiBcdGlmICghZHMpIHtcbiBcdFx0bmV0X2Vycl9yYXRlbGltaXRlZChcJiMzNDslczogY2Fubm90IGZpbmQgc3dpdGNoIGlkICVkXFxuXCYjMzQ7LFxuIFx0XHRcdFx0ICAgIGNvbmR1aXQtXHUwMDNlbmFtZSwgc3dpdGNoX2lkKTtcbiYjNDM7XHRcdGtmcmVlX3NrYihza2IpO1xuIFx0XHRyZXR1cm4gTlVMTDtcbiBcdH1cbiBcbiBcdHRhZ2dlcl9kYXRhID0gc2phMTEwNV90YWdnZXJfZGF0YShkcyk7XG4tXHRpZiAoIXRhZ2dlcl9kYXRhLVx1MDAzZW1ldGFfdHN0YW1wX2hhbmRsZXIpXG4mIzQzO1x0aWYgKCF0YWdnZXJfZGF0YS1cdTAwM2VtZXRhX3RzdGFtcF9oYW5kbGVyKSB7XG4mIzQzO1x0XHRrZnJlZV9za2Ioc2tiKTtcbiBcdFx0cmV0dXJuIE5VTEw7XG4mIzQzO1x0fVxuIFxuIFx0Zm9yIChpID0gMDsgaSBcdTAwM2M9IG5fdHM7IGkmIzQzOyYjNDM7KSB7XG4gXHRcdHU4IHRzX2lkLCBzb3VyY2VfcG9ydCwgZGlyO1xuQEAgLTU2Miw2ICYjNDM7NTY4LDcgQEAgc3RhdGljIHN0cnVjdCBza19idWZmICpzamExMTEwX3Jjdl9tZXRhKHN0cnVjdCBza19idWZmICpza2IsIHUxNiByeF9oZWFkZXIpXG4gXHR9XG4gXG4gXHQvKiBEaXNjYXJkIHRoZSBtZXRhIGZyYW1lLCB3ZSYjMzk7dmUgY29uc3VtZWQgdGhlIHRpbWVzdGFtcHMgaXQgY29udGFpbmVkICovXG4mIzQzO1x0a2ZyZWVfc2tiKHNrYik7XG4gXHRyZXR1cm4gTlVMTDtcbiB9XG4gXG5AQCAtNTcyLDggJiM0Mzs1NzksMTAgQEAgc3RhdGljIHN0cnVjdCBza19idWZmICpzamExMTEwX3Jjdl9pbmJhbmRfY29udHJvbF9leHRlbnNpb24oc3RydWN0IHNrX2J1ZmYgKnNrYixcbiB7XG4gXHR1MTYgcnhfaGVhZGVyO1xuIFxuLVx0aWYgKHVubGlrZWx5KCFwc2tiX21heV9wdWxsKHNrYiwgU0pBMTExMF9IRUFERVJfTEVOKSkpXG4mIzQzO1x0aWYgKHVubGlrZWx5KCFwc2tiX21heV9wdWxsKHNrYiwgU0pBMTExMF9IRUFERVJfTEVOKSkpIHtcbiYjNDM7XHRcdGtmcmVlX3NrYihza2IpO1xuIFx0XHRyZXR1cm4gTlVMTDtcbiYjNDM7XHR9XG4gXG4gXHQvKiBza2ItXHUwMDNlZGF0YSBwb2ludHMgdG8gc2tiX21hY19oZWFkZXIoc2tiKSAmIzQzOyBFVEhfSExFTiwgd2hpY2ggaXMgZXhhY3RseVxuIFx0ICogd2hhdCB3ZSBuZWVkIGJlY2F1c2UgdGhlIGNhbGxlciBoYXMgY2hlY2tlZCB0aGUgRXRoZXJUeXBlICh3aGljaCBpc1xuQEAgLTYwOSw4ICYjNDM7NjE4LDEwIEBAIHN0YXRpYyBzdHJ1Y3Qgc2tfYnVmZiAqc2phMTExMF9yY3ZfaW5iYW5kX2NvbnRyb2xfZXh0ZW5zaW9uKHN0cnVjdCBza19idWZmICpza2IsXG4gXHRcdCAqIHBhZGRpbmcgYW5kIHRyYWlsZXIgd2UgbmVlZCB0byBhY2NvdW50IGZvciB0aGUgZmFjdCB0aGF0XG4gXHRcdCAqIHNrYi1cdTAwM2VkYXRhIHBvaW50cyB0byBza2JfbWFjX2hlYWRlcihza2IpICYjNDM7IEVUSF9ITEVOLlxuIFx0XHQgKi9cbi1cdFx0aWYgKHBza2JfdHJpbV9yY3N1bShza2IsIHN0YXJ0X29mX3BhZGRpbmcgLSBFVEhfSExFTikpXG4mIzQzO1x0XHRpZiAocHNrYl90cmltX3Jjc3VtKHNrYiwgc3RhcnRfb2ZfcGFkZGluZyAtIEVUSF9ITEVOKSkge1xuJiM0MztcdFx0XHRrZnJlZV9za2Ioc2tiKTtcbiBcdFx0XHRyZXR1cm4gTlVMTDtcbiYjNDM7XHRcdH1cbiBcdC8qIFRyYXAtdG8taG9zdCBmcmFtZSwgbm8gdGltZXN0YW1wIHRyYWlsZXIgKi9cbiBcdH0gZWxzZSB7XG4gXHRcdCpzb3VyY2VfcG9ydCA9IFNKQTExMTBfUlhfSEVBREVSX1NSQ19QT1JUKHJ4X2hlYWRlcik7XG5AQCAtNjUzLDYgJiM0Mzs2NjQsNyBAQCBzdGF0aWMgc3RydWN0IHNrX2J1ZmYgKnNqYTExMTBfcmN2KHN0cnVjdCBza19idWZmICpza2IsXG4gXG4gXHRpZiAoIXNrYi1cdTAwM2VkZXYpIHtcbiBcdFx0bmV0ZGV2X3dhcm4obmV0ZGV2LCBcJiMzNDtDb3VsZG4mIzM5O3QgZGVjb2RlIHNvdXJjZSBwb3J0XFxuXCYjMzQ7KTtcbiYjNDM7XHRcdGtmcmVlX3NrYihza2IpO1xuIFx0XHRyZXR1cm4gTlVMTDtcbiBcdH1cbiBcbmRpZmYgLS1naXQgYS9uZXQvZHNhL3RhZ190cmFpbGVyLmMgYi9uZXQvZHNhL3RhZ190cmFpbGVyLmNcbmluZGV4IDRkY2UyNGNmZTZhNzE2Li40OWM4MDJjMTBjYTYzYSAxMDA2NDRcbi0tLSBhL25ldC9kc2EvdGFnX3RyYWlsZXIuY1xuJiM0MzsmIzQzOyYjNDM7IGIvbmV0L2RzYS90YWdfdHJhaWxlci5jXG5AQCAtMzAsMjIgJiM0MzszMCwzMCBAQCBzdGF0aWMgc3RydWN0IHNrX2J1ZmYgKnRyYWlsZXJfcmN2KHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXG4gXHR1OCAqdHJhaWxlcjtcbiBcdGludCBzb3VyY2VfcG9ydDtcbiBcbi1cdGlmIChza2JfbGluZWFyaXplKHNrYikpXG4mIzQzO1x0aWYgKHNrYl9saW5lYXJpemUoc2tiKSkge1xuJiM0MztcdFx0a2ZyZWVfc2tiKHNrYik7XG4gXHRcdHJldHVybiBOVUxMO1xuJiM0MztcdH1cbiBcbiBcdHRyYWlsZXIgPSBza2JfdGFpbF9wb2ludGVyKHNrYikgLSA0O1xuIFx0aWYgKHRyYWlsZXJbMF0gIT0gMHg4MCB8fCAodHJhaWxlclsxXSBcdTAwMjYgMHhmOCkgIT0gMHgwMCB8fFxuLVx0ICAgICh0cmFpbGVyWzJdIFx1MDAyNiAweGVmKSAhPSAweDAwIHx8IHRyYWlsZXJbM10gIT0gMHgwMClcbiYjNDM7XHQgICAgKHRyYWlsZXJbMl0gXHUwMDI2IDB4ZWYpICE9IDB4MDAgfHwgdHJhaWxlclszXSAhPSAweDAwKSB7XG4mIzQzO1x0XHRrZnJlZV9za2Ioc2tiKTtcbiBcdFx0cmV0dXJuIE5VTEw7XG4mIzQzO1x0fVxuIFxuIFx0c291cmNlX3BvcnQgPSB0cmFpbGVyWzFdIFx1MDAyNiA3O1xuIFxuIFx0c2tiLVx1MDAzZWRldiA9IGRzYV9jb25kdWl0X2ZpbmRfdXNlcihkZXYsIDAsIHNvdXJjZV9wb3J0KTtcbi1cdGlmICghc2tiLVx1MDAzZWRldilcbiYjNDM7XHRpZiAoIXNrYi1cdTAwM2VkZXYpIHtcbiYjNDM7XHRcdGtmcmVlX3NrYihza2IpO1xuIFx0XHRyZXR1cm4gTlVMTDtcbiYjNDM7XHR9XG4gXG4tXHRpZiAocHNrYl90cmltX3Jjc3VtKHNrYiwgc2tiLVx1MDAzZWxlbiAtIDQpKVxuJiM0MztcdGlmIChwc2tiX3RyaW1fcmNzdW0oc2tiLCBza2ItXHUwMDNlbGVuIC0gNCkpIHtcbiYjNDM7XHRcdGtmcmVlX3NrYihza2IpO1xuIFx0XHRyZXR1cm4gTlVMTDtcbiYjNDM7XHR9XG4gXG4gXHRyZXR1cm4gc2tiO1xuIH1cbmRpZmYgLS1naXQgYS9uZXQvZHNhL3RhZ192c2M3M3h4XzgwMjFxLmMgYi9uZXQvZHNhL3RhZ192c2M3M3h4XzgwMjFxLmNcbmluZGV4IGFmMTIxYTlhZmY3ZmJkLi5mNDczNmExYTdhMGYwZiAxMDA2NDRcbi0tLSBhL25ldC9kc2EvdGFnX3ZzYzczeHhfODAyMXEuY1xuJiM0MzsmIzQzOyYjNDM7IGIvbmV0L2RzYS90YWdfdnNjNzN4eF84MDIxcS5jXG5AQCAtNDQsNiAmIzQzOzQ0LDcgQEAgdnNjNzN4eF9yY3Yoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldilcbiBcdGlmICghc2tiLVx1MDAzZWRldikge1xuIFx0XHRkZXZfd2Fybl9yYXRlbGltaXRlZChcdTAwMjZuZXRkZXYtXHUwMDNlZGV2LFxuIFx0XHRcdFx0ICAgICBcJiMzNDtDb3VsZG4mIzM5O3QgZGVjb2RlIHNvdXJjZSBwb3J0XFxuXCYjMzQ7KTtcbiYjNDM7XHRcdGtmcmVlX3NrYihza2IpO1xuIFx0XHRyZXR1cm4gTlVMTDtcbiBcdH1cbiBcbmRpZmYgLS1naXQgYS9uZXQvZHNhL3RhZ194cnM3MDB4LmMgYi9uZXQvZHNhL3RhZ194cnM3MDB4LmNcbmluZGV4IGEwNTIxOWY3MDJjNjVhLi5iYjI2ODAyMGVlODY1ZSAxMDA2NDRcbi0tLSBhL25ldC9kc2EvdGFnX3hyczcwMHguY1xuJiM0MzsmIzQzOyYjNDM7IGIvbmV0L2RzYS90YWdfeHJzNzAweC5jXG5AQCAtMzAsMTUgJiM0MzszMCwyMSBAQCBzdGF0aWMgc3RydWN0IHNrX2J1ZmYgKnhyczcwMHhfcmN2KHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXG4gXG4gXHRzb3VyY2VfcG9ydCA9IGZmcygoaW50KXRyYWlsZXJbMF0pIC0gMTtcbiBcbi1cdGlmIChzb3VyY2VfcG9ydCBcdTAwM2MgMClcbiYjNDM7XHRpZiAoc291cmNlX3BvcnQgXHUwMDNjIDApIHtcbiYjNDM7XHRcdGtmcmVlX3NrYihza2IpO1xuIFx0XHRyZXR1cm4gTlVMTDtcbiYjNDM7XHR9XG4gXG4gXHRza2ItXHUwMDNlZGV2ID0gZHNhX2NvbmR1aXRfZmluZF91c2VyKGRldiwgMCwgc291cmNlX3BvcnQpO1xuLVx0aWYgKCFza2ItXHUwMDNlZGV2KVxuJiM0MztcdGlmICghc2tiLVx1MDAzZWRldikge1xuJiM0MztcdFx0a2ZyZWVfc2tiKHNrYik7XG4gXHRcdHJldHVybiBOVUxMO1xuJiM0MztcdH1cbiBcbi1cdGlmIChwc2tiX3RyaW1fcmNzdW0oc2tiLCBza2ItXHUwMDNlbGVuIC0gMSkpXG4mIzQzO1x0aWYgKHBza2JfdHJpbV9yY3N1bShza2IsIHNrYi1cdTAwM2VsZW4gLSAxKSkge1xuJiM0MztcdFx0a2ZyZWVfc2tiKHNrYik7XG4gXHRcdHJldHVybiBOVUxMO1xuJiM0MztcdH1cbiBcbiBcdC8qIEZyYW1lIGlzIGZvcndhcmRlZCBieSBoYXJkd2FyZSwgZG9uJiMzOTt0IGZvcndhcmQgaW4gc29mdHdhcmUuICovXG4gXHRkc2FfZGVmYXVsdF9vZmZsb2FkX2Z3ZF9tYXJrKHNrYik7XG5kaWZmIC0tZ2l0IGEvbmV0L2RzYS90YWdfeXQ5MjF4LmMgYi9uZXQvZHNhL3RhZ195dDkyMXguY1xuaW5kZXggZjNjZWQ5OWIxYzg1MmUuLjI5NDc4NGFiNjY5NGI2IDEwMDY0NFxuLS0tIGEvbmV0L2RzYS90YWdfeXQ5MjF4LmNcbiYjNDM7JiM0MzsmIzQzOyBiL25ldC9kc2EvdGFnX3l0OTIxeC5jXG5AQCAtODcsOCAmIzQzOzg3LDEwIEBAIHl0OTIxeF90YWdfcmN2KHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYpXG4gXHRfX2JlMTYgKnRhZztcbiBcdHUxNiByeDtcbiBcbi1cdGlmICh1bmxpa2VseSghcHNrYl9tYXlfcHVsbChza2IsIFlUOTIxWF9UQUdfTEVOKSkpXG4mIzQzO1x0aWYgKHVubGlrZWx5KCFwc2tiX21heV9wdWxsKHNrYiwgWVQ5MjFYX1RBR19MRU4pKSkge1xuJiM0MztcdFx0a2ZyZWVfc2tiKHNrYik7XG4gXHRcdHJldHVybiBOVUxMO1xuJiM0MztcdH1cbiBcbiBcdHRhZyA9IGRzYV9ldHlwZV9oZWFkZXJfcG9zX3J4KHNrYik7XG4gXG5AQCAtOTYsNiAmIzQzOzk4LDcgQEAgeXQ5MjF4X3RhZ19yY3Yoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldilcbiBcdFx0ZGV2X3dhcm5fcmF0ZWxpbWl0ZWQoXHUwMDI2bmV0ZGV2LVx1MDAzZWRldixcbiBcdFx0XHRcdCAgICAgXCYjMzQ7VW5leHBlY3RlZCBFdGhlclR5cGUgMHglMDR4XFxuXCYjMzQ7LFxuIFx0XHRcdFx0ICAgICBudG9ocyh0YWdbMF0pKTtcbiYjNDM7XHRcdGtmcmVlX3NrYihza2IpO1xuIFx0XHRyZXR1cm4gTlVMTDtcbiBcdH1cbiBcbkBAIC0xMDQsNiAmIzQzOzEwNyw3IEBAIHl0OTIxeF90YWdfcmN2KHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYpXG4gXHRpZiAodW5saWtlbHkoKHJ4IFx1MDAyNiBZVDkyMVhfVEFHX1BPUlRfRU4pID09IDApKSB7XG4gXHRcdGRldl93YXJuX3JhdGVsaW1pdGVkKFx1MDAyNm5ldGRldi1cdTAwM2VkZXYsXG4gXHRcdFx0XHQgICAgIFwmIzM0O1VuZXhwZWN0ZWQgcnggdGFnIDB4JTA0eFxcblwmIzM0OywgcngpO1xuJiM0MztcdFx0a2ZyZWVfc2tiKHNrYik7XG4gXHRcdHJldHVybiBOVUxMO1xuIFx0fVxuIFxuQEAgLTExMiw2ICYjNDM7MTE2LDcgQEAgeXQ5MjF4X3RhZ19yY3Yoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldilcbiBcdGlmICh1bmxpa2VseSghc2tiLVx1MDAzZWRldikpIHtcbiBcdFx0ZGV2X3dhcm5fcmF0ZWxpbWl0ZWQoXHUwMDI2bmV0ZGV2LVx1MDAzZWRldixcbiBcdFx0XHRcdCAgICAgXCYjMzQ7Q291bGRuJiMzOTt0IGRlY29kZSBzb3VyY2UgcG9ydCAldVxcblwmIzM0OywgcG9ydCk7XG4mIzQzO1x0XHRrZnJlZV9za2Ioc2tiKTtcbiBcdFx0cmV0dXJuIE5VTEw7XG4gXHR9XG4gXG5kaWZmIC0tZ2l0IGEvbmV0L2RzYS91c2VyLmMgYi9uZXQvZHNhL3VzZXIuY1xuaW5kZXggODcwNGMxYTNhNWI3NDEuLjA3MmZhNzY5NzJjYzY1IDEwMDY0NFxuLS0tIGEvbmV0L2RzYS91c2VyLmNcbiYjNDM7JiM0MzsmIzQzOyBiL25ldC9kc2EvdXNlci5jXG5AQCAtOTM1LDEzICYjNDM7OTM1LDEyIEBAIHN0YXRpYyBuZXRkZXZfdHhfdCBkc2FfdXNlcl94bWl0KHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXG4gXHRcdGV0aF9za2JfcGFkKHNrYik7XG4gXG4gXHQvKiBUcmFuc21pdCBmdW5jdGlvbiBtYXkgaGF2ZSB0byByZWFsbG9jYXRlIHRoZSBvcmlnaW5hbCBTS0IsXG4tXHQgKiBpbiB3aGljaCBjYXNlIGl0IG11c3QgaGF2ZSBmcmVlZCBpdC4gT25seSBmcmVlIGl0IGhlcmUgb24gZXJyb3IuXG4mIzQzO1x0ICogaW4gd2hpY2ggY2FzZSBpdCBtdXN0IGhhdmUgZnJlZWQgaXQuIFRhZ2dlcnMgd2lsbCBkcm9wIHRoZVxuJiM0MztcdCAqIHBhc3NlZCBza2Igb24gZXJyb3IuXG4gXHQgKi9cbiBcdG5za2IgPSBwLVx1MDAzZXhtaXQoc2tiLCBkZXYpO1xuLVx0aWYgKCFuc2tiKSB7XG4tXHRcdGtmcmVlX3NrYihza2IpO1xuJiM0MztcdGlmICghbnNrYilcbiBcdFx0cmV0dXJuIE5FVERFVl9UWF9PSztcbi1cdH1cbiBcbiBcdHJldHVybiBkc2FfZW5xdWV1ZV9za2IobnNrYiwgZGV2KTtcbiB9XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjUgMDg6Mjk8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7TkVUX0RTQSYjMzQ7LAogICAgJiMzNDtORVRfRFNBX0xPT1AmIzM0OywKICAgICYjMzQ7TkVUX0RTQV9UQUdfQVI5MzMxJiMzNDssCiAgICAmIzM0O05FVF9EU0FfVEFHX0JSQ00mIzM0OywKICAgICYjMzQ7TkVUX0RTQV9UQUdfQlJDTV9MRUdBQ1kmIzM0OywKICAgICYjMzQ7TkVUX0RTQV9UQUdfQlJDTV9QUkVQRU5EJiMzNDssCiAgICAmIzM0O05FVF9EU0FfVEFHX0hFTExDUkVFSyYjMzQ7LAogICAgJiMzNDtORVRfRFNBX1RBR19HU1dJUCYjMzQ7LAogICAgJiMzNDtORVRfRFNBX1RBR19EU0EmIzM0OywKICAgICYjMzQ7TkVUX0RTQV9UQUdfRURTQSYjMzQ7LAogICAgJiMzNDtORVRfRFNBX1RBR19NVEsmIzM0OywKICAgICYjMzQ7TkVUX0RTQV9UQUdfTVhMXzg2MlhYJiMzNDssCiAgICAmIzM0O05FVF9EU0FfVEFHX01YTF9HU1cxWFgmIzM0OywKICAgICYjMzQ7TkVUX0RTQV9UQUdfS1NaJiMzNDssCiAgICAmIzM0O05FVF9EU0FfVEFHX05FVEMmIzM0OywKICAgICYjMzQ7TkVUX0RTQV9UQUdfT0NFTE9UJiMzNDssCiAgICAmIzM0O05FVF9EU0FfVEFHX09DRUxPVF84MDIxUSYjMzQ7LAogICAgJiMzNDtORVRfRFNBX1RBR19RQ0EmIzM0OywKICAgICYjMzQ7TkVUX0RTQV9UQUdfUlRMNF9BJiMzNDssCiAgICAmIzM0O05FVF9EU0FfVEFHX1JUTDhfNCYjMzQ7LAogICAgJiMzNDtORVRfRFNBX1RBR19SWk4xX0E1UFNXJiMzNDssCiAgICAmIzM0O05FVF9EU0FfVEFHX0xBTjkzMDMmIzM0OywKICAgICYjMzQ7TkVUX0RTQV9UQUdfU0pBMTEwNSYjMzQ7LAogICAgJiMzNDtORVRfRFNBX1RBR19UUkFJTEVSJiMzNDssCiAgICAmIzM0O05FVF9EU0FfVEFHX1ZTQzczWFhfODAyMVEmIzM0OywKICAgICYjMzQ7TkVUX0RTQV9UQUdfWFJTNzAwWCYjMzQ7LAogICAgJiMzNDtORVRfRFNBX1RBR19ZVDkyMVgmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtkc2Ffc3dpdGNoX3JjdiYjMzQ7LAogICAgJiMzNDtkc2FfdXNlcl94bWl0JiMzNDssCiAgICAmIzM0O2FyOTMzMV90YWdfcmN2JiMzNDssCiAgICAmIzM0O2JyY21fdGFnX3htaXRfbGwmIzM0OywKICAgICYjMzQ7YnJjbV90YWdfcmN2X2xsJiMzNDssCiAgICAmIzM0O2RzYV9yY3ZfbGwmIzM0OywKICAgICYjMzQ7ZWRzYV9yY3YmIzM0OywKICAgICYjMzQ7a3N6X2NvbW1vbl9yY3YmIzM0OywKICAgICYjMzQ7b2NlbG90X3JjdiYjMzQ7LAogICAgJiMzNDtxY2FfdGFnX3JjdiYjMzQ7LAogICAgJiMzNDtzamExMTA1X3JjdiYjMzQ7LAogICAgJiMzNDt0cmFpbGVyX3JjdiYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCByZWZhY3RvcnMgc2tiIG1lbW9yeSBtYW5hZ2VtZW50IGluIHRoZSBEU0EgKERpc3RyaWJ1dGVkIFN3aXRjaCBBcmNoaXRlY3R1cmUpIHN1YnN5c3RlbS4gSXQgc2hpZnRzIHRoZSByZXNwb25zaWJpbGl0eSBvZiBmcmVlaW5nIHRoZSBza2Igb24gZXJyb3IgcGF0aHMgZnJvbSB0aGUgY29yZSBEU0EgZnVuY3Rpb25zIChkc2FfdXNlcl94bWl0LCBkc2Ffc3dpdGNoX3JjdikgdG8gdGhlIGluZGl2aWR1YWwgdGFnZ2VyIGRyaXZlcnMuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSB0aGF0IGNvdWxkIGludHJvZHVjZSBtZW1vcnkgbGVha3Mgb3IgZG91YmxlIGZyZWVzIGlmIGFueSBlcnJvciBwYXRoIGluIGEgdGFnZ2VyIGRyaXZlciBpcyBtaXNzZWQgb3IgbWlzaGFuZGxlZC4gVGhlIGNvZGUgaXMgcmVhY2hhYmxlIGluIGEgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQgYnkgdXNpbmcgdGhlIGRzYV9sb29wIG1vY2stdXAgc3dpdGNoIGRyaXZlciBhbmQgZHluYW1pY2FsbHkgY2hhbmdpbmcgdGhlIHRhZ2dpbmcgcHJvdG9jb2wgdmlhIHN5c2ZzLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmUKaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseQp1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLgoKUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczoKLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLgotIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLgotIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4KLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsCmV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLgogICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCiAgIERvIG5vdCBsaXN0IHRvbyBnZW5lcmljIGNvbmZpZ3MgKHdlIGFscmVhZHkgaGF2ZSB0aGVtIGVuYWJsZWQpLiBPbmx5IGxpc3QgdGhvc2UgdGhhdAogICBzcGVjaWZpY2FsbHkgY292ZXIgdGhlIG1vZGlmaWVkIGNvZGUuIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncyBvdXRwdXQgYXJyYXksCiAgIGFuZCBETyBOT1QgYWRkIGEgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCA2NzRlODk5ODM3N2NjNmYxN2NiMjlmZmM2NjU1ZjkyZmMzOWExOWY3CkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIFRodSBKdW4gMjUgMDg6Mjk6MDQgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9uZXQvZHNhL3RhZy5jIGIvbmV0L2RzYS90YWcuYwppbmRleCA3OWFkMTA1OTAyZDk3OC4uOTkxNzMyZDZlYWUyYzMgMTAwNjQ0Ci0tLSBhL25ldC9kc2EvdGFnLmMKJiM0MzsmIzQzOyYjNDM7IGIvbmV0L2RzYS90YWcuYwpAQCAtNzksMTUgJiM0Mzs3OSwxNiBAQCBzdGF0aWMgaW50IGRzYV9zd2l0Y2hfcmN2KHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsCiAJCWlmIChsaWtlbHkoc2tiLSZndDtkZXYpKSB7CiAJCQlkc2FfZGVmYXVsdF9vZmZsb2FkX2Z3ZF9tYXJrKHNrYik7CiAJCQluc2tiID0gc2tiOwomIzQzOwkJfSBlbHNlIHsKJiM0MzsJCQkvKiBKdXN0IGRyb3AgdGhlIHNrYiBpZiB3ZSBjYW4mIzM5O3QgZmluZCB0aGUgdXNlciAqLwomIzQzOwkJCWtmcmVlX3NrYihza2IpOwogCQl9CiAJfSBlbHNlIHsKIAkJbnNrYiA9IGNwdV9kcC0mZ3Q7cmN2KHNrYiwgZGV2KTsKIAl9CiAKLQlpZiAoIW5za2IpIHsKLQkJa2ZyZWVfc2tiKHNrYik7CiYjNDM7CWlmICghbnNrYikKIAkJcmV0dXJuIDA7Ci0JfQogCiAJc2tiID0gbnNrYjsKIAlza2JfcHVzaChza2IsIEVUSF9ITEVOKTsKQEAgLTEwNywxMSAmIzQzOzEwOCwxMCBAQCBzdGF0aWMgaW50IGRzYV9zd2l0Y2hfcmN2KHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsCiAKIAlpZiAodW5saWtlbHkoY3B1X2RwLSZndDtkcy0mZ3Q7dW50YWdfYnJpZGdlX3B2aWQgfHwKIAkJICAgICBjcHVfZHAtJmd0O2RzLSZndDt1bnRhZ192bGFuX2F3YXJlX2JyaWRnZV9wdmlkKSkgewomIzQzOwkJLyogZHNhX3NvZnR3YXJlX3ZsYW5fdW50YWcoKSBkcm9wcyBza2Igb24gZmFpbHVyZSAqLwogCQluc2tiID0gZHNhX3NvZnR3YXJlX3ZsYW5fdW50YWcoc2tiKTsKLQkJaWYgKCFuc2tiKSB7Ci0JCQlrZnJlZV9za2Ioc2tiKTsKJiM0MzsJCWlmICghbnNrYikKIAkJCXJldHVybiAwOwotCQl9CiAJCXNrYiA9IG5za2I7CiAJfQogCmRpZmYgLS1naXQgYS9uZXQvZHNhL3RhZ19hcjkzMzEuYyBiL25ldC9kc2EvdGFnX2FyOTMzMS5jCmluZGV4IGNiYjU4OGNhNzNhYWY1Li4yZTIzODgxNDNiMDI1MSAxMDA2NDQKLS0tIGEvbmV0L2RzYS90YWdfYXI5MzMxLmMKJiM0MzsmIzQzOyYjNDM7IGIvbmV0L2RzYS90YWdfYXI5MzMxLmMKQEAgLTUxLDggJiM0Mzs1MSwxMCBAQCBzdGF0aWMgc3RydWN0IHNrX2J1ZmYgKmFyOTMzMV90YWdfcmN2KHN0cnVjdCBza19idWZmICpza2IsCiAJdTggdmVyLCBwb3J0OwogCXUxNiBoZHI7CiAKLQlpZiAodW5saWtlbHkoIXBza2JfbWF5X3B1bGwoc2tiLCBBUjkzMzFfSERSX0xFTikpKQomIzQzOwlpZiAodW5saWtlbHkoIXBza2JfbWF5X3B1bGwoc2tiLCBBUjkzMzFfSERSX0xFTikpKSB7CiYjNDM7CQlrZnJlZV9za2Ioc2tiKTsKIAkJcmV0dXJuIE5VTEw7CiYjNDM7CX0KIAogCWhkciA9IGxlMTZfdG9fY3B1KCooX19sZTE2ICopc2tiX21hY19oZWFkZXIoc2tiKSk7CiAKQEAgLTYwLDEyICYjNDM7NjIsMTQgQEAgc3RhdGljIHN0cnVjdCBza19idWZmICphcjkzMzFfdGFnX3JjdihzdHJ1Y3Qgc2tfYnVmZiAqc2tiLAogCWlmICh1bmxpa2VseSh2ZXIgIT0gQVI5MzMxX0hEUl9WRVJTSU9OKSkgewogCQluZXRkZXZfd2Fybl9vbmNlKG5kZXYsICYjMzQ7JXM6JWkgd3JvbmcgaGVhZGVyIHZlcnNpb24gMHglMnhcbiYjMzQ7LAogCQkJCSBfX2Z1bmNfXywgX19MSU5FX18sIGhkcik7CiYjNDM7CQlrZnJlZV9za2Ioc2tiKTsKIAkJcmV0dXJuIE5VTEw7CiAJfQogCiAJaWYgKHVubGlrZWx5KGhkciAmYW1wOyBBUjkzMzFfSERSX0ZST01fQ1BVKSkgewogCQluZXRkZXZfd2Fybl9vbmNlKG5kZXYsICYjMzQ7JXM6JWkgcGFja2V0IHNob3VsZCBub3QgYmUgZnJvbSBjcHUgMHglMnhcbiYjMzQ7LAogCQkJCSBfX2Z1bmNfXywgX19MSU5FX18sIGhkcik7CiYjNDM7CQlrZnJlZV9za2Ioc2tiKTsKIAkJcmV0dXJuIE5VTEw7CiAJfQogCkBAIC03NSw4ICYjNDM7NzksMTAgQEAgc3RhdGljIHN0cnVjdCBza19idWZmICphcjkzMzFfdGFnX3JjdihzdHJ1Y3Qgc2tfYnVmZiAqc2tiLAogCXBvcnQgPSBGSUVMRF9HRVQoQVI5MzMxX0hEUl9QT1JUX05VTV9NQVNLLCBoZHIpOwogCiAJc2tiLSZndDtkZXYgPSBkc2FfY29uZHVpdF9maW5kX3VzZXIobmRldiwgMCwgcG9ydCk7Ci0JaWYgKCFza2ItJmd0O2RldikKJiM0MzsJaWYgKCFza2ItJmd0O2RldikgewomIzQzOwkJa2ZyZWVfc2tiKHNrYik7CiAJCXJldHVybiBOVUxMOwomIzQzOwl9CiAKIAlyZXR1cm4gc2tiOwogfQpkaWZmIC0tZ2l0IGEvbmV0L2RzYS90YWdfYnJjbS5jIGIvbmV0L2RzYS90YWdfYnJjbS5jCmluZGV4IGNmOTQyMDQzOTA1NDNmLi40MTFlM2I1N2QxNmFmNSAxMDA2NDQKLS0tIGEvbmV0L2RzYS90YWdfYnJjbS5jCiYjNDM7JiM0MzsmIzQzOyBiL25ldC9kc2EvdGFnX2JyY20uYwpAQCAtMTAyLDkgJiM0MzsxMDIsOSBAQCBzdGF0aWMgc3RydWN0IHNrX2J1ZmYgKmJyY21fdGFnX3htaXRfbGwoc3RydWN0IHNrX2J1ZmYgKnNrYiwKIAkgKiAoaW5jbHVkaW5nIEZDUyBhbmQgdGFnKSBiZWNhdXNlIHRoZSBsZW5ndGggdmVyaWZpY2F0aW9uIGlzIGRvbmUgYWZ0ZXIKIAkgKiB0aGUgQnJvYWRjb20gdGFnIGlzIHN0cmlwcGVkIG9mZiB0aGUgaW5ncmVzcyBwYWNrZXQuCiAJICoKLQkgKiBMZXQgZHNhX3VzZXJfeG1pdCgpIGZyZWUgdGhlIFNLQgomIzQzOwkgKiBGcmVlIHRoZSBTS0Igb24gZXJyb3IuCiAJICovCi0JaWYgKF9fc2tiX3B1dF9wYWR0byhza2IsIEVUSF9aTEVOICYjNDM7IEJSQ01fVEFHX0xFTiwgZmFsc2UpKQomIzQzOwlpZiAoc2tiX3B1dF9wYWR0byhza2IsIEVUSF9aTEVOICYjNDM7IEJSQ01fVEFHX0xFTikpCiAJCXJldHVybiBOVUxMOwogCiAJc2tiX3B1c2goc2tiLCBCUkNNX1RBR19MRU4pOwpAQCAtMTUxLDI3ICYjNDM7MTUxLDM1IEBAIHN0YXRpYyBzdHJ1Y3Qgc2tfYnVmZiAqYnJjbV90YWdfcmN2X2xsKHN0cnVjdCBza19idWZmICpza2IsCiAJaW50IHNvdXJjZV9wb3J0OwogCXU4ICpicmNtX3RhZzsKIAotCWlmICh1bmxpa2VseSghcHNrYl9tYXlfcHVsbChza2IsIEJSQ01fVEFHX0xFTikpKQomIzQzOwlpZiAodW5saWtlbHkoIXBza2JfbWF5X3B1bGwoc2tiLCBCUkNNX1RBR19MRU4pKSkgewomIzQzOwkJa2ZyZWVfc2tiKHNrYik7CiAJCXJldHVybiBOVUxMOwomIzQzOwl9CiAKIAlicmNtX3RhZyA9IHNrYi0mZ3Q7ZGF0YSAtIG9mZnNldDsKIAogCS8qIFRoZSBvcGNvZGUgc2hvdWxkIG5ldmVyIGJlIGRpZmZlcmVudCB0aGFuIDBiMDAwICovCi0JaWYgKHVubGlrZWx5KChicmNtX3RhZ1swXSAmZ3Q7Jmd0OyBCUkNNX09QQ09ERV9TSElGVCkgJmFtcDsgQlJDTV9PUENPREVfTUFTSykpCiYjNDM7CWlmICh1bmxpa2VseSgoYnJjbV90YWdbMF0gJmd0OyZndDsgQlJDTV9PUENPREVfU0hJRlQpICZhbXA7IEJSQ01fT1BDT0RFX01BU0spKSB7CiYjNDM7CQlrZnJlZV9za2Ioc2tiKTsKIAkJcmV0dXJuIE5VTEw7CiYjNDM7CX0KIAogCS8qIFdlIHNob3VsZCBuZXZlciBzZWUgYSByZXNlcnZlZCByZWFzb24gY29kZSB3aXRob3V0IGtub3dpbmcgaG93IHRvCiAJICogaGFuZGxlIGl0CiAJICovCi0JaWYgKHVubGlrZWx5KGJyY21fdGFnWzJdICZhbXA7IEJSQ01fRUdfUkNfUlNWRCkpCiYjNDM7CWlmICh1bmxpa2VseShicmNtX3RhZ1syXSAmYW1wOyBCUkNNX0VHX1JDX1JTVkQpKSB7CiYjNDM7CQlrZnJlZV9za2Ioc2tiKTsKIAkJcmV0dXJuIE5VTEw7CiYjNDM7CX0KIAogCS8qIExvY2F0ZSB3aGljaCBwb3J0IHRoaXMgaXMgY29taW5nIGZyb20gKi8KIAlzb3VyY2VfcG9ydCA9IGJyY21fdGFnWzNdICZhbXA7IEJSQ01fRUdfUElEX01BU0s7CiAKIAlza2ItJmd0O2RldiA9IGRzYV9jb25kdWl0X2ZpbmRfdXNlcihkZXYsIDAsIHNvdXJjZV9wb3J0KTsKLQlpZiAoIXNrYi0mZ3Q7ZGV2KQomIzQzOwlpZiAoIXNrYi0mZ3Q7ZGV2KSB7CiYjNDM7CQlrZnJlZV9za2Ioc2tiKTsKIAkJcmV0dXJuIE5VTEw7CiYjNDM7CX0KIAogCS8qIFJlbW92ZSBCcm9hZGNvbSB0YWcgYW5kIHVwZGF0ZSBjaGVja3N1bSAqLwogCXNrYl9wdWxsX3Jjc3VtKHNrYiwgQlJDTV9UQUdfTEVOKTsKQEAgLTIyOCw4ICYjNDM7MjM2LDEwIEBAIHN0YXRpYyBzdHJ1Y3Qgc2tfYnVmZiAqYnJjbV9sZWdfdGFnX3JjdihzdHJ1Y3Qgc2tfYnVmZiAqc2tiLAogCV9fYmUxNiAqcHJvdG87CiAJdTggKmJyY21fdGFnOwogCi0JaWYgKHVubGlrZWx5KCFwc2tiX21heV9wdWxsKHNrYiwgQlJDTV9MRUdfVEFHX0xFTiAmIzQzOyBWTEFOX0hMRU4pKSkKJiM0MzsJaWYgKHVubGlrZWx5KCFwc2tiX21heV9wdWxsKHNrYiwgQlJDTV9MRUdfVEFHX0xFTiAmIzQzOyBWTEFOX0hMRU4pKSkgewomIzQzOwkJa2ZyZWVfc2tiKHNrYik7CiAJCXJldHVybiBOVUxMOwomIzQzOwl9CiAKIAlicmNtX3RhZyA9IGRzYV9ldHlwZV9oZWFkZXJfcG9zX3J4KHNrYik7CiAJcHJvdG8gPSAoX19iZTE2ICopKGJyY21fdGFnICYjNDM7IEJSQ01fTEVHX1RBR19MRU4pOwpAQCAtMjM3LDggJiM0MzsyNDcsMTAgQEAgc3RhdGljIHN0cnVjdCBza19idWZmICpicmNtX2xlZ190YWdfcmN2KHN0cnVjdCBza19idWZmICpza2IsCiAJc291cmNlX3BvcnQgPSBicmNtX3RhZ1s1XSAmYW1wOyBCUkNNX0xFR19QT1JUX0lEOwogCiAJc2tiLSZndDtkZXYgPSBkc2FfY29uZHVpdF9maW5kX3VzZXIoZGV2LCAwLCBzb3VyY2VfcG9ydCk7Ci0JaWYgKCFza2ItJmd0O2RldikKJiM0MzsJaWYgKCFza2ItJmd0O2RldikgewomIzQzOwkJa2ZyZWVfc2tiKHNrYik7CiAJCXJldHVybiBOVUxMOwomIzQzOwl9CiAKIAkvKiBUaGUgaW50ZXJuYWwgc3dpdGNoIGluIEJDTTYzWFggU29DcyBhbHdheXMgdGFncyBvbiBlZ3Jlc3Mgb24gdGhlIENQVQogCSAqIHBvcnQuIFdlIHVzZSBWSUQgMCBpbnRlcm5hbGx5IGZvciB1bnRhZ2dlZCB0cmFmZmljLCBzbyBzdHJpcCB0aGUgdGFnCkBAIC0yNzMsMTAgJiM0MzsyODUsOCBAQCBzdGF0aWMgc3RydWN0IHNrX2J1ZmYgKmJyY21fbGVnX3RhZ194bWl0KHN0cnVjdCBza19idWZmICpza2IsCiAJICogbmVlZCB0byBtYWtlIHN1cmUgdGhhdCBwYWNrZXRzIGFyZSBhdCBsZWFzdCA3MCBieXRlcwogCSAqIChpbmNsdWRpbmcgRkNTIGFuZCB0YWcpIGJlY2F1c2UgdGhlIGxlbmd0aCB2ZXJpZmljYXRpb24gaXMgZG9uZSBhZnRlcgogCSAqIHRoZSBCcm9hZGNvbSB0YWcgaXMgc3RyaXBwZWQgb2ZmIHRoZSBpbmdyZXNzIHBhY2tldC4KLQkgKgotCSAqIExldCBkc2FfdXNlcl94bWl0KCkgZnJlZSB0aGUgU0tCCiAJICovCi0JaWYgKF9fc2tiX3B1dF9wYWR0byhza2IsIEVUSF9aTEVOICYjNDM7IEJSQ01fTEVHX1RBR19MRU4sIGZhbHNlKSkKJiM0MzsJaWYgKHNrYl9wdXRfcGFkdG8oc2tiLCBFVEhfWkxFTiAmIzQzOyBCUkNNX0xFR19UQUdfTEVOKSkKIAkJcmV0dXJuIE5VTEw7CiAKIAlza2JfcHVzaChza2IsIEJSQ01fTEVHX1RBR19MRU4pOwpAQCAtMzI1LDEwICYjNDM7MzM1LDggQEAgc3RhdGljIHN0cnVjdCBza19idWZmICpicmNtX2xlZ19mY3NfdGFnX3htaXQoc3RydWN0IHNrX2J1ZmYgKnNrYiwKIAkgKiBuZWVkIHRvIG1ha2Ugc3VyZSB0aGF0IHBhY2tldHMgYXJlIGF0IGxlYXN0IDcwIGJ5dGVzIChpbmNsdWRpbmcgRkNTCiAJICogYW5kIHRhZykgYmVjYXVzZSB0aGUgbGVuZ3RoIHZlcmlmaWNhdGlvbiBpcyBkb25lIGFmdGVyIHRoZSBCcm9hZGNvbQogCSAqIHRhZyBpcyBzdHJpcHBlZCBvZmYgdGhlIGluZ3Jlc3MgcGFja2V0LgotCSAqCi0JICogTGV0IGRzYV91c2VyX3htaXQoKSBmcmVlIHRoZSBTS0IuCiAJICovCi0JaWYgKF9fc2tiX3B1dF9wYWR0byhza2IsIEVUSF9aTEVOICYjNDM7IEJSQ01fTEVHX1RBR19MRU4sIGZhbHNlKSkKJiM0MzsJaWYgKHNrYl9wdXRfcGFkdG8oc2tiLCBFVEhfWkxFTiAmIzQzOyBCUkNNX0xFR19UQUdfTEVOKSkKIAkJcmV0dXJuIE5VTEw7CiAKIAlmY3NfbGVuID0gc2tiLSZndDtsZW47CkBAIC0zNTEsOCAmIzQzOzM1OSw5IEBAIHN0YXRpYyBzdHJ1Y3Qgc2tfYnVmZiAqYnJjbV9sZWdfZmNzX3RhZ194bWl0KHN0cnVjdCBza19idWZmICpza2IsCiAJYnJjbV90YWdbNV0gPSBkcC0mZ3Q7aW5kZXggJmFtcDsgQlJDTV9MRUdfUE9SVF9JRDsKIAogCS8qIE9yaWdpbmFsIEZDUyB2YWx1ZSAqLwotCWlmIChfX3NrYl9wYWQoc2tiLCBFVEhfRkNTX0xFTiwgZmFsc2UpKQomIzQzOwlpZiAoc2tiX3BhZChza2IsIEVUSF9GQ1NfTEVOKSkKIAkJcmV0dXJuIE5VTEw7CiYjNDM7CiAJc2tiX3B1dF9kYXRhKHNrYiwgJmFtcDtmY3NfdmFsLCBFVEhfRkNTX0xFTik7CiAKIAlyZXR1cm4gc2tiOwpkaWZmIC0tZ2l0IGEvbmV0L2RzYS90YWdfZHNhLmMgYi9uZXQvZHNhL3RhZ19kc2EuYwppbmRleCAyYTJjNGZiNjFhNjVjNi4uZDVmZmVlMzVmYmI1M2IgMTAwNjQ0Ci0tLSBhL25ldC9kc2EvdGFnX2RzYS5jCiYjNDM7JiM0MzsmIzQzOyBiL25ldC9kc2EvdGFnX2RzYS5jCkBAIC0yMjQsNiAmIzQzOzIyNCw3IEBAIHN0YXRpYyBzdHJ1Y3Qgc2tfYnVmZiAqZHNhX3Jjdl9sbChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LAogCQkJLyogUmVtb3RlIG1hbmFnZW1lbnQgaXMgbm90IGltcGxlbWVudGVkIHlldCwKIAkJCSAqIGRyb3AuCiAJCQkgKi8KJiM0MzsJCQlrZnJlZV9za2Ioc2tiKTsKIAkJCXJldHVybiBOVUxMOwogCQljYXNlIERTQV9DT0RFX0FSUF9NSVJST1I6CiAJCWNhc2UgRFNBX0NPREVfUE9MSUNZX01JUlJPUjoKQEAgLTI0NCwxMiAmIzQzOzI0NSwxNCBAQCBzdGF0aWMgc3RydWN0IHNrX2J1ZmYgKmRzYV9yY3ZfbGwoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IG5ldF9kZXZpY2UgKmRldiwKIAkJCS8qIFJlc2VydmVkIGNvZGUsIHRoaXMgY291bGQgYmUgYW55dGhpbmcuIERyb3AKIAkJCSAqIHNlZW1zIGxpa2UgdGhlIHNhZmVzdCBvcHRpb24uCiAJCQkgKi8KJiM0MzsJCQlrZnJlZV9za2Ioc2tiKTsKIAkJCXJldHVybiBOVUxMOwogCQl9CiAKIAkJYnJlYWs7CiAKIAlkZWZhdWx0OgomIzQzOwkJa2ZyZWVfc2tiKHNrYik7CiAJCXJldHVybiBOVUxMOwogCX0KIApAQCAtMjcxLDggJiM0MzsyNzQsMTAgQEAgc3RhdGljIHN0cnVjdCBza19idWZmICpkc2FfcmN2X2xsKHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsCiAJCQkJCQkgc291cmNlX3BvcnQpOwogCX0KIAotCWlmICghc2tiLSZndDtkZXYpCiYjNDM7CWlmICghc2tiLSZndDtkZXYpIHsKJiM0MzsJCWtmcmVlX3NrYihza2IpOwogCQlyZXR1cm4gTlVMTDsKJiM0MzsJfQogCiAJLyogV2hlbiB1c2luZyBMQUcgb2ZmbG9hZCwgc2tiLSZndDtkZXYgaXMgbm90IGEgRFNBIHVzZXIgaW50ZXJmYWNlLAogCSAqIHNvIHdlIGNhbm5vdCBjYWxsIGRzYV9kZWZhdWx0X29mZmxvYWRfZndkX21hcmsgYW5kIHdlIG5lZWQgdG8KQEAgLTMzNSw4ICYjNDM7MzQwLDEwIEBAIHN0YXRpYyBzdHJ1Y3Qgc2tfYnVmZiAqZHNhX3htaXQoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IG5ldF9kZXZpY2UgKmRldikKIAogc3RhdGljIHN0cnVjdCBza19idWZmICpkc2FfcmN2KHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpCiB7Ci0JaWYgKHVubGlrZWx5KCFwc2tiX21heV9wdWxsKHNrYiwgRFNBX0hMRU4pKSkKJiM0MzsJaWYgKHVubGlrZWx5KCFwc2tiX21heV9wdWxsKHNrYiwgRFNBX0hMRU4pKSkgewomIzQzOwkJa2ZyZWVfc2tiKHNrYik7CiAJCXJldHVybiBOVUxMOwomIzQzOwl9CiAKIAlyZXR1cm4gZHNhX3Jjdl9sbChza2IsIGRldiwgMCk7CiB9CkBAIC0zNzUsOCAmIzQzOzM4MiwxMCBAQCBzdGF0aWMgc3RydWN0IHNrX2J1ZmYgKmVkc2FfeG1pdChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KQogCiBzdGF0aWMgc3RydWN0IHNrX2J1ZmYgKmVkc2FfcmN2KHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpCiB7Ci0JaWYgKHVubGlrZWx5KCFwc2tiX21heV9wdWxsKHNrYiwgRURTQV9ITEVOKSkpCiYjNDM7CWlmICh1bmxpa2VseSghcHNrYl9tYXlfcHVsbChza2IsIEVEU0FfSExFTikpKSB7CiYjNDM7CQlrZnJlZV9za2Ioc2tiKTsKIAkJcmV0dXJuIE5VTEw7CiYjNDM7CX0KIAogCXNrYl9wdWxsX3Jjc3VtKHNrYiwgRURTQV9ITEVOIC0gRFNBX0hMRU4pOwogCmRpZmYgLS1naXQgYS9uZXQvZHNhL3RhZ19nc3dpcC5jIGIvbmV0L2RzYS90YWdfZ3N3aXAuYwppbmRleCA1ZmE0MzYxMjEwODdiNC4uNWM0MDdkNDQ4YzlmZWUgMTAwNjQ0Ci0tLSBhL25ldC9kc2EvdGFnX2dzd2lwLmMKJiM0MzsmIzQzOyYjNDM7IGIvbmV0L2RzYS90YWdfZ3N3aXAuYwpAQCAtODAsMTYgJiM0Mzs4MCwyMCBAQCBzdGF0aWMgc3RydWN0IHNrX2J1ZmYgKmdzd2lwX3RhZ19yY3Yoc3RydWN0IHNrX2J1ZmYgKnNrYiwKIAlpbnQgcG9ydDsKIAl1OCAqZ3N3aXBfdGFnOwogCi0JaWYgKHVubGlrZWx5KCFwc2tiX21heV9wdWxsKHNrYiwgR1NXSVBfUlhfSEVBREVSX0xFTikpKQomIzQzOwlpZiAodW5saWtlbHkoIXBza2JfbWF5X3B1bGwoc2tiLCBHU1dJUF9SWF9IRUFERVJfTEVOKSkpIHsKJiM0MzsJCWtmcmVlX3NrYihza2IpOwogCQlyZXR1cm4gTlVMTDsKJiM0MzsJfQogCiAJZ3N3aXBfdGFnID0gc2tiLSZndDtkYXRhIC0gRVRIX0hMRU47CiAKIAkvKiBHZXQgc291cmNlIHBvcnQgaW5mb3JtYXRpb24gKi8KIAlwb3J0ID0gKGdzd2lwX3RhZ1s3XSAmYW1wOyBHU1dJUF9SWF9TUFBJRF9NQVNLKSAmZ3Q7Jmd0OyBHU1dJUF9SWF9TUFBJRF9TSElGVDsKIAlza2ItJmd0O2RldiA9IGRzYV9jb25kdWl0X2ZpbmRfdXNlcihkZXYsIDAsIHBvcnQpOwotCWlmICghc2tiLSZndDtkZXYpCiYjNDM7CWlmICghc2tiLSZndDtkZXYpIHsKJiM0MzsJCWtmcmVlX3NrYihza2IpOwogCQlyZXR1cm4gTlVMTDsKJiM0MzsJfQogCiAJLyogcmVtb3ZlIEdTV0lQIHRhZyAqLwogCXNrYl9wdWxsX3Jjc3VtKHNrYiwgR1NXSVBfUlhfSEVBREVSX0xFTik7CmRpZmYgLS1naXQgYS9uZXQvZHNhL3RhZ19oZWxsY3JlZWsuYyBiL25ldC9kc2EvdGFnX2hlbGxjcmVlay5jCmluZGV4IDU0NGFiMTU2ODVhMmI4Li5kZDlmMzI4ZjMxODIxMCAxMDA2NDQKLS0tIGEvbmV0L2RzYS90YWdfaGVsbGNyZWVrLmMKJiM0MzsmIzQzOyYjNDM7IGIvbmV0L2RzYS90YWdfaGVsbGNyZWVrLmMKQEAgLTI3LDggJiM0MzsyNywxMCBAQCBzdGF0aWMgc3RydWN0IHNrX2J1ZmYgKmhlbGxjcmVla194bWl0KHN0cnVjdCBza19idWZmICpza2IsCiAJICogY2hlY2tzdW1zIGFmdGVyIHRoZSBzd2l0Y2ggc3RyaXBzIHRoZSB0YWcuCiAJICovCiAJaWYgKHNrYi0mZ3Q7aXBfc3VtbWVkID09IENIRUNLU1VNX1BBUlRJQUwgJmFtcDsmYW1wOwotCSAgICBza2JfY2hlY2tzdW1faGVscChza2IpKQomIzQzOwkgICAgc2tiX2NoZWNrc3VtX2hlbHAoc2tiKSkgewomIzQzOwkJa2ZyZWVfc2tiKHNrYik7CiAJCXJldHVybiBOVUxMOwomIzQzOwl9CiAKIAkvKiBUYWcgZW5jb2RpbmcgKi8KIAl0YWcgID0gc2tiX3B1dChza2IsIEhFTExDUkVFS19UQUdfTEVOKTsKQEAgLTQ3LDExICYjNDM7NDksMTQgQEAgc3RhdGljIHN0cnVjdCBza19idWZmICpoZWxsY3JlZWtfcmN2KHN0cnVjdCBza19idWZmICpza2IsCiAJc2tiLSZndDtkZXYgPSBkc2FfY29uZHVpdF9maW5kX3VzZXIoZGV2LCAwLCBwb3J0KTsKIAlpZiAoIXNrYi0mZ3Q7ZGV2KSB7CiAJCW5ldGRldl93YXJuX29uY2UoZGV2LCAmIzM0O0ZhaWxlZCB0byBnZXQgc291cmNlIHBvcnQ6ICVkXG4mIzM0OywgcG9ydCk7CiYjNDM7CQlrZnJlZV9za2Ioc2tiKTsKIAkJcmV0dXJuIE5VTEw7CiAJfQogCi0JaWYgKHBza2JfdHJpbV9yY3N1bShza2IsIHNrYi0mZ3Q7bGVuIC0gSEVMTENSRUVLX1RBR19MRU4pKQomIzQzOwlpZiAocHNrYl90cmltX3Jjc3VtKHNrYiwgc2tiLSZndDtsZW4gLSBIRUxMQ1JFRUtfVEFHX0xFTikpIHsKJiM0MzsJCWtmcmVlX3NrYihza2IpOwogCQlyZXR1cm4gTlVMTDsKJiM0MzsJfQogCiAJZHNhX2RlZmF1bHRfb2ZmbG9hZF9md2RfbWFyayhza2IpOwogCmRpZmYgLS1naXQgYS9uZXQvZHNhL3RhZ19rc3ouYyBiL25ldC9kc2EvdGFnX2tzei5jCmluZGV4IGQyNDc1YzNiYmI3ZDIyLi42N2ZhODlmMTAyZTA3MCAxMDA2NDQKLS0tIGEvbmV0L2RzYS90YWdfa3N6LmMKJiM0MzsmIzQzOyYjNDM7IGIvbmV0L2RzYS90YWdfa3N6LmMKQEAgLTg4LDExICYjNDM7ODgsMTUgQEAgc3RhdGljIHN0cnVjdCBza19idWZmICprc3pfY29tbW9uX3JjdihzdHJ1Y3Qgc2tfYnVmZiAqc2tiLAogCQkJCSAgICAgIHVuc2lnbmVkIGludCBwb3J0LCB1bnNpZ25lZCBpbnQgbGVuKQogewogCXNrYi0mZ3Q7ZGV2ID0gZHNhX2NvbmR1aXRfZmluZF91c2VyKGRldiwgMCwgcG9ydCk7Ci0JaWYgKCFza2ItJmd0O2RldikKJiM0MzsJaWYgKCFza2ItJmd0O2RldikgewomIzQzOwkJa2ZyZWVfc2tiKHNrYik7CiAJCXJldHVybiBOVUxMOwomIzQzOwl9CiAKLQlpZiAocHNrYl90cmltX3Jjc3VtKHNrYiwgc2tiLSZndDtsZW4gLSBsZW4pKQomIzQzOwlpZiAocHNrYl90cmltX3Jjc3VtKHNrYiwgc2tiLSZndDtsZW4gLSBsZW4pKSB7CiYjNDM7CQlrZnJlZV9za2Ioc2tiKTsKIAkJcmV0dXJuIE5VTEw7CiYjNDM7CX0KIAogCWRzYV9kZWZhdWx0X29mZmxvYWRfZndkX21hcmsoc2tiKTsKIApAQCAtMTIzLDggJiM0MzsxMjcsMTAgQEAgc3RhdGljIHN0cnVjdCBza19idWZmICprc3o4Nzk1X3htaXQoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IG5ldF9kZXZpY2UgKmRldikKIAlzdHJ1Y3QgZXRoaGRyICpoZHI7CiAJdTggKnRhZzsKIAotCWlmIChza2ItJmd0O2lwX3N1bW1lZCA9PSBDSEVDS1NVTV9QQVJUSUFMICZhbXA7JmFtcDsgc2tiX2NoZWNrc3VtX2hlbHAoc2tiKSkKJiM0MzsJaWYgKHNrYi0mZ3Q7aXBfc3VtbWVkID09IENIRUNLU1VNX1BBUlRJQUwgJmFtcDsmYW1wOyBza2JfY2hlY2tzdW1faGVscChza2IpKSB7CiYjNDM7CQlrZnJlZV9za2Ioc2tiKTsKIAkJcmV0dXJuIE5VTEw7CiYjNDM7CX0KIAogCS8qIFRhZyBlbmNvZGluZyAqLwogCXRhZyA9IHNrYl9wdXQoc2tiLCBLU1pfSU5HUkVTU19UQUdfTEVOKTsKQEAgLTE0MSw4ICYjNDM7MTQ3LDEwIEBAIHN0YXRpYyBzdHJ1Y3Qgc2tfYnVmZiAqa3N6ODc5NV9yY3Yoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IG5ldF9kZXZpY2UgKmRldikKIHsKIAl1OCAqdGFnOwogCi0JaWYgKHNrYl9saW5lYXJpemUoc2tiKSkKJiM0MzsJaWYgKHNrYl9saW5lYXJpemUoc2tiKSkgewomIzQzOwkJa2ZyZWVfc2tiKHNrYik7CiAJCXJldHVybiBOVUxMOwomIzQzOwl9CiAKIAl0YWcgPSBza2JfdGFpbF9wb2ludGVyKHNrYikgLSBLU1pfRUdSRVNTX1RBR19MRU47CiAKQEAgLTI1NSwyMiAmIzQzOzI2MywyNCBAQCBzdGF0aWMgc3RydWN0IHNrX2J1ZmYgKmtzel9kZWZlcl94bWl0KHN0cnVjdCBkc2FfcG9ydCAqZHAsIHN0cnVjdCBza19idWZmICpza2IpCiAJeG1pdF93b3JrX2ZuID0gdGFnZ2VyX2RhdGEtJmd0O3htaXRfd29ya19mbjsKIAl4bWl0X3dvcmtlciA9IHByaXYtJmd0O3htaXRfd29ya2VyOwogCi0JaWYgKCF4bWl0X3dvcmtfZm4gfHwgIXhtaXRfd29ya2VyKQomIzQzOwlpZiAoIXhtaXRfd29ya19mbiB8fCAheG1pdF93b3JrZXIpIHsKJiM0MzsJCWtmcmVlX3NrYihza2IpOwogCQlyZXR1cm4gTlVMTDsKJiM0MzsJfQogCiAJeG1pdF93b3JrID0ga3phbGxvY19vYmooKnhtaXRfd29yaywgR0ZQX0FUT01JQyk7Ci0JaWYgKCF4bWl0X3dvcmspCiYjNDM7CWlmICgheG1pdF93b3JrKSB7CiYjNDM7CQlrZnJlZV9za2Ioc2tiKTsKIAkJcmV0dXJuIE5VTEw7CiYjNDM7CX0KIAogCWt0aHJlYWRfaW5pdF93b3JrKCZhbXA7eG1pdF93b3JrLSZndDt3b3JrLCB4bWl0X3dvcmtfZm4pOwotCS8qIEluY3JlYXNlIHJlZmNvdW50IHNvIHRoZSBrZnJlZV9za2IgaW4gZHNhX3VzZXJfeG1pdAotCSAqIHdvbiYjMzk7dCByZWFsbHkgZnJlZSB0aGUgcGFja2V0LgotCSAqLwogCXhtaXRfd29yay0mZ3Q7ZHAgPSBkcDsKIAl4bWl0X3dvcmstJmd0O3NrYiA9IHNrYl9nZXQoc2tiKTsKIAogCWt0aHJlYWRfcXVldWVfd29yayh4bWl0X3dvcmtlciwgJmFtcDt4bWl0X3dvcmstJmd0O3dvcmspOwogCiYjNDM7CWtmcmVlX3NrYihza2IpOwogCXJldHVybiBOVUxMOwogfQogCkBAIC0yODQsOCAmIzQzOzI5NCwxMCBAQCBzdGF0aWMgc3RydWN0IHNrX2J1ZmYgKmtzejk0NzdfeG1pdChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLAogCV9fYmUxNiAqdGFnOwogCXUxNiB2YWw7CiAKLQlpZiAoc2tiLSZndDtpcF9zdW1tZWQgPT0gQ0hFQ0tTVU1fUEFSVElBTCAmYW1wOyZhbXA7IHNrYl9jaGVja3N1bV9oZWxwKHNrYikpCiYjNDM7CWlmIChza2ItJmd0O2lwX3N1bW1lZCA9PSBDSEVDS1NVTV9QQVJUSUFMICZhbXA7JmFtcDsgc2tiX2NoZWNrc3VtX2hlbHAoc2tiKSkgewomIzQzOwkJa2ZyZWVfc2tiKHNrYik7CiAJCXJldHVybiBOVUxMOwomIzQzOwl9CiAKIAkvKiBUYWcgZW5jb2RpbmcgKi8KIAlrc3pfeG1pdF90aW1lc3RhbXAoZHAsIHNrYik7CkBAIC0zMTAsOCAmIzQzOzMyMiwxMCBAQCBzdGF0aWMgc3RydWN0IHNrX2J1ZmYgKmtzejk0NzdfcmN2KHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpCiAJdW5zaWduZWQgaW50IHBvcnQ7CiAJdTggKnRhZzsKIAotCWlmIChza2JfbGluZWFyaXplKHNrYikpCiYjNDM7CWlmIChza2JfbGluZWFyaXplKHNrYikpIHsKJiM0MzsJCWtmcmVlX3NrYihza2IpOwogCQlyZXR1cm4gTlVMTDsKJiM0MzsJfQogCiAJLyogVGFnIGRlY29kaW5nICovCiAJdGFnID0gc2tiX3RhaWxfcG9pbnRlcihza2IpIC0gS1NaX0VHUkVTU19UQUdfTEVOOwpAQCAtMzUyLDggJiM0MzszNjYsMTAgQEAgc3RhdGljIHN0cnVjdCBza19idWZmICprc3o5ODkzX3htaXQoc3RydWN0IHNrX2J1ZmYgKnNrYiwKIAlzdHJ1Y3QgZXRoaGRyICpoZHI7CiAJdTggKnRhZzsKIAotCWlmIChza2ItJmd0O2lwX3N1bW1lZCA9PSBDSEVDS1NVTV9QQVJUSUFMICZhbXA7JmFtcDsgc2tiX2NoZWNrc3VtX2hlbHAoc2tiKSkKJiM0MzsJaWYgKHNrYi0mZ3Q7aXBfc3VtbWVkID09IENIRUNLU1VNX1BBUlRJQUwgJmFtcDsmYW1wOyBza2JfY2hlY2tzdW1faGVscChza2IpKSB7CiYjNDM7CQlrZnJlZV9za2Ioc2tiKTsKIAkJcmV0dXJuIE5VTEw7CiYjNDM7CX0KIAogCS8qIFRhZyBlbmNvZGluZyAqLwogCWtzel94bWl0X3RpbWVzdGFtcChkcCwgc2tiKTsKQEAgLTQxOCw4ICYjNDM7NDM0LDEwIEBAIHN0YXRpYyBzdHJ1Y3Qgc2tfYnVmZiAqbGFuOTM3eF94bWl0KHN0cnVjdCBza19idWZmICpza2IsCiAJX19iZTE2ICp0YWc7CiAJdTE2IHZhbDsKIAotCWlmIChza2ItJmd0O2lwX3N1bW1lZCA9PSBDSEVDS1NVTV9QQVJUSUFMICZhbXA7JmFtcDsgc2tiX2NoZWNrc3VtX2hlbHAoc2tiKSkKJiM0MzsJaWYgKHNrYi0mZ3Q7aXBfc3VtbWVkID09IENIRUNLU1VNX1BBUlRJQUwgJmFtcDsmYW1wOyBza2JfY2hlY2tzdW1faGVscChza2IpKSB7CiYjNDM7CQlrZnJlZV9za2Ioc2tiKTsKIAkJcmV0dXJuIE5VTEw7CiYjNDM7CX0KIAogCWtzel94bWl0X3RpbWVzdGFtcChkcCwgc2tiKTsKIApkaWZmIC0tZ2l0IGEvbmV0L2RzYS90YWdfbGFuOTMwMy5jIGIvbmV0L2RzYS90YWdfbGFuOTMwMy5jCmluZGV4IDI1OGU1ZDdkYzVlZjg0Li5kMTE5NDY5NjQ5OWFiOCAxMDA2NDQKLS0tIGEvbmV0L2RzYS90YWdfbGFuOTMwMy5jCiYjNDM7JiM0MzsmIzQzOyBiL25ldC9kc2EvdGFnX2xhbjkzMDMuYwpAQCAtODUsNiAmIzQzOzg1LDcgQEAgc3RhdGljIHN0cnVjdCBza19idWZmICpsYW45MzAzX3JjdihzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KQogCWlmICh1bmxpa2VseSghcHNrYl9tYXlfcHVsbChza2IsIExBTjkzMDNfVEFHX0xFTikpKSB7CiAJCWRldl93YXJuX3JhdGVsaW1pdGVkKCZhbXA7ZGV2LSZndDtkZXYsCiAJCQkJICAgICAmIzM0O0Ryb3BwaW5nIHBhY2tldCwgY2Fubm90IHB1bGxcbiYjMzQ7KTsKJiM0MzsJCWtmcmVlX3NrYihza2IpOwogCQlyZXR1cm4gTlVMTDsKIAl9CiAKQEAgLTEwMiw2ICYjNDM7MTAzLDcgQEAgc3RhdGljIHN0cnVjdCBza19idWZmICpsYW45MzAzX3JjdihzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KQogCXNrYi0mZ3Q7ZGV2ID0gZHNhX2NvbmR1aXRfZmluZF91c2VyKGRldiwgMCwgc291cmNlX3BvcnQpOwogCWlmICghc2tiLSZndDtkZXYpIHsKIAkJZGV2X3dhcm5fcmF0ZWxpbWl0ZWQoJmFtcDtkZXYtJmd0O2RldiwgJiMzNDtEcm9wcGluZyBwYWNrZXQgZHVlIHRvIGludmFsaWQgc291cmNlIHBvcnRcbiYjMzQ7KTsKJiM0MzsJCWtmcmVlX3NrYihza2IpOwogCQlyZXR1cm4gTlVMTDsKIAl9CiAKZGlmZiAtLWdpdCBhL25ldC9kc2EvdGFnX210ay5jIGIvbmV0L2RzYS90YWdfbXRrLmMKaW5kZXggZGVhM2VlY2FmMDkzZGYuLmM3ZGM3NzMxNjc1ZWMwIDEwMDY0NAotLS0gYS9uZXQvZHNhL3RhZ19tdGsuYwomIzQzOyYjNDM7JiM0MzsgYi9uZXQvZHNhL3RhZ19tdGsuYwpAQCAtNzIsOCAmIzQzOzcyLDEwIEBAIHN0YXRpYyBzdHJ1Y3Qgc2tfYnVmZiAqbXRrX3RhZ19yY3Yoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IG5ldF9kZXZpY2UgKmRldikKIAlpbnQgcG9ydDsKIAlfX2JlMTYgKnBoZHI7CiAKLQlpZiAodW5saWtlbHkoIXBza2JfbWF5X3B1bGwoc2tiLCBNVEtfSERSX0xFTikpKQomIzQzOwlpZiAodW5saWtlbHkoIXBza2JfbWF5X3B1bGwoc2tiLCBNVEtfSERSX0xFTikpKSB7CiYjNDM7CQlrZnJlZV9za2Ioc2tiKTsKIAkJcmV0dXJuIE5VTEw7CiYjNDM7CX0KIAogCXBoZHIgPSBkc2FfZXR5cGVfaGVhZGVyX3Bvc19yeChza2IpOwogCWhkciA9IG50b2hzKCpwaGRyKTsKQEAgLTg3LDggJiM0Mzs4OSwxMCBAQCBzdGF0aWMgc3RydWN0IHNrX2J1ZmYgKm10a190YWdfcmN2KHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpCiAJcG9ydCA9IChoZHIgJmFtcDsgTVRLX0hEUl9SRUNWX1NPVVJDRV9QT1JUX01BU0spOwogCiAJc2tiLSZndDtkZXYgPSBkc2FfY29uZHVpdF9maW5kX3VzZXIoZGV2LCAwLCBwb3J0KTsKLQlpZiAoIXNrYi0mZ3Q7ZGV2KQomIzQzOwlpZiAoIXNrYi0mZ3Q7ZGV2KSB7CiYjNDM7CQlrZnJlZV9za2Ioc2tiKTsKIAkJcmV0dXJuIE5VTEw7CiYjNDM7CX0KIAogCWRzYV9kZWZhdWx0X29mZmxvYWRfZndkX21hcmsoc2tiKTsKIApkaWZmIC0tZ2l0IGEvbmV0L2RzYS90YWdfbXhsLWdzdzF4eC5jIGIvbmV0L2RzYS90YWdfbXhsLWdzdzF4eC5jCmluZGV4IDYwZjdjNDQ1ZTY1NjEwLi40YjFiNmVmOTQxOTYzNCAxMDA2NDQKLS0tIGEvbmV0L2RzYS90YWdfbXhsLWdzdzF4eC5jCiYjNDM7JiM0MzsmIzQzOyBiL25ldC9kc2EvdGFnX214bC1nc3cxeHguYwpAQCAtNzMsNiAmIzQzOzczLDcgQEAgc3RhdGljIHN0cnVjdCBza19idWZmICpnc3cxeHhfdGFnX3JjdihzdHJ1Y3Qgc2tfYnVmZiAqc2tiLAogCiAJaWYgKHVubGlrZWx5KCFwc2tiX21heV9wdWxsKHNrYiwgR1NXMVhYX0hFQURFUl9MRU4pKSkgewogCQlkZXZfd2Fybl9yYXRlbGltaXRlZCgmYW1wO2Rldi0mZ3Q7ZGV2LCAmIzM0O0Ryb3BwaW5nIHBhY2tldCwgY2Fubm90IHB1bGwgU0tCXG4mIzM0Oyk7CiYjNDM7CQlrZnJlZV9za2Ioc2tiKTsKIAkJcmV0dXJuIE5VTEw7CiAJfQogCkBAIC04MSw2ICYjNDM7ODIsNyBAQCBzdGF0aWMgc3RydWN0IHNrX2J1ZmYgKmdzdzF4eF90YWdfcmN2KHN0cnVjdCBza19idWZmICpza2IsCiAJaWYgKHVubGlrZWx5KG50b2hzKGdzdzF4eF90YWdbMF0pICE9IEVUSF9QX01YTEdTVykpIHsKIAkJZGV2X3dhcm5fcmF0ZWxpbWl0ZWQoJmFtcDtkZXYtJmd0O2RldiwgJiMzNDtEcm9wcGluZyBwYWNrZXQgZHVlIHRvIGludmFsaWQgc3BlY2lhbCB0YWdcbiYjMzQ7KTsKIAkJZGV2X3dhcm5fcmF0ZWxpbWl0ZWQoJmFtcDtkZXYtJmd0O2RldiwgJiMzNDtUYWc6ICU4cGhcbiYjMzQ7LCBnc3cxeHhfdGFnKTsKJiM0MzsJCWtmcmVlX3NrYihza2IpOwogCQlyZXR1cm4gTlVMTDsKIAl9CiAKQEAgLTkwLDYgJiM0Mzs5Miw3IEBAIHN0YXRpYyBzdHJ1Y3Qgc2tfYnVmZiAqZ3N3MXh4X3RhZ19yY3Yoc3RydWN0IHNrX2J1ZmYgKnNrYiwKIAlpZiAoIXNrYi0mZ3Q7ZGV2KSB7CiAJCWRldl93YXJuX3JhdGVsaW1pdGVkKCZhbXA7ZGV2LSZndDtkZXYsICYjMzQ7RHJvcHBpbmcgcGFja2V0IGR1ZSB0byBpbnZhbGlkIHNvdXJjZSBwb3J0XG4mIzM0Oyk7CiAJCWRldl93YXJuX3JhdGVsaW1pdGVkKCZhbXA7ZGV2LSZndDtkZXYsICYjMzQ7VGFnOiAlOHBoXG4mIzM0OywgZ3N3MXh4X3RhZyk7CiYjNDM7CQlrZnJlZV9za2Ioc2tiKTsKIAkJcmV0dXJuIE5VTEw7CiAJfQogCmRpZmYgLS1naXQgYS9uZXQvZHNhL3RhZ19teGw4NjJ4eC5jIGIvbmV0L2RzYS90YWdfbXhsODYyeHguYwppbmRleCA4ZGFlZmViOGQ0OWRmYS4uODdiODBkZGYwOTQ2MzIgMTAwNjQ0Ci0tLSBhL25ldC9kc2EvdGFnX214bDg2Mnh4LmMKJiM0MzsmIzQzOyYjNDM7IGIvbmV0L2RzYS90YWdfbXhsODYyeHguYwpAQCAtNjQsNiAmIzQzOzY0LDcgQEAgc3RhdGljIHN0cnVjdCBza19idWZmICpteGw4NjJfdGFnX3JjdihzdHJ1Y3Qgc2tfYnVmZiAqc2tiLAogCiAJaWYgKHVubGlrZWx5KCFwc2tiX21heV9wdWxsKHNrYiwgTVhMODYyX0hFQURFUl9MRU4pKSkgewogCQlkZXZfd2Fybl9yYXRlbGltaXRlZCgmYW1wO2Rldi0mZ3Q7ZGV2LCAmIzM0O0Nhbm5vdCBwdWxsIFNLQiwgcGFja2V0IGRyb3BwZWRcbiYjMzQ7KTsKJiM0MzsJCWtmcmVlX3NrYihza2IpOwogCQlyZXR1cm4gTlVMTDsKIAl9CiAKQEAgLTczLDYgJiM0Mzs3NCw3IEBAIHN0YXRpYyBzdHJ1Y3Qgc2tfYnVmZiAqbXhsODYyX3RhZ19yY3Yoc3RydWN0IHNrX2J1ZmYgKnNrYiwKIAkJZGV2X3dhcm5fcmF0ZWxpbWl0ZWQoJmFtcDtkZXYtJmd0O2RldiwKIAkJCQkgICAgICYjMzQ7SW52YWxpZCBzcGVjaWFsIHRhZyBtYXJrZXIsIHBhY2tldCBkcm9wcGVkLCB0YWc6ICU4cGhcbiYjMzQ7LAogCQkJCSAgICAgbXhsODYyX3RhZyk7CiYjNDM7CQlrZnJlZV9za2Ioc2tiKTsKIAkJcmV0dXJuIE5VTEw7CiAJfQogCkBAIC04Myw2ICYjNDM7ODUsNyBAQCBzdGF0aWMgc3RydWN0IHNrX2J1ZmYgKm14bDg2Ml90YWdfcmN2KHN0cnVjdCBza19idWZmICpza2IsCiAJCWRldl93YXJuX3JhdGVsaW1pdGVkKCZhbXA7ZGV2LSZndDtkZXYsCiAJCQkJICAgICAmIzM0O0ludmFsaWQgc291cmNlIHBvcnQsIHBhY2tldCBkcm9wcGVkLCB0YWc6ICU4cGhcbiYjMzQ7LAogCQkJCSAgICAgbXhsODYyX3RhZyk7CiYjNDM7CQlrZnJlZV9za2Ioc2tiKTsKIAkJcmV0dXJuIE5VTEw7CiAJfQogCmRpZmYgLS1naXQgYS9uZXQvZHNhL3RhZ19uZXRjLmMgYi9uZXQvZHNhL3RhZ19uZXRjLmMKaW5kZXggY2NlZGZlM2E4MGI2NGQuLmRmNzJhNjE3OTZhZDVmIDEwMDY0NAotLS0gYS9uZXQvZHNhL3RhZ19uZXRjLmMKJiM0MzsmIzQzOyYjNDM7IGIvbmV0L2RzYS90YWdfbmV0Yy5jCkBAIC0xMzEsMTQgJiM0MzsxMzEsMTMgQEAgc3RhdGljIHN0cnVjdCBza19idWZmICpuZXRjX3JjdihzdHJ1Y3Qgc2tfYnVmZiAqc2tiLAogCWludCB0eXBlLCBzdWJ0eXBlOwogCiAJaWYgKHVubGlrZWx5KCFwc2tiX21heV9wdWxsKHNrYiwgTkVUQ19UQUdfTUFYX0xFTikpKQotCQlyZXR1cm4gTlVMTDsKJiM0MzsJCWdvdG8gZXJyX2ZyZWVfc2tiOwogCiAJdGFnX2NtbiA9IGRzYV9ldHlwZV9oZWFkZXJfcG9zX3J4KHNrYik7CiAJaWYgKG50b2hzKHRhZ19jbW4tJmd0O3RwaWQpICE9IEVUSF9QX05YUF9ORVRDKSB7CiAJCWRldl93YXJuX3JhdGVsaW1pdGVkKCZhbXA7bmRldi0mZ3Q7ZGV2LCAmIzM0O1Vua25vd24gVFBJRCAweCUwNHhcbiYjMzQ7LAogCQkJCSAgICAgbnRvaHModGFnX2Ntbi0mZ3Q7dHBpZCkpOwotCi0JCXJldHVybiBOVUxMOwomIzQzOwkJZ290byBlcnJfZnJlZV9za2I7CiAJfQogCiAJaWYgKHRhZ19jbW4tJmd0O3FvcyAmYW1wOyBORVRDX1RBR19RVikKQEAgLTE0OSwxNCAmIzQzOzE0OCwxMyBAQCBzdGF0aWMgc3RydWN0IHNrX2J1ZmYgKm5ldGNfcmN2KHN0cnVjdCBza19idWZmICpza2IsCiAJaWYgKCFzd19pZCkgewogCQlkZXZfd2Fybl9yYXRlbGltaXRlZCgmYW1wO25kZXYtJmd0O2RldiwKIAkJCQkgICAgICYjMzQ7VkVQQSBzd2l0Y2ggSUQgaXMgbm90IHN1cHBvcnRlZCB5ZXRcbiYjMzQ7KTsKLQotCQlyZXR1cm4gTlVMTDsKJiM0MzsJCWdvdG8gZXJyX2ZyZWVfc2tiOwogCX0KIAogCXBvcnQgPSBGSUVMRF9HRVQoTkVUQ19UQUdfUE9SVCwgdGFnX2Ntbi0mZ3Q7c3dpdGNoX3BvcnQpOwogCXNrYi0mZ3Q7ZGV2ID0gZHNhX2NvbmR1aXRfZmluZF91c2VyKG5kZXYsIHN3X2lkLCBwb3J0KTsKIAlpZiAoIXNrYi0mZ3Q7ZGV2KQotCQlyZXR1cm4gTlVMTDsKJiM0MzsJCWdvdG8gZXJyX2ZyZWVfc2tiOwogCiAJdHlwZSA9IEZJRUxEX0dFVChORVRDX1RBR19UWVBFLCB0YWdfY21uLSZndDt0eXBlKTsKIAlzdWJ0eXBlID0gRklFTERfR0VUKE5FVENfVEFHX1NVQlRZUEUsIHRhZ19jbW4tJmd0O3R5cGUpOwpAQCAtMTY1LDExICYjNDM7MTYzLDExIEBAIHN0YXRpYyBzdHJ1Y3Qgc2tfYnVmZiAqbmV0Y19yY3Yoc3RydWN0IHNrX2J1ZmYgKnNrYiwKIAl9IGVsc2UgaWYgKHR5cGUgPT0gTkVUQ19UQUdfVE9fSE9TVCkgewogCQkvKiBDdXJyZW50bHkgb25seSBzdWJ0eXBlMCBzdXBwb3J0ZWQgKi8KIAkJaWYgKHN1YnR5cGUgIT0gTkVUQ19UQUdfVEhfU1VCVFlQRTApCi0JCQlyZXR1cm4gTlVMTDsKJiM0MzsJCQlnb3RvIGVycl9mcmVlX3NrYjsKIAl9IGVsc2UgewogCQlkZXZfd2Fybl9yYXRlbGltaXRlZCgmYW1wO25kZXYtJmd0O2RldiwKIAkJCQkgICAgICYjMzQ7VW5leHBlY3RlZCAgdGFnIHR5cGUgJWRcbiYjMzQ7LCB0eXBlKTsKLQkJcmV0dXJuIE5VTEw7CiYjNDM7CQlnb3RvIGVycl9mcmVlX3NrYjsKIAl9CiAKIAkvKiBSZW1vdmUgU3dpdGNoIHRhZyBmcm9tIHRoZSBmcmFtZSAqLwpAQCAtMTc4LDYgJiM0MzsxNzYsMTAgQEAgc3RhdGljIHN0cnVjdCBza19idWZmICpuZXRjX3JjdihzdHJ1Y3Qgc2tfYnVmZiAqc2tiLAogCWRzYV9zdHJpcF9ldHlwZV9oZWFkZXIoc2tiLCB0YWdfbGVuKTsKIAogCXJldHVybiBza2I7CiYjNDM7CiYjNDM7ZXJyX2ZyZWVfc2tiOgomIzQzOwlrZnJlZV9za2Ioc2tiKTsKJiM0MzsJcmV0dXJuIE5VTEw7CiB9CiAKIHN0YXRpYyB2b2lkIG5ldGNfZmxvd19kaXNzZWN0KGNvbnN0IHN0cnVjdCBza19idWZmICpza2IsIF9fYmUxNiAqcHJvdG8sCmRpZmYgLS1naXQgYS9uZXQvZHNhL3RhZ19vY2Vsb3QuYyBiL25ldC9kc2EvdGFnX29jZWxvdC5jCmluZGV4IDM0MDVkZWY3OWMyZGVmLi5kMjA4YzczMjJjZDYyNiAxMDA2NDQKLS0tIGEvbmV0L2RzYS90YWdfb2NlbG90LmMKJiM0MzsmIzQzOyYjNDM7IGIvbmV0L2RzYS90YWdfb2NlbG90LmMKQEAgLTEwNywxNCAmIzQzOzEwNywxNiBAQCBzdGF0aWMgc3RydWN0IHNrX2J1ZmYgKm9jZWxvdF9yY3Yoc3RydWN0IHNrX2J1ZmYgKnNrYiwKIAlvY2Vsb3RfeGZoX2dldF9yZXdfdmFsKGV4dHJhY3Rpb24sICZhbXA7cmV3X3ZhbCk7CiAKIAlza2ItJmd0O2RldiA9IGRzYV9jb25kdWl0X2ZpbmRfdXNlcihuZXRkZXYsIDAsIHNyY19wb3J0KTsKLQlpZiAoIXNrYi0mZ3Q7ZGV2KQomIzQzOwlpZiAoIXNrYi0mZ3Q7ZGV2KSB7CiAJCS8qIFRoZSBzd2l0Y2ggd2lsbCByZWZsZWN0IGJhY2sgc29tZSBmcmFtZXMgc2VudCB0aHJvdWdoCiAJCSAqIHNvY2tldHMgb3BlbmVkIG9uIHRoZSBiYXJlIERTQSBjb25kdWl0LiBUaGVzZSB3aWxsIGNvbWUgYmFjawogCQkgKiB3aXRoIHNyY19wb3J0IGVxdWFsIHRvIHRoZSBpbmRleCBvZiB0aGUgQ1BVIHBvcnQsIGZvciB3aGljaAogCQkgKiB0aGVyZSBpcyBubyB1c2VyIHJlZ2lzdGVyZWQuIFNvIGRvbiYjMzk7dCBwcmludCBhbnkgZXJyb3IKIAkJICogbWVzc2FnZSBoZXJlIChpZ25vcmUgYW5kIGRyb3AgdGhvc2UgZnJhbWVzKS4KIAkJICovCiYjNDM7CQlrZnJlZV9za2Ioc2tiKTsKIAkJcmV0dXJuIE5VTEw7CiYjNDM7CX0KIAogCWRzYV9kZWZhdWx0X29mZmxvYWRfZndkX21hcmsoc2tiKTsKIAlza2ItJmd0O3ByaW9yaXR5ID0gcW9zX2NsYXNzOwpkaWZmIC0tZ2l0IGEvbmV0L2RzYS90YWdfb2NlbG90XzgwMjFxLmMgYi9uZXQvZHNhL3RhZ19vY2Vsb3RfODAyMXEuYwppbmRleCBlODlkOTI1NGU5MGEzYS4uZjUwZjFjZDgzZjE2MWMgMTAwNjQ0Ci0tLSBhL25ldC9kc2EvdGFnX29jZWxvdF84MDIxcS5jCiYjNDM7JiM0MzsmIzQzOyBiL25ldC9kc2EvdGFnX29jZWxvdF84MDIxcS5jCkBAIC0zMywzMCAmIzQzOzMzLDM0IEBAIHN0YXRpYyBzdHJ1Y3Qgc2tfYnVmZiAqb2NlbG90X2RlZmVyX3htaXQoc3RydWN0IGRzYV9wb3J0ICpkcCwKIAl4bWl0X3dvcmtfZm4gPSBkYXRhLSZndDt4bWl0X3dvcmtfZm47CiAJeG1pdF93b3JrZXIgPSBwcml2LSZndDt4bWl0X3dvcmtlcjsKIAotCWlmICgheG1pdF93b3JrX2ZuIHx8ICF4bWl0X3dvcmtlcikKJiM0MzsJaWYgKCF4bWl0X3dvcmtfZm4gfHwgIXhtaXRfd29ya2VyKSB7CiYjNDM7CQlrZnJlZV9za2Ioc2tiKTsKIAkJcmV0dXJuIE5VTEw7CiYjNDM7CX0KIAogCS8qIFBUUCBvdmVyIElQIHBhY2tldHMgbmVlZCBVRFAgY2hlY2tzdW1taW5nLiBXZSBtYXkgaGF2ZSBpbmhlcml0ZWQKIAkgKiBORVRJRl9GX0hXX0NTVU0gZnJvbSB0aGUgRFNBIGNvbmR1aXQsIGJ1dCB0aGVzZSBwYWNrZXRzIGFyZSBub3Qgc2VudAogCSAqIHRocm91Z2ggdGhlIERTQSBjb25kdWl0LCBzbyBjYWxjdWxhdGUgdGhlIGNoZWNrc3VtIGhlcmUuCiAJICovCi0JaWYgKHNrYi0mZ3Q7aXBfc3VtbWVkID09IENIRUNLU1VNX1BBUlRJQUwgJmFtcDsmYW1wOyBza2JfY2hlY2tzdW1faGVscChza2IpKQomIzQzOwlpZiAoc2tiLSZndDtpcF9zdW1tZWQgPT0gQ0hFQ0tTVU1fUEFSVElBTCAmYW1wOyZhbXA7IHNrYl9jaGVja3N1bV9oZWxwKHNrYikpIHsKJiM0MzsJCWtmcmVlX3NrYihza2IpOwogCQlyZXR1cm4gTlVMTDsKJiM0MzsJfQogCiAJeG1pdF93b3JrID0ga3phbGxvY19vYmooKnhtaXRfd29yaywgR0ZQX0FUT01JQyk7Ci0JaWYgKCF4bWl0X3dvcmspCiYjNDM7CWlmICgheG1pdF93b3JrKSB7CiYjNDM7CQlrZnJlZV9za2Ioc2tiKTsKIAkJcmV0dXJuIE5VTEw7CiYjNDM7CX0KIAogCS8qIENhbGxzIGZlbGl4X3BvcnRfZGVmZXJyZWRfeG1pdCBpbiBmZWxpeC5jICovCiAJa3RocmVhZF9pbml0X3dvcmsoJmFtcDt4bWl0X3dvcmstJmd0O3dvcmssIHhtaXRfd29ya19mbik7Ci0JLyogSW5jcmVhc2UgcmVmY291bnQgc28gdGhlIGtmcmVlX3NrYiBpbiBkc2FfdXNlcl94bWl0Ci0JICogd29uJiMzOTt0IHJlYWxseSBmcmVlIHRoZSBwYWNrZXQuCi0JICovCiAJeG1pdF93b3JrLSZndDtkcCA9IGRwOwogCXhtaXRfd29yay0mZ3Q7c2tiID0gc2tiX2dldChza2IpOwogCiAJa3RocmVhZF9xdWV1ZV93b3JrKHhtaXRfd29ya2VyLCAmYW1wO3htaXRfd29yay0mZ3Q7d29yayk7CiAKJiM0MzsJa2ZyZWVfc2tiKHNrYik7CiAJcmV0dXJuIE5VTEw7CiB9CiAKQEAgLTg0LDggJiM0Mzs4OCwxMCBAQCBzdGF0aWMgc3RydWN0IHNrX2J1ZmYgKm9jZWxvdF9yY3Yoc3RydWN0IHNrX2J1ZmYgKnNrYiwKIAlkc2FfODAyMXFfcmN2KHNrYiwgJmFtcDtzcmNfcG9ydCwgJmFtcDtzd2l0Y2hfaWQsIE5VTEwsIE5VTEwpOwogCiAJc2tiLSZndDtkZXYgPSBkc2FfY29uZHVpdF9maW5kX3VzZXIobmV0ZGV2LCBzd2l0Y2hfaWQsIHNyY19wb3J0KTsKLQlpZiAoIXNrYi0mZ3Q7ZGV2KQomIzQzOwlpZiAoIXNrYi0mZ3Q7ZGV2KSB7CiYjNDM7CQlrZnJlZV9za2Ioc2tiKTsKIAkJcmV0dXJuIE5VTEw7CiYjNDM7CX0KIAogCWRzYV9kZWZhdWx0X29mZmxvYWRfZndkX21hcmsoc2tiKTsKIApkaWZmIC0tZ2l0IGEvbmV0L2RzYS90YWdfcWNhLmMgYi9uZXQvZHNhL3RhZ19xY2EuYwppbmRleCA5ZTNiNDI5ZThiMzYyNS4uNTEwNzkyZmJmYTkyZGQgMTAwNjQ0Ci0tLSBhL25ldC9kc2EvdGFnX3FjYS5jCiYjNDM7JiM0MzsmIzQzOyBiL25ldC9kc2EvdGFnX3FjYS5jCkBAIC00NiwxNiAmIzQzOzQ2LDIwIEBAIHN0YXRpYyBzdHJ1Y3Qgc2tfYnVmZiAqcWNhX3RhZ19yY3Yoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IG5ldF9kZXZpY2UgKmRldikKIAogCXRhZ2dlcl9kYXRhID0gZHMtJmd0O3RhZ2dlcl9kYXRhOwogCi0JaWYgKHVubGlrZWx5KCFwc2tiX21heV9wdWxsKHNrYiwgUUNBX0hEUl9MRU4pKSkKJiM0MzsJaWYgKHVubGlrZWx5KCFwc2tiX21heV9wdWxsKHNrYiwgUUNBX0hEUl9MRU4pKSkgewomIzQzOwkJa2ZyZWVfc2tiKHNrYik7CiAJCXJldHVybiBOVUxMOwomIzQzOwl9CiAKIAlwaGRyID0gZHNhX2V0eXBlX2hlYWRlcl9wb3Nfcngoc2tiKTsKIAloZHIgPSBudG9ocygqcGhkcik7CiAKIAkvKiBNYWtlIHN1cmUgdGhlIHZlcnNpb24gaXMgY29ycmVjdCAqLwogCXZlciA9IEZJRUxEX0dFVChRQ0FfSERSX1JFQ1ZfVkVSU0lPTiwgaGRyKTsKLQlpZiAodW5saWtlbHkodmVyICE9IFFDQV9IRFJfVkVSU0lPTikpCiYjNDM7CWlmICh1bmxpa2VseSh2ZXIgIT0gUUNBX0hEUl9WRVJTSU9OKSkgewomIzQzOwkJa2ZyZWVfc2tiKHNrYik7CiAJCXJldHVybiBOVUxMOwomIzQzOwl9CiAKIAkvKiBHZXQgcGsgdHlwZSAqLwogCXBrX3R5cGUgPSBGSUVMRF9HRVQoUUNBX0hEUl9SRUNWX1RZUEUsIGhkcik7CkBAIC02NCw2ICYjNDM7NjgsNyBAQCBzdGF0aWMgc3RydWN0IHNrX2J1ZmYgKnFjYV90YWdfcmN2KHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpCiAJaWYgKHBrX3R5cGUgPT0gUUNBX0hEUl9SRUNWX1RZUEVfUldfUkVHX0FDSykgewogCQlpZiAobGlrZWx5KHRhZ2dlcl9kYXRhLSZndDtyd19yZWdfYWNrX2hhbmRsZXIpKQogCQkJdGFnZ2VyX2RhdGEtJmd0O3J3X3JlZ19hY2tfaGFuZGxlcihkcywgc2tiKTsKJiM0MzsJCWtmcmVlX3NrYihza2IpOwogCQlyZXR1cm4gTlVMTDsKIAl9CiAKQEAgLTcxLDYgJiM0Mzs3Niw3IEBAIHN0YXRpYyBzdHJ1Y3Qgc2tfYnVmZiAqcWNhX3RhZ19yY3Yoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IG5ldF9kZXZpY2UgKmRldikKIAlpZiAocGtfdHlwZSA9PSBRQ0FfSERSX1JFQ1ZfVFlQRV9NSUIpIHsKIAkJaWYgKGxpa2VseSh0YWdnZXJfZGF0YS0mZ3Q7bWliX2F1dG9jYXN0X2hhbmRsZXIpKQogCQkJdGFnZ2VyX2RhdGEtJmd0O21pYl9hdXRvY2FzdF9oYW5kbGVyKGRzLCBza2IpOwomIzQzOwkJa2ZyZWVfc2tiKHNrYik7CiAJCXJldHVybiBOVUxMOwogCX0KIApAQCAtNzgsOCAmIzQzOzg0LDEwIEBAIHN0YXRpYyBzdHJ1Y3Qgc2tfYnVmZiAqcWNhX3RhZ19yY3Yoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IG5ldF9kZXZpY2UgKmRldikKIAlwb3J0ID0gRklFTERfR0VUKFFDQV9IRFJfUkVDVl9TT1VSQ0VfUE9SVCwgaGRyKTsKIAogCXNrYi0mZ3Q7ZGV2ID0gZHNhX2NvbmR1aXRfZmluZF91c2VyKGRldiwgMCwgcG9ydCk7Ci0JaWYgKCFza2ItJmd0O2RldikKJiM0MzsJaWYgKCFza2ItJmd0O2RldikgewomIzQzOwkJa2ZyZWVfc2tiKHNrYik7CiAJCXJldHVybiBOVUxMOwomIzQzOwl9CiAKIAkvKiBSZW1vdmUgUUNBIHRhZyBhbmQgcmVjYWxjdWxhdGUgY2hlY2tzdW0gKi8KIAlza2JfcHVsbF9yY3N1bShza2IsIFFDQV9IRFJfTEVOKTsKZGlmZiAtLWdpdCBhL25ldC9kc2EvdGFnX3J0bDRfYS5jIGIvbmV0L2RzYS90YWdfcnRsNF9hLmMKaW5kZXggM2NjNjNlYWNmYTAzNTIuLjU5MGVhM2I5MjFjOWQ5IDEwMDY0NAotLS0gYS9uZXQvZHNhL3RhZ19ydGw0X2EuYwomIzQzOyYjNDM7JiM0MzsgYi9uZXQvZHNhL3RhZ19ydGw0X2EuYwpAQCAtNDEsNyAmIzQzOzQxLDcgQEAgc3RhdGljIHN0cnVjdCBza19idWZmICpydGw0YV90YWdfeG1pdChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLAogCXUxNiBvdXQ7CiAKIAkvKiBQYWQgb3V0IHRvIGF0IGxlYXN0IDYwIGJ5dGVzICovCi0JaWYgKHVubGlrZWx5KF9fc2tiX3B1dF9wYWR0byhza2IsIEVUSF9aTEVOLCBmYWxzZSkpKQomIzQzOwlpZiAodW5saWtlbHkoZXRoX3NrYl9wYWQoc2tiKSkpCiAJCXJldHVybiBOVUxMOwogCiAJbmV0ZGV2X2RiZyhkZXYsICYjMzQ7YWRkIHJlYWx0ZWsgdGFnIHRvIHBhY2thZ2UgdG8gcG9ydCAlZFxuJiMzNDssCkBAIC03NSw4ICYjNDM7NzUsMTAgQEAgc3RhdGljIHN0cnVjdCBza19idWZmICpydGw0YV90YWdfcmN2KHN0cnVjdCBza19idWZmICpza2IsCiAJdTggcHJvdDsKIAl1OCBwb3J0OwogCi0JaWYgKHVubGlrZWx5KCFwc2tiX21heV9wdWxsKHNrYiwgUlRMNF9BX0hEUl9MRU4pKSkKJiM0MzsJaWYgKHVubGlrZWx5KCFwc2tiX21heV9wdWxsKHNrYiwgUlRMNF9BX0hEUl9MRU4pKSkgewomIzQzOwkJa2ZyZWVfc2tiKHNrYik7CiAJCXJldHVybiBOVUxMOwomIzQzOwl9CiAKIAl0YWcgPSBkc2FfZXR5cGVfaGVhZGVyX3Bvc19yeChza2IpOwogCXAgPSAoX19iZTE2ICopdGFnOwpAQCAtOTIsNiAmIzQzOzk0LDcgQEAgc3RhdGljIHN0cnVjdCBza19idWZmICpydGw0YV90YWdfcmN2KHN0cnVjdCBza19idWZmICpza2IsCiAJcHJvdCA9IChwcm90cG9ydCAmZ3Q7Jmd0OyBSVEw0X0FfUFJPVE9DT0xfU0hJRlQpICZhbXA7IDB4MGY7CiAJaWYgKHByb3QgIT0gUlRMNF9BX1BST1RPQ09MX1JUTDgzNjZSQikgewogCQluZXRkZXZfZXJyKGRldiwgJiMzNDt1bmtub3duIHJlYWx0ZWsgcHJvdG9jb2wgMHglMDF4XG4mIzM0OywgcHJvdCk7CiYjNDM7CQlrZnJlZV9za2Ioc2tiKTsKIAkJcmV0dXJuIE5VTEw7CiAJfQogCXBvcnQgPSBwcm90cG9ydCAmYW1wOyAweGZmOwpAQCAtOTksNiAmIzQzOzEwMiw3IEBAIHN0YXRpYyBzdHJ1Y3Qgc2tfYnVmZiAqcnRsNGFfdGFnX3JjdihzdHJ1Y3Qgc2tfYnVmZiAqc2tiLAogCXNrYi0mZ3Q7ZGV2ID0gZHNhX2NvbmR1aXRfZmluZF91c2VyKGRldiwgMCwgcG9ydCk7CiAJaWYgKCFza2ItJmd0O2RldikgewogCQluZXRkZXZfZGJnKGRldiwgJiMzNDtjb3VsZCBub3QgZmluZCB1c2VyIGZvciBwb3J0ICVkXG4mIzM0OywgcG9ydCk7CiYjNDM7CQlrZnJlZV9za2Ioc2tiKTsKIAkJcmV0dXJuIE5VTEw7CiAJfQogCmRpZmYgLS1naXQgYS9uZXQvZHNhL3RhZ19ydGw4XzQuYyBiL25ldC9kc2EvdGFnX3J0bDhfNC5jCmluZGV4IDg1MmM2Yjg4MDc5YTEzLi40ZGEzYmVlYmVmNzVlMiAxMDA2NDQKLS0tIGEvbmV0L2RzYS90YWdfcnRsOF80LmMKJiM0MzsmIzQzOyYjNDM7IGIvbmV0L2RzYS90YWdfcnRsOF80LmMKQEAgLTE0Myw4ICYjNDM7MTQzLDEwIEBAIHN0YXRpYyBzdHJ1Y3Qgc2tfYnVmZiAqcnRsOF80dF90YWdfeG1pdChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLAogCS8qIENhbGN1bGF0ZSB0aGUgY2hlY2tzdW0gaGVyZSBpZiBub3QgZG9uZSB5ZXQgYXMgdHJhaWxpbmcgdGFncyB3aWxsCiAJICogYnJlYWsgZWl0aGVyIHNvZnR3YXJlIG9yIGhhcmR3YXJlIGJhc2VkIGNoZWNrc3VtCiAJICovCi0JaWYgKHNrYi0mZ3Q7aXBfc3VtbWVkID09IENIRUNLU1VNX1BBUlRJQUwgJmFtcDsmYW1wOyBza2JfY2hlY2tzdW1faGVscChza2IpKQomIzQzOwlpZiAoc2tiLSZndDtpcF9zdW1tZWQgPT0gQ0hFQ0tTVU1fUEFSVElBTCAmYW1wOyZhbXA7IHNrYl9jaGVja3N1bV9oZWxwKHNrYikpIHsKJiM0MzsJCWtmcmVlX3NrYihza2IpOwogCQlyZXR1cm4gTlVMTDsKJiM0MzsJfQogCiAJcnRsOF80X3dyaXRlX3RhZyhza2IsIGRldiwgc2tiX3B1dChza2IsIFJUTDhfNF9UQUdfTEVOKSk7CiAKQEAgLTIwMSwxMSAmIzQzOzIwMywxNSBAQCBzdGF0aWMgaW50IHJ0bDhfNF9yZWFkX3RhZyhzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LAogc3RhdGljIHN0cnVjdCBza19idWZmICpydGw4XzRfdGFnX3JjdihzdHJ1Y3Qgc2tfYnVmZiAqc2tiLAogCQkJCSAgICAgIHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpCiB7Ci0JaWYgKHVubGlrZWx5KCFwc2tiX21heV9wdWxsKHNrYiwgUlRMOF80X1RBR19MRU4pKSkKJiM0MzsJaWYgKHVubGlrZWx5KCFwc2tiX21heV9wdWxsKHNrYiwgUlRMOF80X1RBR19MRU4pKSkgewomIzQzOwkJa2ZyZWVfc2tiKHNrYik7CiAJCXJldHVybiBOVUxMOwomIzQzOwl9CiAKLQlpZiAodW5saWtlbHkocnRsOF80X3JlYWRfdGFnKHNrYiwgZGV2LCBkc2FfZXR5cGVfaGVhZGVyX3Bvc19yeChza2IpKSkpCiYjNDM7CWlmICh1bmxpa2VseShydGw4XzRfcmVhZF90YWcoc2tiLCBkZXYsIGRzYV9ldHlwZV9oZWFkZXJfcG9zX3J4KHNrYikpKSkgewomIzQzOwkJa2ZyZWVfc2tiKHNrYik7CiAJCXJldHVybiBOVUxMOwomIzQzOwl9CiAKIAkvKiBSZW1vdmUgdGFnIGFuZCByZWNhbGN1bGF0ZSBjaGVja3N1bSAqLwogCXNrYl9wdWxsX3Jjc3VtKHNrYiwgUlRMOF80X1RBR19MRU4pOwpAQCAtMjE4LDE0ICYjNDM7MjI0LDIwIEBAIHN0YXRpYyBzdHJ1Y3Qgc2tfYnVmZiAqcnRsOF80X3RhZ19yY3Yoc3RydWN0IHNrX2J1ZmYgKnNrYiwKIHN0YXRpYyBzdHJ1Y3Qgc2tfYnVmZiAqcnRsOF80dF90YWdfcmN2KHN0cnVjdCBza19idWZmICpza2IsCiAJCQkJICAgICAgIHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpCiB7Ci0JaWYgKHNrYl9saW5lYXJpemUoc2tiKSkKJiM0MzsJaWYgKHNrYl9saW5lYXJpemUoc2tiKSkgewomIzQzOwkJa2ZyZWVfc2tiKHNrYik7CiAJCXJldHVybiBOVUxMOwomIzQzOwl9CiAKLQlpZiAodW5saWtlbHkocnRsOF80X3JlYWRfdGFnKHNrYiwgZGV2LCBza2JfdGFpbF9wb2ludGVyKHNrYikgLSBSVEw4XzRfVEFHX0xFTikpKQomIzQzOwlpZiAodW5saWtlbHkocnRsOF80X3JlYWRfdGFnKHNrYiwgZGV2LCBza2JfdGFpbF9wb2ludGVyKHNrYikgLSBSVEw4XzRfVEFHX0xFTikpKSB7CiYjNDM7CQlrZnJlZV9za2Ioc2tiKTsKIAkJcmV0dXJuIE5VTEw7CiYjNDM7CX0KIAotCWlmIChwc2tiX3RyaW1fcmNzdW0oc2tiLCBza2ItJmd0O2xlbiAtIFJUTDhfNF9UQUdfTEVOKSkKJiM0MzsJaWYgKHBza2JfdHJpbV9yY3N1bShza2IsIHNrYi0mZ3Q7bGVuIC0gUlRMOF80X1RBR19MRU4pKSB7CiYjNDM7CQlrZnJlZV9za2Ioc2tiKTsKIAkJcmV0dXJuIE5VTEw7CiYjNDM7CX0KIAogCXJldHVybiBza2I7CiB9CmRpZmYgLS1naXQgYS9uZXQvZHNhL3RhZ19yem4xX2E1cHN3LmMgYi9uZXQvZHNhL3RhZ19yem4xX2E1cHN3LmMKaW5kZXggMTA5OTRiMzQ3MGY2N2EuLjczNDkxMDE1NmRjMzMzIDEwMDY0NAotLS0gYS9uZXQvZHNhL3RhZ19yem4xX2E1cHN3LmMKJiM0MzsmIzQzOyYjNDM7IGIvbmV0L2RzYS90YWdfcnpuMV9hNXBzdy5jCkBAIC00OCw3ICYjNDM7NDgsNyBAQCBzdGF0aWMgc3RydWN0IHNrX2J1ZmYgKmE1cHN3X3RhZ194bWl0KHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBuZXRfZGV2aWNlICpkZQogCSAqIGxlYXN0IDYwIGJ5dGVzIG90aGVyd2lzZSB0aGV5IHdpbGwgYmUgZGlzY2FyZGVkIHdoZW4gdGhleSBlbnRlciB0aGUKIAkgKiBzd2l0Y2ggcG9ydCBsb2dpYy4KIAkgKi8KLQlpZiAoX19za2JfcHV0X3BhZHRvKHNrYiwgRVRIX1pMRU4sIGZhbHNlKSkKJiM0MzsJaWYgKGV0aF9za2JfcGFkKHNrYikpCiAJCXJldHVybiBOVUxMOwogCiAJLyogcHJvdmlkZSAmIzM5O0E1UFNXX1RBR19MRU4mIzM5OyBieXRlcyBhZGRpdGlvbmFsIHNwYWNlICovCkBAIC03Nyw2ICYjNDM7NzcsNyBAQCBzdGF0aWMgc3RydWN0IHNrX2J1ZmYgKmE1cHN3X3RhZ19yY3Yoc3RydWN0IHNrX2J1ZmYgKnNrYiwKIAlpZiAodW5saWtlbHkoIXBza2JfbWF5X3B1bGwoc2tiLCBBNVBTV19UQUdfTEVOKSkpIHsKIAkJZGV2X3dhcm5fcmF0ZWxpbWl0ZWQoJmFtcDtkZXYtJmd0O2RldiwKIAkJCQkgICAgICYjMzQ7RHJvcHBpbmcgcGFja2V0LCBjYW5ub3QgcHVsbFxuJiMzNDspOwomIzQzOwkJa2ZyZWVfc2tiKHNrYik7CiAJCXJldHVybiBOVUxMOwogCX0KIApAQCAtODQsMTQgJiM0Mzs4NSwxNyBAQCBzdGF0aWMgc3RydWN0IHNrX2J1ZmYgKmE1cHN3X3RhZ19yY3Yoc3RydWN0IHNrX2J1ZmYgKnNrYiwKIAogCWlmICh0YWctJmd0O2N0cmxfdGFnICE9IGh0b25zKEVUSF9QX0RTQV9BNVBTVykpIHsKIAkJZGV2X3dhcm5fcmF0ZWxpbWl0ZWQoJmFtcDtkZXYtJmd0O2RldiwgJiMzNDtEcm9wcGluZyBwYWNrZXQgZHVlIHRvIGludmFsaWQgVEFHIG1hcmtlclxuJiMzNDspOwomIzQzOwkJa2ZyZWVfc2tiKHNrYik7CiAJCXJldHVybiBOVUxMOwogCX0KIAogCXBvcnQgPSBGSUVMRF9HRVQoQTVQU1dfQ1RSTF9EQVRBX1BPUlQsIG50b2hzKHRhZy0mZ3Q7Y3RybF9kYXRhKSk7CiAKIAlza2ItJmd0O2RldiA9IGRzYV9jb25kdWl0X2ZpbmRfdXNlcihkZXYsIDAsIHBvcnQpOwotCWlmICghc2tiLSZndDtkZXYpCiYjNDM7CWlmICghc2tiLSZndDtkZXYpIHsKJiM0MzsJCWtmcmVlX3NrYihza2IpOwogCQlyZXR1cm4gTlVMTDsKJiM0MzsJfQogCiAJc2tiX3B1bGxfcmNzdW0oc2tiLCBBNVBTV19UQUdfTEVOKTsKIAlkc2Ffc3RyaXBfZXR5cGVfaGVhZGVyKHNrYiwgQTVQU1dfVEFHX0xFTik7CmRpZmYgLS1naXQgYS9uZXQvZHNhL3RhZ19zamExMTA1LmMgYi9uZXQvZHNhL3RhZ19zamExMTA1LmMKaW5kZXggZGU2ZDRjZTg2NjhiZTEuLmJmZTFmNzQ2ZjU1YmU1IDEwMDY0NAotLS0gYS9uZXQvZHNhL3RhZ19zamExMTA1LmMKJiM0MzsmIzQzOyYjNDM7IGIvbmV0L2RzYS90YWdfc2phMTEwNS5jCkBAIC0xNDksMTkgJiM0MzsxNDksMjAgQEAgc3RhdGljIHN0cnVjdCBza19idWZmICpzamExMTA1X2RlZmVyX3htaXQoc3RydWN0IGRzYV9wb3J0ICpkcCwKIAl4bWl0X3dvcmtfZm4gPSB0YWdnZXJfZGF0YS0mZ3Q7eG1pdF93b3JrX2ZuOwogCXhtaXRfd29ya2VyID0gcHJpdi0mZ3Q7eG1pdF93b3JrZXI7CiAKLQlpZiAoIXhtaXRfd29ya19mbiB8fCAheG1pdF93b3JrZXIpCiYjNDM7CWlmICgheG1pdF93b3JrX2ZuIHx8ICF4bWl0X3dvcmtlcikgewomIzQzOwkJa2ZyZWVfc2tiKHNrYik7CiAJCXJldHVybiBOVUxMOwomIzQzOwl9CiAKIAl4bWl0X3dvcmsgPSBremFsbG9jX29iaigqeG1pdF93b3JrLCBHRlBfQVRPTUlDKTsKLQlpZiAoIXhtaXRfd29yaykKJiM0MzsJaWYgKCF4bWl0X3dvcmspIHsKJiM0MzsJCWtmcmVlX3NrYihza2IpOwogCQlyZXR1cm4gTlVMTDsKJiM0MzsJfQogCiAJa3RocmVhZF9pbml0X3dvcmsoJmFtcDt4bWl0X3dvcmstJmd0O3dvcmssIHhtaXRfd29ya19mbik7Ci0JLyogSW5jcmVhc2UgcmVmY291bnQgc28gdGhlIGtmcmVlX3NrYiBpbiBkc2FfdXNlcl94bWl0Ci0JICogd29uJiMzOTt0IHJlYWxseSBmcmVlIHRoZSBwYWNrZXQuCi0JICovCiAJeG1pdF93b3JrLSZndDtkcCA9IGRwOwotCXhtaXRfd29yay0mZ3Q7c2tiID0gc2tiX2dldChza2IpOwomIzQzOwl4bWl0X3dvcmstJmd0O3NrYiA9IHNrYjsKIAogCWt0aHJlYWRfcXVldWVfd29yayh4bWl0X3dvcmtlciwgJmFtcDt4bWl0X3dvcmstJmd0O3dvcmspOwogCkBAIC00MDEsMTAgJiM0Mzs0MDIsNyBAQCBzdGF0aWMgc3RydWN0IHNrX2J1ZmYKIAkJCWtmcmVlX3NrYihwcml2LSZndDtzdGFtcGFibGVfc2tiKTsKIAkJfQogCi0JCS8qIEhvbGQgYSByZWZlcmVuY2UgdG8gYXZvaWQgZHNhX3N3aXRjaF9yY3YKLQkJICogZnJvbSBmcmVlaW5nIHRoZSBza2IuCi0JCSAqLwotCQlwcml2LSZndDtzdGFtcGFibGVfc2tiID0gc2tiX2dldChza2IpOwomIzQzOwkJcHJpdi0mZ3Q7c3RhbXBhYmxlX3NrYiA9IHNrYjsKIAkJc3Bpbl91bmxvY2soJmFtcDtwcml2LSZndDttZXRhX2xvY2spOwogCiAJCS8qIFRlbGwgRFNBIHdlIGdvdCBub3RoaW5nICovCkBAIC00MzYsNiAmIzQzOzQzNCw3IEBAIHN0YXRpYyBzdHJ1Y3Qgc2tfYnVmZgogCQkJZGV2X2Vycl9yYXRlbGltaXRlZChkcy0mZ3Q7ZGV2LAogCQkJCQkgICAgJiMzNDtVbmV4cGVjdGVkIG1ldGEgZnJhbWVcbiYjMzQ7KTsKIAkJCXNwaW5fdW5sb2NrKCZhbXA7cHJpdi0mZ3Q7bWV0YV9sb2NrKTsKJiM0MzsJCQlrZnJlZV9za2Ioc2tiKTsKIAkJCXJldHVybiBOVUxMOwogCQl9CiAKQEAgLTQ0Myw2ICYjNDM7NDQyLDcgQEAgc3RhdGljIHN0cnVjdCBza19idWZmCiAJCQlkZXZfZXJyX3JhdGVsaW1pdGVkKGRzLSZndDtkZXYsCiAJCQkJCSAgICAmIzM0O01ldGEgZnJhbWUgb24gd3JvbmcgcG9ydFxuJiMzNDspOwogCQkJc3Bpbl91bmxvY2soJmFtcDtwcml2LSZndDttZXRhX2xvY2spOwomIzQzOwkJCWtmcmVlX3NrYihza2IpOwogCQkJcmV0dXJuIE5VTEw7CiAJCX0KIApAQCAtNTAxLDE4ICYjNDM7NTAxLDIxIEBAIHN0YXRpYyBzdHJ1Y3Qgc2tfYnVmZiAqc2phMTEwNV9yY3Yoc3RydWN0IHNrX2J1ZmYgKnNrYiwKIAkvKiBOb3JtYWwgZGF0YSBwbGFuZSB0cmFmZmljIGFuZCBsaW5rLWxvY2FsIGZyYW1lcyBhcmUgdGFnZ2VkIHdpdGgKIAkgKiBhIHRhZ184MDIxcSBWTEFOIHdoaWNoIHdlIGhhdmUgdG8gc3RyaXAKIAkgKi8KLQlpZiAoc2phMTEwNV9za2JfaGFzX3RhZ184MDIxcShza2IpKQomIzQzOwlpZiAoc2phMTEwNV9za2JfaGFzX3RhZ184MDIxcShza2IpKSB7CiAJCWRzYV84MDIxcV9yY3Yoc2tiLCAmYW1wO3NvdXJjZV9wb3J0LCAmYW1wO3N3aXRjaF9pZCwgJmFtcDt2YmlkLCAmYW1wO3ZpZCk7Ci0JZWxzZSBpZiAoc291cmNlX3BvcnQgPT0gLTEgJmFtcDsmYW1wOyBzd2l0Y2hfaWQgPT0gLTEpCiYjNDM7CX0gZWxzZSBpZiAoc291cmNlX3BvcnQgPT0gLTEgJmFtcDsmYW1wOyBzd2l0Y2hfaWQgPT0gLTEpIHsKIAkJLyogUGFja2V0cyB3aXRoIG5vIHNvdXJjZSBpbmZvcm1hdGlvbiBoYXZlIG5vIGNoYW5jZSBvZgogCQkgKiBnZXR0aW5nIGFjY2VwdGVkLCBkcm9wIHRoZW0gc3RyYWlnaHQgYXdheS4KIAkJICovCiYjNDM7CQlrZnJlZV9za2Ioc2tiKTsKIAkJcmV0dXJuIE5VTEw7CiYjNDM7CX0KIAogCXNrYi0mZ3Q7ZGV2ID0gZHNhX3RhZ184MDIxcV9maW5kX3VzZXIobmV0ZGV2LCBzb3VyY2VfcG9ydCwgc3dpdGNoX2lkLAogCQkJCQkgICB2aWQsIHZiaWQpOwogCWlmICghc2tiLSZndDtkZXYpIHsKIAkJbmV0ZGV2X3dhcm4obmV0ZGV2LCAmIzM0O0NvdWxkbiYjMzk7dCBkZWNvZGUgc291cmNlIHBvcnRcbiYjMzQ7KTsKJiM0MzsJCWtmcmVlX3NrYihza2IpOwogCQlyZXR1cm4gTlVMTDsKIAl9CiAKQEAgLTUzOSwxMiAmIzQzOzU0MiwxNSBAQCBzdGF0aWMgc3RydWN0IHNrX2J1ZmYgKnNqYTExMTBfcmN2X21ldGEoc3RydWN0IHNrX2J1ZmYgKnNrYiwgdTE2IHJ4X2hlYWRlcikKIAlpZiAoIWRzKSB7CiAJCW5ldF9lcnJfcmF0ZWxpbWl0ZWQoJiMzNDslczogY2Fubm90IGZpbmQgc3dpdGNoIGlkICVkXG4mIzM0OywKIAkJCQkgICAgY29uZHVpdC0mZ3Q7bmFtZSwgc3dpdGNoX2lkKTsKJiM0MzsJCWtmcmVlX3NrYihza2IpOwogCQlyZXR1cm4gTlVMTDsKIAl9CiAKIAl0YWdnZXJfZGF0YSA9IHNqYTExMDVfdGFnZ2VyX2RhdGEoZHMpOwotCWlmICghdGFnZ2VyX2RhdGEtJmd0O21ldGFfdHN0YW1wX2hhbmRsZXIpCiYjNDM7CWlmICghdGFnZ2VyX2RhdGEtJmd0O21ldGFfdHN0YW1wX2hhbmRsZXIpIHsKJiM0MzsJCWtmcmVlX3NrYihza2IpOwogCQlyZXR1cm4gTlVMTDsKJiM0MzsJfQogCiAJZm9yIChpID0gMDsgaSAmbHQ7PSBuX3RzOyBpJiM0MzsmIzQzOykgewogCQl1OCB0c19pZCwgc291cmNlX3BvcnQsIGRpcjsKQEAgLTU2Miw2ICYjNDM7NTY4LDcgQEAgc3RhdGljIHN0cnVjdCBza19idWZmICpzamExMTEwX3Jjdl9tZXRhKHN0cnVjdCBza19idWZmICpza2IsIHUxNiByeF9oZWFkZXIpCiAJfQogCiAJLyogRGlzY2FyZCB0aGUgbWV0YSBmcmFtZSwgd2UmIzM5O3ZlIGNvbnN1bWVkIHRoZSB0aW1lc3RhbXBzIGl0IGNvbnRhaW5lZCAqLwomIzQzOwlrZnJlZV9za2Ioc2tiKTsKIAlyZXR1cm4gTlVMTDsKIH0KIApAQCAtNTcyLDggJiM0Mzs1NzksMTAgQEAgc3RhdGljIHN0cnVjdCBza19idWZmICpzamExMTEwX3Jjdl9pbmJhbmRfY29udHJvbF9leHRlbnNpb24oc3RydWN0IHNrX2J1ZmYgKnNrYiwKIHsKIAl1MTYgcnhfaGVhZGVyOwogCi0JaWYgKHVubGlrZWx5KCFwc2tiX21heV9wdWxsKHNrYiwgU0pBMTExMF9IRUFERVJfTEVOKSkpCiYjNDM7CWlmICh1bmxpa2VseSghcHNrYl9tYXlfcHVsbChza2IsIFNKQTExMTBfSEVBREVSX0xFTikpKSB7CiYjNDM7CQlrZnJlZV9za2Ioc2tiKTsKIAkJcmV0dXJuIE5VTEw7CiYjNDM7CX0KIAogCS8qIHNrYi0mZ3Q7ZGF0YSBwb2ludHMgdG8gc2tiX21hY19oZWFkZXIoc2tiKSAmIzQzOyBFVEhfSExFTiwgd2hpY2ggaXMgZXhhY3RseQogCSAqIHdoYXQgd2UgbmVlZCBiZWNhdXNlIHRoZSBjYWxsZXIgaGFzIGNoZWNrZWQgdGhlIEV0aGVyVHlwZSAod2hpY2ggaXMKQEAgLTYwOSw4ICYjNDM7NjE4LDEwIEBAIHN0YXRpYyBzdHJ1Y3Qgc2tfYnVmZiAqc2phMTExMF9yY3ZfaW5iYW5kX2NvbnRyb2xfZXh0ZW5zaW9uKHN0cnVjdCBza19idWZmICpza2IsCiAJCSAqIHBhZGRpbmcgYW5kIHRyYWlsZXIgd2UgbmVlZCB0byBhY2NvdW50IGZvciB0aGUgZmFjdCB0aGF0CiAJCSAqIHNrYi0mZ3Q7ZGF0YSBwb2ludHMgdG8gc2tiX21hY19oZWFkZXIoc2tiKSAmIzQzOyBFVEhfSExFTi4KIAkJICovCi0JCWlmIChwc2tiX3RyaW1fcmNzdW0oc2tiLCBzdGFydF9vZl9wYWRkaW5nIC0gRVRIX0hMRU4pKQomIzQzOwkJaWYgKHBza2JfdHJpbV9yY3N1bShza2IsIHN0YXJ0X29mX3BhZGRpbmcgLSBFVEhfSExFTikpIHsKJiM0MzsJCQlrZnJlZV9za2Ioc2tiKTsKIAkJCXJldHVybiBOVUxMOwomIzQzOwkJfQogCS8qIFRyYXAtdG8taG9zdCBmcmFtZSwgbm8gdGltZXN0YW1wIHRyYWlsZXIgKi8KIAl9IGVsc2UgewogCQkqc291cmNlX3BvcnQgPSBTSkExMTEwX1JYX0hFQURFUl9TUkNfUE9SVChyeF9oZWFkZXIpOwpAQCAtNjUzLDYgJiM0Mzs2NjQsNyBAQCBzdGF0aWMgc3RydWN0IHNrX2J1ZmYgKnNqYTExMTBfcmN2KHN0cnVjdCBza19idWZmICpza2IsCiAKIAlpZiAoIXNrYi0mZ3Q7ZGV2KSB7CiAJCW5ldGRldl93YXJuKG5ldGRldiwgJiMzNDtDb3VsZG4mIzM5O3QgZGVjb2RlIHNvdXJjZSBwb3J0XG4mIzM0Oyk7CiYjNDM7CQlrZnJlZV9za2Ioc2tiKTsKIAkJcmV0dXJuIE5VTEw7CiAJfQogCmRpZmYgLS1naXQgYS9uZXQvZHNhL3RhZ190cmFpbGVyLmMgYi9uZXQvZHNhL3RhZ190cmFpbGVyLmMKaW5kZXggNGRjZTI0Y2ZlNmE3MTYuLjQ5YzgwMmMxMGNhNjNhIDEwMDY0NAotLS0gYS9uZXQvZHNhL3RhZ190cmFpbGVyLmMKJiM0MzsmIzQzOyYjNDM7IGIvbmV0L2RzYS90YWdfdHJhaWxlci5jCkBAIC0zMCwyMiAmIzQzOzMwLDMwIEBAIHN0YXRpYyBzdHJ1Y3Qgc2tfYnVmZiAqdHJhaWxlcl9yY3Yoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IG5ldF9kZXZpY2UgKmRldikKIAl1OCAqdHJhaWxlcjsKIAlpbnQgc291cmNlX3BvcnQ7CiAKLQlpZiAoc2tiX2xpbmVhcml6ZShza2IpKQomIzQzOwlpZiAoc2tiX2xpbmVhcml6ZShza2IpKSB7CiYjNDM7CQlrZnJlZV9za2Ioc2tiKTsKIAkJcmV0dXJuIE5VTEw7CiYjNDM7CX0KIAogCXRyYWlsZXIgPSBza2JfdGFpbF9wb2ludGVyKHNrYikgLSA0OwogCWlmICh0cmFpbGVyWzBdICE9IDB4ODAgfHwgKHRyYWlsZXJbMV0gJmFtcDsgMHhmOCkgIT0gMHgwMCB8fAotCSAgICAodHJhaWxlclsyXSAmYW1wOyAweGVmKSAhPSAweDAwIHx8IHRyYWlsZXJbM10gIT0gMHgwMCkKJiM0MzsJICAgICh0cmFpbGVyWzJdICZhbXA7IDB4ZWYpICE9IDB4MDAgfHwgdHJhaWxlclszXSAhPSAweDAwKSB7CiYjNDM7CQlrZnJlZV9za2Ioc2tiKTsKIAkJcmV0dXJuIE5VTEw7CiYjNDM7CX0KIAogCXNvdXJjZV9wb3J0ID0gdHJhaWxlclsxXSAmYW1wOyA3OwogCiAJc2tiLSZndDtkZXYgPSBkc2FfY29uZHVpdF9maW5kX3VzZXIoZGV2LCAwLCBzb3VyY2VfcG9ydCk7Ci0JaWYgKCFza2ItJmd0O2RldikKJiM0MzsJaWYgKCFza2ItJmd0O2RldikgewomIzQzOwkJa2ZyZWVfc2tiKHNrYik7CiAJCXJldHVybiBOVUxMOwomIzQzOwl9CiAKLQlpZiAocHNrYl90cmltX3Jjc3VtKHNrYiwgc2tiLSZndDtsZW4gLSA0KSkKJiM0MzsJaWYgKHBza2JfdHJpbV9yY3N1bShza2IsIHNrYi0mZ3Q7bGVuIC0gNCkpIHsKJiM0MzsJCWtmcmVlX3NrYihza2IpOwogCQlyZXR1cm4gTlVMTDsKJiM0MzsJfQogCiAJcmV0dXJuIHNrYjsKIH0KZGlmZiAtLWdpdCBhL25ldC9kc2EvdGFnX3ZzYzczeHhfODAyMXEuYyBiL25ldC9kc2EvdGFnX3ZzYzczeHhfODAyMXEuYwppbmRleCBhZjEyMWE5YWZmN2ZiZC4uZjQ3MzZhMWE3YTBmMGYgMTAwNjQ0Ci0tLSBhL25ldC9kc2EvdGFnX3ZzYzczeHhfODAyMXEuYwomIzQzOyYjNDM7JiM0MzsgYi9uZXQvZHNhL3RhZ192c2M3M3h4XzgwMjFxLmMKQEAgLTQ0LDYgJiM0Mzs0NCw3IEBAIHZzYzczeHhfcmN2KHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYpCiAJaWYgKCFza2ItJmd0O2RldikgewogCQlkZXZfd2Fybl9yYXRlbGltaXRlZCgmYW1wO25ldGRldi0mZ3Q7ZGV2LAogCQkJCSAgICAgJiMzNDtDb3VsZG4mIzM5O3QgZGVjb2RlIHNvdXJjZSBwb3J0XG4mIzM0Oyk7CiYjNDM7CQlrZnJlZV9za2Ioc2tiKTsKIAkJcmV0dXJuIE5VTEw7CiAJfQogCmRpZmYgLS1naXQgYS9uZXQvZHNhL3RhZ194cnM3MDB4LmMgYi9uZXQvZHNhL3RhZ194cnM3MDB4LmMKaW5kZXggYTA1MjE5ZjcwMmM2NWEuLmJiMjY4MDIwZWU4NjVlIDEwMDY0NAotLS0gYS9uZXQvZHNhL3RhZ194cnM3MDB4LmMKJiM0MzsmIzQzOyYjNDM7IGIvbmV0L2RzYS90YWdfeHJzNzAweC5jCkBAIC0zMCwxNSAmIzQzOzMwLDIxIEBAIHN0YXRpYyBzdHJ1Y3Qgc2tfYnVmZiAqeHJzNzAweF9yY3Yoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IG5ldF9kZXZpY2UgKmRldikKIAogCXNvdXJjZV9wb3J0ID0gZmZzKChpbnQpdHJhaWxlclswXSkgLSAxOwogCi0JaWYgKHNvdXJjZV9wb3J0ICZsdDsgMCkKJiM0MzsJaWYgKHNvdXJjZV9wb3J0ICZsdDsgMCkgewomIzQzOwkJa2ZyZWVfc2tiKHNrYik7CiAJCXJldHVybiBOVUxMOwomIzQzOwl9CiAKIAlza2ItJmd0O2RldiA9IGRzYV9jb25kdWl0X2ZpbmRfdXNlcihkZXYsIDAsIHNvdXJjZV9wb3J0KTsKLQlpZiAoIXNrYi0mZ3Q7ZGV2KQomIzQzOwlpZiAoIXNrYi0mZ3Q7ZGV2KSB7CiYjNDM7CQlrZnJlZV9za2Ioc2tiKTsKIAkJcmV0dXJuIE5VTEw7CiYjNDM7CX0KIAotCWlmIChwc2tiX3RyaW1fcmNzdW0oc2tiLCBza2ItJmd0O2xlbiAtIDEpKQomIzQzOwlpZiAocHNrYl90cmltX3Jjc3VtKHNrYiwgc2tiLSZndDtsZW4gLSAxKSkgewomIzQzOwkJa2ZyZWVfc2tiKHNrYik7CiAJCXJldHVybiBOVUxMOwomIzQzOwl9CiAKIAkvKiBGcmFtZSBpcyBmb3J3YXJkZWQgYnkgaGFyZHdhcmUsIGRvbiYjMzk7dCBmb3J3YXJkIGluIHNvZnR3YXJlLiAqLwogCWRzYV9kZWZhdWx0X29mZmxvYWRfZndkX21hcmsoc2tiKTsKZGlmZiAtLWdpdCBhL25ldC9kc2EvdGFnX3l0OTIxeC5jIGIvbmV0L2RzYS90YWdfeXQ5MjF4LmMKaW5kZXggZjNjZWQ5OWIxYzg1MmUuLjI5NDc4NGFiNjY5NGI2IDEwMDY0NAotLS0gYS9uZXQvZHNhL3RhZ195dDkyMXguYwomIzQzOyYjNDM7JiM0MzsgYi9uZXQvZHNhL3RhZ195dDkyMXguYwpAQCAtODcsOCAmIzQzOzg3LDEwIEBAIHl0OTIxeF90YWdfcmN2KHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYpCiAJX19iZTE2ICp0YWc7CiAJdTE2IHJ4OwogCi0JaWYgKHVubGlrZWx5KCFwc2tiX21heV9wdWxsKHNrYiwgWVQ5MjFYX1RBR19MRU4pKSkKJiM0MzsJaWYgKHVubGlrZWx5KCFwc2tiX21heV9wdWxsKHNrYiwgWVQ5MjFYX1RBR19MRU4pKSkgewomIzQzOwkJa2ZyZWVfc2tiKHNrYik7CiAJCXJldHVybiBOVUxMOwomIzQzOwl9CiAKIAl0YWcgPSBkc2FfZXR5cGVfaGVhZGVyX3Bvc19yeChza2IpOwogCkBAIC05Niw2ICYjNDM7OTgsNyBAQCB5dDkyMXhfdGFnX3JjdihzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2KQogCQlkZXZfd2Fybl9yYXRlbGltaXRlZCgmYW1wO25ldGRldi0mZ3Q7ZGV2LAogCQkJCSAgICAgJiMzNDtVbmV4cGVjdGVkIEV0aGVyVHlwZSAweCUwNHhcbiYjMzQ7LAogCQkJCSAgICAgbnRvaHModGFnWzBdKSk7CiYjNDM7CQlrZnJlZV9za2Ioc2tiKTsKIAkJcmV0dXJuIE5VTEw7CiAJfQogCkBAIC0xMDQsNiAmIzQzOzEwNyw3IEBAIHl0OTIxeF90YWdfcmN2KHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYpCiAJaWYgKHVubGlrZWx5KChyeCAmYW1wOyBZVDkyMVhfVEFHX1BPUlRfRU4pID09IDApKSB7CiAJCWRldl93YXJuX3JhdGVsaW1pdGVkKCZhbXA7bmV0ZGV2LSZndDtkZXYsCiAJCQkJICAgICAmIzM0O1VuZXhwZWN0ZWQgcnggdGFnIDB4JTA0eFxuJiMzNDssIHJ4KTsKJiM0MzsJCWtmcmVlX3NrYihza2IpOwogCQlyZXR1cm4gTlVMTDsKIAl9CiAKQEAgLTExMiw2ICYjNDM7MTE2LDcgQEAgeXQ5MjF4X3RhZ19yY3Yoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldikKIAlpZiAodW5saWtlbHkoIXNrYi0mZ3Q7ZGV2KSkgewogCQlkZXZfd2Fybl9yYXRlbGltaXRlZCgmYW1wO25ldGRldi0mZ3Q7ZGV2LAogCQkJCSAgICAgJiMzNDtDb3VsZG4mIzM5O3QgZGVjb2RlIHNvdXJjZSBwb3J0ICV1XG4mIzM0OywgcG9ydCk7CiYjNDM7CQlrZnJlZV9za2Ioc2tiKTsKIAkJcmV0dXJuIE5VTEw7CiAJfQogCmRpZmYgLS1naXQgYS9uZXQvZHNhL3VzZXIuYyBiL25ldC9kc2EvdXNlci5jCmluZGV4IDg3MDRjMWEzYTViNzQxLi4wNzJmYTc2OTcyY2M2NSAxMDA2NDQKLS0tIGEvbmV0L2RzYS91c2VyLmMKJiM0MzsmIzQzOyYjNDM7IGIvbmV0L2RzYS91c2VyLmMKQEAgLTkzNSwxMyAmIzQzOzkzNSwxMiBAQCBzdGF0aWMgbmV0ZGV2X3R4X3QgZHNhX3VzZXJfeG1pdChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KQogCQlldGhfc2tiX3BhZChza2IpOwogCiAJLyogVHJhbnNtaXQgZnVuY3Rpb24gbWF5IGhhdmUgdG8gcmVhbGxvY2F0ZSB0aGUgb3JpZ2luYWwgU0tCLAotCSAqIGluIHdoaWNoIGNhc2UgaXQgbXVzdCBoYXZlIGZyZWVkIGl0LiBPbmx5IGZyZWUgaXQgaGVyZSBvbiBlcnJvci4KJiM0MzsJICogaW4gd2hpY2ggY2FzZSBpdCBtdXN0IGhhdmUgZnJlZWQgaXQuIFRhZ2dlcnMgd2lsbCBkcm9wIHRoZQomIzQzOwkgKiBwYXNzZWQgc2tiIG9uIGVycm9yLgogCSAqLwogCW5za2IgPSBwLSZndDt4bWl0KHNrYiwgZGV2KTsKLQlpZiAoIW5za2IpIHsKLQkJa2ZyZWVfc2tiKHNrYik7CiYjNDM7CWlmICghbnNrYikKIAkJcmV0dXJuIE5FVERFVl9UWF9PSzsKLQl9CiAKIAlyZXR1cm4gZHNhX2VucXVldWVfc2tiKG5za2IsIGRldik7CiB9CjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI1IDA4OjI5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE4NjgxCgkJCQkJCQlvdXRwdXQ6IDIxCgkJCQkJCQl0aG91Z2h0czogNDE3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgRFNBIFNLQiBNZW1vcnkgTWFuYWdlbWVudCBDaGFuZ2VzKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIHBhdGNoIHNlcmllcyB0b3VjaGluZyBgbmV0L2RzYS90YWdfKi5jYCwgYG5ldC9kc2EvdXNlci5jYCwgYW5kIGBuZXQvZHNhL3RhZy5jYC4gTXkgaW5pdGlhbCByZWFkIGlzIHRoYXQgdGhpcyBpcyBhYm91dCBTS0IgKFNvY2tldCBCdWZmZXIpIG1lbW9yeSBtYW5hZ2VtZW50IGluIHRoZSBEU0EgKERpc3RyaWJ1dGVkIFN3aXRjaCBBcmNoaXRlY3R1cmUpIHRhZ2dlciBmdW5jdGlvbnMuIFNwZWNpZmljYWxseSwgaXQmIzM5O3MgYWJvdXQgZXhwbGljaXRseSBmcmVlaW5nIHRoZSBgc2tiYCB3aXRoaW4gdGhlIHRhZ2dlciBmdW5jdGlvbnMgdGhlbXNlbHZlcywgaW5zdGVhZCBvZiByZWx5aW5nIG9uIHRoZSBjYWxsaW5nIGZ1bmN0aW9ucyAoYGRzYV91c2VyX3htaXRgLCBgZHNhX3N3aXRjaF9yY3ZgKSB0byBoYW5kbGUgaXQgd2hlbiBhIGBOVUxMYCBpcyByZXR1cm5lZC4KCkxldCBtZSBqdXN0IGRvdWJsZS1jaGVjayB0aGF0IGBkc2FfdXNlcl94bWl0YCBjb2RlIHNuaXBwZXQgdG8gYmUgc3VyZToKCmBgYGMKIAluc2tiID0gcC0mZ3Q7eG1pdChza2IsIGRldik7Ci0JaWYgKCFuc2tiKSB7Ci0JCWtmcmVlX3NrYihza2IpOwomIzQzOwlpZiAoIW5za2IpCiAJCXJldHVybiBORVRERVZfVFhfT0s7Ci0JfQpgYGAKCll1cCwgYW5kIHNpbWlsYXJseSBmb3IgYGRzYV9zd2l0Y2hfcmN2YC4uLgoKYGBgYwotCWlmICghbnNrYikgewotCQlrZnJlZV9za2Ioc2tiKTsKJiM0MzsJaWYgKCFuc2tiKQogCQlyZXR1cm4gMDsKLQl9CmBgYAoKU28gdGhlIHRhZ2dlcnMgYXJlIG5vdyBjYWxsaW5nIGBrZnJlZV9za2Ioc2tiKWAgKmJlZm9yZSogcmV0dXJuaW5nIGBOVUxMYC4gSXQmIzM5O3MgZGVmaW5pdGVseSBhIGZ1bmN0aW9uYWwgY2hhbmdlLCBzaGlmdGluZyB3aGVyZSB0aGUgbWVtb3J5IGlzIG1hbmFnZWQsIHRob3VnaCB0aGUgaW50ZW5kZWQgZnVuY3Rpb25hbGl0eSByZW1haW5zIGNvbnNpc3RlbnQuIFRoaXMgaXMgZXNzZW50aWFsbHkgYSBtZW1vcnkgbWFuYWdlbWVudCByZWZhY3RvcmluZyBpbiB0aGUgRFNBIHRhZ2dlciBjb2RlLgoKQnV0IGhlcmUmIzM5O3MgdGhlIGtleSBxdWVzdGlvbiwgZG9lcyB0aGlzICphY3R1YWxseSogY2hhbmdlIHRoZSBleGVjdXRpb24gZmxvdz8gWWVzLCBpdCBkb2VzIGNoYW5nZSB3aGVyZSBga2ZyZWVfc2tiYCBpcyBjYWxsZWQuIFRoYXQmIzM5O3MgdGhlIGNvcmUgb2YgdGhlIGNoYW5nZS4gSXMgdGhpcyBhIGNvZGUgcGF0aCB0aGF0JiMzOTtzIGV2ZW4gZXhlcmNpc2VkIGluIGEgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQgb3IgYnkgZnV6emVycz8gRFNBIGlzIGEgc3Vic3lzdGVtIGZvciBFdGhlcm5ldCBzd2l0Y2hlcywgc28gSSBuZWVkIHRvIHRoaW5rIGFib3V0IGlmIHRoaXMgaXMgcmVhY2hhYmxlLiBXZSBuZWVkIHRvIGNvbnNpZGVyIGhvdyBhY2Nlc3NpYmxlIHRoaXMgY29kZSBpcywgcGFydGljdWxhcmx5IGZvciBzZWN1cml0eSBhdWRpdGluZy4KCkNhbiB3ZSBoaXQgdGhpcyBpbiBzb21ldGhpbmcgbGlrZSBzeXprYWxsZXI/IFN5emthbGxlciBoYXMgc29tZSBEU0Egc3VwcG9ydCwgb3IgYXQgbGVhc3QgdGhlIGFiaWxpdHkgdG8gY3JlYXRlIGR1bW15IERTQSBpbnRlcmZhY2VzIHVzaW5nIHRoZSBgZHNhX2xvb3BgIGRyaXZlci4gSXQmIzM5O3MgdGltZSB0byBjaGVjayBpZiBgQ09ORklHX05FVF9EU0FgIGlzIGVuYWJsZWQgYW5kIGhvdyB3ZSBjYW4gcmVhY2ggdGhpcyBjb2RlLiBJJiMzOTtsbCBuZWVkIHRvIHNlYXJjaCBmb3IgYGRzYV9sb29wYCBhbmQgYGRzYV91c2VyX3htaXRgIGluIHJlbGV2YW50IGJ1aWxkIGNvbmZpZ3VyYXRpb25zIHRvIGNvbmZpcm0uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjUgMDg6Mjk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7ZHNhX3VzZXJfeG1pdCYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtEb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvZHNhL2RzYS5yc3Q9MzE3PUxBRyBzbGF2ZSkuIFRoZXJlZm9yZSwgdGhlIFJYIGRhdGEgcGF0aCBvZiB0aGUgTEFHIERTQSBjb25kdWl0IGlzIG5vdCB1c2VkLlxuRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL2RzYS9kc2EucnN0OjMxODpPbiB0aGUgb3RoZXIgaGFuZCwgVFggdGFrZXMgcGxhY2UgbGluZWFybHk6IGBgZHNhX3VzZXJfeG1pdGBgIGNhbGxzXG5Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvZHNhL2RzYS5yc3QtMzE5LWBgZHNhX2VucXVldWVfc2tiYGAsIHdoaWNoIGNhbGxzIGBgZGV2X3F1ZXVlX3htaXRgYCB0b3dhcmRzIHRoZSBMQUcgRFNBIGNvbmR1aXQuXG4tLVxubmV0L2RzYS91c2VyLmM9OTExPUVYUE9SVF9TWU1CT0xfR1BMKGRzYV9lbnF1ZXVlX3NrYik7XG5uZXQvZHNhL3VzZXIuYy05MTItXG5uZXQvZHNhL3VzZXIuYzo5MTM6c3RhdGljIG5ldGRldl90eF90IGRzYV91c2VyX3htaXQoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IG5ldF9kZXZpY2UgKmRldilcbm5ldC9kc2EvdXNlci5jLTkxNC17XG4tLVxubmV0L2RzYS91c2VyLmM9MjU4Nj1zdGF0aWMgY29uc3Qgc3RydWN0IG5ldF9kZXZpY2Vfb3BzIGRzYV91c2VyX25ldGRldl9vcHMgPSB7XG4tLVxubmV0L2RzYS91c2VyLmMtMjU4OC1cdC5uZG9fc3RvcFx0XHQ9IGRzYV91c2VyX2Nsb3NlLFxubmV0L2RzYS91c2VyLmM6MjU4OTpcdC5uZG9fc3RhcnRfeG1pdFx0XHQ9IGRzYV91c2VyX3htaXQsXG5uZXQvZHNhL3VzZXIuYy0yNTkwLVx0Lm5kb19jaGFuZ2VfcnhfZmxhZ3NcdD0gZHNhX3VzZXJfY2hhbmdlX3J4X2ZsYWdzLFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI1IDA4OjI5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIwMDI5CgkJCQkJCQlvdXRwdXQ6IDE4CgkJCQkJCQl0aG91Z2h0czogMTIxCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkZ1enppbmcgdGhlIERTQSBUYWdnaW5nIENvZGUqKgoKT2theSwgbGV0JiMzOTtzIHRha2UgYSBsb29rIGF0IHRoaXMuIE15IGd1dCB0ZWxscyBtZSB0aGlzIGlzIHJpcGUgZm9yIGZ1enppbmcuIFRoZSBwYXRjaCBpcyB0b3VjaGluZyBgbmV0L2RzYS90YWcuY2AgYW5kIGEgZmV3IG9mIHRoZSBgbmV0L2RzYS90YWdfKi5jYCBmaWxlcywgc28gaXQmIzM5O3MgYWxsIGFib3V0IERTQSB0YWdnaW5nLiBGcm9tIGEgcXVpY2sgZ2xhbmNlLCB0aGUgY2hhbmdlcyBhcmUgY2VudGVyZWQgYXJvdW5kIG1lbW9yeSBtYW5hZ2VtZW50IOKAkyBzcGVjaWZpY2FsbHksIGZyZWVpbmcgYHNrYmAgaW4gZXJyb3IgcGF0aHMuIFRoYXQgaW5zdGFudGx5IHNjcmVhbXMgJiMzNDtwb3RlbnRpYWwgbWVtb3J5IGxlYWsgb3IgZG91YmxlIGZyZWUmIzM0OyB0byBtZS4gSXTigJlzIGRlZmluaXRlbHkgd29ydGggdGhlIGVmZm9ydCB0byB0aHJvdyBzb21lIGZ1enppbmcgYXQgaXQuIE5vdywgd2hhdCYjMzk7cyB0aGUgYXBwcm9wcmlhdGUgc2V0dXA/IEkmIzM5O2xsIG5lZWQgdG8gZW5hYmxlIGBDT05GSUdfTkVUX0RTQWAsIGFuZCBwcm9iYWJseSBzb21lIG9mIHRoZSB0YWdnZXItc3BlY2lmaWMgY29uZmlndXJhdGlvbnMgdG9vLiBMZXQgbWUgZG91YmxlLWNoZWNrIHRoZSBgbmV0L2RzYS9LY29uZmlnYCBmaWxlIHRvIGJlIGNlcnRhaW4gSSBoYXZlIHRoZSByaWdodCBjb25maWd1cmF0aW9uLiBUaW1lIHRvIG1ha2Ugc3VyZSB0aGlzIGNvZGUgaXMgcm9idXN0LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI1IDA4OjI5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBORVRfRFNBJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2RzYS9LY29uZmlnPTU9c291cmNlIFwmIzM0O2RyaXZlcnMvbmV0L2RzYS9iNTMvS2NvbmZpZ1wmIzM0O1xuZHJpdmVycy9uZXQvZHNhL0tjb25maWctNi1cbmRyaXZlcnMvbmV0L2RzYS9LY29uZmlnOjc6Y29uZmlnIE5FVF9EU0FfQkNNX1NGMlxuZHJpdmVycy9uZXQvZHNhL0tjb25maWctOC1cdHRyaXN0YXRlIFwmIzM0O0Jyb2FkY29tIFN0YXJmaWdodGVyIDIgRXRoZXJuZXQgc3dpdGNoIHN1cHBvcnRcJiMzNDtcbi0tXG5kcml2ZXJzL25ldC9kc2EvS2NvbmZpZy0xOC1cbmRyaXZlcnMvbmV0L2RzYS9LY29uZmlnOjE5OmNvbmZpZyBORVRfRFNBX0xPT1BcbmRyaXZlcnMvbmV0L2RzYS9LY29uZmlnLTIwLVx0dHJpc3RhdGUgXCYjMzQ7RFNBIG1vY2stdXAgRXRoZXJuZXQgc3dpdGNoIGNoaXAgc3VwcG9ydFwmIzM0O1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9LY29uZmlnPTI5PXNvdXJjZSBcJiMzNDtkcml2ZXJzL25ldC9kc2EvbGFudGlxL0tjb25maWdcJiMzNDtcbmRyaXZlcnMvbmV0L2RzYS9LY29uZmlnLTMwLVxuZHJpdmVycy9uZXQvZHNhL0tjb25maWc6MzE6Y29uZmlnIE5FVF9EU0FfTVQ3NTMwXG5kcml2ZXJzL25ldC9kc2EvS2NvbmZpZy0zMi1cdHRyaXN0YXRlIFwmIzM0O01lZGlhVGVrIE1UNzUzMCBhbmQgTVQ3NTMxIEV0aGVybmV0IHN3aXRjaCBzdXBwb3J0XCYjMzQ7XG4tLVxuZHJpdmVycy9uZXQvZHNhL0tjb25maWctNDItXG5kcml2ZXJzL25ldC9kc2EvS2NvbmZpZzo0Mzpjb25maWcgTkVUX0RTQV9NVDc1MzBfTURJT1xuZHJpdmVycy9uZXQvZHNhL0tjb25maWctNDQtXHR0cmlzdGF0ZSBcJiMzNDtNZWRpYVRlayBNVDc1MzAgTURJTyBpbnRlcmZhY2UgZHJpdmVyXCYjMzQ7XG4tLVxuZHJpdmVycy9uZXQvZHNhL0tjb25maWctNTMtXG5kcml2ZXJzL25ldC9kc2EvS2NvbmZpZzo1NDpjb25maWcgTkVUX0RTQV9NVDc1MzBfTU1JT1xuZHJpdmVycy9uZXQvZHNhL0tjb25maWctNTUtXHR0cmlzdGF0ZSBcJiMzNDtNZWRpYVRlayBNVDc1MzAgTU1JTyBpbnRlcmZhY2UgZHJpdmVyXCYjMzQ7XG4tLVxuZHJpdmVycy9uZXQvZHNhL0tjb25maWctNjUtXG5kcml2ZXJzL25ldC9kc2EvS2NvbmZpZzo2Njpjb25maWcgTkVUX0RTQV9NVjg4RTYwNjBcbmRyaXZlcnMvbmV0L2RzYS9LY29uZmlnLTY3LVx0dHJpc3RhdGUgXCYjMzQ7TWFydmVsbCA4OEU2MDYwIGV0aGVybmV0IHN3aXRjaCBjaGlwIHN1cHBvcnRcJiMzNDtcbi0tXG5kcml2ZXJzL25ldC9kc2EvS2NvbmZpZz04OT1zb3VyY2UgXCYjMzQ7ZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvS2NvbmZpZ1wmIzM0O1xuZHJpdmVycy9uZXQvZHNhL0tjb25maWctOTAtXG5kcml2ZXJzL25ldC9kc2EvS2NvbmZpZzo5MTpjb25maWcgTkVUX0RTQV9SWk4xX0E1UFNXXG5kcml2ZXJzL25ldC9kc2EvS2NvbmZpZy05Mi1cdHRyaXN0YXRlIFwmIzM0O1JlbmVzYXMgUlovTjEgQTVQU1cgRXRoZXJuZXQgc3dpdGNoIHN1cHBvcnRcJiMzNDtcbi0tXG5kcml2ZXJzL25ldC9kc2EvS2NvbmZpZy05OS1cbmRyaXZlcnMvbmV0L2RzYS9LY29uZmlnOjEwMDpjb25maWcgTkVUX0RTQV9LUzg5OTVcbmRyaXZlcnMvbmV0L2RzYS9LY29uZmlnLTEwMS1cdHRyaXN0YXRlIFwmIzM0O01pY3JlbCBLUzg5OTUgZmFtaWx5IDUtcG9ydHMgMTAvMTAwIEV0aGVybmV0IHN3aXRjaGVzXCYjMzQ7XG4tLVxuZHJpdmVycy9uZXQvZHNhL0tjb25maWctMTA3LVxuZHJpdmVycy9uZXQvZHNhL0tjb25maWc6MTA4OmNvbmZpZyBORVRfRFNBX1NNU0NfTEFOOTMwM1xuZHJpdmVycy9uZXQvZHNhL0tjb25maWctMTA5LVx0dHJpc3RhdGVcbi0tXG5kcml2ZXJzL25ldC9kc2EvS2NvbmZpZy0xMTYtXG5kcml2ZXJzL25ldC9kc2EvS2NvbmZpZzoxMTc6Y29uZmlnIE5FVF9EU0FfU01TQ19MQU45MzAzX0kyQ1xuZHJpdmVycy9uZXQvZHNhL0tjb25maWctMTE4LVx0dHJpc3RhdGUgXCYjMzQ7U01TQy9NaWNyb2NoaXAgTEFOOTMwMyAzLXBvcnRzIDEwLzEwMCBldGhlcm5ldCBzd2l0Y2ggaW4gSTJDIG1hbmFnZWQgbW9kZVwmIzM0O1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9LY29uZmlnLTEyNi1cbmRyaXZlcnMvbmV0L2RzYS9LY29uZmlnOjEyNzpjb25maWcgTkVUX0RTQV9TTVNDX0xBTjkzMDNfTURJT1xuZHJpdmVycy9uZXQvZHNhL0tjb25maWctMTI4LVx0dHJpc3RhdGUgXCYjMzQ7TWljcm9jaGlwIExBTjkzMDMvTEFOOTM1NCAzLXBvcnRzIDEwLzEwMCBldGhlcm5ldCBzd2l0Y2ggaW4gTURJTyBtYW5hZ2VkIG1vZGVcJiMzNDtcbi0tXG5kcml2ZXJzL25ldC9kc2EvS2NvbmZpZy0xMzQtXG5kcml2ZXJzL25ldC9kc2EvS2NvbmZpZzoxMzU6Y29uZmlnIE5FVF9EU0FfVklURVNTRV9WU0M3M1hYXG5kcml2ZXJzL25ldC9kc2EvS2NvbmZpZy0xMzYtXHR0cmlzdGF0ZVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9LY29uZmlnLTE0NC1cbmRyaXZlcnMvbmV0L2RzYS9LY29uZmlnOjE0NTpjb25maWcgTkVUX0RTQV9WSVRFU1NFX1ZTQzczWFhfU1BJXG5kcml2ZXJzL25ldC9kc2EvS2NvbmZpZy0xNDYtXHR0cmlzdGF0ZSBcJiMzNDtWaXRlc3NlIFZTQzczODUvNzM4OC83Mzk1LzczOTggU1BJIG1vZGUgc3VwcG9ydFwmIzM0O1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9LY29uZmlnLTE1Mi1cbmRyaXZlcnMvbmV0L2RzYS9LY29uZmlnOjE1Mzpjb25maWcgTkVUX0RTQV9WSVRFU1NFX1ZTQzczWFhfUExBVEZPUk1cbmRyaXZlcnMvbmV0L2RzYS9LY29uZmlnLTE1NC1cdHRyaXN0YXRlIFwmIzM0O1ZpdGVzc2UgVlNDNzM4NS83Mzg4LzczOTUvNzM5OCBQbGF0Zm9ybSBtb2RlIHN1cHBvcnRcJiMzNDtcbi0tXG5kcml2ZXJzL25ldC9kc2EvS2NvbmZpZy0xNjEtXG5kcml2ZXJzL25ldC9kc2EvS2NvbmZpZzoxNjI6Y29uZmlnIE5FVF9EU0FfWVQ5MjFYXG5kcml2ZXJzL25ldC9kc2EvS2NvbmZpZy0xNjMtXHR0cmlzdGF0ZSBcJiMzNDtNb3RvcmNvbW0gWVQ5MjE1IGV0aGVybmV0IHN3aXRjaCBjaGlwIHN1cHBvcnRcJiMzNDtcbi0tXG5kcml2ZXJzL25ldC9kc2EvaGlyc2NobWFubi9LY29uZmlnLTEtIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMFxuZHJpdmVycy9uZXQvZHNhL2hpcnNjaG1hbm4vS2NvbmZpZzoyOmNvbmZpZyBORVRfRFNBX0hJUlNDSE1BTk5fSEVMTENSRUVLXG5kcml2ZXJzL25ldC9kc2EvaGlyc2NobWFubi9LY29uZmlnLTMtXHR0cmlzdGF0ZSBcJiMzNDtIaXJzY2htYW5uIEhlbGxjcmVlayBUU04gU3dpdGNoIHN1cHBvcnRcJiMzNDtcbi0tXG5kcml2ZXJzL25ldC9kc2EvbGFudGlxL0tjb25maWc6MTpjb25maWcgTkVUX0RTQV9MQU5USVFfQ09NTU9OXG5kcml2ZXJzL25ldC9kc2EvbGFudGlxL0tjb25maWctMi1cdHRyaXN0YXRlXG4tLVxuZHJpdmVycy9uZXQvZHNhL2xhbnRpcS9LY29uZmlnLTQtXG5kcml2ZXJzL25ldC9kc2EvbGFudGlxL0tjb25maWc6NTpjb25maWcgTkVUX0RTQV9MQU5USVFfR1NXSVBcbmRyaXZlcnMvbmV0L2RzYS9sYW50aXEvS2NvbmZpZy02LVx0dHJpc3RhdGUgXCYjMzQ7TGFudGlxIC8gSW50ZWwgR1NXSVBcJiMzNDtcbi0tXG5kcml2ZXJzL25ldC9kc2EvbGFudGlxL0tjb25maWctMTMtXG5kcml2ZXJzL25ldC9kc2EvbGFudGlxL0tjb25maWc6MTQ6Y29uZmlnIE5FVF9EU0FfTVhMX0dTVzFYWFxuZHJpdmVycy9uZXQvZHNhL2xhbnRpcS9LY29uZmlnLTE1LVx0dHJpc3RhdGUgXCYjMzQ7TWF4TGluZWFyIEdTVzF4eCBFdGhlcm5ldCBzd2l0Y2ggc3VwcG9ydFwmIzM0O1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAvS2NvbmZpZy0xLSMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9LY29uZmlnOjI6bWVudWNvbmZpZyBORVRfRFNBX01JQ1JPQ0hJUF9LU1pfQ09NTU9OXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL0tjb25maWctMy1cdHRyaXN0YXRlIFwmIzM0O01pY3JvY2hpcCBLU1o4WFhYL0tTWjlYWFgvTEFOOTM3WCBzZXJpZXMgc3dpdGNoIHN1cHBvcnRcJiMzNDtcbi0tXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL0tjb25maWctMTYtXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL0tjb25maWc6MTc6Y29uZmlnIE5FVF9EU0FfTUlDUk9DSElQX0tTWjk0NzdfSTJDXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL0tjb25maWctMTgtXHR0cmlzdGF0ZSBcJiMzNDtLU1ogc2VyaWVzIEkyQyBjb25uZWN0ZWQgc3dpdGNoIGRyaXZlclwmIzM0O1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAvS2NvbmZpZy0yMy1cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAvS2NvbmZpZzoyNDpjb25maWcgTkVUX0RTQV9NSUNST0NISVBfS1NaX1NQSVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9LY29uZmlnLTI1LVx0dHJpc3RhdGUgXCYjMzQ7S1NaIHNlcmllcyBTUEkgY29ubmVjdGVkIHN3aXRjaCBkcml2ZXJcJiMzNDtcbi0tXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL0tjb25maWctMzAtXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL0tjb25maWc6MzE6Y29uZmlnIE5FVF9EU0FfTUlDUk9DSElQX0tTWl9QVFBcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAvS2NvbmZpZy0zMi1cdGJvb2wgXCYjMzQ7U3VwcG9ydCBmb3IgdGhlIFBUUCBjbG9jayBvbiB0aGUgS1NaOTU2My9MQU45Mzd4IEV0aGVybmV0IFN3aXRjaFwmIzM0O1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAvS2NvbmZpZy00MC1cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAvS2NvbmZpZzo0MTpjb25maWcgTkVUX0RTQV9NSUNST0NISVBfS1NaODg2M19TTUlcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAvS2NvbmZpZy00Mi1cdHRyaXN0YXRlIFwmIzM0O0tTWiBzZXJpZXMgU01JIGNvbm5lY3RlZCBzd2l0Y2ggZHJpdmVyXCYjMzQ7XG4tLVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9LY29uZmlnLTEtIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L0tjb25maWc6Mjpjb25maWcgTkVUX0RTQV9NVjg4RTZYWFhcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvS2NvbmZpZy0zLVx0dHJpc3RhdGUgXCYjMzQ7TWFydmVsbCA4OEU2eHh4IEV0aGVybmV0IHN3aXRjaCBmYWJyaWMgc3VwcG9ydFwmIzM0O1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvS2NvbmZpZy0xMS1cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvS2NvbmZpZzoxMjpjb25maWcgTkVUX0RTQV9NVjg4RTZYWFhfUFRQXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L0tjb25maWctMTMtXHRib29sIFwmIzM0O1BUUCBzdXBwb3J0IGZvciBNYXJ2ZWxsIDg4RTZ4eHhcJiMzNDtcbi0tXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L0tjb25maWctMjAtXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L0tjb25maWc6MjE6Y29uZmlnIE5FVF9EU0FfTVY4OEU2WFhYX0xFRFNcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvS2NvbmZpZy0yMi1cdGJvb2wgXCYjMzQ7TEVEIHN1cHBvcnQgZm9yIE1hcnZlbGwgODhFNnh4eFwmIzM0O1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9LY29uZmlnLTEtIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XG5kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvS2NvbmZpZzoyOmNvbmZpZyBORVRfRFNBX01YTDg2MlxuZHJpdmVycy9uZXQvZHNhL214bDg2Mnh4L0tjb25maWctMy1cdHRyaXN0YXRlIFwmIzM0O01heExpbmVhciBNeEw4NjJ4eFwmIzM0O1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9uZXRjL0tjb25maWctMS0jIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcbmRyaXZlcnMvbmV0L2RzYS9uZXRjL0tjb25maWc6Mjpjb25maWcgTkVUX0RTQV9ORVRDX1NXSVRDSFxuZHJpdmVycy9uZXQvZHNhL25ldGMvS2NvbmZpZy0zLVx0dHJpc3RhdGUgXCYjMzQ7TlhQIE5FVEMgRXRoZXJuZXQgc3dpdGNoIHN1cHBvcnRcJiMzNDtcbi0tXG5kcml2ZXJzL25ldC9kc2Evb2NlbG90L0tjb25maWctMS0jIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcbmRyaXZlcnMvbmV0L2RzYS9vY2Vsb3QvS2NvbmZpZzoyOmNvbmZpZyBORVRfRFNBX01TQ0NfRkVMSVhfRFNBX0xJQlxuZHJpdmVycy9uZXQvZHNhL29jZWxvdC9LY29uZmlnLTMtXHR0cmlzdGF0ZVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9vY2Vsb3QvS2NvbmZpZy0xMC1cbmRyaXZlcnMvbmV0L2RzYS9vY2Vsb3QvS2NvbmZpZzoxMTpjb25maWcgTkVUX0RTQV9NU0NDX09DRUxPVF9FWFRcbmRyaXZlcnMvbmV0L2RzYS9vY2Vsb3QvS2NvbmZpZy0xMi1cdHRyaXN0YXRlIFwmIzM0O09jZWxvdCBFeHRlcm5hbCBFdGhlcm5ldCBzd2l0Y2ggc3VwcG9ydFwmIzM0O1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9vY2Vsb3QvS2NvbmZpZy0zMS1cbmRyaXZlcnMvbmV0L2RzYS9vY2Vsb3QvS2NvbmZpZzozMjpjb25maWcgTkVUX0RTQV9NU0NDX0ZFTElYXG5kcml2ZXJzL25ldC9kc2Evb2NlbG90L0tjb25maWctMzMtXHR0cmlzdGF0ZSBcJiMzNDtPY2Vsb3QgLyBGZWxpeCBFdGhlcm5ldCBzd2l0Y2ggc3VwcG9ydFwmIzM0O1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9vY2Vsb3QvS2NvbmZpZy00OS1cbmRyaXZlcnMvbmV0L2RzYS9vY2Vsb3QvS2NvbmZpZzo1MDpjb25maWcgTkVUX0RTQV9NU0NDX1NFVklMTEVcbmRyaXZlcnMvbmV0L2RzYS9vY2Vsb3QvS2NvbmZpZy01MS1cdHRyaXN0YXRlIFwmIzM0O09jZWxvdCAvIFNldmlsbGUgRXRoZXJuZXQgc3dpdGNoIHN1cHBvcnRcJiMzNDtcbi0tXG5kcml2ZXJzL25ldC9kc2EvcWNhL0tjb25maWctMS0jIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcbmRyaXZlcnMvbmV0L2RzYS9xY2EvS2NvbmZpZzoyOmNvbmZpZyBORVRfRFNBX0FSOTMzMVxuZHJpdmVycy9uZXQvZHNhL3FjYS9LY29uZmlnLTMtXHR0cmlzdGF0ZSBcJiMzNDtRdWFsY29tbSBBdGhlcm9zIEFSOTMzMSBFdGhlcm5ldCBzd2l0Y2ggc3VwcG9ydFwmIzM0O1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9xY2EvS2NvbmZpZy0xMC1cbmRyaXZlcnMvbmV0L2RzYS9xY2EvS2NvbmZpZzoxMTpjb25maWcgTkVUX0RTQV9RQ0E4S1xuZHJpdmVycy9uZXQvZHNhL3FjYS9LY29uZmlnLTEyLVx0dHJpc3RhdGUgXCYjMzQ7UXVhbGNvbW0gQXRoZXJvcyBRQ0E4SyBFdGhlcm5ldCBzd2l0Y2ggZmFtaWx5IHN1cHBvcnRcJiMzNDtcbi0tXG5kcml2ZXJzL25ldC9kc2EvcWNhL0tjb25maWctMTgtXG5kcml2ZXJzL25ldC9kc2EvcWNhL0tjb25maWc6MTk6Y29uZmlnIE5FVF9EU0FfUUNBOEtfTEVEU19TVVBQT1JUXG5kcml2ZXJzL25ldC9kc2EvcWNhL0tjb25maWctMjAtXHRib29sIFwmIzM0O1F1YWxjb21tIEF0aGVyb3MgUUNBOEsgRXRoZXJuZXQgc3dpdGNoIGZhbWlseSBMRURzIHN1cHBvcnRcJiMzNDtcbi0tXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9LY29uZmlnLTEtIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9LY29uZmlnOjI6bWVudWNvbmZpZyBORVRfRFNBX1JFQUxURUtcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL0tjb25maWctMy1cdHRyaXN0YXRlIFwmIzM0O1JlYWx0ZWsgRXRoZXJuZXQgc3dpdGNoIGZhbWlseSBzdXBwb3J0XCYjMzQ7XG4tLVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvS2NvbmZpZz0xNj1pZiBORVRfRFNBX1JFQUxURUtcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL0tjb25maWctMTctXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9LY29uZmlnOjE4OmNvbmZpZyBORVRfRFNBX1JFQUxURUtfTURJT1xuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvS2NvbmZpZy0xOS1cdGJvb2wgXCYjMzQ7UmVhbHRlayBNRElPIGludGVyZmFjZSBzdXBwb3J0XCYjMzQ7XG4tLVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvS2NvbmZpZy0yNC1cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL0tjb25maWc6MjU6Y29uZmlnIE5FVF9EU0FfUkVBTFRFS19TTUlcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL0tjb25maWctMjYtXHRib29sIFwmIzM0O1JlYWx0ZWsgU01JIGludGVyZmFjZSBzdXBwb3J0XCYjMzQ7XG4tLVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvS2NvbmZpZy0zMS1cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL0tjb25maWc6MzI6Y29uZmlnIE5FVF9EU0FfUkVBTFRFS19SVEw4MzY1TUJcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL0tjb25maWctMzMtXHR0cmlzdGF0ZSBcJiMzNDtSZWFsdGVrIFJUTDgzNjVNQiBzd2l0Y2ggZHJpdmVyXCYjMzQ7XG4tLVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvS2NvbmZpZy0zOC1cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL0tjb25maWc6Mzk6Y29uZmlnIE5FVF9EU0FfUkVBTFRFS19SVEw4MzY2UkJcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL0tjb25maWctNDAtXHR0cmlzdGF0ZSBcJiMzNDtSZWFsdGVrIFJUTDgzNjZSQiBzd2l0Y2ggZHJpdmVyXCYjMzQ7XG4tLVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvS2NvbmZpZy00NS1cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL0tjb25maWc6NDY6Y29uZmlnIE5FVF9EU0FfUkVBTFRFS19SVEw4MzY2UkJfTEVEU1xuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvS2NvbmZpZy00Ny1cdGJvb2xcbi0tXG5kcml2ZXJzL25ldC9kc2Evc2phMTEwNS9LY29uZmlnLTEtIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XG5kcml2ZXJzL25ldC9kc2Evc2phMTEwNS9LY29uZmlnOjI6Y29uZmlnIE5FVF9EU0FfU0pBMTEwNVxuZHJpdmVycy9uZXQvZHNhL3NqYTExMDUvS2NvbmZpZy0zLXRyaXN0YXRlIFwmIzM0O05YUCBTSkExMTA1IEV0aGVybmV0IHN3aXRjaCBmYW1pbHkgc3VwcG9ydFwmIzM0O1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9zamExMTA1L0tjb25maWctMjUtXG5kcml2ZXJzL25ldC9kc2Evc2phMTEwNS9LY29uZmlnOjI2OmNvbmZpZyBORVRfRFNBX1NKQTExMDVfUFRQXG5kcml2ZXJzL25ldC9kc2Evc2phMTEwNS9LY29uZmlnLTI3LVx0Ym9vbCBcJiMzNDtTdXBwb3J0IGZvciB0aGUgUFRQIGNsb2NrIG9uIHRoZSBOWFAgU0pBMTEwNSBFdGhlcm5ldCBzd2l0Y2hcJiMzNDtcbi0tXG5kcml2ZXJzL25ldC9kc2Evc2phMTEwNS9LY29uZmlnLTMzLVxuZHJpdmVycy9uZXQvZHNhL3NqYTExMDUvS2NvbmZpZzozNDpjb25maWcgTkVUX0RTQV9TSkExMTA1X1RBU1xuZHJpdmVycy9uZXQvZHNhL3NqYTExMDUvS2NvbmZpZy0zNS1cdGJvb2wgXCYjMzQ7U3VwcG9ydCBmb3IgdGhlIFRpbWUtQXdhcmUgU2NoZWR1bGVyIG9uIE5YUCBTSkExMTA1XCYjMzQ7XG4tLVxuZHJpdmVycy9uZXQvZHNhL3NqYTExMDUvS2NvbmZpZy00My1cbmRyaXZlcnMvbmV0L2RzYS9zamExMTA1L0tjb25maWc6NDQ6Y29uZmlnIE5FVF9EU0FfU0pBMTEwNV9WTFxuZHJpdmVycy9uZXQvZHNhL3NqYTExMDUvS2NvbmZpZy00NS1cdGJvb2wgXCYjMzQ7U3VwcG9ydCBmb3IgVmlydHVhbCBMaW5rcyBvbiBOWFAgU0pBMTEwNVwmIzM0O1xuLS1cbmRyaXZlcnMvbmV0L2RzYS94cnM3MDB4L0tjb25maWctMS0jIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcbmRyaXZlcnMvbmV0L2RzYS94cnM3MDB4L0tjb25maWc6Mjpjb25maWcgTkVUX0RTQV9YUlM3MDBYXG5kcml2ZXJzL25ldC9kc2EveHJzNzAweC9LY29uZmlnLTMtXHR0cmlzdGF0ZVxuLS1cbmRyaXZlcnMvbmV0L2RzYS94cnM3MDB4L0tjb25maWctMTAtXG5kcml2ZXJzL25ldC9kc2EveHJzNzAweC9LY29uZmlnOjExOmNvbmZpZyBORVRfRFNBX1hSUzcwMFhfSTJDXG5kcml2ZXJzL25ldC9kc2EveHJzNzAweC9LY29uZmlnLTEyLVx0dHJpc3RhdGUgXCYjMzQ7QXJyb3cgWFJTNzAwMFggc2VyaWVzIHN3aXRjaCBpbiBJMkMgbW9kZVwmIzM0O1xuLS1cbmRyaXZlcnMvbmV0L2RzYS94cnM3MDB4L0tjb25maWctMTktXG5kcml2ZXJzL25ldC9kc2EveHJzNzAweC9LY29uZmlnOjIwOmNvbmZpZyBORVRfRFNBX1hSUzcwMFhfTURJT1xuZHJpdmVycy9uZXQvZHNhL3hyczcwMHgvS2NvbmZpZy0yMS1cdHRyaXN0YXRlIFwmIzM0O0Fycm93IFhSUzcwMDBYIHNlcmllcyBzd2l0Y2ggaW4gTURJTyBtb2RlXCYjMzQ7XG4tLVxubmV0L2RzYS9LY29uZmlnLTItXG5uZXQvZHNhL0tjb25maWc6MzptZW51Y29uZmlnIE5FVF9EU0Fcbm5ldC9kc2EvS2NvbmZpZy00LVx0dHJpc3RhdGUgXCYjMzQ7RGlzdHJpYnV0ZWQgU3dpdGNoIEFyY2hpdGVjdHVyZVwmIzM0O1xuLS1cbm5ldC9kc2EvS2NvbmZpZz0xNz1pZiBORVRfRFNBXG4tLVxubmV0L2RzYS9LY29uZmlnLTIwLVxubmV0L2RzYS9LY29uZmlnOjIxOmNvbmZpZyBORVRfRFNBX1RBR19OT05FXG5uZXQvZHNhL0tjb25maWctMjItXHR0cmlzdGF0ZSBcJiMzNDtOby1vcCB0YWcgZHJpdmVyXCYjMzQ7XG4tLVxubmV0L2RzYS9LY29uZmlnLTI2LVxubmV0L2RzYS9LY29uZmlnOjI3OmNvbmZpZyBORVRfRFNBX1RBR19BUjkzMzFcbm5ldC9kc2EvS2NvbmZpZy0yOC1cdHRyaXN0YXRlIFwmIzM0O1RhZyBkcml2ZXIgZm9yIEF0aGVyb3MgQVI5MzMxIFNvQyB3aXRoIGJ1aWx0LWluIHN3aXRjaFwmIzM0O1xuLS1cbm5ldC9kc2EvS2NvbmZpZy0zMi1cbm5ldC9kc2EvS2NvbmZpZzozMzpjb25maWcgTkVUX0RTQV9UQUdfQlJDTV9DT01NT05cbm5ldC9kc2EvS2NvbmZpZy0zNC1cdHRyaXN0YXRlXG4tLVxubmV0L2RzYS9LY29uZmlnLTM2LVxubmV0L2RzYS9LY29uZmlnOjM3OmNvbmZpZyBORVRfRFNBX1RBR19CUkNNXG5uZXQvZHNhL0tjb25maWctMzgtXHR0cmlzdGF0ZSBcJiMzNDtUYWcgZHJpdmVyIGZvciBCcm9hZGNvbSBzd2l0Y2hlcyB1c2luZyBpbi1mcmFtZSBoZWFkZXJzXCYjMzQ7XG4tLVxubmV0L2RzYS9LY29uZmlnLTQzLVxubmV0L2RzYS9LY29uZmlnOjQ0OmNvbmZpZyBORVRfRFNBX1RBR19CUkNNX0xFR0FDWVxubmV0L2RzYS9LY29uZmlnLTQ1LVx0dHJpc3RhdGUgXCYjMzQ7VGFnIGRyaXZlciBmb3IgQkNNNjN4eCBsZWdhY3kgc3dpdGNoZXMgdXNpbmcgaW4tZnJhbWUgaGVhZGVyc1wmIzM0O1xuLS1cbm5ldC9kc2EvS2NvbmZpZy01My1cbm5ldC9kc2EvS2NvbmZpZzo1NDpjb25maWcgTkVUX0RTQV9UQUdfQlJDTV9MRUdBQ1lfRkNTXG5uZXQvZHNhL0tjb25maWctNTUtXHR0cmlzdGF0ZSBcJiMzNDtUYWcgZHJpdmVyIGZvciBCQ001M3h4IGxlZ2FjeSBzd2l0Y2hlcyB1c2luZyBpbi1mcmFtZSBoZWFkZXJzXCYjMzQ7XG4tLVxubmV0L2RzYS9LY29uZmlnLTYzLVxubmV0L2RzYS9LY29uZmlnOjY0OmNvbmZpZyBORVRfRFNBX1RBR19CUkNNX1BSRVBFTkRcbm5ldC9kc2EvS2NvbmZpZy02NS1cdHRyaXN0YXRlIFwmIzM0O1RhZyBkcml2ZXIgZm9yIEJyb2FkY29tIHN3aXRjaGVzIHVzaW5nIHByZXBlbmRlZCBoZWFkZXJzXCYjMzQ7XG4tLVxubmV0L2RzYS9LY29uZmlnLTcxLVxubmV0L2RzYS9LY29uZmlnOjcyOmNvbmZpZyBORVRfRFNBX1RBR19IRUxMQ1JFRUtcbm5ldC9kc2EvS2NvbmZpZy03My1cdHRyaXN0YXRlIFwmIzM0O1RhZyBkcml2ZXIgZm9yIEhpcnNjaG1hbm4gSGVsbGNyZWVrIFRTTiBzd2l0Y2hlc1wmIzM0O1xuLS1cbm5ldC9kc2EvS2NvbmZpZy03Ny1cbm5ldC9kc2EvS2NvbmZpZzo3ODpjb25maWcgTkVUX0RTQV9UQUdfR1NXSVBcbm5ldC9kc2EvS2NvbmZpZy03OS1cdHRyaXN0YXRlIFwmIzM0O1RhZyBkcml2ZXIgZm9yIExhbnRpcSAvIEludGVsIEdTV0lQIHN3aXRjaGVzXCYjMzQ7XG4tLVxubmV0L2RzYS9LY29uZmlnLTgzLVxubmV0L2RzYS9LY29uZmlnOjg0OmNvbmZpZyBORVRfRFNBX1RBR19EU0FfQ09NTU9OXG5uZXQvZHNhL0tjb25maWctODUtXHR0cmlzdGF0ZVxubmV0L2RzYS9LY29uZmlnLTg2LVxubmV0L2RzYS9LY29uZmlnOjg3OmNvbmZpZyBORVRfRFNBX1RBR19EU0Fcbm5ldC9kc2EvS2NvbmZpZy04OC1cdHRyaXN0YXRlIFwmIzM0O1RhZyBkcml2ZXIgZm9yIE1hcnZlbGwgc3dpdGNoZXMgdXNpbmcgRFNBIGhlYWRlcnNcJiMzNDtcbi0tXG5uZXQvZHNhL0tjb25maWctOTMtXG5uZXQvZHNhL0tjb25maWc6OTQ6Y29uZmlnIE5FVF9EU0FfVEFHX0VEU0Fcbm5ldC9kc2EvS2NvbmZpZy05NS1cdHRyaXN0YXRlIFwmIzM0O1RhZyBkcml2ZXIgZm9yIE1hcnZlbGwgc3dpdGNoZXMgdXNpbmcgRXRoZXJUeXBlIERTQSBoZWFkZXJzXCYjMzQ7XG4tLVxubmV0L2RzYS9LY29uZmlnLTEwMC1cbm5ldC9kc2EvS2NvbmZpZzoxMDE6Y29uZmlnIE5FVF9EU0FfVEFHX01US1xubmV0L2RzYS9LY29uZmlnLTEwMi1cdHRyaXN0YXRlIFwmIzM0O1RhZyBkcml2ZXIgZm9yIE1lZGlhdGVrIHN3aXRjaGVzXCYjMzQ7XG4tLVxubmV0L2RzYS9LY29uZmlnLTEwNi1cbm5ldC9kc2EvS2NvbmZpZzoxMDc6Y29uZmlnIE5FVF9EU0FfVEFHX01YTF84NjJYWFxubmV0L2RzYS9LY29uZmlnLTEwOC1cdHRyaXN0YXRlIFwmIzM0O1RhZyBkcml2ZXIgZm9yIE1heExpbmVhciBNeEw4NjJ4eCBzd2l0Y2hlc1wmIzM0O1xuLS1cbm5ldC9kc2EvS2NvbmZpZy0xMTMtXG5uZXQvZHNhL0tjb25maWc6MTE0OmNvbmZpZyBORVRfRFNBX1RBR19NWExfR1NXMVhYXG5uZXQvZHNhL0tjb25maWctMTE1LVx0dHJpc3RhdGUgXCYjMzQ7VGFnIGRyaXZlciBmb3IgTWF4TGluZWFyIEdTVzF4eCBzd2l0Y2hlc1wmIzM0O1xuLS1cbm5ldC9kc2EvS2NvbmZpZy0xMjEtXG5uZXQvZHNhL0tjb25maWc6MTIyOmNvbmZpZyBORVRfRFNBX1RBR19LU1pcbm5ldC9kc2EvS2NvbmZpZy0xMjMtXHR0cmlzdGF0ZSBcJiMzNDtUYWcgZHJpdmVyIGZvciBNaWNyb2NoaXAgODc5NS85Mzd4Lzk0NzcvOTg5MyBmYW1pbGllcyBvZiBzd2l0Y2hlc1wmIzM0O1xuLS1cbm5ldC9kc2EvS2NvbmZpZy0xMjctXG5uZXQvZHNhL0tjb25maWc6MTI4OmNvbmZpZyBORVRfRFNBX1RBR19ORVRDXG5uZXQvZHNhL0tjb25maWctMTI5LVx0dHJpc3RhdGUgXCYjMzQ7VGFnIGRyaXZlciBmb3IgTlhQIE5FVEMgc3dpdGNoZXNcJiMzNDtcbi0tXG5uZXQvZHNhL0tjb25maWctMTM3LVxubmV0L2RzYS9LY29uZmlnOjEzODpjb25maWcgTkVUX0RTQV9UQUdfT0NFTE9UXG5uZXQvZHNhL0tjb25maWctMTM5LVx0dHJpc3RhdGUgXCYjMzQ7VGFnIGRyaXZlciBmb3IgT2NlbG90IGZhbWlseSBvZiBzd2l0Y2hlcywgdXNpbmcgTlBJIHBvcnRcJiMzNDtcbi0tXG5uZXQvZHNhL0tjb25maWctMTQ4LVxubmV0L2RzYS9LY29uZmlnOjE0OTpjb25maWcgTkVUX0RTQV9UQUdfT0NFTE9UXzgwMjFRXG5uZXQvZHNhL0tjb25maWctMTUwLVx0dHJpc3RhdGUgXCYjMzQ7VGFnIGRyaXZlciBmb3IgT2NlbG90IGZhbWlseSBvZiBzd2l0Y2hlcywgdXNpbmcgVkxBTlwmIzM0O1xuLS1cbm5ldC9kc2EvS2NvbmZpZy0xNTgtXG5uZXQvZHNhL0tjb25maWc6MTU5OmNvbmZpZyBORVRfRFNBX1RBR19RQ0Fcbm5ldC9kc2EvS2NvbmZpZy0xNjAtXHR0cmlzdGF0ZSBcJiMzNDtUYWcgZHJpdmVyIGZvciBRdWFsY29tbSBBdGhlcm9zIFFDQThLIHN3aXRjaGVzXCYjMzQ7XG4tLVxubmV0L2RzYS9LY29uZmlnLTE2NC1cbm5ldC9kc2EvS2NvbmZpZzoxNjU6Y29uZmlnIE5FVF9EU0FfVEFHX1JUTDRfQVxubmV0L2RzYS9LY29uZmlnLTE2Ni1cdHRyaXN0YXRlIFwmIzM0O1RhZyBkcml2ZXIgZm9yIFJlYWx0ZWsgNCBieXRlIHByb3RvY29sIEEgdGFnc1wmIzM0O1xuLS1cbm5ldC9kc2EvS2NvbmZpZy0xNzEtXG5uZXQvZHNhL0tjb25maWc6MTcyOmNvbmZpZyBORVRfRFNBX1RBR19SVEw4XzRcbm5ldC9kc2EvS2NvbmZpZy0xNzMtXHR0cmlzdGF0ZSBcJiMzNDtUYWcgZHJpdmVyIGZvciBSZWFsdGVrIDggYnl0ZSBwcm90b2NvbCA0IHRhZ3NcJiMzNDtcbi0tXG5uZXQvZHNhL0tjb25maWctMTc3LVxubmV0L2RzYS9LY29uZmlnOjE3ODpjb25maWcgTkVUX0RTQV9UQUdfUlpOMV9BNVBTV1xubmV0L2RzYS9LY29uZmlnLTE3OS1cdHRyaXN0YXRlIFwmIzM0O1RhZyBkcml2ZXIgZm9yIFJlbmVzYXMgUlovTjEgQTVQU1cgc3dpdGNoXCYjMzQ7XG4tLVxubmV0L2RzYS9LY29uZmlnLTE4NC1cbm5ldC9kc2EvS2NvbmZpZzoxODU6Y29uZmlnIE5FVF9EU0FfVEFHX0xBTjkzMDNcbm5ldC9kc2EvS2NvbmZpZy0xODYtXHR0cmlzdGF0ZSBcJiMzNDtUYWcgZHJpdmVyIGZvciBTTVNDL01pY3JvY2hpcCBMQU45MzAzIGZhbWlseSBvZiBzd2l0Y2hlc1wmIzM0O1xuLS1cbm5ldC9kc2EvS2NvbmZpZy0xOTAtXG5uZXQvZHNhL0tjb25maWc6MTkxOmNvbmZpZyBORVRfRFNBX1RBR19TSkExMTA1XG5uZXQvZHNhL0tjb25maWctMTkyLVx0dHJpc3RhdGUgXCYjMzQ7VGFnIGRyaXZlciBmb3IgTlhQIFNKQTExMDUgc3dpdGNoZXNcJiMzNDtcbi0tXG5uZXQvZHNhL0tjb25maWctMTk5LVxubmV0L2RzYS9LY29uZmlnOjIwMDpjb25maWcgTkVUX0RTQV9UQUdfVFJBSUxFUlxubmV0L2RzYS9LY29uZmlnLTIwMS1cdHRyaXN0YXRlIFwmIzM0O1RhZyBkcml2ZXIgZm9yIHN3aXRjaGVzIHVzaW5nIGEgdHJhaWxlciB0YWdcJiMzNDtcbi0tXG5uZXQvZHNhL0tjb25maWctMjA1LVxubmV0L2RzYS9LY29uZmlnOjIwNjpjb25maWcgTkVUX0RTQV9UQUdfVlNDNzNYWF84MDIxUVxubmV0L2RzYS9LY29uZmlnLTIwNy1cdHRyaXN0YXRlIFwmIzM0O1RhZyBkcml2ZXIgZm9yIE1pY3JvY2hpcC9WaXRlc3NlIFZTQzczeHggZmFtaWx5IG9mIHN3aXRjaGVzLCB1c2luZyBWTEFOXCYjMzQ7XG4tLVxubmV0L2RzYS9LY29uZmlnLTIxMS1cbm5ldC9kc2EvS2NvbmZpZzoyMTI6Y29uZmlnIE5FVF9EU0FfVEFHX1hSUzcwMFhcbm5ldC9kc2EvS2NvbmZpZy0yMTMtXHR0cmlzdGF0ZSBcJiMzNDtUYWcgZHJpdmVyIGZvciBYUlM3MDB4IHN3aXRjaGVzXCYjMzQ7XG4tLVxubmV0L2RzYS9LY29uZmlnLTIxNy1cbm5ldC9kc2EvS2NvbmZpZzoyMTg6Y29uZmlnIE5FVF9EU0FfVEFHX1lUOTIxWFxubmV0L2RzYS9LY29uZmlnLTIxOS1cdHRyaXN0YXRlIFwmIzM0O1RhZyBkcml2ZXIgZm9yIE1vdG9yY29tbSBZVDkyMXggc3dpdGNoZXNcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yNSAwODoyOTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyNjY4OQoJCQkJCQkJb3V0cHV0OiAyMAoJCQkJCQkJdGhvdWdodHM6IDU3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkVuYWJsaW5nIERTQSBmb3IgRnV6emluZyoqCgpPa2F5LCBzbyB3ZSYjMzk7cmUgbG9va2luZyB0byBleHBhbmQgb3VyIGZ1enppbmcgY2FwYWJpbGl0aWVzIHdpdGhpbiB0aGUgbmV0d29ya2luZyBzdGFjay4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHdlIG5lZWQgdG8gZW5hYmxlIGBORVRfRFNBYCBhbmQgYWxzbyBzb21lIG9mIHRob3NlIHRhZ2dlcnMuIEJ1dCBob2xkIG9uLCBJIHJlbWVtYmVyIGBORVRfRFNBX0xPT1BgIOKAkyB0aGF0JiMzOTtzIHRoZSBtb2NrLXVwIHN3aXRjaCBjaGlwIHN1cHBvcnQsIGlzbiYjMzk7dCBpdD8gQmluZ28hIFRoYXQmIzM5O3MgYSBwZXJmZWN0IGNhbmRpZGF0ZSBmb3IgZGVlcGVyIERTQSBmdXp6aW5nLiBUaGUgc2ltdWxhdGVkIGVudmlyb25tZW50IGl0IHByb3ZpZGVzIHNlZW1zIGlkZWFsLiBOb3csIGJlZm9yZSB3ZSBkaXZlIGluLCBJIG5lZWQgdG8gY29uZmlybSB0aGUgZGVwZW5kZW5jaWVzIGZvciBgTkVUX0RTQV9MT09QYC4gTGV0IG1lIHF1aWNrbHkgY2hlY2sgdGhvc2XigKYgZ290dGEgbWFrZSBzdXJlIGV2ZXJ5dGhpbmcgaXMgaW4gcGxhY2UgdG8gbWluaW1pemUgYW55IHNldHVwIGhlYWRhY2hlcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD44LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yNSAwODoyOTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgTkVUX0RTQV9MT09QJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2RzYS9LY29uZmlnPTc9Y29uZmlnIE5FVF9EU0FfQkNNX1NGMlxuLS1cbmRyaXZlcnMvbmV0L2RzYS9LY29uZmlnLTE4LVxuZHJpdmVycy9uZXQvZHNhL0tjb25maWc6MTk6Y29uZmlnIE5FVF9EU0FfTE9PUFxuZHJpdmVycy9uZXQvZHNhL0tjb25maWctMjAtXHR0cmlzdGF0ZSBcJiMzNDtEU0EgbW9jay11cCBFdGhlcm5ldCBzd2l0Y2ggY2hpcCBzdXBwb3J0XCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjUgMDg6Mjk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjcwMDcKCQkJCQkJCW91dHB1dDogMzYKCQkJCQkJCXRob3VnaHRzOiAyNAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB0aG91Z2h0IHByb2Nlc3MsIHN1bW1hcml6ZWQgYXMgeW91IHJlcXVlc3RlZDoKCioqTmF2aWdhdGluZyB0aGUgQ29kZWJhc2U6IE5FVF9EU0FfTE9PUCBDb25maWd1cmF0aW9uKioKCk9rYXksIHNvIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBjb25maWd1cmF0aW9uIHJlbGF0ZWQgdG8gdGhlIGBORVRfRFNBX0xPT1BgIGZ1bmN0aW9uYWxpdHkgd2l0aGluIHRoZSBuZXR3b3JrIERTQSBzdWJzeXN0ZW0uIFdoZXJlIHdvdWxkIHRoZSByZWxldmFudCBzZXR0aW5ncyBiZSBkZWZpbmVkPyBNeSBpbml0aWFsIGluc3RpbmN0IGlzIHRvIGdvIHN0cmFpZ2h0IHRvIHRoZSBjb25maWd1cmF0aW9uIGZpbGVzLiBHaXZlbiB0aGUgbmF0dXJlIG9mIHRoaXMgZmVhdHVyZSwgSSYjMzk7bSBleHBlY3RpbmcgdG8gZmluZCBpdCB3aXRoaW4gdGhlIGBkcml2ZXJzL25ldC9kc2FgIGRpcmVjdG9yeSwgd2hpY2ggaXMgdGhlIHN0YW5kYXJkIGxvY2F0aW9uIGZvciBEU0EgKERpc3RyaWJ1dGVkIFN3aXRjaCBBcmNoaXRlY3R1cmUpIHJlbGF0ZWQgZHJpdmVycy4gTW9yZSBzcGVjaWZpY2FsbHksIEkgc2hvdWxkIGJlIGFibGUgdG8gZGlnIGFyb3VuZCBpbiBgS2NvbmZpZ2AgZmlsZXMgZm9yIGNvbmZpZ3VyYXRpb24gb3B0aW9ucy4gVGhlcmVmb3JlLCBJIHdpbGwgY2hlY2sgdGhlIGBkcml2ZXJzL25ldC9kc2EvS2NvbmZpZ2AgZmlsZS4gVGhhdCYjMzk7cyB0aGUgbW9zdCBsb2dpY2FsIHN0YXJ0aW5nIHBvaW50IGZvciB1bmRlcnN0YW5kaW5nIGhvdyB0aGlzIGZlYXR1cmUgaXMgZW5hYmxlZCwgZGlzYWJsZWQsIGFuZCBjb25maWd1cmVkLiBJJiMzOTttIGV4cGVjdGluZyB0byBmaW5kIGEgY29uZGl0aW9uYWwgc3RhdGVtZW50IG9yIGRlZmluaXRpb24gYXNzb2NpYXRlZCB3aXRoIGBORVRfRFNBX0xPT1BgIGluIHRoZXJlLiBMZXQmIzM5O3Mgc2VlIHdoYXQmIzM5O3MgaW4gYGRyaXZlcnMvbmV0L2RzYS9LY29uZmlnYC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjUgMDg6Mjk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9kc2EvS2NvbmZpZyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDE1LAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDIwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAgMTU6XHRcdGhlbHBcbiAgMTY6XHRcdCAgVGhpcyBlbmFibGVzIHN1cHBvcnQgZm9yIHRoZSBCcm9hZGNvbSBTdGFyZmlnaHRlciAyIEV0aGVybmV0XG4gIDE3Olx0XHQgIHN3aXRjaCBjaGlwcy5cbiAgMTg6XHRcbiAgMTk6XHRjb25maWcgTkVUX0RTQV9MT09QXG4gIDIwOlx0XHR0cmlzdGF0ZSBcJiMzNDtEU0EgbW9jay11cCBFdGhlcm5ldCBzd2l0Y2ggY2hpcCBzdXBwb3J0XCYjMzQ7XG4gIDIxOlx0XHRzZWxlY3QgTkVUX0RTQV9UQUdfTk9ORVxuICAyMjpcdFx0c2VsZWN0IEZJWEVEX1BIWVxuICAyMzpcdFx0aGVscFxuICAyNDpcdFx0ICBUaGlzIGVuYWJsZXMgc3VwcG9ydCBmb3IgYSBmYWtlIG1vY2stdXAgc3dpdGNoIGNoaXAgd2hpY2hcbiAgMjU6XHRcdCAgZXhlcmNpc2VzIHRoZSBEU0EgQVBJcy5cbiAgMjY6XHRcbiAgMjc6XHRzb3VyY2UgXCYjMzQ7ZHJpdmVycy9uZXQvZHNhL2hpcnNjaG1hbm4vS2NvbmZpZ1wmIzM0O1xuICAyODpcdFxuICAyOTpcdHNvdXJjZSBcJiMzNDtkcml2ZXJzL25ldC9kc2EvbGFudGlxL0tjb25maWdcJiMzNDtcbiAgMzA6XHRcbiAgMzE6XHRjb25maWcgTkVUX0RTQV9NVDc1MzBcbiAgMzI6XHRcdHRyaXN0YXRlIFwmIzM0O01lZGlhVGVrIE1UNzUzMCBhbmQgTVQ3NTMxIEV0aGVybmV0IHN3aXRjaCBzdXBwb3J0XCYjMzQ7XG4gIDMzOlx0XHRzZWxlY3QgTkVUX0RTQV9UQUdfTVRLXG4gIDM0Olx0XHRzZWxlY3QgUkVHTUFQX0lSUVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjExLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yNSAwODoyOTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyNzU2NQoJCQkJCQkJb3V0cHV0OiAxOAoJCQkJCQkJdGhvdWdodHM6IDgyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkludmVzdGlnYXRpbmcgdGhlIERTQSBMb29wIGFuZCBUYWdnaW5nIE9wdGlvbnMqKgoKT2theSwgc28gYE5FVF9EU0FfTE9PUGAgaXMgY29uZmlndXJlZCB0byB1c2UgYE5FVF9EU0FfVEFHX05PTkVgIGJ5IGRlZmF1bHQuIFRoYXQmIzM5O3MgZmluZSwgYnV0IHRoaXMgcGF0Y2ggc2VlbXMgdG8gYmUgdG91Y2hpbmcgYWxsIHRoZSBvdGhlciB0YWdnZXJzLiBJZiB3ZSYjMzk7cmUgc2VyaW91cyBhYm91dCBmdXp6aW5nIHRoZXNlIG90aGVyIHRhZ2dlcnMsIHRoZW4gaXQmIzM5O3MgcHJldHR5IGNsZWFyIHdlIG5lZWQgdG8gZW5hYmxlIHRoZW0uIEJ1dCB0aGUgcmVhbCBxdWVzdGlvbiBpcywgY2FuIHdlICphY3R1YWxseSogdXNlIGFueSBvZiB0aGVzZSBvdGhlciB0YWdnZXJzIGluIGNvbmp1bmN0aW9uIHdpdGggYGRzYV9sb29wYD8gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgaWYgdGhlcmUmIzM5O3MgYW55IGtpbmQgb2YgY29tcGF0aWJpbGl0eSBoZXJlLiBNeSBmaXJzdCBzdG9wPyBMZXQmIzM5O3MgZGl2ZSByaWdodCBpbnRvIHRoZSBjb2RlIGl0c2VsZi4gSSYjMzk7bSBnb2luZyB0byBjaGVjayBgZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmNgIGFuZCBzZWUgaWYgdGhlcmUgYXJlIGFueSBoaW50cyBvciBjb25maWd1cmF0aW9uIG9wdGlvbnMgaW4gdGhlcmUgdGhhdCB3b3VsZCBhbGxvdyBmb3IgZGlmZmVyZW50IHRhZ2dlcnMgdG8gd29yay4gSSYjMzk7bSBleHBlY3RpbmcgdG8gZmluZCBzb21lIGluZGljYXRpb24gb2YgaG93IHRoZSB0YWdnZXIgaXMgc2VsZWN0ZWQsIG9yIGlmIHRoZXJlIGlzIGEgd2F5IHRvIG92ZXJyaWRlIHRoaXMgYmVoYXZpb3VyLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yNSAwODoyOTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtkc2FfbG9vcCYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtEb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvZHNhL2RzYS5yc3Q9MTU5PWFsbCBhdHRhY2hlZCBzd2l0Y2ggcG9ydHMgbXVzdCBiZSBkb3duIHdoaWxlIGRvaW5nIHRoaXMpLlxuRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL2RzYS9kc2EucnN0LTE2MC1cbkRvY3VtZW50YXRpb24vbmV0d29ya2luZy9kc2EvZHNhLnJzdDoxNjE6SXQgaXMgZGVzaXJhYmxlIHRoYXQgYWxsIHRhZ2dpbmcgcHJvdG9jb2xzIGFyZSB0ZXN0YWJsZSB3aXRoIHRoZSBgYGRzYV9sb29wYGBcbkRvY3VtZW50YXRpb24vbmV0d29ya2luZy9kc2EvZHNhLnJzdC0xNjItbW9ja3VwIGRyaXZlciwgd2hpY2ggY2FuIGJlIGF0dGFjaGVkIHRvIGFueSBuZXR3b3JrIGludGVyZmFjZS4gVGhlIGdvYWwgaXMgdGhhdFxuLS1cbmRyaXZlcnMvbmV0L2RzYS9NYWtlZmlsZT0zPWJjbS1zZjItb2Jqc1x0XHRcdDo9IGJjbV9zZjIubyBiY21fc2YyX2NmcC5vXG5kcml2ZXJzL25ldC9kc2EvTWFrZWZpbGU6NDpvYmotJChDT05GSUdfTkVUX0RTQV9MT09QKVx0JiM0Mzs9IGRzYV9sb29wLm9cbmRyaXZlcnMvbmV0L2RzYS9NYWtlZmlsZS01LW9iai0kKENPTkZJR19ORVRfRFNBX0tTODk5NSkgXHQmIzQzOz0ga3M4OTk1Lm9cbi0tXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0yNC1cbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjI1OnN0cnVjdCBkc2FfbG9vcF92bGFuIHtcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTI2LVx0dTE2IG1lbWJlcnM7XG4tLVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMjktXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzozMDpzdHJ1Y3QgZHNhX2xvb3BfbWliX2VudHJ5IHtcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTMxLVx0Y2hhciBuYW1lW0VUSF9HU1RSSU5HX0xFTl07XG4tLVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMzQtXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzozNTplbnVtIGRzYV9sb29wX21pYl9jb3VudGVycyB7XG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0zNi1cdERTQV9MT09QX1BIWV9SRUFEX09LLFxuLS1cbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTQyLVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6NDM6c3RydWN0IGRzYV9sb29wX3BvcnQge1xuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6NDQ6XHRzdHJ1Y3QgZHNhX2xvb3BfbWliX2VudHJ5IG1pYltfX0RTQV9MT09QX0NOVF9NQVhdO1xuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtNDUtXHR1MTYgcHZpZDtcbi0tXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy00OC1cbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjQ5OnN0cnVjdCBkc2FfbG9vcF9wcml2IHtcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTUwLVx0c3RydWN0IG1paV9idXNcdCpidXM7XG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy01MS1cdHVuc2lnbmVkIGludFx0cG9ydF9iYXNlO1xuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6NTI6XHRzdHJ1Y3QgZHNhX2xvb3BfdmxhbiB2bGFuc1tWTEFOX05fVklEXTtcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTUzLVx0c3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldjtcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjU0Olx0c3RydWN0IGRzYV9sb29wX3BvcnQgcG9ydHNbRFNBX01BWF9QT1JUU107XG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy01NS19O1xuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtNTYtXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzo1NzpzdHJ1Y3QgZHNhX2xvb3BfcGRhdGEge1xuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtNTgtXHQvKiBNdXN0IGJlIGZpcnN0LCBzdWNoIHRoYXQgZHNhX3JlZ2lzdGVyX3N3aXRjaCgpIGNhbiBhY2Nlc3MgdGhpc1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTY2LVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6Njc6c3RhdGljIHN0cnVjdCBkc2FfbG9vcF9taWJfZW50cnkgZHNhX2xvb3BfbWlic1tdID0ge1xuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtNjgtXHRbRFNBX0xPT1BfUEhZX1JFQURfT0tdXHQ9IHsgXCYjMzQ7cGh5X3JlYWRfb2tcJiMzNDssIH0sXG4tLVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM9NzU9c3RhdGljIHN0cnVjdCBtZGlvX2RldmljZSAqc3dpdGNoX21kaW9kZXY7XG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy03Ni1cbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjc3OmVudW0gZHNhX2xvb3BfZGV2bGlua19yZXNvdXJjZV9pZCB7XG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy03OC1cdERTQV9MT09QX0RFVkxJTktfUEFSQU1fSURfTk9ORSwgIC8qIERFVkxJTktfUkVTT1VSQ0VfSURfUEFSRU5UX1RPUCAqL1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTgxLVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6ODI6c3RhdGljIHU2NCBkc2FfbG9vcF9kZXZsaW5rX3Z0dV9nZXQodm9pZCAqcHJpdilcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTgzLXtcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjg0Olx0c3RydWN0IGRzYV9sb29wX3ByaXYgKnBzID0gcHJpdjtcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTg1LVx0dW5zaWduZWQgaW50IGksIGNvdW50ID0gMDtcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjg2Olx0c3RydWN0IGRzYV9sb29wX3ZsYW4gKnZsO1xuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtODctXG4tLVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtOTYtXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzo5NzpzdGF0aWMgaW50IGRzYV9sb29wX3NldHVwX2RldmxpbmtfcmVzb3VyY2VzKHN0cnVjdCBkc2Ffc3dpdGNoICpkcylcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTk4LXtcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTk5LVx0c3RydWN0IGRldmxpbmtfcmVzb3VyY2Vfc2l6ZV9wYXJhbXMgc2l6ZV9wYXJhbXM7XG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzoxMDA6XHRzdHJ1Y3QgZHNhX2xvb3BfcHJpdiAqcHMgPSBkcy1cdTAwM2Vwcml2O1xuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMTAxLVx0aW50IGVycjtcbi0tXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0xMTUtXHRcdFx0XHRcdCAgICAgIERTQV9MT09QX0RFVkxJTktfUEFSQU1fSURfVlRVLFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MTE2Olx0XHRcdFx0XHQgICAgICBkc2FfbG9vcF9kZXZsaW5rX3Z0dV9nZXQsIHBzKTtcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTExNy1cbi0tXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0xMjQtXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzoxMjU6c3RhdGljIGVudW0gZHNhX3RhZ19wcm90b2NvbCBkc2FfbG9vcF9nZXRfcHJvdG9jb2woc3RydWN0IGRzYV9zd2l0Y2ggKmRzLFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMTI2LVx0XHRcdFx0XHRcdCAgIGludCBwb3J0LFxuLS1cbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTEzMy1cbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjEzNDpzdGF0aWMgaW50IGRzYV9sb29wX3NldHVwKHN0cnVjdCBkc2Ffc3dpdGNoICpkcylcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTEzNS17XG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzoxMzY6XHRzdHJ1Y3QgZHNhX2xvb3BfcHJpdiAqcHMgPSBkcy1cdTAwM2Vwcml2O1xuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMTM3LVx0dW5zaWduZWQgaW50IGk7XG4tLVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMTM5LVx0Zm9yIChpID0gMDsgaSBcdTAwM2MgZHMtXHUwMDNlbnVtX3BvcnRzOyBpJiM0MzsmIzQzOylcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjE0MDpcdFx0bWVtY3B5KHBzLVx1MDAzZXBvcnRzW2ldLm1pYiwgZHNhX2xvb3BfbWlicyxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjE0MTpcdFx0ICAgICAgIHNpemVvZihkc2FfbG9vcF9taWJzKSk7XG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0xNDItXG4tLVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMTQ0LVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MTQ1Olx0cmV0dXJuIGRzYV9sb29wX3NldHVwX2RldmxpbmtfcmVzb3VyY2VzKGRzKTtcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTE0Ni19XG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0xNDctXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzoxNDg6c3RhdGljIHZvaWQgZHNhX2xvb3BfdGVhcmRvd24oc3RydWN0IGRzYV9zd2l0Y2ggKmRzKVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMTQ5LXtcbi0tXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0xNTItXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzoxNTM6c3RhdGljIGludCBkc2FfbG9vcF9nZXRfc3NldF9jb3VudChzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMsIGludCBwb3J0LCBpbnQgc3NldClcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTE1NC17XG4tLVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMTYwLVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MTYxOnN0YXRpYyB2b2lkIGRzYV9sb29wX2dldF9zdHJpbmdzKHN0cnVjdCBkc2Ffc3dpdGNoICpkcywgaW50IHBvcnQsXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0xNjItXHRcdFx0XHQgdTMyIHN0cmluZ3NldCwgdWludDhfdCAqZGF0YSlcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTE2My17XG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzoxNjQ6XHRzdHJ1Y3QgZHNhX2xvb3BfcHJpdiAqcHMgPSBkcy1cdTAwM2Vwcml2O1xuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMTY1LVx0dW5zaWduZWQgaW50IGk7XG4tLVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMTczLVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MTc0OnN0YXRpYyB2b2lkIGRzYV9sb29wX2dldF9ldGh0b29sX3N0YXRzKHN0cnVjdCBkc2Ffc3dpdGNoICpkcywgaW50IHBvcnQsXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0xNzUtXHRcdFx0XHQgICAgICAgdWludDY0X3QgKmRhdGEpXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0xNzYte1xuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MTc3Olx0c3RydWN0IGRzYV9sb29wX3ByaXYgKnBzID0gZHMtXHUwMDNlcHJpdjtcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTE3OC1cdHVuc2lnbmVkIGludCBpO1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTE4My1cbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjE4NDpzdGF0aWMgaW50IGRzYV9sb29wX3BoeV9yZWFkKHN0cnVjdCBkc2Ffc3dpdGNoICpkcywgaW50IHBvcnQsIGludCByZWdudW0pXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0xODUte1xuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MTg2Olx0c3RydWN0IGRzYV9sb29wX3ByaXYgKnBzID0gZHMtXHUwMDNlcHJpdjtcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTE4Ny1cdHN0cnVjdCBtaWlfYnVzICpidXMgPSBwcy1cdTAwM2VidXM7XG4tLVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMTk4LVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MTk5OnN0YXRpYyBpbnQgZHNhX2xvb3BfcGh5X3dyaXRlKHN0cnVjdCBkc2Ffc3dpdGNoICpkcywgaW50IHBvcnQsXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0yMDAtXHRcdFx0ICAgICAgaW50IHJlZ251bSwgdTE2IHZhbHVlKVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMjAxLXtcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjIwMjpcdHN0cnVjdCBkc2FfbG9vcF9wcml2ICpwcyA9IGRzLVx1MDAzZXByaXY7XG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0yMDMtXHRzdHJ1Y3QgbWlpX2J1cyAqYnVzID0gcHMtXHUwMDNlYnVzO1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTIxNC1cbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjIxNTpzdGF0aWMgaW50IGRzYV9sb29wX3BvcnRfYnJpZGdlX2pvaW4oc3RydWN0IGRzYV9zd2l0Y2ggKmRzLCBpbnQgcG9ydCxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTIxNi1cdFx0XHRcdCAgICAgc3RydWN0IGRzYV9icmlkZ2UgYnJpZGdlLFxuLS1cbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTIyNS1cbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjIyNjpzdGF0aWMgdm9pZCBkc2FfbG9vcF9wb3J0X2JyaWRnZV9sZWF2ZShzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMsIGludCBwb3J0LFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMjI3LVx0XHRcdFx0ICAgICAgIHN0cnVjdCBkc2FfYnJpZGdlIGJyaWRnZSlcbi0tXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0yMzItXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzoyMzM6c3RhdGljIHZvaWQgZHNhX2xvb3BfcG9ydF9zdHBfc3RhdGVfc2V0KHN0cnVjdCBkc2Ffc3dpdGNoICpkcywgaW50IHBvcnQsXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0yMzQtXHRcdFx0XHRcdHU4IHN0YXRlKVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTIzOS1cbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjI0MDpzdGF0aWMgaW50IGRzYV9sb29wX3BvcnRfdmxhbl9maWx0ZXJpbmcoc3RydWN0IGRzYV9zd2l0Y2ggKmRzLCBpbnQgcG9ydCxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTI0MS1cdFx0XHRcdFx0Ym9vbCB2bGFuX2ZpbHRlcmluZyxcbi0tXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0yNDktXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzoyNTA6c3RhdGljIGludCBkc2FfbG9vcF9wb3J0X3ZsYW5fYWRkKHN0cnVjdCBkc2Ffc3dpdGNoICpkcywgaW50IHBvcnQsXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0yNTEtXHRcdFx0XHQgIGNvbnN0IHN0cnVjdCBzd2l0Y2hkZXZfb2JqX3BvcnRfdmxhbiAqdmxhbixcbi0tXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0yNTUtXHRib29sIHB2aWQgPSB2bGFuLVx1MDAzZWZsYWdzIFx1MDAyNiBCUklER0VfVkxBTl9JTkZPX1BWSUQ7XG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzoyNTY6XHRzdHJ1Y3QgZHNhX2xvb3BfcHJpdiAqcHMgPSBkcy1cdTAwM2Vwcml2O1xuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMjU3LVx0c3RydWN0IG1paV9idXMgKmJ1cyA9IHBzLVx1MDAzZWJ1cztcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjI1ODpcdHN0cnVjdCBkc2FfbG9vcF92bGFuICp2bDtcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTI1OS1cbi0tXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0yODItXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzoyODM6c3RhdGljIGludCBkc2FfbG9vcF9wb3J0X3ZsYW5fZGVsKHN0cnVjdCBkc2Ffc3dpdGNoICpkcywgaW50IHBvcnQsXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0yODQtXHRcdFx0XHQgIGNvbnN0IHN0cnVjdCBzd2l0Y2hkZXZfb2JqX3BvcnRfdmxhbiAqdmxhbilcbi0tXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0yODYtXHRib29sIHVudGFnZ2VkID0gdmxhbi1cdTAwM2VmbGFncyBcdTAwMjYgQlJJREdFX1ZMQU5fSU5GT19VTlRBR0dFRDtcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjI4NzpcdHN0cnVjdCBkc2FfbG9vcF9wcml2ICpwcyA9IGRzLVx1MDAzZXByaXY7XG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0yODgtXHR1MTYgcHZpZCA9IHBzLVx1MDAzZXBvcnRzW3BvcnRdLnB2aWQ7XG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0yODktXHRzdHJ1Y3QgbWlpX2J1cyAqYnVzID0gcHMtXHUwMDNlYnVzO1xuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MjkwOlx0c3RydWN0IGRzYV9sb29wX3ZsYW4gKnZsO1xuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMjkxLVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTMxMC1cbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjMxMTpzdGF0aWMgaW50IGRzYV9sb29wX3BvcnRfY2hhbmdlX210dShzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMsIGludCBwb3J0LFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMzEyLVx0XHRcdFx0ICAgIGludCBuZXdfbXR1KVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMzEzLXtcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjMxNDpcdHN0cnVjdCBkc2FfbG9vcF9wcml2ICpwcml2ID0gZHMtXHUwMDNlcHJpdjtcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTMxNS1cbi0tXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0zMjAtXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzozMjE6c3RhdGljIGludCBkc2FfbG9vcF9wb3J0X21heF9tdHUoc3RydWN0IGRzYV9zd2l0Y2ggKmRzLCBpbnQgcG9ydClcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTMyMi17XG4tLVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMzI1LVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MzI2OnN0YXRpYyB2b2lkIGRzYV9sb29wX3BoeWxpbmtfZ2V0X2NhcHMoc3RydWN0IGRzYV9zd2l0Y2ggKmRzYSwgaW50IHBvcnQsXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0zMjctXHRcdFx0XHQgICAgICBzdHJ1Y3QgcGh5bGlua19jb25maWcgKmNvbmZpZylcbi0tXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0zMzMtXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzozMzQ6c3RhdGljIGNvbnN0IHN0cnVjdCBkc2Ffc3dpdGNoX29wcyBkc2FfbG9vcF9kcml2ZXIgPSB7XG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzozMzU6XHQuZ2V0X3RhZ19wcm90b2NvbFx0PSBkc2FfbG9vcF9nZXRfcHJvdG9jb2wsXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzozMzY6XHQuc2V0dXBcdFx0XHQ9IGRzYV9sb29wX3NldHVwLFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MzM3Olx0LnRlYXJkb3duXHRcdD0gZHNhX2xvb3BfdGVhcmRvd24sXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzozMzg6XHQuZ2V0X3N0cmluZ3NcdFx0PSBkc2FfbG9vcF9nZXRfc3RyaW5ncyxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjMzOTpcdC5nZXRfZXRodG9vbF9zdGF0c1x0PSBkc2FfbG9vcF9nZXRfZXRodG9vbF9zdGF0cyxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjM0MDpcdC5nZXRfc3NldF9jb3VudFx0XHQ9IGRzYV9sb29wX2dldF9zc2V0X2NvdW50LFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MzQxOlx0LmdldF9ldGh0b29sX3BoeV9zdGF0c1x0PSBkc2FfbG9vcF9nZXRfZXRodG9vbF9zdGF0cyxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjM0MjpcdC5waHlfcmVhZFx0XHQ9IGRzYV9sb29wX3BoeV9yZWFkLFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MzQzOlx0LnBoeV93cml0ZVx0XHQ9IGRzYV9sb29wX3BoeV93cml0ZSxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjM0NDpcdC5wb3J0X2JyaWRnZV9qb2luXHQ9IGRzYV9sb29wX3BvcnRfYnJpZGdlX2pvaW4sXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzozNDU6XHQucG9ydF9icmlkZ2VfbGVhdmVcdD0gZHNhX2xvb3BfcG9ydF9icmlkZ2VfbGVhdmUsXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzozNDY6XHQucG9ydF9zdHBfc3RhdGVfc2V0XHQ9IGRzYV9sb29wX3BvcnRfc3RwX3N0YXRlX3NldCxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjM0NzpcdC5wb3J0X3ZsYW5fZmlsdGVyaW5nXHQ9IGRzYV9sb29wX3BvcnRfdmxhbl9maWx0ZXJpbmcsXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzozNDg6XHQucG9ydF92bGFuX2FkZFx0XHQ9IGRzYV9sb29wX3BvcnRfdmxhbl9hZGQsXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzozNDk6XHQucG9ydF92bGFuX2RlbFx0XHQ9IGRzYV9sb29wX3BvcnRfdmxhbl9kZWwsXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzozNTA6XHQucG9ydF9jaGFuZ2VfbXR1XHQ9IGRzYV9sb29wX3BvcnRfY2hhbmdlX210dSxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjM1MTpcdC5wb3J0X21heF9tdHVcdFx0PSBkc2FfbG9vcF9wb3J0X21heF9tdHUsXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzozNTI6XHQucGh5bGlua19nZXRfY2Fwc1x0PSBkc2FfbG9vcF9waHlsaW5rX2dldF9jYXBzLFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMzUzLX07XG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0zNTQtXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzozNTU6c3RhdGljIGludCBkc2FfbG9vcF9kcnZfcHJvYmUoc3RydWN0IG1kaW9fZGV2aWNlICptZGlvZGV2KVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMzU2LXtcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjM1NzpcdHN0cnVjdCBkc2FfbG9vcF9wZGF0YSAqcGRhdGEgPSBtZGlvZGV2LVx1MDAzZWRldi5wbGF0Zm9ybV9kYXRhO1xuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MzU4Olx0c3RydWN0IGRzYV9sb29wX3ByaXYgKnBzO1xuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMzU5LVx0c3RydWN0IGRzYV9zd2l0Y2ggKmRzO1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTM4Mi1cdGRzLVx1MDAzZWRldiA9IFx1MDAyNm1kaW9kZXYtXHUwMDNlZGV2O1xuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MzgzOlx0ZHMtXHUwMDNlb3BzID0gXHUwMDI2ZHNhX2xvb3BfZHJpdmVyO1xuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMzg0LVx0ZHMtXHUwMDNlcHJpdiA9IHBzO1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTM5Ni1cbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjM5NzpzdGF0aWMgdm9pZCBkc2FfbG9vcF9kcnZfcmVtb3ZlKHN0cnVjdCBtZGlvX2RldmljZSAqbWRpb2RldilcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTM5OC17XG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0zOTktXHRzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMgPSBkZXZfZ2V0X2RydmRhdGEoXHUwMDI2bWRpb2Rldi1cdTAwM2VkZXYpO1xuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6NDAwOlx0c3RydWN0IGRzYV9sb29wX3ByaXYgKnBzO1xuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtNDAxLVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTQxMC1cbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjQxMTpzdGF0aWMgdm9pZCBkc2FfbG9vcF9kcnZfc2h1dGRvd24oc3RydWN0IG1kaW9fZGV2aWNlICptZGlvZGV2KVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtNDEyLXtcbi0tXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy00MjItXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzo0MjM6c3RhdGljIHN0cnVjdCBtZGlvX2RyaXZlciBkc2FfbG9vcF9kcnYgPSB7XG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy00MjQtXHQubWRpb2Rydi5kcml2ZXJcdD0ge1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTQyNi1cdH0sXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzo0Mjc6XHQucHJvYmVcdD0gZHNhX2xvb3BfZHJ2X3Byb2JlLFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6NDI4Olx0LnJlbW92ZVx0PSBkc2FfbG9vcF9kcnZfcmVtb3ZlLFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6NDI5Olx0LnNodXRkb3duID0gZHNhX2xvb3BfZHJ2X3NodXRkb3duLFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtNDMwLX07XG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy00MzEtXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzo0MzI6c3RhdGljIGludCBkc2FfbG9vcF9idXNfbWF0Y2goc3RydWN0IGRldmljZSAqZGV2LFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtNDMzLVx0XHRcdCAgICAgIGNvbnN0IHN0cnVjdCBkZXZpY2VfZHJpdmVyICpkcnYpXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy00MzQte1xuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6NDM1Olx0cmV0dXJuIGRydiA9PSBcdTAwMjZkc2FfbG9vcF9kcnYubWRpb2Rydi5kcml2ZXI7XG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy00MzYtfVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtNDM3LVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6NDM4OnN0YXRpYyB2b2lkIGRzYV9sb29wX3BoeWRldnNfdW5yZWdpc3Rlcih2b2lkKVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtNDM5LXtcbi0tXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy00NDUtXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzo0NDY6c3RhdGljIGludCBfX2luaXQgZHNhX2xvb3BfY3JlYXRlX3N3aXRjaF9tZGlvZGV2KHZvaWQpXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy00NDcte1xuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6NDQ4Olx0c3RhdGljIHN0cnVjdCBkc2FfbG9vcF9wZGF0YSBkc2FfbG9vcF9wZGF0YSA9IHtcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTQ0OS1cdFx0LmNkID0ge1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTQ3MC1cbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjQ3MTpcdHN3aXRjaF9tZGlvZGV2LVx1MDAzZWJ1c19tYXRjaCA9IGRzYV9sb29wX2J1c19tYXRjaDtcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjQ3MjpcdHN3aXRjaF9tZGlvZGV2LVx1MDAzZWRldi5wbGF0Zm9ybV9kYXRhID0gXHUwMDI2ZHNhX2xvb3BfcGRhdGE7XG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy00NzMtXG4tLVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtNDgxLVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6NDgyOnN0YXRpYyBpbnQgX19pbml0IGRzYV9sb29wX2luaXQodm9pZClcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTQ4My17XG4tLVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtNDg2LVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6NDg3Olx0cmV0ID0gZHNhX2xvb3BfY3JlYXRlX3N3aXRjaF9tZGlvZGV2KCk7XG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy00ODgtXHRpZiAocmV0KVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTQ5My1cbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjQ5NDpcdHJldCA9IG1kaW9fZHJpdmVyX3JlZ2lzdGVyKFx1MDAyNmRzYV9sb29wX2Rydik7XG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy00OTUtXHRpZiAocmV0KSB7XG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzo0OTY6XHRcdGRzYV9sb29wX3BoeWRldnNfdW5yZWdpc3RlcigpO1xuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtNDk3LVx0XHRtZGlvX2RldmljZV9yZW1vdmUoc3dpdGNoX21kaW9kZXYpO1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTUwMi19XG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzo1MDM6bW9kdWxlX2luaXQoZHNhX2xvb3BfaW5pdCk7XG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy01MDQtXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzo1MDU6c3RhdGljIHZvaWQgX19leGl0IGRzYV9sb29wX2V4aXQodm9pZClcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTUwNi17XG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzo1MDc6XHRtZGlvX2RyaXZlcl91bnJlZ2lzdGVyKFx1MDAyNmRzYV9sb29wX2Rydik7XG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzo1MDg6XHRkc2FfbG9vcF9waHlkZXZzX3VucmVnaXN0ZXIoKTtcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTUwOS1cdG1kaW9fZGV2aWNlX3JlbW92ZShzd2l0Y2hfbWRpb2Rldik7XG4tLVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtNTExLX1cbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjUxMjptb2R1bGVfZXhpdChkc2FfbG9vcF9leGl0KTtcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTUxMy1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjUgMDg6Mjk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzQ1MzIKCQkJCQkJCW91dHB1dDogMjcKCQkJCQkJCXRob3VnaHRzOiAyNzgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqRFNBIFN3aXRjaCBJbnN0YW50aWF0aW9uIGFuZCBGdXp6aW5nIFN0cmF0ZWd5KioKCk9rYXksIHNvIGBkc2FfbG9vcGAgdXNlcyBgTkVUX0RTQV9UQUdfTk9ORWAuIEFuZCBgZHNhX2xvb3BfZ2V0X3Byb3RvY29sYCByZXR1cm5zIGBEU0FfVEFHX1BST1RPX05PTkVgLiBUaGF0JiMzOTtzIHRoZSBiYXNlbGluZS4gQ2FuIHdlIGxldmVyYWdlIHRoaXMgdG8gZnV6eiBvdGhlciB0YWdnZXJzLCBtYXliZT8gVGhlIGtleSBpcyBnb2luZyB0byBiZSBmaWd1cmluZyBvdXQgaG93IHRvIGdldCB0cmFmZmljIHJvdXRlZCAqdGhyb3VnaCogdGhlIERTQSBpbmZyYXN0cnVjdHVyZS4KClN5emthbGxlciBpcyBncmVhdCB3aXRoIHBhY2tldCBpbmplY3Rpb24gdGhyb3VnaCBgdHVuYC9gdGFwYCwgYG1hYzgwMjExX2h3c2ltYCwgYW5kIGV2ZW4gYGR1bW15YCBpbnRlcmZhY2VzLiBUaGUgaW1tZWRpYXRlIHF1ZXN0aW9uIGlzLCBpZiB3ZSAqZW5hYmxlKiBgTkVUX0RTQWAgYW5kIHNvbWUgb2YgdGhlc2UgdGFnZ2VycywgY2FuIHN5emthbGxlciBhY3R1YWxseSAqcmVhY2gqIHRoZW0/CgpOb3csIHJlbWVtYmVyIGhvdyBgZHNhX3N3aXRjaF9yY3ZgIGdldHMgY2FsbGVkPyBJdCYjMzk7cyBmcm9tIGBuZXRpZl9yZWNlaXZlX3NrYl9jb3JlYCAqaWYqIGBza2ItJmd0O2Rldi0mZ3Q7ZHNhX3B0cmAgaXMgc2V0LiBSaWdodCwgYW5kIHRvIGhhdmUgYHNrYi0mZ3Q7ZGV2LSZndDtkc2FfcHRyYCBzZXQsIHlvdSBuZWVkIGEgRFNBIHN3aXRjaCBhdHRhY2hlZCB0byBhIGBuZXRfZGV2aWNlYC4gU28gdGhlIHJlYWwgcXVlc3Rpb24gaXM6IGNhbiBzeXprYWxsZXIgKmNyZWF0ZSogYSBEU0Egc3dpdGNoPwoKSXQgaGFzIGBzeXpfZ2VuZXRsaW5rX2dldF9mYW1pbHlgIGFuZCBvdGhlciBuZXRsaW5rIGJpdHMsIHdoaWNoIG1pZ2h0IGJlIGhlbHBmdWwuIEJ1dCBEU0Egc3dpdGNoZXMgYXJlIHR5cGljYWxseSBzZXQgdXAgdGhyb3VnaCBkZXZpY2UgdHJlZSwgcGxhdGZvcm0gZGF0YSwgb3IgZXZlbiBJMkMvTURJTyBkZXZpY2VzLiBUaGF0IHNlZW1zIGRpZmZpY3VsdCB0byBlbXVsYXRlLgoKV2FpdCBhIHNlY29uZCwgc3l6a2FsbGVyIGRvZXMgaGF2ZSBjbGV2ZXIgdmlydHVhbGl6YXRpb24gdHJpY2tzIGZvciBvdGhlciBzdWJzeXN0ZW1zLiBJdCBoYXMgYHZoY2lgIGZvciBVU0IsIGBtYWM4MDIxMV9od3NpbWAgZm9yIHdpZmkuIFNvIHRoZSBxdWVzdGlvbiBiZWNvbWVzLCBkb2VzIGl0IGhhdmUgYSB3YXkgdG8gaW5zdGFudGlhdGUgRFNBIHN3aXRjaGVzIHNvbWVob3c/IEEgdmlydHVhbCBvbmUsIG9yIHBlcmhhcHMgYSB3YXkgdG8gZmFrZSB0aGUgZGF0YSBzdHJ1Y3R1cmVzIHJlcXVpcmVkPwoKT2theSwgdGltZSB0byBzdG9wIHNwZWN1bGF0aW5nLiBMZXQmIzM5O3Mgc2VlIGlmIHRoZXJlIGlzIGFueSBleGlzdGluZyBzeXprYWxsZXIgZGVzY3JpcHRpb24sIGEgZGVkaWNhdGVkIG9uZSwgb2YgRFNBIGRldmljZXMuIFRoYXQmIzM5O3MgdGhlIGZpcnN0IHBsYWNlIHRvIGxvb2suIE1heWJlIHNvbWVvbmUgaGFzIGFscmVhZHkgZmlndXJlZCBvdXQgaG93IHRvIGRvIHRoaXMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI1IDA4OjMwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2RzYSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9kc2EvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O1xuRnVsbCBvdXRwdXQgaXMgdG9vIGxvbmcsIHNob3dpbmcgNTAwIG91dCBvZiA4MTA0IGxpbmVzLlxuVXNlIG1vcmUgcHJlY2lzZSBleHByZXNzaW9uIGlmIHBvc3NpYmxlLlxuXG5uZXQvZHNhL01ha2VmaWxlPTY9ZW5kaWZcbi0tXG5uZXQvZHNhL01ha2VmaWxlLTgtIyB0aGUgY29yZVxubmV0L2RzYS9NYWtlZmlsZTo5Om9iai0kKENPTkZJR19ORVRfRFNBKSAmIzQzOz0gZHNhX2NvcmUub1xubmV0L2RzYS9NYWtlZmlsZToxMDpkc2FfY29yZS15ICYjNDM7PSBcXFxubmV0L2RzYS9NYWtlZmlsZS0xMS1cdGNvbmR1aXQubyBcXFxubmV0L2RzYS9NYWtlZmlsZS0xMi1cdGRldmxpbmsubyBcXFxubmV0L2RzYS9NYWtlZmlsZToxMzpcdGRzYS5vIFxcXG5uZXQvZHNhL01ha2VmaWxlLTE0LVx0bmV0bGluay5vIFxcXG4tLVxubmV0L2RzYS9NYWtlZmlsZT0yND1vYmotJChDT05GSUdfTkVUX0RTQV9UQUdfQlJDTV9DT01NT04pICYjNDM7PSB0YWdfYnJjbS5vXG5uZXQvZHNhL01ha2VmaWxlOjI1Om9iai0kKENPTkZJR19ORVRfRFNBX1RBR19EU0FfQ09NTU9OKSAmIzQzOz0gdGFnX2RzYS5vXG5uZXQvZHNhL01ha2VmaWxlLTI2LW9iai0kKENPTkZJR19ORVRfRFNBX1RBR19HU1dJUCkgJiM0Mzs9IHRhZ19nc3dpcC5vXG4tLVxubmV0L2RzYS9jb25kdWl0LmMtMTEtI2luY2x1ZGUgXHUwMDNjbGludXgvbmV0bGluay5oXHUwMDNlXG5uZXQvZHNhL2NvbmR1aXQuYzoxMjojaW5jbHVkZSBcdTAwM2NuZXQvZHNhLmhcdTAwM2Vcbm5ldC9kc2EvY29uZHVpdC5jLTEzLSNpbmNsdWRlIFx1MDAzY25ldC9uZXRkZXZfbG9jay5oXHUwMDNlXG4tLVxubmV0L2RzYS9jb25kdWl0LmMtMTUtI2luY2x1ZGUgXCYjMzQ7Y29uZHVpdC5oXCYjMzQ7XG5uZXQvZHNhL2NvbmR1aXQuYzoxNjojaW5jbHVkZSBcJiMzNDtkc2EuaFwmIzM0O1xubmV0L2RzYS9jb25kdWl0LmMtMTctI2luY2x1ZGUgXCYjMzQ7cG9ydC5oXCYjMzQ7XG4tLVxubmV0L2RzYS9jb25kdWl0LmMtMTktXG5uZXQvZHNhL2NvbmR1aXQuYzoyMDpzdGF0aWMgaW50IGRzYV9jb25kdWl0X2dldF9yZWdzX2xlbihzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxubmV0L2RzYS9jb25kdWl0LmMtMjEte1xubmV0L2RzYS9jb25kdWl0LmM6MjI6XHRzdHJ1Y3QgZHNhX3BvcnQgKmNwdV9kcCA9IGRldi1cdTAwM2Vkc2FfcHRyO1xubmV0L2RzYS9jb25kdWl0LmMtMjMtXHRjb25zdCBzdHJ1Y3QgZXRodG9vbF9vcHMgKm9wcyA9IGNwdV9kcC1cdTAwM2VvcmlnX2V0aHRvb2xfb3BzO1xubmV0L2RzYS9jb25kdWl0LmM6MjQ6XHRzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMgPSBjcHVfZHAtXHUwMDNlZHM7XG5uZXQvZHNhL2NvbmR1aXQuYy0yNS1cdGludCBwb3J0ID0gY3B1X2RwLVx1MDAzZWluZGV4O1xuLS1cbm5ldC9kc2EvY29uZHVpdC5jLTQ4LVxubmV0L2RzYS9jb25kdWl0LmM6NDk6c3RhdGljIHZvaWQgZHNhX2NvbmR1aXRfZ2V0X3JlZ3Moc3RydWN0IG5ldF9kZXZpY2UgKmRldixcbm5ldC9kc2EvY29uZHVpdC5jLTUwLVx0XHRcdFx0IHN0cnVjdCBldGh0b29sX3JlZ3MgKnJlZ3MsIHZvaWQgKmRhdGEpXG5uZXQvZHNhL2NvbmR1aXQuYy01MS17XG5uZXQvZHNhL2NvbmR1aXQuYzo1MjpcdHN0cnVjdCBkc2FfcG9ydCAqY3B1X2RwID0gZGV2LVx1MDAzZWRzYV9wdHI7XG5uZXQvZHNhL2NvbmR1aXQuYy01My1cdGNvbnN0IHN0cnVjdCBldGh0b29sX29wcyAqb3BzID0gY3B1X2RwLVx1MDAzZW9yaWdfZXRodG9vbF9vcHM7XG5uZXQvZHNhL2NvbmR1aXQuYzo1NDpcdHN0cnVjdCBkc2Ffc3dpdGNoICpkcyA9IGNwdV9kcC1cdTAwM2Vkcztcbm5ldC9kc2EvY29uZHVpdC5jLTU1LVx0c3RydWN0IGV0aHRvb2xfZHJ2aW5mbyAqY3B1X2luZm87XG4tLVxubmV0L2RzYS9jb25kdWl0LmMtNjktXHRjcHVfaW5mbyA9IChzdHJ1Y3QgZXRodG9vbF9kcnZpbmZvICopZGF0YTtcbm5ldC9kc2EvY29uZHVpdC5jOjcwOlx0c3Ryc2NweShjcHVfaW5mby1cdTAwM2Vkcml2ZXIsIFwmIzM0O2RzYVwmIzM0Oywgc2l6ZW9mKGNwdV9pbmZvLVx1MDAzZWRyaXZlcikpO1xubmV0L2RzYS9jb25kdWl0LmMtNzEtXHRkYXRhICYjNDM7PSBzaXplb2YoKmNwdV9pbmZvKTtcbi0tXG5uZXQvZHNhL2NvbmR1aXQuYy04My1cbm5ldC9kc2EvY29uZHVpdC5jOjg0OnN0YXRpYyBzc2l6ZV90IGRzYV9jb25kdWl0X2FwcGVuZF9wb3J0X3N0YXRzKHN0cnVjdCBkc2Ffc3dpdGNoICpkcywgaW50IHBvcnQsXG5uZXQvZHNhL2NvbmR1aXQuYy04NS1cdFx0XHRcdFx0ICAgICB1NjQgKmRhdGEsIHNpemVfdCBzdGFydClcbi0tXG5uZXQvZHNhL2NvbmR1aXQuYy0xMDEtXG5uZXQvZHNhL2NvbmR1aXQuYzoxMDI6c3RhdGljIHZvaWQgZHNhX2NvbmR1aXRfZ2V0X2V0aHRvb2xfc3RhdHMoc3RydWN0IG5ldF9kZXZpY2UgKmRldixcbm5ldC9kc2EvY29uZHVpdC5jLTEwMy1cdFx0XHRcdFx0ICBzdHJ1Y3QgZXRodG9vbF9zdGF0cyAqc3RhdHMsXG4tLVxubmV0L2RzYS9jb25kdWl0LmMtMTA1LXtcbm5ldC9kc2EvY29uZHVpdC5jOjEwNjpcdHN0cnVjdCBkc2FfcG9ydCAqZHAsICpjcHVfZHAgPSBkZXYtXHUwMDNlZHNhX3B0cjtcbm5ldC9kc2EvY29uZHVpdC5jLTEwNy1cdGNvbnN0IHN0cnVjdCBldGh0b29sX29wcyAqb3BzID0gY3B1X2RwLVx1MDAzZW9yaWdfZXRodG9vbF9vcHM7XG5uZXQvZHNhL2NvbmR1aXQuYzoxMDg6XHRzdHJ1Y3QgZHNhX3N3aXRjaF90cmVlICpkc3QgPSBjcHVfZHAtXHUwMDNlZHN0O1xubmV0L2RzYS9jb25kdWl0LmMtMTA5LVx0aW50IGNvdW50LCBtY291bnQgPSAwO1xuLS1cbm5ldC9kc2EvY29uZHVpdC5jLTExNi1cdGxpc3RfZm9yX2VhY2hfZW50cnkoZHAsIFx1MDAyNmRzdC1cdTAwM2Vwb3J0cywgbGlzdCkge1xubmV0L2RzYS9jb25kdWl0LmM6MTE3Olx0XHRpZiAoIWRzYV9wb3J0X2lzX2RzYShkcCkgXHUwMDI2XHUwMDI2ICFkc2FfcG9ydF9pc19jcHUoZHApKVxubmV0L2RzYS9jb25kdWl0LmMtMTE4LVx0XHRcdGNvbnRpbnVlO1xubmV0L2RzYS9jb25kdWl0LmMtMTE5LVxubmV0L2RzYS9jb25kdWl0LmM6MTIwOlx0XHRjb3VudCA9IGRzYV9jb25kdWl0X2FwcGVuZF9wb3J0X3N0YXRzKGRwLVx1MDAzZWRzLCBkcC1cdTAwM2VpbmRleCxcbm5ldC9kc2EvY29uZHVpdC5jLTEyMS1cdFx0XHRcdFx0XHQgICAgICBkYXRhLCBtY291bnQpO1xuLS1cbm5ldC9kc2EvY29uZHVpdC5jLTEyOC1cbm5ldC9kc2EvY29uZHVpdC5jOjEyOTpzdGF0aWMgdm9pZCBkc2FfY29uZHVpdF9nZXRfZXRodG9vbF9waHlfc3RhdHMoc3RydWN0IG5ldF9kZXZpY2UgKmRldixcbm5ldC9kc2EvY29uZHVpdC5jLTEzMC1cdFx0XHRcdFx0ICAgICAgc3RydWN0IGV0aHRvb2xfc3RhdHMgKnN0YXRzLFxuLS1cbm5ldC9kc2EvY29uZHVpdC5jLTEzMi17XG5uZXQvZHNhL2NvbmR1aXQuYzoxMzM6XHRzdHJ1Y3QgZHNhX3BvcnQgKmNwdV9kcCA9IGRldi1cdTAwM2Vkc2FfcHRyO1xubmV0L2RzYS9jb25kdWl0LmMtMTM0LVx0Y29uc3Qgc3RydWN0IGV0aHRvb2xfb3BzICpvcHMgPSBjcHVfZHAtXHUwMDNlb3JpZ19ldGh0b29sX29wcztcbm5ldC9kc2EvY29uZHVpdC5jOjEzNTpcdHN0cnVjdCBkc2Ffc3dpdGNoICpkcyA9IGNwdV9kcC1cdTAwM2Vkcztcbm5ldC9kc2EvY29uZHVpdC5jLTEzNi1cdGludCBwb3J0ID0gY3B1X2RwLVx1MDAzZWluZGV4O1xuLS1cbm5ldC9kc2EvY29uZHVpdC5jLTE1NC1cbm5ldC9kc2EvY29uZHVpdC5jOjE1NTpzdGF0aWMgdm9pZCBkc2FfY29uZHVpdF9hcHBlbmRfcG9ydF9zc2V0X2NvdW50KHN0cnVjdCBkc2Ffc3dpdGNoICpkcywgaW50IHBvcnQsXG5uZXQvZHNhL2NvbmR1aXQuYy0xNTYtXHRcdFx0XHRcdCAgICAgICBpbnQgc3NldCwgaW50ICpjb3VudClcbi0tXG5uZXQvZHNhL2NvbmR1aXQuYy0xNjEtXG5uZXQvZHNhL2NvbmR1aXQuYzoxNjI6c3RhdGljIGludCBkc2FfY29uZHVpdF9nZXRfc3NldF9jb3VudChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBpbnQgc3NldClcbm5ldC9kc2EvY29uZHVpdC5jLTE2My17XG5uZXQvZHNhL2NvbmR1aXQuYzoxNjQ6XHRzdHJ1Y3QgZHNhX3BvcnQgKmRwLCAqY3B1X2RwID0gZGV2LVx1MDAzZWRzYV9wdHI7XG5uZXQvZHNhL2NvbmR1aXQuYy0xNjUtXHRjb25zdCBzdHJ1Y3QgZXRodG9vbF9vcHMgKm9wcyA9IGNwdV9kcC1cdTAwM2VvcmlnX2V0aHRvb2xfb3BzO1xubmV0L2RzYS9jb25kdWl0LmM6MTY2Olx0c3RydWN0IGRzYV9zd2l0Y2hfdHJlZSAqZHN0ID0gY3B1X2RwLVx1MDAzZWRzdDtcbm5ldC9kc2EvY29uZHVpdC5jLTE2Ny1cdGludCBjb3VudCA9IDA7XG4tLVxubmV0L2RzYS9jb25kdWl0LmMtMTc4LVx0bGlzdF9mb3JfZWFjaF9lbnRyeShkcCwgXHUwMDI2ZHN0LVx1MDAzZXBvcnRzLCBsaXN0KSB7XG5uZXQvZHNhL2NvbmR1aXQuYzoxNzk6XHRcdGlmICghZHNhX3BvcnRfaXNfZHNhKGRwKSBcdTAwMjZcdTAwMjYgIWRzYV9wb3J0X2lzX2NwdShkcCkpXG5uZXQvZHNhL2NvbmR1aXQuYy0xODAtXHRcdFx0Y29udGludWU7XG5uZXQvZHNhL2NvbmR1aXQuYy0xODEtXG5uZXQvZHNhL2NvbmR1aXQuYzoxODI6XHRcdGRzYV9jb25kdWl0X2FwcGVuZF9wb3J0X3NzZXRfY291bnQoZHAtXHUwMDNlZHMsIGRwLVx1MDAzZWluZGV4LCBzc2V0LFxubmV0L2RzYS9jb25kdWl0LmMtMTgzLVx0XHRcdFx0XHRcdCAgIFx1MDAyNmNvdW50KTtcbi0tXG5uZXQvZHNhL2NvbmR1aXQuYy0xODgtXG5uZXQvZHNhL2NvbmR1aXQuYzoxODk6c3RhdGljIHNzaXplX3QgZHNhX2NvbmR1aXRfYXBwZW5kX3BvcnRfc3RyaW5ncyhzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMsIGludCBwb3J0LFxubmV0L2RzYS9jb25kdWl0LmMtMTkwLVx0XHRcdFx0XHQgICAgICAgdTMyIHN0cmluZ3NldCwgdTggKmRhdGEsXG4tLVxubmV0L2RzYS9jb25kdWl0LmMtMjIxLVxubmV0L2RzYS9jb25kdWl0LmM6MjIyOnN0YXRpYyB2b2lkIGRzYV9jb25kdWl0X2dldF9zdHJpbmdzKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHUzMiBzdHJpbmdzZXQsXG5uZXQvZHNhL2NvbmR1aXQuYy0yMjMtXHRcdFx0XHQgICAgdTggKmRhdGEpXG5uZXQvZHNhL2NvbmR1aXQuYy0yMjQte1xubmV0L2RzYS9jb25kdWl0LmM6MjI1Olx0c3RydWN0IGRzYV9wb3J0ICpkcCwgKmNwdV9kcCA9IGRldi1cdTAwM2Vkc2FfcHRyO1xubmV0L2RzYS9jb25kdWl0LmMtMjI2LVx0Y29uc3Qgc3RydWN0IGV0aHRvb2xfb3BzICpvcHMgPSBjcHVfZHAtXHUwMDNlb3JpZ19ldGh0b29sX29wcztcbm5ldC9kc2EvY29uZHVpdC5jOjIyNzpcdHN0cnVjdCBkc2Ffc3dpdGNoX3RyZWUgKmRzdCA9IGNwdV9kcC1cdTAwM2Vkc3Q7XG5uZXQvZHNhL2NvbmR1aXQuYy0yMjgtXHRpbnQgY291bnQsIG1jb3VudCA9IDA7XG4tLVxubmV0L2RzYS9jb25kdWl0LmMtMjQ0LVx0bGlzdF9mb3JfZWFjaF9lbnRyeShkcCwgXHUwMDI2ZHN0LVx1MDAzZXBvcnRzLCBsaXN0KSB7XG5uZXQvZHNhL2NvbmR1aXQuYzoyNDU6XHRcdGlmICghZHNhX3BvcnRfaXNfZHNhKGRwKSBcdTAwMjZcdTAwMjYgIWRzYV9wb3J0X2lzX2NwdShkcCkpXG5uZXQvZHNhL2NvbmR1aXQuYy0yNDYtXHRcdFx0Y29udGludWU7XG5uZXQvZHNhL2NvbmR1aXQuYy0yNDctXG5uZXQvZHNhL2NvbmR1aXQuYzoyNDg6XHRcdGNvdW50ID0gZHNhX2NvbmR1aXRfYXBwZW5kX3BvcnRfc3RyaW5ncyhkcC1cdTAwM2VkcywgZHAtXHUwMDNlaW5kZXgsXG5uZXQvZHNhL2NvbmR1aXQuYy0yNDktXHRcdFx0XHRcdFx0XHRzdHJpbmdzZXQsIGRhdGEsXG4tLVxubmV0L2RzYS9jb25kdWl0LmMtMjYwLSAqL1xubmV0L2RzYS9jb25kdWl0LmM6MjYxOmludCBfX2RzYV9jb25kdWl0X2h3dHN0YW1wX3ZhbGlkYXRlKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXG5uZXQvZHNhL2NvbmR1aXQuYy0yNjItXHRcdFx0XHQgICAgY29uc3Qgc3RydWN0IGtlcm5lbF9od3RzdGFtcF9jb25maWcgKmNvbmZpZyxcbi0tXG5uZXQvZHNhL2NvbmR1aXQuYy0yNjQte1xubmV0L2RzYS9jb25kdWl0LmM6MjY1Olx0c3RydWN0IGRzYV9wb3J0ICpjcHVfZHAgPSBkZXYtXHUwMDNlZHNhX3B0cjtcbm5ldC9kc2EvY29uZHVpdC5jOjI2NjpcdHN0cnVjdCBkc2Ffc3dpdGNoICpkcyA9IGNwdV9kcC1cdTAwM2Vkcztcbm5ldC9kc2EvY29uZHVpdC5jOjI2NzpcdHN0cnVjdCBkc2Ffc3dpdGNoX3RyZWUgKmRzdDtcbm5ldC9kc2EvY29uZHVpdC5jOjI2ODpcdHN0cnVjdCBkc2FfcG9ydCAqZHA7XG5uZXQvZHNhL2NvbmR1aXQuYy0yNjktXG4tLVxubmV0L2RzYS9jb25kdWl0LmMtMjcyLVx0bGlzdF9mb3JfZWFjaF9lbnRyeShkcCwgXHUwMDI2ZHN0LVx1MDAzZXBvcnRzLCBsaXN0KSB7XG5uZXQvZHNhL2NvbmR1aXQuYzoyNzM6XHRcdGlmIChkc2FfcG9ydF9zdXBwb3J0c19od3RzdGFtcChkcCkpIHtcbm5ldC9kc2EvY29uZHVpdC5jLTI3NC1cdFx0XHROTF9TRVRfRVJSX01TRyhleHRhY2ssXG4tLVxubmV0L2RzYS9jb25kdWl0LmMtMjgyLVxubmV0L2RzYS9jb25kdWl0LmM6MjgzOnN0YXRpYyBpbnQgZHNhX2NvbmR1aXRfZXRodG9vbF9zZXR1cChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxubmV0L2RzYS9jb25kdWl0LmMtMjg0LXtcbm5ldC9kc2EvY29uZHVpdC5jOjI4NTpcdHN0cnVjdCBkc2FfcG9ydCAqY3B1X2RwID0gZGV2LVx1MDAzZWRzYV9wdHI7XG5uZXQvZHNhL2NvbmR1aXQuYzoyODY6XHRzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMgPSBjcHVfZHAtXHUwMDNlZHM7XG5uZXQvZHNhL2NvbmR1aXQuYy0yODctXHRzdHJ1Y3QgZXRodG9vbF9vcHMgKm9wcztcbi0tXG5uZXQvZHNhL2NvbmR1aXQuYy0yOTktXG5uZXQvZHNhL2NvbmR1aXQuYzozMDA6XHRvcHMtXHUwMDNlZ2V0X3JlZ3NfbGVuID0gZHNhX2NvbmR1aXRfZ2V0X3JlZ3NfbGVuO1xubmV0L2RzYS9jb25kdWl0LmM6MzAxOlx0b3BzLVx1MDAzZWdldF9yZWdzID0gZHNhX2NvbmR1aXRfZ2V0X3JlZ3M7XG5uZXQvZHNhL2NvbmR1aXQuYzozMDI6XHRvcHMtXHUwMDNlZ2V0X3NzZXRfY291bnQgPSBkc2FfY29uZHVpdF9nZXRfc3NldF9jb3VudDtcbm5ldC9kc2EvY29uZHVpdC5jOjMwMzpcdG9wcy1cdTAwM2VnZXRfZXRodG9vbF9zdGF0cyA9IGRzYV9jb25kdWl0X2dldF9ldGh0b29sX3N0YXRzO1xubmV0L2RzYS9jb25kdWl0LmM6MzA0Olx0b3BzLVx1MDAzZWdldF9zdHJpbmdzID0gZHNhX2NvbmR1aXRfZ2V0X3N0cmluZ3M7XG5uZXQvZHNhL2NvbmR1aXQuYzozMDU6XHRvcHMtXHUwMDNlZ2V0X2V0aHRvb2xfcGh5X3N0YXRzID0gZHNhX2NvbmR1aXRfZ2V0X2V0aHRvb2xfcGh5X3N0YXRzO1xubmV0L2RzYS9jb25kdWl0LmMtMzA2LVxuLS1cbm5ldC9kc2EvY29uZHVpdC5jLTMxMS1cbm5ldC9kc2EvY29uZHVpdC5jOjMxMjpzdGF0aWMgdm9pZCBkc2FfY29uZHVpdF9ldGh0b29sX3RlYXJkb3duKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXG5uZXQvZHNhL2NvbmR1aXQuYy0zMTMte1xubmV0L2RzYS9jb25kdWl0LmM6MzE0Olx0c3RydWN0IGRzYV9wb3J0ICpjcHVfZHAgPSBkZXYtXHUwMDNlZHNhX3B0cjtcbm5ldC9kc2EvY29uZHVpdC5jLTMxNS1cbi0tXG5uZXQvZHNhL2NvbmR1aXQuYy0zMjctICovXG5uZXQvZHNhL2NvbmR1aXQuYzozMjg6c3RhdGljIHZvaWQgZHNhX2NvbmR1aXRfc2V0X3Byb21pc2N1aXR5KHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIGludCBpbmMpXG5uZXQvZHNhL2NvbmR1aXQuYy0zMjkte1xubmV0L2RzYS9jb25kdWl0LmM6MzMwOlx0Y29uc3Qgc3RydWN0IGRzYV9kZXZpY2Vfb3BzICpvcHMgPSBkZXYtXHUwMDNlZHNhX3B0ci1cdTAwM2V0YWdfb3BzO1xubmV0L2RzYS9jb25kdWl0LmMtMzMxLVxuLS1cbm5ldC9kc2EvY29uZHVpdC5jPTM0MD1zdGF0aWMgc3NpemVfdCB0YWdnaW5nX3Nob3coc3RydWN0IGRldmljZSAqZCwgc3RydWN0IGRldmljZV9hdHRyaWJ1dGUgKmF0dHIsXG4tLVxubmV0L2RzYS9jb25kdWl0LmMtMzQzLVx0c3RydWN0IG5ldF9kZXZpY2UgKmRldiA9IHRvX25ldF9kZXYoZCk7XG5uZXQvZHNhL2NvbmR1aXQuYzozNDQ6XHRzdHJ1Y3QgZHNhX3BvcnQgKmNwdV9kcCA9IGRldi1cdTAwM2Vkc2FfcHRyO1xubmV0L2RzYS9jb25kdWl0LmMtMzQ1LVxubmV0L2RzYS9jb25kdWl0LmMtMzQ2LVx0cmV0dXJuIHN5c2ZzX2VtaXQoYnVmLCBcJiMzNDslc1xcblwmIzM0Oyxcbm5ldC9kc2EvY29uZHVpdC5jOjM0NzpcdFx0ICAgICAgIGRzYV90YWdfcHJvdG9jb2xfdG9fc3RyKGNwdV9kcC1cdTAwM2V0YWdfb3BzKSk7XG5uZXQvZHNhL2NvbmR1aXQuYy0zNDgtfVxuLS1cbm5ldC9kc2EvY29uZHVpdC5jPTM1MD1zdGF0aWMgc3NpemVfdCB0YWdnaW5nX3N0b3JlKHN0cnVjdCBkZXZpY2UgKmQsIHN0cnVjdCBkZXZpY2VfYXR0cmlidXRlICphdHRyLFxuLS1cbm5ldC9kc2EvY29uZHVpdC5jLTM1Mi17XG5uZXQvZHNhL2NvbmR1aXQuYzozNTM6XHRjb25zdCBzdHJ1Y3QgZHNhX2RldmljZV9vcHMgKm5ld190YWdfb3BzLCAqb2xkX3RhZ19vcHM7XG5uZXQvZHNhL2NvbmR1aXQuYy0zNTQtXHRjb25zdCBjaGFyICplbmQgPSBzdHJjaHJudWwoYnVmLCAmIzM5O1xcbiYjMzk7KSwgKm5hbWU7XG5uZXQvZHNhL2NvbmR1aXQuYy0zNTUtXHRzdHJ1Y3QgbmV0X2RldmljZSAqZGV2ID0gdG9fbmV0X2RldihkKTtcbm5ldC9kc2EvY29uZHVpdC5jOjM1NjpcdHN0cnVjdCBkc2FfcG9ydCAqY3B1X2RwID0gZGV2LVx1MDAzZWRzYV9wdHI7XG5uZXQvZHNhL2NvbmR1aXQuYy0zNTctXHRzaXplX3QgbGVuID0gZW5kIC0gYnVmO1xuLS1cbm5ldC9kc2EvY29uZHVpdC5jLTM2OC1cdG9sZF90YWdfb3BzID0gY3B1X2RwLVx1MDAzZXRhZ19vcHM7XG5uZXQvZHNhL2NvbmR1aXQuYzozNjk6XHRuZXdfdGFnX29wcyA9IGRzYV90YWdfZHJpdmVyX2dldF9ieV9uYW1lKG5hbWUpO1xubmV0L2RzYS9jb25kdWl0LmMtMzcwLVx0a2ZyZWUobmFtZSk7XG4tLVxubmV0L2RzYS9jb25kdWl0LmMtMzgwLVxubmV0L2RzYS9jb25kdWl0LmM6MzgxOlx0ZXJyID0gZHNhX3RyZWVfY2hhbmdlX3RhZ19wcm90byhjcHVfZHAtXHUwMDNlZHMtXHUwMDNlZHN0LCBuZXdfdGFnX29wcyxcbm5ldC9kc2EvY29uZHVpdC5jLTM4Mi1cdFx0XHRcdFx0b2xkX3RhZ19vcHMpO1xuLS1cbm5ldC9kc2EvY29uZHVpdC5jLTM4Ni1cdFx0ICovXG5uZXQvZHNhL2NvbmR1aXQuYzozODc6XHRcdGRzYV90YWdfZHJpdmVyX3B1dChuZXdfdGFnX29wcyk7XG5uZXQvZHNhL2NvbmR1aXQuYy0zODgtXHRcdHJldHVybiBlcnI7XG4tLVxubmV0L2RzYS9jb25kdWl0LmMtMzkzLW91dDpcbm5ldC9kc2EvY29uZHVpdC5jOjM5NDpcdGRzYV90YWdfZHJpdmVyX3B1dChvbGRfdGFnX29wcyk7XG5uZXQvZHNhL2NvbmR1aXQuYy0zOTUtXHRyZXR1cm4gY291bnQ7XG4tLVxubmV0L2RzYS9jb25kdWl0LmM9Mzk3PXN0YXRpYyBERVZJQ0VfQVRUUl9SVyh0YWdnaW5nKTtcbm5ldC9kc2EvY29uZHVpdC5jLTM5OC1cbm5ldC9kc2EvY29uZHVpdC5jOjM5OTpzdGF0aWMgc3RydWN0IGF0dHJpYnV0ZSAqZHNhX3VzZXJfYXR0cnNbXSA9IHtcbm5ldC9kc2EvY29uZHVpdC5jLTQwMC1cdFx1MDAyNmRldl9hdHRyX3RhZ2dpbmcuYXR0cixcbi0tXG5uZXQvZHNhL2NvbmR1aXQuYy00MDMtXG5uZXQvZHNhL2NvbmR1aXQuYzo0MDQ6c3RhdGljIGNvbnN0IHN0cnVjdCBhdHRyaWJ1dGVfZ3JvdXAgZHNhX2dyb3VwID0ge1xubmV0L2RzYS9jb25kdWl0LmM6NDA1Olx0Lm5hbWVcdD0gXCYjMzQ7ZHNhXCYjMzQ7LFxubmV0L2RzYS9jb25kdWl0LmM6NDA2Olx0LmF0dHJzXHQ9IGRzYV91c2VyX2F0dHJzLFxubmV0L2RzYS9jb25kdWl0LmMtNDA3LX07XG5uZXQvZHNhL2NvbmR1aXQuYy00MDgtXG5uZXQvZHNhL2NvbmR1aXQuYzo0MDk6c3RhdGljIHZvaWQgZHNhX2NvbmR1aXRfcmVzZXRfbXR1KHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXG5uZXQvZHNhL2NvbmR1aXQuYy00MTAte1xuLS1cbm5ldC9kc2EvY29uZHVpdC5jLTQxOC1cbm5ldC9kc2EvY29uZHVpdC5jOjQxOTppbnQgZHNhX2NvbmR1aXRfc2V0dXAoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgc3RydWN0IGRzYV9wb3J0ICpjcHVfZHApXG5uZXQvZHNhL2NvbmR1aXQuYy00MjAte1xubmV0L2RzYS9jb25kdWl0LmM6NDIxOlx0Y29uc3Qgc3RydWN0IGRzYV9kZXZpY2Vfb3BzICp0YWdfb3BzID0gY3B1X2RwLVx1MDAzZXRhZ19vcHM7XG5uZXQvZHNhL2NvbmR1aXQuYzo0MjI6XHRzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMgPSBjcHVfZHAtXHUwMDNlZHM7XG5uZXQvZHNhL2NvbmR1aXQuYy00MjMtXHRzdHJ1Y3QgZGV2aWNlX2xpbmsgKmNvbnN1bWVyX2xpbms7XG4tLVxubmV0L2RzYS9jb25kdWl0LmMtNDI1LVxubmV0L2RzYS9jb25kdWl0LmM6NDI2Olx0bXR1ID0gRVRIX0RBVEFfTEVOICYjNDM7IGRzYV90YWdfcHJvdG9jb2xfb3ZlcmhlYWQodGFnX29wcyk7XG5uZXQvZHNhL2NvbmR1aXQuYy00MjctXG4tLVxubmV0L2RzYS9jb25kdWl0LmMtNDM4LVx0LyogVGhlIHN3aXRjaCBkcml2ZXIgbWF5IG5vdCBpbXBsZW1lbnQgLVx1MDAzZXBvcnRfY2hhbmdlX210dSgpLCBjYXNlIGluXG5uZXQvZHNhL2NvbmR1aXQuYzo0Mzk6XHQgKiB3aGljaCBkc2FfdXNlcl9jaGFuZ2VfbXR1KCkgd2lsbCBub3QgdXBkYXRlIHRoZSBjb25kdWl0IE1UVSBlaXRoZXIsXG5uZXQvZHNhL2NvbmR1aXQuYy00NDAtXHQgKiBzbyB3ZSBuZWVkIHRvIGRvIHRoYXQgaGVyZS5cbi0tXG5uZXQvZHNhL2NvbmR1aXQuYy00NTItXG5uZXQvZHNhL2NvbmR1aXQuYzo0NTM6XHRkZXYtXHUwMDNlZHNhX3B0ciA9IGNwdV9kcDtcbm5ldC9kc2EvY29uZHVpdC5jLTQ1NC1cbm5ldC9kc2EvY29uZHVpdC5jOjQ1NTpcdGRzYV9jb25kdWl0X3NldF9wcm9taXNjdWl0eShkZXYsIDEpO1xubmV0L2RzYS9jb25kdWl0LmMtNDU2LVxubmV0L2RzYS9jb25kdWl0LmM6NDU3Olx0cmV0ID0gZHNhX2NvbmR1aXRfZXRodG9vbF9zZXR1cChkZXYpO1xubmV0L2RzYS9jb25kdWl0LmMtNDU4LVx0aWYgKHJldClcbi0tXG5uZXQvZHNhL2NvbmR1aXQuYy00NjAtXG5uZXQvZHNhL2NvbmR1aXQuYzo0NjE6XHRyZXQgPSBzeXNmc19jcmVhdGVfZ3JvdXAoXHUwMDI2ZGV2LVx1MDAzZWRldi5rb2JqLCBcdTAwMjZkc2FfZ3JvdXApO1xubmV0L2RzYS9jb25kdWl0LmMtNDYyLVx0aWYgKHJldClcbi0tXG5uZXQvZHNhL2NvbmR1aXQuYy00Njctb3V0X2Vycl9ldGh0b29sX3RlYXJkb3duOlxubmV0L2RzYS9jb25kdWl0LmM6NDY4Olx0ZHNhX2NvbmR1aXRfZXRodG9vbF90ZWFyZG93bihkZXYpO1xubmV0L2RzYS9jb25kdWl0LmMtNDY5LW91dF9lcnJfcmVzZXRfcHJvbWlzYzpcbm5ldC9kc2EvY29uZHVpdC5jOjQ3MDpcdGRzYV9jb25kdWl0X3NldF9wcm9taXNjdWl0eShkZXYsIC0xKTtcbm5ldC9kc2EvY29uZHVpdC5jLTQ3MS1cdHJldHVybiByZXQ7XG4tLVxubmV0L2RzYS9jb25kdWl0LmMtNDczLVxubmV0L2RzYS9jb25kdWl0LmM6NDc0OnZvaWQgZHNhX2NvbmR1aXRfdGVhcmRvd24oc3RydWN0IG5ldF9kZXZpY2UgKmRldilcbm5ldC9kc2EvY29uZHVpdC5jLTQ3NS17XG5uZXQvZHNhL2NvbmR1aXQuYzo0NzY6XHRzeXNmc19yZW1vdmVfZ3JvdXAoXHUwMDI2ZGV2LVx1MDAzZWRldi5rb2JqLCBcdTAwMjZkc2FfZ3JvdXApO1xubmV0L2RzYS9jb25kdWl0LmM6NDc3Olx0ZHNhX2NvbmR1aXRfZXRodG9vbF90ZWFyZG93bihkZXYpO1xubmV0L2RzYS9jb25kdWl0LmM6NDc4Olx0ZHNhX2NvbmR1aXRfcmVzZXRfbXR1KGRldik7XG5uZXQvZHNhL2NvbmR1aXQuYzo0Nzk6XHRkc2FfY29uZHVpdF9zZXRfcHJvbWlzY3VpdHkoZGV2LCAtMSk7XG5uZXQvZHNhL2NvbmR1aXQuYy00ODAtXG5uZXQvZHNhL2NvbmR1aXQuYzo0ODE6XHRkZXYtXHUwMDNlZHNhX3B0ciA9IE5VTEw7XG5uZXQvZHNhL2NvbmR1aXQuYy00ODItXG4tLVxubmV0L2RzYS9jb25kdWl0LmMtNDg5LVxubmV0L2RzYS9jb25kdWl0LmM6NDkwOmludCBkc2FfY29uZHVpdF9sYWdfc2V0dXAoc3RydWN0IG5ldF9kZXZpY2UgKmxhZ19kZXYsIHN0cnVjdCBkc2FfcG9ydCAqY3B1X2RwLFxubmV0L2RzYS9jb25kdWl0LmMtNDkxLVx0XHRcdCAgc3RydWN0IG5ldGRldl9sYWdfdXBwZXJfaW5mbyAqdWluZm8sXG4tLVxubmV0L2RzYS9jb25kdWl0LmMtNDk2LVxubmV0L2RzYS9jb25kdWl0LmM6NDk3Olx0aWYgKCFuZXRkZXZfdXNlc19kc2EobGFnX2RldikpIHtcbm5ldC9kc2EvY29uZHVpdC5jOjQ5ODpcdFx0ZXJyID0gZHNhX2NvbmR1aXRfc2V0dXAobGFnX2RldiwgY3B1X2RwKTtcbm5ldC9kc2EvY29uZHVpdC5jLTQ5OS1cdFx0aWYgKGVycilcbi0tXG5uZXQvZHNhL2NvbmR1aXQuYy01MDQtXG5uZXQvZHNhL2NvbmR1aXQuYzo1MDU6XHRlcnIgPSBkc2FfcG9ydF9sYWdfam9pbihjcHVfZHAsIGxhZ19kZXYsIHVpbmZvLCBleHRhY2spO1xubmV0L2RzYS9jb25kdWl0LmMtNTA2LVx0aWYgKGVycikge1xuLS1cbm5ldC9kc2EvY29uZHVpdC5jLTUxNC1cdGlmIChjb25kdWl0X3NldHVwKVxubmV0L2RzYS9jb25kdWl0LmM6NTE1Olx0XHRkc2FfY29uZHVpdF90ZWFyZG93bihsYWdfZGV2KTtcbm5ldC9kc2EvY29uZHVpdC5jLTUxNi1cdHJldHVybiBlcnI7XG4tLVxubmV0L2RzYS9jb25kdWl0LmMtNTIxLSAqL1xubmV0L2RzYS9jb25kdWl0LmM6NTIyOnZvaWQgZHNhX2NvbmR1aXRfbGFnX3RlYXJkb3duKHN0cnVjdCBuZXRfZGV2aWNlICpsYWdfZGV2LFxubmV0L2RzYS9jb25kdWl0LmM6NTIzOlx0XHRcdCAgICAgIHN0cnVjdCBkc2FfcG9ydCAqY3B1X2RwKVxubmV0L2RzYS9jb25kdWl0LmMtNTI0LXtcbi0tXG5uZXQvZHNhL2NvbmR1aXQuYy01MjctXG5uZXQvZHNhL2NvbmR1aXQuYzo1Mjg6XHRkc2FfcG9ydF9sYWdfbGVhdmUoY3B1X2RwLCBsYWdfZGV2KTtcbm5ldC9kc2EvY29uZHVpdC5jLTUyOS1cbm5ldC9kc2EvY29uZHVpdC5jLTUzMC1cdG5ldGRldl9mb3JfZWFjaF91cHBlcl9kZXZfcmN1KGxhZ19kZXYsIHVwcGVyLCBpdGVyKVxubmV0L2RzYS9jb25kdWl0LmM6NTMxOlx0XHRpZiAoZHNhX3VzZXJfZGV2X2NoZWNrKHVwcGVyKSlcbm5ldC9kc2EvY29uZHVpdC5jLTUzMi1cdFx0XHRyZXR1cm47XG5uZXQvZHNhL2NvbmR1aXQuYy01MzMtXG5uZXQvZHNhL2NvbmR1aXQuYzo1MzQ6XHRkc2FfY29uZHVpdF90ZWFyZG93bihsYWdfZGV2KTtcbm5ldC9kc2EvY29uZHVpdC5jLTUzNS19XG4tLVxubmV0L2RzYS9jb25kdWl0LmgtNS1cbm5ldC9kc2EvY29uZHVpdC5oOjY6c3RydWN0IGRzYV9wb3J0O1xubmV0L2RzYS9jb25kdWl0LmgtNy1zdHJ1Y3QgbmV0X2RldmljZTtcbi0tXG5uZXQvZHNhL2NvbmR1aXQuaD05PXN0cnVjdCBuZXRsaW5rX2V4dF9hY2s7XG5uZXQvZHNhL2NvbmR1aXQuaC0xMC1cbm5ldC9kc2EvY29uZHVpdC5oOjExOmludCBkc2FfY29uZHVpdF9zZXR1cChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBzdHJ1Y3QgZHNhX3BvcnQgKmNwdV9kcCk7XG5uZXQvZHNhL2NvbmR1aXQuaDoxMjp2b2lkIGRzYV9jb25kdWl0X3RlYXJkb3duKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpO1xubmV0L2RzYS9jb25kdWl0Lmg6MTM6aW50IGRzYV9jb25kdWl0X2xhZ19zZXR1cChzdHJ1Y3QgbmV0X2RldmljZSAqbGFnX2Rldiwgc3RydWN0IGRzYV9wb3J0ICpjcHVfZHAsXG5uZXQvZHNhL2NvbmR1aXQuaC0xNC1cdFx0XHQgIHN0cnVjdCBuZXRkZXZfbGFnX3VwcGVyX2luZm8gKnVpbmZvLFxubmV0L2RzYS9jb25kdWl0LmgtMTUtXHRcdFx0ICBzdHJ1Y3QgbmV0bGlua19leHRfYWNrICpleHRhY2spO1xubmV0L2RzYS9jb25kdWl0Lmg6MTY6dm9pZCBkc2FfY29uZHVpdF9sYWdfdGVhcmRvd24oc3RydWN0IG5ldF9kZXZpY2UgKmxhZ19kZXYsXG5uZXQvZHNhL2NvbmR1aXQuaDoxNzpcdFx0XHQgICAgICBzdHJ1Y3QgZHNhX3BvcnQgKmNwdV9kcCk7XG5uZXQvZHNhL2NvbmR1aXQuaDoxODppbnQgX19kc2FfY29uZHVpdF9od3RzdGFtcF92YWxpZGF0ZShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxubmV0L2RzYS9jb25kdWl0LmgtMTktXHRcdFx0XHQgICAgY29uc3Qgc3RydWN0IGtlcm5lbF9od3RzdGFtcF9jb25maWcgKmNvbmZpZyxcbi0tXG5uZXQvZHNhL2RldmxpbmsuYy01LVxubmV0L2RzYS9kZXZsaW5rLmM6NjojaW5jbHVkZSBcdTAwM2NuZXQvZHNhLmhcdTAwM2Vcbm5ldC9kc2EvZGV2bGluay5jLTctI2luY2x1ZGUgXHUwMDNjbmV0L2RldmxpbmsuaFx1MDAzZVxuLS1cbm5ldC9kc2EvZGV2bGluay5jLTEwLVxubmV0L2RzYS9kZXZsaW5rLmM6MTE6c3RhdGljIGludCBkc2FfZGV2bGlua19pbmZvX2dldChzdHJ1Y3QgZGV2bGluayAqZGwsXG5uZXQvZHNhL2RldmxpbmsuYy0xMi1cdFx0XHRcdHN0cnVjdCBkZXZsaW5rX2luZm9fcmVxICpyZXEsXG4tLVxubmV0L2RzYS9kZXZsaW5rLmMtMTQte1xubmV0L2RzYS9kZXZsaW5rLmM6MTU6XHRzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMgPSBkc2FfZGV2bGlua190b19kcyhkbCk7XG5uZXQvZHNhL2RldmxpbmsuYy0xNi1cbi0tXG5uZXQvZHNhL2RldmxpbmsuYy0yMi1cbm5ldC9kc2EvZGV2bGluay5jOjIzOnN0YXRpYyBpbnQgZHNhX2Rldmxpbmtfc2JfcG9vbF9nZXQoc3RydWN0IGRldmxpbmsgKmRsLFxubmV0L2RzYS9kZXZsaW5rLmMtMjQtXHRcdFx0XHQgICB1bnNpZ25lZCBpbnQgc2JfaW5kZXgsIHUxNiBwb29sX2luZGV4LFxuLS1cbm5ldC9kc2EvZGV2bGluay5jLTI2LXtcbm5ldC9kc2EvZGV2bGluay5jOjI3Olx0c3RydWN0IGRzYV9zd2l0Y2ggKmRzID0gZHNhX2RldmxpbmtfdG9fZHMoZGwpO1xubmV0L2RzYS9kZXZsaW5rLmMtMjgtXG4tLVxubmV0L2RzYS9kZXZsaW5rLmMtMzUtXG5uZXQvZHNhL2RldmxpbmsuYzozNjpzdGF0aWMgaW50IGRzYV9kZXZsaW5rX3NiX3Bvb2xfc2V0KHN0cnVjdCBkZXZsaW5rICpkbCwgdW5zaWduZWQgaW50IHNiX2luZGV4LFxubmV0L2RzYS9kZXZsaW5rLmMtMzctXHRcdFx0XHQgICB1MTYgcG9vbF9pbmRleCwgdTMyIHNpemUsXG4tLVxubmV0L2RzYS9kZXZsaW5rLmMtNDAte1xubmV0L2RzYS9kZXZsaW5rLmM6NDE6XHRzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMgPSBkc2FfZGV2bGlua190b19kcyhkbCk7XG5uZXQvZHNhL2RldmxpbmsuYy00Mi1cbi0tXG5uZXQvZHNhL2RldmxpbmsuYy00OS1cbm5ldC9kc2EvZGV2bGluay5jOjUwOnN0YXRpYyBpbnQgZHNhX2Rldmxpbmtfc2JfcG9ydF9wb29sX2dldChzdHJ1Y3QgZGV2bGlua19wb3J0ICpkbHAsXG5uZXQvZHNhL2RldmxpbmsuYy01MS1cdFx0XHRcdFx0dW5zaWduZWQgaW50IHNiX2luZGV4LCB1MTYgcG9vbF9pbmRleCxcbi0tXG5uZXQvZHNhL2RldmxpbmsuYy01My17XG5uZXQvZHNhL2RldmxpbmsuYzo1NDpcdHN0cnVjdCBkc2Ffc3dpdGNoICpkcyA9IGRzYV9kZXZsaW5rX3BvcnRfdG9fZHMoZGxwKTtcbm5ldC9kc2EvZGV2bGluay5jOjU1Olx0aW50IHBvcnQgPSBkc2FfZGV2bGlua19wb3J0X3RvX3BvcnQoZGxwKTtcbm5ldC9kc2EvZGV2bGluay5jLTU2LVxuLS1cbm5ldC9kc2EvZGV2bGluay5jLTYzLVxubmV0L2RzYS9kZXZsaW5rLmM6NjQ6c3RhdGljIGludCBkc2FfZGV2bGlua19zYl9wb3J0X3Bvb2xfc2V0KHN0cnVjdCBkZXZsaW5rX3BvcnQgKmRscCxcbm5ldC9kc2EvZGV2bGluay5jLTY1LVx0XHRcdFx0XHR1bnNpZ25lZCBpbnQgc2JfaW5kZXgsIHUxNiBwb29sX2luZGV4LFxuLS1cbm5ldC9kc2EvZGV2bGluay5jLTY4LXtcbm5ldC9kc2EvZGV2bGluay5jOjY5Olx0c3RydWN0IGRzYV9zd2l0Y2ggKmRzID0gZHNhX2RldmxpbmtfcG9ydF90b19kcyhkbHApO1xubmV0L2RzYS9kZXZsaW5rLmM6NzA6XHRpbnQgcG9ydCA9IGRzYV9kZXZsaW5rX3BvcnRfdG9fcG9ydChkbHApO1xubmV0L2RzYS9kZXZsaW5rLmMtNzEtXG4tLVxubmV0L2RzYS9kZXZsaW5rLmM9Nzk9c3RhdGljIGludFxubmV0L2RzYS9kZXZsaW5rLmM6ODA6ZHNhX2Rldmxpbmtfc2JfdGNfcG9vbF9iaW5kX2dldChzdHJ1Y3QgZGV2bGlua19wb3J0ICpkbHAsXG5uZXQvZHNhL2RldmxpbmsuYy04MS1cdFx0XHRcdHVuc2lnbmVkIGludCBzYl9pbmRleCwgdTE2IHRjX2luZGV4LFxuLS1cbm5ldC9kc2EvZGV2bGluay5jLTg0LXtcbm5ldC9kc2EvZGV2bGluay5jOjg1Olx0c3RydWN0IGRzYV9zd2l0Y2ggKmRzID0gZHNhX2RldmxpbmtfcG9ydF90b19kcyhkbHApO1xubmV0L2RzYS9kZXZsaW5rLmM6ODY6XHRpbnQgcG9ydCA9IGRzYV9kZXZsaW5rX3BvcnRfdG9fcG9ydChkbHApO1xubmV0L2RzYS9kZXZsaW5rLmMtODctXG4tLVxubmV0L2RzYS9kZXZsaW5rLmM9OTY9c3RhdGljIGludFxubmV0L2RzYS9kZXZsaW5rLmM6OTc6ZHNhX2Rldmxpbmtfc2JfdGNfcG9vbF9iaW5kX3NldChzdHJ1Y3QgZGV2bGlua19wb3J0ICpkbHAsXG5uZXQvZHNhL2RldmxpbmsuYy05OC1cdFx0XHRcdHVuc2lnbmVkIGludCBzYl9pbmRleCwgdTE2IHRjX2luZGV4LFxuLS1cbm5ldC9kc2EvZGV2bGluay5jLTEwMi17XG5uZXQvZHNhL2RldmxpbmsuYzoxMDM6XHRzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMgPSBkc2FfZGV2bGlua19wb3J0X3RvX2RzKGRscCk7XG5uZXQvZHNhL2RldmxpbmsuYzoxMDQ6XHRpbnQgcG9ydCA9IGRzYV9kZXZsaW5rX3BvcnRfdG9fcG9ydChkbHApO1xubmV0L2RzYS9kZXZsaW5rLmMtMTA1LVxuLS1cbm5ldC9kc2EvZGV2bGluay5jLTExNC1cbm5ldC9kc2EvZGV2bGluay5jOjExNTpzdGF0aWMgaW50IGRzYV9kZXZsaW5rX3NiX29jY19zbmFwc2hvdChzdHJ1Y3QgZGV2bGluayAqZGwsXG5uZXQvZHNhL2RldmxpbmsuYy0xMTYtXHRcdFx0XHQgICAgICAgdW5zaWduZWQgaW50IHNiX2luZGV4KVxubmV0L2RzYS9kZXZsaW5rLmMtMTE3LXtcbm5ldC9kc2EvZGV2bGluay5jOjExODpcdHN0cnVjdCBkc2Ffc3dpdGNoICpkcyA9IGRzYV9kZXZsaW5rX3RvX2RzKGRsKTtcbm5ldC9kc2EvZGV2bGluay5jLTExOS1cbi0tXG5uZXQvZHNhL2RldmxpbmsuYy0xMjUtXG5uZXQvZHNhL2RldmxpbmsuYzoxMjY6c3RhdGljIGludCBkc2FfZGV2bGlua19zYl9vY2NfbWF4X2NsZWFyKHN0cnVjdCBkZXZsaW5rICpkbCxcbm5ldC9kc2EvZGV2bGluay5jLTEyNy1cdFx0XHRcdFx0dW5zaWduZWQgaW50IHNiX2luZGV4KVxubmV0L2RzYS9kZXZsaW5rLmMtMTI4LXtcbm5ldC9kc2EvZGV2bGluay5jOjEyOTpcdHN0cnVjdCBkc2Ffc3dpdGNoICpkcyA9IGRzYV9kZXZsaW5rX3RvX2RzKGRsKTtcbm5ldC9kc2EvZGV2bGluay5jLTEzMC1cbi0tXG5uZXQvZHNhL2RldmxpbmsuYy0xMzYtXG5uZXQvZHNhL2RldmxpbmsuYzoxMzc6c3RhdGljIGludCBkc2FfZGV2bGlua19zYl9vY2NfcG9ydF9wb29sX2dldChzdHJ1Y3QgZGV2bGlua19wb3J0ICpkbHAsXG5uZXQvZHNhL2RldmxpbmsuYy0xMzgtXHRcdFx0XHRcdCAgICB1bnNpZ25lZCBpbnQgc2JfaW5kZXgsXG4tLVxubmV0L2RzYS9kZXZsaW5rLmMtMTQxLXtcbm5ldC9kc2EvZGV2bGluay5jOjE0MjpcdHN0cnVjdCBkc2Ffc3dpdGNoICpkcyA9IGRzYV9kZXZsaW5rX3BvcnRfdG9fZHMoZGxwKTtcbm5ldC9kc2EvZGV2bGluay5jOjE0MzpcdGludCBwb3J0ID0gZHNhX2RldmxpbmtfcG9ydF90b19wb3J0KGRscCk7XG5uZXQvZHNhL2RldmxpbmsuYy0xNDQtXG4tLVxubmV0L2RzYS9kZXZsaW5rLmM9MTUyPXN0YXRpYyBpbnRcbm5ldC9kc2EvZGV2bGluay5jOjE1Mzpkc2FfZGV2bGlua19zYl9vY2NfdGNfcG9ydF9iaW5kX2dldChzdHJ1Y3QgZGV2bGlua19wb3J0ICpkbHAsXG5uZXQvZHNhL2RldmxpbmsuYy0xNTQtXHRcdFx0XHQgICAgdW5zaWduZWQgaW50IHNiX2luZGV4LCB1MTYgdGNfaW5kZXgsXG4tLVxubmV0L2RzYS9kZXZsaW5rLmMtMTU3LXtcbm5ldC9kc2EvZGV2bGluay5jOjE1ODpcdHN0cnVjdCBkc2Ffc3dpdGNoICpkcyA9IGRzYV9kZXZsaW5rX3BvcnRfdG9fZHMoZGxwKTtcbm5ldC9kc2EvZGV2bGluay5jOjE1OTpcdGludCBwb3J0ID0gZHNhX2RldmxpbmtfcG9ydF90b19wb3J0KGRscCk7XG5uZXQvZHNhL2RldmxpbmsuYy0xNjAtXG4tLVxubmV0L2RzYS9kZXZsaW5rLmMtMTY5LVxubmV0L2RzYS9kZXZsaW5rLmM6MTcwOnN0YXRpYyBjb25zdCBzdHJ1Y3QgZGV2bGlua19vcHMgZHNhX2Rldmxpbmtfb3BzID0ge1xubmV0L2RzYS9kZXZsaW5rLmM6MTcxOlx0LmluZm9fZ2V0XHRcdFx0PSBkc2FfZGV2bGlua19pbmZvX2dldCxcbm5ldC9kc2EvZGV2bGluay5jOjE3MjpcdC5zYl9wb29sX2dldFx0XHRcdD0gZHNhX2Rldmxpbmtfc2JfcG9vbF9nZXQsXG5uZXQvZHNhL2RldmxpbmsuYzoxNzM6XHQuc2JfcG9vbF9zZXRcdFx0XHQ9IGRzYV9kZXZsaW5rX3NiX3Bvb2xfc2V0LFxubmV0L2RzYS9kZXZsaW5rLmM6MTc0Olx0LnNiX3BvcnRfcG9vbF9nZXRcdFx0PSBkc2FfZGV2bGlua19zYl9wb3J0X3Bvb2xfZ2V0LFxubmV0L2RzYS9kZXZsaW5rLmM6MTc1Olx0LnNiX3BvcnRfcG9vbF9zZXRcdFx0PSBkc2FfZGV2bGlua19zYl9wb3J0X3Bvb2xfc2V0LFxubmV0L2RzYS9kZXZsaW5rLmM6MTc2Olx0LnNiX3RjX3Bvb2xfYmluZF9nZXRcdFx0PSBkc2FfZGV2bGlua19zYl90Y19wb29sX2JpbmRfZ2V0LFxubmV0L2RzYS9kZXZsaW5rLmM6MTc3Olx0LnNiX3RjX3Bvb2xfYmluZF9zZXRcdFx0PSBkc2FfZGV2bGlua19zYl90Y19wb29sX2JpbmRfc2V0LFxubmV0L2RzYS9kZXZsaW5rLmM6MTc4Olx0LnNiX29jY19zbmFwc2hvdFx0XHQ9IGRzYV9kZXZsaW5rX3NiX29jY19zbmFwc2hvdCxcbm5ldC9kc2EvZGV2bGluay5jOjE3OTpcdC5zYl9vY2NfbWF4X2NsZWFyXHRcdD0gZHNhX2Rldmxpbmtfc2Jfb2NjX21heF9jbGVhcixcbm5ldC9kc2EvZGV2bGluay5jOjE4MDpcdC5zYl9vY2NfcG9ydF9wb29sX2dldFx0XHQ9IGRzYV9kZXZsaW5rX3NiX29jY19wb3J0X3Bvb2xfZ2V0LFxubmV0L2RzYS9kZXZsaW5rLmM6MTgxOlx0LnNiX29jY190Y19wb3J0X2JpbmRfZ2V0XHQ9IGRzYV9kZXZsaW5rX3NiX29jY190Y19wb3J0X2JpbmRfZ2V0LFxubmV0L2RzYS9kZXZsaW5rLmMtMTgyLX07XG5uZXQvZHNhL2RldmxpbmsuYy0xODMtXG5uZXQvZHNhL2RldmxpbmsuYzoxODQ6aW50IGRzYV9kZXZsaW5rX3BhcmFtX2dldChzdHJ1Y3QgZGV2bGluayAqZGwsIHUzMiBpZCxcbm5ldC9kc2EvZGV2bGluay5jLTE4NS1cdFx0XHQgIHN0cnVjdCBkZXZsaW5rX3BhcmFtX2dzZXRfY3R4ICpjdHgsXG4tLVxubmV0L2RzYS9kZXZsaW5rLmMtMTg3LXtcbm5ldC9kc2EvZGV2bGluay5jOjE4ODpcdHN0cnVjdCBkc2Ffc3dpdGNoICpkcyA9IGRzYV9kZXZsaW5rX3RvX2RzKGRsKTtcbm5ldC9kc2EvZGV2bGluay5jLTE4OS1cbi0tXG5uZXQvZHNhL2RldmxpbmsuYy0xOTQtfVxubmV0L2RzYS9kZXZsaW5rLmM6MTk1OkVYUE9SVF9TWU1CT0xfR1BMKGRzYV9kZXZsaW5rX3BhcmFtX2dldCk7XG5uZXQvZHNhL2RldmxpbmsuYy0xOTYtXG5uZXQvZHNhL2RldmxpbmsuYzoxOTc6aW50IGRzYV9kZXZsaW5rX3BhcmFtX3NldChzdHJ1Y3QgZGV2bGluayAqZGwsIHUzMiBpZCxcbm5ldC9kc2EvZGV2bGluay5jLTE5OC1cdFx0XHQgIHN0cnVjdCBkZXZsaW5rX3BhcmFtX2dzZXRfY3R4ICpjdHgsXG4tLVxubmV0L2RzYS9kZXZsaW5rLmMtMjAwLXtcbm5ldC9kc2EvZGV2bGluay5jOjIwMTpcdHN0cnVjdCBkc2Ffc3dpdGNoICpkcyA9IGRzYV9kZXZsaW5rX3RvX2RzKGRsKTtcbm5ldC9kc2EvZGV2bGluay5jLTIwMi1cbi0tXG5uZXQvZHNhL2RldmxpbmsuYy0yMDctfVxubmV0L2RzYS9kZXZsaW5rLmM6MjA4OkVYUE9SVF9TWU1CT0xfR1BMKGRzYV9kZXZsaW5rX3BhcmFtX3NldCk7XG5uZXQvZHNhL2RldmxpbmsuYy0yMDktXG5uZXQvZHNhL2RldmxpbmsuYzoyMTA6aW50IGRzYV9kZXZsaW5rX3BhcmFtc19yZWdpc3RlcihzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMsXG5uZXQvZHNhL2RldmxpbmsuYy0yMTEtXHRcdFx0XHRjb25zdCBzdHJ1Y3QgZGV2bGlua19wYXJhbSAqcGFyYW1zLFxuLS1cbm5ldC9kc2EvZGV2bGluay5jLTIxNS19XG5uZXQvZHNhL2RldmxpbmsuYzoyMTY6RVhQT1JUX1NZTUJPTF9HUEwoZHNhX2RldmxpbmtfcGFyYW1zX3JlZ2lzdGVyKTtcbm5ldC9kc2EvZGV2bGluay5jLTIxNy1cbm5ldC9kc2EvZGV2bGluay5jOjIxODp2b2lkIGRzYV9kZXZsaW5rX3BhcmFtc191bnJlZ2lzdGVyKHN0cnVjdCBkc2Ffc3dpdGNoICpkcyxcbm5ldC9kc2EvZGV2bGluay5jLTIxOS1cdFx0XHRcdCAgIGNvbnN0IHN0cnVjdCBkZXZsaW5rX3BhcmFtICpwYXJhbXMsXG4tLVxubmV0L2RzYS9kZXZsaW5rLmMtMjIzLX1cbm5ldC9kc2EvZGV2bGluay5jOjIyNDpFWFBPUlRfU1lNQk9MX0dQTChkc2FfZGV2bGlua19wYXJhbXNfdW5yZWdpc3Rlcik7XG5uZXQvZHNhL2RldmxpbmsuYy0yMjUtXG5uZXQvZHNhL2RldmxpbmsuYzoyMjY6aW50IGRzYV9kZXZsaW5rX3Jlc291cmNlX3JlZ2lzdGVyKHN0cnVjdCBkc2Ffc3dpdGNoICpkcyxcbm5ldC9kc2EvZGV2bGluay5jLTIyNy1cdFx0XHRcdCAgY29uc3QgY2hhciAqcmVzb3VyY2VfbmFtZSxcbi0tXG5uZXQvZHNhL2RldmxpbmsuYy0yNDItfVxubmV0L2RzYS9kZXZsaW5rLmM6MjQzOkVYUE9SVF9TWU1CT0xfR1BMKGRzYV9kZXZsaW5rX3Jlc291cmNlX3JlZ2lzdGVyKTtcbm5ldC9kc2EvZGV2bGluay5jLTI0NC1cbm5ldC9kc2EvZGV2bGluay5jOjI0NTp2b2lkIGRzYV9kZXZsaW5rX3Jlc291cmNlc191bnJlZ2lzdGVyKHN0cnVjdCBkc2Ffc3dpdGNoICpkcylcbm5ldC9kc2EvZGV2bGluay5jLTI0Ni17XG4tLVxubmV0L2RzYS9kZXZsaW5rLmMtMjQ4LX1cbm5ldC9kc2EvZGV2bGluay5jOjI0OTpFWFBPUlRfU1lNQk9MX0dQTChkc2FfZGV2bGlua19yZXNvdXJjZXNfdW5yZWdpc3Rlcik7XG5uZXQvZHNhL2RldmxpbmsuYy0yNTAtXG5uZXQvZHNhL2RldmxpbmsuYzoyNTE6dm9pZCBkc2FfZGV2bGlua19yZXNvdXJjZV9vY2NfZ2V0X3JlZ2lzdGVyKHN0cnVjdCBkc2Ffc3dpdGNoICpkcyxcbm5ldC9kc2EvZGV2bGluay5jLTI1Mi1cdFx0XHRcdFx0ICAgdTY0IHJlc291cmNlX2lkLFxuLS1cbm5ldC9kc2EvZGV2bGluay5jLTI2MC19XG5uZXQvZHNhL2RldmxpbmsuYzoyNjE6RVhQT1JUX1NZTUJPTF9HUEwoZHNhX2RldmxpbmtfcmVzb3VyY2Vfb2NjX2dldF9yZWdpc3Rlcik7XG5uZXQvZHNhL2RldmxpbmsuYy0yNjItXG5uZXQvZHNhL2RldmxpbmsuYzoyNjM6dm9pZCBkc2FfZGV2bGlua19yZXNvdXJjZV9vY2NfZ2V0X3VucmVnaXN0ZXIoc3RydWN0IGRzYV9zd2l0Y2ggKmRzLFxubmV0L2RzYS9kZXZsaW5rLmMtMjY0LVx0XHRcdFx0XHQgICAgIHU2NCByZXNvdXJjZV9pZClcbi0tXG5uZXQvZHNhL2RldmxpbmsuYy0yNjktfVxubmV0L2RzYS9kZXZsaW5rLmM6MjcwOkVYUE9SVF9TWU1CT0xfR1BMKGRzYV9kZXZsaW5rX3Jlc291cmNlX29jY19nZXRfdW5yZWdpc3Rlcik7XG5uZXQvZHNhL2RldmxpbmsuYy0yNzEtXG5uZXQvZHNhL2RldmxpbmsuYz0yNzI9c3RydWN0IGRldmxpbmtfcmVnaW9uICpcbm5ldC9kc2EvZGV2bGluay5jOjI3Mzpkc2FfZGV2bGlua19yZWdpb25fY3JlYXRlKHN0cnVjdCBkc2Ffc3dpdGNoICpkcyxcbm5ldC9kc2EvZGV2bGluay5jLTI3NC1cdFx0XHQgIGNvbnN0IHN0cnVjdCBkZXZsaW5rX3JlZ2lvbl9vcHMgKm9wcyxcbi0tXG5uZXQvZHNhL2RldmxpbmsuYy0yNzktfVxubmV0L2RzYS9kZXZsaW5rLmM6MjgwOkVYUE9SVF9TWU1CT0xfR1BMKGRzYV9kZXZsaW5rX3JlZ2lvbl9jcmVhdGUpO1xubmV0L2RzYS9kZXZsaW5rLmMtMjgxLVxubmV0L2RzYS9kZXZsaW5rLmM9MjgyPXN0cnVjdCBkZXZsaW5rX3JlZ2lvbiAqXG5uZXQvZHNhL2RldmxpbmsuYzoyODM6ZHNhX2RldmxpbmtfcG9ydF9yZWdpb25fY3JlYXRlKHN0cnVjdCBkc2Ffc3dpdGNoICpkcyxcbm5ldC9kc2EvZGV2bGluay5jLTI4NC1cdFx0XHQgICAgICAgaW50IHBvcnQsXG4tLVxubmV0L2RzYS9kZXZsaW5rLmMtMjg3LXtcbm5ldC9kc2EvZGV2bGluay5jOjI4ODpcdHN0cnVjdCBkc2FfcG9ydCAqZHAgPSBkc2FfdG9fcG9ydChkcywgcG9ydCk7XG5uZXQvZHNhL2RldmxpbmsuYy0yODktXG4tLVxubmV0L2RzYS9kZXZsaW5rLmMtMjkzLX1cbm5ldC9kc2EvZGV2bGluay5jOjI5NDpFWFBPUlRfU1lNQk9MX0dQTChkc2FfZGV2bGlua19wb3J0X3JlZ2lvbl9jcmVhdGUpO1xubmV0L2RzYS9kZXZsaW5rLmMtMjk1LVxubmV0L2RzYS9kZXZsaW5rLmM6Mjk2OnZvaWQgZHNhX2RldmxpbmtfcmVnaW9uX2Rlc3Ryb3koc3RydWN0IGRldmxpbmtfcmVnaW9uICpyZWdpb24pXG5uZXQvZHNhL2RldmxpbmsuYy0yOTcte1xuLS1cbm5ldC9kc2EvZGV2bGluay5jLTI5OS19XG5uZXQvZHNhL2RldmxpbmsuYzozMDA6RVhQT1JUX1NZTUJPTF9HUEwoZHNhX2RldmxpbmtfcmVnaW9uX2Rlc3Ryb3kpO1xubmV0L2RzYS9kZXZsaW5rLmMtMzAxLVxubmV0L2RzYS9kZXZsaW5rLmM6MzAyOmludCBkc2FfcG9ydF9kZXZsaW5rX3NldHVwKHN0cnVjdCBkc2FfcG9ydCAqZHApXG5uZXQvZHNhL2RldmxpbmsuYy0zMDMte1xubmV0L2RzYS9kZXZsaW5rLmMtMzA0LVx0c3RydWN0IGRldmxpbmtfcG9ydCAqZGxwID0gXHUwMDI2ZHAtXHUwMDNlZGV2bGlua19wb3J0O1xubmV0L2RzYS9kZXZsaW5rLmM6MzA1Olx0c3RydWN0IGRzYV9zd2l0Y2hfdHJlZSAqZHN0ID0gZHAtXHUwMDNlZHMtXHUwMDNlZHN0O1xubmV0L2RzYS9kZXZsaW5rLmMtMzA2LVx0c3RydWN0IGRldmxpbmtfcG9ydF9hdHRycyBhdHRycyA9IHt9O1xubmV0L2RzYS9kZXZsaW5rLmMtMzA3LVx0c3RydWN0IGRldmxpbmsgKmRsID0gZHAtXHUwMDNlZHMtXHUwMDNlZGV2bGluaztcbm5ldC9kc2EvZGV2bGluay5jOjMwODpcdHN0cnVjdCBkc2Ffc3dpdGNoICpkcyA9IGRwLVx1MDAzZWRzO1xubmV0L2RzYS9kZXZsaW5rLmMtMzA5LVx0Y29uc3QgdW5zaWduZWQgY2hhciAqaWQ7XG4tLVxubmV0L2RzYS9kZXZsaW5rLmMtMzU0LVxubmV0L2RzYS9kZXZsaW5rLmM6MzU1OnZvaWQgZHNhX3BvcnRfZGV2bGlua190ZWFyZG93bihzdHJ1Y3QgZHNhX3BvcnQgKmRwKVxubmV0L2RzYS9kZXZsaW5rLmMtMzU2LXtcbm5ldC9kc2EvZGV2bGluay5jLTM1Ny1cdHN0cnVjdCBkZXZsaW5rX3BvcnQgKmRscCA9IFx1MDAyNmRwLVx1MDAzZWRldmxpbmtfcG9ydDtcblxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yNSAwODozMDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0NjE0NgoJCQkJCQkJb3V0cHV0OiAyMQoJCQkJCQkJdGhvdWdodHM6IDExMDgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqRnV6emluZyBEU0EgVGFnZ2luZyBQcm90b2NvbHMgd2l0aCBgZHNhX2xvb3BgKioKCk9rYXksIHNvIEkmIzM5O3ZlIGJlZW4gZGlnZ2luZyBpbnRvIHRoZSBEU0EgKERpc3RyaWJ1dGVkIFN3aXRjaCBBcmNoaXRlY3R1cmUpIGNvZGUsIHNwZWNpZmljYWxseSBsb29raW5nIGZvciBmdXp6aW5nIG9wcG9ydHVuaXRpZXMuIFRoZSBgZHNhX2xvb3BgIGRyaXZlciBzZWVtcyBsaWtlIGEgZ3JlYXQgc3RhcnRpbmcgcG9pbnQg4oCTIGl0JiMzOTtzIGEgbW9jay11cCBkcml2ZXIsIGVzc2VudGlhbGx5IGEgdmlydHVhbCBzd2l0Y2ggaW5zdGFudGlhdGVkIHZpYSBgbWRpb19kcml2ZXJfcmVnaXN0ZXJgIGFuZCBgZHNhX2xvb3BfY3JlYXRlX3N3aXRjaF9tZGlvZGV2KClgLiBJZiBgQ09ORklHX05FVF9EU0FfTE9PUGAgaXMgZW5hYmxlZCwgdGhpcyB0aGluZyBhdXRvbWF0aWNhbGx5IHNldHMgdXAgYSBzd2l0Y2ggYW5kIGF0dGFjaGVzIGl0IHRvIGEgZml4ZWQgUEhZLCB3aGljaCBpcyBjb252ZW5pZW50LgoKTm93LCBgZHNhX2xvb3BfY3JlYXRlX3N3aXRjaF9tZGlvZGV2KClgIGNyZWF0ZXMgZWl0aGVyIGEgcGxhdGZvcm0gZGV2aWNlIG9yIGFuIE1ESU8gZGV2aWNlLCB3aGljaCBpcyBpbnRlcmVzdGluZyBpbiBpdHNlbGYuIFRoZSBjcml0aWNhbCBwYXJ0IGlzIHdoZXRoZXIgYGRzYV9sb29wYCBwcm92aWRlcyBhIHBhdGggdG8gdGhlIG1vZGlmaWVkIHRhZ2dpbmcgY29kZSBpbiBgbmV0L2RzYS90YWdfKi5jYCwgYG5ldC9kc2EvdXNlci5jYCwgYW5kIGBuZXQvZHNhL3RhZy5jYC4gSW5pdGlhbGx5LCBpdCBsb29rcyBsaWtlIGBkc2FfbG9vcGAgdXNlcyBgTkVUX0RTQV9UQUdfTk9ORWAsIHdoaWNoIGlzbiYjMzk7dCBnb2luZyB0byBnZXQgdXMgYW55d2hlcmUgd2l0aCB0aGUgZGlmZmVyZW50IHRhZ2dpbmcgcHJvdG9jb2xzLgoKSG93ZXZlciwgdGhlIGtleSBpcyB0aGUgYGRzYV9jb25kdWl0X3NldF9wcm9taXNjdWl0eWAgYW5kIGB0YWdnaW5nX3N0b3JlYCBmdW5jdGlvbnMgaW4gYG5ldC9kc2EvY29uZHVpdC5jYC4gSXQgbG9va3MgbGlrZSB0aGVzZSBvZmZlciBhIHdheSB0byAqZHluYW1pY2FsbHkqIGNoYW5nZSB0aGUgdGFnIHByb3RvY29sIHZpYSBzeXNmcyEgU3BlY2lmaWNhbGx5LCBzeXprYWxsZXIgY2FuIHdyaXRlIHRvIGAvc3lzL2NsYXNzL25ldC8mbHQ7Y29uZHVpdCZndDsvZHNhL3RhZ2dpbmdgIHRvIHN3YXAgb3V0IHRoZSB0YWcgcHJvdG9jb2wgdG8gQU5ZIG9mIHRoZSByZWdpc3RlcmVkIHRhZyBkcml2ZXJzLiBUaGUgYHRhZ2dpbmdfc3RvcmVgIGZ1bmN0aW9uIGFjdHVhbGx5IGNhbGxzIGBkc2FfdGFnX2RyaXZlcl9nZXRfYnlfbmFtZSgpYCBhbmQgdGhlbiBgZHNhX3RyZWVfY2hhbmdlX3RhZ19wcm90bygpYC4gVGhpcyBpcyBmYW50YXN0aWMhCgpUaGlzIG1lYW5zIHdlIGNhbiBlbmFibGUgKmFsbCogdGhlIGBORVRfRFNBX1RBR18qYCBjb25maWdzIGFuZCB1c2Ugc3l6a2FsbGVyIHRvIHN3aXRjaCBiZXR3ZWVuIHRoZW0gb24gdGhlIGZseS4gVGhpcyBnaXZlcyB1cyBjb21wbGV0ZSBkeW5hbWljIGNvbnRyb2wgb3ZlciB3aGF0IHByb3RvY29scyB3ZSBmdXp6LiBXZSBuZWVkIHRvIGNvbmZpcm0gdGhhdCB3ZSBjYW4gZW5hYmxlIGFsbCB0aGVzZSB0YWdzLCB3aGljaCBpcyB0aGUgbmV4dCBzdGVwLiBJJiMzOTtsbCBjaGVjayBgbmV0L2RzYS9LY29uZmlnYCB0byBiZSBzdXJlLgoKUmVnYXJkaW5nIGBkc2FfbG9vcGAgYW5kIHRoZSAmIzM0O2NvbmR1aXQmIzM0OyBkZXZpY2UsIGl0IGNyZWF0ZXMgYSBzd2l0Y2gsIGJ1dCB3aGljaCBuZXR3b3JrIGRldmljZSBkb2VzIGl0IGF0dGFjaCB0bz8gTG9va2luZyBhdCBgZHNhX2xvb3BfcGRhdGFgLCBpdCBkZWZpbmVzIGAuY2QgPSB7IC5uZXRkZXYgPSAmIzM0O2V0aDAmIzM0OywgfWAuIFBlcmZlY3QhIFN5emthbGxlciB1c3VhbGx5IGhhcyBgZXRoMGAgb3IgYGV0aDFgIHByZXNlbnQuIElmIGBkc2FfbG9vcGAgYXR0YWNoZXMgdG8gYGV0aDBgLCBpdCYjMzk7bGwgY3JlYXRlIERTQSB1c2VyIGludGVyZmFjZXMgbGlrZSBgbGFuMWAsIGBsYW4yYCwgZXRjLgoKVGhpcyBtZWFucyB3ZSBjYW4gc2VuZCBwYWNrZXRzIHRocm91Z2ggYGxhbjFgLCB3aGljaCB3aWxsIGNhbGwgYGRzYV91c2VyX3htaXRgLCB3aGljaCBpbiB0dXJuIGNhbGxzIHRoZSB0YWdnZXImIzM5O3MgYHhtaXRgIGZ1bmN0aW9uIChgcC0mZ3Q7eG1pdGApLiBDcnVjaWFsbHksIGlmIHdlIHNlbmQgcGFja2V0cyAqdG8qIGBldGgwYCwgaXQgY2FsbHMgYGRzYV9zd2l0Y2hfcmN2YCwgYW5kIGNhbGxzIHRoZSB0YWdnZXImIzM5O3MgYHJjdmAgZnVuY3Rpb24gKGBwLSZndDtyY3ZgKS4gV2Ugbm93IGhhdmUgYSBjbGVhbiBmdXp6aW5nIHBhdGggZm9yIGJvdGggdHJhbnNtaXQgYW5kIHJlY2VpdmUgcGF0aHMhCgpTbywgdGhlIGdhbWUgcGxhbiBpcyBjbGVhci4gV2UgbmVlZCB0byBlbmFibGUgdGhlIGZvbGxvd2luZyBjb25maWdzOgoKKiAgIGBORVRfRFNBYAoqICAgYE5FVF9EU0FfTE9PUGAKKiAgIEFsbCB0aGUgYE5FVF9EU0FfVEFHXypgIGNvbmZpZ3MuCgpTcGVjaWZpY2FsbHksIEkmIzM5O2xsIG5lZWQgdG8gZW5hYmxlIGFsbCBvZiB0aGVzZToKKiAgIGBORVRfRFNBX1RBR19BUjkzMzFgCiogICBgTkVUX0RTQV9UQUdfQlJDTWAKKiAgIGBORVRfRFNBX1RBR19CUkNNX0xFR0FDWWAKKiAgIGBORVRfRFNBX1RBR19CUkNNX1BSRVBFTkRgCiogICBgTkVUX0RTQV9UQUdfSEVMTENSRUVLYAoqICAgYE5FVF9EU0FfVEFHX0dTV0lQYAoqICAgYE5FVF9EU0FfVEFHX0RTQWAKKiAgIGBORVRfRFNBX1RBR19FRFNBYAoqICAgYE5FVF9EU0FfVEFHX01US2AKKiAgIGBORVRfRFNBX1RBR19NWExfODYyWFhgCiogICBgTkVUX0RTQV9UQUdfTVhMX0dTVzFYWGAKKiAgIGBORVRfRFNBX1RBR19LU1pgCiogICBgTkVUX0RTQV9UQUdfTkVUQ2AKKiAgIGBORVRfRFNBX1RBR19PQ0VMT1RgCiogICBgTkVUX0RTQV9UQUdfT0NFTE9UXzgwMjFRYAoqICAgYE5FVF9EU0FfVEFHX1FDQWAKKiAgIGBORVRfRFNBX1RBR19SVEw0X0FgCiogICBgTkVUX0RTQV9UQUdfUlRMOF80YAoqICAgYE5FVF9EU0FfVEFHX1JaTjEKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yNSAwODozMDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgTkVUX0RTQV9UQUdfJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9kc2EvS2NvbmZpZz0xNz1pZiBORVRfRFNBXG4tLVxubmV0L2RzYS9LY29uZmlnLTIwLVxubmV0L2RzYS9LY29uZmlnOjIxOmNvbmZpZyBORVRfRFNBX1RBR19OT05FXG5uZXQvZHNhL0tjb25maWctMjItXHR0cmlzdGF0ZSBcJiMzNDtOby1vcCB0YWcgZHJpdmVyXCYjMzQ7XG4tLVxubmV0L2RzYS9LY29uZmlnLTI2LVxubmV0L2RzYS9LY29uZmlnOjI3OmNvbmZpZyBORVRfRFNBX1RBR19BUjkzMzFcbm5ldC9kc2EvS2NvbmZpZy0yOC1cdHRyaXN0YXRlIFwmIzM0O1RhZyBkcml2ZXIgZm9yIEF0aGVyb3MgQVI5MzMxIFNvQyB3aXRoIGJ1aWx0LWluIHN3aXRjaFwmIzM0O1xuLS1cbm5ldC9kc2EvS2NvbmZpZy0zMi1cbm5ldC9kc2EvS2NvbmZpZzozMzpjb25maWcgTkVUX0RTQV9UQUdfQlJDTV9DT01NT05cbm5ldC9kc2EvS2NvbmZpZy0zNC1cdHRyaXN0YXRlXG4tLVxubmV0L2RzYS9LY29uZmlnLTM2LVxubmV0L2RzYS9LY29uZmlnOjM3OmNvbmZpZyBORVRfRFNBX1RBR19CUkNNXG5uZXQvZHNhL0tjb25maWctMzgtXHR0cmlzdGF0ZSBcJiMzNDtUYWcgZHJpdmVyIGZvciBCcm9hZGNvbSBzd2l0Y2hlcyB1c2luZyBpbi1mcmFtZSBoZWFkZXJzXCYjMzQ7XG4tLVxubmV0L2RzYS9LY29uZmlnLTQzLVxubmV0L2RzYS9LY29uZmlnOjQ0OmNvbmZpZyBORVRfRFNBX1RBR19CUkNNX0xFR0FDWVxubmV0L2RzYS9LY29uZmlnLTQ1LVx0dHJpc3RhdGUgXCYjMzQ7VGFnIGRyaXZlciBmb3IgQkNNNjN4eCBsZWdhY3kgc3dpdGNoZXMgdXNpbmcgaW4tZnJhbWUgaGVhZGVyc1wmIzM0O1xuLS1cbm5ldC9kc2EvS2NvbmZpZy01My1cbm5ldC9kc2EvS2NvbmZpZzo1NDpjb25maWcgTkVUX0RTQV9UQUdfQlJDTV9MRUdBQ1lfRkNTXG5uZXQvZHNhL0tjb25maWctNTUtXHR0cmlzdGF0ZSBcJiMzNDtUYWcgZHJpdmVyIGZvciBCQ001M3h4IGxlZ2FjeSBzd2l0Y2hlcyB1c2luZyBpbi1mcmFtZSBoZWFkZXJzXCYjMzQ7XG4tLVxubmV0L2RzYS9LY29uZmlnLTYzLVxubmV0L2RzYS9LY29uZmlnOjY0OmNvbmZpZyBORVRfRFNBX1RBR19CUkNNX1BSRVBFTkRcbm5ldC9kc2EvS2NvbmZpZy02NS1cdHRyaXN0YXRlIFwmIzM0O1RhZyBkcml2ZXIgZm9yIEJyb2FkY29tIHN3aXRjaGVzIHVzaW5nIHByZXBlbmRlZCBoZWFkZXJzXCYjMzQ7XG4tLVxubmV0L2RzYS9LY29uZmlnLTcxLVxubmV0L2RzYS9LY29uZmlnOjcyOmNvbmZpZyBORVRfRFNBX1RBR19IRUxMQ1JFRUtcbm5ldC9kc2EvS2NvbmZpZy03My1cdHRyaXN0YXRlIFwmIzM0O1RhZyBkcml2ZXIgZm9yIEhpcnNjaG1hbm4gSGVsbGNyZWVrIFRTTiBzd2l0Y2hlc1wmIzM0O1xuLS1cbm5ldC9kc2EvS2NvbmZpZy03Ny1cbm5ldC9kc2EvS2NvbmZpZzo3ODpjb25maWcgTkVUX0RTQV9UQUdfR1NXSVBcbm5ldC9kc2EvS2NvbmZpZy03OS1cdHRyaXN0YXRlIFwmIzM0O1RhZyBkcml2ZXIgZm9yIExhbnRpcSAvIEludGVsIEdTV0lQIHN3aXRjaGVzXCYjMzQ7XG4tLVxubmV0L2RzYS9LY29uZmlnLTgzLVxubmV0L2RzYS9LY29uZmlnOjg0OmNvbmZpZyBORVRfRFNBX1RBR19EU0FfQ09NTU9OXG5uZXQvZHNhL0tjb25maWctODUtXHR0cmlzdGF0ZVxubmV0L2RzYS9LY29uZmlnLTg2LVxubmV0L2RzYS9LY29uZmlnOjg3OmNvbmZpZyBORVRfRFNBX1RBR19EU0Fcbm5ldC9kc2EvS2NvbmZpZy04OC1cdHRyaXN0YXRlIFwmIzM0O1RhZyBkcml2ZXIgZm9yIE1hcnZlbGwgc3dpdGNoZXMgdXNpbmcgRFNBIGhlYWRlcnNcJiMzNDtcbi0tXG5uZXQvZHNhL0tjb25maWctOTMtXG5uZXQvZHNhL0tjb25maWc6OTQ6Y29uZmlnIE5FVF9EU0FfVEFHX0VEU0Fcbm5ldC9kc2EvS2NvbmZpZy05NS1cdHRyaXN0YXRlIFwmIzM0O1RhZyBkcml2ZXIgZm9yIE1hcnZlbGwgc3dpdGNoZXMgdXNpbmcgRXRoZXJUeXBlIERTQSBoZWFkZXJzXCYjMzQ7XG4tLVxubmV0L2RzYS9LY29uZmlnLTEwMC1cbm5ldC9kc2EvS2NvbmZpZzoxMDE6Y29uZmlnIE5FVF9EU0FfVEFHX01US1xubmV0L2RzYS9LY29uZmlnLTEwMi1cdHRyaXN0YXRlIFwmIzM0O1RhZyBkcml2ZXIgZm9yIE1lZGlhdGVrIHN3aXRjaGVzXCYjMzQ7XG4tLVxubmV0L2RzYS9LY29uZmlnLTEwNi1cbm5ldC9kc2EvS2NvbmZpZzoxMDc6Y29uZmlnIE5FVF9EU0FfVEFHX01YTF84NjJYWFxubmV0L2RzYS9LY29uZmlnLTEwOC1cdHRyaXN0YXRlIFwmIzM0O1RhZyBkcml2ZXIgZm9yIE1heExpbmVhciBNeEw4NjJ4eCBzd2l0Y2hlc1wmIzM0O1xuLS1cbm5ldC9kc2EvS2NvbmZpZy0xMTMtXG5uZXQvZHNhL0tjb25maWc6MTE0OmNvbmZpZyBORVRfRFNBX1RBR19NWExfR1NXMVhYXG5uZXQvZHNhL0tjb25maWctMTE1LVx0dHJpc3RhdGUgXCYjMzQ7VGFnIGRyaXZlciBmb3IgTWF4TGluZWFyIEdTVzF4eCBzd2l0Y2hlc1wmIzM0O1xuLS1cbm5ldC9kc2EvS2NvbmZpZy0xMjEtXG5uZXQvZHNhL0tjb25maWc6MTIyOmNvbmZpZyBORVRfRFNBX1RBR19LU1pcbm5ldC9kc2EvS2NvbmZpZy0xMjMtXHR0cmlzdGF0ZSBcJiMzNDtUYWcgZHJpdmVyIGZvciBNaWNyb2NoaXAgODc5NS85Mzd4Lzk0NzcvOTg5MyBmYW1pbGllcyBvZiBzd2l0Y2hlc1wmIzM0O1xuLS1cbm5ldC9kc2EvS2NvbmZpZy0xMjctXG5uZXQvZHNhL0tjb25maWc6MTI4OmNvbmZpZyBORVRfRFNBX1RBR19ORVRDXG5uZXQvZHNhL0tjb25maWctMTI5LVx0dHJpc3RhdGUgXCYjMzQ7VGFnIGRyaXZlciBmb3IgTlhQIE5FVEMgc3dpdGNoZXNcJiMzNDtcbi0tXG5uZXQvZHNhL0tjb25maWctMTM3LVxubmV0L2RzYS9LY29uZmlnOjEzODpjb25maWcgTkVUX0RTQV9UQUdfT0NFTE9UXG5uZXQvZHNhL0tjb25maWctMTM5LVx0dHJpc3RhdGUgXCYjMzQ7VGFnIGRyaXZlciBmb3IgT2NlbG90IGZhbWlseSBvZiBzd2l0Y2hlcywgdXNpbmcgTlBJIHBvcnRcJiMzNDtcbi0tXG5uZXQvZHNhL0tjb25maWctMTQ4LVxubmV0L2RzYS9LY29uZmlnOjE0OTpjb25maWcgTkVUX0RTQV9UQUdfT0NFTE9UXzgwMjFRXG5uZXQvZHNhL0tjb25maWctMTUwLVx0dHJpc3RhdGUgXCYjMzQ7VGFnIGRyaXZlciBmb3IgT2NlbG90IGZhbWlseSBvZiBzd2l0Y2hlcywgdXNpbmcgVkxBTlwmIzM0O1xuLS1cbm5ldC9kc2EvS2NvbmZpZy0xNTgtXG5uZXQvZHNhL0tjb25maWc6MTU5OmNvbmZpZyBORVRfRFNBX1RBR19RQ0Fcbm5ldC9kc2EvS2NvbmZpZy0xNjAtXHR0cmlzdGF0ZSBcJiMzNDtUYWcgZHJpdmVyIGZvciBRdWFsY29tbSBBdGhlcm9zIFFDQThLIHN3aXRjaGVzXCYjMzQ7XG4tLVxubmV0L2RzYS9LY29uZmlnLTE2NC1cbm5ldC9kc2EvS2NvbmZpZzoxNjU6Y29uZmlnIE5FVF9EU0FfVEFHX1JUTDRfQVxubmV0L2RzYS9LY29uZmlnLTE2Ni1cdHRyaXN0YXRlIFwmIzM0O1RhZyBkcml2ZXIgZm9yIFJlYWx0ZWsgNCBieXRlIHByb3RvY29sIEEgdGFnc1wmIzM0O1xuLS1cbm5ldC9kc2EvS2NvbmZpZy0xNzEtXG5uZXQvZHNhL0tjb25maWc6MTcyOmNvbmZpZyBORVRfRFNBX1RBR19SVEw4XzRcbm5ldC9kc2EvS2NvbmZpZy0xNzMtXHR0cmlzdGF0ZSBcJiMzNDtUYWcgZHJpdmVyIGZvciBSZWFsdGVrIDggYnl0ZSBwcm90b2NvbCA0IHRhZ3NcJiMzNDtcbi0tXG5uZXQvZHNhL0tjb25maWctMTc3LVxubmV0L2RzYS9LY29uZmlnOjE3ODpjb25maWcgTkVUX0RTQV9UQUdfUlpOMV9BNVBTV1xubmV0L2RzYS9LY29uZmlnLTE3OS1cdHRyaXN0YXRlIFwmIzM0O1RhZyBkcml2ZXIgZm9yIFJlbmVzYXMgUlovTjEgQTVQU1cgc3dpdGNoXCYjMzQ7XG4tLVxubmV0L2RzYS9LY29uZmlnLTE4NC1cbm5ldC9kc2EvS2NvbmZpZzoxODU6Y29uZmlnIE5FVF9EU0FfVEFHX0xBTjkzMDNcbm5ldC9kc2EvS2NvbmZpZy0xODYtXHR0cmlzdGF0ZSBcJiMzNDtUYWcgZHJpdmVyIGZvciBTTVNDL01pY3JvY2hpcCBMQU45MzAzIGZhbWlseSBvZiBzd2l0Y2hlc1wmIzM0O1xuLS1cbm5ldC9kc2EvS2NvbmZpZy0xOTAtXG5uZXQvZHNhL0tjb25maWc6MTkxOmNvbmZpZyBORVRfRFNBX1RBR19TSkExMTA1XG5uZXQvZHNhL0tjb25maWctMTkyLVx0dHJpc3RhdGUgXCYjMzQ7VGFnIGRyaXZlciBmb3IgTlhQIFNKQTExMDUgc3dpdGNoZXNcJiMzNDtcbi0tXG5uZXQvZHNhL0tjb25maWctMTk5LVxubmV0L2RzYS9LY29uZmlnOjIwMDpjb25maWcgTkVUX0RTQV9UQUdfVFJBSUxFUlxubmV0L2RzYS9LY29uZmlnLTIwMS1cdHRyaXN0YXRlIFwmIzM0O1RhZyBkcml2ZXIgZm9yIHN3aXRjaGVzIHVzaW5nIGEgdHJhaWxlciB0YWdcJiMzNDtcbi0tXG5uZXQvZHNhL0tjb25maWctMjA1LVxubmV0L2RzYS9LY29uZmlnOjIwNjpjb25maWcgTkVUX0RTQV9UQUdfVlNDNzNYWF84MDIxUVxubmV0L2RzYS9LY29uZmlnLTIwNy1cdHRyaXN0YXRlIFwmIzM0O1RhZyBkcml2ZXIgZm9yIE1pY3JvY2hpcC9WaXRlc3NlIFZTQzczeHggZmFtaWx5IG9mIHN3aXRjaGVzLCB1c2luZyBWTEFOXCYjMzQ7XG4tLVxubmV0L2RzYS9LY29uZmlnLTIxMS1cbm5ldC9kc2EvS2NvbmZpZzoyMTI6Y29uZmlnIE5FVF9EU0FfVEFHX1hSUzcwMFhcbm5ldC9kc2EvS2NvbmZpZy0yMTMtXHR0cmlzdGF0ZSBcJiMzNDtUYWcgZHJpdmVyIGZvciBYUlM3MDB4IHN3aXRjaGVzXCYjMzQ7XG4tLVxubmV0L2RzYS9LY29uZmlnLTIxNy1cbm5ldC9kc2EvS2NvbmZpZzoyMTg6Y29uZmlnIE5FVF9EU0FfVEFHX1lUOTIxWFxubmV0L2RzYS9LY29uZmlnLTIxOS1cdHRyaXN0YXRlIFwmIzM0O1RhZyBkcml2ZXIgZm9yIE1vdG9yY29tbSBZVDkyMXggc3dpdGNoZXNcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNy8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjUgMDg6MzA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNTAzMTAKCQkJCQkJCW91dHB1dDogNjIxCgkJCQkJCQl0aG91Z2h0czogMjg3NQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipEU0EgU3Vic3lzdGVtIEFuYWx5c2lzIGZvciBGdXp6aW5nKioKCkFscmlnaHQsIGxldCYjMzk7cyBicmVhayB0aGlzIGRvd24gc3lzdGVtYXRpY2FsbHkuIEZpcnN0LCBJIG5lZWQgdG8gbGlzdCB0aGUgcmVsZXZhbnQga2VybmVsIGNvbmZpZ3VyYXRpb25zLiBXaGlsZSBgTkVUX0RTQV9UQUdfQlJDTV9DT01NT05gIGFuZCBgTkVUX0RTQV9UQUdfRFNBX0NPTU1PTmAgYXJlIGxpa2VseSBhbHJlYWR5IGVuYWJsZWQgYnkgb3RoZXJzLCBpdCBkb2VzbiYjMzk7dCBodXJ0IHRvIGJlIGV4cGxpY2l0LiBUaGUgY3JpdGljYWwgb25lIGhlcmUgaXMgYE5FVF9EU0FfTE9PUGA7IHRoYXQmIzM5O3MgZXNzZW50aWFsIGZvciBpbnN0YW50aWF0aW5nIGEgdmlydHVhbCBzd2l0Y2gsIHdoaWNoIGlzIHRoZSBrZXkgdG8gdGVzdGluZyB0aGlzLiBUaGVuLCBvZiBjb3Vyc2UsIGBDT05GSUdfTkVUX0RTQWAgaXRzZWxmIGlzIHJlcXVpcmVkLgoKTm93LCB3aGljaCBmdW5jdGlvbnMgYXJlIG1vZGlmaWVkPyBUaGUgcGF0Y2ggdG91Y2hlcyBhIGxvdCBvZiBmaWxlcyB3aXRoaW4gdGhlIGBuZXQvZHNhYCBkaXJlY3RvcnkuIEkmIzM5O3ZlIGdvdCB0byBjb25zaWRlciBhbGwgb2YgdGhlIHRhZ2dpbmcgZnVuY3Rpb25zLCB0aGUgb25lcyB0aGF0IGFyZSBsaWtlbHkgdG8gaGF2ZSBhIG1lbW9yeSBtYW5hZ2VtZW50IGNoYW5nZS4KCkxldCBtZSBzZWUgd2hhdCBuZWVkcyB0byBiZSBjb25zaWRlcmVkIGFzIHRoZSBtYWluIGZvY3VzOgotICAgYGRzYV9zd2l0Y2hfcmN2YCBpbiBgbmV0L2RzYS90YWcuY2AKLSAgIGBhcjkzMzFfdGFnX3JjdmAgaW4gYG5ldC9kc2EvdGFnX2FyOTMzMS5jYAotICAgYGJyY21fdGFnX3htaXRfbGxgIGluIGBuZXQvZHNhL3RhZ19icmNtLmNgCi0gICBgYnJjbV90YWdfcmN2X2xsYCBpbiBgbmV0L2RzYS90YWdfYnJjbS5jYAotICAgYGJyY21fbGVnX3RhZ19yY3ZgIGluIGBuZXQvZHNhL3RhZ19icmNtLmNgCi0gICBgYnJjbV9sZWdfdGFnX3htaXRgIGluIGBuZXQvZHNhL3RhZ19icmNtLmNgCi0gICBgYnJjbV9sZWdfZmNzX3RhZ194bWl0YCBpbiBgbmV0L2RzYS90YWdfYnJjbS5jYAotICAgYGRzYV9yY3ZfbGxgIGluIGBuZXQvZHNhL3RhZ19kc2EuY2AKLSAgIGBkc2FfcmN2YCBpbiBgbmV0L2RzYS90YWdfZHNhLmNgCi0gICBgZWRzYV9yY3ZgIGluIGBuZXQvZHNhL3RhZ19kc2EuY2AKLSAgIGBnc3dpcF90YWdfcmN2YCBpbiBgbmV0L2RzYS90YWdfZ3N3aXAuY2AKLSAgIGBoZWxsY3JlZWtfeG1pdGAgaW4gYG5ldC9kc2EvdGFnX2hlbGxjcmVlay5jYAotICAgYGhlbGxjcmVla19yY3ZgIGluIGBuZXQvZHNhL3RhZ19oZWxsY3JlZWsuY2AKLSAgIGBrc3pfY29tbW9uX3JjdmAgaW4gYG5ldC9kc2EvdGFnX2tzei5jYAotICAgYGtzejg3OTVfeG1pdGAgaW4gYG5ldC9kc2EvdGFnX2tzei5jYAotICAgYGtzejg3OTVfcmN2YCBpbiBgbmV0L2RzYS90YWdfa3N6LmNgCi0gICBga3N6X2RlZmVyX3htaXRgIGluIGBuZXQvZHNhL3RhZ19rc3ouY2AKLSAgIGBrc3o5NDc3X3htaXRgIGluIGBuZXQvZHNhL3RhZ19rc3ouY2AKLSAgIGBrc3o5NDc3X3JjdmAgaW4gYG5ldC9kc2EvdGFnX2tzei5jYAotICAgYGtzejk4OTNfeG1pdGAgaW4gYG5ldC9kc2EvdGFnX2tzei5jYAotICAgYGxhbjkzN3hfeG1pdGAgaW4gYG5ldC9kc2EvdGFnX2tzei5jYAotICAgYGxhbjkzMDNfcmN2YCBpbiBgbmV0L2RzYS90YWdfbGFuOTMwMy5jYAotICAgYG10a190YWdfcmN2YCBpbiBgbmV0L2RzYS90YWdfbXRrLmNgCi0gICBgZ3N3MXh4X3RhZ19yY3ZgIGluIGBuZXQvZHNhL3RhZ19teGwtZ3N3MXh4LmNgCi0gICBgbXhsODYyX3RhZ19yY3ZgIGluIGBuZXQvZHNhL3RhZ19teGw4NjJ4eC5jYAotICAgYG5ldGNfcmN2YCBpbiBgbmV0L2RzYS90YWdfbmV0Yy5jYAotICAgYG9jZWxvdF9yY3ZgIGluIGBuZXQvZHNhL3RhZ19vY2Vsb3QuY2AKLSAgIGBvY2Vsb3RfZGVmZXJfeG1pdGAgaW4gYG5ldC9kc2EvdGFnX29jZWxvdF84MDIxcS5jYAotICAgYG9jZWxvdF9yY3ZgIGluIGBuZXQvZHNhL3RhZ19vY2Vsb3RfODAyMXEuY2AKLSAgIGBxY2FfdGFnX3JjdmAgaW4gYG5ldC9kc2EvdGFnX3FjYS5jYAotICAgYHJ0bDRhX3RhZ194bWl0YCBpbiBgbmV0L2RzYS8KCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yNSAwODozMDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7TkVUX0RTQSYjMzQ7LAogICAgJiMzNDtORVRfRFNBX0xPT1AmIzM0OywKICAgICYjMzQ7TkVUX0RTQV9UQUdfQVI5MzMxJiMzNDssCiAgICAmIzM0O05FVF9EU0FfVEFHX0JSQ00mIzM0OywKICAgICYjMzQ7TkVUX0RTQV9UQUdfQlJDTV9MRUdBQ1kmIzM0OywKICAgICYjMzQ7TkVUX0RTQV9UQUdfQlJDTV9QUkVQRU5EJiMzNDssCiAgICAmIzM0O05FVF9EU0FfVEFHX0hFTExDUkVFSyYjMzQ7LAogICAgJiMzNDtORVRfRFNBX1RBR19HU1dJUCYjMzQ7LAogICAgJiMzNDtORVRfRFNBX1RBR19EU0EmIzM0OywKICAgICYjMzQ7TkVUX0RTQV9UQUdfRURTQSYjMzQ7LAogICAgJiMzNDtORVRfRFNBX1RBR19NVEsmIzM0OywKICAgICYjMzQ7TkVUX0RTQV9UQUdfTVhMXzg2MlhYJiMzNDssCiAgICAmIzM0O05FVF9EU0FfVEFHX01YTF9HU1cxWFgmIzM0OywKICAgICYjMzQ7TkVUX0RTQV9UQUdfS1NaJiMzNDssCiAgICAmIzM0O05FVF9EU0FfVEFHX05FVEMmIzM0OywKICAgICYjMzQ7TkVUX0RTQV9UQUdfT0NFTE9UJiMzNDssCiAgICAmIzM0O05FVF9EU0FfVEFHX09DRUxPVF84MDIxUSYjMzQ7LAogICAgJiMzNDtORVRfRFNBX1RBR19RQ0EmIzM0OywKICAgICYjMzQ7TkVUX0RTQV9UQUdfUlRMNF9BJiMzNDssCiAgICAmIzM0O05FVF9EU0FfVEFHX1JUTDhfNCYjMzQ7LAogICAgJiMzNDtORVRfRFNBX1RBR19SWk4xX0E1UFNXJiMzNDssCiAgICAmIzM0O05FVF9EU0FfVEFHX0xBTjkzMDMmIzM0OywKICAgICYjMzQ7TkVUX0RTQV9UQUdfU0pBMTEwNSYjMzQ7LAogICAgJiMzNDtORVRfRFNBX1RBR19UUkFJTEVSJiMzNDssCiAgICAmIzM0O05FVF9EU0FfVEFHX1ZTQzczWFhfODAyMVEmIzM0OywKICAgICYjMzQ7TkVUX0RTQV9UQUdfWFJTNzAwWCYjMzQ7LAogICAgJiMzNDtORVRfRFNBX1RBR19ZVDkyMVgmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtkc2Ffc3dpdGNoX3JjdiYjMzQ7LAogICAgJiMzNDtkc2FfdXNlcl94bWl0JiMzNDssCiAgICAmIzM0O2FyOTMzMV90YWdfcmN2JiMzNDssCiAgICAmIzM0O2JyY21fdGFnX3htaXRfbGwmIzM0OywKICAgICYjMzQ7YnJjbV90YWdfcmN2X2xsJiMzNDssCiAgICAmIzM0O2RzYV9yY3ZfbGwmIzM0OywKICAgICYjMzQ7ZWRzYV9yY3YmIzM0OywKICAgICYjMzQ7a3N6X2NvbW1vbl9yY3YmIzM0OywKICAgICYjMzQ7b2NlbG90X3JjdiYjMzQ7LAogICAgJiMzNDtxY2FfdGFnX3JjdiYjMzQ7LAogICAgJiMzNDtzamExMTA1X3JjdiYjMzQ7LAogICAgJiMzNDt0cmFpbGVyX3JjdiYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCByZWZhY3RvcnMgc2tiIG1lbW9yeSBtYW5hZ2VtZW50IGluIHRoZSBEU0EgKERpc3RyaWJ1dGVkIFN3aXRjaCBBcmNoaXRlY3R1cmUpIHN1YnN5c3RlbS4gSXQgc2hpZnRzIHRoZSByZXNwb25zaWJpbGl0eSBvZiBmcmVlaW5nIHRoZSBza2Igb24gZXJyb3IgcGF0aHMgZnJvbSB0aGUgY29yZSBEU0EgZnVuY3Rpb25zIChkc2FfdXNlcl94bWl0LCBkc2Ffc3dpdGNoX3JjdikgdG8gdGhlIGluZGl2aWR1YWwgdGFnZ2VyIGRyaXZlcnMuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSB0aGF0IGNvdWxkIGludHJvZHVjZSBtZW1vcnkgbGVha3Mgb3IgZG91YmxlIGZyZWVzIGlmIGFueSBlcnJvciBwYXRoIGluIGEgdGFnZ2VyIGRyaXZlciBpcyBtaXNzZWQgb3IgbWlzaGFuZGxlZC4gVGhlIGNvZGUgaXMgcmVhY2hhYmxlIGluIGEgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQgYnkgdXNpbmcgdGhlIGRzYV9sb29wIG1vY2stdXAgc3dpdGNoIGRyaXZlciBhbmQgZHluYW1pY2FsbHkgY2hhbmdpbmcgdGhlIHRhZ2dpbmcgcHJvdG9jb2wgdmlhIHN5c2ZzLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtORVRfRFNBJiMzNDssCiAgICAmIzM0O05FVF9EU0FfTE9PUCYjMzQ7LAogICAgJiMzNDtORVRfRFNBX1RBR19BUjkzMzEmIzM0OywKICAgICYjMzQ7TkVUX0RTQV9UQUdfQlJDTSYjMzQ7LAogICAgJiMzNDtORVRfRFNBX1RBR19CUkNNX0xFR0FDWSYjMzQ7LAogICAgJiMzNDtORVRfRFNBX1RBR19CUkNNX1BSRVBFTkQmIzM0OywKICAgICYjMzQ7TkVUX0RTQV9UQUdfSEVMTENSRUVLJiMzNDssCiAgICAmIzM0O05FVF9EU0FfVEFHX0dTV0lQJiMzNDssCiAgICAmIzM0O05FVF9EU0FfVEFHX0RTQSYjMzQ7LAogICAgJiMzNDtORVRfRFNBX1RBR19FRFNBJiMzNDssCiAgICAmIzM0O05FVF9EU0FfVEFHX01USyYjMzQ7LAogICAgJiMzNDtORVRfRFNBX1RBR19NWExfODYyWFgmIzM0OywKICAgICYjMzQ7TkVUX0RTQV9UQUdfTVhMX0dTVzFYWCYjMzQ7LAogICAgJiMzNDtORVRfRFNBX1RBR19LU1omIzM0OywKICAgICYjMzQ7TkVUX0RTQV9UQUdfTkVUQyYjMzQ7LAogICAgJiMzNDtORVRfRFNBX1RBR19PQ0VMT1QmIzM0OywKICAgICYjMzQ7TkVUX0RTQV9UQUdfT0NFTE9UXzgwMjFRJiMzNDssCiAgICAmIzM0O05FVF9EU0FfVEFHX1FDQSYjMzQ7LAogICAgJiMzNDtORVRfRFNBX1RBR19SVEw0X0EmIzM0OywKICAgICYjMzQ7TkVUX0RTQV9UQUdfUlRMOF80JiMzNDssCiAgICAmIzM0O05FVF9EU0FfVEFHX1JaTjFfQTVQU1cmIzM0OywKICAgICYjMzQ7TkVUX0RTQV9UQUdfTEFOOTMwMyYjMzQ7LAogICAgJiMzNDtORVRfRFNBX1RBR19TSkExMTA1JiMzNDssCiAgICAmIzM0O05FVF9EU0FfVEFHX1RSQUlMRVImIzM0OywKICAgICYjMzQ7TkVUX0RTQV9UQUdfVlNDNzNYWF84MDIxUSYjMzQ7LAogICAgJiMzNDtORVRfRFNBX1RBR19YUlM3MDBYJiMzNDssCiAgICAmIzM0O05FVF9EU0FfVEFHX1lUOTIxWCYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2RzYV9zd2l0Y2hfcmN2JiMzNDssCiAgICAmIzM0O2RzYV91c2VyX3htaXQmIzM0OywKICAgICYjMzQ7YXI5MzMxX3RhZ19yY3YmIzM0OywKICAgICYjMzQ7YnJjbV90YWdfeG1pdF9sbCYjMzQ7LAogICAgJiMzNDticmNtX3RhZ19yY3ZfbGwmIzM0OywKICAgICYjMzQ7ZHNhX3Jjdl9sbCYjMzQ7LAogICAgJiMzNDtlZHNhX3JjdiYjMzQ7LAogICAgJiMzNDtrc3pfY29tbW9uX3JjdiYjMzQ7LAogICAgJiMzNDtvY2Vsb3RfcmN2JiMzNDssCiAgICAmIzM0O3FjYV90YWdfcmN2JiMzNDssCiAgICAmIzM0O3NqYTExMDVfcmN2JiMzNDssCiAgICAmIzM0O3RyYWlsZXJfcmN2JiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIHJlZmFjdG9ycyBza2IgbWVtb3J5IG1hbmFnZW1lbnQgaW4gdGhlIERTQSAoRGlzdHJpYnV0ZWQgU3dpdGNoIEFyY2hpdGVjdHVyZSkgc3Vic3lzdGVtLiBJdCBzaGlmdHMgdGhlIHJlc3BvbnNpYmlsaXR5IG9mIGZyZWVpbmcgdGhlIHNrYiBvbiBlcnJvciBwYXRocyBmcm9tIHRoZSBjb3JlIERTQSBmdW5jdGlvbnMgKGRzYV91c2VyX3htaXQsIGRzYV9zd2l0Y2hfcmN2KSB0byB0aGUgaW5kaXZpZHVhbCB0YWdnZXIgZHJpdmVycy4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIHRoYXQgY291bGQgaW50cm9kdWNlIG1lbW9yeSBsZWFrcyBvciBkb3VibGUgZnJlZXMgaWYgYW55IGVycm9yIHBhdGggaW4gYSB0YWdnZXIgZHJpdmVyIGlzIG1pc3NlZCBvciBtaXNoYW5kbGVkLiBUaGUgY29kZSBpcyByZWFjaGFibGUgaW4gYSB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudCBieSB1c2luZyB0aGUgZHNhX2xvb3AgbW9jay11cCBzd2l0Y2ggZHJpdmVyIGFuZCBkeW5hbWljYWxseSBjaGFuZ2luZyB0aGUgdGFnZ2luZyBwcm90b2NvbCB2aWEgc3lzZnMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wNi0yNVQwODoyOTowNi4wNTAwMjM0NjlaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMDc1MDQzNDc5MDgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiTkVUX0RTQVwiLFxuICAgIFwiTkVUX0RTQV9MT09QXCIsXG4gICAgXCJORVRfRFNBX1RBR19BUjkzMzFcIixcbiAgICBcIk5FVF9EU0FfVEFHX0JSQ01cIixcbiAgICBcIk5FVF9EU0FfVEFHX0JSQ01fTEVHQUNZXCIsXG4gICAgXCJORVRfRFNBX1RBR19CUkNNX1BSRVBFTkRcIixcbiAgICBcIk5FVF9EU0FfVEFHX0hFTExDUkVFS1wiLFxuICAgIFwiTkVUX0RTQV9UQUdfR1NXSVBcIixcbiAgICBcIk5FVF9EU0FfVEFHX0RTQVwiLFxuICAgIFwiTkVUX0RTQV9UQUdfRURTQVwiLFxuICAgIFwiTkVUX0RTQV9UQUdfTVRLXCIsXG4gICAgXCJORVRfRFNBX1RBR19NWExfODYyWFhcIixcbiAgICBcIk5FVF9EU0FfVEFHX01YTF9HU1cxWFhcIixcbiAgICBcIk5FVF9EU0FfVEFHX0tTWlwiLFxuICAgIFwiTkVUX0RTQV9UQUdfTkVUQ1wiLFxuICAgIFwiTkVUX0RTQV9UQUdfT0NFTE9UXCIsXG4gICAgXCJORVRfRFNBX1RBR19PQ0VMT1RfODAyMVFcIixcbiAgICBcIk5FVF9EU0FfVEFHX1FDQVwiLFxuICAgIFwiTkVUX0RTQV9UQUdfUlRMNF9BXCIsXG4gICAgXCJORVRfRFNBX1RBR19SVEw4XzRcIixcbiAgICBcIk5FVF9EU0FfVEFHX1JaTjFfQTVQU1dcIixcbiAgICBcIk5FVF9EU0FfVEFHX0xBTjkzMDNcIixcbiAgICBcIk5FVF9EU0FfVEFHX1NKQTExMDVcIixcbiAgICBcIk5FVF9EU0FfVEFHX1RSQUlMRVJcIixcbiAgICBcIk5FVF9EU0FfVEFHX1ZTQzczWFhfODAyMVFcIixcbiAgICBcIk5FVF9EU0FfVEFHX1hSUzcwMFhcIixcbiAgICBcIk5FVF9EU0FfVEFHX1lUOTIxWFwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImRzYV9zd2l0Y2hfcmN2XCIsXG4gICAgXCJkc2FfdXNlcl94bWl0XCIsXG4gICAgXCJhcjkzMzFfdGFnX3JjdlwiLFxuICAgIFwiYnJjbV90YWdfeG1pdF9sbFwiLFxuICAgIFwiYnJjbV90YWdfcmN2X2xsXCIsXG4gICAgXCJkc2FfcmN2X2xsXCIsXG4gICAgXCJlZHNhX3JjdlwiLFxuICAgIFwia3N6X2NvbW1vbl9yY3ZcIixcbiAgICBcIm9jZWxvdF9yY3ZcIixcbiAgICBcInFjYV90YWdfcmN2XCIsXG4gICAgXCJzamExMTA1X3JjdlwiLFxuICAgIFwidHJhaWxlcl9yY3ZcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCByZWZhY3RvcnMgc2tiIG1lbW9yeSBtYW5hZ2VtZW50IGluIHRoZSBEU0EgKERpc3RyaWJ1dGVkIFN3aXRjaCBBcmNoaXRlY3R1cmUpIHN1YnN5c3RlbS4gSXQgc2hpZnRzIHRoZSByZXNwb25zaWJpbGl0eSBvZiBmcmVlaW5nIHRoZSBza2Igb24gZXJyb3IgcGF0aHMgZnJvbSB0aGUgY29yZSBEU0EgZnVuY3Rpb25zIChkc2FfdXNlcl94bWl0LCBkc2Ffc3dpdGNoX3JjdikgdG8gdGhlIGluZGl2aWR1YWwgdGFnZ2VyIGRyaXZlcnMuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSB0aGF0IGNvdWxkIGludHJvZHVjZSBtZW1vcnkgbGVha3Mgb3IgZG91YmxlIGZyZWVzIGlmIGFueSBlcnJvciBwYXRoIGluIGEgdGFnZ2VyIGRyaXZlciBpcyBtaXNzZWQgb3IgbWlzaGFuZGxlZC4gVGhlIGNvZGUgaXMgcmVhY2hhYmxlIGluIGEgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQgYnkgdXNpbmcgdGhlIGRzYV9sb29wIG1vY2stdXAgc3dpdGNoIGRyaXZlciBhbmQgZHluYW1pY2FsbHkgY2hhbmdpbmcgdGhlIHRhZ2dpbmcgcHJvdG9jb2wgdmlhIHN5c2ZzLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0yNVQwODoyOTowNi4wNTAwMzEyODlaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjgwNjg1OTQxNSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IDY3NGU4OTk4Mzc3Y2M2ZjE3Y2IyOWZmYzY2NTVmOTJmYzM5YTE5ZjdcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIFRodSBKdW4gMjUgMDg6Mjk6MDQgMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvbmV0L2RzYS90YWcuYyBiL25ldC9kc2EvdGFnLmNcXG5pbmRleCA3OWFkMTA1OTAyZDk3OC4uOTkxNzMyZDZlYWUyYzMgMTAwNjQ0XFxuLS0tIGEvbmV0L2RzYS90YWcuY1xcbisrKyBiL25ldC9kc2EvdGFnLmNcXG5AQCAtNzksMTUgKzc5LDE2IEBAIHN0YXRpYyBpbnQgZHNhX3N3aXRjaF9yY3Yoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IG5ldF9kZXZpY2UgKmRldixcXG4gXFx0XFx0aWYgKGxpa2VseShza2ItXFx1MDAzZWRldikpIHtcXG4gXFx0XFx0XFx0ZHNhX2RlZmF1bHRfb2ZmbG9hZF9md2RfbWFyayhza2IpO1xcbiBcXHRcXHRcXHRuc2tiID0gc2tiO1xcbitcXHRcXHR9IGVsc2Uge1xcbitcXHRcXHRcXHQvKiBKdXN0IGRyb3AgdGhlIHNrYiBpZiB3ZSBjYW4ndCBmaW5kIHRoZSB1c2VyICovXFxuK1xcdFxcdFxcdGtmcmVlX3NrYihza2IpO1xcbiBcXHRcXHR9XFxuIFxcdH0gZWxzZSB7XFxuIFxcdFxcdG5za2IgPSBjcHVfZHAtXFx1MDAzZXJjdihza2IsIGRldik7XFxuIFxcdH1cXG4gXFxuLVxcdGlmICghbnNrYikge1xcbi1cXHRcXHRrZnJlZV9za2Ioc2tiKTtcXG4rXFx0aWYgKCFuc2tiKVxcbiBcXHRcXHRyZXR1cm4gMDtcXG4tXFx0fVxcbiBcXG4gXFx0c2tiID0gbnNrYjtcXG4gXFx0c2tiX3B1c2goc2tiLCBFVEhfSExFTik7XFxuQEAgLTEwNywxMSArMTA4LDEwIEBAIHN0YXRpYyBpbnQgZHNhX3N3aXRjaF9yY3Yoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IG5ldF9kZXZpY2UgKmRldixcXG4gXFxuIFxcdGlmICh1bmxpa2VseShjcHVfZHAtXFx1MDAzZWRzLVxcdTAwM2V1bnRhZ19icmlkZ2VfcHZpZCB8fFxcbiBcXHRcXHQgICAgIGNwdV9kcC1cXHUwMDNlZHMtXFx1MDAzZXVudGFnX3ZsYW5fYXdhcmVfYnJpZGdlX3B2aWQpKSB7XFxuK1xcdFxcdC8qIGRzYV9zb2Z0d2FyZV92bGFuX3VudGFnKCkgZHJvcHMgc2tiIG9uIGZhaWx1cmUgKi9cXG4gXFx0XFx0bnNrYiA9IGRzYV9zb2Z0d2FyZV92bGFuX3VudGFnKHNrYik7XFxuLVxcdFxcdGlmICghbnNrYikge1xcbi1cXHRcXHRcXHRrZnJlZV9za2Ioc2tiKTtcXG4rXFx0XFx0aWYgKCFuc2tiKVxcbiBcXHRcXHRcXHRyZXR1cm4gMDtcXG4tXFx0XFx0fVxcbiBcXHRcXHRza2IgPSBuc2tiO1xcbiBcXHR9XFxuIFxcbmRpZmYgLS1naXQgYS9uZXQvZHNhL3RhZ19hcjkzMzEuYyBiL25ldC9kc2EvdGFnX2FyOTMzMS5jXFxuaW5kZXggY2JiNTg4Y2E3M2FhZjUuLjJlMjM4ODE0M2IwMjUxIDEwMDY0NFxcbi0tLSBhL25ldC9kc2EvdGFnX2FyOTMzMS5jXFxuKysrIGIvbmV0L2RzYS90YWdfYXI5MzMxLmNcXG5AQCAtNTEsOCArNTEsMTAgQEAgc3RhdGljIHN0cnVjdCBza19idWZmICphcjkzMzFfdGFnX3JjdihzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxcbiBcXHR1OCB2ZXIsIHBvcnQ7XFxuIFxcdHUxNiBoZHI7XFxuIFxcbi1cXHRpZiAodW5saWtlbHkoIXBza2JfbWF5X3B1bGwoc2tiLCBBUjkzMzFfSERSX0xFTikpKVxcbitcXHRpZiAodW5saWtlbHkoIXBza2JfbWF5X3B1bGwoc2tiLCBBUjkzMzFfSERSX0xFTikpKSB7XFxuK1xcdFxcdGtmcmVlX3NrYihza2IpO1xcbiBcXHRcXHRyZXR1cm4gTlVMTDtcXG4rXFx0fVxcbiBcXG4gXFx0aGRyID0gbGUxNl90b19jcHUoKihfX2xlMTYgKilza2JfbWFjX2hlYWRlcihza2IpKTtcXG4gXFxuQEAgLTYwLDEyICs2MiwxNCBAQCBzdGF0aWMgc3RydWN0IHNrX2J1ZmYgKmFyOTMzMV90YWdfcmN2KHN0cnVjdCBza19idWZmICpza2IsXFxuIFxcdGlmICh1bmxpa2VseSh2ZXIgIT0gQVI5MzMxX0hEUl9WRVJTSU9OKSkge1xcbiBcXHRcXHRuZXRkZXZfd2Fybl9vbmNlKG5kZXYsIFxcXCIlczolaSB3cm9uZyBoZWFkZXIgdmVyc2lvbiAweCUyeFxcXFxuXFxcIixcXG4gXFx0XFx0XFx0XFx0IF9fZnVuY19fLCBfX0xJTkVfXywgaGRyKTtcXG4rXFx0XFx0a2ZyZWVfc2tiKHNrYik7XFxuIFxcdFxcdHJldHVybiBOVUxMO1xcbiBcXHR9XFxuIFxcbiBcXHRpZiAodW5saWtlbHkoaGRyIFxcdTAwMjYgQVI5MzMxX0hEUl9GUk9NX0NQVSkpIHtcXG4gXFx0XFx0bmV0ZGV2X3dhcm5fb25jZShuZGV2LCBcXFwiJXM6JWkgcGFja2V0IHNob3VsZCBub3QgYmUgZnJvbSBjcHUgMHglMnhcXFxcblxcXCIsXFxuIFxcdFxcdFxcdFxcdCBfX2Z1bmNfXywgX19MSU5FX18sIGhkcik7XFxuK1xcdFxcdGtmcmVlX3NrYihza2IpO1xcbiBcXHRcXHRyZXR1cm4gTlVMTDtcXG4gXFx0fVxcbiBcXG5AQCAtNzUsOCArNzksMTAgQEAgc3RhdGljIHN0cnVjdCBza19idWZmICphcjkzMzFfdGFnX3JjdihzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxcbiBcXHRwb3J0ID0gRklFTERfR0VUKEFSOTMzMV9IRFJfUE9SVF9OVU1fTUFTSywgaGRyKTtcXG4gXFxuIFxcdHNrYi1cXHUwMDNlZGV2ID0gZHNhX2NvbmR1aXRfZmluZF91c2VyKG5kZXYsIDAsIHBvcnQpO1xcbi1cXHRpZiAoIXNrYi1cXHUwMDNlZGV2KVxcbitcXHRpZiAoIXNrYi1cXHUwMDNlZGV2KSB7XFxuK1xcdFxcdGtmcmVlX3NrYihza2IpO1xcbiBcXHRcXHRyZXR1cm4gTlVMTDtcXG4rXFx0fVxcbiBcXG4gXFx0cmV0dXJuIHNrYjtcXG4gfVxcbmRpZmYgLS1naXQgYS9uZXQvZHNhL3RhZ19icmNtLmMgYi9uZXQvZHNhL3RhZ19icmNtLmNcXG5pbmRleCBjZjk0MjA0MzkwNTQzZi4uNDExZTNiNTdkMTZhZjUgMTAwNjQ0XFxuLS0tIGEvbmV0L2RzYS90YWdfYnJjbS5jXFxuKysrIGIvbmV0L2RzYS90YWdfYnJjbS5jXFxuQEAgLTEwMiw5ICsxMDIsOSBAQCBzdGF0aWMgc3RydWN0IHNrX2J1ZmYgKmJyY21fdGFnX3htaXRfbGwoc3RydWN0IHNrX2J1ZmYgKnNrYixcXG4gXFx0ICogKGluY2x1ZGluZyBGQ1MgYW5kIHRhZykgYmVjYXVzZSB0aGUgbGVuZ3RoIHZlcmlmaWNhdGlvbiBpcyBkb25lIGFmdGVyXFxuIFxcdCAqIHRoZSBCcm9hZGNvbSB0YWcgaXMgc3RyaXBwZWQgb2ZmIHRoZSBpbmdyZXNzIHBhY2tldC5cXG4gXFx0ICpcXG4tXFx0ICogTGV0IGRzYV91c2VyX3htaXQoKSBmcmVlIHRoZSBTS0JcXG4rXFx0ICogRnJlZSB0aGUgU0tCIG9uIGVycm9yLlxcbiBcXHQgKi9cXG4tXFx0aWYgKF9fc2tiX3B1dF9wYWR0byhza2IsIEVUSF9aTEVOICsgQlJDTV9UQUdfTEVOLCBmYWxzZSkpXFxuK1xcdGlmIChza2JfcHV0X3BhZHRvKHNrYiwgRVRIX1pMRU4gKyBCUkNNX1RBR19MRU4pKVxcbiBcXHRcXHRyZXR1cm4gTlVMTDtcXG4gXFxuIFxcdHNrYl9wdXNoKHNrYiwgQlJDTV9UQUdfTEVOKTtcXG5AQCAtMTUxLDI3ICsxNTEsMzUgQEAgc3RhdGljIHN0cnVjdCBza19idWZmICpicmNtX3RhZ19yY3ZfbGwoc3RydWN0IHNrX2J1ZmYgKnNrYixcXG4gXFx0aW50IHNvdXJjZV9wb3J0O1xcbiBcXHR1OCAqYnJjbV90YWc7XFxuIFxcbi1cXHRpZiAodW5saWtlbHkoIXBza2JfbWF5X3B1bGwoc2tiLCBCUkNNX1RBR19MRU4pKSlcXG4rXFx0aWYgKHVubGlrZWx5KCFwc2tiX21heV9wdWxsKHNrYiwgQlJDTV9UQUdfTEVOKSkpIHtcXG4rXFx0XFx0a2ZyZWVfc2tiKHNrYik7XFxuIFxcdFxcdHJldHVybiBOVUxMO1xcbitcXHR9XFxuIFxcbiBcXHRicmNtX3RhZyA9IHNrYi1cXHUwMDNlZGF0YSAtIG9mZnNldDtcXG4gXFxuIFxcdC8qIFRoZSBvcGNvZGUgc2hvdWxkIG5ldmVyIGJlIGRpZmZlcmVudCB0aGFuIDBiMDAwICovXFxuLVxcdGlmICh1bmxpa2VseSgoYnJjbV90YWdbMF0gXFx1MDAzZVxcdTAwM2UgQlJDTV9PUENPREVfU0hJRlQpIFxcdTAwMjYgQlJDTV9PUENPREVfTUFTSykpXFxuK1xcdGlmICh1bmxpa2VseSgoYnJjbV90YWdbMF0gXFx1MDAzZVxcdTAwM2UgQlJDTV9PUENPREVfU0hJRlQpIFxcdTAwMjYgQlJDTV9PUENPREVfTUFTSykpIHtcXG4rXFx0XFx0a2ZyZWVfc2tiKHNrYik7XFxuIFxcdFxcdHJldHVybiBOVUxMO1xcbitcXHR9XFxuIFxcbiBcXHQvKiBXZSBzaG91bGQgbmV2ZXIgc2VlIGEgcmVzZXJ2ZWQgcmVhc29uIGNvZGUgd2l0aG91dCBrbm93aW5nIGhvdyB0b1xcbiBcXHQgKiBoYW5kbGUgaXRcXG4gXFx0ICovXFxuLVxcdGlmICh1bmxpa2VseShicmNtX3RhZ1syXSBcXHUwMDI2IEJSQ01fRUdfUkNfUlNWRCkpXFxuK1xcdGlmICh1bmxpa2VseShicmNtX3RhZ1syXSBcXHUwMDI2IEJSQ01fRUdfUkNfUlNWRCkpIHtcXG4rXFx0XFx0a2ZyZWVfc2tiKHNrYik7XFxuIFxcdFxcdHJldHVybiBOVUxMO1xcbitcXHR9XFxuIFxcbiBcXHQvKiBMb2NhdGUgd2hpY2ggcG9ydCB0aGlzIGlzIGNvbWluZyBmcm9tICovXFxuIFxcdHNvdXJjZV9wb3J0ID0gYnJjbV90YWdbM10gXFx1MDAyNiBCUkNNX0VHX1BJRF9NQVNLO1xcbiBcXG4gXFx0c2tiLVxcdTAwM2VkZXYgPSBkc2FfY29uZHVpdF9maW5kX3VzZXIoZGV2LCAwLCBzb3VyY2VfcG9ydCk7XFxuLVxcdGlmICghc2tiLVxcdTAwM2VkZXYpXFxuK1xcdGlmICghc2tiLVxcdTAwM2VkZXYpIHtcXG4rXFx0XFx0a2ZyZWVfc2tiKHNrYik7XFxuIFxcdFxcdHJldHVybiBOVUxMO1xcbitcXHR9XFxuIFxcbiBcXHQvKiBSZW1vdmUgQnJvYWRjb20gdGFnIGFuZCB1cGRhdGUgY2hlY2tzdW0gKi9cXG4gXFx0c2tiX3B1bGxfcmNzdW0oc2tiLCBCUkNNX1RBR19MRU4pO1xcbkBAIC0yMjgsOCArMjM2LDEwIEBAIHN0YXRpYyBzdHJ1Y3Qgc2tfYnVmZiAqYnJjbV9sZWdfdGFnX3JjdihzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxcbiBcXHRfX2JlMTYgKnByb3RvO1xcbiBcXHR1OCAqYnJjbV90YWc7XFxuIFxcbi1cXHRpZiAodW5saWtlbHkoIXBza2JfbWF5X3B1bGwoc2tiLCBCUkNNX0xFR19UQUdfTEVOICsgVkxBTl9ITEVOKSkpXFxuK1xcdGlmICh1bmxpa2VseSghcHNrYl9tYXlfcHVsbChza2IsIEJSQ01fTEVHX1RBR19MRU4gKyBWTEFOX0hMRU4pKSkge1xcbitcXHRcXHRrZnJlZV9za2Ioc2tiKTtcXG4gXFx0XFx0cmV0dXJuIE5VTEw7XFxuK1xcdH1cXG4gXFxuIFxcdGJyY21fdGFnID0gZHNhX2V0eXBlX2hlYWRlcl9wb3Nfcngoc2tiKTtcXG4gXFx0cHJvdG8gPSAoX19iZTE2ICopKGJyY21fdGFnICsgQlJDTV9MRUdfVEFHX0xFTik7XFxuQEAgLTIzNyw4ICsyNDcsMTAgQEAgc3RhdGljIHN0cnVjdCBza19idWZmICpicmNtX2xlZ190YWdfcmN2KHN0cnVjdCBza19idWZmICpza2IsXFxuIFxcdHNvdXJjZV9wb3J0ID0gYnJjbV90YWdbNV0gXFx1MDAyNiBCUkNNX0xFR19QT1JUX0lEO1xcbiBcXG4gXFx0c2tiLVxcdTAwM2VkZXYgPSBkc2FfY29uZHVpdF9maW5kX3VzZXIoZGV2LCAwLCBzb3VyY2VfcG9ydCk7XFxuLVxcdGlmICghc2tiLVxcdTAwM2VkZXYpXFxuK1xcdGlmICghc2tiLVxcdTAwM2VkZXYpIHtcXG4rXFx0XFx0a2ZyZWVfc2tiKHNrYik7XFxuIFxcdFxcdHJldHVybiBOVUxMO1xcbitcXHR9XFxuIFxcbiBcXHQvKiBUaGUgaW50ZXJuYWwgc3dpdGNoIGluIEJDTTYzWFggU29DcyBhbHdheXMgdGFncyBvbiBlZ3Jlc3Mgb24gdGhlIENQVVxcbiBcXHQgKiBwb3J0LiBXZSB1c2UgVklEIDAgaW50ZXJuYWxseSBmb3IgdW50YWdnZWQgdHJhZmZpYywgc28gc3RyaXAgdGhlIHRhZ1xcbkBAIC0yNzMsMTAgKzI4NSw4IEBAIHN0YXRpYyBzdHJ1Y3Qgc2tfYnVmZiAqYnJjbV9sZWdfdGFnX3htaXQoc3RydWN0IHNrX2J1ZmYgKnNrYixcXG4gXFx0ICogbmVlZCB0byBtYWtlIHN1cmUgdGhhdCBwYWNrZXRzIGFyZSBhdCBsZWFzdCA3MCBieXRlc1xcbiBcXHQgKiAoaW5jbHVkaW5nIEZDUyBhbmQgdGFnKSBiZWNhdXNlIHRoZSBsZW5ndGggdmVyaWZpY2F0aW9uIGlzIGRvbmUgYWZ0ZXJcXG4gXFx0ICogdGhlIEJyb2FkY29tIHRhZyBpcyBzdHJpcHBlZCBvZmYgdGhlIGluZ3Jlc3MgcGFja2V0Llxcbi1cXHQgKlxcbi1cXHQgKiBMZXQgZHNhX3VzZXJfeG1pdCgpIGZyZWUgdGhlIFNLQlxcbiBcXHQgKi9cXG4tXFx0aWYgKF9fc2tiX3B1dF9wYWR0byhza2IsIEVUSF9aTEVOICsgQlJDTV9MRUdfVEFHX0xFTiwgZmFsc2UpKVxcbitcXHRpZiAoc2tiX3B1dF9wYWR0byhza2IsIEVUSF9aTEVOICsgQlJDTV9MRUdfVEFHX0xFTikpXFxuIFxcdFxcdHJldHVybiBOVUxMO1xcbiBcXG4gXFx0c2tiX3B1c2goc2tiLCBCUkNNX0xFR19UQUdfTEVOKTtcXG5AQCAtMzI1LDEwICszMzUsOCBAQCBzdGF0aWMgc3RydWN0IHNrX2J1ZmYgKmJyY21fbGVnX2Zjc190YWdfeG1pdChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxcbiBcXHQgKiBuZWVkIHRvIG1ha2Ugc3VyZSB0aGF0IHBhY2tldHMgYXJlIGF0IGxlYXN0IDcwIGJ5dGVzIChpbmNsdWRpbmcgRkNTXFxuIFxcdCAqIGFuZCB0YWcpIGJlY2F1c2UgdGhlIGxlbmd0aCB2ZXJpZmljYXRpb24gaXMgZG9uZSBhZnRlciB0aGUgQnJvYWRjb21cXG4gXFx0ICogdGFnIGlzIHN0cmlwcGVkIG9mZiB0aGUgaW5ncmVzcyBwYWNrZXQuXFxuLVxcdCAqXFxuLVxcdCAqIExldCBkc2FfdXNlcl94bWl0KCkgZnJlZSB0aGUgU0tCLlxcbiBcXHQgKi9cXG4tXFx0aWYgKF9fc2tiX3B1dF9wYWR0byhza2IsIEVUSF9aTEVOICsgQlJDTV9MRUdfVEFHX0xFTiwgZmFsc2UpKVxcbitcXHRpZiAoc2tiX3B1dF9wYWR0byhza2IsIEVUSF9aTEVOICsgQlJDTV9MRUdfVEFHX0xFTikpXFxuIFxcdFxcdHJldHVybiBOVUxMO1xcbiBcXG4gXFx0ZmNzX2xlbiA9IHNrYi1cXHUwMDNlbGVuO1xcbkBAIC0zNTEsOCArMzU5LDkgQEAgc3RhdGljIHN0cnVjdCBza19idWZmICpicmNtX2xlZ19mY3NfdGFnX3htaXQoc3RydWN0IHNrX2J1ZmYgKnNrYixcXG4gXFx0YnJjbV90YWdbNV0gPSBkcC1cXHUwMDNlaW5kZXggXFx1MDAyNiBCUkNNX0xFR19QT1JUX0lEO1xcbiBcXG4gXFx0LyogT3JpZ2luYWwgRkNTIHZhbHVlICovXFxuLVxcdGlmIChfX3NrYl9wYWQoc2tiLCBFVEhfRkNTX0xFTiwgZmFsc2UpKVxcbitcXHRpZiAoc2tiX3BhZChza2IsIEVUSF9GQ1NfTEVOKSlcXG4gXFx0XFx0cmV0dXJuIE5VTEw7XFxuK1xcbiBcXHRza2JfcHV0X2RhdGEoc2tiLCBcXHUwMDI2ZmNzX3ZhbCwgRVRIX0ZDU19MRU4pO1xcbiBcXG4gXFx0cmV0dXJuIHNrYjtcXG5kaWZmIC0tZ2l0IGEvbmV0L2RzYS90YWdfZHNhLmMgYi9uZXQvZHNhL3RhZ19kc2EuY1xcbmluZGV4IDJhMmM0ZmI2MWE2NWM2Li5kNWZmZWUzNWZiYjUzYiAxMDA2NDRcXG4tLS0gYS9uZXQvZHNhL3RhZ19kc2EuY1xcbisrKyBiL25ldC9kc2EvdGFnX2RzYS5jXFxuQEAgLTIyNCw2ICsyMjQsNyBAQCBzdGF0aWMgc3RydWN0IHNrX2J1ZmYgKmRzYV9yY3ZfbGwoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IG5ldF9kZXZpY2UgKmRldixcXG4gXFx0XFx0XFx0LyogUmVtb3RlIG1hbmFnZW1lbnQgaXMgbm90IGltcGxlbWVudGVkIHlldCxcXG4gXFx0XFx0XFx0ICogZHJvcC5cXG4gXFx0XFx0XFx0ICovXFxuK1xcdFxcdFxcdGtmcmVlX3NrYihza2IpO1xcbiBcXHRcXHRcXHRyZXR1cm4gTlVMTDtcXG4gXFx0XFx0Y2FzZSBEU0FfQ09ERV9BUlBfTUlSUk9SOlxcbiBcXHRcXHRjYXNlIERTQV9DT0RFX1BPTElDWV9NSVJST1I6XFxuQEAgLTI0NCwxMiArMjQ1LDE0IEBAIHN0YXRpYyBzdHJ1Y3Qgc2tfYnVmZiAqZHNhX3Jjdl9sbChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxcbiBcXHRcXHRcXHQvKiBSZXNlcnZlZCBjb2RlLCB0aGlzIGNvdWxkIGJlIGFueXRoaW5nLiBEcm9wXFxuIFxcdFxcdFxcdCAqIHNlZW1zIGxpa2UgdGhlIHNhZmVzdCBvcHRpb24uXFxuIFxcdFxcdFxcdCAqL1xcbitcXHRcXHRcXHRrZnJlZV9za2Ioc2tiKTtcXG4gXFx0XFx0XFx0cmV0dXJuIE5VTEw7XFxuIFxcdFxcdH1cXG4gXFxuIFxcdFxcdGJyZWFrO1xcbiBcXG4gXFx0ZGVmYXVsdDpcXG4rXFx0XFx0a2ZyZWVfc2tiKHNrYik7XFxuIFxcdFxcdHJldHVybiBOVUxMO1xcbiBcXHR9XFxuIFxcbkBAIC0yNzEsOCArMjc0LDEwIEBAIHN0YXRpYyBzdHJ1Y3Qgc2tfYnVmZiAqZHNhX3Jjdl9sbChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxcbiBcXHRcXHRcXHRcXHRcXHRcXHQgc291cmNlX3BvcnQpO1xcbiBcXHR9XFxuIFxcbi1cXHRpZiAoIXNrYi1cXHUwMDNlZGV2KVxcbitcXHRpZiAoIXNrYi1cXHUwMDNlZGV2KSB7XFxuK1xcdFxcdGtmcmVlX3NrYihza2IpO1xcbiBcXHRcXHRyZXR1cm4gTlVMTDtcXG4rXFx0fVxcbiBcXG4gXFx0LyogV2hlbiB1c2luZyBMQUcgb2ZmbG9hZCwgc2tiLVxcdTAwM2VkZXYgaXMgbm90IGEgRFNBIHVzZXIgaW50ZXJmYWNlLFxcbiBcXHQgKiBzbyB3ZSBjYW5ub3QgY2FsbCBkc2FfZGVmYXVsdF9vZmZsb2FkX2Z3ZF9tYXJrIGFuZCB3ZSBuZWVkIHRvXFxuQEAgLTMzNSw4ICszNDAsMTAgQEAgc3RhdGljIHN0cnVjdCBza19idWZmICpkc2FfeG1pdChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxcbiBcXG4gc3RhdGljIHN0cnVjdCBza19idWZmICpkc2FfcmN2KHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXFxuIHtcXG4tXFx0aWYgKHVubGlrZWx5KCFwc2tiX21heV9wdWxsKHNrYiwgRFNBX0hMRU4pKSlcXG4rXFx0aWYgKHVubGlrZWx5KCFwc2tiX21heV9wdWxsKHNrYiwgRFNBX0hMRU4pKSkge1xcbitcXHRcXHRrZnJlZV9za2Ioc2tiKTtcXG4gXFx0XFx0cmV0dXJuIE5VTEw7XFxuK1xcdH1cXG4gXFxuIFxcdHJldHVybiBkc2FfcmN2X2xsKHNrYiwgZGV2LCAwKTtcXG4gfVxcbkBAIC0zNzUsOCArMzgyLDEwIEBAIHN0YXRpYyBzdHJ1Y3Qgc2tfYnVmZiAqZWRzYV94bWl0KHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXFxuIFxcbiBzdGF0aWMgc3RydWN0IHNrX2J1ZmYgKmVkc2FfcmN2KHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXFxuIHtcXG4tXFx0aWYgKHVubGlrZWx5KCFwc2tiX21heV9wdWxsKHNrYiwgRURTQV9ITEVOKSkpXFxuK1xcdGlmICh1bmxpa2VseSghcHNrYl9tYXlfcHVsbChza2IsIEVEU0FfSExFTikpKSB7XFxuK1xcdFxcdGtmcmVlX3NrYihza2IpO1xcbiBcXHRcXHRyZXR1cm4gTlVMTDtcXG4rXFx0fVxcbiBcXG4gXFx0c2tiX3B1bGxfcmNzdW0oc2tiLCBFRFNBX0hMRU4gLSBEU0FfSExFTik7XFxuIFxcbmRpZmYgLS1naXQgYS9uZXQvZHNhL3RhZ19nc3dpcC5jIGIvbmV0L2RzYS90YWdfZ3N3aXAuY1xcbmluZGV4IDVmYTQzNjEyMTA4N2I0Li41YzQwN2Q0NDhjOWZlZSAxMDA2NDRcXG4tLS0gYS9uZXQvZHNhL3RhZ19nc3dpcC5jXFxuKysrIGIvbmV0L2RzYS90YWdfZ3N3aXAuY1xcbkBAIC04MCwxNiArODAsMjAgQEAgc3RhdGljIHN0cnVjdCBza19idWZmICpnc3dpcF90YWdfcmN2KHN0cnVjdCBza19idWZmICpza2IsXFxuIFxcdGludCBwb3J0O1xcbiBcXHR1OCAqZ3N3aXBfdGFnO1xcbiBcXG4tXFx0aWYgKHVubGlrZWx5KCFwc2tiX21heV9wdWxsKHNrYiwgR1NXSVBfUlhfSEVBREVSX0xFTikpKVxcbitcXHRpZiAodW5saWtlbHkoIXBza2JfbWF5X3B1bGwoc2tiLCBHU1dJUF9SWF9IRUFERVJfTEVOKSkpIHtcXG4rXFx0XFx0a2ZyZWVfc2tiKHNrYik7XFxuIFxcdFxcdHJldHVybiBOVUxMO1xcbitcXHR9XFxuIFxcbiBcXHRnc3dpcF90YWcgPSBza2ItXFx1MDAzZWRhdGEgLSBFVEhfSExFTjtcXG4gXFxuIFxcdC8qIEdldCBzb3VyY2UgcG9ydCBpbmZvcm1hdGlvbiAqL1xcbiBcXHRwb3J0ID0gKGdzd2lwX3RhZ1s3XSBcXHUwMDI2IEdTV0lQX1JYX1NQUElEX01BU0spIFxcdTAwM2VcXHUwMDNlIEdTV0lQX1JYX1NQUElEX1NISUZUO1xcbiBcXHRza2ItXFx1MDAzZWRldiA9IGRzYV9jb25kdWl0X2ZpbmRfdXNlcihkZXYsIDAsIHBvcnQpO1xcbi1cXHRpZiAoIXNrYi1cXHUwMDNlZGV2KVxcbitcXHRpZiAoIXNrYi1cXHUwMDNlZGV2KSB7XFxuK1xcdFxcdGtmcmVlX3NrYihza2IpO1xcbiBcXHRcXHRyZXR1cm4gTlVMTDtcXG4rXFx0fVxcbiBcXG4gXFx0LyogcmVtb3ZlIEdTV0lQIHRhZyAqL1xcbiBcXHRza2JfcHVsbF9yY3N1bShza2IsIEdTV0lQX1JYX0hFQURFUl9MRU4pO1xcbmRpZmYgLS1naXQgYS9uZXQvZHNhL3RhZ19oZWxsY3JlZWsuYyBiL25ldC9kc2EvdGFnX2hlbGxjcmVlay5jXFxuaW5kZXggNTQ0YWIxNTY4NWEyYjguLmRkOWYzMjhmMzE4MjEwIDEwMDY0NFxcbi0tLSBhL25ldC9kc2EvdGFnX2hlbGxjcmVlay5jXFxuKysrIGIvbmV0L2RzYS90YWdfaGVsbGNyZWVrLmNcXG5AQCAtMjcsOCArMjcsMTAgQEAgc3RhdGljIHN0cnVjdCBza19idWZmICpoZWxsY3JlZWtfeG1pdChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxcbiBcXHQgKiBjaGVja3N1bXMgYWZ0ZXIgdGhlIHN3aXRjaCBzdHJpcHMgdGhlIHRhZy5cXG4gXFx0ICovXFxuIFxcdGlmIChza2ItXFx1MDAzZWlwX3N1bW1lZCA9PSBDSEVDS1NVTV9QQVJUSUFMIFxcdTAwMjZcXHUwMDI2XFxuLVxcdCAgICBza2JfY2hlY2tzdW1faGVscChza2IpKVxcbitcXHQgICAgc2tiX2NoZWNrc3VtX2hlbHAoc2tiKSkge1xcbitcXHRcXHRrZnJlZV9za2Ioc2tiKTtcXG4gXFx0XFx0cmV0dXJuIE5VTEw7XFxuK1xcdH1cXG4gXFxuIFxcdC8qIFRhZyBlbmNvZGluZyAqL1xcbiBcXHR0YWcgID0gc2tiX3B1dChza2IsIEhFTExDUkVFS19UQUdfTEVOKTtcXG5AQCAtNDcsMTEgKzQ5LDE0IEBAIHN0YXRpYyBzdHJ1Y3Qgc2tfYnVmZiAqaGVsbGNyZWVrX3JjdihzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxcbiBcXHRza2ItXFx1MDAzZWRldiA9IGRzYV9jb25kdWl0X2ZpbmRfdXNlcihkZXYsIDAsIHBvcnQpO1xcbiBcXHRpZiAoIXNrYi1cXHUwMDNlZGV2KSB7XFxuIFxcdFxcdG5ldGRldl93YXJuX29uY2UoZGV2LCBcXFwiRmFpbGVkIHRvIGdldCBzb3VyY2UgcG9ydDogJWRcXFxcblxcXCIsIHBvcnQpO1xcbitcXHRcXHRrZnJlZV9za2Ioc2tiKTtcXG4gXFx0XFx0cmV0dXJuIE5VTEw7XFxuIFxcdH1cXG4gXFxuLVxcdGlmIChwc2tiX3RyaW1fcmNzdW0oc2tiLCBza2ItXFx1MDAzZWxlbiAtIEhFTExDUkVFS19UQUdfTEVOKSlcXG4rXFx0aWYgKHBza2JfdHJpbV9yY3N1bShza2IsIHNrYi1cXHUwMDNlbGVuIC0gSEVMTENSRUVLX1RBR19MRU4pKSB7XFxuK1xcdFxcdGtmcmVlX3NrYihza2IpO1xcbiBcXHRcXHRyZXR1cm4gTlVMTDtcXG4rXFx0fVxcbiBcXG4gXFx0ZHNhX2RlZmF1bHRfb2ZmbG9hZF9md2RfbWFyayhza2IpO1xcbiBcXG5kaWZmIC0tZ2l0IGEvbmV0L2RzYS90YWdfa3N6LmMgYi9uZXQvZHNhL3RhZ19rc3ouY1xcbmluZGV4IGQyNDc1YzNiYmI3ZDIyLi42N2ZhODlmMTAyZTA3MCAxMDA2NDRcXG4tLS0gYS9uZXQvZHNhL3RhZ19rc3ouY1xcbisrKyBiL25ldC9kc2EvdGFnX2tzei5jXFxuQEAgLTg4LDExICs4OCwxNSBAQCBzdGF0aWMgc3RydWN0IHNrX2J1ZmYgKmtzel9jb21tb25fcmN2KHN0cnVjdCBza19idWZmICpza2IsXFxuIFxcdFxcdFxcdFxcdCAgICAgIHVuc2lnbmVkIGludCBwb3J0LCB1bnNpZ25lZCBpbnQgbGVuKVxcbiB7XFxuIFxcdHNrYi1cXHUwMDNlZGV2ID0gZHNhX2NvbmR1aXRfZmluZF91c2VyKGRldiwgMCwgcG9ydCk7XFxuLVxcdGlmICghc2tiLVxcdTAwM2VkZXYpXFxuK1xcdGlmICghc2tiLVxcdTAwM2VkZXYpIHtcXG4rXFx0XFx0a2ZyZWVfc2tiKHNrYik7XFxuIFxcdFxcdHJldHVybiBOVUxMO1xcbitcXHR9XFxuIFxcbi1cXHRpZiAocHNrYl90cmltX3Jjc3VtKHNrYiwgc2tiLVxcdTAwM2VsZW4gLSBsZW4pKVxcbitcXHRpZiAocHNrYl90cmltX3Jjc3VtKHNrYiwgc2tiLVxcdTAwM2VsZW4gLSBsZW4pKSB7XFxuK1xcdFxcdGtmcmVlX3NrYihza2IpO1xcbiBcXHRcXHRyZXR1cm4gTlVMTDtcXG4rXFx0fVxcbiBcXG4gXFx0ZHNhX2RlZmF1bHRfb2ZmbG9hZF9md2RfbWFyayhza2IpO1xcbiBcXG5AQCAtMTIzLDggKzEyNywxMCBAQCBzdGF0aWMgc3RydWN0IHNrX2J1ZmYgKmtzejg3OTVfeG1pdChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxcbiBcXHRzdHJ1Y3QgZXRoaGRyICpoZHI7XFxuIFxcdHU4ICp0YWc7XFxuIFxcbi1cXHRpZiAoc2tiLVxcdTAwM2VpcF9zdW1tZWQgPT0gQ0hFQ0tTVU1fUEFSVElBTCBcXHUwMDI2XFx1MDAyNiBza2JfY2hlY2tzdW1faGVscChza2IpKVxcbitcXHRpZiAoc2tiLVxcdTAwM2VpcF9zdW1tZWQgPT0gQ0hFQ0tTVU1fUEFSVElBTCBcXHUwMDI2XFx1MDAyNiBza2JfY2hlY2tzdW1faGVscChza2IpKSB7XFxuK1xcdFxcdGtmcmVlX3NrYihza2IpO1xcbiBcXHRcXHRyZXR1cm4gTlVMTDtcXG4rXFx0fVxcbiBcXG4gXFx0LyogVGFnIGVuY29kaW5nICovXFxuIFxcdHRhZyA9IHNrYl9wdXQoc2tiLCBLU1pfSU5HUkVTU19UQUdfTEVOKTtcXG5AQCAtMTQxLDggKzE0NywxMCBAQCBzdGF0aWMgc3RydWN0IHNrX2J1ZmYgKmtzejg3OTVfcmN2KHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXFxuIHtcXG4gXFx0dTggKnRhZztcXG4gXFxuLVxcdGlmIChza2JfbGluZWFyaXplKHNrYikpXFxuK1xcdGlmIChza2JfbGluZWFyaXplKHNrYikpIHtcXG4rXFx0XFx0a2ZyZWVfc2tiKHNrYik7XFxuIFxcdFxcdHJldHVybiBOVUxMO1xcbitcXHR9XFxuIFxcbiBcXHR0YWcgPSBza2JfdGFpbF9wb2ludGVyKHNrYikgLSBLU1pfRUdSRVNTX1RBR19MRU47XFxuIFxcbkBAIC0yNTUsMjIgKzI2MywyNCBAQCBzdGF0aWMgc3RydWN0IHNrX2J1ZmYgKmtzel9kZWZlcl94bWl0KHN0cnVjdCBkc2FfcG9ydCAqZHAsIHN0cnVjdCBza19idWZmICpza2IpXFxuIFxcdHhtaXRfd29ya19mbiA9IHRhZ2dlcl9kYXRhLVxcdTAwM2V4bWl0X3dvcmtfZm47XFxuIFxcdHhtaXRfd29ya2VyID0gcHJpdi1cXHUwMDNleG1pdF93b3JrZXI7XFxuIFxcbi1cXHRpZiAoIXhtaXRfd29ya19mbiB8fCAheG1pdF93b3JrZXIpXFxuK1xcdGlmICgheG1pdF93b3JrX2ZuIHx8ICF4bWl0X3dvcmtlcikge1xcbitcXHRcXHRrZnJlZV9za2Ioc2tiKTtcXG4gXFx0XFx0cmV0dXJuIE5VTEw7XFxuK1xcdH1cXG4gXFxuIFxcdHhtaXRfd29yayA9IGt6YWxsb2Nfb2JqKCp4bWl0X3dvcmssIEdGUF9BVE9NSUMpO1xcbi1cXHRpZiAoIXhtaXRfd29yaylcXG4rXFx0aWYgKCF4bWl0X3dvcmspIHtcXG4rXFx0XFx0a2ZyZWVfc2tiKHNrYik7XFxuIFxcdFxcdHJldHVybiBOVUxMO1xcbitcXHR9XFxuIFxcbiBcXHRrdGhyZWFkX2luaXRfd29yayhcXHUwMDI2eG1pdF93b3JrLVxcdTAwM2V3b3JrLCB4bWl0X3dvcmtfZm4pO1xcbi1cXHQvKiBJbmNyZWFzZSByZWZjb3VudCBzbyB0aGUga2ZyZWVfc2tiIGluIGRzYV91c2VyX3htaXRcXG4tXFx0ICogd29uJ3QgcmVhbGx5IGZyZWUgdGhlIHBhY2tldC5cXG4tXFx0ICovXFxuIFxcdHhtaXRfd29yay1cXHUwMDNlZHAgPSBkcDtcXG4gXFx0eG1pdF93b3JrLVxcdTAwM2Vza2IgPSBza2JfZ2V0KHNrYik7XFxuIFxcbiBcXHRrdGhyZWFkX3F1ZXVlX3dvcmsoeG1pdF93b3JrZXIsIFxcdTAwMjZ4bWl0X3dvcmstXFx1MDAzZXdvcmspO1xcbiBcXG4rXFx0a2ZyZWVfc2tiKHNrYik7XFxuIFxcdHJldHVybiBOVUxMO1xcbiB9XFxuIFxcbkBAIC0yODQsOCArMjk0LDEwIEBAIHN0YXRpYyBzdHJ1Y3Qgc2tfYnVmZiAqa3N6OTQ3N194bWl0KHN0cnVjdCBza19idWZmICpza2IsXFxuIFxcdF9fYmUxNiAqdGFnO1xcbiBcXHR1MTYgdmFsO1xcbiBcXG4tXFx0aWYgKHNrYi1cXHUwMDNlaXBfc3VtbWVkID09IENIRUNLU1VNX1BBUlRJQUwgXFx1MDAyNlxcdTAwMjYgc2tiX2NoZWNrc3VtX2hlbHAoc2tiKSlcXG4rXFx0aWYgKHNrYi1cXHUwMDNlaXBfc3VtbWVkID09IENIRUNLU1VNX1BBUlRJQUwgXFx1MDAyNlxcdTAwMjYgc2tiX2NoZWNrc3VtX2hlbHAoc2tiKSkge1xcbitcXHRcXHRrZnJlZV9za2Ioc2tiKTtcXG4gXFx0XFx0cmV0dXJuIE5VTEw7XFxuK1xcdH1cXG4gXFxuIFxcdC8qIFRhZyBlbmNvZGluZyAqL1xcbiBcXHRrc3pfeG1pdF90aW1lc3RhbXAoZHAsIHNrYik7XFxuQEAgLTMxMCw4ICszMjIsMTAgQEAgc3RhdGljIHN0cnVjdCBza19idWZmICprc3o5NDc3X3JjdihzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxcbiBcXHR1bnNpZ25lZCBpbnQgcG9ydDtcXG4gXFx0dTggKnRhZztcXG4gXFxuLVxcdGlmIChza2JfbGluZWFyaXplKHNrYikpXFxuK1xcdGlmIChza2JfbGluZWFyaXplKHNrYikpIHtcXG4rXFx0XFx0a2ZyZWVfc2tiKHNrYik7XFxuIFxcdFxcdHJldHVybiBOVUxMO1xcbitcXHR9XFxuIFxcbiBcXHQvKiBUYWcgZGVjb2RpbmcgKi9cXG4gXFx0dGFnID0gc2tiX3RhaWxfcG9pbnRlcihza2IpIC0gS1NaX0VHUkVTU19UQUdfTEVOO1xcbkBAIC0zNTIsOCArMzY2LDEwIEBAIHN0YXRpYyBzdHJ1Y3Qgc2tfYnVmZiAqa3N6OTg5M194bWl0KHN0cnVjdCBza19idWZmICpza2IsXFxuIFxcdHN0cnVjdCBldGhoZHIgKmhkcjtcXG4gXFx0dTggKnRhZztcXG4gXFxuLVxcdGlmIChza2ItXFx1MDAzZWlwX3N1bW1lZCA9PSBDSEVDS1NVTV9QQVJUSUFMIFxcdTAwMjZcXHUwMDI2IHNrYl9jaGVja3N1bV9oZWxwKHNrYikpXFxuK1xcdGlmIChza2ItXFx1MDAzZWlwX3N1bW1lZCA9PSBDSEVDS1NVTV9QQVJUSUFMIFxcdTAwMjZcXHUwMDI2IHNrYl9jaGVja3N1bV9oZWxwKHNrYikpIHtcXG4rXFx0XFx0a2ZyZWVfc2tiKHNrYik7XFxuIFxcdFxcdHJldHVybiBOVUxMO1xcbitcXHR9XFxuIFxcbiBcXHQvKiBUYWcgZW5jb2RpbmcgKi9cXG4gXFx0a3N6X3htaXRfdGltZXN0YW1wKGRwLCBza2IpO1xcbkBAIC00MTgsOCArNDM0LDEwIEBAIHN0YXRpYyBzdHJ1Y3Qgc2tfYnVmZiAqbGFuOTM3eF94bWl0KHN0cnVjdCBza19idWZmICpza2IsXFxuIFxcdF9fYmUxNiAqdGFnO1xcbiBcXHR1MTYgdmFsO1xcbiBcXG4tXFx0aWYgKHNrYi1cXHUwMDNlaXBfc3VtbWVkID09IENIRUNLU1VNX1BBUlRJQUwgXFx1MDAyNlxcdTAwMjYgc2tiX2NoZWNrc3VtX2hlbHAoc2tiKSlcXG4rXFx0aWYgKHNrYi1cXHUwMDNlaXBfc3VtbWVkID09IENIRUNLU1VNX1BBUlRJQUwgXFx1MDAyNlxcdTAwMjYgc2tiX2NoZWNrc3VtX2hlbHAoc2tiKSkge1xcbitcXHRcXHRrZnJlZV9za2Ioc2tiKTtcXG4gXFx0XFx0cmV0dXJuIE5VTEw7XFxuK1xcdH1cXG4gXFxuIFxcdGtzel94bWl0X3RpbWVzdGFtcChkcCwgc2tiKTtcXG4gXFxuZGlmZiAtLWdpdCBhL25ldC9kc2EvdGFnX2xhbjkzMDMuYyBiL25ldC9kc2EvdGFnX2xhbjkzMDMuY1xcbmluZGV4IDI1OGU1ZDdkYzVlZjg0Li5kMTE5NDY5NjQ5OWFiOCAxMDA2NDRcXG4tLS0gYS9uZXQvZHNhL3RhZ19sYW45MzAzLmNcXG4rKysgYi9uZXQvZHNhL3RhZ19sYW45MzAzLmNcXG5AQCAtODUsNiArODUsNyBAQCBzdGF0aWMgc3RydWN0IHNrX2J1ZmYgKmxhbjkzMDNfcmN2KHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXFxuIFxcdGlmICh1bmxpa2VseSghcHNrYl9tYXlfcHVsbChza2IsIExBTjkzMDNfVEFHX0xFTikpKSB7XFxuIFxcdFxcdGRldl93YXJuX3JhdGVsaW1pdGVkKFxcdTAwMjZkZXYtXFx1MDAzZWRldixcXG4gXFx0XFx0XFx0XFx0ICAgICBcXFwiRHJvcHBpbmcgcGFja2V0LCBjYW5ub3QgcHVsbFxcXFxuXFxcIik7XFxuK1xcdFxcdGtmcmVlX3NrYihza2IpO1xcbiBcXHRcXHRyZXR1cm4gTlVMTDtcXG4gXFx0fVxcbiBcXG5AQCAtMTAyLDYgKzEwMyw3IEBAIHN0YXRpYyBzdHJ1Y3Qgc2tfYnVmZiAqbGFuOTMwM19yY3Yoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IG5ldF9kZXZpY2UgKmRldilcXG4gXFx0c2tiLVxcdTAwM2VkZXYgPSBkc2FfY29uZHVpdF9maW5kX3VzZXIoZGV2LCAwLCBzb3VyY2VfcG9ydCk7XFxuIFxcdGlmICghc2tiLVxcdTAwM2VkZXYpIHtcXG4gXFx0XFx0ZGV2X3dhcm5fcmF0ZWxpbWl0ZWQoXFx1MDAyNmRldi1cXHUwMDNlZGV2LCBcXFwiRHJvcHBpbmcgcGFja2V0IGR1ZSB0byBpbnZhbGlkIHNvdXJjZSBwb3J0XFxcXG5cXFwiKTtcXG4rXFx0XFx0a2ZyZWVfc2tiKHNrYik7XFxuIFxcdFxcdHJldHVybiBOVUxMO1xcbiBcXHR9XFxuIFxcbmRpZmYgLS1naXQgYS9uZXQvZHNhL3RhZ19tdGsuYyBiL25ldC9kc2EvdGFnX210ay5jXFxuaW5kZXggZGVhM2VlY2FmMDkzZGYuLmM3ZGM3NzMxNjc1ZWMwIDEwMDY0NFxcbi0tLSBhL25ldC9kc2EvdGFnX210ay5jXFxuKysrIGIvbmV0L2RzYS90YWdfbXRrLmNcXG5AQCAtNzIsOCArNzIsMTAgQEAgc3RhdGljIHN0cnVjdCBza19idWZmICptdGtfdGFnX3JjdihzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxcbiBcXHRpbnQgcG9ydDtcXG4gXFx0X19iZTE2ICpwaGRyO1xcbiBcXG4tXFx0aWYgKHVubGlrZWx5KCFwc2tiX21heV9wdWxsKHNrYiwgTVRLX0hEUl9MRU4pKSlcXG4rXFx0aWYgKHVubGlrZWx5KCFwc2tiX21heV9wdWxsKHNrYiwgTVRLX0hEUl9MRU4pKSkge1xcbitcXHRcXHRrZnJlZV9za2Ioc2tiKTtcXG4gXFx0XFx0cmV0dXJuIE5VTEw7XFxuK1xcdH1cXG4gXFxuIFxcdHBoZHIgPSBkc2FfZXR5cGVfaGVhZGVyX3Bvc19yeChza2IpO1xcbiBcXHRoZHIgPSBudG9ocygqcGhkcik7XFxuQEAgLTg3LDggKzg5LDEwIEBAIHN0YXRpYyBzdHJ1Y3Qgc2tfYnVmZiAqbXRrX3RhZ19yY3Yoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IG5ldF9kZXZpY2UgKmRldilcXG4gXFx0cG9ydCA9IChoZHIgXFx1MDAyNiBNVEtfSERSX1JFQ1ZfU09VUkNFX1BPUlRfTUFTSyk7XFxuIFxcbiBcXHRza2ItXFx1MDAzZWRldiA9IGRzYV9jb25kdWl0X2ZpbmRfdXNlcihkZXYsIDAsIHBvcnQpO1xcbi1cXHRpZiAoIXNrYi1cXHUwMDNlZGV2KVxcbitcXHRpZiAoIXNrYi1cXHUwMDNlZGV2KSB7XFxuK1xcdFxcdGtmcmVlX3NrYihza2IpO1xcbiBcXHRcXHRyZXR1cm4gTlVMTDtcXG4rXFx0fVxcbiBcXG4gXFx0ZHNhX2RlZmF1bHRfb2ZmbG9hZF9md2RfbWFyayhza2IpO1xcbiBcXG5kaWZmIC0tZ2l0IGEvbmV0L2RzYS90YWdfbXhsLWdzdzF4eC5jIGIvbmV0L2RzYS90YWdfbXhsLWdzdzF4eC5jXFxuaW5kZXggNjBmN2M0NDVlNjU2MTAuLjRiMWI2ZWY5NDE5NjM0IDEwMDY0NFxcbi0tLSBhL25ldC9kc2EvdGFnX214bC1nc3cxeHguY1xcbisrKyBiL25ldC9kc2EvdGFnX214bC1nc3cxeHguY1xcbkBAIC03Myw2ICs3Myw3IEBAIHN0YXRpYyBzdHJ1Y3Qgc2tfYnVmZiAqZ3N3MXh4X3RhZ19yY3Yoc3RydWN0IHNrX2J1ZmYgKnNrYixcXG4gXFxuIFxcdGlmICh1bmxpa2VseSghcHNrYl9tYXlfcHVsbChza2IsIEdTVzFYWF9IRUFERVJfTEVOKSkpIHtcXG4gXFx0XFx0ZGV2X3dhcm5fcmF0ZWxpbWl0ZWQoXFx1MDAyNmRldi1cXHUwMDNlZGV2LCBcXFwiRHJvcHBpbmcgcGFja2V0LCBjYW5ub3QgcHVsbCBTS0JcXFxcblxcXCIpO1xcbitcXHRcXHRrZnJlZV9za2Ioc2tiKTtcXG4gXFx0XFx0cmV0dXJuIE5VTEw7XFxuIFxcdH1cXG4gXFxuQEAgLTgxLDYgKzgyLDcgQEAgc3RhdGljIHN0cnVjdCBza19idWZmICpnc3cxeHhfdGFnX3JjdihzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxcbiBcXHRpZiAodW5saWtlbHkobnRvaHMoZ3N3MXh4X3RhZ1swXSkgIT0gRVRIX1BfTVhMR1NXKSkge1xcbiBcXHRcXHRkZXZfd2Fybl9yYXRlbGltaXRlZChcXHUwMDI2ZGV2LVxcdTAwM2VkZXYsIFxcXCJEcm9wcGluZyBwYWNrZXQgZHVlIHRvIGludmFsaWQgc3BlY2lhbCB0YWdcXFxcblxcXCIpO1xcbiBcXHRcXHRkZXZfd2Fybl9yYXRlbGltaXRlZChcXHUwMDI2ZGV2LVxcdTAwM2VkZXYsIFxcXCJUYWc6ICU4cGhcXFxcblxcXCIsIGdzdzF4eF90YWcpO1xcbitcXHRcXHRrZnJlZV9za2Ioc2tiKTtcXG4gXFx0XFx0cmV0dXJuIE5VTEw7XFxuIFxcdH1cXG4gXFxuQEAgLTkwLDYgKzkyLDcgQEAgc3RhdGljIHN0cnVjdCBza19idWZmICpnc3cxeHhfdGFnX3JjdihzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxcbiBcXHRpZiAoIXNrYi1cXHUwMDNlZGV2KSB7XFxuIFxcdFxcdGRldl93YXJuX3JhdGVsaW1pdGVkKFxcdTAwMjZkZXYtXFx1MDAzZWRldiwgXFxcIkRyb3BwaW5nIHBhY2tldCBkdWUgdG8gaW52YWxpZCBzb3VyY2UgcG9ydFxcXFxuXFxcIik7XFxuIFxcdFxcdGRldl93YXJuX3JhdGVsaW1pdGVkKFxcdTAwMjZkZXYtXFx1MDAzZWRldiwgXFxcIlRhZzogJThwaFxcXFxuXFxcIiwgZ3N3MXh4X3RhZyk7XFxuK1xcdFxcdGtmcmVlX3NrYihza2IpO1xcbiBcXHRcXHRyZXR1cm4gTlVMTDtcXG4gXFx0fVxcbiBcXG5kaWZmIC0tZ2l0IGEvbmV0L2RzYS90YWdfbXhsODYyeHguYyBiL25ldC9kc2EvdGFnX214bDg2Mnh4LmNcXG5pbmRleCA4ZGFlZmViOGQ0OWRmYS4uODdiODBkZGYwOTQ2MzIgMTAwNjQ0XFxuLS0tIGEvbmV0L2RzYS90YWdfbXhsODYyeHguY1xcbisrKyBiL25ldC9kc2EvdGFnX214bDg2Mnh4LmNcXG5AQCAtNjQsNiArNjQsNyBAQCBzdGF0aWMgc3RydWN0IHNrX2J1ZmYgKm14bDg2Ml90YWdfcmN2KHN0cnVjdCBza19idWZmICpza2IsXFxuIFxcbiBcXHRpZiAodW5saWtlbHkoIXBza2JfbWF5X3B1bGwoc2tiLCBNWEw4NjJfSEVBREVSX0xFTikpKSB7XFxuIFxcdFxcdGRldl93YXJuX3JhdGVsaW1pdGVkKFxcdTAwMjZkZXYtXFx1MDAzZWRldiwgXFxcIkNhbm5vdCBwdWxsIFNLQiwgcGFja2V0IGRyb3BwZWRcXFxcblxcXCIpO1xcbitcXHRcXHRrZnJlZV9za2Ioc2tiKTtcXG4gXFx0XFx0cmV0dXJuIE5VTEw7XFxuIFxcdH1cXG4gXFxuQEAgLTczLDYgKzc0LDcgQEAgc3RhdGljIHN0cnVjdCBza19idWZmICpteGw4NjJfdGFnX3JjdihzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxcbiBcXHRcXHRkZXZfd2Fybl9yYXRlbGltaXRlZChcXHUwMDI2ZGV2LVxcdTAwM2VkZXYsXFxuIFxcdFxcdFxcdFxcdCAgICAgXFxcIkludmFsaWQgc3BlY2lhbCB0YWcgbWFya2VyLCBwYWNrZXQgZHJvcHBlZCwgdGFnOiAlOHBoXFxcXG5cXFwiLFxcbiBcXHRcXHRcXHRcXHQgICAgIG14bDg2Ml90YWcpO1xcbitcXHRcXHRrZnJlZV9za2Ioc2tiKTtcXG4gXFx0XFx0cmV0dXJuIE5VTEw7XFxuIFxcdH1cXG4gXFxuQEAgLTgzLDYgKzg1LDcgQEAgc3RhdGljIHN0cnVjdCBza19idWZmICpteGw4NjJfdGFnX3JjdihzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxcbiBcXHRcXHRkZXZfd2Fybl9yYXRlbGltaXRlZChcXHUwMDI2ZGV2LVxcdTAwM2VkZXYsXFxuIFxcdFxcdFxcdFxcdCAgICAgXFxcIkludmFsaWQgc291cmNlIHBvcnQsIHBhY2tldCBkcm9wcGVkLCB0YWc6ICU4cGhcXFxcblxcXCIsXFxuIFxcdFxcdFxcdFxcdCAgICAgbXhsODYyX3RhZyk7XFxuK1xcdFxcdGtmcmVlX3NrYihza2IpO1xcbiBcXHRcXHRyZXR1cm4gTlVMTDtcXG4gXFx0fVxcbiBcXG5kaWZmIC0tZ2l0IGEvbmV0L2RzYS90YWdfbmV0Yy5jIGIvbmV0L2RzYS90YWdfbmV0Yy5jXFxuaW5kZXggY2NlZGZlM2E4MGI2NGQuLmRmNzJhNjE3OTZhZDVmIDEwMDY0NFxcbi0tLSBhL25ldC9kc2EvdGFnX25ldGMuY1xcbisrKyBiL25ldC9kc2EvdGFnX25ldGMuY1xcbkBAIC0xMzEsMTQgKzEzMSwxMyBAQCBzdGF0aWMgc3RydWN0IHNrX2J1ZmYgKm5ldGNfcmN2KHN0cnVjdCBza19idWZmICpza2IsXFxuIFxcdGludCB0eXBlLCBzdWJ0eXBlO1xcbiBcXG4gXFx0aWYgKHVubGlrZWx5KCFwc2tiX21heV9wdWxsKHNrYiwgTkVUQ19UQUdfTUFYX0xFTikpKVxcbi1cXHRcXHRyZXR1cm4gTlVMTDtcXG4rXFx0XFx0Z290byBlcnJfZnJlZV9za2I7XFxuIFxcbiBcXHR0YWdfY21uID0gZHNhX2V0eXBlX2hlYWRlcl9wb3Nfcngoc2tiKTtcXG4gXFx0aWYgKG50b2hzKHRhZ19jbW4tXFx1MDAzZXRwaWQpICE9IEVUSF9QX05YUF9ORVRDKSB7XFxuIFxcdFxcdGRldl93YXJuX3JhdGVsaW1pdGVkKFxcdTAwMjZuZGV2LVxcdTAwM2VkZXYsIFxcXCJVbmtub3duIFRQSUQgMHglMDR4XFxcXG5cXFwiLFxcbiBcXHRcXHRcXHRcXHQgICAgIG50b2hzKHRhZ19jbW4tXFx1MDAzZXRwaWQpKTtcXG4tXFxuLVxcdFxcdHJldHVybiBOVUxMO1xcbitcXHRcXHRnb3RvIGVycl9mcmVlX3NrYjtcXG4gXFx0fVxcbiBcXG4gXFx0aWYgKHRhZ19jbW4tXFx1MDAzZXFvcyBcXHUwMDI2IE5FVENfVEFHX1FWKVxcbkBAIC0xNDksMTQgKzE0OCwxMyBAQCBzdGF0aWMgc3RydWN0IHNrX2J1ZmYgKm5ldGNfcmN2KHN0cnVjdCBza19idWZmICpza2IsXFxuIFxcdGlmICghc3dfaWQpIHtcXG4gXFx0XFx0ZGV2X3dhcm5fcmF0ZWxpbWl0ZWQoXFx1MDAyNm5kZXYtXFx1MDAzZWRldixcXG4gXFx0XFx0XFx0XFx0ICAgICBcXFwiVkVQQSBzd2l0Y2ggSUQgaXMgbm90IHN1cHBvcnRlZCB5ZXRcXFxcblxcXCIpO1xcbi1cXG4tXFx0XFx0cmV0dXJuIE5VTEw7XFxuK1xcdFxcdGdvdG8gZXJyX2ZyZWVfc2tiO1xcbiBcXHR9XFxuIFxcbiBcXHRwb3J0ID0gRklFTERfR0VUKE5FVENfVEFHX1BPUlQsIHRhZ19jbW4tXFx1MDAzZXN3aXRjaF9wb3J0KTtcXG4gXFx0c2tiLVxcdTAwM2VkZXYgPSBkc2FfY29uZHVpdF9maW5kX3VzZXIobmRldiwgc3dfaWQsIHBvcnQpO1xcbiBcXHRpZiAoIXNrYi1cXHUwMDNlZGV2KVxcbi1cXHRcXHRyZXR1cm4gTlVMTDtcXG4rXFx0XFx0Z290byBlcnJfZnJlZV9za2I7XFxuIFxcbiBcXHR0eXBlID0gRklFTERfR0VUKE5FVENfVEFHX1RZUEUsIHRhZ19jbW4tXFx1MDAzZXR5cGUpO1xcbiBcXHRzdWJ0eXBlID0gRklFTERfR0VUKE5FVENfVEFHX1NVQlRZUEUsIHRhZ19jbW4tXFx1MDAzZXR5cGUpO1xcbkBAIC0xNjUsMTEgKzE2MywxMSBAQCBzdGF0aWMgc3RydWN0IHNrX2J1ZmYgKm5ldGNfcmN2KHN0cnVjdCBza19idWZmICpza2IsXFxuIFxcdH0gZWxzZSBpZiAodHlwZSA9PSBORVRDX1RBR19UT19IT1NUKSB7XFxuIFxcdFxcdC8qIEN1cnJlbnRseSBvbmx5IHN1YnR5cGUwIHN1cHBvcnRlZCAqL1xcbiBcXHRcXHRpZiAoc3VidHlwZSAhPSBORVRDX1RBR19USF9TVUJUWVBFMClcXG4tXFx0XFx0XFx0cmV0dXJuIE5VTEw7XFxuK1xcdFxcdFxcdGdvdG8gZXJyX2ZyZWVfc2tiO1xcbiBcXHR9IGVsc2Uge1xcbiBcXHRcXHRkZXZfd2Fybl9yYXRlbGltaXRlZChcXHUwMDI2bmRldi1cXHUwMDNlZGV2LFxcbiBcXHRcXHRcXHRcXHQgICAgIFxcXCJVbmV4cGVjdGVkICB0YWcgdHlwZSAlZFxcXFxuXFxcIiwgdHlwZSk7XFxuLVxcdFxcdHJldHVybiBOVUxMO1xcbitcXHRcXHRnb3RvIGVycl9mcmVlX3NrYjtcXG4gXFx0fVxcbiBcXG4gXFx0LyogUmVtb3ZlIFN3aXRjaCB0YWcgZnJvbSB0aGUgZnJhbWUgKi9cXG5AQCAtMTc4LDYgKzE3NiwxMCBAQCBzdGF0aWMgc3RydWN0IHNrX2J1ZmYgKm5ldGNfcmN2KHN0cnVjdCBza19idWZmICpza2IsXFxuIFxcdGRzYV9zdHJpcF9ldHlwZV9oZWFkZXIoc2tiLCB0YWdfbGVuKTtcXG4gXFxuIFxcdHJldHVybiBza2I7XFxuK1xcbitlcnJfZnJlZV9za2I6XFxuK1xcdGtmcmVlX3NrYihza2IpO1xcbitcXHRyZXR1cm4gTlVMTDtcXG4gfVxcbiBcXG4gc3RhdGljIHZvaWQgbmV0Y19mbG93X2Rpc3NlY3QoY29uc3Qgc3RydWN0IHNrX2J1ZmYgKnNrYiwgX19iZTE2ICpwcm90byxcXG5kaWZmIC0tZ2l0IGEvbmV0L2RzYS90YWdfb2NlbG90LmMgYi9uZXQvZHNhL3RhZ19vY2Vsb3QuY1xcbmluZGV4IDM0MDVkZWY3OWMyZGVmLi5kMjA4YzczMjJjZDYyNiAxMDA2NDRcXG4tLS0gYS9uZXQvZHNhL3RhZ19vY2Vsb3QuY1xcbisrKyBiL25ldC9kc2EvdGFnX29jZWxvdC5jXFxuQEAgLTEwNywxNCArMTA3LDE2IEBAIHN0YXRpYyBzdHJ1Y3Qgc2tfYnVmZiAqb2NlbG90X3JjdihzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxcbiBcXHRvY2Vsb3RfeGZoX2dldF9yZXdfdmFsKGV4dHJhY3Rpb24sIFxcdTAwMjZyZXdfdmFsKTtcXG4gXFxuIFxcdHNrYi1cXHUwMDNlZGV2ID0gZHNhX2NvbmR1aXRfZmluZF91c2VyKG5ldGRldiwgMCwgc3JjX3BvcnQpO1xcbi1cXHRpZiAoIXNrYi1cXHUwMDNlZGV2KVxcbitcXHRpZiAoIXNrYi1cXHUwMDNlZGV2KSB7XFxuIFxcdFxcdC8qIFRoZSBzd2l0Y2ggd2lsbCByZWZsZWN0IGJhY2sgc29tZSBmcmFtZXMgc2VudCB0aHJvdWdoXFxuIFxcdFxcdCAqIHNvY2tldHMgb3BlbmVkIG9uIHRoZSBiYXJlIERTQSBjb25kdWl0LiBUaGVzZSB3aWxsIGNvbWUgYmFja1xcbiBcXHRcXHQgKiB3aXRoIHNyY19wb3J0IGVxdWFsIHRvIHRoZSBpbmRleCBvZiB0aGUgQ1BVIHBvcnQsIGZvciB3aGljaFxcbiBcXHRcXHQgKiB0aGVyZSBpcyBubyB1c2VyIHJlZ2lzdGVyZWQuIFNvIGRvbid0IHByaW50IGFueSBlcnJvclxcbiBcXHRcXHQgKiBtZXNzYWdlIGhlcmUgKGlnbm9yZSBhbmQgZHJvcCB0aG9zZSBmcmFtZXMpLlxcbiBcXHRcXHQgKi9cXG4rXFx0XFx0a2ZyZWVfc2tiKHNrYik7XFxuIFxcdFxcdHJldHVybiBOVUxMO1xcbitcXHR9XFxuIFxcbiBcXHRkc2FfZGVmYXVsdF9vZmZsb2FkX2Z3ZF9tYXJrKHNrYik7XFxuIFxcdHNrYi1cXHUwMDNlcHJpb3JpdHkgPSBxb3NfY2xhc3M7XFxuZGlmZiAtLWdpdCBhL25ldC9kc2EvdGFnX29jZWxvdF84MDIxcS5jIGIvbmV0L2RzYS90YWdfb2NlbG90XzgwMjFxLmNcXG5pbmRleCBlODlkOTI1NGU5MGEzYS4uZjUwZjFjZDgzZjE2MWMgMTAwNjQ0XFxuLS0tIGEvbmV0L2RzYS90YWdfb2NlbG90XzgwMjFxLmNcXG4rKysgYi9uZXQvZHNhL3RhZ19vY2Vsb3RfODAyMXEuY1xcbkBAIC0zMywzMCArMzMsMzQgQEAgc3RhdGljIHN0cnVjdCBza19idWZmICpvY2Vsb3RfZGVmZXJfeG1pdChzdHJ1Y3QgZHNhX3BvcnQgKmRwLFxcbiBcXHR4bWl0X3dvcmtfZm4gPSBkYXRhLVxcdTAwM2V4bWl0X3dvcmtfZm47XFxuIFxcdHhtaXRfd29ya2VyID0gcHJpdi1cXHUwMDNleG1pdF93b3JrZXI7XFxuIFxcbi1cXHRpZiAoIXhtaXRfd29ya19mbiB8fCAheG1pdF93b3JrZXIpXFxuK1xcdGlmICgheG1pdF93b3JrX2ZuIHx8ICF4bWl0X3dvcmtlcikge1xcbitcXHRcXHRrZnJlZV9za2Ioc2tiKTtcXG4gXFx0XFx0cmV0dXJuIE5VTEw7XFxuK1xcdH1cXG4gXFxuIFxcdC8qIFBUUCBvdmVyIElQIHBhY2tldHMgbmVlZCBVRFAgY2hlY2tzdW1taW5nLiBXZSBtYXkgaGF2ZSBpbmhlcml0ZWRcXG4gXFx0ICogTkVUSUZfRl9IV19DU1VNIGZyb20gdGhlIERTQSBjb25kdWl0LCBidXQgdGhlc2UgcGFja2V0cyBhcmUgbm90IHNlbnRcXG4gXFx0ICogdGhyb3VnaCB0aGUgRFNBIGNvbmR1aXQsIHNvIGNhbGN1bGF0ZSB0aGUgY2hlY2tzdW0gaGVyZS5cXG4gXFx0ICovXFxuLVxcdGlmIChza2ItXFx1MDAzZWlwX3N1bW1lZCA9PSBDSEVDS1NVTV9QQVJUSUFMIFxcdTAwMjZcXHUwMDI2IHNrYl9jaGVja3N1bV9oZWxwKHNrYikpXFxuK1xcdGlmIChza2ItXFx1MDAzZWlwX3N1bW1lZCA9PSBDSEVDS1NVTV9QQVJUSUFMIFxcdTAwMjZcXHUwMDI2IHNrYl9jaGVja3N1bV9oZWxwKHNrYikpIHtcXG4rXFx0XFx0a2ZyZWVfc2tiKHNrYik7XFxuIFxcdFxcdHJldHVybiBOVUxMO1xcbitcXHR9XFxuIFxcbiBcXHR4bWl0X3dvcmsgPSBremFsbG9jX29iaigqeG1pdF93b3JrLCBHRlBfQVRPTUlDKTtcXG4tXFx0aWYgKCF4bWl0X3dvcmspXFxuK1xcdGlmICgheG1pdF93b3JrKSB7XFxuK1xcdFxcdGtmcmVlX3NrYihza2IpO1xcbiBcXHRcXHRyZXR1cm4gTlVMTDtcXG4rXFx0fVxcbiBcXG4gXFx0LyogQ2FsbHMgZmVsaXhfcG9ydF9kZWZlcnJlZF94bWl0IGluIGZlbGl4LmMgKi9cXG4gXFx0a3RocmVhZF9pbml0X3dvcmsoXFx1MDAyNnhtaXRfd29yay1cXHUwMDNld29yaywgeG1pdF93b3JrX2ZuKTtcXG4tXFx0LyogSW5jcmVhc2UgcmVmY291bnQgc28gdGhlIGtmcmVlX3NrYiBpbiBkc2FfdXNlcl94bWl0XFxuLVxcdCAqIHdvbid0IHJlYWxseSBmcmVlIHRoZSBwYWNrZXQuXFxuLVxcdCAqL1xcbiBcXHR4bWl0X3dvcmstXFx1MDAzZWRwID0gZHA7XFxuIFxcdHhtaXRfd29yay1cXHUwMDNlc2tiID0gc2tiX2dldChza2IpO1xcbiBcXG4gXFx0a3RocmVhZF9xdWV1ZV93b3JrKHhtaXRfd29ya2VyLCBcXHUwMDI2eG1pdF93b3JrLVxcdTAwM2V3b3JrKTtcXG4gXFxuK1xcdGtmcmVlX3NrYihza2IpO1xcbiBcXHRyZXR1cm4gTlVMTDtcXG4gfVxcbiBcXG5AQCAtODQsOCArODgsMTAgQEAgc3RhdGljIHN0cnVjdCBza19idWZmICpvY2Vsb3RfcmN2KHN0cnVjdCBza19idWZmICpza2IsXFxuIFxcdGRzYV84MDIxcV9yY3Yoc2tiLCBcXHUwMDI2c3JjX3BvcnQsIFxcdTAwMjZzd2l0Y2hfaWQsIE5VTEwsIE5VTEwpO1xcbiBcXG4gXFx0c2tiLVxcdTAwM2VkZXYgPSBkc2FfY29uZHVpdF9maW5kX3VzZXIobmV0ZGV2LCBzd2l0Y2hfaWQsIHNyY19wb3J0KTtcXG4tXFx0aWYgKCFza2ItXFx1MDAzZWRldilcXG4rXFx0aWYgKCFza2ItXFx1MDAzZWRldikge1xcbitcXHRcXHRrZnJlZV9za2Ioc2tiKTtcXG4gXFx0XFx0cmV0dXJuIE5VTEw7XFxuK1xcdH1cXG4gXFxuIFxcdGRzYV9kZWZhdWx0X29mZmxvYWRfZndkX21hcmsoc2tiKTtcXG4gXFxuZGlmZiAtLWdpdCBhL25ldC9kc2EvdGFnX3FjYS5jIGIvbmV0L2RzYS90YWdfcWNhLmNcXG5pbmRleCA5ZTNiNDI5ZThiMzYyNS4uNTEwNzkyZmJmYTkyZGQgMTAwNjQ0XFxuLS0tIGEvbmV0L2RzYS90YWdfcWNhLmNcXG4rKysgYi9uZXQvZHNhL3RhZ19xY2EuY1xcbkBAIC00NiwxNiArNDYsMjAgQEAgc3RhdGljIHN0cnVjdCBza19idWZmICpxY2FfdGFnX3JjdihzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxcbiBcXG4gXFx0dGFnZ2VyX2RhdGEgPSBkcy1cXHUwMDNldGFnZ2VyX2RhdGE7XFxuIFxcbi1cXHRpZiAodW5saWtlbHkoIXBza2JfbWF5X3B1bGwoc2tiLCBRQ0FfSERSX0xFTikpKVxcbitcXHRpZiAodW5saWtlbHkoIXBza2JfbWF5X3B1bGwoc2tiLCBRQ0FfSERSX0xFTikpKSB7XFxuK1xcdFxcdGtmcmVlX3NrYihza2IpO1xcbiBcXHRcXHRyZXR1cm4gTlVMTDtcXG4rXFx0fVxcbiBcXG4gXFx0cGhkciA9IGRzYV9ldHlwZV9oZWFkZXJfcG9zX3J4KHNrYik7XFxuIFxcdGhkciA9IG50b2hzKCpwaGRyKTtcXG4gXFxuIFxcdC8qIE1ha2Ugc3VyZSB0aGUgdmVyc2lvbiBpcyBjb3JyZWN0ICovXFxuIFxcdHZlciA9IEZJRUxEX0dFVChRQ0FfSERSX1JFQ1ZfVkVSU0lPTiwgaGRyKTtcXG4tXFx0aWYgKHVubGlrZWx5KHZlciAhPSBRQ0FfSERSX1ZFUlNJT04pKVxcbitcXHRpZiAodW5saWtlbHkodmVyICE9IFFDQV9IRFJfVkVSU0lPTikpIHtcXG4rXFx0XFx0a2ZyZWVfc2tiKHNrYik7XFxuIFxcdFxcdHJldHVybiBOVUxMO1xcbitcXHR9XFxuIFxcbiBcXHQvKiBHZXQgcGsgdHlwZSAqL1xcbiBcXHRwa190eXBlID0gRklFTERfR0VUKFFDQV9IRFJfUkVDVl9UWVBFLCBoZHIpO1xcbkBAIC02NCw2ICs2OCw3IEBAIHN0YXRpYyBzdHJ1Y3Qgc2tfYnVmZiAqcWNhX3RhZ19yY3Yoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IG5ldF9kZXZpY2UgKmRldilcXG4gXFx0aWYgKHBrX3R5cGUgPT0gUUNBX0hEUl9SRUNWX1RZUEVfUldfUkVHX0FDSykge1xcbiBcXHRcXHRpZiAobGlrZWx5KHRhZ2dlcl9kYXRhLVxcdTAwM2Vyd19yZWdfYWNrX2hhbmRsZXIpKVxcbiBcXHRcXHRcXHR0YWdnZXJfZGF0YS1cXHUwMDNlcndfcmVnX2Fja19oYW5kbGVyKGRzLCBza2IpO1xcbitcXHRcXHRrZnJlZV9za2Ioc2tiKTtcXG4gXFx0XFx0cmV0dXJuIE5VTEw7XFxuIFxcdH1cXG4gXFxuQEAgLTcxLDYgKzc2LDcgQEAgc3RhdGljIHN0cnVjdCBza19idWZmICpxY2FfdGFnX3JjdihzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxcbiBcXHRpZiAocGtfdHlwZSA9PSBRQ0FfSERSX1JFQ1ZfVFlQRV9NSUIpIHtcXG4gXFx0XFx0aWYgKGxpa2VseSh0YWdnZXJfZGF0YS1cXHUwMDNlbWliX2F1dG9jYXN0X2hhbmRsZXIpKVxcbiBcXHRcXHRcXHR0YWdnZXJfZGF0YS1cXHUwMDNlbWliX2F1dG9jYXN0X2hhbmRsZXIoZHMsIHNrYik7XFxuK1xcdFxcdGtmcmVlX3NrYihza2IpO1xcbiBcXHRcXHRyZXR1cm4gTlVMTDtcXG4gXFx0fVxcbiBcXG5AQCAtNzgsOCArODQsMTAgQEAgc3RhdGljIHN0cnVjdCBza19idWZmICpxY2FfdGFnX3JjdihzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxcbiBcXHRwb3J0ID0gRklFTERfR0VUKFFDQV9IRFJfUkVDVl9TT1VSQ0VfUE9SVCwgaGRyKTtcXG4gXFxuIFxcdHNrYi1cXHUwMDNlZGV2ID0gZHNhX2NvbmR1aXRfZmluZF91c2VyKGRldiwgMCwgcG9ydCk7XFxuLVxcdGlmICghc2tiLVxcdTAwM2VkZXYpXFxuK1xcdGlmICghc2tiLVxcdTAwM2VkZXYpIHtcXG4rXFx0XFx0a2ZyZWVfc2tiKHNrYik7XFxuIFxcdFxcdHJldHVybiBOVUxMO1xcbitcXHR9XFxuIFxcbiBcXHQvKiBSZW1vdmUgUUNBIHRhZyBhbmQgcmVjYWxjdWxhdGUgY2hlY2tzdW0gKi9cXG4gXFx0c2tiX3B1bGxfcmNzdW0oc2tiLCBRQ0FfSERSX0xFTik7XFxuZGlmZiAtLWdpdCBhL25ldC9kc2EvdGFnX3J0bDRfYS5jIGIvbmV0L2RzYS90YWdfcnRsNF9hLmNcXG5pbmRleCAzY2M2M2VhY2ZhMDM1Mi4uNTkwZWEzYjkyMWM5ZDkgMTAwNjQ0XFxuLS0tIGEvbmV0L2RzYS90YWdfcnRsNF9hLmNcXG4rKysgYi9uZXQvZHNhL3RhZ19ydGw0X2EuY1xcbkBAIC00MSw3ICs0MSw3IEBAIHN0YXRpYyBzdHJ1Y3Qgc2tfYnVmZiAqcnRsNGFfdGFnX3htaXQoc3RydWN0IHNrX2J1ZmYgKnNrYixcXG4gXFx0dTE2IG91dDtcXG4gXFxuIFxcdC8qIFBhZCBvdXQgdG8gYXQgbGVhc3QgNjAgYnl0ZXMgKi9cXG4tXFx0aWYgKHVubGlrZWx5KF9fc2tiX3B1dF9wYWR0byhza2IsIEVUSF9aTEVOLCBmYWxzZSkpKVxcbitcXHRpZiAodW5saWtlbHkoZXRoX3NrYl9wYWQoc2tiKSkpXFxuIFxcdFxcdHJldHVybiBOVUxMO1xcbiBcXG4gXFx0bmV0ZGV2X2RiZyhkZXYsIFxcXCJhZGQgcmVhbHRlayB0YWcgdG8gcGFja2FnZSB0byBwb3J0ICVkXFxcXG5cXFwiLFxcbkBAIC03NSw4ICs3NSwxMCBAQCBzdGF0aWMgc3RydWN0IHNrX2J1ZmYgKnJ0bDRhX3RhZ19yY3Yoc3RydWN0IHNrX2J1ZmYgKnNrYixcXG4gXFx0dTggcHJvdDtcXG4gXFx0dTggcG9ydDtcXG4gXFxuLVxcdGlmICh1bmxpa2VseSghcHNrYl9tYXlfcHVsbChza2IsIFJUTDRfQV9IRFJfTEVOKSkpXFxuK1xcdGlmICh1bmxpa2VseSghcHNrYl9tYXlfcHVsbChza2IsIFJUTDRfQV9IRFJfTEVOKSkpIHtcXG4rXFx0XFx0a2ZyZWVfc2tiKHNrYik7XFxuIFxcdFxcdHJldHVybiBOVUxMO1xcbitcXHR9XFxuIFxcbiBcXHR0YWcgPSBkc2FfZXR5cGVfaGVhZGVyX3Bvc19yeChza2IpO1xcbiBcXHRwID0gKF9fYmUxNiAqKXRhZztcXG5AQCAtOTIsNiArOTQsNyBAQCBzdGF0aWMgc3RydWN0IHNrX2J1ZmYgKnJ0bDRhX3RhZ19yY3Yoc3RydWN0IHNrX2J1ZmYgKnNrYixcXG4gXFx0cHJvdCA9IChwcm90cG9ydCBcXHUwMDNlXFx1MDAzZSBSVEw0X0FfUFJPVE9DT0xfU0hJRlQpIFxcdTAwMjYgMHgwZjtcXG4gXFx0aWYgKHByb3QgIT0gUlRMNF9BX1BST1RPQ09MX1JUTDgzNjZSQikge1xcbiBcXHRcXHRuZXRkZXZfZXJyKGRldiwgXFxcInVua25vd24gcmVhbHRlayBwcm90b2NvbCAweCUwMXhcXFxcblxcXCIsIHByb3QpO1xcbitcXHRcXHRrZnJlZV9za2Ioc2tiKTtcXG4gXFx0XFx0cmV0dXJuIE5VTEw7XFxuIFxcdH1cXG4gXFx0cG9ydCA9IHByb3Rwb3J0IFxcdTAwMjYgMHhmZjtcXG5AQCAtOTksNiArMTAyLDcgQEAgc3RhdGljIHN0cnVjdCBza19idWZmICpydGw0YV90YWdfcmN2KHN0cnVjdCBza19idWZmICpza2IsXFxuIFxcdHNrYi1cXHUwMDNlZGV2ID0gZHNhX2NvbmR1aXRfZmluZF91c2VyKGRldiwgMCwgcG9ydCk7XFxuIFxcdGlmICghc2tiLVxcdTAwM2VkZXYpIHtcXG4gXFx0XFx0bmV0ZGV2X2RiZyhkZXYsIFxcXCJjb3VsZCBub3QgZmluZCB1c2VyIGZvciBwb3J0ICVkXFxcXG5cXFwiLCBwb3J0KTtcXG4rXFx0XFx0a2ZyZWVfc2tiKHNrYik7XFxuIFxcdFxcdHJldHVybiBOVUxMO1xcbiBcXHR9XFxuIFxcbmRpZmYgLS1naXQgYS9uZXQvZHNhL3RhZ19ydGw4XzQuYyBiL25ldC9kc2EvdGFnX3J0bDhfNC5jXFxuaW5kZXggODUyYzZiODgwNzlhMTMuLjRkYTNiZWViZWY3NWUyIDEwMDY0NFxcbi0tLSBhL25ldC9kc2EvdGFnX3J0bDhfNC5jXFxuKysrIGIvbmV0L2RzYS90YWdfcnRsOF80LmNcXG5AQCAtMTQzLDggKzE0MywxMCBAQCBzdGF0aWMgc3RydWN0IHNrX2J1ZmYgKnJ0bDhfNHRfdGFnX3htaXQoc3RydWN0IHNrX2J1ZmYgKnNrYixcXG4gXFx0LyogQ2FsY3VsYXRlIHRoZSBjaGVja3N1bSBoZXJlIGlmIG5vdCBkb25lIHlldCBhcyB0cmFpbGluZyB0YWdzIHdpbGxcXG4gXFx0ICogYnJlYWsgZWl0aGVyIHNvZnR3YXJlIG9yIGhhcmR3YXJlIGJhc2VkIGNoZWNrc3VtXFxuIFxcdCAqL1xcbi1cXHRpZiAoc2tiLVxcdTAwM2VpcF9zdW1tZWQgPT0gQ0hFQ0tTVU1fUEFSVElBTCBcXHUwMDI2XFx1MDAyNiBza2JfY2hlY2tzdW1faGVscChza2IpKVxcbitcXHRpZiAoc2tiLVxcdTAwM2VpcF9zdW1tZWQgPT0gQ0hFQ0tTVU1fUEFSVElBTCBcXHUwMDI2XFx1MDAyNiBza2JfY2hlY2tzdW1faGVscChza2IpKSB7XFxuK1xcdFxcdGtmcmVlX3NrYihza2IpO1xcbiBcXHRcXHRyZXR1cm4gTlVMTDtcXG4rXFx0fVxcbiBcXG4gXFx0cnRsOF80X3dyaXRlX3RhZyhza2IsIGRldiwgc2tiX3B1dChza2IsIFJUTDhfNF9UQUdfTEVOKSk7XFxuIFxcbkBAIC0yMDEsMTEgKzIwMywxNSBAQCBzdGF0aWMgaW50IHJ0bDhfNF9yZWFkX3RhZyhzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxcbiBzdGF0aWMgc3RydWN0IHNrX2J1ZmYgKnJ0bDhfNF90YWdfcmN2KHN0cnVjdCBza19idWZmICpza2IsXFxuIFxcdFxcdFxcdFxcdCAgICAgIHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXFxuIHtcXG4tXFx0aWYgKHVubGlrZWx5KCFwc2tiX21heV9wdWxsKHNrYiwgUlRMOF80X1RBR19MRU4pKSlcXG4rXFx0aWYgKHVubGlrZWx5KCFwc2tiX21heV9wdWxsKHNrYiwgUlRMOF80X1RBR19MRU4pKSkge1xcbitcXHRcXHRrZnJlZV9za2Ioc2tiKTtcXG4gXFx0XFx0cmV0dXJuIE5VTEw7XFxuK1xcdH1cXG4gXFxuLVxcdGlmICh1bmxpa2VseShydGw4XzRfcmVhZF90YWcoc2tiLCBkZXYsIGRzYV9ldHlwZV9oZWFkZXJfcG9zX3J4KHNrYikpKSlcXG4rXFx0aWYgKHVubGlrZWx5KHJ0bDhfNF9yZWFkX3RhZyhza2IsIGRldiwgZHNhX2V0eXBlX2hlYWRlcl9wb3Nfcngoc2tiKSkpKSB7XFxuK1xcdFxcdGtmcmVlX3NrYihza2IpO1xcbiBcXHRcXHRyZXR1cm4gTlVMTDtcXG4rXFx0fVxcbiBcXG4gXFx0LyogUmVtb3ZlIHRhZyBhbmQgcmVjYWxjdWxhdGUgY2hlY2tzdW0gKi9cXG4gXFx0c2tiX3B1bGxfcmNzdW0oc2tiLCBSVEw4XzRfVEFHX0xFTik7XFxuQEAgLTIxOCwxNCArMjI0LDIwIEBAIHN0YXRpYyBzdHJ1Y3Qgc2tfYnVmZiAqcnRsOF80X3RhZ19yY3Yoc3RydWN0IHNrX2J1ZmYgKnNrYixcXG4gc3RhdGljIHN0cnVjdCBza19idWZmICpydGw4XzR0X3RhZ19yY3Yoc3RydWN0IHNrX2J1ZmYgKnNrYixcXG4gXFx0XFx0XFx0XFx0ICAgICAgIHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXFxuIHtcXG4tXFx0aWYgKHNrYl9saW5lYXJpemUoc2tiKSlcXG4rXFx0aWYgKHNrYl9saW5lYXJpemUoc2tiKSkge1xcbitcXHRcXHRrZnJlZV9za2Ioc2tiKTtcXG4gXFx0XFx0cmV0dXJuIE5VTEw7XFxuK1xcdH1cXG4gXFxuLVxcdGlmICh1bmxpa2VseShydGw4XzRfcmVhZF90YWcoc2tiLCBkZXYsIHNrYl90YWlsX3BvaW50ZXIoc2tiKSAtIFJUTDhfNF9UQUdfTEVOKSkpXFxuK1xcdGlmICh1bmxpa2VseShydGw4XzRfcmVhZF90YWcoc2tiLCBkZXYsIHNrYl90YWlsX3BvaW50ZXIoc2tiKSAtIFJUTDhfNF9UQUdfTEVOKSkpIHtcXG4rXFx0XFx0a2ZyZWVfc2tiKHNrYik7XFxuIFxcdFxcdHJldHVybiBOVUxMO1xcbitcXHR9XFxuIFxcbi1cXHRpZiAocHNrYl90cmltX3Jjc3VtKHNrYiwgc2tiLVxcdTAwM2VsZW4gLSBSVEw4XzRfVEFHX0xFTikpXFxuK1xcdGlmIChwc2tiX3RyaW1fcmNzdW0oc2tiLCBza2ItXFx1MDAzZWxlbiAtIFJUTDhfNF9UQUdfTEVOKSkge1xcbitcXHRcXHRrZnJlZV9za2Ioc2tiKTtcXG4gXFx0XFx0cmV0dXJuIE5VTEw7XFxuK1xcdH1cXG4gXFxuIFxcdHJldHVybiBza2I7XFxuIH1cXG5kaWZmIC0tZ2l0IGEvbmV0L2RzYS90YWdfcnpuMV9hNXBzdy5jIGIvbmV0L2RzYS90YWdfcnpuMV9hNXBzdy5jXFxuaW5kZXggMTA5OTRiMzQ3MGY2N2EuLjczNDkxMDE1NmRjMzMzIDEwMDY0NFxcbi0tLSBhL25ldC9kc2EvdGFnX3J6bjFfYTVwc3cuY1xcbisrKyBiL25ldC9kc2EvdGFnX3J6bjFfYTVwc3cuY1xcbkBAIC00OCw3ICs0OCw3IEBAIHN0YXRpYyBzdHJ1Y3Qgc2tfYnVmZiAqYTVwc3dfdGFnX3htaXQoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IG5ldF9kZXZpY2UgKmRlXFxuIFxcdCAqIGxlYXN0IDYwIGJ5dGVzIG90aGVyd2lzZSB0aGV5IHdpbGwgYmUgZGlzY2FyZGVkIHdoZW4gdGhleSBlbnRlciB0aGVcXG4gXFx0ICogc3dpdGNoIHBvcnQgbG9naWMuXFxuIFxcdCAqL1xcbi1cXHRpZiAoX19za2JfcHV0X3BhZHRvKHNrYiwgRVRIX1pMRU4sIGZhbHNlKSlcXG4rXFx0aWYgKGV0aF9za2JfcGFkKHNrYikpXFxuIFxcdFxcdHJldHVybiBOVUxMO1xcbiBcXG4gXFx0LyogcHJvdmlkZSAnQTVQU1dfVEFHX0xFTicgYnl0ZXMgYWRkaXRpb25hbCBzcGFjZSAqL1xcbkBAIC03Nyw2ICs3Nyw3IEBAIHN0YXRpYyBzdHJ1Y3Qgc2tfYnVmZiAqYTVwc3dfdGFnX3JjdihzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxcbiBcXHRpZiAodW5saWtlbHkoIXBza2JfbWF5X3B1bGwoc2tiLCBBNVBTV19UQUdfTEVOKSkpIHtcXG4gXFx0XFx0ZGV2X3dhcm5fcmF0ZWxpbWl0ZWQoXFx1MDAyNmRldi1cXHUwMDNlZGV2LFxcbiBcXHRcXHRcXHRcXHQgICAgIFxcXCJEcm9wcGluZyBwYWNrZXQsIGNhbm5vdCBwdWxsXFxcXG5cXFwiKTtcXG4rXFx0XFx0a2ZyZWVfc2tiKHNrYik7XFxuIFxcdFxcdHJldHVybiBOVUxMO1xcbiBcXHR9XFxuIFxcbkBAIC04NCwxNCArODUsMTcgQEAgc3RhdGljIHN0cnVjdCBza19idWZmICphNXBzd190YWdfcmN2KHN0cnVjdCBza19idWZmICpza2IsXFxuIFxcbiBcXHRpZiAodGFnLVxcdTAwM2VjdHJsX3RhZyAhPSBodG9ucyhFVEhfUF9EU0FfQTVQU1cpKSB7XFxuIFxcdFxcdGRldl93YXJuX3JhdGVsaW1pdGVkKFxcdTAwMjZkZXYtXFx1MDAzZWRldiwgXFxcIkRyb3BwaW5nIHBhY2tldCBkdWUgdG8gaW52YWxpZCBUQUcgbWFya2VyXFxcXG5cXFwiKTtcXG4rXFx0XFx0a2ZyZWVfc2tiKHNrYik7XFxuIFxcdFxcdHJldHVybiBOVUxMO1xcbiBcXHR9XFxuIFxcbiBcXHRwb3J0ID0gRklFTERfR0VUKEE1UFNXX0NUUkxfREFUQV9QT1JULCBudG9ocyh0YWctXFx1MDAzZWN0cmxfZGF0YSkpO1xcbiBcXG4gXFx0c2tiLVxcdTAwM2VkZXYgPSBkc2FfY29uZHVpdF9maW5kX3VzZXIoZGV2LCAwLCBwb3J0KTtcXG4tXFx0aWYgKCFza2ItXFx1MDAzZWRldilcXG4rXFx0aWYgKCFza2ItXFx1MDAzZWRldikge1xcbitcXHRcXHRrZnJlZV9za2Ioc2tiKTtcXG4gXFx0XFx0cmV0dXJuIE5VTEw7XFxuK1xcdH1cXG4gXFxuIFxcdHNrYl9wdWxsX3Jjc3VtKHNrYiwgQTVQU1dfVEFHX0xFTik7XFxuIFxcdGRzYV9zdHJpcF9ldHlwZV9oZWFkZXIoc2tiLCBBNVBTV19UQUdfTEVOKTtcXG5kaWZmIC0tZ2l0IGEvbmV0L2RzYS90YWdfc2phMTEwNS5jIGIvbmV0L2RzYS90YWdfc2phMTEwNS5jXFxuaW5kZXggZGU2ZDRjZTg2NjhiZTEuLmJmZTFmNzQ2ZjU1YmU1IDEwMDY0NFxcbi0tLSBhL25ldC9kc2EvdGFnX3NqYTExMDUuY1xcbisrKyBiL25ldC9kc2EvdGFnX3NqYTExMDUuY1xcbkBAIC0xNDksMTkgKzE0OSwyMCBAQCBzdGF0aWMgc3RydWN0IHNrX2J1ZmYgKnNqYTExMDVfZGVmZXJfeG1pdChzdHJ1Y3QgZHNhX3BvcnQgKmRwLFxcbiBcXHR4bWl0X3dvcmtfZm4gPSB0YWdnZXJfZGF0YS1cXHUwMDNleG1pdF93b3JrX2ZuO1xcbiBcXHR4bWl0X3dvcmtlciA9IHByaXYtXFx1MDAzZXhtaXRfd29ya2VyO1xcbiBcXG4tXFx0aWYgKCF4bWl0X3dvcmtfZm4gfHwgIXhtaXRfd29ya2VyKVxcbitcXHRpZiAoIXhtaXRfd29ya19mbiB8fCAheG1pdF93b3JrZXIpIHtcXG4rXFx0XFx0a2ZyZWVfc2tiKHNrYik7XFxuIFxcdFxcdHJldHVybiBOVUxMO1xcbitcXHR9XFxuIFxcbiBcXHR4bWl0X3dvcmsgPSBremFsbG9jX29iaigqeG1pdF93b3JrLCBHRlBfQVRPTUlDKTtcXG4tXFx0aWYgKCF4bWl0X3dvcmspXFxuK1xcdGlmICgheG1pdF93b3JrKSB7XFxuK1xcdFxcdGtmcmVlX3NrYihza2IpO1xcbiBcXHRcXHRyZXR1cm4gTlVMTDtcXG4rXFx0fVxcbiBcXG4gXFx0a3RocmVhZF9pbml0X3dvcmsoXFx1MDAyNnhtaXRfd29yay1cXHUwMDNld29yaywgeG1pdF93b3JrX2ZuKTtcXG4tXFx0LyogSW5jcmVhc2UgcmVmY291bnQgc28gdGhlIGtmcmVlX3NrYiBpbiBkc2FfdXNlcl94bWl0XFxuLVxcdCAqIHdvbid0IHJlYWxseSBmcmVlIHRoZSBwYWNrZXQuXFxuLVxcdCAqL1xcbiBcXHR4bWl0X3dvcmstXFx1MDAzZWRwID0gZHA7XFxuLVxcdHhtaXRfd29yay1cXHUwMDNlc2tiID0gc2tiX2dldChza2IpO1xcbitcXHR4bWl0X3dvcmstXFx1MDAzZXNrYiA9IHNrYjtcXG4gXFxuIFxcdGt0aHJlYWRfcXVldWVfd29yayh4bWl0X3dvcmtlciwgXFx1MDAyNnhtaXRfd29yay1cXHUwMDNld29yayk7XFxuIFxcbkBAIC00MDEsMTAgKzQwMiw3IEBAIHN0YXRpYyBzdHJ1Y3Qgc2tfYnVmZlxcbiBcXHRcXHRcXHRrZnJlZV9za2IocHJpdi1cXHUwMDNlc3RhbXBhYmxlX3NrYik7XFxuIFxcdFxcdH1cXG4gXFxuLVxcdFxcdC8qIEhvbGQgYSByZWZlcmVuY2UgdG8gYXZvaWQgZHNhX3N3aXRjaF9yY3ZcXG4tXFx0XFx0ICogZnJvbSBmcmVlaW5nIHRoZSBza2IuXFxuLVxcdFxcdCAqL1xcbi1cXHRcXHRwcml2LVxcdTAwM2VzdGFtcGFibGVfc2tiID0gc2tiX2dldChza2IpO1xcbitcXHRcXHRwcml2LVxcdTAwM2VzdGFtcGFibGVfc2tiID0gc2tiO1xcbiBcXHRcXHRzcGluX3VubG9jayhcXHUwMDI2cHJpdi1cXHUwMDNlbWV0YV9sb2NrKTtcXG4gXFxuIFxcdFxcdC8qIFRlbGwgRFNBIHdlIGdvdCBub3RoaW5nICovXFxuQEAgLTQzNiw2ICs0MzQsNyBAQCBzdGF0aWMgc3RydWN0IHNrX2J1ZmZcXG4gXFx0XFx0XFx0ZGV2X2Vycl9yYXRlbGltaXRlZChkcy1cXHUwMDNlZGV2LFxcbiBcXHRcXHRcXHRcXHRcXHQgICAgXFxcIlVuZXhwZWN0ZWQgbWV0YSBmcmFtZVxcXFxuXFxcIik7XFxuIFxcdFxcdFxcdHNwaW5fdW5sb2NrKFxcdTAwMjZwcml2LVxcdTAwM2VtZXRhX2xvY2spO1xcbitcXHRcXHRcXHRrZnJlZV9za2Ioc2tiKTtcXG4gXFx0XFx0XFx0cmV0dXJuIE5VTEw7XFxuIFxcdFxcdH1cXG4gXFxuQEAgLTQ0Myw2ICs0NDIsNyBAQCBzdGF0aWMgc3RydWN0IHNrX2J1ZmZcXG4gXFx0XFx0XFx0ZGV2X2Vycl9yYXRlbGltaXRlZChkcy1cXHUwMDNlZGV2LFxcbiBcXHRcXHRcXHRcXHRcXHQgICAgXFxcIk1ldGEgZnJhbWUgb24gd3JvbmcgcG9ydFxcXFxuXFxcIik7XFxuIFxcdFxcdFxcdHNwaW5fdW5sb2NrKFxcdTAwMjZwcml2LVxcdTAwM2VtZXRhX2xvY2spO1xcbitcXHRcXHRcXHRrZnJlZV9za2Ioc2tiKTtcXG4gXFx0XFx0XFx0cmV0dXJuIE5VTEw7XFxuIFxcdFxcdH1cXG4gXFxuQEAgLTUwMSwxOCArNTAxLDIxIEBAIHN0YXRpYyBzdHJ1Y3Qgc2tfYnVmZiAqc2phMTEwNV9yY3Yoc3RydWN0IHNrX2J1ZmYgKnNrYixcXG4gXFx0LyogTm9ybWFsIGRhdGEgcGxhbmUgdHJhZmZpYyBhbmQgbGluay1sb2NhbCBmcmFtZXMgYXJlIHRhZ2dlZCB3aXRoXFxuIFxcdCAqIGEgdGFnXzgwMjFxIFZMQU4gd2hpY2ggd2UgaGF2ZSB0byBzdHJpcFxcbiBcXHQgKi9cXG4tXFx0aWYgKHNqYTExMDVfc2tiX2hhc190YWdfODAyMXEoc2tiKSlcXG4rXFx0aWYgKHNqYTExMDVfc2tiX2hhc190YWdfODAyMXEoc2tiKSkge1xcbiBcXHRcXHRkc2FfODAyMXFfcmN2KHNrYiwgXFx1MDAyNnNvdXJjZV9wb3J0LCBcXHUwMDI2c3dpdGNoX2lkLCBcXHUwMDI2dmJpZCwgXFx1MDAyNnZpZCk7XFxuLVxcdGVsc2UgaWYgKHNvdXJjZV9wb3J0ID09IC0xIFxcdTAwMjZcXHUwMDI2IHN3aXRjaF9pZCA9PSAtMSlcXG4rXFx0fSBlbHNlIGlmIChzb3VyY2VfcG9ydCA9PSAtMSBcXHUwMDI2XFx1MDAyNiBzd2l0Y2hfaWQgPT0gLTEpIHtcXG4gXFx0XFx0LyogUGFja2V0cyB3aXRoIG5vIHNvdXJjZSBpbmZvcm1hdGlvbiBoYXZlIG5vIGNoYW5jZSBvZlxcbiBcXHRcXHQgKiBnZXR0aW5nIGFjY2VwdGVkLCBkcm9wIHRoZW0gc3RyYWlnaHQgYXdheS5cXG4gXFx0XFx0ICovXFxuK1xcdFxcdGtmcmVlX3NrYihza2IpO1xcbiBcXHRcXHRyZXR1cm4gTlVMTDtcXG4rXFx0fVxcbiBcXG4gXFx0c2tiLVxcdTAwM2VkZXYgPSBkc2FfdGFnXzgwMjFxX2ZpbmRfdXNlcihuZXRkZXYsIHNvdXJjZV9wb3J0LCBzd2l0Y2hfaWQsXFxuIFxcdFxcdFxcdFxcdFxcdCAgIHZpZCwgdmJpZCk7XFxuIFxcdGlmICghc2tiLVxcdTAwM2VkZXYpIHtcXG4gXFx0XFx0bmV0ZGV2X3dhcm4obmV0ZGV2LCBcXFwiQ291bGRuJ3QgZGVjb2RlIHNvdXJjZSBwb3J0XFxcXG5cXFwiKTtcXG4rXFx0XFx0a2ZyZWVfc2tiKHNrYik7XFxuIFxcdFxcdHJldHVybiBOVUxMO1xcbiBcXHR9XFxuIFxcbkBAIC01MzksMTIgKzU0MiwxNSBAQCBzdGF0aWMgc3RydWN0IHNrX2J1ZmYgKnNqYTExMTBfcmN2X21ldGEoc3RydWN0IHNrX2J1ZmYgKnNrYiwgdTE2IHJ4X2hlYWRlcilcXG4gXFx0aWYgKCFkcykge1xcbiBcXHRcXHRuZXRfZXJyX3JhdGVsaW1pdGVkKFxcXCIlczogY2Fubm90IGZpbmQgc3dpdGNoIGlkICVkXFxcXG5cXFwiLFxcbiBcXHRcXHRcXHRcXHQgICAgY29uZHVpdC1cXHUwMDNlbmFtZSwgc3dpdGNoX2lkKTtcXG4rXFx0XFx0a2ZyZWVfc2tiKHNrYik7XFxuIFxcdFxcdHJldHVybiBOVUxMO1xcbiBcXHR9XFxuIFxcbiBcXHR0YWdnZXJfZGF0YSA9IHNqYTExMDVfdGFnZ2VyX2RhdGEoZHMpO1xcbi1cXHRpZiAoIXRhZ2dlcl9kYXRhLVxcdTAwM2VtZXRhX3RzdGFtcF9oYW5kbGVyKVxcbitcXHRpZiAoIXRhZ2dlcl9kYXRhLVxcdTAwM2VtZXRhX3RzdGFtcF9oYW5kbGVyKSB7XFxuK1xcdFxcdGtmcmVlX3NrYihza2IpO1xcbiBcXHRcXHRyZXR1cm4gTlVMTDtcXG4rXFx0fVxcbiBcXG4gXFx0Zm9yIChpID0gMDsgaSBcXHUwMDNjPSBuX3RzOyBpKyspIHtcXG4gXFx0XFx0dTggdHNfaWQsIHNvdXJjZV9wb3J0LCBkaXI7XFxuQEAgLTU2Miw2ICs1NjgsNyBAQCBzdGF0aWMgc3RydWN0IHNrX2J1ZmYgKnNqYTExMTBfcmN2X21ldGEoc3RydWN0IHNrX2J1ZmYgKnNrYiwgdTE2IHJ4X2hlYWRlcilcXG4gXFx0fVxcbiBcXG4gXFx0LyogRGlzY2FyZCB0aGUgbWV0YSBmcmFtZSwgd2UndmUgY29uc3VtZWQgdGhlIHRpbWVzdGFtcHMgaXQgY29udGFpbmVkICovXFxuK1xcdGtmcmVlX3NrYihza2IpO1xcbiBcXHRyZXR1cm4gTlVMTDtcXG4gfVxcbiBcXG5AQCAtNTcyLDggKzU3OSwxMCBAQCBzdGF0aWMgc3RydWN0IHNrX2J1ZmYgKnNqYTExMTBfcmN2X2luYmFuZF9jb250cm9sX2V4dGVuc2lvbihzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxcbiB7XFxuIFxcdHUxNiByeF9oZWFkZXI7XFxuIFxcbi1cXHRpZiAodW5saWtlbHkoIXBza2JfbWF5X3B1bGwoc2tiLCBTSkExMTEwX0hFQURFUl9MRU4pKSlcXG4rXFx0aWYgKHVubGlrZWx5KCFwc2tiX21heV9wdWxsKHNrYiwgU0pBMTExMF9IRUFERVJfTEVOKSkpIHtcXG4rXFx0XFx0a2ZyZWVfc2tiKHNrYik7XFxuIFxcdFxcdHJldHVybiBOVUxMO1xcbitcXHR9XFxuIFxcbiBcXHQvKiBza2ItXFx1MDAzZWRhdGEgcG9pbnRzIHRvIHNrYl9tYWNfaGVhZGVyKHNrYikgKyBFVEhfSExFTiwgd2hpY2ggaXMgZXhhY3RseVxcbiBcXHQgKiB3aGF0IHdlIG5lZWQgYmVjYXVzZSB0aGUgY2FsbGVyIGhhcyBjaGVja2VkIHRoZSBFdGhlclR5cGUgKHdoaWNoIGlzXFxuQEAgLTYwOSw4ICs2MTgsMTAgQEAgc3RhdGljIHN0cnVjdCBza19idWZmICpzamExMTEwX3Jjdl9pbmJhbmRfY29udHJvbF9leHRlbnNpb24oc3RydWN0IHNrX2J1ZmYgKnNrYixcXG4gXFx0XFx0ICogcGFkZGluZyBhbmQgdHJhaWxlciB3ZSBuZWVkIHRvIGFjY291bnQgZm9yIHRoZSBmYWN0IHRoYXRcXG4gXFx0XFx0ICogc2tiLVxcdTAwM2VkYXRhIHBvaW50cyB0byBza2JfbWFjX2hlYWRlcihza2IpICsgRVRIX0hMRU4uXFxuIFxcdFxcdCAqL1xcbi1cXHRcXHRpZiAocHNrYl90cmltX3Jjc3VtKHNrYiwgc3RhcnRfb2ZfcGFkZGluZyAtIEVUSF9ITEVOKSlcXG4rXFx0XFx0aWYgKHBza2JfdHJpbV9yY3N1bShza2IsIHN0YXJ0X29mX3BhZGRpbmcgLSBFVEhfSExFTikpIHtcXG4rXFx0XFx0XFx0a2ZyZWVfc2tiKHNrYik7XFxuIFxcdFxcdFxcdHJldHVybiBOVUxMO1xcbitcXHRcXHR9XFxuIFxcdC8qIFRyYXAtdG8taG9zdCBmcmFtZSwgbm8gdGltZXN0YW1wIHRyYWlsZXIgKi9cXG4gXFx0fSBlbHNlIHtcXG4gXFx0XFx0KnNvdXJjZV9wb3J0ID0gU0pBMTExMF9SWF9IRUFERVJfU1JDX1BPUlQocnhfaGVhZGVyKTtcXG5AQCAtNjUzLDYgKzY2NCw3IEBAIHN0YXRpYyBzdHJ1Y3Qgc2tfYnVmZiAqc2phMTExMF9yY3Yoc3RydWN0IHNrX2J1ZmYgKnNrYixcXG4gXFxuIFxcdGlmICghc2tiLVxcdTAwM2VkZXYpIHtcXG4gXFx0XFx0bmV0ZGV2X3dhcm4obmV0ZGV2LCBcXFwiQ291bGRuJ3QgZGVjb2RlIHNvdXJjZSBwb3J0XFxcXG5cXFwiKTtcXG4rXFx0XFx0a2ZyZWVfc2tiKHNrYik7XFxuIFxcdFxcdHJldHVybiBOVUxMO1xcbiBcXHR9XFxuIFxcbmRpZmYgLS1naXQgYS9uZXQvZHNhL3RhZ190cmFpbGVyLmMgYi9uZXQvZHNhL3RhZ190cmFpbGVyLmNcXG5pbmRleCA0ZGNlMjRjZmU2YTcxNi4uNDljODAyYzEwY2E2M2EgMTAwNjQ0XFxuLS0tIGEvbmV0L2RzYS90YWdfdHJhaWxlci5jXFxuKysrIGIvbmV0L2RzYS90YWdfdHJhaWxlci5jXFxuQEAgLTMwLDIyICszMCwzMCBAQCBzdGF0aWMgc3RydWN0IHNrX2J1ZmYgKnRyYWlsZXJfcmN2KHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXFxuIFxcdHU4ICp0cmFpbGVyO1xcbiBcXHRpbnQgc291cmNlX3BvcnQ7XFxuIFxcbi1cXHRpZiAoc2tiX2xpbmVhcml6ZShza2IpKVxcbitcXHRpZiAoc2tiX2xpbmVhcml6ZShza2IpKSB7XFxuK1xcdFxcdGtmcmVlX3NrYihza2IpO1xcbiBcXHRcXHRyZXR1cm4gTlVMTDtcXG4rXFx0fVxcbiBcXG4gXFx0dHJhaWxlciA9IHNrYl90YWlsX3BvaW50ZXIoc2tiKSAtIDQ7XFxuIFxcdGlmICh0cmFpbGVyWzBdICE9IDB4ODAgfHwgKHRyYWlsZXJbMV0gXFx1MDAyNiAweGY4KSAhPSAweDAwIHx8XFxuLVxcdCAgICAodHJhaWxlclsyXSBcXHUwMDI2IDB4ZWYpICE9IDB4MDAgfHwgdHJhaWxlclszXSAhPSAweDAwKVxcbitcXHQgICAgKHRyYWlsZXJbMl0gXFx1MDAyNiAweGVmKSAhPSAweDAwIHx8IHRyYWlsZXJbM10gIT0gMHgwMCkge1xcbitcXHRcXHRrZnJlZV9za2Ioc2tiKTtcXG4gXFx0XFx0cmV0dXJuIE5VTEw7XFxuK1xcdH1cXG4gXFxuIFxcdHNvdXJjZV9wb3J0ID0gdHJhaWxlclsxXSBcXHUwMDI2IDc7XFxuIFxcbiBcXHRza2ItXFx1MDAzZWRldiA9IGRzYV9jb25kdWl0X2ZpbmRfdXNlcihkZXYsIDAsIHNvdXJjZV9wb3J0KTtcXG4tXFx0aWYgKCFza2ItXFx1MDAzZWRldilcXG4rXFx0aWYgKCFza2ItXFx1MDAzZWRldikge1xcbitcXHRcXHRrZnJlZV9za2Ioc2tiKTtcXG4gXFx0XFx0cmV0dXJuIE5VTEw7XFxuK1xcdH1cXG4gXFxuLVxcdGlmIChwc2tiX3RyaW1fcmNzdW0oc2tiLCBza2ItXFx1MDAzZWxlbiAtIDQpKVxcbitcXHRpZiAocHNrYl90cmltX3Jjc3VtKHNrYiwgc2tiLVxcdTAwM2VsZW4gLSA0KSkge1xcbitcXHRcXHRrZnJlZV9za2Ioc2tiKTtcXG4gXFx0XFx0cmV0dXJuIE5VTEw7XFxuK1xcdH1cXG4gXFxuIFxcdHJldHVybiBza2I7XFxuIH1cXG5kaWZmIC0tZ2l0IGEvbmV0L2RzYS90YWdfdnNjNzN4eF84MDIxcS5jIGIvbmV0L2RzYS90YWdfdnNjNzN4eF84MDIxcS5jXFxuaW5kZXggYWYxMjFhOWFmZjdmYmQuLmY0NzM2YTFhN2EwZjBmIDEwMDY0NFxcbi0tLSBhL25ldC9kc2EvdGFnX3ZzYzczeHhfODAyMXEuY1xcbisrKyBiL25ldC9kc2EvdGFnX3ZzYzczeHhfODAyMXEuY1xcbkBAIC00NCw2ICs0NCw3IEBAIHZzYzczeHhfcmN2KHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYpXFxuIFxcdGlmICghc2tiLVxcdTAwM2VkZXYpIHtcXG4gXFx0XFx0ZGV2X3dhcm5fcmF0ZWxpbWl0ZWQoXFx1MDAyNm5ldGRldi1cXHUwMDNlZGV2LFxcbiBcXHRcXHRcXHRcXHQgICAgIFxcXCJDb3VsZG4ndCBkZWNvZGUgc291cmNlIHBvcnRcXFxcblxcXCIpO1xcbitcXHRcXHRrZnJlZV9za2Ioc2tiKTtcXG4gXFx0XFx0cmV0dXJuIE5VTEw7XFxuIFxcdH1cXG4gXFxuZGlmZiAtLWdpdCBhL25ldC9kc2EvdGFnX3hyczcwMHguYyBiL25ldC9kc2EvdGFnX3hyczcwMHguY1xcbmluZGV4IGEwNTIxOWY3MDJjNjVhLi5iYjI2ODAyMGVlODY1ZSAxMDA2NDRcXG4tLS0gYS9uZXQvZHNhL3RhZ194cnM3MDB4LmNcXG4rKysgYi9uZXQvZHNhL3RhZ194cnM3MDB4LmNcXG5AQCAtMzAsMTUgKzMwLDIxIEBAIHN0YXRpYyBzdHJ1Y3Qgc2tfYnVmZiAqeHJzNzAweF9yY3Yoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IG5ldF9kZXZpY2UgKmRldilcXG4gXFxuIFxcdHNvdXJjZV9wb3J0ID0gZmZzKChpbnQpdHJhaWxlclswXSkgLSAxO1xcbiBcXG4tXFx0aWYgKHNvdXJjZV9wb3J0IFxcdTAwM2MgMClcXG4rXFx0aWYgKHNvdXJjZV9wb3J0IFxcdTAwM2MgMCkge1xcbitcXHRcXHRrZnJlZV9za2Ioc2tiKTtcXG4gXFx0XFx0cmV0dXJuIE5VTEw7XFxuK1xcdH1cXG4gXFxuIFxcdHNrYi1cXHUwMDNlZGV2ID0gZHNhX2NvbmR1aXRfZmluZF91c2VyKGRldiwgMCwgc291cmNlX3BvcnQpO1xcbi1cXHRpZiAoIXNrYi1cXHUwMDNlZGV2KVxcbitcXHRpZiAoIXNrYi1cXHUwMDNlZGV2KSB7XFxuK1xcdFxcdGtmcmVlX3NrYihza2IpO1xcbiBcXHRcXHRyZXR1cm4gTlVMTDtcXG4rXFx0fVxcbiBcXG4tXFx0aWYgKHBza2JfdHJpbV9yY3N1bShza2IsIHNrYi1cXHUwMDNlbGVuIC0gMSkpXFxuK1xcdGlmIChwc2tiX3RyaW1fcmNzdW0oc2tiLCBza2ItXFx1MDAzZWxlbiAtIDEpKSB7XFxuK1xcdFxcdGtmcmVlX3NrYihza2IpO1xcbiBcXHRcXHRyZXR1cm4gTlVMTDtcXG4rXFx0fVxcbiBcXG4gXFx0LyogRnJhbWUgaXMgZm9yd2FyZGVkIGJ5IGhhcmR3YXJlLCBkb24ndCBmb3J3YXJkIGluIHNvZnR3YXJlLiAqL1xcbiBcXHRkc2FfZGVmYXVsdF9vZmZsb2FkX2Z3ZF9tYXJrKHNrYik7XFxuZGlmZiAtLWdpdCBhL25ldC9kc2EvdGFnX3l0OTIxeC5jIGIvbmV0L2RzYS90YWdfeXQ5MjF4LmNcXG5pbmRleCBmM2NlZDk5YjFjODUyZS4uMjk0Nzg0YWI2Njk0YjYgMTAwNjQ0XFxuLS0tIGEvbmV0L2RzYS90YWdfeXQ5MjF4LmNcXG4rKysgYi9uZXQvZHNhL3RhZ195dDkyMXguY1xcbkBAIC04Nyw4ICs4NywxMCBAQCB5dDkyMXhfdGFnX3JjdihzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2KVxcbiBcXHRfX2JlMTYgKnRhZztcXG4gXFx0dTE2IHJ4O1xcbiBcXG4tXFx0aWYgKHVubGlrZWx5KCFwc2tiX21heV9wdWxsKHNrYiwgWVQ5MjFYX1RBR19MRU4pKSlcXG4rXFx0aWYgKHVubGlrZWx5KCFwc2tiX21heV9wdWxsKHNrYiwgWVQ5MjFYX1RBR19MRU4pKSkge1xcbitcXHRcXHRrZnJlZV9za2Ioc2tiKTtcXG4gXFx0XFx0cmV0dXJuIE5VTEw7XFxuK1xcdH1cXG4gXFxuIFxcdHRhZyA9IGRzYV9ldHlwZV9oZWFkZXJfcG9zX3J4KHNrYik7XFxuIFxcbkBAIC05Niw2ICs5OCw3IEBAIHl0OTIxeF90YWdfcmN2KHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYpXFxuIFxcdFxcdGRldl93YXJuX3JhdGVsaW1pdGVkKFxcdTAwMjZuZXRkZXYtXFx1MDAzZWRldixcXG4gXFx0XFx0XFx0XFx0ICAgICBcXFwiVW5leHBlY3RlZCBFdGhlclR5cGUgMHglMDR4XFxcXG5cXFwiLFxcbiBcXHRcXHRcXHRcXHQgICAgIG50b2hzKHRhZ1swXSkpO1xcbitcXHRcXHRrZnJlZV9za2Ioc2tiKTtcXG4gXFx0XFx0cmV0dXJuIE5VTEw7XFxuIFxcdH1cXG4gXFxuQEAgLTEwNCw2ICsxMDcsNyBAQCB5dDkyMXhfdGFnX3JjdihzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2KVxcbiBcXHRpZiAodW5saWtlbHkoKHJ4IFxcdTAwMjYgWVQ5MjFYX1RBR19QT1JUX0VOKSA9PSAwKSkge1xcbiBcXHRcXHRkZXZfd2Fybl9yYXRlbGltaXRlZChcXHUwMDI2bmV0ZGV2LVxcdTAwM2VkZXYsXFxuIFxcdFxcdFxcdFxcdCAgICAgXFxcIlVuZXhwZWN0ZWQgcnggdGFnIDB4JTA0eFxcXFxuXFxcIiwgcngpO1xcbitcXHRcXHRrZnJlZV9za2Ioc2tiKTtcXG4gXFx0XFx0cmV0dXJuIE5VTEw7XFxuIFxcdH1cXG4gXFxuQEAgLTExMiw2ICsxMTYsNyBAQCB5dDkyMXhfdGFnX3JjdihzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2KVxcbiBcXHRpZiAodW5saWtlbHkoIXNrYi1cXHUwMDNlZGV2KSkge1xcbiBcXHRcXHRkZXZfd2Fybl9yYXRlbGltaXRlZChcXHUwMDI2bmV0ZGV2LVxcdTAwM2VkZXYsXFxuIFxcdFxcdFxcdFxcdCAgICAgXFxcIkNvdWxkbid0IGRlY29kZSBzb3VyY2UgcG9ydCAldVxcXFxuXFxcIiwgcG9ydCk7XFxuK1xcdFxcdGtmcmVlX3NrYihza2IpO1xcbiBcXHRcXHRyZXR1cm4gTlVMTDtcXG4gXFx0fVxcbiBcXG5kaWZmIC0tZ2l0IGEvbmV0L2RzYS91c2VyLmMgYi9uZXQvZHNhL3VzZXIuY1xcbmluZGV4IDg3MDRjMWEzYTViNzQxLi4wNzJmYTc2OTcyY2M2NSAxMDA2NDRcXG4tLS0gYS9uZXQvZHNhL3VzZXIuY1xcbisrKyBiL25ldC9kc2EvdXNlci5jXFxuQEAgLTkzNSwxMyArOTM1LDEyIEBAIHN0YXRpYyBuZXRkZXZfdHhfdCBkc2FfdXNlcl94bWl0KHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXFxuIFxcdFxcdGV0aF9za2JfcGFkKHNrYik7XFxuIFxcbiBcXHQvKiBUcmFuc21pdCBmdW5jdGlvbiBtYXkgaGF2ZSB0byByZWFsbG9jYXRlIHRoZSBvcmlnaW5hbCBTS0IsXFxuLVxcdCAqIGluIHdoaWNoIGNhc2UgaXQgbXVzdCBoYXZlIGZyZWVkIGl0LiBPbmx5IGZyZWUgaXQgaGVyZSBvbiBlcnJvci5cXG4rXFx0ICogaW4gd2hpY2ggY2FzZSBpdCBtdXN0IGhhdmUgZnJlZWQgaXQuIFRhZ2dlcnMgd2lsbCBkcm9wIHRoZVxcbitcXHQgKiBwYXNzZWQgc2tiIG9uIGVycm9yLlxcbiBcXHQgKi9cXG4gXFx0bnNrYiA9IHAtXFx1MDAzZXhtaXQoc2tiLCBkZXYpO1xcbi1cXHRpZiAoIW5za2IpIHtcXG4tXFx0XFx0a2ZyZWVfc2tiKHNrYik7XFxuK1xcdGlmICghbnNrYilcXG4gXFx0XFx0cmV0dXJuIE5FVERFVl9UWF9PSztcXG4tXFx0fVxcbiBcXG4gXFx0cmV0dXJuIGRzYV9lbnF1ZXVlX3NrYihuc2tiLCBkZXYpO1xcbiB9XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI1VDA4OjI5OjA2Ljg1NzgzNjA0NFoiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MTA2Njk2NTE4NjEzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIk5FVF9EU0FcIixcbiAgICBcIk5FVF9EU0FfTE9PUFwiLFxuICAgIFwiTkVUX0RTQV9UQUdfQVI5MzMxXCIsXG4gICAgXCJORVRfRFNBX1RBR19CUkNNXCIsXG4gICAgXCJORVRfRFNBX1RBR19CUkNNX0xFR0FDWVwiLFxuICAgIFwiTkVUX0RTQV9UQUdfQlJDTV9QUkVQRU5EXCIsXG4gICAgXCJORVRfRFNBX1RBR19IRUxMQ1JFRUtcIixcbiAgICBcIk5FVF9EU0FfVEFHX0dTV0lQXCIsXG4gICAgXCJORVRfRFNBX1RBR19EU0FcIixcbiAgICBcIk5FVF9EU0FfVEFHX0VEU0FcIixcbiAgICBcIk5FVF9EU0FfVEFHX01US1wiLFxuICAgIFwiTkVUX0RTQV9UQUdfTVhMXzg2MlhYXCIsXG4gICAgXCJORVRfRFNBX1RBR19NWExfR1NXMVhYXCIsXG4gICAgXCJORVRfRFNBX1RBR19LU1pcIixcbiAgICBcIk5FVF9EU0FfVEFHX05FVENcIixcbiAgICBcIk5FVF9EU0FfVEFHX09DRUxPVFwiLFxuICAgIFwiTkVUX0RTQV9UQUdfT0NFTE9UXzgwMjFRXCIsXG4gICAgXCJORVRfRFNBX1RBR19RQ0FcIixcbiAgICBcIk5FVF9EU0FfVEFHX1JUTDRfQVwiLFxuICAgIFwiTkVUX0RTQV9UQUdfUlRMOF80XCIsXG4gICAgXCJORVRfRFNBX1RBR19SWk4xX0E1UFNXXCIsXG4gICAgXCJORVRfRFNBX1RBR19MQU45MzAzXCIsXG4gICAgXCJORVRfRFNBX1RBR19TSkExMTA1XCIsXG4gICAgXCJORVRfRFNBX1RBR19UUkFJTEVSXCIsXG4gICAgXCJORVRfRFNBX1RBR19WU0M3M1hYXzgwMjFRXCIsXG4gICAgXCJORVRfRFNBX1RBR19YUlM3MDBYXCIsXG4gICAgXCJORVRfRFNBX1RBR19ZVDkyMVhcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJkc2Ffc3dpdGNoX3JjdlwiLFxuICAgIFwiZHNhX3VzZXJfeG1pdFwiLFxuICAgIFwiYXI5MzMxX3RhZ19yY3ZcIixcbiAgICBcImJyY21fdGFnX3htaXRfbGxcIixcbiAgICBcImJyY21fdGFnX3Jjdl9sbFwiLFxuICAgIFwiZHNhX3Jjdl9sbFwiLFxuICAgIFwiZWRzYV9yY3ZcIixcbiAgICBcImtzel9jb21tb25fcmN2XCIsXG4gICAgXCJvY2Vsb3RfcmN2XCIsXG4gICAgXCJxY2FfdGFnX3JjdlwiLFxuICAgIFwic2phMTEwNV9yY3ZcIixcbiAgICBcInRyYWlsZXJfcmN2XCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggcmVmYWN0b3JzIHNrYiBtZW1vcnkgbWFuYWdlbWVudCBpbiB0aGUgRFNBIChEaXN0cmlidXRlZCBTd2l0Y2ggQXJjaGl0ZWN0dXJlKSBzdWJzeXN0ZW0uIEl0IHNoaWZ0cyB0aGUgcmVzcG9uc2liaWxpdHkgb2YgZnJlZWluZyB0aGUgc2tiIG9uIGVycm9yIHBhdGhzIGZyb20gdGhlIGNvcmUgRFNBIGZ1bmN0aW9ucyAoZHNhX3VzZXJfeG1pdCwgZHNhX3N3aXRjaF9yY3YpIHRvIHRoZSBpbmRpdmlkdWFsIHRhZ2dlciBkcml2ZXJzLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgdGhhdCBjb3VsZCBpbnRyb2R1Y2UgbWVtb3J5IGxlYWtzIG9yIGRvdWJsZSBmcmVlcyBpZiBhbnkgZXJyb3IgcGF0aCBpbiBhIHRhZ2dlciBkcml2ZXIgaXMgbWlzc2VkIG9yIG1pc2hhbmRsZWQuIFRoZSBjb2RlIGlzIHJlYWNoYWJsZSBpbiBhIHZpcnR1YWxpemVkIGVudmlyb25tZW50IGJ5IHVzaW5nIHRoZSBkc2FfbG9vcCBtb2NrLXVwIHN3aXRjaCBkcml2ZXIgYW5kIGR5bmFtaWNhbGx5IGNoYW5naW5nIHRoZSB0YWdnaW5nIHByb3RvY29sIHZpYSBzeXNmcy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4yLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS5cbiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbiAgIERvIG5vdCBsaXN0IHRvbyBnZW5lcmljIGNvbmZpZ3MgKHdlIGFscmVhZHkgaGF2ZSB0aGVtIGVuYWJsZWQpLiBPbmx5IGxpc3QgdGhvc2UgdGhhdFxuICAgc3BlY2lmaWNhbGx5IGNvdmVyIHRoZSBtb2RpZmllZCBjb2RlLiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3Mgb3V0cHV0IGFycmF5LFxuICAgYW5kIERPIE5PVCBhZGQgYSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCA2NzRlODk5ODM3N2NjNmYxN2NiMjlmZmM2NjU1ZjkyZmMzOWExOWY3XG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFRodSBKdW4gMjUgMDg6Mjk6MDQgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9uZXQvZHNhL3RhZy5jIGIvbmV0L2RzYS90YWcuY1xuaW5kZXggNzlhZDEwNTkwMmQ5NzguLjk5MTczMmQ2ZWFlMmMzIDEwMDY0NFxuLS0tIGEvbmV0L2RzYS90YWcuY1xuKysrIGIvbmV0L2RzYS90YWcuY1xuQEAgLTc5LDE1ICs3OSwxNiBAQCBzdGF0aWMgaW50IGRzYV9zd2l0Y2hfcmN2KHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXG4gXHRcdGlmIChsaWtlbHkoc2tiLVx1MDAzZWRldikpIHtcbiBcdFx0XHRkc2FfZGVmYXVsdF9vZmZsb2FkX2Z3ZF9tYXJrKHNrYik7XG4gXHRcdFx0bnNrYiA9IHNrYjtcbitcdFx0fSBlbHNlIHtcbitcdFx0XHQvKiBKdXN0IGRyb3AgdGhlIHNrYiBpZiB3ZSBjYW4ndCBmaW5kIHRoZSB1c2VyICovXG4rXHRcdFx0a2ZyZWVfc2tiKHNrYik7XG4gXHRcdH1cbiBcdH0gZWxzZSB7XG4gXHRcdG5za2IgPSBjcHVfZHAtXHUwMDNlcmN2KHNrYiwgZGV2KTtcbiBcdH1cbiBcbi1cdGlmICghbnNrYikge1xuLVx0XHRrZnJlZV9za2Ioc2tiKTtcbitcdGlmICghbnNrYilcbiBcdFx0cmV0dXJuIDA7XG4tXHR9XG4gXG4gXHRza2IgPSBuc2tiO1xuIFx0c2tiX3B1c2goc2tiLCBFVEhfSExFTik7XG5AQCAtMTA3LDExICsxMDgsMTAgQEAgc3RhdGljIGludCBkc2Ffc3dpdGNoX3JjdihzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxuIFxuIFx0aWYgKHVubGlrZWx5KGNwdV9kcC1cdTAwM2Vkcy1cdTAwM2V1bnRhZ19icmlkZ2VfcHZpZCB8fFxuIFx0XHQgICAgIGNwdV9kcC1cdTAwM2Vkcy1cdTAwM2V1bnRhZ192bGFuX2F3YXJlX2JyaWRnZV9wdmlkKSkge1xuK1x0XHQvKiBkc2Ffc29mdHdhcmVfdmxhbl91bnRhZygpIGRyb3BzIHNrYiBvbiBmYWlsdXJlICovXG4gXHRcdG5za2IgPSBkc2Ffc29mdHdhcmVfdmxhbl91bnRhZyhza2IpO1xuLVx0XHRpZiAoIW5za2IpIHtcbi1cdFx0XHRrZnJlZV9za2Ioc2tiKTtcbitcdFx0aWYgKCFuc2tiKVxuIFx0XHRcdHJldHVybiAwO1xuLVx0XHR9XG4gXHRcdHNrYiA9IG5za2I7XG4gXHR9XG4gXG5kaWZmIC0tZ2l0IGEvbmV0L2RzYS90YWdfYXI5MzMxLmMgYi9uZXQvZHNhL3RhZ19hcjkzMzEuY1xuaW5kZXggY2JiNTg4Y2E3M2FhZjUuLjJlMjM4ODE0M2IwMjUxIDEwMDY0NFxuLS0tIGEvbmV0L2RzYS90YWdfYXI5MzMxLmNcbisrKyBiL25ldC9kc2EvdGFnX2FyOTMzMS5jXG5AQCAtNTEsOCArNTEsMTAgQEAgc3RhdGljIHN0cnVjdCBza19idWZmICphcjkzMzFfdGFnX3JjdihzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxuIFx0dTggdmVyLCBwb3J0O1xuIFx0dTE2IGhkcjtcbiBcbi1cdGlmICh1bmxpa2VseSghcHNrYl9tYXlfcHVsbChza2IsIEFSOTMzMV9IRFJfTEVOKSkpXG4rXHRpZiAodW5saWtlbHkoIXBza2JfbWF5X3B1bGwoc2tiLCBBUjkzMzFfSERSX0xFTikpKSB7XG4rXHRcdGtmcmVlX3NrYihza2IpO1xuIFx0XHRyZXR1cm4gTlVMTDtcbitcdH1cbiBcbiBcdGhkciA9IGxlMTZfdG9fY3B1KCooX19sZTE2ICopc2tiX21hY19oZWFkZXIoc2tiKSk7XG4gXG5AQCAtNjAsMTIgKzYyLDE0IEBAIHN0YXRpYyBzdHJ1Y3Qgc2tfYnVmZiAqYXI5MzMxX3RhZ19yY3Yoc3RydWN0IHNrX2J1ZmYgKnNrYixcbiBcdGlmICh1bmxpa2VseSh2ZXIgIT0gQVI5MzMxX0hEUl9WRVJTSU9OKSkge1xuIFx0XHRuZXRkZXZfd2Fybl9vbmNlKG5kZXYsIFwiJXM6JWkgd3JvbmcgaGVhZGVyIHZlcnNpb24gMHglMnhcXG5cIixcbiBcdFx0XHRcdCBfX2Z1bmNfXywgX19MSU5FX18sIGhkcik7XG4rXHRcdGtmcmVlX3NrYihza2IpO1xuIFx0XHRyZXR1cm4gTlVMTDtcbiBcdH1cbiBcbiBcdGlmICh1bmxpa2VseShoZHIgXHUwMDI2IEFSOTMzMV9IRFJfRlJPTV9DUFUpKSB7XG4gXHRcdG5ldGRldl93YXJuX29uY2UobmRldiwgXCIlczolaSBwYWNrZXQgc2hvdWxkIG5vdCBiZSBmcm9tIGNwdSAweCUyeFxcblwiLFxuIFx0XHRcdFx0IF9fZnVuY19fLCBfX0xJTkVfXywgaGRyKTtcbitcdFx0a2ZyZWVfc2tiKHNrYik7XG4gXHRcdHJldHVybiBOVUxMO1xuIFx0fVxuIFxuQEAgLTc1LDggKzc5LDEwIEBAIHN0YXRpYyBzdHJ1Y3Qgc2tfYnVmZiAqYXI5MzMxX3RhZ19yY3Yoc3RydWN0IHNrX2J1ZmYgKnNrYixcbiBcdHBvcnQgPSBGSUVMRF9HRVQoQVI5MzMxX0hEUl9QT1JUX05VTV9NQVNLLCBoZHIpO1xuIFxuIFx0c2tiLVx1MDAzZWRldiA9IGRzYV9jb25kdWl0X2ZpbmRfdXNlcihuZGV2LCAwLCBwb3J0KTtcbi1cdGlmICghc2tiLVx1MDAzZWRldilcbitcdGlmICghc2tiLVx1MDAzZWRldikge1xuK1x0XHRrZnJlZV9za2Ioc2tiKTtcbiBcdFx0cmV0dXJuIE5VTEw7XG4rXHR9XG4gXG4gXHRyZXR1cm4gc2tiO1xuIH1cbmRpZmYgLS1naXQgYS9uZXQvZHNhL3RhZ19icmNtLmMgYi9uZXQvZHNhL3RhZ19icmNtLmNcbmluZGV4IGNmOTQyMDQzOTA1NDNmLi40MTFlM2I1N2QxNmFmNSAxMDA2NDRcbi0tLSBhL25ldC9kc2EvdGFnX2JyY20uY1xuKysrIGIvbmV0L2RzYS90YWdfYnJjbS5jXG5AQCAtMTAyLDkgKzEwMiw5IEBAIHN0YXRpYyBzdHJ1Y3Qgc2tfYnVmZiAqYnJjbV90YWdfeG1pdF9sbChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxuIFx0ICogKGluY2x1ZGluZyBGQ1MgYW5kIHRhZykgYmVjYXVzZSB0aGUgbGVuZ3RoIHZlcmlmaWNhdGlvbiBpcyBkb25lIGFmdGVyXG4gXHQgKiB0aGUgQnJvYWRjb20gdGFnIGlzIHN0cmlwcGVkIG9mZiB0aGUgaW5ncmVzcyBwYWNrZXQuXG4gXHQgKlxuLVx0ICogTGV0IGRzYV91c2VyX3htaXQoKSBmcmVlIHRoZSBTS0JcbitcdCAqIEZyZWUgdGhlIFNLQiBvbiBlcnJvci5cbiBcdCAqL1xuLVx0aWYgKF9fc2tiX3B1dF9wYWR0byhza2IsIEVUSF9aTEVOICsgQlJDTV9UQUdfTEVOLCBmYWxzZSkpXG4rXHRpZiAoc2tiX3B1dF9wYWR0byhza2IsIEVUSF9aTEVOICsgQlJDTV9UQUdfTEVOKSlcbiBcdFx0cmV0dXJuIE5VTEw7XG4gXG4gXHRza2JfcHVzaChza2IsIEJSQ01fVEFHX0xFTik7XG5AQCAtMTUxLDI3ICsxNTEsMzUgQEAgc3RhdGljIHN0cnVjdCBza19idWZmICpicmNtX3RhZ19yY3ZfbGwoc3RydWN0IHNrX2J1ZmYgKnNrYixcbiBcdGludCBzb3VyY2VfcG9ydDtcbiBcdHU4ICpicmNtX3RhZztcbiBcbi1cdGlmICh1bmxpa2VseSghcHNrYl9tYXlfcHVsbChza2IsIEJSQ01fVEFHX0xFTikpKVxuK1x0aWYgKHVubGlrZWx5KCFwc2tiX21heV9wdWxsKHNrYiwgQlJDTV9UQUdfTEVOKSkpIHtcbitcdFx0a2ZyZWVfc2tiKHNrYik7XG4gXHRcdHJldHVybiBOVUxMO1xuK1x0fVxuIFxuIFx0YnJjbV90YWcgPSBza2ItXHUwMDNlZGF0YSAtIG9mZnNldDtcbiBcbiBcdC8qIFRoZSBvcGNvZGUgc2hvdWxkIG5ldmVyIGJlIGRpZmZlcmVudCB0aGFuIDBiMDAwICovXG4tXHRpZiAodW5saWtlbHkoKGJyY21fdGFnWzBdIFx1MDAzZVx1MDAzZSBCUkNNX09QQ09ERV9TSElGVCkgXHUwMDI2IEJSQ01fT1BDT0RFX01BU0spKVxuK1x0aWYgKHVubGlrZWx5KChicmNtX3RhZ1swXSBcdTAwM2VcdTAwM2UgQlJDTV9PUENPREVfU0hJRlQpIFx1MDAyNiBCUkNNX09QQ09ERV9NQVNLKSkge1xuK1x0XHRrZnJlZV9za2Ioc2tiKTtcbiBcdFx0cmV0dXJuIE5VTEw7XG4rXHR9XG4gXG4gXHQvKiBXZSBzaG91bGQgbmV2ZXIgc2VlIGEgcmVzZXJ2ZWQgcmVhc29uIGNvZGUgd2l0aG91dCBrbm93aW5nIGhvdyB0b1xuIFx0ICogaGFuZGxlIGl0XG4gXHQgKi9cbi1cdGlmICh1bmxpa2VseShicmNtX3RhZ1syXSBcdTAwMjYgQlJDTV9FR19SQ19SU1ZEKSlcbitcdGlmICh1bmxpa2VseShicmNtX3RhZ1syXSBcdTAwMjYgQlJDTV9FR19SQ19SU1ZEKSkge1xuK1x0XHRrZnJlZV9za2Ioc2tiKTtcbiBcdFx0cmV0dXJuIE5VTEw7XG4rXHR9XG4gXG4gXHQvKiBMb2NhdGUgd2hpY2ggcG9ydCB0aGlzIGlzIGNvbWluZyBmcm9tICovXG4gXHRzb3VyY2VfcG9ydCA9IGJyY21fdGFnWzNdIFx1MDAyNiBCUkNNX0VHX1BJRF9NQVNLO1xuIFxuIFx0c2tiLVx1MDAzZWRldiA9IGRzYV9jb25kdWl0X2ZpbmRfdXNlcihkZXYsIDAsIHNvdXJjZV9wb3J0KTtcbi1cdGlmICghc2tiLVx1MDAzZWRldilcbitcdGlmICghc2tiLVx1MDAzZWRldikge1xuK1x0XHRrZnJlZV9za2Ioc2tiKTtcbiBcdFx0cmV0dXJuIE5VTEw7XG4rXHR9XG4gXG4gXHQvKiBSZW1vdmUgQnJvYWRjb20gdGFnIGFuZCB1cGRhdGUgY2hlY2tzdW0gKi9cbiBcdHNrYl9wdWxsX3Jjc3VtKHNrYiwgQlJDTV9UQUdfTEVOKTtcbkBAIC0yMjgsOCArMjM2LDEwIEBAIHN0YXRpYyBzdHJ1Y3Qgc2tfYnVmZiAqYnJjbV9sZWdfdGFnX3JjdihzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxuIFx0X19iZTE2ICpwcm90bztcbiBcdHU4ICpicmNtX3RhZztcbiBcbi1cdGlmICh1bmxpa2VseSghcHNrYl9tYXlfcHVsbChza2IsIEJSQ01fTEVHX1RBR19MRU4gKyBWTEFOX0hMRU4pKSlcbitcdGlmICh1bmxpa2VseSghcHNrYl9tYXlfcHVsbChza2IsIEJSQ01fTEVHX1RBR19MRU4gKyBWTEFOX0hMRU4pKSkge1xuK1x0XHRrZnJlZV9za2Ioc2tiKTtcbiBcdFx0cmV0dXJuIE5VTEw7XG4rXHR9XG4gXG4gXHRicmNtX3RhZyA9IGRzYV9ldHlwZV9oZWFkZXJfcG9zX3J4KHNrYik7XG4gXHRwcm90byA9IChfX2JlMTYgKikoYnJjbV90YWcgKyBCUkNNX0xFR19UQUdfTEVOKTtcbkBAIC0yMzcsOCArMjQ3LDEwIEBAIHN0YXRpYyBzdHJ1Y3Qgc2tfYnVmZiAqYnJjbV9sZWdfdGFnX3JjdihzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxuIFx0c291cmNlX3BvcnQgPSBicmNtX3RhZ1s1XSBcdTAwMjYgQlJDTV9MRUdfUE9SVF9JRDtcbiBcbiBcdHNrYi1cdTAwM2VkZXYgPSBkc2FfY29uZHVpdF9maW5kX3VzZXIoZGV2LCAwLCBzb3VyY2VfcG9ydCk7XG4tXHRpZiAoIXNrYi1cdTAwM2VkZXYpXG4rXHRpZiAoIXNrYi1cdTAwM2VkZXYpIHtcbitcdFx0a2ZyZWVfc2tiKHNrYik7XG4gXHRcdHJldHVybiBOVUxMO1xuK1x0fVxuIFxuIFx0LyogVGhlIGludGVybmFsIHN3aXRjaCBpbiBCQ002M1hYIFNvQ3MgYWx3YXlzIHRhZ3Mgb24gZWdyZXNzIG9uIHRoZSBDUFVcbiBcdCAqIHBvcnQuIFdlIHVzZSBWSUQgMCBpbnRlcm5hbGx5IGZvciB1bnRhZ2dlZCB0cmFmZmljLCBzbyBzdHJpcCB0aGUgdGFnXG5AQCAtMjczLDEwICsyODUsOCBAQCBzdGF0aWMgc3RydWN0IHNrX2J1ZmYgKmJyY21fbGVnX3RhZ194bWl0KHN0cnVjdCBza19idWZmICpza2IsXG4gXHQgKiBuZWVkIHRvIG1ha2Ugc3VyZSB0aGF0IHBhY2tldHMgYXJlIGF0IGxlYXN0IDcwIGJ5dGVzXG4gXHQgKiAoaW5jbHVkaW5nIEZDUyBhbmQgdGFnKSBiZWNhdXNlIHRoZSBsZW5ndGggdmVyaWZpY2F0aW9uIGlzIGRvbmUgYWZ0ZXJcbiBcdCAqIHRoZSBCcm9hZGNvbSB0YWcgaXMgc3RyaXBwZWQgb2ZmIHRoZSBpbmdyZXNzIHBhY2tldC5cbi1cdCAqXG4tXHQgKiBMZXQgZHNhX3VzZXJfeG1pdCgpIGZyZWUgdGhlIFNLQlxuIFx0ICovXG4tXHRpZiAoX19za2JfcHV0X3BhZHRvKHNrYiwgRVRIX1pMRU4gKyBCUkNNX0xFR19UQUdfTEVOLCBmYWxzZSkpXG4rXHRpZiAoc2tiX3B1dF9wYWR0byhza2IsIEVUSF9aTEVOICsgQlJDTV9MRUdfVEFHX0xFTikpXG4gXHRcdHJldHVybiBOVUxMO1xuIFxuIFx0c2tiX3B1c2goc2tiLCBCUkNNX0xFR19UQUdfTEVOKTtcbkBAIC0zMjUsMTAgKzMzNSw4IEBAIHN0YXRpYyBzdHJ1Y3Qgc2tfYnVmZiAqYnJjbV9sZWdfZmNzX3RhZ194bWl0KHN0cnVjdCBza19idWZmICpza2IsXG4gXHQgKiBuZWVkIHRvIG1ha2Ugc3VyZSB0aGF0IHBhY2tldHMgYXJlIGF0IGxlYXN0IDcwIGJ5dGVzIChpbmNsdWRpbmcgRkNTXG4gXHQgKiBhbmQgdGFnKSBiZWNhdXNlIHRoZSBsZW5ndGggdmVyaWZpY2F0aW9uIGlzIGRvbmUgYWZ0ZXIgdGhlIEJyb2FkY29tXG4gXHQgKiB0YWcgaXMgc3RyaXBwZWQgb2ZmIHRoZSBpbmdyZXNzIHBhY2tldC5cbi1cdCAqXG4tXHQgKiBMZXQgZHNhX3VzZXJfeG1pdCgpIGZyZWUgdGhlIFNLQi5cbiBcdCAqL1xuLVx0aWYgKF9fc2tiX3B1dF9wYWR0byhza2IsIEVUSF9aTEVOICsgQlJDTV9MRUdfVEFHX0xFTiwgZmFsc2UpKVxuK1x0aWYgKHNrYl9wdXRfcGFkdG8oc2tiLCBFVEhfWkxFTiArIEJSQ01fTEVHX1RBR19MRU4pKVxuIFx0XHRyZXR1cm4gTlVMTDtcbiBcbiBcdGZjc19sZW4gPSBza2ItXHUwMDNlbGVuO1xuQEAgLTM1MSw4ICszNTksOSBAQCBzdGF0aWMgc3RydWN0IHNrX2J1ZmYgKmJyY21fbGVnX2Zjc190YWdfeG1pdChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxuIFx0YnJjbV90YWdbNV0gPSBkcC1cdTAwM2VpbmRleCBcdTAwMjYgQlJDTV9MRUdfUE9SVF9JRDtcbiBcbiBcdC8qIE9yaWdpbmFsIEZDUyB2YWx1ZSAqL1xuLVx0aWYgKF9fc2tiX3BhZChza2IsIEVUSF9GQ1NfTEVOLCBmYWxzZSkpXG4rXHRpZiAoc2tiX3BhZChza2IsIEVUSF9GQ1NfTEVOKSlcbiBcdFx0cmV0dXJuIE5VTEw7XG4rXG4gXHRza2JfcHV0X2RhdGEoc2tiLCBcdTAwMjZmY3NfdmFsLCBFVEhfRkNTX0xFTik7XG4gXG4gXHRyZXR1cm4gc2tiO1xuZGlmZiAtLWdpdCBhL25ldC9kc2EvdGFnX2RzYS5jIGIvbmV0L2RzYS90YWdfZHNhLmNcbmluZGV4IDJhMmM0ZmI2MWE2NWM2Li5kNWZmZWUzNWZiYjUzYiAxMDA2NDRcbi0tLSBhL25ldC9kc2EvdGFnX2RzYS5jXG4rKysgYi9uZXQvZHNhL3RhZ19kc2EuY1xuQEAgLTIyNCw2ICsyMjQsNyBAQCBzdGF0aWMgc3RydWN0IHNrX2J1ZmYgKmRzYV9yY3ZfbGwoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IG5ldF9kZXZpY2UgKmRldixcbiBcdFx0XHQvKiBSZW1vdGUgbWFuYWdlbWVudCBpcyBub3QgaW1wbGVtZW50ZWQgeWV0LFxuIFx0XHRcdCAqIGRyb3AuXG4gXHRcdFx0ICovXG4rXHRcdFx0a2ZyZWVfc2tiKHNrYik7XG4gXHRcdFx0cmV0dXJuIE5VTEw7XG4gXHRcdGNhc2UgRFNBX0NPREVfQVJQX01JUlJPUjpcbiBcdFx0Y2FzZSBEU0FfQ09ERV9QT0xJQ1lfTUlSUk9SOlxuQEAgLTI0NCwxMiArMjQ1LDE0IEBAIHN0YXRpYyBzdHJ1Y3Qgc2tfYnVmZiAqZHNhX3Jjdl9sbChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxuIFx0XHRcdC8qIFJlc2VydmVkIGNvZGUsIHRoaXMgY291bGQgYmUgYW55dGhpbmcuIERyb3BcbiBcdFx0XHQgKiBzZWVtcyBsaWtlIHRoZSBzYWZlc3Qgb3B0aW9uLlxuIFx0XHRcdCAqL1xuK1x0XHRcdGtmcmVlX3NrYihza2IpO1xuIFx0XHRcdHJldHVybiBOVUxMO1xuIFx0XHR9XG4gXG4gXHRcdGJyZWFrO1xuIFxuIFx0ZGVmYXVsdDpcbitcdFx0a2ZyZWVfc2tiKHNrYik7XG4gXHRcdHJldHVybiBOVUxMO1xuIFx0fVxuIFxuQEAgLTI3MSw4ICsyNzQsMTAgQEAgc3RhdGljIHN0cnVjdCBza19idWZmICpkc2FfcmN2X2xsKHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXG4gXHRcdFx0XHRcdFx0IHNvdXJjZV9wb3J0KTtcbiBcdH1cbiBcbi1cdGlmICghc2tiLVx1MDAzZWRldilcbitcdGlmICghc2tiLVx1MDAzZWRldikge1xuK1x0XHRrZnJlZV9za2Ioc2tiKTtcbiBcdFx0cmV0dXJuIE5VTEw7XG4rXHR9XG4gXG4gXHQvKiBXaGVuIHVzaW5nIExBRyBvZmZsb2FkLCBza2ItXHUwMDNlZGV2IGlzIG5vdCBhIERTQSB1c2VyIGludGVyZmFjZSxcbiBcdCAqIHNvIHdlIGNhbm5vdCBjYWxsIGRzYV9kZWZhdWx0X29mZmxvYWRfZndkX21hcmsgYW5kIHdlIG5lZWQgdG9cbkBAIC0zMzUsOCArMzQwLDEwIEBAIHN0YXRpYyBzdHJ1Y3Qgc2tfYnVmZiAqZHNhX3htaXQoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IG5ldF9kZXZpY2UgKmRldilcbiBcbiBzdGF0aWMgc3RydWN0IHNrX2J1ZmYgKmRzYV9yY3Yoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IG5ldF9kZXZpY2UgKmRldilcbiB7XG4tXHRpZiAodW5saWtlbHkoIXBza2JfbWF5X3B1bGwoc2tiLCBEU0FfSExFTikpKVxuK1x0aWYgKHVubGlrZWx5KCFwc2tiX21heV9wdWxsKHNrYiwgRFNBX0hMRU4pKSkge1xuK1x0XHRrZnJlZV9za2Ioc2tiKTtcbiBcdFx0cmV0dXJuIE5VTEw7XG4rXHR9XG4gXG4gXHRyZXR1cm4gZHNhX3Jjdl9sbChza2IsIGRldiwgMCk7XG4gfVxuQEAgLTM3NSw4ICszODIsMTAgQEAgc3RhdGljIHN0cnVjdCBza19idWZmICplZHNhX3htaXQoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IG5ldF9kZXZpY2UgKmRldilcbiBcbiBzdGF0aWMgc3RydWN0IHNrX2J1ZmYgKmVkc2FfcmN2KHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXG4ge1xuLVx0aWYgKHVubGlrZWx5KCFwc2tiX21heV9wdWxsKHNrYiwgRURTQV9ITEVOKSkpXG4rXHRpZiAodW5saWtlbHkoIXBza2JfbWF5X3B1bGwoc2tiLCBFRFNBX0hMRU4pKSkge1xuK1x0XHRrZnJlZV9za2Ioc2tiKTtcbiBcdFx0cmV0dXJuIE5VTEw7XG4rXHR9XG4gXG4gXHRza2JfcHVsbF9yY3N1bShza2IsIEVEU0FfSExFTiAtIERTQV9ITEVOKTtcbiBcbmRpZmYgLS1naXQgYS9uZXQvZHNhL3RhZ19nc3dpcC5jIGIvbmV0L2RzYS90YWdfZ3N3aXAuY1xuaW5kZXggNWZhNDM2MTIxMDg3YjQuLjVjNDA3ZDQ0OGM5ZmVlIDEwMDY0NFxuLS0tIGEvbmV0L2RzYS90YWdfZ3N3aXAuY1xuKysrIGIvbmV0L2RzYS90YWdfZ3N3aXAuY1xuQEAgLTgwLDE2ICs4MCwyMCBAQCBzdGF0aWMgc3RydWN0IHNrX2J1ZmYgKmdzd2lwX3RhZ19yY3Yoc3RydWN0IHNrX2J1ZmYgKnNrYixcbiBcdGludCBwb3J0O1xuIFx0dTggKmdzd2lwX3RhZztcbiBcbi1cdGlmICh1bmxpa2VseSghcHNrYl9tYXlfcHVsbChza2IsIEdTV0lQX1JYX0hFQURFUl9MRU4pKSlcbitcdGlmICh1bmxpa2VseSghcHNrYl9tYXlfcHVsbChza2IsIEdTV0lQX1JYX0hFQURFUl9MRU4pKSkge1xuK1x0XHRrZnJlZV9za2Ioc2tiKTtcbiBcdFx0cmV0dXJuIE5VTEw7XG4rXHR9XG4gXG4gXHRnc3dpcF90YWcgPSBza2ItXHUwMDNlZGF0YSAtIEVUSF9ITEVOO1xuIFxuIFx0LyogR2V0IHNvdXJjZSBwb3J0IGluZm9ybWF0aW9uICovXG4gXHRwb3J0ID0gKGdzd2lwX3RhZ1s3XSBcdTAwMjYgR1NXSVBfUlhfU1BQSURfTUFTSykgXHUwMDNlXHUwMDNlIEdTV0lQX1JYX1NQUElEX1NISUZUO1xuIFx0c2tiLVx1MDAzZWRldiA9IGRzYV9jb25kdWl0X2ZpbmRfdXNlcihkZXYsIDAsIHBvcnQpO1xuLVx0aWYgKCFza2ItXHUwMDNlZGV2KVxuK1x0aWYgKCFza2ItXHUwMDNlZGV2KSB7XG4rXHRcdGtmcmVlX3NrYihza2IpO1xuIFx0XHRyZXR1cm4gTlVMTDtcbitcdH1cbiBcbiBcdC8qIHJlbW92ZSBHU1dJUCB0YWcgKi9cbiBcdHNrYl9wdWxsX3Jjc3VtKHNrYiwgR1NXSVBfUlhfSEVBREVSX0xFTik7XG5kaWZmIC0tZ2l0IGEvbmV0L2RzYS90YWdfaGVsbGNyZWVrLmMgYi9uZXQvZHNhL3RhZ19oZWxsY3JlZWsuY1xuaW5kZXggNTQ0YWIxNTY4NWEyYjguLmRkOWYzMjhmMzE4MjEwIDEwMDY0NFxuLS0tIGEvbmV0L2RzYS90YWdfaGVsbGNyZWVrLmNcbisrKyBiL25ldC9kc2EvdGFnX2hlbGxjcmVlay5jXG5AQCAtMjcsOCArMjcsMTAgQEAgc3RhdGljIHN0cnVjdCBza19idWZmICpoZWxsY3JlZWtfeG1pdChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxuIFx0ICogY2hlY2tzdW1zIGFmdGVyIHRoZSBzd2l0Y2ggc3RyaXBzIHRoZSB0YWcuXG4gXHQgKi9cbiBcdGlmIChza2ItXHUwMDNlaXBfc3VtbWVkID09IENIRUNLU1VNX1BBUlRJQUwgXHUwMDI2XHUwMDI2XG4tXHQgICAgc2tiX2NoZWNrc3VtX2hlbHAoc2tiKSlcbitcdCAgICBza2JfY2hlY2tzdW1faGVscChza2IpKSB7XG4rXHRcdGtmcmVlX3NrYihza2IpO1xuIFx0XHRyZXR1cm4gTlVMTDtcbitcdH1cbiBcbiBcdC8qIFRhZyBlbmNvZGluZyAqL1xuIFx0dGFnICA9IHNrYl9wdXQoc2tiLCBIRUxMQ1JFRUtfVEFHX0xFTik7XG5AQCAtNDcsMTEgKzQ5LDE0IEBAIHN0YXRpYyBzdHJ1Y3Qgc2tfYnVmZiAqaGVsbGNyZWVrX3JjdihzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxuIFx0c2tiLVx1MDAzZWRldiA9IGRzYV9jb25kdWl0X2ZpbmRfdXNlcihkZXYsIDAsIHBvcnQpO1xuIFx0aWYgKCFza2ItXHUwMDNlZGV2KSB7XG4gXHRcdG5ldGRldl93YXJuX29uY2UoZGV2LCBcIkZhaWxlZCB0byBnZXQgc291cmNlIHBvcnQ6ICVkXFxuXCIsIHBvcnQpO1xuK1x0XHRrZnJlZV9za2Ioc2tiKTtcbiBcdFx0cmV0dXJuIE5VTEw7XG4gXHR9XG4gXG4tXHRpZiAocHNrYl90cmltX3Jjc3VtKHNrYiwgc2tiLVx1MDAzZWxlbiAtIEhFTExDUkVFS19UQUdfTEVOKSlcbitcdGlmIChwc2tiX3RyaW1fcmNzdW0oc2tiLCBza2ItXHUwMDNlbGVuIC0gSEVMTENSRUVLX1RBR19MRU4pKSB7XG4rXHRcdGtmcmVlX3NrYihza2IpO1xuIFx0XHRyZXR1cm4gTlVMTDtcbitcdH1cbiBcbiBcdGRzYV9kZWZhdWx0X29mZmxvYWRfZndkX21hcmsoc2tiKTtcbiBcbmRpZmYgLS1naXQgYS9uZXQvZHNhL3RhZ19rc3ouYyBiL25ldC9kc2EvdGFnX2tzei5jXG5pbmRleCBkMjQ3NWMzYmJiN2QyMi4uNjdmYTg5ZjEwMmUwNzAgMTAwNjQ0XG4tLS0gYS9uZXQvZHNhL3RhZ19rc3ouY1xuKysrIGIvbmV0L2RzYS90YWdfa3N6LmNcbkBAIC04OCwxMSArODgsMTUgQEAgc3RhdGljIHN0cnVjdCBza19idWZmICprc3pfY29tbW9uX3JjdihzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxuIFx0XHRcdFx0ICAgICAgdW5zaWduZWQgaW50IHBvcnQsIHVuc2lnbmVkIGludCBsZW4pXG4ge1xuIFx0c2tiLVx1MDAzZWRldiA9IGRzYV9jb25kdWl0X2ZpbmRfdXNlcihkZXYsIDAsIHBvcnQpO1xuLVx0aWYgKCFza2ItXHUwMDNlZGV2KVxuK1x0aWYgKCFza2ItXHUwMDNlZGV2KSB7XG4rXHRcdGtmcmVlX3NrYihza2IpO1xuIFx0XHRyZXR1cm4gTlVMTDtcbitcdH1cbiBcbi1cdGlmIChwc2tiX3RyaW1fcmNzdW0oc2tiLCBza2ItXHUwMDNlbGVuIC0gbGVuKSlcbitcdGlmIChwc2tiX3RyaW1fcmNzdW0oc2tiLCBza2ItXHUwMDNlbGVuIC0gbGVuKSkge1xuK1x0XHRrZnJlZV9za2Ioc2tiKTtcbiBcdFx0cmV0dXJuIE5VTEw7XG4rXHR9XG4gXG4gXHRkc2FfZGVmYXVsdF9vZmZsb2FkX2Z3ZF9tYXJrKHNrYik7XG4gXG5AQCAtMTIzLDggKzEyNywxMCBAQCBzdGF0aWMgc3RydWN0IHNrX2J1ZmYgKmtzejg3OTVfeG1pdChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxuIFx0c3RydWN0IGV0aGhkciAqaGRyO1xuIFx0dTggKnRhZztcbiBcbi1cdGlmIChza2ItXHUwMDNlaXBfc3VtbWVkID09IENIRUNLU1VNX1BBUlRJQUwgXHUwMDI2XHUwMDI2IHNrYl9jaGVja3N1bV9oZWxwKHNrYikpXG4rXHRpZiAoc2tiLVx1MDAzZWlwX3N1bW1lZCA9PSBDSEVDS1NVTV9QQVJUSUFMIFx1MDAyNlx1MDAyNiBza2JfY2hlY2tzdW1faGVscChza2IpKSB7XG4rXHRcdGtmcmVlX3NrYihza2IpO1xuIFx0XHRyZXR1cm4gTlVMTDtcbitcdH1cbiBcbiBcdC8qIFRhZyBlbmNvZGluZyAqL1xuIFx0dGFnID0gc2tiX3B1dChza2IsIEtTWl9JTkdSRVNTX1RBR19MRU4pO1xuQEAgLTE0MSw4ICsxNDcsMTAgQEAgc3RhdGljIHN0cnVjdCBza19idWZmICprc3o4Nzk1X3JjdihzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxuIHtcbiBcdHU4ICp0YWc7XG4gXG4tXHRpZiAoc2tiX2xpbmVhcml6ZShza2IpKVxuK1x0aWYgKHNrYl9saW5lYXJpemUoc2tiKSkge1xuK1x0XHRrZnJlZV9za2Ioc2tiKTtcbiBcdFx0cmV0dXJuIE5VTEw7XG4rXHR9XG4gXG4gXHR0YWcgPSBza2JfdGFpbF9wb2ludGVyKHNrYikgLSBLU1pfRUdSRVNTX1RBR19MRU47XG4gXG5AQCAtMjU1LDIyICsyNjMsMjQgQEAgc3RhdGljIHN0cnVjdCBza19idWZmICprc3pfZGVmZXJfeG1pdChzdHJ1Y3QgZHNhX3BvcnQgKmRwLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxuIFx0eG1pdF93b3JrX2ZuID0gdGFnZ2VyX2RhdGEtXHUwMDNleG1pdF93b3JrX2ZuO1xuIFx0eG1pdF93b3JrZXIgPSBwcml2LVx1MDAzZXhtaXRfd29ya2VyO1xuIFxuLVx0aWYgKCF4bWl0X3dvcmtfZm4gfHwgIXhtaXRfd29ya2VyKVxuK1x0aWYgKCF4bWl0X3dvcmtfZm4gfHwgIXhtaXRfd29ya2VyKSB7XG4rXHRcdGtmcmVlX3NrYihza2IpO1xuIFx0XHRyZXR1cm4gTlVMTDtcbitcdH1cbiBcbiBcdHhtaXRfd29yayA9IGt6YWxsb2Nfb2JqKCp4bWl0X3dvcmssIEdGUF9BVE9NSUMpO1xuLVx0aWYgKCF4bWl0X3dvcmspXG4rXHRpZiAoIXhtaXRfd29yaykge1xuK1x0XHRrZnJlZV9za2Ioc2tiKTtcbiBcdFx0cmV0dXJuIE5VTEw7XG4rXHR9XG4gXG4gXHRrdGhyZWFkX2luaXRfd29yayhcdTAwMjZ4bWl0X3dvcmstXHUwMDNld29yaywgeG1pdF93b3JrX2ZuKTtcbi1cdC8qIEluY3JlYXNlIHJlZmNvdW50IHNvIHRoZSBrZnJlZV9za2IgaW4gZHNhX3VzZXJfeG1pdFxuLVx0ICogd29uJ3QgcmVhbGx5IGZyZWUgdGhlIHBhY2tldC5cbi1cdCAqL1xuIFx0eG1pdF93b3JrLVx1MDAzZWRwID0gZHA7XG4gXHR4bWl0X3dvcmstXHUwMDNlc2tiID0gc2tiX2dldChza2IpO1xuIFxuIFx0a3RocmVhZF9xdWV1ZV93b3JrKHhtaXRfd29ya2VyLCBcdTAwMjZ4bWl0X3dvcmstXHUwMDNld29yayk7XG4gXG4rXHRrZnJlZV9za2Ioc2tiKTtcbiBcdHJldHVybiBOVUxMO1xuIH1cbiBcbkBAIC0yODQsOCArMjk0LDEwIEBAIHN0YXRpYyBzdHJ1Y3Qgc2tfYnVmZiAqa3N6OTQ3N194bWl0KHN0cnVjdCBza19idWZmICpza2IsXG4gXHRfX2JlMTYgKnRhZztcbiBcdHUxNiB2YWw7XG4gXG4tXHRpZiAoc2tiLVx1MDAzZWlwX3N1bW1lZCA9PSBDSEVDS1NVTV9QQVJUSUFMIFx1MDAyNlx1MDAyNiBza2JfY2hlY2tzdW1faGVscChza2IpKVxuK1x0aWYgKHNrYi1cdTAwM2VpcF9zdW1tZWQgPT0gQ0hFQ0tTVU1fUEFSVElBTCBcdTAwMjZcdTAwMjYgc2tiX2NoZWNrc3VtX2hlbHAoc2tiKSkge1xuK1x0XHRrZnJlZV9za2Ioc2tiKTtcbiBcdFx0cmV0dXJuIE5VTEw7XG4rXHR9XG4gXG4gXHQvKiBUYWcgZW5jb2RpbmcgKi9cbiBcdGtzel94bWl0X3RpbWVzdGFtcChkcCwgc2tiKTtcbkBAIC0zMTAsOCArMzIyLDEwIEBAIHN0YXRpYyBzdHJ1Y3Qgc2tfYnVmZiAqa3N6OTQ3N19yY3Yoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IG5ldF9kZXZpY2UgKmRldilcbiBcdHVuc2lnbmVkIGludCBwb3J0O1xuIFx0dTggKnRhZztcbiBcbi1cdGlmIChza2JfbGluZWFyaXplKHNrYikpXG4rXHRpZiAoc2tiX2xpbmVhcml6ZShza2IpKSB7XG4rXHRcdGtmcmVlX3NrYihza2IpO1xuIFx0XHRyZXR1cm4gTlVMTDtcbitcdH1cbiBcbiBcdC8qIFRhZyBkZWNvZGluZyAqL1xuIFx0dGFnID0gc2tiX3RhaWxfcG9pbnRlcihza2IpIC0gS1NaX0VHUkVTU19UQUdfTEVOO1xuQEAgLTM1Miw4ICszNjYsMTAgQEAgc3RhdGljIHN0cnVjdCBza19idWZmICprc3o5ODkzX3htaXQoc3RydWN0IHNrX2J1ZmYgKnNrYixcbiBcdHN0cnVjdCBldGhoZHIgKmhkcjtcbiBcdHU4ICp0YWc7XG4gXG4tXHRpZiAoc2tiLVx1MDAzZWlwX3N1bW1lZCA9PSBDSEVDS1NVTV9QQVJUSUFMIFx1MDAyNlx1MDAyNiBza2JfY2hlY2tzdW1faGVscChza2IpKVxuK1x0aWYgKHNrYi1cdTAwM2VpcF9zdW1tZWQgPT0gQ0hFQ0tTVU1fUEFSVElBTCBcdTAwMjZcdTAwMjYgc2tiX2NoZWNrc3VtX2hlbHAoc2tiKSkge1xuK1x0XHRrZnJlZV9za2Ioc2tiKTtcbiBcdFx0cmV0dXJuIE5VTEw7XG4rXHR9XG4gXG4gXHQvKiBUYWcgZW5jb2RpbmcgKi9cbiBcdGtzel94bWl0X3RpbWVzdGFtcChkcCwgc2tiKTtcbkBAIC00MTgsOCArNDM0LDEwIEBAIHN0YXRpYyBzdHJ1Y3Qgc2tfYnVmZiAqbGFuOTM3eF94bWl0KHN0cnVjdCBza19idWZmICpza2IsXG4gXHRfX2JlMTYgKnRhZztcbiBcdHUxNiB2YWw7XG4gXG4tXHRpZiAoc2tiLVx1MDAzZWlwX3N1bW1lZCA9PSBDSEVDS1NVTV9QQVJUSUFMIFx1MDAyNlx1MDAyNiBza2JfY2hlY2tzdW1faGVscChza2IpKVxuK1x0aWYgKHNrYi1cdTAwM2VpcF9zdW1tZWQgPT0gQ0hFQ0tTVU1fUEFSVElBTCBcdTAwMjZcdTAwMjYgc2tiX2NoZWNrc3VtX2hlbHAoc2tiKSkge1xuK1x0XHRrZnJlZV9za2Ioc2tiKTtcbiBcdFx0cmV0dXJuIE5VTEw7XG4rXHR9XG4gXG4gXHRrc3pfeG1pdF90aW1lc3RhbXAoZHAsIHNrYik7XG4gXG5kaWZmIC0tZ2l0IGEvbmV0L2RzYS90YWdfbGFuOTMwMy5jIGIvbmV0L2RzYS90YWdfbGFuOTMwMy5jXG5pbmRleCAyNThlNWQ3ZGM1ZWY4NC4uZDExOTQ2OTY0OTlhYjggMTAwNjQ0XG4tLS0gYS9uZXQvZHNhL3RhZ19sYW45MzAzLmNcbisrKyBiL25ldC9kc2EvdGFnX2xhbjkzMDMuY1xuQEAgLTg1LDYgKzg1LDcgQEAgc3RhdGljIHN0cnVjdCBza19idWZmICpsYW45MzAzX3JjdihzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxuIFx0aWYgKHVubGlrZWx5KCFwc2tiX21heV9wdWxsKHNrYiwgTEFOOTMwM19UQUdfTEVOKSkpIHtcbiBcdFx0ZGV2X3dhcm5fcmF0ZWxpbWl0ZWQoXHUwMDI2ZGV2LVx1MDAzZWRldixcbiBcdFx0XHRcdCAgICAgXCJEcm9wcGluZyBwYWNrZXQsIGNhbm5vdCBwdWxsXFxuXCIpO1xuK1x0XHRrZnJlZV9za2Ioc2tiKTtcbiBcdFx0cmV0dXJuIE5VTEw7XG4gXHR9XG4gXG5AQCAtMTAyLDYgKzEwMyw3IEBAIHN0YXRpYyBzdHJ1Y3Qgc2tfYnVmZiAqbGFuOTMwM19yY3Yoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IG5ldF9kZXZpY2UgKmRldilcbiBcdHNrYi1cdTAwM2VkZXYgPSBkc2FfY29uZHVpdF9maW5kX3VzZXIoZGV2LCAwLCBzb3VyY2VfcG9ydCk7XG4gXHRpZiAoIXNrYi1cdTAwM2VkZXYpIHtcbiBcdFx0ZGV2X3dhcm5fcmF0ZWxpbWl0ZWQoXHUwMDI2ZGV2LVx1MDAzZWRldiwgXCJEcm9wcGluZyBwYWNrZXQgZHVlIHRvIGludmFsaWQgc291cmNlIHBvcnRcXG5cIik7XG4rXHRcdGtmcmVlX3NrYihza2IpO1xuIFx0XHRyZXR1cm4gTlVMTDtcbiBcdH1cbiBcbmRpZmYgLS1naXQgYS9uZXQvZHNhL3RhZ19tdGsuYyBiL25ldC9kc2EvdGFnX210ay5jXG5pbmRleCBkZWEzZWVjYWYwOTNkZi4uYzdkYzc3MzE2NzVlYzAgMTAwNjQ0XG4tLS0gYS9uZXQvZHNhL3RhZ19tdGsuY1xuKysrIGIvbmV0L2RzYS90YWdfbXRrLmNcbkBAIC03Miw4ICs3MiwxMCBAQCBzdGF0aWMgc3RydWN0IHNrX2J1ZmYgKm10a190YWdfcmN2KHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXG4gXHRpbnQgcG9ydDtcbiBcdF9fYmUxNiAqcGhkcjtcbiBcbi1cdGlmICh1bmxpa2VseSghcHNrYl9tYXlfcHVsbChza2IsIE1US19IRFJfTEVOKSkpXG4rXHRpZiAodW5saWtlbHkoIXBza2JfbWF5X3B1bGwoc2tiLCBNVEtfSERSX0xFTikpKSB7XG4rXHRcdGtmcmVlX3NrYihza2IpO1xuIFx0XHRyZXR1cm4gTlVMTDtcbitcdH1cbiBcbiBcdHBoZHIgPSBkc2FfZXR5cGVfaGVhZGVyX3Bvc19yeChza2IpO1xuIFx0aGRyID0gbnRvaHMoKnBoZHIpO1xuQEAgLTg3LDggKzg5LDEwIEBAIHN0YXRpYyBzdHJ1Y3Qgc2tfYnVmZiAqbXRrX3RhZ19yY3Yoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IG5ldF9kZXZpY2UgKmRldilcbiBcdHBvcnQgPSAoaGRyIFx1MDAyNiBNVEtfSERSX1JFQ1ZfU09VUkNFX1BPUlRfTUFTSyk7XG4gXG4gXHRza2ItXHUwMDNlZGV2ID0gZHNhX2NvbmR1aXRfZmluZF91c2VyKGRldiwgMCwgcG9ydCk7XG4tXHRpZiAoIXNrYi1cdTAwM2VkZXYpXG4rXHRpZiAoIXNrYi1cdTAwM2VkZXYpIHtcbitcdFx0a2ZyZWVfc2tiKHNrYik7XG4gXHRcdHJldHVybiBOVUxMO1xuK1x0fVxuIFxuIFx0ZHNhX2RlZmF1bHRfb2ZmbG9hZF9md2RfbWFyayhza2IpO1xuIFxuZGlmZiAtLWdpdCBhL25ldC9kc2EvdGFnX214bC1nc3cxeHguYyBiL25ldC9kc2EvdGFnX214bC1nc3cxeHguY1xuaW5kZXggNjBmN2M0NDVlNjU2MTAuLjRiMWI2ZWY5NDE5NjM0IDEwMDY0NFxuLS0tIGEvbmV0L2RzYS90YWdfbXhsLWdzdzF4eC5jXG4rKysgYi9uZXQvZHNhL3RhZ19teGwtZ3N3MXh4LmNcbkBAIC03Myw2ICs3Myw3IEBAIHN0YXRpYyBzdHJ1Y3Qgc2tfYnVmZiAqZ3N3MXh4X3RhZ19yY3Yoc3RydWN0IHNrX2J1ZmYgKnNrYixcbiBcbiBcdGlmICh1bmxpa2VseSghcHNrYl9tYXlfcHVsbChza2IsIEdTVzFYWF9IRUFERVJfTEVOKSkpIHtcbiBcdFx0ZGV2X3dhcm5fcmF0ZWxpbWl0ZWQoXHUwMDI2ZGV2LVx1MDAzZWRldiwgXCJEcm9wcGluZyBwYWNrZXQsIGNhbm5vdCBwdWxsIFNLQlxcblwiKTtcbitcdFx0a2ZyZWVfc2tiKHNrYik7XG4gXHRcdHJldHVybiBOVUxMO1xuIFx0fVxuIFxuQEAgLTgxLDYgKzgyLDcgQEAgc3RhdGljIHN0cnVjdCBza19idWZmICpnc3cxeHhfdGFnX3JjdihzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxuIFx0aWYgKHVubGlrZWx5KG50b2hzKGdzdzF4eF90YWdbMF0pICE9IEVUSF9QX01YTEdTVykpIHtcbiBcdFx0ZGV2X3dhcm5fcmF0ZWxpbWl0ZWQoXHUwMDI2ZGV2LVx1MDAzZWRldiwgXCJEcm9wcGluZyBwYWNrZXQgZHVlIHRvIGludmFsaWQgc3BlY2lhbCB0YWdcXG5cIik7XG4gXHRcdGRldl93YXJuX3JhdGVsaW1pdGVkKFx1MDAyNmRldi1cdTAwM2VkZXYsIFwiVGFnOiAlOHBoXFxuXCIsIGdzdzF4eF90YWcpO1xuK1x0XHRrZnJlZV9za2Ioc2tiKTtcbiBcdFx0cmV0dXJuIE5VTEw7XG4gXHR9XG4gXG5AQCAtOTAsNiArOTIsNyBAQCBzdGF0aWMgc3RydWN0IHNrX2J1ZmYgKmdzdzF4eF90YWdfcmN2KHN0cnVjdCBza19idWZmICpza2IsXG4gXHRpZiAoIXNrYi1cdTAwM2VkZXYpIHtcbiBcdFx0ZGV2X3dhcm5fcmF0ZWxpbWl0ZWQoXHUwMDI2ZGV2LVx1MDAzZWRldiwgXCJEcm9wcGluZyBwYWNrZXQgZHVlIHRvIGludmFsaWQgc291cmNlIHBvcnRcXG5cIik7XG4gXHRcdGRldl93YXJuX3JhdGVsaW1pdGVkKFx1MDAyNmRldi1cdTAwM2VkZXYsIFwiVGFnOiAlOHBoXFxuXCIsIGdzdzF4eF90YWcpO1xuK1x0XHRrZnJlZV9za2Ioc2tiKTtcbiBcdFx0cmV0dXJuIE5VTEw7XG4gXHR9XG4gXG5kaWZmIC0tZ2l0IGEvbmV0L2RzYS90YWdfbXhsODYyeHguYyBiL25ldC9kc2EvdGFnX214bDg2Mnh4LmNcbmluZGV4IDhkYWVmZWI4ZDQ5ZGZhLi44N2I4MGRkZjA5NDYzMiAxMDA2NDRcbi0tLSBhL25ldC9kc2EvdGFnX214bDg2Mnh4LmNcbisrKyBiL25ldC9kc2EvdGFnX214bDg2Mnh4LmNcbkBAIC02NCw2ICs2NCw3IEBAIHN0YXRpYyBzdHJ1Y3Qgc2tfYnVmZiAqbXhsODYyX3RhZ19yY3Yoc3RydWN0IHNrX2J1ZmYgKnNrYixcbiBcbiBcdGlmICh1bmxpa2VseSghcHNrYl9tYXlfcHVsbChza2IsIE1YTDg2Ml9IRUFERVJfTEVOKSkpIHtcbiBcdFx0ZGV2X3dhcm5fcmF0ZWxpbWl0ZWQoXHUwMDI2ZGV2LVx1MDAzZWRldiwgXCJDYW5ub3QgcHVsbCBTS0IsIHBhY2tldCBkcm9wcGVkXFxuXCIpO1xuK1x0XHRrZnJlZV9za2Ioc2tiKTtcbiBcdFx0cmV0dXJuIE5VTEw7XG4gXHR9XG4gXG5AQCAtNzMsNiArNzQsNyBAQCBzdGF0aWMgc3RydWN0IHNrX2J1ZmYgKm14bDg2Ml90YWdfcmN2KHN0cnVjdCBza19idWZmICpza2IsXG4gXHRcdGRldl93YXJuX3JhdGVsaW1pdGVkKFx1MDAyNmRldi1cdTAwM2VkZXYsXG4gXHRcdFx0XHQgICAgIFwiSW52YWxpZCBzcGVjaWFsIHRhZyBtYXJrZXIsIHBhY2tldCBkcm9wcGVkLCB0YWc6ICU4cGhcXG5cIixcbiBcdFx0XHRcdCAgICAgbXhsODYyX3RhZyk7XG4rXHRcdGtmcmVlX3NrYihza2IpO1xuIFx0XHRyZXR1cm4gTlVMTDtcbiBcdH1cbiBcbkBAIC04Myw2ICs4NSw3IEBAIHN0YXRpYyBzdHJ1Y3Qgc2tfYnVmZiAqbXhsODYyX3RhZ19yY3Yoc3RydWN0IHNrX2J1ZmYgKnNrYixcbiBcdFx0ZGV2X3dhcm5fcmF0ZWxpbWl0ZWQoXHUwMDI2ZGV2LVx1MDAzZWRldixcbiBcdFx0XHRcdCAgICAgXCJJbnZhbGlkIHNvdXJjZSBwb3J0LCBwYWNrZXQgZHJvcHBlZCwgdGFnOiAlOHBoXFxuXCIsXG4gXHRcdFx0XHQgICAgIG14bDg2Ml90YWcpO1xuK1x0XHRrZnJlZV9za2Ioc2tiKTtcbiBcdFx0cmV0dXJuIE5VTEw7XG4gXHR9XG4gXG5kaWZmIC0tZ2l0IGEvbmV0L2RzYS90YWdfbmV0Yy5jIGIvbmV0L2RzYS90YWdfbmV0Yy5jXG5pbmRleCBjY2VkZmUzYTgwYjY0ZC4uZGY3MmE2MTc5NmFkNWYgMTAwNjQ0XG4tLS0gYS9uZXQvZHNhL3RhZ19uZXRjLmNcbisrKyBiL25ldC9kc2EvdGFnX25ldGMuY1xuQEAgLTEzMSwxNCArMTMxLDEzIEBAIHN0YXRpYyBzdHJ1Y3Qgc2tfYnVmZiAqbmV0Y19yY3Yoc3RydWN0IHNrX2J1ZmYgKnNrYixcbiBcdGludCB0eXBlLCBzdWJ0eXBlO1xuIFxuIFx0aWYgKHVubGlrZWx5KCFwc2tiX21heV9wdWxsKHNrYiwgTkVUQ19UQUdfTUFYX0xFTikpKVxuLVx0XHRyZXR1cm4gTlVMTDtcbitcdFx0Z290byBlcnJfZnJlZV9za2I7XG4gXG4gXHR0YWdfY21uID0gZHNhX2V0eXBlX2hlYWRlcl9wb3Nfcngoc2tiKTtcbiBcdGlmIChudG9ocyh0YWdfY21uLVx1MDAzZXRwaWQpICE9IEVUSF9QX05YUF9ORVRDKSB7XG4gXHRcdGRldl93YXJuX3JhdGVsaW1pdGVkKFx1MDAyNm5kZXYtXHUwMDNlZGV2LCBcIlVua25vd24gVFBJRCAweCUwNHhcXG5cIixcbiBcdFx0XHRcdCAgICAgbnRvaHModGFnX2Ntbi1cdTAwM2V0cGlkKSk7XG4tXG4tXHRcdHJldHVybiBOVUxMO1xuK1x0XHRnb3RvIGVycl9mcmVlX3NrYjtcbiBcdH1cbiBcbiBcdGlmICh0YWdfY21uLVx1MDAzZXFvcyBcdTAwMjYgTkVUQ19UQUdfUVYpXG5AQCAtMTQ5LDE0ICsxNDgsMTMgQEAgc3RhdGljIHN0cnVjdCBza19idWZmICpuZXRjX3JjdihzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxuIFx0aWYgKCFzd19pZCkge1xuIFx0XHRkZXZfd2Fybl9yYXRlbGltaXRlZChcdTAwMjZuZGV2LVx1MDAzZWRldixcbiBcdFx0XHRcdCAgICAgXCJWRVBBIHN3aXRjaCBJRCBpcyBub3Qgc3VwcG9ydGVkIHlldFxcblwiKTtcbi1cbi1cdFx0cmV0dXJuIE5VTEw7XG4rXHRcdGdvdG8gZXJyX2ZyZWVfc2tiO1xuIFx0fVxuIFxuIFx0cG9ydCA9IEZJRUxEX0dFVChORVRDX1RBR19QT1JULCB0YWdfY21uLVx1MDAzZXN3aXRjaF9wb3J0KTtcbiBcdHNrYi1cdTAwM2VkZXYgPSBkc2FfY29uZHVpdF9maW5kX3VzZXIobmRldiwgc3dfaWQsIHBvcnQpO1xuIFx0aWYgKCFza2ItXHUwMDNlZGV2KVxuLVx0XHRyZXR1cm4gTlVMTDtcbitcdFx0Z290byBlcnJfZnJlZV9za2I7XG4gXG4gXHR0eXBlID0gRklFTERfR0VUKE5FVENfVEFHX1RZUEUsIHRhZ19jbW4tXHUwMDNldHlwZSk7XG4gXHRzdWJ0eXBlID0gRklFTERfR0VUKE5FVENfVEFHX1NVQlRZUEUsIHRhZ19jbW4tXHUwMDNldHlwZSk7XG5AQCAtMTY1LDExICsxNjMsMTEgQEAgc3RhdGljIHN0cnVjdCBza19idWZmICpuZXRjX3JjdihzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxuIFx0fSBlbHNlIGlmICh0eXBlID09IE5FVENfVEFHX1RPX0hPU1QpIHtcbiBcdFx0LyogQ3VycmVudGx5IG9ubHkgc3VidHlwZTAgc3VwcG9ydGVkICovXG4gXHRcdGlmIChzdWJ0eXBlICE9IE5FVENfVEFHX1RIX1NVQlRZUEUwKVxuLVx0XHRcdHJldHVybiBOVUxMO1xuK1x0XHRcdGdvdG8gZXJyX2ZyZWVfc2tiO1xuIFx0fSBlbHNlIHtcbiBcdFx0ZGV2X3dhcm5fcmF0ZWxpbWl0ZWQoXHUwMDI2bmRldi1cdTAwM2VkZXYsXG4gXHRcdFx0XHQgICAgIFwiVW5leHBlY3RlZCAgdGFnIHR5cGUgJWRcXG5cIiwgdHlwZSk7XG4tXHRcdHJldHVybiBOVUxMO1xuK1x0XHRnb3RvIGVycl9mcmVlX3NrYjtcbiBcdH1cbiBcbiBcdC8qIFJlbW92ZSBTd2l0Y2ggdGFnIGZyb20gdGhlIGZyYW1lICovXG5AQCAtMTc4LDYgKzE3NiwxMCBAQCBzdGF0aWMgc3RydWN0IHNrX2J1ZmYgKm5ldGNfcmN2KHN0cnVjdCBza19idWZmICpza2IsXG4gXHRkc2Ffc3RyaXBfZXR5cGVfaGVhZGVyKHNrYiwgdGFnX2xlbik7XG4gXG4gXHRyZXR1cm4gc2tiO1xuK1xuK2Vycl9mcmVlX3NrYjpcbitcdGtmcmVlX3NrYihza2IpO1xuK1x0cmV0dXJuIE5VTEw7XG4gfVxuIFxuIHN0YXRpYyB2b2lkIG5ldGNfZmxvd19kaXNzZWN0KGNvbnN0IHN0cnVjdCBza19idWZmICpza2IsIF9fYmUxNiAqcHJvdG8sXG5kaWZmIC0tZ2l0IGEvbmV0L2RzYS90YWdfb2NlbG90LmMgYi9uZXQvZHNhL3RhZ19vY2Vsb3QuY1xuaW5kZXggMzQwNWRlZjc5YzJkZWYuLmQyMDhjNzMyMmNkNjI2IDEwMDY0NFxuLS0tIGEvbmV0L2RzYS90YWdfb2NlbG90LmNcbisrKyBiL25ldC9kc2EvdGFnX29jZWxvdC5jXG5AQCAtMTA3LDE0ICsxMDcsMTYgQEAgc3RhdGljIHN0cnVjdCBza19idWZmICpvY2Vsb3RfcmN2KHN0cnVjdCBza19idWZmICpza2IsXG4gXHRvY2Vsb3RfeGZoX2dldF9yZXdfdmFsKGV4dHJhY3Rpb24sIFx1MDAyNnJld192YWwpO1xuIFxuIFx0c2tiLVx1MDAzZWRldiA9IGRzYV9jb25kdWl0X2ZpbmRfdXNlcihuZXRkZXYsIDAsIHNyY19wb3J0KTtcbi1cdGlmICghc2tiLVx1MDAzZWRldilcbitcdGlmICghc2tiLVx1MDAzZWRldikge1xuIFx0XHQvKiBUaGUgc3dpdGNoIHdpbGwgcmVmbGVjdCBiYWNrIHNvbWUgZnJhbWVzIHNlbnQgdGhyb3VnaFxuIFx0XHQgKiBzb2NrZXRzIG9wZW5lZCBvbiB0aGUgYmFyZSBEU0EgY29uZHVpdC4gVGhlc2Ugd2lsbCBjb21lIGJhY2tcbiBcdFx0ICogd2l0aCBzcmNfcG9ydCBlcXVhbCB0byB0aGUgaW5kZXggb2YgdGhlIENQVSBwb3J0LCBmb3Igd2hpY2hcbiBcdFx0ICogdGhlcmUgaXMgbm8gdXNlciByZWdpc3RlcmVkLiBTbyBkb24ndCBwcmludCBhbnkgZXJyb3JcbiBcdFx0ICogbWVzc2FnZSBoZXJlIChpZ25vcmUgYW5kIGRyb3AgdGhvc2UgZnJhbWVzKS5cbiBcdFx0ICovXG4rXHRcdGtmcmVlX3NrYihza2IpO1xuIFx0XHRyZXR1cm4gTlVMTDtcbitcdH1cbiBcbiBcdGRzYV9kZWZhdWx0X29mZmxvYWRfZndkX21hcmsoc2tiKTtcbiBcdHNrYi1cdTAwM2Vwcmlvcml0eSA9IHFvc19jbGFzcztcbmRpZmYgLS1naXQgYS9uZXQvZHNhL3RhZ19vY2Vsb3RfODAyMXEuYyBiL25ldC9kc2EvdGFnX29jZWxvdF84MDIxcS5jXG5pbmRleCBlODlkOTI1NGU5MGEzYS4uZjUwZjFjZDgzZjE2MWMgMTAwNjQ0XG4tLS0gYS9uZXQvZHNhL3RhZ19vY2Vsb3RfODAyMXEuY1xuKysrIGIvbmV0L2RzYS90YWdfb2NlbG90XzgwMjFxLmNcbkBAIC0zMywzMCArMzMsMzQgQEAgc3RhdGljIHN0cnVjdCBza19idWZmICpvY2Vsb3RfZGVmZXJfeG1pdChzdHJ1Y3QgZHNhX3BvcnQgKmRwLFxuIFx0eG1pdF93b3JrX2ZuID0gZGF0YS1cdTAwM2V4bWl0X3dvcmtfZm47XG4gXHR4bWl0X3dvcmtlciA9IHByaXYtXHUwMDNleG1pdF93b3JrZXI7XG4gXG4tXHRpZiAoIXhtaXRfd29ya19mbiB8fCAheG1pdF93b3JrZXIpXG4rXHRpZiAoIXhtaXRfd29ya19mbiB8fCAheG1pdF93b3JrZXIpIHtcbitcdFx0a2ZyZWVfc2tiKHNrYik7XG4gXHRcdHJldHVybiBOVUxMO1xuK1x0fVxuIFxuIFx0LyogUFRQIG92ZXIgSVAgcGFja2V0cyBuZWVkIFVEUCBjaGVja3N1bW1pbmcuIFdlIG1heSBoYXZlIGluaGVyaXRlZFxuIFx0ICogTkVUSUZfRl9IV19DU1VNIGZyb20gdGhlIERTQSBjb25kdWl0LCBidXQgdGhlc2UgcGFja2V0cyBhcmUgbm90IHNlbnRcbiBcdCAqIHRocm91Z2ggdGhlIERTQSBjb25kdWl0LCBzbyBjYWxjdWxhdGUgdGhlIGNoZWNrc3VtIGhlcmUuXG4gXHQgKi9cbi1cdGlmIChza2ItXHUwMDNlaXBfc3VtbWVkID09IENIRUNLU1VNX1BBUlRJQUwgXHUwMDI2XHUwMDI2IHNrYl9jaGVja3N1bV9oZWxwKHNrYikpXG4rXHRpZiAoc2tiLVx1MDAzZWlwX3N1bW1lZCA9PSBDSEVDS1NVTV9QQVJUSUFMIFx1MDAyNlx1MDAyNiBza2JfY2hlY2tzdW1faGVscChza2IpKSB7XG4rXHRcdGtmcmVlX3NrYihza2IpO1xuIFx0XHRyZXR1cm4gTlVMTDtcbitcdH1cbiBcbiBcdHhtaXRfd29yayA9IGt6YWxsb2Nfb2JqKCp4bWl0X3dvcmssIEdGUF9BVE9NSUMpO1xuLVx0aWYgKCF4bWl0X3dvcmspXG4rXHRpZiAoIXhtaXRfd29yaykge1xuK1x0XHRrZnJlZV9za2Ioc2tiKTtcbiBcdFx0cmV0dXJuIE5VTEw7XG4rXHR9XG4gXG4gXHQvKiBDYWxscyBmZWxpeF9wb3J0X2RlZmVycmVkX3htaXQgaW4gZmVsaXguYyAqL1xuIFx0a3RocmVhZF9pbml0X3dvcmsoXHUwMDI2eG1pdF93b3JrLVx1MDAzZXdvcmssIHhtaXRfd29ya19mbik7XG4tXHQvKiBJbmNyZWFzZSByZWZjb3VudCBzbyB0aGUga2ZyZWVfc2tiIGluIGRzYV91c2VyX3htaXRcbi1cdCAqIHdvbid0IHJlYWxseSBmcmVlIHRoZSBwYWNrZXQuXG4tXHQgKi9cbiBcdHhtaXRfd29yay1cdTAwM2VkcCA9IGRwO1xuIFx0eG1pdF93b3JrLVx1MDAzZXNrYiA9IHNrYl9nZXQoc2tiKTtcbiBcbiBcdGt0aHJlYWRfcXVldWVfd29yayh4bWl0X3dvcmtlciwgXHUwMDI2eG1pdF93b3JrLVx1MDAzZXdvcmspO1xuIFxuK1x0a2ZyZWVfc2tiKHNrYik7XG4gXHRyZXR1cm4gTlVMTDtcbiB9XG4gXG5AQCAtODQsOCArODgsMTAgQEAgc3RhdGljIHN0cnVjdCBza19idWZmICpvY2Vsb3RfcmN2KHN0cnVjdCBza19idWZmICpza2IsXG4gXHRkc2FfODAyMXFfcmN2KHNrYiwgXHUwMDI2c3JjX3BvcnQsIFx1MDAyNnN3aXRjaF9pZCwgTlVMTCwgTlVMTCk7XG4gXG4gXHRza2ItXHUwMDNlZGV2ID0gZHNhX2NvbmR1aXRfZmluZF91c2VyKG5ldGRldiwgc3dpdGNoX2lkLCBzcmNfcG9ydCk7XG4tXHRpZiAoIXNrYi1cdTAwM2VkZXYpXG4rXHRpZiAoIXNrYi1cdTAwM2VkZXYpIHtcbitcdFx0a2ZyZWVfc2tiKHNrYik7XG4gXHRcdHJldHVybiBOVUxMO1xuK1x0fVxuIFxuIFx0ZHNhX2RlZmF1bHRfb2ZmbG9hZF9md2RfbWFyayhza2IpO1xuIFxuZGlmZiAtLWdpdCBhL25ldC9kc2EvdGFnX3FjYS5jIGIvbmV0L2RzYS90YWdfcWNhLmNcbmluZGV4IDllM2I0MjllOGIzNjI1Li41MTA3OTJmYmZhOTJkZCAxMDA2NDRcbi0tLSBhL25ldC9kc2EvdGFnX3FjYS5jXG4rKysgYi9uZXQvZHNhL3RhZ19xY2EuY1xuQEAgLTQ2LDE2ICs0NiwyMCBAQCBzdGF0aWMgc3RydWN0IHNrX2J1ZmYgKnFjYV90YWdfcmN2KHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXG4gXG4gXHR0YWdnZXJfZGF0YSA9IGRzLVx1MDAzZXRhZ2dlcl9kYXRhO1xuIFxuLVx0aWYgKHVubGlrZWx5KCFwc2tiX21heV9wdWxsKHNrYiwgUUNBX0hEUl9MRU4pKSlcbitcdGlmICh1bmxpa2VseSghcHNrYl9tYXlfcHVsbChza2IsIFFDQV9IRFJfTEVOKSkpIHtcbitcdFx0a2ZyZWVfc2tiKHNrYik7XG4gXHRcdHJldHVybiBOVUxMO1xuK1x0fVxuIFxuIFx0cGhkciA9IGRzYV9ldHlwZV9oZWFkZXJfcG9zX3J4KHNrYik7XG4gXHRoZHIgPSBudG9ocygqcGhkcik7XG4gXG4gXHQvKiBNYWtlIHN1cmUgdGhlIHZlcnNpb24gaXMgY29ycmVjdCAqL1xuIFx0dmVyID0gRklFTERfR0VUKFFDQV9IRFJfUkVDVl9WRVJTSU9OLCBoZHIpO1xuLVx0aWYgKHVubGlrZWx5KHZlciAhPSBRQ0FfSERSX1ZFUlNJT04pKVxuK1x0aWYgKHVubGlrZWx5KHZlciAhPSBRQ0FfSERSX1ZFUlNJT04pKSB7XG4rXHRcdGtmcmVlX3NrYihza2IpO1xuIFx0XHRyZXR1cm4gTlVMTDtcbitcdH1cbiBcbiBcdC8qIEdldCBwayB0eXBlICovXG4gXHRwa190eXBlID0gRklFTERfR0VUKFFDQV9IRFJfUkVDVl9UWVBFLCBoZHIpO1xuQEAgLTY0LDYgKzY4LDcgQEAgc3RhdGljIHN0cnVjdCBza19idWZmICpxY2FfdGFnX3JjdihzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxuIFx0aWYgKHBrX3R5cGUgPT0gUUNBX0hEUl9SRUNWX1RZUEVfUldfUkVHX0FDSykge1xuIFx0XHRpZiAobGlrZWx5KHRhZ2dlcl9kYXRhLVx1MDAzZXJ3X3JlZ19hY2tfaGFuZGxlcikpXG4gXHRcdFx0dGFnZ2VyX2RhdGEtXHUwMDNlcndfcmVnX2Fja19oYW5kbGVyKGRzLCBza2IpO1xuK1x0XHRrZnJlZV9za2Ioc2tiKTtcbiBcdFx0cmV0dXJuIE5VTEw7XG4gXHR9XG4gXG5AQCAtNzEsNiArNzYsNyBAQCBzdGF0aWMgc3RydWN0IHNrX2J1ZmYgKnFjYV90YWdfcmN2KHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXG4gXHRpZiAocGtfdHlwZSA9PSBRQ0FfSERSX1JFQ1ZfVFlQRV9NSUIpIHtcbiBcdFx0aWYgKGxpa2VseSh0YWdnZXJfZGF0YS1cdTAwM2VtaWJfYXV0b2Nhc3RfaGFuZGxlcikpXG4gXHRcdFx0dGFnZ2VyX2RhdGEtXHUwMDNlbWliX2F1dG9jYXN0X2hhbmRsZXIoZHMsIHNrYik7XG4rXHRcdGtmcmVlX3NrYihza2IpO1xuIFx0XHRyZXR1cm4gTlVMTDtcbiBcdH1cbiBcbkBAIC03OCw4ICs4NCwxMCBAQCBzdGF0aWMgc3RydWN0IHNrX2J1ZmYgKnFjYV90YWdfcmN2KHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXG4gXHRwb3J0ID0gRklFTERfR0VUKFFDQV9IRFJfUkVDVl9TT1VSQ0VfUE9SVCwgaGRyKTtcbiBcbiBcdHNrYi1cdTAwM2VkZXYgPSBkc2FfY29uZHVpdF9maW5kX3VzZXIoZGV2LCAwLCBwb3J0KTtcbi1cdGlmICghc2tiLVx1MDAzZWRldilcbitcdGlmICghc2tiLVx1MDAzZWRldikge1xuK1x0XHRrZnJlZV9za2Ioc2tiKTtcbiBcdFx0cmV0dXJuIE5VTEw7XG4rXHR9XG4gXG4gXHQvKiBSZW1vdmUgUUNBIHRhZyBhbmQgcmVjYWxjdWxhdGUgY2hlY2tzdW0gKi9cbiBcdHNrYl9wdWxsX3Jjc3VtKHNrYiwgUUNBX0hEUl9MRU4pO1xuZGlmZiAtLWdpdCBhL25ldC9kc2EvdGFnX3J0bDRfYS5jIGIvbmV0L2RzYS90YWdfcnRsNF9hLmNcbmluZGV4IDNjYzYzZWFjZmEwMzUyLi41OTBlYTNiOTIxYzlkOSAxMDA2NDRcbi0tLSBhL25ldC9kc2EvdGFnX3J0bDRfYS5jXG4rKysgYi9uZXQvZHNhL3RhZ19ydGw0X2EuY1xuQEAgLTQxLDcgKzQxLDcgQEAgc3RhdGljIHN0cnVjdCBza19idWZmICpydGw0YV90YWdfeG1pdChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxuIFx0dTE2IG91dDtcbiBcbiBcdC8qIFBhZCBvdXQgdG8gYXQgbGVhc3QgNjAgYnl0ZXMgKi9cbi1cdGlmICh1bmxpa2VseShfX3NrYl9wdXRfcGFkdG8oc2tiLCBFVEhfWkxFTiwgZmFsc2UpKSlcbitcdGlmICh1bmxpa2VseShldGhfc2tiX3BhZChza2IpKSlcbiBcdFx0cmV0dXJuIE5VTEw7XG4gXG4gXHRuZXRkZXZfZGJnKGRldiwgXCJhZGQgcmVhbHRlayB0YWcgdG8gcGFja2FnZSB0byBwb3J0ICVkXFxuXCIsXG5AQCAtNzUsOCArNzUsMTAgQEAgc3RhdGljIHN0cnVjdCBza19idWZmICpydGw0YV90YWdfcmN2KHN0cnVjdCBza19idWZmICpza2IsXG4gXHR1OCBwcm90O1xuIFx0dTggcG9ydDtcbiBcbi1cdGlmICh1bmxpa2VseSghcHNrYl9tYXlfcHVsbChza2IsIFJUTDRfQV9IRFJfTEVOKSkpXG4rXHRpZiAodW5saWtlbHkoIXBza2JfbWF5X3B1bGwoc2tiLCBSVEw0X0FfSERSX0xFTikpKSB7XG4rXHRcdGtmcmVlX3NrYihza2IpO1xuIFx0XHRyZXR1cm4gTlVMTDtcbitcdH1cbiBcbiBcdHRhZyA9IGRzYV9ldHlwZV9oZWFkZXJfcG9zX3J4KHNrYik7XG4gXHRwID0gKF9fYmUxNiAqKXRhZztcbkBAIC05Miw2ICs5NCw3IEBAIHN0YXRpYyBzdHJ1Y3Qgc2tfYnVmZiAqcnRsNGFfdGFnX3JjdihzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxuIFx0cHJvdCA9IChwcm90cG9ydCBcdTAwM2VcdTAwM2UgUlRMNF9BX1BST1RPQ09MX1NISUZUKSBcdTAwMjYgMHgwZjtcbiBcdGlmIChwcm90ICE9IFJUTDRfQV9QUk9UT0NPTF9SVEw4MzY2UkIpIHtcbiBcdFx0bmV0ZGV2X2VycihkZXYsIFwidW5rbm93biByZWFsdGVrIHByb3RvY29sIDB4JTAxeFxcblwiLCBwcm90KTtcbitcdFx0a2ZyZWVfc2tiKHNrYik7XG4gXHRcdHJldHVybiBOVUxMO1xuIFx0fVxuIFx0cG9ydCA9IHByb3Rwb3J0IFx1MDAyNiAweGZmO1xuQEAgLTk5LDYgKzEwMiw3IEBAIHN0YXRpYyBzdHJ1Y3Qgc2tfYnVmZiAqcnRsNGFfdGFnX3JjdihzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxuIFx0c2tiLVx1MDAzZWRldiA9IGRzYV9jb25kdWl0X2ZpbmRfdXNlcihkZXYsIDAsIHBvcnQpO1xuIFx0aWYgKCFza2ItXHUwMDNlZGV2KSB7XG4gXHRcdG5ldGRldl9kYmcoZGV2LCBcImNvdWxkIG5vdCBmaW5kIHVzZXIgZm9yIHBvcnQgJWRcXG5cIiwgcG9ydCk7XG4rXHRcdGtmcmVlX3NrYihza2IpO1xuIFx0XHRyZXR1cm4gTlVMTDtcbiBcdH1cbiBcbmRpZmYgLS1naXQgYS9uZXQvZHNhL3RhZ19ydGw4XzQuYyBiL25ldC9kc2EvdGFnX3J0bDhfNC5jXG5pbmRleCA4NTJjNmI4ODA3OWExMy4uNGRhM2JlZWJlZjc1ZTIgMTAwNjQ0XG4tLS0gYS9uZXQvZHNhL3RhZ19ydGw4XzQuY1xuKysrIGIvbmV0L2RzYS90YWdfcnRsOF80LmNcbkBAIC0xNDMsOCArMTQzLDEwIEBAIHN0YXRpYyBzdHJ1Y3Qgc2tfYnVmZiAqcnRsOF80dF90YWdfeG1pdChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxuIFx0LyogQ2FsY3VsYXRlIHRoZSBjaGVja3N1bSBoZXJlIGlmIG5vdCBkb25lIHlldCBhcyB0cmFpbGluZyB0YWdzIHdpbGxcbiBcdCAqIGJyZWFrIGVpdGhlciBzb2Z0d2FyZSBvciBoYXJkd2FyZSBiYXNlZCBjaGVja3N1bVxuIFx0ICovXG4tXHRpZiAoc2tiLVx1MDAzZWlwX3N1bW1lZCA9PSBDSEVDS1NVTV9QQVJUSUFMIFx1MDAyNlx1MDAyNiBza2JfY2hlY2tzdW1faGVscChza2IpKVxuK1x0aWYgKHNrYi1cdTAwM2VpcF9zdW1tZWQgPT0gQ0hFQ0tTVU1fUEFSVElBTCBcdTAwMjZcdTAwMjYgc2tiX2NoZWNrc3VtX2hlbHAoc2tiKSkge1xuK1x0XHRrZnJlZV9za2Ioc2tiKTtcbiBcdFx0cmV0dXJuIE5VTEw7XG4rXHR9XG4gXG4gXHRydGw4XzRfd3JpdGVfdGFnKHNrYiwgZGV2LCBza2JfcHV0KHNrYiwgUlRMOF80X1RBR19MRU4pKTtcbiBcbkBAIC0yMDEsMTEgKzIwMywxNSBAQCBzdGF0aWMgaW50IHJ0bDhfNF9yZWFkX3RhZyhzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxuIHN0YXRpYyBzdHJ1Y3Qgc2tfYnVmZiAqcnRsOF80X3RhZ19yY3Yoc3RydWN0IHNrX2J1ZmYgKnNrYixcbiBcdFx0XHRcdCAgICAgIHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXG4ge1xuLVx0aWYgKHVubGlrZWx5KCFwc2tiX21heV9wdWxsKHNrYiwgUlRMOF80X1RBR19MRU4pKSlcbitcdGlmICh1bmxpa2VseSghcHNrYl9tYXlfcHVsbChza2IsIFJUTDhfNF9UQUdfTEVOKSkpIHtcbitcdFx0a2ZyZWVfc2tiKHNrYik7XG4gXHRcdHJldHVybiBOVUxMO1xuK1x0fVxuIFxuLVx0aWYgKHVubGlrZWx5KHJ0bDhfNF9yZWFkX3RhZyhza2IsIGRldiwgZHNhX2V0eXBlX2hlYWRlcl9wb3Nfcngoc2tiKSkpKVxuK1x0aWYgKHVubGlrZWx5KHJ0bDhfNF9yZWFkX3RhZyhza2IsIGRldiwgZHNhX2V0eXBlX2hlYWRlcl9wb3Nfcngoc2tiKSkpKSB7XG4rXHRcdGtmcmVlX3NrYihza2IpO1xuIFx0XHRyZXR1cm4gTlVMTDtcbitcdH1cbiBcbiBcdC8qIFJlbW92ZSB0YWcgYW5kIHJlY2FsY3VsYXRlIGNoZWNrc3VtICovXG4gXHRza2JfcHVsbF9yY3N1bShza2IsIFJUTDhfNF9UQUdfTEVOKTtcbkBAIC0yMTgsMTQgKzIyNCwyMCBAQCBzdGF0aWMgc3RydWN0IHNrX2J1ZmYgKnJ0bDhfNF90YWdfcmN2KHN0cnVjdCBza19idWZmICpza2IsXG4gc3RhdGljIHN0cnVjdCBza19idWZmICpydGw4XzR0X3RhZ19yY3Yoc3RydWN0IHNrX2J1ZmYgKnNrYixcbiBcdFx0XHRcdCAgICAgICBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxuIHtcbi1cdGlmIChza2JfbGluZWFyaXplKHNrYikpXG4rXHRpZiAoc2tiX2xpbmVhcml6ZShza2IpKSB7XG4rXHRcdGtmcmVlX3NrYihza2IpO1xuIFx0XHRyZXR1cm4gTlVMTDtcbitcdH1cbiBcbi1cdGlmICh1bmxpa2VseShydGw4XzRfcmVhZF90YWcoc2tiLCBkZXYsIHNrYl90YWlsX3BvaW50ZXIoc2tiKSAtIFJUTDhfNF9UQUdfTEVOKSkpXG4rXHRpZiAodW5saWtlbHkocnRsOF80X3JlYWRfdGFnKHNrYiwgZGV2LCBza2JfdGFpbF9wb2ludGVyKHNrYikgLSBSVEw4XzRfVEFHX0xFTikpKSB7XG4rXHRcdGtmcmVlX3NrYihza2IpO1xuIFx0XHRyZXR1cm4gTlVMTDtcbitcdH1cbiBcbi1cdGlmIChwc2tiX3RyaW1fcmNzdW0oc2tiLCBza2ItXHUwMDNlbGVuIC0gUlRMOF80X1RBR19MRU4pKVxuK1x0aWYgKHBza2JfdHJpbV9yY3N1bShza2IsIHNrYi1cdTAwM2VsZW4gLSBSVEw4XzRfVEFHX0xFTikpIHtcbitcdFx0a2ZyZWVfc2tiKHNrYik7XG4gXHRcdHJldHVybiBOVUxMO1xuK1x0fVxuIFxuIFx0cmV0dXJuIHNrYjtcbiB9XG5kaWZmIC0tZ2l0IGEvbmV0L2RzYS90YWdfcnpuMV9hNXBzdy5jIGIvbmV0L2RzYS90YWdfcnpuMV9hNXBzdy5jXG5pbmRleCAxMDk5NGIzNDcwZjY3YS4uNzM0OTEwMTU2ZGMzMzMgMTAwNjQ0XG4tLS0gYS9uZXQvZHNhL3RhZ19yem4xX2E1cHN3LmNcbisrKyBiL25ldC9kc2EvdGFnX3J6bjFfYTVwc3cuY1xuQEAgLTQ4LDcgKzQ4LDcgQEAgc3RhdGljIHN0cnVjdCBza19idWZmICphNXBzd190YWdfeG1pdChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgbmV0X2RldmljZSAqZGVcbiBcdCAqIGxlYXN0IDYwIGJ5dGVzIG90aGVyd2lzZSB0aGV5IHdpbGwgYmUgZGlzY2FyZGVkIHdoZW4gdGhleSBlbnRlciB0aGVcbiBcdCAqIHN3aXRjaCBwb3J0IGxvZ2ljLlxuIFx0ICovXG4tXHRpZiAoX19za2JfcHV0X3BhZHRvKHNrYiwgRVRIX1pMRU4sIGZhbHNlKSlcbitcdGlmIChldGhfc2tiX3BhZChza2IpKVxuIFx0XHRyZXR1cm4gTlVMTDtcbiBcbiBcdC8qIHByb3ZpZGUgJ0E1UFNXX1RBR19MRU4nIGJ5dGVzIGFkZGl0aW9uYWwgc3BhY2UgKi9cbkBAIC03Nyw2ICs3Nyw3IEBAIHN0YXRpYyBzdHJ1Y3Qgc2tfYnVmZiAqYTVwc3dfdGFnX3JjdihzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxuIFx0aWYgKHVubGlrZWx5KCFwc2tiX21heV9wdWxsKHNrYiwgQTVQU1dfVEFHX0xFTikpKSB7XG4gXHRcdGRldl93YXJuX3JhdGVsaW1pdGVkKFx1MDAyNmRldi1cdTAwM2VkZXYsXG4gXHRcdFx0XHQgICAgIFwiRHJvcHBpbmcgcGFja2V0LCBjYW5ub3QgcHVsbFxcblwiKTtcbitcdFx0a2ZyZWVfc2tiKHNrYik7XG4gXHRcdHJldHVybiBOVUxMO1xuIFx0fVxuIFxuQEAgLTg0LDE0ICs4NSwxNyBAQCBzdGF0aWMgc3RydWN0IHNrX2J1ZmYgKmE1cHN3X3RhZ19yY3Yoc3RydWN0IHNrX2J1ZmYgKnNrYixcbiBcbiBcdGlmICh0YWctXHUwMDNlY3RybF90YWcgIT0gaHRvbnMoRVRIX1BfRFNBX0E1UFNXKSkge1xuIFx0XHRkZXZfd2Fybl9yYXRlbGltaXRlZChcdTAwMjZkZXYtXHUwMDNlZGV2LCBcIkRyb3BwaW5nIHBhY2tldCBkdWUgdG8gaW52YWxpZCBUQUcgbWFya2VyXFxuXCIpO1xuK1x0XHRrZnJlZV9za2Ioc2tiKTtcbiBcdFx0cmV0dXJuIE5VTEw7XG4gXHR9XG4gXG4gXHRwb3J0ID0gRklFTERfR0VUKEE1UFNXX0NUUkxfREFUQV9QT1JULCBudG9ocyh0YWctXHUwMDNlY3RybF9kYXRhKSk7XG4gXG4gXHRza2ItXHUwMDNlZGV2ID0gZHNhX2NvbmR1aXRfZmluZF91c2VyKGRldiwgMCwgcG9ydCk7XG4tXHRpZiAoIXNrYi1cdTAwM2VkZXYpXG4rXHRpZiAoIXNrYi1cdTAwM2VkZXYpIHtcbitcdFx0a2ZyZWVfc2tiKHNrYik7XG4gXHRcdHJldHVybiBOVUxMO1xuK1x0fVxuIFxuIFx0c2tiX3B1bGxfcmNzdW0oc2tiLCBBNVBTV19UQUdfTEVOKTtcbiBcdGRzYV9zdHJpcF9ldHlwZV9oZWFkZXIoc2tiLCBBNVBTV19UQUdfTEVOKTtcbmRpZmYgLS1naXQgYS9uZXQvZHNhL3RhZ19zamExMTA1LmMgYi9uZXQvZHNhL3RhZ19zamExMTA1LmNcbmluZGV4IGRlNmQ0Y2U4NjY4YmUxLi5iZmUxZjc0NmY1NWJlNSAxMDA2NDRcbi0tLSBhL25ldC9kc2EvdGFnX3NqYTExMDUuY1xuKysrIGIvbmV0L2RzYS90YWdfc2phMTEwNS5jXG5AQCAtMTQ5LDE5ICsxNDksMjAgQEAgc3RhdGljIHN0cnVjdCBza19idWZmICpzamExMTA1X2RlZmVyX3htaXQoc3RydWN0IGRzYV9wb3J0ICpkcCxcbiBcdHhtaXRfd29ya19mbiA9IHRhZ2dlcl9kYXRhLVx1MDAzZXhtaXRfd29ya19mbjtcbiBcdHhtaXRfd29ya2VyID0gcHJpdi1cdTAwM2V4bWl0X3dvcmtlcjtcbiBcbi1cdGlmICgheG1pdF93b3JrX2ZuIHx8ICF4bWl0X3dvcmtlcilcbitcdGlmICgheG1pdF93b3JrX2ZuIHx8ICF4bWl0X3dvcmtlcikge1xuK1x0XHRrZnJlZV9za2Ioc2tiKTtcbiBcdFx0cmV0dXJuIE5VTEw7XG4rXHR9XG4gXG4gXHR4bWl0X3dvcmsgPSBremFsbG9jX29iaigqeG1pdF93b3JrLCBHRlBfQVRPTUlDKTtcbi1cdGlmICgheG1pdF93b3JrKVxuK1x0aWYgKCF4bWl0X3dvcmspIHtcbitcdFx0a2ZyZWVfc2tiKHNrYik7XG4gXHRcdHJldHVybiBOVUxMO1xuK1x0fVxuIFxuIFx0a3RocmVhZF9pbml0X3dvcmsoXHUwMDI2eG1pdF93b3JrLVx1MDAzZXdvcmssIHhtaXRfd29ya19mbik7XG4tXHQvKiBJbmNyZWFzZSByZWZjb3VudCBzbyB0aGUga2ZyZWVfc2tiIGluIGRzYV91c2VyX3htaXRcbi1cdCAqIHdvbid0IHJlYWxseSBmcmVlIHRoZSBwYWNrZXQuXG4tXHQgKi9cbiBcdHhtaXRfd29yay1cdTAwM2VkcCA9IGRwO1xuLVx0eG1pdF93b3JrLVx1MDAzZXNrYiA9IHNrYl9nZXQoc2tiKTtcbitcdHhtaXRfd29yay1cdTAwM2Vza2IgPSBza2I7XG4gXG4gXHRrdGhyZWFkX3F1ZXVlX3dvcmsoeG1pdF93b3JrZXIsIFx1MDAyNnhtaXRfd29yay1cdTAwM2V3b3JrKTtcbiBcbkBAIC00MDEsMTAgKzQwMiw3IEBAIHN0YXRpYyBzdHJ1Y3Qgc2tfYnVmZlxuIFx0XHRcdGtmcmVlX3NrYihwcml2LVx1MDAzZXN0YW1wYWJsZV9za2IpO1xuIFx0XHR9XG4gXG4tXHRcdC8qIEhvbGQgYSByZWZlcmVuY2UgdG8gYXZvaWQgZHNhX3N3aXRjaF9yY3Zcbi1cdFx0ICogZnJvbSBmcmVlaW5nIHRoZSBza2IuXG4tXHRcdCAqL1xuLVx0XHRwcml2LVx1MDAzZXN0YW1wYWJsZV9za2IgPSBza2JfZ2V0KHNrYik7XG4rXHRcdHByaXYtXHUwMDNlc3RhbXBhYmxlX3NrYiA9IHNrYjtcbiBcdFx0c3Bpbl91bmxvY2soXHUwMDI2cHJpdi1cdTAwM2VtZXRhX2xvY2spO1xuIFxuIFx0XHQvKiBUZWxsIERTQSB3ZSBnb3Qgbm90aGluZyAqL1xuQEAgLTQzNiw2ICs0MzQsNyBAQCBzdGF0aWMgc3RydWN0IHNrX2J1ZmZcbiBcdFx0XHRkZXZfZXJyX3JhdGVsaW1pdGVkKGRzLVx1MDAzZWRldixcbiBcdFx0XHRcdFx0ICAgIFwiVW5leHBlY3RlZCBtZXRhIGZyYW1lXFxuXCIpO1xuIFx0XHRcdHNwaW5fdW5sb2NrKFx1MDAyNnByaXYtXHUwMDNlbWV0YV9sb2NrKTtcbitcdFx0XHRrZnJlZV9za2Ioc2tiKTtcbiBcdFx0XHRyZXR1cm4gTlVMTDtcbiBcdFx0fVxuIFxuQEAgLTQ0Myw2ICs0NDIsNyBAQCBzdGF0aWMgc3RydWN0IHNrX2J1ZmZcbiBcdFx0XHRkZXZfZXJyX3JhdGVsaW1pdGVkKGRzLVx1MDAzZWRldixcbiBcdFx0XHRcdFx0ICAgIFwiTWV0YSBmcmFtZSBvbiB3cm9uZyBwb3J0XFxuXCIpO1xuIFx0XHRcdHNwaW5fdW5sb2NrKFx1MDAyNnByaXYtXHUwMDNlbWV0YV9sb2NrKTtcbitcdFx0XHRrZnJlZV9za2Ioc2tiKTtcbiBcdFx0XHRyZXR1cm4gTlVMTDtcbiBcdFx0fVxuIFxuQEAgLTUwMSwxOCArNTAxLDIxIEBAIHN0YXRpYyBzdHJ1Y3Qgc2tfYnVmZiAqc2phMTEwNV9yY3Yoc3RydWN0IHNrX2J1ZmYgKnNrYixcbiBcdC8qIE5vcm1hbCBkYXRhIHBsYW5lIHRyYWZmaWMgYW5kIGxpbmstbG9jYWwgZnJhbWVzIGFyZSB0YWdnZWQgd2l0aFxuIFx0ICogYSB0YWdfODAyMXEgVkxBTiB3aGljaCB3ZSBoYXZlIHRvIHN0cmlwXG4gXHQgKi9cbi1cdGlmIChzamExMTA1X3NrYl9oYXNfdGFnXzgwMjFxKHNrYikpXG4rXHRpZiAoc2phMTEwNV9za2JfaGFzX3RhZ184MDIxcShza2IpKSB7XG4gXHRcdGRzYV84MDIxcV9yY3Yoc2tiLCBcdTAwMjZzb3VyY2VfcG9ydCwgXHUwMDI2c3dpdGNoX2lkLCBcdTAwMjZ2YmlkLCBcdTAwMjZ2aWQpO1xuLVx0ZWxzZSBpZiAoc291cmNlX3BvcnQgPT0gLTEgXHUwMDI2XHUwMDI2IHN3aXRjaF9pZCA9PSAtMSlcbitcdH0gZWxzZSBpZiAoc291cmNlX3BvcnQgPT0gLTEgXHUwMDI2XHUwMDI2IHN3aXRjaF9pZCA9PSAtMSkge1xuIFx0XHQvKiBQYWNrZXRzIHdpdGggbm8gc291cmNlIGluZm9ybWF0aW9uIGhhdmUgbm8gY2hhbmNlIG9mXG4gXHRcdCAqIGdldHRpbmcgYWNjZXB0ZWQsIGRyb3AgdGhlbSBzdHJhaWdodCBhd2F5LlxuIFx0XHQgKi9cbitcdFx0a2ZyZWVfc2tiKHNrYik7XG4gXHRcdHJldHVybiBOVUxMO1xuK1x0fVxuIFxuIFx0c2tiLVx1MDAzZWRldiA9IGRzYV90YWdfODAyMXFfZmluZF91c2VyKG5ldGRldiwgc291cmNlX3BvcnQsIHN3aXRjaF9pZCxcbiBcdFx0XHRcdFx0ICAgdmlkLCB2YmlkKTtcbiBcdGlmICghc2tiLVx1MDAzZWRldikge1xuIFx0XHRuZXRkZXZfd2FybihuZXRkZXYsIFwiQ291bGRuJ3QgZGVjb2RlIHNvdXJjZSBwb3J0XFxuXCIpO1xuK1x0XHRrZnJlZV9za2Ioc2tiKTtcbiBcdFx0cmV0dXJuIE5VTEw7XG4gXHR9XG4gXG5AQCAtNTM5LDEyICs1NDIsMTUgQEAgc3RhdGljIHN0cnVjdCBza19idWZmICpzamExMTEwX3Jjdl9tZXRhKHN0cnVjdCBza19idWZmICpza2IsIHUxNiByeF9oZWFkZXIpXG4gXHRpZiAoIWRzKSB7XG4gXHRcdG5ldF9lcnJfcmF0ZWxpbWl0ZWQoXCIlczogY2Fubm90IGZpbmQgc3dpdGNoIGlkICVkXFxuXCIsXG4gXHRcdFx0XHQgICAgY29uZHVpdC1cdTAwM2VuYW1lLCBzd2l0Y2hfaWQpO1xuK1x0XHRrZnJlZV9za2Ioc2tiKTtcbiBcdFx0cmV0dXJuIE5VTEw7XG4gXHR9XG4gXG4gXHR0YWdnZXJfZGF0YSA9IHNqYTExMDVfdGFnZ2VyX2RhdGEoZHMpO1xuLVx0aWYgKCF0YWdnZXJfZGF0YS1cdTAwM2VtZXRhX3RzdGFtcF9oYW5kbGVyKVxuK1x0aWYgKCF0YWdnZXJfZGF0YS1cdTAwM2VtZXRhX3RzdGFtcF9oYW5kbGVyKSB7XG4rXHRcdGtmcmVlX3NrYihza2IpO1xuIFx0XHRyZXR1cm4gTlVMTDtcbitcdH1cbiBcbiBcdGZvciAoaSA9IDA7IGkgXHUwMDNjPSBuX3RzOyBpKyspIHtcbiBcdFx0dTggdHNfaWQsIHNvdXJjZV9wb3J0LCBkaXI7XG5AQCAtNTYyLDYgKzU2OCw3IEBAIHN0YXRpYyBzdHJ1Y3Qgc2tfYnVmZiAqc2phMTExMF9yY3ZfbWV0YShzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCB1MTYgcnhfaGVhZGVyKVxuIFx0fVxuIFxuIFx0LyogRGlzY2FyZCB0aGUgbWV0YSBmcmFtZSwgd2UndmUgY29uc3VtZWQgdGhlIHRpbWVzdGFtcHMgaXQgY29udGFpbmVkICovXG4rXHRrZnJlZV9za2Ioc2tiKTtcbiBcdHJldHVybiBOVUxMO1xuIH1cbiBcbkBAIC01NzIsOCArNTc5LDEwIEBAIHN0YXRpYyBzdHJ1Y3Qgc2tfYnVmZiAqc2phMTExMF9yY3ZfaW5iYW5kX2NvbnRyb2xfZXh0ZW5zaW9uKHN0cnVjdCBza19idWZmICpza2IsXG4ge1xuIFx0dTE2IHJ4X2hlYWRlcjtcbiBcbi1cdGlmICh1bmxpa2VseSghcHNrYl9tYXlfcHVsbChza2IsIFNKQTExMTBfSEVBREVSX0xFTikpKVxuK1x0aWYgKHVubGlrZWx5KCFwc2tiX21heV9wdWxsKHNrYiwgU0pBMTExMF9IRUFERVJfTEVOKSkpIHtcbitcdFx0a2ZyZWVfc2tiKHNrYik7XG4gXHRcdHJldHVybiBOVUxMO1xuK1x0fVxuIFxuIFx0Lyogc2tiLVx1MDAzZWRhdGEgcG9pbnRzIHRvIHNrYl9tYWNfaGVhZGVyKHNrYikgKyBFVEhfSExFTiwgd2hpY2ggaXMgZXhhY3RseVxuIFx0ICogd2hhdCB3ZSBuZWVkIGJlY2F1c2UgdGhlIGNhbGxlciBoYXMgY2hlY2tlZCB0aGUgRXRoZXJUeXBlICh3aGljaCBpc1xuQEAgLTYwOSw4ICs2MTgsMTAgQEAgc3RhdGljIHN0cnVjdCBza19idWZmICpzamExMTEwX3Jjdl9pbmJhbmRfY29udHJvbF9leHRlbnNpb24oc3RydWN0IHNrX2J1ZmYgKnNrYixcbiBcdFx0ICogcGFkZGluZyBhbmQgdHJhaWxlciB3ZSBuZWVkIHRvIGFjY291bnQgZm9yIHRoZSBmYWN0IHRoYXRcbiBcdFx0ICogc2tiLVx1MDAzZWRhdGEgcG9pbnRzIHRvIHNrYl9tYWNfaGVhZGVyKHNrYikgKyBFVEhfSExFTi5cbiBcdFx0ICovXG4tXHRcdGlmIChwc2tiX3RyaW1fcmNzdW0oc2tiLCBzdGFydF9vZl9wYWRkaW5nIC0gRVRIX0hMRU4pKVxuK1x0XHRpZiAocHNrYl90cmltX3Jjc3VtKHNrYiwgc3RhcnRfb2ZfcGFkZGluZyAtIEVUSF9ITEVOKSkge1xuK1x0XHRcdGtmcmVlX3NrYihza2IpO1xuIFx0XHRcdHJldHVybiBOVUxMO1xuK1x0XHR9XG4gXHQvKiBUcmFwLXRvLWhvc3QgZnJhbWUsIG5vIHRpbWVzdGFtcCB0cmFpbGVyICovXG4gXHR9IGVsc2Uge1xuIFx0XHQqc291cmNlX3BvcnQgPSBTSkExMTEwX1JYX0hFQURFUl9TUkNfUE9SVChyeF9oZWFkZXIpO1xuQEAgLTY1Myw2ICs2NjQsNyBAQCBzdGF0aWMgc3RydWN0IHNrX2J1ZmYgKnNqYTExMTBfcmN2KHN0cnVjdCBza19idWZmICpza2IsXG4gXG4gXHRpZiAoIXNrYi1cdTAwM2VkZXYpIHtcbiBcdFx0bmV0ZGV2X3dhcm4obmV0ZGV2LCBcIkNvdWxkbid0IGRlY29kZSBzb3VyY2UgcG9ydFxcblwiKTtcbitcdFx0a2ZyZWVfc2tiKHNrYik7XG4gXHRcdHJldHVybiBOVUxMO1xuIFx0fVxuIFxuZGlmZiAtLWdpdCBhL25ldC9kc2EvdGFnX3RyYWlsZXIuYyBiL25ldC9kc2EvdGFnX3RyYWlsZXIuY1xuaW5kZXggNGRjZTI0Y2ZlNmE3MTYuLjQ5YzgwMmMxMGNhNjNhIDEwMDY0NFxuLS0tIGEvbmV0L2RzYS90YWdfdHJhaWxlci5jXG4rKysgYi9uZXQvZHNhL3RhZ190cmFpbGVyLmNcbkBAIC0zMCwyMiArMzAsMzAgQEAgc3RhdGljIHN0cnVjdCBza19idWZmICp0cmFpbGVyX3JjdihzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxuIFx0dTggKnRyYWlsZXI7XG4gXHRpbnQgc291cmNlX3BvcnQ7XG4gXG4tXHRpZiAoc2tiX2xpbmVhcml6ZShza2IpKVxuK1x0aWYgKHNrYl9saW5lYXJpemUoc2tiKSkge1xuK1x0XHRrZnJlZV9za2Ioc2tiKTtcbiBcdFx0cmV0dXJuIE5VTEw7XG4rXHR9XG4gXG4gXHR0cmFpbGVyID0gc2tiX3RhaWxfcG9pbnRlcihza2IpIC0gNDtcbiBcdGlmICh0cmFpbGVyWzBdICE9IDB4ODAgfHwgKHRyYWlsZXJbMV0gXHUwMDI2IDB4ZjgpICE9IDB4MDAgfHxcbi1cdCAgICAodHJhaWxlclsyXSBcdTAwMjYgMHhlZikgIT0gMHgwMCB8fCB0cmFpbGVyWzNdICE9IDB4MDApXG4rXHQgICAgKHRyYWlsZXJbMl0gXHUwMDI2IDB4ZWYpICE9IDB4MDAgfHwgdHJhaWxlclszXSAhPSAweDAwKSB7XG4rXHRcdGtmcmVlX3NrYihza2IpO1xuIFx0XHRyZXR1cm4gTlVMTDtcbitcdH1cbiBcbiBcdHNvdXJjZV9wb3J0ID0gdHJhaWxlclsxXSBcdTAwMjYgNztcbiBcbiBcdHNrYi1cdTAwM2VkZXYgPSBkc2FfY29uZHVpdF9maW5kX3VzZXIoZGV2LCAwLCBzb3VyY2VfcG9ydCk7XG4tXHRpZiAoIXNrYi1cdTAwM2VkZXYpXG4rXHRpZiAoIXNrYi1cdTAwM2VkZXYpIHtcbitcdFx0a2ZyZWVfc2tiKHNrYik7XG4gXHRcdHJldHVybiBOVUxMO1xuK1x0fVxuIFxuLVx0aWYgKHBza2JfdHJpbV9yY3N1bShza2IsIHNrYi1cdTAwM2VsZW4gLSA0KSlcbitcdGlmIChwc2tiX3RyaW1fcmNzdW0oc2tiLCBza2ItXHUwMDNlbGVuIC0gNCkpIHtcbitcdFx0a2ZyZWVfc2tiKHNrYik7XG4gXHRcdHJldHVybiBOVUxMO1xuK1x0fVxuIFxuIFx0cmV0dXJuIHNrYjtcbiB9XG5kaWZmIC0tZ2l0IGEvbmV0L2RzYS90YWdfdnNjNzN4eF84MDIxcS5jIGIvbmV0L2RzYS90YWdfdnNjNzN4eF84MDIxcS5jXG5pbmRleCBhZjEyMWE5YWZmN2ZiZC4uZjQ3MzZhMWE3YTBmMGYgMTAwNjQ0XG4tLS0gYS9uZXQvZHNhL3RhZ192c2M3M3h4XzgwMjFxLmNcbisrKyBiL25ldC9kc2EvdGFnX3ZzYzczeHhfODAyMXEuY1xuQEAgLTQ0LDYgKzQ0LDcgQEAgdnNjNzN4eF9yY3Yoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldilcbiBcdGlmICghc2tiLVx1MDAzZWRldikge1xuIFx0XHRkZXZfd2Fybl9yYXRlbGltaXRlZChcdTAwMjZuZXRkZXYtXHUwMDNlZGV2LFxuIFx0XHRcdFx0ICAgICBcIkNvdWxkbid0IGRlY29kZSBzb3VyY2UgcG9ydFxcblwiKTtcbitcdFx0a2ZyZWVfc2tiKHNrYik7XG4gXHRcdHJldHVybiBOVUxMO1xuIFx0fVxuIFxuZGlmZiAtLWdpdCBhL25ldC9kc2EvdGFnX3hyczcwMHguYyBiL25ldC9kc2EvdGFnX3hyczcwMHguY1xuaW5kZXggYTA1MjE5ZjcwMmM2NWEuLmJiMjY4MDIwZWU4NjVlIDEwMDY0NFxuLS0tIGEvbmV0L2RzYS90YWdfeHJzNzAweC5jXG4rKysgYi9uZXQvZHNhL3RhZ194cnM3MDB4LmNcbkBAIC0zMCwxNSArMzAsMjEgQEAgc3RhdGljIHN0cnVjdCBza19idWZmICp4cnM3MDB4X3JjdihzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxuIFxuIFx0c291cmNlX3BvcnQgPSBmZnMoKGludCl0cmFpbGVyWzBdKSAtIDE7XG4gXG4tXHRpZiAoc291cmNlX3BvcnQgXHUwMDNjIDApXG4rXHRpZiAoc291cmNlX3BvcnQgXHUwMDNjIDApIHtcbitcdFx0a2ZyZWVfc2tiKHNrYik7XG4gXHRcdHJldHVybiBOVUxMO1xuK1x0fVxuIFxuIFx0c2tiLVx1MDAzZWRldiA9IGRzYV9jb25kdWl0X2ZpbmRfdXNlcihkZXYsIDAsIHNvdXJjZV9wb3J0KTtcbi1cdGlmICghc2tiLVx1MDAzZWRldilcbitcdGlmICghc2tiLVx1MDAzZWRldikge1xuK1x0XHRrZnJlZV9za2Ioc2tiKTtcbiBcdFx0cmV0dXJuIE5VTEw7XG4rXHR9XG4gXG4tXHRpZiAocHNrYl90cmltX3Jjc3VtKHNrYiwgc2tiLVx1MDAzZWxlbiAtIDEpKVxuK1x0aWYgKHBza2JfdHJpbV9yY3N1bShza2IsIHNrYi1cdTAwM2VsZW4gLSAxKSkge1xuK1x0XHRrZnJlZV9za2Ioc2tiKTtcbiBcdFx0cmV0dXJuIE5VTEw7XG4rXHR9XG4gXG4gXHQvKiBGcmFtZSBpcyBmb3J3YXJkZWQgYnkgaGFyZHdhcmUsIGRvbid0IGZvcndhcmQgaW4gc29mdHdhcmUuICovXG4gXHRkc2FfZGVmYXVsdF9vZmZsb2FkX2Z3ZF9tYXJrKHNrYik7XG5kaWZmIC0tZ2l0IGEvbmV0L2RzYS90YWdfeXQ5MjF4LmMgYi9uZXQvZHNhL3RhZ195dDkyMXguY1xuaW5kZXggZjNjZWQ5OWIxYzg1MmUuLjI5NDc4NGFiNjY5NGI2IDEwMDY0NFxuLS0tIGEvbmV0L2RzYS90YWdfeXQ5MjF4LmNcbisrKyBiL25ldC9kc2EvdGFnX3l0OTIxeC5jXG5AQCAtODcsOCArODcsMTAgQEAgeXQ5MjF4X3RhZ19yY3Yoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldilcbiBcdF9fYmUxNiAqdGFnO1xuIFx0dTE2IHJ4O1xuIFxuLVx0aWYgKHVubGlrZWx5KCFwc2tiX21heV9wdWxsKHNrYiwgWVQ5MjFYX1RBR19MRU4pKSlcbitcdGlmICh1bmxpa2VseSghcHNrYl9tYXlfcHVsbChza2IsIFlUOTIxWF9UQUdfTEVOKSkpIHtcbitcdFx0a2ZyZWVfc2tiKHNrYik7XG4gXHRcdHJldHVybiBOVUxMO1xuK1x0fVxuIFxuIFx0dGFnID0gZHNhX2V0eXBlX2hlYWRlcl9wb3Nfcngoc2tiKTtcbiBcbkBAIC05Niw2ICs5OCw3IEBAIHl0OTIxeF90YWdfcmN2KHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYpXG4gXHRcdGRldl93YXJuX3JhdGVsaW1pdGVkKFx1MDAyNm5ldGRldi1cdTAwM2VkZXYsXG4gXHRcdFx0XHQgICAgIFwiVW5leHBlY3RlZCBFdGhlclR5cGUgMHglMDR4XFxuXCIsXG4gXHRcdFx0XHQgICAgIG50b2hzKHRhZ1swXSkpO1xuK1x0XHRrZnJlZV9za2Ioc2tiKTtcbiBcdFx0cmV0dXJuIE5VTEw7XG4gXHR9XG4gXG5AQCAtMTA0LDYgKzEwNyw3IEBAIHl0OTIxeF90YWdfcmN2KHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYpXG4gXHRpZiAodW5saWtlbHkoKHJ4IFx1MDAyNiBZVDkyMVhfVEFHX1BPUlRfRU4pID09IDApKSB7XG4gXHRcdGRldl93YXJuX3JhdGVsaW1pdGVkKFx1MDAyNm5ldGRldi1cdTAwM2VkZXYsXG4gXHRcdFx0XHQgICAgIFwiVW5leHBlY3RlZCByeCB0YWcgMHglMDR4XFxuXCIsIHJ4KTtcbitcdFx0a2ZyZWVfc2tiKHNrYik7XG4gXHRcdHJldHVybiBOVUxMO1xuIFx0fVxuIFxuQEAgLTExMiw2ICsxMTYsNyBAQCB5dDkyMXhfdGFnX3JjdihzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2KVxuIFx0aWYgKHVubGlrZWx5KCFza2ItXHUwMDNlZGV2KSkge1xuIFx0XHRkZXZfd2Fybl9yYXRlbGltaXRlZChcdTAwMjZuZXRkZXYtXHUwMDNlZGV2LFxuIFx0XHRcdFx0ICAgICBcIkNvdWxkbid0IGRlY29kZSBzb3VyY2UgcG9ydCAldVxcblwiLCBwb3J0KTtcbitcdFx0a2ZyZWVfc2tiKHNrYik7XG4gXHRcdHJldHVybiBOVUxMO1xuIFx0fVxuIFxuZGlmZiAtLWdpdCBhL25ldC9kc2EvdXNlci5jIGIvbmV0L2RzYS91c2VyLmNcbmluZGV4IDg3MDRjMWEzYTViNzQxLi4wNzJmYTc2OTcyY2M2NSAxMDA2NDRcbi0tLSBhL25ldC9kc2EvdXNlci5jXG4rKysgYi9uZXQvZHNhL3VzZXIuY1xuQEAgLTkzNSwxMyArOTM1LDEyIEBAIHN0YXRpYyBuZXRkZXZfdHhfdCBkc2FfdXNlcl94bWl0KHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXG4gXHRcdGV0aF9za2JfcGFkKHNrYik7XG4gXG4gXHQvKiBUcmFuc21pdCBmdW5jdGlvbiBtYXkgaGF2ZSB0byByZWFsbG9jYXRlIHRoZSBvcmlnaW5hbCBTS0IsXG4tXHQgKiBpbiB3aGljaCBjYXNlIGl0IG11c3QgaGF2ZSBmcmVlZCBpdC4gT25seSBmcmVlIGl0IGhlcmUgb24gZXJyb3IuXG4rXHQgKiBpbiB3aGljaCBjYXNlIGl0IG11c3QgaGF2ZSBmcmVlZCBpdC4gVGFnZ2VycyB3aWxsIGRyb3AgdGhlXG4rXHQgKiBwYXNzZWQgc2tiIG9uIGVycm9yLlxuIFx0ICovXG4gXHRuc2tiID0gcC1cdTAwM2V4bWl0KHNrYiwgZGV2KTtcbi1cdGlmICghbnNrYikge1xuLVx0XHRrZnJlZV9za2Ioc2tiKTtcbitcdGlmICghbnNrYilcbiBcdFx0cmV0dXJuIE5FVERFVl9UWF9PSztcbi1cdH1cbiBcbiBcdHJldHVybiBkc2FfZW5xdWV1ZV9za2IobnNrYiwgZGV2KTtcbiB9XG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0yNVQwODoyOTowNi44NTc4Mzg2MTRaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo4OTU0NjI3MDg1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgRFNBIFNLQiBNZW1vcnkgTWFuYWdlbWVudCBDaGFuZ2VzKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBzZXJpZXMgdG91Y2hpbmcgYG5ldC9kc2EvdGFnXyouY2AsIGBuZXQvZHNhL3VzZXIuY2AsIGFuZCBgbmV0L2RzYS90YWcuY2AuIE15IGluaXRpYWwgcmVhZCBpcyB0aGF0IHRoaXMgaXMgYWJvdXQgU0tCIChTb2NrZXQgQnVmZmVyKSBtZW1vcnkgbWFuYWdlbWVudCBpbiB0aGUgRFNBIChEaXN0cmlidXRlZCBTd2l0Y2ggQXJjaGl0ZWN0dXJlKSB0YWdnZXIgZnVuY3Rpb25zLiBTcGVjaWZpY2FsbHksIGl0J3MgYWJvdXQgZXhwbGljaXRseSBmcmVlaW5nIHRoZSBgc2tiYCB3aXRoaW4gdGhlIHRhZ2dlciBmdW5jdGlvbnMgdGhlbXNlbHZlcywgaW5zdGVhZCBvZiByZWx5aW5nIG9uIHRoZSBjYWxsaW5nIGZ1bmN0aW9ucyAoYGRzYV91c2VyX3htaXRgLCBgZHNhX3N3aXRjaF9yY3ZgKSB0byBoYW5kbGUgaXQgd2hlbiBhIGBOVUxMYCBpcyByZXR1cm5lZC5cblxuTGV0IG1lIGp1c3QgZG91YmxlLWNoZWNrIHRoYXQgYGRzYV91c2VyX3htaXRgIGNvZGUgc25pcHBldCB0byBiZSBzdXJlOlxuXG5gYGBjXG4gXHRuc2tiID0gcC1cdTAwM2V4bWl0KHNrYiwgZGV2KTtcbi1cdGlmICghbnNrYikge1xuLVx0XHRrZnJlZV9za2Ioc2tiKTtcbitcdGlmICghbnNrYilcbiBcdFx0cmV0dXJuIE5FVERFVl9UWF9PSztcbi1cdH1cbmBgYFxuXG5ZdXAsIGFuZCBzaW1pbGFybHkgZm9yIGBkc2Ffc3dpdGNoX3JjdmAuLi5cblxuYGBgY1xuLVx0aWYgKCFuc2tiKSB7XG4tXHRcdGtmcmVlX3NrYihza2IpO1xuK1x0aWYgKCFuc2tiKVxuIFx0XHRyZXR1cm4gMDtcbi1cdH1cbmBgYFxuXG5TbyB0aGUgdGFnZ2VycyBhcmUgbm93IGNhbGxpbmcgYGtmcmVlX3NrYihza2IpYCAqYmVmb3JlKiByZXR1cm5pbmcgYE5VTExgLiBJdCdzIGRlZmluaXRlbHkgYSBmdW5jdGlvbmFsIGNoYW5nZSwgc2hpZnRpbmcgd2hlcmUgdGhlIG1lbW9yeSBpcyBtYW5hZ2VkLCB0aG91Z2ggdGhlIGludGVuZGVkIGZ1bmN0aW9uYWxpdHkgcmVtYWlucyBjb25zaXN0ZW50LiBUaGlzIGlzIGVzc2VudGlhbGx5IGEgbWVtb3J5IG1hbmFnZW1lbnQgcmVmYWN0b3JpbmcgaW4gdGhlIERTQSB0YWdnZXIgY29kZS5cblxuQnV0IGhlcmUncyB0aGUga2V5IHF1ZXN0aW9uLCBkb2VzIHRoaXMgKmFjdHVhbGx5KiBjaGFuZ2UgdGhlIGV4ZWN1dGlvbiBmbG93PyBZZXMsIGl0IGRvZXMgY2hhbmdlIHdoZXJlIGBrZnJlZV9za2JgIGlzIGNhbGxlZC4gVGhhdCdzIHRoZSBjb3JlIG9mIHRoZSBjaGFuZ2UuIElzIHRoaXMgYSBjb2RlIHBhdGggdGhhdCdzIGV2ZW4gZXhlcmNpc2VkIGluIGEgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQgb3IgYnkgZnV6emVycz8gRFNBIGlzIGEgc3Vic3lzdGVtIGZvciBFdGhlcm5ldCBzd2l0Y2hlcywgc28gSSBuZWVkIHRvIHRoaW5rIGFib3V0IGlmIHRoaXMgaXMgcmVhY2hhYmxlLiBXZSBuZWVkIHRvIGNvbnNpZGVyIGhvdyBhY2Nlc3NpYmxlIHRoaXMgY29kZSBpcywgcGFydGljdWxhcmx5IGZvciBzZWN1cml0eSBhdWRpdGluZy5cblxuQ2FuIHdlIGhpdCB0aGlzIGluIHNvbWV0aGluZyBsaWtlIHN5emthbGxlcj8gU3l6a2FsbGVyIGhhcyBzb21lIERTQSBzdXBwb3J0LCBvciBhdCBsZWFzdCB0aGUgYWJpbGl0eSB0byBjcmVhdGUgZHVtbXkgRFNBIGludGVyZmFjZXMgdXNpbmcgdGhlIGBkc2FfbG9vcGAgZHJpdmVyLiBJdCdzIHRpbWUgdG8gY2hlY2sgaWYgYENPTkZJR19ORVRfRFNBYCBpcyBlbmFibGVkIGFuZCBob3cgd2UgY2FuIHJlYWNoIHRoaXMgY29kZS4gSSdsbCBuZWVkIHRvIHNlYXJjaCBmb3IgYGRzYV9sb29wYCBhbmQgYGRzYV91c2VyX3htaXRgIGluIHJlbGV2YW50IGJ1aWxkIGNvbmZpZ3VyYXRpb25zIHRvIGNvbmZpcm0uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE4NjgxLCJPdXRwdXRUb2tlbnMiOjIxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDE3LCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjVUMDg6Mjk6MTUuODEyNDY3NTg5WiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjMxODkzNDgzNjEsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiZHNhX3VzZXJfeG1pdFwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJEb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvZHNhL2RzYS5yc3Q9MzE3PUxBRyBzbGF2ZSkuIFRoZXJlZm9yZSwgdGhlIFJYIGRhdGEgcGF0aCBvZiB0aGUgTEFHIERTQSBjb25kdWl0IGlzIG5vdCB1c2VkLlxcbkRvY3VtZW50YXRpb24vbmV0d29ya2luZy9kc2EvZHNhLnJzdDozMTg6T24gdGhlIG90aGVyIGhhbmQsIFRYIHRha2VzIHBsYWNlIGxpbmVhcmx5OiBgYGRzYV91c2VyX3htaXRgYCBjYWxsc1xcbkRvY3VtZW50YXRpb24vbmV0d29ya2luZy9kc2EvZHNhLnJzdC0zMTktYGBkc2FfZW5xdWV1ZV9za2JgYCwgd2hpY2ggY2FsbHMgYGBkZXZfcXVldWVfeG1pdGBgIHRvd2FyZHMgdGhlIExBRyBEU0EgY29uZHVpdC5cXG4tLVxcbm5ldC9kc2EvdXNlci5jPTkxMT1FWFBPUlRfU1lNQk9MX0dQTChkc2FfZW5xdWV1ZV9za2IpO1xcbm5ldC9kc2EvdXNlci5jLTkxMi1cXG5uZXQvZHNhL3VzZXIuYzo5MTM6c3RhdGljIG5ldGRldl90eF90IGRzYV91c2VyX3htaXQoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IG5ldF9kZXZpY2UgKmRldilcXG5uZXQvZHNhL3VzZXIuYy05MTQte1xcbi0tXFxubmV0L2RzYS91c2VyLmM9MjU4Nj1zdGF0aWMgY29uc3Qgc3RydWN0IG5ldF9kZXZpY2Vfb3BzIGRzYV91c2VyX25ldGRldl9vcHMgPSB7XFxuLS1cXG5uZXQvZHNhL3VzZXIuYy0yNTg4LVxcdC5uZG9fc3RvcFxcdFxcdD0gZHNhX3VzZXJfY2xvc2UsXFxubmV0L2RzYS91c2VyLmM6MjU4OTpcXHQubmRvX3N0YXJ0X3htaXRcXHRcXHQ9IGRzYV91c2VyX3htaXQsXFxubmV0L2RzYS91c2VyLmMtMjU5MC1cXHQubmRvX2NoYW5nZV9yeF9mbGFnc1xcdD0gZHNhX3VzZXJfY2hhbmdlX3J4X2ZsYWdzLFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0yNVQwODoyOToxOS4wMDE4MjE0N1oiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjUxNTM3NDIxNzUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqRnV6emluZyB0aGUgRFNBIFRhZ2dpbmcgQ29kZSoqXG5cbk9rYXksIGxldCdzIHRha2UgYSBsb29rIGF0IHRoaXMuIE15IGd1dCB0ZWxscyBtZSB0aGlzIGlzIHJpcGUgZm9yIGZ1enppbmcuIFRoZSBwYXRjaCBpcyB0b3VjaGluZyBgbmV0L2RzYS90YWcuY2AgYW5kIGEgZmV3IG9mIHRoZSBgbmV0L2RzYS90YWdfKi5jYCBmaWxlcywgc28gaXQncyBhbGwgYWJvdXQgRFNBIHRhZ2dpbmcuIEZyb20gYSBxdWljayBnbGFuY2UsIHRoZSBjaGFuZ2VzIGFyZSBjZW50ZXJlZCBhcm91bmQgbWVtb3J5IG1hbmFnZW1lbnQg4oCTIHNwZWNpZmljYWxseSwgZnJlZWluZyBgc2tiYCBpbiBlcnJvciBwYXRocy4gVGhhdCBpbnN0YW50bHkgc2NyZWFtcyBcInBvdGVudGlhbCBtZW1vcnkgbGVhayBvciBkb3VibGUgZnJlZVwiIHRvIG1lLiBJdOKAmXMgZGVmaW5pdGVseSB3b3J0aCB0aGUgZWZmb3J0IHRvIHRocm93IHNvbWUgZnV6emluZyBhdCBpdC4gTm93LCB3aGF0J3MgdGhlIGFwcHJvcHJpYXRlIHNldHVwPyBJJ2xsIG5lZWQgdG8gZW5hYmxlIGBDT05GSUdfTkVUX0RTQWAsIGFuZCBwcm9iYWJseSBzb21lIG9mIHRoZSB0YWdnZXItc3BlY2lmaWMgY29uZmlndXJhdGlvbnMgdG9vLiBMZXQgbWUgZG91YmxlLWNoZWNrIHRoZSBgbmV0L2RzYS9LY29uZmlnYCBmaWxlIHRvIGJlIGNlcnRhaW4gSSBoYXZlIHRoZSByaWdodCBjb25maWd1cmF0aW9uLiBUaW1lIHRvIG1ha2Ugc3VyZSB0aGlzIGNvZGUgaXMgcm9idXN0LlxuXG5cbiIsIklucHV0VG9rZW5zIjoyMDAyOSwiT3V0cHV0VG9rZW5zIjoxOCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEyMSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNi0yNVQwODoyOToyNC4xNTU1Njc3MDVaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjQ1NDU1MTQ1NSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgTkVUX0RTQVwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9kc2EvS2NvbmZpZz01PXNvdXJjZSBcXFwiZHJpdmVycy9uZXQvZHNhL2I1My9LY29uZmlnXFxcIlxcbmRyaXZlcnMvbmV0L2RzYS9LY29uZmlnLTYtXFxuZHJpdmVycy9uZXQvZHNhL0tjb25maWc6Nzpjb25maWcgTkVUX0RTQV9CQ01fU0YyXFxuZHJpdmVycy9uZXQvZHNhL0tjb25maWctOC1cXHR0cmlzdGF0ZSBcXFwiQnJvYWRjb20gU3RhcmZpZ2h0ZXIgMiBFdGhlcm5ldCBzd2l0Y2ggc3VwcG9ydFxcXCJcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9LY29uZmlnLTE4LVxcbmRyaXZlcnMvbmV0L2RzYS9LY29uZmlnOjE5OmNvbmZpZyBORVRfRFNBX0xPT1BcXG5kcml2ZXJzL25ldC9kc2EvS2NvbmZpZy0yMC1cXHR0cmlzdGF0ZSBcXFwiRFNBIG1vY2stdXAgRXRoZXJuZXQgc3dpdGNoIGNoaXAgc3VwcG9ydFxcXCJcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9LY29uZmlnPTI5PXNvdXJjZSBcXFwiZHJpdmVycy9uZXQvZHNhL2xhbnRpcS9LY29uZmlnXFxcIlxcbmRyaXZlcnMvbmV0L2RzYS9LY29uZmlnLTMwLVxcbmRyaXZlcnMvbmV0L2RzYS9LY29uZmlnOjMxOmNvbmZpZyBORVRfRFNBX01UNzUzMFxcbmRyaXZlcnMvbmV0L2RzYS9LY29uZmlnLTMyLVxcdHRyaXN0YXRlIFxcXCJNZWRpYVRlayBNVDc1MzAgYW5kIE1UNzUzMSBFdGhlcm5ldCBzd2l0Y2ggc3VwcG9ydFxcXCJcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9LY29uZmlnLTQyLVxcbmRyaXZlcnMvbmV0L2RzYS9LY29uZmlnOjQzOmNvbmZpZyBORVRfRFNBX01UNzUzMF9NRElPXFxuZHJpdmVycy9uZXQvZHNhL0tjb25maWctNDQtXFx0dHJpc3RhdGUgXFxcIk1lZGlhVGVrIE1UNzUzMCBNRElPIGludGVyZmFjZSBkcml2ZXJcXFwiXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvS2NvbmZpZy01My1cXG5kcml2ZXJzL25ldC9kc2EvS2NvbmZpZzo1NDpjb25maWcgTkVUX0RTQV9NVDc1MzBfTU1JT1xcbmRyaXZlcnMvbmV0L2RzYS9LY29uZmlnLTU1LVxcdHRyaXN0YXRlIFxcXCJNZWRpYVRlayBNVDc1MzAgTU1JTyBpbnRlcmZhY2UgZHJpdmVyXFxcIlxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL0tjb25maWctNjUtXFxuZHJpdmVycy9uZXQvZHNhL0tjb25maWc6NjY6Y29uZmlnIE5FVF9EU0FfTVY4OEU2MDYwXFxuZHJpdmVycy9uZXQvZHNhL0tjb25maWctNjctXFx0dHJpc3RhdGUgXFxcIk1hcnZlbGwgODhFNjA2MCBldGhlcm5ldCBzd2l0Y2ggY2hpcCBzdXBwb3J0XFxcIlxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL0tjb25maWc9ODk9c291cmNlIFxcXCJkcml2ZXJzL25ldC9kc2EvcmVhbHRlay9LY29uZmlnXFxcIlxcbmRyaXZlcnMvbmV0L2RzYS9LY29uZmlnLTkwLVxcbmRyaXZlcnMvbmV0L2RzYS9LY29uZmlnOjkxOmNvbmZpZyBORVRfRFNBX1JaTjFfQTVQU1dcXG5kcml2ZXJzL25ldC9kc2EvS2NvbmZpZy05Mi1cXHR0cmlzdGF0ZSBcXFwiUmVuZXNhcyBSWi9OMSBBNVBTVyBFdGhlcm5ldCBzd2l0Y2ggc3VwcG9ydFxcXCJcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9LY29uZmlnLTk5LVxcbmRyaXZlcnMvbmV0L2RzYS9LY29uZmlnOjEwMDpjb25maWcgTkVUX0RTQV9LUzg5OTVcXG5kcml2ZXJzL25ldC9kc2EvS2NvbmZpZy0xMDEtXFx0dHJpc3RhdGUgXFxcIk1pY3JlbCBLUzg5OTUgZmFtaWx5IDUtcG9ydHMgMTAvMTAwIEV0aGVybmV0IHN3aXRjaGVzXFxcIlxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL0tjb25maWctMTA3LVxcbmRyaXZlcnMvbmV0L2RzYS9LY29uZmlnOjEwODpjb25maWcgTkVUX0RTQV9TTVNDX0xBTjkzMDNcXG5kcml2ZXJzL25ldC9kc2EvS2NvbmZpZy0xMDktXFx0dHJpc3RhdGVcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9LY29uZmlnLTExNi1cXG5kcml2ZXJzL25ldC9kc2EvS2NvbmZpZzoxMTc6Y29uZmlnIE5FVF9EU0FfU01TQ19MQU45MzAzX0kyQ1xcbmRyaXZlcnMvbmV0L2RzYS9LY29uZmlnLTExOC1cXHR0cmlzdGF0ZSBcXFwiU01TQy9NaWNyb2NoaXAgTEFOOTMwMyAzLXBvcnRzIDEwLzEwMCBldGhlcm5ldCBzd2l0Y2ggaW4gSTJDIG1hbmFnZWQgbW9kZVxcXCJcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9LY29uZmlnLTEyNi1cXG5kcml2ZXJzL25ldC9kc2EvS2NvbmZpZzoxMjc6Y29uZmlnIE5FVF9EU0FfU01TQ19MQU45MzAzX01ESU9cXG5kcml2ZXJzL25ldC9kc2EvS2NvbmZpZy0xMjgtXFx0dHJpc3RhdGUgXFxcIk1pY3JvY2hpcCBMQU45MzAzL0xBTjkzNTQgMy1wb3J0cyAxMC8xMDAgZXRoZXJuZXQgc3dpdGNoIGluIE1ESU8gbWFuYWdlZCBtb2RlXFxcIlxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL0tjb25maWctMTM0LVxcbmRyaXZlcnMvbmV0L2RzYS9LY29uZmlnOjEzNTpjb25maWcgTkVUX0RTQV9WSVRFU1NFX1ZTQzczWFhcXG5kcml2ZXJzL25ldC9kc2EvS2NvbmZpZy0xMzYtXFx0dHJpc3RhdGVcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9LY29uZmlnLTE0NC1cXG5kcml2ZXJzL25ldC9kc2EvS2NvbmZpZzoxNDU6Y29uZmlnIE5FVF9EU0FfVklURVNTRV9WU0M3M1hYX1NQSVxcbmRyaXZlcnMvbmV0L2RzYS9LY29uZmlnLTE0Ni1cXHR0cmlzdGF0ZSBcXFwiVml0ZXNzZSBWU0M3Mzg1LzczODgvNzM5NS83Mzk4IFNQSSBtb2RlIHN1cHBvcnRcXFwiXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvS2NvbmZpZy0xNTItXFxuZHJpdmVycy9uZXQvZHNhL0tjb25maWc6MTUzOmNvbmZpZyBORVRfRFNBX1ZJVEVTU0VfVlNDNzNYWF9QTEFURk9STVxcbmRyaXZlcnMvbmV0L2RzYS9LY29uZmlnLTE1NC1cXHR0cmlzdGF0ZSBcXFwiVml0ZXNzZSBWU0M3Mzg1LzczODgvNzM5NS83Mzk4IFBsYXRmb3JtIG1vZGUgc3VwcG9ydFxcXCJcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9LY29uZmlnLTE2MS1cXG5kcml2ZXJzL25ldC9kc2EvS2NvbmZpZzoxNjI6Y29uZmlnIE5FVF9EU0FfWVQ5MjFYXFxuZHJpdmVycy9uZXQvZHNhL0tjb25maWctMTYzLVxcdHRyaXN0YXRlIFxcXCJNb3RvcmNvbW0gWVQ5MjE1IGV0aGVybmV0IHN3aXRjaCBjaGlwIHN1cHBvcnRcXFwiXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvaGlyc2NobWFubi9LY29uZmlnLTEtIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMFxcbmRyaXZlcnMvbmV0L2RzYS9oaXJzY2htYW5uL0tjb25maWc6Mjpjb25maWcgTkVUX0RTQV9ISVJTQ0hNQU5OX0hFTExDUkVFS1xcbmRyaXZlcnMvbmV0L2RzYS9oaXJzY2htYW5uL0tjb25maWctMy1cXHR0cmlzdGF0ZSBcXFwiSGlyc2NobWFubiBIZWxsY3JlZWsgVFNOIFN3aXRjaCBzdXBwb3J0XFxcIlxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL2xhbnRpcS9LY29uZmlnOjE6Y29uZmlnIE5FVF9EU0FfTEFOVElRX0NPTU1PTlxcbmRyaXZlcnMvbmV0L2RzYS9sYW50aXEvS2NvbmZpZy0yLVxcdHRyaXN0YXRlXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbGFudGlxL0tjb25maWctNC1cXG5kcml2ZXJzL25ldC9kc2EvbGFudGlxL0tjb25maWc6NTpjb25maWcgTkVUX0RTQV9MQU5USVFfR1NXSVBcXG5kcml2ZXJzL25ldC9kc2EvbGFudGlxL0tjb25maWctNi1cXHR0cmlzdGF0ZSBcXFwiTGFudGlxIC8gSW50ZWwgR1NXSVBcXFwiXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbGFudGlxL0tjb25maWctMTMtXFxuZHJpdmVycy9uZXQvZHNhL2xhbnRpcS9LY29uZmlnOjE0OmNvbmZpZyBORVRfRFNBX01YTF9HU1cxWFhcXG5kcml2ZXJzL25ldC9kc2EvbGFudGlxL0tjb25maWctMTUtXFx0dHJpc3RhdGUgXFxcIk1heExpbmVhciBHU1cxeHggRXRoZXJuZXQgc3dpdGNoIHN1cHBvcnRcXFwiXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL0tjb25maWctMS0jIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL0tjb25maWc6MjptZW51Y29uZmlnIE5FVF9EU0FfTUlDUk9DSElQX0tTWl9DT01NT05cXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL0tjb25maWctMy1cXHR0cmlzdGF0ZSBcXFwiTWljcm9jaGlwIEtTWjhYWFgvS1NaOVhYWC9MQU45MzdYIHNlcmllcyBzd2l0Y2ggc3VwcG9ydFxcXCJcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAvS2NvbmZpZy0xNi1cXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL0tjb25maWc6MTc6Y29uZmlnIE5FVF9EU0FfTUlDUk9DSElQX0tTWjk0NzdfSTJDXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9LY29uZmlnLTE4LVxcdHRyaXN0YXRlIFxcXCJLU1ogc2VyaWVzIEkyQyBjb25uZWN0ZWQgc3dpdGNoIGRyaXZlclxcXCJcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAvS2NvbmZpZy0yMy1cXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL0tjb25maWc6MjQ6Y29uZmlnIE5FVF9EU0FfTUlDUk9DSElQX0tTWl9TUElcXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL0tjb25maWctMjUtXFx0dHJpc3RhdGUgXFxcIktTWiBzZXJpZXMgU1BJIGNvbm5lY3RlZCBzd2l0Y2ggZHJpdmVyXFxcIlxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9LY29uZmlnLTMwLVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAvS2NvbmZpZzozMTpjb25maWcgTkVUX0RTQV9NSUNST0NISVBfS1NaX1BUUFxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAvS2NvbmZpZy0zMi1cXHRib29sIFxcXCJTdXBwb3J0IGZvciB0aGUgUFRQIGNsb2NrIG9uIHRoZSBLU1o5NTYzL0xBTjkzN3ggRXRoZXJuZXQgU3dpdGNoXFxcIlxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9LY29uZmlnLTQwLVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAvS2NvbmZpZzo0MTpjb25maWcgTkVUX0RTQV9NSUNST0NISVBfS1NaODg2M19TTUlcXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL0tjb25maWctNDItXFx0dHJpc3RhdGUgXFxcIktTWiBzZXJpZXMgU01JIGNvbm5lY3RlZCBzd2l0Y2ggZHJpdmVyXFxcIlxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9LY29uZmlnLTEtIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9LY29uZmlnOjI6Y29uZmlnIE5FVF9EU0FfTVY4OEU2WFhYXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9LY29uZmlnLTMtXFx0dHJpc3RhdGUgXFxcIk1hcnZlbGwgODhFNnh4eCBFdGhlcm5ldCBzd2l0Y2ggZmFicmljIHN1cHBvcnRcXFwiXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L0tjb25maWctMTEtXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9LY29uZmlnOjEyOmNvbmZpZyBORVRfRFNBX01WODhFNlhYWF9QVFBcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L0tjb25maWctMTMtXFx0Ym9vbCBcXFwiUFRQIHN1cHBvcnQgZm9yIE1hcnZlbGwgODhFNnh4eFxcXCJcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvS2NvbmZpZy0yMC1cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L0tjb25maWc6MjE6Y29uZmlnIE5FVF9EU0FfTVY4OEU2WFhYX0xFRFNcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L0tjb25maWctMjItXFx0Ym9vbCBcXFwiTEVEIHN1cHBvcnQgZm9yIE1hcnZlbGwgODhFNnh4eFxcXCJcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9LY29uZmlnLTEtIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XFxuZHJpdmVycy9uZXQvZHNhL214bDg2Mnh4L0tjb25maWc6Mjpjb25maWcgTkVUX0RTQV9NWEw4NjJcXG5kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvS2NvbmZpZy0zLVxcdHRyaXN0YXRlIFxcXCJNYXhMaW5lYXIgTXhMODYyeHhcXFwiXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbmV0Yy9LY29uZmlnLTEtIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XFxuZHJpdmVycy9uZXQvZHNhL25ldGMvS2NvbmZpZzoyOmNvbmZpZyBORVRfRFNBX05FVENfU1dJVENIXFxuZHJpdmVycy9uZXQvZHNhL25ldGMvS2NvbmZpZy0zLVxcdHRyaXN0YXRlIFxcXCJOWFAgTkVUQyBFdGhlcm5ldCBzd2l0Y2ggc3VwcG9ydFxcXCJcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9vY2Vsb3QvS2NvbmZpZy0xLSMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxcbmRyaXZlcnMvbmV0L2RzYS9vY2Vsb3QvS2NvbmZpZzoyOmNvbmZpZyBORVRfRFNBX01TQ0NfRkVMSVhfRFNBX0xJQlxcbmRyaXZlcnMvbmV0L2RzYS9vY2Vsb3QvS2NvbmZpZy0zLVxcdHRyaXN0YXRlXFxuLS1cXG5kcml2ZXJzL25ldC9kc2Evb2NlbG90L0tjb25maWctMTAtXFxuZHJpdmVycy9uZXQvZHNhL29jZWxvdC9LY29uZmlnOjExOmNvbmZpZyBORVRfRFNBX01TQ0NfT0NFTE9UX0VYVFxcbmRyaXZlcnMvbmV0L2RzYS9vY2Vsb3QvS2NvbmZpZy0xMi1cXHR0cmlzdGF0ZSBcXFwiT2NlbG90IEV4dGVybmFsIEV0aGVybmV0IHN3aXRjaCBzdXBwb3J0XFxcIlxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL29jZWxvdC9LY29uZmlnLTMxLVxcbmRyaXZlcnMvbmV0L2RzYS9vY2Vsb3QvS2NvbmZpZzozMjpjb25maWcgTkVUX0RTQV9NU0NDX0ZFTElYXFxuZHJpdmVycy9uZXQvZHNhL29jZWxvdC9LY29uZmlnLTMzLVxcdHRyaXN0YXRlIFxcXCJPY2Vsb3QgLyBGZWxpeCBFdGhlcm5ldCBzd2l0Y2ggc3VwcG9ydFxcXCJcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9vY2Vsb3QvS2NvbmZpZy00OS1cXG5kcml2ZXJzL25ldC9kc2Evb2NlbG90L0tjb25maWc6NTA6Y29uZmlnIE5FVF9EU0FfTVNDQ19TRVZJTExFXFxuZHJpdmVycy9uZXQvZHNhL29jZWxvdC9LY29uZmlnLTUxLVxcdHRyaXN0YXRlIFxcXCJPY2Vsb3QgLyBTZXZpbGxlIEV0aGVybmV0IHN3aXRjaCBzdXBwb3J0XFxcIlxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL3FjYS9LY29uZmlnLTEtIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XFxuZHJpdmVycy9uZXQvZHNhL3FjYS9LY29uZmlnOjI6Y29uZmlnIE5FVF9EU0FfQVI5MzMxXFxuZHJpdmVycy9uZXQvZHNhL3FjYS9LY29uZmlnLTMtXFx0dHJpc3RhdGUgXFxcIlF1YWxjb21tIEF0aGVyb3MgQVI5MzMxIEV0aGVybmV0IHN3aXRjaCBzdXBwb3J0XFxcIlxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL3FjYS9LY29uZmlnLTEwLVxcbmRyaXZlcnMvbmV0L2RzYS9xY2EvS2NvbmZpZzoxMTpjb25maWcgTkVUX0RTQV9RQ0E4S1xcbmRyaXZlcnMvbmV0L2RzYS9xY2EvS2NvbmZpZy0xMi1cXHR0cmlzdGF0ZSBcXFwiUXVhbGNvbW0gQXRoZXJvcyBRQ0E4SyBFdGhlcm5ldCBzd2l0Y2ggZmFtaWx5IHN1cHBvcnRcXFwiXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvcWNhL0tjb25maWctMTgtXFxuZHJpdmVycy9uZXQvZHNhL3FjYS9LY29uZmlnOjE5OmNvbmZpZyBORVRfRFNBX1FDQThLX0xFRFNfU1VQUE9SVFxcbmRyaXZlcnMvbmV0L2RzYS9xY2EvS2NvbmZpZy0yMC1cXHRib29sIFxcXCJRdWFsY29tbSBBdGhlcm9zIFFDQThLIEV0aGVybmV0IHN3aXRjaCBmYW1pbHkgTEVEcyBzdXBwb3J0XFxcIlxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvS2NvbmZpZy0xLSMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL0tjb25maWc6MjptZW51Y29uZmlnIE5FVF9EU0FfUkVBTFRFS1xcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL0tjb25maWctMy1cXHR0cmlzdGF0ZSBcXFwiUmVhbHRlayBFdGhlcm5ldCBzd2l0Y2ggZmFtaWx5IHN1cHBvcnRcXFwiXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9LY29uZmlnPTE2PWlmIE5FVF9EU0FfUkVBTFRFS1xcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL0tjb25maWctMTctXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvS2NvbmZpZzoxODpjb25maWcgTkVUX0RTQV9SRUFMVEVLX01ESU9cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9LY29uZmlnLTE5LVxcdGJvb2wgXFxcIlJlYWx0ZWsgTURJTyBpbnRlcmZhY2Ugc3VwcG9ydFxcXCJcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL0tjb25maWctMjQtXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvS2NvbmZpZzoyNTpjb25maWcgTkVUX0RTQV9SRUFMVEVLX1NNSVxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL0tjb25maWctMjYtXFx0Ym9vbCBcXFwiUmVhbHRlayBTTUkgaW50ZXJmYWNlIHN1cHBvcnRcXFwiXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9LY29uZmlnLTMxLVxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL0tjb25maWc6MzI6Y29uZmlnIE5FVF9EU0FfUkVBTFRFS19SVEw4MzY1TUJcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9LY29uZmlnLTMzLVxcdHRyaXN0YXRlIFxcXCJSZWFsdGVrIFJUTDgzNjVNQiBzd2l0Y2ggZHJpdmVyXFxcIlxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvS2NvbmZpZy0zOC1cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9LY29uZmlnOjM5OmNvbmZpZyBORVRfRFNBX1JFQUxURUtfUlRMODM2NlJCXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvS2NvbmZpZy00MC1cXHR0cmlzdGF0ZSBcXFwiUmVhbHRlayBSVEw4MzY2UkIgc3dpdGNoIGRyaXZlclxcXCJcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL0tjb25maWctNDUtXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvS2NvbmZpZzo0Njpjb25maWcgTkVUX0RTQV9SRUFMVEVLX1JUTDgzNjZSQl9MRURTXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvS2NvbmZpZy00Ny1cXHRib29sXFxuLS1cXG5kcml2ZXJzL25ldC9kc2Evc2phMTEwNS9LY29uZmlnLTEtIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XFxuZHJpdmVycy9uZXQvZHNhL3NqYTExMDUvS2NvbmZpZzoyOmNvbmZpZyBORVRfRFNBX1NKQTExMDVcXG5kcml2ZXJzL25ldC9kc2Evc2phMTEwNS9LY29uZmlnLTMtdHJpc3RhdGUgXFxcIk5YUCBTSkExMTA1IEV0aGVybmV0IHN3aXRjaCBmYW1pbHkgc3VwcG9ydFxcXCJcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9zamExMTA1L0tjb25maWctMjUtXFxuZHJpdmVycy9uZXQvZHNhL3NqYTExMDUvS2NvbmZpZzoyNjpjb25maWcgTkVUX0RTQV9TSkExMTA1X1BUUFxcbmRyaXZlcnMvbmV0L2RzYS9zamExMTA1L0tjb25maWctMjctXFx0Ym9vbCBcXFwiU3VwcG9ydCBmb3IgdGhlIFBUUCBjbG9jayBvbiB0aGUgTlhQIFNKQTExMDUgRXRoZXJuZXQgc3dpdGNoXFxcIlxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL3NqYTExMDUvS2NvbmZpZy0zMy1cXG5kcml2ZXJzL25ldC9kc2Evc2phMTEwNS9LY29uZmlnOjM0OmNvbmZpZyBORVRfRFNBX1NKQTExMDVfVEFTXFxuZHJpdmVycy9uZXQvZHNhL3NqYTExMDUvS2NvbmZpZy0zNS1cXHRib29sIFxcXCJTdXBwb3J0IGZvciB0aGUgVGltZS1Bd2FyZSBTY2hlZHVsZXIgb24gTlhQIFNKQTExMDVcXFwiXFxuLS1cXG5kcml2ZXJzL25ldC9kc2Evc2phMTEwNS9LY29uZmlnLTQzLVxcbmRyaXZlcnMvbmV0L2RzYS9zamExMTA1L0tjb25maWc6NDQ6Y29uZmlnIE5FVF9EU0FfU0pBMTEwNV9WTFxcbmRyaXZlcnMvbmV0L2RzYS9zamExMTA1L0tjb25maWctNDUtXFx0Ym9vbCBcXFwiU3VwcG9ydCBmb3IgVmlydHVhbCBMaW5rcyBvbiBOWFAgU0pBMTEwNVxcXCJcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS94cnM3MDB4L0tjb25maWctMS0jIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcXG5kcml2ZXJzL25ldC9kc2EveHJzNzAweC9LY29uZmlnOjI6Y29uZmlnIE5FVF9EU0FfWFJTNzAwWFxcbmRyaXZlcnMvbmV0L2RzYS94cnM3MDB4L0tjb25maWctMy1cXHR0cmlzdGF0ZVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL3hyczcwMHgvS2NvbmZpZy0xMC1cXG5kcml2ZXJzL25ldC9kc2EveHJzNzAweC9LY29uZmlnOjExOmNvbmZpZyBORVRfRFNBX1hSUzcwMFhfSTJDXFxuZHJpdmVycy9uZXQvZHNhL3hyczcwMHgvS2NvbmZpZy0xMi1cXHR0cmlzdGF0ZSBcXFwiQXJyb3cgWFJTNzAwMFggc2VyaWVzIHN3aXRjaCBpbiBJMkMgbW9kZVxcXCJcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS94cnM3MDB4L0tjb25maWctMTktXFxuZHJpdmVycy9uZXQvZHNhL3hyczcwMHgvS2NvbmZpZzoyMDpjb25maWcgTkVUX0RTQV9YUlM3MDBYX01ESU9cXG5kcml2ZXJzL25ldC9kc2EveHJzNzAweC9LY29uZmlnLTIxLVxcdHRyaXN0YXRlIFxcXCJBcnJvdyBYUlM3MDAwWCBzZXJpZXMgc3dpdGNoIGluIE1ESU8gbW9kZVxcXCJcXG4tLVxcbm5ldC9kc2EvS2NvbmZpZy0yLVxcbm5ldC9kc2EvS2NvbmZpZzozOm1lbnVjb25maWcgTkVUX0RTQVxcbm5ldC9kc2EvS2NvbmZpZy00LVxcdHRyaXN0YXRlIFxcXCJEaXN0cmlidXRlZCBTd2l0Y2ggQXJjaGl0ZWN0dXJlXFxcIlxcbi0tXFxubmV0L2RzYS9LY29uZmlnPTE3PWlmIE5FVF9EU0FcXG4tLVxcbm5ldC9kc2EvS2NvbmZpZy0yMC1cXG5uZXQvZHNhL0tjb25maWc6MjE6Y29uZmlnIE5FVF9EU0FfVEFHX05PTkVcXG5uZXQvZHNhL0tjb25maWctMjItXFx0dHJpc3RhdGUgXFxcIk5vLW9wIHRhZyBkcml2ZXJcXFwiXFxuLS1cXG5uZXQvZHNhL0tjb25maWctMjYtXFxubmV0L2RzYS9LY29uZmlnOjI3OmNvbmZpZyBORVRfRFNBX1RBR19BUjkzMzFcXG5uZXQvZHNhL0tjb25maWctMjgtXFx0dHJpc3RhdGUgXFxcIlRhZyBkcml2ZXIgZm9yIEF0aGVyb3MgQVI5MzMxIFNvQyB3aXRoIGJ1aWx0LWluIHN3aXRjaFxcXCJcXG4tLVxcbm5ldC9kc2EvS2NvbmZpZy0zMi1cXG5uZXQvZHNhL0tjb25maWc6MzM6Y29uZmlnIE5FVF9EU0FfVEFHX0JSQ01fQ09NTU9OXFxubmV0L2RzYS9LY29uZmlnLTM0LVxcdHRyaXN0YXRlXFxuLS1cXG5uZXQvZHNhL0tjb25maWctMzYtXFxubmV0L2RzYS9LY29uZmlnOjM3OmNvbmZpZyBORVRfRFNBX1RBR19CUkNNXFxubmV0L2RzYS9LY29uZmlnLTM4LVxcdHRyaXN0YXRlIFxcXCJUYWcgZHJpdmVyIGZvciBCcm9hZGNvbSBzd2l0Y2hlcyB1c2luZyBpbi1mcmFtZSBoZWFkZXJzXFxcIlxcbi0tXFxubmV0L2RzYS9LY29uZmlnLTQzLVxcbm5ldC9kc2EvS2NvbmZpZzo0NDpjb25maWcgTkVUX0RTQV9UQUdfQlJDTV9MRUdBQ1lcXG5uZXQvZHNhL0tjb25maWctNDUtXFx0dHJpc3RhdGUgXFxcIlRhZyBkcml2ZXIgZm9yIEJDTTYzeHggbGVnYWN5IHN3aXRjaGVzIHVzaW5nIGluLWZyYW1lIGhlYWRlcnNcXFwiXFxuLS1cXG5uZXQvZHNhL0tjb25maWctNTMtXFxubmV0L2RzYS9LY29uZmlnOjU0OmNvbmZpZyBORVRfRFNBX1RBR19CUkNNX0xFR0FDWV9GQ1NcXG5uZXQvZHNhL0tjb25maWctNTUtXFx0dHJpc3RhdGUgXFxcIlRhZyBkcml2ZXIgZm9yIEJDTTUzeHggbGVnYWN5IHN3aXRjaGVzIHVzaW5nIGluLWZyYW1lIGhlYWRlcnNcXFwiXFxuLS1cXG5uZXQvZHNhL0tjb25maWctNjMtXFxubmV0L2RzYS9LY29uZmlnOjY0OmNvbmZpZyBORVRfRFNBX1RBR19CUkNNX1BSRVBFTkRcXG5uZXQvZHNhL0tjb25maWctNjUtXFx0dHJpc3RhdGUgXFxcIlRhZyBkcml2ZXIgZm9yIEJyb2FkY29tIHN3aXRjaGVzIHVzaW5nIHByZXBlbmRlZCBoZWFkZXJzXFxcIlxcbi0tXFxubmV0L2RzYS9LY29uZmlnLTcxLVxcbm5ldC9kc2EvS2NvbmZpZzo3Mjpjb25maWcgTkVUX0RTQV9UQUdfSEVMTENSRUVLXFxubmV0L2RzYS9LY29uZmlnLTczLVxcdHRyaXN0YXRlIFxcXCJUYWcgZHJpdmVyIGZvciBIaXJzY2htYW5uIEhlbGxjcmVlayBUU04gc3dpdGNoZXNcXFwiXFxuLS1cXG5uZXQvZHNhL0tjb25maWctNzctXFxubmV0L2RzYS9LY29uZmlnOjc4OmNvbmZpZyBORVRfRFNBX1RBR19HU1dJUFxcbm5ldC9kc2EvS2NvbmZpZy03OS1cXHR0cmlzdGF0ZSBcXFwiVGFnIGRyaXZlciBmb3IgTGFudGlxIC8gSW50ZWwgR1NXSVAgc3dpdGNoZXNcXFwiXFxuLS1cXG5uZXQvZHNhL0tjb25maWctODMtXFxubmV0L2RzYS9LY29uZmlnOjg0OmNvbmZpZyBORVRfRFNBX1RBR19EU0FfQ09NTU9OXFxubmV0L2RzYS9LY29uZmlnLTg1LVxcdHRyaXN0YXRlXFxubmV0L2RzYS9LY29uZmlnLTg2LVxcbm5ldC9kc2EvS2NvbmZpZzo4Nzpjb25maWcgTkVUX0RTQV9UQUdfRFNBXFxubmV0L2RzYS9LY29uZmlnLTg4LVxcdHRyaXN0YXRlIFxcXCJUYWcgZHJpdmVyIGZvciBNYXJ2ZWxsIHN3aXRjaGVzIHVzaW5nIERTQSBoZWFkZXJzXFxcIlxcbi0tXFxubmV0L2RzYS9LY29uZmlnLTkzLVxcbm5ldC9kc2EvS2NvbmZpZzo5NDpjb25maWcgTkVUX0RTQV9UQUdfRURTQVxcbm5ldC9kc2EvS2NvbmZpZy05NS1cXHR0cmlzdGF0ZSBcXFwiVGFnIGRyaXZlciBmb3IgTWFydmVsbCBzd2l0Y2hlcyB1c2luZyBFdGhlclR5cGUgRFNBIGhlYWRlcnNcXFwiXFxuLS1cXG5uZXQvZHNhL0tjb25maWctMTAwLVxcbm5ldC9kc2EvS2NvbmZpZzoxMDE6Y29uZmlnIE5FVF9EU0FfVEFHX01US1xcbm5ldC9kc2EvS2NvbmZpZy0xMDItXFx0dHJpc3RhdGUgXFxcIlRhZyBkcml2ZXIgZm9yIE1lZGlhdGVrIHN3aXRjaGVzXFxcIlxcbi0tXFxubmV0L2RzYS9LY29uZmlnLTEwNi1cXG5uZXQvZHNhL0tjb25maWc6MTA3OmNvbmZpZyBORVRfRFNBX1RBR19NWExfODYyWFhcXG5uZXQvZHNhL0tjb25maWctMTA4LVxcdHRyaXN0YXRlIFxcXCJUYWcgZHJpdmVyIGZvciBNYXhMaW5lYXIgTXhMODYyeHggc3dpdGNoZXNcXFwiXFxuLS1cXG5uZXQvZHNhL0tjb25maWctMTEzLVxcbm5ldC9kc2EvS2NvbmZpZzoxMTQ6Y29uZmlnIE5FVF9EU0FfVEFHX01YTF9HU1cxWFhcXG5uZXQvZHNhL0tjb25maWctMTE1LVxcdHRyaXN0YXRlIFxcXCJUYWcgZHJpdmVyIGZvciBNYXhMaW5lYXIgR1NXMXh4IHN3aXRjaGVzXFxcIlxcbi0tXFxubmV0L2RzYS9LY29uZmlnLTEyMS1cXG5uZXQvZHNhL0tjb25maWc6MTIyOmNvbmZpZyBORVRfRFNBX1RBR19LU1pcXG5uZXQvZHNhL0tjb25maWctMTIzLVxcdHRyaXN0YXRlIFxcXCJUYWcgZHJpdmVyIGZvciBNaWNyb2NoaXAgODc5NS85Mzd4Lzk0NzcvOTg5MyBmYW1pbGllcyBvZiBzd2l0Y2hlc1xcXCJcXG4tLVxcbm5ldC9kc2EvS2NvbmZpZy0xMjctXFxubmV0L2RzYS9LY29uZmlnOjEyODpjb25maWcgTkVUX0RTQV9UQUdfTkVUQ1xcbm5ldC9kc2EvS2NvbmZpZy0xMjktXFx0dHJpc3RhdGUgXFxcIlRhZyBkcml2ZXIgZm9yIE5YUCBORVRDIHN3aXRjaGVzXFxcIlxcbi0tXFxubmV0L2RzYS9LY29uZmlnLTEzNy1cXG5uZXQvZHNhL0tjb25maWc6MTM4OmNvbmZpZyBORVRfRFNBX1RBR19PQ0VMT1RcXG5uZXQvZHNhL0tjb25maWctMTM5LVxcdHRyaXN0YXRlIFxcXCJUYWcgZHJpdmVyIGZvciBPY2Vsb3QgZmFtaWx5IG9mIHN3aXRjaGVzLCB1c2luZyBOUEkgcG9ydFxcXCJcXG4tLVxcbm5ldC9kc2EvS2NvbmZpZy0xNDgtXFxubmV0L2RzYS9LY29uZmlnOjE0OTpjb25maWcgTkVUX0RTQV9UQUdfT0NFTE9UXzgwMjFRXFxubmV0L2RzYS9LY29uZmlnLTE1MC1cXHR0cmlzdGF0ZSBcXFwiVGFnIGRyaXZlciBmb3IgT2NlbG90IGZhbWlseSBvZiBzd2l0Y2hlcywgdXNpbmcgVkxBTlxcXCJcXG4tLVxcbm5ldC9kc2EvS2NvbmZpZy0xNTgtXFxubmV0L2RzYS9LY29uZmlnOjE1OTpjb25maWcgTkVUX0RTQV9UQUdfUUNBXFxubmV0L2RzYS9LY29uZmlnLTE2MC1cXHR0cmlzdGF0ZSBcXFwiVGFnIGRyaXZlciBmb3IgUXVhbGNvbW0gQXRoZXJvcyBRQ0E4SyBzd2l0Y2hlc1xcXCJcXG4tLVxcbm5ldC9kc2EvS2NvbmZpZy0xNjQtXFxubmV0L2RzYS9LY29uZmlnOjE2NTpjb25maWcgTkVUX0RTQV9UQUdfUlRMNF9BXFxubmV0L2RzYS9LY29uZmlnLTE2Ni1cXHR0cmlzdGF0ZSBcXFwiVGFnIGRyaXZlciBmb3IgUmVhbHRlayA0IGJ5dGUgcHJvdG9jb2wgQSB0YWdzXFxcIlxcbi0tXFxubmV0L2RzYS9LY29uZmlnLTE3MS1cXG5uZXQvZHNhL0tjb25maWc6MTcyOmNvbmZpZyBORVRfRFNBX1RBR19SVEw4XzRcXG5uZXQvZHNhL0tjb25maWctMTczLVxcdHRyaXN0YXRlIFxcXCJUYWcgZHJpdmVyIGZvciBSZWFsdGVrIDggYnl0ZSBwcm90b2NvbCA0IHRhZ3NcXFwiXFxuLS1cXG5uZXQvZHNhL0tjb25maWctMTc3LVxcbm5ldC9kc2EvS2NvbmZpZzoxNzg6Y29uZmlnIE5FVF9EU0FfVEFHX1JaTjFfQTVQU1dcXG5uZXQvZHNhL0tjb25maWctMTc5LVxcdHRyaXN0YXRlIFxcXCJUYWcgZHJpdmVyIGZvciBSZW5lc2FzIFJaL04xIEE1UFNXIHN3aXRjaFxcXCJcXG4tLVxcbm5ldC9kc2EvS2NvbmZpZy0xODQtXFxubmV0L2RzYS9LY29uZmlnOjE4NTpjb25maWcgTkVUX0RTQV9UQUdfTEFOOTMwM1xcbm5ldC9kc2EvS2NvbmZpZy0xODYtXFx0dHJpc3RhdGUgXFxcIlRhZyBkcml2ZXIgZm9yIFNNU0MvTWljcm9jaGlwIExBTjkzMDMgZmFtaWx5IG9mIHN3aXRjaGVzXFxcIlxcbi0tXFxubmV0L2RzYS9LY29uZmlnLTE5MC1cXG5uZXQvZHNhL0tjb25maWc6MTkxOmNvbmZpZyBORVRfRFNBX1RBR19TSkExMTA1XFxubmV0L2RzYS9LY29uZmlnLTE5Mi1cXHR0cmlzdGF0ZSBcXFwiVGFnIGRyaXZlciBmb3IgTlhQIFNKQTExMDUgc3dpdGNoZXNcXFwiXFxuLS1cXG5uZXQvZHNhL0tjb25maWctMTk5LVxcbm5ldC9kc2EvS2NvbmZpZzoyMDA6Y29uZmlnIE5FVF9EU0FfVEFHX1RSQUlMRVJcXG5uZXQvZHNhL0tjb25maWctMjAxLVxcdHRyaXN0YXRlIFxcXCJUYWcgZHJpdmVyIGZvciBzd2l0Y2hlcyB1c2luZyBhIHRyYWlsZXIgdGFnXFxcIlxcbi0tXFxubmV0L2RzYS9LY29uZmlnLTIwNS1cXG5uZXQvZHNhL0tjb25maWc6MjA2OmNvbmZpZyBORVRfRFNBX1RBR19WU0M3M1hYXzgwMjFRXFxubmV0L2RzYS9LY29uZmlnLTIwNy1cXHR0cmlzdGF0ZSBcXFwiVGFnIGRyaXZlciBmb3IgTWljcm9jaGlwL1ZpdGVzc2UgVlNDNzN4eCBmYW1pbHkgb2Ygc3dpdGNoZXMsIHVzaW5nIFZMQU5cXFwiXFxuLS1cXG5uZXQvZHNhL0tjb25maWctMjExLVxcbm5ldC9kc2EvS2NvbmZpZzoyMTI6Y29uZmlnIE5FVF9EU0FfVEFHX1hSUzcwMFhcXG5uZXQvZHNhL0tjb25maWctMjEzLVxcdHRyaXN0YXRlIFxcXCJUYWcgZHJpdmVyIGZvciBYUlM3MDB4IHN3aXRjaGVzXFxcIlxcbi0tXFxubmV0L2RzYS9LY29uZmlnLTIxNy1cXG5uZXQvZHNhL0tjb25maWc6MjE4OmNvbmZpZyBORVRfRFNBX1RBR19ZVDkyMVhcXG5uZXQvZHNhL0tjb25maWctMjE5LVxcdHRyaXN0YXRlIFxcXCJUYWcgZHJpdmVyIGZvciBNb3RvcmNvbW0gWVQ5MjF4IHN3aXRjaGVzXFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0yNVQwODoyOToyNi42MTAxMjcyM1oiLCJTZXEiOjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMzODA0NDU3OTgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqRW5hYmxpbmcgRFNBIGZvciBGdXp6aW5nKipcblxuT2theSwgc28gd2UncmUgbG9va2luZyB0byBleHBhbmQgb3VyIGZ1enppbmcgY2FwYWJpbGl0aWVzIHdpdGhpbiB0aGUgbmV0d29ya2luZyBzdGFjay4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHdlIG5lZWQgdG8gZW5hYmxlIGBORVRfRFNBYCBhbmQgYWxzbyBzb21lIG9mIHRob3NlIHRhZ2dlcnMuIEJ1dCBob2xkIG9uLCBJIHJlbWVtYmVyIGBORVRfRFNBX0xPT1BgIOKAkyB0aGF0J3MgdGhlIG1vY2stdXAgc3dpdGNoIGNoaXAgc3VwcG9ydCwgaXNuJ3QgaXQ/IEJpbmdvISBUaGF0J3MgYSBwZXJmZWN0IGNhbmRpZGF0ZSBmb3IgZGVlcGVyIERTQSBmdXp6aW5nLiBUaGUgc2ltdWxhdGVkIGVudmlyb25tZW50IGl0IHByb3ZpZGVzIHNlZW1zIGlkZWFsLiBOb3csIGJlZm9yZSB3ZSBkaXZlIGluLCBJIG5lZWQgdG8gY29uZmlybSB0aGUgZGVwZW5kZW5jaWVzIGZvciBgTkVUX0RTQV9MT09QYC4gTGV0IG1lIHF1aWNrbHkgY2hlY2sgdGhvc2XigKYgZ290dGEgbWFrZSBzdXJlIGV2ZXJ5dGhpbmcgaXMgaW4gcGxhY2UgdG8gbWluaW1pemUgYW55IHNldHVwIGhlYWRhY2hlcy5cblxuXG4iLCJJbnB1dFRva2VucyI6MjY2ODksIk91dHB1dFRva2VucyI6MjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo1NywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNi0yNVQwODoyOToyOS45OTA1NzgwMjhaIiwiU2VxIjo4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjM0NTI5NjU0NywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgTkVUX0RTQV9MT09QXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L2RzYS9LY29uZmlnPTc9Y29uZmlnIE5FVF9EU0FfQkNNX1NGMlxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL0tjb25maWctMTgtXFxuZHJpdmVycy9uZXQvZHNhL0tjb25maWc6MTk6Y29uZmlnIE5FVF9EU0FfTE9PUFxcbmRyaXZlcnMvbmV0L2RzYS9LY29uZmlnLTIwLVxcdHRyaXN0YXRlIFxcXCJEU0EgbW9jay11cCBFdGhlcm5ldCBzd2l0Y2ggY2hpcCBzdXBwb3J0XFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0yNVQwODoyOTozMi4zMzU4ODAyNTVaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1Nzk1NDQxNTQzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdGhvdWdodCBwcm9jZXNzLCBzdW1tYXJpemVkIGFzIHlvdSByZXF1ZXN0ZWQ6XG5cbioqTmF2aWdhdGluZyB0aGUgQ29kZWJhc2U6IE5FVF9EU0FfTE9PUCBDb25maWd1cmF0aW9uKipcblxuT2theSwgc28gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGNvbmZpZ3VyYXRpb24gcmVsYXRlZCB0byB0aGUgYE5FVF9EU0FfTE9PUGAgZnVuY3Rpb25hbGl0eSB3aXRoaW4gdGhlIG5ldHdvcmsgRFNBIHN1YnN5c3RlbS4gV2hlcmUgd291bGQgdGhlIHJlbGV2YW50IHNldHRpbmdzIGJlIGRlZmluZWQ/IE15IGluaXRpYWwgaW5zdGluY3QgaXMgdG8gZ28gc3RyYWlnaHQgdG8gdGhlIGNvbmZpZ3VyYXRpb24gZmlsZXMuIEdpdmVuIHRoZSBuYXR1cmUgb2YgdGhpcyBmZWF0dXJlLCBJJ20gZXhwZWN0aW5nIHRvIGZpbmQgaXQgd2l0aGluIHRoZSBgZHJpdmVycy9uZXQvZHNhYCBkaXJlY3RvcnksIHdoaWNoIGlzIHRoZSBzdGFuZGFyZCBsb2NhdGlvbiBmb3IgRFNBIChEaXN0cmlidXRlZCBTd2l0Y2ggQXJjaGl0ZWN0dXJlKSByZWxhdGVkIGRyaXZlcnMuIE1vcmUgc3BlY2lmaWNhbGx5LCBJIHNob3VsZCBiZSBhYmxlIHRvIGRpZyBhcm91bmQgaW4gYEtjb25maWdgIGZpbGVzIGZvciBjb25maWd1cmF0aW9uIG9wdGlvbnMuIFRoZXJlZm9yZSwgSSB3aWxsIGNoZWNrIHRoZSBgZHJpdmVycy9uZXQvZHNhL0tjb25maWdgIGZpbGUuIFRoYXQncyB0aGUgbW9zdCBsb2dpY2FsIHN0YXJ0aW5nIHBvaW50IGZvciB1bmRlcnN0YW5kaW5nIGhvdyB0aGlzIGZlYXR1cmUgaXMgZW5hYmxlZCwgZGlzYWJsZWQsIGFuZCBjb25maWd1cmVkLiBJJ20gZXhwZWN0aW5nIHRvIGZpbmQgYSBjb25kaXRpb25hbCBzdGF0ZW1lbnQgb3IgZGVmaW5pdGlvbiBhc3NvY2lhdGVkIHdpdGggYE5FVF9EU0FfTE9PUGAgaW4gdGhlcmUuIExldCdzIHNlZSB3aGF0J3MgaW4gYGRyaXZlcnMvbmV0L2RzYS9LY29uZmlnYC5cblxuXG4iLCJJbnB1dFRva2VucyI6MjcwMDcsIk91dHB1dFRva2VucyI6MzYsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyNCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNi0yNVQwODoyOTozOC4xMzEzMjQ2NjhaIiwiU2VxIjoxMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTA4MzEwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L2RzYS9LY29uZmlnXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDE1LFxuICBcIkxpbmVDb3VudFwiOiAyMFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgIDE1OlxcdFxcdGhlbHBcXG4gIDE2OlxcdFxcdCAgVGhpcyBlbmFibGVzIHN1cHBvcnQgZm9yIHRoZSBCcm9hZGNvbSBTdGFyZmlnaHRlciAyIEV0aGVybmV0XFxuICAxNzpcXHRcXHQgIHN3aXRjaCBjaGlwcy5cXG4gIDE4OlxcdFxcbiAgMTk6XFx0Y29uZmlnIE5FVF9EU0FfTE9PUFxcbiAgMjA6XFx0XFx0dHJpc3RhdGUgXFxcIkRTQSBtb2NrLXVwIEV0aGVybmV0IHN3aXRjaCBjaGlwIHN1cHBvcnRcXFwiXFxuICAyMTpcXHRcXHRzZWxlY3QgTkVUX0RTQV9UQUdfTk9ORVxcbiAgMjI6XFx0XFx0c2VsZWN0IEZJWEVEX1BIWVxcbiAgMjM6XFx0XFx0aGVscFxcbiAgMjQ6XFx0XFx0ICBUaGlzIGVuYWJsZXMgc3VwcG9ydCBmb3IgYSBmYWtlIG1vY2stdXAgc3dpdGNoIGNoaXAgd2hpY2hcXG4gIDI1OlxcdFxcdCAgZXhlcmNpc2VzIHRoZSBEU0EgQVBJcy5cXG4gIDI2OlxcdFxcbiAgMjc6XFx0c291cmNlIFxcXCJkcml2ZXJzL25ldC9kc2EvaGlyc2NobWFubi9LY29uZmlnXFxcIlxcbiAgMjg6XFx0XFxuICAyOTpcXHRzb3VyY2UgXFxcImRyaXZlcnMvbmV0L2RzYS9sYW50aXEvS2NvbmZpZ1xcXCJcXG4gIDMwOlxcdFxcbiAgMzE6XFx0Y29uZmlnIE5FVF9EU0FfTVQ3NTMwXFxuICAzMjpcXHRcXHR0cmlzdGF0ZSBcXFwiTWVkaWFUZWsgTVQ3NTMwIGFuZCBNVDc1MzEgRXRoZXJuZXQgc3dpdGNoIHN1cHBvcnRcXFwiXFxuICAzMzpcXHRcXHRzZWxlY3QgTkVUX0RTQV9UQUdfTVRLXFxuICAzNDpcXHRcXHRzZWxlY3QgUkVHTUFQX0lSUVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0yNVQwODoyOTozOC4xMzE0MzU5MThaIiwiU2VxIjoxMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6OTk4Mjg0Mzg5NiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipJbnZlc3RpZ2F0aW5nIHRoZSBEU0EgTG9vcCBhbmQgVGFnZ2luZyBPcHRpb25zKipcblxuT2theSwgc28gYE5FVF9EU0FfTE9PUGAgaXMgY29uZmlndXJlZCB0byB1c2UgYE5FVF9EU0FfVEFHX05PTkVgIGJ5IGRlZmF1bHQuIFRoYXQncyBmaW5lLCBidXQgdGhpcyBwYXRjaCBzZWVtcyB0byBiZSB0b3VjaGluZyBhbGwgdGhlIG90aGVyIHRhZ2dlcnMuIElmIHdlJ3JlIHNlcmlvdXMgYWJvdXQgZnV6emluZyB0aGVzZSBvdGhlciB0YWdnZXJzLCB0aGVuIGl0J3MgcHJldHR5IGNsZWFyIHdlIG5lZWQgdG8gZW5hYmxlIHRoZW0uIEJ1dCB0aGUgcmVhbCBxdWVzdGlvbiBpcywgY2FuIHdlICphY3R1YWxseSogdXNlIGFueSBvZiB0aGVzZSBvdGhlciB0YWdnZXJzIGluIGNvbmp1bmN0aW9uIHdpdGggYGRzYV9sb29wYD8gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgaWYgdGhlcmUncyBhbnkga2luZCBvZiBjb21wYXRpYmlsaXR5IGhlcmUuIE15IGZpcnN0IHN0b3A/IExldCdzIGRpdmUgcmlnaHQgaW50byB0aGUgY29kZSBpdHNlbGYuIEknbSBnb2luZyB0byBjaGVjayBgZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmNgIGFuZCBzZWUgaWYgdGhlcmUgYXJlIGFueSBoaW50cyBvciBjb25maWd1cmF0aW9uIG9wdGlvbnMgaW4gdGhlcmUgdGhhdCB3b3VsZCBhbGxvdyBmb3IgZGlmZmVyZW50IHRhZ2dlcnMgdG8gd29yay4gSSdtIGV4cGVjdGluZyB0byBmaW5kIHNvbWUgaW5kaWNhdGlvbiBvZiBob3cgdGhlIHRhZ2dlciBpcyBzZWxlY3RlZCwgb3IgaWYgdGhlcmUgaXMgYSB3YXkgdG8gb3ZlcnJpZGUgdGhpcyBiZWhhdmlvdXIuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI3NTY1LCJPdXRwdXRUb2tlbnMiOjE4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6ODIsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wNi0yNVQwODoyOTo0OC4xMTQyODE4MzRaIiwiU2VxIjoxMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIyNzE2MzcwNTgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiZHNhX2xvb3BcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL2RzYS9kc2EucnN0PTE1OT1hbGwgYXR0YWNoZWQgc3dpdGNoIHBvcnRzIG11c3QgYmUgZG93biB3aGlsZSBkb2luZyB0aGlzKS5cXG5Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvZHNhL2RzYS5yc3QtMTYwLVxcbkRvY3VtZW50YXRpb24vbmV0d29ya2luZy9kc2EvZHNhLnJzdDoxNjE6SXQgaXMgZGVzaXJhYmxlIHRoYXQgYWxsIHRhZ2dpbmcgcHJvdG9jb2xzIGFyZSB0ZXN0YWJsZSB3aXRoIHRoZSBgYGRzYV9sb29wYGBcXG5Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvZHNhL2RzYS5yc3QtMTYyLW1vY2t1cCBkcml2ZXIsIHdoaWNoIGNhbiBiZSBhdHRhY2hlZCB0byBhbnkgbmV0d29yayBpbnRlcmZhY2UuIFRoZSBnb2FsIGlzIHRoYXRcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9NYWtlZmlsZT0zPWJjbS1zZjItb2Jqc1xcdFxcdFxcdDo9IGJjbV9zZjIubyBiY21fc2YyX2NmcC5vXFxuZHJpdmVycy9uZXQvZHNhL01ha2VmaWxlOjQ6b2JqLSQoQ09ORklHX05FVF9EU0FfTE9PUClcXHQrPSBkc2FfbG9vcC5vXFxuZHJpdmVycy9uZXQvZHNhL01ha2VmaWxlLTUtb2JqLSQoQ09ORklHX05FVF9EU0FfS1M4OTk1KSBcXHQrPSBrczg5OTUub1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMjQtXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MjU6c3RydWN0IGRzYV9sb29wX3ZsYW4ge1xcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTI2LVxcdHUxNiBtZW1iZXJzO1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMjktXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MzA6c3RydWN0IGRzYV9sb29wX21pYl9lbnRyeSB7XFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMzEtXFx0Y2hhciBuYW1lW0VUSF9HU1RSSU5HX0xFTl07XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0zNC1cXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzozNTplbnVtIGRzYV9sb29wX21pYl9jb3VudGVycyB7XFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMzYtXFx0RFNBX0xPT1BfUEhZX1JFQURfT0ssXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy00Mi1cXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzo0MzpzdHJ1Y3QgZHNhX2xvb3BfcG9ydCB7XFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6NDQ6XFx0c3RydWN0IGRzYV9sb29wX21pYl9lbnRyeSBtaWJbX19EU0FfTE9PUF9DTlRfTUFYXTtcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy00NS1cXHR1MTYgcHZpZDtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTQ4LVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjQ5OnN0cnVjdCBkc2FfbG9vcF9wcml2IHtcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy01MC1cXHRzdHJ1Y3QgbWlpX2J1c1xcdCpidXM7XFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtNTEtXFx0dW5zaWduZWQgaW50XFx0cG9ydF9iYXNlO1xcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjUyOlxcdHN0cnVjdCBkc2FfbG9vcF92bGFuIHZsYW5zW1ZMQU5fTl9WSURdO1xcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTUzLVxcdHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXY7XFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6NTQ6XFx0c3RydWN0IGRzYV9sb29wX3BvcnQgcG9ydHNbRFNBX01BWF9QT1JUU107XFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtNTUtfTtcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy01Ni1cXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzo1NzpzdHJ1Y3QgZHNhX2xvb3BfcGRhdGEge1xcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTU4LVxcdC8qIE11c3QgYmUgZmlyc3QsIHN1Y2ggdGhhdCBkc2FfcmVnaXN0ZXJfc3dpdGNoKCkgY2FuIGFjY2VzcyB0aGlzXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy02Ni1cXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzo2NzpzdGF0aWMgc3RydWN0IGRzYV9sb29wX21pYl9lbnRyeSBkc2FfbG9vcF9taWJzW10gPSB7XFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtNjgtXFx0W0RTQV9MT09QX1BIWV9SRUFEX09LXVxcdD0geyBcXFwicGh5X3JlYWRfb2tcXFwiLCB9LFxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM9NzU9c3RhdGljIHN0cnVjdCBtZGlvX2RldmljZSAqc3dpdGNoX21kaW9kZXY7XFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtNzYtXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6Nzc6ZW51bSBkc2FfbG9vcF9kZXZsaW5rX3Jlc291cmNlX2lkIHtcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy03OC1cXHREU0FfTE9PUF9ERVZMSU5LX1BBUkFNX0lEX05PTkUsICAvKiBERVZMSU5LX1JFU09VUkNFX0lEX1BBUkVOVF9UT1AgKi9cXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTgxLVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjgyOnN0YXRpYyB1NjQgZHNhX2xvb3BfZGV2bGlua192dHVfZ2V0KHZvaWQgKnByaXYpXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtODMte1xcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjg0OlxcdHN0cnVjdCBkc2FfbG9vcF9wcml2ICpwcyA9IHByaXY7XFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtODUtXFx0dW5zaWduZWQgaW50IGksIGNvdW50ID0gMDtcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzo4NjpcXHRzdHJ1Y3QgZHNhX2xvb3BfdmxhbiAqdmw7XFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtODctXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy05Ni1cXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzo5NzpzdGF0aWMgaW50IGRzYV9sb29wX3NldHVwX2RldmxpbmtfcmVzb3VyY2VzKHN0cnVjdCBkc2Ffc3dpdGNoICpkcylcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy05OC17XFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtOTktXFx0c3RydWN0IGRldmxpbmtfcmVzb3VyY2Vfc2l6ZV9wYXJhbXMgc2l6ZV9wYXJhbXM7XFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MTAwOlxcdHN0cnVjdCBkc2FfbG9vcF9wcml2ICpwcyA9IGRzLVxcdTAwM2Vwcml2O1xcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTEwMS1cXHRpbnQgZXJyO1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMTE1LVxcdFxcdFxcdFxcdFxcdCAgICAgIERTQV9MT09QX0RFVkxJTktfUEFSQU1fSURfVlRVLFxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjExNjpcXHRcXHRcXHRcXHRcXHQgICAgICBkc2FfbG9vcF9kZXZsaW5rX3Z0dV9nZXQsIHBzKTtcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0xMTctXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0xMjQtXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MTI1OnN0YXRpYyBlbnVtIGRzYV90YWdfcHJvdG9jb2wgZHNhX2xvb3BfZ2V0X3Byb3RvY29sKHN0cnVjdCBkc2Ffc3dpdGNoICpkcyxcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0xMjYtXFx0XFx0XFx0XFx0XFx0XFx0ICAgaW50IHBvcnQsXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0xMzMtXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MTM0OnN0YXRpYyBpbnQgZHNhX2xvb3Bfc2V0dXAoc3RydWN0IGRzYV9zd2l0Y2ggKmRzKVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTEzNS17XFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MTM2OlxcdHN0cnVjdCBkc2FfbG9vcF9wcml2ICpwcyA9IGRzLVxcdTAwM2Vwcml2O1xcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTEzNy1cXHR1bnNpZ25lZCBpbnQgaTtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTEzOS1cXHRmb3IgKGkgPSAwOyBpIFxcdTAwM2MgZHMtXFx1MDAzZW51bV9wb3J0czsgaSsrKVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjE0MDpcXHRcXHRtZW1jcHkocHMtXFx1MDAzZXBvcnRzW2ldLm1pYiwgZHNhX2xvb3BfbWlicyxcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzoxNDE6XFx0XFx0ICAgICAgIHNpemVvZihkc2FfbG9vcF9taWJzKSk7XFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMTQyLVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMTQ0LVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjE0NTpcXHRyZXR1cm4gZHNhX2xvb3Bfc2V0dXBfZGV2bGlua19yZXNvdXJjZXMoZHMpO1xcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTE0Ni19XFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMTQ3LVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjE0ODpzdGF0aWMgdm9pZCBkc2FfbG9vcF90ZWFyZG93bihzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMpXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMTQ5LXtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTE1Mi1cXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzoxNTM6c3RhdGljIGludCBkc2FfbG9vcF9nZXRfc3NldF9jb3VudChzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMsIGludCBwb3J0LCBpbnQgc3NldClcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0xNTQte1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMTYwLVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjE2MTpzdGF0aWMgdm9pZCBkc2FfbG9vcF9nZXRfc3RyaW5ncyhzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMsIGludCBwb3J0LFxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTE2Mi1cXHRcXHRcXHRcXHQgdTMyIHN0cmluZ3NldCwgdWludDhfdCAqZGF0YSlcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0xNjMte1xcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjE2NDpcXHRzdHJ1Y3QgZHNhX2xvb3BfcHJpdiAqcHMgPSBkcy1cXHUwMDNlcHJpdjtcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0xNjUtXFx0dW5zaWduZWQgaW50IGk7XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0xNzMtXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MTc0OnN0YXRpYyB2b2lkIGRzYV9sb29wX2dldF9ldGh0b29sX3N0YXRzKHN0cnVjdCBkc2Ffc3dpdGNoICpkcywgaW50IHBvcnQsXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMTc1LVxcdFxcdFxcdFxcdCAgICAgICB1aW50NjRfdCAqZGF0YSlcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0xNzYte1xcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjE3NzpcXHRzdHJ1Y3QgZHNhX2xvb3BfcHJpdiAqcHMgPSBkcy1cXHUwMDNlcHJpdjtcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0xNzgtXFx0dW5zaWduZWQgaW50IGk7XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0xODMtXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MTg0OnN0YXRpYyBpbnQgZHNhX2xvb3BfcGh5X3JlYWQoc3RydWN0IGRzYV9zd2l0Y2ggKmRzLCBpbnQgcG9ydCwgaW50IHJlZ251bSlcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0xODUte1xcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjE4NjpcXHRzdHJ1Y3QgZHNhX2xvb3BfcHJpdiAqcHMgPSBkcy1cXHUwMDNlcHJpdjtcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0xODctXFx0c3RydWN0IG1paV9idXMgKmJ1cyA9IHBzLVxcdTAwM2VidXM7XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0xOTgtXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MTk5OnN0YXRpYyBpbnQgZHNhX2xvb3BfcGh5X3dyaXRlKHN0cnVjdCBkc2Ffc3dpdGNoICpkcywgaW50IHBvcnQsXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMjAwLVxcdFxcdFxcdCAgICAgIGludCByZWdudW0sIHUxNiB2YWx1ZSlcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0yMDEte1xcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjIwMjpcXHRzdHJ1Y3QgZHNhX2xvb3BfcHJpdiAqcHMgPSBkcy1cXHUwMDNlcHJpdjtcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0yMDMtXFx0c3RydWN0IG1paV9idXMgKmJ1cyA9IHBzLVxcdTAwM2VidXM7XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0yMTQtXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MjE1OnN0YXRpYyBpbnQgZHNhX2xvb3BfcG9ydF9icmlkZ2Vfam9pbihzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMsIGludCBwb3J0LFxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTIxNi1cXHRcXHRcXHRcXHQgICAgIHN0cnVjdCBkc2FfYnJpZGdlIGJyaWRnZSxcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTIyNS1cXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzoyMjY6c3RhdGljIHZvaWQgZHNhX2xvb3BfcG9ydF9icmlkZ2VfbGVhdmUoc3RydWN0IGRzYV9zd2l0Y2ggKmRzLCBpbnQgcG9ydCxcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0yMjctXFx0XFx0XFx0XFx0ICAgICAgIHN0cnVjdCBkc2FfYnJpZGdlIGJyaWRnZSlcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTIzMi1cXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzoyMzM6c3RhdGljIHZvaWQgZHNhX2xvb3BfcG9ydF9zdHBfc3RhdGVfc2V0KHN0cnVjdCBkc2Ffc3dpdGNoICpkcywgaW50IHBvcnQsXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMjM0LVxcdFxcdFxcdFxcdFxcdHU4IHN0YXRlKVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMjM5LVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjI0MDpzdGF0aWMgaW50IGRzYV9sb29wX3BvcnRfdmxhbl9maWx0ZXJpbmcoc3RydWN0IGRzYV9zd2l0Y2ggKmRzLCBpbnQgcG9ydCxcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0yNDEtXFx0XFx0XFx0XFx0XFx0Ym9vbCB2bGFuX2ZpbHRlcmluZyxcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTI0OS1cXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzoyNTA6c3RhdGljIGludCBkc2FfbG9vcF9wb3J0X3ZsYW5fYWRkKHN0cnVjdCBkc2Ffc3dpdGNoICpkcywgaW50IHBvcnQsXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMjUxLVxcdFxcdFxcdFxcdCAgY29uc3Qgc3RydWN0IHN3aXRjaGRldl9vYmpfcG9ydF92bGFuICp2bGFuLFxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMjU1LVxcdGJvb2wgcHZpZCA9IHZsYW4tXFx1MDAzZWZsYWdzIFxcdTAwMjYgQlJJREdFX1ZMQU5fSU5GT19QVklEO1xcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjI1NjpcXHRzdHJ1Y3QgZHNhX2xvb3BfcHJpdiAqcHMgPSBkcy1cXHUwMDNlcHJpdjtcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0yNTctXFx0c3RydWN0IG1paV9idXMgKmJ1cyA9IHBzLVxcdTAwM2VidXM7XFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MjU4OlxcdHN0cnVjdCBkc2FfbG9vcF92bGFuICp2bDtcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0yNTktXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0yODItXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MjgzOnN0YXRpYyBpbnQgZHNhX2xvb3BfcG9ydF92bGFuX2RlbChzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMsIGludCBwb3J0LFxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTI4NC1cXHRcXHRcXHRcXHQgIGNvbnN0IHN0cnVjdCBzd2l0Y2hkZXZfb2JqX3BvcnRfdmxhbiAqdmxhbilcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTI4Ni1cXHRib29sIHVudGFnZ2VkID0gdmxhbi1cXHUwMDNlZmxhZ3MgXFx1MDAyNiBCUklER0VfVkxBTl9JTkZPX1VOVEFHR0VEO1xcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjI4NzpcXHRzdHJ1Y3QgZHNhX2xvb3BfcHJpdiAqcHMgPSBkcy1cXHUwMDNlcHJpdjtcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0yODgtXFx0dTE2IHB2aWQgPSBwcy1cXHUwMDNlcG9ydHNbcG9ydF0ucHZpZDtcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0yODktXFx0c3RydWN0IG1paV9idXMgKmJ1cyA9IHBzLVxcdTAwM2VidXM7XFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MjkwOlxcdHN0cnVjdCBkc2FfbG9vcF92bGFuICp2bDtcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0yOTEtXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0zMTAtXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MzExOnN0YXRpYyBpbnQgZHNhX2xvb3BfcG9ydF9jaGFuZ2VfbXR1KHN0cnVjdCBkc2Ffc3dpdGNoICpkcywgaW50IHBvcnQsXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMzEyLVxcdFxcdFxcdFxcdCAgICBpbnQgbmV3X210dSlcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0zMTMte1xcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjMxNDpcXHRzdHJ1Y3QgZHNhX2xvb3BfcHJpdiAqcHJpdiA9IGRzLVxcdTAwM2Vwcml2O1xcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTMxNS1cXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTMyMC1cXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzozMjE6c3RhdGljIGludCBkc2FfbG9vcF9wb3J0X21heF9tdHUoc3RydWN0IGRzYV9zd2l0Y2ggKmRzLCBpbnQgcG9ydClcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0zMjIte1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMzI1LVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjMyNjpzdGF0aWMgdm9pZCBkc2FfbG9vcF9waHlsaW5rX2dldF9jYXBzKHN0cnVjdCBkc2Ffc3dpdGNoICpkc2EsIGludCBwb3J0LFxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTMyNy1cXHRcXHRcXHRcXHQgICAgICBzdHJ1Y3QgcGh5bGlua19jb25maWcgKmNvbmZpZylcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTMzMy1cXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzozMzQ6c3RhdGljIGNvbnN0IHN0cnVjdCBkc2Ffc3dpdGNoX29wcyBkc2FfbG9vcF9kcml2ZXIgPSB7XFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MzM1OlxcdC5nZXRfdGFnX3Byb3RvY29sXFx0PSBkc2FfbG9vcF9nZXRfcHJvdG9jb2wsXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MzM2OlxcdC5zZXR1cFxcdFxcdFxcdD0gZHNhX2xvb3Bfc2V0dXAsXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MzM3OlxcdC50ZWFyZG93blxcdFxcdD0gZHNhX2xvb3BfdGVhcmRvd24sXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MzM4OlxcdC5nZXRfc3RyaW5nc1xcdFxcdD0gZHNhX2xvb3BfZ2V0X3N0cmluZ3MsXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MzM5OlxcdC5nZXRfZXRodG9vbF9zdGF0c1xcdD0gZHNhX2xvb3BfZ2V0X2V0aHRvb2xfc3RhdHMsXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MzQwOlxcdC5nZXRfc3NldF9jb3VudFxcdFxcdD0gZHNhX2xvb3BfZ2V0X3NzZXRfY291bnQsXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MzQxOlxcdC5nZXRfZXRodG9vbF9waHlfc3RhdHNcXHQ9IGRzYV9sb29wX2dldF9ldGh0b29sX3N0YXRzLFxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjM0MjpcXHQucGh5X3JlYWRcXHRcXHQ9IGRzYV9sb29wX3BoeV9yZWFkLFxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjM0MzpcXHQucGh5X3dyaXRlXFx0XFx0PSBkc2FfbG9vcF9waHlfd3JpdGUsXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MzQ0OlxcdC5wb3J0X2JyaWRnZV9qb2luXFx0PSBkc2FfbG9vcF9wb3J0X2JyaWRnZV9qb2luLFxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjM0NTpcXHQucG9ydF9icmlkZ2VfbGVhdmVcXHQ9IGRzYV9sb29wX3BvcnRfYnJpZGdlX2xlYXZlLFxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjM0NjpcXHQucG9ydF9zdHBfc3RhdGVfc2V0XFx0PSBkc2FfbG9vcF9wb3J0X3N0cF9zdGF0ZV9zZXQsXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MzQ3OlxcdC5wb3J0X3ZsYW5fZmlsdGVyaW5nXFx0PSBkc2FfbG9vcF9wb3J0X3ZsYW5fZmlsdGVyaW5nLFxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjM0ODpcXHQucG9ydF92bGFuX2FkZFxcdFxcdD0gZHNhX2xvb3BfcG9ydF92bGFuX2FkZCxcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzozNDk6XFx0LnBvcnRfdmxhbl9kZWxcXHRcXHQ9IGRzYV9sb29wX3BvcnRfdmxhbl9kZWwsXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MzUwOlxcdC5wb3J0X2NoYW5nZV9tdHVcXHQ9IGRzYV9sb29wX3BvcnRfY2hhbmdlX210dSxcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzozNTE6XFx0LnBvcnRfbWF4X210dVxcdFxcdD0gZHNhX2xvb3BfcG9ydF9tYXhfbXR1LFxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjM1MjpcXHQucGh5bGlua19nZXRfY2Fwc1xcdD0gZHNhX2xvb3BfcGh5bGlua19nZXRfY2FwcyxcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0zNTMtfTtcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0zNTQtXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MzU1OnN0YXRpYyBpbnQgZHNhX2xvb3BfZHJ2X3Byb2JlKHN0cnVjdCBtZGlvX2RldmljZSAqbWRpb2RldilcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0zNTYte1xcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjM1NzpcXHRzdHJ1Y3QgZHNhX2xvb3BfcGRhdGEgKnBkYXRhID0gbWRpb2Rldi1cXHUwMDNlZGV2LnBsYXRmb3JtX2RhdGE7XFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MzU4OlxcdHN0cnVjdCBkc2FfbG9vcF9wcml2ICpwcztcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0zNTktXFx0c3RydWN0IGRzYV9zd2l0Y2ggKmRzO1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMzgyLVxcdGRzLVxcdTAwM2VkZXYgPSBcXHUwMDI2bWRpb2Rldi1cXHUwMDNlZGV2O1xcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjM4MzpcXHRkcy1cXHUwMDNlb3BzID0gXFx1MDAyNmRzYV9sb29wX2RyaXZlcjtcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0zODQtXFx0ZHMtXFx1MDAzZXByaXYgPSBwcztcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTM5Ni1cXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzozOTc6c3RhdGljIHZvaWQgZHNhX2xvb3BfZHJ2X3JlbW92ZShzdHJ1Y3QgbWRpb19kZXZpY2UgKm1kaW9kZXYpXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMzk4LXtcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0zOTktXFx0c3RydWN0IGRzYV9zd2l0Y2ggKmRzID0gZGV2X2dldF9kcnZkYXRhKFxcdTAwMjZtZGlvZGV2LVxcdTAwM2VkZXYpO1xcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjQwMDpcXHRzdHJ1Y3QgZHNhX2xvb3BfcHJpdiAqcHM7XFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtNDAxLVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtNDEwLVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjQxMTpzdGF0aWMgdm9pZCBkc2FfbG9vcF9kcnZfc2h1dGRvd24oc3RydWN0IG1kaW9fZGV2aWNlICptZGlvZGV2KVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTQxMi17XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy00MjItXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6NDIzOnN0YXRpYyBzdHJ1Y3QgbWRpb19kcml2ZXIgZHNhX2xvb3BfZHJ2ID0ge1xcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTQyNC1cXHQubWRpb2Rydi5kcml2ZXJcXHQ9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTQyNi1cXHR9LFxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjQyNzpcXHQucHJvYmVcXHQ9IGRzYV9sb29wX2Rydl9wcm9iZSxcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzo0Mjg6XFx0LnJlbW92ZVxcdD0gZHNhX2xvb3BfZHJ2X3JlbW92ZSxcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzo0Mjk6XFx0LnNodXRkb3duID0gZHNhX2xvb3BfZHJ2X3NodXRkb3duLFxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTQzMC19O1xcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTQzMS1cXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzo0MzI6c3RhdGljIGludCBkc2FfbG9vcF9idXNfbWF0Y2goc3RydWN0IGRldmljZSAqZGV2LFxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTQzMy1cXHRcXHRcXHQgICAgICBjb25zdCBzdHJ1Y3QgZGV2aWNlX2RyaXZlciAqZHJ2KVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTQzNC17XFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6NDM1OlxcdHJldHVybiBkcnYgPT0gXFx1MDAyNmRzYV9sb29wX2Rydi5tZGlvZHJ2LmRyaXZlcjtcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy00MzYtfVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTQzNy1cXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzo0Mzg6c3RhdGljIHZvaWQgZHNhX2xvb3BfcGh5ZGV2c191bnJlZ2lzdGVyKHZvaWQpXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtNDM5LXtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTQ0NS1cXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzo0NDY6c3RhdGljIGludCBfX2luaXQgZHNhX2xvb3BfY3JlYXRlX3N3aXRjaF9tZGlvZGV2KHZvaWQpXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtNDQ3LXtcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzo0NDg6XFx0c3RhdGljIHN0cnVjdCBkc2FfbG9vcF9wZGF0YSBkc2FfbG9vcF9wZGF0YSA9IHtcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy00NDktXFx0XFx0LmNkID0ge1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtNDcwLVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjQ3MTpcXHRzd2l0Y2hfbWRpb2Rldi1cXHUwMDNlYnVzX21hdGNoID0gZHNhX2xvb3BfYnVzX21hdGNoO1xcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjQ3MjpcXHRzd2l0Y2hfbWRpb2Rldi1cXHUwMDNlZGV2LnBsYXRmb3JtX2RhdGEgPSBcXHUwMDI2ZHNhX2xvb3BfcGRhdGE7XFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtNDczLVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtNDgxLVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjQ4MjpzdGF0aWMgaW50IF9faW5pdCBkc2FfbG9vcF9pbml0KHZvaWQpXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtNDgzLXtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTQ4Ni1cXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzo0ODc6XFx0cmV0ID0gZHNhX2xvb3BfY3JlYXRlX3N3aXRjaF9tZGlvZGV2KCk7XFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtNDg4LVxcdGlmIChyZXQpXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy00OTMtXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6NDk0OlxcdHJldCA9IG1kaW9fZHJpdmVyX3JlZ2lzdGVyKFxcdTAwMjZkc2FfbG9vcF9kcnYpO1xcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTQ5NS1cXHRpZiAocmV0KSB7XFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6NDk2OlxcdFxcdGRzYV9sb29wX3BoeWRldnNfdW5yZWdpc3RlcigpO1xcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTQ5Ny1cXHRcXHRtZGlvX2RldmljZV9yZW1vdmUoc3dpdGNoX21kaW9kZXYpO1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtNTAyLX1cXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzo1MDM6bW9kdWxlX2luaXQoZHNhX2xvb3BfaW5pdCk7XFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtNTA0LVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjUwNTpzdGF0aWMgdm9pZCBfX2V4aXQgZHNhX2xvb3BfZXhpdCh2b2lkKVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTUwNi17XFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6NTA3OlxcdG1kaW9fZHJpdmVyX3VucmVnaXN0ZXIoXFx1MDAyNmRzYV9sb29wX2Rydik7XFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6NTA4OlxcdGRzYV9sb29wX3BoeWRldnNfdW5yZWdpc3RlcigpO1xcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTUwOS1cXHRtZGlvX2RldmljZV9yZW1vdmUoc3dpdGNoX21kaW9kZXYpO1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtNTExLX1cXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzo1MTI6bW9kdWxlX2V4aXQoZHNhX2xvb3BfZXhpdCk7XFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtNTEzLVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0yNVQwODoyOTo1MC4zODU5MjU2OTJaIiwiU2VxIjoxMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MTA1NDkzNDc3NjUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqRFNBIFN3aXRjaCBJbnN0YW50aWF0aW9uIGFuZCBGdXp6aW5nIFN0cmF0ZWd5KipcblxuT2theSwgc28gYGRzYV9sb29wYCB1c2VzIGBORVRfRFNBX1RBR19OT05FYC4gQW5kIGBkc2FfbG9vcF9nZXRfcHJvdG9jb2xgIHJldHVybnMgYERTQV9UQUdfUFJPVE9fTk9ORWAuIFRoYXQncyB0aGUgYmFzZWxpbmUuIENhbiB3ZSBsZXZlcmFnZSB0aGlzIHRvIGZ1enogb3RoZXIgdGFnZ2VycywgbWF5YmU/IFRoZSBrZXkgaXMgZ29pbmcgdG8gYmUgZmlndXJpbmcgb3V0IGhvdyB0byBnZXQgdHJhZmZpYyByb3V0ZWQgKnRocm91Z2gqIHRoZSBEU0EgaW5mcmFzdHJ1Y3R1cmUuXG5cblN5emthbGxlciBpcyBncmVhdCB3aXRoIHBhY2tldCBpbmplY3Rpb24gdGhyb3VnaCBgdHVuYC9gdGFwYCwgYG1hYzgwMjExX2h3c2ltYCwgYW5kIGV2ZW4gYGR1bW15YCBpbnRlcmZhY2VzLiBUaGUgaW1tZWRpYXRlIHF1ZXN0aW9uIGlzLCBpZiB3ZSAqZW5hYmxlKiBgTkVUX0RTQWAgYW5kIHNvbWUgb2YgdGhlc2UgdGFnZ2VycywgY2FuIHN5emthbGxlciBhY3R1YWxseSAqcmVhY2gqIHRoZW0/XG5cbk5vdywgcmVtZW1iZXIgaG93IGBkc2Ffc3dpdGNoX3JjdmAgZ2V0cyBjYWxsZWQ/IEl0J3MgZnJvbSBgbmV0aWZfcmVjZWl2ZV9za2JfY29yZWAgKmlmKiBgc2tiLVx1MDAzZWRldi1cdTAwM2Vkc2FfcHRyYCBpcyBzZXQuIFJpZ2h0LCBhbmQgdG8gaGF2ZSBgc2tiLVx1MDAzZWRldi1cdTAwM2Vkc2FfcHRyYCBzZXQsIHlvdSBuZWVkIGEgRFNBIHN3aXRjaCBhdHRhY2hlZCB0byBhIGBuZXRfZGV2aWNlYC4gU28gdGhlIHJlYWwgcXVlc3Rpb24gaXM6IGNhbiBzeXprYWxsZXIgKmNyZWF0ZSogYSBEU0Egc3dpdGNoP1xuXG5JdCBoYXMgYHN5el9nZW5ldGxpbmtfZ2V0X2ZhbWlseWAgYW5kIG90aGVyIG5ldGxpbmsgYml0cywgd2hpY2ggbWlnaHQgYmUgaGVscGZ1bC4gQnV0IERTQSBzd2l0Y2hlcyBhcmUgdHlwaWNhbGx5IHNldCB1cCB0aHJvdWdoIGRldmljZSB0cmVlLCBwbGF0Zm9ybSBkYXRhLCBvciBldmVuIEkyQy9NRElPIGRldmljZXMuIFRoYXQgc2VlbXMgZGlmZmljdWx0IHRvIGVtdWxhdGUuXG5cbldhaXQgYSBzZWNvbmQsIHN5emthbGxlciBkb2VzIGhhdmUgY2xldmVyIHZpcnR1YWxpemF0aW9uIHRyaWNrcyBmb3Igb3RoZXIgc3Vic3lzdGVtcy4gSXQgaGFzIGB2aGNpYCBmb3IgVVNCLCBgbWFjODAyMTFfaHdzaW1gIGZvciB3aWZpLiBTbyB0aGUgcXVlc3Rpb24gYmVjb21lcywgZG9lcyBpdCBoYXZlIGEgd2F5IHRvIGluc3RhbnRpYXRlIERTQSBzd2l0Y2hlcyBzb21laG93PyBBIHZpcnR1YWwgb25lLCBvciBwZXJoYXBzIGEgd2F5IHRvIGZha2UgdGhlIGRhdGEgc3RydWN0dXJlcyByZXF1aXJlZD9cblxuT2theSwgdGltZSB0byBzdG9wIHNwZWN1bGF0aW5nLiBMZXQncyBzZWUgaWYgdGhlcmUgaXMgYW55IGV4aXN0aW5nIHN5emthbGxlciBkZXNjcmlwdGlvbiwgYSBkZWRpY2F0ZWQgb25lLCBvZiBEU0EgZGV2aWNlcy4gVGhhdCdzIHRoZSBmaXJzdCBwbGFjZSB0byBsb29rLiBNYXliZSBzb21lb25lIGhhcyBhbHJlYWR5IGZpZ3VyZWQgb3V0IGhvdyB0byBkbyB0aGlzLlxuXG5cbiIsIklucHV0VG9rZW5zIjozNDUzMiwiT3V0cHV0VG9rZW5zIjoyNywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI3OCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNi0yNVQwODozMDowMC45MzUyNzY1NDdaIiwiU2VxIjoxNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI5NDMxMzk5NCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJkc2FcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L2RzYS9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiXFxuRnVsbCBvdXRwdXQgaXMgdG9vIGxvbmcsIHNob3dpbmcgNTAwIG91dCBvZiA4MTA0IGxpbmVzLlxcblVzZSBtb3JlIHByZWNpc2UgZXhwcmVzc2lvbiBpZiBwb3NzaWJsZS5cXG5cXG5uZXQvZHNhL01ha2VmaWxlPTY9ZW5kaWZcXG4tLVxcbm5ldC9kc2EvTWFrZWZpbGUtOC0jIHRoZSBjb3JlXFxubmV0L2RzYS9NYWtlZmlsZTo5Om9iai0kKENPTkZJR19ORVRfRFNBKSArPSBkc2FfY29yZS5vXFxubmV0L2RzYS9NYWtlZmlsZToxMDpkc2FfY29yZS15ICs9IFxcXFxcXG5uZXQvZHNhL01ha2VmaWxlLTExLVxcdGNvbmR1aXQubyBcXFxcXFxubmV0L2RzYS9NYWtlZmlsZS0xMi1cXHRkZXZsaW5rLm8gXFxcXFxcbm5ldC9kc2EvTWFrZWZpbGU6MTM6XFx0ZHNhLm8gXFxcXFxcbm5ldC9kc2EvTWFrZWZpbGUtMTQtXFx0bmV0bGluay5vIFxcXFxcXG4tLVxcbm5ldC9kc2EvTWFrZWZpbGU9MjQ9b2JqLSQoQ09ORklHX05FVF9EU0FfVEFHX0JSQ01fQ09NTU9OKSArPSB0YWdfYnJjbS5vXFxubmV0L2RzYS9NYWtlZmlsZToyNTpvYmotJChDT05GSUdfTkVUX0RTQV9UQUdfRFNBX0NPTU1PTikgKz0gdGFnX2RzYS5vXFxubmV0L2RzYS9NYWtlZmlsZS0yNi1vYmotJChDT05GSUdfTkVUX0RTQV9UQUdfR1NXSVApICs9IHRhZ19nc3dpcC5vXFxuLS1cXG5uZXQvZHNhL2NvbmR1aXQuYy0xMS0jaW5jbHVkZSBcXHUwMDNjbGludXgvbmV0bGluay5oXFx1MDAzZVxcbm5ldC9kc2EvY29uZHVpdC5jOjEyOiNpbmNsdWRlIFxcdTAwM2NuZXQvZHNhLmhcXHUwMDNlXFxubmV0L2RzYS9jb25kdWl0LmMtMTMtI2luY2x1ZGUgXFx1MDAzY25ldC9uZXRkZXZfbG9jay5oXFx1MDAzZVxcbi0tXFxubmV0L2RzYS9jb25kdWl0LmMtMTUtI2luY2x1ZGUgXFxcImNvbmR1aXQuaFxcXCJcXG5uZXQvZHNhL2NvbmR1aXQuYzoxNjojaW5jbHVkZSBcXFwiZHNhLmhcXFwiXFxubmV0L2RzYS9jb25kdWl0LmMtMTctI2luY2x1ZGUgXFxcInBvcnQuaFxcXCJcXG4tLVxcbm5ldC9kc2EvY29uZHVpdC5jLTE5LVxcbm5ldC9kc2EvY29uZHVpdC5jOjIwOnN0YXRpYyBpbnQgZHNhX2NvbmR1aXRfZ2V0X3JlZ3NfbGVuKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXFxubmV0L2RzYS9jb25kdWl0LmMtMjEte1xcbm5ldC9kc2EvY29uZHVpdC5jOjIyOlxcdHN0cnVjdCBkc2FfcG9ydCAqY3B1X2RwID0gZGV2LVxcdTAwM2Vkc2FfcHRyO1xcbm5ldC9kc2EvY29uZHVpdC5jLTIzLVxcdGNvbnN0IHN0cnVjdCBldGh0b29sX29wcyAqb3BzID0gY3B1X2RwLVxcdTAwM2VvcmlnX2V0aHRvb2xfb3BzO1xcbm5ldC9kc2EvY29uZHVpdC5jOjI0OlxcdHN0cnVjdCBkc2Ffc3dpdGNoICpkcyA9IGNwdV9kcC1cXHUwMDNlZHM7XFxubmV0L2RzYS9jb25kdWl0LmMtMjUtXFx0aW50IHBvcnQgPSBjcHVfZHAtXFx1MDAzZWluZGV4O1xcbi0tXFxubmV0L2RzYS9jb25kdWl0LmMtNDgtXFxubmV0L2RzYS9jb25kdWl0LmM6NDk6c3RhdGljIHZvaWQgZHNhX2NvbmR1aXRfZ2V0X3JlZ3Moc3RydWN0IG5ldF9kZXZpY2UgKmRldixcXG5uZXQvZHNhL2NvbmR1aXQuYy01MC1cXHRcXHRcXHRcXHQgc3RydWN0IGV0aHRvb2xfcmVncyAqcmVncywgdm9pZCAqZGF0YSlcXG5uZXQvZHNhL2NvbmR1aXQuYy01MS17XFxubmV0L2RzYS9jb25kdWl0LmM6NTI6XFx0c3RydWN0IGRzYV9wb3J0ICpjcHVfZHAgPSBkZXYtXFx1MDAzZWRzYV9wdHI7XFxubmV0L2RzYS9jb25kdWl0LmMtNTMtXFx0Y29uc3Qgc3RydWN0IGV0aHRvb2xfb3BzICpvcHMgPSBjcHVfZHAtXFx1MDAzZW9yaWdfZXRodG9vbF9vcHM7XFxubmV0L2RzYS9jb25kdWl0LmM6NTQ6XFx0c3RydWN0IGRzYV9zd2l0Y2ggKmRzID0gY3B1X2RwLVxcdTAwM2VkcztcXG5uZXQvZHNhL2NvbmR1aXQuYy01NS1cXHRzdHJ1Y3QgZXRodG9vbF9kcnZpbmZvICpjcHVfaW5mbztcXG4tLVxcbm5ldC9kc2EvY29uZHVpdC5jLTY5LVxcdGNwdV9pbmZvID0gKHN0cnVjdCBldGh0b29sX2RydmluZm8gKilkYXRhO1xcbm5ldC9kc2EvY29uZHVpdC5jOjcwOlxcdHN0cnNjcHkoY3B1X2luZm8tXFx1MDAzZWRyaXZlciwgXFxcImRzYVxcXCIsIHNpemVvZihjcHVfaW5mby1cXHUwMDNlZHJpdmVyKSk7XFxubmV0L2RzYS9jb25kdWl0LmMtNzEtXFx0ZGF0YSArPSBzaXplb2YoKmNwdV9pbmZvKTtcXG4tLVxcbm5ldC9kc2EvY29uZHVpdC5jLTgzLVxcbm5ldC9kc2EvY29uZHVpdC5jOjg0OnN0YXRpYyBzc2l6ZV90IGRzYV9jb25kdWl0X2FwcGVuZF9wb3J0X3N0YXRzKHN0cnVjdCBkc2Ffc3dpdGNoICpkcywgaW50IHBvcnQsXFxubmV0L2RzYS9jb25kdWl0LmMtODUtXFx0XFx0XFx0XFx0XFx0ICAgICB1NjQgKmRhdGEsIHNpemVfdCBzdGFydClcXG4tLVxcbm5ldC9kc2EvY29uZHVpdC5jLTEwMS1cXG5uZXQvZHNhL2NvbmR1aXQuYzoxMDI6c3RhdGljIHZvaWQgZHNhX2NvbmR1aXRfZ2V0X2V0aHRvb2xfc3RhdHMoc3RydWN0IG5ldF9kZXZpY2UgKmRldixcXG5uZXQvZHNhL2NvbmR1aXQuYy0xMDMtXFx0XFx0XFx0XFx0XFx0ICBzdHJ1Y3QgZXRodG9vbF9zdGF0cyAqc3RhdHMsXFxuLS1cXG5uZXQvZHNhL2NvbmR1aXQuYy0xMDUte1xcbm5ldC9kc2EvY29uZHVpdC5jOjEwNjpcXHRzdHJ1Y3QgZHNhX3BvcnQgKmRwLCAqY3B1X2RwID0gZGV2LVxcdTAwM2Vkc2FfcHRyO1xcbm5ldC9kc2EvY29uZHVpdC5jLTEwNy1cXHRjb25zdCBzdHJ1Y3QgZXRodG9vbF9vcHMgKm9wcyA9IGNwdV9kcC1cXHUwMDNlb3JpZ19ldGh0b29sX29wcztcXG5uZXQvZHNhL2NvbmR1aXQuYzoxMDg6XFx0c3RydWN0IGRzYV9zd2l0Y2hfdHJlZSAqZHN0ID0gY3B1X2RwLVxcdTAwM2Vkc3Q7XFxubmV0L2RzYS9jb25kdWl0LmMtMTA5LVxcdGludCBjb3VudCwgbWNvdW50ID0gMDtcXG4tLVxcbm5ldC9kc2EvY29uZHVpdC5jLTExNi1cXHRsaXN0X2Zvcl9lYWNoX2VudHJ5KGRwLCBcXHUwMDI2ZHN0LVxcdTAwM2Vwb3J0cywgbGlzdCkge1xcbm5ldC9kc2EvY29uZHVpdC5jOjExNzpcXHRcXHRpZiAoIWRzYV9wb3J0X2lzX2RzYShkcCkgXFx1MDAyNlxcdTAwMjYgIWRzYV9wb3J0X2lzX2NwdShkcCkpXFxubmV0L2RzYS9jb25kdWl0LmMtMTE4LVxcdFxcdFxcdGNvbnRpbnVlO1xcbm5ldC9kc2EvY29uZHVpdC5jLTExOS1cXG5uZXQvZHNhL2NvbmR1aXQuYzoxMjA6XFx0XFx0Y291bnQgPSBkc2FfY29uZHVpdF9hcHBlbmRfcG9ydF9zdGF0cyhkcC1cXHUwMDNlZHMsIGRwLVxcdTAwM2VpbmRleCxcXG5uZXQvZHNhL2NvbmR1aXQuYy0xMjEtXFx0XFx0XFx0XFx0XFx0XFx0ICAgICAgZGF0YSwgbWNvdW50KTtcXG4tLVxcbm5ldC9kc2EvY29uZHVpdC5jLTEyOC1cXG5uZXQvZHNhL2NvbmR1aXQuYzoxMjk6c3RhdGljIHZvaWQgZHNhX2NvbmR1aXRfZ2V0X2V0aHRvb2xfcGh5X3N0YXRzKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXFxubmV0L2RzYS9jb25kdWl0LmMtMTMwLVxcdFxcdFxcdFxcdFxcdCAgICAgIHN0cnVjdCBldGh0b29sX3N0YXRzICpzdGF0cyxcXG4tLVxcbm5ldC9kc2EvY29uZHVpdC5jLTEzMi17XFxubmV0L2RzYS9jb25kdWl0LmM6MTMzOlxcdHN0cnVjdCBkc2FfcG9ydCAqY3B1X2RwID0gZGV2LVxcdTAwM2Vkc2FfcHRyO1xcbm5ldC9kc2EvY29uZHVpdC5jLTEzNC1cXHRjb25zdCBzdHJ1Y3QgZXRodG9vbF9vcHMgKm9wcyA9IGNwdV9kcC1cXHUwMDNlb3JpZ19ldGh0b29sX29wcztcXG5uZXQvZHNhL2NvbmR1aXQuYzoxMzU6XFx0c3RydWN0IGRzYV9zd2l0Y2ggKmRzID0gY3B1X2RwLVxcdTAwM2VkcztcXG5uZXQvZHNhL2NvbmR1aXQuYy0xMzYtXFx0aW50IHBvcnQgPSBjcHVfZHAtXFx1MDAzZWluZGV4O1xcbi0tXFxubmV0L2RzYS9jb25kdWl0LmMtMTU0LVxcbm5ldC9kc2EvY29uZHVpdC5jOjE1NTpzdGF0aWMgdm9pZCBkc2FfY29uZHVpdF9hcHBlbmRfcG9ydF9zc2V0X2NvdW50KHN0cnVjdCBkc2Ffc3dpdGNoICpkcywgaW50IHBvcnQsXFxubmV0L2RzYS9jb25kdWl0LmMtMTU2LVxcdFxcdFxcdFxcdFxcdCAgICAgICBpbnQgc3NldCwgaW50ICpjb3VudClcXG4tLVxcbm5ldC9kc2EvY29uZHVpdC5jLTE2MS1cXG5uZXQvZHNhL2NvbmR1aXQuYzoxNjI6c3RhdGljIGludCBkc2FfY29uZHVpdF9nZXRfc3NldF9jb3VudChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBpbnQgc3NldClcXG5uZXQvZHNhL2NvbmR1aXQuYy0xNjMte1xcbm5ldC9kc2EvY29uZHVpdC5jOjE2NDpcXHRzdHJ1Y3QgZHNhX3BvcnQgKmRwLCAqY3B1X2RwID0gZGV2LVxcdTAwM2Vkc2FfcHRyO1xcbm5ldC9kc2EvY29uZHVpdC5jLTE2NS1cXHRjb25zdCBzdHJ1Y3QgZXRodG9vbF9vcHMgKm9wcyA9IGNwdV9kcC1cXHUwMDNlb3JpZ19ldGh0b29sX29wcztcXG5uZXQvZHNhL2NvbmR1aXQuYzoxNjY6XFx0c3RydWN0IGRzYV9zd2l0Y2hfdHJlZSAqZHN0ID0gY3B1X2RwLVxcdTAwM2Vkc3Q7XFxubmV0L2RzYS9jb25kdWl0LmMtMTY3LVxcdGludCBjb3VudCA9IDA7XFxuLS1cXG5uZXQvZHNhL2NvbmR1aXQuYy0xNzgtXFx0bGlzdF9mb3JfZWFjaF9lbnRyeShkcCwgXFx1MDAyNmRzdC1cXHUwMDNlcG9ydHMsIGxpc3QpIHtcXG5uZXQvZHNhL2NvbmR1aXQuYzoxNzk6XFx0XFx0aWYgKCFkc2FfcG9ydF9pc19kc2EoZHApIFxcdTAwMjZcXHUwMDI2ICFkc2FfcG9ydF9pc19jcHUoZHApKVxcbm5ldC9kc2EvY29uZHVpdC5jLTE4MC1cXHRcXHRcXHRjb250aW51ZTtcXG5uZXQvZHNhL2NvbmR1aXQuYy0xODEtXFxubmV0L2RzYS9jb25kdWl0LmM6MTgyOlxcdFxcdGRzYV9jb25kdWl0X2FwcGVuZF9wb3J0X3NzZXRfY291bnQoZHAtXFx1MDAzZWRzLCBkcC1cXHUwMDNlaW5kZXgsIHNzZXQsXFxubmV0L2RzYS9jb25kdWl0LmMtMTgzLVxcdFxcdFxcdFxcdFxcdFxcdCAgIFxcdTAwMjZjb3VudCk7XFxuLS1cXG5uZXQvZHNhL2NvbmR1aXQuYy0xODgtXFxubmV0L2RzYS9jb25kdWl0LmM6MTg5OnN0YXRpYyBzc2l6ZV90IGRzYV9jb25kdWl0X2FwcGVuZF9wb3J0X3N0cmluZ3Moc3RydWN0IGRzYV9zd2l0Y2ggKmRzLCBpbnQgcG9ydCxcXG5uZXQvZHNhL2NvbmR1aXQuYy0xOTAtXFx0XFx0XFx0XFx0XFx0ICAgICAgIHUzMiBzdHJpbmdzZXQsIHU4ICpkYXRhLFxcbi0tXFxubmV0L2RzYS9jb25kdWl0LmMtMjIxLVxcbm5ldC9kc2EvY29uZHVpdC5jOjIyMjpzdGF0aWMgdm9pZCBkc2FfY29uZHVpdF9nZXRfc3RyaW5ncyhzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCB1MzIgc3RyaW5nc2V0LFxcbm5ldC9kc2EvY29uZHVpdC5jLTIyMy1cXHRcXHRcXHRcXHQgICAgdTggKmRhdGEpXFxubmV0L2RzYS9jb25kdWl0LmMtMjI0LXtcXG5uZXQvZHNhL2NvbmR1aXQuYzoyMjU6XFx0c3RydWN0IGRzYV9wb3J0ICpkcCwgKmNwdV9kcCA9IGRldi1cXHUwMDNlZHNhX3B0cjtcXG5uZXQvZHNhL2NvbmR1aXQuYy0yMjYtXFx0Y29uc3Qgc3RydWN0IGV0aHRvb2xfb3BzICpvcHMgPSBjcHVfZHAtXFx1MDAzZW9yaWdfZXRodG9vbF9vcHM7XFxubmV0L2RzYS9jb25kdWl0LmM6MjI3OlxcdHN0cnVjdCBkc2Ffc3dpdGNoX3RyZWUgKmRzdCA9IGNwdV9kcC1cXHUwMDNlZHN0O1xcbm5ldC9kc2EvY29uZHVpdC5jLTIyOC1cXHRpbnQgY291bnQsIG1jb3VudCA9IDA7XFxuLS1cXG5uZXQvZHNhL2NvbmR1aXQuYy0yNDQtXFx0bGlzdF9mb3JfZWFjaF9lbnRyeShkcCwgXFx1MDAyNmRzdC1cXHUwMDNlcG9ydHMsIGxpc3QpIHtcXG5uZXQvZHNhL2NvbmR1aXQuYzoyNDU6XFx0XFx0aWYgKCFkc2FfcG9ydF9pc19kc2EoZHApIFxcdTAwMjZcXHUwMDI2ICFkc2FfcG9ydF9pc19jcHUoZHApKVxcbm5ldC9kc2EvY29uZHVpdC5jLTI0Ni1cXHRcXHRcXHRjb250aW51ZTtcXG5uZXQvZHNhL2NvbmR1aXQuYy0yNDctXFxubmV0L2RzYS9jb25kdWl0LmM6MjQ4OlxcdFxcdGNvdW50ID0gZHNhX2NvbmR1aXRfYXBwZW5kX3BvcnRfc3RyaW5ncyhkcC1cXHUwMDNlZHMsIGRwLVxcdTAwM2VpbmRleCxcXG5uZXQvZHNhL2NvbmR1aXQuYy0yNDktXFx0XFx0XFx0XFx0XFx0XFx0XFx0c3RyaW5nc2V0LCBkYXRhLFxcbi0tXFxubmV0L2RzYS9jb25kdWl0LmMtMjYwLSAqL1xcbm5ldC9kc2EvY29uZHVpdC5jOjI2MTppbnQgX19kc2FfY29uZHVpdF9od3RzdGFtcF92YWxpZGF0ZShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxcbm5ldC9kc2EvY29uZHVpdC5jLTI2Mi1cXHRcXHRcXHRcXHQgICAgY29uc3Qgc3RydWN0IGtlcm5lbF9od3RzdGFtcF9jb25maWcgKmNvbmZpZyxcXG4tLVxcbm5ldC9kc2EvY29uZHVpdC5jLTI2NC17XFxubmV0L2RzYS9jb25kdWl0LmM6MjY1OlxcdHN0cnVjdCBkc2FfcG9ydCAqY3B1X2RwID0gZGV2LVxcdTAwM2Vkc2FfcHRyO1xcbm5ldC9kc2EvY29uZHVpdC5jOjI2NjpcXHRzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMgPSBjcHVfZHAtXFx1MDAzZWRzO1xcbm5ldC9kc2EvY29uZHVpdC5jOjI2NzpcXHRzdHJ1Y3QgZHNhX3N3aXRjaF90cmVlICpkc3Q7XFxubmV0L2RzYS9jb25kdWl0LmM6MjY4OlxcdHN0cnVjdCBkc2FfcG9ydCAqZHA7XFxubmV0L2RzYS9jb25kdWl0LmMtMjY5LVxcbi0tXFxubmV0L2RzYS9jb25kdWl0LmMtMjcyLVxcdGxpc3RfZm9yX2VhY2hfZW50cnkoZHAsIFxcdTAwMjZkc3QtXFx1MDAzZXBvcnRzLCBsaXN0KSB7XFxubmV0L2RzYS9jb25kdWl0LmM6MjczOlxcdFxcdGlmIChkc2FfcG9ydF9zdXBwb3J0c19od3RzdGFtcChkcCkpIHtcXG5uZXQvZHNhL2NvbmR1aXQuYy0yNzQtXFx0XFx0XFx0TkxfU0VUX0VSUl9NU0coZXh0YWNrLFxcbi0tXFxubmV0L2RzYS9jb25kdWl0LmMtMjgyLVxcbm5ldC9kc2EvY29uZHVpdC5jOjI4MzpzdGF0aWMgaW50IGRzYV9jb25kdWl0X2V0aHRvb2xfc2V0dXAoc3RydWN0IG5ldF9kZXZpY2UgKmRldilcXG5uZXQvZHNhL2NvbmR1aXQuYy0yODQte1xcbm5ldC9kc2EvY29uZHVpdC5jOjI4NTpcXHRzdHJ1Y3QgZHNhX3BvcnQgKmNwdV9kcCA9IGRldi1cXHUwMDNlZHNhX3B0cjtcXG5uZXQvZHNhL2NvbmR1aXQuYzoyODY6XFx0c3RydWN0IGRzYV9zd2l0Y2ggKmRzID0gY3B1X2RwLVxcdTAwM2VkcztcXG5uZXQvZHNhL2NvbmR1aXQuYy0yODctXFx0c3RydWN0IGV0aHRvb2xfb3BzICpvcHM7XFxuLS1cXG5uZXQvZHNhL2NvbmR1aXQuYy0yOTktXFxubmV0L2RzYS9jb25kdWl0LmM6MzAwOlxcdG9wcy1cXHUwMDNlZ2V0X3JlZ3NfbGVuID0gZHNhX2NvbmR1aXRfZ2V0X3JlZ3NfbGVuO1xcbm5ldC9kc2EvY29uZHVpdC5jOjMwMTpcXHRvcHMtXFx1MDAzZWdldF9yZWdzID0gZHNhX2NvbmR1aXRfZ2V0X3JlZ3M7XFxubmV0L2RzYS9jb25kdWl0LmM6MzAyOlxcdG9wcy1cXHUwMDNlZ2V0X3NzZXRfY291bnQgPSBkc2FfY29uZHVpdF9nZXRfc3NldF9jb3VudDtcXG5uZXQvZHNhL2NvbmR1aXQuYzozMDM6XFx0b3BzLVxcdTAwM2VnZXRfZXRodG9vbF9zdGF0cyA9IGRzYV9jb25kdWl0X2dldF9ldGh0b29sX3N0YXRzO1xcbm5ldC9kc2EvY29uZHVpdC5jOjMwNDpcXHRvcHMtXFx1MDAzZWdldF9zdHJpbmdzID0gZHNhX2NvbmR1aXRfZ2V0X3N0cmluZ3M7XFxubmV0L2RzYS9jb25kdWl0LmM6MzA1OlxcdG9wcy1cXHUwMDNlZ2V0X2V0aHRvb2xfcGh5X3N0YXRzID0gZHNhX2NvbmR1aXRfZ2V0X2V0aHRvb2xfcGh5X3N0YXRzO1xcbm5ldC9kc2EvY29uZHVpdC5jLTMwNi1cXG4tLVxcbm5ldC9kc2EvY29uZHVpdC5jLTMxMS1cXG5uZXQvZHNhL2NvbmR1aXQuYzozMTI6c3RhdGljIHZvaWQgZHNhX2NvbmR1aXRfZXRodG9vbF90ZWFyZG93bihzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxcbm5ldC9kc2EvY29uZHVpdC5jLTMxMy17XFxubmV0L2RzYS9jb25kdWl0LmM6MzE0OlxcdHN0cnVjdCBkc2FfcG9ydCAqY3B1X2RwID0gZGV2LVxcdTAwM2Vkc2FfcHRyO1xcbm5ldC9kc2EvY29uZHVpdC5jLTMxNS1cXG4tLVxcbm5ldC9kc2EvY29uZHVpdC5jLTMyNy0gKi9cXG5uZXQvZHNhL2NvbmR1aXQuYzozMjg6c3RhdGljIHZvaWQgZHNhX2NvbmR1aXRfc2V0X3Byb21pc2N1aXR5KHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIGludCBpbmMpXFxubmV0L2RzYS9jb25kdWl0LmMtMzI5LXtcXG5uZXQvZHNhL2NvbmR1aXQuYzozMzA6XFx0Y29uc3Qgc3RydWN0IGRzYV9kZXZpY2Vfb3BzICpvcHMgPSBkZXYtXFx1MDAzZWRzYV9wdHItXFx1MDAzZXRhZ19vcHM7XFxubmV0L2RzYS9jb25kdWl0LmMtMzMxLVxcbi0tXFxubmV0L2RzYS9jb25kdWl0LmM9MzQwPXN0YXRpYyBzc2l6ZV90IHRhZ2dpbmdfc2hvdyhzdHJ1Y3QgZGV2aWNlICpkLCBzdHJ1Y3QgZGV2aWNlX2F0dHJpYnV0ZSAqYXR0cixcXG4tLVxcbm5ldC9kc2EvY29uZHVpdC5jLTM0My1cXHRzdHJ1Y3QgbmV0X2RldmljZSAqZGV2ID0gdG9fbmV0X2RldihkKTtcXG5uZXQvZHNhL2NvbmR1aXQuYzozNDQ6XFx0c3RydWN0IGRzYV9wb3J0ICpjcHVfZHAgPSBkZXYtXFx1MDAzZWRzYV9wdHI7XFxubmV0L2RzYS9jb25kdWl0LmMtMzQ1LVxcbm5ldC9kc2EvY29uZHVpdC5jLTM0Ni1cXHRyZXR1cm4gc3lzZnNfZW1pdChidWYsIFxcXCIlc1xcXFxuXFxcIixcXG5uZXQvZHNhL2NvbmR1aXQuYzozNDc6XFx0XFx0ICAgICAgIGRzYV90YWdfcHJvdG9jb2xfdG9fc3RyKGNwdV9kcC1cXHUwMDNldGFnX29wcykpO1xcbm5ldC9kc2EvY29uZHVpdC5jLTM0OC19XFxuLS1cXG5uZXQvZHNhL2NvbmR1aXQuYz0zNTA9c3RhdGljIHNzaXplX3QgdGFnZ2luZ19zdG9yZShzdHJ1Y3QgZGV2aWNlICpkLCBzdHJ1Y3QgZGV2aWNlX2F0dHJpYnV0ZSAqYXR0cixcXG4tLVxcbm5ldC9kc2EvY29uZHVpdC5jLTM1Mi17XFxubmV0L2RzYS9jb25kdWl0LmM6MzUzOlxcdGNvbnN0IHN0cnVjdCBkc2FfZGV2aWNlX29wcyAqbmV3X3RhZ19vcHMsICpvbGRfdGFnX29wcztcXG5uZXQvZHNhL2NvbmR1aXQuYy0zNTQtXFx0Y29uc3QgY2hhciAqZW5kID0gc3RyY2hybnVsKGJ1ZiwgJ1xcXFxuJyksICpuYW1lO1xcbm5ldC9kc2EvY29uZHVpdC5jLTM1NS1cXHRzdHJ1Y3QgbmV0X2RldmljZSAqZGV2ID0gdG9fbmV0X2RldihkKTtcXG5uZXQvZHNhL2NvbmR1aXQuYzozNTY6XFx0c3RydWN0IGRzYV9wb3J0ICpjcHVfZHAgPSBkZXYtXFx1MDAzZWRzYV9wdHI7XFxubmV0L2RzYS9jb25kdWl0LmMtMzU3LVxcdHNpemVfdCBsZW4gPSBlbmQgLSBidWY7XFxuLS1cXG5uZXQvZHNhL2NvbmR1aXQuYy0zNjgtXFx0b2xkX3RhZ19vcHMgPSBjcHVfZHAtXFx1MDAzZXRhZ19vcHM7XFxubmV0L2RzYS9jb25kdWl0LmM6MzY5OlxcdG5ld190YWdfb3BzID0gZHNhX3RhZ19kcml2ZXJfZ2V0X2J5X25hbWUobmFtZSk7XFxubmV0L2RzYS9jb25kdWl0LmMtMzcwLVxcdGtmcmVlKG5hbWUpO1xcbi0tXFxubmV0L2RzYS9jb25kdWl0LmMtMzgwLVxcbm5ldC9kc2EvY29uZHVpdC5jOjM4MTpcXHRlcnIgPSBkc2FfdHJlZV9jaGFuZ2VfdGFnX3Byb3RvKGNwdV9kcC1cXHUwMDNlZHMtXFx1MDAzZWRzdCwgbmV3X3RhZ19vcHMsXFxubmV0L2RzYS9jb25kdWl0LmMtMzgyLVxcdFxcdFxcdFxcdFxcdG9sZF90YWdfb3BzKTtcXG4tLVxcbm5ldC9kc2EvY29uZHVpdC5jLTM4Ni1cXHRcXHQgKi9cXG5uZXQvZHNhL2NvbmR1aXQuYzozODc6XFx0XFx0ZHNhX3RhZ19kcml2ZXJfcHV0KG5ld190YWdfb3BzKTtcXG5uZXQvZHNhL2NvbmR1aXQuYy0zODgtXFx0XFx0cmV0dXJuIGVycjtcXG4tLVxcbm5ldC9kc2EvY29uZHVpdC5jLTM5My1vdXQ6XFxubmV0L2RzYS9jb25kdWl0LmM6Mzk0OlxcdGRzYV90YWdfZHJpdmVyX3B1dChvbGRfdGFnX29wcyk7XFxubmV0L2RzYS9jb25kdWl0LmMtMzk1LVxcdHJldHVybiBjb3VudDtcXG4tLVxcbm5ldC9kc2EvY29uZHVpdC5jPTM5Nz1zdGF0aWMgREVWSUNFX0FUVFJfUlcodGFnZ2luZyk7XFxubmV0L2RzYS9jb25kdWl0LmMtMzk4LVxcbm5ldC9kc2EvY29uZHVpdC5jOjM5OTpzdGF0aWMgc3RydWN0IGF0dHJpYnV0ZSAqZHNhX3VzZXJfYXR0cnNbXSA9IHtcXG5uZXQvZHNhL2NvbmR1aXQuYy00MDAtXFx0XFx1MDAyNmRldl9hdHRyX3RhZ2dpbmcuYXR0cixcXG4tLVxcbm5ldC9kc2EvY29uZHVpdC5jLTQwMy1cXG5uZXQvZHNhL2NvbmR1aXQuYzo0MDQ6c3RhdGljIGNvbnN0IHN0cnVjdCBhdHRyaWJ1dGVfZ3JvdXAgZHNhX2dyb3VwID0ge1xcbm5ldC9kc2EvY29uZHVpdC5jOjQwNTpcXHQubmFtZVxcdD0gXFxcImRzYVxcXCIsXFxubmV0L2RzYS9jb25kdWl0LmM6NDA2OlxcdC5hdHRyc1xcdD0gZHNhX3VzZXJfYXR0cnMsXFxubmV0L2RzYS9jb25kdWl0LmMtNDA3LX07XFxubmV0L2RzYS9jb25kdWl0LmMtNDA4LVxcbm5ldC9kc2EvY29uZHVpdC5jOjQwOTpzdGF0aWMgdm9pZCBkc2FfY29uZHVpdF9yZXNldF9tdHUoc3RydWN0IG5ldF9kZXZpY2UgKmRldilcXG5uZXQvZHNhL2NvbmR1aXQuYy00MTAte1xcbi0tXFxubmV0L2RzYS9jb25kdWl0LmMtNDE4LVxcbm5ldC9kc2EvY29uZHVpdC5jOjQxOTppbnQgZHNhX2NvbmR1aXRfc2V0dXAoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgc3RydWN0IGRzYV9wb3J0ICpjcHVfZHApXFxubmV0L2RzYS9jb25kdWl0LmMtNDIwLXtcXG5uZXQvZHNhL2NvbmR1aXQuYzo0MjE6XFx0Y29uc3Qgc3RydWN0IGRzYV9kZXZpY2Vfb3BzICp0YWdfb3BzID0gY3B1X2RwLVxcdTAwM2V0YWdfb3BzO1xcbm5ldC9kc2EvY29uZHVpdC5jOjQyMjpcXHRzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMgPSBjcHVfZHAtXFx1MDAzZWRzO1xcbm5ldC9kc2EvY29uZHVpdC5jLTQyMy1cXHRzdHJ1Y3QgZGV2aWNlX2xpbmsgKmNvbnN1bWVyX2xpbms7XFxuLS1cXG5uZXQvZHNhL2NvbmR1aXQuYy00MjUtXFxubmV0L2RzYS9jb25kdWl0LmM6NDI2OlxcdG10dSA9IEVUSF9EQVRBX0xFTiArIGRzYV90YWdfcHJvdG9jb2xfb3ZlcmhlYWQodGFnX29wcyk7XFxubmV0L2RzYS9jb25kdWl0LmMtNDI3LVxcbi0tXFxubmV0L2RzYS9jb25kdWl0LmMtNDM4LVxcdC8qIFRoZSBzd2l0Y2ggZHJpdmVyIG1heSBub3QgaW1wbGVtZW50IC1cXHUwMDNlcG9ydF9jaGFuZ2VfbXR1KCksIGNhc2UgaW5cXG5uZXQvZHNhL2NvbmR1aXQuYzo0Mzk6XFx0ICogd2hpY2ggZHNhX3VzZXJfY2hhbmdlX210dSgpIHdpbGwgbm90IHVwZGF0ZSB0aGUgY29uZHVpdCBNVFUgZWl0aGVyLFxcbm5ldC9kc2EvY29uZHVpdC5jLTQ0MC1cXHQgKiBzbyB3ZSBuZWVkIHRvIGRvIHRoYXQgaGVyZS5cXG4tLVxcbm5ldC9kc2EvY29uZHVpdC5jLTQ1Mi1cXG5uZXQvZHNhL2NvbmR1aXQuYzo0NTM6XFx0ZGV2LVxcdTAwM2Vkc2FfcHRyID0gY3B1X2RwO1xcbm5ldC9kc2EvY29uZHVpdC5jLTQ1NC1cXG5uZXQvZHNhL2NvbmR1aXQuYzo0NTU6XFx0ZHNhX2NvbmR1aXRfc2V0X3Byb21pc2N1aXR5KGRldiwgMSk7XFxubmV0L2RzYS9jb25kdWl0LmMtNDU2LVxcbm5ldC9kc2EvY29uZHVpdC5jOjQ1NzpcXHRyZXQgPSBkc2FfY29uZHVpdF9ldGh0b29sX3NldHVwKGRldik7XFxubmV0L2RzYS9jb25kdWl0LmMtNDU4LVxcdGlmIChyZXQpXFxuLS1cXG5uZXQvZHNhL2NvbmR1aXQuYy00NjAtXFxubmV0L2RzYS9jb25kdWl0LmM6NDYxOlxcdHJldCA9IHN5c2ZzX2NyZWF0ZV9ncm91cChcXHUwMDI2ZGV2LVxcdTAwM2VkZXYua29iaiwgXFx1MDAyNmRzYV9ncm91cCk7XFxubmV0L2RzYS9jb25kdWl0LmMtNDYyLVxcdGlmIChyZXQpXFxuLS1cXG5uZXQvZHNhL2NvbmR1aXQuYy00Njctb3V0X2Vycl9ldGh0b29sX3RlYXJkb3duOlxcbm5ldC9kc2EvY29uZHVpdC5jOjQ2ODpcXHRkc2FfY29uZHVpdF9ldGh0b29sX3RlYXJkb3duKGRldik7XFxubmV0L2RzYS9jb25kdWl0LmMtNDY5LW91dF9lcnJfcmVzZXRfcHJvbWlzYzpcXG5uZXQvZHNhL2NvbmR1aXQuYzo0NzA6XFx0ZHNhX2NvbmR1aXRfc2V0X3Byb21pc2N1aXR5KGRldiwgLTEpO1xcbm5ldC9kc2EvY29uZHVpdC5jLTQ3MS1cXHRyZXR1cm4gcmV0O1xcbi0tXFxubmV0L2RzYS9jb25kdWl0LmMtNDczLVxcbm5ldC9kc2EvY29uZHVpdC5jOjQ3NDp2b2lkIGRzYV9jb25kdWl0X3RlYXJkb3duKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXFxubmV0L2RzYS9jb25kdWl0LmMtNDc1LXtcXG5uZXQvZHNhL2NvbmR1aXQuYzo0NzY6XFx0c3lzZnNfcmVtb3ZlX2dyb3VwKFxcdTAwMjZkZXYtXFx1MDAzZWRldi5rb2JqLCBcXHUwMDI2ZHNhX2dyb3VwKTtcXG5uZXQvZHNhL2NvbmR1aXQuYzo0Nzc6XFx0ZHNhX2NvbmR1aXRfZXRodG9vbF90ZWFyZG93bihkZXYpO1xcbm5ldC9kc2EvY29uZHVpdC5jOjQ3ODpcXHRkc2FfY29uZHVpdF9yZXNldF9tdHUoZGV2KTtcXG5uZXQvZHNhL2NvbmR1aXQuYzo0Nzk6XFx0ZHNhX2NvbmR1aXRfc2V0X3Byb21pc2N1aXR5KGRldiwgLTEpO1xcbm5ldC9kc2EvY29uZHVpdC5jLTQ4MC1cXG5uZXQvZHNhL2NvbmR1aXQuYzo0ODE6XFx0ZGV2LVxcdTAwM2Vkc2FfcHRyID0gTlVMTDtcXG5uZXQvZHNhL2NvbmR1aXQuYy00ODItXFxuLS1cXG5uZXQvZHNhL2NvbmR1aXQuYy00ODktXFxubmV0L2RzYS9jb25kdWl0LmM6NDkwOmludCBkc2FfY29uZHVpdF9sYWdfc2V0dXAoc3RydWN0IG5ldF9kZXZpY2UgKmxhZ19kZXYsIHN0cnVjdCBkc2FfcG9ydCAqY3B1X2RwLFxcbm5ldC9kc2EvY29uZHVpdC5jLTQ5MS1cXHRcXHRcXHQgIHN0cnVjdCBuZXRkZXZfbGFnX3VwcGVyX2luZm8gKnVpbmZvLFxcbi0tXFxubmV0L2RzYS9jb25kdWl0LmMtNDk2LVxcbm5ldC9kc2EvY29uZHVpdC5jOjQ5NzpcXHRpZiAoIW5ldGRldl91c2VzX2RzYShsYWdfZGV2KSkge1xcbm5ldC9kc2EvY29uZHVpdC5jOjQ5ODpcXHRcXHRlcnIgPSBkc2FfY29uZHVpdF9zZXR1cChsYWdfZGV2LCBjcHVfZHApO1xcbm5ldC9kc2EvY29uZHVpdC5jLTQ5OS1cXHRcXHRpZiAoZXJyKVxcbi0tXFxubmV0L2RzYS9jb25kdWl0LmMtNTA0LVxcbm5ldC9kc2EvY29uZHVpdC5jOjUwNTpcXHRlcnIgPSBkc2FfcG9ydF9sYWdfam9pbihjcHVfZHAsIGxhZ19kZXYsIHVpbmZvLCBleHRhY2spO1xcbm5ldC9kc2EvY29uZHVpdC5jLTUwNi1cXHRpZiAoZXJyKSB7XFxuLS1cXG5uZXQvZHNhL2NvbmR1aXQuYy01MTQtXFx0aWYgKGNvbmR1aXRfc2V0dXApXFxubmV0L2RzYS9jb25kdWl0LmM6NTE1OlxcdFxcdGRzYV9jb25kdWl0X3RlYXJkb3duKGxhZ19kZXYpO1xcbm5ldC9kc2EvY29uZHVpdC5jLTUxNi1cXHRyZXR1cm4gZXJyO1xcbi0tXFxubmV0L2RzYS9jb25kdWl0LmMtNTIxLSAqL1xcbm5ldC9kc2EvY29uZHVpdC5jOjUyMjp2b2lkIGRzYV9jb25kdWl0X2xhZ190ZWFyZG93bihzdHJ1Y3QgbmV0X2RldmljZSAqbGFnX2RldixcXG5uZXQvZHNhL2NvbmR1aXQuYzo1MjM6XFx0XFx0XFx0ICAgICAgc3RydWN0IGRzYV9wb3J0ICpjcHVfZHApXFxubmV0L2RzYS9jb25kdWl0LmMtNTI0LXtcXG4tLVxcbm5ldC9kc2EvY29uZHVpdC5jLTUyNy1cXG5uZXQvZHNhL2NvbmR1aXQuYzo1Mjg6XFx0ZHNhX3BvcnRfbGFnX2xlYXZlKGNwdV9kcCwgbGFnX2Rldik7XFxubmV0L2RzYS9jb25kdWl0LmMtNTI5LVxcbm5ldC9kc2EvY29uZHVpdC5jLTUzMC1cXHRuZXRkZXZfZm9yX2VhY2hfdXBwZXJfZGV2X3JjdShsYWdfZGV2LCB1cHBlciwgaXRlcilcXG5uZXQvZHNhL2NvbmR1aXQuYzo1MzE6XFx0XFx0aWYgKGRzYV91c2VyX2Rldl9jaGVjayh1cHBlcikpXFxubmV0L2RzYS9jb25kdWl0LmMtNTMyLVxcdFxcdFxcdHJldHVybjtcXG5uZXQvZHNhL2NvbmR1aXQuYy01MzMtXFxubmV0L2RzYS9jb25kdWl0LmM6NTM0OlxcdGRzYV9jb25kdWl0X3RlYXJkb3duKGxhZ19kZXYpO1xcbm5ldC9kc2EvY29uZHVpdC5jLTUzNS19XFxuLS1cXG5uZXQvZHNhL2NvbmR1aXQuaC01LVxcbm5ldC9kc2EvY29uZHVpdC5oOjY6c3RydWN0IGRzYV9wb3J0O1xcbm5ldC9kc2EvY29uZHVpdC5oLTctc3RydWN0IG5ldF9kZXZpY2U7XFxuLS1cXG5uZXQvZHNhL2NvbmR1aXQuaD05PXN0cnVjdCBuZXRsaW5rX2V4dF9hY2s7XFxubmV0L2RzYS9jb25kdWl0LmgtMTAtXFxubmV0L2RzYS9jb25kdWl0Lmg6MTE6aW50IGRzYV9jb25kdWl0X3NldHVwKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHN0cnVjdCBkc2FfcG9ydCAqY3B1X2RwKTtcXG5uZXQvZHNhL2NvbmR1aXQuaDoxMjp2b2lkIGRzYV9jb25kdWl0X3RlYXJkb3duKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpO1xcbm5ldC9kc2EvY29uZHVpdC5oOjEzOmludCBkc2FfY29uZHVpdF9sYWdfc2V0dXAoc3RydWN0IG5ldF9kZXZpY2UgKmxhZ19kZXYsIHN0cnVjdCBkc2FfcG9ydCAqY3B1X2RwLFxcbm5ldC9kc2EvY29uZHVpdC5oLTE0LVxcdFxcdFxcdCAgc3RydWN0IG5ldGRldl9sYWdfdXBwZXJfaW5mbyAqdWluZm8sXFxubmV0L2RzYS9jb25kdWl0LmgtMTUtXFx0XFx0XFx0ICBzdHJ1Y3QgbmV0bGlua19leHRfYWNrICpleHRhY2spO1xcbm5ldC9kc2EvY29uZHVpdC5oOjE2OnZvaWQgZHNhX2NvbmR1aXRfbGFnX3RlYXJkb3duKHN0cnVjdCBuZXRfZGV2aWNlICpsYWdfZGV2LFxcbm5ldC9kc2EvY29uZHVpdC5oOjE3OlxcdFxcdFxcdCAgICAgIHN0cnVjdCBkc2FfcG9ydCAqY3B1X2RwKTtcXG5uZXQvZHNhL2NvbmR1aXQuaDoxODppbnQgX19kc2FfY29uZHVpdF9od3RzdGFtcF92YWxpZGF0ZShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxcbm5ldC9kc2EvY29uZHVpdC5oLTE5LVxcdFxcdFxcdFxcdCAgICBjb25zdCBzdHJ1Y3Qga2VybmVsX2h3dHN0YW1wX2NvbmZpZyAqY29uZmlnLFxcbi0tXFxubmV0L2RzYS9kZXZsaW5rLmMtNS1cXG5uZXQvZHNhL2RldmxpbmsuYzo2OiNpbmNsdWRlIFxcdTAwM2NuZXQvZHNhLmhcXHUwMDNlXFxubmV0L2RzYS9kZXZsaW5rLmMtNy0jaW5jbHVkZSBcXHUwMDNjbmV0L2RldmxpbmsuaFxcdTAwM2VcXG4tLVxcbm5ldC9kc2EvZGV2bGluay5jLTEwLVxcbm5ldC9kc2EvZGV2bGluay5jOjExOnN0YXRpYyBpbnQgZHNhX2RldmxpbmtfaW5mb19nZXQoc3RydWN0IGRldmxpbmsgKmRsLFxcbm5ldC9kc2EvZGV2bGluay5jLTEyLVxcdFxcdFxcdFxcdHN0cnVjdCBkZXZsaW5rX2luZm9fcmVxICpyZXEsXFxuLS1cXG5uZXQvZHNhL2RldmxpbmsuYy0xNC17XFxubmV0L2RzYS9kZXZsaW5rLmM6MTU6XFx0c3RydWN0IGRzYV9zd2l0Y2ggKmRzID0gZHNhX2RldmxpbmtfdG9fZHMoZGwpO1xcbm5ldC9kc2EvZGV2bGluay5jLTE2LVxcbi0tXFxubmV0L2RzYS9kZXZsaW5rLmMtMjItXFxubmV0L2RzYS9kZXZsaW5rLmM6MjM6c3RhdGljIGludCBkc2FfZGV2bGlua19zYl9wb29sX2dldChzdHJ1Y3QgZGV2bGluayAqZGwsXFxubmV0L2RzYS9kZXZsaW5rLmMtMjQtXFx0XFx0XFx0XFx0ICAgdW5zaWduZWQgaW50IHNiX2luZGV4LCB1MTYgcG9vbF9pbmRleCxcXG4tLVxcbm5ldC9kc2EvZGV2bGluay5jLTI2LXtcXG5uZXQvZHNhL2RldmxpbmsuYzoyNzpcXHRzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMgPSBkc2FfZGV2bGlua190b19kcyhkbCk7XFxubmV0L2RzYS9kZXZsaW5rLmMtMjgtXFxuLS1cXG5uZXQvZHNhL2RldmxpbmsuYy0zNS1cXG5uZXQvZHNhL2RldmxpbmsuYzozNjpzdGF0aWMgaW50IGRzYV9kZXZsaW5rX3NiX3Bvb2xfc2V0KHN0cnVjdCBkZXZsaW5rICpkbCwgdW5zaWduZWQgaW50IHNiX2luZGV4LFxcbm5ldC9kc2EvZGV2bGluay5jLTM3LVxcdFxcdFxcdFxcdCAgIHUxNiBwb29sX2luZGV4LCB1MzIgc2l6ZSxcXG4tLVxcbm5ldC9kc2EvZGV2bGluay5jLTQwLXtcXG5uZXQvZHNhL2RldmxpbmsuYzo0MTpcXHRzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMgPSBkc2FfZGV2bGlua190b19kcyhkbCk7XFxubmV0L2RzYS9kZXZsaW5rLmMtNDItXFxuLS1cXG5uZXQvZHNhL2RldmxpbmsuYy00OS1cXG5uZXQvZHNhL2RldmxpbmsuYzo1MDpzdGF0aWMgaW50IGRzYV9kZXZsaW5rX3NiX3BvcnRfcG9vbF9nZXQoc3RydWN0IGRldmxpbmtfcG9ydCAqZGxwLFxcbm5ldC9kc2EvZGV2bGluay5jLTUxLVxcdFxcdFxcdFxcdFxcdHVuc2lnbmVkIGludCBzYl9pbmRleCwgdTE2IHBvb2xfaW5kZXgsXFxuLS1cXG5uZXQvZHNhL2RldmxpbmsuYy01My17XFxubmV0L2RzYS9kZXZsaW5rLmM6NTQ6XFx0c3RydWN0IGRzYV9zd2l0Y2ggKmRzID0gZHNhX2RldmxpbmtfcG9ydF90b19kcyhkbHApO1xcbm5ldC9kc2EvZGV2bGluay5jOjU1OlxcdGludCBwb3J0ID0gZHNhX2RldmxpbmtfcG9ydF90b19wb3J0KGRscCk7XFxubmV0L2RzYS9kZXZsaW5rLmMtNTYtXFxuLS1cXG5uZXQvZHNhL2RldmxpbmsuYy02My1cXG5uZXQvZHNhL2RldmxpbmsuYzo2NDpzdGF0aWMgaW50IGRzYV9kZXZsaW5rX3NiX3BvcnRfcG9vbF9zZXQoc3RydWN0IGRldmxpbmtfcG9ydCAqZGxwLFxcbm5ldC9kc2EvZGV2bGluay5jLTY1LVxcdFxcdFxcdFxcdFxcdHVuc2lnbmVkIGludCBzYl9pbmRleCwgdTE2IHBvb2xfaW5kZXgsXFxuLS1cXG5uZXQvZHNhL2RldmxpbmsuYy02OC17XFxubmV0L2RzYS9kZXZsaW5rLmM6Njk6XFx0c3RydWN0IGRzYV9zd2l0Y2ggKmRzID0gZHNhX2RldmxpbmtfcG9ydF90b19kcyhkbHApO1xcbm5ldC9kc2EvZGV2bGluay5jOjcwOlxcdGludCBwb3J0ID0gZHNhX2RldmxpbmtfcG9ydF90b19wb3J0KGRscCk7XFxubmV0L2RzYS9kZXZsaW5rLmMtNzEtXFxuLS1cXG5uZXQvZHNhL2RldmxpbmsuYz03OT1zdGF0aWMgaW50XFxubmV0L2RzYS9kZXZsaW5rLmM6ODA6ZHNhX2Rldmxpbmtfc2JfdGNfcG9vbF9iaW5kX2dldChzdHJ1Y3QgZGV2bGlua19wb3J0ICpkbHAsXFxubmV0L2RzYS9kZXZsaW5rLmMtODEtXFx0XFx0XFx0XFx0dW5zaWduZWQgaW50IHNiX2luZGV4LCB1MTYgdGNfaW5kZXgsXFxuLS1cXG5uZXQvZHNhL2RldmxpbmsuYy04NC17XFxubmV0L2RzYS9kZXZsaW5rLmM6ODU6XFx0c3RydWN0IGRzYV9zd2l0Y2ggKmRzID0gZHNhX2RldmxpbmtfcG9ydF90b19kcyhkbHApO1xcbm5ldC9kc2EvZGV2bGluay5jOjg2OlxcdGludCBwb3J0ID0gZHNhX2RldmxpbmtfcG9ydF90b19wb3J0KGRscCk7XFxubmV0L2RzYS9kZXZsaW5rLmMtODctXFxuLS1cXG5uZXQvZHNhL2RldmxpbmsuYz05Nj1zdGF0aWMgaW50XFxubmV0L2RzYS9kZXZsaW5rLmM6OTc6ZHNhX2Rldmxpbmtfc2JfdGNfcG9vbF9iaW5kX3NldChzdHJ1Y3QgZGV2bGlua19wb3J0ICpkbHAsXFxubmV0L2RzYS9kZXZsaW5rLmMtOTgtXFx0XFx0XFx0XFx0dW5zaWduZWQgaW50IHNiX2luZGV4LCB1MTYgdGNfaW5kZXgsXFxuLS1cXG5uZXQvZHNhL2RldmxpbmsuYy0xMDIte1xcbm5ldC9kc2EvZGV2bGluay5jOjEwMzpcXHRzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMgPSBkc2FfZGV2bGlua19wb3J0X3RvX2RzKGRscCk7XFxubmV0L2RzYS9kZXZsaW5rLmM6MTA0OlxcdGludCBwb3J0ID0gZHNhX2RldmxpbmtfcG9ydF90b19wb3J0KGRscCk7XFxubmV0L2RzYS9kZXZsaW5rLmMtMTA1LVxcbi0tXFxubmV0L2RzYS9kZXZsaW5rLmMtMTE0LVxcbm5ldC9kc2EvZGV2bGluay5jOjExNTpzdGF0aWMgaW50IGRzYV9kZXZsaW5rX3NiX29jY19zbmFwc2hvdChzdHJ1Y3QgZGV2bGluayAqZGwsXFxubmV0L2RzYS9kZXZsaW5rLmMtMTE2LVxcdFxcdFxcdFxcdCAgICAgICB1bnNpZ25lZCBpbnQgc2JfaW5kZXgpXFxubmV0L2RzYS9kZXZsaW5rLmMtMTE3LXtcXG5uZXQvZHNhL2RldmxpbmsuYzoxMTg6XFx0c3RydWN0IGRzYV9zd2l0Y2ggKmRzID0gZHNhX2RldmxpbmtfdG9fZHMoZGwpO1xcbm5ldC9kc2EvZGV2bGluay5jLTExOS1cXG4tLVxcbm5ldC9kc2EvZGV2bGluay5jLTEyNS1cXG5uZXQvZHNhL2RldmxpbmsuYzoxMjY6c3RhdGljIGludCBkc2FfZGV2bGlua19zYl9vY2NfbWF4X2NsZWFyKHN0cnVjdCBkZXZsaW5rICpkbCxcXG5uZXQvZHNhL2RldmxpbmsuYy0xMjctXFx0XFx0XFx0XFx0XFx0dW5zaWduZWQgaW50IHNiX2luZGV4KVxcbm5ldC9kc2EvZGV2bGluay5jLTEyOC17XFxubmV0L2RzYS9kZXZsaW5rLmM6MTI5OlxcdHN0cnVjdCBkc2Ffc3dpdGNoICpkcyA9IGRzYV9kZXZsaW5rX3RvX2RzKGRsKTtcXG5uZXQvZHNhL2RldmxpbmsuYy0xMzAtXFxuLS1cXG5uZXQvZHNhL2RldmxpbmsuYy0xMzYtXFxubmV0L2RzYS9kZXZsaW5rLmM6MTM3OnN0YXRpYyBpbnQgZHNhX2Rldmxpbmtfc2Jfb2NjX3BvcnRfcG9vbF9nZXQoc3RydWN0IGRldmxpbmtfcG9ydCAqZGxwLFxcbm5ldC9kc2EvZGV2bGluay5jLTEzOC1cXHRcXHRcXHRcXHRcXHQgICAgdW5zaWduZWQgaW50IHNiX2luZGV4LFxcbi0tXFxubmV0L2RzYS9kZXZsaW5rLmMtMTQxLXtcXG5uZXQvZHNhL2RldmxpbmsuYzoxNDI6XFx0c3RydWN0IGRzYV9zd2l0Y2ggKmRzID0gZHNhX2RldmxpbmtfcG9ydF90b19kcyhkbHApO1xcbm5ldC9kc2EvZGV2bGluay5jOjE0MzpcXHRpbnQgcG9ydCA9IGRzYV9kZXZsaW5rX3BvcnRfdG9fcG9ydChkbHApO1xcbm5ldC9kc2EvZGV2bGluay5jLTE0NC1cXG4tLVxcbm5ldC9kc2EvZGV2bGluay5jPTE1Mj1zdGF0aWMgaW50XFxubmV0L2RzYS9kZXZsaW5rLmM6MTUzOmRzYV9kZXZsaW5rX3NiX29jY190Y19wb3J0X2JpbmRfZ2V0KHN0cnVjdCBkZXZsaW5rX3BvcnQgKmRscCxcXG5uZXQvZHNhL2RldmxpbmsuYy0xNTQtXFx0XFx0XFx0XFx0ICAgIHVuc2lnbmVkIGludCBzYl9pbmRleCwgdTE2IHRjX2luZGV4LFxcbi0tXFxubmV0L2RzYS9kZXZsaW5rLmMtMTU3LXtcXG5uZXQvZHNhL2RldmxpbmsuYzoxNTg6XFx0c3RydWN0IGRzYV9zd2l0Y2ggKmRzID0gZHNhX2RldmxpbmtfcG9ydF90b19kcyhkbHApO1xcbm5ldC9kc2EvZGV2bGluay5jOjE1OTpcXHRpbnQgcG9ydCA9IGRzYV9kZXZsaW5rX3BvcnRfdG9fcG9ydChkbHApO1xcbm5ldC9kc2EvZGV2bGluay5jLTE2MC1cXG4tLVxcbm5ldC9kc2EvZGV2bGluay5jLTE2OS1cXG5uZXQvZHNhL2RldmxpbmsuYzoxNzA6c3RhdGljIGNvbnN0IHN0cnVjdCBkZXZsaW5rX29wcyBkc2FfZGV2bGlua19vcHMgPSB7XFxubmV0L2RzYS9kZXZsaW5rLmM6MTcxOlxcdC5pbmZvX2dldFxcdFxcdFxcdD0gZHNhX2RldmxpbmtfaW5mb19nZXQsXFxubmV0L2RzYS9kZXZsaW5rLmM6MTcyOlxcdC5zYl9wb29sX2dldFxcdFxcdFxcdD0gZHNhX2Rldmxpbmtfc2JfcG9vbF9nZXQsXFxubmV0L2RzYS9kZXZsaW5rLmM6MTczOlxcdC5zYl9wb29sX3NldFxcdFxcdFxcdD0gZHNhX2Rldmxpbmtfc2JfcG9vbF9zZXQsXFxubmV0L2RzYS9kZXZsaW5rLmM6MTc0OlxcdC5zYl9wb3J0X3Bvb2xfZ2V0XFx0XFx0PSBkc2FfZGV2bGlua19zYl9wb3J0X3Bvb2xfZ2V0LFxcbm5ldC9kc2EvZGV2bGluay5jOjE3NTpcXHQuc2JfcG9ydF9wb29sX3NldFxcdFxcdD0gZHNhX2Rldmxpbmtfc2JfcG9ydF9wb29sX3NldCxcXG5uZXQvZHNhL2RldmxpbmsuYzoxNzY6XFx0LnNiX3RjX3Bvb2xfYmluZF9nZXRcXHRcXHQ9IGRzYV9kZXZsaW5rX3NiX3RjX3Bvb2xfYmluZF9nZXQsXFxubmV0L2RzYS9kZXZsaW5rLmM6MTc3OlxcdC5zYl90Y19wb29sX2JpbmRfc2V0XFx0XFx0PSBkc2FfZGV2bGlua19zYl90Y19wb29sX2JpbmRfc2V0LFxcbm5ldC9kc2EvZGV2bGluay5jOjE3ODpcXHQuc2Jfb2NjX3NuYXBzaG90XFx0XFx0PSBkc2FfZGV2bGlua19zYl9vY2Nfc25hcHNob3QsXFxubmV0L2RzYS9kZXZsaW5rLmM6MTc5OlxcdC5zYl9vY2NfbWF4X2NsZWFyXFx0XFx0PSBkc2FfZGV2bGlua19zYl9vY2NfbWF4X2NsZWFyLFxcbm5ldC9kc2EvZGV2bGluay5jOjE4MDpcXHQuc2Jfb2NjX3BvcnRfcG9vbF9nZXRcXHRcXHQ9IGRzYV9kZXZsaW5rX3NiX29jY19wb3J0X3Bvb2xfZ2V0LFxcbm5ldC9kc2EvZGV2bGluay5jOjE4MTpcXHQuc2Jfb2NjX3RjX3BvcnRfYmluZF9nZXRcXHQ9IGRzYV9kZXZsaW5rX3NiX29jY190Y19wb3J0X2JpbmRfZ2V0LFxcbm5ldC9kc2EvZGV2bGluay5jLTE4Mi19O1xcbm5ldC9kc2EvZGV2bGluay5jLTE4My1cXG5uZXQvZHNhL2RldmxpbmsuYzoxODQ6aW50IGRzYV9kZXZsaW5rX3BhcmFtX2dldChzdHJ1Y3QgZGV2bGluayAqZGwsIHUzMiBpZCxcXG5uZXQvZHNhL2RldmxpbmsuYy0xODUtXFx0XFx0XFx0ICBzdHJ1Y3QgZGV2bGlua19wYXJhbV9nc2V0X2N0eCAqY3R4LFxcbi0tXFxubmV0L2RzYS9kZXZsaW5rLmMtMTg3LXtcXG5uZXQvZHNhL2RldmxpbmsuYzoxODg6XFx0c3RydWN0IGRzYV9zd2l0Y2ggKmRzID0gZHNhX2RldmxpbmtfdG9fZHMoZGwpO1xcbm5ldC9kc2EvZGV2bGluay5jLTE4OS1cXG4tLVxcbm5ldC9kc2EvZGV2bGluay5jLTE5NC19XFxubmV0L2RzYS9kZXZsaW5rLmM6MTk1OkVYUE9SVF9TWU1CT0xfR1BMKGRzYV9kZXZsaW5rX3BhcmFtX2dldCk7XFxubmV0L2RzYS9kZXZsaW5rLmMtMTk2LVxcbm5ldC9kc2EvZGV2bGluay5jOjE5NzppbnQgZHNhX2RldmxpbmtfcGFyYW1fc2V0KHN0cnVjdCBkZXZsaW5rICpkbCwgdTMyIGlkLFxcbm5ldC9kc2EvZGV2bGluay5jLTE5OC1cXHRcXHRcXHQgIHN0cnVjdCBkZXZsaW5rX3BhcmFtX2dzZXRfY3R4ICpjdHgsXFxuLS1cXG5uZXQvZHNhL2RldmxpbmsuYy0yMDAte1xcbm5ldC9kc2EvZGV2bGluay5jOjIwMTpcXHRzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMgPSBkc2FfZGV2bGlua190b19kcyhkbCk7XFxubmV0L2RzYS9kZXZsaW5rLmMtMjAyLVxcbi0tXFxubmV0L2RzYS9kZXZsaW5rLmMtMjA3LX1cXG5uZXQvZHNhL2RldmxpbmsuYzoyMDg6RVhQT1JUX1NZTUJPTF9HUEwoZHNhX2RldmxpbmtfcGFyYW1fc2V0KTtcXG5uZXQvZHNhL2RldmxpbmsuYy0yMDktXFxubmV0L2RzYS9kZXZsaW5rLmM6MjEwOmludCBkc2FfZGV2bGlua19wYXJhbXNfcmVnaXN0ZXIoc3RydWN0IGRzYV9zd2l0Y2ggKmRzLFxcbm5ldC9kc2EvZGV2bGluay5jLTIxMS1cXHRcXHRcXHRcXHRjb25zdCBzdHJ1Y3QgZGV2bGlua19wYXJhbSAqcGFyYW1zLFxcbi0tXFxubmV0L2RzYS9kZXZsaW5rLmMtMjE1LX1cXG5uZXQvZHNhL2RldmxpbmsuYzoyMTY6RVhQT1JUX1NZTUJPTF9HUEwoZHNhX2RldmxpbmtfcGFyYW1zX3JlZ2lzdGVyKTtcXG5uZXQvZHNhL2RldmxpbmsuYy0yMTctXFxubmV0L2RzYS9kZXZsaW5rLmM6MjE4OnZvaWQgZHNhX2RldmxpbmtfcGFyYW1zX3VucmVnaXN0ZXIoc3RydWN0IGRzYV9zd2l0Y2ggKmRzLFxcbm5ldC9kc2EvZGV2bGluay5jLTIxOS1cXHRcXHRcXHRcXHQgICBjb25zdCBzdHJ1Y3QgZGV2bGlua19wYXJhbSAqcGFyYW1zLFxcbi0tXFxubmV0L2RzYS9kZXZsaW5rLmMtMjIzLX1cXG5uZXQvZHNhL2RldmxpbmsuYzoyMjQ6RVhQT1JUX1NZTUJPTF9HUEwoZHNhX2RldmxpbmtfcGFyYW1zX3VucmVnaXN0ZXIpO1xcbm5ldC9kc2EvZGV2bGluay5jLTIyNS1cXG5uZXQvZHNhL2RldmxpbmsuYzoyMjY6aW50IGRzYV9kZXZsaW5rX3Jlc291cmNlX3JlZ2lzdGVyKHN0cnVjdCBkc2Ffc3dpdGNoICpkcyxcXG5uZXQvZHNhL2RldmxpbmsuYy0yMjctXFx0XFx0XFx0XFx0ICBjb25zdCBjaGFyICpyZXNvdXJjZV9uYW1lLFxcbi0tXFxubmV0L2RzYS9kZXZsaW5rLmMtMjQyLX1cXG5uZXQvZHNhL2RldmxpbmsuYzoyNDM6RVhQT1JUX1NZTUJPTF9HUEwoZHNhX2RldmxpbmtfcmVzb3VyY2VfcmVnaXN0ZXIpO1xcbm5ldC9kc2EvZGV2bGluay5jLTI0NC1cXG5uZXQvZHNhL2RldmxpbmsuYzoyNDU6dm9pZCBkc2FfZGV2bGlua19yZXNvdXJjZXNfdW5yZWdpc3RlcihzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMpXFxubmV0L2RzYS9kZXZsaW5rLmMtMjQ2LXtcXG4tLVxcbm5ldC9kc2EvZGV2bGluay5jLTI0OC19XFxubmV0L2RzYS9kZXZsaW5rLmM6MjQ5OkVYUE9SVF9TWU1CT0xfR1BMKGRzYV9kZXZsaW5rX3Jlc291cmNlc191bnJlZ2lzdGVyKTtcXG5uZXQvZHNhL2RldmxpbmsuYy0yNTAtXFxubmV0L2RzYS9kZXZsaW5rLmM6MjUxOnZvaWQgZHNhX2RldmxpbmtfcmVzb3VyY2Vfb2NjX2dldF9yZWdpc3RlcihzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMsXFxubmV0L2RzYS9kZXZsaW5rLmMtMjUyLVxcdFxcdFxcdFxcdFxcdCAgIHU2NCByZXNvdXJjZV9pZCxcXG4tLVxcbm5ldC9kc2EvZGV2bGluay5jLTI2MC19XFxubmV0L2RzYS9kZXZsaW5rLmM6MjYxOkVYUE9SVF9TWU1CT0xfR1BMKGRzYV9kZXZsaW5rX3Jlc291cmNlX29jY19nZXRfcmVnaXN0ZXIpO1xcbm5ldC9kc2EvZGV2bGluay5jLTI2Mi1cXG5uZXQvZHNhL2RldmxpbmsuYzoyNjM6dm9pZCBkc2FfZGV2bGlua19yZXNvdXJjZV9vY2NfZ2V0X3VucmVnaXN0ZXIoc3RydWN0IGRzYV9zd2l0Y2ggKmRzLFxcbm5ldC9kc2EvZGV2bGluay5jLTI2NC1cXHRcXHRcXHRcXHRcXHQgICAgIHU2NCByZXNvdXJjZV9pZClcXG4tLVxcbm5ldC9kc2EvZGV2bGluay5jLTI2OS19XFxubmV0L2RzYS9kZXZsaW5rLmM6MjcwOkVYUE9SVF9TWU1CT0xfR1BMKGRzYV9kZXZsaW5rX3Jlc291cmNlX29jY19nZXRfdW5yZWdpc3Rlcik7XFxubmV0L2RzYS9kZXZsaW5rLmMtMjcxLVxcbm5ldC9kc2EvZGV2bGluay5jPTI3Mj1zdHJ1Y3QgZGV2bGlua19yZWdpb24gKlxcbm5ldC9kc2EvZGV2bGluay5jOjI3Mzpkc2FfZGV2bGlua19yZWdpb25fY3JlYXRlKHN0cnVjdCBkc2Ffc3dpdGNoICpkcyxcXG5uZXQvZHNhL2RldmxpbmsuYy0yNzQtXFx0XFx0XFx0ICBjb25zdCBzdHJ1Y3QgZGV2bGlua19yZWdpb25fb3BzICpvcHMsXFxuLS1cXG5uZXQvZHNhL2RldmxpbmsuYy0yNzktfVxcbm5ldC9kc2EvZGV2bGluay5jOjI4MDpFWFBPUlRfU1lNQk9MX0dQTChkc2FfZGV2bGlua19yZWdpb25fY3JlYXRlKTtcXG5uZXQvZHNhL2RldmxpbmsuYy0yODEtXFxubmV0L2RzYS9kZXZsaW5rLmM9MjgyPXN0cnVjdCBkZXZsaW5rX3JlZ2lvbiAqXFxubmV0L2RzYS9kZXZsaW5rLmM6MjgzOmRzYV9kZXZsaW5rX3BvcnRfcmVnaW9uX2NyZWF0ZShzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMsXFxubmV0L2RzYS9kZXZsaW5rLmMtMjg0LVxcdFxcdFxcdCAgICAgICBpbnQgcG9ydCxcXG4tLVxcbm5ldC9kc2EvZGV2bGluay5jLTI4Ny17XFxubmV0L2RzYS9kZXZsaW5rLmM6Mjg4OlxcdHN0cnVjdCBkc2FfcG9ydCAqZHAgPSBkc2FfdG9fcG9ydChkcywgcG9ydCk7XFxubmV0L2RzYS9kZXZsaW5rLmMtMjg5LVxcbi0tXFxubmV0L2RzYS9kZXZsaW5rLmMtMjkzLX1cXG5uZXQvZHNhL2RldmxpbmsuYzoyOTQ6RVhQT1JUX1NZTUJPTF9HUEwoZHNhX2RldmxpbmtfcG9ydF9yZWdpb25fY3JlYXRlKTtcXG5uZXQvZHNhL2RldmxpbmsuYy0yOTUtXFxubmV0L2RzYS9kZXZsaW5rLmM6Mjk2OnZvaWQgZHNhX2RldmxpbmtfcmVnaW9uX2Rlc3Ryb3koc3RydWN0IGRldmxpbmtfcmVnaW9uICpyZWdpb24pXFxubmV0L2RzYS9kZXZsaW5rLmMtMjk3LXtcXG4tLVxcbm5ldC9kc2EvZGV2bGluay5jLTI5OS19XFxubmV0L2RzYS9kZXZsaW5rLmM6MzAwOkVYUE9SVF9TWU1CT0xfR1BMKGRzYV9kZXZsaW5rX3JlZ2lvbl9kZXN0cm95KTtcXG5uZXQvZHNhL2RldmxpbmsuYy0zMDEtXFxubmV0L2RzYS9kZXZsaW5rLmM6MzAyOmludCBkc2FfcG9ydF9kZXZsaW5rX3NldHVwKHN0cnVjdCBkc2FfcG9ydCAqZHApXFxubmV0L2RzYS9kZXZsaW5rLmMtMzAzLXtcXG5uZXQvZHNhL2RldmxpbmsuYy0zMDQtXFx0c3RydWN0IGRldmxpbmtfcG9ydCAqZGxwID0gXFx1MDAyNmRwLVxcdTAwM2VkZXZsaW5rX3BvcnQ7XFxubmV0L2RzYS9kZXZsaW5rLmM6MzA1OlxcdHN0cnVjdCBkc2Ffc3dpdGNoX3RyZWUgKmRzdCA9IGRwLVxcdTAwM2Vkcy1cXHUwMDNlZHN0O1xcbm5ldC9kc2EvZGV2bGluay5jLTMwNi1cXHRzdHJ1Y3QgZGV2bGlua19wb3J0X2F0dHJzIGF0dHJzID0ge307XFxubmV0L2RzYS9kZXZsaW5rLmMtMzA3LVxcdHN0cnVjdCBkZXZsaW5rICpkbCA9IGRwLVxcdTAwM2Vkcy1cXHUwMDNlZGV2bGluaztcXG5uZXQvZHNhL2RldmxpbmsuYzozMDg6XFx0c3RydWN0IGRzYV9zd2l0Y2ggKmRzID0gZHAtXFx1MDAzZWRzO1xcbm5ldC9kc2EvZGV2bGluay5jLTMwOS1cXHRjb25zdCB1bnNpZ25lZCBjaGFyICppZDtcXG4tLVxcbm5ldC9kc2EvZGV2bGluay5jLTM1NC1cXG5uZXQvZHNhL2RldmxpbmsuYzozNTU6dm9pZCBkc2FfcG9ydF9kZXZsaW5rX3RlYXJkb3duKHN0cnVjdCBkc2FfcG9ydCAqZHApXFxubmV0L2RzYS9kZXZsaW5rLmMtMzU2LXtcXG5uZXQvZHNhL2RldmxpbmsuYy0zNTctXFx0c3RydWN0IGRldmxpbmtfcG9ydCAqZGxwID0gXFx1MDAyNmRwLVxcdTAwM2VkZXZsaW5rX3BvcnQ7XFxuXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI1VDA4OjMwOjAxLjIyOTU5OTAwMloiLCJTZXEiOjE1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoxNTA2MTE5MzkzMiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipGdXp6aW5nIERTQSBUYWdnaW5nIFByb3RvY29scyB3aXRoIGBkc2FfbG9vcGAqKlxuXG5Pa2F5LCBzbyBJJ3ZlIGJlZW4gZGlnZ2luZyBpbnRvIHRoZSBEU0EgKERpc3RyaWJ1dGVkIFN3aXRjaCBBcmNoaXRlY3R1cmUpIGNvZGUsIHNwZWNpZmljYWxseSBsb29raW5nIGZvciBmdXp6aW5nIG9wcG9ydHVuaXRpZXMuIFRoZSBgZHNhX2xvb3BgIGRyaXZlciBzZWVtcyBsaWtlIGEgZ3JlYXQgc3RhcnRpbmcgcG9pbnQg4oCTIGl0J3MgYSBtb2NrLXVwIGRyaXZlciwgZXNzZW50aWFsbHkgYSB2aXJ0dWFsIHN3aXRjaCBpbnN0YW50aWF0ZWQgdmlhIGBtZGlvX2RyaXZlcl9yZWdpc3RlcmAgYW5kIGBkc2FfbG9vcF9jcmVhdGVfc3dpdGNoX21kaW9kZXYoKWAuIElmIGBDT05GSUdfTkVUX0RTQV9MT09QYCBpcyBlbmFibGVkLCB0aGlzIHRoaW5nIGF1dG9tYXRpY2FsbHkgc2V0cyB1cCBhIHN3aXRjaCBhbmQgYXR0YWNoZXMgaXQgdG8gYSBmaXhlZCBQSFksIHdoaWNoIGlzIGNvbnZlbmllbnQuXG5cbk5vdywgYGRzYV9sb29wX2NyZWF0ZV9zd2l0Y2hfbWRpb2RldigpYCBjcmVhdGVzIGVpdGhlciBhIHBsYXRmb3JtIGRldmljZSBvciBhbiBNRElPIGRldmljZSwgd2hpY2ggaXMgaW50ZXJlc3RpbmcgaW4gaXRzZWxmLiBUaGUgY3JpdGljYWwgcGFydCBpcyB3aGV0aGVyIGBkc2FfbG9vcGAgcHJvdmlkZXMgYSBwYXRoIHRvIHRoZSBtb2RpZmllZCB0YWdnaW5nIGNvZGUgaW4gYG5ldC9kc2EvdGFnXyouY2AsIGBuZXQvZHNhL3VzZXIuY2AsIGFuZCBgbmV0L2RzYS90YWcuY2AuIEluaXRpYWxseSwgaXQgbG9va3MgbGlrZSBgZHNhX2xvb3BgIHVzZXMgYE5FVF9EU0FfVEFHX05PTkVgLCB3aGljaCBpc24ndCBnb2luZyB0byBnZXQgdXMgYW55d2hlcmUgd2l0aCB0aGUgZGlmZmVyZW50IHRhZ2dpbmcgcHJvdG9jb2xzLlxuXG5Ib3dldmVyLCB0aGUga2V5IGlzIHRoZSBgZHNhX2NvbmR1aXRfc2V0X3Byb21pc2N1aXR5YCBhbmQgYHRhZ2dpbmdfc3RvcmVgIGZ1bmN0aW9ucyBpbiBgbmV0L2RzYS9jb25kdWl0LmNgLiBJdCBsb29rcyBsaWtlIHRoZXNlIG9mZmVyIGEgd2F5IHRvICpkeW5hbWljYWxseSogY2hhbmdlIHRoZSB0YWcgcHJvdG9jb2wgdmlhIHN5c2ZzISBTcGVjaWZpY2FsbHksIHN5emthbGxlciBjYW4gd3JpdGUgdG8gYC9zeXMvY2xhc3MvbmV0L1x1MDAzY2NvbmR1aXRcdTAwM2UvZHNhL3RhZ2dpbmdgIHRvIHN3YXAgb3V0IHRoZSB0YWcgcHJvdG9jb2wgdG8gQU5ZIG9mIHRoZSByZWdpc3RlcmVkIHRhZyBkcml2ZXJzLiBUaGUgYHRhZ2dpbmdfc3RvcmVgIGZ1bmN0aW9uIGFjdHVhbGx5IGNhbGxzIGBkc2FfdGFnX2RyaXZlcl9nZXRfYnlfbmFtZSgpYCBhbmQgdGhlbiBgZHNhX3RyZWVfY2hhbmdlX3RhZ19wcm90bygpYC4gVGhpcyBpcyBmYW50YXN0aWMhXG5cblRoaXMgbWVhbnMgd2UgY2FuIGVuYWJsZSAqYWxsKiB0aGUgYE5FVF9EU0FfVEFHXypgIGNvbmZpZ3MgYW5kIHVzZSBzeXprYWxsZXIgdG8gc3dpdGNoIGJldHdlZW4gdGhlbSBvbiB0aGUgZmx5LiBUaGlzIGdpdmVzIHVzIGNvbXBsZXRlIGR5bmFtaWMgY29udHJvbCBvdmVyIHdoYXQgcHJvdG9jb2xzIHdlIGZ1enouIFdlIG5lZWQgdG8gY29uZmlybSB0aGF0IHdlIGNhbiBlbmFibGUgYWxsIHRoZXNlIHRhZ3MsIHdoaWNoIGlzIHRoZSBuZXh0IHN0ZXAuIEknbGwgY2hlY2sgYG5ldC9kc2EvS2NvbmZpZ2AgdG8gYmUgc3VyZS5cblxuUmVnYXJkaW5nIGBkc2FfbG9vcGAgYW5kIHRoZSBcImNvbmR1aXRcIiBkZXZpY2UsIGl0IGNyZWF0ZXMgYSBzd2l0Y2gsIGJ1dCB3aGljaCBuZXR3b3JrIGRldmljZSBkb2VzIGl0IGF0dGFjaCB0bz8gTG9va2luZyBhdCBgZHNhX2xvb3BfcGRhdGFgLCBpdCBkZWZpbmVzIGAuY2QgPSB7IC5uZXRkZXYgPSBcImV0aDBcIiwgfWAuIFBlcmZlY3QhIFN5emthbGxlciB1c3VhbGx5IGhhcyBgZXRoMGAgb3IgYGV0aDFgIHByZXNlbnQuIElmIGBkc2FfbG9vcGAgYXR0YWNoZXMgdG8gYGV0aDBgLCBpdCdsbCBjcmVhdGUgRFNBIHVzZXIgaW50ZXJmYWNlcyBsaWtlIGBsYW4xYCwgYGxhbjJgLCBldGMuXG5cblRoaXMgbWVhbnMgd2UgY2FuIHNlbmQgcGFja2V0cyB0aHJvdWdoIGBsYW4xYCwgd2hpY2ggd2lsbCBjYWxsIGBkc2FfdXNlcl94bWl0YCwgd2hpY2ggaW4gdHVybiBjYWxscyB0aGUgdGFnZ2VyJ3MgYHhtaXRgIGZ1bmN0aW9uIChgcC1cdTAwM2V4bWl0YCkuIENydWNpYWxseSwgaWYgd2Ugc2VuZCBwYWNrZXRzICp0byogYGV0aDBgLCBpdCBjYWxscyBgZHNhX3N3aXRjaF9yY3ZgLCBhbmQgY2FsbHMgdGhlIHRhZ2dlcidzIGByY3ZgIGZ1bmN0aW9uIChgcC1cdTAwM2VyY3ZgKS4gV2Ugbm93IGhhdmUgYSBjbGVhbiBmdXp6aW5nIHBhdGggZm9yIGJvdGggdHJhbnNtaXQgYW5kIHJlY2VpdmUgcGF0aHMhXG5cblNvLCB0aGUgZ2FtZSBwbGFuIGlzIGNsZWFyLiBXZSBuZWVkIHRvIGVuYWJsZSB0aGUgZm9sbG93aW5nIGNvbmZpZ3M6XG5cbiogICBgTkVUX0RTQWBcbiogICBgTkVUX0RTQV9MT09QYFxuKiAgIEFsbCB0aGUgYE5FVF9EU0FfVEFHXypgIGNvbmZpZ3MuXG5cblNwZWNpZmljYWxseSwgSSdsbCBuZWVkIHRvIGVuYWJsZSBhbGwgb2YgdGhlc2U6XG4qICAgYE5FVF9EU0FfVEFHX0FSOTMzMWBcbiogICBgTkVUX0RTQV9UQUdfQlJDTWBcbiogICBgTkVUX0RTQV9UQUdfQlJDTV9MRUdBQ1lgXG4qICAgYE5FVF9EU0FfVEFHX0JSQ01fUFJFUEVORGBcbiogICBgTkVUX0RTQV9UQUdfSEVMTENSRUVLYFxuKiAgIGBORVRfRFNBX1RBR19HU1dJUGBcbiogICBgTkVUX0RTQV9UQUdfRFNBYFxuKiAgIGBORVRfRFNBX1RBR19FRFNBYFxuKiAgIGBORVRfRFNBX1RBR19NVEtgXG4qICAgYE5FVF9EU0FfVEFHX01YTF84NjJYWGBcbiogICBgTkVUX0RTQV9UQUdfTVhMX0dTVzFYWGBcbiogICBgTkVUX0RTQV9UQUdfS1NaYFxuKiAgIGBORVRfRFNBX1RBR19ORVRDYFxuKiAgIGBORVRfRFNBX1RBR19PQ0VMT1RgXG4qICAgYE5FVF9EU0FfVEFHX09DRUxPVF84MDIxUWBcbiogICBgTkVUX0RTQV9UQUdfUUNBYFxuKiAgIGBORVRfRFNBX1RBR19SVEw0X0FgXG4qICAgYE5FVF9EU0FfVEFHX1JUTDhfNGBcbiogICBgTkVUX0RTQV9UQUdfUlpOMVxuXG4iLCJJbnB1dFRva2VucyI6NDYxNDYsIk91dHB1dFRva2VucyI6MjEsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMTA4LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI1VDA4OjMwOjE2LjI5MDc5NzI2NFoiLCJTZXEiOjE2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjQxMjY3OTI5NSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgTkVUX0RTQV9UQUdfXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9kc2EvS2NvbmZpZz0xNz1pZiBORVRfRFNBXFxuLS1cXG5uZXQvZHNhL0tjb25maWctMjAtXFxubmV0L2RzYS9LY29uZmlnOjIxOmNvbmZpZyBORVRfRFNBX1RBR19OT05FXFxubmV0L2RzYS9LY29uZmlnLTIyLVxcdHRyaXN0YXRlIFxcXCJOby1vcCB0YWcgZHJpdmVyXFxcIlxcbi0tXFxubmV0L2RzYS9LY29uZmlnLTI2LVxcbm5ldC9kc2EvS2NvbmZpZzoyNzpjb25maWcgTkVUX0RTQV9UQUdfQVI5MzMxXFxubmV0L2RzYS9LY29uZmlnLTI4LVxcdHRyaXN0YXRlIFxcXCJUYWcgZHJpdmVyIGZvciBBdGhlcm9zIEFSOTMzMSBTb0Mgd2l0aCBidWlsdC1pbiBzd2l0Y2hcXFwiXFxuLS1cXG5uZXQvZHNhL0tjb25maWctMzItXFxubmV0L2RzYS9LY29uZmlnOjMzOmNvbmZpZyBORVRfRFNBX1RBR19CUkNNX0NPTU1PTlxcbm5ldC9kc2EvS2NvbmZpZy0zNC1cXHR0cmlzdGF0ZVxcbi0tXFxubmV0L2RzYS9LY29uZmlnLTM2LVxcbm5ldC9kc2EvS2NvbmZpZzozNzpjb25maWcgTkVUX0RTQV9UQUdfQlJDTVxcbm5ldC9kc2EvS2NvbmZpZy0zOC1cXHR0cmlzdGF0ZSBcXFwiVGFnIGRyaXZlciBmb3IgQnJvYWRjb20gc3dpdGNoZXMgdXNpbmcgaW4tZnJhbWUgaGVhZGVyc1xcXCJcXG4tLVxcbm5ldC9kc2EvS2NvbmZpZy00My1cXG5uZXQvZHNhL0tjb25maWc6NDQ6Y29uZmlnIE5FVF9EU0FfVEFHX0JSQ01fTEVHQUNZXFxubmV0L2RzYS9LY29uZmlnLTQ1LVxcdHRyaXN0YXRlIFxcXCJUYWcgZHJpdmVyIGZvciBCQ002M3h4IGxlZ2FjeSBzd2l0Y2hlcyB1c2luZyBpbi1mcmFtZSBoZWFkZXJzXFxcIlxcbi0tXFxubmV0L2RzYS9LY29uZmlnLTUzLVxcbm5ldC9kc2EvS2NvbmZpZzo1NDpjb25maWcgTkVUX0RTQV9UQUdfQlJDTV9MRUdBQ1lfRkNTXFxubmV0L2RzYS9LY29uZmlnLTU1LVxcdHRyaXN0YXRlIFxcXCJUYWcgZHJpdmVyIGZvciBCQ001M3h4IGxlZ2FjeSBzd2l0Y2hlcyB1c2luZyBpbi1mcmFtZSBoZWFkZXJzXFxcIlxcbi0tXFxubmV0L2RzYS9LY29uZmlnLTYzLVxcbm5ldC9kc2EvS2NvbmZpZzo2NDpjb25maWcgTkVUX0RTQV9UQUdfQlJDTV9QUkVQRU5EXFxubmV0L2RzYS9LY29uZmlnLTY1LVxcdHRyaXN0YXRlIFxcXCJUYWcgZHJpdmVyIGZvciBCcm9hZGNvbSBzd2l0Y2hlcyB1c2luZyBwcmVwZW5kZWQgaGVhZGVyc1xcXCJcXG4tLVxcbm5ldC9kc2EvS2NvbmZpZy03MS1cXG5uZXQvZHNhL0tjb25maWc6NzI6Y29uZmlnIE5FVF9EU0FfVEFHX0hFTExDUkVFS1xcbm5ldC9kc2EvS2NvbmZpZy03My1cXHR0cmlzdGF0ZSBcXFwiVGFnIGRyaXZlciBmb3IgSGlyc2NobWFubiBIZWxsY3JlZWsgVFNOIHN3aXRjaGVzXFxcIlxcbi0tXFxubmV0L2RzYS9LY29uZmlnLTc3LVxcbm5ldC9kc2EvS2NvbmZpZzo3ODpjb25maWcgTkVUX0RTQV9UQUdfR1NXSVBcXG5uZXQvZHNhL0tjb25maWctNzktXFx0dHJpc3RhdGUgXFxcIlRhZyBkcml2ZXIgZm9yIExhbnRpcSAvIEludGVsIEdTV0lQIHN3aXRjaGVzXFxcIlxcbi0tXFxubmV0L2RzYS9LY29uZmlnLTgzLVxcbm5ldC9kc2EvS2NvbmZpZzo4NDpjb25maWcgTkVUX0RTQV9UQUdfRFNBX0NPTU1PTlxcbm5ldC9kc2EvS2NvbmZpZy04NS1cXHR0cmlzdGF0ZVxcbm5ldC9kc2EvS2NvbmZpZy04Ni1cXG5uZXQvZHNhL0tjb25maWc6ODc6Y29uZmlnIE5FVF9EU0FfVEFHX0RTQVxcbm5ldC9kc2EvS2NvbmZpZy04OC1cXHR0cmlzdGF0ZSBcXFwiVGFnIGRyaXZlciBmb3IgTWFydmVsbCBzd2l0Y2hlcyB1c2luZyBEU0EgaGVhZGVyc1xcXCJcXG4tLVxcbm5ldC9kc2EvS2NvbmZpZy05My1cXG5uZXQvZHNhL0tjb25maWc6OTQ6Y29uZmlnIE5FVF9EU0FfVEFHX0VEU0FcXG5uZXQvZHNhL0tjb25maWctOTUtXFx0dHJpc3RhdGUgXFxcIlRhZyBkcml2ZXIgZm9yIE1hcnZlbGwgc3dpdGNoZXMgdXNpbmcgRXRoZXJUeXBlIERTQSBoZWFkZXJzXFxcIlxcbi0tXFxubmV0L2RzYS9LY29uZmlnLTEwMC1cXG5uZXQvZHNhL0tjb25maWc6MTAxOmNvbmZpZyBORVRfRFNBX1RBR19NVEtcXG5uZXQvZHNhL0tjb25maWctMTAyLVxcdHRyaXN0YXRlIFxcXCJUYWcgZHJpdmVyIGZvciBNZWRpYXRlayBzd2l0Y2hlc1xcXCJcXG4tLVxcbm5ldC9kc2EvS2NvbmZpZy0xMDYtXFxubmV0L2RzYS9LY29uZmlnOjEwNzpjb25maWcgTkVUX0RTQV9UQUdfTVhMXzg2MlhYXFxubmV0L2RzYS9LY29uZmlnLTEwOC1cXHR0cmlzdGF0ZSBcXFwiVGFnIGRyaXZlciBmb3IgTWF4TGluZWFyIE14TDg2Mnh4IHN3aXRjaGVzXFxcIlxcbi0tXFxubmV0L2RzYS9LY29uZmlnLTExMy1cXG5uZXQvZHNhL0tjb25maWc6MTE0OmNvbmZpZyBORVRfRFNBX1RBR19NWExfR1NXMVhYXFxubmV0L2RzYS9LY29uZmlnLTExNS1cXHR0cmlzdGF0ZSBcXFwiVGFnIGRyaXZlciBmb3IgTWF4TGluZWFyIEdTVzF4eCBzd2l0Y2hlc1xcXCJcXG4tLVxcbm5ldC9kc2EvS2NvbmZpZy0xMjEtXFxubmV0L2RzYS9LY29uZmlnOjEyMjpjb25maWcgTkVUX0RTQV9UQUdfS1NaXFxubmV0L2RzYS9LY29uZmlnLTEyMy1cXHR0cmlzdGF0ZSBcXFwiVGFnIGRyaXZlciBmb3IgTWljcm9jaGlwIDg3OTUvOTM3eC85NDc3Lzk4OTMgZmFtaWxpZXMgb2Ygc3dpdGNoZXNcXFwiXFxuLS1cXG5uZXQvZHNhL0tjb25maWctMTI3LVxcbm5ldC9kc2EvS2NvbmZpZzoxMjg6Y29uZmlnIE5FVF9EU0FfVEFHX05FVENcXG5uZXQvZHNhL0tjb25maWctMTI5LVxcdHRyaXN0YXRlIFxcXCJUYWcgZHJpdmVyIGZvciBOWFAgTkVUQyBzd2l0Y2hlc1xcXCJcXG4tLVxcbm5ldC9kc2EvS2NvbmZpZy0xMzctXFxubmV0L2RzYS9LY29uZmlnOjEzODpjb25maWcgTkVUX0RTQV9UQUdfT0NFTE9UXFxubmV0L2RzYS9LY29uZmlnLTEzOS1cXHR0cmlzdGF0ZSBcXFwiVGFnIGRyaXZlciBmb3IgT2NlbG90IGZhbWlseSBvZiBzd2l0Y2hlcywgdXNpbmcgTlBJIHBvcnRcXFwiXFxuLS1cXG5uZXQvZHNhL0tjb25maWctMTQ4LVxcbm5ldC9kc2EvS2NvbmZpZzoxNDk6Y29uZmlnIE5FVF9EU0FfVEFHX09DRUxPVF84MDIxUVxcbm5ldC9kc2EvS2NvbmZpZy0xNTAtXFx0dHJpc3RhdGUgXFxcIlRhZyBkcml2ZXIgZm9yIE9jZWxvdCBmYW1pbHkgb2Ygc3dpdGNoZXMsIHVzaW5nIFZMQU5cXFwiXFxuLS1cXG5uZXQvZHNhL0tjb25maWctMTU4LVxcbm5ldC9kc2EvS2NvbmZpZzoxNTk6Y29uZmlnIE5FVF9EU0FfVEFHX1FDQVxcbm5ldC9kc2EvS2NvbmZpZy0xNjAtXFx0dHJpc3RhdGUgXFxcIlRhZyBkcml2ZXIgZm9yIFF1YWxjb21tIEF0aGVyb3MgUUNBOEsgc3dpdGNoZXNcXFwiXFxuLS1cXG5uZXQvZHNhL0tjb25maWctMTY0LVxcbm5ldC9kc2EvS2NvbmZpZzoxNjU6Y29uZmlnIE5FVF9EU0FfVEFHX1JUTDRfQVxcbm5ldC9kc2EvS2NvbmZpZy0xNjYtXFx0dHJpc3RhdGUgXFxcIlRhZyBkcml2ZXIgZm9yIFJlYWx0ZWsgNCBieXRlIHByb3RvY29sIEEgdGFnc1xcXCJcXG4tLVxcbm5ldC9kc2EvS2NvbmZpZy0xNzEtXFxubmV0L2RzYS9LY29uZmlnOjE3Mjpjb25maWcgTkVUX0RTQV9UQUdfUlRMOF80XFxubmV0L2RzYS9LY29uZmlnLTE3My1cXHR0cmlzdGF0ZSBcXFwiVGFnIGRyaXZlciBmb3IgUmVhbHRlayA4IGJ5dGUgcHJvdG9jb2wgNCB0YWdzXFxcIlxcbi0tXFxubmV0L2RzYS9LY29uZmlnLTE3Ny1cXG5uZXQvZHNhL0tjb25maWc6MTc4OmNvbmZpZyBORVRfRFNBX1RBR19SWk4xX0E1UFNXXFxubmV0L2RzYS9LY29uZmlnLTE3OS1cXHR0cmlzdGF0ZSBcXFwiVGFnIGRyaXZlciBmb3IgUmVuZXNhcyBSWi9OMSBBNVBTVyBzd2l0Y2hcXFwiXFxuLS1cXG5uZXQvZHNhL0tjb25maWctMTg0LVxcbm5ldC9kc2EvS2NvbmZpZzoxODU6Y29uZmlnIE5FVF9EU0FfVEFHX0xBTjkzMDNcXG5uZXQvZHNhL0tjb25maWctMTg2LVxcdHRyaXN0YXRlIFxcXCJUYWcgZHJpdmVyIGZvciBTTVNDL01pY3JvY2hpcCBMQU45MzAzIGZhbWlseSBvZiBzd2l0Y2hlc1xcXCJcXG4tLVxcbm5ldC9kc2EvS2NvbmZpZy0xOTAtXFxubmV0L2RzYS9LY29uZmlnOjE5MTpjb25maWcgTkVUX0RTQV9UQUdfU0pBMTEwNVxcbm5ldC9kc2EvS2NvbmZpZy0xOTItXFx0dHJpc3RhdGUgXFxcIlRhZyBkcml2ZXIgZm9yIE5YUCBTSkExMTA1IHN3aXRjaGVzXFxcIlxcbi0tXFxubmV0L2RzYS9LY29uZmlnLTE5OS1cXG5uZXQvZHNhL0tjb25maWc6MjAwOmNvbmZpZyBORVRfRFNBX1RBR19UUkFJTEVSXFxubmV0L2RzYS9LY29uZmlnLTIwMS1cXHR0cmlzdGF0ZSBcXFwiVGFnIGRyaXZlciBmb3Igc3dpdGNoZXMgdXNpbmcgYSB0cmFpbGVyIHRhZ1xcXCJcXG4tLVxcbm5ldC9kc2EvS2NvbmZpZy0yMDUtXFxubmV0L2RzYS9LY29uZmlnOjIwNjpjb25maWcgTkVUX0RTQV9UQUdfVlNDNzNYWF84MDIxUVxcbm5ldC9kc2EvS2NvbmZpZy0yMDctXFx0dHJpc3RhdGUgXFxcIlRhZyBkcml2ZXIgZm9yIE1pY3JvY2hpcC9WaXRlc3NlIFZTQzczeHggZmFtaWx5IG9mIHN3aXRjaGVzLCB1c2luZyBWTEFOXFxcIlxcbi0tXFxubmV0L2RzYS9LY29uZmlnLTIxMS1cXG5uZXQvZHNhL0tjb25maWc6MjEyOmNvbmZpZyBORVRfRFNBX1RBR19YUlM3MDBYXFxubmV0L2RzYS9LY29uZmlnLTIxMy1cXHR0cmlzdGF0ZSBcXFwiVGFnIGRyaXZlciBmb3IgWFJTNzAweCBzd2l0Y2hlc1xcXCJcXG4tLVxcbm5ldC9kc2EvS2NvbmZpZy0yMTctXFxubmV0L2RzYS9LY29uZmlnOjIxODpjb25maWcgTkVUX0RTQV9UQUdfWVQ5MjFYXFxubmV0L2RzYS9LY29uZmlnLTIxOS1cXHR0cmlzdGF0ZSBcXFwiVGFnIGRyaXZlciBmb3IgTW90b3Jjb21tIFlUOTIxeCBzd2l0Y2hlc1xcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjVUMDg6MzA6MTguNzAzNDgxNDFaIiwiU2VxIjoxNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzQ2MjI2ODQ3NjIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqRFNBIFN1YnN5c3RlbSBBbmFseXNpcyBmb3IgRnV6emluZyoqXG5cbkFscmlnaHQsIGxldCdzIGJyZWFrIHRoaXMgZG93biBzeXN0ZW1hdGljYWxseS4gRmlyc3QsIEkgbmVlZCB0byBsaXN0IHRoZSByZWxldmFudCBrZXJuZWwgY29uZmlndXJhdGlvbnMuIFdoaWxlIGBORVRfRFNBX1RBR19CUkNNX0NPTU1PTmAgYW5kIGBORVRfRFNBX1RBR19EU0FfQ09NTU9OYCBhcmUgbGlrZWx5IGFscmVhZHkgZW5hYmxlZCBieSBvdGhlcnMsIGl0IGRvZXNuJ3QgaHVydCB0byBiZSBleHBsaWNpdC4gVGhlIGNyaXRpY2FsIG9uZSBoZXJlIGlzIGBORVRfRFNBX0xPT1BgOyB0aGF0J3MgZXNzZW50aWFsIGZvciBpbnN0YW50aWF0aW5nIGEgdmlydHVhbCBzd2l0Y2gsIHdoaWNoIGlzIHRoZSBrZXkgdG8gdGVzdGluZyB0aGlzLiBUaGVuLCBvZiBjb3Vyc2UsIGBDT05GSUdfTkVUX0RTQWAgaXRzZWxmIGlzIHJlcXVpcmVkLlxuXG5Ob3csIHdoaWNoIGZ1bmN0aW9ucyBhcmUgbW9kaWZpZWQ/IFRoZSBwYXRjaCB0b3VjaGVzIGEgbG90IG9mIGZpbGVzIHdpdGhpbiB0aGUgYG5ldC9kc2FgIGRpcmVjdG9yeS4gSSd2ZSBnb3QgdG8gY29uc2lkZXIgYWxsIG9mIHRoZSB0YWdnaW5nIGZ1bmN0aW9ucywgdGhlIG9uZXMgdGhhdCBhcmUgbGlrZWx5IHRvIGhhdmUgYSBtZW1vcnkgbWFuYWdlbWVudCBjaGFuZ2UuXG5cbkxldCBtZSBzZWUgd2hhdCBuZWVkcyB0byBiZSBjb25zaWRlcmVkIGFzIHRoZSBtYWluIGZvY3VzOlxuLSAgIGBkc2Ffc3dpdGNoX3JjdmAgaW4gYG5ldC9kc2EvdGFnLmNgXG4tICAgYGFyOTMzMV90YWdfcmN2YCBpbiBgbmV0L2RzYS90YWdfYXI5MzMxLmNgXG4tICAgYGJyY21fdGFnX3htaXRfbGxgIGluIGBuZXQvZHNhL3RhZ19icmNtLmNgXG4tICAgYGJyY21fdGFnX3Jjdl9sbGAgaW4gYG5ldC9kc2EvdGFnX2JyY20uY2Bcbi0gICBgYnJjbV9sZWdfdGFnX3JjdmAgaW4gYG5ldC9kc2EvdGFnX2JyY20uY2Bcbi0gICBgYnJjbV9sZWdfdGFnX3htaXRgIGluIGBuZXQvZHNhL3RhZ19icmNtLmNgXG4tICAgYGJyY21fbGVnX2Zjc190YWdfeG1pdGAgaW4gYG5ldC9kc2EvdGFnX2JyY20uY2Bcbi0gICBgZHNhX3Jjdl9sbGAgaW4gYG5ldC9kc2EvdGFnX2RzYS5jYFxuLSAgIGBkc2FfcmN2YCBpbiBgbmV0L2RzYS90YWdfZHNhLmNgXG4tICAgYGVkc2FfcmN2YCBpbiBgbmV0L2RzYS90YWdfZHNhLmNgXG4tICAgYGdzd2lwX3RhZ19yY3ZgIGluIGBuZXQvZHNhL3RhZ19nc3dpcC5jYFxuLSAgIGBoZWxsY3JlZWtfeG1pdGAgaW4gYG5ldC9kc2EvdGFnX2hlbGxjcmVlay5jYFxuLSAgIGBoZWxsY3JlZWtfcmN2YCBpbiBgbmV0L2RzYS90YWdfaGVsbGNyZWVrLmNgXG4tICAgYGtzel9jb21tb25fcmN2YCBpbiBgbmV0L2RzYS90YWdfa3N6LmNgXG4tICAgYGtzejg3OTVfeG1pdGAgaW4gYG5ldC9kc2EvdGFnX2tzei5jYFxuLSAgIGBrc3o4Nzk1X3JjdmAgaW4gYG5ldC9kc2EvdGFnX2tzei5jYFxuLSAgIGBrc3pfZGVmZXJfeG1pdGAgaW4gYG5ldC9kc2EvdGFnX2tzei5jYFxuLSAgIGBrc3o5NDc3X3htaXRgIGluIGBuZXQvZHNhL3RhZ19rc3ouY2Bcbi0gICBga3N6OTQ3N19yY3ZgIGluIGBuZXQvZHNhL3RhZ19rc3ouY2Bcbi0gICBga3N6OTg5M194bWl0YCBpbiBgbmV0L2RzYS90YWdfa3N6LmNgXG4tICAgYGxhbjkzN3hfeG1pdGAgaW4gYG5ldC9kc2EvdGFnX2tzei5jYFxuLSAgIGBsYW45MzAzX3JjdmAgaW4gYG5ldC9kc2EvdGFnX2xhbjkzMDMuY2Bcbi0gICBgbXRrX3RhZ19yY3ZgIGluIGBuZXQvZHNhL3RhZ19tdGsuY2Bcbi0gICBgZ3N3MXh4X3RhZ19yY3ZgIGluIGBuZXQvZHNhL3RhZ19teGwtZ3N3MXh4LmNgXG4tICAgYG14bDg2Ml90YWdfcmN2YCBpbiBgbmV0L2RzYS90YWdfbXhsODYyeHguY2Bcbi0gICBgbmV0Y19yY3ZgIGluIGBuZXQvZHNhL3RhZ19uZXRjLmNgXG4tICAgYG9jZWxvdF9yY3ZgIGluIGBuZXQvZHNhL3RhZ19vY2Vsb3QuY2Bcbi0gICBgb2NlbG90X2RlZmVyX3htaXRgIGluIGBuZXQvZHNhL3RhZ19vY2Vsb3RfODAyMXEuY2Bcbi0gICBgb2NlbG90X3JjdmAgaW4gYG5ldC9kc2EvdGFnX29jZWxvdF84MDIxcS5jYFxuLSAgIGBxY2FfdGFnX3JjdmAgaW4gYG5ldC9kc2EvdGFnX3FjYS5jYFxuLSAgIGBydGw0YV90YWdfeG1pdGAgaW4gYG5ldC9kc2EvXG5cbiIsIklucHV0VG9rZW5zIjo1MDMxMCwiT3V0cHV0VG9rZW5zIjo2MjEsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyODc1LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI1VDA4OjMwOjUzLjMyNjE3MDgwMVoiLCJTZXEiOjE4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIyODE3NDA4NiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiTkVUX0RTQVwiLFxuICAgIFwiTkVUX0RTQV9MT09QXCIsXG4gICAgXCJORVRfRFNBX1RBR19BUjkzMzFcIixcbiAgICBcIk5FVF9EU0FfVEFHX0JSQ01cIixcbiAgICBcIk5FVF9EU0FfVEFHX0JSQ01fTEVHQUNZXCIsXG4gICAgXCJORVRfRFNBX1RBR19CUkNNX1BSRVBFTkRcIixcbiAgICBcIk5FVF9EU0FfVEFHX0hFTExDUkVFS1wiLFxuICAgIFwiTkVUX0RTQV9UQUdfR1NXSVBcIixcbiAgICBcIk5FVF9EU0FfVEFHX0RTQVwiLFxuICAgIFwiTkVUX0RTQV9UQUdfRURTQVwiLFxuICAgIFwiTkVUX0RTQV9UQUdfTVRLXCIsXG4gICAgXCJORVRfRFNBX1RBR19NWExfODYyWFhcIixcbiAgICBcIk5FVF9EU0FfVEFHX01YTF9HU1cxWFhcIixcbiAgICBcIk5FVF9EU0FfVEFHX0tTWlwiLFxuICAgIFwiTkVUX0RTQV9UQUdfTkVUQ1wiLFxuICAgIFwiTkVUX0RTQV9UQUdfT0NFTE9UXCIsXG4gICAgXCJORVRfRFNBX1RBR19PQ0VMT1RfODAyMVFcIixcbiAgICBcIk5FVF9EU0FfVEFHX1FDQVwiLFxuICAgIFwiTkVUX0RTQV9UQUdfUlRMNF9BXCIsXG4gICAgXCJORVRfRFNBX1RBR19SVEw4XzRcIixcbiAgICBcIk5FVF9EU0FfVEFHX1JaTjFfQTVQU1dcIixcbiAgICBcIk5FVF9EU0FfVEFHX0xBTjkzMDNcIixcbiAgICBcIk5FVF9EU0FfVEFHX1NKQTExMDVcIixcbiAgICBcIk5FVF9EU0FfVEFHX1RSQUlMRVJcIixcbiAgICBcIk5FVF9EU0FfVEFHX1ZTQzczWFhfODAyMVFcIixcbiAgICBcIk5FVF9EU0FfVEFHX1hSUzcwMFhcIixcbiAgICBcIk5FVF9EU0FfVEFHX1lUOTIxWFwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImRzYV9zd2l0Y2hfcmN2XCIsXG4gICAgXCJkc2FfdXNlcl94bWl0XCIsXG4gICAgXCJhcjkzMzFfdGFnX3JjdlwiLFxuICAgIFwiYnJjbV90YWdfeG1pdF9sbFwiLFxuICAgIFwiYnJjbV90YWdfcmN2X2xsXCIsXG4gICAgXCJkc2FfcmN2X2xsXCIsXG4gICAgXCJlZHNhX3JjdlwiLFxuICAgIFwia3N6X2NvbW1vbl9yY3ZcIixcbiAgICBcIm9jZWxvdF9yY3ZcIixcbiAgICBcInFjYV90YWdfcmN2XCIsXG4gICAgXCJzamExMTA1X3JjdlwiLFxuICAgIFwidHJhaWxlcl9yY3ZcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCByZWZhY3RvcnMgc2tiIG1lbW9yeSBtYW5hZ2VtZW50IGluIHRoZSBEU0EgKERpc3RyaWJ1dGVkIFN3aXRjaCBBcmNoaXRlY3R1cmUpIHN1YnN5c3RlbS4gSXQgc2hpZnRzIHRoZSByZXNwb25zaWJpbGl0eSBvZiBmcmVlaW5nIHRoZSBza2Igb24gZXJyb3IgcGF0aHMgZnJvbSB0aGUgY29yZSBEU0EgZnVuY3Rpb25zIChkc2FfdXNlcl94bWl0LCBkc2Ffc3dpdGNoX3JjdikgdG8gdGhlIGluZGl2aWR1YWwgdGFnZ2VyIGRyaXZlcnMuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSB0aGF0IGNvdWxkIGludHJvZHVjZSBtZW1vcnkgbGVha3Mgb3IgZG91YmxlIGZyZWVzIGlmIGFueSBlcnJvciBwYXRoIGluIGEgdGFnZ2VyIGRyaXZlciBpcyBtaXNzZWQgb3IgbWlzaGFuZGxlZC4gVGhlIGNvZGUgaXMgcmVhY2hhYmxlIGluIGEgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQgYnkgdXNpbmcgdGhlIGRzYV9sb29wIG1vY2stdXAgc3dpdGNoIGRyaXZlciBhbmQgZHluYW1pY2FsbHkgY2hhbmdpbmcgdGhlIHRhZ2dpbmcgcHJvdG9jb2wgdmlhIHN5c2ZzLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIk5FVF9EU0FcIixcbiAgICBcIk5FVF9EU0FfTE9PUFwiLFxuICAgIFwiTkVUX0RTQV9UQUdfQVI5MzMxXCIsXG4gICAgXCJORVRfRFNBX1RBR19CUkNNXCIsXG4gICAgXCJORVRfRFNBX1RBR19CUkNNX0xFR0FDWVwiLFxuICAgIFwiTkVUX0RTQV9UQUdfQlJDTV9QUkVQRU5EXCIsXG4gICAgXCJORVRfRFNBX1RBR19IRUxMQ1JFRUtcIixcbiAgICBcIk5FVF9EU0FfVEFHX0dTV0lQXCIsXG4gICAgXCJORVRfRFNBX1RBR19EU0FcIixcbiAgICBcIk5FVF9EU0FfVEFHX0VEU0FcIixcbiAgICBcIk5FVF9EU0FfVEFHX01US1wiLFxuICAgIFwiTkVUX0RTQV9UQUdfTVhMXzg2MlhYXCIsXG4gICAgXCJORVRfRFNBX1RBR19NWExfR1NXMVhYXCIsXG4gICAgXCJORVRfRFNBX1RBR19LU1pcIixcbiAgICBcIk5FVF9EU0FfVEFHX05FVENcIixcbiAgICBcIk5FVF9EU0FfVEFHX09DRUxPVFwiLFxuICAgIFwiTkVUX0RTQV9UQUdfT0NFTE9UXzgwMjFRXCIsXG4gICAgXCJORVRfRFNBX1RBR19RQ0FcIixcbiAgICBcIk5FVF9EU0FfVEFHX1JUTDRfQVwiLFxuICAgIFwiTkVUX0RTQV9UQUdfUlRMOF80XCIsXG4gICAgXCJORVRfRFNBX1RBR19SWk4xX0E1UFNXXCIsXG4gICAgXCJORVRfRFNBX1RBR19MQU45MzAzXCIsXG4gICAgXCJORVRfRFNBX1RBR19TSkExMTA1XCIsXG4gICAgXCJORVRfRFNBX1RBR19UUkFJTEVSXCIsXG4gICAgXCJORVRfRFNBX1RBR19WU0M3M1hYXzgwMjFRXCIsXG4gICAgXCJORVRfRFNBX1RBR19YUlM3MDBYXCIsXG4gICAgXCJORVRfRFNBX1RBR19ZVDkyMVhcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJkc2Ffc3dpdGNoX3JjdlwiLFxuICAgIFwiZHNhX3VzZXJfeG1pdFwiLFxuICAgIFwiYXI5MzMxX3RhZ19yY3ZcIixcbiAgICBcImJyY21fdGFnX3htaXRfbGxcIixcbiAgICBcImJyY21fdGFnX3Jjdl9sbFwiLFxuICAgIFwiZHNhX3Jjdl9sbFwiLFxuICAgIFwiZWRzYV9yY3ZcIixcbiAgICBcImtzel9jb21tb25fcmN2XCIsXG4gICAgXCJvY2Vsb3RfcmN2XCIsXG4gICAgXCJxY2FfdGFnX3JjdlwiLFxuICAgIFwic2phMTEwNV9yY3ZcIixcbiAgICBcInRyYWlsZXJfcmN2XCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggcmVmYWN0b3JzIHNrYiBtZW1vcnkgbWFuYWdlbWVudCBpbiB0aGUgRFNBIChEaXN0cmlidXRlZCBTd2l0Y2ggQXJjaGl0ZWN0dXJlKSBzdWJzeXN0ZW0uIEl0IHNoaWZ0cyB0aGUgcmVzcG9uc2liaWxpdHkgb2YgZnJlZWluZyB0aGUgc2tiIG9uIGVycm9yIHBhdGhzIGZyb20gdGhlIGNvcmUgRFNBIGZ1bmN0aW9ucyAoZHNhX3VzZXJfeG1pdCwgZHNhX3N3aXRjaF9yY3YpIHRvIHRoZSBpbmRpdmlkdWFsIHRhZ2dlciBkcml2ZXJzLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgdGhhdCBjb3VsZCBpbnRyb2R1Y2UgbWVtb3J5IGxlYWtzIG9yIGRvdWJsZSBmcmVlcyBpZiBhbnkgZXJyb3IgcGF0aCBpbiBhIHRhZ2dlciBkcml2ZXIgaXMgbWlzc2VkIG9yIG1pc2hhbmRsZWQuIFRoZSBjb2RlIGlzIHJlYWNoYWJsZSBpbiBhIHZpcnR1YWxpemVkIGVudmlyb25tZW50IGJ5IHVzaW5nIHRoZSBkc2FfbG9vcCBtb2NrLXVwIHN3aXRjaCBkcml2ZXIgYW5kIGR5bmFtaWNhbGx5IGNoYW5naW5nIHRoZSB0YWdnaW5nIHByb3RvY29sIHZpYSBzeXNmcy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+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-workflow745ml[1] Phase: Succeeded StartedAt: 2026-06-25 08:31:05 +0000 UTC FinishedAt: 2026-06-25 08:31:05 +0000 UTC Input: nil Output: nil --------- Name: series-workflow745ml[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-06-25 08:31:05 +0000 UTC FinishedAt: 2026-06-25 08:31:05 +0000 UTC Input: nil Output: nil --------- Name: series-workflow745ml[2] Phase: Running StartedAt: 2026-06-25 08:31:05 +0000 UTC FinishedAt: 0001-01-01 00:00:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflow745ml[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f34c6b3a3c3d98f34918e1d2ea846a5acccac6d1","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_DSA","NET_DSA_LOOP","NET_DSA_TAG_AR9331","NET_DSA_TAG_BRCM","NET_DSA_TAG_BRCM_LEGACY","NET_DSA_TAG_BRCM_PREPEND","NET_DSA_TAG_HELLCREEK","NET_DSA_TAG_GSWIP","NET_DSA_TAG_DSA","NET_DSA_TAG_EDSA","NET_DSA_TAG_MTK","NET_DSA_TAG_MXL_862XX","NET_DSA_TAG_MXL_GSW1XX","NET_DSA_TAG_KSZ","NET_DSA_TAG_NETC","NET_DSA_TAG_OCELOT","NET_DSA_TAG_OCELOT_8021Q","NET_DSA_TAG_QCA","NET_DSA_TAG_RTL4_A","NET_DSA_TAG_RTL8_4","NET_DSA_TAG_RZN1_A5PSW","NET_DSA_TAG_LAN9303","NET_DSA_TAG_SJA1105","NET_DSA_TAG_TRAILER","NET_DSA_TAG_VSC73XX_8021Q","NET_DSA_TAG_XRS700X","NET_DSA_TAG_YT921X"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["dsa_switch_rcv","dsa_user_xmit","ar9331_tag_rcv","brcm_tag_xmit_ll","brcm_tag_rcv_ll","dsa_rcv_ll","edsa_rcv","ksz_common_rcv","ocelot_rcv","qca_tag_rcv","sja1105_rcv","trailer_rcv"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f34c6b3a3c3d98f34918e1d2ea846a5acccac6d1","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_DSA","NET_DSA_LOOP","NET_DSA_TAG_AR9331","NET_DSA_TAG_BRCM","NET_DSA_TAG_BRCM_LEGACY","NET_DSA_TAG_BRCM_PREPEND","NET_DSA_TAG_HELLCREEK","NET_DSA_TAG_GSWIP","NET_DSA_TAG_DSA","NET_DSA_TAG_EDSA","NET_DSA_TAG_MTK","NET_DSA_TAG_MXL_862XX","NET_DSA_TAG_MXL_GSW1XX","NET_DSA_TAG_KSZ","NET_DSA_TAG_NETC","NET_DSA_TAG_OCELOT","NET_DSA_TAG_OCELOT_8021Q","NET_DSA_TAG_QCA","NET_DSA_TAG_RTL4_A","NET_DSA_TAG_RTL8_4","NET_DSA_TAG_RZN1_A5PSW","NET_DSA_TAG_LAN9303","NET_DSA_TAG_SJA1105","NET_DSA_TAG_TRAILER","NET_DSA_TAG_VSC73XX_8021Q","NET_DSA_TAG_XRS700X","NET_DSA_TAG_YT921X"],"series_id":"2e62e044-69c2-4487-9819-b9332e30abaa","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN) Phase: Running StartedAt: 2026-06-25 08:31:05 +0000 UTC FinishedAt: 0001-01-01 00:00:00 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"f34c6b3a3c3d98f34918e1d2ea846a5acccac6d1","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_DSA","NET_DSA_LOOP","NET_DSA_TAG_AR9331","NET_DSA_TAG_BRCM","NET_DSA_TAG_BRCM_LEGACY","NET_DSA_TAG_BRCM_PREPEND","NET_DSA_TAG_HELLCREEK","NET_DSA_TAG_GSWIP","NET_DSA_TAG_DSA","NET_DSA_TAG_EDSA","NET_DSA_TAG_MTK","NET_DSA_TAG_MXL_862XX","NET_DSA_TAG_MXL_GSW1XX","NET_DSA_TAG_KSZ","NET_DSA_TAG_NETC","NET_DSA_TAG_OCELOT","NET_DSA_TAG_OCELOT_8021Q","NET_DSA_TAG_QCA","NET_DSA_TAG_RTL4_A","NET_DSA_TAG_RTL8_4","NET_DSA_TAG_RZN1_A5PSW","NET_DSA_TAG_LAN9303","NET_DSA_TAG_SJA1105","NET_DSA_TAG_TRAILER","NET_DSA_TAG_VSC73XX_8021Q","NET_DSA_TAG_XRS700X","NET_DSA_TAG_YT921X"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},"fuzz":{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["dsa_switch_rcv","dsa_user_xmit","ar9331_tag_rcv","brcm_tag_xmit_ll","brcm_tag_rcv_ll","dsa_rcv_ll","edsa_rcv","ksz_common_rcv","ocelot_rcv","qca_tag_rcv","sja1105_rcv","trailer_rcv"],"skip_cover_check":false},"patched":{"arch":"amd64","commit_hash":"f34c6b3a3c3d98f34918e1d2ea846a5acccac6d1","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_DSA","NET_DSA_LOOP","NET_DSA_TAG_AR9331","NET_DSA_TAG_BRCM","NET_DSA_TAG_BRCM_LEGACY","NET_DSA_TAG_BRCM_PREPEND","NET_DSA_TAG_HELLCREEK","NET_DSA_TAG_GSWIP","NET_DSA_TAG_DSA","NET_DSA_TAG_EDSA","NET_DSA_TAG_MTK","NET_DSA_TAG_MXL_862XX","NET_DSA_TAG_MXL_GSW1XX","NET_DSA_TAG_KSZ","NET_DSA_TAG_NETC","NET_DSA_TAG_OCELOT","NET_DSA_TAG_OCELOT_8021Q","NET_DSA_TAG_QCA","NET_DSA_TAG_RTL4_A","NET_DSA_TAG_RTL8_4","NET_DSA_TAG_RZN1_A5PSW","NET_DSA_TAG_LAN9303","NET_DSA_TAG_SJA1105","NET_DSA_TAG_TRAILER","NET_DSA_TAG_VSC73XX_8021Q","NET_DSA_TAG_XRS700X","NET_DSA_TAG_YT921X"],"series_id":"2e62e044-69c2-4487-9819-b9332e30abaa","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},"retest":null,"track":"KASAN"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: nil --------- Name: series-workflow745ml[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f34c6b3a3c3d98f34918e1d2ea846a5acccac6d1","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_DSA","NET_DSA_LOOP","NET_DSA_TAG_AR9331","NET_DSA_TAG_BRCM","NET_DSA_TAG_BRCM_LEGACY","NET_DSA_TAG_BRCM_PREPEND","NET_DSA_TAG_HELLCREEK","NET_DSA_TAG_GSWIP","NET_DSA_TAG_DSA","NET_DSA_TAG_EDSA","NET_DSA_TAG_MTK","NET_DSA_TAG_MXL_862XX","NET_DSA_TAG_MXL_GSW1XX","NET_DSA_TAG_KSZ","NET_DSA_TAG_NETC","NET_DSA_TAG_OCELOT","NET_DSA_TAG_OCELOT_8021Q","NET_DSA_TAG_QCA","NET_DSA_TAG_RTL4_A","NET_DSA_TAG_RTL8_4","NET_DSA_TAG_RZN1_A5PSW","NET_DSA_TAG_LAN9303","NET_DSA_TAG_SJA1105","NET_DSA_TAG_TRAILER","NET_DSA_TAG_VSC73XX_8021Q","NET_DSA_TAG_XRS700X","NET_DSA_TAG_YT921X"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["dsa_switch_rcv","dsa_user_xmit","ar9331_tag_rcv","brcm_tag_xmit_ll","brcm_tag_rcv_ll","dsa_rcv_ll","edsa_rcv","ksz_common_rcv","ocelot_rcv","qca_tag_rcv","sja1105_rcv","trailer_rcv"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f34c6b3a3c3d98f34918e1d2ea846a5acccac6d1","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_DSA","NET_DSA_LOOP","NET_DSA_TAG_AR9331","NET_DSA_TAG_BRCM","NET_DSA_TAG_BRCM_LEGACY","NET_DSA_TAG_BRCM_PREPEND","NET_DSA_TAG_HELLCREEK","NET_DSA_TAG_GSWIP","NET_DSA_TAG_DSA","NET_DSA_TAG_EDSA","NET_DSA_TAG_MTK","NET_DSA_TAG_MXL_862XX","NET_DSA_TAG_MXL_GSW1XX","NET_DSA_TAG_KSZ","NET_DSA_TAG_NETC","NET_DSA_TAG_OCELOT","NET_DSA_TAG_OCELOT_8021Q","NET_DSA_TAG_QCA","NET_DSA_TAG_RTL4_A","NET_DSA_TAG_RTL8_4","NET_DSA_TAG_RZN1_A5PSW","NET_DSA_TAG_LAN9303","NET_DSA_TAG_SJA1105","NET_DSA_TAG_TRAILER","NET_DSA_TAG_VSC73XX_8021Q","NET_DSA_TAG_XRS700X","NET_DSA_TAG_YT921X"],"series_id":"2e62e044-69c2-4487-9819-b9332e30abaa","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[0] Phase: Succeeded StartedAt: 2026-06-25 08:31:05 +0000 UTC FinishedAt: 2026-06-25 08:31:18 +0000 UTC Input: nil Output: nil --------- Name: series-workflow745ml[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f34c6b3a3c3d98f34918e1d2ea846a5acccac6d1","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_DSA","NET_DSA_LOOP","NET_DSA_TAG_AR9331","NET_DSA_TAG_BRCM","NET_DSA_TAG_BRCM_LEGACY","NET_DSA_TAG_BRCM_PREPEND","NET_DSA_TAG_HELLCREEK","NET_DSA_TAG_GSWIP","NET_DSA_TAG_DSA","NET_DSA_TAG_EDSA","NET_DSA_TAG_MTK","NET_DSA_TAG_MXL_862XX","NET_DSA_TAG_MXL_GSW1XX","NET_DSA_TAG_KSZ","NET_DSA_TAG_NETC","NET_DSA_TAG_OCELOT","NET_DSA_TAG_OCELOT_8021Q","NET_DSA_TAG_QCA","NET_DSA_TAG_RTL4_A","NET_DSA_TAG_RTL8_4","NET_DSA_TAG_RZN1_A5PSW","NET_DSA_TAG_LAN9303","NET_DSA_TAG_SJA1105","NET_DSA_TAG_TRAILER","NET_DSA_TAG_VSC73XX_8021Q","NET_DSA_TAG_XRS700X","NET_DSA_TAG_YT921X"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["dsa_switch_rcv","dsa_user_xmit","ar9331_tag_rcv","brcm_tag_xmit_ll","brcm_tag_rcv_ll","dsa_rcv_ll","edsa_rcv","ksz_common_rcv","ocelot_rcv","qca_tag_rcv","sja1105_rcv","trailer_rcv"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f34c6b3a3c3d98f34918e1d2ea846a5acccac6d1","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_DSA","NET_DSA_LOOP","NET_DSA_TAG_AR9331","NET_DSA_TAG_BRCM","NET_DSA_TAG_BRCM_LEGACY","NET_DSA_TAG_BRCM_PREPEND","NET_DSA_TAG_HELLCREEK","NET_DSA_TAG_GSWIP","NET_DSA_TAG_DSA","NET_DSA_TAG_EDSA","NET_DSA_TAG_MTK","NET_DSA_TAG_MXL_862XX","NET_DSA_TAG_MXL_GSW1XX","NET_DSA_TAG_KSZ","NET_DSA_TAG_NETC","NET_DSA_TAG_OCELOT","NET_DSA_TAG_OCELOT_8021Q","NET_DSA_TAG_QCA","NET_DSA_TAG_RTL4_A","NET_DSA_TAG_RTL8_4","NET_DSA_TAG_RZN1_A5PSW","NET_DSA_TAG_LAN9303","NET_DSA_TAG_SJA1105","NET_DSA_TAG_TRAILER","NET_DSA_TAG_VSC73XX_8021Q","NET_DSA_TAG_XRS700X","NET_DSA_TAG_YT921X"],"series_id":"2e62e044-69c2-4487-9819-b9332e30abaa","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[0].save-base-req Phase: Succeeded StartedAt: 2026-06-25 08:31:05 +0000 UTC FinishedAt: 2026-06-25 08:31:11 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"f34c6b3a3c3d98f34918e1d2ea846a5acccac6d1","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_DSA","NET_DSA_LOOP","NET_DSA_TAG_AR9331","NET_DSA_TAG_BRCM","NET_DSA_TAG_BRCM_LEGACY","NET_DSA_TAG_BRCM_PREPEND","NET_DSA_TAG_HELLCREEK","NET_DSA_TAG_GSWIP","NET_DSA_TAG_DSA","NET_DSA_TAG_EDSA","NET_DSA_TAG_MTK","NET_DSA_TAG_MXL_862XX","NET_DSA_TAG_MXL_GSW1XX","NET_DSA_TAG_KSZ","NET_DSA_TAG_NETC","NET_DSA_TAG_OCELOT","NET_DSA_TAG_OCELOT_8021Q","NET_DSA_TAG_QCA","NET_DSA_TAG_RTL4_A","NET_DSA_TAG_RTL8_4","NET_DSA_TAG_RZN1_A5PSW","NET_DSA_TAG_LAN9303","NET_DSA_TAG_SJA1105","NET_DSA_TAG_TRAILER","NET_DSA_TAG_VSC73XX_8021Q","NET_DSA_TAG_XRS700X","NET_DSA_TAG_YT921X"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflow745ml/series-workflow745ml-convert-artifact-376442045/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow745ml[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f34c6b3a3c3d98f34918e1d2ea846a5acccac6d1","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_DSA","NET_DSA_LOOP","NET_DSA_TAG_AR9331","NET_DSA_TAG_BRCM","NET_DSA_TAG_BRCM_LEGACY","NET_DSA_TAG_BRCM_PREPEND","NET_DSA_TAG_HELLCREEK","NET_DSA_TAG_GSWIP","NET_DSA_TAG_DSA","NET_DSA_TAG_EDSA","NET_DSA_TAG_MTK","NET_DSA_TAG_MXL_862XX","NET_DSA_TAG_MXL_GSW1XX","NET_DSA_TAG_KSZ","NET_DSA_TAG_NETC","NET_DSA_TAG_OCELOT","NET_DSA_TAG_OCELOT_8021Q","NET_DSA_TAG_QCA","NET_DSA_TAG_RTL4_A","NET_DSA_TAG_RTL8_4","NET_DSA_TAG_RZN1_A5PSW","NET_DSA_TAG_LAN9303","NET_DSA_TAG_SJA1105","NET_DSA_TAG_TRAILER","NET_DSA_TAG_VSC73XX_8021Q","NET_DSA_TAG_XRS700X","NET_DSA_TAG_YT921X"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["dsa_switch_rcv","dsa_user_xmit","ar9331_tag_rcv","brcm_tag_xmit_ll","brcm_tag_rcv_ll","dsa_rcv_ll","edsa_rcv","ksz_common_rcv","ocelot_rcv","qca_tag_rcv","sja1105_rcv","trailer_rcv"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f34c6b3a3c3d98f34918e1d2ea846a5acccac6d1","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_DSA","NET_DSA_LOOP","NET_DSA_TAG_AR9331","NET_DSA_TAG_BRCM","NET_DSA_TAG_BRCM_LEGACY","NET_DSA_TAG_BRCM_PREPEND","NET_DSA_TAG_HELLCREEK","NET_DSA_TAG_GSWIP","NET_DSA_TAG_DSA","NET_DSA_TAG_EDSA","NET_DSA_TAG_MTK","NET_DSA_TAG_MXL_862XX","NET_DSA_TAG_MXL_GSW1XX","NET_DSA_TAG_KSZ","NET_DSA_TAG_NETC","NET_DSA_TAG_OCELOT","NET_DSA_TAG_OCELOT_8021Q","NET_DSA_TAG_QCA","NET_DSA_TAG_RTL4_A","NET_DSA_TAG_RTL8_4","NET_DSA_TAG_RZN1_A5PSW","NET_DSA_TAG_LAN9303","NET_DSA_TAG_SJA1105","NET_DSA_TAG_TRAILER","NET_DSA_TAG_VSC73XX_8021Q","NET_DSA_TAG_XRS700X","NET_DSA_TAG_YT921X"],"series_id":"2e62e044-69c2-4487-9819-b9332e30abaa","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[1] Phase: Succeeded StartedAt: 2026-06-25 08:31:18 +0000 UTC FinishedAt: 2026-06-25 08:54:29 +0000 UTC Input: nil Output: nil --------- Name: series-workflow745ml[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f34c6b3a3c3d98f34918e1d2ea846a5acccac6d1","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_DSA","NET_DSA_LOOP","NET_DSA_TAG_AR9331","NET_DSA_TAG_BRCM","NET_DSA_TAG_BRCM_LEGACY","NET_DSA_TAG_BRCM_PREPEND","NET_DSA_TAG_HELLCREEK","NET_DSA_TAG_GSWIP","NET_DSA_TAG_DSA","NET_DSA_TAG_EDSA","NET_DSA_TAG_MTK","NET_DSA_TAG_MXL_862XX","NET_DSA_TAG_MXL_GSW1XX","NET_DSA_TAG_KSZ","NET_DSA_TAG_NETC","NET_DSA_TAG_OCELOT","NET_DSA_TAG_OCELOT_8021Q","NET_DSA_TAG_QCA","NET_DSA_TAG_RTL4_A","NET_DSA_TAG_RTL8_4","NET_DSA_TAG_RZN1_A5PSW","NET_DSA_TAG_LAN9303","NET_DSA_TAG_SJA1105","NET_DSA_TAG_TRAILER","NET_DSA_TAG_VSC73XX_8021Q","NET_DSA_TAG_XRS700X","NET_DSA_TAG_YT921X"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["dsa_switch_rcv","dsa_user_xmit","ar9331_tag_rcv","brcm_tag_xmit_ll","brcm_tag_rcv_ll","dsa_rcv_ll","edsa_rcv","ksz_common_rcv","ocelot_rcv","qca_tag_rcv","sja1105_rcv","trailer_rcv"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f34c6b3a3c3d98f34918e1d2ea846a5acccac6d1","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_DSA","NET_DSA_LOOP","NET_DSA_TAG_AR9331","NET_DSA_TAG_BRCM","NET_DSA_TAG_BRCM_LEGACY","NET_DSA_TAG_BRCM_PREPEND","NET_DSA_TAG_HELLCREEK","NET_DSA_TAG_GSWIP","NET_DSA_TAG_DSA","NET_DSA_TAG_EDSA","NET_DSA_TAG_MTK","NET_DSA_TAG_MXL_862XX","NET_DSA_TAG_MXL_GSW1XX","NET_DSA_TAG_KSZ","NET_DSA_TAG_NETC","NET_DSA_TAG_OCELOT","NET_DSA_TAG_OCELOT_8021Q","NET_DSA_TAG_QCA","NET_DSA_TAG_RTL4_A","NET_DSA_TAG_RTL8_4","NET_DSA_TAG_RZN1_A5PSW","NET_DSA_TAG_LAN9303","NET_DSA_TAG_SJA1105","NET_DSA_TAG_TRAILER","NET_DSA_TAG_VSC73XX_8021Q","NET_DSA_TAG_XRS700X","NET_DSA_TAG_YT921X"],"series_id":"2e62e044-69c2-4487-9819-b9332e30abaa","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[1].base-build Phase: Succeeded StartedAt: 2026-06-25 08:31:18 +0000 UTC FinishedAt: 2026-06-25 08:54:29 +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:*f55d633d-5833-40ff-a5d8-34b165ec8199,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-workflow745ml/series-workflow745ml-convert-artifact-376442045/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": "e05d385b-63fc-405d-9fbd-b1635a3fe335", "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-workflow745ml/series-workflow745ml-build-action-952710643/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow745ml[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f34c6b3a3c3d98f34918e1d2ea846a5acccac6d1","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_DSA","NET_DSA_LOOP","NET_DSA_TAG_AR9331","NET_DSA_TAG_BRCM","NET_DSA_TAG_BRCM_LEGACY","NET_DSA_TAG_BRCM_PREPEND","NET_DSA_TAG_HELLCREEK","NET_DSA_TAG_GSWIP","NET_DSA_TAG_DSA","NET_DSA_TAG_EDSA","NET_DSA_TAG_MTK","NET_DSA_TAG_MXL_862XX","NET_DSA_TAG_MXL_GSW1XX","NET_DSA_TAG_KSZ","NET_DSA_TAG_NETC","NET_DSA_TAG_OCELOT","NET_DSA_TAG_OCELOT_8021Q","NET_DSA_TAG_QCA","NET_DSA_TAG_RTL4_A","NET_DSA_TAG_RTL8_4","NET_DSA_TAG_RZN1_A5PSW","NET_DSA_TAG_LAN9303","NET_DSA_TAG_SJA1105","NET_DSA_TAG_TRAILER","NET_DSA_TAG_VSC73XX_8021Q","NET_DSA_TAG_XRS700X","NET_DSA_TAG_YT921X"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["dsa_switch_rcv","dsa_user_xmit","ar9331_tag_rcv","brcm_tag_xmit_ll","brcm_tag_rcv_ll","dsa_rcv_ll","edsa_rcv","ksz_common_rcv","ocelot_rcv","qca_tag_rcv","sja1105_rcv","trailer_rcv"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f34c6b3a3c3d98f34918e1d2ea846a5acccac6d1","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_DSA","NET_DSA_LOOP","NET_DSA_TAG_AR9331","NET_DSA_TAG_BRCM","NET_DSA_TAG_BRCM_LEGACY","NET_DSA_TAG_BRCM_PREPEND","NET_DSA_TAG_HELLCREEK","NET_DSA_TAG_GSWIP","NET_DSA_TAG_DSA","NET_DSA_TAG_EDSA","NET_DSA_TAG_MTK","NET_DSA_TAG_MXL_862XX","NET_DSA_TAG_MXL_GSW1XX","NET_DSA_TAG_KSZ","NET_DSA_TAG_NETC","NET_DSA_TAG_OCELOT","NET_DSA_TAG_OCELOT_8021Q","NET_DSA_TAG_QCA","NET_DSA_TAG_RTL4_A","NET_DSA_TAG_RTL8_4","NET_DSA_TAG_RZN1_A5PSW","NET_DSA_TAG_LAN9303","NET_DSA_TAG_SJA1105","NET_DSA_TAG_TRAILER","NET_DSA_TAG_VSC73XX_8021Q","NET_DSA_TAG_XRS700X","NET_DSA_TAG_YT921X"],"series_id":"2e62e044-69c2-4487-9819-b9332e30abaa","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[1].base-build(0) Phase: Succeeded StartedAt: 2026-06-25 08:31:18 +0000 UTC FinishedAt: 2026-06-25 08:54:19 +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:*f55d633d-5833-40ff-a5d8-34b165ec8199,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-workflow745ml/series-workflow745ml-convert-artifact-376442045/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": "e05d385b-63fc-405d-9fbd-b1635a3fe335", "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-workflow745ml/series-workflow745ml-build-action-952710643/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow745ml[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f34c6b3a3c3d98f34918e1d2ea846a5acccac6d1","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_DSA","NET_DSA_LOOP","NET_DSA_TAG_AR9331","NET_DSA_TAG_BRCM","NET_DSA_TAG_BRCM_LEGACY","NET_DSA_TAG_BRCM_PREPEND","NET_DSA_TAG_HELLCREEK","NET_DSA_TAG_GSWIP","NET_DSA_TAG_DSA","NET_DSA_TAG_EDSA","NET_DSA_TAG_MTK","NET_DSA_TAG_MXL_862XX","NET_DSA_TAG_MXL_GSW1XX","NET_DSA_TAG_KSZ","NET_DSA_TAG_NETC","NET_DSA_TAG_OCELOT","NET_DSA_TAG_OCELOT_8021Q","NET_DSA_TAG_QCA","NET_DSA_TAG_RTL4_A","NET_DSA_TAG_RTL8_4","NET_DSA_TAG_RZN1_A5PSW","NET_DSA_TAG_LAN9303","NET_DSA_TAG_SJA1105","NET_DSA_TAG_TRAILER","NET_DSA_TAG_VSC73XX_8021Q","NET_DSA_TAG_XRS700X","NET_DSA_TAG_YT921X"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["dsa_switch_rcv","dsa_user_xmit","ar9331_tag_rcv","brcm_tag_xmit_ll","brcm_tag_rcv_ll","dsa_rcv_ll","edsa_rcv","ksz_common_rcv","ocelot_rcv","qca_tag_rcv","sja1105_rcv","trailer_rcv"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f34c6b3a3c3d98f34918e1d2ea846a5acccac6d1","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_DSA","NET_DSA_LOOP","NET_DSA_TAG_AR9331","NET_DSA_TAG_BRCM","NET_DSA_TAG_BRCM_LEGACY","NET_DSA_TAG_BRCM_PREPEND","NET_DSA_TAG_HELLCREEK","NET_DSA_TAG_GSWIP","NET_DSA_TAG_DSA","NET_DSA_TAG_EDSA","NET_DSA_TAG_MTK","NET_DSA_TAG_MXL_862XX","NET_DSA_TAG_MXL_GSW1XX","NET_DSA_TAG_KSZ","NET_DSA_TAG_NETC","NET_DSA_TAG_OCELOT","NET_DSA_TAG_OCELOT_8021Q","NET_DSA_TAG_QCA","NET_DSA_TAG_RTL4_A","NET_DSA_TAG_RTL8_4","NET_DSA_TAG_RZN1_A5PSW","NET_DSA_TAG_LAN9303","NET_DSA_TAG_SJA1105","NET_DSA_TAG_TRAILER","NET_DSA_TAG_VSC73XX_8021Q","NET_DSA_TAG_XRS700X","NET_DSA_TAG_YT921X"],"series_id":"2e62e044-69c2-4487-9819-b9332e30abaa","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[2] Phase: Succeeded StartedAt: 2026-06-25 08:54:29 +0000 UTC FinishedAt: 2026-06-25 08:54:29 +0000 UTC Input: nil Output: nil --------- Name: series-workflow745ml[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f34c6b3a3c3d98f34918e1d2ea846a5acccac6d1","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_DSA","NET_DSA_LOOP","NET_DSA_TAG_AR9331","NET_DSA_TAG_BRCM","NET_DSA_TAG_BRCM_LEGACY","NET_DSA_TAG_BRCM_PREPEND","NET_DSA_TAG_HELLCREEK","NET_DSA_TAG_GSWIP","NET_DSA_TAG_DSA","NET_DSA_TAG_EDSA","NET_DSA_TAG_MTK","NET_DSA_TAG_MXL_862XX","NET_DSA_TAG_MXL_GSW1XX","NET_DSA_TAG_KSZ","NET_DSA_TAG_NETC","NET_DSA_TAG_OCELOT","NET_DSA_TAG_OCELOT_8021Q","NET_DSA_TAG_QCA","NET_DSA_TAG_RTL4_A","NET_DSA_TAG_RTL8_4","NET_DSA_TAG_RZN1_A5PSW","NET_DSA_TAG_LAN9303","NET_DSA_TAG_SJA1105","NET_DSA_TAG_TRAILER","NET_DSA_TAG_VSC73XX_8021Q","NET_DSA_TAG_XRS700X","NET_DSA_TAG_YT921X"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["dsa_switch_rcv","dsa_user_xmit","ar9331_tag_rcv","brcm_tag_xmit_ll","brcm_tag_rcv_ll","dsa_rcv_ll","edsa_rcv","ksz_common_rcv","ocelot_rcv","qca_tag_rcv","sja1105_rcv","trailer_rcv"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f34c6b3a3c3d98f34918e1d2ea846a5acccac6d1","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_DSA","NET_DSA_LOOP","NET_DSA_TAG_AR9331","NET_DSA_TAG_BRCM","NET_DSA_TAG_BRCM_LEGACY","NET_DSA_TAG_BRCM_PREPEND","NET_DSA_TAG_HELLCREEK","NET_DSA_TAG_GSWIP","NET_DSA_TAG_DSA","NET_DSA_TAG_EDSA","NET_DSA_TAG_MTK","NET_DSA_TAG_MXL_862XX","NET_DSA_TAG_MXL_GSW1XX","NET_DSA_TAG_KSZ","NET_DSA_TAG_NETC","NET_DSA_TAG_OCELOT","NET_DSA_TAG_OCELOT_8021Q","NET_DSA_TAG_QCA","NET_DSA_TAG_RTL4_A","NET_DSA_TAG_RTL8_4","NET_DSA_TAG_RZN1_A5PSW","NET_DSA_TAG_LAN9303","NET_DSA_TAG_SJA1105","NET_DSA_TAG_TRAILER","NET_DSA_TAG_VSC73XX_8021Q","NET_DSA_TAG_XRS700X","NET_DSA_TAG_YT921X"],"series_id":"2e62e044-69c2-4487-9819-b9332e30abaa","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[2].abort-if-base-build-failed Phase: Skipped StartedAt: 2026-06-25 08:54:29 +0000 UTC FinishedAt: 2026-06-25 08:54:29 +0000 UTC Input: nil Output: nil --------- Name: series-workflow745ml[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f34c6b3a3c3d98f34918e1d2ea846a5acccac6d1","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_DSA","NET_DSA_LOOP","NET_DSA_TAG_AR9331","NET_DSA_TAG_BRCM","NET_DSA_TAG_BRCM_LEGACY","NET_DSA_TAG_BRCM_PREPEND","NET_DSA_TAG_HELLCREEK","NET_DSA_TAG_GSWIP","NET_DSA_TAG_DSA","NET_DSA_TAG_EDSA","NET_DSA_TAG_MTK","NET_DSA_TAG_MXL_862XX","NET_DSA_TAG_MXL_GSW1XX","NET_DSA_TAG_KSZ","NET_DSA_TAG_NETC","NET_DSA_TAG_OCELOT","NET_DSA_TAG_OCELOT_8021Q","NET_DSA_TAG_QCA","NET_DSA_TAG_RTL4_A","NET_DSA_TAG_RTL8_4","NET_DSA_TAG_RZN1_A5PSW","NET_DSA_TAG_LAN9303","NET_DSA_TAG_SJA1105","NET_DSA_TAG_TRAILER","NET_DSA_TAG_VSC73XX_8021Q","NET_DSA_TAG_XRS700X","NET_DSA_TAG_YT921X"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["dsa_switch_rcv","dsa_user_xmit","ar9331_tag_rcv","brcm_tag_xmit_ll","brcm_tag_rcv_ll","dsa_rcv_ll","edsa_rcv","ksz_common_rcv","ocelot_rcv","qca_tag_rcv","sja1105_rcv","trailer_rcv"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f34c6b3a3c3d98f34918e1d2ea846a5acccac6d1","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_DSA","NET_DSA_LOOP","NET_DSA_TAG_AR9331","NET_DSA_TAG_BRCM","NET_DSA_TAG_BRCM_LEGACY","NET_DSA_TAG_BRCM_PREPEND","NET_DSA_TAG_HELLCREEK","NET_DSA_TAG_GSWIP","NET_DSA_TAG_DSA","NET_DSA_TAG_EDSA","NET_DSA_TAG_MTK","NET_DSA_TAG_MXL_862XX","NET_DSA_TAG_MXL_GSW1XX","NET_DSA_TAG_KSZ","NET_DSA_TAG_NETC","NET_DSA_TAG_OCELOT","NET_DSA_TAG_OCELOT_8021Q","NET_DSA_TAG_QCA","NET_DSA_TAG_RTL4_A","NET_DSA_TAG_RTL8_4","NET_DSA_TAG_RZN1_A5PSW","NET_DSA_TAG_LAN9303","NET_DSA_TAG_SJA1105","NET_DSA_TAG_TRAILER","NET_DSA_TAG_VSC73XX_8021Q","NET_DSA_TAG_XRS700X","NET_DSA_TAG_YT921X"],"series_id":"2e62e044-69c2-4487-9819-b9332e30abaa","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[3] Phase: Succeeded StartedAt: 2026-06-25 08:54:29 +0000 UTC FinishedAt: 2026-06-25 08:54:39 +0000 UTC Input: nil Output: nil --------- Name: series-workflow745ml[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f34c6b3a3c3d98f34918e1d2ea846a5acccac6d1","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_DSA","NET_DSA_LOOP","NET_DSA_TAG_AR9331","NET_DSA_TAG_BRCM","NET_DSA_TAG_BRCM_LEGACY","NET_DSA_TAG_BRCM_PREPEND","NET_DSA_TAG_HELLCREEK","NET_DSA_TAG_GSWIP","NET_DSA_TAG_DSA","NET_DSA_TAG_EDSA","NET_DSA_TAG_MTK","NET_DSA_TAG_MXL_862XX","NET_DSA_TAG_MXL_GSW1XX","NET_DSA_TAG_KSZ","NET_DSA_TAG_NETC","NET_DSA_TAG_OCELOT","NET_DSA_TAG_OCELOT_8021Q","NET_DSA_TAG_QCA","NET_DSA_TAG_RTL4_A","NET_DSA_TAG_RTL8_4","NET_DSA_TAG_RZN1_A5PSW","NET_DSA_TAG_LAN9303","NET_DSA_TAG_SJA1105","NET_DSA_TAG_TRAILER","NET_DSA_TAG_VSC73XX_8021Q","NET_DSA_TAG_XRS700X","NET_DSA_TAG_YT921X"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["dsa_switch_rcv","dsa_user_xmit","ar9331_tag_rcv","brcm_tag_xmit_ll","brcm_tag_rcv_ll","dsa_rcv_ll","edsa_rcv","ksz_common_rcv","ocelot_rcv","qca_tag_rcv","sja1105_rcv","trailer_rcv"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f34c6b3a3c3d98f34918e1d2ea846a5acccac6d1","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_DSA","NET_DSA_LOOP","NET_DSA_TAG_AR9331","NET_DSA_TAG_BRCM","NET_DSA_TAG_BRCM_LEGACY","NET_DSA_TAG_BRCM_PREPEND","NET_DSA_TAG_HELLCREEK","NET_DSA_TAG_GSWIP","NET_DSA_TAG_DSA","NET_DSA_TAG_EDSA","NET_DSA_TAG_MTK","NET_DSA_TAG_MXL_862XX","NET_DSA_TAG_MXL_GSW1XX","NET_DSA_TAG_KSZ","NET_DSA_TAG_NETC","NET_DSA_TAG_OCELOT","NET_DSA_TAG_OCELOT_8021Q","NET_DSA_TAG_QCA","NET_DSA_TAG_RTL4_A","NET_DSA_TAG_RTL8_4","NET_DSA_TAG_RZN1_A5PSW","NET_DSA_TAG_LAN9303","NET_DSA_TAG_SJA1105","NET_DSA_TAG_TRAILER","NET_DSA_TAG_VSC73XX_8021Q","NET_DSA_TAG_XRS700X","NET_DSA_TAG_YT921X"],"series_id":"2e62e044-69c2-4487-9819-b9332e30abaa","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[3].save-patched-req Phase: Succeeded StartedAt: 2026-06-25 08:54:29 +0000 UTC FinishedAt: 2026-06-25 08:54:34 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"f34c6b3a3c3d98f34918e1d2ea846a5acccac6d1","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_DSA","NET_DSA_LOOP","NET_DSA_TAG_AR9331","NET_DSA_TAG_BRCM","NET_DSA_TAG_BRCM_LEGACY","NET_DSA_TAG_BRCM_PREPEND","NET_DSA_TAG_HELLCREEK","NET_DSA_TAG_GSWIP","NET_DSA_TAG_DSA","NET_DSA_TAG_EDSA","NET_DSA_TAG_MTK","NET_DSA_TAG_MXL_862XX","NET_DSA_TAG_MXL_GSW1XX","NET_DSA_TAG_KSZ","NET_DSA_TAG_NETC","NET_DSA_TAG_OCELOT","NET_DSA_TAG_OCELOT_8021Q","NET_DSA_TAG_QCA","NET_DSA_TAG_RTL4_A","NET_DSA_TAG_RTL8_4","NET_DSA_TAG_RZN1_A5PSW","NET_DSA_TAG_LAN9303","NET_DSA_TAG_SJA1105","NET_DSA_TAG_TRAILER","NET_DSA_TAG_VSC73XX_8021Q","NET_DSA_TAG_XRS700X","NET_DSA_TAG_YT921X"],"series_id":"2e62e044-69c2-4487-9819-b9332e30abaa","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflow745ml/series-workflow745ml-convert-artifact-568317208/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow745ml[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f34c6b3a3c3d98f34918e1d2ea846a5acccac6d1","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_DSA","NET_DSA_LOOP","NET_DSA_TAG_AR9331","NET_DSA_TAG_BRCM","NET_DSA_TAG_BRCM_LEGACY","NET_DSA_TAG_BRCM_PREPEND","NET_DSA_TAG_HELLCREEK","NET_DSA_TAG_GSWIP","NET_DSA_TAG_DSA","NET_DSA_TAG_EDSA","NET_DSA_TAG_MTK","NET_DSA_TAG_MXL_862XX","NET_DSA_TAG_MXL_GSW1XX","NET_DSA_TAG_KSZ","NET_DSA_TAG_NETC","NET_DSA_TAG_OCELOT","NET_DSA_TAG_OCELOT_8021Q","NET_DSA_TAG_QCA","NET_DSA_TAG_RTL4_A","NET_DSA_TAG_RTL8_4","NET_DSA_TAG_RZN1_A5PSW","NET_DSA_TAG_LAN9303","NET_DSA_TAG_SJA1105","NET_DSA_TAG_TRAILER","NET_DSA_TAG_VSC73XX_8021Q","NET_DSA_TAG_XRS700X","NET_DSA_TAG_YT921X"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["dsa_switch_rcv","dsa_user_xmit","ar9331_tag_rcv","brcm_tag_xmit_ll","brcm_tag_rcv_ll","dsa_rcv_ll","edsa_rcv","ksz_common_rcv","ocelot_rcv","qca_tag_rcv","sja1105_rcv","trailer_rcv"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f34c6b3a3c3d98f34918e1d2ea846a5acccac6d1","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_DSA","NET_DSA_LOOP","NET_DSA_TAG_AR9331","NET_DSA_TAG_BRCM","NET_DSA_TAG_BRCM_LEGACY","NET_DSA_TAG_BRCM_PREPEND","NET_DSA_TAG_HELLCREEK","NET_DSA_TAG_GSWIP","NET_DSA_TAG_DSA","NET_DSA_TAG_EDSA","NET_DSA_TAG_MTK","NET_DSA_TAG_MXL_862XX","NET_DSA_TAG_MXL_GSW1XX","NET_DSA_TAG_KSZ","NET_DSA_TAG_NETC","NET_DSA_TAG_OCELOT","NET_DSA_TAG_OCELOT_8021Q","NET_DSA_TAG_QCA","NET_DSA_TAG_RTL4_A","NET_DSA_TAG_RTL8_4","NET_DSA_TAG_RZN1_A5PSW","NET_DSA_TAG_LAN9303","NET_DSA_TAG_SJA1105","NET_DSA_TAG_TRAILER","NET_DSA_TAG_VSC73XX_8021Q","NET_DSA_TAG_XRS700X","NET_DSA_TAG_YT921X"],"series_id":"2e62e044-69c2-4487-9819-b9332e30abaa","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[4] Phase: Succeeded StartedAt: 2026-06-25 08:54:39 +0000 UTC FinishedAt: 2026-06-25 08:56:58 +0000 UTC Input: nil Output: nil --------- Name: series-workflow745ml[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f34c6b3a3c3d98f34918e1d2ea846a5acccac6d1","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_DSA","NET_DSA_LOOP","NET_DSA_TAG_AR9331","NET_DSA_TAG_BRCM","NET_DSA_TAG_BRCM_LEGACY","NET_DSA_TAG_BRCM_PREPEND","NET_DSA_TAG_HELLCREEK","NET_DSA_TAG_GSWIP","NET_DSA_TAG_DSA","NET_DSA_TAG_EDSA","NET_DSA_TAG_MTK","NET_DSA_TAG_MXL_862XX","NET_DSA_TAG_MXL_GSW1XX","NET_DSA_TAG_KSZ","NET_DSA_TAG_NETC","NET_DSA_TAG_OCELOT","NET_DSA_TAG_OCELOT_8021Q","NET_DSA_TAG_QCA","NET_DSA_TAG_RTL4_A","NET_DSA_TAG_RTL8_4","NET_DSA_TAG_RZN1_A5PSW","NET_DSA_TAG_LAN9303","NET_DSA_TAG_SJA1105","NET_DSA_TAG_TRAILER","NET_DSA_TAG_VSC73XX_8021Q","NET_DSA_TAG_XRS700X","NET_DSA_TAG_YT921X"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["dsa_switch_rcv","dsa_user_xmit","ar9331_tag_rcv","brcm_tag_xmit_ll","brcm_tag_rcv_ll","dsa_rcv_ll","edsa_rcv","ksz_common_rcv","ocelot_rcv","qca_tag_rcv","sja1105_rcv","trailer_rcv"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f34c6b3a3c3d98f34918e1d2ea846a5acccac6d1","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_DSA","NET_DSA_LOOP","NET_DSA_TAG_AR9331","NET_DSA_TAG_BRCM","NET_DSA_TAG_BRCM_LEGACY","NET_DSA_TAG_BRCM_PREPEND","NET_DSA_TAG_HELLCREEK","NET_DSA_TAG_GSWIP","NET_DSA_TAG_DSA","NET_DSA_TAG_EDSA","NET_DSA_TAG_MTK","NET_DSA_TAG_MXL_862XX","NET_DSA_TAG_MXL_GSW1XX","NET_DSA_TAG_KSZ","NET_DSA_TAG_NETC","NET_DSA_TAG_OCELOT","NET_DSA_TAG_OCELOT_8021Q","NET_DSA_TAG_QCA","NET_DSA_TAG_RTL4_A","NET_DSA_TAG_RTL8_4","NET_DSA_TAG_RZN1_A5PSW","NET_DSA_TAG_LAN9303","NET_DSA_TAG_SJA1105","NET_DSA_TAG_TRAILER","NET_DSA_TAG_VSC73XX_8021Q","NET_DSA_TAG_XRS700X","NET_DSA_TAG_YT921X"],"series_id":"2e62e044-69c2-4487-9819-b9332e30abaa","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[4].boot-test-base Phase: Succeeded StartedAt: 2026-06-25 08:54:39 +0000 UTC FinishedAt: 2026-06-25 08:56:49 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*e05d385b-63fc-405d-9fbd-b1635a3fe335,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-workflow745ml/series-workflow745ml-build-action-952710643/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-workflow745ml[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f34c6b3a3c3d98f34918e1d2ea846a5acccac6d1","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_DSA","NET_DSA_LOOP","NET_DSA_TAG_AR9331","NET_DSA_TAG_BRCM","NET_DSA_TAG_BRCM_LEGACY","NET_DSA_TAG_BRCM_PREPEND","NET_DSA_TAG_HELLCREEK","NET_DSA_TAG_GSWIP","NET_DSA_TAG_DSA","NET_DSA_TAG_EDSA","NET_DSA_TAG_MTK","NET_DSA_TAG_MXL_862XX","NET_DSA_TAG_MXL_GSW1XX","NET_DSA_TAG_KSZ","NET_DSA_TAG_NETC","NET_DSA_TAG_OCELOT","NET_DSA_TAG_OCELOT_8021Q","NET_DSA_TAG_QCA","NET_DSA_TAG_RTL4_A","NET_DSA_TAG_RTL8_4","NET_DSA_TAG_RZN1_A5PSW","NET_DSA_TAG_LAN9303","NET_DSA_TAG_SJA1105","NET_DSA_TAG_TRAILER","NET_DSA_TAG_VSC73XX_8021Q","NET_DSA_TAG_XRS700X","NET_DSA_TAG_YT921X"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["dsa_switch_rcv","dsa_user_xmit","ar9331_tag_rcv","brcm_tag_xmit_ll","brcm_tag_rcv_ll","dsa_rcv_ll","edsa_rcv","ksz_common_rcv","ocelot_rcv","qca_tag_rcv","sja1105_rcv","trailer_rcv"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f34c6b3a3c3d98f34918e1d2ea846a5acccac6d1","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_DSA","NET_DSA_LOOP","NET_DSA_TAG_AR9331","NET_DSA_TAG_BRCM","NET_DSA_TAG_BRCM_LEGACY","NET_DSA_TAG_BRCM_PREPEND","NET_DSA_TAG_HELLCREEK","NET_DSA_TAG_GSWIP","NET_DSA_TAG_DSA","NET_DSA_TAG_EDSA","NET_DSA_TAG_MTK","NET_DSA_TAG_MXL_862XX","NET_DSA_TAG_MXL_GSW1XX","NET_DSA_TAG_KSZ","NET_DSA_TAG_NETC","NET_DSA_TAG_OCELOT","NET_DSA_TAG_OCELOT_8021Q","NET_DSA_TAG_QCA","NET_DSA_TAG_RTL4_A","NET_DSA_TAG_RTL8_4","NET_DSA_TAG_RZN1_A5PSW","NET_DSA_TAG_LAN9303","NET_DSA_TAG_SJA1105","NET_DSA_TAG_TRAILER","NET_DSA_TAG_VSC73XX_8021Q","NET_DSA_TAG_XRS700X","NET_DSA_TAG_YT921X"],"series_id":"2e62e044-69c2-4487-9819-b9332e30abaa","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[5] Phase: Succeeded StartedAt: 2026-06-25 08:56:58 +0000 UTC FinishedAt: 2026-06-25 08:56:58 +0000 UTC Input: nil Output: nil --------- Name: series-workflow745ml[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f34c6b3a3c3d98f34918e1d2ea846a5acccac6d1","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_DSA","NET_DSA_LOOP","NET_DSA_TAG_AR9331","NET_DSA_TAG_BRCM","NET_DSA_TAG_BRCM_LEGACY","NET_DSA_TAG_BRCM_PREPEND","NET_DSA_TAG_HELLCREEK","NET_DSA_TAG_GSWIP","NET_DSA_TAG_DSA","NET_DSA_TAG_EDSA","NET_DSA_TAG_MTK","NET_DSA_TAG_MXL_862XX","NET_DSA_TAG_MXL_GSW1XX","NET_DSA_TAG_KSZ","NET_DSA_TAG_NETC","NET_DSA_TAG_OCELOT","NET_DSA_TAG_OCELOT_8021Q","NET_DSA_TAG_QCA","NET_DSA_TAG_RTL4_A","NET_DSA_TAG_RTL8_4","NET_DSA_TAG_RZN1_A5PSW","NET_DSA_TAG_LAN9303","NET_DSA_TAG_SJA1105","NET_DSA_TAG_TRAILER","NET_DSA_TAG_VSC73XX_8021Q","NET_DSA_TAG_XRS700X","NET_DSA_TAG_YT921X"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["dsa_switch_rcv","dsa_user_xmit","ar9331_tag_rcv","brcm_tag_xmit_ll","brcm_tag_rcv_ll","dsa_rcv_ll","edsa_rcv","ksz_common_rcv","ocelot_rcv","qca_tag_rcv","sja1105_rcv","trailer_rcv"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f34c6b3a3c3d98f34918e1d2ea846a5acccac6d1","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_DSA","NET_DSA_LOOP","NET_DSA_TAG_AR9331","NET_DSA_TAG_BRCM","NET_DSA_TAG_BRCM_LEGACY","NET_DSA_TAG_BRCM_PREPEND","NET_DSA_TAG_HELLCREEK","NET_DSA_TAG_GSWIP","NET_DSA_TAG_DSA","NET_DSA_TAG_EDSA","NET_DSA_TAG_MTK","NET_DSA_TAG_MXL_862XX","NET_DSA_TAG_MXL_GSW1XX","NET_DSA_TAG_KSZ","NET_DSA_TAG_NETC","NET_DSA_TAG_OCELOT","NET_DSA_TAG_OCELOT_8021Q","NET_DSA_TAG_QCA","NET_DSA_TAG_RTL4_A","NET_DSA_TAG_RTL8_4","NET_DSA_TAG_RZN1_A5PSW","NET_DSA_TAG_LAN9303","NET_DSA_TAG_SJA1105","NET_DSA_TAG_TRAILER","NET_DSA_TAG_VSC73XX_8021Q","NET_DSA_TAG_XRS700X","NET_DSA_TAG_YT921X"],"series_id":"2e62e044-69c2-4487-9819-b9332e30abaa","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[5].abort-if-base-boot-failed Phase: Skipped StartedAt: 2026-06-25 08:56:58 +0000 UTC FinishedAt: 2026-06-25 08:56:58 +0000 UTC Input: nil Output: nil --------- Name: series-workflow745ml[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f34c6b3a3c3d98f34918e1d2ea846a5acccac6d1","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_DSA","NET_DSA_LOOP","NET_DSA_TAG_AR9331","NET_DSA_TAG_BRCM","NET_DSA_TAG_BRCM_LEGACY","NET_DSA_TAG_BRCM_PREPEND","NET_DSA_TAG_HELLCREEK","NET_DSA_TAG_GSWIP","NET_DSA_TAG_DSA","NET_DSA_TAG_EDSA","NET_DSA_TAG_MTK","NET_DSA_TAG_MXL_862XX","NET_DSA_TAG_MXL_GSW1XX","NET_DSA_TAG_KSZ","NET_DSA_TAG_NETC","NET_DSA_TAG_OCELOT","NET_DSA_TAG_OCELOT_8021Q","NET_DSA_TAG_QCA","NET_DSA_TAG_RTL4_A","NET_DSA_TAG_RTL8_4","NET_DSA_TAG_RZN1_A5PSW","NET_DSA_TAG_LAN9303","NET_DSA_TAG_SJA1105","NET_DSA_TAG_TRAILER","NET_DSA_TAG_VSC73XX_8021Q","NET_DSA_TAG_XRS700X","NET_DSA_TAG_YT921X"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["dsa_switch_rcv","dsa_user_xmit","ar9331_tag_rcv","brcm_tag_xmit_ll","brcm_tag_rcv_ll","dsa_rcv_ll","edsa_rcv","ksz_common_rcv","ocelot_rcv","qca_tag_rcv","sja1105_rcv","trailer_rcv"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f34c6b3a3c3d98f34918e1d2ea846a5acccac6d1","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_DSA","NET_DSA_LOOP","NET_DSA_TAG_AR9331","NET_DSA_TAG_BRCM","NET_DSA_TAG_BRCM_LEGACY","NET_DSA_TAG_BRCM_PREPEND","NET_DSA_TAG_HELLCREEK","NET_DSA_TAG_GSWIP","NET_DSA_TAG_DSA","NET_DSA_TAG_EDSA","NET_DSA_TAG_MTK","NET_DSA_TAG_MXL_862XX","NET_DSA_TAG_MXL_GSW1XX","NET_DSA_TAG_KSZ","NET_DSA_TAG_NETC","NET_DSA_TAG_OCELOT","NET_DSA_TAG_OCELOT_8021Q","NET_DSA_TAG_QCA","NET_DSA_TAG_RTL4_A","NET_DSA_TAG_RTL8_4","NET_DSA_TAG_RZN1_A5PSW","NET_DSA_TAG_LAN9303","NET_DSA_TAG_SJA1105","NET_DSA_TAG_TRAILER","NET_DSA_TAG_VSC73XX_8021Q","NET_DSA_TAG_XRS700X","NET_DSA_TAG_YT921X"],"series_id":"2e62e044-69c2-4487-9819-b9332e30abaa","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[6] Phase: Succeeded StartedAt: 2026-06-25 08:56:58 +0000 UTC FinishedAt: 2026-06-25 09:27:03 +0000 UTC Input: nil Output: nil --------- Name: series-workflow745ml[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f34c6b3a3c3d98f34918e1d2ea846a5acccac6d1","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_DSA","NET_DSA_LOOP","NET_DSA_TAG_AR9331","NET_DSA_TAG_BRCM","NET_DSA_TAG_BRCM_LEGACY","NET_DSA_TAG_BRCM_PREPEND","NET_DSA_TAG_HELLCREEK","NET_DSA_TAG_GSWIP","NET_DSA_TAG_DSA","NET_DSA_TAG_EDSA","NET_DSA_TAG_MTK","NET_DSA_TAG_MXL_862XX","NET_DSA_TAG_MXL_GSW1XX","NET_DSA_TAG_KSZ","NET_DSA_TAG_NETC","NET_DSA_TAG_OCELOT","NET_DSA_TAG_OCELOT_8021Q","NET_DSA_TAG_QCA","NET_DSA_TAG_RTL4_A","NET_DSA_TAG_RTL8_4","NET_DSA_TAG_RZN1_A5PSW","NET_DSA_TAG_LAN9303","NET_DSA_TAG_SJA1105","NET_DSA_TAG_TRAILER","NET_DSA_TAG_VSC73XX_8021Q","NET_DSA_TAG_XRS700X","NET_DSA_TAG_YT921X"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["dsa_switch_rcv","dsa_user_xmit","ar9331_tag_rcv","brcm_tag_xmit_ll","brcm_tag_rcv_ll","dsa_rcv_ll","edsa_rcv","ksz_common_rcv","ocelot_rcv","qca_tag_rcv","sja1105_rcv","trailer_rcv"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f34c6b3a3c3d98f34918e1d2ea846a5acccac6d1","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_DSA","NET_DSA_LOOP","NET_DSA_TAG_AR9331","NET_DSA_TAG_BRCM","NET_DSA_TAG_BRCM_LEGACY","NET_DSA_TAG_BRCM_PREPEND","NET_DSA_TAG_HELLCREEK","NET_DSA_TAG_GSWIP","NET_DSA_TAG_DSA","NET_DSA_TAG_EDSA","NET_DSA_TAG_MTK","NET_DSA_TAG_MXL_862XX","NET_DSA_TAG_MXL_GSW1XX","NET_DSA_TAG_KSZ","NET_DSA_TAG_NETC","NET_DSA_TAG_OCELOT","NET_DSA_TAG_OCELOT_8021Q","NET_DSA_TAG_QCA","NET_DSA_TAG_RTL4_A","NET_DSA_TAG_RTL8_4","NET_DSA_TAG_RZN1_A5PSW","NET_DSA_TAG_LAN9303","NET_DSA_TAG_SJA1105","NET_DSA_TAG_TRAILER","NET_DSA_TAG_VSC73XX_8021Q","NET_DSA_TAG_XRS700X","NET_DSA_TAG_YT921X"],"series_id":"2e62e044-69c2-4487-9819-b9332e30abaa","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[6].patched-build Phase: Succeeded StartedAt: 2026-06-25 08:56:58 +0000 UTC FinishedAt: 2026-06-25 09:27:03 +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:*f55d633d-5833-40ff-a5d8-34b165ec8199,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-workflow745ml/series-workflow745ml-convert-artifact-568317208/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": "f22c5629-3620-4b08-9986-1e9cd594630e", "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-workflow745ml/series-workflow745ml-build-action-3126013316/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow745ml[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f34c6b3a3c3d98f34918e1d2ea846a5acccac6d1","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_DSA","NET_DSA_LOOP","NET_DSA_TAG_AR9331","NET_DSA_TAG_BRCM","NET_DSA_TAG_BRCM_LEGACY","NET_DSA_TAG_BRCM_PREPEND","NET_DSA_TAG_HELLCREEK","NET_DSA_TAG_GSWIP","NET_DSA_TAG_DSA","NET_DSA_TAG_EDSA","NET_DSA_TAG_MTK","NET_DSA_TAG_MXL_862XX","NET_DSA_TAG_MXL_GSW1XX","NET_DSA_TAG_KSZ","NET_DSA_TAG_NETC","NET_DSA_TAG_OCELOT","NET_DSA_TAG_OCELOT_8021Q","NET_DSA_TAG_QCA","NET_DSA_TAG_RTL4_A","NET_DSA_TAG_RTL8_4","NET_DSA_TAG_RZN1_A5PSW","NET_DSA_TAG_LAN9303","NET_DSA_TAG_SJA1105","NET_DSA_TAG_TRAILER","NET_DSA_TAG_VSC73XX_8021Q","NET_DSA_TAG_XRS700X","NET_DSA_TAG_YT921X"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["dsa_switch_rcv","dsa_user_xmit","ar9331_tag_rcv","brcm_tag_xmit_ll","brcm_tag_rcv_ll","dsa_rcv_ll","edsa_rcv","ksz_common_rcv","ocelot_rcv","qca_tag_rcv","sja1105_rcv","trailer_rcv"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f34c6b3a3c3d98f34918e1d2ea846a5acccac6d1","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_DSA","NET_DSA_LOOP","NET_DSA_TAG_AR9331","NET_DSA_TAG_BRCM","NET_DSA_TAG_BRCM_LEGACY","NET_DSA_TAG_BRCM_PREPEND","NET_DSA_TAG_HELLCREEK","NET_DSA_TAG_GSWIP","NET_DSA_TAG_DSA","NET_DSA_TAG_EDSA","NET_DSA_TAG_MTK","NET_DSA_TAG_MXL_862XX","NET_DSA_TAG_MXL_GSW1XX","NET_DSA_TAG_KSZ","NET_DSA_TAG_NETC","NET_DSA_TAG_OCELOT","NET_DSA_TAG_OCELOT_8021Q","NET_DSA_TAG_QCA","NET_DSA_TAG_RTL4_A","NET_DSA_TAG_RTL8_4","NET_DSA_TAG_RZN1_A5PSW","NET_DSA_TAG_LAN9303","NET_DSA_TAG_SJA1105","NET_DSA_TAG_TRAILER","NET_DSA_TAG_VSC73XX_8021Q","NET_DSA_TAG_XRS700X","NET_DSA_TAG_YT921X"],"series_id":"2e62e044-69c2-4487-9819-b9332e30abaa","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[6].patched-build(0) Phase: Succeeded StartedAt: 2026-06-25 08:56:58 +0000 UTC FinishedAt: 2026-06-25 09:26:53 +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:*f55d633d-5833-40ff-a5d8-34b165ec8199,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-workflow745ml/series-workflow745ml-convert-artifact-568317208/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": "f22c5629-3620-4b08-9986-1e9cd594630e", "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-workflow745ml/series-workflow745ml-build-action-3126013316/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow745ml[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f34c6b3a3c3d98f34918e1d2ea846a5acccac6d1","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_DSA","NET_DSA_LOOP","NET_DSA_TAG_AR9331","NET_DSA_TAG_BRCM","NET_DSA_TAG_BRCM_LEGACY","NET_DSA_TAG_BRCM_PREPEND","NET_DSA_TAG_HELLCREEK","NET_DSA_TAG_GSWIP","NET_DSA_TAG_DSA","NET_DSA_TAG_EDSA","NET_DSA_TAG_MTK","NET_DSA_TAG_MXL_862XX","NET_DSA_TAG_MXL_GSW1XX","NET_DSA_TAG_KSZ","NET_DSA_TAG_NETC","NET_DSA_TAG_OCELOT","NET_DSA_TAG_OCELOT_8021Q","NET_DSA_TAG_QCA","NET_DSA_TAG_RTL4_A","NET_DSA_TAG_RTL8_4","NET_DSA_TAG_RZN1_A5PSW","NET_DSA_TAG_LAN9303","NET_DSA_TAG_SJA1105","NET_DSA_TAG_TRAILER","NET_DSA_TAG_VSC73XX_8021Q","NET_DSA_TAG_XRS700X","NET_DSA_TAG_YT921X"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["dsa_switch_rcv","dsa_user_xmit","ar9331_tag_rcv","brcm_tag_xmit_ll","brcm_tag_rcv_ll","dsa_rcv_ll","edsa_rcv","ksz_common_rcv","ocelot_rcv","qca_tag_rcv","sja1105_rcv","trailer_rcv"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f34c6b3a3c3d98f34918e1d2ea846a5acccac6d1","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_DSA","NET_DSA_LOOP","NET_DSA_TAG_AR9331","NET_DSA_TAG_BRCM","NET_DSA_TAG_BRCM_LEGACY","NET_DSA_TAG_BRCM_PREPEND","NET_DSA_TAG_HELLCREEK","NET_DSA_TAG_GSWIP","NET_DSA_TAG_DSA","NET_DSA_TAG_EDSA","NET_DSA_TAG_MTK","NET_DSA_TAG_MXL_862XX","NET_DSA_TAG_MXL_GSW1XX","NET_DSA_TAG_KSZ","NET_DSA_TAG_NETC","NET_DSA_TAG_OCELOT","NET_DSA_TAG_OCELOT_8021Q","NET_DSA_TAG_QCA","NET_DSA_TAG_RTL4_A","NET_DSA_TAG_RTL8_4","NET_DSA_TAG_RZN1_A5PSW","NET_DSA_TAG_LAN9303","NET_DSA_TAG_SJA1105","NET_DSA_TAG_TRAILER","NET_DSA_TAG_VSC73XX_8021Q","NET_DSA_TAG_XRS700X","NET_DSA_TAG_YT921X"],"series_id":"2e62e044-69c2-4487-9819-b9332e30abaa","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[7] Phase: Succeeded StartedAt: 2026-06-25 09:27:03 +0000 UTC FinishedAt: 2026-06-25 09:27:03 +0000 UTC Input: nil Output: nil --------- Name: series-workflow745ml[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f34c6b3a3c3d98f34918e1d2ea846a5acccac6d1","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_DSA","NET_DSA_LOOP","NET_DSA_TAG_AR9331","NET_DSA_TAG_BRCM","NET_DSA_TAG_BRCM_LEGACY","NET_DSA_TAG_BRCM_PREPEND","NET_DSA_TAG_HELLCREEK","NET_DSA_TAG_GSWIP","NET_DSA_TAG_DSA","NET_DSA_TAG_EDSA","NET_DSA_TAG_MTK","NET_DSA_TAG_MXL_862XX","NET_DSA_TAG_MXL_GSW1XX","NET_DSA_TAG_KSZ","NET_DSA_TAG_NETC","NET_DSA_TAG_OCELOT","NET_DSA_TAG_OCELOT_8021Q","NET_DSA_TAG_QCA","NET_DSA_TAG_RTL4_A","NET_DSA_TAG_RTL8_4","NET_DSA_TAG_RZN1_A5PSW","NET_DSA_TAG_LAN9303","NET_DSA_TAG_SJA1105","NET_DSA_TAG_TRAILER","NET_DSA_TAG_VSC73XX_8021Q","NET_DSA_TAG_XRS700X","NET_DSA_TAG_YT921X"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["dsa_switch_rcv","dsa_user_xmit","ar9331_tag_rcv","brcm_tag_xmit_ll","brcm_tag_rcv_ll","dsa_rcv_ll","edsa_rcv","ksz_common_rcv","ocelot_rcv","qca_tag_rcv","sja1105_rcv","trailer_rcv"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f34c6b3a3c3d98f34918e1d2ea846a5acccac6d1","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_DSA","NET_DSA_LOOP","NET_DSA_TAG_AR9331","NET_DSA_TAG_BRCM","NET_DSA_TAG_BRCM_LEGACY","NET_DSA_TAG_BRCM_PREPEND","NET_DSA_TAG_HELLCREEK","NET_DSA_TAG_GSWIP","NET_DSA_TAG_DSA","NET_DSA_TAG_EDSA","NET_DSA_TAG_MTK","NET_DSA_TAG_MXL_862XX","NET_DSA_TAG_MXL_GSW1XX","NET_DSA_TAG_KSZ","NET_DSA_TAG_NETC","NET_DSA_TAG_OCELOT","NET_DSA_TAG_OCELOT_8021Q","NET_DSA_TAG_QCA","NET_DSA_TAG_RTL4_A","NET_DSA_TAG_RTL8_4","NET_DSA_TAG_RZN1_A5PSW","NET_DSA_TAG_LAN9303","NET_DSA_TAG_SJA1105","NET_DSA_TAG_TRAILER","NET_DSA_TAG_VSC73XX_8021Q","NET_DSA_TAG_XRS700X","NET_DSA_TAG_YT921X"],"series_id":"2e62e044-69c2-4487-9819-b9332e30abaa","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[7].abort-if-patched-build-failed Phase: Skipped StartedAt: 2026-06-25 09:27:03 +0000 UTC FinishedAt: 2026-06-25 09:27:03 +0000 UTC Input: nil Output: nil --------- Name: series-workflow745ml[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f34c6b3a3c3d98f34918e1d2ea846a5acccac6d1","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_DSA","NET_DSA_LOOP","NET_DSA_TAG_AR9331","NET_DSA_TAG_BRCM","NET_DSA_TAG_BRCM_LEGACY","NET_DSA_TAG_BRCM_PREPEND","NET_DSA_TAG_HELLCREEK","NET_DSA_TAG_GSWIP","NET_DSA_TAG_DSA","NET_DSA_TAG_EDSA","NET_DSA_TAG_MTK","NET_DSA_TAG_MXL_862XX","NET_DSA_TAG_MXL_GSW1XX","NET_DSA_TAG_KSZ","NET_DSA_TAG_NETC","NET_DSA_TAG_OCELOT","NET_DSA_TAG_OCELOT_8021Q","NET_DSA_TAG_QCA","NET_DSA_TAG_RTL4_A","NET_DSA_TAG_RTL8_4","NET_DSA_TAG_RZN1_A5PSW","NET_DSA_TAG_LAN9303","NET_DSA_TAG_SJA1105","NET_DSA_TAG_TRAILER","NET_DSA_TAG_VSC73XX_8021Q","NET_DSA_TAG_XRS700X","NET_DSA_TAG_YT921X"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["dsa_switch_rcv","dsa_user_xmit","ar9331_tag_rcv","brcm_tag_xmit_ll","brcm_tag_rcv_ll","dsa_rcv_ll","edsa_rcv","ksz_common_rcv","ocelot_rcv","qca_tag_rcv","sja1105_rcv","trailer_rcv"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f34c6b3a3c3d98f34918e1d2ea846a5acccac6d1","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_DSA","NET_DSA_LOOP","NET_DSA_TAG_AR9331","NET_DSA_TAG_BRCM","NET_DSA_TAG_BRCM_LEGACY","NET_DSA_TAG_BRCM_PREPEND","NET_DSA_TAG_HELLCREEK","NET_DSA_TAG_GSWIP","NET_DSA_TAG_DSA","NET_DSA_TAG_EDSA","NET_DSA_TAG_MTK","NET_DSA_TAG_MXL_862XX","NET_DSA_TAG_MXL_GSW1XX","NET_DSA_TAG_KSZ","NET_DSA_TAG_NETC","NET_DSA_TAG_OCELOT","NET_DSA_TAG_OCELOT_8021Q","NET_DSA_TAG_QCA","NET_DSA_TAG_RTL4_A","NET_DSA_TAG_RTL8_4","NET_DSA_TAG_RZN1_A5PSW","NET_DSA_TAG_LAN9303","NET_DSA_TAG_SJA1105","NET_DSA_TAG_TRAILER","NET_DSA_TAG_VSC73XX_8021Q","NET_DSA_TAG_XRS700X","NET_DSA_TAG_YT921X"],"series_id":"2e62e044-69c2-4487-9819-b9332e30abaa","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[8] Phase: Succeeded StartedAt: 2026-06-25 09:27:03 +0000 UTC FinishedAt: 2026-06-25 09:29:18 +0000 UTC Input: nil Output: nil --------- Name: series-workflow745ml[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f34c6b3a3c3d98f34918e1d2ea846a5acccac6d1","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_DSA","NET_DSA_LOOP","NET_DSA_TAG_AR9331","NET_DSA_TAG_BRCM","NET_DSA_TAG_BRCM_LEGACY","NET_DSA_TAG_BRCM_PREPEND","NET_DSA_TAG_HELLCREEK","NET_DSA_TAG_GSWIP","NET_DSA_TAG_DSA","NET_DSA_TAG_EDSA","NET_DSA_TAG_MTK","NET_DSA_TAG_MXL_862XX","NET_DSA_TAG_MXL_GSW1XX","NET_DSA_TAG_KSZ","NET_DSA_TAG_NETC","NET_DSA_TAG_OCELOT","NET_DSA_TAG_OCELOT_8021Q","NET_DSA_TAG_QCA","NET_DSA_TAG_RTL4_A","NET_DSA_TAG_RTL8_4","NET_DSA_TAG_RZN1_A5PSW","NET_DSA_TAG_LAN9303","NET_DSA_TAG_SJA1105","NET_DSA_TAG_TRAILER","NET_DSA_TAG_VSC73XX_8021Q","NET_DSA_TAG_XRS700X","NET_DSA_TAG_YT921X"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["dsa_switch_rcv","dsa_user_xmit","ar9331_tag_rcv","brcm_tag_xmit_ll","brcm_tag_rcv_ll","dsa_rcv_ll","edsa_rcv","ksz_common_rcv","ocelot_rcv","qca_tag_rcv","sja1105_rcv","trailer_rcv"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f34c6b3a3c3d98f34918e1d2ea846a5acccac6d1","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_DSA","NET_DSA_LOOP","NET_DSA_TAG_AR9331","NET_DSA_TAG_BRCM","NET_DSA_TAG_BRCM_LEGACY","NET_DSA_TAG_BRCM_PREPEND","NET_DSA_TAG_HELLCREEK","NET_DSA_TAG_GSWIP","NET_DSA_TAG_DSA","NET_DSA_TAG_EDSA","NET_DSA_TAG_MTK","NET_DSA_TAG_MXL_862XX","NET_DSA_TAG_MXL_GSW1XX","NET_DSA_TAG_KSZ","NET_DSA_TAG_NETC","NET_DSA_TAG_OCELOT","NET_DSA_TAG_OCELOT_8021Q","NET_DSA_TAG_QCA","NET_DSA_TAG_RTL4_A","NET_DSA_TAG_RTL8_4","NET_DSA_TAG_RZN1_A5PSW","NET_DSA_TAG_LAN9303","NET_DSA_TAG_SJA1105","NET_DSA_TAG_TRAILER","NET_DSA_TAG_VSC73XX_8021Q","NET_DSA_TAG_XRS700X","NET_DSA_TAG_YT921X"],"series_id":"2e62e044-69c2-4487-9819-b9332e30abaa","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[8].boot-test-patched Phase: Succeeded StartedAt: 2026-06-25 09:27:03 +0000 UTC FinishedAt: 2026-06-25 09:29:09 +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:*f22c5629-3620-4b08-9986-1e9cd594630e,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-workflow745ml/series-workflow745ml-build-action-3126013316/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-workflow745ml[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f34c6b3a3c3d98f34918e1d2ea846a5acccac6d1","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_DSA","NET_DSA_LOOP","NET_DSA_TAG_AR9331","NET_DSA_TAG_BRCM","NET_DSA_TAG_BRCM_LEGACY","NET_DSA_TAG_BRCM_PREPEND","NET_DSA_TAG_HELLCREEK","NET_DSA_TAG_GSWIP","NET_DSA_TAG_DSA","NET_DSA_TAG_EDSA","NET_DSA_TAG_MTK","NET_DSA_TAG_MXL_862XX","NET_DSA_TAG_MXL_GSW1XX","NET_DSA_TAG_KSZ","NET_DSA_TAG_NETC","NET_DSA_TAG_OCELOT","NET_DSA_TAG_OCELOT_8021Q","NET_DSA_TAG_QCA","NET_DSA_TAG_RTL4_A","NET_DSA_TAG_RTL8_4","NET_DSA_TAG_RZN1_A5PSW","NET_DSA_TAG_LAN9303","NET_DSA_TAG_SJA1105","NET_DSA_TAG_TRAILER","NET_DSA_TAG_VSC73XX_8021Q","NET_DSA_TAG_XRS700X","NET_DSA_TAG_YT921X"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["dsa_switch_rcv","dsa_user_xmit","ar9331_tag_rcv","brcm_tag_xmit_ll","brcm_tag_rcv_ll","dsa_rcv_ll","edsa_rcv","ksz_common_rcv","ocelot_rcv","qca_tag_rcv","sja1105_rcv","trailer_rcv"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f34c6b3a3c3d98f34918e1d2ea846a5acccac6d1","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_DSA","NET_DSA_LOOP","NET_DSA_TAG_AR9331","NET_DSA_TAG_BRCM","NET_DSA_TAG_BRCM_LEGACY","NET_DSA_TAG_BRCM_PREPEND","NET_DSA_TAG_HELLCREEK","NET_DSA_TAG_GSWIP","NET_DSA_TAG_DSA","NET_DSA_TAG_EDSA","NET_DSA_TAG_MTK","NET_DSA_TAG_MXL_862XX","NET_DSA_TAG_MXL_GSW1XX","NET_DSA_TAG_KSZ","NET_DSA_TAG_NETC","NET_DSA_TAG_OCELOT","NET_DSA_TAG_OCELOT_8021Q","NET_DSA_TAG_QCA","NET_DSA_TAG_RTL4_A","NET_DSA_TAG_RTL8_4","NET_DSA_TAG_RZN1_A5PSW","NET_DSA_TAG_LAN9303","NET_DSA_TAG_SJA1105","NET_DSA_TAG_TRAILER","NET_DSA_TAG_VSC73XX_8021Q","NET_DSA_TAG_XRS700X","NET_DSA_TAG_YT921X"],"series_id":"2e62e044-69c2-4487-9819-b9332e30abaa","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[10] Phase: Running StartedAt: 2026-06-25 09:29:18 +0000 UTC FinishedAt: 0001-01-01 00:00:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflow745ml[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f34c6b3a3c3d98f34918e1d2ea846a5acccac6d1","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_DSA","NET_DSA_LOOP","NET_DSA_TAG_AR9331","NET_DSA_TAG_BRCM","NET_DSA_TAG_BRCM_LEGACY","NET_DSA_TAG_BRCM_PREPEND","NET_DSA_TAG_HELLCREEK","NET_DSA_TAG_GSWIP","NET_DSA_TAG_DSA","NET_DSA_TAG_EDSA","NET_DSA_TAG_MTK","NET_DSA_TAG_MXL_862XX","NET_DSA_TAG_MXL_GSW1XX","NET_DSA_TAG_KSZ","NET_DSA_TAG_NETC","NET_DSA_TAG_OCELOT","NET_DSA_TAG_OCELOT_8021Q","NET_DSA_TAG_QCA","NET_DSA_TAG_RTL4_A","NET_DSA_TAG_RTL8_4","NET_DSA_TAG_RZN1_A5PSW","NET_DSA_TAG_LAN9303","NET_DSA_TAG_SJA1105","NET_DSA_TAG_TRAILER","NET_DSA_TAG_VSC73XX_8021Q","NET_DSA_TAG_XRS700X","NET_DSA_TAG_YT921X"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["dsa_switch_rcv","dsa_user_xmit","ar9331_tag_rcv","brcm_tag_xmit_ll","brcm_tag_rcv_ll","dsa_rcv_ll","edsa_rcv","ksz_common_rcv","ocelot_rcv","qca_tag_rcv","sja1105_rcv","trailer_rcv"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f34c6b3a3c3d98f34918e1d2ea846a5acccac6d1","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_DSA","NET_DSA_LOOP","NET_DSA_TAG_AR9331","NET_DSA_TAG_BRCM","NET_DSA_TAG_BRCM_LEGACY","NET_DSA_TAG_BRCM_PREPEND","NET_DSA_TAG_HELLCREEK","NET_DSA_TAG_GSWIP","NET_DSA_TAG_DSA","NET_DSA_TAG_EDSA","NET_DSA_TAG_MTK","NET_DSA_TAG_MXL_862XX","NET_DSA_TAG_MXL_GSW1XX","NET_DSA_TAG_KSZ","NET_DSA_TAG_NETC","NET_DSA_TAG_OCELOT","NET_DSA_TAG_OCELOT_8021Q","NET_DSA_TAG_QCA","NET_DSA_TAG_RTL4_A","NET_DSA_TAG_RTL8_4","NET_DSA_TAG_RZN1_A5PSW","NET_DSA_TAG_LAN9303","NET_DSA_TAG_SJA1105","NET_DSA_TAG_TRAILER","NET_DSA_TAG_VSC73XX_8021Q","NET_DSA_TAG_XRS700X","NET_DSA_TAG_YT921X"],"series_id":"2e62e044-69c2-4487-9819-b9332e30abaa","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[10].run-fuzz Phase: Running StartedAt: 2026-06-25 09:29:18 +0000 UTC FinishedAt: 0001-01-01 00:00:00 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:config,Default:nil,Value:*{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["dsa_switch_rcv","dsa_user_xmit","ar9331_tag_rcv","brcm_tag_xmit_ll","brcm_tag_rcv_ll","dsa_rcv_ll","edsa_rcv","ksz_common_rcv","ocelot_rcv","qca_tag_rcv","sja1105_rcv","trailer_rcv"],"skip_cover_check":false},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:track,Default:nil,Value:*KASAN,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:base-build-id,Default:nil,Value:*e05d385b-63fc-405d-9fbd-b1635a3fe335,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*f22c5629-3620-4b08-9986-1e9cd594630e,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-workflow745ml/series-workflow745ml-build-action-952710643/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-workflow745ml/series-workflow745ml-build-action-3126013316/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflow745ml[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f34c6b3a3c3d98f34918e1d2ea846a5acccac6d1","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_DSA","NET_DSA_LOOP","NET_DSA_TAG_AR9331","NET_DSA_TAG_BRCM","NET_DSA_TAG_BRCM_LEGACY","NET_DSA_TAG_BRCM_PREPEND","NET_DSA_TAG_HELLCREEK","NET_DSA_TAG_GSWIP","NET_DSA_TAG_DSA","NET_DSA_TAG_EDSA","NET_DSA_TAG_MTK","NET_DSA_TAG_MXL_862XX","NET_DSA_TAG_MXL_GSW1XX","NET_DSA_TAG_KSZ","NET_DSA_TAG_NETC","NET_DSA_TAG_OCELOT","NET_DSA_TAG_OCELOT_8021Q","NET_DSA_TAG_QCA","NET_DSA_TAG_RTL4_A","NET_DSA_TAG_RTL8_4","NET_DSA_TAG_RZN1_A5PSW","NET_DSA_TAG_LAN9303","NET_DSA_TAG_SJA1105","NET_DSA_TAG_TRAILER","NET_DSA_TAG_VSC73XX_8021Q","NET_DSA_TAG_XRS700X","NET_DSA_TAG_YT921X"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["dsa_switch_rcv","dsa_user_xmit","ar9331_tag_rcv","brcm_tag_xmit_ll","brcm_tag_rcv_ll","dsa_rcv_ll","edsa_rcv","ksz_common_rcv","ocelot_rcv","qca_tag_rcv","sja1105_rcv","trailer_rcv"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f34c6b3a3c3d98f34918e1d2ea846a5acccac6d1","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_DSA","NET_DSA_LOOP","NET_DSA_TAG_AR9331","NET_DSA_TAG_BRCM","NET_DSA_TAG_BRCM_LEGACY","NET_DSA_TAG_BRCM_PREPEND","NET_DSA_TAG_HELLCREEK","NET_DSA_TAG_GSWIP","NET_DSA_TAG_DSA","NET_DSA_TAG_EDSA","NET_DSA_TAG_MTK","NET_DSA_TAG_MXL_862XX","NET_DSA_TAG_MXL_GSW1XX","NET_DSA_TAG_KSZ","NET_DSA_TAG_NETC","NET_DSA_TAG_OCELOT","NET_DSA_TAG_OCELOT_8021Q","NET_DSA_TAG_QCA","NET_DSA_TAG_RTL4_A","NET_DSA_TAG_RTL8_4","NET_DSA_TAG_RZN1_A5PSW","NET_DSA_TAG_LAN9303","NET_DSA_TAG_SJA1105","NET_DSA_TAG_TRAILER","NET_DSA_TAG_VSC73XX_8021Q","NET_DSA_TAG_XRS700X","NET_DSA_TAG_YT921X"],"series_id":"2e62e044-69c2-4487-9819-b9332e30abaa","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[10].run-fuzz[0] Phase: Succeeded StartedAt: 2026-06-25 09:29:18 +0000 UTC FinishedAt: 2026-06-25 09:30:41 +0000 UTC Input: nil Output: nil --------- Name: series-workflow745ml[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f34c6b3a3c3d98f34918e1d2ea846a5acccac6d1","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_DSA","NET_DSA_LOOP","NET_DSA_TAG_AR9331","NET_DSA_TAG_BRCM","NET_DSA_TAG_BRCM_LEGACY","NET_DSA_TAG_BRCM_PREPEND","NET_DSA_TAG_HELLCREEK","NET_DSA_TAG_GSWIP","NET_DSA_TAG_DSA","NET_DSA_TAG_EDSA","NET_DSA_TAG_MTK","NET_DSA_TAG_MXL_862XX","NET_DSA_TAG_MXL_GSW1XX","NET_DSA_TAG_KSZ","NET_DSA_TAG_NETC","NET_DSA_TAG_OCELOT","NET_DSA_TAG_OCELOT_8021Q","NET_DSA_TAG_QCA","NET_DSA_TAG_RTL4_A","NET_DSA_TAG_RTL8_4","NET_DSA_TAG_RZN1_A5PSW","NET_DSA_TAG_LAN9303","NET_DSA_TAG_SJA1105","NET_DSA_TAG_TRAILER","NET_DSA_TAG_VSC73XX_8021Q","NET_DSA_TAG_XRS700X","NET_DSA_TAG_YT921X"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["dsa_switch_rcv","dsa_user_xmit","ar9331_tag_rcv","brcm_tag_xmit_ll","brcm_tag_rcv_ll","dsa_rcv_ll","edsa_rcv","ksz_common_rcv","ocelot_rcv","qca_tag_rcv","sja1105_rcv","trailer_rcv"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f34c6b3a3c3d98f34918e1d2ea846a5acccac6d1","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_DSA","NET_DSA_LOOP","NET_DSA_TAG_AR9331","NET_DSA_TAG_BRCM","NET_DSA_TAG_BRCM_LEGACY","NET_DSA_TAG_BRCM_PREPEND","NET_DSA_TAG_HELLCREEK","NET_DSA_TAG_GSWIP","NET_DSA_TAG_DSA","NET_DSA_TAG_EDSA","NET_DSA_TAG_MTK","NET_DSA_TAG_MXL_862XX","NET_DSA_TAG_MXL_GSW1XX","NET_DSA_TAG_KSZ","NET_DSA_TAG_NETC","NET_DSA_TAG_OCELOT","NET_DSA_TAG_OCELOT_8021Q","NET_DSA_TAG_QCA","NET_DSA_TAG_RTL4_A","NET_DSA_TAG_RTL8_4","NET_DSA_TAG_RZN1_A5PSW","NET_DSA_TAG_LAN9303","NET_DSA_TAG_SJA1105","NET_DSA_TAG_TRAILER","NET_DSA_TAG_VSC73XX_8021Q","NET_DSA_TAG_XRS700X","NET_DSA_TAG_YT921X"],"series_id":"2e62e044-69c2-4487-9819-b9332e30abaa","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[10].run-fuzz[0].save-fuzz-config Phase: Succeeded StartedAt: 2026-06-25 09:29:18 +0000 UTC FinishedAt: 2026-06-25 09:29:35 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["dsa_switch_rcv","dsa_user_xmit","ar9331_tag_rcv","brcm_tag_xmit_ll","brcm_tag_rcv_ll","dsa_rcv_ll","edsa_rcv","ksz_common_rcv","ocelot_rcv","qca_tag_rcv","sja1105_rcv","trailer_rcv"],"skip_cover_check":false},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflow745ml/series-workflow745ml-convert-artifact-625473265/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow745ml[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f34c6b3a3c3d98f34918e1d2ea846a5acccac6d1","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_DSA","NET_DSA_LOOP","NET_DSA_TAG_AR9331","NET_DSA_TAG_BRCM","NET_DSA_TAG_BRCM_LEGACY","NET_DSA_TAG_BRCM_PREPEND","NET_DSA_TAG_HELLCREEK","NET_DSA_TAG_GSWIP","NET_DSA_TAG_DSA","NET_DSA_TAG_EDSA","NET_DSA_TAG_MTK","NET_DSA_TAG_MXL_862XX","NET_DSA_TAG_MXL_GSW1XX","NET_DSA_TAG_KSZ","NET_DSA_TAG_NETC","NET_DSA_TAG_OCELOT","NET_DSA_TAG_OCELOT_8021Q","NET_DSA_TAG_QCA","NET_DSA_TAG_RTL4_A","NET_DSA_TAG_RTL8_4","NET_DSA_TAG_RZN1_A5PSW","NET_DSA_TAG_LAN9303","NET_DSA_TAG_SJA1105","NET_DSA_TAG_TRAILER","NET_DSA_TAG_VSC73XX_8021Q","NET_DSA_TAG_XRS700X","NET_DSA_TAG_YT921X"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["dsa_switch_rcv","dsa_user_xmit","ar9331_tag_rcv","brcm_tag_xmit_ll","brcm_tag_rcv_ll","dsa_rcv_ll","edsa_rcv","ksz_common_rcv","ocelot_rcv","qca_tag_rcv","sja1105_rcv","trailer_rcv"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f34c6b3a3c3d98f34918e1d2ea846a5acccac6d1","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_DSA","NET_DSA_LOOP","NET_DSA_TAG_AR9331","NET_DSA_TAG_BRCM","NET_DSA_TAG_BRCM_LEGACY","NET_DSA_TAG_BRCM_PREPEND","NET_DSA_TAG_HELLCREEK","NET_DSA_TAG_GSWIP","NET_DSA_TAG_DSA","NET_DSA_TAG_EDSA","NET_DSA_TAG_MTK","NET_DSA_TAG_MXL_862XX","NET_DSA_TAG_MXL_GSW1XX","NET_DSA_TAG_KSZ","NET_DSA_TAG_NETC","NET_DSA_TAG_OCELOT","NET_DSA_TAG_OCELOT_8021Q","NET_DSA_TAG_QCA","NET_DSA_TAG_RTL4_A","NET_DSA_TAG_RTL8_4","NET_DSA_TAG_RZN1_A5PSW","NET_DSA_TAG_LAN9303","NET_DSA_TAG_SJA1105","NET_DSA_TAG_TRAILER","NET_DSA_TAG_VSC73XX_8021Q","NET_DSA_TAG_XRS700X","NET_DSA_TAG_YT921X"],"series_id":"2e62e044-69c2-4487-9819-b9332e30abaa","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[10].run-retest Phase: Skipped StartedAt: 2026-06-25 09:29:18 +0000 UTC FinishedAt: 2026-06-25 09:29:18 +0000 UTC Input: nil Output: nil --------- Name: series-workflow745ml[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f34c6b3a3c3d98f34918e1d2ea846a5acccac6d1","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_DSA","NET_DSA_LOOP","NET_DSA_TAG_AR9331","NET_DSA_TAG_BRCM","NET_DSA_TAG_BRCM_LEGACY","NET_DSA_TAG_BRCM_PREPEND","NET_DSA_TAG_HELLCREEK","NET_DSA_TAG_GSWIP","NET_DSA_TAG_DSA","NET_DSA_TAG_EDSA","NET_DSA_TAG_MTK","NET_DSA_TAG_MXL_862XX","NET_DSA_TAG_MXL_GSW1XX","NET_DSA_TAG_KSZ","NET_DSA_TAG_NETC","NET_DSA_TAG_OCELOT","NET_DSA_TAG_OCELOT_8021Q","NET_DSA_TAG_QCA","NET_DSA_TAG_RTL4_A","NET_DSA_TAG_RTL8_4","NET_DSA_TAG_RZN1_A5PSW","NET_DSA_TAG_LAN9303","NET_DSA_TAG_SJA1105","NET_DSA_TAG_TRAILER","NET_DSA_TAG_VSC73XX_8021Q","NET_DSA_TAG_XRS700X","NET_DSA_TAG_YT921X"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["dsa_switch_rcv","dsa_user_xmit","ar9331_tag_rcv","brcm_tag_xmit_ll","brcm_tag_rcv_ll","dsa_rcv_ll","edsa_rcv","ksz_common_rcv","ocelot_rcv","qca_tag_rcv","sja1105_rcv","trailer_rcv"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f34c6b3a3c3d98f34918e1d2ea846a5acccac6d1","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_DSA","NET_DSA_LOOP","NET_DSA_TAG_AR9331","NET_DSA_TAG_BRCM","NET_DSA_TAG_BRCM_LEGACY","NET_DSA_TAG_BRCM_PREPEND","NET_DSA_TAG_HELLCREEK","NET_DSA_TAG_GSWIP","NET_DSA_TAG_DSA","NET_DSA_TAG_EDSA","NET_DSA_TAG_MTK","NET_DSA_TAG_MXL_862XX","NET_DSA_TAG_MXL_GSW1XX","NET_DSA_TAG_KSZ","NET_DSA_TAG_NETC","NET_DSA_TAG_OCELOT","NET_DSA_TAG_OCELOT_8021Q","NET_DSA_TAG_QCA","NET_DSA_TAG_RTL4_A","NET_DSA_TAG_RTL8_4","NET_DSA_TAG_RZN1_A5PSW","NET_DSA_TAG_LAN9303","NET_DSA_TAG_SJA1105","NET_DSA_TAG_TRAILER","NET_DSA_TAG_VSC73XX_8021Q","NET_DSA_TAG_XRS700X","NET_DSA_TAG_YT921X"],"series_id":"2e62e044-69c2-4487-9819-b9332e30abaa","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[9] Phase: Succeeded StartedAt: 2026-06-25 09:29:18 +0000 UTC FinishedAt: 2026-06-25 09:29:18 +0000 UTC Input: nil Output: nil --------- Name: series-workflow745ml[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f34c6b3a3c3d98f34918e1d2ea846a5acccac6d1","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_DSA","NET_DSA_LOOP","NET_DSA_TAG_AR9331","NET_DSA_TAG_BRCM","NET_DSA_TAG_BRCM_LEGACY","NET_DSA_TAG_BRCM_PREPEND","NET_DSA_TAG_HELLCREEK","NET_DSA_TAG_GSWIP","NET_DSA_TAG_DSA","NET_DSA_TAG_EDSA","NET_DSA_TAG_MTK","NET_DSA_TAG_MXL_862XX","NET_DSA_TAG_MXL_GSW1XX","NET_DSA_TAG_KSZ","NET_DSA_TAG_NETC","NET_DSA_TAG_OCELOT","NET_DSA_TAG_OCELOT_8021Q","NET_DSA_TAG_QCA","NET_DSA_TAG_RTL4_A","NET_DSA_TAG_RTL8_4","NET_DSA_TAG_RZN1_A5PSW","NET_DSA_TAG_LAN9303","NET_DSA_TAG_SJA1105","NET_DSA_TAG_TRAILER","NET_DSA_TAG_VSC73XX_8021Q","NET_DSA_TAG_XRS700X","NET_DSA_TAG_YT921X"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["dsa_switch_rcv","dsa_user_xmit","ar9331_tag_rcv","brcm_tag_xmit_ll","brcm_tag_rcv_ll","dsa_rcv_ll","edsa_rcv","ksz_common_rcv","ocelot_rcv","qca_tag_rcv","sja1105_rcv","trailer_rcv"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f34c6b3a3c3d98f34918e1d2ea846a5acccac6d1","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_DSA","NET_DSA_LOOP","NET_DSA_TAG_AR9331","NET_DSA_TAG_BRCM","NET_DSA_TAG_BRCM_LEGACY","NET_DSA_TAG_BRCM_PREPEND","NET_DSA_TAG_HELLCREEK","NET_DSA_TAG_GSWIP","NET_DSA_TAG_DSA","NET_DSA_TAG_EDSA","NET_DSA_TAG_MTK","NET_DSA_TAG_MXL_862XX","NET_DSA_TAG_MXL_GSW1XX","NET_DSA_TAG_KSZ","NET_DSA_TAG_NETC","NET_DSA_TAG_OCELOT","NET_DSA_TAG_OCELOT_8021Q","NET_DSA_TAG_QCA","NET_DSA_TAG_RTL4_A","NET_DSA_TAG_RTL8_4","NET_DSA_TAG_RZN1_A5PSW","NET_DSA_TAG_LAN9303","NET_DSA_TAG_SJA1105","NET_DSA_TAG_TRAILER","NET_DSA_TAG_VSC73XX_8021Q","NET_DSA_TAG_XRS700X","NET_DSA_TAG_YT921X"],"series_id":"2e62e044-69c2-4487-9819-b9332e30abaa","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[9].abort-if-patched-boot-failed Phase: Skipped StartedAt: 2026-06-25 09:29:18 +0000 UTC FinishedAt: 2026-06-25 09:29:18 +0000 UTC Input: nil Output: nil --------- Name: series-workflow745ml[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f34c6b3a3c3d98f34918e1d2ea846a5acccac6d1","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_DSA","NET_DSA_LOOP","NET_DSA_TAG_AR9331","NET_DSA_TAG_BRCM","NET_DSA_TAG_BRCM_LEGACY","NET_DSA_TAG_BRCM_PREPEND","NET_DSA_TAG_HELLCREEK","NET_DSA_TAG_GSWIP","NET_DSA_TAG_DSA","NET_DSA_TAG_EDSA","NET_DSA_TAG_MTK","NET_DSA_TAG_MXL_862XX","NET_DSA_TAG_MXL_GSW1XX","NET_DSA_TAG_KSZ","NET_DSA_TAG_NETC","NET_DSA_TAG_OCELOT","NET_DSA_TAG_OCELOT_8021Q","NET_DSA_TAG_QCA","NET_DSA_TAG_RTL4_A","NET_DSA_TAG_RTL8_4","NET_DSA_TAG_RZN1_A5PSW","NET_DSA_TAG_LAN9303","NET_DSA_TAG_SJA1105","NET_DSA_TAG_TRAILER","NET_DSA_TAG_VSC73XX_8021Q","NET_DSA_TAG_XRS700X","NET_DSA_TAG_YT921X"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["dsa_switch_rcv","dsa_user_xmit","ar9331_tag_rcv","brcm_tag_xmit_ll","brcm_tag_rcv_ll","dsa_rcv_ll","edsa_rcv","ksz_common_rcv","ocelot_rcv","qca_tag_rcv","sja1105_rcv","trailer_rcv"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f34c6b3a3c3d98f34918e1d2ea846a5acccac6d1","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_DSA","NET_DSA_LOOP","NET_DSA_TAG_AR9331","NET_DSA_TAG_BRCM","NET_DSA_TAG_BRCM_LEGACY","NET_DSA_TAG_BRCM_PREPEND","NET_DSA_TAG_HELLCREEK","NET_DSA_TAG_GSWIP","NET_DSA_TAG_DSA","NET_DSA_TAG_EDSA","NET_DSA_TAG_MTK","NET_DSA_TAG_MXL_862XX","NET_DSA_TAG_MXL_GSW1XX","NET_DSA_TAG_KSZ","NET_DSA_TAG_NETC","NET_DSA_TAG_OCELOT","NET_DSA_TAG_OCELOT_8021Q","NET_DSA_TAG_QCA","NET_DSA_TAG_RTL4_A","NET_DSA_TAG_RTL8_4","NET_DSA_TAG_RZN1_A5PSW","NET_DSA_TAG_LAN9303","NET_DSA_TAG_SJA1105","NET_DSA_TAG_TRAILER","NET_DSA_TAG_VSC73XX_8021Q","NET_DSA_TAG_XRS700X","NET_DSA_TAG_YT921X"],"series_id":"2e62e044-69c2-4487-9819-b9332e30abaa","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[10].run-fuzz[1] Phase: Running StartedAt: 2026-06-25 09:30:41 +0000 UTC FinishedAt: 0001-01-01 00:00:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflow745ml[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f34c6b3a3c3d98f34918e1d2ea846a5acccac6d1","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_DSA","NET_DSA_LOOP","NET_DSA_TAG_AR9331","NET_DSA_TAG_BRCM","NET_DSA_TAG_BRCM_LEGACY","NET_DSA_TAG_BRCM_PREPEND","NET_DSA_TAG_HELLCREEK","NET_DSA_TAG_GSWIP","NET_DSA_TAG_DSA","NET_DSA_TAG_EDSA","NET_DSA_TAG_MTK","NET_DSA_TAG_MXL_862XX","NET_DSA_TAG_MXL_GSW1XX","NET_DSA_TAG_KSZ","NET_DSA_TAG_NETC","NET_DSA_TAG_OCELOT","NET_DSA_TAG_OCELOT_8021Q","NET_DSA_TAG_QCA","NET_DSA_TAG_RTL4_A","NET_DSA_TAG_RTL8_4","NET_DSA_TAG_RZN1_A5PSW","NET_DSA_TAG_LAN9303","NET_DSA_TAG_SJA1105","NET_DSA_TAG_TRAILER","NET_DSA_TAG_VSC73XX_8021Q","NET_DSA_TAG_XRS700X","NET_DSA_TAG_YT921X"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["dsa_switch_rcv","dsa_user_xmit","ar9331_tag_rcv","brcm_tag_xmit_ll","brcm_tag_rcv_ll","dsa_rcv_ll","edsa_rcv","ksz_common_rcv","ocelot_rcv","qca_tag_rcv","sja1105_rcv","trailer_rcv"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f34c6b3a3c3d98f34918e1d2ea846a5acccac6d1","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_DSA","NET_DSA_LOOP","NET_DSA_TAG_AR9331","NET_DSA_TAG_BRCM","NET_DSA_TAG_BRCM_LEGACY","NET_DSA_TAG_BRCM_PREPEND","NET_DSA_TAG_HELLCREEK","NET_DSA_TAG_GSWIP","NET_DSA_TAG_DSA","NET_DSA_TAG_EDSA","NET_DSA_TAG_MTK","NET_DSA_TAG_MXL_862XX","NET_DSA_TAG_MXL_GSW1XX","NET_DSA_TAG_KSZ","NET_DSA_TAG_NETC","NET_DSA_TAG_OCELOT","NET_DSA_TAG_OCELOT_8021Q","NET_DSA_TAG_QCA","NET_DSA_TAG_RTL4_A","NET_DSA_TAG_RTL8_4","NET_DSA_TAG_RZN1_A5PSW","NET_DSA_TAG_LAN9303","NET_DSA_TAG_SJA1105","NET_DSA_TAG_TRAILER","NET_DSA_TAG_VSC73XX_8021Q","NET_DSA_TAG_XRS700X","NET_DSA_TAG_YT921X"],"series_id":"2e62e044-69c2-4487-9819-b9332e30abaa","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[10].run-fuzz[1].fuzz Phase: Running StartedAt: 2026-06-25 09:30:41 +0000 UTC FinishedAt: 0001-01-01 00:00:00 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*e05d385b-63fc-405d-9fbd-b1635a3fe335,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*f22c5629-3620-4b08-9986-1e9cd594630e,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-workflow745ml/series-workflow745ml-build-action-952710643/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-workflow745ml/series-workflow745ml-build-action-3126013316/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-workflow745ml/series-workflow745ml-convert-artifact-625473265/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil