Name: series-workflowrqb6m Phase: Succeeded StartedAt: 2026-09-07 04:42:01 +0000 UTC FinishedAt: 2026-09-07 06:44:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrqb6m[0] Phase: Succeeded StartedAt: 2026-09-07 04:42:01 +0000 UTC FinishedAt: 2026-09-07 05:06:59 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrqb6m[0].run-triage Phase: Succeeded StartedAt: 2026-09-07 04:42:01 +0000 UTC FinishedAt: 2026-09-07 05:06:59 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "net-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git", "commit_hash": "31f961de2f90fbf52eb2d4e15b3eeaa09f9b4fc2", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "MM81X", "MM81X_USB", "WLAN_VENDOR_MORSEMICRO", "MAC80211", "USB" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "net-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git", "commit_hash": "31f961de2f90fbf52eb2d4e15b3eeaa09f9b4fc2", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "MM81X", "MM81X_USB", "WLAN_VENDOR_MORSEMICRO", "MAC80211", "USB" ], "series_id": "b7c3a4a7-ca7c-479a-96a2-19f2cdc7dcec" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "mm81x_cmd_resp_process" ], "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+CgkJCTx0ZD4yMDI2LzA5LzA3IDA1OjA0PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+Mm08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O01NODFYJiMzNDssCiAgICAmIzM0O01NODFYX1VTQiYjMzQ7LAogICAgJiMzNDtXTEFOX1ZFTkRPUl9NT1JTRU1JQ1JPJiMzNDssCiAgICAmIzM0O01BQzgwMjExJiMzNDssCiAgICAmIzM0O1VTQiYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O21tODF4X2NtZF9yZXNwX3Byb2Nlc3MmIzM0OwogIF0sCiAgJiMzNDtLTVNBTlJlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmaXhlcyBhbiBvdXQtb2YtYm91bmRzIG1lbW9yeSByZWFkIGluIG1tODF4X2NtZF9yZXNwX3Byb2Nlc3MoKSBieSBjYXBwaW5nIHRoZSByZXNwb25zZSBjb3B5IGxlbmd0aCB0byBza2ItXHUwMDNlbGVuIChwcmV2ZW50aW5nIG1lbWNweSBmcm9tIHJlYWRpbmcgcGFzdCB0aGUgZW5kIG9mIHRoZSByZWNlaXZlZCBza2IgYnVmZmVyIGlmIHRoZSByZXNwb25zZSBoZWFkZXIgbGVuZ3RoIGNsYWltcyBhIGxhcmdlciBzaXplKS4gVGhpcyBpc3N1ZSBpcyBhIGNsYXNzaWMgYnVmZmVyIG91dC1vZi1ib3VuZHMgcmVhZCB3aGljaCBpcyBkaXJlY3RseSBkZXRlY3RlZCBieSBLQVNBTi4gVGhlIHBhdGNoIGRvZXMgbm90IGludHJvZHVjZSBhbnkgdW5pbml0aWFsaXplZCBtZW1vcnkgYWxsb2NhdGlvbnMsIGNvbmRpdGlvbmFsIGJyYW5jaGVzIGJhc2VkIG9uIHVuaW5pdGlhbGl6ZWQgZGF0YSwgb3Iga2VybmVsLXRvLXVzZXIgaW5mby1sZWFrcy4gVGhlcmVmb3JlLCBzdGFuZGFyZCBLQVNBTiBmdXp6aW5nIGlzIHN1ZmZpY2llbnQgYW5kIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIGlzIG5vdCB3YXJyYW50ZWQuJiMzNDssCiAgJiMzNDtOZWVkc0tNU0FOJiMzNDs6IGZhbHNlLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGFkZHMgYSBib3VuZHMgY2hlY2sgYWdhaW5zdCBza2ItXHUwMDNlbGVuIGluIG1tODF4X2NtZF9yZXNwX3Byb2Nlc3MoKSB0byBwcmV2ZW50IGFuIG91dC1vZi1ib3VuZHMgcmVhZCBkdXJpbmcgbWVtY3B5IHdoZW4gcHJvY2Vzc2luZyBjb21tYW5kIHJlc3BvbnNlcyBpbiB0aGUgTW9yc2UgTWljcm8gTU04MXggd2lyZWxlc3MgZHJpdmVyLiBUaGlzIGRyaXZlciBzdXBwb3J0cyBVU0IgZGV2aWNlcyBhbmQgaXMgcmVhY2hhYmxlIGluIGZ1enppbmcgZW52aXJvbm1lbnRzIHdpdGggVVNCIGVtdWxhdGlvbiAoZS5nLiBSYXcgR2FkZ2V0IC8gZHVtbXlfaGNkKS4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNyAwNTowNDwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IDU3OTA1ZmE3ZTM2NTFlZjkzZmU4OTY3NDMzMDBhMTkwZGYwMzlkMDVcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgTW9uIFNlcCA3IDA1OjA0OjMxIDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29tbWFuZC5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb21tYW5kLmNcbmluZGV4IGFmYjdlZTliYjIzNmYuLjU5MWU1YmExMDc1MzMgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb21tYW5kLmNcbkBAIC0yMDksNiAmIzQzOzIwOSw3IEBAIGludCBtbTgxeF9jbWRfcmVzcF9wcm9jZXNzKHN0cnVjdCBtbTgxeCAqbW9ycywgc3RydWN0IHNrX2J1ZmYgKnNrYilcbiBcdFx0bGVuZ3RoID0gbWluX3QoaW50LCBsZW5ndGgsXG4gXHRcdFx0ICAgICAgIGxlMTZfdG9fY3B1KHNyY19yZXNwLVx1MDAzZWhkci5sZW4pICYjNDM7XG4gXHRcdFx0XHQgICAgICAgc2l6ZW9mKHN0cnVjdCBob3N0X2NtZF9oZWFkZXIpKTtcbiYjNDM7XHRcdGxlbmd0aCA9IG1pbl90KGludCwgbGVuZ3RoLCBza2ItXHUwMDNlbGVuKTtcbiBcdFx0bWVtY3B5KGRlc3RfcmVzcCwgc3JjX3Jlc3AsIGxlbmd0aCk7XG4gXHR9IGVsc2Uge1xuIFx0XHRyZXQgPSBsZTMyX3RvX2NwdShzcmNfcmVzcC1cdTAwM2VzdGF0dXMpO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA3IDA1OjA0PC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjFtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmNvcmU8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O01NODFYJiMzNDssCiAgICAmIzM0O01NODFYX1VTQiYjMzQ7LAogICAgJiMzNDtXTEFOX1ZFTkRPUl9NT1JTRU1JQ1JPJiMzNDssCiAgICAmIzM0O01BQzgwMjExJiMzNDssCiAgICAmIzM0O1VTQiYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O21tODF4X2NtZF9yZXNwX3Byb2Nlc3MmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggYWRkcyBhIGJvdW5kcyBjaGVjayBhZ2FpbnN0IHNrYi1cdTAwM2VsZW4gaW4gbW04MXhfY21kX3Jlc3BfcHJvY2VzcygpIHRvIHByZXZlbnQgYW4gb3V0LW9mLWJvdW5kcyByZWFkIGR1cmluZyBtZW1jcHkgd2hlbiBwcm9jZXNzaW5nIGNvbW1hbmQgcmVzcG9uc2VzIGluIHRoZSBNb3JzZSBNaWNybyBNTTgxeCB3aXJlbGVzcyBkcml2ZXIuIFRoaXMgZHJpdmVyIHN1cHBvcnRzIFVTQiBkZXZpY2VzIGFuZCBpcyByZWFjaGFibGUgaW4gZnV6emluZyBlbnZpcm9ubWVudHMgd2l0aCBVU0IgZW11bGF0aW9uIChlLmcuIFJhdyBHYWRnZXQgLyBkdW1teV9oY2QpLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lciBhbmQgc2VjdXJpdHkgZW5naW5lZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZXZhbHVhdGUgd2hldGhlciBpdCB3YXJyYW50cyBmdXp6aW5nIHdpdGggc3l6a2FsbGVyLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiBpbnRlcm5hbCBhc3N1bXB0aW9ucy4gWW91IG11c3QgYWN0aXZlbHkgdXNlIHlvdXIgY29kZSBhY2Nlc3MKdG9vbHMgdG8gaW5zcGVjdCB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlLCBjYWxsZXJzLCBhbmQgc3Vycm91bmRpbmcgY29udGV4dC4KCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CjEuIENPUkUgVFJJQUdFIFBISUxPU09QSFkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KVGhlIGdvYWwgb2YgcGF0Y2ggZnV6emluZyBpcyB0byBkaXNjb3ZlciBjcmFzaGVzLCByZWdyZXNzaW9ucywgZXhwb3NlZCBsYXRlbnQgYnVncywKYW5kIG5ld2x5IHRyaWdnZXJlZCBhc3NlcnRpb25zIGludHJvZHVjZWQgYnkgdGhlIHBhdGNoIHNlcmllcy4KCi0gUkVBQ0hBQklMSVRZIElTIFRIRSBQUklNQVJZIEdBVEU6CiAgRnV6emluZyBjYW4gb25seSBkaXNjb3ZlciBidWdzIGluIGNvZGUgdGhhdCBjYW4gYWN0dWFsbHkgZXhlY3V0ZSBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZAogIGVudmlyb25tZW50cyAoR0NFIG9yIFFFTVUsIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBkZXZpY2VzIGxpa2UgVVNCIGdhZGdldHMsIG5ldGRldiwgdHVuL3RhcCkuCiAgSWYgdGhlIG1vZGlmaWVkIGNvZGUgaXMgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIChzZWUgU2VjdGlvbiAyKSwgaXQgTVVTVCBOT1QgYmUgZnV6emVkLAogIHJlZ2FyZGxlc3Mgb2Ygd2hldGhlciBpdCBhZGRzIGFzc2VydGlvbnMgb3IgY29tcGxleCBsb2dpYy4KCi0gRE8gTk9UIEJMSU5ETFkgVFJVU1QgJiMzNDtOTyBGVU5DVElPTkFMIENIQU5HRSYjMzQ7IChORkNJKSBPUiAmIzM0O1JFRkFDVE9SSU5HJiMzNDsgQ0xBSU1TOgogIFBhdGNoIGF1dGhvcnMgcm91dGluZWx5IGxhYmVsIGNoYW5nZXMgYXMgJiMzNDtjbGVhbnVwcyYjMzQ7LCAmIzM0O3JlZmFjdG9yaW5ncyYjMzQ7LCBvciBzdGF0ZQogICYjMzQ7Tm8gZnVuY3Rpb25hbCBjaGFuZ2UgaW50ZW5kZWQmIzM0Oy4gRG8gTk9UIHRha2UgdGhlc2UgY2xhaW1zIGF0IGZhY2UgdmFsdWUuCiAgQ29kZSByZWZhY3RvcmluZ3MgdGhhdCByZWFycmFuZ2UgbG9naWMsIGludHJvZHVjZSBoZWxwZXIgZnVuY3Rpb25zLCBvciBhbHRlciBzdGF0ZSBtYW5hZ2VtZW50CiAgaW4gY29yZSBzdWJzeXN0ZW1zIGZyZXF1ZW50bHkgaW50cm9kdWNlIHN1YnRsZSBzZW1hbnRpYyBzaGlmdHMgb3IgdW5jb3ZlciBsYXRlbnQga2VybmVsIGJ1Z3MuCiAgSWYgcmVhY2hhYmxlIGV4ZWN1dGFibGUgY29kZSBpcyBtb2RpZmllZCBvciByZWZhY3RvcmVkLCBpdCBNVVNUIGJlIGZ1enplZC4KCi0gTkVXIE9SIE1PRElGSUVEIEFTU0VSVElPTlMgSU4gUkVBQ0hBQkxFIENPREUgTVVTVCBCRSBGVVpaRUQ6CiAgV2hlbiBhIHBhdGNoIGludHJvZHVjZXMgb3IgbW9kaWZpZXMgcnVudGltZSBjaGVja3Mgb3IgYXNzZXJ0aW9ucyAoZS5nLiwgV0FSTl9PTiosIFZNX1dBUk5fT04qLAogIEJVR19PTiosIGxvY2tkZXBfYXNzZXJ0KikgaW4gcmVhY2hhYmxlIGNvZGUgcGF0aHMsIGl0IGVuZm9yY2VzIG5ldyBvciBzdHJpY3RlciBpbnZhcmlhbnRzLgogIEV2ZW4gaWYgdGhlIGF1dGhvciBiZWxpZXZlcyB0aGUgaW52YXJpYW50IGFsd2F5cyBob2xkcywgZnV6emluZyBpcyBlc3NlbnRpYWwgdG8gdmVyaWZ5IHdoZXRoZXIKICBhbiB1bnVzdWFsIHNlcXVlbmNlIG9mIG9wZXJhdGlvbnMgY2FuIHZpb2xhdGUgaXQuCgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQoyLiBXSEVOIFRPIFJFVFVSTiBXb3J0aEZ1enppbmc9ZmFsc2UgKE5FR0FUSVZFIENSSVRFUklBKQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIE9OTFkgSUYgYWxsIG1vZGlmaWVkIGNvZGUgZmFsbHMgc3RyaWN0bHkgaW50byBvbmUgb3IgbW9yZSBvZiB0aGVzZSBjYXRlZ29yaWVzOgoKLSBOb24ta2VybmVsIGFuZCBub24tZXhlY3V0YWJsZSBjaGFuZ2VzOgogICogTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgY29tbWVudHMsIG9yIHNwZWxsaW5nIGZpeGVzLgogICogVXNlci1zcGFjZSBkaXJlY3Rvcmllcywgc2VsZi10ZXN0cywgc2FtcGxlcywgb3Igc2NyaXB0cyAoZS5nLiwgdG9vbHMvLCBzYW1wbGVzLywgc2NyaXB0cy8sIHVzci8pCiAgICB0aGF0IGRvIG5vdCBhZmZlY3QgdGhlIGNvbXBpbGVkIGtlcm5lbCBpbWFnZSAodm1saW51eCkgb3Iga2VybmVsIG1vZHVsZXMuCiAgKiBQdXJlbHkgZGVjb3JhdGl2ZSBsb2dnaW5nIChlLmcuLCBtZXNzYWdlIHN0cmluZ3MgaW4gcHJfZXJyLCBwcmludGssIGRldl9pbmZvKSBvciB0cmFjZXBvaW50cwogICAgdGhhdCBkbyBub3QgYWx0ZXIgY29udHJvbCBmbG93IG9yIGRhdGEgc3RydWN0dXJlcy4KICAqIEJ1aWxkIHN5c3RlbSBvciBLY29uZmlnIGNoYW5nZXMgdGhhdCBkbyBub3QgYWx0ZXIgY29tcGlsZWQgQyBsb2dpYy4KLSBTdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgaGFyZHdhcmU6CiAgKiBWZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2hlcywgU21hcnROSUNzLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsCiAgICBpb25pYywgYW1kZ3B1KSByZXF1aXJpbmcgcGh5c2ljYWwgQVNJQy9QQ0llIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLgotIFVucmVhY2hhYmxlIGV4ZWN1dGlvbiBwYXRoczoKICAqIERyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKC5yZW1vdmUsIC5zaHV0ZG93biwgcGNpX3VucmVnaXN0ZXJfZHJpdmVyKSBleGVjdXRlZCBvbmx5IGR1cmluZwogICAgcGh5c2ljYWwgUENJIGhvdC11bnBsdWcgb3IgbWFudWFsIHN5c2ZzIGRyaXZlciB1bmJpbmRpbmcuCiAgKiBDb2RlIHBhdGhzIGV4Y2x1c2l2ZSB0byBhcmNoaXRlY3R1cmVzIG90aGVyIHRoYW4gdGhlIHRhcmdldCBhcmNoaXRlY3R1cmUuCgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQozLiBXSEVOIFRPIFJFVFVSTiBXb3J0aEZ1enppbmc9dHJ1ZSAoUE9TSVRJVkUgQ1JJVEVSSUEpCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZSB3aGVuZXZlciB0aGUgcGF0Y2ggdG91Y2hlcyByZWFjaGFibGUgZXhlY3V0YWJsZSBjb2RlLCBpbmNsdWRpbmc6Ci0gQ29yZSBTdWJzeXN0ZW1zOgogICogQW55IGxvZ2ljIG1vZGlmaWNhdGlvbnMgaW4gbWVtb3J5IG1hbmFnZW1lbnQgKG1tLyksIHN5bmNocm9uaXphdGlvbi9sb2NraW5nIChrZXJuZWwvbG9ja2luZy8pLAogICAgQlBGLCBzY2hlZHVsZXIsIGNvcmUgbmV0d29ya2luZywgVkZTLCBvciBzeXNjYWxsIGhhbmRsaW5nLgotIFJlZmFjdG9yaW5ncyBhbmQgQ29kZSBDbGVhbnVwczoKICAqIEFueSByZXN0cnVjdHVyaW5nIG9mIHJlYWNoYWJsZSBkYXRhIHN0cnVjdHVyZXMsIGhlbHBlciBhYnN0cmFjdGlvbnMsIG9yIGFsZ29yaXRobSBmbG93cy4KLSBSdW50aW1lIEFzc2VydGlvbnMgYW5kIERlZmVuc2l2ZSBDaGVja3M6CiAgKiBBbnkgaW50cm9kdWN0aW9uIG9yIGFsdGVyYXRpb24gb2YgYXNzZXJ0aW9ucyAoV0FSTl9PTiosIFZNX1dBUk5fT04qLCBCVUdfT04qLCBldGMuKSBpbiByZWFjaGFibGUgcGF0aHMuCi0gUmVhY2hhYmxlIERyaXZlcnMgYW5kIFByb3RvY29sczoKICAqIERyaXZlcnMgYWNjZXNzaWJsZSB2aWEgdmlydHVhbCBidXNlcyAodmlydGlvLCBVU0IgZ2FkZ2V0LCBsb29wYmFjaywgbmV0bGluaywgYmluZGVyLCBzb2NrZXRzLCBldGMuKS4KCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CjQuIEVYVFJBQ1RJTkcgRm9jdXNTeW1ib2xzIChQUkVWRU5USU5HIERJTFVUSU9OKQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpXaGVuIFdvcnRoRnV6emluZz10cnVlLCB5b3UgbXVzdCBleHRyYWN0IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgaW50byBGb2N1c1N5bWJvbHMgdG8gZ3VpZGUgdGhlIGZ1enplcjoKCi0gQVZPSUQgVUJJUVVJVE9VUyBMSUZFQ1lDTEUgSE9ULVBBVEhTOgogIERvIE5PVCBsaXN0IGdlbmVyaWMsIHViaXF1aXRvdXMgZnVuY3Rpb25zIGNhbGxlZCBieSBhbG1vc3QgZXZlcnkgcHJvZ3JhbSBpbiB0aGUgY29ycHVzCiAgKGluY2x1ZGluZywgYnV0IG5vdCBsaW1pdGVkIHRvOiBnZW5lcmFsIG1lbW9yeSBhbGxvY2F0b3JzIGFuZCBkZWFsbG9jYXRvcnMsIHBhZ2UgZmF1bHQKICBhbmQgdHJhcCBoYW5kbGVycywgb3IgY29yZSBzeW5jaHJvbml6YXRpb24gcHJpbWl0aXZlczsgdGhpcyBpcyBub3QgYW4gZXhoYXVzdGl2ZSBsaXN0KS4KICBMaXN0aW5nIHViaXF1aXRvdXMgZnVuY3Rpb25zIGNhdXNlcyB0aGUgZnV6emVyIHRvIGNsYXNzaWZ5IHRob3VzYW5kcyBvZiB1bnJlbGF0ZWQgdGVzdHMgYXMgJiMzNDtmb2N1c2VkJiMzNDssCiAgd2hpY2ggc2V2ZXJlbHkgZGlsdXRlcyBmdXp6aW5nIGVmZm9ydCBhd2F5IGZyb20gdGhlIGFjdHVhbCBjaGFuZ2VzLgoKLSBUQVJHRVQgU1BFQ0lGSUMgRkVBVFVSRSBMT0dJQyBBTkQgRU5UUllQT0lOVFM6CiAgTGlzdCBmdW5jdGlvbnMgdGhhdCBzcGVjaWZpY2FsbHkgaW1wbGVtZW50IHRoZSBsb2dpYyBiZWluZyBhZGRlZCBvciBhbHRlcmVkLCBvciBkaXJlY3QgQVBJIGVudHJ5cG9pbnRzCiAgZm9yIHRoZSBzdWJzeXN0ZW0gZmVhdHVyZSB1bmRlciByZXZpZXcuCgotIEhBTkRMSU5HIFNUQVRJQyBJTkxJTkUgRlVOQ1RJT05TIElOIEhFQURFUlMgKC5oKToKICBDb21waWxlci1pbmxpbmVkIHN0YXRpYyBmdW5jdGlvbnMgKHN1Y2ggYXMgc3RhdGljIGlubGluZXMgaW4gbW0vKi5oIG9yIGluY2x1ZGUvbGludXgvKi5oKSBsYWNrCiAgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcyBpbiB2bWxpbnV4IGFuZCBjYW5ub3QgYmUgdGFyZ2V0ZWQgZGlyZWN0bHkgYnkgc3ltYm9sIGNvdmVyYWdlIGZpbHRlcnMuCiAgSWYgdGhlIGNoYW5nZXMgYXJlIHByaW1hcmlseSBpbiBzdGF0aWMgaW5saW5lIGhlbHBlcnMsIGlkZW50aWZ5IG5vbi1zdGF0aWMsIGZlYXR1cmUtc3BlY2lmaWMgY2FsbGVyCiAgZnVuY3Rpb25zIGluIC5jIGZpbGVzIHRoYXQgZXhlcmNpc2UgdGhlbSAoYXZvaWRpbmcgdWJpcXVpdG91cyBsaWZlY3ljbGUgd3JhcHBlcnMpLgoKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KNS4gSURFTlRJRllJTkcgRW5hYmxlQ29uZmlncwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IGNvbXBpbGUgYW5kIHJlYWNoIHRoZSBtb2RpZmllZCBjb2RlOgotIEluc3BlY3QgS2NvbmZpZyBmaWxlcyBhbmQgI2lmZGVmIGd1YXJkczsgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCi0gQ2hlY2sgJiMzNDtkZXBlbmRzIG9uJiMzNDsgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzIG5lZWRlZC4KLSBTdHJpcCBhbnkgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+VGFyZ2V0IGFyY2hpdGVjdHVyZTogYW1kNjQKCkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgNTc5MDVmYTdlMzY1MWVmOTNmZTg5Njc0MzMwMGExOTBkZjAzOWQwNQpBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBNb24gU2VwIDcgMDU6MDQ6MzEgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29tbWFuZC5jCmluZGV4IGFmYjdlZTliYjIzNmYuLjU5MWU1YmExMDc1MzMgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29tbWFuZC5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29tbWFuZC5jCkBAIC0yMDksNiAmIzQzOzIwOSw3IEBAIGludCBtbTgxeF9jbWRfcmVzcF9wcm9jZXNzKHN0cnVjdCBtbTgxeCAqbW9ycywgc3RydWN0IHNrX2J1ZmYgKnNrYikKIAkJbGVuZ3RoID0gbWluX3QoaW50LCBsZW5ndGgsCiAJCQkgICAgICAgbGUxNl90b19jcHUoc3JjX3Jlc3AtJmd0O2hkci5sZW4pICYjNDM7CiAJCQkJICAgICAgIHNpemVvZihzdHJ1Y3QgaG9zdF9jbWRfaGVhZGVyKSk7CiYjNDM7CQlsZW5ndGggPSBtaW5fdChpbnQsIGxlbmd0aCwgc2tiLSZndDtsZW4pOwogCQltZW1jcHkoZGVzdF9yZXNwLCBzcmNfcmVzcCwgbGVuZ3RoKTsKIAl9IGVsc2UgewogCQlyZXQgPSBsZTMyX3RvX2NwdShzcmNfcmVzcC0mZ3Q7c3RhdHVzKTsKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDcgMDU6MDQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjkzMAoJCQkJCQkJb3V0cHV0OiAzMwoJCQkJCQkJdGhvdWdodHM6IDEyNAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIEltcGFjdCBvZiB0aGUgQ29kZSBDaGFuZ2UqKgoKT2theSwgZmlyc3QgdGhpbmdzIGZpcnN0LCBsZXQmIzM5O3MgZGl2ZSBpbnRvIHRoaXMgZGlmZi4gSXQgbG9va3MgbGlrZSB0aGUgY2hhbmdlIGlzIHdpdGhpbiBgZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb21tYW5kLmNgLiBTcGVjaWZpY2FsbHksIHRoZSBhZmZlY3RlZCBmdW5jdGlvbiBpcyBgbW04MXhfY21kX3Jlc3BfcHJvY2Vzc2AuIFJpZ2h0LCBzbyB0aGlzIHN1Z2dlc3RzIHdlJiMzOTtyZSBkZWFsaW5nIHdpdGggY29tbWFuZCByZXNwb25zZSBwcm9jZXNzaW5nIHdpdGhpbiB0aGUgbW04MXggZHJpdmVyLgoKTm93LCBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgYXJjaGl0ZWN0dXJlIG9mIHRoaXMgZHJpdmVyLiBUbyBnZXQgYSBoYW5kbGUgb24gdGhlIHVuZGVybHlpbmcgaW50ZXJmYWNlLCBJJiMzOTtsbCBxdWlja2x5IGNoZWNrIHRoZSBkaXJlY3RvcnksIGBkcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2AuIElzIHRoaXMgU1BJLCBTRElPLCBVU0IsIFBDSWUsIG9yIHNvbWV0aGluZyBlbHNlIGVudGlyZWx5PyBBIHF1aWNrIHNjYW4gb2YgcmVsYXRlZCBmaWxlcyBzaG91bGQgZ2l2ZSBtZSB0aGUgYW5zd2VyIHByZXR0eSBxdWlja2x5LgoKVG8gYmUgdGhvcm91Z2gsIGxldCYjMzk7cyB1c2UgYGdyZXBwZXJgIG9yIGByZWFkLWZpbGVgIG9uIGBkcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL2Agb3IgS2NvbmZpZyB0byBxdWlja2x5IGlkZW50aWZ5IGlmIHRoZXJlIGFyZSBhbnkgb2J2aW91cyBjbHVlcyB0byB3aGF0JiMzOTtzIGdvaW5nIG9uLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA3IDA1OjA0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O21tODF4JiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNybyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtcbkZ1bGwgb3V0cHV0IGlzIHRvbyBsb25nLCBzaG93aW5nIDUwMCBvdXQgb2YgNDg0NyBsaW5lcy5cblVzZSBtb3JlIHByZWNpc2UgZXhwcmVzc2lvbiBpZiBwb3NzaWJsZS5cblxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9LY29uZmlnPTEzPWlmIFdMQU5fVkVORE9SX01PUlNFTUlDUk9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vS2NvbmZpZzoxNDpzb3VyY2UgXCYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9LY29uZmlnXCYjMzQ7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL0tjb25maWctMTUtZW5kaWYgIyBXTEFOX1ZFTkRPUl9NT1JTRU1JQ1JPXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9NYWtlZmlsZS0xLSMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjBcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vTWFrZWZpbGU6MjpvYmotJChDT05GSUdfTU04MVgpICYjNDM7PSBtbTgxeC9cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L01ha2VmaWxlLTItXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L01ha2VmaWxlOjM6b2JqLSQoQ09ORklHX01NODFYKSAmIzQzOz0gbW04MXhfY29yZS5vXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L01ha2VmaWxlLTQtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L01ha2VmaWxlOjU6bW04MXhfY29yZS15ICYjNDM7PSBjb3JlLm9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvTWFrZWZpbGU6NjptbTgxeF9jb3JlLXkgJiM0Mzs9IG1hYy5vXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L01ha2VmaWxlOjc6bW04MXhfY29yZS15ICYjNDM7PSBody5vXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L01ha2VmaWxlOjg6bW04MXhfY29yZS15ICYjNDM7PSBmdy5vXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L01ha2VmaWxlOjk6bW04MXhfY29yZS15ICYjNDM7PSBjb21tYW5kLm9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvTWFrZWZpbGU6MTA6bW04MXhfY29yZS15ICYjNDM7PSBwcy5vXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L01ha2VmaWxlOjExOm1tODF4X2NvcmUteSAmIzQzOz0gc2ticS5vXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L01ha2VmaWxlOjEyOm1tODF4X2NvcmUteSAmIzQzOz0geWFwc19ody5vXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L01ha2VmaWxlOjEzOm1tODF4X2NvcmUteSAmIzQzOz0geWFwcy5vXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L01ha2VmaWxlOjE0Om1tODF4X2NvcmUteSAmIzQzOz0gcmMub1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9NYWtlZmlsZToxNTptbTgxeF9jb3JlLXkgJiM0Mzs9IG1tcmMub1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9NYWtlZmlsZS0xNi1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvTWFrZWZpbGU6MTc6b2JqLSQoQ09ORklHX01NODFYX1VTQikgJiM0Mzs9IG1tODF4X3VzYi5vXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L01ha2VmaWxlOjE4Om1tODF4X3VzYi15ICYjNDM7PSB1c2Iub1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9NYWtlZmlsZS0xOS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvTWFrZWZpbGU6MjA6b2JqLSQoQ09ORklHX01NODFYX1NESU8pICYjNDM7PSBtbTgxeF9zZGlvLm9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvTWFrZWZpbGU6MjE6bW04MXhfc2Rpby15ICYjNDM7PSBzZGlvLm9cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2J1cy5oLTExLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9idXMuaDoxMjplbnVtIG1tODF4X2J1c190eXBlIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvYnVzLmgtMTMtXHRNTTgxWF9CVVNfVFlQRV9VU0IsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9idXMuaC0xNi1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvYnVzLmg6MTc6c3RydWN0IG1tODF4X2J1c19vcHMge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9idXMuaDoxODpcdGludCAoKmRtX3JlYWQpKHN0cnVjdCBtbTgxeCAqbW9ycywgdTMyIGFkZHIsIHU4ICpkYXRhLCBpbnQgbGVuKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvYnVzLmg6MTk6XHRpbnQgKCpkbV93cml0ZSkoc3RydWN0IG1tODF4ICptb3JzLCB1MzIgYWRkciwgY29uc3QgdTggKmRhdGEsIGludCBsZW4pO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9idXMuaDoyMDpcdGludCAoKnJlZzMyX3JlYWQpKHN0cnVjdCBtbTgxeCAqbW9ycywgdTMyIGFkZHIsIHUzMiAqZGF0YSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2J1cy5oOjIxOlx0aW50ICgqcmVnMzJfd3JpdGUpKHN0cnVjdCBtbTgxeCAqbW9ycywgdTMyIGFkZHIsIHUzMiBkYXRhKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvYnVzLmg6MjI6XHRpbnQgKCpkaWdpdGFsX3Jlc2V0KShzdHJ1Y3QgbW04MXggKm1vcnMpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9idXMuaDoyMzpcdHZvaWQgKCpzZXRfYnVzX2VuYWJsZSkoc3RydWN0IG1tODF4ICptb3JzLCBib29sIGVuYWJsZSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2J1cy5oOjI0Olx0dm9pZCAoKmNvbmZpZ19idXJzdF9tb2RlKShzdHJ1Y3QgbW04MXggKm1vcnMsIGJvb2wgZW5hYmxlX2J1cnN0KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvYnVzLmg6MjU6XHR2b2lkICgqY2xhaW0pKHN0cnVjdCBtbTgxeCAqbW9ycyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2J1cy5oOjI2Olx0dm9pZCAoKnNldF9pcnEpKHN0cnVjdCBtbTgxeCAqbW9ycywgYm9vbCBlbmFibGUpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9idXMuaDoyNzpcdHZvaWQgKCpyZWxlYXNlKShzdHJ1Y3QgbW04MXggKm1vcnMpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9idXMuaC0yOC1cdHVuc2lnbmVkIGludCBidWxrX2FsaWdubWVudDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2J1cy5oLTM2LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9idXMuaDozNzovKiBtbTgxeF9kbV9yZWFkIC0gbGVuIG11c3QgYmUgcm91bmRlZCB1cCB0byB0aGUgbmVhcmVzdCA0LWJ5dGUgYm91bmRhcnkgKi9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvYnVzLmg6Mzg6c3RhdGljIGlubGluZSBpbnQgbW04MXhfZG1fcmVhZChzdHJ1Y3QgbW04MXggKm1vcnMsIHUzMiBhZGRyLCB1OCAqZGF0YSwgaW50IGxlbilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvYnVzLmgtMzkte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvYnVzLmgtNDItXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2J1cy5oOjQzOnN0YXRpYyBpbmxpbmUgaW50IG1tODF4X2RtX3dyaXRlKHN0cnVjdCBtbTgxeCAqbW9ycywgdTMyIGFkZHIsIGNvbnN0IHU4ICpkYXRhLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9idXMuaC00NC1cdFx0XHRcdCBpbnQgbGVuKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvYnVzLmgtNDgtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2J1cy5oOjQ5OnN0YXRpYyBpbmxpbmUgaW50IG1tODF4X3JlZzMyX3JlYWQoc3RydWN0IG1tODF4ICptb3JzLCB1MzIgYWRkciwgdTMyICpkYXRhKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9idXMuaC01MC17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9idXMuaC01My1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvYnVzLmg6NTQ6c3RhdGljIGlubGluZSBpbnQgbW04MXhfcmVnMzJfd3JpdGUoc3RydWN0IG1tODF4ICptb3JzLCB1MzIgYWRkciwgdTMyIGRhdGEpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2J1cy5oLTU1LXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2J1cy5oLTU4LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9idXMuaDo1OTpzdGF0aWMgaW5saW5lIGludCBtbTgxeF9idXNfZGlnaXRhbF9yZXNldChzdHJ1Y3QgbW04MXggKm1vcnMpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2J1cy5oLTYwLXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2J1cy5oLTY2LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9idXMuaDo2NzpzdGF0aWMgaW5saW5lIHZvaWQgbW04MXhfc2V0X2J1c19lbmFibGUoc3RydWN0IG1tODF4ICptb3JzLCBib29sIGVuYWJsZSlcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvYnVzLmgtNjgte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvYnVzLmgtNzEtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2J1cy5oOjcyOnN0YXRpYyBpbmxpbmUgdm9pZCBtbTgxeF9idXNfY29uZmlnX2J1cnN0X21vZGUoc3RydWN0IG1tODF4ICptb3JzLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9idXMuaC03My1cdFx0XHRcdFx0ICAgICAgIGJvb2wgZW5hYmxlX2J1cnN0KVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvYnVzLmgtNzgtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2J1cy5oOjc5OnN0YXRpYyBpbmxpbmUgdm9pZCBtbTgxeF9jbGFpbV9idXMoc3RydWN0IG1tODF4ICptb3JzKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9idXMuaC04MC17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9idXMuaC04My1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvYnVzLmg6ODQ6c3RhdGljIGlubGluZSB2b2lkIG1tODF4X2J1c19zZXRfaXJxKHN0cnVjdCBtbTgxeCAqbW9ycywgYm9vbCBlbmFibGUpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2J1cy5oLTg1LXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2J1cy5oLTg4LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9idXMuaDo4OTpzdGF0aWMgaW5saW5lIHZvaWQgbW04MXhfcmVsZWFzZV9idXMoc3RydWN0IG1tODF4ICptb3JzKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9idXMuaC05MC17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9idXMuaC05My1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvYnVzLmg6OTQ6c3RhdGljIGlubGluZSB1bnNpZ25lZCBpbnQgbW04MXhfYnVzX2dldF9hbGlnbm1lbnQoc3RydWN0IG1tODF4ICptb3JzKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9idXMuaC05NS17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb21tYW5kLmM9Mjc9c3RydWN0IGhvc3RfY21kX3Jlc3BfY2Ige1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29tbWFuZC5jLTMyLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb21tYW5kLmM6MzM6c3RhdGljIGludCBtbTgxeF9jbWRfdHgoc3RydWN0IG1tODF4ICptb3JzLCBzdHJ1Y3QgaG9zdF9jbWRfcmVzcCAqcmVzcCxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29tbWFuZC5jLTM0LVx0XHRcdHN0cnVjdCBob3N0X2NtZF9yZXEgKnJlcSwgdTMyIGxlbmd0aCwgdTMyIHRpbWVvdXQpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb21tYW5kLmMtNDEtXHRzdHJ1Y3Qgc2tfYnVmZiAqc2tiO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb21tYW5kLmM6NDI6XHRzdHJ1Y3QgbW04MXhfc2ticSAqY21kX3EgPSBtbTgxeF9oaWZfZ2V0X3R4X2NtZF9xdWV1ZShtb3JzKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29tbWFuZC5jLTQzLVx0c3RydWN0IGhvc3RfY21kX3Jlc3BfY2IgKnJlc3BfY2I7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb21tYW5kLmMtNTctXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuYzo1ODpcdG1tODF4X3BzX2Rpc2FibGUobW9ycyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuYy01OS1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuYy02Mi1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29tbWFuZC5jOjYzOlx0XHRza2IgPSBtbTgxeF9za2JxX2FsbG9jX3NrYihjbWRfcSwgY21kX2xlbik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuYy02NC1cdFx0aWYgKCFza2IpIHtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuYy04My1cdFx0dGltZW91dCA9IHRpbWVvdXQgPyB0aW1lb3V0IDogSE9TVF9DTURfREVGQVVMVF9USU1FT1VUX01TO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb21tYW5kLmM6ODQ6XHRcdHJldCA9IG1tODF4X3NrYnFfc2tiX3R4KGNtZF9xLCBcdTAwMjZza2IsIE5VTEwsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuYy04NS1cdFx0XHRcdFx0TU04MVhfU0tCX0NIQU5fQ09NTUFORCk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb21tYW5kLmMtODgtXHRcdGlmIChyZXQpIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29tbWFuZC5jOjg5Olx0XHRcdGRldl9lcnIobW9ycy1cdTAwM2VkZXYsIFwmIzM0O21tODF4X3NrYnFfdHggZmFpbDogJWRcJiMzNDssIHJldCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuYy05MC1cdFx0XHRicmVhaztcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuYy0xMjEtXHRcdHNwaW5fbG9ja19iaChcdTAwMjZjbWRfcS1cdTAwM2Vsb2NrKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29tbWFuZC5jOjEyMjpcdFx0bW04MXhfc2ticV9za2JfZmluaXNoKGNtZF9xLCBza2IsIE5VTEwpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb21tYW5kLmMtMTIzLVx0XHRzcGluX3VubG9ja19iaChcdTAwMjZjbWRfcS1cdTAwM2Vsb2NrKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuYy0xMjgtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuYzoxMjk6XHRtbTgxeF9wc19lbmFibGUobW9ycyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuYy0xMzAtXHRtdXRleF91bmxvY2soXHUwMDI2bW9ycy1cdTAwM2VjbWRfd2FpdCk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb21tYW5kLmMtMTQ1LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb21tYW5kLmM6MTQ2OmludCBtbTgxeF9jbWRfcmVzcF9wcm9jZXNzKHN0cnVjdCBtbTgxeCAqbW9ycywgc3RydWN0IHNrX2J1ZmYgKnNrYilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29tbWFuZC5jLTE0Ny17XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuYy0xNDgtXHRpbnQgbGVuZ3RoLCByZXQgPSAtRVNSQ0g7IC8qIE5vIHN1Y2ggcHJvY2VzcyAqL1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb21tYW5kLmM6MTQ5Olx0c3RydWN0IG1tODF4X3NrYnEgKmNtZF9xID0gbW04MXhfaGlmX2dldF90eF9jbWRfcXVldWUobW9ycyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuYy0xNTAtXHRzdHJ1Y3QgaG9zdF9jbWRfcmVzcCAqc3JjX3Jlc3AgPSAoc3RydWN0IGhvc3RfY21kX3Jlc3AgKikoc2tiLVx1MDAzZWRhdGEpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29tbWFuZC5jLTE2My1cdGlmICghSE9TVF9DTURfSVNfUkVTUChzcmNfcmVzcCkpIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29tbWFuZC5jOjE2NDpcdFx0cmV0ID0gbW04MXhfbWFjX2V2ZW50X3JlY3YobW9ycywgc2tiKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29tbWFuZC5jLTE2NS1cdFx0Z290byBleGl0X2ZyZWU7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb21tYW5kLmMtMTY5LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb21tYW5kLmM6MTcwOlx0Y21kX3NrYiA9IG1tODF4X3NrYnFfdHhfcGVuZGluZyhjbWRfcSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuYy0xNzEtXHRpZiAoY21kX3NrYikge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb21tYW5kLmM6MTcyOlx0XHRtbTgxeF9za2JxX3B1bGxfaGRyX3Bvc3RfdHgoY21kX3NrYik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuYy0xNzMtXHRcdHJlcSA9IChzdHJ1Y3QgaG9zdF9jbWRfcmVxICopY21kX3NrYi1cdTAwM2VkYXRhO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29tbWFuZC5jLTIzMi1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29tbWFuZC5jOjIzMzppbnQgbW04MXhfY21kX3N0YV9zdGF0ZShzdHJ1Y3QgbW04MXggKm1vcnMsIHN0cnVjdCBtbTgxeF92aWYgKm1vcnNfdmlmLCB1MTYgYWlkLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb21tYW5kLmMtMjM0LVx0XHRcdHN0cnVjdCBpZWVlODAyMTFfc3RhICpzdGEsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb21tYW5kLmMtMjQ2LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb21tYW5kLmM6MjQ3Olx0cmV0dXJuIG1tODF4X2NtZF90eChtb3JzLCBOVUxMLCAoc3RydWN0IGhvc3RfY21kX3JlcSAqKVx1MDAyNnJlcSwgMCwgMCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuYy0yNDgtfVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb21tYW5kLmMtMjQ5LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb21tYW5kLmM6MjUwOmludCBtbTgxeF9jbWRfYWRkX2lmKHN0cnVjdCBtbTgxeCAqbW9ycywgdTE2ICp2aWZfaWQsIGNvbnN0IHU4ICphZGRyLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb21tYW5kLmMtMjUxLVx0XHQgICAgIGVudW0gbmw4MDIxMV9pZnR5cGUgdHlwZSlcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuYy0yNzEtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuYzoyNzI6XHRyZXQgPSBtbTgxeF9jbWRfdHgobW9ycywgKHN0cnVjdCBob3N0X2NtZF9yZXNwICopXHUwMDI2cmVzcCxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29tbWFuZC5jLTI3My1cdFx0XHQgICAoc3RydWN0IGhvc3RfY21kX3JlcSAqKVx1MDAyNnJlcSwgc2l6ZW9mKHJlc3ApLCAwKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuYy0yNzktXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuYzoyODA6aW50IG1tODF4X2NtZF9nZXRfY2FwYWJpbGl0aWVzKHN0cnVjdCBtbTgxeCAqbW9ycywgdTE2IHZpZl9pZCxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29tbWFuZC5jOjI4MTpcdFx0XHQgICAgICAgc3RydWN0IG1tODF4X2Z3X2NhcHMgKmNhcGFiaWxpdGllcylcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29tbWFuZC5jLTI4Mi17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb21tYW5kLmMtMjg5LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb21tYW5kLmM6MjkwOlx0cmV0ID0gbW04MXhfY21kX3R4KG1vcnMsIChzdHJ1Y3QgaG9zdF9jbWRfcmVzcCAqKVx1MDAyNnJzcCxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29tbWFuZC5jLTI5MS1cdFx0XHQgICAoc3RydWN0IGhvc3RfY21kX3JlcSAqKVx1MDAyNnJlcSwgc2l6ZW9mKHJzcCksIDApO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29tbWFuZC5jLTI5NS1cdGNhcGFiaWxpdGllcy1cdTAwM2VhbXBkdV9tc3MgPSByc3AuY2FwYWJpbGl0aWVzLmFtcGR1X21zcztcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29tbWFuZC5jOjI5NjpcdGNhcGFiaWxpdGllcy1cdTAwM2VtbTgxeF9tbXNzX29mZnNldCA9IHJzcC5tb3JzZV9tbXNzX29mZnNldDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29tbWFuZC5jLTI5Ny1cdGNhcGFiaWxpdGllcy1cdTAwM2ViZWFtZm9ybWVlX3N0c19jYXBhYmlsaXR5ID1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuYy0zMDgtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuYzozMDk6aW50IG1tODF4X2NtZF9nZXRfbWF4X3R4cG93ZXIoc3RydWN0IG1tODF4ICptb3JzLCBzMzIgKm91dF9wb3dlcl9tYm0pXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuYy0zMTAte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29tbWFuZC5jLTMxNi1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29tbWFuZC5jOjMxNzpcdHJldCA9IG1tODF4X2NtZF90eChtb3JzLCAoc3RydWN0IGhvc3RfY21kX3Jlc3AgKilcdTAwMjZyZXNwLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb21tYW5kLmMtMzE4LVx0XHRcdCAgIChzdHJ1Y3QgaG9zdF9jbWRfcmVxICopXHUwMDI2cmVxLCBzaXplb2YocmVzcCksIDApO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29tbWFuZC5jLTMyNC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29tbWFuZC5jOjMyNTppbnQgbW04MXhfY21kX2h3X3NjYW4oc3RydWN0IG1tODF4ICptb3JzLCBzdHJ1Y3QgbW04MXhfaHdfc2Nhbl9wYXJhbXMgKnBhcmFtcyxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29tbWFuZC5jLTMyNi1cdFx0ICAgICAgYm9vbCBzdG9yZSlcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuYy0zMzMtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuYzozMzQ6XHRjbWRfc2l6ZSA9IG1tODF4X2h3X3NjYW5faF9nZXRfY21kX3NpemUocGFyYW1zKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29tbWFuZC5jLTMzNS1cdGNtZF9zaXplID0gUk9VTkRfQllURVNfVE9fV09SRChjbWRfc2l6ZSk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb21tYW5kLmMtMzUzLVx0XHRyZXEtXHUwMDNlZHdlbGxfdGltZV9tcyA9IGNwdV90b19sZTMyKHBhcmFtcy1cdTAwM2Vkd2VsbF90aW1lX21zKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29tbWFuZC5jOjM1NDpcdFx0YnVmID0gbW04MXhfaHdfc2Nhbl9oX2luc2VydF90bHZzKHBhcmFtcywgYnVmKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29tbWFuZC5jLTM1NS1cdH1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuYy0zNTktXHRyZXEtXHUwMDNlaGRyLmxlbiA9IGNwdV90b19sZTE2KCh1MTYpKChidWYgLSAodTggKilyZXEpIC0gc2l6ZW9mKHJlcS1cdTAwM2VoZHIpKSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuYzozNjA6XHRyZXQgPSBtbTgxeF9jbWRfdHgobW9ycywgTlVMTCwgKHN0cnVjdCBob3N0X2NtZF9yZXEgKilyZXEsIDAsIDApO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb21tYW5kLmMtMzYxLVx0a2ZyZWUocmVxKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuYy0zNjUtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuYzozNjY6aW50IG1tODF4X2NtZF9zZXRfdHhwb3dlcihzdHJ1Y3QgbW04MXggKm1vcnMsIHMzMiAqb3V0X3Bvd2VyX21ibSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29tbWFuZC5jLTM2Ny1cdFx0XHQgIGludCB0eHBvd2VyX21ibSlcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuYy0zNzUtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuYzozNzY6XHRyZXQgPSBtbTgxeF9jbWRfdHgobW9ycywgKHN0cnVjdCBob3N0X2NtZF9yZXNwICopXHUwMDI2cmVzcCxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29tbWFuZC5jLTM3Ny1cdFx0XHQgICAoc3RydWN0IGhvc3RfY21kX3JlcSAqKVx1MDAyNnJlcSwgc2l6ZW9mKHJlc3ApLCAwKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuYy0zODMtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuYzozODQ6aW50IG1tODF4X2NtZF9zZXRfY2hhbm5lbChzdHJ1Y3QgbW04MXggKm1vcnMsIHUzMiBvcF9jaGFuX2ZyZXFfaHosXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuYy0zODUtXHRcdFx0ICB1OCBwcmlfMW1oel9jaGFuX2lkeCwgdTggb3BfYndfbWh6LCB1OCBwcmlfYndfbWh6LFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29tbWFuZC5jLTM5OC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29tbWFuZC5jOjM5OTpcdHJldCA9IG1tODF4X2NtZF90eChtb3JzLCAoc3RydWN0IGhvc3RfY21kX3Jlc3AgKilcdTAwMjZyZXNwLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb21tYW5kLmMtNDAwLVx0XHRcdCAgIChzdHJ1Y3QgaG9zdF9jbWRfcmVxICopXHUwMDI2cmVxLCBzaXplb2YocmVzcCksIDApO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29tbWFuZC5jLTQwNi1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29tbWFuZC5jOjQwNzppbnQgbW04MXhfY21kX2Rpc2FibGVfa2V5KHN0cnVjdCBtbTgxeCAqbW9ycywgc3RydWN0IG1tODF4X3ZpZiAqbW9yc192aWYsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuYy00MDgtXHRcdFx0ICB1MTYgYWlkLCBzdHJ1Y3QgaWVlZTgwMjExX2tleV9jb25mICprZXkpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb21tYW5kLmMtNDE5LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb21tYW5kLmM6NDIwOlx0cmV0dXJuIG1tODF4X2NtZF90eChtb3JzLCBOVUxMLCAoc3RydWN0IGhvc3RfY21kX3JlcSAqKVx1MDAyNnJlcSwgMCwgMCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuYy00MjEtfVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb21tYW5kLmMtNDIyLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb21tYW5kLmM6NDIzOmludCBtbTgxeF9jbWRfaW5zdGFsbF9rZXkoc3RydWN0IG1tODF4ICptb3JzLCBzdHJ1Y3QgbW04MXhfdmlmICptb3JzX3ZpZixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29tbWFuZC5jLTQyNC1cdFx0XHQgIHUxNiBhaWQsIHN0cnVjdCBpZWVlODAyMTFfa2V5X2NvbmYgKmtleSxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuYy00NDYtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuYzo0NDc6XHRyZXQgPSBtbTgxeF9jbWRfdHgobW9ycywgKHN0cnVjdCBob3N0X2NtZF9yZXNwICopXHUwMDI2cmVzcCxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29tbWFuZC5jLTQ0OC1cdFx0XHQgICAoc3RydWN0IGhvc3RfY21kX3JlcSAqKVx1MDAyNnJlcSwgc2l6ZW9mKHJlc3ApLCAwKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuYy00NTctXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuYzo0NTg6aW50IG1tODF4X2NtZF9jZmdfbXVsdGljYXN0X2ZpbHRlcihzdHJ1Y3QgbW04MXggKm1vcnMsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuYzo0NTk6XHRcdFx0XHQgICBzdHJ1Y3QgbW04MXhfdmlmICptb3JzX3ZpZilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29tbWFuZC5jLTQ2MC17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb21tYW5kLmMtNDc1LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb21tYW5kLmM6NDc2Olx0cmV0ID0gbW04MXhfY21kX3R4KG1vcnMsIE5VTEwsIChzdHJ1Y3QgaG9zdF9jbWRfcmVxICopcmVxLCAwLCAwKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29tbWFuZC5jLTQ3Ny1cdGtmcmVlKHJlcSk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb21tYW5kLmMtNDgwLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb21tYW5kLmM6NDgxOmludCBtbTgxeF9jbWRfY2ZnX2JzcyhzdHJ1Y3QgbW04MXggKm1vcnMsIHUxNiB2aWZfaWQsIHUxNiBiZWFjb25faW50LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb21tYW5kLmMtNDgyLVx0XHQgICAgICB1MTYgZHRpbV9wZXJpb2QsIHUzMiBjc3NpZClcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuYy00OTAtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuYzo0OTE6XHRyZXR1cm4gbW04MXhfY21kX3R4KG1vcnMsIE5VTEwsIChzdHJ1Y3QgaG9zdF9jbWRfcmVxICopXHUwMDI2cmVxLCAwLCAwKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29tbWFuZC5jLTQ5Mi19XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuYy00OTMtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuYzo0OTQ6aW50IG1tODF4X2NtZF9jb25maWdfYmVhY29uX3RpbWVyKHN0cnVjdCBtbTgxeCAqbW9ycywgdm9pZCAqbW04MXhfdmlmLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb21tYW5kLmMtNDk1LVx0XHRcdFx0ICBib29sIGVuYWJsZWQpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuYy00OTYte1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb21tYW5kLmM6NDk3Olx0c3RydWN0IG1tODF4X3ZpZiAqdmlmID0gbW04MXhfdmlmO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb21tYW5kLmMtNDk4LVx0c3RydWN0IGhvc3RfY21kX3JlcV9ic3NfYmVhY29uX2NvbmZpZyByZXEgPSB7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb21tYW5kLmMtNTAzLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb21tYW5kLmM6NTA0Olx0cmV0dXJuIG1tODF4X2NtZF90eChtb3JzLCBOVUxMLCAoc3RydWN0IGhvc3RfY21kX3JlcSAqKVx1MDAyNnJlcSwgMCwgMCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuYy01MDUtfVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb21tYW5kLmMtNTA2LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb21tYW5kLmM6NTA3OmludCBtbTgxeF9jbWRfc2V0X3BzKHN0cnVjdCBtbTgxeCAqbW9ycywgYm9vbCBlbmFibGVkKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb21tYW5kLmMtNTA4LXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuYy01MTMtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuYzo1MTQ6XHRyZXR1cm4gbW04MXhfY21kX3R4KG1vcnMsIE5VTEwsIChzdHJ1Y3QgaG9zdF9jbWRfcmVxICopXHUwMDI2cmVxLCAwLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb21tYW5kLmMtNTE1LVx0XHRcdCAgICBIT1NUX0NNRF9QT1dFUlNBVkVfVElNRU9VVF9NUyk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb21tYW5kLmMtNTE3LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb21tYW5kLmM6NTE4OmludCBtbTgxeF9jbWRfY2ZnX3FvcyhzdHJ1Y3QgbW04MXggKm1vcnMsIHN0cnVjdCBtbTgxeF9xdWV1ZV9wYXJhbXMgKnBhcmFtcylcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29tbWFuZC5jLTUxOS17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb21tYW5kLmMtNTI5LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb21tYW5kLmM6NTMwOlx0cmV0dXJuIG1tODF4X2NtZF90eChtb3JzLCBOVUxMLCAoc3RydWN0IGhvc3RfY21kX3JlcSAqKVx1MDAyNnJlcSwgMCwgMCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuYy01MzEtfVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb21tYW5kLmMtNTMyLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb21tYW5kLmM6NTMzOmludCBtbTgxeF9jbWRfcm1faWYoc3RydWN0IG1tODF4ICptb3JzLCB1MTYgdmlmX2lkKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb21tYW5kLmMtNTM0LXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuYy01MzgtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuYzo1Mzk6XHRyZXR1cm4gbW04MXhfY21kX3R4KG1vcnMsIE5VTEwsIChzdHJ1Y3QgaG9zdF9jbWRfcmVxICopXHUwMDI2cmVxLCAwLCAwKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29tbWFuZC5jLTU0MC19XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuYy01NDEtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuYzo1NDI6aW50IG1tODF4X2NtZF9zZXRfZnJhZ190aHJlc2hvbGQoc3RydWN0IG1tODF4ICptb3JzLCB1MzIgZnJhZ190aHJlc2hvbGQpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuYy01NDMte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29tbWFuZC5jLTU1MC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29tbWFuZC5jOjU1MTpcdHJldHVybiBtbTgxeF9jbWRfdHgobW9ycywgTlVMTCwgKHN0cnVjdCBob3N0X2NtZF9yZXEgKilcdTAwMjZyZXEsIDAsIDApO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb21tYW5kLmMtNTUyLX1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29tbWFuZC5jLTU1My1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29tbWFuZC5jOjU1NDppbnQgbW04MXhfY21kX2dldF9kaXNhYmxlZF9jaGFubmVscyhcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29tbWFuZC5jOjU1NTpcdHN0cnVjdCBtbTgxeCAqbW9ycywgc3RydWN0IGhvc3RfY21kX3Jlc3BfZ2V0X2Rpc2FibGVkX2NoYW5uZWxzICpyZXNwLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb21tYW5kLmMtNTU2LVx0dWludCByZXNwX2xlbilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuYy01NjEtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuYzo1NjI6XHRyZXR1cm4gbW04MXhfY21kX3R4KG1vcnMsIChzdHJ1Y3QgaG9zdF9jbWRfcmVzcCAqKXJlc3AsIFx1MDAyNnJlcSwgcmVzcF9sZW4sXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuYy01NjMtXHRcdFx0ICAgIDApO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29tbWFuZC5oLTE4LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb21tYW5kLmg6MTk6c3RydWN0IG1tODF4X3F1ZXVlX3BhcmFtcztcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29tbWFuZC5oLTIwLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb21tYW5kLmg6MjE6ZW51bSBtbTgxeF9jbWRfcmV0dXJuX2NvZGUge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb21tYW5kLmgtMjItXHRNTTgxWF9SRVRfU1VDQ0VTUyA9IDAsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb21tYW5kLmg9NDQ9c3RydWN0IGhvc3RfY21kX2V2ZW50IHtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuaC00OC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29tbWFuZC5oOjQ5OmludCBtbTgxeF9jbWRfcmVzcF9wcm9jZXNzKHN0cnVjdCBtbTgxeCAqbW9ycywgc3RydWN0IHNrX2J1ZmYgKnNrYik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuaDo1MDppbnQgbW04MXhfY21kX2FkZF9pZihzdHJ1Y3QgbW04MXggKm1vcnMsIHUxNiAqdmlmX2lkLCBjb25zdCB1OCAqYWRkcixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29tbWFuZC5oLTUxLVx0XHQgICAgIGVudW0gbmw4MDIxMV9pZnR5cGUgdHlwZSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuaDo1MjppbnQgbW04MXhfY21kX2dldF9jYXBhYmlsaXRpZXMoc3RydWN0IG1tODF4ICptb3JzLCB1MTYgdmlmX2lkLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb21tYW5kLmg6NTM6XHRcdFx0ICAgICAgIHN0cnVjdCBtbTgxeF9md19jYXBzICpjYXBhYmlsaXRpZXMpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb21tYW5kLmg6NTQ6aW50IG1tODF4X2NtZF9jZmdfcW9zKHN0cnVjdCBtbTgxeCAqbW9ycywgc3RydWN0IG1tODF4X3F1ZXVlX3BhcmFtcyAqcGFyYW1zKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29tbWFuZC5oOjU1OmludCBtbTgxeF9jbWRfY29uZmlnX2JlYWNvbl90aW1lcihzdHJ1Y3QgbW04MXggKm1vcnMsIHZvaWQgKm1tODF4X3ZpZixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29tbWFuZC5oLTU2LVx0XHRcdFx0ICBib29sIGVuYWJsZWQpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb21tYW5kLmg6NTc6aW50IG1tODF4X2NtZF9jZmdfYnNzKHN0cnVjdCBtbTgxeCAqbW9ycywgdTE2IHZpZl9pZCwgdTE2IGJlYWNvbl9pbnQsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuaC01OC1cdFx0ICAgICAgdTE2IGR0aW1fcGVyaW9kLCB1MzIgY3NzaWQpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb21tYW5kLmg6NTk6aW50IG1tODF4X2NtZF9zZXRfY2hhbm5lbChzdHJ1Y3QgbW04MXggKm1vcnMsIHUzMiBvcF9jaGFuX2ZyZXFfaHosXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuaC02MC1cdFx0XHQgIHU4IHByaV8xbWh6X2NoYW5faWR4LCB1OCBvcF9id19taHosIHU4IHByaV9id19taHosXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuaC02MS1cdFx0XHQgIHMzMiAqcG93ZXJfbWJtKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29tbWFuZC5oOjYyOmludCBtbTgxeF9jbWRfZ2V0X21heF90eHBvd2VyKHN0cnVjdCBtbTgxeCAqbW9ycywgczMyICpvdXRfcG93ZXJfbWJtKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29tbWFuZC5oOjYzOmludCBtbTgxeF9jbWRfc2V0X3R4cG93ZXIoc3RydWN0IG1tODF4ICptb3JzLCBzMzIgKm91dF9wb3dlcl9tYm0sXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuaC02NC1cdFx0XHQgIGludCB0eHBvd2VyX21ibSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuaDo2NTppbnQgbW04MXhfY21kX2h3X3NjYW4oc3RydWN0IG1tODF4ICptb3JzLCBzdHJ1Y3QgbW04MXhfaHdfc2Nhbl9wYXJhbXMgKnBhcmFtcyxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29tbWFuZC5oLTY2LVx0XHQgICAgICBib29sIHN0b3JlKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29tbWFuZC5oOjY3OmludCBtbTgxeF9jbWRfc2V0X3BzKHN0cnVjdCBtbTgxeCAqbW9ycywgYm9vbCBlbmFibGVkKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29tbWFuZC5oOjY4OmludCBtbTgxeF9jbWRfY2ZnX211bHRpY2FzdF9maWx0ZXIoc3RydWN0IG1tODF4ICptb3JzLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb21tYW5kLmg6Njk6XHRcdFx0XHQgICBzdHJ1Y3QgbW04MXhfdmlmICptb3JzX3ZpZik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuaDo3MDppbnQgbW04MXhfY21kX3N0YV9zdGF0ZShzdHJ1Y3QgbW04MXggKm1vcnMsIHN0cnVjdCBtbTgxeF92aWYgKm1vcnNfdmlmLCB1MTYgYWlkLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb21tYW5kLmgtNzEtXHRcdFx0c3RydWN0IGllZWU4MDIxMV9zdGEgKnN0YSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29tbWFuZC5oLTcyLVx0XHRcdGVudW0gaWVlZTgwMjExX3N0YV9zdGF0ZSBzdGF0ZSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuaDo3MzppbnQgbW04MXhfY21kX2luc3RhbGxfa2V5KHN0cnVjdCBtbTgxeCAqbW9ycywgc3RydWN0IG1tODF4X3ZpZiAqbW9yc192aWYsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuaC03NC1cdFx0XHQgIHUxNiBhaWQsIHN0cnVjdCBpZWVlODAyMTFfa2V5X2NvbmYgKmtleSxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuaC03Ni1cdFx0XHQgIGVudW0gaG9zdF9jbWRfYWVzX2tleV9sZW4gbGVuZ3RoKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29tbWFuZC5oOjc3OmludCBtbTgxeF9jbWRfZGlzYWJsZV9rZXkoc3RydWN0IG1tODF4ICptb3JzLCBzdHJ1Y3QgbW04MXhfdmlmICptb3JzX3ZpZixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29tbWFuZC5oLTc4LVx0XHRcdCAgdTE2IGFpZCwgc3RydWN0IGllZWU4MDIxMV9rZXlfY29uZiAqa2V5KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29tbWFuZC5oOjc5OmludCBtbTgxeF9jbWRfcm1faWYoc3RydWN0IG1tODF4ICptb3JzLCB1MTYgdmlmX2lkKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29tbWFuZC5oOjgwOmludCBtbTgxeF9jbWRfc2V0X2ZyYWdfdGhyZXNob2xkKHN0cnVjdCBtbTgxeCAqbW9ycywgdTMyIGZyYWdfdGhyZXNob2xkKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29tbWFuZC5oOjgxOmludCBtbTgxeF9jbWRfZ2V0X2Rpc2FibGVkX2NoYW5uZWxzKFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb21tYW5kLmg6ODI6XHRzdHJ1Y3QgbW04MXggKm1vcnMsIHN0cnVjdCBob3N0X2NtZF9yZXNwX2dldF9kaXNhYmxlZF9jaGFubmVscyAqcmVzcCxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29tbWFuZC5oLTgzLVx0dWludCByZXNwX2xlbik7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb3JlLmMtMTAtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvcmUuYzoxMTpzdGF0aWMgaW50IG1tODF4X2NvcmVfYXR0YWNoX3JlZ3Moc3RydWN0IG1tODF4ICptb3JzKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb3JlLmMtMTIte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29yZS5jLTE0LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb3JlLmM6MTU6XHRtbTgxeF9jbGFpbV9idXMobW9ycyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvcmUuYzoxNjpcdHJldCA9IG1tODF4X3JlZzMyX3JlYWQobW9ycywgTU04MTA4X1JFR19DSElQX0lELCBcdTAwMjZtb3JzLVx1MDAzZWNoaXBfaWQpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb3JlLmM6MTc6XHRtbTgxeF9yZWxlYXNlX2J1cyhtb3JzKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29yZS5jLTE4LVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29yZS5jLTI2LVx0XHRtb3JzLVx1MDAzZXJlZ3MgPSBcdTAwMjZtbTgxMDhfcmVncztcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29yZS5jOjI3Olx0XHRtb3JzLVx1MDAzZWhpZi5vcHMgPSBcdTAwMjZtbTgxeF95YXBzX29wcztcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29yZS5jLTI4LVx0XHRicmVhaztcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvcmUuYy0zNS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29yZS5jOjM2OnN0YXRpYyB2b2lkIG1tODF4X2NvcmVfaW5pdF9tYWNfYWRkcihzdHJ1Y3QgbW04MXggKm1vcnMpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvcmUuYy0zNy17XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvcmUuYzozODpcdGludCByZXQgPSBtbTgxeF9od19vdHBfZ2V0X21hY19hZGRyKG1vcnMpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb3JlLmMtMzktXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb3JlLmMtNDMtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvcmUuYzo0NDpjaGFyICptbTgxeF9jb3JlX2dldF9md19wYXRoKHUzMiBjaGlwX2lkLCB1MzIgZndfdmVyKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb3JlLmMtNDUte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29yZS5jLTU4LX1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29yZS5jOjU5OkVYUE9SVF9TWU1CT0xfR1BMKG1tODF4X2NvcmVfZ2V0X2Z3X3BhdGgpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb3JlLmMtNjAtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvcmUuYzo2MTpzdHJ1Y3QgbW04MXggKm1tODF4X2NvcmVfYWxsb2Moc2l6ZV90IHByaXZfc2l6ZSwgc3RydWN0IGRldmljZSAqZGV2KVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb3JlLmMtNjIte1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb3JlLmM6NjM6XHRyZXR1cm4gbW04MXhfbWFjX2FsbG9jKHByaXZfc2l6ZSwgZGV2KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29yZS5jLTY0LX1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29yZS5jOjY1OkVYUE9SVF9TWU1CT0xfR1BMKG1tODF4X2NvcmVfYWxsb2MpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb3JlLmMtNjYtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvcmUuYzo2NzppbnQgbW04MXhfY29yZV9pbml0KHN0cnVjdCBtbTgxeCAqbW9ycylcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29yZS5jLTY4LXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvcmUuYy03My1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29yZS5jOjc0Olx0bW04MXhfY29yZV9pbml0X21hY19hZGRyKG1vcnMpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb3JlLmMtNzUtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvcmUuYzo3NjpcdHJldCA9IG1tODF4X2NvcmVfYXR0YWNoX3JlZ3MobW9ycyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvcmUuYy03Ny1cdGlmIChyZXQpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb3JlLmMtODktXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvcmUuYzo5MDpcdHJldCA9IG1tODF4X2hpZl9pbml0KG1vcnMpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb3JlLmMtOTEtXHRpZiAocmV0KVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29yZS5jLTEwNS19XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvcmUuYzoxMDY6RVhQT1JUX1NZTUJPTF9HUEwobW04MXhfY29yZV9pbml0KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29yZS5jLTEwNy1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29yZS5jOjEwODppbnQgbW04MXhfY29yZV9yZWdpc3RlcihzdHJ1Y3QgbW04MXggKm1vcnMpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvcmUuYy0xMDkte1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb3JlLmM6MTEwOlx0cmV0dXJuIG1tODF4X21hY19yZWdpc3Rlcihtb3JzKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29yZS5jLTExMS19XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvcmUuYzoxMTI6RVhQT1JUX1NZTUJPTF9HUEwobW04MXhfY29yZV9yZWdpc3Rlcik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvcmUuYy0xMTMtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvcmUuYzoxMTQ6dm9pZCBtbTgxeF9jb3JlX3VucmVnaXN0ZXIoc3RydWN0IG1tODF4ICptb3JzKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb3JlLmMtMTE1LXtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29yZS5jOjExNjpcdG1tODF4X21hY191bnJlZ2lzdGVyKG1vcnMpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb3JlLmMtMTE3LX1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29yZS5jOjExODpFWFBPUlRfU1lNQk9MX0dQTChtbTgxeF9jb3JlX3VucmVnaXN0ZXIpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb3JlLmMtMTE5LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb3JlLmM6MTIwOnZvaWQgbW04MXhfY29yZV9kZWluaXQoc3RydWN0IG1tODF4ICptb3JzKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb3JlLmMtMTIxLXtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29yZS5jOjEyMjpcdG1tODF4X2hpZl9maW5pc2gobW9ycyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvcmUuYy0xMjMtXHRmbHVzaF93b3JrcXVldWUobW9ycy1cdTAwM2VuZXRfd3EpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29yZS5jLTEyNy19XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvcmUuYzoxMjg6RVhQT1JUX1NZTUJPTF9HUEwobW04MXhfY29yZV9kZWluaXQpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb3JlLmMtMTI5LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb3JlLmM6MTMwOnZvaWQgbW04MXhfY29yZV9mcmVlKHN0cnVjdCBtbTgxeCAqbW9ycylcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29yZS5jLTEzMS17XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvcmUuYzoxMzI6XHRtbTgxeF9tYWNfZnJlZShtb3JzKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29yZS5jLTEzMy19XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvcmUuYzoxMzQ6RVhQT1JUX1NZTUJPTF9HUEwobW04MXhfY29yZV9mcmVlKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29yZS5jLTEzNS1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvcmUuaC01NC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29yZS5oOjU1OnN0cnVjdCBtbTgxeF9idXNfb3BzO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb3JlLmg6NTY6c3RydWN0IG1tODF4X2hpZl9vcHM7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvcmUuaC01Ny1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvcmUuaC02Mi1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29yZS5oOjYzOmVudW0gbW04MXhfY2Fwc19mbGFncyB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvcmUuaC02NC1cdE1NODFYX0NBUFNfRldfU1RBUlQgPSAwLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29yZS5oLTEzMS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29yZS5oOjEzMjpzdHJ1Y3QgbW04MXhfZndfY2FwcyB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvcmUuaC0xMzMtXHR1MzIgZmxhZ3NbRldfQ0FQQUJJTElUSUVTX0ZMQUdTX1dJRFRIXTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvcmUuaC0xMzctXHR1OCBtYXhpbXVtX2FtcGR1X2xlbmd0aF9leHBvbmVudDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29yZS5oOjEzODpcdHU4IG1tODF4X21tc3Nfb2Zmc2V0O1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb3JlLmgtMTM5LX07XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb3JlLmgtMTQxLSNkZWZpbmUgTU04MVhfRldfU1VQUChNTTgxWF9DQVBTLCBDQVBBQklMSVRZKSBcXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb3JlLmg6MTQyOlx0bW04MXhfY2Fwc19zdXBwb3J0ZWQoTU04MVhfQ0FQUywgTU04MVhfQ0FQU18jI0NBUEFCSUxJVFkpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvcmUuaC0xNDMtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvcmUuaDoxNDQ6c3RhdGljIGlubGluZSBib29sIG1tODF4X2NhcHNfc3VwcG9ydGVkKHN0cnVjdCBtbTgxeF9md19jYXBzICpjYXBzLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb3JlLmg6MTQ1Olx0XHRcdFx0XHRlbnVtIG1tODF4X2NhcHNfZmxhZ3MgZmxhZylcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29yZS5oLTE0Ni17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb3JlLmgtMTUxLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb3JlLmg6MTUyOnN0cnVjdCBtbTgxeF9wcyB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvcmUuaC0xNTMtXHR1MzIgd2FrZXJzO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29yZS5oLTE2MC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29yZS5oOjE2MTplbnVtIG1tODF4X3BhZ2VfYWNpIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29yZS5oLTE2Mi1cdE1NODFYX0FDSV9CRSA9IDAsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb3JlLmgtMTY3LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb3JlLmg6MTY4OmVudW0gbW04MXhfcW9zX3RpZF91cF9pbmRleCB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvcmUuaC0xNjktXHRNTTgxWF9RT1NfVElEX1VQX0JLID0gMSxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvcmUuaC0xODEtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvcmUuaDoxODI6c3RydWN0IG1tODF4X3N3X3ZlcnNpb24ge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb3JlLmgtMTgzLVx0dTggbWFqb3I7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb3JlLmgtMTg3LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb3JlLmg6MTg4OnN0cnVjdCBtbTgxeF9zdGEge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb3JlLmgtMTg5LVx0Y29uc3Qgc3RydWN0IGllZWU4MDIxMV92aWYgKnZpZjtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvcmUuaC0xOTUtXHRpbnQgbWF4X2J3X21oejtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29yZS5oOjE5NjpcdHN0cnVjdCBtbTgxeF9yY19zdGEgcmM7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvcmUuaC0xOTctXHRzdHJ1Y3QgbW1yY19yYXRlIGxhc3Rfc3RhX3R4X3JhdGU7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb3JlLmgtMjAxLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb3JlLmg6MjAyOnN0cnVjdCBtbTgxeF92aWYge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb3JlLmg6MjAzOlx0c3RydWN0IG1tODF4ICptb3JzO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb3JlLmgtMjA0LVx0dTE2IGlkO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29yZS5oLTIxNi1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29yZS5oOjIxNzpzdHJ1Y3QgbW04MXhfc3RhbGVfdHhfc3RhdHVzIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29yZS5oLTIxOC1cdC8qIFN0YWxlIFR4IGxvY2sgKi9cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvcmUuaD0yMjM9c3RydWN0IG1jYXN0X2ZpbHRlciB7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb3JlLmgtMjMyLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb3JlLmg6MjMzOmVudW0gbW04MXhfaHdfc2Nhbl9vcCB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvcmUuaC0yMzQtXHRNTTgxWF9IV19TQ0FOX09QX1NUQVJULFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29yZS5oLTIzNy1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29yZS5oOjIzODpzdHJ1Y3QgbW04MXhfaHdfc2Nhbl9wYXJhbXMge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb3JlLmgtMjM5LVx0c3RydWN0IGllZWU4MDIxMV9odyAqaHc7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb3JlLmgtMjQ1LVx0dTMyIGR3ZWxsX29uX2hvbWVfbXM7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvcmUuaDoyNDY6XHRlbnVtIG1tODF4X2h3X3NjYW5fb3Agb3BlcmF0aW9uO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb3JlLmgtMjQ3LVx0Ym9vbCBzdG9yZTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvcmUuaC0yNjEtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvcmUuaDoyNjI6ZW51bSBtbTgxeF9od19zY2FuX3N0YXRlIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29yZS5oLTI2My1cdEhXX1NDQU5fU1RBVEVfSURMRSxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvcmUuaC0yNjctXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvcmUuaDoyNjg6c3RydWN0IG1tODF4X2h3X3NjYW4ge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb3JlLmg6MjY5Olx0ZW51bSBtbTgxeF9od19zY2FuX3N0YXRlIHN0YXRlO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb3JlLmgtMjcwLVx0c3RydWN0IGNvbXBsZXRpb24gc2Nhbl9kb25lO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb3JlLmg6MjcxOlx0c3RydWN0IG1tODF4X2h3X3NjYW5fcGFyYW1zICpwYXJhbXM7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvcmUuaC0yNzItXHRzdHJ1Y3QgZGVsYXllZF93b3JrIHRpbWVvdXQ7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb3JlLmgtMjc1LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb3JlLmg6Mjc2OmVudW0gbW04MXhfaGlmX2V2ZW50X2ZsYWdzIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29yZS5oLTI3Ny1cdE1NODFYX0hJRl9FVlRfUlhfUEVORCxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvcmUuaC0yODgtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvcmUuaDoyODk6ZW51bSBtbTgxeF9zdGF0ZV9mbGFncyB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvcmUuaC0yOTAtXHRNTTgxWF9TVEFURV9DSElQX1VOUkVTUE9OU0lWRSxcbi0tXG5cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNyAwNTowNDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxODA4NAoJCQkJCQkJb3V0cHV0OiA0MwoJCQkJCQkJdGhvdWdodHM6IDI2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBsZXQmIzM5O3MgZGl2ZSBpbnRvIHRoaXMuIEhlcmUmIzM5O3MgbXkgdGhvdWdodCBwcm9jZXNzIG9uIHRoaXM6CgoqKkFuYWx5emluZyB0aGUgbW04MXggVVNCIERyaXZlcioqCgpBbHJpZ2h0LCBiZWZvcmUgSSBnZXQgdG9vIGRlZXAgaW50byB0aGlzLCBJIG5lZWQgdG8gZ2V0IGEgaGFuZGxlIG9uIHRoZSBiaWdnZXIgcGljdHVyZS4gSSBzaG91bGQgc3RhcnQgd2l0aCB0aGUgS2NvbmZpZyBmaWxlcyBmb3IgdGhlIG1tODF4IHBsYXRmb3JtLCBwYXJ0aWN1bGFybHkgdGhlIHJlbGV2YW50IFVTQiBzZXR0aW5ncy4gSSB3YW50IHRvIHNlZSB3aGF0IG9wdGlvbnMgYXJlIGF2YWlsYWJsZSwgd2hhdCYjMzk7cyBlbmFibGVkIGJ5IGRlZmF1bHQsIGFuZCBob3cgdGhlIGRyaXZlciYjMzk7cyBjb25maWd1cmF0aW9uIGlzIGNvbnRyb2xsZWQgYXQgY29tcGlsZSB0aW1lLiBUaGlzIHdpbGwgZ2l2ZSBtZSBhIGJhc2UgdW5kZXJzdGFuZGluZyBvZiB0aGUgcG9zc2libGUgYnVpbGQgY29uZmlndXJhdGlvbnMgYW5kIGNvbnN0cmFpbnRzLiBUaGVuLCBJIG5lZWQgdG8gb3BlbiB1cCB1c2IuYywgdGhlIGNvcmUgZHJpdmVyIGZpbGUuIEkgbmVlZCB0byBnZXQgaW50byB0aGUgbml0dHktZ3JpdHR5IGFuZCB0cmFjZSB0aGUgcHJvYmUgZnVuY3Rpb24gdG8gc2VlIHRoZSBoYXJkd2FyZSBkZXRlY3Rpb24gcHJvY2Vzcy4gSSYjMzk7bGwgbmVlZCB0byBrbm93OiBob3cgYXJlIHRoZSBVU0IgZGV2aWNlcyBpZGVudGlmaWVkPyBXaGF0IHJlc291cmNlcyBkb2VzIGl0IGFsbG9jYXRlPyBEb2VzIGl0IGhhbmRsZSBwb3dlciBtYW5hZ2VtZW50IGFwcHJvcHJpYXRlbHk/IFdoYXQmIzM5O3MgdGhlIGludGVycnVwdCBoYW5kbGluZyBsaWtlPyBCYXNpY2FsbHksIEkgbmVlZCB0byBmb2xsb3cgdGhlIGRyaXZlciYjMzk7cyBleGVjdXRpb24gcGF0aCBmcm9tIGRldmljZSBkaXNjb3ZlcnkgdGhyb3VnaCBpbml0aWFsaXphdGlvbiB0byBlbnN1cmUgZXZlcnl0aGluZyBpcyB3b3JraW5nIGFzIGV4cGVjdGVkLiBBbmQsIHdoZXJlIGFyZSB0aGUgaW1wb3J0YW50IGRhdGEgc3RydWN0dXJlcyBkZWZpbmVkPyBJcyBpdCBkb2luZyBhbGwgdGhlIHJpZ2h0IGNoZWNrcyBhbmQgZXJyb3IgaGFuZGxpbmc/CgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDcgMDU6MDQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L0tjb25maWcmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAxLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDYwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAgIDE6XHQjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wXG4gICAyOlx0XG4gICAzOlx0Y29uZmlnIE1NODFYXG4gICA0Olx0XHR0cmlzdGF0ZSBcJiMzNDtNb3JzZSBNaWNybyBNTTgxeCB3aXJlbGVzcyBkZXZpY2VzXCYjMzQ7IGlmIENPTVBJTEVfVEVTVFxuICAgNTpcdFx0ZGVwZW5kcyBvbiBNQUM4MDIxMVxuICAgNjpcdFx0c2VsZWN0IEZXX0xPQURFUlxuICAgNzpcdFx0c2VsZWN0IENSQzdcbiAgIDg6XHRcdGhlbHBcbiAgIDk6XHRcdCAgVGhpcyBtb2R1bGUgYWRkcyBzdXBwb3J0IGZvciB3aXJlbGVzcyBkZXZpY2VzIGJhc2VkXG4gIDEwOlx0XHQgIG9uIE1vcnNlIE1pY3JvIE1NODF4eCBjaGlwc2V0cy5cbiAgMTE6XHRcbiAgMTI6XHRjb25maWcgTU04MVhfVVNCXG4gIDEzOlx0XHR0cmlzdGF0ZSBcJiMzNDtNb3JzZSBNaWNybyBNTTgxeCBVU0Igc3VwcG9ydFwmIzM0O1xuICAxNDpcdFx0ZGVwZW5kcyBvbiBNQUM4MDIxMSBcdTAwMjZcdTAwMjYgVVNCXG4gIDE1Olx0XHRzZWxlY3QgTU04MVhcbiAgMTY6XHRcdGhlbHBcbiAgMTc6XHRcdCAgVGhpcyBtb2R1bGUgYWRkcyBzdXBwb3J0IGZvciB0aGUgVVNCIGludGVyZmFjZSBvZlxuICAxODpcdFx0ICBkZXZpY2VzIHVzaW5nIHRoZSBNb3JzZSBNaWNybyBNTTgxeCBjaGlwc2V0LlxuICAxOTpcdFxuICAyMDpcdGNvbmZpZyBNTTgxWF9TRElPXG4gIDIxOlx0XHR0cmlzdGF0ZSBcJiMzNDtNb3JzZSBNaWNybyBNTTgxeCBTRElPIHN1cHBvcnRcJiMzNDtcbiAgMjI6XHRcdGRlcGVuZHMgb24gTUFDODAyMTEgXHUwMDI2XHUwMDI2IE1NQ1xuICAyMzpcdFx0c2VsZWN0IE1NODFYXG4gIDI0Olx0XHRoZWxwXG4gIDI1Olx0XHQgIFRoaXMgbW9kdWxlIGFkZHMgc3VwcG9ydCBmb3IgdGhlIFNESU8gaW50ZXJmYWNlIG9mXG4gIDI2Olx0XHQgIGRldmljZXMgdXNpbmcgdGhlIE1vcnNlIE1pY3JvIE1NODF4IGNoaXBzZXQuXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDcgMDU6MDQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTg3NDIKCQkJCQkJCW91dHB1dDogNDUKCQkJCQkJCXRob3VnaHRzOiAxMDMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqSW5pdGlhbCBBc3Nlc3NtZW50ICZhbXA7IEludmVzdGlnYXRpdmUgUGF0aCoqCgpPa2F5LCBoZXJlJiMzOTtzIHdoYXQgSSYjMzk7bSBzZWVpbmc6IE1NODFYIGhhcyBNTTgxWF9VU0IsIGludGVyZXN0aW5nLiBNeSBpbW1lZGlhdGUgdGhvdWdodCBpcywgY2FuIHdlIGZ1enogdGhpcyB0aGluZyB2aWEgVVNCPyBJJiMzOTttIHRoaW5raW5nIHRvb2xzIGxpa2Ugc3l6a2FsbGVyLCBvciBtYXliZSBldmVuIGxldmVyYWdpbmcgUmF3IEdhZGdldCBvciBhIGR1bW15IEhDRCBzZXR1cCBmb3IgZW11bGF0aW9uLiBCZWZvcmUgSSBnbyB0b28gZGVlcCwgSSBuZWVkIHRvIGNoZWNrIHRoZSBVU0IgY29kZSBhbmQgcHJvYmUgcm91dGluZXMuIExldCYjMzk7cyBzZWUuLi4gSSYjMzk7bGwgZGl2ZSBpbnRvIGB1c2IuY2AgYW5kIHRoZW4gZGlnIGludG8gdGhlIHNwZWNpZmljcyBvZiB0aGUgTU04MVggaW1wbGVtZW50YXRpb24uIFRoYXQmIzM5O2xsIGJlIGluIGBkcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L3VzYi5jYCBhbmQgYGRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29tbWFuZC5jYC4gVGhvc2UgYXJlIHRoZSBsb2dpY2FsIHBsYWNlcyB0byBzdGFydC4gR290dGEgZ2V0IGEgZmVlbCBmb3IgaG93IHRoZXkmIzM5O3JlIGhhbmRsaW5nIFVTQiBjb21tdW5pY2F0aW9uIGFuZCBjb21tYW5kcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD44LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNyAwNTowNDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvdXNiLmMmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAxLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDEwMAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgICAxOlx0Ly8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxuICAgMjpcdC8qXG4gICAzOlx0ICogQ29weXJpZ2h0IChjKSAyMDE3LTIwMjYgTW9yc2UgTWljcm9cbiAgIDQ6XHQgKi9cbiAgIDU6XHQjaW5jbHVkZSBcdTAwM2NsaW51eC9qaWZmaWVzLmhcdTAwM2VcbiAgIDY6XHQjaW5jbHVkZSBcdTAwM2NsaW51eC9tb2R1bGUuaFx1MDAzZVxuICAgNzpcdCNpbmNsdWRlIFx1MDAzY2xpbnV4L3VzYi5oXHUwMDNlXG4gICA4Olx0I2luY2x1ZGUgXCYjMzQ7aGlmLmhcJiMzNDtcbiAgIDk6XHQjaW5jbHVkZSBcJiMzNDtidXMuaFwmIzM0O1xuICAxMDpcdCNpbmNsdWRlIFwmIzM0O21hYy5oXCYjMzQ7XG4gIDExOlx0I2luY2x1ZGUgXCYjMzQ7Y29yZS5oXCYjMzQ7XG4gIDEyOlx0XG4gIDEzOlx0LypcbiAgMTQ6XHQgKiBVUkIgdGltZW91dCBpbiBtaWxsaXNlY29uZHMuIElmIGFuIFVSQiBkb2VzIG5vdCBjb21wbGV0ZSB3aXRoaW4gdGhpc1xuICAxNTpcdCAqIHRpbWUsIGl0IHdpbGwgYmUga2lsbGVkLiBUaGlzIHRpbWVvdXQgbmVlZHMgdG8gYWNjb3VudCBmb3IgVVNCIHN1c3BlbmRhbmRcbiAgMTY6XHQgKiByZXN1bWUgb2NjdXJyaW5nIGJlZm9yZSB0aGUgVVJCIGNhbiBiZSB0cmFuc2ZlcnJlZCwgYW5kIGl0IGFsc28gbmVlZHMgdG9cbiAgMTc6XHQgKiBhY2NvdW50IGZvciB0cmFuc2ZlcnJpbmcgVVNCX01BWF9UUkFOU0ZFUl9TSVpFIGJ5dGVzIG92ZXIgYSBwb3RlbnRpYWxseVxuICAxODpcdCAqIHNsb3csIGNvbmdlc3RlZCBVU0IgRnVsbCBTcGVlZCBsaW5rLlxuICAxOTpcdCAqL1xuICAyMDpcdCNkZWZpbmUgVVJCX1RJTUVPVVRfTVMgMjUwXG4gIDIxOlx0XG4gIDIyOlx0LyogSGlnaCBzcGVlZCBVU0IgMl4oNC0xKSAqIDEyNXVzZWMgPSAxbXNlYyAqL1xuICAyMzpcdCNkZWZpbmUgTU04MVhfVVNCX0lOVEVSUlVQVF9JTlRFUlZBTCA0XG4gIDI0Olx0XG4gIDI1Olx0LyogTWF4IGJ5dGVzIHBlciBVU0IgcmVhZC93cml0ZSAqL1xuICAyNjpcdCNkZWZpbmUgVVNCX01BWF9UUkFOU0ZFUl9TSVpFICgxNiAqIDEwMjQpXG4gIDI3Olx0XG4gIDI4Olx0LyogSU5UIEVQIGJ1ZmZlciBzaXplICovXG4gIDI5Olx0I2RlZmluZSBNTTgxWF9FUF9JTlRfQlVGRkVSX1NJWkUgOFxuICAzMDpcdFxuICAzMTpcdC8qIE1vcnNlIHZlbmRvciBJRHMqL1xuICAzMjpcdCNkZWZpbmUgTU04MVhfVkVORE9SX0lEIDB4MzI1YlxuICAzMzpcdCNkZWZpbmUgTU04MVhfTU04MTBYX1BST0RVQ1RfSUQgMHg4MTAwXG4gIDM0Olx0XG4gIDM1Olx0LyogUG93ZXIgbWFuYWdlbWVudCBydW50aW1lIGF1dG8tc3VzcGVuZCBkZWxheSB2YWx1ZSBpbiBtaWxsaXNlY29uZHMgKi9cbiAgMzY6XHQjZGVmaW5lIFBNX1JVTlRJTUVfQVVUT1NVU1BFTkRfREVMQVlfTVMgMTAwXG4gIDM3Olx0XG4gIDM4Olx0ZW51bSBtbTgxeF91c2JfZW5kcG9pbnRzIHtcbiAgMzk6XHRcdE1NODFYX0VQX0NNRCA9IDAsXG4gIDQwOlx0XHRNTTgxWF9FUF9JTlQsXG4gIDQxOlx0XHRNTTgxWF9FUF9NRU1fUkQsXG4gIDQyOlx0XHRNTTgxWF9FUF9NRU1fV1IsXG4gIDQzOlx0XHRNTTgxWF9FUF9SRUdfUkQsXG4gIDQ0Olx0XHRNTTgxWF9FUF9SRUdfV1IsXG4gIDQ1Olx0XHRNTTgxWF9FUF9FUF9NQVgsXG4gIDQ2Olx0fTtcbiAgNDc6XHRcbiAgNDg6XHRzdHJ1Y3QgbW04MXhfdXNiX2VuZHBvaW50IHtcbiAgNDk6XHRcdHVuc2lnbmVkIGNoYXIgKmJ1ZmZlcjtcbiAgNTA6XHRcdHN0cnVjdCB1cmIgKnVyYjtcbiAgNTE6XHRcdF9fdTggYWRkcjtcbiAgNTI6XHRcdGludCBzaXplO1xuICA1MzpcdH07XG4gIDU0Olx0XG4gIDU1Olx0ZW51bSBtbTgxeF91c2JfZmxhZ3MgeyBNTTgxWF9VU0JfRkxBR19BVFRBQ0hFRCwgTU04MVhfVVNCX0ZMQUdfU1VTUEVOREVEIH07XG4gIDU2Olx0XG4gIDU3Olx0c3RydWN0IG1tODF4X3VzYiB7XG4gIDU4Olx0XHRzdHJ1Y3QgdXNiX2RldmljZSAqdWRldjtcbiAgNTk6XHRcdHN0cnVjdCB1c2JfaW50ZXJmYWNlICppbnRlcmZhY2U7XG4gIDYwOlx0XHRzdHJ1Y3QgbW04MXhfdXNiX2VuZHBvaW50IGVuZHBvaW50c1tNTTgxWF9FUF9FUF9NQVhdO1xuICA2MTpcdFx0aW50IGVycm9ycztcbiAgNjI6XHRcbiAgNjM6XHRcdC8qIHNlcmlhbGlzZSBVU0IgZGV2aWNlIHN0cnVjdCAqL1xuICA2NDpcdFx0c3RydWN0IG11dGV4IGxvY2s7XG4gIDY1Olx0XG4gIDY2Olx0XHQvKiBzZXJpYWxpc2UgVVNCIGJ1cyBhY2Nlc3MgKi9cbiAgNjc6XHRcdHN0cnVjdCBtdXRleCBidXNfbG9jaztcbiAgNjg6XHRcbiAgNjk6XHRcdGJvb2wgb25nb2luZ19jbWQ7XG4gIDcwOlx0XHRib29sIG9uZ29pbmdfcnc7XG4gIDcxOlx0XHR3YWl0X3F1ZXVlX2hlYWRfdCByd19pbl93YWl0O1xuICA3MjpcdFx0dW5zaWduZWQgbG9uZyBmbGFncztcbiAgNzM6XHR9O1xuICA3NDpcdFxuICA3NTpcdGVudW0gbW04MXhfdXNiX2NvbW1hbmRfZGlyZWN0aW9uIHtcbiAgNzY6XHRcdE1NODFYX1VTQl9XUklURSA9IDB4MDAsXG4gIDc3Olx0XHRNTTgxWF9VU0JfUkVBRCA9IDB4ODAsXG4gIDc4Olx0XHRNTTgxWF9VU0JfUkVTRVQgPSAweDAyLFxuICA3OTpcdH07XG4gIDgwOlx0XG4gIDgxOlx0c3RydWN0IG1tODF4X3VzYl9jb21tYW5kIHtcbiAgODI6XHRcdF9fbGUzMiBkaXI7IC8qIE5leHQgQlVMSyBkaXJlY3Rpb24gKi9cbiAgODM6XHRcdF9fbGUzMiBhZGRyZXNzOyAvKiBOZXh0IEJVTEsgYWRkcmVzcyAqL1xuICA4NDpcdFx0X19sZTMyIGxlbmd0aDsgLyogTmV4dCBCVUxLIHNpemUgKi9cbiAgODU6XHR9O1xuICA4NjpcdFxuICA4NzpcdHN0YXRpYyBjb25zdCBzdHJ1Y3QgdXNiX2RldmljZV9pZCBtbTgxeF91c2JfdGFibGVbXSA9IHtcbiAgODg6XHRcdHsgVVNCX0RFVklDRShNTTgxWF9WRU5ET1JfSUQsIE1NODFYX01NODEwWF9QUk9EVUNUX0lEKSB9LFxuICA4OTpcdFx0e30gLyogVGVybWluYXRpbmcgZW50cnkgKi9cbiAgOTA6XHR9O1xuICA5MTpcdFxuICA5MjpcdE1PRFVMRV9ERVZJQ0VfVEFCTEUodXNiLCBtbTgxeF91c2JfdGFibGUpO1xuICA5MzpcdFxuICA5NDpcdHN0YXRpYyB2b2lkIG1tODF4X3VzYl9pcnFfd29yayhzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspXG4gIDk1Olx0e1xuICA5NjpcdFx0c3RydWN0IG1tODF4ICptb3JzID0gY29udGFpbmVyX29mKHdvcmssIHN0cnVjdCBtbTgxeCwgdXNiX2lycV93b3JrKTtcbiAgOTc6XHRcbiAgOTg6XHRcdG1tODF4X2NsYWltX2J1cyhtb3JzKTtcbiAgOTk6XHRcdG1tODF4X2h3X2lycV9oYW5kbGUobW9ycyk7XG4gMTAwOlx0XHRtbTgxeF9yZWxlYXNlX2J1cyhtb3JzKTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD45LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNyAwNTowNDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMDU0NAoJCQkJCQkJb3V0cHV0OiA0NgoJCQkJCQkJdGhvdWdodHM6IDY1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkRpdmluZyBpbnRvIE1vcnNlIE1pY3JvIENvZGUqKgoKT2theSwgc28gSSYjMzk7bSB0YWtpbmcgYSBsb29rIGF0IHRoZSBNb3JzZSBNaWNybyBjb2RlLCBzcGVjaWZpY2FsbHkgdGhlIFVTQiBkcml2ZXIgYW5kIGNvbW1hbmQgaGFuZGxpbmcuIEkgbmVlZCB0byBnZXQgYSBiZXR0ZXIgaGFuZGxlIG9uIGhvdyB0aGUgY29tbXVuaWNhdGlvbiBpcyBzZXQgdXAuIExldCYjMzk7cyBzdGFydCBieSBsb29raW5nIGF0IGBkcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L3VzYi5jYCBhbmQgYGNvbW1hbmQuY2AuIEkmIzM5O20gZ29pbmcgdG8gc3RhcnQgd2l0aCBgY29tbWFuZC5jYCwgc3BlY2lmaWNhbGx5IGFyb3VuZCBsaW5lIDIwMC4gSSB3YW50IHRvIHNlZSBob3cgY29tbWFuZHMgYXJlIGJlaW5nIGJ1aWx0IGFuZCBwcm9jZXNzZWQuIFRoaXMgYXJlYSBwcm9iYWJseSBob2xkcyB0aGUga2V5IHRvIHRoZSBVU0Itc3BlY2lmaWMgaW50ZXJhY3Rpb25zLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNyAwNTowNDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29tbWFuZC5jJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMTQ1LAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDkwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAxNDU6XHRcbiAxNDY6XHRpbnQgbW04MXhfY21kX3Jlc3BfcHJvY2VzcyhzdHJ1Y3QgbW04MXggKm1vcnMsIHN0cnVjdCBza19idWZmICpza2IpXG4gMTQ3Olx0e1xuIDE0ODpcdFx0aW50IGxlbmd0aCwgcmV0ID0gLUVTUkNIOyAvKiBObyBzdWNoIHByb2Nlc3MgKi9cbiAxNDk6XHRcdHN0cnVjdCBtbTgxeF9za2JxICpjbWRfcSA9IG1tODF4X2hpZl9nZXRfdHhfY21kX3F1ZXVlKG1vcnMpO1xuIDE1MDpcdFx0c3RydWN0IGhvc3RfY21kX3Jlc3AgKnNyY19yZXNwID0gKHN0cnVjdCBob3N0X2NtZF9yZXNwICopKHNrYi1cdTAwM2VkYXRhKTtcbiAxNTE6XHRcdHN0cnVjdCBza19idWZmICpjbWRfc2tiID0gTlVMTDtcbiAxNTI6XHRcdHN0cnVjdCBob3N0X2NtZF9yZXNwX2NiICpyZXNwX2NiO1xuIDE1MzpcdFx0c3RydWN0IGhvc3RfY21kX3Jlc3AgKmRlc3RfcmVzcDtcbiAxNTQ6XHRcdHN0cnVjdCBob3N0X2NtZF9yZXEgKnJlcTtcbiAxNTU6XHRcdHUxNiBtZXNzYWdlX2lkID0gMDtcbiAxNTY6XHRcdHUxNiBob3N0X2lkID0gMDtcbiAxNTc6XHRcdHUxNiByZXNwX21lc3NhZ2VfaWQgPSBsZTE2X3RvX2NwdShzcmNfcmVzcC1cdTAwM2VoZHIubWVzc2FnZV9pZCk7XG4gMTU4Olx0XHR1MTYgcmVzcF9ob3N0X2lkID0gbGUxNl90b19jcHUoc3JjX3Jlc3AtXHUwMDNlaGRyLmhvc3RfaWQpO1xuIDE1OTpcdFx0Ym9vbCBpc19sYXRlX3Jlc3BvbnNlID0gZmFsc2U7XG4gMTYwOlx0XG4gMTYxOlx0XHRkZXZfZGJnKG1vcnMtXHUwMDNlZGV2LCBcJiMzNDtFVlQgMHglMDR4OjB4JTA0eFwmIzM0OywgcmVzcF9tZXNzYWdlX2lkLCByZXNwX2hvc3RfaWQpO1xuIDE2MjpcdFxuIDE2MzpcdFx0aWYgKCFIT1NUX0NNRF9JU19SRVNQKHNyY19yZXNwKSkge1xuIDE2NDpcdFx0XHRyZXQgPSBtbTgxeF9tYWNfZXZlbnRfcmVjdihtb3JzLCBza2IpO1xuIDE2NTpcdFx0XHRnb3RvIGV4aXRfZnJlZTtcbiAxNjY6XHRcdH1cbiAxNjc6XHRcbiAxNjg6XHRcdG11dGV4X2xvY2soXHUwMDI2bW9ycy1cdTAwM2VjbWRfbG9jayk7XG4gMTY5Olx0XG4gMTcwOlx0XHRjbWRfc2tiID0gbW04MXhfc2ticV90eF9wZW5kaW5nKGNtZF9xKTtcbiAxNzE6XHRcdGlmIChjbWRfc2tiKSB7XG4gMTcyOlx0XHRcdG1tODF4X3NrYnFfcHVsbF9oZHJfcG9zdF90eChjbWRfc2tiKTtcbiAxNzM6XHRcdFx0cmVxID0gKHN0cnVjdCBob3N0X2NtZF9yZXEgKiljbWRfc2tiLVx1MDAzZWRhdGE7XG4gMTc0Olx0XHRcdG1lc3NhZ2VfaWQgPSBsZTE2X3RvX2NwdShyZXEtXHUwMDNlaGRyLm1lc3NhZ2VfaWQpO1xuIDE3NTpcdFx0XHRob3N0X2lkID0gbGUxNl90b19jcHUocmVxLVx1MDAzZWhkci5ob3N0X2lkKTtcbiAxNzY6XHRcdH1cbiAxNzc6XHRcbiAxNzg6XHRcdC8qXG4gMTc5Olx0XHQgKiBJZiB0aGVyZSBpcyBubyBwZW5kaW5nIGNvbW1hbmQgb3IgdGhlIHNlcXVlbmNlIElEIGRvZXMgbm90IG1hdGNoLFxuIDE4MDpcdFx0ICogdGhpcyBpcyBhIGxhdGUgcmVzcG9uc2UgZm9yIGEgdGltZWQgb3V0IGNvbW1hbmQgd2hpY2ggaGFzIGJlZW5cbiAxODE6XHRcdCAqIGNsZWFuZWQgdXAsIHNvIGp1c3QgZnJlZSB1cCB0aGUgcmVzcG9uc2UuIElmIGEgY29tbWFuZCB3YXMgcmV0cmllZCxcbiAxODI6XHRcdCAqIHRoZSByZXNwb25zZSBtYXkgYmUgZnJvbSB0aGUgcmV0cnkgb3IgZnJvbSB0aGUgb3JpZ2luYWwgY29tbWFuZFxuIDE4MzpcdFx0ICogKGxhdGUgcmVzcG9uc2UpIGJ1dCBub3QgZnJvbSBib3RoIGJlY2F1c2UgdGhlIGZpcm13YXJlIHdpbGwgc2lsZW50bHlcbiAxODQ6XHRcdCAqIGRyb3AgYSByZXRyeSBpZiBpdCByZWNlaXZlZCB0aGUgaW5pdGlhbCByZXF1ZXN0LiBTbyBhIG1pc21hdGNoZWRcbiAxODU6XHRcdCAqIHJldHJ5IGNvdW50ZXIgaXMgdHJlYXRlZCBhcyBhIG1hdGNoZWQgY29tbWFuZCBhbmQgcmVzcG9uc2UuXG4gMTg2Olx0XHQgKi9cbiAxODc6XHRcdGlmICghY21kX3NrYiB8fCBtZXNzYWdlX2lkICE9IHJlc3BfbWVzc2FnZV9pZCB8fFxuIDE4ODpcdFx0ICAgIChob3N0X2lkIFx1MDAyNiBIT1NUX0NNRF9IT1NUX0lEX1NFUV9NQVNLKSAhPVxuIDE4OTpcdFx0XHQgICAgKHJlc3BfaG9zdF9pZCBcdTAwMjYgSE9TVF9DTURfSE9TVF9JRF9TRVFfTUFTSykpIHtcbiAxOTA6XHRcdFx0ZGV2X2Vycihtb3JzLVx1MDAzZWRldixcbiAxOTE6XHRcdFx0XHRcJiMzNDtMYXRlIHJlc3BvbnNlIGZvciB0aW1lZCBvdXQgcmVxIDB4JTA0eDolMDR4IGhhdmUgMHglMDR4OiUwNHggMHglMDR4XCYjMzQ7LFxuIDE5MjpcdFx0XHRcdHJlc3BfbWVzc2FnZV9pZCwgcmVzcF9ob3N0X2lkLCBtZXNzYWdlX2lkLCBob3N0X2lkLFxuIDE5MzpcdFx0XHRcdG1vcnMtXHUwMDNlY21kX3NlcSk7XG4gMTk0Olx0XHRcdGlzX2xhdGVfcmVzcG9uc2UgPSB0cnVlO1xuIDE5NTpcdFx0XHRnb3RvIGV4aXQ7XG4gMTk2Olx0XHR9XG4gMTk3Olx0XHRpZiAoKGhvc3RfaWQgXHUwMDI2IEhPU1RfQ01EX0hPU1RfSURfUkVUUllfTUFTSykgIT1cbiAxOTg6XHRcdCAgICAocmVzcF9ob3N0X2lkIFx1MDAyNiBIT1NUX0NNRF9IT1NUX0lEX1JFVFJZX01BU0spKVxuIDE5OTpcdFx0XHRkZXZfZGJnKG1vcnMtXHUwMDNlZGV2LFxuIDIwMDpcdFx0XHRcdFwmIzM0O0NvbW1hbmQgcmV0cnkgbWlzbWF0Y2ggMHglMDR4OiUwNHggMHglMDR4OiUwNHhcJiMzNDssXG4gMjAxOlx0XHRcdFx0bWVzc2FnZV9pZCwgaG9zdF9pZCwgcmVzcF9tZXNzYWdlX2lkLCByZXNwX2hvc3RfaWQpO1xuIDIwMjpcdFxuIDIwMzpcdFx0cmVzcF9jYiA9IChzdHJ1Y3QgaG9zdF9jbWRfcmVzcF9jYiAqKUlFRUU4MDIxMV9TS0JfQ0IoY21kX3NrYilcbiAyMDQ6XHRcdFx0XHQgIC1cdTAwM2Vkcml2ZXJfZGF0YTtcbiAyMDU6XHRcdGxlbmd0aCA9IHJlc3BfY2ItXHUwMDNlbGVuZ3RoO1xuIDIwNjpcdFx0ZGVzdF9yZXNwID0gcmVzcF9jYi1cdTAwM2VkZXN0X3Jlc3A7XG4gMjA3Olx0XHRpZiAobGVuZ3RoIFx1MDAzZT0gc2l6ZW9mKHN0cnVjdCBob3N0X2NtZF9yZXNwKSBcdTAwMjZcdTAwMjYgZGVzdF9yZXNwKSB7XG4gMjA4Olx0XHRcdHJldCA9IDA7XG4gMjA5Olx0XHRcdGxlbmd0aCA9IG1pbl90KGludCwgbGVuZ3RoLFxuIDIxMDpcdFx0XHRcdCAgICAgICBsZTE2X3RvX2NwdShzcmNfcmVzcC1cdTAwM2VoZHIubGVuKSAmIzQzO1xuIDIxMTpcdFx0XHRcdFx0ICAgICAgIHNpemVvZihzdHJ1Y3QgaG9zdF9jbWRfaGVhZGVyKSk7XG4gMjEyOlx0XHRcdGxlbmd0aCA9IG1pbl90KGludCwgbGVuZ3RoLCBza2ItXHUwMDNlbGVuKTtcbiAyMTM6XHRcdFx0bWVtY3B5KGRlc3RfcmVzcCwgc3JjX3Jlc3AsIGxlbmd0aCk7XG4gMjE0Olx0XHR9IGVsc2Uge1xuIDIxNTpcdFx0XHRyZXQgPSBsZTMyX3RvX2NwdShzcmNfcmVzcC1cdTAwM2VzdGF0dXMpO1xuIDIxNjpcdFx0fVxuIDIxNzpcdFxuIDIxODpcdFx0cmVzcF9jYi1cdTAwM2VyZXQgPSByZXQ7XG4gMjE5Olx0XG4gMjIwOlx0ZXhpdDpcbiAyMjE6XHRcdGlmIChjbWRfc2tiIFx1MDAyNlx1MDAyNiAhaXNfbGF0ZV9yZXNwb25zZSkge1xuIDIyMjpcdFx0XHQvKiBDb21wbGV0ZSBpZiBub3QgYWxyZWFkeSB0aW1lZCBvdXQgKi9cbiAyMjM6XHRcdFx0aWYgKG1vcnMtXHUwMDNlY21kX2NvbXApXG4gMjI0Olx0XHRcdFx0Y29tcGxldGUobW9ycy1cdTAwM2VjbWRfY29tcCk7XG4gMjI1Olx0XHR9XG4gMjI2Olx0XG4gMjI3Olx0XHRtdXRleF91bmxvY2soXHUwMDI2bW9ycy1cdTAwM2VjbWRfbG9jayk7XG4gMjI4Olx0ZXhpdF9mcmVlOlxuIDIyOTpcdFx0ZGV2X2tmcmVlX3NrYihza2IpO1xuIDIzMDpcdFx0cmV0dXJuIDA7XG4gMjMxOlx0fVxuIDIzMjpcdFxuIDIzMzpcdGludCBtbTgxeF9jbWRfc3RhX3N0YXRlKHN0cnVjdCBtbTgxeCAqbW9ycywgc3RydWN0IG1tODF4X3ZpZiAqbW9yc192aWYsIHUxNiBhaWQsXG4gMjM0Olx0XHRcdFx0c3RydWN0IGllZWU4MDIxMV9zdGEgKnN0YSxcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDcgMDU6MDQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjI0OTYKCQkJCQkJCW91dHB1dDogMzkKCQkJCQkJCXRob3VnaHRzOiAxMjMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBQYXRjaCBhbmQgUmVhY2hhYmlsaXR5KioKCk9rYXksIGxldCYjMzk7cyBkaXZlIGludG8gdGhpcy4gVGhlIHRhc2sgYXQgaGFuZCBpcyB0byB1bmRlcnN0YW5kIHRoaXMgcGF0Y2guIEl0IGxvb2tzIGxpa2Ugd2UmIzM5O3JlIGRlYWxpbmcgd2l0aCBhIG1vZGlmaWNhdGlvbiB0byB0aGUgYG1tODF4X2NtZF9yZXNwX3Byb2Nlc3NgIGZ1bmN0aW9uLCB3aGljaCByZXNpZGVzIHdpdGhpbiBgZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb21tYW5kLmNgLiBTcGVjaWZpY2FsbHksIHRoZXkmIzM5O3ZlIGludHJvZHVjZWQgYSBsaW5lOiBgbGVuZ3RoID0gbWluX3QoaW50LCBsZW5ndGgsIHNrYi0mZ3Q7bGVuKTtgIHJpZ2h0IGJlZm9yZSB0aGUgYG1lbWNweWAuIE15IGluaXRpYWwgdGhvdWdodCBpcywgdGhpcyBpcyBsaWtlbHkgYSBzYWZldHkgY2hlY2sgcmVsYXRlZCB0byBidWZmZXIgb3ZlcmZsb3dzLCBidXQgbGV0JiMzOTtzIGJlIHN1cmUuCgpUaGUgY3JpdGljYWwgbmV4dCBzdGVwIGlzIGRldGVybWluaW5nIHRoZSBpbXBhY3QgYW5kIGlmIHRoaXMgaXMgdGhlIG9ubHkgc3BvdCB0aGlzIGNoYW5nZSBpcyBuZWVkZWQuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoZXJlIGBtbTgxeF9jbWRfcmVzcF9wcm9jZXNzYCBpcyBjYWxsZWQgZnJvbS4gSSBuZWVkIHRvIHRyYWNlIHRoZSBjYWxsIHBhdGhzIHRvIGdldCBhIGhhbmRsZSBvbiByZWFjaGFiaWxpdHksIGlkZW50aWZ5IHRoZSBjb250ZXh0LiBGaW5kaW5nIHRoZSBjYWxsZXJzIGdpdmVzIG1lIHRoZSBiaWdnZXIgcGljdHVyZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDcgMDU6MDQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bW04MXhfY21kX3Jlc3BfcHJvY2VzcyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb21tYW5kLmM9MzM9c3RhdGljIGludCBtbTgxeF9jbWRfdHgoc3RydWN0IG1tODF4ICptb3JzLCBzdHJ1Y3QgaG9zdF9jbWRfcmVzcCAqcmVzcCxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuYy0xNDUtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuYzoxNDY6aW50IG1tODF4X2NtZF9yZXNwX3Byb2Nlc3Moc3RydWN0IG1tODF4ICptb3JzLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb21tYW5kLmMtMTQ3LXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuaD00ND1zdHJ1Y3QgaG9zdF9jbWRfZXZlbnQge1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29tbWFuZC5oLTQ4LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb21tYW5kLmg6NDk6aW50IG1tODF4X2NtZF9yZXNwX3Byb2Nlc3Moc3RydWN0IG1tODF4ICptb3JzLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29tbWFuZC5oLTUwLWludCBtbTgxeF9jbWRfYWRkX2lmKHN0cnVjdCBtbTgxeCAqbW9ycywgdTE2ICp2aWZfaWQsIGNvbnN0IHU4ICphZGRyLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvc2ticS5jPTM0OD1zdGF0aWMgdm9pZCBtbTgxeF9za2JxX2Rpc3BhdGNoX3dvcmsoc3RydWN0IHdvcmtfc3RydWN0ICpkaXNwYXRjaF93b3JrKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvc2ticS5jLTM3MS1cdFx0Y2FzZSBNTTgxWF9TS0JfQ0hBTl9DT01NQU5EOlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9za2JxLmM6MzcyOlx0XHRcdG1tODF4X2NtZF9yZXNwX3Byb2Nlc3MobW9ycywgcGZpcnN0KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvc2ticS5jLTM3My1cdFx0XHRicmVhaztcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDcgMDU6MDQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjMzNTgKCQkJCQkJCW91dHB1dDogMzcKCQkJCQkJCXRob3VnaHRzOiA3NwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSBhbmFseXNpcyBvZiBob3cgdGhlIFVTQiBwcm9iZSBhbmQgUlggcGFja2V0IHByb2Nlc3NpbmcgYXJlIGxpa2VseSBmdW5jdGlvbmluZywgYmFzZWQgb24gdGhlIGZpbGUgcGF0aHMgcHJvdmlkZWQuCgoqKkRpc3NlY3RpbmcgdGhlIFVTQiAmYW1wOyBSWCBGbG93KioKCkFscmlnaHQsIGxldCYjMzk7cyBicmVhayB0aGlzIGRvd24uIFRoZSBjb3JlIG9mIHRoZSBVU0IgaW50ZXJmYWNlIGlzIHByb2JhYmx5IGhhbmRsZWQgd2l0aGluIGBkcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L3VzYi5jYC4gVGhpcyBpcyB3aGVyZSB0aGUgaW5pdGlhbCBpbnRlcmFjdGlvbiB3aXRoIHRoZSBVU0IgYnVzIGlzIGRlZmluZWQuIEkmIzM5O2QgZXhwZWN0IHRvIHNlZSB0aGUgVVNCIHByb2JlIGZ1bmN0aW9uIGluIGhlcmUsIGhhbmRsaW5nIGRldmljZSBkZXRlY3Rpb24sIGluaXRpYWxpemF0aW9uLCBhbmQgZHJpdmVyIGF0dGFjaG1lbnQuIEkmIzM5O2xsIG5lZWQgdG8gY29uZmlybSB0aGF0JiMzOTtzIHRoZSBlbnRyeSBwb2ludC4KCk5vdywgdGhlIGludGVyZXN0aW5nIGJpdCDigJMgUlggcGFja2V0IHByb2Nlc3NpbmcuIFRoZSBtb2R1bGUgYGRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgveWFwcy5jYCBsb29rcyBpbW1lZGlhdGVseSBwcm9taXNpbmcuIFRoZSBuYW1lICYjMzQ7eWFwcyYjMzQ7IHByb2JhYmx5IHN0YW5kcyBmb3Igc29tZXRoaW5nIGxpa2UgJiMzNDtZZXQgQW5vdGhlciBQYWNrZXQgU3lzdGVtJiMzNDsgb3IgJiMzNDtZb3VyIEFwcGxpY2F0aW9uIFBhY2tldCBTeXN0ZW0sJiMzNDsgaW5kaWNhdGluZyBhIGN1c3RvbSBwcm90b2NvbCBvciBmcmFtZSBoYW5kbGluZyBsYXllciB0aGF0IGlzIHNwZWNpZmljIHRvIHRoZSBtbTgxeCBoYXJkd2FyZS4gSSB3aWxsIGNhcmVmdWxseSBpbnZlc3RpZ2F0ZSBpdC4KCldpdGhpbiBgeWFwcy5jYCwgYW5kIHBvdGVudGlhbGx5IHJlbGF0ZWQgZmlsZXMgbGlrZSBgeWFwc19ody5jYCBvciBgc2ticS5jYCwgSSYjMzk7bSBhbnRpY2lwYXRpbmcgZmluZGluZyB0aGUgbWVhdCBvZiB0aGUgUlggcGF0aC4gVGhhdCYjMzk7cyBsaWtlbHkgd2hlcmUgdGhlIFVTQiBkYXRhIGZyb20gdGhlIGRldmljZSBpcyBtYXJzaGFsZWQsIGxpa2VseSBpbmNsdWRpbmcgaGFyZHdhcmUgc3BlY2lmaWMgZGVzY3JpcHRvcnMsIHRoZW4gZWl0aGVyIGRlY29kZWQsIGRlLWZyYW1lZCwgb3IgcGFzc2VkIHRvIGEgZ2VuZXJpYyBuZXR3b3JraW5nIHN0YWNrLiBQZXJoYXBzIHRoZXJlIGlzIHNvbWUgb2ZmbG9hZGluZyBoYXBwZW5pbmcgaGVyZS4gVGhlc2UgZmlsZXMgc2hvdWxkIGNvbnRhaW4gdGhlIGxvZ2ljIGZvcjoKCiogICAqKlVTQiBEYXRhIFJlY2VwdGlvbjoqKiBIb3cgdGhlIGRhdGEgc3RyZWFtcyBmcm9tIHRoZSBVU0IgZGV2aWNlIGFyZSByZWNlaXZlZCBhbmQgaW50ZXJwcmV0ZWQuCiogICAqKlBhY2tldCBDb25zdHJ1Y3Rpb246KiogSG93IHJlY2VpdmVkIGRhdGEgaXMgYXNzZW1ibGVkIGludG8gY29tcGxldGUsIHVzYWJsZSBwYWNrZXRzLgoqICAgKipQcm90b2NvbCBEZWNvZGluZzoqKiBBbnkgY3VzdG9tIG9yIGhhcmR3YXJlLXNwZWNpZmljIGRlY29kaW5nIG9mIGRhdGEuCiogICAqKkJ1ZmZlciBNYW5hZ2VtZW50OioqIFRoZSB1c2Ugb2YgYHNrYmAgc3RydWN0dXJlcywgbGlrZWx5IG1hbmFnZWQgYnkgYHNrYnEuY2AsIHRvIHN0b3JlIGFuZCBoYW5kbGUgdGhlIHBhY2tldHMuIFRoaXMgY291bGQgYmUgd2hlcmUgdGhlIERNQSBidWZmZXJzIGFyZSBoYW5kbGVkLgoqICAgKipQYWNrZXQgRmlsdGVyaW5nICZhbXA7IERlbXV4aW5nOioqIFdoZXRoZXIgdGhlcmUgaXMgYW55IGhhcmR3YXJlLWxldmVsIGZpbHRlcmluZyBvciBkZW11bHRpcGxleGluZyBiZWZvcmUgdGhlIHBhY2tldHMgcmVhY2ggdGhlIG5ldHdvcmsgc3RhY2suCgpJIGV4cGVjdCB0byBlbmNvdW50ZXIgYSBmYWlyIGFtb3VudCBvZiBkZXZpY2Utc3BlY2lmaWMgcmVnaXN0ZXIgbWFuaXB1bGF0aW9uIGFuZCBwZXJoYXBzIGRpcmVjdCBtZW1vcnkgYWNjZXNzIChETUEpIGludm9sdmVkIGluIHRoZSBgeWFwc19ody5jYCBmaWxlLiBHaXZlbiB0aGUgbGlrZWx5IHByb3ByaWV0YXJ5IG5hdHVyZSBvZiB0aGlzIGNoaXBzZXQsIHRoZSBjb2RlIGxpa2VseSBjb250YWlucyBvcHRpbWl6YXRpb25zIGFuZCBpZGlvc3luY3Jhc2llcyB0aGF0IG5lY2Vzc2l0YXRlIGNsb3NlIHNjcnV0aW55LiBJIHdpbGwgYmUgbG9va2luZyBmb3IgaGFyZHdhcmUgaW50ZXJydXB0cyBhbmQgYXNzb2NpYXRlZCBJU1JzIGhlcmUsIHdoaWNoIGFyZSBjcml0aWNhbCBmb3IgcmVjZWl2aW5nIHRob3NlIHBhY2tldHMuCgpCYXNpY2FsbHksIEkgbmVlZCB0byBzZWUgaG93IHRoZSBkYXRhIGZsb3dzIGZyb20gdGhlIFVTQiBlbmRwb2ludCB0aHJvdWdoIHRoZXNlIHZhcmlvdXMgbGF5ZXJzIHRvIGdldCB0byB0aGUgbmV0d29ya2luZyBzdGFjay4gSSYjMzk7bSBlc3BlY2lhbGx5IGtlZW4gdG8gc2VlIGhvdyB0aGUgZHJpdmVyIGhhbmRsZXMgcG90ZW50aWFsIGJ1ZmZlciBvdmVyZmxvd3MsIGVycm9yIGNvbmRpdGlvbnMsIGFuZCB0aGUgaW50ZXJhY3Rpb24gd2l0aCB0aGUgVVNCIGRyaXZlciBpdHNlbGYuIEkmIzM5O20gYWxzbyBhbnRpY2lwYXRpbmcgdGhhdCB0aGUgb3ZlcmFsbCBkZXNpZ24gaW5jbHVkZXMgZWZmaWNpZW50IHVzZSBvZiBETUEgZm9yIHRoZSBSWCBwYXRoLCBlc3BlY2lhbGx5IGFzIHRoaXMgaXMgYSB3aXJlbGVzcyBpbnRlcmZhY2UuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA3IDA1OjA0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O21tODF4X3VzYl9wcm9iZSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC91c2IuYz03MTY9c3RhdGljIHZvaWQgbW04MXhfdXJiX2NsZWFudXAoc3RydWN0IG1tODF4ICptb3JzKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvdXNiLmMtNzQ0LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC91c2IuYzo3NDU6c3RhdGljIGludCBtbTgxeF91c2JfcHJvYmUoc3RydWN0IHVzYl9pbnRlcmZhY2UgKmludGVyZmFjZSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvdXNiLmMtNzQ2LVx0XHRcdCAgIGNvbnN0IHN0cnVjdCB1c2JfZGV2aWNlX2lkICppZClcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L3VzYi5jPTkyNT1zdGF0aWMgc3RydWN0IHVzYl9kcml2ZXIgbW04MXhfdXNiX2RyaXZlciA9IHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvdXNiLmMtOTI2LVx0Lm5hbWUgPSBcJiMzNDttbTgxeF91c2JcJiMzNDssXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L3VzYi5jOjkyNzpcdC5wcm9iZSA9IG1tODF4X3VzYl9wcm9iZSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvdXNiLmMtOTI4LVx0LmRpc2Nvbm5lY3QgPSBtbTgxeF91c2JfZGlzY29ubmVjdCxcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDcgMDU6MDQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjQzODAKCQkJCQkJCW91dHB1dDogNDcKCQkJCQkJCXRob3VnaHRzOiAzNQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSBzdW1tYXJ5LCBhcyBpZiBJIHdlcmUgdGhpbmtpbmcgdGhlc2UgdGhvdWdodHM6CgoqKkRpdmluZyBpbnRvIHRoZSBtbTgxeCBVU0IgRHJpdmVyKioKCkFscmlnaHQsIHRpbWUgdG8gZGlnIGludG8gdGhpcyBgbW04MXhgIGRyaXZlci4gSSBuZWVkIHRvIGdldCBhIGhhbmRsZSBvbiB3aGF0JiMzOTtzIGdvaW5nIG9uIHdpdGggdGhpcyBVU0IgaW50ZXJmYWNlLiBTcGVjaWZpY2FsbHksIEkmIzM5O20gZ29pbmcgdG8gc3RhcnQgd2l0aCB0aGUgYG1tODF4X3VzYl9wcm9iZWAgZnVuY3Rpb24uIFRoYXQmIzM5O3MgdGhlIGVudHJ5IHBvaW50LCB0aGUgZmlyc3QgdGhpbmcgdGhhdCBnZXRzIGNhbGxlZCB3aGVuIHRoZSBVU0IgZGV2aWNlIGlzIGNvbm5lY3RlZCwgcmlnaHQ/IEl0JiMzOTtzIGxpa2VseSBnb2luZyB0byBiZSB0aGUgY2VudHJhbCBwb2ludCBmb3IgaW5pdGlhbGl6aW5nIHRoZSBkZXZpY2UsIHNldHRpbmcgdXAgZW5kcG9pbnRzLCBhbmQgcHJvYmFibHkgcmVnaXN0ZXJpbmcgaXQgd2l0aCB0aGUgcmVzdCBvZiB0aGUgd2lyZWxlc3Mgc3Vic3lzdGVtLiBMZXQmIzM5O3Mgc2VlIHdoYXQgc2VjcmV0cyBpdCBob2xkcyBpbiBgZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC91c2IuY2AuIEkgZXhwZWN0IHRvIGZpbmQgdGhlIGNvcmUgZGV2aWNlLXNwZWNpZmljIFVTQiBoYW5kbGluZyB0aGVyZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDcgMDU6MDU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L3VzYi5jJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogNzQ1LAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDEwMAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgNzQ1Olx0c3RhdGljIGludCBtbTgxeF91c2JfcHJvYmUoc3RydWN0IHVzYl9pbnRlcmZhY2UgKmludGVyZmFjZSxcbiA3NDY6XHRcdFx0XHQgICBjb25zdCBzdHJ1Y3QgdXNiX2RldmljZV9pZCAqaWQpXG4gNzQ3Olx0e1xuIDc0ODpcdFx0aW50IHJldDtcbiA3NDk6XHRcdHN0cnVjdCBtbTgxeCAqbW9ycztcbiA3NTA6XHRcdHN0cnVjdCBtbTgxeF91c2IgKm11c2I7XG4gNzUxOlx0XG4gNzUyOlx0XHRtb3JzID0gbW04MXhfY29yZV9hbGxvYyhzaXplb2YoKm11c2IpLCBcdTAwMjZpbnRlcmZhY2UtXHUwMDNlZGV2KTtcbiA3NTM6XHRcdGlmICghbW9ycylcbiA3NTQ6XHRcdFx0cmV0dXJuIC1FTk9NRU07XG4gNzU1Olx0XG4gNzU2Olx0XHRtb3JzLVx1MDAzZWJ1c19vcHMgPSBcdTAwMjZtbTgxeF91c2Jfb3BzO1xuIDc1NzpcdFx0bW9ycy1cdTAwM2VidXNfdHlwZSA9IE1NODFYX0JVU19UWVBFX1VTQjtcbiA3NTg6XHRcbiA3NTk6XHRcdG11c2IgPSAoc3RydWN0IG1tODF4X3VzYiAqKW1vcnMtXHUwMDNlZHJ2X3ByaXY7XG4gNzYwOlx0XHRtdXNiLVx1MDAzZXVkZXYgPSB1c2JfZ2V0X2RldihpbnRlcmZhY2VfdG9fdXNiZGV2KGludGVyZmFjZSkpO1xuIDc2MTpcdFx0bXVzYi1cdTAwM2VpbnRlcmZhY2UgPSB1c2JfZ2V0X2ludGYoaW50ZXJmYWNlKTtcbiA3NjI6XHRcbiA3NjM6XHRcdG11dGV4X2luaXQoXHUwMDI2bXVzYi1cdTAwM2Vsb2NrKTtcbiA3NjQ6XHRcdG11dGV4X2luaXQoXHUwMDI2bXVzYi1cdTAwM2VidXNfbG9jayk7XG4gNzY1Olx0XHRpbml0X3dhaXRxdWV1ZV9oZWFkKFx1MDAyNm11c2ItXHUwMDNlcndfaW5fd2FpdCk7XG4gNzY2Olx0XHR1c2Jfc2V0X2ludGZkYXRhKGludGVyZmFjZSwgbW9ycyk7XG4gNzY3Olx0XG4gNzY4Olx0XHRyZXQgPSBtbTgxeF91c2JfZGV0ZWN0X2VuZHBvaW50cyhtb3JzLCBpbnRlcmZhY2UpO1xuIDc2OTpcdFx0aWYgKHJldCBcdTAwM2MgMClcbiA3NzA6XHRcdFx0Z290byBlcnJfY29yZV9mcmVlO1xuIDc3MTpcdFxuIDc3MjpcdFx0c2V0X2JpdChNTTgxWF9VU0JfRkxBR19BVFRBQ0hFRCwgXHUwMDI2bXVzYi1cdTAwM2VmbGFncyk7XG4gNzczOlx0XG4gNzc0Olx0XHRyZXQgPSBtbTgxeF9jb3JlX2luaXQobW9ycyk7XG4gNzc1Olx0XHRpZiAocmV0KVxuIDc3NjpcdFx0XHRnb3RvIGVycl91cmJfY2xlYW51cDtcbiA3Nzc6XHRcbiA3Nzg6XHRcdElOSVRfV09SSyhcdTAwMjZtb3JzLVx1MDAzZXVzYl9pcnFfd29yaywgbW04MXhfdXNiX2lycV93b3JrKTtcbiA3Nzk6XHRcbiA3ODA6XHRcdHJldCA9IG1tODF4X3VzYl9pbnRfZW5hYmxlKG1vcnMpO1xuIDc4MTpcdFx0aWYgKHJldClcbiA3ODI6XHRcdFx0Z290byBlcnJfY29yZV9kZWluaXQ7XG4gNzgzOlx0XG4gNzg0Olx0XHRyZXQgPSBtbTgxeF9jb3JlX3JlZ2lzdGVyKG1vcnMpO1xuIDc4NTpcdFx0aWYgKHJldClcbiA3ODY6XHRcdFx0Z290byBlcnJfdXNiX2ludF9zdG9wO1xuIDc4NzpcdFxuIDc4ODpcdFx0LyogVVNCIHJlcXVpcmVzIHJlbW90ZSB3YWtldXAgZnVuY3Rpb25hbGl0eSBmb3Igc3VzcGVuZCAqL1xuIDc4OTpcdFx0Y2xlYXJfYml0KE1NODFYX1VTQl9GTEFHX1NVU1BFTkRFRCwgXHUwMDI2bXVzYi1cdTAwM2VmbGFncyk7XG4gNzkwOlx0XHRtdXNiLVx1MDAzZWludGVyZmFjZS1cdTAwM2VuZWVkc19yZW1vdGVfd2FrZXVwID0gMTtcbiA3OTE6XHRcdHVzYl9lbmFibGVfYXV0b3N1c3BlbmQobXVzYi1cdTAwM2V1ZGV2KTtcbiA3OTI6XHRcdHBtX3J1bnRpbWVfc2V0X2F1dG9zdXNwZW5kX2RlbGF5KFx1MDAyNm11c2ItXHUwMDNldWRldi1cdTAwM2VkZXYsXG4gNzkzOlx0XHRcdFx0XHRcdCBQTV9SVU5USU1FX0FVVE9TVVNQRU5EX0RFTEFZX01TKTtcbiA3OTQ6XHRcbiA3OTU6XHRcdHVzYl9hdXRvcG1fZ2V0X2ludGVyZmFjZShpbnRlcmZhY2UpO1xuIDc5NjpcdFx0cmV0dXJuIDA7XG4gNzk3Olx0XG4gNzk4Olx0ZXJyX3VzYl9pbnRfc3RvcDpcbiA3OTk6XHRcdG1tODF4X3VzYl9pbnRfc3RvcChtb3JzKTtcbiA4MDA6XHRlcnJfY29yZV9kZWluaXQ6XG4gODAxOlx0XHRtbTgxeF9jb3JlX2RlaW5pdChtb3JzKTtcbiA4MDI6XHRlcnJfdXJiX2NsZWFudXA6XG4gODAzOlx0XHRtbTgxeF91cmJfY2xlYW51cChtb3JzKTtcbiA4MDQ6XHRlcnJfY29yZV9mcmVlOlxuIDgwNTpcdFx0bW04MXhfY29yZV9mcmVlKG1vcnMpO1xuIDgwNjpcdFx0dXNiX3B1dF9pbnRmKGludGVyZmFjZSk7XG4gODA3Olx0XHR1c2JfcHV0X2RldihpbnRlcmZhY2VfdG9fdXNiZGV2KGludGVyZmFjZSkpO1xuIDgwODpcdFx0cmV0dXJuIHJldDtcbiA4MDk6XHR9XG4gODEwOlx0XG4gODExOlx0c3RhdGljIHZvaWQgbW04MXhfdXNiX2Rpc2Nvbm5lY3Qoc3RydWN0IHVzYl9pbnRlcmZhY2UgKmludGVyZmFjZSlcbiA4MTI6XHR7XG4gODEzOlx0XHRzdHJ1Y3QgbW04MXggKm1vcnMgPSB1c2JfZ2V0X2ludGZkYXRhKGludGVyZmFjZSk7XG4gODE0Olx0XHRzdHJ1Y3QgbW04MXhfdXNiICptdXNiID0gKHN0cnVjdCBtbTgxeF91c2IgKiltb3JzLVx1MDAzZWRydl9wcml2O1xuIDgxNTpcdFx0aW50IG1pbm9yID0gaW50ZXJmYWNlLVx1MDAzZW1pbm9yO1xuIDgxNjpcdFx0c3RydWN0IHVzYl9kZXZpY2UgKnVkZXYgPSBpbnRlcmZhY2VfdG9fdXNiZGV2KGludGVyZmFjZSk7XG4gODE3Olx0XG4gODE4Olx0XHRpZiAodWRldi1cdTAwM2VzdGF0ZSA9PSBVU0JfU1RBVEVfTk9UQVRUQUNIRUQpIHtcbiA4MTk6XHRcdFx0Y2xlYXJfYml0KE1NODFYX1VTQl9GTEFHX0FUVEFDSEVELCBcdTAwMjZtdXNiLVx1MDAzZWZsYWdzKTtcbiA4MjA6XHRcdFx0c2V0X2JpdChNTTgxWF9TVEFURV9DSElQX1VOUkVTUE9OU0lWRSwgXHUwMDI2bW9ycy1cdTAwM2VzdGF0ZV9mbGFncyk7XG4gODIxOlx0XHRcdGRldl9kYmcobW9ycy1cdTAwM2VkZXYsIFwmIzM0O1VTQiBzdWRkZW5seSB1bnBsdWdnZWRcJiMzNDspO1xuIDgyMjpcdFx0fVxuIDgyMzpcdFxuIDgyNDpcdFx0dXNiX2Rpc2FibGVfYXV0b3N1c3BlbmQodWRldik7XG4gODI1Olx0XG4gODI2Olx0XHRpZiAodGVzdF9iaXQoTU04MVhfVVNCX0ZMQUdfU1VTUEVOREVELCBcdTAwMjZtdXNiLVx1MDAzZWZsYWdzKSkge1xuIDgyNzpcdFx0XHRkZXZfZGJnKG1vcnMtXHUwMDNlZGV2LCBcJiMzNDtVU0Igd2FzIHN1c3BlbmRlZDogcmVsZWFzZSBsb2Nrc1wmIzM0Oyk7XG4gODI4Olx0XHRcdG1tODF4X3VzYl9yZWxlYXNlX2J1cyhtb3JzKTtcbiA4Mjk6XHRcdFx0bXV0ZXhfdW5sb2NrKFx1MDAyNm11c2ItXHUwMDNlbG9jayk7XG4gODMwOlx0XHR9XG4gODMxOlx0XG4gODMyOlx0XHRjbGVhcl9iaXQoTU04MVhfVVNCX0ZMQUdfU1VTUEVOREVELCBcdTAwMjZtdXNiLVx1MDAzZWZsYWdzKTtcbiA4MzM6XHRcbiA4MzQ6XHRcdG1tODF4X2NvcmVfdW5yZWdpc3Rlcihtb3JzKTtcbiA4MzU6XHRcdG1tODF4X3VzYl9pbnRfc3RvcChtb3JzKTtcbiA4MzY6XHRcdG1tODF4X2NvcmVfZGVpbml0KG1vcnMpO1xuIDgzNzpcdFx0bW04MXhfdXJiX2NsZWFudXAobW9ycyk7XG4gODM4Olx0XHRtbTgxeF9jb3JlX2ZyZWUobW9ycyk7XG4gODM5Olx0XG4gODQwOlx0XHR1c2JfYXV0b3BtX3B1dF9pbnRlcmZhY2UoaW50ZXJmYWNlKTtcbiA4NDE6XHRcdHVzYl9zZXRfaW50ZmRhdGEoaW50ZXJmYWNlLCBOVUxMKTtcbiA4NDI6XHRcdGRldl9pbmZvKFx1MDAyNmludGVyZmFjZS1cdTAwM2VkZXYsIFwmIzM0O1VTQiBNb3JzZSAjJWQgbm93IGRpc2Nvbm5lY3RlZFwmIzM0OywgbWlub3IpO1xuIDg0MzpcdFx0dXNiX3B1dF9pbnRmKGludGVyZmFjZSk7XG4gODQ0Olx0XHR1c2JfcHV0X2Rldih1ZGV2KTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNy8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDcgMDU6MDU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjFtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjYzMzQKCQkJCQkJCW91dHB1dDogNDUKCQkJCQkJCXRob3VnaHRzOiAxNjYKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgSW5pdGlhbCBBc3Nlc3NtZW50IG9mIHRoZSBNTTgxeCBVU0IgRHJpdmVyKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCBgbW04MXhfdXNiX3Byb2JlYC4gTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMsIHRoaXMgaXMgdGhlIGVudHJ5IHBvaW50IGZvciB0aGUgVVNCIGludGVyZmFjZS4gSXQmIzM5O3MgZ29pbmcgdG8gcHJvYmUgdGhlIGRldmljZSwgcHJlc3VtYWJseSBpZGVudGlmeSBpdCwgYW5kIHRoZW4gbGlrZWx5IHJlZ2lzdGVyIHRoZSBtYWM4MDIxMSBkZXZpY2UgdXNpbmcgYG1tODF4X2NvcmVfcmVnaXN0ZXJgLiBBZnRlciB0aGF0LCBJIHdvdWxkIGV4cGVjdCBpdCB0byBoYW5kbGUgY29tbXVuaWNhdGlvbiwgbGlrZWx5IHRocm91Z2ggVVNCIGVuZHBvaW50cy4gU3RhbmRhcmQgc3R1ZmYuCgpOb3csIHRoZSBpbnRlcmVzdGluZyBiaXQuIFdlIGhhdmUgVVNCIGVtdWxhdGlvbiB2aWEgdGhlIHN5emthbGxlciBVU0IgUmF3IEdhZGdldCwgYW5kIGl0IHNlZW1zIGxpa2UgaXQmIzM5O3MgZGVzaWduZWQgdG8gZW11bGF0ZSBhIGRldmljZSB3aXRoIHRoZSB2ZW5kb3IgYW5kIHByb2R1Y3QgSURzIDB4MzI1YiBhbmQgMHg4MTAwLCB3aGljaCBjb3JyZXNwb25kIHRvIGBNTTgxWF9WRU5ET1JfSURgIGFuZCBgTU04MVhfTU04MTBYX1BST0RVQ1RfSURgLiBTbywgdGhlIG1pbGxpb24tZG9sbGFyIHF1ZXN0aW9uOiAqY2FuKiB3ZSBpbml0aWFsaXplIHRoaXMgZHJpdmVyIHVzaW5nIHRoYXQgZW11bGF0aW9uPyBPciwgZG9lcyBpdCBoYXZlIHNvbWUgc3BlY2lmaWMgaGFyZHdhcmUgZGVwZW5kZW5jaWVzIHRoYXQgd2UgbmVlZCB0byBhY2NvdW50IGZvcj8gSSBuZWVkIHRvIGZpZ3VyZSB0aGF0IG91dC4KClRvIGRvIHRoYXQsIEkmIzM5O2xsIGdvIHN0cmFpZ2h0IHRvIGBtbTgxeF9jb3JlX2luaXRgIGluIGBkcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvcmUuY2AuIFRoYXQmIzM5O3Mgd2hlcmUgdGhlIGNvcmUgaW5pdGlhbGl6YXRpb24gbG9naWMgc2hvdWxkIHJlc2lkZSwgYW5kIHRoYXQgc2hvdWxkIGJlIHRoZSBwbGFjZSB0byBzdGFydCBkcmlsbGluZyBkb3duIGludG8gYW55IHBvdGVudGlhbCBoYXJkd2FyZSBkZXBlbmRlbmNpZXMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA3IDA1OjA2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb3JlLmMmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiA2MCwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiA1MAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgIDYwOlx0XG4gIDYxOlx0c3RydWN0IG1tODF4ICptbTgxeF9jb3JlX2FsbG9jKHNpemVfdCBwcml2X3NpemUsIHN0cnVjdCBkZXZpY2UgKmRldilcbiAgNjI6XHR7XG4gIDYzOlx0XHRyZXR1cm4gbW04MXhfbWFjX2FsbG9jKHByaXZfc2l6ZSwgZGV2KTtcbiAgNjQ6XHR9XG4gIDY1Olx0RVhQT1JUX1NZTUJPTF9HUEwobW04MXhfY29yZV9hbGxvYyk7XG4gIDY2Olx0XG4gIDY3Olx0aW50IG1tODF4X2NvcmVfaW5pdChzdHJ1Y3QgbW04MXggKm1vcnMpXG4gIDY4Olx0e1xuICA2OTpcdFx0aW50IHJldDtcbiAgNzA6XHRcbiAgNzE6XHRcdHNldF9iaXQoTU04MVhfU1RBVEVfQ0hJUF9VTlJFU1BPTlNJVkUsIFx1MDAyNm1vcnMtXHUwMDNlc3RhdGVfZmxhZ3MpO1xuICA3MjpcdFx0c2V0X2JpdChNTTgxWF9TVEFURV9SRUxPQURfRldfQUZURVJfU1RBUlQsIFx1MDAyNm1vcnMtXHUwMDNlc3RhdGVfZmxhZ3MpO1xuICA3MzpcdFxuICA3NDpcdFx0bW04MXhfY29yZV9pbml0X21hY19hZGRyKG1vcnMpO1xuICA3NTpcdFxuICA3NjpcdFx0cmV0ID0gbW04MXhfY29yZV9hdHRhY2hfcmVncyhtb3JzKTtcbiAgNzc6XHRcdGlmIChyZXQpXG4gIDc4Olx0XHRcdHJldHVybiByZXQ7XG4gIDc5Olx0XG4gIDgwOlx0XHRtb3JzLVx1MDAzZWNoaXBfd3EgPSBjcmVhdGVfc2luZ2xldGhyZWFkX3dvcmtxdWV1ZShcJiMzNDtjaGlwX3dxXCYjMzQ7KTtcbiAgODE6XHRcdGlmICghbW9ycy1cdTAwM2VjaGlwX3dxKVxuICA4MjpcdFx0XHRyZXR1cm4gLUVOT01FTTtcbiAgODM6XHRcbiAgODQ6XHRcdG1vcnMtXHUwMDNlbmV0X3dxID0gY3JlYXRlX3NpbmdsZXRocmVhZF93b3JrcXVldWUoXCYjMzQ7bmV0X3dxXCYjMzQ7KTtcbiAgODU6XHRcdGlmICghbW9ycy1cdTAwM2VuZXRfd3EpIHtcbiAgODY6XHRcdFx0cmV0ID0gLUVOT01FTTtcbiAgODc6XHRcdFx0Z290byBlcnJfY2hpcF93cTtcbiAgODg6XHRcdH1cbiAgODk6XHRcbiAgOTA6XHRcdHJldCA9IG1tODF4X2hpZl9pbml0KG1vcnMpO1xuICA5MTpcdFx0aWYgKHJldClcbiAgOTI6XHRcdFx0Z290byBlcnJfd3FzO1xuICA5MzpcdFxuICA5NDpcdFx0cmV0dXJuIDA7XG4gIDk1Olx0XG4gIDk2Olx0ZXJyX3dxczpcbiAgOTc6XHRcdGZsdXNoX3dvcmtxdWV1ZShtb3JzLVx1MDAzZW5ldF93cSk7XG4gIDk4Olx0XHRkZXN0cm95X3dvcmtxdWV1ZShtb3JzLVx1MDAzZW5ldF93cSk7XG4gIDk5Olx0XG4gMTAwOlx0ZXJyX2NoaXBfd3E6XG4gMTAxOlx0XHRmbHVzaF93b3JrcXVldWUobW9ycy1cdTAwM2VjaGlwX3dxKTtcbiAxMDI6XHRcdGRlc3Ryb3lfd29ya3F1ZXVlKG1vcnMtXHUwMDNlY2hpcF93cSk7XG4gMTAzOlx0XG4gMTA0Olx0XHRyZXR1cm4gcmV0O1xuIDEwNTpcdH1cbiAxMDY6XHRFWFBPUlRfU1lNQk9MX0dQTChtbTgxeF9jb3JlX2luaXQpO1xuIDEwNzpcdFxuIDEwODpcdGludCBtbTgxeF9jb3JlX3JlZ2lzdGVyKHN0cnVjdCBtbTgxeCAqbW9ycylcbiAxMDk6XHR7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA3IDA1OjA2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI3NTUxCgkJCQkJCQlvdXRwdXQ6IDM4CgkJCQkJCQl0aG91Z2h0czogMTg2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgUG90ZW50aWFsIGZvciBGdXp6aW5nIHRoZSBNTTgxWCBVU0IgV2lyZWxlc3MgRHJpdmVyKioKCk9rYXksIGxldCYjMzk7cyBicmVhayB0aGlzIGRvd24uIEZpcnN0LCBJIG5lZWQgdG8gbG9vayBhdCBjYXNlcyAyIGFuZCAzLCBmb2N1c2luZyBvbiB3aGVuIHdlICpzaG91bGQqIHJldHVybiBgV29ydGhGdXp6aW5nPWZhbHNlYCBhbmQgYFdvcnRoRnV6emluZz10cnVlYCwgcmVzcGVjdGl2ZWx5LiBNeSBnb2FsIGlzIHRvIGRldGVybWluZSBpZiBmdXp6aW5nIHRoaXMgZHJpdmVyIGlzIGV2ZW4gZmVhc2libGUuIEkgbmVlZCB0byB1bmRlcnN0YW5kIGlmIHRoZSBkcml2ZXIgaXMgcmVhY2hhYmxlLgoKUmlnaHQsIHNvIHdlJiMzOTtyZSB0YWxraW5nIGFib3V0IGRyaXZlcnMgdGhhdCBhcmUgYWNjZXNzaWJsZSB0aHJvdWdoIHZpcnR1YWwgYnVzZXMuIFRoaW5raW5nIHNwZWNpZmljYWxseSBhYm91dCB0aGlzIE1NODFYIGRyaXZlciwgSSBuZWVkIHRvIGNvbnNpZGVyIGFsbCB0aGUgdmFyaW91cyBidXMgdHlwZXMgdGhhdCBzeXprYWxsZXIgc3VwcG9ydHMgLSB2aXJ0aW8sIFVTQiBnYWRnZXQsIGxvb3BiYWNrLCBuZXRsaW5rLCBiaW5kZXIsIHNvY2tldHMsIGV0Yy4gVGhlIGdvb2QgbmV3cyBpcyB0aGF0IFVTQiB3aXJlbGVzcyBkcml2ZXJzICphcmUqIHJlYWNoYWJsZSB0aHJvdWdoIHN5emthbGxlciYjMzk7cyBVU0IgZnV6emluZyBjYXBhYmlsaXRpZXMsIGVzcGVjaWFsbHkgd2l0aCB0aGUgUmF3IEdhZGdldCBvciBkdW1teV9oY2Qgc2V0dXBzLiBUaGF0JiMzOTtzIGEgZ29vZCBzdGFydGluZyBwb2ludC4KCk5vdywgdGhlIGltcG9ydGFudCBwYXJ0OiBjb25maWd1cmF0aW9uIGRlcGVuZGVuY2llcy4gSSBuZWVkIHRvIGRldGVybWluZSB3aGF0IGtlcm5lbCBjb25maWd1cmF0aW9ucyBhcmUgYWJzb2x1dGVseSByZXF1aXJlZCBmb3IgdGhpcyBkcml2ZXIgdG8gYmUgYnVpbHQgYW5kLCBtb3JlIGltcG9ydGFudGx5LCAqYWN0aXZlKi4gSSYjMzk7bSBkaXZpbmcgaW50byB0aGUgS2NvbmZpZyBmaWxlcywgc3RhcnRpbmcgd2l0aCBgZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9LY29uZmlnYC4gVGhpcyBpcyB3aGVyZSB0aGUgY29yZSBsb2dpYyBsaWVzLiBCaW5nbywgYE1NODFYX1VTQmAgZGVwZW5kcyBvbiBgTUFDODAyMTEgJmFtcDsmYW1wOyBVU0JgIGFuZCBzZWxlY3RzIGBNTTgxWGAuIFRoaXMgbWVhbnMgd2UgbmVlZCB0aGUgTUFDODAyMTEgd2lyZWxlc3Mgc3RhY2sgYW5kIFVTQiBzdXBwb3J0IGVuYWJsZWQgaW4gdGhlIGtlcm5lbCBjb25maWcgZm9yIHRoaXMgTU04MVggVVNCIGRyaXZlciB0byBldmVuIGJlIGNvbXBpbGVkLiBFeGNlbGxlbnQuIEkgYWxzbyBzZWUgYFdMQU5fVkVORE9SX01PUlNFTUlDUk9gIGluIGBkcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL0tjb25maWdgLCBzbyBJIG5lZWQgdG8gY2hlY2sgaXQsIHRvby4gVGhpcyBpcyB0aGUgY3J1Y2lhbCBpbmZvcm1hdGlvbiBmb3IgbWFraW5nIGluZm9ybWVkIGRlY2lzaW9ucy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDcgMDU6MDY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL0tjb25maWcmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAxLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDIwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAgIDE6XHQjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcbiAgIDI6XHRjb25maWcgV0xBTl9WRU5ET1JfTU9SU0VNSUNST1xuICAgMzpcdFx0Ym9vbCBcJiMzNDtNb3JzZSBNaWNybyBkZXZpY2VzXCYjMzQ7XG4gICA0Olx0XHRkZWZhdWx0IHlcbiAgIDU6XHRcdGhlbHBcbiAgIDY6XHRcdCAgSWYgeW91IGhhdmUgYSB3aXJlbGVzcyBjYXJkIGJlbG9uZ2luZyB0byB0aGlzIGNsYXNzLCBzYXkgWS5cbiAgIDc6XHRcbiAgIDg6XHRcdCAgTm90ZSB0aGF0IHRoZSBhbnN3ZXIgdG8gdGhpcyBxdWVzdGlvbiBkb2VzbiYjMzk7dCBkaXJlY3RseSBhZmZlY3QgdGhlXG4gICA5Olx0XHQgIGtlcm5lbDogc2F5aW5nIE4gd2lsbCBqdXN0IGNhdXNlIHRoZSBjb25maWd1cmF0b3IgdG8gc2tpcCBhbGwgdGhlXG4gIDEwOlx0XHQgIHF1ZXN0aW9ucyBhYm91dCB0aGVzZSBjYXJkcy4gSWYgeW91IHNheSBZLCB5b3Ugd2lsbCBiZSBhc2tlZCBmb3JcbiAgMTE6XHRcdCAgeW91ciBzcGVjaWZpYyBjYXJkIGluIHRoZSBmb2xsb3dpbmcgcXVlc3Rpb25zLlxuICAxMjpcdFxuICAxMzpcdGlmIFdMQU5fVkVORE9SX01PUlNFTUlDUk9cbiAgMTQ6XHRzb3VyY2UgXCYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9LY29uZmlnXCYjMzQ7XG4gIDE1Olx0ZW5kaWYgIyBXTEFOX1ZFTkRPUl9NT1JTRU1JQ1JPXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA3IDA1OjA2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI4Mzk0CgkJCQkJCQlvdXRwdXQ6IDM0CgkJCQkJCQl0aG91Z2h0czogMjkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhhdCB0aG91Z2h0IHByb2Nlc3MsIGFzIGlmIGl0IHdlcmUgbXkgb3duOgoKKipJbnZlc3RpZ2F0aW5nIGEgUG90ZW50aWFsIERlcGVuZGVuY3kqKgoKQWxyaWdodCwgSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGRlcGVuZGVuY2llcyByZWxhdGVkIHRvIGBXTEFOX1ZFTkRPUl9NT1JTRU1JQ1JPYC4gVG8gZ2V0IGEgY2xlYXIgcGljdHVyZSBvZiBpdHMgY29uZmlndXJhdGlvbiBvcHRpb25zLCBJIHNob3VsZCBwcm9iYWJseSBjaGVjayB0aGUgYGRyaXZlcnMvbmV0L3dpcmVsZXNzL0tjb25maWdgIGZpbGUuIFRoYXQmIzM5O3MgdXN1YWxseSB0aGUgcGxhY2Ugd2hlcmUgdGhlc2Ugc29ydHMgb2YgdGhpbmdzIGFyZSBkZWZpbmVkIGFuZCB3aGVyZSBJJiMzOTtsbCBmaW5kIGl0cyBhc3NvY2lhdGVkIGRlcGVuZGVuY2llcywgaWYgYW55LiBJIHdhbnQgdG8gc2VlIGlmIHRoaXMgcGFydGljdWxhciB2ZW5kb3Igb3B0aW9uIGhhcyBhbnkgc3BlY2lmaWMgcmVxdWlyZW1lbnRzIG9uIG90aGVyIGtlcm5lbCBtb2R1bGVzIG9yIGZlYXR1cmVzLiBVbmRlcnN0YW5kaW5nIHRoZSBkZXBlbmRlbmNpZXMgaXMgY3JpdGljYWwgZm9yIHByb3Blcmx5IGNvbmZpZ3VyaW5nIHRoaXMgZm9yIGEgYnVpbGQsIG9yIHRyb3VibGVzaG9vdGluZyBhbnkgcG90ZW50aWFsIGNvbmZsaWN0cyBkb3duIHRoZSBsaW5lLiBMZXQmIzM5O3Mgc2VlIHdoYXQgYEtjb25maWdgIHJldmVhbHMuLi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDcgMDU6MDY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7V0xBTl9WRU5ET1JfTU9SU0VNSUNSTyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL01ha2VmaWxlPTE0PW9iai0kKENPTkZJR19XTEFOX1ZFTkRPUl9NSUNST0NISVApICYjNDM7PSBtaWNyb2NoaXAvXG5kcml2ZXJzL25ldC93aXJlbGVzcy9NYWtlZmlsZToxNTpvYmotJChDT05GSUdfV0xBTl9WRU5ET1JfTU9SU0VNSUNSTykgJiM0Mzs9IG1vcnNlbWljcm8vXG5kcml2ZXJzL25ldC93aXJlbGVzcy9NYWtlZmlsZS0xNi1vYmotJChDT05GSUdfV0xBTl9WRU5ET1JfTlhQKSAmIzQzOz0gbnhwL1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vS2NvbmZpZy0xLSMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9LY29uZmlnOjI6Y29uZmlnIFdMQU5fVkVORE9SX01PUlNFTUlDUk9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vS2NvbmZpZy0zLVx0Ym9vbCBcJiMzNDtNb3JzZSBNaWNybyBkZXZpY2VzXCYjMzQ7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9LY29uZmlnLTEyLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9LY29uZmlnOjEzOmlmIFdMQU5fVkVORE9SX01PUlNFTUlDUk9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vS2NvbmZpZy0xNC1zb3VyY2UgXCYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9LY29uZmlnXCYjMzQ7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL0tjb25maWc6MTU6ZW5kaWYgIyBXTEFOX1ZFTkRPUl9NT1JTRU1JQ1JPXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA3IDA1OjA2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI4OTA0CgkJCQkJCQlvdXRwdXQ6IDI4CgkJCQkJCQl0aG91Z2h0czogMzQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGxldCYjMzk7cyBkaXZlIGludG8gdGhpcy4gSGVyZSYjMzk7cyBob3cgSSYjMzk7ZCBhcHByb2FjaCB0aGlzIHRhc2ssIGFzIGlmIHRoZXNlIHdlcmUgbXkgaW50ZXJuYWwgdGhvdWdodHM6CgoqKkludmVzdGlnYXRpbmcgV2lyZWxlc3MgTmV0d29ya2luZyBDb25maWd1cmF0aW9uKioKCkFscmlnaHQsIEkgbmVlZCB0byBnZXQgYSBoYW5kbGUgb24gdGhlIG92ZXJhbGwgd2lyZWxlc3MgbmV0d29ya2luZyBjb25maWd1cmF0aW9uIHdpdGhpbiB0aGlzIHN5c3RlbS4gTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMgdG8gc3RhcnQgd2l0aCB0aGUgS2NvbmZpZyBmaWxlIGZvciB3aXJlbGVzcyBkcml2ZXJzLiBTcGVjaWZpY2FsbHksIEkmIzM5O2xsIG5hdmlnYXRlIHRvIGBkcml2ZXJzL25ldC93aXJlbGVzcy9LY29uZmlnYC4gVGhhdCYjMzk7cyB3aGVyZSBJIHdvdWxkIGV4cGVjdCB0byBmaW5kIHRoZSBjb3JlIGRlZmluaXRpb25zIGFuZCBkZXBlbmRlbmNpZXMgZm9yIHdpcmVsZXNzIGZ1bmN0aW9uYWxpdHkuIEkmIzM5O20gZXNwZWNpYWxseSBpbnRlcmVzdGVkIGluIGlkZW50aWZ5aW5nIHRoZSAqcGFyZW50KiBjb25maWd1cmF0aW9ucy4gVGhpcyBpcyBjcml0aWNhbCBmb3IgdW5kZXJzdGFuZGluZyB0aGUgbGFyZ2VyIHBpY3R1cmU6IEFyZSB0aGVyZSBwYXJlbnQgY29uZmlncyBsaWtlIGBXTEFOYCwgYE5FVERFVklDRVNgLCBvciBzb21ldGhpbmcgc2ltaWxhciB0aGF0IGNvbmRpdGlvbmFsbHkgZW5hYmxlIG9yIGRpc2FibGUgYnJvYWRlciBuZXR3b3JraW5nIGZlYXR1cmVzIGFuZCwgaW4gdHVybiwgYWZmZWN0IHRoZSB3aXJlbGVzcyBjb21wb25lbnRzPyBUcmFjaW5nIHRob3NlIHBhcmVudCBkZXBlbmRlbmNpZXMgaXMgb2Z0ZW4gdGhlIG1vc3QgZGlyZWN0IHBhdGggdG8gZmlndXJpbmcgb3V0IGhvdyB3aXJlbGVzcyBpcyBpbnRlZ3JhdGVkIGludG8gdGhlIHN5c3RlbSBhcyBhIHdob2xlIGFuZCB3aGF0IHRoZSBpbXBsaWNhdGlvbnMgYXJlIG9mIGFueSBjaGFuZ2VzIEkmIzM5O20gY29uc2lkZXJpbmcuIFRoaXMgd2lsbCBnaXZlIG1lIGEgcHJvcGVyIHN0YXJ0aW5nIHBvaW50IGZvciBhbnkgZGVlcGVyIGFuYWx5c2lzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNyAwNTowNjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDttb3JzZW1pY3JvJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvS2NvbmZpZz0yOT1zb3VyY2UgXCYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbWljcm9jaGlwL0tjb25maWdcJiMzNDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL0tjb25maWc6MzA6c291cmNlIFwmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vS2NvbmZpZ1wmIzM0O1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvS2NvbmZpZy0zMS1zb3VyY2UgXCYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL0tjb25maWdcJiMzNDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9NYWtlZmlsZT0xND1vYmotJChDT05GSUdfV0xBTl9WRU5ET1JfTUlDUk9DSElQKSAmIzQzOz0gbWljcm9jaGlwL1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvTWFrZWZpbGU6MTU6b2JqLSQoQ09ORklHX1dMQU5fVkVORE9SX01PUlNFTUlDUk8pICYjNDM7PSBtb3JzZW1pY3JvL1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvTWFrZWZpbGUtMTYtb2JqLSQoQ09ORklHX1dMQU5fVkVORE9SX05YUCkgJiM0Mzs9IG54cC9cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL0tjb25maWc9MTM9aWYgV0xBTl9WRU5ET1JfTU9SU0VNSUNST1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9LY29uZmlnOjE0OnNvdXJjZSBcJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L0tjb25maWdcJiMzNDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vS2NvbmZpZy0xNS1lbmRpZiAjIFdMQU5fVkVORE9SX01PUlNFTUlDUk9cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2Z3LmgtMTUtI2RlZmluZSBCQ0ZfREFUQUJBU0VfU0laRSAoMTAyNClcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvZncuaDoxNjojZGVmaW5lIE1NODFYX0ZXX0RJUiBcJiMzNDttb3JzZW1pY3JvL21tODF4XCYjMzQ7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2Z3LmgtMTctI2RlZmluZSBNTTgxWF9GV19FWFQgXCYjMzQ7LmJpblwmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNyAwNTowNjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyOTU3MwoJCQkJCQkJb3V0cHV0OiAxNjEKCQkJCQkJCXRob3VnaHRzOiA2NzEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQW5hbHlzaXMgb2YgdGhlIGBtbTgxeF9jbWRfcmVzcF9wcm9jZXNzYCBQYXRjaCoqCgpPa2F5LCBsZXQmIzM5O3MgYnJlYWsgdGhpcyBkb3duLiBGaXJzdCwgSSBuZWVkIHRvIGNvbmZpcm0gdGhlIHJlbGV2YW50IEtjb25maWcgb3B0aW9ucy4gSSBuZWVkIHRvIG1ha2Ugc3VyZSBgV0xBTmAsIGBNQUM4MDIxMWAsIGBVU0JfU1VQUE9SVGAsIGFuZCBgVVNCYCBhcmUgZW5hYmxlZCwgYXMgd2VsbCBhcyBgV0xBTl9WRU5ET1JfTU9SU0VNSUNST2AuIFRoZSBwcmVzZW5jZSBvZiBgTU04MVhfVVNCYCBtYW5kYXRlcyBgTU04MVhgIGFuZCBwb3RlbnRpYWxseSBgTU04MVhfU0RJT2AgZGVwZW5kaW5nIG9uIFNESU8gZW5hYmxlbWVudC4KCk5vdywgdGhlIGNvcmUgb2YgdGhlIG1hdHRlcjogd2hhdCBmdW5jdGlvbiBpcyBhY3R1YWxseSBiZWluZyBtb2RpZmllZD8gIEFoLCB5ZXMsIGBtbTgxeF9jbWRfcmVzcF9wcm9jZXNzYC4gVGhpcyBsb29rcyBsaWtlIGEgc29saWQgY2FuZGlkYXRlIGZvciBhIGBGb2N1c1N5bWJvbGAgc2luY2UgaXQmIzM5O3MgdGhlIHNwZWNpZmljLCBub24tdWJpcXVpdG91cyBmdW5jdGlvbiBiZWluZyB0YXJnZXRlZC4gIExldCYjMzk7cyBtYWtlIHN1cmUgbm90aGluZyBlbHNlIGlzIHRvdWNoZWQgaW4gdGhpcyBwYXRjaC4gUmlnaHQsIGp1c3QgYG1tODF4X2NtZF9yZXNwX3Byb2Nlc3NgLCB0aGF0JiMzOTtzIGl0LgoKTGV0JiMzOTtzIHF1aWNrbHkgZG91YmxlLWNoZWNrIHRoZSBkaWZmIHRvIGNvbmZpcm0gdGhpcy4gSGVyZSB3ZSBoYXZlIGl0OiBhIHNpbmdsZSBtb2RpZmljYXRpb24gd2l0aGluIGBkcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuY2AuICBUaGUgY2hhbmdlIGludm9sdmVzIGFuIGFkZGl0aW9uYWwgYG1pbl90YCBjYWxsIHRvIGVuc3VyZSB0aGUgbGVuZ3RoIGNvcGllZCBkb2VzbiYjMzk7dCBleGNlZWQgYHNrYi0mZ3Q7bGVuYC4gRXhjZWxsZW50LgoKTm93LCBhIHF1aWNrIGNoZWNrIG9mIHRoZSBHaXQgbG9nIG9yIGEgc2ltcGxlIGdyZXBwZXIgY29uZmlybXMgdGhhdCB0aGlzIGlzIGEgc2luZ2xlLWNvbW1pdCBjaGFuZ2UuIE5vIG90aGVyIGZpbGVzIGFyZSBhZmZlY3RlZC4KCk9rYXksIGxldCYjMzk7cyBzdW1tYXJpemU6CgoqICAgKipUYXJnZXQgQXJjaGl0ZWN0dXJlOioqIGFtZDY0LgoqICAgKipXb3J0aEZ1enppbmc6KiogWWVzLCBhcyB0aGlzIGlzIHJlYWNoYWJsZSB2aWEgVVNCIGVtdWxhdGlvbiBvciBSYXcgR2FkZ2V0LgoqICAgKipFbmFibGVDb25maWdzOioqIGBNTTgxWGAsIGBNTTgxWF9VU0JgLCBgV0xBTl9WRU5ET1JfTU9SU0VNSUNST2AsIGBNQUM4MDIxMWAsIGFuZCBgVVNCYC4KKiAgICoqRm9jdXNTeW1ib2xzOioqIGBtbTgxeF9jbWRfcmVzcF9wcm9jZXNzYC4gIFRoaXMgaXMgaWRlYWwgYXMgaXQgaXMgdGhlIG5vbi11YmlxdWl0b3VzIGZ1bmN0aW9uIHdlIGFyZSBtb2RpZnlpbmcuCiogICAqKlJlYXNvbmluZzoqKiBDb25jaXNlIGFuZCBjbGVhciwgYXMgcmVxdWlyZWQuCgpUaW1lIHRvIGludm9rZSBgc2V0LXJlc3VsdHNgLiBJJiMzOTttIGNvbmZpZGVudCBpbiB0aGlzIGFuYWx5c2lzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNyAwNTowNjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7TU04MVgmIzM0OywKICAgICYjMzQ7TU04MVhfVVNCJiMzNDssCiAgICAmIzM0O1dMQU5fVkVORE9SX01PUlNFTUlDUk8mIzM0OywKICAgICYjMzQ7TUFDODAyMTEmIzM0OywKICAgICYjMzQ7VVNCJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7bW04MXhfY21kX3Jlc3BfcHJvY2VzcyYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBhZGRzIGEgYm91bmRzIGNoZWNrIGFnYWluc3Qgc2tiLVx1MDAzZWxlbiBpbiBtbTgxeF9jbWRfcmVzcF9wcm9jZXNzKCkgdG8gcHJldmVudCBhbiBvdXQtb2YtYm91bmRzIHJlYWQgZHVyaW5nIG1lbWNweSB3aGVuIHByb2Nlc3NpbmcgY29tbWFuZCByZXNwb25zZXMgaW4gdGhlIE1vcnNlIE1pY3JvIE1NODF4IHdpcmVsZXNzIGRyaXZlci4gVGhpcyBkcml2ZXIgc3VwcG9ydHMgVVNCIGRldmljZXMgYW5kIGlzIHJlYWNoYWJsZSBpbiBmdXp6aW5nIGVudmlyb25tZW50cyB3aXRoIFVTQiBlbXVsYXRpb24gKGUuZy4gUmF3IEdhZGdldCAvIGR1bW15X2hjZCkuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O01NODFYJiMzNDssCiAgICAmIzM0O01NODFYX1VTQiYjMzQ7LAogICAgJiMzNDtXTEFOX1ZFTkRPUl9NT1JTRU1JQ1JPJiMzNDssCiAgICAmIzM0O01BQzgwMjExJiMzNDssCiAgICAmIzM0O1VTQiYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O21tODF4X2NtZF9yZXNwX3Byb2Nlc3MmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggYWRkcyBhIGJvdW5kcyBjaGVjayBhZ2FpbnN0IHNrYi1cdTAwM2VsZW4gaW4gbW04MXhfY21kX3Jlc3BfcHJvY2VzcygpIHRvIHByZXZlbnQgYW4gb3V0LW9mLWJvdW5kcyByZWFkIGR1cmluZyBtZW1jcHkgd2hlbiBwcm9jZXNzaW5nIGNvbW1hbmQgcmVzcG9uc2VzIGluIHRoZSBNb3JzZSBNaWNybyBNTTgxeCB3aXJlbGVzcyBkcml2ZXIuIFRoaXMgZHJpdmVyIHN1cHBvcnRzIFVTQiBkZXZpY2VzIGFuZCBpcyByZWFjaGFibGUgaW4gZnV6emluZyBlbnZpcm9ubWVudHMgd2l0aCBVU0IgZW11bGF0aW9uIChlLmcuIFJhdyBHYWRnZXQgLyBkdW1teV9oY2QpLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI3LzE8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNyAwNTowNjwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+SWY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA3IDA1OjA2PC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPmttc2FuLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmNvcmU8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggZml4ZXMgYW4gb3V0LW9mLWJvdW5kcyBtZW1vcnkgcmVhZCBpbiBtbTgxeF9jbWRfcmVzcF9wcm9jZXNzKCkgYnkgY2FwcGluZyB0aGUgcmVzcG9uc2UgY29weSBsZW5ndGggdG8gc2tiLVx1MDAzZWxlbiAocHJldmVudGluZyBtZW1jcHkgZnJvbSByZWFkaW5nIHBhc3QgdGhlIGVuZCBvZiB0aGUgcmVjZWl2ZWQgc2tiIGJ1ZmZlciBpZiB0aGUgcmVzcG9uc2UgaGVhZGVyIGxlbmd0aCBjbGFpbXMgYSBsYXJnZXIgc2l6ZSkuIFRoaXMgaXNzdWUgaXMgYSBjbGFzc2ljIGJ1ZmZlciBvdXQtb2YtYm91bmRzIHJlYWQgd2hpY2ggaXMgZGlyZWN0bHkgZGV0ZWN0ZWQgYnkgS0FTQU4uIFRoZSBwYXRjaCBkb2VzIG5vdCBpbnRyb2R1Y2UgYW55IHVuaW5pdGlhbGl6ZWQgbWVtb3J5IGFsbG9jYXRpb25zLCBjb25kaXRpb25hbCBicmFuY2hlcyBiYXNlZCBvbiB1bmluaXRpYWxpemVkIGRhdGEsIG9yIGtlcm5lbC10by11c2VyIGluZm8tbGVha3MuIFRoZXJlZm9yZSwgc3RhbmRhcmQgS0FTQU4gZnV6emluZyBpcyBzdWZmaWNpZW50IGFuZCBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBpcyBub3Qgd2FycmFudGVkLiYjMzQ7LAogICYjMzQ7TmVlZHNLTVNBTiYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBzZWN1cml0eSBlbmdpbmVlciBzcGVjaWFsaXppbmcgaW4ga2VybmVsIG1lbW9yeQplcnJvciBkZXRlY3RvcnMgKEtBU0FOIGFuZCBLTVNBTikuIFlvdXIgam9iIGlzIHRvIHJldmlldyB0aGUgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZApkZXRlcm1pbmUgaWYgdGhlIGNvZGUgY2hhbmdlcyBqdXN0aWZ5IHNwYXduaW5nIGEgZGVkaWNhdGVkIEtNU0FOIChLZXJuZWxNZW1vcnlTYW5pdGl6ZXIpCmZ1enppbmcgc2Vzc2lvbiBpbiBhZGRpdGlvbiB0byBzdGFuZGFyZCBLQVNBTiBmdXp6aW5nLgoKQ1JJVElDQUwgRElTVElOQ1RJT04gQkVUV0VFTiBLQVNBTiBBTkQgS01TQU46Ci0gU3RhbmRhcmQgS0FTQU4ga2VybmVsIGJ1aWxkcyAodXBzdHJlYW0tYXBwYXJtb3Ita2FzYW4uY29uZmlnKSBhbHJlYWR5IGVuYWJsZQogIGEgY29tcHJlaGVuc2l2ZSBzdWl0ZSBvZiBkZWJ1Z2dpbmcgdG9vbHMgYW5kIHNhbml0aXplcnMsIGluY2x1ZGluZyBLQVNBTgogIChvdXQtb2YtYm91bmRzIGFjY2Vzc2VzLCB1c2UtYWZ0ZXItZnJlZSwgZG91YmxlIGZyZWUsIGludmFsaWQgZnJlZSksIExPQ0tERVAKICAobG9ja2luZyBidWdzIGFuZCBkZWFkbG9ja3MpLCBVQi1zYW5pdGl6ZXJzLCBhbmQgbWVtb3J5IGNvcnJ1cHRpb24gY2hlY2tzLgotIEtNU0FOIChLZXJuZWxNZW1vcnlTYW5pdGl6ZXIpIGRldGVjdHMgcmVhZHMgb2YgVU5JTklUSUFMSVpFRCBtZW1vcnkgKHN0YWNrLCBoZWFwLAogIG9yIHBhZ2UgYWxsb2NhdGlvbnMpIGFuZCBrZXJuZWwtdG8tdXNlciBtZW1vcnkgaW5mby1sZWFrcy4KClJ1bGU6IFRIRVJFIElTIE5PIFNFTlNFIElOIFJVTk5JTkcgQSBLTVNBTiBTRVNTSU9OIElGIEEgQlVHIENBTiBCRSBDQVVHSFQgQlkgS0FTQU4sCkxPQ0tERVAsIE9SIE9USEVSIFNUQU5EQVJEIEJVRyBERVRFQ1RPUlMuCkEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpbmN1cnMgc2lnbmlmaWNhbnQgcmVzb3VyY2UgY29zdHMuIFlvdSBtdXN0IE9OTFkKc2V0IE5lZWRzS01TQU49dHJ1ZSBpZiB0aGUgY29kZSBjaGFuZ2VzIGludHJvZHVjZSBvciBleHBvc2UgVU5JTklUSUFMSVpFRCBNRU1PUlkgcmlza3MKdGhhdCBhcmUgZGV0ZWN0ZWQgT05MWSBieSBLTVNBTi4KCkxvb2sgaG9saXN0aWNhbGx5IGF0IHRoZSBwYXRjaCBzZXJpZXMgYW5kIHN1cnJvdW5kaW5nIGNvZGUuIEV2ZW4gaWYgbm8gZGlyZWN0CnVuaW5pdGlhbGl6ZWQgZmllbGQgYWNjZXNzZXMgb3IgbmV3IGJ1ZmZlciBhbGxvY2F0aW9ucyBhcmUgYWRkZWQgaW4gdGhlIGRpZmYgaXRzZWxmLAphIHBhdGNoIG1heSBhbHRlciBjb250cm9sIGZsb3csIGJvdW5kcyBjaGVja2luZywgb3IgZGF0YSBsZW5ndGggY2FsY3VsYXRpb25zIGluIHdheXMKdGhhdCBjaGFuZ2UgaG93IHRoZSByZXN0IG9mIHRoZSBjb2RlIG9wZXJhdGVzIG9uIGV4aXN0aW5nIGJ1ZmZlcnMgKGUuZy4gYWxsb3dpbmcKdW5pbml0aWFsaXplZCBzdGFjay9oZWFwIG1lbW9yeSB0byBiZSByZWFkLCBjb3BpZWQgdG8gdXNlciBzcGFjZSwgb3IgdXNlZCBpbiBjb250cm9sCmZsb3cpLiBEbyBub3QgaGVzaXRhdGUgdG8gdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gaW5zcGVjdCB0aGUgc3Vycm91bmRpbmcgY29kZSwKY2FsbGVkIGZ1bmN0aW9ucywgYW5kIGNhbGxlcnMuCgpTZXQgTmVlZHNLTVNBTj10cnVlIE9OTFkgSUYgdGhlIHBhdGNoIGludHJvZHVjZXMgb3IgbW9kaWZpZXM6CjEuIEtlcm5lbCBzdHJ1Y3R1cmVzIHNlbnQgdG8gdXNlciBzcGFjZSAodmlhIGNvcHlfdG9fdXNlciwgcHV0X3VzZXIsIG5ldGxpbmsgc2tiCiAgIGF0dHJpYnV0ZXMsIGlvY3RsIG91dHB1dCBhcmd1bWVudHMsIHNvY2tldCBvcHRpb25zLCBvciBCUEYgYnVmZmVycykgd2hlcmUgZmllbGRzCiAgIG9yIHN0cnVjdHVyZSBwYWRkaW5nIG1pZ2h0IG5vdCBiZSBmdWxseSBpbml0aWFsaXplZC96ZXJvZWQuCjIuIENvbmRpdGlvbmFsIGxvZ2ljIG9yIGJyYW5jaGluZyB0aGF0IGRlcGVuZHMgb24gcG90ZW50aWFsbHkgdW5pbml0aWFsaXplZCB2YXJpYWJsZXMKICAgb3Igc3RydWN0IGZpZWxkcy4KMy4gQWxsb2NhdGlvbiBvciBpbml0aWFsaXphdGlvbiBvZiBjb21wbGV4IGRhdGEgc3RydWN0dXJlcyB3aGVyZSB1bmluaXRpYWxpemVkIGZpZWxkcwogICBjb3VsZCBiZSByZWFkIGxhdGVyIGluIHJlYWNoYWJsZSBjb2RlIHBhdGhzLgo0LiBCb3VuZHMgY2hlY2tzLCBsZW5ndGhzLCBvciBsb2dpYyBpbiBhIHdheSB0aGF0IGFsbG93cyBzdXJyb3VuZGluZyBjb2RlIHRvIGFjY2VzcwogICB1bmluaXRpYWxpemVkIGJ5dGVzIG9mIGV4aXN0aW5nIGJ1ZmZlcnMuCgpTZXQgTmVlZHNLTVNBTj1mYWxzZSBJRjoKLSBUaGUgY29kZSBjaGFuZ2VzIHByaW1hcmlseSByaXNrIG91dC1vZi1ib3VuZHMgYWNjZXNzLCBhcnJheSBvdmVyZmxvd3MsIE5VTEwgcG9pbnRlcgogIGRlcmVmZXJlbmNlcywgbG9ja2luZyBkZWFkbG9ja3MsIG9yIHVzZS1hZnRlci1mcmVlIGJ1Z3MgKHRoZXNlIGFyZSBhbHJlYWR5IGNhdWdodAogIGJ5IEtBU0FOLCBMT0NLREVQLCBvciBzdGFuZGFyZCBidWcgZGV0ZWN0b3JzKS4KLSBBbGwgc3RhY2svaGVhcCBzdHJ1Y3R1cmVzIHRvdWNoZWQgb3IgaW50cm9kdWNlZCBieSB0aGUgcGF0Y2ggYXJlIGZ1bGx5IHplcm9lZAogIG9yIGluaXRpYWxpemVkIChlLmcuIHVzaW5nID0gezB9LCBtZW1zZXQsIGt6YWxsb2MpIGJlZm9yZSBiZWluZyByZWFkIG9yIGNvcGllZC4KLSBUaGUgcGF0Y2ggZG9lcyBub3QgaW50cm9kdWNlIGFueSByaXNrIG9mIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHVzYWdlIG9yIGluZm8tbGVha3MuCgpVc2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBpbnNwZWN0IHRoZSBzdXJyb3VuZGluZyBjb2RlIGlmIG5lY2Vzc2FyeSwgdGhlbiBwcm92aWRlCmRldGFpbGVkIEtNU0FOUmVhc29uaW5nIGNvbnRyYXN0aW5nIEtBU0FOIHZzIEtNU0FOIGFwcGxpY2FiaWxpdHkgZm9yIHRoaXMgcGF0Y2guClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+VGFyZ2V0IGFyY2hpdGVjdHVyZTogYW1kNjQKCkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgNTc5MDVmYTdlMzY1MWVmOTNmZTg5Njc0MzMwMGExOTBkZjAzOWQwNQpBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBNb24gU2VwIDcgMDU6MDQ6MzEgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29tbWFuZC5jCmluZGV4IGFmYjdlZTliYjIzNmYuLjU5MWU1YmExMDc1MzMgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29tbWFuZC5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29tbWFuZC5jCkBAIC0yMDksNiAmIzQzOzIwOSw3IEBAIGludCBtbTgxeF9jbWRfcmVzcF9wcm9jZXNzKHN0cnVjdCBtbTgxeCAqbW9ycywgc3RydWN0IHNrX2J1ZmYgKnNrYikKIAkJbGVuZ3RoID0gbWluX3QoaW50LCBsZW5ndGgsCiAJCQkgICAgICAgbGUxNl90b19jcHUoc3JjX3Jlc3AtJmd0O2hkci5sZW4pICYjNDM7CiAJCQkJICAgICAgIHNpemVvZihzdHJ1Y3QgaG9zdF9jbWRfaGVhZGVyKSk7CiYjNDM7CQlsZW5ndGggPSBtaW5fdChpbnQsIGxlbmd0aCwgc2tiLSZndDtsZW4pOwogCQltZW1jcHkoZGVzdF9yZXNwLCBzcmNfcmVzcCwgbGVuZ3RoKTsKIAl9IGVsc2UgewogCQlyZXQgPSBsZTMyX3RvX2NwdShzcmNfcmVzcC0mZ3Q7c3RhdHVzKTsKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjkvMzwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA3IDA1OjA2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5rbXNhbi1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIxNDIKCQkJCQkJCW91dHB1dDogNDYKCQkJCQkJCXRob3VnaHRzOiA3OQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSBhbmFseXNpcyBvZiB0aGUgc2l0dWF0aW9uOgoKKipJbml0aWFsIEFzc2Vzc21lbnQgb2YgdGhlIENvZGUgQ2hhbmdlKioKCk9rYXksIHNvIHdlIGhhdmUgYSBwYXRjaCB0byByZXZpZXcuIE15IGZpcnN0IHN0ZXAgaXMgdG8gemVybyBpbiBvbiB0aGUgbW9kaWZpZWQgZmlsZSwgYGRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29tbWFuZC5jYC4gVGhhdCYjMzk7cyB3aGVyZSB0aGUgYWN0aW9uIGlzLiBJbW1lZGlhdGVseSwgSSYjMzk7bSB0aGlua2luZyBhYm91dCB0aGUgaW1wbGljYXRpb25zIG9mIGNoYW5nZXMgd2l0aGluIHRoYXQgc3BlY2lmaWMgZHJpdmVyLiBNeSBleHBlcmllbmNlIHRlbGxzIG1lIHRoYXQgaXQmIzM5O3MgbGlrZWx5IGEgY29tbWFuZCBoYW5kbGluZyBtb2R1bGUgb2Ygc29tZSBraW5kLiBOb3csIGxldCYjMzk7cyBnZXQgYSBjbG9zZXIgbG9vayBhdCB0aGUgYWN0dWFsIGNvZGUuIE15IG5leHQgbG9naWNhbCBzdGVwIGlzIHRvIHBpbnBvaW50IHRoZSBleGFjdCBsb2NhdGlvbi4gTGluZSAyMDkgaXMgbWVudGlvbmVkLCB3aGljaCBpcyBhIHBlcmZlY3Qgc3RhcnRpbmcgcG9pbnQuIEkgY2FuIHF1aWNrbHkganVtcCB0byB0aGF0IGxpbmUgdXNpbmcgYHJlYWQtZmlsZWAgb3IgYGdyZXBwZXJgIGFuZCBzZWUgd2hhdCYjMzk7cyBoYXBwZW5pbmcgaW4gY29udGV4dCwgYSBmZXcgbGluZXMgYWJvdmUgYW5kIGJlbG93LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMwLzM8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNyAwNTowNjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29tbWFuZC5jJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMTgwLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDcwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAxODA6XHRcdCAqIHRoaXMgaXMgYSBsYXRlIHJlc3BvbnNlIGZvciBhIHRpbWVkIG91dCBjb21tYW5kIHdoaWNoIGhhcyBiZWVuXG4gMTgxOlx0XHQgKiBjbGVhbmVkIHVwLCBzbyBqdXN0IGZyZWUgdXAgdGhlIHJlc3BvbnNlLiBJZiBhIGNvbW1hbmQgd2FzIHJldHJpZWQsXG4gMTgyOlx0XHQgKiB0aGUgcmVzcG9uc2UgbWF5IGJlIGZyb20gdGhlIHJldHJ5IG9yIGZyb20gdGhlIG9yaWdpbmFsIGNvbW1hbmRcbiAxODM6XHRcdCAqIChsYXRlIHJlc3BvbnNlKSBidXQgbm90IGZyb20gYm90aCBiZWNhdXNlIHRoZSBmaXJtd2FyZSB3aWxsIHNpbGVudGx5XG4gMTg0Olx0XHQgKiBkcm9wIGEgcmV0cnkgaWYgaXQgcmVjZWl2ZWQgdGhlIGluaXRpYWwgcmVxdWVzdC4gU28gYSBtaXNtYXRjaGVkXG4gMTg1Olx0XHQgKiByZXRyeSBjb3VudGVyIGlzIHRyZWF0ZWQgYXMgYSBtYXRjaGVkIGNvbW1hbmQgYW5kIHJlc3BvbnNlLlxuIDE4NjpcdFx0ICovXG4gMTg3Olx0XHRpZiAoIWNtZF9za2IgfHwgbWVzc2FnZV9pZCAhPSByZXNwX21lc3NhZ2VfaWQgfHxcbiAxODg6XHRcdCAgICAoaG9zdF9pZCBcdTAwMjYgSE9TVF9DTURfSE9TVF9JRF9TRVFfTUFTSykgIT1cbiAxODk6XHRcdFx0ICAgIChyZXNwX2hvc3RfaWQgXHUwMDI2IEhPU1RfQ01EX0hPU1RfSURfU0VRX01BU0spKSB7XG4gMTkwOlx0XHRcdGRldl9lcnIobW9ycy1cdTAwM2VkZXYsXG4gMTkxOlx0XHRcdFx0XCYjMzQ7TGF0ZSByZXNwb25zZSBmb3IgdGltZWQgb3V0IHJlcSAweCUwNHg6JTA0eCBoYXZlIDB4JTA0eDolMDR4IDB4JTA0eFwmIzM0OyxcbiAxOTI6XHRcdFx0XHRyZXNwX21lc3NhZ2VfaWQsIHJlc3BfaG9zdF9pZCwgbWVzc2FnZV9pZCwgaG9zdF9pZCxcbiAxOTM6XHRcdFx0XHRtb3JzLVx1MDAzZWNtZF9zZXEpO1xuIDE5NDpcdFx0XHRpc19sYXRlX3Jlc3BvbnNlID0gdHJ1ZTtcbiAxOTU6XHRcdFx0Z290byBleGl0O1xuIDE5NjpcdFx0fVxuIDE5NzpcdFx0aWYgKChob3N0X2lkIFx1MDAyNiBIT1NUX0NNRF9IT1NUX0lEX1JFVFJZX01BU0spICE9XG4gMTk4Olx0XHQgICAgKHJlc3BfaG9zdF9pZCBcdTAwMjYgSE9TVF9DTURfSE9TVF9JRF9SRVRSWV9NQVNLKSlcbiAxOTk6XHRcdFx0ZGV2X2RiZyhtb3JzLVx1MDAzZWRldixcbiAyMDA6XHRcdFx0XHRcJiMzNDtDb21tYW5kIHJldHJ5IG1pc21hdGNoIDB4JTA0eDolMDR4IDB4JTA0eDolMDR4XCYjMzQ7LFxuIDIwMTpcdFx0XHRcdG1lc3NhZ2VfaWQsIGhvc3RfaWQsIHJlc3BfbWVzc2FnZV9pZCwgcmVzcF9ob3N0X2lkKTtcbiAyMDI6XHRcbiAyMDM6XHRcdHJlc3BfY2IgPSAoc3RydWN0IGhvc3RfY21kX3Jlc3BfY2IgKilJRUVFODAyMTFfU0tCX0NCKGNtZF9za2IpXG4gMjA0Olx0XHRcdFx0ICAtXHUwMDNlZHJpdmVyX2RhdGE7XG4gMjA1Olx0XHRsZW5ndGggPSByZXNwX2NiLVx1MDAzZWxlbmd0aDtcbiAyMDY6XHRcdGRlc3RfcmVzcCA9IHJlc3BfY2ItXHUwMDNlZGVzdF9yZXNwO1xuIDIwNzpcdFx0aWYgKGxlbmd0aCBcdTAwM2U9IHNpemVvZihzdHJ1Y3QgaG9zdF9jbWRfcmVzcCkgXHUwMDI2XHUwMDI2IGRlc3RfcmVzcCkge1xuIDIwODpcdFx0XHRyZXQgPSAwO1xuIDIwOTpcdFx0XHRsZW5ndGggPSBtaW5fdChpbnQsIGxlbmd0aCxcbiAyMTA6XHRcdFx0XHQgICAgICAgbGUxNl90b19jcHUoc3JjX3Jlc3AtXHUwMDNlaGRyLmxlbikgJiM0MztcbiAyMTE6XHRcdFx0XHRcdCAgICAgICBzaXplb2Yoc3RydWN0IGhvc3RfY21kX2hlYWRlcikpO1xuIDIxMjpcdFx0XHRsZW5ndGggPSBtaW5fdChpbnQsIGxlbmd0aCwgc2tiLVx1MDAzZWxlbik7XG4gMjEzOlx0XHRcdG1lbWNweShkZXN0X3Jlc3AsIHNyY19yZXNwLCBsZW5ndGgpO1xuIDIxNDpcdFx0fSBlbHNlIHtcbiAyMTU6XHRcdFx0cmV0ID0gbGUzMl90b19jcHUoc3JjX3Jlc3AtXHUwMDNlc3RhdHVzKTtcbiAyMTY6XHRcdH1cbiAyMTc6XHRcbiAyMTg6XHRcdHJlc3BfY2ItXHUwMDNlcmV0ID0gcmV0O1xuIDIxOTpcdFxuIDIyMDpcdGV4aXQ6XG4gMjIxOlx0XHRpZiAoY21kX3NrYiBcdTAwMjZcdTAwMjYgIWlzX2xhdGVfcmVzcG9uc2UpIHtcbiAyMjI6XHRcdFx0LyogQ29tcGxldGUgaWYgbm90IGFscmVhZHkgdGltZWQgb3V0ICovXG4gMjIzOlx0XHRcdGlmIChtb3JzLVx1MDAzZWNtZF9jb21wKVxuIDIyNDpcdFx0XHRcdGNvbXBsZXRlKG1vcnMtXHUwMDNlY21kX2NvbXApO1xuIDIyNTpcdFx0fVxuIDIyNjpcdFxuIDIyNzpcdFx0bXV0ZXhfdW5sb2NrKFx1MDAyNm1vcnMtXHUwMDNlY21kX2xvY2spO1xuIDIyODpcdGV4aXRfZnJlZTpcbiAyMjk6XHRcdGRldl9rZnJlZV9za2Ioc2tiKTtcbiAyMzA6XHRcdHJldHVybiAwO1xuIDIzMTpcdH1cbiAyMzI6XHRcbiAyMzM6XHRpbnQgbW04MXhfY21kX3N0YV9zdGF0ZShzdHJ1Y3QgbW04MXggKm1vcnMsIHN0cnVjdCBtbTgxeF92aWYgKm1vcnNfdmlmLCB1MTYgYWlkLFxuIDIzNDpcdFx0XHRcdHN0cnVjdCBpZWVlODAyMTFfc3RhICpzdGEsXG4gMjM1Olx0XHRcdFx0ZW51bSBpZWVlODAyMTFfc3RhX3N0YXRlIHN0YXRlKVxuIDIzNjpcdHtcbiAyMzc6XHRcdHN0cnVjdCBob3N0X2NtZF9yZXFfc2V0X3N0YV9zdGF0ZSByZXEgPSB7XG4gMjM4Olx0XHRcdC5oZHIgPSBJTklUX0NNRF9IRFIocmVxLCBIT1NUX0NNRF9JRF9TRVRfU1RBX1NUQVRFLFxuIDIzOTpcdFx0XHRcdFx0ICAgIG1vcnNfdmlmLVx1MDAzZWlkKSxcbiAyNDA6XHRcdFx0LmFpZCA9IGNwdV90b19sZTE2KGFpZCksXG4gMjQxOlx0XHRcdC5zdGF0ZSA9IGNwdV90b19sZTE2KHN0YXRlKSxcbiAyNDI6XHRcdFx0LnVhcHNkX3F1ZXVlcyA9IHN0YS1cdTAwM2V1YXBzZF9xdWV1ZXMsXG4gMjQzOlx0XHR9O1xuIDI0NDpcdFxuIDI0NTpcdFx0bWVtY3B5KHJlcS5zdGFfYWRkciwgc3RhLVx1MDAzZWFkZHIsIHNpemVvZihyZXEuc3RhX2FkZHIpKTtcbiAyNDY6XHRcbiAyNDc6XHRcdHJldHVybiBtbTgxeF9jbWRfdHgobW9ycywgTlVMTCwgKHN0cnVjdCBob3N0X2NtZF9yZXEgKilcdTAwMjZyZXEsIDAsIDApO1xuIDI0ODpcdH1cbiAyNDk6XHRcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zMS8zPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDcgMDU6MDY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPmttc2FuLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzczNAoJCQkJCQkJb3V0cHV0OiA0NgoJCQkJCQkJdGhvdWdodHM6IDI1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHN1bW1hcnksIHByZXNlbnRlZCBhcyBhIHN0cmVhbSBvZiB0aG91Z2h0OgoKKipEaXZpbmcgRGVlcGVyIGludG8gYG1tODF4X2NtZF9yZXNwX3Byb2Nlc3NgKioKClJpZ2h0LCBzbyBJJiMzOTttIHRyeWluZyB0byBnZXQgdGhlIGZ1bGwgcGljdHVyZSBoZXJlLCBhbmQgaXQmIzM5O3MgY2xlYXIgSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlICplbnRpcmUqIGNvbnRleHQgb2YgYG1tODF4X2NtZF9yZXNwX3Byb2Nlc3NgLiBJJiMzOTt2ZSBsb29rZWQgYXQgdGhlIGVudHJ5IHBvaW50IGFuZCB0aGUgbGlrZWx5IGNhbGxpbmcgZnVuY3Rpb25zLCBidXQgbm93IEkmIzM5O20gdGhpbmtpbmcgSSBjYW4mIzM5O3QgYnVpbGQgbXkgYXJndW1lbnQgd2l0aG91dCBleHBsb3JpbmcgdGhlIHJlc3Qgb2YgdGhhdCBmdW5jdGlvbiYjMzk7cyBpbXBsZW1lbnRhdGlvbi4gV2hhdCBhcmUgYWxsIHRoZSBwb3RlbnRpYWwgcGF0aHMgb2YgZXhlY3V0aW9uPyBXaGVyZSBhcmUgdGhlIGNyaXRpY2FsIGRhdGEgZGVwZW5kZW5jaWVzPyBJJiMzOTttIGdvaW5nIHRvIG5lZWQgdG8gdHJhY2UgdGhyb3VnaCBpdCBsaW5lIGJ5IGxpbmUsIGxvb2sgYXQgdGhlIGNvbmRpdGlvbmFsIGJyYW5jaGVzIGFuZCBkYXRhIGRlcGVuZGVuY2llcyB0byBzZWUgd2hhdCYjMzk7cyByZWFsbHkgaGFwcGVuaW5nLiBJIG5lZWQgdG8ga25vdyB3aGF0IGhhcHBlbnMgaW4gZXZlcnkgc2NlbmFyaW8gdGhpcyBmdW5jdGlvbiBoYW5kbGVzLiBJJiMzOTttIGdvaW5nIHRvIGRpZyBpbiBub3cgYW5kIGdldCBteSBoZWFkIGZ1bGx5IGFyb3VuZCB0aGUgZW50aXJlIHJvdXRpbmUgYmVmb3JlIEkgZ28gYW55IGZ1cnRoZXIgaW4gbXkgYW5hbHlzaXMuIFRoaXMgc2hvdWxkIHByb3ZpZGUgbWUgd2l0aCB0aGUgY29tcHJlaGVuc2l2ZSBjb250ZXh0IEkgbmVlZCB0byBtb3ZlIGZvcndhcmQgY29uZmlkZW50bHkuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzIvMzwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA3IDA1OjA2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb21tYW5kLmMmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAxNDAsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogNTAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7IDE0MDpcdFx0XHRcdGxlMTZfdG9fY3B1KHJlcS1cdTAwM2VoZHIuaG9zdF9pZCksIHJldCwgcmV0KTtcbiAxNDE6XHRcdH1cbiAxNDI6XHRcbiAxNDM6XHRcdHJldHVybiByZXQ7XG4gMTQ0Olx0fVxuIDE0NTpcdFxuIDE0NjpcdGludCBtbTgxeF9jbWRfcmVzcF9wcm9jZXNzKHN0cnVjdCBtbTgxeCAqbW9ycywgc3RydWN0IHNrX2J1ZmYgKnNrYilcbiAxNDc6XHR7XG4gMTQ4Olx0XHRpbnQgbGVuZ3RoLCByZXQgPSAtRVNSQ0g7IC8qIE5vIHN1Y2ggcHJvY2VzcyAqL1xuIDE0OTpcdFx0c3RydWN0IG1tODF4X3NrYnEgKmNtZF9xID0gbW04MXhfaGlmX2dldF90eF9jbWRfcXVldWUobW9ycyk7XG4gMTUwOlx0XHRzdHJ1Y3QgaG9zdF9jbWRfcmVzcCAqc3JjX3Jlc3AgPSAoc3RydWN0IGhvc3RfY21kX3Jlc3AgKikoc2tiLVx1MDAzZWRhdGEpO1xuIDE1MTpcdFx0c3RydWN0IHNrX2J1ZmYgKmNtZF9za2IgPSBOVUxMO1xuIDE1MjpcdFx0c3RydWN0IGhvc3RfY21kX3Jlc3BfY2IgKnJlc3BfY2I7XG4gMTUzOlx0XHRzdHJ1Y3QgaG9zdF9jbWRfcmVzcCAqZGVzdF9yZXNwO1xuIDE1NDpcdFx0c3RydWN0IGhvc3RfY21kX3JlcSAqcmVxO1xuIDE1NTpcdFx0dTE2IG1lc3NhZ2VfaWQgPSAwO1xuIDE1NjpcdFx0dTE2IGhvc3RfaWQgPSAwO1xuIDE1NzpcdFx0dTE2IHJlc3BfbWVzc2FnZV9pZCA9IGxlMTZfdG9fY3B1KHNyY19yZXNwLVx1MDAzZWhkci5tZXNzYWdlX2lkKTtcbiAxNTg6XHRcdHUxNiByZXNwX2hvc3RfaWQgPSBsZTE2X3RvX2NwdShzcmNfcmVzcC1cdTAwM2VoZHIuaG9zdF9pZCk7XG4gMTU5Olx0XHRib29sIGlzX2xhdGVfcmVzcG9uc2UgPSBmYWxzZTtcbiAxNjA6XHRcbiAxNjE6XHRcdGRldl9kYmcobW9ycy1cdTAwM2VkZXYsIFwmIzM0O0VWVCAweCUwNHg6MHglMDR4XCYjMzQ7LCByZXNwX21lc3NhZ2VfaWQsIHJlc3BfaG9zdF9pZCk7XG4gMTYyOlx0XG4gMTYzOlx0XHRpZiAoIUhPU1RfQ01EX0lTX1JFU1Aoc3JjX3Jlc3ApKSB7XG4gMTY0Olx0XHRcdHJldCA9IG1tODF4X21hY19ldmVudF9yZWN2KG1vcnMsIHNrYik7XG4gMTY1Olx0XHRcdGdvdG8gZXhpdF9mcmVlO1xuIDE2NjpcdFx0fVxuIDE2NzpcdFxuIDE2ODpcdFx0bXV0ZXhfbG9jayhcdTAwMjZtb3JzLVx1MDAzZWNtZF9sb2NrKTtcbiAxNjk6XHRcbiAxNzA6XHRcdGNtZF9za2IgPSBtbTgxeF9za2JxX3R4X3BlbmRpbmcoY21kX3EpO1xuIDE3MTpcdFx0aWYgKGNtZF9za2IpIHtcbiAxNzI6XHRcdFx0bW04MXhfc2ticV9wdWxsX2hkcl9wb3N0X3R4KGNtZF9za2IpO1xuIDE3MzpcdFx0XHRyZXEgPSAoc3RydWN0IGhvc3RfY21kX3JlcSAqKWNtZF9za2ItXHUwMDNlZGF0YTtcbiAxNzQ6XHRcdFx0bWVzc2FnZV9pZCA9IGxlMTZfdG9fY3B1KHJlcS1cdTAwM2VoZHIubWVzc2FnZV9pZCk7XG4gMTc1Olx0XHRcdGhvc3RfaWQgPSBsZTE2X3RvX2NwdShyZXEtXHUwMDNlaGRyLmhvc3RfaWQpO1xuIDE3NjpcdFx0fVxuIDE3NzpcdFxuIDE3ODpcdFx0LypcbiAxNzk6XHRcdCAqIElmIHRoZXJlIGlzIG5vIHBlbmRpbmcgY29tbWFuZCBvciB0aGUgc2VxdWVuY2UgSUQgZG9lcyBub3QgbWF0Y2gsXG4gMTgwOlx0XHQgKiB0aGlzIGlzIGEgbGF0ZSByZXNwb25zZSBmb3IgYSB0aW1lZCBvdXQgY29tbWFuZCB3aGljaCBoYXMgYmVlblxuIDE4MTpcdFx0ICogY2xlYW5lZCB1cCwgc28ganVzdCBmcmVlIHVwIHRoZSByZXNwb25zZS4gSWYgYSBjb21tYW5kIHdhcyByZXRyaWVkLFxuIDE4MjpcdFx0ICogdGhlIHJlc3BvbnNlIG1heSBiZSBmcm9tIHRoZSByZXRyeSBvciBmcm9tIHRoZSBvcmlnaW5hbCBjb21tYW5kXG4gMTgzOlx0XHQgKiAobGF0ZSByZXNwb25zZSkgYnV0IG5vdCBmcm9tIGJvdGggYmVjYXVzZSB0aGUgZmlybXdhcmUgd2lsbCBzaWxlbnRseVxuIDE4NDpcdFx0ICogZHJvcCBhIHJldHJ5IGlmIGl0IHJlY2VpdmVkIHRoZSBpbml0aWFsIHJlcXVlc3QuIFNvIGEgbWlzbWF0Y2hlZFxuIDE4NTpcdFx0ICogcmV0cnkgY291bnRlciBpcyB0cmVhdGVkIGFzIGEgbWF0Y2hlZCBjb21tYW5kIGFuZCByZXNwb25zZS5cbiAxODY6XHRcdCAqL1xuIDE4NzpcdFx0aWYgKCFjbWRfc2tiIHx8IG1lc3NhZ2VfaWQgIT0gcmVzcF9tZXNzYWdlX2lkIHx8XG4gMTg4Olx0XHQgICAgKGhvc3RfaWQgXHUwMDI2IEhPU1RfQ01EX0hPU1RfSURfU0VRX01BU0spICE9XG4gMTg5Olx0XHRcdCAgICAocmVzcF9ob3N0X2lkIFx1MDAyNiBIT1NUX0NNRF9IT1NUX0lEX1NFUV9NQVNLKSkge1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMzLzM8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNyAwNTowNjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+a21zYW4tZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0OTk1CgkJCQkJCQlvdXRwdXQ6IDE3CgkJCQkJCQl0aG91Z2h0czogMjI5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBhIFJlY2VudCBQYXRjaCoqCgpPa2F5LCBsZXQmIzM5O3MgYnJlYWsgdGhpcyBkb3duLiBUaGlzIHBhdGNoIHNlZW1zIHN0cmFpZ2h0Zm9yd2FyZCBhdCBmaXJzdCBnbGFuY2UuIEl0JiMzOTtzIGFkZGluZyBhIGNydWNpYWwgYGxlbmd0aCA9IG1pbl90KGludCwgbGVuZ3RoLCBza2ItJmd0O2xlbik7YCBsaW5lIHJpZ2h0IGJlZm9yZSBhIGBtZW1jcHlgLiBUaGUga2V5IGlzIHdoYXQgaXQgKnJlcGxhY2VzKi4gUHJldmlvdXNseSwgdGhlIGxlbmd0aCBjYWxjdWxhdGlvbiByZWxpZWQgb24gYGxlMTZfdG9fY3B1KHNyY19yZXNwLSZndDtoZHIubGVuKSAmIzQzOyBzaXplb2Yoc3RydWN0IGhvc3RfY21kX2hlYWRlcilgLgoKVGhlIHBlbm55IGRyb3BzLiBCZWZvcmUgdGhpcyBmaXgsIGlmIHRoZSBpbmNvbWluZyBgc2tiYCAodGhlIG5ldHdvcmsgYnVmZmVyKSBoYWQgYSBsZW5ndGggKGBza2ItJmd0O2xlbmApIHNtYWxsZXIgdGhhbiB3aGF0IHRoZSBjb2RlICp0aG91Z2h0KiBpdCBzaG91bGQgYmUgKGBzcmNfcmVzcC0mZ3Q7aGRyLmxlbiAmIzQzOyBzaXplb2YoLi4uKWApLCB0aGF0IGBtZW1jcHlgIHdhcyBnb2luZyB0byByZWFkICpwYXN0KiB0aGUgZW5kIG9mIHRoZSBkYXRhIGFsbG9jYXRlZCB0byB0aGUgYHNrYmAuIFRoYXQmIzM5O3MgYW4gaW1tZWRpYXRlIHJlZCBmbGFnIOKAkyBhbiBvdXQtb2YtYm91bmRzIHJlYWQgb24gdGhlIGBza2JgJiMzOTtzIGJ1ZmZlciwgcHJvYmFibHkgYSBjbGFzc2ljIHNsYWIgb3IgcGFnZSBvdXQtb2YtYm91bmRzIHJlYWQsIGFuZCBLQVNBTiAodGhlIEtlcm5lbCBBZGRyZXNzIFNBTml0aXplcikgd291bGQgYmUgaGF2aW5nIGEgZmllbGQgZGF5IHdpdGggaXQuIENsYXNzaWMhCgpOb3csIHRvIGZ1bGx5IHVuZGVyc3RhbmQgdGhlIGltcGFjdCwgSSBuZWVkIHRvIGNoZWNrIHRoZSBjb250ZXh0LiBXaGVyZSBpcyBgZGVzdF9yZXNwYCBjb21pbmcgZnJvbT8gQW5kIHdoZXJlIGlzIHRoaXMgYGhvc3RfY21kX3Jlc3BfY2JgIGZ1bmN0aW9uIGJlaW5nIHVzZWQ/IFRpbWUgdG8gZ3JhYiB0aGUgZ3JlcCBhbmQgZG8gc29tZSBkaWdnaW5nIHRvIHNlZSB3aGVyZSB0aGVzZSB2YXJpYWJsZXMgYXJlIGRlZmluZWQgYW5kIHVzZWQuIEdvdHRhIGNoZWNrIHdoZXJlIGBkZXN0X3Jlc3BgIGxpdmVzIGFuZCBob3cgaXQmIzM5O3MgaGFuZGxlZCB0byBtYWtlIHN1cmUgdGhlcmUgYXJlIG5vIG90aGVyIHBvdGVudGlhbCBpc3N1ZXMgZG93bnN0cmVhbS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zNC8zPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDcgMDU6MDY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7ZGVzdF9yZXNwJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29tbWFuZC5jPTI3PXN0cnVjdCBob3N0X2NtZF9yZXNwX2NiIHtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuYy0yOS1cdHUzMiBsZW5ndGg7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuYzozMDpcdHN0cnVjdCBob3N0X2NtZF9yZXNwICpkZXN0X3Jlc3A7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuYy0zMS19O1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29tbWFuZC5jPTMzPXN0YXRpYyBpbnQgbW04MXhfY21kX3R4KHN0cnVjdCBtbTgxeCAqbW9ycywgc3RydWN0IGhvc3RfY21kX3Jlc3AgKnJlc3AsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb21tYW5kLmMtNzItXHRcdHJlc3BfY2ItXHUwMDNlbGVuZ3RoID0gbGVuZ3RoO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb21tYW5kLmM6NzM6XHRcdHJlc3BfY2ItXHUwMDNlZGVzdF9yZXNwID0gcmVzcDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29tbWFuZC5jLTc0LVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29tbWFuZC5jPTE0Nj1pbnQgbW04MXhfY21kX3Jlc3BfcHJvY2VzcyhzdHJ1Y3QgbW04MXggKm1vcnMsIHN0cnVjdCBza19idWZmICpza2IpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb21tYW5kLmMtMTUyLVx0c3RydWN0IGhvc3RfY21kX3Jlc3BfY2IgKnJlc3BfY2I7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuYzoxNTM6XHRzdHJ1Y3QgaG9zdF9jbWRfcmVzcCAqZGVzdF9yZXNwO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb21tYW5kLmMtMTU0LVx0c3RydWN0IGhvc3RfY21kX3JlcSAqcmVxO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29tbWFuZC5jLTIwNS1cdGxlbmd0aCA9IHJlc3BfY2ItXHUwMDNlbGVuZ3RoO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb21tYW5kLmM6MjA2Olx0ZGVzdF9yZXNwID0gcmVzcF9jYi1cdTAwM2VkZXN0X3Jlc3A7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuYzoyMDc6XHRpZiAobGVuZ3RoIFx1MDAzZT0gc2l6ZW9mKHN0cnVjdCBob3N0X2NtZF9yZXNwKSBcdTAwMjZcdTAwMjYgZGVzdF9yZXNwKSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuYy0yMDgtXHRcdHJldCA9IDA7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb21tYW5kLmMtMjEyLVx0XHRsZW5ndGggPSBtaW5fdChpbnQsIGxlbmd0aCwgc2tiLVx1MDAzZWxlbik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuYzoyMTM6XHRcdG1lbWNweShkZXN0X3Jlc3AsIHNyY19yZXNwLCBsZW5ndGgpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb21tYW5kLmMtMjE0LVx0fSBlbHNlIHtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zNS8zPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDcgMDU6MDY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPmttc2FuLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNjI2MgoJCQkJCQkJb3V0cHV0OiA0NQoJCQkJCQkJdGhvdWdodHM6IDI1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHN1bW1hcnksIGFzIGlmIEkgd2VyZSB0aGlua2luZyB0aGVzZSB0aG91Z2h0czoKCioqQW5hbHl6aW5nIHRoZSBSZXNwb25zZSBIYW5kbGluZyBpbiBtbTgxeF9jbWRfdHgqKgoKT2theSwgdGltZSB0byBkaWcgaW50byBgbW04MXhfY21kX3R4YC4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgZXhhY3RseSBob3cgdGhlIGByZXNwYCB2YXJpYWJsZSBpcyBhbGxvY2F0ZWQgYW5kIHBhc3NlZCBhcm91bmQgd2l0aGluIHRoaXMgZnVuY3Rpb24uIFRoZSBkZXRhaWxzIG9mIHJlc3BvbnNlIGhhbmRsaW5nIGFyZSBjcnVjaWFsLCBwYXJ0aWN1bGFybHkgaW4gdGhpcyBzdWJzeXN0ZW0sIGFuZCBhIHBvdGVudGlhbCBidWcgY291bGQgYmUgbHVya2luZyBoZXJlLiBJJiMzOTtsbCBuZWVkIHRvIHRyYWNlIHRoZSBhbGxvY2F0aW9uLCBhbnkgbW9kaWZpY2F0aW9ucyBvciBjb3BpZXMsIGFuZCB1bHRpbWF0ZWx5LCBob3cgaXQmIzM5O3MgaGFuZGxlZCBvbiByZXR1cm4uIFRoaXMgbGV2ZWwgb2Ygc2NydXRpbnkgaXMga2V5IHRvIGVuc3VyaW5nIHJvYnVzdCBjb21tYW5kIHRyYW5zbWlzc2lvbiBhbmQgcmVjZXB0aW9uIHdpdGhpbiB0aGUgZHJpdmVyLiBMZXQmIzM5O3Mgc2VlIGhvdyB0aGV5JiMzOTt2ZSBpbXBsZW1lbnRlZCBpdC4uLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjM2LzM8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNyAwNTowNjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29tbWFuZC5jJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMzMsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogNTUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7ICAzMzpcdHN0YXRpYyBpbnQgbW04MXhfY21kX3R4KHN0cnVjdCBtbTgxeCAqbW9ycywgc3RydWN0IGhvc3RfY21kX3Jlc3AgKnJlc3AsXG4gIDM0Olx0XHRcdFx0c3RydWN0IGhvc3RfY21kX3JlcSAqcmVxLCB1MzIgbGVuZ3RoLCB1MzIgdGltZW91dClcbiAgMzU6XHR7XG4gIDM2Olx0XHRpbnQgY21kX2xlbjtcbiAgMzc6XHRcdGludCByZXQgPSAwO1xuICAzODpcdFx0dTE2IGhvc3RfaWQ7XG4gIDM5Olx0XHRpbnQgcmV0cnkgPSAwO1xuICA0MDpcdFx0dW5zaWduZWQgbG9uZyB3YWl0X3JldCA9IDA7XG4gIDQxOlx0XHRzdHJ1Y3Qgc2tfYnVmZiAqc2tiO1xuICA0MjpcdFx0c3RydWN0IG1tODF4X3NrYnEgKmNtZF9xID0gbW04MXhfaGlmX2dldF90eF9jbWRfcXVldWUobW9ycyk7XG4gIDQzOlx0XHRzdHJ1Y3QgaG9zdF9jbWRfcmVzcF9jYiAqcmVzcF9jYjtcbiAgNDQ6XHRcdERFQ0xBUkVfQ09NUExFVElPTl9PTlNUQUNLKGNtZF9jb21wKTtcbiAgNDU6XHRcbiAgNDY6XHRcdEJVSUxEX0JVR19PTihzaXplb2Yoc3RydWN0IGhvc3RfY21kX3Jlc3BfY2IpIFx1MDAzZVxuICA0NzpcdFx0XHQgICAgIElFRUU4MDIxMV9UWF9JTkZPX0RSSVZFUl9EQVRBX1NJWkUpO1xuICA0ODpcdFxuICA0OTpcdFx0Y21kX2xlbiA9IHNpemVvZigqcmVxKSAmIzQzOyBsZTE2X3RvX2NwdShyZXEtXHUwMDNlaGRyLmxlbik7XG4gIDUwOlx0XHRyZXEtXHUwMDNlaGRyLmZsYWdzID0gY3B1X3RvX2xlMTYoSE9TVF9DTURfVFlQRV9SRVEpO1xuICA1MTpcdFxuICA1MjpcdFx0bXV0ZXhfbG9jayhcdTAwMjZtb3JzLVx1MDAzZWNtZF93YWl0KTtcbiAgNTM6XHRcdG1vcnMtXHUwMDNlY21kX3NlcSYjNDM7JiM0Mzs7XG4gIDU0Olx0XHRpZiAobW9ycy1cdTAwM2VjbWRfc2VxIFx1MDAzZSBIT1NUX0NNRF9IT1NUX0lEX1NFUV9NQVgpXG4gIDU1Olx0XHRcdG1vcnMtXHUwMDNlY21kX3NlcSA9IDE7XG4gIDU2Olx0XHRob3N0X2lkID0gbW9ycy1cdTAwM2VjbWRfc2VxIFx1MDAzY1x1MDAzYyBIT1NUX0NNRF9IT1NUX0lEX1NFUV9TSElGVDtcbiAgNTc6XHRcbiAgNTg6XHRcdG1tODF4X3BzX2Rpc2FibGUobW9ycyk7XG4gIDU5Olx0XG4gIDYwOlx0XHRkbyB7XG4gIDYxOlx0XHRcdHJlcS1cdTAwM2VoZHIuaG9zdF9pZCA9IGNwdV90b19sZTE2KGhvc3RfaWQgfCByZXRyeSk7XG4gIDYyOlx0XG4gIDYzOlx0XHRcdHNrYiA9IG1tODF4X3NrYnFfYWxsb2Nfc2tiKGNtZF9xLCBjbWRfbGVuKTtcbiAgNjQ6XHRcdFx0aWYgKCFza2IpIHtcbiAgNjU6XHRcdFx0XHRyZXQgPSAtRU5PTUVNO1xuICA2NjpcdFx0XHRcdGJyZWFrO1xuICA2NzpcdFx0XHR9XG4gIDY4Olx0XG4gIDY5Olx0XHRcdG1lbWNweShza2ItXHUwMDNlZGF0YSwgcmVxLCBjbWRfbGVuKTtcbiAgNzA6XHRcdFx0cmVzcF9jYiA9IChzdHJ1Y3QgaG9zdF9jbWRfcmVzcF9jYiAqKUlFRUU4MDIxMV9TS0JfQ0Ioc2tiKVxuICA3MTpcdFx0XHRcdFx0ICAtXHUwMDNlZHJpdmVyX2RhdGE7XG4gIDcyOlx0XHRcdHJlc3BfY2ItXHUwMDNlbGVuZ3RoID0gbGVuZ3RoO1xuICA3MzpcdFx0XHRyZXNwX2NiLVx1MDAzZWRlc3RfcmVzcCA9IHJlc3A7XG4gIDc0Olx0XG4gIDc1Olx0XHRcdGRldl9kYmcobW9ycy1cdTAwM2VkZXYsIFwmIzM0O0NNRCAweCUwNHg6JTA0eFwmIzM0OyxcbiAgNzY6XHRcdFx0XHRsZTE2X3RvX2NwdShyZXEtXHUwMDNlaGRyLm1lc3NhZ2VfaWQpLFxuICA3NzpcdFx0XHRcdGxlMTZfdG9fY3B1KHJlcS1cdTAwM2VoZHIuaG9zdF9pZCkpO1xuICA3ODpcdFxuICA3OTpcdFx0XHRtdXRleF9sb2NrKFx1MDAyNm1vcnMtXHUwMDNlY21kX2xvY2spO1xuICA4MDpcdFx0XHRtb3JzLVx1MDAzZWNtZF9jb21wID0gXHUwMDI2Y21kX2NvbXA7XG4gIDgxOlx0XHRcdGlmIChyZXRyeSBcdTAwM2UgMClcbiAgODI6XHRcdFx0XHRyZWluaXRfY29tcGxldGlvbihcdTAwMjZjbWRfY29tcCk7XG4gIDgzOlx0XHRcdHRpbWVvdXQgPSB0aW1lb3V0ID8gdGltZW91dCA6IEhPU1RfQ01EX0RFRkFVTFRfVElNRU9VVF9NUztcbiAgODQ6XHRcdFx0cmV0ID0gbW04MXhfc2ticV9za2JfdHgoY21kX3EsIFx1MDAyNnNrYiwgTlVMTCxcbiAgODU6XHRcdFx0XHRcdFx0TU04MVhfU0tCX0NIQU5fQ09NTUFORCk7XG4gIDg2Olx0XHRcdG11dGV4X3VubG9jayhcdTAwMjZtb3JzLVx1MDAzZWNtZF9sb2NrKTtcbiAgODc6XHRcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zNy8zPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDcgMDU6MDY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPmttc2FuLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNzQxOAoJCQkJCQkJb3V0cHV0OiAyMgoJCQkJCQkJdGhvdWdodHM6IDQxCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHRob3VnaHQgcHJvY2VzcywgYXMgaWYgSSB3ZXJlIGFuYWx5emluZyB0aGlzIGNvZGU6CgoqKkFuYWx5emluZyB0aGUgYG1tODF4X2NtZF90eGAgRnVuY3Rpb24qKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IGhvdyB0aGlzIGBtbTgxeF9jbWRfdHhgIGZ1bmN0aW9uIGlzIGJlaW5nIHVzZWQuIFRoZSBpbXBvcnRhbnQgcGllY2UgaGVyZSBpcyB0aGF0IGNhbGxlcnMgYXJlIHBhc3NpbmcgYSBgcmVzcGAgYXJndW1lbnQuIFRoYXQmIzM5O3MgaW1tZWRpYXRlbHkgaW50ZXJlc3Rpbmc7IHRoYXQgYHJlc3BgIHByb2JhYmx5IGhvbGRzIHNvbWUgc29ydCBvZiByZXNwb25zZSBkYXRhIG9yIGVycm9yIGluZm9ybWF0aW9uLCBhbmQgaXQmIzM5O3MgYmVpbmcgKnBhc3NlZCogaW4sIHdoaWNoIHN1Z2dlc3RzIGl0IG1pZ2h0IGJlIG1vZGlmaWVkIGJ5IHRoZSBmdW5jdGlvbiwgb3IgbWlnaHQgYmUgdXNlZCB0byByZXRyaWV2ZSBkYXRhIGZyb20gdGhlIGNhbGwuIE5vdywgSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGNhbGxpbmcgY29udGV4dHMuIEEgYGdyZXBgIGZvciBgbW04MXhfY21kX3R4YCB3aWxsIHF1aWNrbHkgcmV2ZWFsIGFsbCB0aGUgcGxhY2VzIGluIHRoZSBjb2RlYmFzZSB3aGVyZSB0aGlzIGZ1bmN0aW9uIGlzIGJlaW5nIGludm9rZWQuIFRoYXQmIzM5O2xsIHNob3cgbWUgdGhlIGRpZmZlcmVudCBzY2VuYXJpb3Mgd2hlcmUgaXQmIzM5O3MgdXNlZCwgdGhlIGRhdGEgaXQmIzM5O3Mgd29ya2luZyB3aXRoLCBhbmQgdGhlIHJvbGVzIGl0cyBwbGF5aW5nLiBUaGF0IHdpbGwgaW5mb3JtIGEgYmV0dGVyIHVuZGVyc3RhbmRpbmcgb2YgdGhlIGNvZGUgaW4gYWN0aW9uLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjM4LzM8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNyAwNTowNjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDttbTgxeF9jbWRfdHgmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb21tYW5kLmM9Mjc9c3RydWN0IGhvc3RfY21kX3Jlc3BfY2Ige1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29tbWFuZC5jLTMyLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb21tYW5kLmM6MzM6c3RhdGljIGludCBtbTgxeF9jbWRfdHgoc3RydWN0IG1tODF4ICptb3JzLCBzdHJ1Y3QgaG9zdF9jbWRfcmVzcCAqcmVzcCxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29tbWFuZC5jLTM0LVx0XHRcdHN0cnVjdCBob3N0X2NtZF9yZXEgKnJlcSwgdTMyIGxlbmd0aCwgdTMyIHRpbWVvdXQpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb21tYW5kLmM9MjMzPWludCBtbTgxeF9jbWRfc3RhX3N0YXRlKHN0cnVjdCBtbTgxeCAqbW9ycywgc3RydWN0IG1tODF4X3ZpZiAqbW9yc192aWYsIHUxNiBhaWQsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb21tYW5kLmMtMjQ2LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb21tYW5kLmM6MjQ3Olx0cmV0dXJuIG1tODF4X2NtZF90eChtb3JzLCBOVUxMLCAoc3RydWN0IGhvc3RfY21kX3JlcSAqKVx1MDAyNnJlcSwgMCwgMCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuYy0yNDgtfVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29tbWFuZC5jPTI1MD1pbnQgbW04MXhfY21kX2FkZF9pZihzdHJ1Y3QgbW04MXggKm1vcnMsIHUxNiAqdmlmX2lkLCBjb25zdCB1OCAqYWRkcixcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuYy0yNzEtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuYzoyNzI6XHRyZXQgPSBtbTgxeF9jbWRfdHgobW9ycywgKHN0cnVjdCBob3N0X2NtZF9yZXNwICopXHUwMDI2cmVzcCxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29tbWFuZC5jLTI3My1cdFx0XHQgICAoc3RydWN0IGhvc3RfY21kX3JlcSAqKVx1MDAyNnJlcSwgc2l6ZW9mKHJlc3ApLCAwKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuYz0yODA9aW50IG1tODF4X2NtZF9nZXRfY2FwYWJpbGl0aWVzKHN0cnVjdCBtbTgxeCAqbW9ycywgdTE2IHZpZl9pZCxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuYy0yODktXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuYzoyOTA6XHRyZXQgPSBtbTgxeF9jbWRfdHgobW9ycywgKHN0cnVjdCBob3N0X2NtZF9yZXNwICopXHUwMDI2cnNwLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb21tYW5kLmMtMjkxLVx0XHRcdCAgIChzdHJ1Y3QgaG9zdF9jbWRfcmVxICopXHUwMDI2cmVxLCBzaXplb2YocnNwKSwgMCk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb21tYW5kLmM9MzA5PWludCBtbTgxeF9jbWRfZ2V0X21heF90eHBvd2VyKHN0cnVjdCBtbTgxeCAqbW9ycywgczMyICpvdXRfcG93ZXJfbWJtKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29tbWFuZC5jLTMxNi1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29tbWFuZC5jOjMxNzpcdHJldCA9IG1tODF4X2NtZF90eChtb3JzLCAoc3RydWN0IGhvc3RfY21kX3Jlc3AgKilcdTAwMjZyZXNwLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb21tYW5kLmMtMzE4LVx0XHRcdCAgIChzdHJ1Y3QgaG9zdF9jbWRfcmVxICopXHUwMDI2cmVxLCBzaXplb2YocmVzcCksIDApO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29tbWFuZC5jPTMyNT1pbnQgbW04MXhfY21kX2h3X3NjYW4oc3RydWN0IG1tODF4ICptb3JzLCBzdHJ1Y3QgbW04MXhfaHdfc2Nhbl9wYXJhbXMgKnBhcmFtcyxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuYy0zNTktXHRyZXEtXHUwMDNlaGRyLmxlbiA9IGNwdV90b19sZTE2KCh1MTYpKChidWYgLSAodTggKilyZXEpIC0gc2l6ZW9mKHJlcS1cdTAwM2VoZHIpKSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuYzozNjA6XHRyZXQgPSBtbTgxeF9jbWRfdHgobW9ycywgTlVMTCwgKHN0cnVjdCBob3N0X2NtZF9yZXEgKilyZXEsIDAsIDApO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb21tYW5kLmMtMzYxLVx0a2ZyZWUocmVxKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuYz0zNjY9aW50IG1tODF4X2NtZF9zZXRfdHhwb3dlcihzdHJ1Y3QgbW04MXggKm1vcnMsIHMzMiAqb3V0X3Bvd2VyX21ibSxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuYy0zNzUtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuYzozNzY6XHRyZXQgPSBtbTgxeF9jbWRfdHgobW9ycywgKHN0cnVjdCBob3N0X2NtZF9yZXNwICopXHUwMDI2cmVzcCxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29tbWFuZC5jLTM3Ny1cdFx0XHQgICAoc3RydWN0IGhvc3RfY21kX3JlcSAqKVx1MDAyNnJlcSwgc2l6ZW9mKHJlc3ApLCAwKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuYz0zODQ9aW50IG1tODF4X2NtZF9zZXRfY2hhbm5lbChzdHJ1Y3QgbW04MXggKm1vcnMsIHUzMiBvcF9jaGFuX2ZyZXFfaHosXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb21tYW5kLmMtMzk4LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb21tYW5kLmM6Mzk5Olx0cmV0ID0gbW04MXhfY21kX3R4KG1vcnMsIChzdHJ1Y3QgaG9zdF9jbWRfcmVzcCAqKVx1MDAyNnJlc3AsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuYy00MDAtXHRcdFx0ICAgKHN0cnVjdCBob3N0X2NtZF9yZXEgKilcdTAwMjZyZXEsIHNpemVvZihyZXNwKSwgMCk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb21tYW5kLmM9NDA3PWludCBtbTgxeF9jbWRfZGlzYWJsZV9rZXkoc3RydWN0IG1tODF4ICptb3JzLCBzdHJ1Y3QgbW04MXhfdmlmICptb3JzX3ZpZixcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuYy00MTktXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuYzo0MjA6XHRyZXR1cm4gbW04MXhfY21kX3R4KG1vcnMsIE5VTEwsIChzdHJ1Y3QgaG9zdF9jbWRfcmVxICopXHUwMDI2cmVxLCAwLCAwKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29tbWFuZC5jLTQyMS19XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb21tYW5kLmM9NDIzPWludCBtbTgxeF9jbWRfaW5zdGFsbF9rZXkoc3RydWN0IG1tODF4ICptb3JzLCBzdHJ1Y3QgbW04MXhfdmlmICptb3JzX3ZpZixcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuYy00NDYtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuYzo0NDc6XHRyZXQgPSBtbTgxeF9jbWRfdHgobW9ycywgKHN0cnVjdCBob3N0X2NtZF9yZXNwICopXHUwMDI2cmVzcCxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29tbWFuZC5jLTQ0OC1cdFx0XHQgICAoc3RydWN0IGhvc3RfY21kX3JlcSAqKVx1MDAyNnJlcSwgc2l6ZW9mKHJlc3ApLCAwKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuYz00NTg9aW50IG1tODF4X2NtZF9jZmdfbXVsdGljYXN0X2ZpbHRlcihzdHJ1Y3QgbW04MXggKm1vcnMsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb21tYW5kLmMtNDc1LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb21tYW5kLmM6NDc2Olx0cmV0ID0gbW04MXhfY21kX3R4KG1vcnMsIE5VTEwsIChzdHJ1Y3QgaG9zdF9jbWRfcmVxICopcmVxLCAwLCAwKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29tbWFuZC5jLTQ3Ny1cdGtmcmVlKHJlcSk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb21tYW5kLmM9NDgxPWludCBtbTgxeF9jbWRfY2ZnX2JzcyhzdHJ1Y3QgbW04MXggKm1vcnMsIHUxNiB2aWZfaWQsIHUxNiBiZWFjb25faW50LFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29tbWFuZC5jLTQ5MC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29tbWFuZC5jOjQ5MTpcdHJldHVybiBtbTgxeF9jbWRfdHgobW9ycywgTlVMTCwgKHN0cnVjdCBob3N0X2NtZF9yZXEgKilcdTAwMjZyZXEsIDAsIDApO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb21tYW5kLmMtNDkyLX1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuYz00OTQ9aW50IG1tODF4X2NtZF9jb25maWdfYmVhY29uX3RpbWVyKHN0cnVjdCBtbTgxeCAqbW9ycywgdm9pZCAqbW04MXhfdmlmLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29tbWFuZC5jLTUwMy1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29tbWFuZC5jOjUwNDpcdHJldHVybiBtbTgxeF9jbWRfdHgobW9ycywgTlVMTCwgKHN0cnVjdCBob3N0X2NtZF9yZXEgKilcdTAwMjZyZXEsIDAsIDApO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb21tYW5kLmMtNTA1LX1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuYz01MDc9aW50IG1tODF4X2NtZF9zZXRfcHMoc3RydWN0IG1tODF4ICptb3JzLCBib29sIGVuYWJsZWQpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb21tYW5kLmMtNTEzLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb21tYW5kLmM6NTE0Olx0cmV0dXJuIG1tODF4X2NtZF90eChtb3JzLCBOVUxMLCAoc3RydWN0IGhvc3RfY21kX3JlcSAqKVx1MDAyNnJlcSwgMCxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29tbWFuZC5jLTUxNS1cdFx0XHQgICAgSE9TVF9DTURfUE9XRVJTQVZFX1RJTUVPVVRfTVMpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29tbWFuZC5jPTUxOD1pbnQgbW04MXhfY21kX2NmZ19xb3Moc3RydWN0IG1tODF4ICptb3JzLCBzdHJ1Y3QgbW04MXhfcXVldWVfcGFyYW1zICpwYXJhbXMpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb21tYW5kLmMtNTI5LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb21tYW5kLmM6NTMwOlx0cmV0dXJuIG1tODF4X2NtZF90eChtb3JzLCBOVUxMLCAoc3RydWN0IGhvc3RfY21kX3JlcSAqKVx1MDAyNnJlcSwgMCwgMCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuYy01MzEtfVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29tbWFuZC5jPTUzMz1pbnQgbW04MXhfY21kX3JtX2lmKHN0cnVjdCBtbTgxeCAqbW9ycywgdTE2IHZpZl9pZClcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuYy01MzgtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuYzo1Mzk6XHRyZXR1cm4gbW04MXhfY21kX3R4KG1vcnMsIE5VTEwsIChzdHJ1Y3QgaG9zdF9jbWRfcmVxICopXHUwMDI2cmVxLCAwLCAwKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29tbWFuZC5jLTU0MC19XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb21tYW5kLmM9NTQyPWludCBtbTgxeF9jbWRfc2V0X2ZyYWdfdGhyZXNob2xkKHN0cnVjdCBtbTgxeCAqbW9ycywgdTMyIGZyYWdfdGhyZXNob2xkKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29tbWFuZC5jLTU1MC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29tbWFuZC5jOjU1MTpcdHJldHVybiBtbTgxeF9jbWRfdHgobW9ycywgTlVMTCwgKHN0cnVjdCBob3N0X2NtZF9yZXEgKilcdTAwMjZyZXEsIDAsIDApO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb21tYW5kLmMtNTUyLX1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuYz01NTQ9aW50IG1tODF4X2NtZF9nZXRfZGlzYWJsZWRfY2hhbm5lbHMoXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb21tYW5kLmMtNTYxLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb21tYW5kLmM6NTYyOlx0cmV0dXJuIG1tODF4X2NtZF90eChtb3JzLCAoc3RydWN0IGhvc3RfY21kX3Jlc3AgKilyZXNwLCBcdTAwMjZyZXEsIHJlc3BfbGVuLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb21tYW5kLmMtNTYzLVx0XHRcdCAgICAwKTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zOS8zPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDcgMDU6MDY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPmttc2FuLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTA3NjIKCQkJCQkJCW91dHB1dDogMTU2CgkJCQkJCQl0aG91Z2h0czogNjU2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBhIFBvdGVudGlhbCBPdXQtb2YtQm91bmRzIFJlYWQgaW4gYG1tODF4X2NtZF9yZXNwX3Byb2Nlc3NgKioKCk9rYXksIGxldCYjMzk7cyBicmVhayB0aGlzIGRvd24uIE15IGNvbmNlcm4gaGVyZSBpcyBhIHBvdGVudGlhbCBvdXQtb2YtYm91bmRzIHJlYWQgdnVsbmVyYWJpbGl0eSB3aXRoaW4gdGhlIGBtbTgxeF9jbWRfcmVzcF9wcm9jZXNzYCBmdW5jdGlvbi4gU3BlY2lmaWNhbGx5LCB3aGVuIGEgcmVzcG9uc2UgU0tCIChzb2NrZXQgYnVmZmVyKSBjb21lcyBpbiBmcm9tIHRoZSBoYXJkd2FyZS9maXJtd2FyZSwgdGhlIGNvZGUgY2FzdHMgdGhlIFNLQiYjMzk7cyBkYXRhIHRvIGEgYGhvc3RfY21kX3Jlc3BgIHN0cnVjdHVyZS4gVGhlIHBvdGVudGlhbCBwcm9ibGVtIGFyaXNlcyBpZiB0aGUgY2xhaW1lZCBsZW5ndGggKGBzcmNfcmVzcC0mZ3Q7aGRyLmxlbmApIGluIHRoYXQgcmVzcG9uc2Ugc3RydWN0dXJlIGV4Y2VlZHMgdGhlIGFjdHVhbCBzaXplIG9mIHRoZSBTS0ImIzM5O3MgZGF0YSAoYHNrYi0mZ3Q7bGVuYCkuIFdpdGhvdXQgYSBjaGVjayBsaWtlIGBsZW5ndGggPSBtaW5fdChpbnQsIGxlbmd0aCwgc2tiLSZndDtsZW4pO2AsIHRoZSBgbWVtY3B5YCBvcGVyYXRpb24gd291bGQgYXR0ZW1wdCB0byByZWFkIHBhc3QgdGhlIGVuZCBvZiB0aGUgU0tCJiMzOTtzIGFsbG9jYXRlZCBidWZmZXIsIGxlYWRpbmcgdG8gYW4gb3V0LW9mLWJvdW5kcyByZWFkLiBUaGlzIGlzICpkZWZpbml0ZWx5KiBhbiBvdXQtb2YtYm91bmRzIHJlYWQgYnVnIG9uIGFuIFNLQiBidWZmZXIuCgpOb3csIGxldCYjMzk7cyB0aGluayBhYm91dCBLTVNBTiAoS2VybmVsIE1lbW9yeSBTYW5pdGl6ZXIpLiBEb2VzIHRoaXMgY2hhbmdlIGludHJvZHVjZSBhbnkgdW5pbml0aWFsaXplZCBtZW1vcnkgcmlza3M/IEkgbmVlZCB0byBiZSB0aG9yb3VnaC4KCiogICAqKlVuaW5pdGlhbGl6ZWQgbWVtb3J5OioqIE5vLCB0aGlzIHBhdGNoIGFjdHVhbGx5ICpwcmV2ZW50cyogcmVhZGluZyBwYXN0IHRoZSBib3VuZHMgb2YgdGhlIFNLQi4gSXQgcmVkdWNlcyB0aGUgY29weSBsZW5ndGggdG8gcmVzcGVjdCB0aGUgYnVmZmVyJiMzOTtzIHNpemUuIE5vIG5ldyB1bmluaXRpYWxpemVkIG1lbW9yeSBpcyBpbnRyb2R1Y2VkLgoqICAgKipVc2VyIHNwYWNlIGV4cG9zdXJlOioqIFRoaXMgaXMgYW4gaW50ZXJuYWwgY29tbWFuZCByZXNwb25zZSBoYW5kbGluZyBwYXRoIHdpdGhpbiB0aGUga2VybmVsLiBUaGUgY29waWVkIGRhdGEgaXNuJiMzOTt0IGJlaW5nIGRpcmVjdGx5IHNlbnQgdG8gdXNlciBzcGFjZS4gSXQgaXMgb25seSBwYXNzZWQgYmV0d2VlbiBrZXJuZWwgY29tbWFuZCBzdHJ1Y3R1cmVzLiBObyB1c2VyIHNwYWNlIGV4cG9zdXJlIGhlcmUuCiogICAqKlVuaW5pdGlhbGl6ZWQgdmFyaWFibGVzOioqIE5vLCB0aGUgZml4IGRvZXNuJiMzOTt0IGRlcGVuZCBvbiB1bmluaXRpYWxpemVkIHZhcmlhYmxlcy4KKiAgICoqRXhwb3NlZCB1bmluaXRpYWxpemVkIGZpZWxkcy9wYWRkaW5nOioqIERlZmluaXRlbHkgbm90LiBUaGlzIHBhdGNoIHByZXZlbnRzIHJlYWRzIG9mIHVuaW5pdGlhbGl6ZWQgbWVtb3J5LCBpdCBkb2VzIG5vdCBjcmVhdGUgYW55LgoKQWxyaWdodCwgbGV0JiMzOTtzIG1ldGhvZGljYWxseSBjaGVjayB0aGUgTmVlZHNLTVNBTiBjcml0ZXJpYToKCjEuICAqKktlcm5lbCBzdHJ1Y3R1cmVzIHRvIHVzZXIgc3BhY2U6KiogTm90IGFwcGxpY2FibGUuCjIuICAqKkNvbmRpdGlvbmFsIGxvZ2ljIG9uIHVuaW5pdGlhbGl6ZWQgdmFyaWFibGVzOioqIE5vdCBhcHBsaWNhYmxlLgozLiAgKipDb21wbGV4IGRhdGEgc3RydWN0dXJlcyB3aXRoIHVuaW5pdGlhbGl6ZWQgZmllbGRzOioqIE5vdCBhcHBsaWNhYmxlLgo0LiAgKipCb3VuZHMgY2hlY2tzIGV4cG9zaW5nIHVuaW5pdGlhbGl6ZWQgYnl0ZXM6KiogTm90IGFwcGxpY2FibGUsIGl0ICpwcmV2ZW50cyogb3V0LW9mLWJvdW5kcyByZWFkcywgd2hpY2ggYXJlIGEgZGlmZmVyZW50IHRoaW5nLgoKR2l2ZW4gYWxsIG9mIHRoYXQsIHRoaXMgYnVnIGZhbGxzIHNxdWFyZWx5IHdpdGhpbiB0aGUgY2FwYWJpbGl0aWVzIG9mIEtBU0FOIChLZXJuZWwgQWRkcmVzcyBTYW5pdGl6ZXIpLiBLQVNBTiBkZXRlY3RzIG91dC1vZi1ib3VuZHMgYWNjZXNzZXMuIEtNU0FOJiMzOTtzIHB1cnBvc2UsIGRldGVjdGluZyB1bmluaXRpYWxpemVkIG1lbW9yeSByZWFkcywgaXMgbm90IGRpcmVjdGx5IHJlbGV2YW50IGhlcmUuIEtNU0FOIGlzIGZvY3VzZWQgb24gdGhpbmdzIGxpa2UgZGF0YSBsZWFrYWdlIHRvIHVzZXIgc3BhY2UsIHdoaWNoIGlzbiYjMzk7dCB0aGUgaXNzdWUuIEtBU0FOIGlzIHRoZSB0b29sIGZvciB0aGlzIHBhcnRpY3VsYXIgam9iLCB0aGVyZWZvcmUgTmVlZHNLTVNBTiBzaG91bGQgYmUgZmFsc2UuCgpMZXQmIzM5O3MgZG8gYSBzYW5pdHkgY2hlY2sgb24gdGhlIEtNU0FOUmVhc29uaW5nLiBJJiMzOTtsbCBjb250cmFzdCBLTVNBTiYjMzk7cyBhbmQgS0FTQU4mIzM5O3MgYXBwbGljYWJpbGl0eToKCiogICAqKktBU0FOOioqIE91dC1vZi1ib3VuZHMgbWVtb3J5IGFjY2Vzc2VzIGFuZCBidWZmZXIgb3ZlcmZsb3dzLiBUaGlzIGJ1ZyBpcyBhbiBvdXQtb2YtYm91bmRzIHJlYWQgZnJvbSB0aGUgU0tCIGRhdGEuCiogICAqKktNU0FOOioqIFVuaW5pdGlhbGl6ZWQgbWVtb3J5IHJlYWRzIGFuZCBpbmZvcm1hdGlvbiBsZWFrcyB0byB1c2VyIHNwYWNlLiBUaGlzIHBhdGNoIGRvZXNuJiMzOTt0IGludHJvZHVjZSBhbnkgbmV3IHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHZ1bG5lcmFiaWxpdGllcy4KClNvLCBJJiMzOTttIGNvbmZpZGVudC4gS0FTQU4gaXMgdGhlIGFwcHJvcHJpYXRlIHRvb2wgaGVyZS4gTm8gbmVlZCBmb3IgS01TQU4gZnV6emluZy4gTGV0JiMzOTtzIGludm9rZSBgc2V0LXJlc3VsdHNgLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQwLzM8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNyAwNTowNjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtLTVNBTlJlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmaXhlcyBhbiBvdXQtb2YtYm91bmRzIG1lbW9yeSByZWFkIGluIG1tODF4X2NtZF9yZXNwX3Byb2Nlc3MoKSBieSBjYXBwaW5nIHRoZSByZXNwb25zZSBjb3B5IGxlbmd0aCB0byBza2ItXHUwMDNlbGVuIChwcmV2ZW50aW5nIG1lbWNweSBmcm9tIHJlYWRpbmcgcGFzdCB0aGUgZW5kIG9mIHRoZSByZWNlaXZlZCBza2IgYnVmZmVyIGlmIHRoZSByZXNwb25zZSBoZWFkZXIgbGVuZ3RoIGNsYWltcyBhIGxhcmdlciBzaXplKS4gVGhpcyBpc3N1ZSBpcyBhIGNsYXNzaWMgYnVmZmVyIG91dC1vZi1ib3VuZHMgcmVhZCB3aGljaCBpcyBkaXJlY3RseSBkZXRlY3RlZCBieSBLQVNBTi4gVGhlIHBhdGNoIGRvZXMgbm90IGludHJvZHVjZSBhbnkgdW5pbml0aWFsaXplZCBtZW1vcnkgYWxsb2NhdGlvbnMsIGNvbmRpdGlvbmFsIGJyYW5jaGVzIGJhc2VkIG9uIHVuaW5pdGlhbGl6ZWQgZGF0YSwgb3Iga2VybmVsLXRvLXVzZXIgaW5mby1sZWFrcy4gVGhlcmVmb3JlLCBzdGFuZGFyZCBLQVNBTiBmdXp6aW5nIGlzIHN1ZmZpY2llbnQgYW5kIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIGlzIG5vdCB3YXJyYW50ZWQuJiMzNDssCiAgJiMzNDtOZWVkc0tNU0FOJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtLTVNBTlJlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmaXhlcyBhbiBvdXQtb2YtYm91bmRzIG1lbW9yeSByZWFkIGluIG1tODF4X2NtZF9yZXNwX3Byb2Nlc3MoKSBieSBjYXBwaW5nIHRoZSByZXNwb25zZSBjb3B5IGxlbmd0aCB0byBza2ItXHUwMDNlbGVuIChwcmV2ZW50aW5nIG1lbWNweSBmcm9tIHJlYWRpbmcgcGFzdCB0aGUgZW5kIG9mIHRoZSByZWNlaXZlZCBza2IgYnVmZmVyIGlmIHRoZSByZXNwb25zZSBoZWFkZXIgbGVuZ3RoIGNsYWltcyBhIGxhcmdlciBzaXplKS4gVGhpcyBpc3N1ZSBpcyBhIGNsYXNzaWMgYnVmZmVyIG91dC1vZi1ib3VuZHMgcmVhZCB3aGljaCBpcyBkaXJlY3RseSBkZXRlY3RlZCBieSBLQVNBTi4gVGhlIHBhdGNoIGRvZXMgbm90IGludHJvZHVjZSBhbnkgdW5pbml0aWFsaXplZCBtZW1vcnkgYWxsb2NhdGlvbnMsIGNvbmRpdGlvbmFsIGJyYW5jaGVzIGJhc2VkIG9uIHVuaW5pdGlhbGl6ZWQgZGF0YSwgb3Iga2VybmVsLXRvLXVzZXIgaW5mby1sZWFrcy4gVGhlcmVmb3JlLCBzdGFuZGFyZCBLQVNBTiBmdXp6aW5nIGlzIHN1ZmZpY2llbnQgYW5kIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIGlzIG5vdCB3YXJyYW50ZWQuJiMzNDssCiAgJiMzNDtOZWVkc0tNU0FOJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA3VDA1OjA0OjMyLjUxODMwMjk2WiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTM1MDQ2MTEzNTY3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIk1NODFYXCIsXG4gICAgXCJNTTgxWF9VU0JcIixcbiAgICBcIldMQU5fVkVORE9SX01PUlNFTUlDUk9cIixcbiAgICBcIk1BQzgwMjExXCIsXG4gICAgXCJVU0JcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJtbTgxeF9jbWRfcmVzcF9wcm9jZXNzXCJcbiAgXSxcbiAgXCJLTVNBTlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBmaXhlcyBhbiBvdXQtb2YtYm91bmRzIG1lbW9yeSByZWFkIGluIG1tODF4X2NtZF9yZXNwX3Byb2Nlc3MoKSBieSBjYXBwaW5nIHRoZSByZXNwb25zZSBjb3B5IGxlbmd0aCB0byBza2ItXFx1MDAzZWxlbiAocHJldmVudGluZyBtZW1jcHkgZnJvbSByZWFkaW5nIHBhc3QgdGhlIGVuZCBvZiB0aGUgcmVjZWl2ZWQgc2tiIGJ1ZmZlciBpZiB0aGUgcmVzcG9uc2UgaGVhZGVyIGxlbmd0aCBjbGFpbXMgYSBsYXJnZXIgc2l6ZSkuIFRoaXMgaXNzdWUgaXMgYSBjbGFzc2ljIGJ1ZmZlciBvdXQtb2YtYm91bmRzIHJlYWQgd2hpY2ggaXMgZGlyZWN0bHkgZGV0ZWN0ZWQgYnkgS0FTQU4uIFRoZSBwYXRjaCBkb2VzIG5vdCBpbnRyb2R1Y2UgYW55IHVuaW5pdGlhbGl6ZWQgbWVtb3J5IGFsbG9jYXRpb25zLCBjb25kaXRpb25hbCBicmFuY2hlcyBiYXNlZCBvbiB1bmluaXRpYWxpemVkIGRhdGEsIG9yIGtlcm5lbC10by11c2VyIGluZm8tbGVha3MuIFRoZXJlZm9yZSwgc3RhbmRhcmQgS0FTQU4gZnV6emluZyBpcyBzdWZmaWNpZW50IGFuZCBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBpcyBub3Qgd2FycmFudGVkLlwiLFxuICBcIk5lZWRzS01TQU5cIjogZmFsc2UsXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGFkZHMgYSBib3VuZHMgY2hlY2sgYWdhaW5zdCBza2ItXFx1MDAzZWxlbiBpbiBtbTgxeF9jbWRfcmVzcF9wcm9jZXNzKCkgdG8gcHJldmVudCBhbiBvdXQtb2YtYm91bmRzIHJlYWQgZHVyaW5nIG1lbWNweSB3aGVuIHByb2Nlc3NpbmcgY29tbWFuZCByZXNwb25zZXMgaW4gdGhlIE1vcnNlIE1pY3JvIE1NODF4IHdpcmVsZXNzIGRyaXZlci4gVGhpcyBkcml2ZXIgc3VwcG9ydHMgVVNCIGRldmljZXMgYW5kIGlzIHJlYWNoYWJsZSBpbiBmdXp6aW5nIGVudmlyb25tZW50cyB3aXRoIFVTQiBlbXVsYXRpb24gKGUuZy4gUmF3IEdhZGdldCAvIGR1bW15X2hjZCkuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA3VDA1OjA0OjMyLjUxODMwOTMyWiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1NjAzNTI5NzEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCA1NzkwNWZhN2UzNjUxZWY5M2ZlODk2NzQzMzAwYTE5MGRmMDM5ZDA1XFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBNb24gU2VwIDcgMDU6MDQ6MzEgMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb21tYW5kLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuY1xcbmluZGV4IGFmYjdlZTliYjIzNmYuLjU5MWU1YmExMDc1MzMgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb21tYW5kLmNcXG4rKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuY1xcbkBAIC0yMDksNiArMjA5LDcgQEAgaW50IG1tODF4X2NtZF9yZXNwX3Byb2Nlc3Moc3RydWN0IG1tODF4ICptb3JzLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxcbiBcXHRcXHRsZW5ndGggPSBtaW5fdChpbnQsIGxlbmd0aCxcXG4gXFx0XFx0XFx0ICAgICAgIGxlMTZfdG9fY3B1KHNyY19yZXNwLVxcdTAwM2VoZHIubGVuKSArXFxuIFxcdFxcdFxcdFxcdCAgICAgICBzaXplb2Yoc3RydWN0IGhvc3RfY21kX2hlYWRlcikpO1xcbitcXHRcXHRsZW5ndGggPSBtaW5fdChpbnQsIGxlbmd0aCwgc2tiLVxcdTAwM2VsZW4pO1xcbiBcXHRcXHRtZW1jcHkoZGVzdF9yZXNwLCBzcmNfcmVzcCwgbGVuZ3RoKTtcXG4gXFx0fSBlbHNlIHtcXG4gXFx0XFx0cmV0ID0gbGUzMl90b19jcHUoc3JjX3Jlc3AtXFx1MDAzZXN0YXR1cyk7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA3VDA1OjA0OjMzLjA3OTQ1OTQ0WiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiY29yZSIsIkR1cmF0aW9uIjoxMDU1MTI3ODM4NTMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiTU04MVhcIixcbiAgICBcIk1NODFYX1VTQlwiLFxuICAgIFwiV0xBTl9WRU5ET1JfTU9SU0VNSUNST1wiLFxuICAgIFwiTUFDODAyMTFcIixcbiAgICBcIlVTQlwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcIm1tODF4X2NtZF9yZXNwX3Byb2Nlc3NcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBhZGRzIGEgYm91bmRzIGNoZWNrIGFnYWluc3Qgc2tiLVxcdTAwM2VsZW4gaW4gbW04MXhfY21kX3Jlc3BfcHJvY2VzcygpIHRvIHByZXZlbnQgYW4gb3V0LW9mLWJvdW5kcyByZWFkIGR1cmluZyBtZW1jcHkgd2hlbiBwcm9jZXNzaW5nIGNvbW1hbmQgcmVzcG9uc2VzIGluIHRoZSBNb3JzZSBNaWNybyBNTTgxeCB3aXJlbGVzcyBkcml2ZXIuIFRoaXMgZHJpdmVyIHN1cHBvcnRzIFVTQiBkZXZpY2VzIGFuZCBpcyByZWFjaGFibGUgaW4gZnV6emluZyBlbnZpcm9ubWVudHMgd2l0aCBVU0IgZW11bGF0aW9uIChlLmcuIFJhdyBHYWRnZXQgLyBkdW1teV9oY2QpLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lciBhbmQgc2VjdXJpdHkgZW5naW5lZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGV2YWx1YXRlIHdoZXRoZXIgaXQgd2FycmFudHMgZnV6emluZyB3aXRoIHN5emthbGxlci5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24gaW50ZXJuYWwgYXNzdW1wdGlvbnMuIFlvdSBtdXN0IGFjdGl2ZWx5IHVzZSB5b3VyIGNvZGUgYWNjZXNzXG50b29scyB0byBpbnNwZWN0IHRoZSBhY3R1YWwgc291cmNlIGNvZGUsIGNhbGxlcnMsIGFuZCBzdXJyb3VuZGluZyBjb250ZXh0LlxuXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuMS4gQ09SRSBUUklBR0UgUEhJTE9TT1BIWVxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblRoZSBnb2FsIG9mIHBhdGNoIGZ1enppbmcgaXMgdG8gZGlzY292ZXIgY3Jhc2hlcywgcmVncmVzc2lvbnMsIGV4cG9zZWQgbGF0ZW50IGJ1Z3MsXG5hbmQgbmV3bHkgdHJpZ2dlcmVkIGFzc2VydGlvbnMgaW50cm9kdWNlZCBieSB0aGUgcGF0Y2ggc2VyaWVzLlxuXG4tIFJFQUNIQUJJTElUWSBJUyBUSEUgUFJJTUFSWSBHQVRFOlxuICBGdXp6aW5nIGNhbiBvbmx5IGRpc2NvdmVyIGJ1Z3MgaW4gY29kZSB0aGF0IGNhbiBhY3R1YWxseSBleGVjdXRlIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkXG4gIGVudmlyb25tZW50cyAoR0NFIG9yIFFFTVUsIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBkZXZpY2VzIGxpa2UgVVNCIGdhZGdldHMsIG5ldGRldiwgdHVuL3RhcCkuXG4gIElmIHRoZSBtb2RpZmllZCBjb2RlIGlzIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSAoc2VlIFNlY3Rpb24gMiksIGl0IE1VU1QgTk9UIGJlIGZ1enplZCxcbiAgcmVnYXJkbGVzcyBvZiB3aGV0aGVyIGl0IGFkZHMgYXNzZXJ0aW9ucyBvciBjb21wbGV4IGxvZ2ljLlxuXG4tIERPIE5PVCBCTElORExZIFRSVVNUIFwiTk8gRlVOQ1RJT05BTCBDSEFOR0VcIiAoTkZDSSkgT1IgXCJSRUZBQ1RPUklOR1wiIENMQUlNUzpcbiAgUGF0Y2ggYXV0aG9ycyByb3V0aW5lbHkgbGFiZWwgY2hhbmdlcyBhcyBcImNsZWFudXBzXCIsIFwicmVmYWN0b3JpbmdzXCIsIG9yIHN0YXRlXG4gIFwiTm8gZnVuY3Rpb25hbCBjaGFuZ2UgaW50ZW5kZWRcIi4gRG8gTk9UIHRha2UgdGhlc2UgY2xhaW1zIGF0IGZhY2UgdmFsdWUuXG4gIENvZGUgcmVmYWN0b3JpbmdzIHRoYXQgcmVhcnJhbmdlIGxvZ2ljLCBpbnRyb2R1Y2UgaGVscGVyIGZ1bmN0aW9ucywgb3IgYWx0ZXIgc3RhdGUgbWFuYWdlbWVudFxuICBpbiBjb3JlIHN1YnN5c3RlbXMgZnJlcXVlbnRseSBpbnRyb2R1Y2Ugc3VidGxlIHNlbWFudGljIHNoaWZ0cyBvciB1bmNvdmVyIGxhdGVudCBrZXJuZWwgYnVncy5cbiAgSWYgcmVhY2hhYmxlIGV4ZWN1dGFibGUgY29kZSBpcyBtb2RpZmllZCBvciByZWZhY3RvcmVkLCBpdCBNVVNUIGJlIGZ1enplZC5cblxuLSBORVcgT1IgTU9ESUZJRUQgQVNTRVJUSU9OUyBJTiBSRUFDSEFCTEUgQ09ERSBNVVNUIEJFIEZVWlpFRDpcbiAgV2hlbiBhIHBhdGNoIGludHJvZHVjZXMgb3IgbW9kaWZpZXMgcnVudGltZSBjaGVja3Mgb3IgYXNzZXJ0aW9ucyAoZS5nLiwgV0FSTl9PTiosIFZNX1dBUk5fT04qLFxuICBCVUdfT04qLCBsb2NrZGVwX2Fzc2VydCopIGluIHJlYWNoYWJsZSBjb2RlIHBhdGhzLCBpdCBlbmZvcmNlcyBuZXcgb3Igc3RyaWN0ZXIgaW52YXJpYW50cy5cbiAgRXZlbiBpZiB0aGUgYXV0aG9yIGJlbGlldmVzIHRoZSBpbnZhcmlhbnQgYWx3YXlzIGhvbGRzLCBmdXp6aW5nIGlzIGVzc2VudGlhbCB0byB2ZXJpZnkgd2hldGhlclxuICBhbiB1bnVzdWFsIHNlcXVlbmNlIG9mIG9wZXJhdGlvbnMgY2FuIHZpb2xhdGUgaXQuXG5cbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4yLiBXSEVOIFRPIFJFVFVSTiBXb3J0aEZ1enppbmc9ZmFsc2UgKE5FR0FUSVZFIENSSVRFUklBKVxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgT05MWSBJRiBhbGwgbW9kaWZpZWQgY29kZSBmYWxscyBzdHJpY3RseSBpbnRvIG9uZSBvciBtb3JlIG9mIHRoZXNlIGNhdGVnb3JpZXM6XG5cbi0gTm9uLWtlcm5lbCBhbmQgbm9uLWV4ZWN1dGFibGUgY2hhbmdlczpcbiAgKiBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBjb21tZW50cywgb3Igc3BlbGxpbmcgZml4ZXMuXG4gICogVXNlci1zcGFjZSBkaXJlY3Rvcmllcywgc2VsZi10ZXN0cywgc2FtcGxlcywgb3Igc2NyaXB0cyAoZS5nLiwgdG9vbHMvLCBzYW1wbGVzLywgc2NyaXB0cy8sIHVzci8pXG4gICAgdGhhdCBkbyBub3QgYWZmZWN0IHRoZSBjb21waWxlZCBrZXJuZWwgaW1hZ2UgKHZtbGludXgpIG9yIGtlcm5lbCBtb2R1bGVzLlxuICAqIFB1cmVseSBkZWNvcmF0aXZlIGxvZ2dpbmcgKGUuZy4sIG1lc3NhZ2Ugc3RyaW5ncyBpbiBwcl9lcnIsIHByaW50aywgZGV2X2luZm8pIG9yIHRyYWNlcG9pbnRzXG4gICAgdGhhdCBkbyBub3QgYWx0ZXIgY29udHJvbCBmbG93IG9yIGRhdGEgc3RydWN0dXJlcy5cbiAgKiBCdWlsZCBzeXN0ZW0gb3IgS2NvbmZpZyBjaGFuZ2VzIHRoYXQgZG8gbm90IGFsdGVyIGNvbXBpbGVkIEMgbG9naWMuXG4tIFN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBoYXJkd2FyZTpcbiAgKiBWZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2hlcywgU21hcnROSUNzLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsXG4gICAgaW9uaWMsIGFtZGdwdSkgcmVxdWlyaW5nIHBoeXNpY2FsIEFTSUMvUENJZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS5cbi0gVW5yZWFjaGFibGUgZXhlY3V0aW9uIHBhdGhzOlxuICAqIERyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKC5yZW1vdmUsIC5zaHV0ZG93biwgcGNpX3VucmVnaXN0ZXJfZHJpdmVyKSBleGVjdXRlZCBvbmx5IGR1cmluZ1xuICAgIHBoeXNpY2FsIFBDSSBob3QtdW5wbHVnIG9yIG1hbnVhbCBzeXNmcyBkcml2ZXIgdW5iaW5kaW5nLlxuICAqIENvZGUgcGF0aHMgZXhjbHVzaXZlIHRvIGFyY2hpdGVjdHVyZXMgb3RoZXIgdGhhbiB0aGUgdGFyZ2V0IGFyY2hpdGVjdHVyZS5cblxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbjMuIFdIRU4gVE8gUkVUVVJOIFdvcnRoRnV6emluZz10cnVlIChQT1NJVElWRSBDUklURVJJQSlcbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5SZXR1cm4gV29ydGhGdXp6aW5nPXRydWUgd2hlbmV2ZXIgdGhlIHBhdGNoIHRvdWNoZXMgcmVhY2hhYmxlIGV4ZWN1dGFibGUgY29kZSwgaW5jbHVkaW5nOlxuLSBDb3JlIFN1YnN5c3RlbXM6XG4gICogQW55IGxvZ2ljIG1vZGlmaWNhdGlvbnMgaW4gbWVtb3J5IG1hbmFnZW1lbnQgKG1tLyksIHN5bmNocm9uaXphdGlvbi9sb2NraW5nIChrZXJuZWwvbG9ja2luZy8pLFxuICAgIEJQRiwgc2NoZWR1bGVyLCBjb3JlIG5ldHdvcmtpbmcsIFZGUywgb3Igc3lzY2FsbCBoYW5kbGluZy5cbi0gUmVmYWN0b3JpbmdzIGFuZCBDb2RlIENsZWFudXBzOlxuICAqIEFueSByZXN0cnVjdHVyaW5nIG9mIHJlYWNoYWJsZSBkYXRhIHN0cnVjdHVyZXMsIGhlbHBlciBhYnN0cmFjdGlvbnMsIG9yIGFsZ29yaXRobSBmbG93cy5cbi0gUnVudGltZSBBc3NlcnRpb25zIGFuZCBEZWZlbnNpdmUgQ2hlY2tzOlxuICAqIEFueSBpbnRyb2R1Y3Rpb24gb3IgYWx0ZXJhdGlvbiBvZiBhc3NlcnRpb25zIChXQVJOX09OKiwgVk1fV0FSTl9PTiosIEJVR19PTiosIGV0Yy4pIGluIHJlYWNoYWJsZSBwYXRocy5cbi0gUmVhY2hhYmxlIERyaXZlcnMgYW5kIFByb3RvY29sczpcbiAgKiBEcml2ZXJzIGFjY2Vzc2libGUgdmlhIHZpcnR1YWwgYnVzZXMgKHZpcnRpbywgVVNCIGdhZGdldCwgbG9vcGJhY2ssIG5ldGxpbmssIGJpbmRlciwgc29ja2V0cywgZXRjLikuXG5cbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG40LiBFWFRSQUNUSU5HIEZvY3VzU3ltYm9scyAoUFJFVkVOVElORyBESUxVVElPTilcbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5XaGVuIFdvcnRoRnV6emluZz10cnVlLCB5b3UgbXVzdCBleHRyYWN0IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgaW50byBGb2N1c1N5bWJvbHMgdG8gZ3VpZGUgdGhlIGZ1enplcjpcblxuLSBBVk9JRCBVQklRVUlUT1VTIExJRkVDWUNMRSBIT1QtUEFUSFM6XG4gIERvIE5PVCBsaXN0IGdlbmVyaWMsIHViaXF1aXRvdXMgZnVuY3Rpb25zIGNhbGxlZCBieSBhbG1vc3QgZXZlcnkgcHJvZ3JhbSBpbiB0aGUgY29ycHVzXG4gIChpbmNsdWRpbmcsIGJ1dCBub3QgbGltaXRlZCB0bzogZ2VuZXJhbCBtZW1vcnkgYWxsb2NhdG9ycyBhbmQgZGVhbGxvY2F0b3JzLCBwYWdlIGZhdWx0XG4gIGFuZCB0cmFwIGhhbmRsZXJzLCBvciBjb3JlIHN5bmNocm9uaXphdGlvbiBwcmltaXRpdmVzOyB0aGlzIGlzIG5vdCBhbiBleGhhdXN0aXZlIGxpc3QpLlxuICBMaXN0aW5nIHViaXF1aXRvdXMgZnVuY3Rpb25zIGNhdXNlcyB0aGUgZnV6emVyIHRvIGNsYXNzaWZ5IHRob3VzYW5kcyBvZiB1bnJlbGF0ZWQgdGVzdHMgYXMgXCJmb2N1c2VkXCIsXG4gIHdoaWNoIHNldmVyZWx5IGRpbHV0ZXMgZnV6emluZyBlZmZvcnQgYXdheSBmcm9tIHRoZSBhY3R1YWwgY2hhbmdlcy5cblxuLSBUQVJHRVQgU1BFQ0lGSUMgRkVBVFVSRSBMT0dJQyBBTkQgRU5UUllQT0lOVFM6XG4gIExpc3QgZnVuY3Rpb25zIHRoYXQgc3BlY2lmaWNhbGx5IGltcGxlbWVudCB0aGUgbG9naWMgYmVpbmcgYWRkZWQgb3IgYWx0ZXJlZCwgb3IgZGlyZWN0IEFQSSBlbnRyeXBvaW50c1xuICBmb3IgdGhlIHN1YnN5c3RlbSBmZWF0dXJlIHVuZGVyIHJldmlldy5cblxuLSBIQU5ETElORyBTVEFUSUMgSU5MSU5FIEZVTkNUSU9OUyBJTiBIRUFERVJTICguaCk6XG4gIENvbXBpbGVyLWlubGluZWQgc3RhdGljIGZ1bmN0aW9ucyAoc3VjaCBhcyBzdGF0aWMgaW5saW5lcyBpbiBtbS8qLmggb3IgaW5jbHVkZS9saW51eC8qLmgpIGxhY2tcbiAgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcyBpbiB2bWxpbnV4IGFuZCBjYW5ub3QgYmUgdGFyZ2V0ZWQgZGlyZWN0bHkgYnkgc3ltYm9sIGNvdmVyYWdlIGZpbHRlcnMuXG4gIElmIHRoZSBjaGFuZ2VzIGFyZSBwcmltYXJpbHkgaW4gc3RhdGljIGlubGluZSBoZWxwZXJzLCBpZGVudGlmeSBub24tc3RhdGljLCBmZWF0dXJlLXNwZWNpZmljIGNhbGxlclxuICBmdW5jdGlvbnMgaW4gLmMgZmlsZXMgdGhhdCBleGVyY2lzZSB0aGVtIChhdm9pZGluZyB1YmlxdWl0b3VzIGxpZmVjeWNsZSB3cmFwcGVycykuXG5cbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG41LiBJREVOVElGWUlORyBFbmFibGVDb25maWdzXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSBjb21waWxlIGFuZCByZWFjaCB0aGUgbW9kaWZpZWQgY29kZTpcbi0gSW5zcGVjdCBLY29uZmlnIGZpbGVzIGFuZCAjaWZkZWYgZ3VhcmRzOyBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbi0gQ2hlY2sgXCJkZXBlbmRzIG9uXCIgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzIG5lZWRlZC5cbi0gU3RyaXAgYW55ICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IlRhcmdldCBhcmNoaXRlY3R1cmU6IGFtZDY0XG5cbkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IDU3OTA1ZmE3ZTM2NTFlZjkzZmU4OTY3NDMzMDBhMTkwZGYwMzlkMDVcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgTW9uIFNlcCA3IDA1OjA0OjMxIDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb21tYW5kLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuY1xuaW5kZXggYWZiN2VlOWJiMjM2Zi4uNTkxZTViYTEwNzUzMyAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29tbWFuZC5jXG4rKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuY1xuQEAgLTIwOSw2ICsyMDksNyBAQCBpbnQgbW04MXhfY21kX3Jlc3BfcHJvY2VzcyhzdHJ1Y3QgbW04MXggKm1vcnMsIHN0cnVjdCBza19idWZmICpza2IpXG4gXHRcdGxlbmd0aCA9IG1pbl90KGludCwgbGVuZ3RoLFxuIFx0XHRcdCAgICAgICBsZTE2X3RvX2NwdShzcmNfcmVzcC1cdTAwM2VoZHIubGVuKSArXG4gXHRcdFx0XHQgICAgICAgc2l6ZW9mKHN0cnVjdCBob3N0X2NtZF9oZWFkZXIpKTtcbitcdFx0bGVuZ3RoID0gbWluX3QoaW50LCBsZW5ndGgsIHNrYi1cdTAwM2VsZW4pO1xuIFx0XHRtZW1jcHkoZGVzdF9yZXNwLCBzcmNfcmVzcCwgbGVuZ3RoKTtcbiBcdH0gZWxzZSB7XG4gXHRcdHJldCA9IGxlMzJfdG9fY3B1KHNyY19yZXNwLVx1MDAzZXN0YXR1cyk7XG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wN1QwNTowNDozMy4wNzk0NjA5NFoiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjExMDYwODY2MTM4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgSW1wYWN0IG9mIHRoZSBDb2RlIENoYW5nZSoqXG5cbk9rYXksIGZpcnN0IHRoaW5ncyBmaXJzdCwgbGV0J3MgZGl2ZSBpbnRvIHRoaXMgZGlmZi4gSXQgbG9va3MgbGlrZSB0aGUgY2hhbmdlIGlzIHdpdGhpbiBgZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb21tYW5kLmNgLiBTcGVjaWZpY2FsbHksIHRoZSBhZmZlY3RlZCBmdW5jdGlvbiBpcyBgbW04MXhfY21kX3Jlc3BfcHJvY2Vzc2AuIFJpZ2h0LCBzbyB0aGlzIHN1Z2dlc3RzIHdlJ3JlIGRlYWxpbmcgd2l0aCBjb21tYW5kIHJlc3BvbnNlIHByb2Nlc3Npbmcgd2l0aGluIHRoZSBtbTgxeCBkcml2ZXIuXG5cbk5vdywgSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGFyY2hpdGVjdHVyZSBvZiB0aGlzIGRyaXZlci4gVG8gZ2V0IGEgaGFuZGxlIG9uIHRoZSB1bmRlcmx5aW5nIGludGVyZmFjZSwgSSdsbCBxdWlja2x5IGNoZWNrIHRoZSBkaXJlY3RvcnksIGBkcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2AuIElzIHRoaXMgU1BJLCBTRElPLCBVU0IsIFBDSWUsIG9yIHNvbWV0aGluZyBlbHNlIGVudGlyZWx5PyBBIHF1aWNrIHNjYW4gb2YgcmVsYXRlZCBmaWxlcyBzaG91bGQgZ2l2ZSBtZSB0aGUgYW5zd2VyIHByZXR0eSBxdWlja2x5LlxuXG5UbyBiZSB0aG9yb3VnaCwgbGV0J3MgdXNlIGBncmVwcGVyYCBvciBgcmVhZC1maWxlYCBvbiBgZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9gIG9yIEtjb25maWcgdG8gcXVpY2tseSBpZGVudGlmeSBpZiB0aGVyZSBhcmUgYW55IG9idmlvdXMgY2x1ZXMgdG8gd2hhdCdzIGdvaW5nIG9uLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyOTMwLCJPdXRwdXRUb2tlbnMiOjMzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTI0LCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDdUMDU6MDQ6NDQuMTQwMzI5NTU4WiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU2MjU1MDg4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm1tODF4XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiXFxuRnVsbCBvdXRwdXQgaXMgdG9vIGxvbmcsIHNob3dpbmcgNTAwIG91dCBvZiA0ODQ3IGxpbmVzLlxcblVzZSBtb3JlIHByZWNpc2UgZXhwcmVzc2lvbiBpZiBwb3NzaWJsZS5cXG5cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL0tjb25maWc9MTM9aWYgV0xBTl9WRU5ET1JfTU9SU0VNSUNST1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vS2NvbmZpZzoxNDpzb3VyY2UgXFxcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvS2NvbmZpZ1xcXCJcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL0tjb25maWctMTUtZW5kaWYgIyBXTEFOX1ZFTkRPUl9NT1JTRU1JQ1JPXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL01ha2VmaWxlLTEtIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vTWFrZWZpbGU6MjpvYmotJChDT05GSUdfTU04MVgpICs9IG1tODF4L1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9NYWtlZmlsZS0yLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvTWFrZWZpbGU6MzpvYmotJChDT05GSUdfTU04MVgpICs9IG1tODF4X2NvcmUub1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvTWFrZWZpbGUtNC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L01ha2VmaWxlOjU6bW04MXhfY29yZS15ICs9IGNvcmUub1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvTWFrZWZpbGU6NjptbTgxeF9jb3JlLXkgKz0gbWFjLm9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L01ha2VmaWxlOjc6bW04MXhfY29yZS15ICs9IGh3Lm9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L01ha2VmaWxlOjg6bW04MXhfY29yZS15ICs9IGZ3Lm9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L01ha2VmaWxlOjk6bW04MXhfY29yZS15ICs9IGNvbW1hbmQub1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvTWFrZWZpbGU6MTA6bW04MXhfY29yZS15ICs9IHBzLm9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L01ha2VmaWxlOjExOm1tODF4X2NvcmUteSArPSBza2JxLm9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L01ha2VmaWxlOjEyOm1tODF4X2NvcmUteSArPSB5YXBzX2h3Lm9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L01ha2VmaWxlOjEzOm1tODF4X2NvcmUteSArPSB5YXBzLm9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L01ha2VmaWxlOjE0Om1tODF4X2NvcmUteSArPSByYy5vXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9NYWtlZmlsZToxNTptbTgxeF9jb3JlLXkgKz0gbW1yYy5vXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9NYWtlZmlsZS0xNi1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L01ha2VmaWxlOjE3Om9iai0kKENPTkZJR19NTTgxWF9VU0IpICs9IG1tODF4X3VzYi5vXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9NYWtlZmlsZToxODptbTgxeF91c2IteSArPSB1c2Iub1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvTWFrZWZpbGUtMTktXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9NYWtlZmlsZToyMDpvYmotJChDT05GSUdfTU04MVhfU0RJTykgKz0gbW04MXhfc2Rpby5vXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9NYWtlZmlsZToyMTptbTgxeF9zZGlvLXkgKz0gc2Rpby5vXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2J1cy5oLTExLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvYnVzLmg6MTI6ZW51bSBtbTgxeF9idXNfdHlwZSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9idXMuaC0xMy1cXHRNTTgxWF9CVVNfVFlQRV9VU0IsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2J1cy5oLTE2LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvYnVzLmg6MTc6c3RydWN0IG1tODF4X2J1c19vcHMge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvYnVzLmg6MTg6XFx0aW50ICgqZG1fcmVhZCkoc3RydWN0IG1tODF4ICptb3JzLCB1MzIgYWRkciwgdTggKmRhdGEsIGludCBsZW4pO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvYnVzLmg6MTk6XFx0aW50ICgqZG1fd3JpdGUpKHN0cnVjdCBtbTgxeCAqbW9ycywgdTMyIGFkZHIsIGNvbnN0IHU4ICpkYXRhLCBpbnQgbGVuKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2J1cy5oOjIwOlxcdGludCAoKnJlZzMyX3JlYWQpKHN0cnVjdCBtbTgxeCAqbW9ycywgdTMyIGFkZHIsIHUzMiAqZGF0YSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9idXMuaDoyMTpcXHRpbnQgKCpyZWczMl93cml0ZSkoc3RydWN0IG1tODF4ICptb3JzLCB1MzIgYWRkciwgdTMyIGRhdGEpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvYnVzLmg6MjI6XFx0aW50ICgqZGlnaXRhbF9yZXNldCkoc3RydWN0IG1tODF4ICptb3JzKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2J1cy5oOjIzOlxcdHZvaWQgKCpzZXRfYnVzX2VuYWJsZSkoc3RydWN0IG1tODF4ICptb3JzLCBib29sIGVuYWJsZSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9idXMuaDoyNDpcXHR2b2lkICgqY29uZmlnX2J1cnN0X21vZGUpKHN0cnVjdCBtbTgxeCAqbW9ycywgYm9vbCBlbmFibGVfYnVyc3QpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvYnVzLmg6MjU6XFx0dm9pZCAoKmNsYWltKShzdHJ1Y3QgbW04MXggKm1vcnMpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvYnVzLmg6MjY6XFx0dm9pZCAoKnNldF9pcnEpKHN0cnVjdCBtbTgxeCAqbW9ycywgYm9vbCBlbmFibGUpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvYnVzLmg6Mjc6XFx0dm9pZCAoKnJlbGVhc2UpKHN0cnVjdCBtbTgxeCAqbW9ycyk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9idXMuaC0yOC1cXHR1bnNpZ25lZCBpbnQgYnVsa19hbGlnbm1lbnQ7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2J1cy5oLTM2LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvYnVzLmg6Mzc6LyogbW04MXhfZG1fcmVhZCAtIGxlbiBtdXN0IGJlIHJvdW5kZWQgdXAgdG8gdGhlIG5lYXJlc3QgNC1ieXRlIGJvdW5kYXJ5ICovXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9idXMuaDozODpzdGF0aWMgaW5saW5lIGludCBtbTgxeF9kbV9yZWFkKHN0cnVjdCBtbTgxeCAqbW9ycywgdTMyIGFkZHIsIHU4ICpkYXRhLCBpbnQgbGVuKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvYnVzLmgtMzkte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9idXMuaC00Mi1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2J1cy5oOjQzOnN0YXRpYyBpbmxpbmUgaW50IG1tODF4X2RtX3dyaXRlKHN0cnVjdCBtbTgxeCAqbW9ycywgdTMyIGFkZHIsIGNvbnN0IHU4ICpkYXRhLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvYnVzLmgtNDQtXFx0XFx0XFx0XFx0IGludCBsZW4pXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2J1cy5oLTQ4LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvYnVzLmg6NDk6c3RhdGljIGlubGluZSBpbnQgbW04MXhfcmVnMzJfcmVhZChzdHJ1Y3QgbW04MXggKm1vcnMsIHUzMiBhZGRyLCB1MzIgKmRhdGEpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9idXMuaC01MC17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2J1cy5oLTUzLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvYnVzLmg6NTQ6c3RhdGljIGlubGluZSBpbnQgbW04MXhfcmVnMzJfd3JpdGUoc3RydWN0IG1tODF4ICptb3JzLCB1MzIgYWRkciwgdTMyIGRhdGEpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9idXMuaC01NS17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2J1cy5oLTU4LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvYnVzLmg6NTk6c3RhdGljIGlubGluZSBpbnQgbW04MXhfYnVzX2RpZ2l0YWxfcmVzZXQoc3RydWN0IG1tODF4ICptb3JzKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvYnVzLmgtNjAte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9idXMuaC02Ni1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2J1cy5oOjY3OnN0YXRpYyBpbmxpbmUgdm9pZCBtbTgxeF9zZXRfYnVzX2VuYWJsZShzdHJ1Y3QgbW04MXggKm1vcnMsIGJvb2wgZW5hYmxlKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvYnVzLmgtNjgte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9idXMuaC03MS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2J1cy5oOjcyOnN0YXRpYyBpbmxpbmUgdm9pZCBtbTgxeF9idXNfY29uZmlnX2J1cnN0X21vZGUoc3RydWN0IG1tODF4ICptb3JzLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvYnVzLmgtNzMtXFx0XFx0XFx0XFx0XFx0ICAgICAgIGJvb2wgZW5hYmxlX2J1cnN0KVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9idXMuaC03OC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2J1cy5oOjc5OnN0YXRpYyBpbmxpbmUgdm9pZCBtbTgxeF9jbGFpbV9idXMoc3RydWN0IG1tODF4ICptb3JzKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvYnVzLmgtODAte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9idXMuaC04My1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2J1cy5oOjg0OnN0YXRpYyBpbmxpbmUgdm9pZCBtbTgxeF9idXNfc2V0X2lycShzdHJ1Y3QgbW04MXggKm1vcnMsIGJvb2wgZW5hYmxlKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvYnVzLmgtODUte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9idXMuaC04OC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2J1cy5oOjg5OnN0YXRpYyBpbmxpbmUgdm9pZCBtbTgxeF9yZWxlYXNlX2J1cyhzdHJ1Y3QgbW04MXggKm1vcnMpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9idXMuaC05MC17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2J1cy5oLTkzLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvYnVzLmg6OTQ6c3RhdGljIGlubGluZSB1bnNpZ25lZCBpbnQgbW04MXhfYnVzX2dldF9hbGlnbm1lbnQoc3RydWN0IG1tODF4ICptb3JzKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvYnVzLmgtOTUte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb21tYW5kLmM9Mjc9c3RydWN0IGhvc3RfY21kX3Jlc3BfY2Ige1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb21tYW5kLmMtMzItXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb21tYW5kLmM6MzM6c3RhdGljIGludCBtbTgxeF9jbWRfdHgoc3RydWN0IG1tODF4ICptb3JzLCBzdHJ1Y3QgaG9zdF9jbWRfcmVzcCAqcmVzcCxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuYy0zNC1cXHRcXHRcXHRzdHJ1Y3QgaG9zdF9jbWRfcmVxICpyZXEsIHUzMiBsZW5ndGgsIHUzMiB0aW1lb3V0KVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb21tYW5kLmMtNDEtXFx0c3RydWN0IHNrX2J1ZmYgKnNrYjtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuYzo0MjpcXHRzdHJ1Y3QgbW04MXhfc2ticSAqY21kX3EgPSBtbTgxeF9oaWZfZ2V0X3R4X2NtZF9xdWV1ZShtb3JzKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuYy00My1cXHRzdHJ1Y3QgaG9zdF9jbWRfcmVzcF9jYiAqcmVzcF9jYjtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29tbWFuZC5jLTU3LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29tbWFuZC5jOjU4OlxcdG1tODF4X3BzX2Rpc2FibGUobW9ycyk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb21tYW5kLmMtNTktXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuYy02Mi1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuYzo2MzpcXHRcXHRza2IgPSBtbTgxeF9za2JxX2FsbG9jX3NrYihjbWRfcSwgY21kX2xlbik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb21tYW5kLmMtNjQtXFx0XFx0aWYgKCFza2IpIHtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29tbWFuZC5jLTgzLVxcdFxcdHRpbWVvdXQgPSB0aW1lb3V0ID8gdGltZW91dCA6IEhPU1RfQ01EX0RFRkFVTFRfVElNRU9VVF9NUztcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuYzo4NDpcXHRcXHRyZXQgPSBtbTgxeF9za2JxX3NrYl90eChjbWRfcSwgXFx1MDAyNnNrYiwgTlVMTCxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuYy04NS1cXHRcXHRcXHRcXHRcXHRNTTgxWF9TS0JfQ0hBTl9DT01NQU5EKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29tbWFuZC5jLTg4LVxcdFxcdGlmIChyZXQpIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuYzo4OTpcXHRcXHRcXHRkZXZfZXJyKG1vcnMtXFx1MDAzZWRldiwgXFxcIm1tODF4X3NrYnFfdHggZmFpbDogJWRcXFwiLCByZXQpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29tbWFuZC5jLTkwLVxcdFxcdFxcdGJyZWFrO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb21tYW5kLmMtMTIxLVxcdFxcdHNwaW5fbG9ja19iaChcXHUwMDI2Y21kX3EtXFx1MDAzZWxvY2spO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29tbWFuZC5jOjEyMjpcXHRcXHRtbTgxeF9za2JxX3NrYl9maW5pc2goY21kX3EsIHNrYiwgTlVMTCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb21tYW5kLmMtMTIzLVxcdFxcdHNwaW5fdW5sb2NrX2JoKFxcdTAwMjZjbWRfcS1cXHUwMDNlbG9jayk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuYy0xMjgtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb21tYW5kLmM6MTI5OlxcdG1tODF4X3BzX2VuYWJsZShtb3JzKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuYy0xMzAtXFx0bXV0ZXhfdW5sb2NrKFxcdTAwMjZtb3JzLVxcdTAwM2VjbWRfd2FpdCk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuYy0xNDUtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb21tYW5kLmM6MTQ2OmludCBtbTgxeF9jbWRfcmVzcF9wcm9jZXNzKHN0cnVjdCBtbTgxeCAqbW9ycywgc3RydWN0IHNrX2J1ZmYgKnNrYilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuYy0xNDcte1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29tbWFuZC5jLTE0OC1cXHRpbnQgbGVuZ3RoLCByZXQgPSAtRVNSQ0g7IC8qIE5vIHN1Y2ggcHJvY2VzcyAqL1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29tbWFuZC5jOjE0OTpcXHRzdHJ1Y3QgbW04MXhfc2ticSAqY21kX3EgPSBtbTgxeF9oaWZfZ2V0X3R4X2NtZF9xdWV1ZShtb3JzKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuYy0xNTAtXFx0c3RydWN0IGhvc3RfY21kX3Jlc3AgKnNyY19yZXNwID0gKHN0cnVjdCBob3N0X2NtZF9yZXNwICopKHNrYi1cXHUwMDNlZGF0YSk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuYy0xNjMtXFx0aWYgKCFIT1NUX0NNRF9JU19SRVNQKHNyY19yZXNwKSkge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29tbWFuZC5jOjE2NDpcXHRcXHRyZXQgPSBtbTgxeF9tYWNfZXZlbnRfcmVjdihtb3JzLCBza2IpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29tbWFuZC5jLTE2NS1cXHRcXHRnb3RvIGV4aXRfZnJlZTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29tbWFuZC5jLTE2OS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuYzoxNzA6XFx0Y21kX3NrYiA9IG1tODF4X3NrYnFfdHhfcGVuZGluZyhjbWRfcSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb21tYW5kLmMtMTcxLVxcdGlmIChjbWRfc2tiKSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb21tYW5kLmM6MTcyOlxcdFxcdG1tODF4X3NrYnFfcHVsbF9oZHJfcG9zdF90eChjbWRfc2tiKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuYy0xNzMtXFx0XFx0cmVxID0gKHN0cnVjdCBob3N0X2NtZF9yZXEgKiljbWRfc2tiLVxcdTAwM2VkYXRhO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb21tYW5kLmMtMjMyLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29tbWFuZC5jOjIzMzppbnQgbW04MXhfY21kX3N0YV9zdGF0ZShzdHJ1Y3QgbW04MXggKm1vcnMsIHN0cnVjdCBtbTgxeF92aWYgKm1vcnNfdmlmLCB1MTYgYWlkLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29tbWFuZC5jLTIzNC1cXHRcXHRcXHRzdHJ1Y3QgaWVlZTgwMjExX3N0YSAqc3RhLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb21tYW5kLmMtMjQ2LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29tbWFuZC5jOjI0NzpcXHRyZXR1cm4gbW04MXhfY21kX3R4KG1vcnMsIE5VTEwsIChzdHJ1Y3QgaG9zdF9jbWRfcmVxICopXFx1MDAyNnJlcSwgMCwgMCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb21tYW5kLmMtMjQ4LX1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuYy0yNDktXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb21tYW5kLmM6MjUwOmludCBtbTgxeF9jbWRfYWRkX2lmKHN0cnVjdCBtbTgxeCAqbW9ycywgdTE2ICp2aWZfaWQsIGNvbnN0IHU4ICphZGRyLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29tbWFuZC5jLTI1MS1cXHRcXHQgICAgIGVudW0gbmw4MDIxMV9pZnR5cGUgdHlwZSlcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29tbWFuZC5jLTI3MS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuYzoyNzI6XFx0cmV0ID0gbW04MXhfY21kX3R4KG1vcnMsIChzdHJ1Y3QgaG9zdF9jbWRfcmVzcCAqKVxcdTAwMjZyZXNwLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29tbWFuZC5jLTI3My1cXHRcXHRcXHQgICAoc3RydWN0IGhvc3RfY21kX3JlcSAqKVxcdTAwMjZyZXEsIHNpemVvZihyZXNwKSwgMCk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuYy0yNzktXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb21tYW5kLmM6MjgwOmludCBtbTgxeF9jbWRfZ2V0X2NhcGFiaWxpdGllcyhzdHJ1Y3QgbW04MXggKm1vcnMsIHUxNiB2aWZfaWQsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb21tYW5kLmM6MjgxOlxcdFxcdFxcdCAgICAgICBzdHJ1Y3QgbW04MXhfZndfY2FwcyAqY2FwYWJpbGl0aWVzKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29tbWFuZC5jLTI4Mi17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuYy0yODktXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb21tYW5kLmM6MjkwOlxcdHJldCA9IG1tODF4X2NtZF90eChtb3JzLCAoc3RydWN0IGhvc3RfY21kX3Jlc3AgKilcXHUwMDI2cnNwLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29tbWFuZC5jLTI5MS1cXHRcXHRcXHQgICAoc3RydWN0IGhvc3RfY21kX3JlcSAqKVxcdTAwMjZyZXEsIHNpemVvZihyc3ApLCAwKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29tbWFuZC5jLTI5NS1cXHRjYXBhYmlsaXRpZXMtXFx1MDAzZWFtcGR1X21zcyA9IHJzcC5jYXBhYmlsaXRpZXMuYW1wZHVfbXNzO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29tbWFuZC5jOjI5NjpcXHRjYXBhYmlsaXRpZXMtXFx1MDAzZW1tODF4X21tc3Nfb2Zmc2V0ID0gcnNwLm1vcnNlX21tc3Nfb2Zmc2V0O1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29tbWFuZC5jLTI5Ny1cXHRjYXBhYmlsaXRpZXMtXFx1MDAzZWJlYW1mb3JtZWVfc3RzX2NhcGFiaWxpdHkgPVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb21tYW5kLmMtMzA4LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29tbWFuZC5jOjMwOTppbnQgbW04MXhfY21kX2dldF9tYXhfdHhwb3dlcihzdHJ1Y3QgbW04MXggKm1vcnMsIHMzMiAqb3V0X3Bvd2VyX21ibSlcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuYy0zMTAte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb21tYW5kLmMtMzE2LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29tbWFuZC5jOjMxNzpcXHRyZXQgPSBtbTgxeF9jbWRfdHgobW9ycywgKHN0cnVjdCBob3N0X2NtZF9yZXNwICopXFx1MDAyNnJlc3AsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb21tYW5kLmMtMzE4LVxcdFxcdFxcdCAgIChzdHJ1Y3QgaG9zdF9jbWRfcmVxICopXFx1MDAyNnJlcSwgc2l6ZW9mKHJlc3ApLCAwKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29tbWFuZC5jLTMyNC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuYzozMjU6aW50IG1tODF4X2NtZF9od19zY2FuKHN0cnVjdCBtbTgxeCAqbW9ycywgc3RydWN0IG1tODF4X2h3X3NjYW5fcGFyYW1zICpwYXJhbXMsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb21tYW5kLmMtMzI2LVxcdFxcdCAgICAgIGJvb2wgc3RvcmUpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuYy0zMzMtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb21tYW5kLmM6MzM0OlxcdGNtZF9zaXplID0gbW04MXhfaHdfc2Nhbl9oX2dldF9jbWRfc2l6ZShwYXJhbXMpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29tbWFuZC5jLTMzNS1cXHRjbWRfc2l6ZSA9IFJPVU5EX0JZVEVTX1RPX1dPUkQoY21kX3NpemUpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb21tYW5kLmMtMzUzLVxcdFxcdHJlcS1cXHUwMDNlZHdlbGxfdGltZV9tcyA9IGNwdV90b19sZTMyKHBhcmFtcy1cXHUwMDNlZHdlbGxfdGltZV9tcyk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb21tYW5kLmM6MzU0OlxcdFxcdGJ1ZiA9IG1tODF4X2h3X3NjYW5faF9pbnNlcnRfdGx2cyhwYXJhbXMsIGJ1Zik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb21tYW5kLmMtMzU1LVxcdH1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29tbWFuZC5jLTM1OS1cXHRyZXEtXFx1MDAzZWhkci5sZW4gPSBjcHVfdG9fbGUxNigodTE2KSgoYnVmIC0gKHU4ICopcmVxKSAtIHNpemVvZihyZXEtXFx1MDAzZWhkcikpKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuYzozNjA6XFx0cmV0ID0gbW04MXhfY21kX3R4KG1vcnMsIE5VTEwsIChzdHJ1Y3QgaG9zdF9jbWRfcmVxICopcmVxLCAwLCAwKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuYy0zNjEtXFx0a2ZyZWUocmVxKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29tbWFuZC5jLTM2NS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuYzozNjY6aW50IG1tODF4X2NtZF9zZXRfdHhwb3dlcihzdHJ1Y3QgbW04MXggKm1vcnMsIHMzMiAqb3V0X3Bvd2VyX21ibSxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuYy0zNjctXFx0XFx0XFx0ICBpbnQgdHhwb3dlcl9tYm0pXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuYy0zNzUtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb21tYW5kLmM6Mzc2OlxcdHJldCA9IG1tODF4X2NtZF90eChtb3JzLCAoc3RydWN0IGhvc3RfY21kX3Jlc3AgKilcXHUwMDI2cmVzcCxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuYy0zNzctXFx0XFx0XFx0ICAgKHN0cnVjdCBob3N0X2NtZF9yZXEgKilcXHUwMDI2cmVxLCBzaXplb2YocmVzcCksIDApO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb21tYW5kLmMtMzgzLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29tbWFuZC5jOjM4NDppbnQgbW04MXhfY21kX3NldF9jaGFubmVsKHN0cnVjdCBtbTgxeCAqbW9ycywgdTMyIG9wX2NoYW5fZnJlcV9oeixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuYy0zODUtXFx0XFx0XFx0ICB1OCBwcmlfMW1oel9jaGFuX2lkeCwgdTggb3BfYndfbWh6LCB1OCBwcmlfYndfbWh6LFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb21tYW5kLmMtMzk4LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29tbWFuZC5jOjM5OTpcXHRyZXQgPSBtbTgxeF9jbWRfdHgobW9ycywgKHN0cnVjdCBob3N0X2NtZF9yZXNwICopXFx1MDAyNnJlc3AsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb21tYW5kLmMtNDAwLVxcdFxcdFxcdCAgIChzdHJ1Y3QgaG9zdF9jbWRfcmVxICopXFx1MDAyNnJlcSwgc2l6ZW9mKHJlc3ApLCAwKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29tbWFuZC5jLTQwNi1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuYzo0MDc6aW50IG1tODF4X2NtZF9kaXNhYmxlX2tleShzdHJ1Y3QgbW04MXggKm1vcnMsIHN0cnVjdCBtbTgxeF92aWYgKm1vcnNfdmlmLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29tbWFuZC5jLTQwOC1cXHRcXHRcXHQgIHUxNiBhaWQsIHN0cnVjdCBpZWVlODAyMTFfa2V5X2NvbmYgKmtleSlcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29tbWFuZC5jLTQxOS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuYzo0MjA6XFx0cmV0dXJuIG1tODF4X2NtZF90eChtb3JzLCBOVUxMLCAoc3RydWN0IGhvc3RfY21kX3JlcSAqKVxcdTAwMjZyZXEsIDAsIDApO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29tbWFuZC5jLTQyMS19XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb21tYW5kLmMtNDIyLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29tbWFuZC5jOjQyMzppbnQgbW04MXhfY21kX2luc3RhbGxfa2V5KHN0cnVjdCBtbTgxeCAqbW9ycywgc3RydWN0IG1tODF4X3ZpZiAqbW9yc192aWYsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb21tYW5kLmMtNDI0LVxcdFxcdFxcdCAgdTE2IGFpZCwgc3RydWN0IGllZWU4MDIxMV9rZXlfY29uZiAqa2V5LFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb21tYW5kLmMtNDQ2LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29tbWFuZC5jOjQ0NzpcXHRyZXQgPSBtbTgxeF9jbWRfdHgobW9ycywgKHN0cnVjdCBob3N0X2NtZF9yZXNwICopXFx1MDAyNnJlc3AsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb21tYW5kLmMtNDQ4LVxcdFxcdFxcdCAgIChzdHJ1Y3QgaG9zdF9jbWRfcmVxICopXFx1MDAyNnJlcSwgc2l6ZW9mKHJlc3ApLCAwKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29tbWFuZC5jLTQ1Ny1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuYzo0NTg6aW50IG1tODF4X2NtZF9jZmdfbXVsdGljYXN0X2ZpbHRlcihzdHJ1Y3QgbW04MXggKm1vcnMsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb21tYW5kLmM6NDU5OlxcdFxcdFxcdFxcdCAgIHN0cnVjdCBtbTgxeF92aWYgKm1vcnNfdmlmKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29tbWFuZC5jLTQ2MC17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuYy00NzUtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb21tYW5kLmM6NDc2OlxcdHJldCA9IG1tODF4X2NtZF90eChtb3JzLCBOVUxMLCAoc3RydWN0IGhvc3RfY21kX3JlcSAqKXJlcSwgMCwgMCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb21tYW5kLmMtNDc3LVxcdGtmcmVlKHJlcSk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuYy00ODAtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb21tYW5kLmM6NDgxOmludCBtbTgxeF9jbWRfY2ZnX2JzcyhzdHJ1Y3QgbW04MXggKm1vcnMsIHUxNiB2aWZfaWQsIHUxNiBiZWFjb25faW50LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29tbWFuZC5jLTQ4Mi1cXHRcXHQgICAgICB1MTYgZHRpbV9wZXJpb2QsIHUzMiBjc3NpZClcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29tbWFuZC5jLTQ5MC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuYzo0OTE6XFx0cmV0dXJuIG1tODF4X2NtZF90eChtb3JzLCBOVUxMLCAoc3RydWN0IGhvc3RfY21kX3JlcSAqKVxcdTAwMjZyZXEsIDAsIDApO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29tbWFuZC5jLTQ5Mi19XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb21tYW5kLmMtNDkzLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29tbWFuZC5jOjQ5NDppbnQgbW04MXhfY21kX2NvbmZpZ19iZWFjb25fdGltZXIoc3RydWN0IG1tODF4ICptb3JzLCB2b2lkICptbTgxeF92aWYsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb21tYW5kLmMtNDk1LVxcdFxcdFxcdFxcdCAgYm9vbCBlbmFibGVkKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29tbWFuZC5jLTQ5Ni17XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb21tYW5kLmM6NDk3OlxcdHN0cnVjdCBtbTgxeF92aWYgKnZpZiA9IG1tODF4X3ZpZjtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuYy00OTgtXFx0c3RydWN0IGhvc3RfY21kX3JlcV9ic3NfYmVhY29uX2NvbmZpZyByZXEgPSB7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuYy01MDMtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb21tYW5kLmM6NTA0OlxcdHJldHVybiBtbTgxeF9jbWRfdHgobW9ycywgTlVMTCwgKHN0cnVjdCBob3N0X2NtZF9yZXEgKilcXHUwMDI2cmVxLCAwLCAwKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuYy01MDUtfVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29tbWFuZC5jLTUwNi1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuYzo1MDc6aW50IG1tODF4X2NtZF9zZXRfcHMoc3RydWN0IG1tODF4ICptb3JzLCBib29sIGVuYWJsZWQpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb21tYW5kLmMtNTA4LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29tbWFuZC5jLTUxMy1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuYzo1MTQ6XFx0cmV0dXJuIG1tODF4X2NtZF90eChtb3JzLCBOVUxMLCAoc3RydWN0IGhvc3RfY21kX3JlcSAqKVxcdTAwMjZyZXEsIDAsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb21tYW5kLmMtNTE1LVxcdFxcdFxcdCAgICBIT1NUX0NNRF9QT1dFUlNBVkVfVElNRU9VVF9NUyk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuYy01MTctXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb21tYW5kLmM6NTE4OmludCBtbTgxeF9jbWRfY2ZnX3FvcyhzdHJ1Y3QgbW04MXggKm1vcnMsIHN0cnVjdCBtbTgxeF9xdWV1ZV9wYXJhbXMgKnBhcmFtcylcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuYy01MTkte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb21tYW5kLmMtNTI5LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29tbWFuZC5jOjUzMDpcXHRyZXR1cm4gbW04MXhfY21kX3R4KG1vcnMsIE5VTEwsIChzdHJ1Y3QgaG9zdF9jbWRfcmVxICopXFx1MDAyNnJlcSwgMCwgMCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb21tYW5kLmMtNTMxLX1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuYy01MzItXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb21tYW5kLmM6NTMzOmludCBtbTgxeF9jbWRfcm1faWYoc3RydWN0IG1tODF4ICptb3JzLCB1MTYgdmlmX2lkKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29tbWFuZC5jLTUzNC17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuYy01MzgtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb21tYW5kLmM6NTM5OlxcdHJldHVybiBtbTgxeF9jbWRfdHgobW9ycywgTlVMTCwgKHN0cnVjdCBob3N0X2NtZF9yZXEgKilcXHUwMDI2cmVxLCAwLCAwKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuYy01NDAtfVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29tbWFuZC5jLTU0MS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuYzo1NDI6aW50IG1tODF4X2NtZF9zZXRfZnJhZ190aHJlc2hvbGQoc3RydWN0IG1tODF4ICptb3JzLCB1MzIgZnJhZ190aHJlc2hvbGQpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb21tYW5kLmMtNTQzLXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29tbWFuZC5jLTU1MC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuYzo1NTE6XFx0cmV0dXJuIG1tODF4X2NtZF90eChtb3JzLCBOVUxMLCAoc3RydWN0IGhvc3RfY21kX3JlcSAqKVxcdTAwMjZyZXEsIDAsIDApO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29tbWFuZC5jLTU1Mi19XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb21tYW5kLmMtNTUzLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29tbWFuZC5jOjU1NDppbnQgbW04MXhfY21kX2dldF9kaXNhYmxlZF9jaGFubmVscyhcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuYzo1NTU6XFx0c3RydWN0IG1tODF4ICptb3JzLCBzdHJ1Y3QgaG9zdF9jbWRfcmVzcF9nZXRfZGlzYWJsZWRfY2hhbm5lbHMgKnJlc3AsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb21tYW5kLmMtNTU2LVxcdHVpbnQgcmVzcF9sZW4pXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuYy01NjEtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb21tYW5kLmM6NTYyOlxcdHJldHVybiBtbTgxeF9jbWRfdHgobW9ycywgKHN0cnVjdCBob3N0X2NtZF9yZXNwICopcmVzcCwgXFx1MDAyNnJlcSwgcmVzcF9sZW4sXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb21tYW5kLmMtNTYzLVxcdFxcdFxcdCAgICAwKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29tbWFuZC5oLTE4LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29tbWFuZC5oOjE5OnN0cnVjdCBtbTgxeF9xdWV1ZV9wYXJhbXM7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb21tYW5kLmgtMjAtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb21tYW5kLmg6MjE6ZW51bSBtbTgxeF9jbWRfcmV0dXJuX2NvZGUge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29tbWFuZC5oLTIyLVxcdE1NODFYX1JFVF9TVUNDRVNTID0gMCxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29tbWFuZC5oPTQ0PXN0cnVjdCBob3N0X2NtZF9ldmVudCB7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuaC00OC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuaDo0OTppbnQgbW04MXhfY21kX3Jlc3BfcHJvY2VzcyhzdHJ1Y3QgbW04MXggKm1vcnMsIHN0cnVjdCBza19idWZmICpza2IpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29tbWFuZC5oOjUwOmludCBtbTgxeF9jbWRfYWRkX2lmKHN0cnVjdCBtbTgxeCAqbW9ycywgdTE2ICp2aWZfaWQsIGNvbnN0IHU4ICphZGRyLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29tbWFuZC5oLTUxLVxcdFxcdCAgICAgZW51bSBubDgwMjExX2lmdHlwZSB0eXBlKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuaDo1MjppbnQgbW04MXhfY21kX2dldF9jYXBhYmlsaXRpZXMoc3RydWN0IG1tODF4ICptb3JzLCB1MTYgdmlmX2lkLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29tbWFuZC5oOjUzOlxcdFxcdFxcdCAgICAgICBzdHJ1Y3QgbW04MXhfZndfY2FwcyAqY2FwYWJpbGl0aWVzKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuaDo1NDppbnQgbW04MXhfY21kX2NmZ19xb3Moc3RydWN0IG1tODF4ICptb3JzLCBzdHJ1Y3QgbW04MXhfcXVldWVfcGFyYW1zICpwYXJhbXMpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29tbWFuZC5oOjU1OmludCBtbTgxeF9jbWRfY29uZmlnX2JlYWNvbl90aW1lcihzdHJ1Y3QgbW04MXggKm1vcnMsIHZvaWQgKm1tODF4X3ZpZixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuaC01Ni1cXHRcXHRcXHRcXHQgIGJvb2wgZW5hYmxlZCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb21tYW5kLmg6NTc6aW50IG1tODF4X2NtZF9jZmdfYnNzKHN0cnVjdCBtbTgxeCAqbW9ycywgdTE2IHZpZl9pZCwgdTE2IGJlYWNvbl9pbnQsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb21tYW5kLmgtNTgtXFx0XFx0ICAgICAgdTE2IGR0aW1fcGVyaW9kLCB1MzIgY3NzaWQpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29tbWFuZC5oOjU5OmludCBtbTgxeF9jbWRfc2V0X2NoYW5uZWwoc3RydWN0IG1tODF4ICptb3JzLCB1MzIgb3BfY2hhbl9mcmVxX2h6LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29tbWFuZC5oLTYwLVxcdFxcdFxcdCAgdTggcHJpXzFtaHpfY2hhbl9pZHgsIHU4IG9wX2J3X21oeiwgdTggcHJpX2J3X21oeixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuaC02MS1cXHRcXHRcXHQgIHMzMiAqcG93ZXJfbWJtKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuaDo2MjppbnQgbW04MXhfY21kX2dldF9tYXhfdHhwb3dlcihzdHJ1Y3QgbW04MXggKm1vcnMsIHMzMiAqb3V0X3Bvd2VyX21ibSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb21tYW5kLmg6NjM6aW50IG1tODF4X2NtZF9zZXRfdHhwb3dlcihzdHJ1Y3QgbW04MXggKm1vcnMsIHMzMiAqb3V0X3Bvd2VyX21ibSxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuaC02NC1cXHRcXHRcXHQgIGludCB0eHBvd2VyX21ibSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb21tYW5kLmg6NjU6aW50IG1tODF4X2NtZF9od19zY2FuKHN0cnVjdCBtbTgxeCAqbW9ycywgc3RydWN0IG1tODF4X2h3X3NjYW5fcGFyYW1zICpwYXJhbXMsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb21tYW5kLmgtNjYtXFx0XFx0ICAgICAgYm9vbCBzdG9yZSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb21tYW5kLmg6Njc6aW50IG1tODF4X2NtZF9zZXRfcHMoc3RydWN0IG1tODF4ICptb3JzLCBib29sIGVuYWJsZWQpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29tbWFuZC5oOjY4OmludCBtbTgxeF9jbWRfY2ZnX211bHRpY2FzdF9maWx0ZXIoc3RydWN0IG1tODF4ICptb3JzLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29tbWFuZC5oOjY5OlxcdFxcdFxcdFxcdCAgIHN0cnVjdCBtbTgxeF92aWYgKm1vcnNfdmlmKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuaDo3MDppbnQgbW04MXhfY21kX3N0YV9zdGF0ZShzdHJ1Y3QgbW04MXggKm1vcnMsIHN0cnVjdCBtbTgxeF92aWYgKm1vcnNfdmlmLCB1MTYgYWlkLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29tbWFuZC5oLTcxLVxcdFxcdFxcdHN0cnVjdCBpZWVlODAyMTFfc3RhICpzdGEsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb21tYW5kLmgtNzItXFx0XFx0XFx0ZW51bSBpZWVlODAyMTFfc3RhX3N0YXRlIHN0YXRlKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuaDo3MzppbnQgbW04MXhfY21kX2luc3RhbGxfa2V5KHN0cnVjdCBtbTgxeCAqbW9ycywgc3RydWN0IG1tODF4X3ZpZiAqbW9yc192aWYsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb21tYW5kLmgtNzQtXFx0XFx0XFx0ICB1MTYgYWlkLCBzdHJ1Y3QgaWVlZTgwMjExX2tleV9jb25mICprZXksXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuaC03Ni1cXHRcXHRcXHQgIGVudW0gaG9zdF9jbWRfYWVzX2tleV9sZW4gbGVuZ3RoKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuaDo3NzppbnQgbW04MXhfY21kX2Rpc2FibGVfa2V5KHN0cnVjdCBtbTgxeCAqbW9ycywgc3RydWN0IG1tODF4X3ZpZiAqbW9yc192aWYsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb21tYW5kLmgtNzgtXFx0XFx0XFx0ICB1MTYgYWlkLCBzdHJ1Y3QgaWVlZTgwMjExX2tleV9jb25mICprZXkpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29tbWFuZC5oOjc5OmludCBtbTgxeF9jbWRfcm1faWYoc3RydWN0IG1tODF4ICptb3JzLCB1MTYgdmlmX2lkKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuaDo4MDppbnQgbW04MXhfY21kX3NldF9mcmFnX3RocmVzaG9sZChzdHJ1Y3QgbW04MXggKm1vcnMsIHUzMiBmcmFnX3RocmVzaG9sZCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb21tYW5kLmg6ODE6aW50IG1tODF4X2NtZF9nZXRfZGlzYWJsZWRfY2hhbm5lbHMoXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb21tYW5kLmg6ODI6XFx0c3RydWN0IG1tODF4ICptb3JzLCBzdHJ1Y3QgaG9zdF9jbWRfcmVzcF9nZXRfZGlzYWJsZWRfY2hhbm5lbHMgKnJlc3AsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb21tYW5kLmgtODMtXFx0dWludCByZXNwX2xlbik7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvcmUuYy0xMC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvcmUuYzoxMTpzdGF0aWMgaW50IG1tODF4X2NvcmVfYXR0YWNoX3JlZ3Moc3RydWN0IG1tODF4ICptb3JzKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29yZS5jLTEyLXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29yZS5jLTE0LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29yZS5jOjE1OlxcdG1tODF4X2NsYWltX2J1cyhtb3JzKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvcmUuYzoxNjpcXHRyZXQgPSBtbTgxeF9yZWczMl9yZWFkKG1vcnMsIE1NODEwOF9SRUdfQ0hJUF9JRCwgXFx1MDAyNm1vcnMtXFx1MDAzZWNoaXBfaWQpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29yZS5jOjE3OlxcdG1tODF4X3JlbGVhc2VfYnVzKG1vcnMpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29yZS5jLTE4LVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb3JlLmMtMjYtXFx0XFx0bW9ycy1cXHUwMDNlcmVncyA9IFxcdTAwMjZtbTgxMDhfcmVncztcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvcmUuYzoyNzpcXHRcXHRtb3JzLVxcdTAwM2VoaWYub3BzID0gXFx1MDAyNm1tODF4X3lhcHNfb3BzO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29yZS5jLTI4LVxcdFxcdGJyZWFrO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb3JlLmMtMzUtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb3JlLmM6MzY6c3RhdGljIHZvaWQgbW04MXhfY29yZV9pbml0X21hY19hZGRyKHN0cnVjdCBtbTgxeCAqbW9ycylcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvcmUuYy0zNy17XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb3JlLmM6Mzg6XFx0aW50IHJldCA9IG1tODF4X2h3X290cF9nZXRfbWFjX2FkZHIobW9ycyk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb3JlLmMtMzktXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvcmUuYy00My1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvcmUuYzo0NDpjaGFyICptbTgxeF9jb3JlX2dldF9md19wYXRoKHUzMiBjaGlwX2lkLCB1MzIgZndfdmVyKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29yZS5jLTQ1LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29yZS5jLTU4LX1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvcmUuYzo1OTpFWFBPUlRfU1lNQk9MX0dQTChtbTgxeF9jb3JlX2dldF9md19wYXRoKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvcmUuYy02MC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvcmUuYzo2MTpzdHJ1Y3QgbW04MXggKm1tODF4X2NvcmVfYWxsb2Moc2l6ZV90IHByaXZfc2l6ZSwgc3RydWN0IGRldmljZSAqZGV2KVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29yZS5jLTYyLXtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvcmUuYzo2MzpcXHRyZXR1cm4gbW04MXhfbWFjX2FsbG9jKHByaXZfc2l6ZSwgZGV2KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvcmUuYy02NC19XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb3JlLmM6NjU6RVhQT1JUX1NZTUJPTF9HUEwobW04MXhfY29yZV9hbGxvYyk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb3JlLmMtNjYtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb3JlLmM6Njc6aW50IG1tODF4X2NvcmVfaW5pdChzdHJ1Y3QgbW04MXggKm1vcnMpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb3JlLmMtNjgte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb3JlLmMtNzMtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb3JlLmM6NzQ6XFx0bW04MXhfY29yZV9pbml0X21hY19hZGRyKG1vcnMpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29yZS5jLTc1LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29yZS5jOjc2OlxcdHJldCA9IG1tODF4X2NvcmVfYXR0YWNoX3JlZ3MobW9ycyk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb3JlLmMtNzctXFx0aWYgKHJldClcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29yZS5jLTg5LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29yZS5jOjkwOlxcdHJldCA9IG1tODF4X2hpZl9pbml0KG1vcnMpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29yZS5jLTkxLVxcdGlmIChyZXQpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvcmUuYy0xMDUtfVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29yZS5jOjEwNjpFWFBPUlRfU1lNQk9MX0dQTChtbTgxeF9jb3JlX2luaXQpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29yZS5jLTEwNy1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvcmUuYzoxMDg6aW50IG1tODF4X2NvcmVfcmVnaXN0ZXIoc3RydWN0IG1tODF4ICptb3JzKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29yZS5jLTEwOS17XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb3JlLmM6MTEwOlxcdHJldHVybiBtbTgxeF9tYWNfcmVnaXN0ZXIobW9ycyk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb3JlLmMtMTExLX1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvcmUuYzoxMTI6RVhQT1JUX1NZTUJPTF9HUEwobW04MXhfY29yZV9yZWdpc3Rlcik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb3JlLmMtMTEzLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29yZS5jOjExNDp2b2lkIG1tODF4X2NvcmVfdW5yZWdpc3RlcihzdHJ1Y3QgbW04MXggKm1vcnMpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb3JlLmMtMTE1LXtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvcmUuYzoxMTY6XFx0bW04MXhfbWFjX3VucmVnaXN0ZXIobW9ycyk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb3JlLmMtMTE3LX1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvcmUuYzoxMTg6RVhQT1JUX1NZTUJPTF9HUEwobW04MXhfY29yZV91bnJlZ2lzdGVyKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvcmUuYy0xMTktXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb3JlLmM6MTIwOnZvaWQgbW04MXhfY29yZV9kZWluaXQoc3RydWN0IG1tODF4ICptb3JzKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29yZS5jLTEyMS17XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb3JlLmM6MTIyOlxcdG1tODF4X2hpZl9maW5pc2gobW9ycyk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb3JlLmMtMTIzLVxcdGZsdXNoX3dvcmtxdWV1ZShtb3JzLVxcdTAwM2VuZXRfd3EpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb3JlLmMtMTI3LX1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvcmUuYzoxMjg6RVhQT1JUX1NZTUJPTF9HUEwobW04MXhfY29yZV9kZWluaXQpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29yZS5jLTEyOS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvcmUuYzoxMzA6dm9pZCBtbTgxeF9jb3JlX2ZyZWUoc3RydWN0IG1tODF4ICptb3JzKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29yZS5jLTEzMS17XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb3JlLmM6MTMyOlxcdG1tODF4X21hY19mcmVlKG1vcnMpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29yZS5jLTEzMy19XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb3JlLmM6MTM0OkVYUE9SVF9TWU1CT0xfR1BMKG1tODF4X2NvcmVfZnJlZSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb3JlLmMtMTM1LVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb3JlLmgtNTQtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb3JlLmg6NTU6c3RydWN0IG1tODF4X2J1c19vcHM7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb3JlLmg6NTY6c3RydWN0IG1tODF4X2hpZl9vcHM7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb3JlLmgtNTctXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvcmUuaC02Mi1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvcmUuaDo2MzplbnVtIG1tODF4X2NhcHNfZmxhZ3Mge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29yZS5oLTY0LVxcdE1NODFYX0NBUFNfRldfU1RBUlQgPSAwLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb3JlLmgtMTMxLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29yZS5oOjEzMjpzdHJ1Y3QgbW04MXhfZndfY2FwcyB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb3JlLmgtMTMzLVxcdHUzMiBmbGFnc1tGV19DQVBBQklMSVRJRVNfRkxBR1NfV0lEVEhdO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb3JlLmgtMTM3LVxcdHU4IG1heGltdW1fYW1wZHVfbGVuZ3RoX2V4cG9uZW50O1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29yZS5oOjEzODpcXHR1OCBtbTgxeF9tbXNzX29mZnNldDtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvcmUuaC0xMzktfTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29yZS5oLTE0MS0jZGVmaW5lIE1NODFYX0ZXX1NVUFAoTU04MVhfQ0FQUywgQ0FQQUJJTElUWSkgXFxcXFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29yZS5oOjE0MjpcXHRtbTgxeF9jYXBzX3N1cHBvcnRlZChNTTgxWF9DQVBTLCBNTTgxWF9DQVBTXyMjQ0FQQUJJTElUWSlcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvcmUuaC0xNDMtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb3JlLmg6MTQ0OnN0YXRpYyBpbmxpbmUgYm9vbCBtbTgxeF9jYXBzX3N1cHBvcnRlZChzdHJ1Y3QgbW04MXhfZndfY2FwcyAqY2FwcyxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvcmUuaDoxNDU6XFx0XFx0XFx0XFx0XFx0ZW51bSBtbTgxeF9jYXBzX2ZsYWdzIGZsYWcpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb3JlLmgtMTQ2LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29yZS5oLTE1MS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvcmUuaDoxNTI6c3RydWN0IG1tODF4X3BzIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvcmUuaC0xNTMtXFx0dTMyIHdha2VycztcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29yZS5oLTE2MC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvcmUuaDoxNjE6ZW51bSBtbTgxeF9wYWdlX2FjaSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb3JlLmgtMTYyLVxcdE1NODFYX0FDSV9CRSA9IDAsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvcmUuaC0xNjctXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb3JlLmg6MTY4OmVudW0gbW04MXhfcW9zX3RpZF91cF9pbmRleCB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb3JlLmgtMTY5LVxcdE1NODFYX1FPU19USURfVVBfQksgPSAxLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb3JlLmgtMTgxLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29yZS5oOjE4MjpzdHJ1Y3QgbW04MXhfc3dfdmVyc2lvbiB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb3JlLmgtMTgzLVxcdHU4IG1ham9yO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb3JlLmgtMTg3LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29yZS5oOjE4ODpzdHJ1Y3QgbW04MXhfc3RhIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvcmUuaC0xODktXFx0Y29uc3Qgc3RydWN0IGllZWU4MDIxMV92aWYgKnZpZjtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29yZS5oLTE5NS1cXHRpbnQgbWF4X2J3X21oejtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvcmUuaDoxOTY6XFx0c3RydWN0IG1tODF4X3JjX3N0YSByYztcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvcmUuaC0xOTctXFx0c3RydWN0IG1tcmNfcmF0ZSBsYXN0X3N0YV90eF9yYXRlO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb3JlLmgtMjAxLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29yZS5oOjIwMjpzdHJ1Y3QgbW04MXhfdmlmIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvcmUuaDoyMDM6XFx0c3RydWN0IG1tODF4ICptb3JzO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29yZS5oLTIwNC1cXHR1MTYgaWQ7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvcmUuaC0yMTYtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb3JlLmg6MjE3OnN0cnVjdCBtbTgxeF9zdGFsZV90eF9zdGF0dXMge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29yZS5oLTIxOC1cXHQvKiBTdGFsZSBUeCBsb2NrICovXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvcmUuaD0yMjM9c3RydWN0IG1jYXN0X2ZpbHRlciB7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvcmUuaC0yMzItXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb3JlLmg6MjMzOmVudW0gbW04MXhfaHdfc2Nhbl9vcCB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb3JlLmgtMjM0LVxcdE1NODFYX0hXX1NDQU5fT1BfU1RBUlQsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvcmUuaC0yMzctXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb3JlLmg6MjM4OnN0cnVjdCBtbTgxeF9od19zY2FuX3BhcmFtcyB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb3JlLmgtMjM5LVxcdHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3O1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb3JlLmgtMjQ1LVxcdHUzMiBkd2VsbF9vbl9ob21lX21zO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29yZS5oOjI0NjpcXHRlbnVtIG1tODF4X2h3X3NjYW5fb3Agb3BlcmF0aW9uO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29yZS5oLTI0Ny1cXHRib29sIHN0b3JlO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb3JlLmgtMjYxLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29yZS5oOjI2MjplbnVtIG1tODF4X2h3X3NjYW5fc3RhdGUge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29yZS5oLTI2My1cXHRIV19TQ0FOX1NUQVRFX0lETEUsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvcmUuaC0yNjctXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb3JlLmg6MjY4OnN0cnVjdCBtbTgxeF9od19zY2FuIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvcmUuaDoyNjk6XFx0ZW51bSBtbTgxeF9od19zY2FuX3N0YXRlIHN0YXRlO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29yZS5oLTI3MC1cXHRzdHJ1Y3QgY29tcGxldGlvbiBzY2FuX2RvbmU7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb3JlLmg6MjcxOlxcdHN0cnVjdCBtbTgxeF9od19zY2FuX3BhcmFtcyAqcGFyYW1zO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29yZS5oLTI3Mi1cXHRzdHJ1Y3QgZGVsYXllZF93b3JrIHRpbWVvdXQ7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvcmUuaC0yNzUtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb3JlLmg6Mjc2OmVudW0gbW04MXhfaGlmX2V2ZW50X2ZsYWdzIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvcmUuaC0yNzctXFx0TU04MVhfSElGX0VWVF9SWF9QRU5ELFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb3JlLmgtMjg4LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29yZS5oOjI4OTplbnVtIG1tODF4X3N0YXRlX2ZsYWdzIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvcmUuaC0yOTAtXFx0TU04MVhfU1RBVEVfQ0hJUF9VTlJFU1BPTlNJVkUsXFxuLS1cXG5cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDdUMDU6MDQ6NDQuMTk2NTkxMDI2WiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6MjMxNzc4ODkxMSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgbGV0J3MgZGl2ZSBpbnRvIHRoaXMuIEhlcmUncyBteSB0aG91Z2h0IHByb2Nlc3Mgb24gdGhpczpcblxuKipBbmFseXppbmcgdGhlIG1tODF4IFVTQiBEcml2ZXIqKlxuXG5BbHJpZ2h0LCBiZWZvcmUgSSBnZXQgdG9vIGRlZXAgaW50byB0aGlzLCBJIG5lZWQgdG8gZ2V0IGEgaGFuZGxlIG9uIHRoZSBiaWdnZXIgcGljdHVyZS4gSSBzaG91bGQgc3RhcnQgd2l0aCB0aGUgS2NvbmZpZyBmaWxlcyBmb3IgdGhlIG1tODF4IHBsYXRmb3JtLCBwYXJ0aWN1bGFybHkgdGhlIHJlbGV2YW50IFVTQiBzZXR0aW5ncy4gSSB3YW50IHRvIHNlZSB3aGF0IG9wdGlvbnMgYXJlIGF2YWlsYWJsZSwgd2hhdCdzIGVuYWJsZWQgYnkgZGVmYXVsdCwgYW5kIGhvdyB0aGUgZHJpdmVyJ3MgY29uZmlndXJhdGlvbiBpcyBjb250cm9sbGVkIGF0IGNvbXBpbGUgdGltZS4gVGhpcyB3aWxsIGdpdmUgbWUgYSBiYXNlIHVuZGVyc3RhbmRpbmcgb2YgdGhlIHBvc3NpYmxlIGJ1aWxkIGNvbmZpZ3VyYXRpb25zIGFuZCBjb25zdHJhaW50cy4gVGhlbiwgSSBuZWVkIHRvIG9wZW4gdXAgdXNiLmMsIHRoZSBjb3JlIGRyaXZlciBmaWxlLiBJIG5lZWQgdG8gZ2V0IGludG8gdGhlIG5pdHR5LWdyaXR0eSBhbmQgdHJhY2UgdGhlIHByb2JlIGZ1bmN0aW9uIHRvIHNlZSB0aGUgaGFyZHdhcmUgZGV0ZWN0aW9uIHByb2Nlc3MuIEknbGwgbmVlZCB0byBrbm93OiBob3cgYXJlIHRoZSBVU0IgZGV2aWNlcyBpZGVudGlmaWVkPyBXaGF0IHJlc291cmNlcyBkb2VzIGl0IGFsbG9jYXRlPyBEb2VzIGl0IGhhbmRsZSBwb3dlciBtYW5hZ2VtZW50IGFwcHJvcHJpYXRlbHk/IFdoYXQncyB0aGUgaW50ZXJydXB0IGhhbmRsaW5nIGxpa2U/IEJhc2ljYWxseSwgSSBuZWVkIHRvIGZvbGxvdyB0aGUgZHJpdmVyJ3MgZXhlY3V0aW9uIHBhdGggZnJvbSBkZXZpY2UgZGlzY292ZXJ5IHRocm91Z2ggaW5pdGlhbGl6YXRpb24gdG8gZW5zdXJlIGV2ZXJ5dGhpbmcgaXMgd29ya2luZyBhcyBleHBlY3RlZC4gQW5kLCB3aGVyZSBhcmUgdGhlIGltcG9ydGFudCBkYXRhIHN0cnVjdHVyZXMgZGVmaW5lZD8gSXMgaXQgZG9pbmcgYWxsIHRoZSByaWdodCBjaGVja3MgYW5kIGVycm9yIGhhbmRsaW5nP1xuXG5cbiIsIklucHV0VG9rZW5zIjoxODA4NCwiT3V0cHV0VG9rZW5zIjo0MywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI2LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA3VDA1OjA0OjQ2LjUxNDM4MzI2N1oiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjYxNTMwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvS2NvbmZpZ1wiLFxuICBcIkZpcnN0TGluZVwiOiAxLFxuICBcIkxpbmVDb3VudFwiOiA2MFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgICAxOlxcdCMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjBcXG4gICAyOlxcdFxcbiAgIDM6XFx0Y29uZmlnIE1NODFYXFxuICAgNDpcXHRcXHR0cmlzdGF0ZSBcXFwiTW9yc2UgTWljcm8gTU04MXggd2lyZWxlc3MgZGV2aWNlc1xcXCIgaWYgQ09NUElMRV9URVNUXFxuICAgNTpcXHRcXHRkZXBlbmRzIG9uIE1BQzgwMjExXFxuICAgNjpcXHRcXHRzZWxlY3QgRldfTE9BREVSXFxuICAgNzpcXHRcXHRzZWxlY3QgQ1JDN1xcbiAgIDg6XFx0XFx0aGVscFxcbiAgIDk6XFx0XFx0ICBUaGlzIG1vZHVsZSBhZGRzIHN1cHBvcnQgZm9yIHdpcmVsZXNzIGRldmljZXMgYmFzZWRcXG4gIDEwOlxcdFxcdCAgb24gTW9yc2UgTWljcm8gTU04MXh4IGNoaXBzZXRzLlxcbiAgMTE6XFx0XFxuICAxMjpcXHRjb25maWcgTU04MVhfVVNCXFxuICAxMzpcXHRcXHR0cmlzdGF0ZSBcXFwiTW9yc2UgTWljcm8gTU04MXggVVNCIHN1cHBvcnRcXFwiXFxuICAxNDpcXHRcXHRkZXBlbmRzIG9uIE1BQzgwMjExIFxcdTAwMjZcXHUwMDI2IFVTQlxcbiAgMTU6XFx0XFx0c2VsZWN0IE1NODFYXFxuICAxNjpcXHRcXHRoZWxwXFxuICAxNzpcXHRcXHQgIFRoaXMgbW9kdWxlIGFkZHMgc3VwcG9ydCBmb3IgdGhlIFVTQiBpbnRlcmZhY2Ugb2ZcXG4gIDE4OlxcdFxcdCAgZGV2aWNlcyB1c2luZyB0aGUgTW9yc2UgTWljcm8gTU04MXggY2hpcHNldC5cXG4gIDE5OlxcdFxcbiAgMjA6XFx0Y29uZmlnIE1NODFYX1NESU9cXG4gIDIxOlxcdFxcdHRyaXN0YXRlIFxcXCJNb3JzZSBNaWNybyBNTTgxeCBTRElPIHN1cHBvcnRcXFwiXFxuICAyMjpcXHRcXHRkZXBlbmRzIG9uIE1BQzgwMjExIFxcdTAwMjZcXHUwMDI2IE1NQ1xcbiAgMjM6XFx0XFx0c2VsZWN0IE1NODFYXFxuICAyNDpcXHRcXHRoZWxwXFxuICAyNTpcXHRcXHQgIFRoaXMgbW9kdWxlIGFkZHMgc3VwcG9ydCBmb3IgdGhlIFNESU8gaW50ZXJmYWNlIG9mXFxuICAyNjpcXHRcXHQgIGRldmljZXMgdXNpbmcgdGhlIE1vcnNlIE1pY3JvIE1NODF4IGNoaXBzZXQuXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA3VDA1OjA0OjQ2LjUxNDQ0Njk2N1oiLCJTZXEiOjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjI2ODE4NjQ3NzYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqSW5pdGlhbCBBc3Nlc3NtZW50IFx1MDAyNiBJbnZlc3RpZ2F0aXZlIFBhdGgqKlxuXG5Pa2F5LCBoZXJlJ3Mgd2hhdCBJJ20gc2VlaW5nOiBNTTgxWCBoYXMgTU04MVhfVVNCLCBpbnRlcmVzdGluZy4gTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMsIGNhbiB3ZSBmdXp6IHRoaXMgdGhpbmcgdmlhIFVTQj8gSSdtIHRoaW5raW5nIHRvb2xzIGxpa2Ugc3l6a2FsbGVyLCBvciBtYXliZSBldmVuIGxldmVyYWdpbmcgUmF3IEdhZGdldCBvciBhIGR1bW15IEhDRCBzZXR1cCBmb3IgZW11bGF0aW9uLiBCZWZvcmUgSSBnbyB0b28gZGVlcCwgSSBuZWVkIHRvIGNoZWNrIHRoZSBVU0IgY29kZSBhbmQgcHJvYmUgcm91dGluZXMuIExldCdzIHNlZS4uLiBJJ2xsIGRpdmUgaW50byBgdXNiLmNgIGFuZCB0aGVuIGRpZyBpbnRvIHRoZSBzcGVjaWZpY3Mgb2YgdGhlIE1NODFYIGltcGxlbWVudGF0aW9uLiBUaGF0J2xsIGJlIGluIGBkcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L3VzYi5jYCBhbmQgYGRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29tbWFuZC5jYC4gVGhvc2UgYXJlIHRoZSBsb2dpY2FsIHBsYWNlcyB0byBzdGFydC4gR290dGEgZ2V0IGEgZmVlbCBmb3IgaG93IHRoZXkncmUgaGFuZGxpbmcgVVNCIGNvbW11bmljYXRpb24gYW5kIGNvbW1hbmRzLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxODc0MiwiT3V0cHV0VG9rZW5zIjo0NSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEwMywiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA3VDA1OjA0OjQ5LjE5NjMxMzkzM1oiLCJTZXEiOjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEzMDc4MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L3VzYi5jXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDEsXG4gIFwiTGluZUNvdW50XCI6IDEwMFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgICAxOlxcdC8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcXG4gICAyOlxcdC8qXFxuICAgMzpcXHQgKiBDb3B5cmlnaHQgKGMpIDIwMTctMjAyNiBNb3JzZSBNaWNyb1xcbiAgIDQ6XFx0ICovXFxuICAgNTpcXHQjaW5jbHVkZSBcXHUwMDNjbGludXgvamlmZmllcy5oXFx1MDAzZVxcbiAgIDY6XFx0I2luY2x1ZGUgXFx1MDAzY2xpbnV4L21vZHVsZS5oXFx1MDAzZVxcbiAgIDc6XFx0I2luY2x1ZGUgXFx1MDAzY2xpbnV4L3VzYi5oXFx1MDAzZVxcbiAgIDg6XFx0I2luY2x1ZGUgXFxcImhpZi5oXFxcIlxcbiAgIDk6XFx0I2luY2x1ZGUgXFxcImJ1cy5oXFxcIlxcbiAgMTA6XFx0I2luY2x1ZGUgXFxcIm1hYy5oXFxcIlxcbiAgMTE6XFx0I2luY2x1ZGUgXFxcImNvcmUuaFxcXCJcXG4gIDEyOlxcdFxcbiAgMTM6XFx0LypcXG4gIDE0OlxcdCAqIFVSQiB0aW1lb3V0IGluIG1pbGxpc2Vjb25kcy4gSWYgYW4gVVJCIGRvZXMgbm90IGNvbXBsZXRlIHdpdGhpbiB0aGlzXFxuICAxNTpcXHQgKiB0aW1lLCBpdCB3aWxsIGJlIGtpbGxlZC4gVGhpcyB0aW1lb3V0IG5lZWRzIHRvIGFjY291bnQgZm9yIFVTQiBzdXNwZW5kYW5kXFxuICAxNjpcXHQgKiByZXN1bWUgb2NjdXJyaW5nIGJlZm9yZSB0aGUgVVJCIGNhbiBiZSB0cmFuc2ZlcnJlZCwgYW5kIGl0IGFsc28gbmVlZHMgdG9cXG4gIDE3OlxcdCAqIGFjY291bnQgZm9yIHRyYW5zZmVycmluZyBVU0JfTUFYX1RSQU5TRkVSX1NJWkUgYnl0ZXMgb3ZlciBhIHBvdGVudGlhbGx5XFxuICAxODpcXHQgKiBzbG93LCBjb25nZXN0ZWQgVVNCIEZ1bGwgU3BlZWQgbGluay5cXG4gIDE5OlxcdCAqL1xcbiAgMjA6XFx0I2RlZmluZSBVUkJfVElNRU9VVF9NUyAyNTBcXG4gIDIxOlxcdFxcbiAgMjI6XFx0LyogSGlnaCBzcGVlZCBVU0IgMl4oNC0xKSAqIDEyNXVzZWMgPSAxbXNlYyAqL1xcbiAgMjM6XFx0I2RlZmluZSBNTTgxWF9VU0JfSU5URVJSVVBUX0lOVEVSVkFMIDRcXG4gIDI0OlxcdFxcbiAgMjU6XFx0LyogTWF4IGJ5dGVzIHBlciBVU0IgcmVhZC93cml0ZSAqL1xcbiAgMjY6XFx0I2RlZmluZSBVU0JfTUFYX1RSQU5TRkVSX1NJWkUgKDE2ICogMTAyNClcXG4gIDI3OlxcdFxcbiAgMjg6XFx0LyogSU5UIEVQIGJ1ZmZlciBzaXplICovXFxuICAyOTpcXHQjZGVmaW5lIE1NODFYX0VQX0lOVF9CVUZGRVJfU0laRSA4XFxuICAzMDpcXHRcXG4gIDMxOlxcdC8qIE1vcnNlIHZlbmRvciBJRHMqL1xcbiAgMzI6XFx0I2RlZmluZSBNTTgxWF9WRU5ET1JfSUQgMHgzMjViXFxuICAzMzpcXHQjZGVmaW5lIE1NODFYX01NODEwWF9QUk9EVUNUX0lEIDB4ODEwMFxcbiAgMzQ6XFx0XFxuICAzNTpcXHQvKiBQb3dlciBtYW5hZ2VtZW50IHJ1bnRpbWUgYXV0by1zdXNwZW5kIGRlbGF5IHZhbHVlIGluIG1pbGxpc2Vjb25kcyAqL1xcbiAgMzY6XFx0I2RlZmluZSBQTV9SVU5USU1FX0FVVE9TVVNQRU5EX0RFTEFZX01TIDEwMFxcbiAgMzc6XFx0XFxuICAzODpcXHRlbnVtIG1tODF4X3VzYl9lbmRwb2ludHMge1xcbiAgMzk6XFx0XFx0TU04MVhfRVBfQ01EID0gMCxcXG4gIDQwOlxcdFxcdE1NODFYX0VQX0lOVCxcXG4gIDQxOlxcdFxcdE1NODFYX0VQX01FTV9SRCxcXG4gIDQyOlxcdFxcdE1NODFYX0VQX01FTV9XUixcXG4gIDQzOlxcdFxcdE1NODFYX0VQX1JFR19SRCxcXG4gIDQ0OlxcdFxcdE1NODFYX0VQX1JFR19XUixcXG4gIDQ1OlxcdFxcdE1NODFYX0VQX0VQX01BWCxcXG4gIDQ2OlxcdH07XFxuICA0NzpcXHRcXG4gIDQ4OlxcdHN0cnVjdCBtbTgxeF91c2JfZW5kcG9pbnQge1xcbiAgNDk6XFx0XFx0dW5zaWduZWQgY2hhciAqYnVmZmVyO1xcbiAgNTA6XFx0XFx0c3RydWN0IHVyYiAqdXJiO1xcbiAgNTE6XFx0XFx0X191OCBhZGRyO1xcbiAgNTI6XFx0XFx0aW50IHNpemU7XFxuICA1MzpcXHR9O1xcbiAgNTQ6XFx0XFxuICA1NTpcXHRlbnVtIG1tODF4X3VzYl9mbGFncyB7IE1NODFYX1VTQl9GTEFHX0FUVEFDSEVELCBNTTgxWF9VU0JfRkxBR19TVVNQRU5ERUQgfTtcXG4gIDU2OlxcdFxcbiAgNTc6XFx0c3RydWN0IG1tODF4X3VzYiB7XFxuICA1ODpcXHRcXHRzdHJ1Y3QgdXNiX2RldmljZSAqdWRldjtcXG4gIDU5OlxcdFxcdHN0cnVjdCB1c2JfaW50ZXJmYWNlICppbnRlcmZhY2U7XFxuICA2MDpcXHRcXHRzdHJ1Y3QgbW04MXhfdXNiX2VuZHBvaW50IGVuZHBvaW50c1tNTTgxWF9FUF9FUF9NQVhdO1xcbiAgNjE6XFx0XFx0aW50IGVycm9ycztcXG4gIDYyOlxcdFxcbiAgNjM6XFx0XFx0Lyogc2VyaWFsaXNlIFVTQiBkZXZpY2Ugc3RydWN0ICovXFxuICA2NDpcXHRcXHRzdHJ1Y3QgbXV0ZXggbG9jaztcXG4gIDY1OlxcdFxcbiAgNjY6XFx0XFx0Lyogc2VyaWFsaXNlIFVTQiBidXMgYWNjZXNzICovXFxuICA2NzpcXHRcXHRzdHJ1Y3QgbXV0ZXggYnVzX2xvY2s7XFxuICA2ODpcXHRcXG4gIDY5OlxcdFxcdGJvb2wgb25nb2luZ19jbWQ7XFxuICA3MDpcXHRcXHRib29sIG9uZ29pbmdfcnc7XFxuICA3MTpcXHRcXHR3YWl0X3F1ZXVlX2hlYWRfdCByd19pbl93YWl0O1xcbiAgNzI6XFx0XFx0dW5zaWduZWQgbG9uZyBmbGFncztcXG4gIDczOlxcdH07XFxuICA3NDpcXHRcXG4gIDc1OlxcdGVudW0gbW04MXhfdXNiX2NvbW1hbmRfZGlyZWN0aW9uIHtcXG4gIDc2OlxcdFxcdE1NODFYX1VTQl9XUklURSA9IDB4MDAsXFxuICA3NzpcXHRcXHRNTTgxWF9VU0JfUkVBRCA9IDB4ODAsXFxuICA3ODpcXHRcXHRNTTgxWF9VU0JfUkVTRVQgPSAweDAyLFxcbiAgNzk6XFx0fTtcXG4gIDgwOlxcdFxcbiAgODE6XFx0c3RydWN0IG1tODF4X3VzYl9jb21tYW5kIHtcXG4gIDgyOlxcdFxcdF9fbGUzMiBkaXI7IC8qIE5leHQgQlVMSyBkaXJlY3Rpb24gKi9cXG4gIDgzOlxcdFxcdF9fbGUzMiBhZGRyZXNzOyAvKiBOZXh0IEJVTEsgYWRkcmVzcyAqL1xcbiAgODQ6XFx0XFx0X19sZTMyIGxlbmd0aDsgLyogTmV4dCBCVUxLIHNpemUgKi9cXG4gIDg1OlxcdH07XFxuICA4NjpcXHRcXG4gIDg3OlxcdHN0YXRpYyBjb25zdCBzdHJ1Y3QgdXNiX2RldmljZV9pZCBtbTgxeF91c2JfdGFibGVbXSA9IHtcXG4gIDg4OlxcdFxcdHsgVVNCX0RFVklDRShNTTgxWF9WRU5ET1JfSUQsIE1NODFYX01NODEwWF9QUk9EVUNUX0lEKSB9LFxcbiAgODk6XFx0XFx0e30gLyogVGVybWluYXRpbmcgZW50cnkgKi9cXG4gIDkwOlxcdH07XFxuICA5MTpcXHRcXG4gIDkyOlxcdE1PRFVMRV9ERVZJQ0VfVEFCTEUodXNiLCBtbTgxeF91c2JfdGFibGUpO1xcbiAgOTM6XFx0XFxuICA5NDpcXHRzdGF0aWMgdm9pZCBtbTgxeF91c2JfaXJxX3dvcmsoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxcbiAgOTU6XFx0e1xcbiAgOTY6XFx0XFx0c3RydWN0IG1tODF4ICptb3JzID0gY29udGFpbmVyX29mKHdvcmssIHN0cnVjdCBtbTgxeCwgdXNiX2lycV93b3JrKTtcXG4gIDk3OlxcdFxcbiAgOTg6XFx0XFx0bW04MXhfY2xhaW1fYnVzKG1vcnMpO1xcbiAgOTk6XFx0XFx0bW04MXhfaHdfaXJxX2hhbmRsZShtb3JzKTtcXG4gMTAwOlxcdFxcdG1tODF4X3JlbGVhc2VfYnVzKG1vcnMpO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wN1QwNTowNDo0OS4xOTY0NDY4MDNaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjoxNjE4MDk0OTEzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkRpdmluZyBpbnRvIE1vcnNlIE1pY3JvIENvZGUqKlxuXG5Pa2F5LCBzbyBJJ20gdGFraW5nIGEgbG9vayBhdCB0aGUgTW9yc2UgTWljcm8gY29kZSwgc3BlY2lmaWNhbGx5IHRoZSBVU0IgZHJpdmVyIGFuZCBjb21tYW5kIGhhbmRsaW5nLiBJIG5lZWQgdG8gZ2V0IGEgYmV0dGVyIGhhbmRsZSBvbiBob3cgdGhlIGNvbW11bmljYXRpb24gaXMgc2V0IHVwLiBMZXQncyBzdGFydCBieSBsb29raW5nIGF0IGBkcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L3VzYi5jYCBhbmQgYGNvbW1hbmQuY2AuIEknbSBnb2luZyB0byBzdGFydCB3aXRoIGBjb21tYW5kLmNgLCBzcGVjaWZpY2FsbHkgYXJvdW5kIGxpbmUgMjAwLiBJIHdhbnQgdG8gc2VlIGhvdyBjb21tYW5kcyBhcmUgYmVpbmcgYnVpbHQgYW5kIHByb2Nlc3NlZC4gVGhpcyBhcmVhIHByb2JhYmx5IGhvbGRzIHRoZSBrZXkgdG8gdGhlIFVTQi1zcGVjaWZpYyBpbnRlcmFjdGlvbnMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIwNTQ0LCJPdXRwdXRUb2tlbnMiOjQ2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NjUsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0wN1QwNTowNDo1MC44MTQ1NDQ0ODZaIiwiU2VxIjoxMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6OTA5NTAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb21tYW5kLmNcIixcbiAgXCJGaXJzdExpbmVcIjogMTQ1LFxuICBcIkxpbmVDb3VudFwiOiA5MFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgMTQ1OlxcdFxcbiAxNDY6XFx0aW50IG1tODF4X2NtZF9yZXNwX3Byb2Nlc3Moc3RydWN0IG1tODF4ICptb3JzLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxcbiAxNDc6XFx0e1xcbiAxNDg6XFx0XFx0aW50IGxlbmd0aCwgcmV0ID0gLUVTUkNIOyAvKiBObyBzdWNoIHByb2Nlc3MgKi9cXG4gMTQ5OlxcdFxcdHN0cnVjdCBtbTgxeF9za2JxICpjbWRfcSA9IG1tODF4X2hpZl9nZXRfdHhfY21kX3F1ZXVlKG1vcnMpO1xcbiAxNTA6XFx0XFx0c3RydWN0IGhvc3RfY21kX3Jlc3AgKnNyY19yZXNwID0gKHN0cnVjdCBob3N0X2NtZF9yZXNwICopKHNrYi1cXHUwMDNlZGF0YSk7XFxuIDE1MTpcXHRcXHRzdHJ1Y3Qgc2tfYnVmZiAqY21kX3NrYiA9IE5VTEw7XFxuIDE1MjpcXHRcXHRzdHJ1Y3QgaG9zdF9jbWRfcmVzcF9jYiAqcmVzcF9jYjtcXG4gMTUzOlxcdFxcdHN0cnVjdCBob3N0X2NtZF9yZXNwICpkZXN0X3Jlc3A7XFxuIDE1NDpcXHRcXHRzdHJ1Y3QgaG9zdF9jbWRfcmVxICpyZXE7XFxuIDE1NTpcXHRcXHR1MTYgbWVzc2FnZV9pZCA9IDA7XFxuIDE1NjpcXHRcXHR1MTYgaG9zdF9pZCA9IDA7XFxuIDE1NzpcXHRcXHR1MTYgcmVzcF9tZXNzYWdlX2lkID0gbGUxNl90b19jcHUoc3JjX3Jlc3AtXFx1MDAzZWhkci5tZXNzYWdlX2lkKTtcXG4gMTU4OlxcdFxcdHUxNiByZXNwX2hvc3RfaWQgPSBsZTE2X3RvX2NwdShzcmNfcmVzcC1cXHUwMDNlaGRyLmhvc3RfaWQpO1xcbiAxNTk6XFx0XFx0Ym9vbCBpc19sYXRlX3Jlc3BvbnNlID0gZmFsc2U7XFxuIDE2MDpcXHRcXG4gMTYxOlxcdFxcdGRldl9kYmcobW9ycy1cXHUwMDNlZGV2LCBcXFwiRVZUIDB4JTA0eDoweCUwNHhcXFwiLCByZXNwX21lc3NhZ2VfaWQsIHJlc3BfaG9zdF9pZCk7XFxuIDE2MjpcXHRcXG4gMTYzOlxcdFxcdGlmICghSE9TVF9DTURfSVNfUkVTUChzcmNfcmVzcCkpIHtcXG4gMTY0OlxcdFxcdFxcdHJldCA9IG1tODF4X21hY19ldmVudF9yZWN2KG1vcnMsIHNrYik7XFxuIDE2NTpcXHRcXHRcXHRnb3RvIGV4aXRfZnJlZTtcXG4gMTY2OlxcdFxcdH1cXG4gMTY3OlxcdFxcbiAxNjg6XFx0XFx0bXV0ZXhfbG9jayhcXHUwMDI2bW9ycy1cXHUwMDNlY21kX2xvY2spO1xcbiAxNjk6XFx0XFxuIDE3MDpcXHRcXHRjbWRfc2tiID0gbW04MXhfc2ticV90eF9wZW5kaW5nKGNtZF9xKTtcXG4gMTcxOlxcdFxcdGlmIChjbWRfc2tiKSB7XFxuIDE3MjpcXHRcXHRcXHRtbTgxeF9za2JxX3B1bGxfaGRyX3Bvc3RfdHgoY21kX3NrYik7XFxuIDE3MzpcXHRcXHRcXHRyZXEgPSAoc3RydWN0IGhvc3RfY21kX3JlcSAqKWNtZF9za2ItXFx1MDAzZWRhdGE7XFxuIDE3NDpcXHRcXHRcXHRtZXNzYWdlX2lkID0gbGUxNl90b19jcHUocmVxLVxcdTAwM2VoZHIubWVzc2FnZV9pZCk7XFxuIDE3NTpcXHRcXHRcXHRob3N0X2lkID0gbGUxNl90b19jcHUocmVxLVxcdTAwM2VoZHIuaG9zdF9pZCk7XFxuIDE3NjpcXHRcXHR9XFxuIDE3NzpcXHRcXG4gMTc4OlxcdFxcdC8qXFxuIDE3OTpcXHRcXHQgKiBJZiB0aGVyZSBpcyBubyBwZW5kaW5nIGNvbW1hbmQgb3IgdGhlIHNlcXVlbmNlIElEIGRvZXMgbm90IG1hdGNoLFxcbiAxODA6XFx0XFx0ICogdGhpcyBpcyBhIGxhdGUgcmVzcG9uc2UgZm9yIGEgdGltZWQgb3V0IGNvbW1hbmQgd2hpY2ggaGFzIGJlZW5cXG4gMTgxOlxcdFxcdCAqIGNsZWFuZWQgdXAsIHNvIGp1c3QgZnJlZSB1cCB0aGUgcmVzcG9uc2UuIElmIGEgY29tbWFuZCB3YXMgcmV0cmllZCxcXG4gMTgyOlxcdFxcdCAqIHRoZSByZXNwb25zZSBtYXkgYmUgZnJvbSB0aGUgcmV0cnkgb3IgZnJvbSB0aGUgb3JpZ2luYWwgY29tbWFuZFxcbiAxODM6XFx0XFx0ICogKGxhdGUgcmVzcG9uc2UpIGJ1dCBub3QgZnJvbSBib3RoIGJlY2F1c2UgdGhlIGZpcm13YXJlIHdpbGwgc2lsZW50bHlcXG4gMTg0OlxcdFxcdCAqIGRyb3AgYSByZXRyeSBpZiBpdCByZWNlaXZlZCB0aGUgaW5pdGlhbCByZXF1ZXN0LiBTbyBhIG1pc21hdGNoZWRcXG4gMTg1OlxcdFxcdCAqIHJldHJ5IGNvdW50ZXIgaXMgdHJlYXRlZCBhcyBhIG1hdGNoZWQgY29tbWFuZCBhbmQgcmVzcG9uc2UuXFxuIDE4NjpcXHRcXHQgKi9cXG4gMTg3OlxcdFxcdGlmICghY21kX3NrYiB8fCBtZXNzYWdlX2lkICE9IHJlc3BfbWVzc2FnZV9pZCB8fFxcbiAxODg6XFx0XFx0ICAgIChob3N0X2lkIFxcdTAwMjYgSE9TVF9DTURfSE9TVF9JRF9TRVFfTUFTSykgIT1cXG4gMTg5OlxcdFxcdFxcdCAgICAocmVzcF9ob3N0X2lkIFxcdTAwMjYgSE9TVF9DTURfSE9TVF9JRF9TRVFfTUFTSykpIHtcXG4gMTkwOlxcdFxcdFxcdGRldl9lcnIobW9ycy1cXHUwMDNlZGV2LFxcbiAxOTE6XFx0XFx0XFx0XFx0XFxcIkxhdGUgcmVzcG9uc2UgZm9yIHRpbWVkIG91dCByZXEgMHglMDR4OiUwNHggaGF2ZSAweCUwNHg6JTA0eCAweCUwNHhcXFwiLFxcbiAxOTI6XFx0XFx0XFx0XFx0cmVzcF9tZXNzYWdlX2lkLCByZXNwX2hvc3RfaWQsIG1lc3NhZ2VfaWQsIGhvc3RfaWQsXFxuIDE5MzpcXHRcXHRcXHRcXHRtb3JzLVxcdTAwM2VjbWRfc2VxKTtcXG4gMTk0OlxcdFxcdFxcdGlzX2xhdGVfcmVzcG9uc2UgPSB0cnVlO1xcbiAxOTU6XFx0XFx0XFx0Z290byBleGl0O1xcbiAxOTY6XFx0XFx0fVxcbiAxOTc6XFx0XFx0aWYgKChob3N0X2lkIFxcdTAwMjYgSE9TVF9DTURfSE9TVF9JRF9SRVRSWV9NQVNLKSAhPVxcbiAxOTg6XFx0XFx0ICAgIChyZXNwX2hvc3RfaWQgXFx1MDAyNiBIT1NUX0NNRF9IT1NUX0lEX1JFVFJZX01BU0spKVxcbiAxOTk6XFx0XFx0XFx0ZGV2X2RiZyhtb3JzLVxcdTAwM2VkZXYsXFxuIDIwMDpcXHRcXHRcXHRcXHRcXFwiQ29tbWFuZCByZXRyeSBtaXNtYXRjaCAweCUwNHg6JTA0eCAweCUwNHg6JTA0eFxcXCIsXFxuIDIwMTpcXHRcXHRcXHRcXHRtZXNzYWdlX2lkLCBob3N0X2lkLCByZXNwX21lc3NhZ2VfaWQsIHJlc3BfaG9zdF9pZCk7XFxuIDIwMjpcXHRcXG4gMjAzOlxcdFxcdHJlc3BfY2IgPSAoc3RydWN0IGhvc3RfY21kX3Jlc3BfY2IgKilJRUVFODAyMTFfU0tCX0NCKGNtZF9za2IpXFxuIDIwNDpcXHRcXHRcXHRcXHQgIC1cXHUwMDNlZHJpdmVyX2RhdGE7XFxuIDIwNTpcXHRcXHRsZW5ndGggPSByZXNwX2NiLVxcdTAwM2VsZW5ndGg7XFxuIDIwNjpcXHRcXHRkZXN0X3Jlc3AgPSByZXNwX2NiLVxcdTAwM2VkZXN0X3Jlc3A7XFxuIDIwNzpcXHRcXHRpZiAobGVuZ3RoIFxcdTAwM2U9IHNpemVvZihzdHJ1Y3QgaG9zdF9jbWRfcmVzcCkgXFx1MDAyNlxcdTAwMjYgZGVzdF9yZXNwKSB7XFxuIDIwODpcXHRcXHRcXHRyZXQgPSAwO1xcbiAyMDk6XFx0XFx0XFx0bGVuZ3RoID0gbWluX3QoaW50LCBsZW5ndGgsXFxuIDIxMDpcXHRcXHRcXHRcXHQgICAgICAgbGUxNl90b19jcHUoc3JjX3Jlc3AtXFx1MDAzZWhkci5sZW4pICtcXG4gMjExOlxcdFxcdFxcdFxcdFxcdCAgICAgICBzaXplb2Yoc3RydWN0IGhvc3RfY21kX2hlYWRlcikpO1xcbiAyMTI6XFx0XFx0XFx0bGVuZ3RoID0gbWluX3QoaW50LCBsZW5ndGgsIHNrYi1cXHUwMDNlbGVuKTtcXG4gMjEzOlxcdFxcdFxcdG1lbWNweShkZXN0X3Jlc3AsIHNyY19yZXNwLCBsZW5ndGgpO1xcbiAyMTQ6XFx0XFx0fSBlbHNlIHtcXG4gMjE1OlxcdFxcdFxcdHJldCA9IGxlMzJfdG9fY3B1KHNyY19yZXNwLVxcdTAwM2VzdGF0dXMpO1xcbiAyMTY6XFx0XFx0fVxcbiAyMTc6XFx0XFxuIDIxODpcXHRcXHRyZXNwX2NiLVxcdTAwM2VyZXQgPSByZXQ7XFxuIDIxOTpcXHRcXG4gMjIwOlxcdGV4aXQ6XFxuIDIyMTpcXHRcXHRpZiAoY21kX3NrYiBcXHUwMDI2XFx1MDAyNiAhaXNfbGF0ZV9yZXNwb25zZSkge1xcbiAyMjI6XFx0XFx0XFx0LyogQ29tcGxldGUgaWYgbm90IGFscmVhZHkgdGltZWQgb3V0ICovXFxuIDIyMzpcXHRcXHRcXHRpZiAobW9ycy1cXHUwMDNlY21kX2NvbXApXFxuIDIyNDpcXHRcXHRcXHRcXHRjb21wbGV0ZShtb3JzLVxcdTAwM2VjbWRfY29tcCk7XFxuIDIyNTpcXHRcXHR9XFxuIDIyNjpcXHRcXG4gMjI3OlxcdFxcdG11dGV4X3VubG9jayhcXHUwMDI2bW9ycy1cXHUwMDNlY21kX2xvY2spO1xcbiAyMjg6XFx0ZXhpdF9mcmVlOlxcbiAyMjk6XFx0XFx0ZGV2X2tmcmVlX3NrYihza2IpO1xcbiAyMzA6XFx0XFx0cmV0dXJuIDA7XFxuIDIzMTpcXHR9XFxuIDIzMjpcXHRcXG4gMjMzOlxcdGludCBtbTgxeF9jbWRfc3RhX3N0YXRlKHN0cnVjdCBtbTgxeCAqbW9ycywgc3RydWN0IG1tODF4X3ZpZiAqbW9yc192aWYsIHUxNiBhaWQsXFxuIDIzNDpcXHRcXHRcXHRcXHRzdHJ1Y3QgaWVlZTgwMjExX3N0YSAqc3RhLFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wN1QwNTowNDo1MC44MTQ2Mzg2NzZaIiwiU2VxIjoxMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6MzIwMzUzNDI3NiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIFBhdGNoIGFuZCBSZWFjaGFiaWxpdHkqKlxuXG5Pa2F5LCBsZXQncyBkaXZlIGludG8gdGhpcy4gVGhlIHRhc2sgYXQgaGFuZCBpcyB0byB1bmRlcnN0YW5kIHRoaXMgcGF0Y2guIEl0IGxvb2tzIGxpa2Ugd2UncmUgZGVhbGluZyB3aXRoIGEgbW9kaWZpY2F0aW9uIHRvIHRoZSBgbW04MXhfY21kX3Jlc3BfcHJvY2Vzc2AgZnVuY3Rpb24sIHdoaWNoIHJlc2lkZXMgd2l0aGluIGBkcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuY2AuIFNwZWNpZmljYWxseSwgdGhleSd2ZSBpbnRyb2R1Y2VkIGEgbGluZTogYGxlbmd0aCA9IG1pbl90KGludCwgbGVuZ3RoLCBza2ItXHUwMDNlbGVuKTtgIHJpZ2h0IGJlZm9yZSB0aGUgYG1lbWNweWAuIE15IGluaXRpYWwgdGhvdWdodCBpcywgdGhpcyBpcyBsaWtlbHkgYSBzYWZldHkgY2hlY2sgcmVsYXRlZCB0byBidWZmZXIgb3ZlcmZsb3dzLCBidXQgbGV0J3MgYmUgc3VyZS5cblxuVGhlIGNyaXRpY2FsIG5leHQgc3RlcCBpcyBkZXRlcm1pbmluZyB0aGUgaW1wYWN0IGFuZCBpZiB0aGlzIGlzIHRoZSBvbmx5IHNwb3QgdGhpcyBjaGFuZ2UgaXMgbmVlZGVkLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGVyZSBgbW04MXhfY21kX3Jlc3BfcHJvY2Vzc2AgaXMgY2FsbGVkIGZyb20uIEkgbmVlZCB0byB0cmFjZSB0aGUgY2FsbCBwYXRocyB0byBnZXQgYSBoYW5kbGUgb24gcmVhY2hhYmlsaXR5LCBpZGVudGlmeSB0aGUgY29udGV4dC4gRmluZGluZyB0aGUgY2FsbGVycyBnaXZlcyBtZSB0aGUgYmlnZ2VyIHBpY3R1cmUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIyNDk2LCJPdXRwdXRUb2tlbnMiOjM5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTIzLCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMDdUMDU6MDQ6NTQuMDE4MTc1OTQyWiIsIlNlcSI6MTIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1MjE2ODQwMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJtbTgxeF9jbWRfcmVzcF9wcm9jZXNzXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb21tYW5kLmM9MzM9c3RhdGljIGludCBtbTgxeF9jbWRfdHgoc3RydWN0IG1tODF4ICptb3JzLCBzdHJ1Y3QgaG9zdF9jbWRfcmVzcCAqcmVzcCxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29tbWFuZC5jLTE0NS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuYzoxNDY6aW50IG1tODF4X2NtZF9yZXNwX3Byb2Nlc3Moc3RydWN0IG1tODF4ICptb3JzLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29tbWFuZC5jLTE0Ny17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuaD00ND1zdHJ1Y3QgaG9zdF9jbWRfZXZlbnQge1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb21tYW5kLmgtNDgtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb21tYW5kLmg6NDk6aW50IG1tODF4X2NtZF9yZXNwX3Byb2Nlc3Moc3RydWN0IG1tODF4ICptb3JzLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuaC01MC1pbnQgbW04MXhfY21kX2FkZF9pZihzdHJ1Y3QgbW04MXggKm1vcnMsIHUxNiAqdmlmX2lkLCBjb25zdCB1OCAqYWRkcixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvc2ticS5jPTM0OD1zdGF0aWMgdm9pZCBtbTgxeF9za2JxX2Rpc3BhdGNoX3dvcmsoc3RydWN0IHdvcmtfc3RydWN0ICpkaXNwYXRjaF93b3JrKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9za2JxLmMtMzcxLVxcdFxcdGNhc2UgTU04MVhfU0tCX0NIQU5fQ09NTUFORDpcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L3NrYnEuYzozNzI6XFx0XFx0XFx0bW04MXhfY21kX3Jlc3BfcHJvY2Vzcyhtb3JzLCBwZmlyc3QpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvc2ticS5jLTM3My1cXHRcXHRcXHRicmVhaztcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDdUMDU6MDQ6NTQuMDcwMzUwMDYyWiIsIlNlcSI6MTMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjQyODY4MDM5MDgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSBhbmFseXNpcyBvZiBob3cgdGhlIFVTQiBwcm9iZSBhbmQgUlggcGFja2V0IHByb2Nlc3NpbmcgYXJlIGxpa2VseSBmdW5jdGlvbmluZywgYmFzZWQgb24gdGhlIGZpbGUgcGF0aHMgcHJvdmlkZWQuXG5cbioqRGlzc2VjdGluZyB0aGUgVVNCIFx1MDAyNiBSWCBGbG93KipcblxuQWxyaWdodCwgbGV0J3MgYnJlYWsgdGhpcyBkb3duLiBUaGUgY29yZSBvZiB0aGUgVVNCIGludGVyZmFjZSBpcyBwcm9iYWJseSBoYW5kbGVkIHdpdGhpbiBgZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC91c2IuY2AuIFRoaXMgaXMgd2hlcmUgdGhlIGluaXRpYWwgaW50ZXJhY3Rpb24gd2l0aCB0aGUgVVNCIGJ1cyBpcyBkZWZpbmVkLiBJJ2QgZXhwZWN0IHRvIHNlZSB0aGUgVVNCIHByb2JlIGZ1bmN0aW9uIGluIGhlcmUsIGhhbmRsaW5nIGRldmljZSBkZXRlY3Rpb24sIGluaXRpYWxpemF0aW9uLCBhbmQgZHJpdmVyIGF0dGFjaG1lbnQuIEknbGwgbmVlZCB0byBjb25maXJtIHRoYXQncyB0aGUgZW50cnkgcG9pbnQuXG5cbk5vdywgdGhlIGludGVyZXN0aW5nIGJpdCDigJMgUlggcGFja2V0IHByb2Nlc3NpbmcuIFRoZSBtb2R1bGUgYGRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgveWFwcy5jYCBsb29rcyBpbW1lZGlhdGVseSBwcm9taXNpbmcuIFRoZSBuYW1lIFwieWFwc1wiIHByb2JhYmx5IHN0YW5kcyBmb3Igc29tZXRoaW5nIGxpa2UgXCJZZXQgQW5vdGhlciBQYWNrZXQgU3lzdGVtXCIgb3IgXCJZb3VyIEFwcGxpY2F0aW9uIFBhY2tldCBTeXN0ZW0sXCIgaW5kaWNhdGluZyBhIGN1c3RvbSBwcm90b2NvbCBvciBmcmFtZSBoYW5kbGluZyBsYXllciB0aGF0IGlzIHNwZWNpZmljIHRvIHRoZSBtbTgxeCBoYXJkd2FyZS4gSSB3aWxsIGNhcmVmdWxseSBpbnZlc3RpZ2F0ZSBpdC5cblxuV2l0aGluIGB5YXBzLmNgLCBhbmQgcG90ZW50aWFsbHkgcmVsYXRlZCBmaWxlcyBsaWtlIGB5YXBzX2h3LmNgIG9yIGBza2JxLmNgLCBJJ20gYW50aWNpcGF0aW5nIGZpbmRpbmcgdGhlIG1lYXQgb2YgdGhlIFJYIHBhdGguIFRoYXQncyBsaWtlbHkgd2hlcmUgdGhlIFVTQiBkYXRhIGZyb20gdGhlIGRldmljZSBpcyBtYXJzaGFsZWQsIGxpa2VseSBpbmNsdWRpbmcgaGFyZHdhcmUgc3BlY2lmaWMgZGVzY3JpcHRvcnMsIHRoZW4gZWl0aGVyIGRlY29kZWQsIGRlLWZyYW1lZCwgb3IgcGFzc2VkIHRvIGEgZ2VuZXJpYyBuZXR3b3JraW5nIHN0YWNrLiBQZXJoYXBzIHRoZXJlIGlzIHNvbWUgb2ZmbG9hZGluZyBoYXBwZW5pbmcgaGVyZS4gVGhlc2UgZmlsZXMgc2hvdWxkIGNvbnRhaW4gdGhlIGxvZ2ljIGZvcjpcblxuKiAgICoqVVNCIERhdGEgUmVjZXB0aW9uOioqIEhvdyB0aGUgZGF0YSBzdHJlYW1zIGZyb20gdGhlIFVTQiBkZXZpY2UgYXJlIHJlY2VpdmVkIGFuZCBpbnRlcnByZXRlZC5cbiogICAqKlBhY2tldCBDb25zdHJ1Y3Rpb246KiogSG93IHJlY2VpdmVkIGRhdGEgaXMgYXNzZW1ibGVkIGludG8gY29tcGxldGUsIHVzYWJsZSBwYWNrZXRzLlxuKiAgICoqUHJvdG9jb2wgRGVjb2Rpbmc6KiogQW55IGN1c3RvbSBvciBoYXJkd2FyZS1zcGVjaWZpYyBkZWNvZGluZyBvZiBkYXRhLlxuKiAgICoqQnVmZmVyIE1hbmFnZW1lbnQ6KiogVGhlIHVzZSBvZiBgc2tiYCBzdHJ1Y3R1cmVzLCBsaWtlbHkgbWFuYWdlZCBieSBgc2ticS5jYCwgdG8gc3RvcmUgYW5kIGhhbmRsZSB0aGUgcGFja2V0cy4gVGhpcyBjb3VsZCBiZSB3aGVyZSB0aGUgRE1BIGJ1ZmZlcnMgYXJlIGhhbmRsZWQuXG4qICAgKipQYWNrZXQgRmlsdGVyaW5nIFx1MDAyNiBEZW11eGluZzoqKiBXaGV0aGVyIHRoZXJlIGlzIGFueSBoYXJkd2FyZS1sZXZlbCBmaWx0ZXJpbmcgb3IgZGVtdWx0aXBsZXhpbmcgYmVmb3JlIHRoZSBwYWNrZXRzIHJlYWNoIHRoZSBuZXR3b3JrIHN0YWNrLlxuXG5JIGV4cGVjdCB0byBlbmNvdW50ZXIgYSBmYWlyIGFtb3VudCBvZiBkZXZpY2Utc3BlY2lmaWMgcmVnaXN0ZXIgbWFuaXB1bGF0aW9uIGFuZCBwZXJoYXBzIGRpcmVjdCBtZW1vcnkgYWNjZXNzIChETUEpIGludm9sdmVkIGluIHRoZSBgeWFwc19ody5jYCBmaWxlLiBHaXZlbiB0aGUgbGlrZWx5IHByb3ByaWV0YXJ5IG5hdHVyZSBvZiB0aGlzIGNoaXBzZXQsIHRoZSBjb2RlIGxpa2VseSBjb250YWlucyBvcHRpbWl6YXRpb25zIGFuZCBpZGlvc3luY3Jhc2llcyB0aGF0IG5lY2Vzc2l0YXRlIGNsb3NlIHNjcnV0aW55LiBJIHdpbGwgYmUgbG9va2luZyBmb3IgaGFyZHdhcmUgaW50ZXJydXB0cyBhbmQgYXNzb2NpYXRlZCBJU1JzIGhlcmUsIHdoaWNoIGFyZSBjcml0aWNhbCBmb3IgcmVjZWl2aW5nIHRob3NlIHBhY2tldHMuXG5cbkJhc2ljYWxseSwgSSBuZWVkIHRvIHNlZSBob3cgdGhlIGRhdGEgZmxvd3MgZnJvbSB0aGUgVVNCIGVuZHBvaW50IHRocm91Z2ggdGhlc2UgdmFyaW91cyBsYXllcnMgdG8gZ2V0IHRvIHRoZSBuZXR3b3JraW5nIHN0YWNrLiBJJ20gZXNwZWNpYWxseSBrZWVuIHRvIHNlZSBob3cgdGhlIGRyaXZlciBoYW5kbGVzIHBvdGVudGlhbCBidWZmZXIgb3ZlcmZsb3dzLCBlcnJvciBjb25kaXRpb25zLCBhbmQgdGhlIGludGVyYWN0aW9uIHdpdGggdGhlIFVTQiBkcml2ZXIgaXRzZWxmLiBJJ20gYWxzbyBhbnRpY2lwYXRpbmcgdGhhdCB0aGUgb3ZlcmFsbCBkZXNpZ24gaW5jbHVkZXMgZWZmaWNpZW50IHVzZSBvZiBETUEgZm9yIHRoZSBSWCBwYXRoLCBlc3BlY2lhbGx5IGFzIHRoaXMgaXMgYSB3aXJlbGVzcyBpbnRlcmZhY2UuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIzMzU4LCJPdXRwdXRUb2tlbnMiOjM3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NzcsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMDdUMDU6MDQ6NTguMzU3MTU2MTZaIiwiU2VxIjoxNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ3MzI0MTk5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm1tODF4X3VzYl9wcm9iZVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvdXNiLmM9NzE2PXN0YXRpYyB2b2lkIG1tODF4X3VyYl9jbGVhbnVwKHN0cnVjdCBtbTgxeCAqbW9ycylcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvdXNiLmMtNzQ0LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvdXNiLmM6NzQ1OnN0YXRpYyBpbnQgbW04MXhfdXNiX3Byb2JlKHN0cnVjdCB1c2JfaW50ZXJmYWNlICppbnRlcmZhY2UsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC91c2IuYy03NDYtXFx0XFx0XFx0ICAgY29uc3Qgc3RydWN0IHVzYl9kZXZpY2VfaWQgKmlkKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC91c2IuYz05MjU9c3RhdGljIHN0cnVjdCB1c2JfZHJpdmVyIG1tODF4X3VzYl9kcml2ZXIgPSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC91c2IuYy05MjYtXFx0Lm5hbWUgPSBcXFwibW04MXhfdXNiXFxcIixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L3VzYi5jOjkyNzpcXHQucHJvYmUgPSBtbTgxeF91c2JfcHJvYmUsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC91c2IuYy05MjgtXFx0LmRpc2Nvbm5lY3QgPSBtbTgxeF91c2JfZGlzY29ubmVjdCxcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDdUMDU6MDQ6NTguNDA0NDg1MDM5WiIsIlNlcSI6MTUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjIwNzE5NDk0NzYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSBzdW1tYXJ5LCBhcyBpZiBJIHdlcmUgdGhpbmtpbmcgdGhlc2UgdGhvdWdodHM6XG5cbioqRGl2aW5nIGludG8gdGhlIG1tODF4IFVTQiBEcml2ZXIqKlxuXG5BbHJpZ2h0LCB0aW1lIHRvIGRpZyBpbnRvIHRoaXMgYG1tODF4YCBkcml2ZXIuIEkgbmVlZCB0byBnZXQgYSBoYW5kbGUgb24gd2hhdCdzIGdvaW5nIG9uIHdpdGggdGhpcyBVU0IgaW50ZXJmYWNlLiBTcGVjaWZpY2FsbHksIEknbSBnb2luZyB0byBzdGFydCB3aXRoIHRoZSBgbW04MXhfdXNiX3Byb2JlYCBmdW5jdGlvbi4gVGhhdCdzIHRoZSBlbnRyeSBwb2ludCwgdGhlIGZpcnN0IHRoaW5nIHRoYXQgZ2V0cyBjYWxsZWQgd2hlbiB0aGUgVVNCIGRldmljZSBpcyBjb25uZWN0ZWQsIHJpZ2h0PyBJdCdzIGxpa2VseSBnb2luZyB0byBiZSB0aGUgY2VudHJhbCBwb2ludCBmb3IgaW5pdGlhbGl6aW5nIHRoZSBkZXZpY2UsIHNldHRpbmcgdXAgZW5kcG9pbnRzLCBhbmQgcHJvYmFibHkgcmVnaXN0ZXJpbmcgaXQgd2l0aCB0aGUgcmVzdCBvZiB0aGUgd2lyZWxlc3Mgc3Vic3lzdGVtLiBMZXQncyBzZWUgd2hhdCBzZWNyZXRzIGl0IGhvbGRzIGluIGBkcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L3VzYi5jYC4gSSBleHBlY3QgdG8gZmluZCB0aGUgY29yZSBkZXZpY2Utc3BlY2lmaWMgVVNCIGhhbmRsaW5nIHRoZXJlLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyNDM4MCwiT3V0cHV0VG9rZW5zIjo0NywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjM1LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA3VDA1OjA1OjAwLjQ3NjQzNzk0NVoiLCJTZXEiOjE2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMTQ0NTAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC91c2IuY1wiLFxuICBcIkZpcnN0TGluZVwiOiA3NDUsXG4gIFwiTGluZUNvdW50XCI6IDEwMFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgNzQ1OlxcdHN0YXRpYyBpbnQgbW04MXhfdXNiX3Byb2JlKHN0cnVjdCB1c2JfaW50ZXJmYWNlICppbnRlcmZhY2UsXFxuIDc0NjpcXHRcXHRcXHRcXHQgICBjb25zdCBzdHJ1Y3QgdXNiX2RldmljZV9pZCAqaWQpXFxuIDc0NzpcXHR7XFxuIDc0ODpcXHRcXHRpbnQgcmV0O1xcbiA3NDk6XFx0XFx0c3RydWN0IG1tODF4ICptb3JzO1xcbiA3NTA6XFx0XFx0c3RydWN0IG1tODF4X3VzYiAqbXVzYjtcXG4gNzUxOlxcdFxcbiA3NTI6XFx0XFx0bW9ycyA9IG1tODF4X2NvcmVfYWxsb2Moc2l6ZW9mKCptdXNiKSwgXFx1MDAyNmludGVyZmFjZS1cXHUwMDNlZGV2KTtcXG4gNzUzOlxcdFxcdGlmICghbW9ycylcXG4gNzU0OlxcdFxcdFxcdHJldHVybiAtRU5PTUVNO1xcbiA3NTU6XFx0XFxuIDc1NjpcXHRcXHRtb3JzLVxcdTAwM2VidXNfb3BzID0gXFx1MDAyNm1tODF4X3VzYl9vcHM7XFxuIDc1NzpcXHRcXHRtb3JzLVxcdTAwM2VidXNfdHlwZSA9IE1NODFYX0JVU19UWVBFX1VTQjtcXG4gNzU4OlxcdFxcbiA3NTk6XFx0XFx0bXVzYiA9IChzdHJ1Y3QgbW04MXhfdXNiICopbW9ycy1cXHUwMDNlZHJ2X3ByaXY7XFxuIDc2MDpcXHRcXHRtdXNiLVxcdTAwM2V1ZGV2ID0gdXNiX2dldF9kZXYoaW50ZXJmYWNlX3RvX3VzYmRldihpbnRlcmZhY2UpKTtcXG4gNzYxOlxcdFxcdG11c2ItXFx1MDAzZWludGVyZmFjZSA9IHVzYl9nZXRfaW50ZihpbnRlcmZhY2UpO1xcbiA3NjI6XFx0XFxuIDc2MzpcXHRcXHRtdXRleF9pbml0KFxcdTAwMjZtdXNiLVxcdTAwM2Vsb2NrKTtcXG4gNzY0OlxcdFxcdG11dGV4X2luaXQoXFx1MDAyNm11c2ItXFx1MDAzZWJ1c19sb2NrKTtcXG4gNzY1OlxcdFxcdGluaXRfd2FpdHF1ZXVlX2hlYWQoXFx1MDAyNm11c2ItXFx1MDAzZXJ3X2luX3dhaXQpO1xcbiA3NjY6XFx0XFx0dXNiX3NldF9pbnRmZGF0YShpbnRlcmZhY2UsIG1vcnMpO1xcbiA3Njc6XFx0XFxuIDc2ODpcXHRcXHRyZXQgPSBtbTgxeF91c2JfZGV0ZWN0X2VuZHBvaW50cyhtb3JzLCBpbnRlcmZhY2UpO1xcbiA3Njk6XFx0XFx0aWYgKHJldCBcXHUwMDNjIDApXFxuIDc3MDpcXHRcXHRcXHRnb3RvIGVycl9jb3JlX2ZyZWU7XFxuIDc3MTpcXHRcXG4gNzcyOlxcdFxcdHNldF9iaXQoTU04MVhfVVNCX0ZMQUdfQVRUQUNIRUQsIFxcdTAwMjZtdXNiLVxcdTAwM2VmbGFncyk7XFxuIDc3MzpcXHRcXG4gNzc0OlxcdFxcdHJldCA9IG1tODF4X2NvcmVfaW5pdChtb3JzKTtcXG4gNzc1OlxcdFxcdGlmIChyZXQpXFxuIDc3NjpcXHRcXHRcXHRnb3RvIGVycl91cmJfY2xlYW51cDtcXG4gNzc3OlxcdFxcbiA3Nzg6XFx0XFx0SU5JVF9XT1JLKFxcdTAwMjZtb3JzLVxcdTAwM2V1c2JfaXJxX3dvcmssIG1tODF4X3VzYl9pcnFfd29yayk7XFxuIDc3OTpcXHRcXG4gNzgwOlxcdFxcdHJldCA9IG1tODF4X3VzYl9pbnRfZW5hYmxlKG1vcnMpO1xcbiA3ODE6XFx0XFx0aWYgKHJldClcXG4gNzgyOlxcdFxcdFxcdGdvdG8gZXJyX2NvcmVfZGVpbml0O1xcbiA3ODM6XFx0XFxuIDc4NDpcXHRcXHRyZXQgPSBtbTgxeF9jb3JlX3JlZ2lzdGVyKG1vcnMpO1xcbiA3ODU6XFx0XFx0aWYgKHJldClcXG4gNzg2OlxcdFxcdFxcdGdvdG8gZXJyX3VzYl9pbnRfc3RvcDtcXG4gNzg3OlxcdFxcbiA3ODg6XFx0XFx0LyogVVNCIHJlcXVpcmVzIHJlbW90ZSB3YWtldXAgZnVuY3Rpb25hbGl0eSBmb3Igc3VzcGVuZCAqL1xcbiA3ODk6XFx0XFx0Y2xlYXJfYml0KE1NODFYX1VTQl9GTEFHX1NVU1BFTkRFRCwgXFx1MDAyNm11c2ItXFx1MDAzZWZsYWdzKTtcXG4gNzkwOlxcdFxcdG11c2ItXFx1MDAzZWludGVyZmFjZS1cXHUwMDNlbmVlZHNfcmVtb3RlX3dha2V1cCA9IDE7XFxuIDc5MTpcXHRcXHR1c2JfZW5hYmxlX2F1dG9zdXNwZW5kKG11c2ItXFx1MDAzZXVkZXYpO1xcbiA3OTI6XFx0XFx0cG1fcnVudGltZV9zZXRfYXV0b3N1c3BlbmRfZGVsYXkoXFx1MDAyNm11c2ItXFx1MDAzZXVkZXYtXFx1MDAzZWRldixcXG4gNzkzOlxcdFxcdFxcdFxcdFxcdFxcdCBQTV9SVU5USU1FX0FVVE9TVVNQRU5EX0RFTEFZX01TKTtcXG4gNzk0OlxcdFxcbiA3OTU6XFx0XFx0dXNiX2F1dG9wbV9nZXRfaW50ZXJmYWNlKGludGVyZmFjZSk7XFxuIDc5NjpcXHRcXHRyZXR1cm4gMDtcXG4gNzk3OlxcdFxcbiA3OTg6XFx0ZXJyX3VzYl9pbnRfc3RvcDpcXG4gNzk5OlxcdFxcdG1tODF4X3VzYl9pbnRfc3RvcChtb3JzKTtcXG4gODAwOlxcdGVycl9jb3JlX2RlaW5pdDpcXG4gODAxOlxcdFxcdG1tODF4X2NvcmVfZGVpbml0KG1vcnMpO1xcbiA4MDI6XFx0ZXJyX3VyYl9jbGVhbnVwOlxcbiA4MDM6XFx0XFx0bW04MXhfdXJiX2NsZWFudXAobW9ycyk7XFxuIDgwNDpcXHRlcnJfY29yZV9mcmVlOlxcbiA4MDU6XFx0XFx0bW04MXhfY29yZV9mcmVlKG1vcnMpO1xcbiA4MDY6XFx0XFx0dXNiX3B1dF9pbnRmKGludGVyZmFjZSk7XFxuIDgwNzpcXHRcXHR1c2JfcHV0X2RldihpbnRlcmZhY2VfdG9fdXNiZGV2KGludGVyZmFjZSkpO1xcbiA4MDg6XFx0XFx0cmV0dXJuIHJldDtcXG4gODA5OlxcdH1cXG4gODEwOlxcdFxcbiA4MTE6XFx0c3RhdGljIHZvaWQgbW04MXhfdXNiX2Rpc2Nvbm5lY3Qoc3RydWN0IHVzYl9pbnRlcmZhY2UgKmludGVyZmFjZSlcXG4gODEyOlxcdHtcXG4gODEzOlxcdFxcdHN0cnVjdCBtbTgxeCAqbW9ycyA9IHVzYl9nZXRfaW50ZmRhdGEoaW50ZXJmYWNlKTtcXG4gODE0OlxcdFxcdHN0cnVjdCBtbTgxeF91c2IgKm11c2IgPSAoc3RydWN0IG1tODF4X3VzYiAqKW1vcnMtXFx1MDAzZWRydl9wcml2O1xcbiA4MTU6XFx0XFx0aW50IG1pbm9yID0gaW50ZXJmYWNlLVxcdTAwM2VtaW5vcjtcXG4gODE2OlxcdFxcdHN0cnVjdCB1c2JfZGV2aWNlICp1ZGV2ID0gaW50ZXJmYWNlX3RvX3VzYmRldihpbnRlcmZhY2UpO1xcbiA4MTc6XFx0XFxuIDgxODpcXHRcXHRpZiAodWRldi1cXHUwMDNlc3RhdGUgPT0gVVNCX1NUQVRFX05PVEFUVEFDSEVEKSB7XFxuIDgxOTpcXHRcXHRcXHRjbGVhcl9iaXQoTU04MVhfVVNCX0ZMQUdfQVRUQUNIRUQsIFxcdTAwMjZtdXNiLVxcdTAwM2VmbGFncyk7XFxuIDgyMDpcXHRcXHRcXHRzZXRfYml0KE1NODFYX1NUQVRFX0NISVBfVU5SRVNQT05TSVZFLCBcXHUwMDI2bW9ycy1cXHUwMDNlc3RhdGVfZmxhZ3MpO1xcbiA4MjE6XFx0XFx0XFx0ZGV2X2RiZyhtb3JzLVxcdTAwM2VkZXYsIFxcXCJVU0Igc3VkZGVubHkgdW5wbHVnZ2VkXFxcIik7XFxuIDgyMjpcXHRcXHR9XFxuIDgyMzpcXHRcXG4gODI0OlxcdFxcdHVzYl9kaXNhYmxlX2F1dG9zdXNwZW5kKHVkZXYpO1xcbiA4MjU6XFx0XFxuIDgyNjpcXHRcXHRpZiAodGVzdF9iaXQoTU04MVhfVVNCX0ZMQUdfU1VTUEVOREVELCBcXHUwMDI2bXVzYi1cXHUwMDNlZmxhZ3MpKSB7XFxuIDgyNzpcXHRcXHRcXHRkZXZfZGJnKG1vcnMtXFx1MDAzZWRldiwgXFxcIlVTQiB3YXMgc3VzcGVuZGVkOiByZWxlYXNlIGxvY2tzXFxcIik7XFxuIDgyODpcXHRcXHRcXHRtbTgxeF91c2JfcmVsZWFzZV9idXMobW9ycyk7XFxuIDgyOTpcXHRcXHRcXHRtdXRleF91bmxvY2soXFx1MDAyNm11c2ItXFx1MDAzZWxvY2spO1xcbiA4MzA6XFx0XFx0fVxcbiA4MzE6XFx0XFxuIDgzMjpcXHRcXHRjbGVhcl9iaXQoTU04MVhfVVNCX0ZMQUdfU1VTUEVOREVELCBcXHUwMDI2bXVzYi1cXHUwMDNlZmxhZ3MpO1xcbiA4MzM6XFx0XFxuIDgzNDpcXHRcXHRtbTgxeF9jb3JlX3VucmVnaXN0ZXIobW9ycyk7XFxuIDgzNTpcXHRcXHRtbTgxeF91c2JfaW50X3N0b3AobW9ycyk7XFxuIDgzNjpcXHRcXHRtbTgxeF9jb3JlX2RlaW5pdChtb3JzKTtcXG4gODM3OlxcdFxcdG1tODF4X3VyYl9jbGVhbnVwKG1vcnMpO1xcbiA4Mzg6XFx0XFx0bW04MXhfY29yZV9mcmVlKG1vcnMpO1xcbiA4Mzk6XFx0XFxuIDg0MDpcXHRcXHR1c2JfYXV0b3BtX3B1dF9pbnRlcmZhY2UoaW50ZXJmYWNlKTtcXG4gODQxOlxcdFxcdHVzYl9zZXRfaW50ZmRhdGEoaW50ZXJmYWNlLCBOVUxMKTtcXG4gODQyOlxcdFxcdGRldl9pbmZvKFxcdTAwMjZpbnRlcmZhY2UtXFx1MDAzZWRldiwgXFxcIlVTQiBNb3JzZSAjJWQgbm93IGRpc2Nvbm5lY3RlZFxcXCIsIG1pbm9yKTtcXG4gODQzOlxcdFxcdHVzYl9wdXRfaW50ZihpbnRlcmZhY2UpO1xcbiA4NDQ6XFx0XFx0dXNiX3B1dF9kZXYodWRldik7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA3VDA1OjA1OjAwLjQ3NjU1NDgzNVoiLCJTZXEiOjE3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjo2Mjc1NTYyMjY2MSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBJbml0aWFsIEFzc2Vzc21lbnQgb2YgdGhlIE1NODF4IFVTQiBEcml2ZXIqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCBgbW04MXhfdXNiX3Byb2JlYC4gTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMsIHRoaXMgaXMgdGhlIGVudHJ5IHBvaW50IGZvciB0aGUgVVNCIGludGVyZmFjZS4gSXQncyBnb2luZyB0byBwcm9iZSB0aGUgZGV2aWNlLCBwcmVzdW1hYmx5IGlkZW50aWZ5IGl0LCBhbmQgdGhlbiBsaWtlbHkgcmVnaXN0ZXIgdGhlIG1hYzgwMjExIGRldmljZSB1c2luZyBgbW04MXhfY29yZV9yZWdpc3RlcmAuIEFmdGVyIHRoYXQsIEkgd291bGQgZXhwZWN0IGl0IHRvIGhhbmRsZSBjb21tdW5pY2F0aW9uLCBsaWtlbHkgdGhyb3VnaCBVU0IgZW5kcG9pbnRzLiBTdGFuZGFyZCBzdHVmZi5cblxuTm93LCB0aGUgaW50ZXJlc3RpbmcgYml0LiBXZSBoYXZlIFVTQiBlbXVsYXRpb24gdmlhIHRoZSBzeXprYWxsZXIgVVNCIFJhdyBHYWRnZXQsIGFuZCBpdCBzZWVtcyBsaWtlIGl0J3MgZGVzaWduZWQgdG8gZW11bGF0ZSBhIGRldmljZSB3aXRoIHRoZSB2ZW5kb3IgYW5kIHByb2R1Y3QgSURzIDB4MzI1YiBhbmQgMHg4MTAwLCB3aGljaCBjb3JyZXNwb25kIHRvIGBNTTgxWF9WRU5ET1JfSURgIGFuZCBgTU04MVhfTU04MTBYX1BST0RVQ1RfSURgLiBTbywgdGhlIG1pbGxpb24tZG9sbGFyIHF1ZXN0aW9uOiAqY2FuKiB3ZSBpbml0aWFsaXplIHRoaXMgZHJpdmVyIHVzaW5nIHRoYXQgZW11bGF0aW9uPyBPciwgZG9lcyBpdCBoYXZlIHNvbWUgc3BlY2lmaWMgaGFyZHdhcmUgZGVwZW5kZW5jaWVzIHRoYXQgd2UgbmVlZCB0byBhY2NvdW50IGZvcj8gSSBuZWVkIHRvIGZpZ3VyZSB0aGF0IG91dC5cblxuVG8gZG8gdGhhdCwgSSdsbCBnbyBzdHJhaWdodCB0byBgbW04MXhfY29yZV9pbml0YCBpbiBgZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb3JlLmNgLiBUaGF0J3Mgd2hlcmUgdGhlIGNvcmUgaW5pdGlhbGl6YXRpb24gbG9naWMgc2hvdWxkIHJlc2lkZSwgYW5kIHRoYXQgc2hvdWxkIGJlIHRoZSBwbGFjZSB0byBzdGFydCBkcmlsbGluZyBkb3duIGludG8gYW55IHBvdGVudGlhbCBoYXJkd2FyZSBkZXBlbmRlbmNpZXMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI2MzM0LCJPdXRwdXRUb2tlbnMiOjQ1LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTY2LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMDdUMDU6MDY6MDMuMjMyMTgwMzk2WiIsIlNlcSI6MTgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjg1MDcwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29yZS5jXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDYwLFxuICBcIkxpbmVDb3VudFwiOiA1MFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgIDYwOlxcdFxcbiAgNjE6XFx0c3RydWN0IG1tODF4ICptbTgxeF9jb3JlX2FsbG9jKHNpemVfdCBwcml2X3NpemUsIHN0cnVjdCBkZXZpY2UgKmRldilcXG4gIDYyOlxcdHtcXG4gIDYzOlxcdFxcdHJldHVybiBtbTgxeF9tYWNfYWxsb2MocHJpdl9zaXplLCBkZXYpO1xcbiAgNjQ6XFx0fVxcbiAgNjU6XFx0RVhQT1JUX1NZTUJPTF9HUEwobW04MXhfY29yZV9hbGxvYyk7XFxuICA2NjpcXHRcXG4gIDY3OlxcdGludCBtbTgxeF9jb3JlX2luaXQoc3RydWN0IG1tODF4ICptb3JzKVxcbiAgNjg6XFx0e1xcbiAgNjk6XFx0XFx0aW50IHJldDtcXG4gIDcwOlxcdFxcbiAgNzE6XFx0XFx0c2V0X2JpdChNTTgxWF9TVEFURV9DSElQX1VOUkVTUE9OU0lWRSwgXFx1MDAyNm1vcnMtXFx1MDAzZXN0YXRlX2ZsYWdzKTtcXG4gIDcyOlxcdFxcdHNldF9iaXQoTU04MVhfU1RBVEVfUkVMT0FEX0ZXX0FGVEVSX1NUQVJULCBcXHUwMDI2bW9ycy1cXHUwMDNlc3RhdGVfZmxhZ3MpO1xcbiAgNzM6XFx0XFxuICA3NDpcXHRcXHRtbTgxeF9jb3JlX2luaXRfbWFjX2FkZHIobW9ycyk7XFxuICA3NTpcXHRcXG4gIDc2OlxcdFxcdHJldCA9IG1tODF4X2NvcmVfYXR0YWNoX3JlZ3MobW9ycyk7XFxuICA3NzpcXHRcXHRpZiAocmV0KVxcbiAgNzg6XFx0XFx0XFx0cmV0dXJuIHJldDtcXG4gIDc5OlxcdFxcbiAgODA6XFx0XFx0bW9ycy1cXHUwMDNlY2hpcF93cSA9IGNyZWF0ZV9zaW5nbGV0aHJlYWRfd29ya3F1ZXVlKFxcXCJjaGlwX3dxXFxcIik7XFxuICA4MTpcXHRcXHRpZiAoIW1vcnMtXFx1MDAzZWNoaXBfd3EpXFxuICA4MjpcXHRcXHRcXHRyZXR1cm4gLUVOT01FTTtcXG4gIDgzOlxcdFxcbiAgODQ6XFx0XFx0bW9ycy1cXHUwMDNlbmV0X3dxID0gY3JlYXRlX3NpbmdsZXRocmVhZF93b3JrcXVldWUoXFxcIm5ldF93cVxcXCIpO1xcbiAgODU6XFx0XFx0aWYgKCFtb3JzLVxcdTAwM2VuZXRfd3EpIHtcXG4gIDg2OlxcdFxcdFxcdHJldCA9IC1FTk9NRU07XFxuICA4NzpcXHRcXHRcXHRnb3RvIGVycl9jaGlwX3dxO1xcbiAgODg6XFx0XFx0fVxcbiAgODk6XFx0XFxuICA5MDpcXHRcXHRyZXQgPSBtbTgxeF9oaWZfaW5pdChtb3JzKTtcXG4gIDkxOlxcdFxcdGlmIChyZXQpXFxuICA5MjpcXHRcXHRcXHRnb3RvIGVycl93cXM7XFxuICA5MzpcXHRcXG4gIDk0OlxcdFxcdHJldHVybiAwO1xcbiAgOTU6XFx0XFxuICA5NjpcXHRlcnJfd3FzOlxcbiAgOTc6XFx0XFx0Zmx1c2hfd29ya3F1ZXVlKG1vcnMtXFx1MDAzZW5ldF93cSk7XFxuICA5ODpcXHRcXHRkZXN0cm95X3dvcmtxdWV1ZShtb3JzLVxcdTAwM2VuZXRfd3EpO1xcbiAgOTk6XFx0XFxuIDEwMDpcXHRlcnJfY2hpcF93cTpcXG4gMTAxOlxcdFxcdGZsdXNoX3dvcmtxdWV1ZShtb3JzLVxcdTAwM2VjaGlwX3dxKTtcXG4gMTAyOlxcdFxcdGRlc3Ryb3lfd29ya3F1ZXVlKG1vcnMtXFx1MDAzZWNoaXBfd3EpO1xcbiAxMDM6XFx0XFxuIDEwNDpcXHRcXHRyZXR1cm4gcmV0O1xcbiAxMDU6XFx0fVxcbiAxMDY6XFx0RVhQT1JUX1NZTUJPTF9HUEwobW04MXhfY29yZV9pbml0KTtcXG4gMTA3OlxcdFxcbiAxMDg6XFx0aW50IG1tODF4X2NvcmVfcmVnaXN0ZXIoc3RydWN0IG1tODF4ICptb3JzKVxcbiAxMDk6XFx0e1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wN1QwNTowNjowMy4yMzIyNjc4NTZaIiwiU2VxIjoxOSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6NjE4NjQ5NjMzOCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIFBvdGVudGlhbCBmb3IgRnV6emluZyB0aGUgTU04MVggVVNCIFdpcmVsZXNzIERyaXZlcioqXG5cbk9rYXksIGxldCdzIGJyZWFrIHRoaXMgZG93bi4gRmlyc3QsIEkgbmVlZCB0byBsb29rIGF0IGNhc2VzIDIgYW5kIDMsIGZvY3VzaW5nIG9uIHdoZW4gd2UgKnNob3VsZCogcmV0dXJuIGBXb3J0aEZ1enppbmc9ZmFsc2VgIGFuZCBgV29ydGhGdXp6aW5nPXRydWVgLCByZXNwZWN0aXZlbHkuIE15IGdvYWwgaXMgdG8gZGV0ZXJtaW5lIGlmIGZ1enppbmcgdGhpcyBkcml2ZXIgaXMgZXZlbiBmZWFzaWJsZS4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaWYgdGhlIGRyaXZlciBpcyByZWFjaGFibGUuXG5cblJpZ2h0LCBzbyB3ZSdyZSB0YWxraW5nIGFib3V0IGRyaXZlcnMgdGhhdCBhcmUgYWNjZXNzaWJsZSB0aHJvdWdoIHZpcnR1YWwgYnVzZXMuIFRoaW5raW5nIHNwZWNpZmljYWxseSBhYm91dCB0aGlzIE1NODFYIGRyaXZlciwgSSBuZWVkIHRvIGNvbnNpZGVyIGFsbCB0aGUgdmFyaW91cyBidXMgdHlwZXMgdGhhdCBzeXprYWxsZXIgc3VwcG9ydHMgLSB2aXJ0aW8sIFVTQiBnYWRnZXQsIGxvb3BiYWNrLCBuZXRsaW5rLCBiaW5kZXIsIHNvY2tldHMsIGV0Yy4gVGhlIGdvb2QgbmV3cyBpcyB0aGF0IFVTQiB3aXJlbGVzcyBkcml2ZXJzICphcmUqIHJlYWNoYWJsZSB0aHJvdWdoIHN5emthbGxlcidzIFVTQiBmdXp6aW5nIGNhcGFiaWxpdGllcywgZXNwZWNpYWxseSB3aXRoIHRoZSBSYXcgR2FkZ2V0IG9yIGR1bW15X2hjZCBzZXR1cHMuIFRoYXQncyBhIGdvb2Qgc3RhcnRpbmcgcG9pbnQuXG5cbk5vdywgdGhlIGltcG9ydGFudCBwYXJ0OiBjb25maWd1cmF0aW9uIGRlcGVuZGVuY2llcy4gSSBuZWVkIHRvIGRldGVybWluZSB3aGF0IGtlcm5lbCBjb25maWd1cmF0aW9ucyBhcmUgYWJzb2x1dGVseSByZXF1aXJlZCBmb3IgdGhpcyBkcml2ZXIgdG8gYmUgYnVpbHQgYW5kLCBtb3JlIGltcG9ydGFudGx5LCAqYWN0aXZlKi4gSSdtIGRpdmluZyBpbnRvIHRoZSBLY29uZmlnIGZpbGVzLCBzdGFydGluZyB3aXRoIGBkcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L0tjb25maWdgLiBUaGlzIGlzIHdoZXJlIHRoZSBjb3JlIGxvZ2ljIGxpZXMuIEJpbmdvLCBgTU04MVhfVVNCYCBkZXBlbmRzIG9uIGBNQUM4MDIxMSBcdTAwMjZcdTAwMjYgVVNCYCBhbmQgc2VsZWN0cyBgTU04MVhgLiBUaGlzIG1lYW5zIHdlIG5lZWQgdGhlIE1BQzgwMjExIHdpcmVsZXNzIHN0YWNrIGFuZCBVU0Igc3VwcG9ydCBlbmFibGVkIGluIHRoZSBrZXJuZWwgY29uZmlnIGZvciB0aGlzIE1NODFYIFVTQiBkcml2ZXIgdG8gZXZlbiBiZSBjb21waWxlZC4gRXhjZWxsZW50LiBJIGFsc28gc2VlIGBXTEFOX1ZFTkRPUl9NT1JTRU1JQ1JPYCBpbiBgZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9LY29uZmlnYCwgc28gSSBuZWVkIHRvIGNoZWNrIGl0LCB0b28uIFRoaXMgaXMgdGhlIGNydWNpYWwgaW5mb3JtYXRpb24gZm9yIG1ha2luZyBpbmZvcm1lZCBkZWNpc2lvbnMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI3NTUxLCJPdXRwdXRUb2tlbnMiOjM4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTg2LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMDdUMDU6MDY6MDkuNDE4NzY2MDY0WiIsIlNlcSI6MjAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU3MTAwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vS2NvbmZpZ1wiLFxuICBcIkZpcnN0TGluZVwiOiAxLFxuICBcIkxpbmVDb3VudFwiOiAyMFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgICAxOlxcdCMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxcbiAgIDI6XFx0Y29uZmlnIFdMQU5fVkVORE9SX01PUlNFTUlDUk9cXG4gICAzOlxcdFxcdGJvb2wgXFxcIk1vcnNlIE1pY3JvIGRldmljZXNcXFwiXFxuICAgNDpcXHRcXHRkZWZhdWx0IHlcXG4gICA1OlxcdFxcdGhlbHBcXG4gICA2OlxcdFxcdCAgSWYgeW91IGhhdmUgYSB3aXJlbGVzcyBjYXJkIGJlbG9uZ2luZyB0byB0aGlzIGNsYXNzLCBzYXkgWS5cXG4gICA3OlxcdFxcbiAgIDg6XFx0XFx0ICBOb3RlIHRoYXQgdGhlIGFuc3dlciB0byB0aGlzIHF1ZXN0aW9uIGRvZXNuJ3QgZGlyZWN0bHkgYWZmZWN0IHRoZVxcbiAgIDk6XFx0XFx0ICBrZXJuZWw6IHNheWluZyBOIHdpbGwganVzdCBjYXVzZSB0aGUgY29uZmlndXJhdG9yIHRvIHNraXAgYWxsIHRoZVxcbiAgMTA6XFx0XFx0ICBxdWVzdGlvbnMgYWJvdXQgdGhlc2UgY2FyZHMuIElmIHlvdSBzYXkgWSwgeW91IHdpbGwgYmUgYXNrZWQgZm9yXFxuICAxMTpcXHRcXHQgIHlvdXIgc3BlY2lmaWMgY2FyZCBpbiB0aGUgZm9sbG93aW5nIHF1ZXN0aW9ucy5cXG4gIDEyOlxcdFxcbiAgMTM6XFx0aWYgV0xBTl9WRU5ET1JfTU9SU0VNSUNST1xcbiAgMTQ6XFx0c291cmNlIFxcXCJkcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L0tjb25maWdcXFwiXFxuICAxNTpcXHRlbmRpZiAjIFdMQU5fVkVORE9SX01PUlNFTUlDUk9cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDdUMDU6MDY6MDkuNDE4ODI0MzU0WiIsIlNlcSI6MjEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjE2MzQ1MjIwOTMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aGF0IHRob3VnaHQgcHJvY2VzcywgYXMgaWYgaXQgd2VyZSBteSBvd246XG5cbioqSW52ZXN0aWdhdGluZyBhIFBvdGVudGlhbCBEZXBlbmRlbmN5KipcblxuQWxyaWdodCwgSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGRlcGVuZGVuY2llcyByZWxhdGVkIHRvIGBXTEFOX1ZFTkRPUl9NT1JTRU1JQ1JPYC4gVG8gZ2V0IGEgY2xlYXIgcGljdHVyZSBvZiBpdHMgY29uZmlndXJhdGlvbiBvcHRpb25zLCBJIHNob3VsZCBwcm9iYWJseSBjaGVjayB0aGUgYGRyaXZlcnMvbmV0L3dpcmVsZXNzL0tjb25maWdgIGZpbGUuIFRoYXQncyB1c3VhbGx5IHRoZSBwbGFjZSB3aGVyZSB0aGVzZSBzb3J0cyBvZiB0aGluZ3MgYXJlIGRlZmluZWQgYW5kIHdoZXJlIEknbGwgZmluZCBpdHMgYXNzb2NpYXRlZCBkZXBlbmRlbmNpZXMsIGlmIGFueS4gSSB3YW50IHRvIHNlZSBpZiB0aGlzIHBhcnRpY3VsYXIgdmVuZG9yIG9wdGlvbiBoYXMgYW55IHNwZWNpZmljIHJlcXVpcmVtZW50cyBvbiBvdGhlciBrZXJuZWwgbW9kdWxlcyBvciBmZWF0dXJlcy4gVW5kZXJzdGFuZGluZyB0aGUgZGVwZW5kZW5jaWVzIGlzIGNyaXRpY2FsIGZvciBwcm9wZXJseSBjb25maWd1cmluZyB0aGlzIGZvciBhIGJ1aWxkLCBvciB0cm91Ymxlc2hvb3RpbmcgYW55IHBvdGVudGlhbCBjb25mbGljdHMgZG93biB0aGUgbGluZS4gTGV0J3Mgc2VlIHdoYXQgYEtjb25maWdgIHJldmVhbHMuLi5cblxuXG4iLCJJbnB1dFRva2VucyI6MjgzOTQsIk91dHB1dFRva2VucyI6MzQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyOSwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA3VDA1OjA2OjExLjA1MzM1MTYyN1oiLCJTZXEiOjIyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTYxOTcwMTI3LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIldMQU5fVkVORE9SX01PUlNFTUlDUk9cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3NcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvTWFrZWZpbGU9MTQ9b2JqLSQoQ09ORklHX1dMQU5fVkVORE9SX01JQ1JPQ0hJUCkgKz0gbWljcm9jaGlwL1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL01ha2VmaWxlOjE1Om9iai0kKENPTkZJR19XTEFOX1ZFTkRPUl9NT1JTRU1JQ1JPKSArPSBtb3JzZW1pY3JvL1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL01ha2VmaWxlLTE2LW9iai0kKENPTkZJR19XTEFOX1ZFTkRPUl9OWFApICs9IG54cC9cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vS2NvbmZpZy0xLSMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vS2NvbmZpZzoyOmNvbmZpZyBXTEFOX1ZFTkRPUl9NT1JTRU1JQ1JPXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9LY29uZmlnLTMtXFx0Ym9vbCBcXFwiTW9yc2UgTWljcm8gZGV2aWNlc1xcXCJcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vS2NvbmZpZy0xMi1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL0tjb25maWc6MTM6aWYgV0xBTl9WRU5ET1JfTU9SU0VNSUNST1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vS2NvbmZpZy0xNC1zb3VyY2UgXFxcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvS2NvbmZpZ1xcXCJcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL0tjb25maWc6MTU6ZW5kaWYgIyBXTEFOX1ZFTkRPUl9NT1JTRU1JQ1JPXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA3VDA1OjA2OjExLjIxNTMzMzkxNVoiLCJTZXEiOjIzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjoyMDYyMzUzMzU1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBsZXQncyBkaXZlIGludG8gdGhpcy4gSGVyZSdzIGhvdyBJJ2QgYXBwcm9hY2ggdGhpcyB0YXNrLCBhcyBpZiB0aGVzZSB3ZXJlIG15IGludGVybmFsIHRob3VnaHRzOlxuXG4qKkludmVzdGlnYXRpbmcgV2lyZWxlc3MgTmV0d29ya2luZyBDb25maWd1cmF0aW9uKipcblxuQWxyaWdodCwgSSBuZWVkIHRvIGdldCBhIGhhbmRsZSBvbiB0aGUgb3ZlcmFsbCB3aXJlbGVzcyBuZXR3b3JraW5nIGNvbmZpZ3VyYXRpb24gd2l0aGluIHRoaXMgc3lzdGVtLiBNeSBpbW1lZGlhdGUgdGhvdWdodCBpcyB0byBzdGFydCB3aXRoIHRoZSBLY29uZmlnIGZpbGUgZm9yIHdpcmVsZXNzIGRyaXZlcnMuIFNwZWNpZmljYWxseSwgSSdsbCBuYXZpZ2F0ZSB0byBgZHJpdmVycy9uZXQvd2lyZWxlc3MvS2NvbmZpZ2AuIFRoYXQncyB3aGVyZSBJIHdvdWxkIGV4cGVjdCB0byBmaW5kIHRoZSBjb3JlIGRlZmluaXRpb25zIGFuZCBkZXBlbmRlbmNpZXMgZm9yIHdpcmVsZXNzIGZ1bmN0aW9uYWxpdHkuIEknbSBlc3BlY2lhbGx5IGludGVyZXN0ZWQgaW4gaWRlbnRpZnlpbmcgdGhlICpwYXJlbnQqIGNvbmZpZ3VyYXRpb25zLiBUaGlzIGlzIGNyaXRpY2FsIGZvciB1bmRlcnN0YW5kaW5nIHRoZSBsYXJnZXIgcGljdHVyZTogQXJlIHRoZXJlIHBhcmVudCBjb25maWdzIGxpa2UgYFdMQU5gLCBgTkVUREVWSUNFU2AsIG9yIHNvbWV0aGluZyBzaW1pbGFyIHRoYXQgY29uZGl0aW9uYWxseSBlbmFibGUgb3IgZGlzYWJsZSBicm9hZGVyIG5ldHdvcmtpbmcgZmVhdHVyZXMgYW5kLCBpbiB0dXJuLCBhZmZlY3QgdGhlIHdpcmVsZXNzIGNvbXBvbmVudHM/IFRyYWNpbmcgdGhvc2UgcGFyZW50IGRlcGVuZGVuY2llcyBpcyBvZnRlbiB0aGUgbW9zdCBkaXJlY3QgcGF0aCB0byBmaWd1cmluZyBvdXQgaG93IHdpcmVsZXNzIGlzIGludGVncmF0ZWQgaW50byB0aGUgc3lzdGVtIGFzIGEgd2hvbGUgYW5kIHdoYXQgdGhlIGltcGxpY2F0aW9ucyBhcmUgb2YgYW55IGNoYW5nZXMgSSdtIGNvbnNpZGVyaW5nLiBUaGlzIHdpbGwgZ2l2ZSBtZSBhIHByb3BlciBzdGFydGluZyBwb2ludCBmb3IgYW55IGRlZXBlciBhbmFseXNpcy5cblxuXG4iLCJJbnB1dFRva2VucyI6Mjg5MDQsIk91dHB1dFRva2VucyI6MjgsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozNCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0wN1QwNTowNjoxMy4yNzc2OTU3M1oiLCJTZXEiOjI0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTUwMTk0NDc3LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm1vcnNlbWljcm9cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3NcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvS2NvbmZpZz0yOT1zb3VyY2UgXFxcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21pY3JvY2hpcC9LY29uZmlnXFxcIlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL0tjb25maWc6MzA6c291cmNlIFxcXCJkcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL0tjb25maWdcXFwiXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvS2NvbmZpZy0zMS1zb3VyY2UgXFxcImRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9LY29uZmlnXFxcIlxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvTWFrZWZpbGU9MTQ9b2JqLSQoQ09ORklHX1dMQU5fVkVORE9SX01JQ1JPQ0hJUCkgKz0gbWljcm9jaGlwL1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL01ha2VmaWxlOjE1Om9iai0kKENPTkZJR19XTEFOX1ZFTkRPUl9NT1JTRU1JQ1JPKSArPSBtb3JzZW1pY3JvL1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL01ha2VmaWxlLTE2LW9iai0kKENPTkZJR19XTEFOX1ZFTkRPUl9OWFApICs9IG54cC9cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vS2NvbmZpZz0xMz1pZiBXTEFOX1ZFTkRPUl9NT1JTRU1JQ1JPXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9LY29uZmlnOjE0OnNvdXJjZSBcXFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9LY29uZmlnXFxcIlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vS2NvbmZpZy0xNS1lbmRpZiAjIFdMQU5fVkVORE9SX01PUlNFTUlDUk9cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvZncuaC0xNS0jZGVmaW5lIEJDRl9EQVRBQkFTRV9TSVpFICgxMDI0KVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvZncuaDoxNjojZGVmaW5lIE1NODFYX0ZXX0RJUiBcXFwibW9yc2VtaWNyby9tbTgxeFxcXCJcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2Z3LmgtMTctI2RlZmluZSBNTTgxWF9GV19FWFQgXFxcIi5iaW5cXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA3VDA1OjA2OjEzLjQyNzg5NTUwOFoiLCJTZXEiOjI1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjo1MDA2Nzk4OTA4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEFuYWx5c2lzIG9mIHRoZSBgbW04MXhfY21kX3Jlc3BfcHJvY2Vzc2AgUGF0Y2gqKlxuXG5Pa2F5LCBsZXQncyBicmVhayB0aGlzIGRvd24uIEZpcnN0LCBJIG5lZWQgdG8gY29uZmlybSB0aGUgcmVsZXZhbnQgS2NvbmZpZyBvcHRpb25zLiBJIG5lZWQgdG8gbWFrZSBzdXJlIGBXTEFOYCwgYE1BQzgwMjExYCwgYFVTQl9TVVBQT1JUYCwgYW5kIGBVU0JgIGFyZSBlbmFibGVkLCBhcyB3ZWxsIGFzIGBXTEFOX1ZFTkRPUl9NT1JTRU1JQ1JPYC4gVGhlIHByZXNlbmNlIG9mIGBNTTgxWF9VU0JgIG1hbmRhdGVzIGBNTTgxWGAgYW5kIHBvdGVudGlhbGx5IGBNTTgxWF9TRElPYCBkZXBlbmRpbmcgb24gU0RJTyBlbmFibGVtZW50LlxuXG5Ob3csIHRoZSBjb3JlIG9mIHRoZSBtYXR0ZXI6IHdoYXQgZnVuY3Rpb24gaXMgYWN0dWFsbHkgYmVpbmcgbW9kaWZpZWQ/ICBBaCwgeWVzLCBgbW04MXhfY21kX3Jlc3BfcHJvY2Vzc2AuIFRoaXMgbG9va3MgbGlrZSBhIHNvbGlkIGNhbmRpZGF0ZSBmb3IgYSBgRm9jdXNTeW1ib2xgIHNpbmNlIGl0J3MgdGhlIHNwZWNpZmljLCBub24tdWJpcXVpdG91cyBmdW5jdGlvbiBiZWluZyB0YXJnZXRlZC4gIExldCdzIG1ha2Ugc3VyZSBub3RoaW5nIGVsc2UgaXMgdG91Y2hlZCBpbiB0aGlzIHBhdGNoLiBSaWdodCwganVzdCBgbW04MXhfY21kX3Jlc3BfcHJvY2Vzc2AsIHRoYXQncyBpdC5cblxuTGV0J3MgcXVpY2tseSBkb3VibGUtY2hlY2sgdGhlIGRpZmYgdG8gY29uZmlybSB0aGlzLiBIZXJlIHdlIGhhdmUgaXQ6IGEgc2luZ2xlIG1vZGlmaWNhdGlvbiB3aXRoaW4gYGRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29tbWFuZC5jYC4gIFRoZSBjaGFuZ2UgaW52b2x2ZXMgYW4gYWRkaXRpb25hbCBgbWluX3RgIGNhbGwgdG8gZW5zdXJlIHRoZSBsZW5ndGggY29waWVkIGRvZXNuJ3QgZXhjZWVkIGBza2ItXHUwMDNlbGVuYC4gRXhjZWxsZW50LlxuXG5Ob3csIGEgcXVpY2sgY2hlY2sgb2YgdGhlIEdpdCBsb2cgb3IgYSBzaW1wbGUgZ3JlcHBlciBjb25maXJtcyB0aGF0IHRoaXMgaXMgYSBzaW5nbGUtY29tbWl0IGNoYW5nZS4gTm8gb3RoZXIgZmlsZXMgYXJlIGFmZmVjdGVkLlxuXG5Pa2F5LCBsZXQncyBzdW1tYXJpemU6XG5cbiogICAqKlRhcmdldCBBcmNoaXRlY3R1cmU6KiogYW1kNjQuXG4qICAgKipXb3J0aEZ1enppbmc6KiogWWVzLCBhcyB0aGlzIGlzIHJlYWNoYWJsZSB2aWEgVVNCIGVtdWxhdGlvbiBvciBSYXcgR2FkZ2V0LlxuKiAgICoqRW5hYmxlQ29uZmlnczoqKiBgTU04MVhgLCBgTU04MVhfVVNCYCwgYFdMQU5fVkVORE9SX01PUlNFTUlDUk9gLCBgTUFDODAyMTFgLCBhbmQgYFVTQmAuXG4qICAgKipGb2N1c1N5bWJvbHM6KiogYG1tODF4X2NtZF9yZXNwX3Byb2Nlc3NgLiAgVGhpcyBpcyBpZGVhbCBhcyBpdCBpcyB0aGUgbm9uLXViaXF1aXRvdXMgZnVuY3Rpb24gd2UgYXJlIG1vZGlmeWluZy5cbiogICAqKlJlYXNvbmluZzoqKiBDb25jaXNlIGFuZCBjbGVhciwgYXMgcmVxdWlyZWQuXG5cblRpbWUgdG8gaW52b2tlIGBzZXQtcmVzdWx0c2AuIEknbSBjb25maWRlbnQgaW4gdGhpcyBhbmFseXNpcy5cblxuXG4iLCJJbnB1dFRva2VucyI6Mjk1NzMsIk91dHB1dFRva2VucyI6MTYxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NjcxLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA3VDA1OjA2OjE4LjQzNDY5NjM5NloiLCJTZXEiOjI2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE1NzU0MTgxNywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiTU04MVhcIixcbiAgICBcIk1NODFYX1VTQlwiLFxuICAgIFwiV0xBTl9WRU5ET1JfTU9SU0VNSUNST1wiLFxuICAgIFwiTUFDODAyMTFcIixcbiAgICBcIlVTQlwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcIm1tODF4X2NtZF9yZXNwX3Byb2Nlc3NcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBhZGRzIGEgYm91bmRzIGNoZWNrIGFnYWluc3Qgc2tiLVxcdTAwM2VsZW4gaW4gbW04MXhfY21kX3Jlc3BfcHJvY2VzcygpIHRvIHByZXZlbnQgYW4gb3V0LW9mLWJvdW5kcyByZWFkIGR1cmluZyBtZW1jcHkgd2hlbiBwcm9jZXNzaW5nIGNvbW1hbmQgcmVzcG9uc2VzIGluIHRoZSBNb3JzZSBNaWNybyBNTTgxeCB3aXJlbGVzcyBkcml2ZXIuIFRoaXMgZHJpdmVyIHN1cHBvcnRzIFVTQiBkZXZpY2VzIGFuZCBpcyByZWFjaGFibGUgaW4gZnV6emluZyBlbnZpcm9ubWVudHMgd2l0aCBVU0IgZW11bGF0aW9uIChlLmcuIFJhdyBHYWRnZXQgLyBkdW1teV9oY2QpLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIk1NODFYXCIsXG4gICAgXCJNTTgxWF9VU0JcIixcbiAgICBcIldMQU5fVkVORE9SX01PUlNFTUlDUk9cIixcbiAgICBcIk1BQzgwMjExXCIsXG4gICAgXCJVU0JcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJtbTgxeF9jbWRfcmVzcF9wcm9jZXNzXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggYWRkcyBhIGJvdW5kcyBjaGVjayBhZ2FpbnN0IHNrYi1cXHUwMDNlbGVuIGluIG1tODF4X2NtZF9yZXNwX3Byb2Nlc3MoKSB0byBwcmV2ZW50IGFuIG91dC1vZi1ib3VuZHMgcmVhZCBkdXJpbmcgbWVtY3B5IHdoZW4gcHJvY2Vzc2luZyBjb21tYW5kIHJlc3BvbnNlcyBpbiB0aGUgTW9yc2UgTWljcm8gTU04MXggd2lyZWxlc3MgZHJpdmVyLiBUaGlzIGRyaXZlciBzdXBwb3J0cyBVU0IgZGV2aWNlcyBhbmQgaXMgcmVhY2hhYmxlIGluIGZ1enppbmcgZW52aXJvbm1lbnRzIHdpdGggVVNCIGVtdWxhdGlvbiAoZS5nLiBSYXcgR2FkZ2V0IC8gZHVtbXlfaGNkKS5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDdUMDU6MDY6MTguNTkyMjQ5NDEzWiIsIlNlcSI6MjcsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoiSWYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyODk3MjE1MDgyNCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA3VDA1OjA2OjE4LjU5MzAxMDgwM1oiLCJTZXEiOjI4LCJOZXN0aW5nIjoyLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoia21zYW4tZXZhbHVhdG9yIiwiTW9kZWwiOiJjb3JlIiwiRHVyYXRpb24iOjI4OTcxMzgyNzM0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJLTVNBTlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBmaXhlcyBhbiBvdXQtb2YtYm91bmRzIG1lbW9yeSByZWFkIGluIG1tODF4X2NtZF9yZXNwX3Byb2Nlc3MoKSBieSBjYXBwaW5nIHRoZSByZXNwb25zZSBjb3B5IGxlbmd0aCB0byBza2ItXFx1MDAzZWxlbiAocHJldmVudGluZyBtZW1jcHkgZnJvbSByZWFkaW5nIHBhc3QgdGhlIGVuZCBvZiB0aGUgcmVjZWl2ZWQgc2tiIGJ1ZmZlciBpZiB0aGUgcmVzcG9uc2UgaGVhZGVyIGxlbmd0aCBjbGFpbXMgYSBsYXJnZXIgc2l6ZSkuIFRoaXMgaXNzdWUgaXMgYSBjbGFzc2ljIGJ1ZmZlciBvdXQtb2YtYm91bmRzIHJlYWQgd2hpY2ggaXMgZGlyZWN0bHkgZGV0ZWN0ZWQgYnkgS0FTQU4uIFRoZSBwYXRjaCBkb2VzIG5vdCBpbnRyb2R1Y2UgYW55IHVuaW5pdGlhbGl6ZWQgbWVtb3J5IGFsbG9jYXRpb25zLCBjb25kaXRpb25hbCBicmFuY2hlcyBiYXNlZCBvbiB1bmluaXRpYWxpemVkIGRhdGEsIG9yIGtlcm5lbC10by11c2VyIGluZm8tbGVha3MuIFRoZXJlZm9yZSwgc3RhbmRhcmQgS0FTQU4gZnV6emluZyBpcyBzdWZmaWNpZW50IGFuZCBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBpcyBub3Qgd2FycmFudGVkLlwiLFxuICBcIk5lZWRzS01TQU5cIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBzZWN1cml0eSBlbmdpbmVlciBzcGVjaWFsaXppbmcgaW4ga2VybmVsIG1lbW9yeVxuZXJyb3IgZGV0ZWN0b3JzIChLQVNBTiBhbmQgS01TQU4pLiBZb3VyIGpvYiBpcyB0byByZXZpZXcgdGhlIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmRcbmRldGVybWluZSBpZiB0aGUgY29kZSBjaGFuZ2VzIGp1c3RpZnkgc3Bhd25pbmcgYSBkZWRpY2F0ZWQgS01TQU4gKEtlcm5lbE1lbW9yeVNhbml0aXplcilcbmZ1enppbmcgc2Vzc2lvbiBpbiBhZGRpdGlvbiB0byBzdGFuZGFyZCBLQVNBTiBmdXp6aW5nLlxuXG5DUklUSUNBTCBESVNUSU5DVElPTiBCRVRXRUVOIEtBU0FOIEFORCBLTVNBTjpcbi0gU3RhbmRhcmQgS0FTQU4ga2VybmVsIGJ1aWxkcyAodXBzdHJlYW0tYXBwYXJtb3Ita2FzYW4uY29uZmlnKSBhbHJlYWR5IGVuYWJsZVxuICBhIGNvbXByZWhlbnNpdmUgc3VpdGUgb2YgZGVidWdnaW5nIHRvb2xzIGFuZCBzYW5pdGl6ZXJzLCBpbmNsdWRpbmcgS0FTQU5cbiAgKG91dC1vZi1ib3VuZHMgYWNjZXNzZXMsIHVzZS1hZnRlci1mcmVlLCBkb3VibGUgZnJlZSwgaW52YWxpZCBmcmVlKSwgTE9DS0RFUFxuICAobG9ja2luZyBidWdzIGFuZCBkZWFkbG9ja3MpLCBVQi1zYW5pdGl6ZXJzLCBhbmQgbWVtb3J5IGNvcnJ1cHRpb24gY2hlY2tzLlxuLSBLTVNBTiAoS2VybmVsTWVtb3J5U2FuaXRpemVyKSBkZXRlY3RzIHJlYWRzIG9mIFVOSU5JVElBTElaRUQgbWVtb3J5IChzdGFjaywgaGVhcCxcbiAgb3IgcGFnZSBhbGxvY2F0aW9ucykgYW5kIGtlcm5lbC10by11c2VyIG1lbW9yeSBpbmZvLWxlYWtzLlxuXG5SdWxlOiBUSEVSRSBJUyBOTyBTRU5TRSBJTiBSVU5OSU5HIEEgS01TQU4gU0VTU0lPTiBJRiBBIEJVRyBDQU4gQkUgQ0FVR0hUIEJZIEtBU0FOLFxuTE9DS0RFUCwgT1IgT1RIRVIgU1RBTkRBUkQgQlVHIERFVEVDVE9SUy5cbkEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpbmN1cnMgc2lnbmlmaWNhbnQgcmVzb3VyY2UgY29zdHMuIFlvdSBtdXN0IE9OTFlcbnNldCBOZWVkc0tNU0FOPXRydWUgaWYgdGhlIGNvZGUgY2hhbmdlcyBpbnRyb2R1Y2Ugb3IgZXhwb3NlIFVOSU5JVElBTElaRUQgTUVNT1JZIHJpc2tzXG50aGF0IGFyZSBkZXRlY3RlZCBPTkxZIGJ5IEtNU0FOLlxuXG5Mb29rIGhvbGlzdGljYWxseSBhdCB0aGUgcGF0Y2ggc2VyaWVzIGFuZCBzdXJyb3VuZGluZyBjb2RlLiBFdmVuIGlmIG5vIGRpcmVjdFxudW5pbml0aWFsaXplZCBmaWVsZCBhY2Nlc3NlcyBvciBuZXcgYnVmZmVyIGFsbG9jYXRpb25zIGFyZSBhZGRlZCBpbiB0aGUgZGlmZiBpdHNlbGYsXG5hIHBhdGNoIG1heSBhbHRlciBjb250cm9sIGZsb3csIGJvdW5kcyBjaGVja2luZywgb3IgZGF0YSBsZW5ndGggY2FsY3VsYXRpb25zIGluIHdheXNcbnRoYXQgY2hhbmdlIGhvdyB0aGUgcmVzdCBvZiB0aGUgY29kZSBvcGVyYXRlcyBvbiBleGlzdGluZyBidWZmZXJzIChlLmcuIGFsbG93aW5nXG51bmluaXRpYWxpemVkIHN0YWNrL2hlYXAgbWVtb3J5IHRvIGJlIHJlYWQsIGNvcGllZCB0byB1c2VyIHNwYWNlLCBvciB1c2VkIGluIGNvbnRyb2xcbmZsb3cpLiBEbyBub3QgaGVzaXRhdGUgdG8gdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gaW5zcGVjdCB0aGUgc3Vycm91bmRpbmcgY29kZSxcbmNhbGxlZCBmdW5jdGlvbnMsIGFuZCBjYWxsZXJzLlxuXG5TZXQgTmVlZHNLTVNBTj10cnVlIE9OTFkgSUYgdGhlIHBhdGNoIGludHJvZHVjZXMgb3IgbW9kaWZpZXM6XG4xLiBLZXJuZWwgc3RydWN0dXJlcyBzZW50IHRvIHVzZXIgc3BhY2UgKHZpYSBjb3B5X3RvX3VzZXIsIHB1dF91c2VyLCBuZXRsaW5rIHNrYlxuICAgYXR0cmlidXRlcywgaW9jdGwgb3V0cHV0IGFyZ3VtZW50cywgc29ja2V0IG9wdGlvbnMsIG9yIEJQRiBidWZmZXJzKSB3aGVyZSBmaWVsZHNcbiAgIG9yIHN0cnVjdHVyZSBwYWRkaW5nIG1pZ2h0IG5vdCBiZSBmdWxseSBpbml0aWFsaXplZC96ZXJvZWQuXG4yLiBDb25kaXRpb25hbCBsb2dpYyBvciBicmFuY2hpbmcgdGhhdCBkZXBlbmRzIG9uIHBvdGVudGlhbGx5IHVuaW5pdGlhbGl6ZWQgdmFyaWFibGVzXG4gICBvciBzdHJ1Y3QgZmllbGRzLlxuMy4gQWxsb2NhdGlvbiBvciBpbml0aWFsaXphdGlvbiBvZiBjb21wbGV4IGRhdGEgc3RydWN0dXJlcyB3aGVyZSB1bmluaXRpYWxpemVkIGZpZWxkc1xuICAgY291bGQgYmUgcmVhZCBsYXRlciBpbiByZWFjaGFibGUgY29kZSBwYXRocy5cbjQuIEJvdW5kcyBjaGVja3MsIGxlbmd0aHMsIG9yIGxvZ2ljIGluIGEgd2F5IHRoYXQgYWxsb3dzIHN1cnJvdW5kaW5nIGNvZGUgdG8gYWNjZXNzXG4gICB1bmluaXRpYWxpemVkIGJ5dGVzIG9mIGV4aXN0aW5nIGJ1ZmZlcnMuXG5cblNldCBOZWVkc0tNU0FOPWZhbHNlIElGOlxuLSBUaGUgY29kZSBjaGFuZ2VzIHByaW1hcmlseSByaXNrIG91dC1vZi1ib3VuZHMgYWNjZXNzLCBhcnJheSBvdmVyZmxvd3MsIE5VTEwgcG9pbnRlclxuICBkZXJlZmVyZW5jZXMsIGxvY2tpbmcgZGVhZGxvY2tzLCBvciB1c2UtYWZ0ZXItZnJlZSBidWdzICh0aGVzZSBhcmUgYWxyZWFkeSBjYXVnaHRcbiAgYnkgS0FTQU4sIExPQ0tERVAsIG9yIHN0YW5kYXJkIGJ1ZyBkZXRlY3RvcnMpLlxuLSBBbGwgc3RhY2svaGVhcCBzdHJ1Y3R1cmVzIHRvdWNoZWQgb3IgaW50cm9kdWNlZCBieSB0aGUgcGF0Y2ggYXJlIGZ1bGx5IHplcm9lZFxuICBvciBpbml0aWFsaXplZCAoZS5nLiB1c2luZyA9IHswfSwgbWVtc2V0LCBremFsbG9jKSBiZWZvcmUgYmVpbmcgcmVhZCBvciBjb3BpZWQuXG4tIFRoZSBwYXRjaCBkb2VzIG5vdCBpbnRyb2R1Y2UgYW55IHJpc2sgb2YgdW5pbml0aWFsaXplZCBtZW1vcnkgdXNhZ2Ugb3IgaW5mby1sZWFrcy5cblxuVXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gaW5zcGVjdCB0aGUgc3Vycm91bmRpbmcgY29kZSBpZiBuZWNlc3NhcnksIHRoZW4gcHJvdmlkZVxuZGV0YWlsZWQgS01TQU5SZWFzb25pbmcgY29udHJhc3RpbmcgS0FTQU4gdnMgS01TQU4gYXBwbGljYWJpbGl0eSBmb3IgdGhpcyBwYXRjaC5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IlRhcmdldCBhcmNoaXRlY3R1cmU6IGFtZDY0XG5cbkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IDU3OTA1ZmE3ZTM2NTFlZjkzZmU4OTY3NDMzMDBhMTkwZGYwMzlkMDVcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgTW9uIFNlcCA3IDA1OjA0OjMxIDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb21tYW5kLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuY1xuaW5kZXggYWZiN2VlOWJiMjM2Zi4uNTkxZTViYTEwNzUzMyAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29tbWFuZC5jXG4rKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuY1xuQEAgLTIwOSw2ICsyMDksNyBAQCBpbnQgbW04MXhfY21kX3Jlc3BfcHJvY2VzcyhzdHJ1Y3QgbW04MXggKm1vcnMsIHN0cnVjdCBza19idWZmICpza2IpXG4gXHRcdGxlbmd0aCA9IG1pbl90KGludCwgbGVuZ3RoLFxuIFx0XHRcdCAgICAgICBsZTE2X3RvX2NwdShzcmNfcmVzcC1cdTAwM2VoZHIubGVuKSArXG4gXHRcdFx0XHQgICAgICAgc2l6ZW9mKHN0cnVjdCBob3N0X2NtZF9oZWFkZXIpKTtcbitcdFx0bGVuZ3RoID0gbWluX3QoaW50LCBsZW5ndGgsIHNrYi1cdTAwM2VsZW4pO1xuIFx0XHRtZW1jcHkoZGVzdF9yZXNwLCBzcmNfcmVzcCwgbGVuZ3RoKTtcbiBcdH0gZWxzZSB7XG4gXHRcdHJldCA9IGxlMzJfdG9fY3B1KHNyY19yZXNwLVx1MDAzZXN0YXR1cyk7XG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wN1QwNTowNjoxOC41OTMwMTYzNjNaIiwiU2VxIjoyOSwiTmVzdGluZyI6MywiVHlwZSI6ImxsbSIsIk5hbWUiOiJrbXNhbi1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6NTY3MTE2MzE5NywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IGFuYWx5c2lzIG9mIHRoZSBzaXR1YXRpb246XG5cbioqSW5pdGlhbCBBc3Nlc3NtZW50IG9mIHRoZSBDb2RlIENoYW5nZSoqXG5cbk9rYXksIHNvIHdlIGhhdmUgYSBwYXRjaCB0byByZXZpZXcuIE15IGZpcnN0IHN0ZXAgaXMgdG8gemVybyBpbiBvbiB0aGUgbW9kaWZpZWQgZmlsZSwgYGRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29tbWFuZC5jYC4gVGhhdCdzIHdoZXJlIHRoZSBhY3Rpb24gaXMuIEltbWVkaWF0ZWx5LCBJJ20gdGhpbmtpbmcgYWJvdXQgdGhlIGltcGxpY2F0aW9ucyBvZiBjaGFuZ2VzIHdpdGhpbiB0aGF0IHNwZWNpZmljIGRyaXZlci4gTXkgZXhwZXJpZW5jZSB0ZWxscyBtZSB0aGF0IGl0J3MgbGlrZWx5IGEgY29tbWFuZCBoYW5kbGluZyBtb2R1bGUgb2Ygc29tZSBraW5kLiBOb3csIGxldCdzIGdldCBhIGNsb3NlciBsb29rIGF0IHRoZSBhY3R1YWwgY29kZS4gTXkgbmV4dCBsb2dpY2FsIHN0ZXAgaXMgdG8gcGlucG9pbnQgdGhlIGV4YWN0IGxvY2F0aW9uLiBMaW5lIDIwOSBpcyBtZW50aW9uZWQsIHdoaWNoIGlzIGEgcGVyZmVjdCBzdGFydGluZyBwb2ludC4gSSBjYW4gcXVpY2tseSBqdW1wIHRvIHRoYXQgbGluZSB1c2luZyBgcmVhZC1maWxlYCBvciBgZ3JlcHBlcmAgYW5kIHNlZSB3aGF0J3MgaGFwcGVuaW5nIGluIGNvbnRleHQsIGEgZmV3IGxpbmVzIGFib3ZlIGFuZCBiZWxvdy5cblxuXG4iLCJJbnB1dFRva2VucyI6MjE0MiwiT3V0cHV0VG9rZW5zIjo0NiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjc5LCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDdUMDU6MDY6MjQuMjY0MTgzODhaIiwiU2VxIjozMCwiTmVzdGluZyI6MywiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTM2MzcwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29tbWFuZC5jXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDE4MCxcbiAgXCJMaW5lQ291bnRcIjogNzBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiIDE4MDpcXHRcXHQgKiB0aGlzIGlzIGEgbGF0ZSByZXNwb25zZSBmb3IgYSB0aW1lZCBvdXQgY29tbWFuZCB3aGljaCBoYXMgYmVlblxcbiAxODE6XFx0XFx0ICogY2xlYW5lZCB1cCwgc28ganVzdCBmcmVlIHVwIHRoZSByZXNwb25zZS4gSWYgYSBjb21tYW5kIHdhcyByZXRyaWVkLFxcbiAxODI6XFx0XFx0ICogdGhlIHJlc3BvbnNlIG1heSBiZSBmcm9tIHRoZSByZXRyeSBvciBmcm9tIHRoZSBvcmlnaW5hbCBjb21tYW5kXFxuIDE4MzpcXHRcXHQgKiAobGF0ZSByZXNwb25zZSkgYnV0IG5vdCBmcm9tIGJvdGggYmVjYXVzZSB0aGUgZmlybXdhcmUgd2lsbCBzaWxlbnRseVxcbiAxODQ6XFx0XFx0ICogZHJvcCBhIHJldHJ5IGlmIGl0IHJlY2VpdmVkIHRoZSBpbml0aWFsIHJlcXVlc3QuIFNvIGEgbWlzbWF0Y2hlZFxcbiAxODU6XFx0XFx0ICogcmV0cnkgY291bnRlciBpcyB0cmVhdGVkIGFzIGEgbWF0Y2hlZCBjb21tYW5kIGFuZCByZXNwb25zZS5cXG4gMTg2OlxcdFxcdCAqL1xcbiAxODc6XFx0XFx0aWYgKCFjbWRfc2tiIHx8IG1lc3NhZ2VfaWQgIT0gcmVzcF9tZXNzYWdlX2lkIHx8XFxuIDE4ODpcXHRcXHQgICAgKGhvc3RfaWQgXFx1MDAyNiBIT1NUX0NNRF9IT1NUX0lEX1NFUV9NQVNLKSAhPVxcbiAxODk6XFx0XFx0XFx0ICAgIChyZXNwX2hvc3RfaWQgXFx1MDAyNiBIT1NUX0NNRF9IT1NUX0lEX1NFUV9NQVNLKSkge1xcbiAxOTA6XFx0XFx0XFx0ZGV2X2Vycihtb3JzLVxcdTAwM2VkZXYsXFxuIDE5MTpcXHRcXHRcXHRcXHRcXFwiTGF0ZSByZXNwb25zZSBmb3IgdGltZWQgb3V0IHJlcSAweCUwNHg6JTA0eCBoYXZlIDB4JTA0eDolMDR4IDB4JTA0eFxcXCIsXFxuIDE5MjpcXHRcXHRcXHRcXHRyZXNwX21lc3NhZ2VfaWQsIHJlc3BfaG9zdF9pZCwgbWVzc2FnZV9pZCwgaG9zdF9pZCxcXG4gMTkzOlxcdFxcdFxcdFxcdG1vcnMtXFx1MDAzZWNtZF9zZXEpO1xcbiAxOTQ6XFx0XFx0XFx0aXNfbGF0ZV9yZXNwb25zZSA9IHRydWU7XFxuIDE5NTpcXHRcXHRcXHRnb3RvIGV4aXQ7XFxuIDE5NjpcXHRcXHR9XFxuIDE5NzpcXHRcXHRpZiAoKGhvc3RfaWQgXFx1MDAyNiBIT1NUX0NNRF9IT1NUX0lEX1JFVFJZX01BU0spICE9XFxuIDE5ODpcXHRcXHQgICAgKHJlc3BfaG9zdF9pZCBcXHUwMDI2IEhPU1RfQ01EX0hPU1RfSURfUkVUUllfTUFTSykpXFxuIDE5OTpcXHRcXHRcXHRkZXZfZGJnKG1vcnMtXFx1MDAzZWRldixcXG4gMjAwOlxcdFxcdFxcdFxcdFxcXCJDb21tYW5kIHJldHJ5IG1pc21hdGNoIDB4JTA0eDolMDR4IDB4JTA0eDolMDR4XFxcIixcXG4gMjAxOlxcdFxcdFxcdFxcdG1lc3NhZ2VfaWQsIGhvc3RfaWQsIHJlc3BfbWVzc2FnZV9pZCwgcmVzcF9ob3N0X2lkKTtcXG4gMjAyOlxcdFxcbiAyMDM6XFx0XFx0cmVzcF9jYiA9IChzdHJ1Y3QgaG9zdF9jbWRfcmVzcF9jYiAqKUlFRUU4MDIxMV9TS0JfQ0IoY21kX3NrYilcXG4gMjA0OlxcdFxcdFxcdFxcdCAgLVxcdTAwM2Vkcml2ZXJfZGF0YTtcXG4gMjA1OlxcdFxcdGxlbmd0aCA9IHJlc3BfY2ItXFx1MDAzZWxlbmd0aDtcXG4gMjA2OlxcdFxcdGRlc3RfcmVzcCA9IHJlc3BfY2ItXFx1MDAzZWRlc3RfcmVzcDtcXG4gMjA3OlxcdFxcdGlmIChsZW5ndGggXFx1MDAzZT0gc2l6ZW9mKHN0cnVjdCBob3N0X2NtZF9yZXNwKSBcXHUwMDI2XFx1MDAyNiBkZXN0X3Jlc3ApIHtcXG4gMjA4OlxcdFxcdFxcdHJldCA9IDA7XFxuIDIwOTpcXHRcXHRcXHRsZW5ndGggPSBtaW5fdChpbnQsIGxlbmd0aCxcXG4gMjEwOlxcdFxcdFxcdFxcdCAgICAgICBsZTE2X3RvX2NwdShzcmNfcmVzcC1cXHUwMDNlaGRyLmxlbikgK1xcbiAyMTE6XFx0XFx0XFx0XFx0XFx0ICAgICAgIHNpemVvZihzdHJ1Y3QgaG9zdF9jbWRfaGVhZGVyKSk7XFxuIDIxMjpcXHRcXHRcXHRsZW5ndGggPSBtaW5fdChpbnQsIGxlbmd0aCwgc2tiLVxcdTAwM2VsZW4pO1xcbiAyMTM6XFx0XFx0XFx0bWVtY3B5KGRlc3RfcmVzcCwgc3JjX3Jlc3AsIGxlbmd0aCk7XFxuIDIxNDpcXHRcXHR9IGVsc2Uge1xcbiAyMTU6XFx0XFx0XFx0cmV0ID0gbGUzMl90b19jcHUoc3JjX3Jlc3AtXFx1MDAzZXN0YXR1cyk7XFxuIDIxNjpcXHRcXHR9XFxuIDIxNzpcXHRcXG4gMjE4OlxcdFxcdHJlc3BfY2ItXFx1MDAzZXJldCA9IHJldDtcXG4gMjE5OlxcdFxcbiAyMjA6XFx0ZXhpdDpcXG4gMjIxOlxcdFxcdGlmIChjbWRfc2tiIFxcdTAwMjZcXHUwMDI2ICFpc19sYXRlX3Jlc3BvbnNlKSB7XFxuIDIyMjpcXHRcXHRcXHQvKiBDb21wbGV0ZSBpZiBub3QgYWxyZWFkeSB0aW1lZCBvdXQgKi9cXG4gMjIzOlxcdFxcdFxcdGlmIChtb3JzLVxcdTAwM2VjbWRfY29tcClcXG4gMjI0OlxcdFxcdFxcdFxcdGNvbXBsZXRlKG1vcnMtXFx1MDAzZWNtZF9jb21wKTtcXG4gMjI1OlxcdFxcdH1cXG4gMjI2OlxcdFxcbiAyMjc6XFx0XFx0bXV0ZXhfdW5sb2NrKFxcdTAwMjZtb3JzLVxcdTAwM2VjbWRfbG9jayk7XFxuIDIyODpcXHRleGl0X2ZyZWU6XFxuIDIyOTpcXHRcXHRkZXZfa2ZyZWVfc2tiKHNrYik7XFxuIDIzMDpcXHRcXHRyZXR1cm4gMDtcXG4gMjMxOlxcdH1cXG4gMjMyOlxcdFxcbiAyMzM6XFx0aW50IG1tODF4X2NtZF9zdGFfc3RhdGUoc3RydWN0IG1tODF4ICptb3JzLCBzdHJ1Y3QgbW04MXhfdmlmICptb3JzX3ZpZiwgdTE2IGFpZCxcXG4gMjM0OlxcdFxcdFxcdFxcdHN0cnVjdCBpZWVlODAyMTFfc3RhICpzdGEsXFxuIDIzNTpcXHRcXHRcXHRcXHRlbnVtIGllZWU4MDIxMV9zdGFfc3RhdGUgc3RhdGUpXFxuIDIzNjpcXHR7XFxuIDIzNzpcXHRcXHRzdHJ1Y3QgaG9zdF9jbWRfcmVxX3NldF9zdGFfc3RhdGUgcmVxID0ge1xcbiAyMzg6XFx0XFx0XFx0LmhkciA9IElOSVRfQ01EX0hEUihyZXEsIEhPU1RfQ01EX0lEX1NFVF9TVEFfU1RBVEUsXFxuIDIzOTpcXHRcXHRcXHRcXHRcXHQgICAgbW9yc192aWYtXFx1MDAzZWlkKSxcXG4gMjQwOlxcdFxcdFxcdC5haWQgPSBjcHVfdG9fbGUxNihhaWQpLFxcbiAyNDE6XFx0XFx0XFx0LnN0YXRlID0gY3B1X3RvX2xlMTYoc3RhdGUpLFxcbiAyNDI6XFx0XFx0XFx0LnVhcHNkX3F1ZXVlcyA9IHN0YS1cXHUwMDNldWFwc2RfcXVldWVzLFxcbiAyNDM6XFx0XFx0fTtcXG4gMjQ0OlxcdFxcbiAyNDU6XFx0XFx0bWVtY3B5KHJlcS5zdGFfYWRkciwgc3RhLVxcdTAwM2VhZGRyLCBzaXplb2YocmVxLnN0YV9hZGRyKSk7XFxuIDI0NjpcXHRcXG4gMjQ3OlxcdFxcdHJldHVybiBtbTgxeF9jbWRfdHgobW9ycywgTlVMTCwgKHN0cnVjdCBob3N0X2NtZF9yZXEgKilcXHUwMDI2cmVxLCAwLCAwKTtcXG4gMjQ4OlxcdH1cXG4gMjQ5OlxcdFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wN1QwNTowNjoyNC4yNjQzMjI2OVoiLCJTZXEiOjMxLCJOZXN0aW5nIjozLCJUeXBlIjoibGxtIiwiTmFtZSI6Imttc2FuLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjoyMjE0NTUyNTI0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgc3VtbWFyeSwgcHJlc2VudGVkIGFzIGEgc3RyZWFtIG9mIHRob3VnaHQ6XG5cbioqRGl2aW5nIERlZXBlciBpbnRvIGBtbTgxeF9jbWRfcmVzcF9wcm9jZXNzYCoqXG5cblJpZ2h0LCBzbyBJJ20gdHJ5aW5nIHRvIGdldCB0aGUgZnVsbCBwaWN0dXJlIGhlcmUsIGFuZCBpdCdzIGNsZWFyIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSAqZW50aXJlKiBjb250ZXh0IG9mIGBtbTgxeF9jbWRfcmVzcF9wcm9jZXNzYC4gSSd2ZSBsb29rZWQgYXQgdGhlIGVudHJ5IHBvaW50IGFuZCB0aGUgbGlrZWx5IGNhbGxpbmcgZnVuY3Rpb25zLCBidXQgbm93IEknbSB0aGlua2luZyBJIGNhbid0IGJ1aWxkIG15IGFyZ3VtZW50IHdpdGhvdXQgZXhwbG9yaW5nIHRoZSByZXN0IG9mIHRoYXQgZnVuY3Rpb24ncyBpbXBsZW1lbnRhdGlvbi4gV2hhdCBhcmUgYWxsIHRoZSBwb3RlbnRpYWwgcGF0aHMgb2YgZXhlY3V0aW9uPyBXaGVyZSBhcmUgdGhlIGNyaXRpY2FsIGRhdGEgZGVwZW5kZW5jaWVzPyBJJ20gZ29pbmcgdG8gbmVlZCB0byB0cmFjZSB0aHJvdWdoIGl0IGxpbmUgYnkgbGluZSwgbG9vayBhdCB0aGUgY29uZGl0aW9uYWwgYnJhbmNoZXMgYW5kIGRhdGEgZGVwZW5kZW5jaWVzIHRvIHNlZSB3aGF0J3MgcmVhbGx5IGhhcHBlbmluZy4gSSBuZWVkIHRvIGtub3cgd2hhdCBoYXBwZW5zIGluIGV2ZXJ5IHNjZW5hcmlvIHRoaXMgZnVuY3Rpb24gaGFuZGxlcy4gSSdtIGdvaW5nIHRvIGRpZyBpbiBub3cgYW5kIGdldCBteSBoZWFkIGZ1bGx5IGFyb3VuZCB0aGUgZW50aXJlIHJvdXRpbmUgYmVmb3JlIEkgZ28gYW55IGZ1cnRoZXIgaW4gbXkgYW5hbHlzaXMuIFRoaXMgc2hvdWxkIHByb3ZpZGUgbWUgd2l0aCB0aGUgY29tcHJlaGVuc2l2ZSBjb250ZXh0IEkgbmVlZCB0byBtb3ZlIGZvcndhcmQgY29uZmlkZW50bHkuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjM3MzQsIk91dHB1dFRva2VucyI6NDYsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyNSwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA3VDA1OjA2OjI2LjQ3ODg3ODI5NFoiLCJTZXEiOjMyLCJOZXN0aW5nIjozLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMjM4MzAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb21tYW5kLmNcIixcbiAgXCJGaXJzdExpbmVcIjogMTQwLFxuICBcIkxpbmVDb3VudFwiOiA1MFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgMTQwOlxcdFxcdFxcdFxcdGxlMTZfdG9fY3B1KHJlcS1cXHUwMDNlaGRyLmhvc3RfaWQpLCByZXQsIHJldCk7XFxuIDE0MTpcXHRcXHR9XFxuIDE0MjpcXHRcXG4gMTQzOlxcdFxcdHJldHVybiByZXQ7XFxuIDE0NDpcXHR9XFxuIDE0NTpcXHRcXG4gMTQ2OlxcdGludCBtbTgxeF9jbWRfcmVzcF9wcm9jZXNzKHN0cnVjdCBtbTgxeCAqbW9ycywgc3RydWN0IHNrX2J1ZmYgKnNrYilcXG4gMTQ3OlxcdHtcXG4gMTQ4OlxcdFxcdGludCBsZW5ndGgsIHJldCA9IC1FU1JDSDsgLyogTm8gc3VjaCBwcm9jZXNzICovXFxuIDE0OTpcXHRcXHRzdHJ1Y3QgbW04MXhfc2ticSAqY21kX3EgPSBtbTgxeF9oaWZfZ2V0X3R4X2NtZF9xdWV1ZShtb3JzKTtcXG4gMTUwOlxcdFxcdHN0cnVjdCBob3N0X2NtZF9yZXNwICpzcmNfcmVzcCA9IChzdHJ1Y3QgaG9zdF9jbWRfcmVzcCAqKShza2ItXFx1MDAzZWRhdGEpO1xcbiAxNTE6XFx0XFx0c3RydWN0IHNrX2J1ZmYgKmNtZF9za2IgPSBOVUxMO1xcbiAxNTI6XFx0XFx0c3RydWN0IGhvc3RfY21kX3Jlc3BfY2IgKnJlc3BfY2I7XFxuIDE1MzpcXHRcXHRzdHJ1Y3QgaG9zdF9jbWRfcmVzcCAqZGVzdF9yZXNwO1xcbiAxNTQ6XFx0XFx0c3RydWN0IGhvc3RfY21kX3JlcSAqcmVxO1xcbiAxNTU6XFx0XFx0dTE2IG1lc3NhZ2VfaWQgPSAwO1xcbiAxNTY6XFx0XFx0dTE2IGhvc3RfaWQgPSAwO1xcbiAxNTc6XFx0XFx0dTE2IHJlc3BfbWVzc2FnZV9pZCA9IGxlMTZfdG9fY3B1KHNyY19yZXNwLVxcdTAwM2VoZHIubWVzc2FnZV9pZCk7XFxuIDE1ODpcXHRcXHR1MTYgcmVzcF9ob3N0X2lkID0gbGUxNl90b19jcHUoc3JjX3Jlc3AtXFx1MDAzZWhkci5ob3N0X2lkKTtcXG4gMTU5OlxcdFxcdGJvb2wgaXNfbGF0ZV9yZXNwb25zZSA9IGZhbHNlO1xcbiAxNjA6XFx0XFxuIDE2MTpcXHRcXHRkZXZfZGJnKG1vcnMtXFx1MDAzZWRldiwgXFxcIkVWVCAweCUwNHg6MHglMDR4XFxcIiwgcmVzcF9tZXNzYWdlX2lkLCByZXNwX2hvc3RfaWQpO1xcbiAxNjI6XFx0XFxuIDE2MzpcXHRcXHRpZiAoIUhPU1RfQ01EX0lTX1JFU1Aoc3JjX3Jlc3ApKSB7XFxuIDE2NDpcXHRcXHRcXHRyZXQgPSBtbTgxeF9tYWNfZXZlbnRfcmVjdihtb3JzLCBza2IpO1xcbiAxNjU6XFx0XFx0XFx0Z290byBleGl0X2ZyZWU7XFxuIDE2NjpcXHRcXHR9XFxuIDE2NzpcXHRcXG4gMTY4OlxcdFxcdG11dGV4X2xvY2soXFx1MDAyNm1vcnMtXFx1MDAzZWNtZF9sb2NrKTtcXG4gMTY5OlxcdFxcbiAxNzA6XFx0XFx0Y21kX3NrYiA9IG1tODF4X3NrYnFfdHhfcGVuZGluZyhjbWRfcSk7XFxuIDE3MTpcXHRcXHRpZiAoY21kX3NrYikge1xcbiAxNzI6XFx0XFx0XFx0bW04MXhfc2ticV9wdWxsX2hkcl9wb3N0X3R4KGNtZF9za2IpO1xcbiAxNzM6XFx0XFx0XFx0cmVxID0gKHN0cnVjdCBob3N0X2NtZF9yZXEgKiljbWRfc2tiLVxcdTAwM2VkYXRhO1xcbiAxNzQ6XFx0XFx0XFx0bWVzc2FnZV9pZCA9IGxlMTZfdG9fY3B1KHJlcS1cXHUwMDNlaGRyLm1lc3NhZ2VfaWQpO1xcbiAxNzU6XFx0XFx0XFx0aG9zdF9pZCA9IGxlMTZfdG9fY3B1KHJlcS1cXHUwMDNlaGRyLmhvc3RfaWQpO1xcbiAxNzY6XFx0XFx0fVxcbiAxNzc6XFx0XFxuIDE3ODpcXHRcXHQvKlxcbiAxNzk6XFx0XFx0ICogSWYgdGhlcmUgaXMgbm8gcGVuZGluZyBjb21tYW5kIG9yIHRoZSBzZXF1ZW5jZSBJRCBkb2VzIG5vdCBtYXRjaCxcXG4gMTgwOlxcdFxcdCAqIHRoaXMgaXMgYSBsYXRlIHJlc3BvbnNlIGZvciBhIHRpbWVkIG91dCBjb21tYW5kIHdoaWNoIGhhcyBiZWVuXFxuIDE4MTpcXHRcXHQgKiBjbGVhbmVkIHVwLCBzbyBqdXN0IGZyZWUgdXAgdGhlIHJlc3BvbnNlLiBJZiBhIGNvbW1hbmQgd2FzIHJldHJpZWQsXFxuIDE4MjpcXHRcXHQgKiB0aGUgcmVzcG9uc2UgbWF5IGJlIGZyb20gdGhlIHJldHJ5IG9yIGZyb20gdGhlIG9yaWdpbmFsIGNvbW1hbmRcXG4gMTgzOlxcdFxcdCAqIChsYXRlIHJlc3BvbnNlKSBidXQgbm90IGZyb20gYm90aCBiZWNhdXNlIHRoZSBmaXJtd2FyZSB3aWxsIHNpbGVudGx5XFxuIDE4NDpcXHRcXHQgKiBkcm9wIGEgcmV0cnkgaWYgaXQgcmVjZWl2ZWQgdGhlIGluaXRpYWwgcmVxdWVzdC4gU28gYSBtaXNtYXRjaGVkXFxuIDE4NTpcXHRcXHQgKiByZXRyeSBjb3VudGVyIGlzIHRyZWF0ZWQgYXMgYSBtYXRjaGVkIGNvbW1hbmQgYW5kIHJlc3BvbnNlLlxcbiAxODY6XFx0XFx0ICovXFxuIDE4NzpcXHRcXHRpZiAoIWNtZF9za2IgfHwgbWVzc2FnZV9pZCAhPSByZXNwX21lc3NhZ2VfaWQgfHxcXG4gMTg4OlxcdFxcdCAgICAoaG9zdF9pZCBcXHUwMDI2IEhPU1RfQ01EX0hPU1RfSURfU0VRX01BU0spICE9XFxuIDE4OTpcXHRcXHRcXHQgICAgKHJlc3BfaG9zdF9pZCBcXHUwMDI2IEhPU1RfQ01EX0hPU1RfSURfU0VRX01BU0spKSB7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA3VDA1OjA2OjI2LjQ3OTAwNDk3NFoiLCJTZXEiOjMzLCJOZXN0aW5nIjozLCJUeXBlIjoibGxtIiwiTmFtZSI6Imttc2FuLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjozMzU4MzgyMTA1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyBhIFJlY2VudCBQYXRjaCoqXG5cbk9rYXksIGxldCdzIGJyZWFrIHRoaXMgZG93bi4gVGhpcyBwYXRjaCBzZWVtcyBzdHJhaWdodGZvcndhcmQgYXQgZmlyc3QgZ2xhbmNlLiBJdCdzIGFkZGluZyBhIGNydWNpYWwgYGxlbmd0aCA9IG1pbl90KGludCwgbGVuZ3RoLCBza2ItXHUwMDNlbGVuKTtgIGxpbmUgcmlnaHQgYmVmb3JlIGEgYG1lbWNweWAuIFRoZSBrZXkgaXMgd2hhdCBpdCAqcmVwbGFjZXMqLiBQcmV2aW91c2x5LCB0aGUgbGVuZ3RoIGNhbGN1bGF0aW9uIHJlbGllZCBvbiBgbGUxNl90b19jcHUoc3JjX3Jlc3AtXHUwMDNlaGRyLmxlbikgKyBzaXplb2Yoc3RydWN0IGhvc3RfY21kX2hlYWRlcilgLlxuXG5UaGUgcGVubnkgZHJvcHMuIEJlZm9yZSB0aGlzIGZpeCwgaWYgdGhlIGluY29taW5nIGBza2JgICh0aGUgbmV0d29yayBidWZmZXIpIGhhZCBhIGxlbmd0aCAoYHNrYi1cdTAwM2VsZW5gKSBzbWFsbGVyIHRoYW4gd2hhdCB0aGUgY29kZSAqdGhvdWdodCogaXQgc2hvdWxkIGJlIChgc3JjX3Jlc3AtXHUwMDNlaGRyLmxlbiArIHNpemVvZiguLi4pYCksIHRoYXQgYG1lbWNweWAgd2FzIGdvaW5nIHRvIHJlYWQgKnBhc3QqIHRoZSBlbmQgb2YgdGhlIGRhdGEgYWxsb2NhdGVkIHRvIHRoZSBgc2tiYC4gVGhhdCdzIGFuIGltbWVkaWF0ZSByZWQgZmxhZyDigJMgYW4gb3V0LW9mLWJvdW5kcyByZWFkIG9uIHRoZSBgc2tiYCdzIGJ1ZmZlciwgcHJvYmFibHkgYSBjbGFzc2ljIHNsYWIgb3IgcGFnZSBvdXQtb2YtYm91bmRzIHJlYWQsIGFuZCBLQVNBTiAodGhlIEtlcm5lbCBBZGRyZXNzIFNBTml0aXplcikgd291bGQgYmUgaGF2aW5nIGEgZmllbGQgZGF5IHdpdGggaXQuIENsYXNzaWMhXG5cbk5vdywgdG8gZnVsbHkgdW5kZXJzdGFuZCB0aGUgaW1wYWN0LCBJIG5lZWQgdG8gY2hlY2sgdGhlIGNvbnRleHQuIFdoZXJlIGlzIGBkZXN0X3Jlc3BgIGNvbWluZyBmcm9tPyBBbmQgd2hlcmUgaXMgdGhpcyBgaG9zdF9jbWRfcmVzcF9jYmAgZnVuY3Rpb24gYmVpbmcgdXNlZD8gVGltZSB0byBncmFiIHRoZSBncmVwIGFuZCBkbyBzb21lIGRpZ2dpbmcgdG8gc2VlIHdoZXJlIHRoZXNlIHZhcmlhYmxlcyBhcmUgZGVmaW5lZCBhbmQgdXNlZC4gR290dGEgY2hlY2sgd2hlcmUgYGRlc3RfcmVzcGAgbGl2ZXMgYW5kIGhvdyBpdCdzIGhhbmRsZWQgdG8gbWFrZSBzdXJlIHRoZXJlIGFyZSBubyBvdGhlciBwb3RlbnRpYWwgaXNzdWVzIGRvd25zdHJlYW0uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQ5OTUsIk91dHB1dFRva2VucyI6MTcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMjksIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0wN1QwNTowNjoyOS44MzczOTE2NjlaIiwiU2VxIjozNCwiTmVzdGluZyI6MywiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI1Nzk5ODQ2MjgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiZGVzdF9yZXNwXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29tbWFuZC5jPTI3PXN0cnVjdCBob3N0X2NtZF9yZXNwX2NiIHtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29tbWFuZC5jLTI5LVxcdHUzMiBsZW5ndGg7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb21tYW5kLmM6MzA6XFx0c3RydWN0IGhvc3RfY21kX3Jlc3AgKmRlc3RfcmVzcDtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuYy0zMS19O1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb21tYW5kLmM9MzM9c3RhdGljIGludCBtbTgxeF9jbWRfdHgoc3RydWN0IG1tODF4ICptb3JzLCBzdHJ1Y3QgaG9zdF9jbWRfcmVzcCAqcmVzcCxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29tbWFuZC5jLTcyLVxcdFxcdHJlc3BfY2ItXFx1MDAzZWxlbmd0aCA9IGxlbmd0aDtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuYzo3MzpcXHRcXHRyZXNwX2NiLVxcdTAwM2VkZXN0X3Jlc3AgPSByZXNwO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29tbWFuZC5jLTc0LVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb21tYW5kLmM9MTQ2PWludCBtbTgxeF9jbWRfcmVzcF9wcm9jZXNzKHN0cnVjdCBtbTgxeCAqbW9ycywgc3RydWN0IHNrX2J1ZmYgKnNrYilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29tbWFuZC5jLTE1Mi1cXHRzdHJ1Y3QgaG9zdF9jbWRfcmVzcF9jYiAqcmVzcF9jYjtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuYzoxNTM6XFx0c3RydWN0IGhvc3RfY21kX3Jlc3AgKmRlc3RfcmVzcDtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuYy0xNTQtXFx0c3RydWN0IGhvc3RfY21kX3JlcSAqcmVxO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb21tYW5kLmMtMjA1LVxcdGxlbmd0aCA9IHJlc3BfY2ItXFx1MDAzZWxlbmd0aDtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuYzoyMDY6XFx0ZGVzdF9yZXNwID0gcmVzcF9jYi1cXHUwMDNlZGVzdF9yZXNwO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29tbWFuZC5jOjIwNzpcXHRpZiAobGVuZ3RoIFxcdTAwM2U9IHNpemVvZihzdHJ1Y3QgaG9zdF9jbWRfcmVzcCkgXFx1MDAyNlxcdTAwMjYgZGVzdF9yZXNwKSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb21tYW5kLmMtMjA4LVxcdFxcdHJldCA9IDA7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuYy0yMTItXFx0XFx0bGVuZ3RoID0gbWluX3QoaW50LCBsZW5ndGgsIHNrYi1cXHUwMDNlbGVuKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuYzoyMTM6XFx0XFx0bWVtY3B5KGRlc3RfcmVzcCwgc3JjX3Jlc3AsIGxlbmd0aCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb21tYW5kLmMtMjE0LVxcdH0gZWxzZSB7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA3VDA1OjA2OjMyLjQxNzM4NTA1NloiLCJTZXEiOjM1LCJOZXN0aW5nIjozLCJUeXBlIjoibGxtIiwiTmFtZSI6Imttc2FuLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjoxNzc1MDMzNjUxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgc3VtbWFyeSwgYXMgaWYgSSB3ZXJlIHRoaW5raW5nIHRoZXNlIHRob3VnaHRzOlxuXG4qKkFuYWx5emluZyB0aGUgUmVzcG9uc2UgSGFuZGxpbmcgaW4gbW04MXhfY21kX3R4KipcblxuT2theSwgdGltZSB0byBkaWcgaW50byBgbW04MXhfY21kX3R4YC4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgZXhhY3RseSBob3cgdGhlIGByZXNwYCB2YXJpYWJsZSBpcyBhbGxvY2F0ZWQgYW5kIHBhc3NlZCBhcm91bmQgd2l0aGluIHRoaXMgZnVuY3Rpb24uIFRoZSBkZXRhaWxzIG9mIHJlc3BvbnNlIGhhbmRsaW5nIGFyZSBjcnVjaWFsLCBwYXJ0aWN1bGFybHkgaW4gdGhpcyBzdWJzeXN0ZW0sIGFuZCBhIHBvdGVudGlhbCBidWcgY291bGQgYmUgbHVya2luZyBoZXJlLiBJJ2xsIG5lZWQgdG8gdHJhY2UgdGhlIGFsbG9jYXRpb24sIGFueSBtb2RpZmljYXRpb25zIG9yIGNvcGllcywgYW5kIHVsdGltYXRlbHksIGhvdyBpdCdzIGhhbmRsZWQgb24gcmV0dXJuLiBUaGlzIGxldmVsIG9mIHNjcnV0aW55IGlzIGtleSB0byBlbnN1cmluZyByb2J1c3QgY29tbWFuZCB0cmFuc21pc3Npb24gYW5kIHJlY2VwdGlvbiB3aXRoaW4gdGhlIGRyaXZlci4gTGV0J3Mgc2VlIGhvdyB0aGV5J3ZlIGltcGxlbWVudGVkIGl0Li4uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjYyNjIsIk91dHB1dFRva2VucyI6NDUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyNSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0wN1QwNTowNjozNC4xOTI0MjEwMDdaIiwiU2VxIjozNiwiTmVzdGluZyI6MywiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTM0NzgwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29tbWFuZC5jXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDMzLFxuICBcIkxpbmVDb3VudFwiOiA1NVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgIDMzOlxcdHN0YXRpYyBpbnQgbW04MXhfY21kX3R4KHN0cnVjdCBtbTgxeCAqbW9ycywgc3RydWN0IGhvc3RfY21kX3Jlc3AgKnJlc3AsXFxuICAzNDpcXHRcXHRcXHRcXHRzdHJ1Y3QgaG9zdF9jbWRfcmVxICpyZXEsIHUzMiBsZW5ndGgsIHUzMiB0aW1lb3V0KVxcbiAgMzU6XFx0e1xcbiAgMzY6XFx0XFx0aW50IGNtZF9sZW47XFxuICAzNzpcXHRcXHRpbnQgcmV0ID0gMDtcXG4gIDM4OlxcdFxcdHUxNiBob3N0X2lkO1xcbiAgMzk6XFx0XFx0aW50IHJldHJ5ID0gMDtcXG4gIDQwOlxcdFxcdHVuc2lnbmVkIGxvbmcgd2FpdF9yZXQgPSAwO1xcbiAgNDE6XFx0XFx0c3RydWN0IHNrX2J1ZmYgKnNrYjtcXG4gIDQyOlxcdFxcdHN0cnVjdCBtbTgxeF9za2JxICpjbWRfcSA9IG1tODF4X2hpZl9nZXRfdHhfY21kX3F1ZXVlKG1vcnMpO1xcbiAgNDM6XFx0XFx0c3RydWN0IGhvc3RfY21kX3Jlc3BfY2IgKnJlc3BfY2I7XFxuICA0NDpcXHRcXHRERUNMQVJFX0NPTVBMRVRJT05fT05TVEFDSyhjbWRfY29tcCk7XFxuICA0NTpcXHRcXG4gIDQ2OlxcdFxcdEJVSUxEX0JVR19PTihzaXplb2Yoc3RydWN0IGhvc3RfY21kX3Jlc3BfY2IpIFxcdTAwM2VcXG4gIDQ3OlxcdFxcdFxcdCAgICAgSUVFRTgwMjExX1RYX0lORk9fRFJJVkVSX0RBVEFfU0laRSk7XFxuICA0ODpcXHRcXG4gIDQ5OlxcdFxcdGNtZF9sZW4gPSBzaXplb2YoKnJlcSkgKyBsZTE2X3RvX2NwdShyZXEtXFx1MDAzZWhkci5sZW4pO1xcbiAgNTA6XFx0XFx0cmVxLVxcdTAwM2VoZHIuZmxhZ3MgPSBjcHVfdG9fbGUxNihIT1NUX0NNRF9UWVBFX1JFUSk7XFxuICA1MTpcXHRcXG4gIDUyOlxcdFxcdG11dGV4X2xvY2soXFx1MDAyNm1vcnMtXFx1MDAzZWNtZF93YWl0KTtcXG4gIDUzOlxcdFxcdG1vcnMtXFx1MDAzZWNtZF9zZXErKztcXG4gIDU0OlxcdFxcdGlmIChtb3JzLVxcdTAwM2VjbWRfc2VxIFxcdTAwM2UgSE9TVF9DTURfSE9TVF9JRF9TRVFfTUFYKVxcbiAgNTU6XFx0XFx0XFx0bW9ycy1cXHUwMDNlY21kX3NlcSA9IDE7XFxuICA1NjpcXHRcXHRob3N0X2lkID0gbW9ycy1cXHUwMDNlY21kX3NlcSBcXHUwMDNjXFx1MDAzYyBIT1NUX0NNRF9IT1NUX0lEX1NFUV9TSElGVDtcXG4gIDU3OlxcdFxcbiAgNTg6XFx0XFx0bW04MXhfcHNfZGlzYWJsZShtb3JzKTtcXG4gIDU5OlxcdFxcbiAgNjA6XFx0XFx0ZG8ge1xcbiAgNjE6XFx0XFx0XFx0cmVxLVxcdTAwM2VoZHIuaG9zdF9pZCA9IGNwdV90b19sZTE2KGhvc3RfaWQgfCByZXRyeSk7XFxuICA2MjpcXHRcXG4gIDYzOlxcdFxcdFxcdHNrYiA9IG1tODF4X3NrYnFfYWxsb2Nfc2tiKGNtZF9xLCBjbWRfbGVuKTtcXG4gIDY0OlxcdFxcdFxcdGlmICghc2tiKSB7XFxuICA2NTpcXHRcXHRcXHRcXHRyZXQgPSAtRU5PTUVNO1xcbiAgNjY6XFx0XFx0XFx0XFx0YnJlYWs7XFxuICA2NzpcXHRcXHRcXHR9XFxuICA2ODpcXHRcXG4gIDY5OlxcdFxcdFxcdG1lbWNweShza2ItXFx1MDAzZWRhdGEsIHJlcSwgY21kX2xlbik7XFxuICA3MDpcXHRcXHRcXHRyZXNwX2NiID0gKHN0cnVjdCBob3N0X2NtZF9yZXNwX2NiICopSUVFRTgwMjExX1NLQl9DQihza2IpXFxuICA3MTpcXHRcXHRcXHRcXHRcXHQgIC1cXHUwMDNlZHJpdmVyX2RhdGE7XFxuICA3MjpcXHRcXHRcXHRyZXNwX2NiLVxcdTAwM2VsZW5ndGggPSBsZW5ndGg7XFxuICA3MzpcXHRcXHRcXHRyZXNwX2NiLVxcdTAwM2VkZXN0X3Jlc3AgPSByZXNwO1xcbiAgNzQ6XFx0XFxuICA3NTpcXHRcXHRcXHRkZXZfZGJnKG1vcnMtXFx1MDAzZWRldiwgXFxcIkNNRCAweCUwNHg6JTA0eFxcXCIsXFxuICA3NjpcXHRcXHRcXHRcXHRsZTE2X3RvX2NwdShyZXEtXFx1MDAzZWhkci5tZXNzYWdlX2lkKSxcXG4gIDc3OlxcdFxcdFxcdFxcdGxlMTZfdG9fY3B1KHJlcS1cXHUwMDNlaGRyLmhvc3RfaWQpKTtcXG4gIDc4OlxcdFxcbiAgNzk6XFx0XFx0XFx0bXV0ZXhfbG9jayhcXHUwMDI2bW9ycy1cXHUwMDNlY21kX2xvY2spO1xcbiAgODA6XFx0XFx0XFx0bW9ycy1cXHUwMDNlY21kX2NvbXAgPSBcXHUwMDI2Y21kX2NvbXA7XFxuICA4MTpcXHRcXHRcXHRpZiAocmV0cnkgXFx1MDAzZSAwKVxcbiAgODI6XFx0XFx0XFx0XFx0cmVpbml0X2NvbXBsZXRpb24oXFx1MDAyNmNtZF9jb21wKTtcXG4gIDgzOlxcdFxcdFxcdHRpbWVvdXQgPSB0aW1lb3V0ID8gdGltZW91dCA6IEhPU1RfQ01EX0RFRkFVTFRfVElNRU9VVF9NUztcXG4gIDg0OlxcdFxcdFxcdHJldCA9IG1tODF4X3NrYnFfc2tiX3R4KGNtZF9xLCBcXHUwMDI2c2tiLCBOVUxMLFxcbiAgODU6XFx0XFx0XFx0XFx0XFx0XFx0TU04MVhfU0tCX0NIQU5fQ09NTUFORCk7XFxuICA4NjpcXHRcXHRcXHRtdXRleF91bmxvY2soXFx1MDAyNm1vcnMtXFx1MDAzZWNtZF9sb2NrKTtcXG4gIDg3OlxcdFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wN1QwNTowNjozNC4xOTI1NjQwNDdaIiwiU2VxIjozNywiTmVzdGluZyI6MywiVHlwZSI6ImxsbSIsIk5hbWUiOiJrbXNhbi1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6NTIzOTY4NjExNCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHRob3VnaHQgcHJvY2VzcywgYXMgaWYgSSB3ZXJlIGFuYWx5emluZyB0aGlzIGNvZGU6XG5cbioqQW5hbHl6aW5nIHRoZSBgbW04MXhfY21kX3R4YCBGdW5jdGlvbioqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IGhvdyB0aGlzIGBtbTgxeF9jbWRfdHhgIGZ1bmN0aW9uIGlzIGJlaW5nIHVzZWQuIFRoZSBpbXBvcnRhbnQgcGllY2UgaGVyZSBpcyB0aGF0IGNhbGxlcnMgYXJlIHBhc3NpbmcgYSBgcmVzcGAgYXJndW1lbnQuIFRoYXQncyBpbW1lZGlhdGVseSBpbnRlcmVzdGluZzsgdGhhdCBgcmVzcGAgcHJvYmFibHkgaG9sZHMgc29tZSBzb3J0IG9mIHJlc3BvbnNlIGRhdGEgb3IgZXJyb3IgaW5mb3JtYXRpb24sIGFuZCBpdCdzIGJlaW5nICpwYXNzZWQqIGluLCB3aGljaCBzdWdnZXN0cyBpdCBtaWdodCBiZSBtb2RpZmllZCBieSB0aGUgZnVuY3Rpb24sIG9yIG1pZ2h0IGJlIHVzZWQgdG8gcmV0cmlldmUgZGF0YSBmcm9tIHRoZSBjYWxsLiBOb3csIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBjYWxsaW5nIGNvbnRleHRzLiBBIGBncmVwYCBmb3IgYG1tODF4X2NtZF90eGAgd2lsbCBxdWlja2x5IHJldmVhbCBhbGwgdGhlIHBsYWNlcyBpbiB0aGUgY29kZWJhc2Ugd2hlcmUgdGhpcyBmdW5jdGlvbiBpcyBiZWluZyBpbnZva2VkLiBUaGF0J2xsIHNob3cgbWUgdGhlIGRpZmZlcmVudCBzY2VuYXJpb3Mgd2hlcmUgaXQncyB1c2VkLCB0aGUgZGF0YSBpdCdzIHdvcmtpbmcgd2l0aCwgYW5kIHRoZSByb2xlcyBpdHMgcGxheWluZy4gVGhhdCB3aWxsIGluZm9ybSBhIGJldHRlciB1bmRlcnN0YW5kaW5nIG9mIHRoZSBjb2RlIGluIGFjdGlvbi5cblxuXG4iLCJJbnB1dFRva2VucyI6NzQxOCwiT3V0cHV0VG9rZW5zIjoyMiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjQxLCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMDdUMDU6MDY6MzkuNDMyMjUyMTMxWiIsIlNlcSI6MzgsIk5lc3RpbmciOjMsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyMTg5MDA4ODY0LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm1tODF4X2NtZF90eFwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuYz0yNz1zdHJ1Y3QgaG9zdF9jbWRfcmVzcF9jYiB7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuYy0zMi1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuYzozMzpzdGF0aWMgaW50IG1tODF4X2NtZF90eChzdHJ1Y3QgbW04MXggKm1vcnMsIHN0cnVjdCBob3N0X2NtZF9yZXNwICpyZXNwLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29tbWFuZC5jLTM0LVxcdFxcdFxcdHN0cnVjdCBob3N0X2NtZF9yZXEgKnJlcSwgdTMyIGxlbmd0aCwgdTMyIHRpbWVvdXQpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuYz0yMzM9aW50IG1tODF4X2NtZF9zdGFfc3RhdGUoc3RydWN0IG1tODF4ICptb3JzLCBzdHJ1Y3QgbW04MXhfdmlmICptb3JzX3ZpZiwgdTE2IGFpZCxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29tbWFuZC5jLTI0Ni1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuYzoyNDc6XFx0cmV0dXJuIG1tODF4X2NtZF90eChtb3JzLCBOVUxMLCAoc3RydWN0IGhvc3RfY21kX3JlcSAqKVxcdTAwMjZyZXEsIDAsIDApO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29tbWFuZC5jLTI0OC19XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuYz0yNTA9aW50IG1tODF4X2NtZF9hZGRfaWYoc3RydWN0IG1tODF4ICptb3JzLCB1MTYgKnZpZl9pZCwgY29uc3QgdTggKmFkZHIsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuYy0yNzEtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb21tYW5kLmM6MjcyOlxcdHJldCA9IG1tODF4X2NtZF90eChtb3JzLCAoc3RydWN0IGhvc3RfY21kX3Jlc3AgKilcXHUwMDI2cmVzcCxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuYy0yNzMtXFx0XFx0XFx0ICAgKHN0cnVjdCBob3N0X2NtZF9yZXEgKilcXHUwMDI2cmVxLCBzaXplb2YocmVzcCksIDApO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb21tYW5kLmM9MjgwPWludCBtbTgxeF9jbWRfZ2V0X2NhcGFiaWxpdGllcyhzdHJ1Y3QgbW04MXggKm1vcnMsIHUxNiB2aWZfaWQsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuYy0yODktXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb21tYW5kLmM6MjkwOlxcdHJldCA9IG1tODF4X2NtZF90eChtb3JzLCAoc3RydWN0IGhvc3RfY21kX3Jlc3AgKilcXHUwMDI2cnNwLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29tbWFuZC5jLTI5MS1cXHRcXHRcXHQgICAoc3RydWN0IGhvc3RfY21kX3JlcSAqKVxcdTAwMjZyZXEsIHNpemVvZihyc3ApLCAwKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29tbWFuZC5jPTMwOT1pbnQgbW04MXhfY21kX2dldF9tYXhfdHhwb3dlcihzdHJ1Y3QgbW04MXggKm1vcnMsIHMzMiAqb3V0X3Bvd2VyX21ibSlcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29tbWFuZC5jLTMxNi1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuYzozMTc6XFx0cmV0ID0gbW04MXhfY21kX3R4KG1vcnMsIChzdHJ1Y3QgaG9zdF9jbWRfcmVzcCAqKVxcdTAwMjZyZXNwLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29tbWFuZC5jLTMxOC1cXHRcXHRcXHQgICAoc3RydWN0IGhvc3RfY21kX3JlcSAqKVxcdTAwMjZyZXEsIHNpemVvZihyZXNwKSwgMCk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuYz0zMjU9aW50IG1tODF4X2NtZF9od19zY2FuKHN0cnVjdCBtbTgxeCAqbW9ycywgc3RydWN0IG1tODF4X2h3X3NjYW5fcGFyYW1zICpwYXJhbXMsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuYy0zNTktXFx0cmVxLVxcdTAwM2VoZHIubGVuID0gY3B1X3RvX2xlMTYoKHUxNikoKGJ1ZiAtICh1OCAqKXJlcSkgLSBzaXplb2YocmVxLVxcdTAwM2VoZHIpKSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb21tYW5kLmM6MzYwOlxcdHJldCA9IG1tODF4X2NtZF90eChtb3JzLCBOVUxMLCAoc3RydWN0IGhvc3RfY21kX3JlcSAqKXJlcSwgMCwgMCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb21tYW5kLmMtMzYxLVxcdGtmcmVlKHJlcSk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuYz0zNjY9aW50IG1tODF4X2NtZF9zZXRfdHhwb3dlcihzdHJ1Y3QgbW04MXggKm1vcnMsIHMzMiAqb3V0X3Bvd2VyX21ibSxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29tbWFuZC5jLTM3NS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuYzozNzY6XFx0cmV0ID0gbW04MXhfY21kX3R4KG1vcnMsIChzdHJ1Y3QgaG9zdF9jbWRfcmVzcCAqKVxcdTAwMjZyZXNwLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29tbWFuZC5jLTM3Ny1cXHRcXHRcXHQgICAoc3RydWN0IGhvc3RfY21kX3JlcSAqKVxcdTAwMjZyZXEsIHNpemVvZihyZXNwKSwgMCk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuYz0zODQ9aW50IG1tODF4X2NtZF9zZXRfY2hhbm5lbChzdHJ1Y3QgbW04MXggKm1vcnMsIHUzMiBvcF9jaGFuX2ZyZXFfaHosXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuYy0zOTgtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb21tYW5kLmM6Mzk5OlxcdHJldCA9IG1tODF4X2NtZF90eChtb3JzLCAoc3RydWN0IGhvc3RfY21kX3Jlc3AgKilcXHUwMDI2cmVzcCxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuYy00MDAtXFx0XFx0XFx0ICAgKHN0cnVjdCBob3N0X2NtZF9yZXEgKilcXHUwMDI2cmVxLCBzaXplb2YocmVzcCksIDApO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb21tYW5kLmM9NDA3PWludCBtbTgxeF9jbWRfZGlzYWJsZV9rZXkoc3RydWN0IG1tODF4ICptb3JzLCBzdHJ1Y3QgbW04MXhfdmlmICptb3JzX3ZpZixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29tbWFuZC5jLTQxOS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuYzo0MjA6XFx0cmV0dXJuIG1tODF4X2NtZF90eChtb3JzLCBOVUxMLCAoc3RydWN0IGhvc3RfY21kX3JlcSAqKVxcdTAwMjZyZXEsIDAsIDApO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29tbWFuZC5jLTQyMS19XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuYz00MjM9aW50IG1tODF4X2NtZF9pbnN0YWxsX2tleShzdHJ1Y3QgbW04MXggKm1vcnMsIHN0cnVjdCBtbTgxeF92aWYgKm1vcnNfdmlmLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb21tYW5kLmMtNDQ2LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29tbWFuZC5jOjQ0NzpcXHRyZXQgPSBtbTgxeF9jbWRfdHgobW9ycywgKHN0cnVjdCBob3N0X2NtZF9yZXNwICopXFx1MDAyNnJlc3AsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb21tYW5kLmMtNDQ4LVxcdFxcdFxcdCAgIChzdHJ1Y3QgaG9zdF9jbWRfcmVxICopXFx1MDAyNnJlcSwgc2l6ZW9mKHJlc3ApLCAwKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29tbWFuZC5jPTQ1OD1pbnQgbW04MXhfY21kX2NmZ19tdWx0aWNhc3RfZmlsdGVyKHN0cnVjdCBtbTgxeCAqbW9ycyxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29tbWFuZC5jLTQ3NS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuYzo0NzY6XFx0cmV0ID0gbW04MXhfY21kX3R4KG1vcnMsIE5VTEwsIChzdHJ1Y3QgaG9zdF9jbWRfcmVxICopcmVxLCAwLCAwKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuYy00NzctXFx0a2ZyZWUocmVxKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29tbWFuZC5jPTQ4MT1pbnQgbW04MXhfY21kX2NmZ19ic3Moc3RydWN0IG1tODF4ICptb3JzLCB1MTYgdmlmX2lkLCB1MTYgYmVhY29uX2ludCxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29tbWFuZC5jLTQ5MC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuYzo0OTE6XFx0cmV0dXJuIG1tODF4X2NtZF90eChtb3JzLCBOVUxMLCAoc3RydWN0IGhvc3RfY21kX3JlcSAqKVxcdTAwMjZyZXEsIDAsIDApO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29tbWFuZC5jLTQ5Mi19XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuYz00OTQ9aW50IG1tODF4X2NtZF9jb25maWdfYmVhY29uX3RpbWVyKHN0cnVjdCBtbTgxeCAqbW9ycywgdm9pZCAqbW04MXhfdmlmLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb21tYW5kLmMtNTAzLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29tbWFuZC5jOjUwNDpcXHRyZXR1cm4gbW04MXhfY21kX3R4KG1vcnMsIE5VTEwsIChzdHJ1Y3QgaG9zdF9jbWRfcmVxICopXFx1MDAyNnJlcSwgMCwgMCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb21tYW5kLmMtNTA1LX1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29tbWFuZC5jPTUwNz1pbnQgbW04MXhfY21kX3NldF9wcyhzdHJ1Y3QgbW04MXggKm1vcnMsIGJvb2wgZW5hYmxlZClcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29tbWFuZC5jLTUxMy1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuYzo1MTQ6XFx0cmV0dXJuIG1tODF4X2NtZF90eChtb3JzLCBOVUxMLCAoc3RydWN0IGhvc3RfY21kX3JlcSAqKVxcdTAwMjZyZXEsIDAsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb21tYW5kLmMtNTE1LVxcdFxcdFxcdCAgICBIT1NUX0NNRF9QT1dFUlNBVkVfVElNRU9VVF9NUyk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuYz01MTg9aW50IG1tODF4X2NtZF9jZmdfcW9zKHN0cnVjdCBtbTgxeCAqbW9ycywgc3RydWN0IG1tODF4X3F1ZXVlX3BhcmFtcyAqcGFyYW1zKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb21tYW5kLmMtNTI5LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29tbWFuZC5jOjUzMDpcXHRyZXR1cm4gbW04MXhfY21kX3R4KG1vcnMsIE5VTEwsIChzdHJ1Y3QgaG9zdF9jbWRfcmVxICopXFx1MDAyNnJlcSwgMCwgMCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb21tYW5kLmMtNTMxLX1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29tbWFuZC5jPTUzMz1pbnQgbW04MXhfY21kX3JtX2lmKHN0cnVjdCBtbTgxeCAqbW9ycywgdTE2IHZpZl9pZClcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29tbWFuZC5jLTUzOC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuYzo1Mzk6XFx0cmV0dXJuIG1tODF4X2NtZF90eChtb3JzLCBOVUxMLCAoc3RydWN0IGhvc3RfY21kX3JlcSAqKVxcdTAwMjZyZXEsIDAsIDApO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29tbWFuZC5jLTU0MC19XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuYz01NDI9aW50IG1tODF4X2NtZF9zZXRfZnJhZ190aHJlc2hvbGQoc3RydWN0IG1tODF4ICptb3JzLCB1MzIgZnJhZ190aHJlc2hvbGQpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuYy01NTAtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb21tYW5kLmM6NTUxOlxcdHJldHVybiBtbTgxeF9jbWRfdHgobW9ycywgTlVMTCwgKHN0cnVjdCBob3N0X2NtZF9yZXEgKilcXHUwMDI2cmVxLCAwLCAwKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuYy01NTItfVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb21tYW5kLmM9NTU0PWludCBtbTgxeF9jbWRfZ2V0X2Rpc2FibGVkX2NoYW5uZWxzKFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb21tYW5kLmMtNTYxLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29tbWFuZC5jOjU2MjpcXHRyZXR1cm4gbW04MXhfY21kX3R4KG1vcnMsIChzdHJ1Y3QgaG9zdF9jbWRfcmVzcCAqKXJlc3AsIFxcdTAwMjZyZXEsIHJlc3BfbGVuLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29tbWFuZC5jLTU2My1cXHRcXHRcXHQgICAgMCk7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA3VDA1OjA2OjQxLjYyMTI2NDgyNVoiLCJTZXEiOjM5LCJOZXN0aW5nIjozLCJUeXBlIjoibGxtIiwiTmFtZSI6Imttc2FuLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjo1OTQzMDk5MDEyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyBhIFBvdGVudGlhbCBPdXQtb2YtQm91bmRzIFJlYWQgaW4gYG1tODF4X2NtZF9yZXNwX3Byb2Nlc3NgKipcblxuT2theSwgbGV0J3MgYnJlYWsgdGhpcyBkb3duLiBNeSBjb25jZXJuIGhlcmUgaXMgYSBwb3RlbnRpYWwgb3V0LW9mLWJvdW5kcyByZWFkIHZ1bG5lcmFiaWxpdHkgd2l0aGluIHRoZSBgbW04MXhfY21kX3Jlc3BfcHJvY2Vzc2AgZnVuY3Rpb24uIFNwZWNpZmljYWxseSwgd2hlbiBhIHJlc3BvbnNlIFNLQiAoc29ja2V0IGJ1ZmZlcikgY29tZXMgaW4gZnJvbSB0aGUgaGFyZHdhcmUvZmlybXdhcmUsIHRoZSBjb2RlIGNhc3RzIHRoZSBTS0IncyBkYXRhIHRvIGEgYGhvc3RfY21kX3Jlc3BgIHN0cnVjdHVyZS4gVGhlIHBvdGVudGlhbCBwcm9ibGVtIGFyaXNlcyBpZiB0aGUgY2xhaW1lZCBsZW5ndGggKGBzcmNfcmVzcC1cdTAwM2VoZHIubGVuYCkgaW4gdGhhdCByZXNwb25zZSBzdHJ1Y3R1cmUgZXhjZWVkcyB0aGUgYWN0dWFsIHNpemUgb2YgdGhlIFNLQidzIGRhdGEgKGBza2ItXHUwMDNlbGVuYCkuIFdpdGhvdXQgYSBjaGVjayBsaWtlIGBsZW5ndGggPSBtaW5fdChpbnQsIGxlbmd0aCwgc2tiLVx1MDAzZWxlbik7YCwgdGhlIGBtZW1jcHlgIG9wZXJhdGlvbiB3b3VsZCBhdHRlbXB0IHRvIHJlYWQgcGFzdCB0aGUgZW5kIG9mIHRoZSBTS0IncyBhbGxvY2F0ZWQgYnVmZmVyLCBsZWFkaW5nIHRvIGFuIG91dC1vZi1ib3VuZHMgcmVhZC4gVGhpcyBpcyAqZGVmaW5pdGVseSogYW4gb3V0LW9mLWJvdW5kcyByZWFkIGJ1ZyBvbiBhbiBTS0IgYnVmZmVyLlxuXG5Ob3csIGxldCdzIHRoaW5rIGFib3V0IEtNU0FOIChLZXJuZWwgTWVtb3J5IFNhbml0aXplcikuIERvZXMgdGhpcyBjaGFuZ2UgaW50cm9kdWNlIGFueSB1bmluaXRpYWxpemVkIG1lbW9yeSByaXNrcz8gSSBuZWVkIHRvIGJlIHRob3JvdWdoLlxuXG4qICAgKipVbmluaXRpYWxpemVkIG1lbW9yeToqKiBObywgdGhpcyBwYXRjaCBhY3R1YWxseSAqcHJldmVudHMqIHJlYWRpbmcgcGFzdCB0aGUgYm91bmRzIG9mIHRoZSBTS0IuIEl0IHJlZHVjZXMgdGhlIGNvcHkgbGVuZ3RoIHRvIHJlc3BlY3QgdGhlIGJ1ZmZlcidzIHNpemUuIE5vIG5ldyB1bmluaXRpYWxpemVkIG1lbW9yeSBpcyBpbnRyb2R1Y2VkLlxuKiAgICoqVXNlciBzcGFjZSBleHBvc3VyZToqKiBUaGlzIGlzIGFuIGludGVybmFsIGNvbW1hbmQgcmVzcG9uc2UgaGFuZGxpbmcgcGF0aCB3aXRoaW4gdGhlIGtlcm5lbC4gVGhlIGNvcGllZCBkYXRhIGlzbid0IGJlaW5nIGRpcmVjdGx5IHNlbnQgdG8gdXNlciBzcGFjZS4gSXQgaXMgb25seSBwYXNzZWQgYmV0d2VlbiBrZXJuZWwgY29tbWFuZCBzdHJ1Y3R1cmVzLiBObyB1c2VyIHNwYWNlIGV4cG9zdXJlIGhlcmUuXG4qICAgKipVbmluaXRpYWxpemVkIHZhcmlhYmxlczoqKiBObywgdGhlIGZpeCBkb2Vzbid0IGRlcGVuZCBvbiB1bmluaXRpYWxpemVkIHZhcmlhYmxlcy5cbiogICAqKkV4cG9zZWQgdW5pbml0aWFsaXplZCBmaWVsZHMvcGFkZGluZzoqKiBEZWZpbml0ZWx5IG5vdC4gVGhpcyBwYXRjaCBwcmV2ZW50cyByZWFkcyBvZiB1bmluaXRpYWxpemVkIG1lbW9yeSwgaXQgZG9lcyBub3QgY3JlYXRlIGFueS5cblxuQWxyaWdodCwgbGV0J3MgbWV0aG9kaWNhbGx5IGNoZWNrIHRoZSBOZWVkc0tNU0FOIGNyaXRlcmlhOlxuXG4xLiAgKipLZXJuZWwgc3RydWN0dXJlcyB0byB1c2VyIHNwYWNlOioqIE5vdCBhcHBsaWNhYmxlLlxuMi4gICoqQ29uZGl0aW9uYWwgbG9naWMgb24gdW5pbml0aWFsaXplZCB2YXJpYWJsZXM6KiogTm90IGFwcGxpY2FibGUuXG4zLiAgKipDb21wbGV4IGRhdGEgc3RydWN0dXJlcyB3aXRoIHVuaW5pdGlhbGl6ZWQgZmllbGRzOioqIE5vdCBhcHBsaWNhYmxlLlxuNC4gICoqQm91bmRzIGNoZWNrcyBleHBvc2luZyB1bmluaXRpYWxpemVkIGJ5dGVzOioqIE5vdCBhcHBsaWNhYmxlLCBpdCAqcHJldmVudHMqIG91dC1vZi1ib3VuZHMgcmVhZHMsIHdoaWNoIGFyZSBhIGRpZmZlcmVudCB0aGluZy5cblxuR2l2ZW4gYWxsIG9mIHRoYXQsIHRoaXMgYnVnIGZhbGxzIHNxdWFyZWx5IHdpdGhpbiB0aGUgY2FwYWJpbGl0aWVzIG9mIEtBU0FOIChLZXJuZWwgQWRkcmVzcyBTYW5pdGl6ZXIpLiBLQVNBTiBkZXRlY3RzIG91dC1vZi1ib3VuZHMgYWNjZXNzZXMuIEtNU0FOJ3MgcHVycG9zZSwgZGV0ZWN0aW5nIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHJlYWRzLCBpcyBub3QgZGlyZWN0bHkgcmVsZXZhbnQgaGVyZS4gS01TQU4gaXMgZm9jdXNlZCBvbiB0aGluZ3MgbGlrZSBkYXRhIGxlYWthZ2UgdG8gdXNlciBzcGFjZSwgd2hpY2ggaXNuJ3QgdGhlIGlzc3VlLiBLQVNBTiBpcyB0aGUgdG9vbCBmb3IgdGhpcyBwYXJ0aWN1bGFyIGpvYiwgdGhlcmVmb3JlIE5lZWRzS01TQU4gc2hvdWxkIGJlIGZhbHNlLlxuXG5MZXQncyBkbyBhIHNhbml0eSBjaGVjayBvbiB0aGUgS01TQU5SZWFzb25pbmcuIEknbGwgY29udHJhc3QgS01TQU4ncyBhbmQgS0FTQU4ncyBhcHBsaWNhYmlsaXR5OlxuXG4qICAgKipLQVNBTjoqKiBPdXQtb2YtYm91bmRzIG1lbW9yeSBhY2Nlc3NlcyBhbmQgYnVmZmVyIG92ZXJmbG93cy4gVGhpcyBidWcgaXMgYW4gb3V0LW9mLWJvdW5kcyByZWFkIGZyb20gdGhlIFNLQiBkYXRhLlxuKiAgICoqS01TQU46KiogVW5pbml0aWFsaXplZCBtZW1vcnkgcmVhZHMgYW5kIGluZm9ybWF0aW9uIGxlYWtzIHRvIHVzZXIgc3BhY2UuIFRoaXMgcGF0Y2ggZG9lc24ndCBpbnRyb2R1Y2UgYW55IG5ldyB1bmluaXRpYWxpemVkIG1lbW9yeSB2dWxuZXJhYmlsaXRpZXMuXG5cblNvLCBJJ20gY29uZmlkZW50LiBLQVNBTiBpcyB0aGUgYXBwcm9wcmlhdGUgdG9vbCBoZXJlLiBObyBuZWVkIGZvciBLTVNBTiBmdXp6aW5nLiBMZXQncyBpbnZva2UgYHNldC1yZXN1bHRzYC5cblxuXG4iLCJJbnB1dFRva2VucyI6MTA3NjIsIk91dHB1dFRva2VucyI6MTU2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NjU2LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA3VDA1OjA2OjQ3LjU2NDM2NjkxN1oiLCJTZXEiOjQwLCJOZXN0aW5nIjozLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI0MDYwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggZml4ZXMgYW4gb3V0LW9mLWJvdW5kcyBtZW1vcnkgcmVhZCBpbiBtbTgxeF9jbWRfcmVzcF9wcm9jZXNzKCkgYnkgY2FwcGluZyB0aGUgcmVzcG9uc2UgY29weSBsZW5ndGggdG8gc2tiLVxcdTAwM2VsZW4gKHByZXZlbnRpbmcgbWVtY3B5IGZyb20gcmVhZGluZyBwYXN0IHRoZSBlbmQgb2YgdGhlIHJlY2VpdmVkIHNrYiBidWZmZXIgaWYgdGhlIHJlc3BvbnNlIGhlYWRlciBsZW5ndGggY2xhaW1zIGEgbGFyZ2VyIHNpemUpLiBUaGlzIGlzc3VlIGlzIGEgY2xhc3NpYyBidWZmZXIgb3V0LW9mLWJvdW5kcyByZWFkIHdoaWNoIGlzIGRpcmVjdGx5IGRldGVjdGVkIGJ5IEtBU0FOLiBUaGUgcGF0Y2ggZG9lcyBub3QgaW50cm9kdWNlIGFueSB1bmluaXRpYWxpemVkIG1lbW9yeSBhbGxvY2F0aW9ucywgY29uZGl0aW9uYWwgYnJhbmNoZXMgYmFzZWQgb24gdW5pbml0aWFsaXplZCBkYXRhLCBvciBrZXJuZWwtdG8tdXNlciBpbmZvLWxlYWtzLiBUaGVyZWZvcmUsIHN0YW5kYXJkIEtBU0FOIGZ1enppbmcgaXMgc3VmZmljaWVudCBhbmQgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgaXMgbm90IHdhcnJhbnRlZC5cIixcbiAgXCJOZWVkc0tNU0FOXCI6IGZhbHNlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJLTVNBTlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBmaXhlcyBhbiBvdXQtb2YtYm91bmRzIG1lbW9yeSByZWFkIGluIG1tODF4X2NtZF9yZXNwX3Byb2Nlc3MoKSBieSBjYXBwaW5nIHRoZSByZXNwb25zZSBjb3B5IGxlbmd0aCB0byBza2ItXFx1MDAzZWxlbiAocHJldmVudGluZyBtZW1jcHkgZnJvbSByZWFkaW5nIHBhc3QgdGhlIGVuZCBvZiB0aGUgcmVjZWl2ZWQgc2tiIGJ1ZmZlciBpZiB0aGUgcmVzcG9uc2UgaGVhZGVyIGxlbmd0aCBjbGFpbXMgYSBsYXJnZXIgc2l6ZSkuIFRoaXMgaXNzdWUgaXMgYSBjbGFzc2ljIGJ1ZmZlciBvdXQtb2YtYm91bmRzIHJlYWQgd2hpY2ggaXMgZGlyZWN0bHkgZGV0ZWN0ZWQgYnkgS0FTQU4uIFRoZSBwYXRjaCBkb2VzIG5vdCBpbnRyb2R1Y2UgYW55IHVuaW5pdGlhbGl6ZWQgbWVtb3J5IGFsbG9jYXRpb25zLCBjb25kaXRpb25hbCBicmFuY2hlcyBiYXNlZCBvbiB1bmluaXRpYWxpemVkIGRhdGEsIG9yIGtlcm5lbC10by11c2VyIGluZm8tbGVha3MuIFRoZXJlZm9yZSwgc3RhbmRhcmQgS0FTQU4gZnV6emluZyBpcyBzdWZmaWNpZW50IGFuZCBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBpcyBub3Qgd2FycmFudGVkLlwiLFxuICBcIk5lZWRzS01TQU5cIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0udG9rZW5zIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnVG9vbER1ciA9IHN0YXRzLnRvb2wuY291bnQgPiAwID8gKHN0YXRzLnRvb2wuZHVyYXRpb24gLyBzdGF0cy50b29sLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCgkJCWNvbnN0IGxsbVN1bWFyeUNlbGxzID0gW3N0YXRzLmxsbS5jb3VudCwgc3RhdHMubGxtLnRva2VucywgYXZnTGxtVG9rZW4sIHN0YXRzLmxsbS5kdXJhdGlvbiwgYXZnTGxtRHVyXTsKCQkJY29uc3QgdG9vbFN1bW1hcnlDZWxscyA9IFtzdGF0cy50b29sLmNvdW50LCBzdGF0cy50b29sLmR1cmF0aW9uLCBhdmdUb29sRHVyXTsKCgkJCWNvbnN0IGxsbVN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xsbV9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJbGxtU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IGxsbVRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJbGxtU3VtYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCWxsbVRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCWxsbVN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKGxsbVRyKTsKCgkJCWNvbnN0IHRvb2xTdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b29sX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQl0b29sU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IHRvb2xUciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCXRvb2xTdW1tYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCXRvb2xUci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQl0b29sU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQodG9vbFRyKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgZmlsdGVyZWRTdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gWyJsbG0iLCAidG9vbCJdLmluY2x1ZGVzKGQuVHlwZSkpOwoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdEdXJhdGlvbicpOwoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOyAKCgkJCWZpbHRlcmVkU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCQoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7CgkJCQlsZXQgdG9vbHRpcCA9IHMuTmFtZTsKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iICYmIHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCQkJCWRhdGEuYWRkUm93KFtgJHtzLlNlcX1gLCBkdXIsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUaW1lIENvbnN1bXB0aW9uIG9mIExMTS9Ub29sIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0vVG9vbCBTdGVwcycsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdTZWNvbmRzJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkdXJhdGlvbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgbGxtU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IGQuVHlwZSA9PT0gImxsbSIpOwoJCQlpZiAobGxtU3RlcHMubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdUb2tlbnMnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAnc3R5bGUnfSk7CQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOwkKCgkJCWNvbnN0IGFnZW50Q29sb3JzID0ge307CgkJCWNvbnN0IHBhbGV0dGUgPSBbJyM0Mjg1RjQnLCAnI0RCNDQzNycsICcjRjRCNDAwJywgJyMwRjlENTgnLCAnI0FCNDdCQycsICcjMDBBQ0MxJ107CgkJCWxldCBjb2xvcklkeCA9IDA7CgkJCWNvbnN0IGFnZW50TExNQ291bnRzID0ge307CgkJCWxsbVN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQlpZiAoIWFnZW50Q29sb3JzW3MuTmFtZV0pIHsKCQkJCQlhZ2VudENvbG9yc1tzLk5hbWVdID0gcGFsZXR0ZVtjb2xvcklkeCAlIHBhbGV0dGUubGVuZ3RoXTsKCQkJCQljb2xvcklkeCsrOwoJCQkJfQoKCQkJCWFnZW50TExNQ291bnRzW3MuTmFtZV0gPSAoYWdlbnRMTE1Db3VudHNbcy5OYW1lXSB8fCAwKSArIDE7CgkJCQljb25zdCBsYWJlbCA9IGAke3MuTmFtZX0tJHthZ2VudExMTUNvdW50c1tzLk5hbWVdfWA7CgkJCQljb25zdCB0b3RhbFRva2VucyA9IHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnM7CgkJCQljb25zdCBzdHlsZSA9IGBjb2xvcjogJHthZ2VudENvbG9yc1tzLk5hbWVdfWA7CgkJCQlsZXQgdG9vbHRpcCA9IGBUb3RhbCBUb2tlbnM6ICR7dG90YWxUb2tlbnN9XG4oSW46ICR7cy5JbnB1dFRva2Vuc30sIE91dDogJHtzLk91dHB1dFRva2Vuc30sIFRob3VnaHRzOiAke3MuT3V0cHV0VGhvdWdodHNUb2tlbnN9KWA7CgkJCQlpZiAocy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoKCQkJCWRhdGEuYWRkUm93KFtsYWJlbCwgdG90YWxUb2tlbnMsIHN0eWxlLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVG9rZW4gQ29uc3VtcHRpb24gYnkgTExNIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0gQ2FsbCBTZXF1ZW5jZScsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdDb25zdW1lZCBUb2tlbnMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rva2VuX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgkJbGV0IGFsbEV4cGFuZGVkID0gZmFsc2U7CgkJZnVuY3Rpb24gdG9nZ2xlQWxsRGV0YWlscygpIHsKCQkJYWxsRXhwYW5kZWQgPSAhYWxsRXhwYW5kZWQ7CgkJCWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ2RldGFpbHMnKS5mb3JFYWNoKGQgPT4gewoJCQkJaWYgKGFsbEV4cGFuZGVkKSBkLnNldEF0dHJpYnV0ZSgnb3BlbicsICcnKTsKCQkJCWVsc2UgZC5yZW1vdmVBdHRyaWJ1dGUoJ29wZW4nKTsKCQkJfSk7CgkJfQoJPC9zY3JpcHQ+CgoKPC9ib2R5Pgo8L2h0bWw+Cg==" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowrqb6m[0].run-triage(0) Phase: Succeeded StartedAt: 2026-09-07 04:42:01 +0000 UTC FinishedAt: 2026-09-07 05:06:49 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "net-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git", "commit_hash": "31f961de2f90fbf52eb2d4e15b3eeaa09f9b4fc2", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "MM81X", "MM81X_USB", "WLAN_VENDOR_MORSEMICRO", "MAC80211", "USB" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "net-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git", "commit_hash": "31f961de2f90fbf52eb2d4e15b3eeaa09f9b4fc2", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "MM81X", "MM81X_USB", "WLAN_VENDOR_MORSEMICRO", "MAC80211", "USB" ], "series_id": "b7c3a4a7-ca7c-479a-96a2-19f2cdc7dcec" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "mm81x_cmd_resp_process" ], "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+CgkJCTx0ZD4yMDI2LzA5LzA3IDA1OjA0PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+Mm08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O01NODFYJiMzNDssCiAgICAmIzM0O01NODFYX1VTQiYjMzQ7LAogICAgJiMzNDtXTEFOX1ZFTkRPUl9NT1JTRU1JQ1JPJiMzNDssCiAgICAmIzM0O01BQzgwMjExJiMzNDssCiAgICAmIzM0O1VTQiYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O21tODF4X2NtZF9yZXNwX3Byb2Nlc3MmIzM0OwogIF0sCiAgJiMzNDtLTVNBTlJlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmaXhlcyBhbiBvdXQtb2YtYm91bmRzIG1lbW9yeSByZWFkIGluIG1tODF4X2NtZF9yZXNwX3Byb2Nlc3MoKSBieSBjYXBwaW5nIHRoZSByZXNwb25zZSBjb3B5IGxlbmd0aCB0byBza2ItXHUwMDNlbGVuIChwcmV2ZW50aW5nIG1lbWNweSBmcm9tIHJlYWRpbmcgcGFzdCB0aGUgZW5kIG9mIHRoZSByZWNlaXZlZCBza2IgYnVmZmVyIGlmIHRoZSByZXNwb25zZSBoZWFkZXIgbGVuZ3RoIGNsYWltcyBhIGxhcmdlciBzaXplKS4gVGhpcyBpc3N1ZSBpcyBhIGNsYXNzaWMgYnVmZmVyIG91dC1vZi1ib3VuZHMgcmVhZCB3aGljaCBpcyBkaXJlY3RseSBkZXRlY3RlZCBieSBLQVNBTi4gVGhlIHBhdGNoIGRvZXMgbm90IGludHJvZHVjZSBhbnkgdW5pbml0aWFsaXplZCBtZW1vcnkgYWxsb2NhdGlvbnMsIGNvbmRpdGlvbmFsIGJyYW5jaGVzIGJhc2VkIG9uIHVuaW5pdGlhbGl6ZWQgZGF0YSwgb3Iga2VybmVsLXRvLXVzZXIgaW5mby1sZWFrcy4gVGhlcmVmb3JlLCBzdGFuZGFyZCBLQVNBTiBmdXp6aW5nIGlzIHN1ZmZpY2llbnQgYW5kIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIGlzIG5vdCB3YXJyYW50ZWQuJiMzNDssCiAgJiMzNDtOZWVkc0tNU0FOJiMzNDs6IGZhbHNlLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGFkZHMgYSBib3VuZHMgY2hlY2sgYWdhaW5zdCBza2ItXHUwMDNlbGVuIGluIG1tODF4X2NtZF9yZXNwX3Byb2Nlc3MoKSB0byBwcmV2ZW50IGFuIG91dC1vZi1ib3VuZHMgcmVhZCBkdXJpbmcgbWVtY3B5IHdoZW4gcHJvY2Vzc2luZyBjb21tYW5kIHJlc3BvbnNlcyBpbiB0aGUgTW9yc2UgTWljcm8gTU04MXggd2lyZWxlc3MgZHJpdmVyLiBUaGlzIGRyaXZlciBzdXBwb3J0cyBVU0IgZGV2aWNlcyBhbmQgaXMgcmVhY2hhYmxlIGluIGZ1enppbmcgZW52aXJvbm1lbnRzIHdpdGggVVNCIGVtdWxhdGlvbiAoZS5nLiBSYXcgR2FkZ2V0IC8gZHVtbXlfaGNkKS4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNyAwNTowNDwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IDU3OTA1ZmE3ZTM2NTFlZjkzZmU4OTY3NDMzMDBhMTkwZGYwMzlkMDVcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgTW9uIFNlcCA3IDA1OjA0OjMxIDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29tbWFuZC5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb21tYW5kLmNcbmluZGV4IGFmYjdlZTliYjIzNmYuLjU5MWU1YmExMDc1MzMgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb21tYW5kLmNcbkBAIC0yMDksNiAmIzQzOzIwOSw3IEBAIGludCBtbTgxeF9jbWRfcmVzcF9wcm9jZXNzKHN0cnVjdCBtbTgxeCAqbW9ycywgc3RydWN0IHNrX2J1ZmYgKnNrYilcbiBcdFx0bGVuZ3RoID0gbWluX3QoaW50LCBsZW5ndGgsXG4gXHRcdFx0ICAgICAgIGxlMTZfdG9fY3B1KHNyY19yZXNwLVx1MDAzZWhkci5sZW4pICYjNDM7XG4gXHRcdFx0XHQgICAgICAgc2l6ZW9mKHN0cnVjdCBob3N0X2NtZF9oZWFkZXIpKTtcbiYjNDM7XHRcdGxlbmd0aCA9IG1pbl90KGludCwgbGVuZ3RoLCBza2ItXHUwMDNlbGVuKTtcbiBcdFx0bWVtY3B5KGRlc3RfcmVzcCwgc3JjX3Jlc3AsIGxlbmd0aCk7XG4gXHR9IGVsc2Uge1xuIFx0XHRyZXQgPSBsZTMyX3RvX2NwdShzcmNfcmVzcC1cdTAwM2VzdGF0dXMpO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA3IDA1OjA0PC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjFtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmNvcmU8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O01NODFYJiMzNDssCiAgICAmIzM0O01NODFYX1VTQiYjMzQ7LAogICAgJiMzNDtXTEFOX1ZFTkRPUl9NT1JTRU1JQ1JPJiMzNDssCiAgICAmIzM0O01BQzgwMjExJiMzNDssCiAgICAmIzM0O1VTQiYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O21tODF4X2NtZF9yZXNwX3Byb2Nlc3MmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggYWRkcyBhIGJvdW5kcyBjaGVjayBhZ2FpbnN0IHNrYi1cdTAwM2VsZW4gaW4gbW04MXhfY21kX3Jlc3BfcHJvY2VzcygpIHRvIHByZXZlbnQgYW4gb3V0LW9mLWJvdW5kcyByZWFkIGR1cmluZyBtZW1jcHkgd2hlbiBwcm9jZXNzaW5nIGNvbW1hbmQgcmVzcG9uc2VzIGluIHRoZSBNb3JzZSBNaWNybyBNTTgxeCB3aXJlbGVzcyBkcml2ZXIuIFRoaXMgZHJpdmVyIHN1cHBvcnRzIFVTQiBkZXZpY2VzIGFuZCBpcyByZWFjaGFibGUgaW4gZnV6emluZyBlbnZpcm9ubWVudHMgd2l0aCBVU0IgZW11bGF0aW9uIChlLmcuIFJhdyBHYWRnZXQgLyBkdW1teV9oY2QpLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lciBhbmQgc2VjdXJpdHkgZW5naW5lZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZXZhbHVhdGUgd2hldGhlciBpdCB3YXJyYW50cyBmdXp6aW5nIHdpdGggc3l6a2FsbGVyLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiBpbnRlcm5hbCBhc3N1bXB0aW9ucy4gWW91IG11c3QgYWN0aXZlbHkgdXNlIHlvdXIgY29kZSBhY2Nlc3MKdG9vbHMgdG8gaW5zcGVjdCB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlLCBjYWxsZXJzLCBhbmQgc3Vycm91bmRpbmcgY29udGV4dC4KCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CjEuIENPUkUgVFJJQUdFIFBISUxPU09QSFkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KVGhlIGdvYWwgb2YgcGF0Y2ggZnV6emluZyBpcyB0byBkaXNjb3ZlciBjcmFzaGVzLCByZWdyZXNzaW9ucywgZXhwb3NlZCBsYXRlbnQgYnVncywKYW5kIG5ld2x5IHRyaWdnZXJlZCBhc3NlcnRpb25zIGludHJvZHVjZWQgYnkgdGhlIHBhdGNoIHNlcmllcy4KCi0gUkVBQ0hBQklMSVRZIElTIFRIRSBQUklNQVJZIEdBVEU6CiAgRnV6emluZyBjYW4gb25seSBkaXNjb3ZlciBidWdzIGluIGNvZGUgdGhhdCBjYW4gYWN0dWFsbHkgZXhlY3V0ZSBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZAogIGVudmlyb25tZW50cyAoR0NFIG9yIFFFTVUsIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBkZXZpY2VzIGxpa2UgVVNCIGdhZGdldHMsIG5ldGRldiwgdHVuL3RhcCkuCiAgSWYgdGhlIG1vZGlmaWVkIGNvZGUgaXMgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIChzZWUgU2VjdGlvbiAyKSwgaXQgTVVTVCBOT1QgYmUgZnV6emVkLAogIHJlZ2FyZGxlc3Mgb2Ygd2hldGhlciBpdCBhZGRzIGFzc2VydGlvbnMgb3IgY29tcGxleCBsb2dpYy4KCi0gRE8gTk9UIEJMSU5ETFkgVFJVU1QgJiMzNDtOTyBGVU5DVElPTkFMIENIQU5HRSYjMzQ7IChORkNJKSBPUiAmIzM0O1JFRkFDVE9SSU5HJiMzNDsgQ0xBSU1TOgogIFBhdGNoIGF1dGhvcnMgcm91dGluZWx5IGxhYmVsIGNoYW5nZXMgYXMgJiMzNDtjbGVhbnVwcyYjMzQ7LCAmIzM0O3JlZmFjdG9yaW5ncyYjMzQ7LCBvciBzdGF0ZQogICYjMzQ7Tm8gZnVuY3Rpb25hbCBjaGFuZ2UgaW50ZW5kZWQmIzM0Oy4gRG8gTk9UIHRha2UgdGhlc2UgY2xhaW1zIGF0IGZhY2UgdmFsdWUuCiAgQ29kZSByZWZhY3RvcmluZ3MgdGhhdCByZWFycmFuZ2UgbG9naWMsIGludHJvZHVjZSBoZWxwZXIgZnVuY3Rpb25zLCBvciBhbHRlciBzdGF0ZSBtYW5hZ2VtZW50CiAgaW4gY29yZSBzdWJzeXN0ZW1zIGZyZXF1ZW50bHkgaW50cm9kdWNlIHN1YnRsZSBzZW1hbnRpYyBzaGlmdHMgb3IgdW5jb3ZlciBsYXRlbnQga2VybmVsIGJ1Z3MuCiAgSWYgcmVhY2hhYmxlIGV4ZWN1dGFibGUgY29kZSBpcyBtb2RpZmllZCBvciByZWZhY3RvcmVkLCBpdCBNVVNUIGJlIGZ1enplZC4KCi0gTkVXIE9SIE1PRElGSUVEIEFTU0VSVElPTlMgSU4gUkVBQ0hBQkxFIENPREUgTVVTVCBCRSBGVVpaRUQ6CiAgV2hlbiBhIHBhdGNoIGludHJvZHVjZXMgb3IgbW9kaWZpZXMgcnVudGltZSBjaGVja3Mgb3IgYXNzZXJ0aW9ucyAoZS5nLiwgV0FSTl9PTiosIFZNX1dBUk5fT04qLAogIEJVR19PTiosIGxvY2tkZXBfYXNzZXJ0KikgaW4gcmVhY2hhYmxlIGNvZGUgcGF0aHMsIGl0IGVuZm9yY2VzIG5ldyBvciBzdHJpY3RlciBpbnZhcmlhbnRzLgogIEV2ZW4gaWYgdGhlIGF1dGhvciBiZWxpZXZlcyB0aGUgaW52YXJpYW50IGFsd2F5cyBob2xkcywgZnV6emluZyBpcyBlc3NlbnRpYWwgdG8gdmVyaWZ5IHdoZXRoZXIKICBhbiB1bnVzdWFsIHNlcXVlbmNlIG9mIG9wZXJhdGlvbnMgY2FuIHZpb2xhdGUgaXQuCgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQoyLiBXSEVOIFRPIFJFVFVSTiBXb3J0aEZ1enppbmc9ZmFsc2UgKE5FR0FUSVZFIENSSVRFUklBKQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIE9OTFkgSUYgYWxsIG1vZGlmaWVkIGNvZGUgZmFsbHMgc3RyaWN0bHkgaW50byBvbmUgb3IgbW9yZSBvZiB0aGVzZSBjYXRlZ29yaWVzOgoKLSBOb24ta2VybmVsIGFuZCBub24tZXhlY3V0YWJsZSBjaGFuZ2VzOgogICogTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgY29tbWVudHMsIG9yIHNwZWxsaW5nIGZpeGVzLgogICogVXNlci1zcGFjZSBkaXJlY3Rvcmllcywgc2VsZi10ZXN0cywgc2FtcGxlcywgb3Igc2NyaXB0cyAoZS5nLiwgdG9vbHMvLCBzYW1wbGVzLywgc2NyaXB0cy8sIHVzci8pCiAgICB0aGF0IGRvIG5vdCBhZmZlY3QgdGhlIGNvbXBpbGVkIGtlcm5lbCBpbWFnZSAodm1saW51eCkgb3Iga2VybmVsIG1vZHVsZXMuCiAgKiBQdXJlbHkgZGVjb3JhdGl2ZSBsb2dnaW5nIChlLmcuLCBtZXNzYWdlIHN0cmluZ3MgaW4gcHJfZXJyLCBwcmludGssIGRldl9pbmZvKSBvciB0cmFjZXBvaW50cwogICAgdGhhdCBkbyBub3QgYWx0ZXIgY29udHJvbCBmbG93IG9yIGRhdGEgc3RydWN0dXJlcy4KICAqIEJ1aWxkIHN5c3RlbSBvciBLY29uZmlnIGNoYW5nZXMgdGhhdCBkbyBub3QgYWx0ZXIgY29tcGlsZWQgQyBsb2dpYy4KLSBTdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgaGFyZHdhcmU6CiAgKiBWZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2hlcywgU21hcnROSUNzLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsCiAgICBpb25pYywgYW1kZ3B1KSByZXF1aXJpbmcgcGh5c2ljYWwgQVNJQy9QQ0llIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLgotIFVucmVhY2hhYmxlIGV4ZWN1dGlvbiBwYXRoczoKICAqIERyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKC5yZW1vdmUsIC5zaHV0ZG93biwgcGNpX3VucmVnaXN0ZXJfZHJpdmVyKSBleGVjdXRlZCBvbmx5IGR1cmluZwogICAgcGh5c2ljYWwgUENJIGhvdC11bnBsdWcgb3IgbWFudWFsIHN5c2ZzIGRyaXZlciB1bmJpbmRpbmcuCiAgKiBDb2RlIHBhdGhzIGV4Y2x1c2l2ZSB0byBhcmNoaXRlY3R1cmVzIG90aGVyIHRoYW4gdGhlIHRhcmdldCBhcmNoaXRlY3R1cmUuCgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQozLiBXSEVOIFRPIFJFVFVSTiBXb3J0aEZ1enppbmc9dHJ1ZSAoUE9TSVRJVkUgQ1JJVEVSSUEpCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZSB3aGVuZXZlciB0aGUgcGF0Y2ggdG91Y2hlcyByZWFjaGFibGUgZXhlY3V0YWJsZSBjb2RlLCBpbmNsdWRpbmc6Ci0gQ29yZSBTdWJzeXN0ZW1zOgogICogQW55IGxvZ2ljIG1vZGlmaWNhdGlvbnMgaW4gbWVtb3J5IG1hbmFnZW1lbnQgKG1tLyksIHN5bmNocm9uaXphdGlvbi9sb2NraW5nIChrZXJuZWwvbG9ja2luZy8pLAogICAgQlBGLCBzY2hlZHVsZXIsIGNvcmUgbmV0d29ya2luZywgVkZTLCBvciBzeXNjYWxsIGhhbmRsaW5nLgotIFJlZmFjdG9yaW5ncyBhbmQgQ29kZSBDbGVhbnVwczoKICAqIEFueSByZXN0cnVjdHVyaW5nIG9mIHJlYWNoYWJsZSBkYXRhIHN0cnVjdHVyZXMsIGhlbHBlciBhYnN0cmFjdGlvbnMsIG9yIGFsZ29yaXRobSBmbG93cy4KLSBSdW50aW1lIEFzc2VydGlvbnMgYW5kIERlZmVuc2l2ZSBDaGVja3M6CiAgKiBBbnkgaW50cm9kdWN0aW9uIG9yIGFsdGVyYXRpb24gb2YgYXNzZXJ0aW9ucyAoV0FSTl9PTiosIFZNX1dBUk5fT04qLCBCVUdfT04qLCBldGMuKSBpbiByZWFjaGFibGUgcGF0aHMuCi0gUmVhY2hhYmxlIERyaXZlcnMgYW5kIFByb3RvY29sczoKICAqIERyaXZlcnMgYWNjZXNzaWJsZSB2aWEgdmlydHVhbCBidXNlcyAodmlydGlvLCBVU0IgZ2FkZ2V0LCBsb29wYmFjaywgbmV0bGluaywgYmluZGVyLCBzb2NrZXRzLCBldGMuKS4KCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CjQuIEVYVFJBQ1RJTkcgRm9jdXNTeW1ib2xzIChQUkVWRU5USU5HIERJTFVUSU9OKQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpXaGVuIFdvcnRoRnV6emluZz10cnVlLCB5b3UgbXVzdCBleHRyYWN0IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgaW50byBGb2N1c1N5bWJvbHMgdG8gZ3VpZGUgdGhlIGZ1enplcjoKCi0gQVZPSUQgVUJJUVVJVE9VUyBMSUZFQ1lDTEUgSE9ULVBBVEhTOgogIERvIE5PVCBsaXN0IGdlbmVyaWMsIHViaXF1aXRvdXMgZnVuY3Rpb25zIGNhbGxlZCBieSBhbG1vc3QgZXZlcnkgcHJvZ3JhbSBpbiB0aGUgY29ycHVzCiAgKGluY2x1ZGluZywgYnV0IG5vdCBsaW1pdGVkIHRvOiBnZW5lcmFsIG1lbW9yeSBhbGxvY2F0b3JzIGFuZCBkZWFsbG9jYXRvcnMsIHBhZ2UgZmF1bHQKICBhbmQgdHJhcCBoYW5kbGVycywgb3IgY29yZSBzeW5jaHJvbml6YXRpb24gcHJpbWl0aXZlczsgdGhpcyBpcyBub3QgYW4gZXhoYXVzdGl2ZSBsaXN0KS4KICBMaXN0aW5nIHViaXF1aXRvdXMgZnVuY3Rpb25zIGNhdXNlcyB0aGUgZnV6emVyIHRvIGNsYXNzaWZ5IHRob3VzYW5kcyBvZiB1bnJlbGF0ZWQgdGVzdHMgYXMgJiMzNDtmb2N1c2VkJiMzNDssCiAgd2hpY2ggc2V2ZXJlbHkgZGlsdXRlcyBmdXp6aW5nIGVmZm9ydCBhd2F5IGZyb20gdGhlIGFjdHVhbCBjaGFuZ2VzLgoKLSBUQVJHRVQgU1BFQ0lGSUMgRkVBVFVSRSBMT0dJQyBBTkQgRU5UUllQT0lOVFM6CiAgTGlzdCBmdW5jdGlvbnMgdGhhdCBzcGVjaWZpY2FsbHkgaW1wbGVtZW50IHRoZSBsb2dpYyBiZWluZyBhZGRlZCBvciBhbHRlcmVkLCBvciBkaXJlY3QgQVBJIGVudHJ5cG9pbnRzCiAgZm9yIHRoZSBzdWJzeXN0ZW0gZmVhdHVyZSB1bmRlciByZXZpZXcuCgotIEhBTkRMSU5HIFNUQVRJQyBJTkxJTkUgRlVOQ1RJT05TIElOIEhFQURFUlMgKC5oKToKICBDb21waWxlci1pbmxpbmVkIHN0YXRpYyBmdW5jdGlvbnMgKHN1Y2ggYXMgc3RhdGljIGlubGluZXMgaW4gbW0vKi5oIG9yIGluY2x1ZGUvbGludXgvKi5oKSBsYWNrCiAgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcyBpbiB2bWxpbnV4IGFuZCBjYW5ub3QgYmUgdGFyZ2V0ZWQgZGlyZWN0bHkgYnkgc3ltYm9sIGNvdmVyYWdlIGZpbHRlcnMuCiAgSWYgdGhlIGNoYW5nZXMgYXJlIHByaW1hcmlseSBpbiBzdGF0aWMgaW5saW5lIGhlbHBlcnMsIGlkZW50aWZ5IG5vbi1zdGF0aWMsIGZlYXR1cmUtc3BlY2lmaWMgY2FsbGVyCiAgZnVuY3Rpb25zIGluIC5jIGZpbGVzIHRoYXQgZXhlcmNpc2UgdGhlbSAoYXZvaWRpbmcgdWJpcXVpdG91cyBsaWZlY3ljbGUgd3JhcHBlcnMpLgoKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KNS4gSURFTlRJRllJTkcgRW5hYmxlQ29uZmlncwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IGNvbXBpbGUgYW5kIHJlYWNoIHRoZSBtb2RpZmllZCBjb2RlOgotIEluc3BlY3QgS2NvbmZpZyBmaWxlcyBhbmQgI2lmZGVmIGd1YXJkczsgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCi0gQ2hlY2sgJiMzNDtkZXBlbmRzIG9uJiMzNDsgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzIG5lZWRlZC4KLSBTdHJpcCBhbnkgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+VGFyZ2V0IGFyY2hpdGVjdHVyZTogYW1kNjQKCkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgNTc5MDVmYTdlMzY1MWVmOTNmZTg5Njc0MzMwMGExOTBkZjAzOWQwNQpBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBNb24gU2VwIDcgMDU6MDQ6MzEgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29tbWFuZC5jCmluZGV4IGFmYjdlZTliYjIzNmYuLjU5MWU1YmExMDc1MzMgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29tbWFuZC5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29tbWFuZC5jCkBAIC0yMDksNiAmIzQzOzIwOSw3IEBAIGludCBtbTgxeF9jbWRfcmVzcF9wcm9jZXNzKHN0cnVjdCBtbTgxeCAqbW9ycywgc3RydWN0IHNrX2J1ZmYgKnNrYikKIAkJbGVuZ3RoID0gbWluX3QoaW50LCBsZW5ndGgsCiAJCQkgICAgICAgbGUxNl90b19jcHUoc3JjX3Jlc3AtJmd0O2hkci5sZW4pICYjNDM7CiAJCQkJICAgICAgIHNpemVvZihzdHJ1Y3QgaG9zdF9jbWRfaGVhZGVyKSk7CiYjNDM7CQlsZW5ndGggPSBtaW5fdChpbnQsIGxlbmd0aCwgc2tiLSZndDtsZW4pOwogCQltZW1jcHkoZGVzdF9yZXNwLCBzcmNfcmVzcCwgbGVuZ3RoKTsKIAl9IGVsc2UgewogCQlyZXQgPSBsZTMyX3RvX2NwdShzcmNfcmVzcC0mZ3Q7c3RhdHVzKTsKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDcgMDU6MDQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjkzMAoJCQkJCQkJb3V0cHV0OiAzMwoJCQkJCQkJdGhvdWdodHM6IDEyNAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIEltcGFjdCBvZiB0aGUgQ29kZSBDaGFuZ2UqKgoKT2theSwgZmlyc3QgdGhpbmdzIGZpcnN0LCBsZXQmIzM5O3MgZGl2ZSBpbnRvIHRoaXMgZGlmZi4gSXQgbG9va3MgbGlrZSB0aGUgY2hhbmdlIGlzIHdpdGhpbiBgZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb21tYW5kLmNgLiBTcGVjaWZpY2FsbHksIHRoZSBhZmZlY3RlZCBmdW5jdGlvbiBpcyBgbW04MXhfY21kX3Jlc3BfcHJvY2Vzc2AuIFJpZ2h0LCBzbyB0aGlzIHN1Z2dlc3RzIHdlJiMzOTtyZSBkZWFsaW5nIHdpdGggY29tbWFuZCByZXNwb25zZSBwcm9jZXNzaW5nIHdpdGhpbiB0aGUgbW04MXggZHJpdmVyLgoKTm93LCBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgYXJjaGl0ZWN0dXJlIG9mIHRoaXMgZHJpdmVyLiBUbyBnZXQgYSBoYW5kbGUgb24gdGhlIHVuZGVybHlpbmcgaW50ZXJmYWNlLCBJJiMzOTtsbCBxdWlja2x5IGNoZWNrIHRoZSBkaXJlY3RvcnksIGBkcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2AuIElzIHRoaXMgU1BJLCBTRElPLCBVU0IsIFBDSWUsIG9yIHNvbWV0aGluZyBlbHNlIGVudGlyZWx5PyBBIHF1aWNrIHNjYW4gb2YgcmVsYXRlZCBmaWxlcyBzaG91bGQgZ2l2ZSBtZSB0aGUgYW5zd2VyIHByZXR0eSBxdWlja2x5LgoKVG8gYmUgdGhvcm91Z2gsIGxldCYjMzk7cyB1c2UgYGdyZXBwZXJgIG9yIGByZWFkLWZpbGVgIG9uIGBkcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL2Agb3IgS2NvbmZpZyB0byBxdWlja2x5IGlkZW50aWZ5IGlmIHRoZXJlIGFyZSBhbnkgb2J2aW91cyBjbHVlcyB0byB3aGF0JiMzOTtzIGdvaW5nIG9uLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA3IDA1OjA0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O21tODF4JiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNybyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtcbkZ1bGwgb3V0cHV0IGlzIHRvbyBsb25nLCBzaG93aW5nIDUwMCBvdXQgb2YgNDg0NyBsaW5lcy5cblVzZSBtb3JlIHByZWNpc2UgZXhwcmVzc2lvbiBpZiBwb3NzaWJsZS5cblxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9LY29uZmlnPTEzPWlmIFdMQU5fVkVORE9SX01PUlNFTUlDUk9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vS2NvbmZpZzoxNDpzb3VyY2UgXCYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9LY29uZmlnXCYjMzQ7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL0tjb25maWctMTUtZW5kaWYgIyBXTEFOX1ZFTkRPUl9NT1JTRU1JQ1JPXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9NYWtlZmlsZS0xLSMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjBcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vTWFrZWZpbGU6MjpvYmotJChDT05GSUdfTU04MVgpICYjNDM7PSBtbTgxeC9cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L01ha2VmaWxlLTItXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L01ha2VmaWxlOjM6b2JqLSQoQ09ORklHX01NODFYKSAmIzQzOz0gbW04MXhfY29yZS5vXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L01ha2VmaWxlLTQtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L01ha2VmaWxlOjU6bW04MXhfY29yZS15ICYjNDM7PSBjb3JlLm9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvTWFrZWZpbGU6NjptbTgxeF9jb3JlLXkgJiM0Mzs9IG1hYy5vXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L01ha2VmaWxlOjc6bW04MXhfY29yZS15ICYjNDM7PSBody5vXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L01ha2VmaWxlOjg6bW04MXhfY29yZS15ICYjNDM7PSBmdy5vXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L01ha2VmaWxlOjk6bW04MXhfY29yZS15ICYjNDM7PSBjb21tYW5kLm9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvTWFrZWZpbGU6MTA6bW04MXhfY29yZS15ICYjNDM7PSBwcy5vXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L01ha2VmaWxlOjExOm1tODF4X2NvcmUteSAmIzQzOz0gc2ticS5vXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L01ha2VmaWxlOjEyOm1tODF4X2NvcmUteSAmIzQzOz0geWFwc19ody5vXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L01ha2VmaWxlOjEzOm1tODF4X2NvcmUteSAmIzQzOz0geWFwcy5vXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L01ha2VmaWxlOjE0Om1tODF4X2NvcmUteSAmIzQzOz0gcmMub1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9NYWtlZmlsZToxNTptbTgxeF9jb3JlLXkgJiM0Mzs9IG1tcmMub1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9NYWtlZmlsZS0xNi1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvTWFrZWZpbGU6MTc6b2JqLSQoQ09ORklHX01NODFYX1VTQikgJiM0Mzs9IG1tODF4X3VzYi5vXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L01ha2VmaWxlOjE4Om1tODF4X3VzYi15ICYjNDM7PSB1c2Iub1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9NYWtlZmlsZS0xOS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvTWFrZWZpbGU6MjA6b2JqLSQoQ09ORklHX01NODFYX1NESU8pICYjNDM7PSBtbTgxeF9zZGlvLm9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvTWFrZWZpbGU6MjE6bW04MXhfc2Rpby15ICYjNDM7PSBzZGlvLm9cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2J1cy5oLTExLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9idXMuaDoxMjplbnVtIG1tODF4X2J1c190eXBlIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvYnVzLmgtMTMtXHRNTTgxWF9CVVNfVFlQRV9VU0IsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9idXMuaC0xNi1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvYnVzLmg6MTc6c3RydWN0IG1tODF4X2J1c19vcHMge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9idXMuaDoxODpcdGludCAoKmRtX3JlYWQpKHN0cnVjdCBtbTgxeCAqbW9ycywgdTMyIGFkZHIsIHU4ICpkYXRhLCBpbnQgbGVuKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvYnVzLmg6MTk6XHRpbnQgKCpkbV93cml0ZSkoc3RydWN0IG1tODF4ICptb3JzLCB1MzIgYWRkciwgY29uc3QgdTggKmRhdGEsIGludCBsZW4pO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9idXMuaDoyMDpcdGludCAoKnJlZzMyX3JlYWQpKHN0cnVjdCBtbTgxeCAqbW9ycywgdTMyIGFkZHIsIHUzMiAqZGF0YSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2J1cy5oOjIxOlx0aW50ICgqcmVnMzJfd3JpdGUpKHN0cnVjdCBtbTgxeCAqbW9ycywgdTMyIGFkZHIsIHUzMiBkYXRhKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvYnVzLmg6MjI6XHRpbnQgKCpkaWdpdGFsX3Jlc2V0KShzdHJ1Y3QgbW04MXggKm1vcnMpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9idXMuaDoyMzpcdHZvaWQgKCpzZXRfYnVzX2VuYWJsZSkoc3RydWN0IG1tODF4ICptb3JzLCBib29sIGVuYWJsZSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2J1cy5oOjI0Olx0dm9pZCAoKmNvbmZpZ19idXJzdF9tb2RlKShzdHJ1Y3QgbW04MXggKm1vcnMsIGJvb2wgZW5hYmxlX2J1cnN0KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvYnVzLmg6MjU6XHR2b2lkICgqY2xhaW0pKHN0cnVjdCBtbTgxeCAqbW9ycyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2J1cy5oOjI2Olx0dm9pZCAoKnNldF9pcnEpKHN0cnVjdCBtbTgxeCAqbW9ycywgYm9vbCBlbmFibGUpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9idXMuaDoyNzpcdHZvaWQgKCpyZWxlYXNlKShzdHJ1Y3QgbW04MXggKm1vcnMpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9idXMuaC0yOC1cdHVuc2lnbmVkIGludCBidWxrX2FsaWdubWVudDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2J1cy5oLTM2LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9idXMuaDozNzovKiBtbTgxeF9kbV9yZWFkIC0gbGVuIG11c3QgYmUgcm91bmRlZCB1cCB0byB0aGUgbmVhcmVzdCA0LWJ5dGUgYm91bmRhcnkgKi9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvYnVzLmg6Mzg6c3RhdGljIGlubGluZSBpbnQgbW04MXhfZG1fcmVhZChzdHJ1Y3QgbW04MXggKm1vcnMsIHUzMiBhZGRyLCB1OCAqZGF0YSwgaW50IGxlbilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvYnVzLmgtMzkte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvYnVzLmgtNDItXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2J1cy5oOjQzOnN0YXRpYyBpbmxpbmUgaW50IG1tODF4X2RtX3dyaXRlKHN0cnVjdCBtbTgxeCAqbW9ycywgdTMyIGFkZHIsIGNvbnN0IHU4ICpkYXRhLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9idXMuaC00NC1cdFx0XHRcdCBpbnQgbGVuKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvYnVzLmgtNDgtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2J1cy5oOjQ5OnN0YXRpYyBpbmxpbmUgaW50IG1tODF4X3JlZzMyX3JlYWQoc3RydWN0IG1tODF4ICptb3JzLCB1MzIgYWRkciwgdTMyICpkYXRhKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9idXMuaC01MC17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9idXMuaC01My1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvYnVzLmg6NTQ6c3RhdGljIGlubGluZSBpbnQgbW04MXhfcmVnMzJfd3JpdGUoc3RydWN0IG1tODF4ICptb3JzLCB1MzIgYWRkciwgdTMyIGRhdGEpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2J1cy5oLTU1LXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2J1cy5oLTU4LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9idXMuaDo1OTpzdGF0aWMgaW5saW5lIGludCBtbTgxeF9idXNfZGlnaXRhbF9yZXNldChzdHJ1Y3QgbW04MXggKm1vcnMpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2J1cy5oLTYwLXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2J1cy5oLTY2LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9idXMuaDo2NzpzdGF0aWMgaW5saW5lIHZvaWQgbW04MXhfc2V0X2J1c19lbmFibGUoc3RydWN0IG1tODF4ICptb3JzLCBib29sIGVuYWJsZSlcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvYnVzLmgtNjgte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvYnVzLmgtNzEtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2J1cy5oOjcyOnN0YXRpYyBpbmxpbmUgdm9pZCBtbTgxeF9idXNfY29uZmlnX2J1cnN0X21vZGUoc3RydWN0IG1tODF4ICptb3JzLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9idXMuaC03My1cdFx0XHRcdFx0ICAgICAgIGJvb2wgZW5hYmxlX2J1cnN0KVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvYnVzLmgtNzgtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2J1cy5oOjc5OnN0YXRpYyBpbmxpbmUgdm9pZCBtbTgxeF9jbGFpbV9idXMoc3RydWN0IG1tODF4ICptb3JzKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9idXMuaC04MC17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9idXMuaC04My1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvYnVzLmg6ODQ6c3RhdGljIGlubGluZSB2b2lkIG1tODF4X2J1c19zZXRfaXJxKHN0cnVjdCBtbTgxeCAqbW9ycywgYm9vbCBlbmFibGUpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2J1cy5oLTg1LXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2J1cy5oLTg4LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9idXMuaDo4OTpzdGF0aWMgaW5saW5lIHZvaWQgbW04MXhfcmVsZWFzZV9idXMoc3RydWN0IG1tODF4ICptb3JzKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9idXMuaC05MC17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9idXMuaC05My1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvYnVzLmg6OTQ6c3RhdGljIGlubGluZSB1bnNpZ25lZCBpbnQgbW04MXhfYnVzX2dldF9hbGlnbm1lbnQoc3RydWN0IG1tODF4ICptb3JzKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9idXMuaC05NS17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb21tYW5kLmM9Mjc9c3RydWN0IGhvc3RfY21kX3Jlc3BfY2Ige1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29tbWFuZC5jLTMyLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb21tYW5kLmM6MzM6c3RhdGljIGludCBtbTgxeF9jbWRfdHgoc3RydWN0IG1tODF4ICptb3JzLCBzdHJ1Y3QgaG9zdF9jbWRfcmVzcCAqcmVzcCxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29tbWFuZC5jLTM0LVx0XHRcdHN0cnVjdCBob3N0X2NtZF9yZXEgKnJlcSwgdTMyIGxlbmd0aCwgdTMyIHRpbWVvdXQpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb21tYW5kLmMtNDEtXHRzdHJ1Y3Qgc2tfYnVmZiAqc2tiO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb21tYW5kLmM6NDI6XHRzdHJ1Y3QgbW04MXhfc2ticSAqY21kX3EgPSBtbTgxeF9oaWZfZ2V0X3R4X2NtZF9xdWV1ZShtb3JzKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29tbWFuZC5jLTQzLVx0c3RydWN0IGhvc3RfY21kX3Jlc3BfY2IgKnJlc3BfY2I7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb21tYW5kLmMtNTctXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuYzo1ODpcdG1tODF4X3BzX2Rpc2FibGUobW9ycyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuYy01OS1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuYy02Mi1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29tbWFuZC5jOjYzOlx0XHRza2IgPSBtbTgxeF9za2JxX2FsbG9jX3NrYihjbWRfcSwgY21kX2xlbik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuYy02NC1cdFx0aWYgKCFza2IpIHtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuYy04My1cdFx0dGltZW91dCA9IHRpbWVvdXQgPyB0aW1lb3V0IDogSE9TVF9DTURfREVGQVVMVF9USU1FT1VUX01TO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb21tYW5kLmM6ODQ6XHRcdHJldCA9IG1tODF4X3NrYnFfc2tiX3R4KGNtZF9xLCBcdTAwMjZza2IsIE5VTEwsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuYy04NS1cdFx0XHRcdFx0TU04MVhfU0tCX0NIQU5fQ09NTUFORCk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb21tYW5kLmMtODgtXHRcdGlmIChyZXQpIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29tbWFuZC5jOjg5Olx0XHRcdGRldl9lcnIobW9ycy1cdTAwM2VkZXYsIFwmIzM0O21tODF4X3NrYnFfdHggZmFpbDogJWRcJiMzNDssIHJldCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuYy05MC1cdFx0XHRicmVhaztcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuYy0xMjEtXHRcdHNwaW5fbG9ja19iaChcdTAwMjZjbWRfcS1cdTAwM2Vsb2NrKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29tbWFuZC5jOjEyMjpcdFx0bW04MXhfc2ticV9za2JfZmluaXNoKGNtZF9xLCBza2IsIE5VTEwpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb21tYW5kLmMtMTIzLVx0XHRzcGluX3VubG9ja19iaChcdTAwMjZjbWRfcS1cdTAwM2Vsb2NrKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuYy0xMjgtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuYzoxMjk6XHRtbTgxeF9wc19lbmFibGUobW9ycyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuYy0xMzAtXHRtdXRleF91bmxvY2soXHUwMDI2bW9ycy1cdTAwM2VjbWRfd2FpdCk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb21tYW5kLmMtMTQ1LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb21tYW5kLmM6MTQ2OmludCBtbTgxeF9jbWRfcmVzcF9wcm9jZXNzKHN0cnVjdCBtbTgxeCAqbW9ycywgc3RydWN0IHNrX2J1ZmYgKnNrYilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29tbWFuZC5jLTE0Ny17XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuYy0xNDgtXHRpbnQgbGVuZ3RoLCByZXQgPSAtRVNSQ0g7IC8qIE5vIHN1Y2ggcHJvY2VzcyAqL1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb21tYW5kLmM6MTQ5Olx0c3RydWN0IG1tODF4X3NrYnEgKmNtZF9xID0gbW04MXhfaGlmX2dldF90eF9jbWRfcXVldWUobW9ycyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuYy0xNTAtXHRzdHJ1Y3QgaG9zdF9jbWRfcmVzcCAqc3JjX3Jlc3AgPSAoc3RydWN0IGhvc3RfY21kX3Jlc3AgKikoc2tiLVx1MDAzZWRhdGEpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29tbWFuZC5jLTE2My1cdGlmICghSE9TVF9DTURfSVNfUkVTUChzcmNfcmVzcCkpIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29tbWFuZC5jOjE2NDpcdFx0cmV0ID0gbW04MXhfbWFjX2V2ZW50X3JlY3YobW9ycywgc2tiKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29tbWFuZC5jLTE2NS1cdFx0Z290byBleGl0X2ZyZWU7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb21tYW5kLmMtMTY5LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb21tYW5kLmM6MTcwOlx0Y21kX3NrYiA9IG1tODF4X3NrYnFfdHhfcGVuZGluZyhjbWRfcSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuYy0xNzEtXHRpZiAoY21kX3NrYikge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb21tYW5kLmM6MTcyOlx0XHRtbTgxeF9za2JxX3B1bGxfaGRyX3Bvc3RfdHgoY21kX3NrYik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuYy0xNzMtXHRcdHJlcSA9IChzdHJ1Y3QgaG9zdF9jbWRfcmVxICopY21kX3NrYi1cdTAwM2VkYXRhO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29tbWFuZC5jLTIzMi1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29tbWFuZC5jOjIzMzppbnQgbW04MXhfY21kX3N0YV9zdGF0ZShzdHJ1Y3QgbW04MXggKm1vcnMsIHN0cnVjdCBtbTgxeF92aWYgKm1vcnNfdmlmLCB1MTYgYWlkLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb21tYW5kLmMtMjM0LVx0XHRcdHN0cnVjdCBpZWVlODAyMTFfc3RhICpzdGEsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb21tYW5kLmMtMjQ2LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb21tYW5kLmM6MjQ3Olx0cmV0dXJuIG1tODF4X2NtZF90eChtb3JzLCBOVUxMLCAoc3RydWN0IGhvc3RfY21kX3JlcSAqKVx1MDAyNnJlcSwgMCwgMCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuYy0yNDgtfVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb21tYW5kLmMtMjQ5LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb21tYW5kLmM6MjUwOmludCBtbTgxeF9jbWRfYWRkX2lmKHN0cnVjdCBtbTgxeCAqbW9ycywgdTE2ICp2aWZfaWQsIGNvbnN0IHU4ICphZGRyLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb21tYW5kLmMtMjUxLVx0XHQgICAgIGVudW0gbmw4MDIxMV9pZnR5cGUgdHlwZSlcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuYy0yNzEtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuYzoyNzI6XHRyZXQgPSBtbTgxeF9jbWRfdHgobW9ycywgKHN0cnVjdCBob3N0X2NtZF9yZXNwICopXHUwMDI2cmVzcCxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29tbWFuZC5jLTI3My1cdFx0XHQgICAoc3RydWN0IGhvc3RfY21kX3JlcSAqKVx1MDAyNnJlcSwgc2l6ZW9mKHJlc3ApLCAwKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuYy0yNzktXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuYzoyODA6aW50IG1tODF4X2NtZF9nZXRfY2FwYWJpbGl0aWVzKHN0cnVjdCBtbTgxeCAqbW9ycywgdTE2IHZpZl9pZCxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29tbWFuZC5jOjI4MTpcdFx0XHQgICAgICAgc3RydWN0IG1tODF4X2Z3X2NhcHMgKmNhcGFiaWxpdGllcylcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29tbWFuZC5jLTI4Mi17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb21tYW5kLmMtMjg5LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb21tYW5kLmM6MjkwOlx0cmV0ID0gbW04MXhfY21kX3R4KG1vcnMsIChzdHJ1Y3QgaG9zdF9jbWRfcmVzcCAqKVx1MDAyNnJzcCxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29tbWFuZC5jLTI5MS1cdFx0XHQgICAoc3RydWN0IGhvc3RfY21kX3JlcSAqKVx1MDAyNnJlcSwgc2l6ZW9mKHJzcCksIDApO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29tbWFuZC5jLTI5NS1cdGNhcGFiaWxpdGllcy1cdTAwM2VhbXBkdV9tc3MgPSByc3AuY2FwYWJpbGl0aWVzLmFtcGR1X21zcztcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29tbWFuZC5jOjI5NjpcdGNhcGFiaWxpdGllcy1cdTAwM2VtbTgxeF9tbXNzX29mZnNldCA9IHJzcC5tb3JzZV9tbXNzX29mZnNldDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29tbWFuZC5jLTI5Ny1cdGNhcGFiaWxpdGllcy1cdTAwM2ViZWFtZm9ybWVlX3N0c19jYXBhYmlsaXR5ID1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuYy0zMDgtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuYzozMDk6aW50IG1tODF4X2NtZF9nZXRfbWF4X3R4cG93ZXIoc3RydWN0IG1tODF4ICptb3JzLCBzMzIgKm91dF9wb3dlcl9tYm0pXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuYy0zMTAte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29tbWFuZC5jLTMxNi1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29tbWFuZC5jOjMxNzpcdHJldCA9IG1tODF4X2NtZF90eChtb3JzLCAoc3RydWN0IGhvc3RfY21kX3Jlc3AgKilcdTAwMjZyZXNwLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb21tYW5kLmMtMzE4LVx0XHRcdCAgIChzdHJ1Y3QgaG9zdF9jbWRfcmVxICopXHUwMDI2cmVxLCBzaXplb2YocmVzcCksIDApO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29tbWFuZC5jLTMyNC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29tbWFuZC5jOjMyNTppbnQgbW04MXhfY21kX2h3X3NjYW4oc3RydWN0IG1tODF4ICptb3JzLCBzdHJ1Y3QgbW04MXhfaHdfc2Nhbl9wYXJhbXMgKnBhcmFtcyxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29tbWFuZC5jLTMyNi1cdFx0ICAgICAgYm9vbCBzdG9yZSlcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuYy0zMzMtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuYzozMzQ6XHRjbWRfc2l6ZSA9IG1tODF4X2h3X3NjYW5faF9nZXRfY21kX3NpemUocGFyYW1zKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29tbWFuZC5jLTMzNS1cdGNtZF9zaXplID0gUk9VTkRfQllURVNfVE9fV09SRChjbWRfc2l6ZSk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb21tYW5kLmMtMzUzLVx0XHRyZXEtXHUwMDNlZHdlbGxfdGltZV9tcyA9IGNwdV90b19sZTMyKHBhcmFtcy1cdTAwM2Vkd2VsbF90aW1lX21zKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29tbWFuZC5jOjM1NDpcdFx0YnVmID0gbW04MXhfaHdfc2Nhbl9oX2luc2VydF90bHZzKHBhcmFtcywgYnVmKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29tbWFuZC5jLTM1NS1cdH1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuYy0zNTktXHRyZXEtXHUwMDNlaGRyLmxlbiA9IGNwdV90b19sZTE2KCh1MTYpKChidWYgLSAodTggKilyZXEpIC0gc2l6ZW9mKHJlcS1cdTAwM2VoZHIpKSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuYzozNjA6XHRyZXQgPSBtbTgxeF9jbWRfdHgobW9ycywgTlVMTCwgKHN0cnVjdCBob3N0X2NtZF9yZXEgKilyZXEsIDAsIDApO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb21tYW5kLmMtMzYxLVx0a2ZyZWUocmVxKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuYy0zNjUtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuYzozNjY6aW50IG1tODF4X2NtZF9zZXRfdHhwb3dlcihzdHJ1Y3QgbW04MXggKm1vcnMsIHMzMiAqb3V0X3Bvd2VyX21ibSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29tbWFuZC5jLTM2Ny1cdFx0XHQgIGludCB0eHBvd2VyX21ibSlcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuYy0zNzUtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuYzozNzY6XHRyZXQgPSBtbTgxeF9jbWRfdHgobW9ycywgKHN0cnVjdCBob3N0X2NtZF9yZXNwICopXHUwMDI2cmVzcCxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29tbWFuZC5jLTM3Ny1cdFx0XHQgICAoc3RydWN0IGhvc3RfY21kX3JlcSAqKVx1MDAyNnJlcSwgc2l6ZW9mKHJlc3ApLCAwKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuYy0zODMtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuYzozODQ6aW50IG1tODF4X2NtZF9zZXRfY2hhbm5lbChzdHJ1Y3QgbW04MXggKm1vcnMsIHUzMiBvcF9jaGFuX2ZyZXFfaHosXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuYy0zODUtXHRcdFx0ICB1OCBwcmlfMW1oel9jaGFuX2lkeCwgdTggb3BfYndfbWh6LCB1OCBwcmlfYndfbWh6LFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29tbWFuZC5jLTM5OC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29tbWFuZC5jOjM5OTpcdHJldCA9IG1tODF4X2NtZF90eChtb3JzLCAoc3RydWN0IGhvc3RfY21kX3Jlc3AgKilcdTAwMjZyZXNwLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb21tYW5kLmMtNDAwLVx0XHRcdCAgIChzdHJ1Y3QgaG9zdF9jbWRfcmVxICopXHUwMDI2cmVxLCBzaXplb2YocmVzcCksIDApO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29tbWFuZC5jLTQwNi1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29tbWFuZC5jOjQwNzppbnQgbW04MXhfY21kX2Rpc2FibGVfa2V5KHN0cnVjdCBtbTgxeCAqbW9ycywgc3RydWN0IG1tODF4X3ZpZiAqbW9yc192aWYsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuYy00MDgtXHRcdFx0ICB1MTYgYWlkLCBzdHJ1Y3QgaWVlZTgwMjExX2tleV9jb25mICprZXkpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb21tYW5kLmMtNDE5LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb21tYW5kLmM6NDIwOlx0cmV0dXJuIG1tODF4X2NtZF90eChtb3JzLCBOVUxMLCAoc3RydWN0IGhvc3RfY21kX3JlcSAqKVx1MDAyNnJlcSwgMCwgMCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuYy00MjEtfVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb21tYW5kLmMtNDIyLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb21tYW5kLmM6NDIzOmludCBtbTgxeF9jbWRfaW5zdGFsbF9rZXkoc3RydWN0IG1tODF4ICptb3JzLCBzdHJ1Y3QgbW04MXhfdmlmICptb3JzX3ZpZixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29tbWFuZC5jLTQyNC1cdFx0XHQgIHUxNiBhaWQsIHN0cnVjdCBpZWVlODAyMTFfa2V5X2NvbmYgKmtleSxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuYy00NDYtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuYzo0NDc6XHRyZXQgPSBtbTgxeF9jbWRfdHgobW9ycywgKHN0cnVjdCBob3N0X2NtZF9yZXNwICopXHUwMDI2cmVzcCxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29tbWFuZC5jLTQ0OC1cdFx0XHQgICAoc3RydWN0IGhvc3RfY21kX3JlcSAqKVx1MDAyNnJlcSwgc2l6ZW9mKHJlc3ApLCAwKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuYy00NTctXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuYzo0NTg6aW50IG1tODF4X2NtZF9jZmdfbXVsdGljYXN0X2ZpbHRlcihzdHJ1Y3QgbW04MXggKm1vcnMsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuYzo0NTk6XHRcdFx0XHQgICBzdHJ1Y3QgbW04MXhfdmlmICptb3JzX3ZpZilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29tbWFuZC5jLTQ2MC17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb21tYW5kLmMtNDc1LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb21tYW5kLmM6NDc2Olx0cmV0ID0gbW04MXhfY21kX3R4KG1vcnMsIE5VTEwsIChzdHJ1Y3QgaG9zdF9jbWRfcmVxICopcmVxLCAwLCAwKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29tbWFuZC5jLTQ3Ny1cdGtmcmVlKHJlcSk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb21tYW5kLmMtNDgwLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb21tYW5kLmM6NDgxOmludCBtbTgxeF9jbWRfY2ZnX2JzcyhzdHJ1Y3QgbW04MXggKm1vcnMsIHUxNiB2aWZfaWQsIHUxNiBiZWFjb25faW50LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb21tYW5kLmMtNDgyLVx0XHQgICAgICB1MTYgZHRpbV9wZXJpb2QsIHUzMiBjc3NpZClcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuYy00OTAtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuYzo0OTE6XHRyZXR1cm4gbW04MXhfY21kX3R4KG1vcnMsIE5VTEwsIChzdHJ1Y3QgaG9zdF9jbWRfcmVxICopXHUwMDI2cmVxLCAwLCAwKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29tbWFuZC5jLTQ5Mi19XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuYy00OTMtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuYzo0OTQ6aW50IG1tODF4X2NtZF9jb25maWdfYmVhY29uX3RpbWVyKHN0cnVjdCBtbTgxeCAqbW9ycywgdm9pZCAqbW04MXhfdmlmLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb21tYW5kLmMtNDk1LVx0XHRcdFx0ICBib29sIGVuYWJsZWQpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuYy00OTYte1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb21tYW5kLmM6NDk3Olx0c3RydWN0IG1tODF4X3ZpZiAqdmlmID0gbW04MXhfdmlmO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb21tYW5kLmMtNDk4LVx0c3RydWN0IGhvc3RfY21kX3JlcV9ic3NfYmVhY29uX2NvbmZpZyByZXEgPSB7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb21tYW5kLmMtNTAzLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb21tYW5kLmM6NTA0Olx0cmV0dXJuIG1tODF4X2NtZF90eChtb3JzLCBOVUxMLCAoc3RydWN0IGhvc3RfY21kX3JlcSAqKVx1MDAyNnJlcSwgMCwgMCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuYy01MDUtfVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb21tYW5kLmMtNTA2LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb21tYW5kLmM6NTA3OmludCBtbTgxeF9jbWRfc2V0X3BzKHN0cnVjdCBtbTgxeCAqbW9ycywgYm9vbCBlbmFibGVkKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb21tYW5kLmMtNTA4LXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuYy01MTMtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuYzo1MTQ6XHRyZXR1cm4gbW04MXhfY21kX3R4KG1vcnMsIE5VTEwsIChzdHJ1Y3QgaG9zdF9jbWRfcmVxICopXHUwMDI2cmVxLCAwLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb21tYW5kLmMtNTE1LVx0XHRcdCAgICBIT1NUX0NNRF9QT1dFUlNBVkVfVElNRU9VVF9NUyk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb21tYW5kLmMtNTE3LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb21tYW5kLmM6NTE4OmludCBtbTgxeF9jbWRfY2ZnX3FvcyhzdHJ1Y3QgbW04MXggKm1vcnMsIHN0cnVjdCBtbTgxeF9xdWV1ZV9wYXJhbXMgKnBhcmFtcylcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29tbWFuZC5jLTUxOS17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb21tYW5kLmMtNTI5LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb21tYW5kLmM6NTMwOlx0cmV0dXJuIG1tODF4X2NtZF90eChtb3JzLCBOVUxMLCAoc3RydWN0IGhvc3RfY21kX3JlcSAqKVx1MDAyNnJlcSwgMCwgMCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuYy01MzEtfVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb21tYW5kLmMtNTMyLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb21tYW5kLmM6NTMzOmludCBtbTgxeF9jbWRfcm1faWYoc3RydWN0IG1tODF4ICptb3JzLCB1MTYgdmlmX2lkKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb21tYW5kLmMtNTM0LXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuYy01MzgtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuYzo1Mzk6XHRyZXR1cm4gbW04MXhfY21kX3R4KG1vcnMsIE5VTEwsIChzdHJ1Y3QgaG9zdF9jbWRfcmVxICopXHUwMDI2cmVxLCAwLCAwKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29tbWFuZC5jLTU0MC19XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuYy01NDEtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuYzo1NDI6aW50IG1tODF4X2NtZF9zZXRfZnJhZ190aHJlc2hvbGQoc3RydWN0IG1tODF4ICptb3JzLCB1MzIgZnJhZ190aHJlc2hvbGQpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuYy01NDMte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29tbWFuZC5jLTU1MC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29tbWFuZC5jOjU1MTpcdHJldHVybiBtbTgxeF9jbWRfdHgobW9ycywgTlVMTCwgKHN0cnVjdCBob3N0X2NtZF9yZXEgKilcdTAwMjZyZXEsIDAsIDApO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb21tYW5kLmMtNTUyLX1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29tbWFuZC5jLTU1My1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29tbWFuZC5jOjU1NDppbnQgbW04MXhfY21kX2dldF9kaXNhYmxlZF9jaGFubmVscyhcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29tbWFuZC5jOjU1NTpcdHN0cnVjdCBtbTgxeCAqbW9ycywgc3RydWN0IGhvc3RfY21kX3Jlc3BfZ2V0X2Rpc2FibGVkX2NoYW5uZWxzICpyZXNwLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb21tYW5kLmMtNTU2LVx0dWludCByZXNwX2xlbilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuYy01NjEtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuYzo1NjI6XHRyZXR1cm4gbW04MXhfY21kX3R4KG1vcnMsIChzdHJ1Y3QgaG9zdF9jbWRfcmVzcCAqKXJlc3AsIFx1MDAyNnJlcSwgcmVzcF9sZW4sXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuYy01NjMtXHRcdFx0ICAgIDApO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29tbWFuZC5oLTE4LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb21tYW5kLmg6MTk6c3RydWN0IG1tODF4X3F1ZXVlX3BhcmFtcztcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29tbWFuZC5oLTIwLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb21tYW5kLmg6MjE6ZW51bSBtbTgxeF9jbWRfcmV0dXJuX2NvZGUge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb21tYW5kLmgtMjItXHRNTTgxWF9SRVRfU1VDQ0VTUyA9IDAsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb21tYW5kLmg9NDQ9c3RydWN0IGhvc3RfY21kX2V2ZW50IHtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuaC00OC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29tbWFuZC5oOjQ5OmludCBtbTgxeF9jbWRfcmVzcF9wcm9jZXNzKHN0cnVjdCBtbTgxeCAqbW9ycywgc3RydWN0IHNrX2J1ZmYgKnNrYik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuaDo1MDppbnQgbW04MXhfY21kX2FkZF9pZihzdHJ1Y3QgbW04MXggKm1vcnMsIHUxNiAqdmlmX2lkLCBjb25zdCB1OCAqYWRkcixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29tbWFuZC5oLTUxLVx0XHQgICAgIGVudW0gbmw4MDIxMV9pZnR5cGUgdHlwZSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuaDo1MjppbnQgbW04MXhfY21kX2dldF9jYXBhYmlsaXRpZXMoc3RydWN0IG1tODF4ICptb3JzLCB1MTYgdmlmX2lkLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb21tYW5kLmg6NTM6XHRcdFx0ICAgICAgIHN0cnVjdCBtbTgxeF9md19jYXBzICpjYXBhYmlsaXRpZXMpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb21tYW5kLmg6NTQ6aW50IG1tODF4X2NtZF9jZmdfcW9zKHN0cnVjdCBtbTgxeCAqbW9ycywgc3RydWN0IG1tODF4X3F1ZXVlX3BhcmFtcyAqcGFyYW1zKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29tbWFuZC5oOjU1OmludCBtbTgxeF9jbWRfY29uZmlnX2JlYWNvbl90aW1lcihzdHJ1Y3QgbW04MXggKm1vcnMsIHZvaWQgKm1tODF4X3ZpZixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29tbWFuZC5oLTU2LVx0XHRcdFx0ICBib29sIGVuYWJsZWQpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb21tYW5kLmg6NTc6aW50IG1tODF4X2NtZF9jZmdfYnNzKHN0cnVjdCBtbTgxeCAqbW9ycywgdTE2IHZpZl9pZCwgdTE2IGJlYWNvbl9pbnQsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuaC01OC1cdFx0ICAgICAgdTE2IGR0aW1fcGVyaW9kLCB1MzIgY3NzaWQpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb21tYW5kLmg6NTk6aW50IG1tODF4X2NtZF9zZXRfY2hhbm5lbChzdHJ1Y3QgbW04MXggKm1vcnMsIHUzMiBvcF9jaGFuX2ZyZXFfaHosXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuaC02MC1cdFx0XHQgIHU4IHByaV8xbWh6X2NoYW5faWR4LCB1OCBvcF9id19taHosIHU4IHByaV9id19taHosXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuaC02MS1cdFx0XHQgIHMzMiAqcG93ZXJfbWJtKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29tbWFuZC5oOjYyOmludCBtbTgxeF9jbWRfZ2V0X21heF90eHBvd2VyKHN0cnVjdCBtbTgxeCAqbW9ycywgczMyICpvdXRfcG93ZXJfbWJtKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29tbWFuZC5oOjYzOmludCBtbTgxeF9jbWRfc2V0X3R4cG93ZXIoc3RydWN0IG1tODF4ICptb3JzLCBzMzIgKm91dF9wb3dlcl9tYm0sXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuaC02NC1cdFx0XHQgIGludCB0eHBvd2VyX21ibSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuaDo2NTppbnQgbW04MXhfY21kX2h3X3NjYW4oc3RydWN0IG1tODF4ICptb3JzLCBzdHJ1Y3QgbW04MXhfaHdfc2Nhbl9wYXJhbXMgKnBhcmFtcyxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29tbWFuZC5oLTY2LVx0XHQgICAgICBib29sIHN0b3JlKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29tbWFuZC5oOjY3OmludCBtbTgxeF9jbWRfc2V0X3BzKHN0cnVjdCBtbTgxeCAqbW9ycywgYm9vbCBlbmFibGVkKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29tbWFuZC5oOjY4OmludCBtbTgxeF9jbWRfY2ZnX211bHRpY2FzdF9maWx0ZXIoc3RydWN0IG1tODF4ICptb3JzLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb21tYW5kLmg6Njk6XHRcdFx0XHQgICBzdHJ1Y3QgbW04MXhfdmlmICptb3JzX3ZpZik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuaDo3MDppbnQgbW04MXhfY21kX3N0YV9zdGF0ZShzdHJ1Y3QgbW04MXggKm1vcnMsIHN0cnVjdCBtbTgxeF92aWYgKm1vcnNfdmlmLCB1MTYgYWlkLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb21tYW5kLmgtNzEtXHRcdFx0c3RydWN0IGllZWU4MDIxMV9zdGEgKnN0YSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29tbWFuZC5oLTcyLVx0XHRcdGVudW0gaWVlZTgwMjExX3N0YV9zdGF0ZSBzdGF0ZSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuaDo3MzppbnQgbW04MXhfY21kX2luc3RhbGxfa2V5KHN0cnVjdCBtbTgxeCAqbW9ycywgc3RydWN0IG1tODF4X3ZpZiAqbW9yc192aWYsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuaC03NC1cdFx0XHQgIHUxNiBhaWQsIHN0cnVjdCBpZWVlODAyMTFfa2V5X2NvbmYgKmtleSxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuaC03Ni1cdFx0XHQgIGVudW0gaG9zdF9jbWRfYWVzX2tleV9sZW4gbGVuZ3RoKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29tbWFuZC5oOjc3OmludCBtbTgxeF9jbWRfZGlzYWJsZV9rZXkoc3RydWN0IG1tODF4ICptb3JzLCBzdHJ1Y3QgbW04MXhfdmlmICptb3JzX3ZpZixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29tbWFuZC5oLTc4LVx0XHRcdCAgdTE2IGFpZCwgc3RydWN0IGllZWU4MDIxMV9rZXlfY29uZiAqa2V5KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29tbWFuZC5oOjc5OmludCBtbTgxeF9jbWRfcm1faWYoc3RydWN0IG1tODF4ICptb3JzLCB1MTYgdmlmX2lkKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29tbWFuZC5oOjgwOmludCBtbTgxeF9jbWRfc2V0X2ZyYWdfdGhyZXNob2xkKHN0cnVjdCBtbTgxeCAqbW9ycywgdTMyIGZyYWdfdGhyZXNob2xkKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29tbWFuZC5oOjgxOmludCBtbTgxeF9jbWRfZ2V0X2Rpc2FibGVkX2NoYW5uZWxzKFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb21tYW5kLmg6ODI6XHRzdHJ1Y3QgbW04MXggKm1vcnMsIHN0cnVjdCBob3N0X2NtZF9yZXNwX2dldF9kaXNhYmxlZF9jaGFubmVscyAqcmVzcCxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29tbWFuZC5oLTgzLVx0dWludCByZXNwX2xlbik7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb3JlLmMtMTAtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvcmUuYzoxMTpzdGF0aWMgaW50IG1tODF4X2NvcmVfYXR0YWNoX3JlZ3Moc3RydWN0IG1tODF4ICptb3JzKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb3JlLmMtMTIte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29yZS5jLTE0LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb3JlLmM6MTU6XHRtbTgxeF9jbGFpbV9idXMobW9ycyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvcmUuYzoxNjpcdHJldCA9IG1tODF4X3JlZzMyX3JlYWQobW9ycywgTU04MTA4X1JFR19DSElQX0lELCBcdTAwMjZtb3JzLVx1MDAzZWNoaXBfaWQpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb3JlLmM6MTc6XHRtbTgxeF9yZWxlYXNlX2J1cyhtb3JzKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29yZS5jLTE4LVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29yZS5jLTI2LVx0XHRtb3JzLVx1MDAzZXJlZ3MgPSBcdTAwMjZtbTgxMDhfcmVncztcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29yZS5jOjI3Olx0XHRtb3JzLVx1MDAzZWhpZi5vcHMgPSBcdTAwMjZtbTgxeF95YXBzX29wcztcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29yZS5jLTI4LVx0XHRicmVhaztcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvcmUuYy0zNS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29yZS5jOjM2OnN0YXRpYyB2b2lkIG1tODF4X2NvcmVfaW5pdF9tYWNfYWRkcihzdHJ1Y3QgbW04MXggKm1vcnMpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvcmUuYy0zNy17XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvcmUuYzozODpcdGludCByZXQgPSBtbTgxeF9od19vdHBfZ2V0X21hY19hZGRyKG1vcnMpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb3JlLmMtMzktXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb3JlLmMtNDMtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvcmUuYzo0NDpjaGFyICptbTgxeF9jb3JlX2dldF9md19wYXRoKHUzMiBjaGlwX2lkLCB1MzIgZndfdmVyKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb3JlLmMtNDUte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29yZS5jLTU4LX1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29yZS5jOjU5OkVYUE9SVF9TWU1CT0xfR1BMKG1tODF4X2NvcmVfZ2V0X2Z3X3BhdGgpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb3JlLmMtNjAtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvcmUuYzo2MTpzdHJ1Y3QgbW04MXggKm1tODF4X2NvcmVfYWxsb2Moc2l6ZV90IHByaXZfc2l6ZSwgc3RydWN0IGRldmljZSAqZGV2KVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb3JlLmMtNjIte1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb3JlLmM6NjM6XHRyZXR1cm4gbW04MXhfbWFjX2FsbG9jKHByaXZfc2l6ZSwgZGV2KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29yZS5jLTY0LX1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29yZS5jOjY1OkVYUE9SVF9TWU1CT0xfR1BMKG1tODF4X2NvcmVfYWxsb2MpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb3JlLmMtNjYtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvcmUuYzo2NzppbnQgbW04MXhfY29yZV9pbml0KHN0cnVjdCBtbTgxeCAqbW9ycylcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29yZS5jLTY4LXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvcmUuYy03My1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29yZS5jOjc0Olx0bW04MXhfY29yZV9pbml0X21hY19hZGRyKG1vcnMpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb3JlLmMtNzUtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvcmUuYzo3NjpcdHJldCA9IG1tODF4X2NvcmVfYXR0YWNoX3JlZ3MobW9ycyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvcmUuYy03Ny1cdGlmIChyZXQpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb3JlLmMtODktXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvcmUuYzo5MDpcdHJldCA9IG1tODF4X2hpZl9pbml0KG1vcnMpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb3JlLmMtOTEtXHRpZiAocmV0KVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29yZS5jLTEwNS19XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvcmUuYzoxMDY6RVhQT1JUX1NZTUJPTF9HUEwobW04MXhfY29yZV9pbml0KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29yZS5jLTEwNy1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29yZS5jOjEwODppbnQgbW04MXhfY29yZV9yZWdpc3RlcihzdHJ1Y3QgbW04MXggKm1vcnMpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvcmUuYy0xMDkte1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb3JlLmM6MTEwOlx0cmV0dXJuIG1tODF4X21hY19yZWdpc3Rlcihtb3JzKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29yZS5jLTExMS19XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvcmUuYzoxMTI6RVhQT1JUX1NZTUJPTF9HUEwobW04MXhfY29yZV9yZWdpc3Rlcik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvcmUuYy0xMTMtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvcmUuYzoxMTQ6dm9pZCBtbTgxeF9jb3JlX3VucmVnaXN0ZXIoc3RydWN0IG1tODF4ICptb3JzKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb3JlLmMtMTE1LXtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29yZS5jOjExNjpcdG1tODF4X21hY191bnJlZ2lzdGVyKG1vcnMpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb3JlLmMtMTE3LX1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29yZS5jOjExODpFWFBPUlRfU1lNQk9MX0dQTChtbTgxeF9jb3JlX3VucmVnaXN0ZXIpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb3JlLmMtMTE5LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb3JlLmM6MTIwOnZvaWQgbW04MXhfY29yZV9kZWluaXQoc3RydWN0IG1tODF4ICptb3JzKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb3JlLmMtMTIxLXtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29yZS5jOjEyMjpcdG1tODF4X2hpZl9maW5pc2gobW9ycyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvcmUuYy0xMjMtXHRmbHVzaF93b3JrcXVldWUobW9ycy1cdTAwM2VuZXRfd3EpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29yZS5jLTEyNy19XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvcmUuYzoxMjg6RVhQT1JUX1NZTUJPTF9HUEwobW04MXhfY29yZV9kZWluaXQpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb3JlLmMtMTI5LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb3JlLmM6MTMwOnZvaWQgbW04MXhfY29yZV9mcmVlKHN0cnVjdCBtbTgxeCAqbW9ycylcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29yZS5jLTEzMS17XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvcmUuYzoxMzI6XHRtbTgxeF9tYWNfZnJlZShtb3JzKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29yZS5jLTEzMy19XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvcmUuYzoxMzQ6RVhQT1JUX1NZTUJPTF9HUEwobW04MXhfY29yZV9mcmVlKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29yZS5jLTEzNS1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvcmUuaC01NC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29yZS5oOjU1OnN0cnVjdCBtbTgxeF9idXNfb3BzO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb3JlLmg6NTY6c3RydWN0IG1tODF4X2hpZl9vcHM7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvcmUuaC01Ny1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvcmUuaC02Mi1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29yZS5oOjYzOmVudW0gbW04MXhfY2Fwc19mbGFncyB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvcmUuaC02NC1cdE1NODFYX0NBUFNfRldfU1RBUlQgPSAwLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29yZS5oLTEzMS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29yZS5oOjEzMjpzdHJ1Y3QgbW04MXhfZndfY2FwcyB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvcmUuaC0xMzMtXHR1MzIgZmxhZ3NbRldfQ0FQQUJJTElUSUVTX0ZMQUdTX1dJRFRIXTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvcmUuaC0xMzctXHR1OCBtYXhpbXVtX2FtcGR1X2xlbmd0aF9leHBvbmVudDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29yZS5oOjEzODpcdHU4IG1tODF4X21tc3Nfb2Zmc2V0O1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb3JlLmgtMTM5LX07XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb3JlLmgtMTQxLSNkZWZpbmUgTU04MVhfRldfU1VQUChNTTgxWF9DQVBTLCBDQVBBQklMSVRZKSBcXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb3JlLmg6MTQyOlx0bW04MXhfY2Fwc19zdXBwb3J0ZWQoTU04MVhfQ0FQUywgTU04MVhfQ0FQU18jI0NBUEFCSUxJVFkpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvcmUuaC0xNDMtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvcmUuaDoxNDQ6c3RhdGljIGlubGluZSBib29sIG1tODF4X2NhcHNfc3VwcG9ydGVkKHN0cnVjdCBtbTgxeF9md19jYXBzICpjYXBzLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb3JlLmg6MTQ1Olx0XHRcdFx0XHRlbnVtIG1tODF4X2NhcHNfZmxhZ3MgZmxhZylcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29yZS5oLTE0Ni17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb3JlLmgtMTUxLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb3JlLmg6MTUyOnN0cnVjdCBtbTgxeF9wcyB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvcmUuaC0xNTMtXHR1MzIgd2FrZXJzO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29yZS5oLTE2MC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29yZS5oOjE2MTplbnVtIG1tODF4X3BhZ2VfYWNpIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29yZS5oLTE2Mi1cdE1NODFYX0FDSV9CRSA9IDAsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb3JlLmgtMTY3LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb3JlLmg6MTY4OmVudW0gbW04MXhfcW9zX3RpZF91cF9pbmRleCB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvcmUuaC0xNjktXHRNTTgxWF9RT1NfVElEX1VQX0JLID0gMSxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvcmUuaC0xODEtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvcmUuaDoxODI6c3RydWN0IG1tODF4X3N3X3ZlcnNpb24ge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb3JlLmgtMTgzLVx0dTggbWFqb3I7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb3JlLmgtMTg3LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb3JlLmg6MTg4OnN0cnVjdCBtbTgxeF9zdGEge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb3JlLmgtMTg5LVx0Y29uc3Qgc3RydWN0IGllZWU4MDIxMV92aWYgKnZpZjtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvcmUuaC0xOTUtXHRpbnQgbWF4X2J3X21oejtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29yZS5oOjE5NjpcdHN0cnVjdCBtbTgxeF9yY19zdGEgcmM7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvcmUuaC0xOTctXHRzdHJ1Y3QgbW1yY19yYXRlIGxhc3Rfc3RhX3R4X3JhdGU7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb3JlLmgtMjAxLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb3JlLmg6MjAyOnN0cnVjdCBtbTgxeF92aWYge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb3JlLmg6MjAzOlx0c3RydWN0IG1tODF4ICptb3JzO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb3JlLmgtMjA0LVx0dTE2IGlkO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29yZS5oLTIxNi1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29yZS5oOjIxNzpzdHJ1Y3QgbW04MXhfc3RhbGVfdHhfc3RhdHVzIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29yZS5oLTIxOC1cdC8qIFN0YWxlIFR4IGxvY2sgKi9cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvcmUuaD0yMjM9c3RydWN0IG1jYXN0X2ZpbHRlciB7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb3JlLmgtMjMyLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb3JlLmg6MjMzOmVudW0gbW04MXhfaHdfc2Nhbl9vcCB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvcmUuaC0yMzQtXHRNTTgxWF9IV19TQ0FOX09QX1NUQVJULFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29yZS5oLTIzNy1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29yZS5oOjIzODpzdHJ1Y3QgbW04MXhfaHdfc2Nhbl9wYXJhbXMge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb3JlLmgtMjM5LVx0c3RydWN0IGllZWU4MDIxMV9odyAqaHc7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb3JlLmgtMjQ1LVx0dTMyIGR3ZWxsX29uX2hvbWVfbXM7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvcmUuaDoyNDY6XHRlbnVtIG1tODF4X2h3X3NjYW5fb3Agb3BlcmF0aW9uO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb3JlLmgtMjQ3LVx0Ym9vbCBzdG9yZTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvcmUuaC0yNjEtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvcmUuaDoyNjI6ZW51bSBtbTgxeF9od19zY2FuX3N0YXRlIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29yZS5oLTI2My1cdEhXX1NDQU5fU1RBVEVfSURMRSxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvcmUuaC0yNjctXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvcmUuaDoyNjg6c3RydWN0IG1tODF4X2h3X3NjYW4ge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb3JlLmg6MjY5Olx0ZW51bSBtbTgxeF9od19zY2FuX3N0YXRlIHN0YXRlO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb3JlLmgtMjcwLVx0c3RydWN0IGNvbXBsZXRpb24gc2Nhbl9kb25lO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb3JlLmg6MjcxOlx0c3RydWN0IG1tODF4X2h3X3NjYW5fcGFyYW1zICpwYXJhbXM7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvcmUuaC0yNzItXHRzdHJ1Y3QgZGVsYXllZF93b3JrIHRpbWVvdXQ7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb3JlLmgtMjc1LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb3JlLmg6Mjc2OmVudW0gbW04MXhfaGlmX2V2ZW50X2ZsYWdzIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29yZS5oLTI3Ny1cdE1NODFYX0hJRl9FVlRfUlhfUEVORCxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvcmUuaC0yODgtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvcmUuaDoyODk6ZW51bSBtbTgxeF9zdGF0ZV9mbGFncyB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvcmUuaC0yOTAtXHRNTTgxWF9TVEFURV9DSElQX1VOUkVTUE9OU0lWRSxcbi0tXG5cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNyAwNTowNDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxODA4NAoJCQkJCQkJb3V0cHV0OiA0MwoJCQkJCQkJdGhvdWdodHM6IDI2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBsZXQmIzM5O3MgZGl2ZSBpbnRvIHRoaXMuIEhlcmUmIzM5O3MgbXkgdGhvdWdodCBwcm9jZXNzIG9uIHRoaXM6CgoqKkFuYWx5emluZyB0aGUgbW04MXggVVNCIERyaXZlcioqCgpBbHJpZ2h0LCBiZWZvcmUgSSBnZXQgdG9vIGRlZXAgaW50byB0aGlzLCBJIG5lZWQgdG8gZ2V0IGEgaGFuZGxlIG9uIHRoZSBiaWdnZXIgcGljdHVyZS4gSSBzaG91bGQgc3RhcnQgd2l0aCB0aGUgS2NvbmZpZyBmaWxlcyBmb3IgdGhlIG1tODF4IHBsYXRmb3JtLCBwYXJ0aWN1bGFybHkgdGhlIHJlbGV2YW50IFVTQiBzZXR0aW5ncy4gSSB3YW50IHRvIHNlZSB3aGF0IG9wdGlvbnMgYXJlIGF2YWlsYWJsZSwgd2hhdCYjMzk7cyBlbmFibGVkIGJ5IGRlZmF1bHQsIGFuZCBob3cgdGhlIGRyaXZlciYjMzk7cyBjb25maWd1cmF0aW9uIGlzIGNvbnRyb2xsZWQgYXQgY29tcGlsZSB0aW1lLiBUaGlzIHdpbGwgZ2l2ZSBtZSBhIGJhc2UgdW5kZXJzdGFuZGluZyBvZiB0aGUgcG9zc2libGUgYnVpbGQgY29uZmlndXJhdGlvbnMgYW5kIGNvbnN0cmFpbnRzLiBUaGVuLCBJIG5lZWQgdG8gb3BlbiB1cCB1c2IuYywgdGhlIGNvcmUgZHJpdmVyIGZpbGUuIEkgbmVlZCB0byBnZXQgaW50byB0aGUgbml0dHktZ3JpdHR5IGFuZCB0cmFjZSB0aGUgcHJvYmUgZnVuY3Rpb24gdG8gc2VlIHRoZSBoYXJkd2FyZSBkZXRlY3Rpb24gcHJvY2Vzcy4gSSYjMzk7bGwgbmVlZCB0byBrbm93OiBob3cgYXJlIHRoZSBVU0IgZGV2aWNlcyBpZGVudGlmaWVkPyBXaGF0IHJlc291cmNlcyBkb2VzIGl0IGFsbG9jYXRlPyBEb2VzIGl0IGhhbmRsZSBwb3dlciBtYW5hZ2VtZW50IGFwcHJvcHJpYXRlbHk/IFdoYXQmIzM5O3MgdGhlIGludGVycnVwdCBoYW5kbGluZyBsaWtlPyBCYXNpY2FsbHksIEkgbmVlZCB0byBmb2xsb3cgdGhlIGRyaXZlciYjMzk7cyBleGVjdXRpb24gcGF0aCBmcm9tIGRldmljZSBkaXNjb3ZlcnkgdGhyb3VnaCBpbml0aWFsaXphdGlvbiB0byBlbnN1cmUgZXZlcnl0aGluZyBpcyB3b3JraW5nIGFzIGV4cGVjdGVkLiBBbmQsIHdoZXJlIGFyZSB0aGUgaW1wb3J0YW50IGRhdGEgc3RydWN0dXJlcyBkZWZpbmVkPyBJcyBpdCBkb2luZyBhbGwgdGhlIHJpZ2h0IGNoZWNrcyBhbmQgZXJyb3IgaGFuZGxpbmc/CgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDcgMDU6MDQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L0tjb25maWcmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAxLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDYwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAgIDE6XHQjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wXG4gICAyOlx0XG4gICAzOlx0Y29uZmlnIE1NODFYXG4gICA0Olx0XHR0cmlzdGF0ZSBcJiMzNDtNb3JzZSBNaWNybyBNTTgxeCB3aXJlbGVzcyBkZXZpY2VzXCYjMzQ7IGlmIENPTVBJTEVfVEVTVFxuICAgNTpcdFx0ZGVwZW5kcyBvbiBNQUM4MDIxMVxuICAgNjpcdFx0c2VsZWN0IEZXX0xPQURFUlxuICAgNzpcdFx0c2VsZWN0IENSQzdcbiAgIDg6XHRcdGhlbHBcbiAgIDk6XHRcdCAgVGhpcyBtb2R1bGUgYWRkcyBzdXBwb3J0IGZvciB3aXJlbGVzcyBkZXZpY2VzIGJhc2VkXG4gIDEwOlx0XHQgIG9uIE1vcnNlIE1pY3JvIE1NODF4eCBjaGlwc2V0cy5cbiAgMTE6XHRcbiAgMTI6XHRjb25maWcgTU04MVhfVVNCXG4gIDEzOlx0XHR0cmlzdGF0ZSBcJiMzNDtNb3JzZSBNaWNybyBNTTgxeCBVU0Igc3VwcG9ydFwmIzM0O1xuICAxNDpcdFx0ZGVwZW5kcyBvbiBNQUM4MDIxMSBcdTAwMjZcdTAwMjYgVVNCXG4gIDE1Olx0XHRzZWxlY3QgTU04MVhcbiAgMTY6XHRcdGhlbHBcbiAgMTc6XHRcdCAgVGhpcyBtb2R1bGUgYWRkcyBzdXBwb3J0IGZvciB0aGUgVVNCIGludGVyZmFjZSBvZlxuICAxODpcdFx0ICBkZXZpY2VzIHVzaW5nIHRoZSBNb3JzZSBNaWNybyBNTTgxeCBjaGlwc2V0LlxuICAxOTpcdFxuICAyMDpcdGNvbmZpZyBNTTgxWF9TRElPXG4gIDIxOlx0XHR0cmlzdGF0ZSBcJiMzNDtNb3JzZSBNaWNybyBNTTgxeCBTRElPIHN1cHBvcnRcJiMzNDtcbiAgMjI6XHRcdGRlcGVuZHMgb24gTUFDODAyMTEgXHUwMDI2XHUwMDI2IE1NQ1xuICAyMzpcdFx0c2VsZWN0IE1NODFYXG4gIDI0Olx0XHRoZWxwXG4gIDI1Olx0XHQgIFRoaXMgbW9kdWxlIGFkZHMgc3VwcG9ydCBmb3IgdGhlIFNESU8gaW50ZXJmYWNlIG9mXG4gIDI2Olx0XHQgIGRldmljZXMgdXNpbmcgdGhlIE1vcnNlIE1pY3JvIE1NODF4IGNoaXBzZXQuXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDcgMDU6MDQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTg3NDIKCQkJCQkJCW91dHB1dDogNDUKCQkJCQkJCXRob3VnaHRzOiAxMDMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqSW5pdGlhbCBBc3Nlc3NtZW50ICZhbXA7IEludmVzdGlnYXRpdmUgUGF0aCoqCgpPa2F5LCBoZXJlJiMzOTtzIHdoYXQgSSYjMzk7bSBzZWVpbmc6IE1NODFYIGhhcyBNTTgxWF9VU0IsIGludGVyZXN0aW5nLiBNeSBpbW1lZGlhdGUgdGhvdWdodCBpcywgY2FuIHdlIGZ1enogdGhpcyB0aGluZyB2aWEgVVNCPyBJJiMzOTttIHRoaW5raW5nIHRvb2xzIGxpa2Ugc3l6a2FsbGVyLCBvciBtYXliZSBldmVuIGxldmVyYWdpbmcgUmF3IEdhZGdldCBvciBhIGR1bW15IEhDRCBzZXR1cCBmb3IgZW11bGF0aW9uLiBCZWZvcmUgSSBnbyB0b28gZGVlcCwgSSBuZWVkIHRvIGNoZWNrIHRoZSBVU0IgY29kZSBhbmQgcHJvYmUgcm91dGluZXMuIExldCYjMzk7cyBzZWUuLi4gSSYjMzk7bGwgZGl2ZSBpbnRvIGB1c2IuY2AgYW5kIHRoZW4gZGlnIGludG8gdGhlIHNwZWNpZmljcyBvZiB0aGUgTU04MVggaW1wbGVtZW50YXRpb24uIFRoYXQmIzM5O2xsIGJlIGluIGBkcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L3VzYi5jYCBhbmQgYGRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29tbWFuZC5jYC4gVGhvc2UgYXJlIHRoZSBsb2dpY2FsIHBsYWNlcyB0byBzdGFydC4gR290dGEgZ2V0IGEgZmVlbCBmb3IgaG93IHRoZXkmIzM5O3JlIGhhbmRsaW5nIFVTQiBjb21tdW5pY2F0aW9uIGFuZCBjb21tYW5kcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD44LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNyAwNTowNDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvdXNiLmMmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAxLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDEwMAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgICAxOlx0Ly8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxuICAgMjpcdC8qXG4gICAzOlx0ICogQ29weXJpZ2h0IChjKSAyMDE3LTIwMjYgTW9yc2UgTWljcm9cbiAgIDQ6XHQgKi9cbiAgIDU6XHQjaW5jbHVkZSBcdTAwM2NsaW51eC9qaWZmaWVzLmhcdTAwM2VcbiAgIDY6XHQjaW5jbHVkZSBcdTAwM2NsaW51eC9tb2R1bGUuaFx1MDAzZVxuICAgNzpcdCNpbmNsdWRlIFx1MDAzY2xpbnV4L3VzYi5oXHUwMDNlXG4gICA4Olx0I2luY2x1ZGUgXCYjMzQ7aGlmLmhcJiMzNDtcbiAgIDk6XHQjaW5jbHVkZSBcJiMzNDtidXMuaFwmIzM0O1xuICAxMDpcdCNpbmNsdWRlIFwmIzM0O21hYy5oXCYjMzQ7XG4gIDExOlx0I2luY2x1ZGUgXCYjMzQ7Y29yZS5oXCYjMzQ7XG4gIDEyOlx0XG4gIDEzOlx0LypcbiAgMTQ6XHQgKiBVUkIgdGltZW91dCBpbiBtaWxsaXNlY29uZHMuIElmIGFuIFVSQiBkb2VzIG5vdCBjb21wbGV0ZSB3aXRoaW4gdGhpc1xuICAxNTpcdCAqIHRpbWUsIGl0IHdpbGwgYmUga2lsbGVkLiBUaGlzIHRpbWVvdXQgbmVlZHMgdG8gYWNjb3VudCBmb3IgVVNCIHN1c3BlbmRhbmRcbiAgMTY6XHQgKiByZXN1bWUgb2NjdXJyaW5nIGJlZm9yZSB0aGUgVVJCIGNhbiBiZSB0cmFuc2ZlcnJlZCwgYW5kIGl0IGFsc28gbmVlZHMgdG9cbiAgMTc6XHQgKiBhY2NvdW50IGZvciB0cmFuc2ZlcnJpbmcgVVNCX01BWF9UUkFOU0ZFUl9TSVpFIGJ5dGVzIG92ZXIgYSBwb3RlbnRpYWxseVxuICAxODpcdCAqIHNsb3csIGNvbmdlc3RlZCBVU0IgRnVsbCBTcGVlZCBsaW5rLlxuICAxOTpcdCAqL1xuICAyMDpcdCNkZWZpbmUgVVJCX1RJTUVPVVRfTVMgMjUwXG4gIDIxOlx0XG4gIDIyOlx0LyogSGlnaCBzcGVlZCBVU0IgMl4oNC0xKSAqIDEyNXVzZWMgPSAxbXNlYyAqL1xuICAyMzpcdCNkZWZpbmUgTU04MVhfVVNCX0lOVEVSUlVQVF9JTlRFUlZBTCA0XG4gIDI0Olx0XG4gIDI1Olx0LyogTWF4IGJ5dGVzIHBlciBVU0IgcmVhZC93cml0ZSAqL1xuICAyNjpcdCNkZWZpbmUgVVNCX01BWF9UUkFOU0ZFUl9TSVpFICgxNiAqIDEwMjQpXG4gIDI3Olx0XG4gIDI4Olx0LyogSU5UIEVQIGJ1ZmZlciBzaXplICovXG4gIDI5Olx0I2RlZmluZSBNTTgxWF9FUF9JTlRfQlVGRkVSX1NJWkUgOFxuICAzMDpcdFxuICAzMTpcdC8qIE1vcnNlIHZlbmRvciBJRHMqL1xuICAzMjpcdCNkZWZpbmUgTU04MVhfVkVORE9SX0lEIDB4MzI1YlxuICAzMzpcdCNkZWZpbmUgTU04MVhfTU04MTBYX1BST0RVQ1RfSUQgMHg4MTAwXG4gIDM0Olx0XG4gIDM1Olx0LyogUG93ZXIgbWFuYWdlbWVudCBydW50aW1lIGF1dG8tc3VzcGVuZCBkZWxheSB2YWx1ZSBpbiBtaWxsaXNlY29uZHMgKi9cbiAgMzY6XHQjZGVmaW5lIFBNX1JVTlRJTUVfQVVUT1NVU1BFTkRfREVMQVlfTVMgMTAwXG4gIDM3Olx0XG4gIDM4Olx0ZW51bSBtbTgxeF91c2JfZW5kcG9pbnRzIHtcbiAgMzk6XHRcdE1NODFYX0VQX0NNRCA9IDAsXG4gIDQwOlx0XHRNTTgxWF9FUF9JTlQsXG4gIDQxOlx0XHRNTTgxWF9FUF9NRU1fUkQsXG4gIDQyOlx0XHRNTTgxWF9FUF9NRU1fV1IsXG4gIDQzOlx0XHRNTTgxWF9FUF9SRUdfUkQsXG4gIDQ0Olx0XHRNTTgxWF9FUF9SRUdfV1IsXG4gIDQ1Olx0XHRNTTgxWF9FUF9FUF9NQVgsXG4gIDQ2Olx0fTtcbiAgNDc6XHRcbiAgNDg6XHRzdHJ1Y3QgbW04MXhfdXNiX2VuZHBvaW50IHtcbiAgNDk6XHRcdHVuc2lnbmVkIGNoYXIgKmJ1ZmZlcjtcbiAgNTA6XHRcdHN0cnVjdCB1cmIgKnVyYjtcbiAgNTE6XHRcdF9fdTggYWRkcjtcbiAgNTI6XHRcdGludCBzaXplO1xuICA1MzpcdH07XG4gIDU0Olx0XG4gIDU1Olx0ZW51bSBtbTgxeF91c2JfZmxhZ3MgeyBNTTgxWF9VU0JfRkxBR19BVFRBQ0hFRCwgTU04MVhfVVNCX0ZMQUdfU1VTUEVOREVEIH07XG4gIDU2Olx0XG4gIDU3Olx0c3RydWN0IG1tODF4X3VzYiB7XG4gIDU4Olx0XHRzdHJ1Y3QgdXNiX2RldmljZSAqdWRldjtcbiAgNTk6XHRcdHN0cnVjdCB1c2JfaW50ZXJmYWNlICppbnRlcmZhY2U7XG4gIDYwOlx0XHRzdHJ1Y3QgbW04MXhfdXNiX2VuZHBvaW50IGVuZHBvaW50c1tNTTgxWF9FUF9FUF9NQVhdO1xuICA2MTpcdFx0aW50IGVycm9ycztcbiAgNjI6XHRcbiAgNjM6XHRcdC8qIHNlcmlhbGlzZSBVU0IgZGV2aWNlIHN0cnVjdCAqL1xuICA2NDpcdFx0c3RydWN0IG11dGV4IGxvY2s7XG4gIDY1Olx0XG4gIDY2Olx0XHQvKiBzZXJpYWxpc2UgVVNCIGJ1cyBhY2Nlc3MgKi9cbiAgNjc6XHRcdHN0cnVjdCBtdXRleCBidXNfbG9jaztcbiAgNjg6XHRcbiAgNjk6XHRcdGJvb2wgb25nb2luZ19jbWQ7XG4gIDcwOlx0XHRib29sIG9uZ29pbmdfcnc7XG4gIDcxOlx0XHR3YWl0X3F1ZXVlX2hlYWRfdCByd19pbl93YWl0O1xuICA3MjpcdFx0dW5zaWduZWQgbG9uZyBmbGFncztcbiAgNzM6XHR9O1xuICA3NDpcdFxuICA3NTpcdGVudW0gbW04MXhfdXNiX2NvbW1hbmRfZGlyZWN0aW9uIHtcbiAgNzY6XHRcdE1NODFYX1VTQl9XUklURSA9IDB4MDAsXG4gIDc3Olx0XHRNTTgxWF9VU0JfUkVBRCA9IDB4ODAsXG4gIDc4Olx0XHRNTTgxWF9VU0JfUkVTRVQgPSAweDAyLFxuICA3OTpcdH07XG4gIDgwOlx0XG4gIDgxOlx0c3RydWN0IG1tODF4X3VzYl9jb21tYW5kIHtcbiAgODI6XHRcdF9fbGUzMiBkaXI7IC8qIE5leHQgQlVMSyBkaXJlY3Rpb24gKi9cbiAgODM6XHRcdF9fbGUzMiBhZGRyZXNzOyAvKiBOZXh0IEJVTEsgYWRkcmVzcyAqL1xuICA4NDpcdFx0X19sZTMyIGxlbmd0aDsgLyogTmV4dCBCVUxLIHNpemUgKi9cbiAgODU6XHR9O1xuICA4NjpcdFxuICA4NzpcdHN0YXRpYyBjb25zdCBzdHJ1Y3QgdXNiX2RldmljZV9pZCBtbTgxeF91c2JfdGFibGVbXSA9IHtcbiAgODg6XHRcdHsgVVNCX0RFVklDRShNTTgxWF9WRU5ET1JfSUQsIE1NODFYX01NODEwWF9QUk9EVUNUX0lEKSB9LFxuICA4OTpcdFx0e30gLyogVGVybWluYXRpbmcgZW50cnkgKi9cbiAgOTA6XHR9O1xuICA5MTpcdFxuICA5MjpcdE1PRFVMRV9ERVZJQ0VfVEFCTEUodXNiLCBtbTgxeF91c2JfdGFibGUpO1xuICA5MzpcdFxuICA5NDpcdHN0YXRpYyB2b2lkIG1tODF4X3VzYl9pcnFfd29yayhzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspXG4gIDk1Olx0e1xuICA5NjpcdFx0c3RydWN0IG1tODF4ICptb3JzID0gY29udGFpbmVyX29mKHdvcmssIHN0cnVjdCBtbTgxeCwgdXNiX2lycV93b3JrKTtcbiAgOTc6XHRcbiAgOTg6XHRcdG1tODF4X2NsYWltX2J1cyhtb3JzKTtcbiAgOTk6XHRcdG1tODF4X2h3X2lycV9oYW5kbGUobW9ycyk7XG4gMTAwOlx0XHRtbTgxeF9yZWxlYXNlX2J1cyhtb3JzKTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD45LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNyAwNTowNDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMDU0NAoJCQkJCQkJb3V0cHV0OiA0NgoJCQkJCQkJdGhvdWdodHM6IDY1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkRpdmluZyBpbnRvIE1vcnNlIE1pY3JvIENvZGUqKgoKT2theSwgc28gSSYjMzk7bSB0YWtpbmcgYSBsb29rIGF0IHRoZSBNb3JzZSBNaWNybyBjb2RlLCBzcGVjaWZpY2FsbHkgdGhlIFVTQiBkcml2ZXIgYW5kIGNvbW1hbmQgaGFuZGxpbmcuIEkgbmVlZCB0byBnZXQgYSBiZXR0ZXIgaGFuZGxlIG9uIGhvdyB0aGUgY29tbXVuaWNhdGlvbiBpcyBzZXQgdXAuIExldCYjMzk7cyBzdGFydCBieSBsb29raW5nIGF0IGBkcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L3VzYi5jYCBhbmQgYGNvbW1hbmQuY2AuIEkmIzM5O20gZ29pbmcgdG8gc3RhcnQgd2l0aCBgY29tbWFuZC5jYCwgc3BlY2lmaWNhbGx5IGFyb3VuZCBsaW5lIDIwMC4gSSB3YW50IHRvIHNlZSBob3cgY29tbWFuZHMgYXJlIGJlaW5nIGJ1aWx0IGFuZCBwcm9jZXNzZWQuIFRoaXMgYXJlYSBwcm9iYWJseSBob2xkcyB0aGUga2V5IHRvIHRoZSBVU0Itc3BlY2lmaWMgaW50ZXJhY3Rpb25zLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNyAwNTowNDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29tbWFuZC5jJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMTQ1LAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDkwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAxNDU6XHRcbiAxNDY6XHRpbnQgbW04MXhfY21kX3Jlc3BfcHJvY2VzcyhzdHJ1Y3QgbW04MXggKm1vcnMsIHN0cnVjdCBza19idWZmICpza2IpXG4gMTQ3Olx0e1xuIDE0ODpcdFx0aW50IGxlbmd0aCwgcmV0ID0gLUVTUkNIOyAvKiBObyBzdWNoIHByb2Nlc3MgKi9cbiAxNDk6XHRcdHN0cnVjdCBtbTgxeF9za2JxICpjbWRfcSA9IG1tODF4X2hpZl9nZXRfdHhfY21kX3F1ZXVlKG1vcnMpO1xuIDE1MDpcdFx0c3RydWN0IGhvc3RfY21kX3Jlc3AgKnNyY19yZXNwID0gKHN0cnVjdCBob3N0X2NtZF9yZXNwICopKHNrYi1cdTAwM2VkYXRhKTtcbiAxNTE6XHRcdHN0cnVjdCBza19idWZmICpjbWRfc2tiID0gTlVMTDtcbiAxNTI6XHRcdHN0cnVjdCBob3N0X2NtZF9yZXNwX2NiICpyZXNwX2NiO1xuIDE1MzpcdFx0c3RydWN0IGhvc3RfY21kX3Jlc3AgKmRlc3RfcmVzcDtcbiAxNTQ6XHRcdHN0cnVjdCBob3N0X2NtZF9yZXEgKnJlcTtcbiAxNTU6XHRcdHUxNiBtZXNzYWdlX2lkID0gMDtcbiAxNTY6XHRcdHUxNiBob3N0X2lkID0gMDtcbiAxNTc6XHRcdHUxNiByZXNwX21lc3NhZ2VfaWQgPSBsZTE2X3RvX2NwdShzcmNfcmVzcC1cdTAwM2VoZHIubWVzc2FnZV9pZCk7XG4gMTU4Olx0XHR1MTYgcmVzcF9ob3N0X2lkID0gbGUxNl90b19jcHUoc3JjX3Jlc3AtXHUwMDNlaGRyLmhvc3RfaWQpO1xuIDE1OTpcdFx0Ym9vbCBpc19sYXRlX3Jlc3BvbnNlID0gZmFsc2U7XG4gMTYwOlx0XG4gMTYxOlx0XHRkZXZfZGJnKG1vcnMtXHUwMDNlZGV2LCBcJiMzNDtFVlQgMHglMDR4OjB4JTA0eFwmIzM0OywgcmVzcF9tZXNzYWdlX2lkLCByZXNwX2hvc3RfaWQpO1xuIDE2MjpcdFxuIDE2MzpcdFx0aWYgKCFIT1NUX0NNRF9JU19SRVNQKHNyY19yZXNwKSkge1xuIDE2NDpcdFx0XHRyZXQgPSBtbTgxeF9tYWNfZXZlbnRfcmVjdihtb3JzLCBza2IpO1xuIDE2NTpcdFx0XHRnb3RvIGV4aXRfZnJlZTtcbiAxNjY6XHRcdH1cbiAxNjc6XHRcbiAxNjg6XHRcdG11dGV4X2xvY2soXHUwMDI2bW9ycy1cdTAwM2VjbWRfbG9jayk7XG4gMTY5Olx0XG4gMTcwOlx0XHRjbWRfc2tiID0gbW04MXhfc2ticV90eF9wZW5kaW5nKGNtZF9xKTtcbiAxNzE6XHRcdGlmIChjbWRfc2tiKSB7XG4gMTcyOlx0XHRcdG1tODF4X3NrYnFfcHVsbF9oZHJfcG9zdF90eChjbWRfc2tiKTtcbiAxNzM6XHRcdFx0cmVxID0gKHN0cnVjdCBob3N0X2NtZF9yZXEgKiljbWRfc2tiLVx1MDAzZWRhdGE7XG4gMTc0Olx0XHRcdG1lc3NhZ2VfaWQgPSBsZTE2X3RvX2NwdShyZXEtXHUwMDNlaGRyLm1lc3NhZ2VfaWQpO1xuIDE3NTpcdFx0XHRob3N0X2lkID0gbGUxNl90b19jcHUocmVxLVx1MDAzZWhkci5ob3N0X2lkKTtcbiAxNzY6XHRcdH1cbiAxNzc6XHRcbiAxNzg6XHRcdC8qXG4gMTc5Olx0XHQgKiBJZiB0aGVyZSBpcyBubyBwZW5kaW5nIGNvbW1hbmQgb3IgdGhlIHNlcXVlbmNlIElEIGRvZXMgbm90IG1hdGNoLFxuIDE4MDpcdFx0ICogdGhpcyBpcyBhIGxhdGUgcmVzcG9uc2UgZm9yIGEgdGltZWQgb3V0IGNvbW1hbmQgd2hpY2ggaGFzIGJlZW5cbiAxODE6XHRcdCAqIGNsZWFuZWQgdXAsIHNvIGp1c3QgZnJlZSB1cCB0aGUgcmVzcG9uc2UuIElmIGEgY29tbWFuZCB3YXMgcmV0cmllZCxcbiAxODI6XHRcdCAqIHRoZSByZXNwb25zZSBtYXkgYmUgZnJvbSB0aGUgcmV0cnkgb3IgZnJvbSB0aGUgb3JpZ2luYWwgY29tbWFuZFxuIDE4MzpcdFx0ICogKGxhdGUgcmVzcG9uc2UpIGJ1dCBub3QgZnJvbSBib3RoIGJlY2F1c2UgdGhlIGZpcm13YXJlIHdpbGwgc2lsZW50bHlcbiAxODQ6XHRcdCAqIGRyb3AgYSByZXRyeSBpZiBpdCByZWNlaXZlZCB0aGUgaW5pdGlhbCByZXF1ZXN0LiBTbyBhIG1pc21hdGNoZWRcbiAxODU6XHRcdCAqIHJldHJ5IGNvdW50ZXIgaXMgdHJlYXRlZCBhcyBhIG1hdGNoZWQgY29tbWFuZCBhbmQgcmVzcG9uc2UuXG4gMTg2Olx0XHQgKi9cbiAxODc6XHRcdGlmICghY21kX3NrYiB8fCBtZXNzYWdlX2lkICE9IHJlc3BfbWVzc2FnZV9pZCB8fFxuIDE4ODpcdFx0ICAgIChob3N0X2lkIFx1MDAyNiBIT1NUX0NNRF9IT1NUX0lEX1NFUV9NQVNLKSAhPVxuIDE4OTpcdFx0XHQgICAgKHJlc3BfaG9zdF9pZCBcdTAwMjYgSE9TVF9DTURfSE9TVF9JRF9TRVFfTUFTSykpIHtcbiAxOTA6XHRcdFx0ZGV2X2Vycihtb3JzLVx1MDAzZWRldixcbiAxOTE6XHRcdFx0XHRcJiMzNDtMYXRlIHJlc3BvbnNlIGZvciB0aW1lZCBvdXQgcmVxIDB4JTA0eDolMDR4IGhhdmUgMHglMDR4OiUwNHggMHglMDR4XCYjMzQ7LFxuIDE5MjpcdFx0XHRcdHJlc3BfbWVzc2FnZV9pZCwgcmVzcF9ob3N0X2lkLCBtZXNzYWdlX2lkLCBob3N0X2lkLFxuIDE5MzpcdFx0XHRcdG1vcnMtXHUwMDNlY21kX3NlcSk7XG4gMTk0Olx0XHRcdGlzX2xhdGVfcmVzcG9uc2UgPSB0cnVlO1xuIDE5NTpcdFx0XHRnb3RvIGV4aXQ7XG4gMTk2Olx0XHR9XG4gMTk3Olx0XHRpZiAoKGhvc3RfaWQgXHUwMDI2IEhPU1RfQ01EX0hPU1RfSURfUkVUUllfTUFTSykgIT1cbiAxOTg6XHRcdCAgICAocmVzcF9ob3N0X2lkIFx1MDAyNiBIT1NUX0NNRF9IT1NUX0lEX1JFVFJZX01BU0spKVxuIDE5OTpcdFx0XHRkZXZfZGJnKG1vcnMtXHUwMDNlZGV2LFxuIDIwMDpcdFx0XHRcdFwmIzM0O0NvbW1hbmQgcmV0cnkgbWlzbWF0Y2ggMHglMDR4OiUwNHggMHglMDR4OiUwNHhcJiMzNDssXG4gMjAxOlx0XHRcdFx0bWVzc2FnZV9pZCwgaG9zdF9pZCwgcmVzcF9tZXNzYWdlX2lkLCByZXNwX2hvc3RfaWQpO1xuIDIwMjpcdFxuIDIwMzpcdFx0cmVzcF9jYiA9IChzdHJ1Y3QgaG9zdF9jbWRfcmVzcF9jYiAqKUlFRUU4MDIxMV9TS0JfQ0IoY21kX3NrYilcbiAyMDQ6XHRcdFx0XHQgIC1cdTAwM2Vkcml2ZXJfZGF0YTtcbiAyMDU6XHRcdGxlbmd0aCA9IHJlc3BfY2ItXHUwMDNlbGVuZ3RoO1xuIDIwNjpcdFx0ZGVzdF9yZXNwID0gcmVzcF9jYi1cdTAwM2VkZXN0X3Jlc3A7XG4gMjA3Olx0XHRpZiAobGVuZ3RoIFx1MDAzZT0gc2l6ZW9mKHN0cnVjdCBob3N0X2NtZF9yZXNwKSBcdTAwMjZcdTAwMjYgZGVzdF9yZXNwKSB7XG4gMjA4Olx0XHRcdHJldCA9IDA7XG4gMjA5Olx0XHRcdGxlbmd0aCA9IG1pbl90KGludCwgbGVuZ3RoLFxuIDIxMDpcdFx0XHRcdCAgICAgICBsZTE2X3RvX2NwdShzcmNfcmVzcC1cdTAwM2VoZHIubGVuKSAmIzQzO1xuIDIxMTpcdFx0XHRcdFx0ICAgICAgIHNpemVvZihzdHJ1Y3QgaG9zdF9jbWRfaGVhZGVyKSk7XG4gMjEyOlx0XHRcdGxlbmd0aCA9IG1pbl90KGludCwgbGVuZ3RoLCBza2ItXHUwMDNlbGVuKTtcbiAyMTM6XHRcdFx0bWVtY3B5KGRlc3RfcmVzcCwgc3JjX3Jlc3AsIGxlbmd0aCk7XG4gMjE0Olx0XHR9IGVsc2Uge1xuIDIxNTpcdFx0XHRyZXQgPSBsZTMyX3RvX2NwdShzcmNfcmVzcC1cdTAwM2VzdGF0dXMpO1xuIDIxNjpcdFx0fVxuIDIxNzpcdFxuIDIxODpcdFx0cmVzcF9jYi1cdTAwM2VyZXQgPSByZXQ7XG4gMjE5Olx0XG4gMjIwOlx0ZXhpdDpcbiAyMjE6XHRcdGlmIChjbWRfc2tiIFx1MDAyNlx1MDAyNiAhaXNfbGF0ZV9yZXNwb25zZSkge1xuIDIyMjpcdFx0XHQvKiBDb21wbGV0ZSBpZiBub3QgYWxyZWFkeSB0aW1lZCBvdXQgKi9cbiAyMjM6XHRcdFx0aWYgKG1vcnMtXHUwMDNlY21kX2NvbXApXG4gMjI0Olx0XHRcdFx0Y29tcGxldGUobW9ycy1cdTAwM2VjbWRfY29tcCk7XG4gMjI1Olx0XHR9XG4gMjI2Olx0XG4gMjI3Olx0XHRtdXRleF91bmxvY2soXHUwMDI2bW9ycy1cdTAwM2VjbWRfbG9jayk7XG4gMjI4Olx0ZXhpdF9mcmVlOlxuIDIyOTpcdFx0ZGV2X2tmcmVlX3NrYihza2IpO1xuIDIzMDpcdFx0cmV0dXJuIDA7XG4gMjMxOlx0fVxuIDIzMjpcdFxuIDIzMzpcdGludCBtbTgxeF9jbWRfc3RhX3N0YXRlKHN0cnVjdCBtbTgxeCAqbW9ycywgc3RydWN0IG1tODF4X3ZpZiAqbW9yc192aWYsIHUxNiBhaWQsXG4gMjM0Olx0XHRcdFx0c3RydWN0IGllZWU4MDIxMV9zdGEgKnN0YSxcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDcgMDU6MDQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjI0OTYKCQkJCQkJCW91dHB1dDogMzkKCQkJCQkJCXRob3VnaHRzOiAxMjMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBQYXRjaCBhbmQgUmVhY2hhYmlsaXR5KioKCk9rYXksIGxldCYjMzk7cyBkaXZlIGludG8gdGhpcy4gVGhlIHRhc2sgYXQgaGFuZCBpcyB0byB1bmRlcnN0YW5kIHRoaXMgcGF0Y2guIEl0IGxvb2tzIGxpa2Ugd2UmIzM5O3JlIGRlYWxpbmcgd2l0aCBhIG1vZGlmaWNhdGlvbiB0byB0aGUgYG1tODF4X2NtZF9yZXNwX3Byb2Nlc3NgIGZ1bmN0aW9uLCB3aGljaCByZXNpZGVzIHdpdGhpbiBgZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb21tYW5kLmNgLiBTcGVjaWZpY2FsbHksIHRoZXkmIzM5O3ZlIGludHJvZHVjZWQgYSBsaW5lOiBgbGVuZ3RoID0gbWluX3QoaW50LCBsZW5ndGgsIHNrYi0mZ3Q7bGVuKTtgIHJpZ2h0IGJlZm9yZSB0aGUgYG1lbWNweWAuIE15IGluaXRpYWwgdGhvdWdodCBpcywgdGhpcyBpcyBsaWtlbHkgYSBzYWZldHkgY2hlY2sgcmVsYXRlZCB0byBidWZmZXIgb3ZlcmZsb3dzLCBidXQgbGV0JiMzOTtzIGJlIHN1cmUuCgpUaGUgY3JpdGljYWwgbmV4dCBzdGVwIGlzIGRldGVybWluaW5nIHRoZSBpbXBhY3QgYW5kIGlmIHRoaXMgaXMgdGhlIG9ubHkgc3BvdCB0aGlzIGNoYW5nZSBpcyBuZWVkZWQuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoZXJlIGBtbTgxeF9jbWRfcmVzcF9wcm9jZXNzYCBpcyBjYWxsZWQgZnJvbS4gSSBuZWVkIHRvIHRyYWNlIHRoZSBjYWxsIHBhdGhzIHRvIGdldCBhIGhhbmRsZSBvbiByZWFjaGFiaWxpdHksIGlkZW50aWZ5IHRoZSBjb250ZXh0LiBGaW5kaW5nIHRoZSBjYWxsZXJzIGdpdmVzIG1lIHRoZSBiaWdnZXIgcGljdHVyZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDcgMDU6MDQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bW04MXhfY21kX3Jlc3BfcHJvY2VzcyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb21tYW5kLmM9MzM9c3RhdGljIGludCBtbTgxeF9jbWRfdHgoc3RydWN0IG1tODF4ICptb3JzLCBzdHJ1Y3QgaG9zdF9jbWRfcmVzcCAqcmVzcCxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuYy0xNDUtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuYzoxNDY6aW50IG1tODF4X2NtZF9yZXNwX3Byb2Nlc3Moc3RydWN0IG1tODF4ICptb3JzLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb21tYW5kLmMtMTQ3LXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuaD00ND1zdHJ1Y3QgaG9zdF9jbWRfZXZlbnQge1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29tbWFuZC5oLTQ4LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb21tYW5kLmg6NDk6aW50IG1tODF4X2NtZF9yZXNwX3Byb2Nlc3Moc3RydWN0IG1tODF4ICptb3JzLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29tbWFuZC5oLTUwLWludCBtbTgxeF9jbWRfYWRkX2lmKHN0cnVjdCBtbTgxeCAqbW9ycywgdTE2ICp2aWZfaWQsIGNvbnN0IHU4ICphZGRyLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvc2ticS5jPTM0OD1zdGF0aWMgdm9pZCBtbTgxeF9za2JxX2Rpc3BhdGNoX3dvcmsoc3RydWN0IHdvcmtfc3RydWN0ICpkaXNwYXRjaF93b3JrKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvc2ticS5jLTM3MS1cdFx0Y2FzZSBNTTgxWF9TS0JfQ0hBTl9DT01NQU5EOlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9za2JxLmM6MzcyOlx0XHRcdG1tODF4X2NtZF9yZXNwX3Byb2Nlc3MobW9ycywgcGZpcnN0KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvc2ticS5jLTM3My1cdFx0XHRicmVhaztcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDcgMDU6MDQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjMzNTgKCQkJCQkJCW91dHB1dDogMzcKCQkJCQkJCXRob3VnaHRzOiA3NwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSBhbmFseXNpcyBvZiBob3cgdGhlIFVTQiBwcm9iZSBhbmQgUlggcGFja2V0IHByb2Nlc3NpbmcgYXJlIGxpa2VseSBmdW5jdGlvbmluZywgYmFzZWQgb24gdGhlIGZpbGUgcGF0aHMgcHJvdmlkZWQuCgoqKkRpc3NlY3RpbmcgdGhlIFVTQiAmYW1wOyBSWCBGbG93KioKCkFscmlnaHQsIGxldCYjMzk7cyBicmVhayB0aGlzIGRvd24uIFRoZSBjb3JlIG9mIHRoZSBVU0IgaW50ZXJmYWNlIGlzIHByb2JhYmx5IGhhbmRsZWQgd2l0aGluIGBkcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L3VzYi5jYC4gVGhpcyBpcyB3aGVyZSB0aGUgaW5pdGlhbCBpbnRlcmFjdGlvbiB3aXRoIHRoZSBVU0IgYnVzIGlzIGRlZmluZWQuIEkmIzM5O2QgZXhwZWN0IHRvIHNlZSB0aGUgVVNCIHByb2JlIGZ1bmN0aW9uIGluIGhlcmUsIGhhbmRsaW5nIGRldmljZSBkZXRlY3Rpb24sIGluaXRpYWxpemF0aW9uLCBhbmQgZHJpdmVyIGF0dGFjaG1lbnQuIEkmIzM5O2xsIG5lZWQgdG8gY29uZmlybSB0aGF0JiMzOTtzIHRoZSBlbnRyeSBwb2ludC4KCk5vdywgdGhlIGludGVyZXN0aW5nIGJpdCDigJMgUlggcGFja2V0IHByb2Nlc3NpbmcuIFRoZSBtb2R1bGUgYGRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgveWFwcy5jYCBsb29rcyBpbW1lZGlhdGVseSBwcm9taXNpbmcuIFRoZSBuYW1lICYjMzQ7eWFwcyYjMzQ7IHByb2JhYmx5IHN0YW5kcyBmb3Igc29tZXRoaW5nIGxpa2UgJiMzNDtZZXQgQW5vdGhlciBQYWNrZXQgU3lzdGVtJiMzNDsgb3IgJiMzNDtZb3VyIEFwcGxpY2F0aW9uIFBhY2tldCBTeXN0ZW0sJiMzNDsgaW5kaWNhdGluZyBhIGN1c3RvbSBwcm90b2NvbCBvciBmcmFtZSBoYW5kbGluZyBsYXllciB0aGF0IGlzIHNwZWNpZmljIHRvIHRoZSBtbTgxeCBoYXJkd2FyZS4gSSB3aWxsIGNhcmVmdWxseSBpbnZlc3RpZ2F0ZSBpdC4KCldpdGhpbiBgeWFwcy5jYCwgYW5kIHBvdGVudGlhbGx5IHJlbGF0ZWQgZmlsZXMgbGlrZSBgeWFwc19ody5jYCBvciBgc2ticS5jYCwgSSYjMzk7bSBhbnRpY2lwYXRpbmcgZmluZGluZyB0aGUgbWVhdCBvZiB0aGUgUlggcGF0aC4gVGhhdCYjMzk7cyBsaWtlbHkgd2hlcmUgdGhlIFVTQiBkYXRhIGZyb20gdGhlIGRldmljZSBpcyBtYXJzaGFsZWQsIGxpa2VseSBpbmNsdWRpbmcgaGFyZHdhcmUgc3BlY2lmaWMgZGVzY3JpcHRvcnMsIHRoZW4gZWl0aGVyIGRlY29kZWQsIGRlLWZyYW1lZCwgb3IgcGFzc2VkIHRvIGEgZ2VuZXJpYyBuZXR3b3JraW5nIHN0YWNrLiBQZXJoYXBzIHRoZXJlIGlzIHNvbWUgb2ZmbG9hZGluZyBoYXBwZW5pbmcgaGVyZS4gVGhlc2UgZmlsZXMgc2hvdWxkIGNvbnRhaW4gdGhlIGxvZ2ljIGZvcjoKCiogICAqKlVTQiBEYXRhIFJlY2VwdGlvbjoqKiBIb3cgdGhlIGRhdGEgc3RyZWFtcyBmcm9tIHRoZSBVU0IgZGV2aWNlIGFyZSByZWNlaXZlZCBhbmQgaW50ZXJwcmV0ZWQuCiogICAqKlBhY2tldCBDb25zdHJ1Y3Rpb246KiogSG93IHJlY2VpdmVkIGRhdGEgaXMgYXNzZW1ibGVkIGludG8gY29tcGxldGUsIHVzYWJsZSBwYWNrZXRzLgoqICAgKipQcm90b2NvbCBEZWNvZGluZzoqKiBBbnkgY3VzdG9tIG9yIGhhcmR3YXJlLXNwZWNpZmljIGRlY29kaW5nIG9mIGRhdGEuCiogICAqKkJ1ZmZlciBNYW5hZ2VtZW50OioqIFRoZSB1c2Ugb2YgYHNrYmAgc3RydWN0dXJlcywgbGlrZWx5IG1hbmFnZWQgYnkgYHNrYnEuY2AsIHRvIHN0b3JlIGFuZCBoYW5kbGUgdGhlIHBhY2tldHMuIFRoaXMgY291bGQgYmUgd2hlcmUgdGhlIERNQSBidWZmZXJzIGFyZSBoYW5kbGVkLgoqICAgKipQYWNrZXQgRmlsdGVyaW5nICZhbXA7IERlbXV4aW5nOioqIFdoZXRoZXIgdGhlcmUgaXMgYW55IGhhcmR3YXJlLWxldmVsIGZpbHRlcmluZyBvciBkZW11bHRpcGxleGluZyBiZWZvcmUgdGhlIHBhY2tldHMgcmVhY2ggdGhlIG5ldHdvcmsgc3RhY2suCgpJIGV4cGVjdCB0byBlbmNvdW50ZXIgYSBmYWlyIGFtb3VudCBvZiBkZXZpY2Utc3BlY2lmaWMgcmVnaXN0ZXIgbWFuaXB1bGF0aW9uIGFuZCBwZXJoYXBzIGRpcmVjdCBtZW1vcnkgYWNjZXNzIChETUEpIGludm9sdmVkIGluIHRoZSBgeWFwc19ody5jYCBmaWxlLiBHaXZlbiB0aGUgbGlrZWx5IHByb3ByaWV0YXJ5IG5hdHVyZSBvZiB0aGlzIGNoaXBzZXQsIHRoZSBjb2RlIGxpa2VseSBjb250YWlucyBvcHRpbWl6YXRpb25zIGFuZCBpZGlvc3luY3Jhc2llcyB0aGF0IG5lY2Vzc2l0YXRlIGNsb3NlIHNjcnV0aW55LiBJIHdpbGwgYmUgbG9va2luZyBmb3IgaGFyZHdhcmUgaW50ZXJydXB0cyBhbmQgYXNzb2NpYXRlZCBJU1JzIGhlcmUsIHdoaWNoIGFyZSBjcml0aWNhbCBmb3IgcmVjZWl2aW5nIHRob3NlIHBhY2tldHMuCgpCYXNpY2FsbHksIEkgbmVlZCB0byBzZWUgaG93IHRoZSBkYXRhIGZsb3dzIGZyb20gdGhlIFVTQiBlbmRwb2ludCB0aHJvdWdoIHRoZXNlIHZhcmlvdXMgbGF5ZXJzIHRvIGdldCB0byB0aGUgbmV0d29ya2luZyBzdGFjay4gSSYjMzk7bSBlc3BlY2lhbGx5IGtlZW4gdG8gc2VlIGhvdyB0aGUgZHJpdmVyIGhhbmRsZXMgcG90ZW50aWFsIGJ1ZmZlciBvdmVyZmxvd3MsIGVycm9yIGNvbmRpdGlvbnMsIGFuZCB0aGUgaW50ZXJhY3Rpb24gd2l0aCB0aGUgVVNCIGRyaXZlciBpdHNlbGYuIEkmIzM5O20gYWxzbyBhbnRpY2lwYXRpbmcgdGhhdCB0aGUgb3ZlcmFsbCBkZXNpZ24gaW5jbHVkZXMgZWZmaWNpZW50IHVzZSBvZiBETUEgZm9yIHRoZSBSWCBwYXRoLCBlc3BlY2lhbGx5IGFzIHRoaXMgaXMgYSB3aXJlbGVzcyBpbnRlcmZhY2UuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA3IDA1OjA0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O21tODF4X3VzYl9wcm9iZSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC91c2IuYz03MTY9c3RhdGljIHZvaWQgbW04MXhfdXJiX2NsZWFudXAoc3RydWN0IG1tODF4ICptb3JzKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvdXNiLmMtNzQ0LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC91c2IuYzo3NDU6c3RhdGljIGludCBtbTgxeF91c2JfcHJvYmUoc3RydWN0IHVzYl9pbnRlcmZhY2UgKmludGVyZmFjZSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvdXNiLmMtNzQ2LVx0XHRcdCAgIGNvbnN0IHN0cnVjdCB1c2JfZGV2aWNlX2lkICppZClcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L3VzYi5jPTkyNT1zdGF0aWMgc3RydWN0IHVzYl9kcml2ZXIgbW04MXhfdXNiX2RyaXZlciA9IHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvdXNiLmMtOTI2LVx0Lm5hbWUgPSBcJiMzNDttbTgxeF91c2JcJiMzNDssXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L3VzYi5jOjkyNzpcdC5wcm9iZSA9IG1tODF4X3VzYl9wcm9iZSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvdXNiLmMtOTI4LVx0LmRpc2Nvbm5lY3QgPSBtbTgxeF91c2JfZGlzY29ubmVjdCxcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDcgMDU6MDQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjQzODAKCQkJCQkJCW91dHB1dDogNDcKCQkJCQkJCXRob3VnaHRzOiAzNQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSBzdW1tYXJ5LCBhcyBpZiBJIHdlcmUgdGhpbmtpbmcgdGhlc2UgdGhvdWdodHM6CgoqKkRpdmluZyBpbnRvIHRoZSBtbTgxeCBVU0IgRHJpdmVyKioKCkFscmlnaHQsIHRpbWUgdG8gZGlnIGludG8gdGhpcyBgbW04MXhgIGRyaXZlci4gSSBuZWVkIHRvIGdldCBhIGhhbmRsZSBvbiB3aGF0JiMzOTtzIGdvaW5nIG9uIHdpdGggdGhpcyBVU0IgaW50ZXJmYWNlLiBTcGVjaWZpY2FsbHksIEkmIzM5O20gZ29pbmcgdG8gc3RhcnQgd2l0aCB0aGUgYG1tODF4X3VzYl9wcm9iZWAgZnVuY3Rpb24uIFRoYXQmIzM5O3MgdGhlIGVudHJ5IHBvaW50LCB0aGUgZmlyc3QgdGhpbmcgdGhhdCBnZXRzIGNhbGxlZCB3aGVuIHRoZSBVU0IgZGV2aWNlIGlzIGNvbm5lY3RlZCwgcmlnaHQ/IEl0JiMzOTtzIGxpa2VseSBnb2luZyB0byBiZSB0aGUgY2VudHJhbCBwb2ludCBmb3IgaW5pdGlhbGl6aW5nIHRoZSBkZXZpY2UsIHNldHRpbmcgdXAgZW5kcG9pbnRzLCBhbmQgcHJvYmFibHkgcmVnaXN0ZXJpbmcgaXQgd2l0aCB0aGUgcmVzdCBvZiB0aGUgd2lyZWxlc3Mgc3Vic3lzdGVtLiBMZXQmIzM5O3Mgc2VlIHdoYXQgc2VjcmV0cyBpdCBob2xkcyBpbiBgZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC91c2IuY2AuIEkgZXhwZWN0IHRvIGZpbmQgdGhlIGNvcmUgZGV2aWNlLXNwZWNpZmljIFVTQiBoYW5kbGluZyB0aGVyZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDcgMDU6MDU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L3VzYi5jJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogNzQ1LAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDEwMAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgNzQ1Olx0c3RhdGljIGludCBtbTgxeF91c2JfcHJvYmUoc3RydWN0IHVzYl9pbnRlcmZhY2UgKmludGVyZmFjZSxcbiA3NDY6XHRcdFx0XHQgICBjb25zdCBzdHJ1Y3QgdXNiX2RldmljZV9pZCAqaWQpXG4gNzQ3Olx0e1xuIDc0ODpcdFx0aW50IHJldDtcbiA3NDk6XHRcdHN0cnVjdCBtbTgxeCAqbW9ycztcbiA3NTA6XHRcdHN0cnVjdCBtbTgxeF91c2IgKm11c2I7XG4gNzUxOlx0XG4gNzUyOlx0XHRtb3JzID0gbW04MXhfY29yZV9hbGxvYyhzaXplb2YoKm11c2IpLCBcdTAwMjZpbnRlcmZhY2UtXHUwMDNlZGV2KTtcbiA3NTM6XHRcdGlmICghbW9ycylcbiA3NTQ6XHRcdFx0cmV0dXJuIC1FTk9NRU07XG4gNzU1Olx0XG4gNzU2Olx0XHRtb3JzLVx1MDAzZWJ1c19vcHMgPSBcdTAwMjZtbTgxeF91c2Jfb3BzO1xuIDc1NzpcdFx0bW9ycy1cdTAwM2VidXNfdHlwZSA9IE1NODFYX0JVU19UWVBFX1VTQjtcbiA3NTg6XHRcbiA3NTk6XHRcdG11c2IgPSAoc3RydWN0IG1tODF4X3VzYiAqKW1vcnMtXHUwMDNlZHJ2X3ByaXY7XG4gNzYwOlx0XHRtdXNiLVx1MDAzZXVkZXYgPSB1c2JfZ2V0X2RldihpbnRlcmZhY2VfdG9fdXNiZGV2KGludGVyZmFjZSkpO1xuIDc2MTpcdFx0bXVzYi1cdTAwM2VpbnRlcmZhY2UgPSB1c2JfZ2V0X2ludGYoaW50ZXJmYWNlKTtcbiA3NjI6XHRcbiA3NjM6XHRcdG11dGV4X2luaXQoXHUwMDI2bXVzYi1cdTAwM2Vsb2NrKTtcbiA3NjQ6XHRcdG11dGV4X2luaXQoXHUwMDI2bXVzYi1cdTAwM2VidXNfbG9jayk7XG4gNzY1Olx0XHRpbml0X3dhaXRxdWV1ZV9oZWFkKFx1MDAyNm11c2ItXHUwMDNlcndfaW5fd2FpdCk7XG4gNzY2Olx0XHR1c2Jfc2V0X2ludGZkYXRhKGludGVyZmFjZSwgbW9ycyk7XG4gNzY3Olx0XG4gNzY4Olx0XHRyZXQgPSBtbTgxeF91c2JfZGV0ZWN0X2VuZHBvaW50cyhtb3JzLCBpbnRlcmZhY2UpO1xuIDc2OTpcdFx0aWYgKHJldCBcdTAwM2MgMClcbiA3NzA6XHRcdFx0Z290byBlcnJfY29yZV9mcmVlO1xuIDc3MTpcdFxuIDc3MjpcdFx0c2V0X2JpdChNTTgxWF9VU0JfRkxBR19BVFRBQ0hFRCwgXHUwMDI2bXVzYi1cdTAwM2VmbGFncyk7XG4gNzczOlx0XG4gNzc0Olx0XHRyZXQgPSBtbTgxeF9jb3JlX2luaXQobW9ycyk7XG4gNzc1Olx0XHRpZiAocmV0KVxuIDc3NjpcdFx0XHRnb3RvIGVycl91cmJfY2xlYW51cDtcbiA3Nzc6XHRcbiA3Nzg6XHRcdElOSVRfV09SSyhcdTAwMjZtb3JzLVx1MDAzZXVzYl9pcnFfd29yaywgbW04MXhfdXNiX2lycV93b3JrKTtcbiA3Nzk6XHRcbiA3ODA6XHRcdHJldCA9IG1tODF4X3VzYl9pbnRfZW5hYmxlKG1vcnMpO1xuIDc4MTpcdFx0aWYgKHJldClcbiA3ODI6XHRcdFx0Z290byBlcnJfY29yZV9kZWluaXQ7XG4gNzgzOlx0XG4gNzg0Olx0XHRyZXQgPSBtbTgxeF9jb3JlX3JlZ2lzdGVyKG1vcnMpO1xuIDc4NTpcdFx0aWYgKHJldClcbiA3ODY6XHRcdFx0Z290byBlcnJfdXNiX2ludF9zdG9wO1xuIDc4NzpcdFxuIDc4ODpcdFx0LyogVVNCIHJlcXVpcmVzIHJlbW90ZSB3YWtldXAgZnVuY3Rpb25hbGl0eSBmb3Igc3VzcGVuZCAqL1xuIDc4OTpcdFx0Y2xlYXJfYml0KE1NODFYX1VTQl9GTEFHX1NVU1BFTkRFRCwgXHUwMDI2bXVzYi1cdTAwM2VmbGFncyk7XG4gNzkwOlx0XHRtdXNiLVx1MDAzZWludGVyZmFjZS1cdTAwM2VuZWVkc19yZW1vdGVfd2FrZXVwID0gMTtcbiA3OTE6XHRcdHVzYl9lbmFibGVfYXV0b3N1c3BlbmQobXVzYi1cdTAwM2V1ZGV2KTtcbiA3OTI6XHRcdHBtX3J1bnRpbWVfc2V0X2F1dG9zdXNwZW5kX2RlbGF5KFx1MDAyNm11c2ItXHUwMDNldWRldi1cdTAwM2VkZXYsXG4gNzkzOlx0XHRcdFx0XHRcdCBQTV9SVU5USU1FX0FVVE9TVVNQRU5EX0RFTEFZX01TKTtcbiA3OTQ6XHRcbiA3OTU6XHRcdHVzYl9hdXRvcG1fZ2V0X2ludGVyZmFjZShpbnRlcmZhY2UpO1xuIDc5NjpcdFx0cmV0dXJuIDA7XG4gNzk3Olx0XG4gNzk4Olx0ZXJyX3VzYl9pbnRfc3RvcDpcbiA3OTk6XHRcdG1tODF4X3VzYl9pbnRfc3RvcChtb3JzKTtcbiA4MDA6XHRlcnJfY29yZV9kZWluaXQ6XG4gODAxOlx0XHRtbTgxeF9jb3JlX2RlaW5pdChtb3JzKTtcbiA4MDI6XHRlcnJfdXJiX2NsZWFudXA6XG4gODAzOlx0XHRtbTgxeF91cmJfY2xlYW51cChtb3JzKTtcbiA4MDQ6XHRlcnJfY29yZV9mcmVlOlxuIDgwNTpcdFx0bW04MXhfY29yZV9mcmVlKG1vcnMpO1xuIDgwNjpcdFx0dXNiX3B1dF9pbnRmKGludGVyZmFjZSk7XG4gODA3Olx0XHR1c2JfcHV0X2RldihpbnRlcmZhY2VfdG9fdXNiZGV2KGludGVyZmFjZSkpO1xuIDgwODpcdFx0cmV0dXJuIHJldDtcbiA4MDk6XHR9XG4gODEwOlx0XG4gODExOlx0c3RhdGljIHZvaWQgbW04MXhfdXNiX2Rpc2Nvbm5lY3Qoc3RydWN0IHVzYl9pbnRlcmZhY2UgKmludGVyZmFjZSlcbiA4MTI6XHR7XG4gODEzOlx0XHRzdHJ1Y3QgbW04MXggKm1vcnMgPSB1c2JfZ2V0X2ludGZkYXRhKGludGVyZmFjZSk7XG4gODE0Olx0XHRzdHJ1Y3QgbW04MXhfdXNiICptdXNiID0gKHN0cnVjdCBtbTgxeF91c2IgKiltb3JzLVx1MDAzZWRydl9wcml2O1xuIDgxNTpcdFx0aW50IG1pbm9yID0gaW50ZXJmYWNlLVx1MDAzZW1pbm9yO1xuIDgxNjpcdFx0c3RydWN0IHVzYl9kZXZpY2UgKnVkZXYgPSBpbnRlcmZhY2VfdG9fdXNiZGV2KGludGVyZmFjZSk7XG4gODE3Olx0XG4gODE4Olx0XHRpZiAodWRldi1cdTAwM2VzdGF0ZSA9PSBVU0JfU1RBVEVfTk9UQVRUQUNIRUQpIHtcbiA4MTk6XHRcdFx0Y2xlYXJfYml0KE1NODFYX1VTQl9GTEFHX0FUVEFDSEVELCBcdTAwMjZtdXNiLVx1MDAzZWZsYWdzKTtcbiA4MjA6XHRcdFx0c2V0X2JpdChNTTgxWF9TVEFURV9DSElQX1VOUkVTUE9OU0lWRSwgXHUwMDI2bW9ycy1cdTAwM2VzdGF0ZV9mbGFncyk7XG4gODIxOlx0XHRcdGRldl9kYmcobW9ycy1cdTAwM2VkZXYsIFwmIzM0O1VTQiBzdWRkZW5seSB1bnBsdWdnZWRcJiMzNDspO1xuIDgyMjpcdFx0fVxuIDgyMzpcdFxuIDgyNDpcdFx0dXNiX2Rpc2FibGVfYXV0b3N1c3BlbmQodWRldik7XG4gODI1Olx0XG4gODI2Olx0XHRpZiAodGVzdF9iaXQoTU04MVhfVVNCX0ZMQUdfU1VTUEVOREVELCBcdTAwMjZtdXNiLVx1MDAzZWZsYWdzKSkge1xuIDgyNzpcdFx0XHRkZXZfZGJnKG1vcnMtXHUwMDNlZGV2LCBcJiMzNDtVU0Igd2FzIHN1c3BlbmRlZDogcmVsZWFzZSBsb2Nrc1wmIzM0Oyk7XG4gODI4Olx0XHRcdG1tODF4X3VzYl9yZWxlYXNlX2J1cyhtb3JzKTtcbiA4Mjk6XHRcdFx0bXV0ZXhfdW5sb2NrKFx1MDAyNm11c2ItXHUwMDNlbG9jayk7XG4gODMwOlx0XHR9XG4gODMxOlx0XG4gODMyOlx0XHRjbGVhcl9iaXQoTU04MVhfVVNCX0ZMQUdfU1VTUEVOREVELCBcdTAwMjZtdXNiLVx1MDAzZWZsYWdzKTtcbiA4MzM6XHRcbiA4MzQ6XHRcdG1tODF4X2NvcmVfdW5yZWdpc3Rlcihtb3JzKTtcbiA4MzU6XHRcdG1tODF4X3VzYl9pbnRfc3RvcChtb3JzKTtcbiA4MzY6XHRcdG1tODF4X2NvcmVfZGVpbml0KG1vcnMpO1xuIDgzNzpcdFx0bW04MXhfdXJiX2NsZWFudXAobW9ycyk7XG4gODM4Olx0XHRtbTgxeF9jb3JlX2ZyZWUobW9ycyk7XG4gODM5Olx0XG4gODQwOlx0XHR1c2JfYXV0b3BtX3B1dF9pbnRlcmZhY2UoaW50ZXJmYWNlKTtcbiA4NDE6XHRcdHVzYl9zZXRfaW50ZmRhdGEoaW50ZXJmYWNlLCBOVUxMKTtcbiA4NDI6XHRcdGRldl9pbmZvKFx1MDAyNmludGVyZmFjZS1cdTAwM2VkZXYsIFwmIzM0O1VTQiBNb3JzZSAjJWQgbm93IGRpc2Nvbm5lY3RlZFwmIzM0OywgbWlub3IpO1xuIDg0MzpcdFx0dXNiX3B1dF9pbnRmKGludGVyZmFjZSk7XG4gODQ0Olx0XHR1c2JfcHV0X2Rldih1ZGV2KTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNy8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDcgMDU6MDU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjFtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjYzMzQKCQkJCQkJCW91dHB1dDogNDUKCQkJCQkJCXRob3VnaHRzOiAxNjYKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgSW5pdGlhbCBBc3Nlc3NtZW50IG9mIHRoZSBNTTgxeCBVU0IgRHJpdmVyKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCBgbW04MXhfdXNiX3Byb2JlYC4gTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMsIHRoaXMgaXMgdGhlIGVudHJ5IHBvaW50IGZvciB0aGUgVVNCIGludGVyZmFjZS4gSXQmIzM5O3MgZ29pbmcgdG8gcHJvYmUgdGhlIGRldmljZSwgcHJlc3VtYWJseSBpZGVudGlmeSBpdCwgYW5kIHRoZW4gbGlrZWx5IHJlZ2lzdGVyIHRoZSBtYWM4MDIxMSBkZXZpY2UgdXNpbmcgYG1tODF4X2NvcmVfcmVnaXN0ZXJgLiBBZnRlciB0aGF0LCBJIHdvdWxkIGV4cGVjdCBpdCB0byBoYW5kbGUgY29tbXVuaWNhdGlvbiwgbGlrZWx5IHRocm91Z2ggVVNCIGVuZHBvaW50cy4gU3RhbmRhcmQgc3R1ZmYuCgpOb3csIHRoZSBpbnRlcmVzdGluZyBiaXQuIFdlIGhhdmUgVVNCIGVtdWxhdGlvbiB2aWEgdGhlIHN5emthbGxlciBVU0IgUmF3IEdhZGdldCwgYW5kIGl0IHNlZW1zIGxpa2UgaXQmIzM5O3MgZGVzaWduZWQgdG8gZW11bGF0ZSBhIGRldmljZSB3aXRoIHRoZSB2ZW5kb3IgYW5kIHByb2R1Y3QgSURzIDB4MzI1YiBhbmQgMHg4MTAwLCB3aGljaCBjb3JyZXNwb25kIHRvIGBNTTgxWF9WRU5ET1JfSURgIGFuZCBgTU04MVhfTU04MTBYX1BST0RVQ1RfSURgLiBTbywgdGhlIG1pbGxpb24tZG9sbGFyIHF1ZXN0aW9uOiAqY2FuKiB3ZSBpbml0aWFsaXplIHRoaXMgZHJpdmVyIHVzaW5nIHRoYXQgZW11bGF0aW9uPyBPciwgZG9lcyBpdCBoYXZlIHNvbWUgc3BlY2lmaWMgaGFyZHdhcmUgZGVwZW5kZW5jaWVzIHRoYXQgd2UgbmVlZCB0byBhY2NvdW50IGZvcj8gSSBuZWVkIHRvIGZpZ3VyZSB0aGF0IG91dC4KClRvIGRvIHRoYXQsIEkmIzM5O2xsIGdvIHN0cmFpZ2h0IHRvIGBtbTgxeF9jb3JlX2luaXRgIGluIGBkcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvcmUuY2AuIFRoYXQmIzM5O3Mgd2hlcmUgdGhlIGNvcmUgaW5pdGlhbGl6YXRpb24gbG9naWMgc2hvdWxkIHJlc2lkZSwgYW5kIHRoYXQgc2hvdWxkIGJlIHRoZSBwbGFjZSB0byBzdGFydCBkcmlsbGluZyBkb3duIGludG8gYW55IHBvdGVudGlhbCBoYXJkd2FyZSBkZXBlbmRlbmNpZXMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA3IDA1OjA2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb3JlLmMmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiA2MCwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiA1MAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgIDYwOlx0XG4gIDYxOlx0c3RydWN0IG1tODF4ICptbTgxeF9jb3JlX2FsbG9jKHNpemVfdCBwcml2X3NpemUsIHN0cnVjdCBkZXZpY2UgKmRldilcbiAgNjI6XHR7XG4gIDYzOlx0XHRyZXR1cm4gbW04MXhfbWFjX2FsbG9jKHByaXZfc2l6ZSwgZGV2KTtcbiAgNjQ6XHR9XG4gIDY1Olx0RVhQT1JUX1NZTUJPTF9HUEwobW04MXhfY29yZV9hbGxvYyk7XG4gIDY2Olx0XG4gIDY3Olx0aW50IG1tODF4X2NvcmVfaW5pdChzdHJ1Y3QgbW04MXggKm1vcnMpXG4gIDY4Olx0e1xuICA2OTpcdFx0aW50IHJldDtcbiAgNzA6XHRcbiAgNzE6XHRcdHNldF9iaXQoTU04MVhfU1RBVEVfQ0hJUF9VTlJFU1BPTlNJVkUsIFx1MDAyNm1vcnMtXHUwMDNlc3RhdGVfZmxhZ3MpO1xuICA3MjpcdFx0c2V0X2JpdChNTTgxWF9TVEFURV9SRUxPQURfRldfQUZURVJfU1RBUlQsIFx1MDAyNm1vcnMtXHUwMDNlc3RhdGVfZmxhZ3MpO1xuICA3MzpcdFxuICA3NDpcdFx0bW04MXhfY29yZV9pbml0X21hY19hZGRyKG1vcnMpO1xuICA3NTpcdFxuICA3NjpcdFx0cmV0ID0gbW04MXhfY29yZV9hdHRhY2hfcmVncyhtb3JzKTtcbiAgNzc6XHRcdGlmIChyZXQpXG4gIDc4Olx0XHRcdHJldHVybiByZXQ7XG4gIDc5Olx0XG4gIDgwOlx0XHRtb3JzLVx1MDAzZWNoaXBfd3EgPSBjcmVhdGVfc2luZ2xldGhyZWFkX3dvcmtxdWV1ZShcJiMzNDtjaGlwX3dxXCYjMzQ7KTtcbiAgODE6XHRcdGlmICghbW9ycy1cdTAwM2VjaGlwX3dxKVxuICA4MjpcdFx0XHRyZXR1cm4gLUVOT01FTTtcbiAgODM6XHRcbiAgODQ6XHRcdG1vcnMtXHUwMDNlbmV0X3dxID0gY3JlYXRlX3NpbmdsZXRocmVhZF93b3JrcXVldWUoXCYjMzQ7bmV0X3dxXCYjMzQ7KTtcbiAgODU6XHRcdGlmICghbW9ycy1cdTAwM2VuZXRfd3EpIHtcbiAgODY6XHRcdFx0cmV0ID0gLUVOT01FTTtcbiAgODc6XHRcdFx0Z290byBlcnJfY2hpcF93cTtcbiAgODg6XHRcdH1cbiAgODk6XHRcbiAgOTA6XHRcdHJldCA9IG1tODF4X2hpZl9pbml0KG1vcnMpO1xuICA5MTpcdFx0aWYgKHJldClcbiAgOTI6XHRcdFx0Z290byBlcnJfd3FzO1xuICA5MzpcdFxuICA5NDpcdFx0cmV0dXJuIDA7XG4gIDk1Olx0XG4gIDk2Olx0ZXJyX3dxczpcbiAgOTc6XHRcdGZsdXNoX3dvcmtxdWV1ZShtb3JzLVx1MDAzZW5ldF93cSk7XG4gIDk4Olx0XHRkZXN0cm95X3dvcmtxdWV1ZShtb3JzLVx1MDAzZW5ldF93cSk7XG4gIDk5Olx0XG4gMTAwOlx0ZXJyX2NoaXBfd3E6XG4gMTAxOlx0XHRmbHVzaF93b3JrcXVldWUobW9ycy1cdTAwM2VjaGlwX3dxKTtcbiAxMDI6XHRcdGRlc3Ryb3lfd29ya3F1ZXVlKG1vcnMtXHUwMDNlY2hpcF93cSk7XG4gMTAzOlx0XG4gMTA0Olx0XHRyZXR1cm4gcmV0O1xuIDEwNTpcdH1cbiAxMDY6XHRFWFBPUlRfU1lNQk9MX0dQTChtbTgxeF9jb3JlX2luaXQpO1xuIDEwNzpcdFxuIDEwODpcdGludCBtbTgxeF9jb3JlX3JlZ2lzdGVyKHN0cnVjdCBtbTgxeCAqbW9ycylcbiAxMDk6XHR7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA3IDA1OjA2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI3NTUxCgkJCQkJCQlvdXRwdXQ6IDM4CgkJCQkJCQl0aG91Z2h0czogMTg2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgUG90ZW50aWFsIGZvciBGdXp6aW5nIHRoZSBNTTgxWCBVU0IgV2lyZWxlc3MgRHJpdmVyKioKCk9rYXksIGxldCYjMzk7cyBicmVhayB0aGlzIGRvd24uIEZpcnN0LCBJIG5lZWQgdG8gbG9vayBhdCBjYXNlcyAyIGFuZCAzLCBmb2N1c2luZyBvbiB3aGVuIHdlICpzaG91bGQqIHJldHVybiBgV29ydGhGdXp6aW5nPWZhbHNlYCBhbmQgYFdvcnRoRnV6emluZz10cnVlYCwgcmVzcGVjdGl2ZWx5LiBNeSBnb2FsIGlzIHRvIGRldGVybWluZSBpZiBmdXp6aW5nIHRoaXMgZHJpdmVyIGlzIGV2ZW4gZmVhc2libGUuIEkgbmVlZCB0byB1bmRlcnN0YW5kIGlmIHRoZSBkcml2ZXIgaXMgcmVhY2hhYmxlLgoKUmlnaHQsIHNvIHdlJiMzOTtyZSB0YWxraW5nIGFib3V0IGRyaXZlcnMgdGhhdCBhcmUgYWNjZXNzaWJsZSB0aHJvdWdoIHZpcnR1YWwgYnVzZXMuIFRoaW5raW5nIHNwZWNpZmljYWxseSBhYm91dCB0aGlzIE1NODFYIGRyaXZlciwgSSBuZWVkIHRvIGNvbnNpZGVyIGFsbCB0aGUgdmFyaW91cyBidXMgdHlwZXMgdGhhdCBzeXprYWxsZXIgc3VwcG9ydHMgLSB2aXJ0aW8sIFVTQiBnYWRnZXQsIGxvb3BiYWNrLCBuZXRsaW5rLCBiaW5kZXIsIHNvY2tldHMsIGV0Yy4gVGhlIGdvb2QgbmV3cyBpcyB0aGF0IFVTQiB3aXJlbGVzcyBkcml2ZXJzICphcmUqIHJlYWNoYWJsZSB0aHJvdWdoIHN5emthbGxlciYjMzk7cyBVU0IgZnV6emluZyBjYXBhYmlsaXRpZXMsIGVzcGVjaWFsbHkgd2l0aCB0aGUgUmF3IEdhZGdldCBvciBkdW1teV9oY2Qgc2V0dXBzLiBUaGF0JiMzOTtzIGEgZ29vZCBzdGFydGluZyBwb2ludC4KCk5vdywgdGhlIGltcG9ydGFudCBwYXJ0OiBjb25maWd1cmF0aW9uIGRlcGVuZGVuY2llcy4gSSBuZWVkIHRvIGRldGVybWluZSB3aGF0IGtlcm5lbCBjb25maWd1cmF0aW9ucyBhcmUgYWJzb2x1dGVseSByZXF1aXJlZCBmb3IgdGhpcyBkcml2ZXIgdG8gYmUgYnVpbHQgYW5kLCBtb3JlIGltcG9ydGFudGx5LCAqYWN0aXZlKi4gSSYjMzk7bSBkaXZpbmcgaW50byB0aGUgS2NvbmZpZyBmaWxlcywgc3RhcnRpbmcgd2l0aCBgZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9LY29uZmlnYC4gVGhpcyBpcyB3aGVyZSB0aGUgY29yZSBsb2dpYyBsaWVzLiBCaW5nbywgYE1NODFYX1VTQmAgZGVwZW5kcyBvbiBgTUFDODAyMTEgJmFtcDsmYW1wOyBVU0JgIGFuZCBzZWxlY3RzIGBNTTgxWGAuIFRoaXMgbWVhbnMgd2UgbmVlZCB0aGUgTUFDODAyMTEgd2lyZWxlc3Mgc3RhY2sgYW5kIFVTQiBzdXBwb3J0IGVuYWJsZWQgaW4gdGhlIGtlcm5lbCBjb25maWcgZm9yIHRoaXMgTU04MVggVVNCIGRyaXZlciB0byBldmVuIGJlIGNvbXBpbGVkLiBFeGNlbGxlbnQuIEkgYWxzbyBzZWUgYFdMQU5fVkVORE9SX01PUlNFTUlDUk9gIGluIGBkcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL0tjb25maWdgLCBzbyBJIG5lZWQgdG8gY2hlY2sgaXQsIHRvby4gVGhpcyBpcyB0aGUgY3J1Y2lhbCBpbmZvcm1hdGlvbiBmb3IgbWFraW5nIGluZm9ybWVkIGRlY2lzaW9ucy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDcgMDU6MDY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL0tjb25maWcmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAxLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDIwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAgIDE6XHQjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcbiAgIDI6XHRjb25maWcgV0xBTl9WRU5ET1JfTU9SU0VNSUNST1xuICAgMzpcdFx0Ym9vbCBcJiMzNDtNb3JzZSBNaWNybyBkZXZpY2VzXCYjMzQ7XG4gICA0Olx0XHRkZWZhdWx0IHlcbiAgIDU6XHRcdGhlbHBcbiAgIDY6XHRcdCAgSWYgeW91IGhhdmUgYSB3aXJlbGVzcyBjYXJkIGJlbG9uZ2luZyB0byB0aGlzIGNsYXNzLCBzYXkgWS5cbiAgIDc6XHRcbiAgIDg6XHRcdCAgTm90ZSB0aGF0IHRoZSBhbnN3ZXIgdG8gdGhpcyBxdWVzdGlvbiBkb2VzbiYjMzk7dCBkaXJlY3RseSBhZmZlY3QgdGhlXG4gICA5Olx0XHQgIGtlcm5lbDogc2F5aW5nIE4gd2lsbCBqdXN0IGNhdXNlIHRoZSBjb25maWd1cmF0b3IgdG8gc2tpcCBhbGwgdGhlXG4gIDEwOlx0XHQgIHF1ZXN0aW9ucyBhYm91dCB0aGVzZSBjYXJkcy4gSWYgeW91IHNheSBZLCB5b3Ugd2lsbCBiZSBhc2tlZCBmb3JcbiAgMTE6XHRcdCAgeW91ciBzcGVjaWZpYyBjYXJkIGluIHRoZSBmb2xsb3dpbmcgcXVlc3Rpb25zLlxuICAxMjpcdFxuICAxMzpcdGlmIFdMQU5fVkVORE9SX01PUlNFTUlDUk9cbiAgMTQ6XHRzb3VyY2UgXCYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9LY29uZmlnXCYjMzQ7XG4gIDE1Olx0ZW5kaWYgIyBXTEFOX1ZFTkRPUl9NT1JTRU1JQ1JPXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA3IDA1OjA2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI4Mzk0CgkJCQkJCQlvdXRwdXQ6IDM0CgkJCQkJCQl0aG91Z2h0czogMjkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhhdCB0aG91Z2h0IHByb2Nlc3MsIGFzIGlmIGl0IHdlcmUgbXkgb3duOgoKKipJbnZlc3RpZ2F0aW5nIGEgUG90ZW50aWFsIERlcGVuZGVuY3kqKgoKQWxyaWdodCwgSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGRlcGVuZGVuY2llcyByZWxhdGVkIHRvIGBXTEFOX1ZFTkRPUl9NT1JTRU1JQ1JPYC4gVG8gZ2V0IGEgY2xlYXIgcGljdHVyZSBvZiBpdHMgY29uZmlndXJhdGlvbiBvcHRpb25zLCBJIHNob3VsZCBwcm9iYWJseSBjaGVjayB0aGUgYGRyaXZlcnMvbmV0L3dpcmVsZXNzL0tjb25maWdgIGZpbGUuIFRoYXQmIzM5O3MgdXN1YWxseSB0aGUgcGxhY2Ugd2hlcmUgdGhlc2Ugc29ydHMgb2YgdGhpbmdzIGFyZSBkZWZpbmVkIGFuZCB3aGVyZSBJJiMzOTtsbCBmaW5kIGl0cyBhc3NvY2lhdGVkIGRlcGVuZGVuY2llcywgaWYgYW55LiBJIHdhbnQgdG8gc2VlIGlmIHRoaXMgcGFydGljdWxhciB2ZW5kb3Igb3B0aW9uIGhhcyBhbnkgc3BlY2lmaWMgcmVxdWlyZW1lbnRzIG9uIG90aGVyIGtlcm5lbCBtb2R1bGVzIG9yIGZlYXR1cmVzLiBVbmRlcnN0YW5kaW5nIHRoZSBkZXBlbmRlbmNpZXMgaXMgY3JpdGljYWwgZm9yIHByb3Blcmx5IGNvbmZpZ3VyaW5nIHRoaXMgZm9yIGEgYnVpbGQsIG9yIHRyb3VibGVzaG9vdGluZyBhbnkgcG90ZW50aWFsIGNvbmZsaWN0cyBkb3duIHRoZSBsaW5lLiBMZXQmIzM5O3Mgc2VlIHdoYXQgYEtjb25maWdgIHJldmVhbHMuLi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDcgMDU6MDY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7V0xBTl9WRU5ET1JfTU9SU0VNSUNSTyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL01ha2VmaWxlPTE0PW9iai0kKENPTkZJR19XTEFOX1ZFTkRPUl9NSUNST0NISVApICYjNDM7PSBtaWNyb2NoaXAvXG5kcml2ZXJzL25ldC93aXJlbGVzcy9NYWtlZmlsZToxNTpvYmotJChDT05GSUdfV0xBTl9WRU5ET1JfTU9SU0VNSUNSTykgJiM0Mzs9IG1vcnNlbWljcm8vXG5kcml2ZXJzL25ldC93aXJlbGVzcy9NYWtlZmlsZS0xNi1vYmotJChDT05GSUdfV0xBTl9WRU5ET1JfTlhQKSAmIzQzOz0gbnhwL1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vS2NvbmZpZy0xLSMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9LY29uZmlnOjI6Y29uZmlnIFdMQU5fVkVORE9SX01PUlNFTUlDUk9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vS2NvbmZpZy0zLVx0Ym9vbCBcJiMzNDtNb3JzZSBNaWNybyBkZXZpY2VzXCYjMzQ7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9LY29uZmlnLTEyLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9LY29uZmlnOjEzOmlmIFdMQU5fVkVORE9SX01PUlNFTUlDUk9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vS2NvbmZpZy0xNC1zb3VyY2UgXCYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9LY29uZmlnXCYjMzQ7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL0tjb25maWc6MTU6ZW5kaWYgIyBXTEFOX1ZFTkRPUl9NT1JTRU1JQ1JPXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA3IDA1OjA2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI4OTA0CgkJCQkJCQlvdXRwdXQ6IDI4CgkJCQkJCQl0aG91Z2h0czogMzQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGxldCYjMzk7cyBkaXZlIGludG8gdGhpcy4gSGVyZSYjMzk7cyBob3cgSSYjMzk7ZCBhcHByb2FjaCB0aGlzIHRhc2ssIGFzIGlmIHRoZXNlIHdlcmUgbXkgaW50ZXJuYWwgdGhvdWdodHM6CgoqKkludmVzdGlnYXRpbmcgV2lyZWxlc3MgTmV0d29ya2luZyBDb25maWd1cmF0aW9uKioKCkFscmlnaHQsIEkgbmVlZCB0byBnZXQgYSBoYW5kbGUgb24gdGhlIG92ZXJhbGwgd2lyZWxlc3MgbmV0d29ya2luZyBjb25maWd1cmF0aW9uIHdpdGhpbiB0aGlzIHN5c3RlbS4gTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMgdG8gc3RhcnQgd2l0aCB0aGUgS2NvbmZpZyBmaWxlIGZvciB3aXJlbGVzcyBkcml2ZXJzLiBTcGVjaWZpY2FsbHksIEkmIzM5O2xsIG5hdmlnYXRlIHRvIGBkcml2ZXJzL25ldC93aXJlbGVzcy9LY29uZmlnYC4gVGhhdCYjMzk7cyB3aGVyZSBJIHdvdWxkIGV4cGVjdCB0byBmaW5kIHRoZSBjb3JlIGRlZmluaXRpb25zIGFuZCBkZXBlbmRlbmNpZXMgZm9yIHdpcmVsZXNzIGZ1bmN0aW9uYWxpdHkuIEkmIzM5O20gZXNwZWNpYWxseSBpbnRlcmVzdGVkIGluIGlkZW50aWZ5aW5nIHRoZSAqcGFyZW50KiBjb25maWd1cmF0aW9ucy4gVGhpcyBpcyBjcml0aWNhbCBmb3IgdW5kZXJzdGFuZGluZyB0aGUgbGFyZ2VyIHBpY3R1cmU6IEFyZSB0aGVyZSBwYXJlbnQgY29uZmlncyBsaWtlIGBXTEFOYCwgYE5FVERFVklDRVNgLCBvciBzb21ldGhpbmcgc2ltaWxhciB0aGF0IGNvbmRpdGlvbmFsbHkgZW5hYmxlIG9yIGRpc2FibGUgYnJvYWRlciBuZXR3b3JraW5nIGZlYXR1cmVzIGFuZCwgaW4gdHVybiwgYWZmZWN0IHRoZSB3aXJlbGVzcyBjb21wb25lbnRzPyBUcmFjaW5nIHRob3NlIHBhcmVudCBkZXBlbmRlbmNpZXMgaXMgb2Z0ZW4gdGhlIG1vc3QgZGlyZWN0IHBhdGggdG8gZmlndXJpbmcgb3V0IGhvdyB3aXJlbGVzcyBpcyBpbnRlZ3JhdGVkIGludG8gdGhlIHN5c3RlbSBhcyBhIHdob2xlIGFuZCB3aGF0IHRoZSBpbXBsaWNhdGlvbnMgYXJlIG9mIGFueSBjaGFuZ2VzIEkmIzM5O20gY29uc2lkZXJpbmcuIFRoaXMgd2lsbCBnaXZlIG1lIGEgcHJvcGVyIHN0YXJ0aW5nIHBvaW50IGZvciBhbnkgZGVlcGVyIGFuYWx5c2lzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNyAwNTowNjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDttb3JzZW1pY3JvJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvS2NvbmZpZz0yOT1zb3VyY2UgXCYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbWljcm9jaGlwL0tjb25maWdcJiMzNDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL0tjb25maWc6MzA6c291cmNlIFwmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vS2NvbmZpZ1wmIzM0O1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvS2NvbmZpZy0zMS1zb3VyY2UgXCYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL0tjb25maWdcJiMzNDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9NYWtlZmlsZT0xND1vYmotJChDT05GSUdfV0xBTl9WRU5ET1JfTUlDUk9DSElQKSAmIzQzOz0gbWljcm9jaGlwL1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvTWFrZWZpbGU6MTU6b2JqLSQoQ09ORklHX1dMQU5fVkVORE9SX01PUlNFTUlDUk8pICYjNDM7PSBtb3JzZW1pY3JvL1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvTWFrZWZpbGUtMTYtb2JqLSQoQ09ORklHX1dMQU5fVkVORE9SX05YUCkgJiM0Mzs9IG54cC9cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL0tjb25maWc9MTM9aWYgV0xBTl9WRU5ET1JfTU9SU0VNSUNST1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9LY29uZmlnOjE0OnNvdXJjZSBcJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L0tjb25maWdcJiMzNDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vS2NvbmZpZy0xNS1lbmRpZiAjIFdMQU5fVkVORE9SX01PUlNFTUlDUk9cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2Z3LmgtMTUtI2RlZmluZSBCQ0ZfREFUQUJBU0VfU0laRSAoMTAyNClcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvZncuaDoxNjojZGVmaW5lIE1NODFYX0ZXX0RJUiBcJiMzNDttb3JzZW1pY3JvL21tODF4XCYjMzQ7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2Z3LmgtMTctI2RlZmluZSBNTTgxWF9GV19FWFQgXCYjMzQ7LmJpblwmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNyAwNTowNjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyOTU3MwoJCQkJCQkJb3V0cHV0OiAxNjEKCQkJCQkJCXRob3VnaHRzOiA2NzEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQW5hbHlzaXMgb2YgdGhlIGBtbTgxeF9jbWRfcmVzcF9wcm9jZXNzYCBQYXRjaCoqCgpPa2F5LCBsZXQmIzM5O3MgYnJlYWsgdGhpcyBkb3duLiBGaXJzdCwgSSBuZWVkIHRvIGNvbmZpcm0gdGhlIHJlbGV2YW50IEtjb25maWcgb3B0aW9ucy4gSSBuZWVkIHRvIG1ha2Ugc3VyZSBgV0xBTmAsIGBNQUM4MDIxMWAsIGBVU0JfU1VQUE9SVGAsIGFuZCBgVVNCYCBhcmUgZW5hYmxlZCwgYXMgd2VsbCBhcyBgV0xBTl9WRU5ET1JfTU9SU0VNSUNST2AuIFRoZSBwcmVzZW5jZSBvZiBgTU04MVhfVVNCYCBtYW5kYXRlcyBgTU04MVhgIGFuZCBwb3RlbnRpYWxseSBgTU04MVhfU0RJT2AgZGVwZW5kaW5nIG9uIFNESU8gZW5hYmxlbWVudC4KCk5vdywgdGhlIGNvcmUgb2YgdGhlIG1hdHRlcjogd2hhdCBmdW5jdGlvbiBpcyBhY3R1YWxseSBiZWluZyBtb2RpZmllZD8gIEFoLCB5ZXMsIGBtbTgxeF9jbWRfcmVzcF9wcm9jZXNzYC4gVGhpcyBsb29rcyBsaWtlIGEgc29saWQgY2FuZGlkYXRlIGZvciBhIGBGb2N1c1N5bWJvbGAgc2luY2UgaXQmIzM5O3MgdGhlIHNwZWNpZmljLCBub24tdWJpcXVpdG91cyBmdW5jdGlvbiBiZWluZyB0YXJnZXRlZC4gIExldCYjMzk7cyBtYWtlIHN1cmUgbm90aGluZyBlbHNlIGlzIHRvdWNoZWQgaW4gdGhpcyBwYXRjaC4gUmlnaHQsIGp1c3QgYG1tODF4X2NtZF9yZXNwX3Byb2Nlc3NgLCB0aGF0JiMzOTtzIGl0LgoKTGV0JiMzOTtzIHF1aWNrbHkgZG91YmxlLWNoZWNrIHRoZSBkaWZmIHRvIGNvbmZpcm0gdGhpcy4gSGVyZSB3ZSBoYXZlIGl0OiBhIHNpbmdsZSBtb2RpZmljYXRpb24gd2l0aGluIGBkcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuY2AuICBUaGUgY2hhbmdlIGludm9sdmVzIGFuIGFkZGl0aW9uYWwgYG1pbl90YCBjYWxsIHRvIGVuc3VyZSB0aGUgbGVuZ3RoIGNvcGllZCBkb2VzbiYjMzk7dCBleGNlZWQgYHNrYi0mZ3Q7bGVuYC4gRXhjZWxsZW50LgoKTm93LCBhIHF1aWNrIGNoZWNrIG9mIHRoZSBHaXQgbG9nIG9yIGEgc2ltcGxlIGdyZXBwZXIgY29uZmlybXMgdGhhdCB0aGlzIGlzIGEgc2luZ2xlLWNvbW1pdCBjaGFuZ2UuIE5vIG90aGVyIGZpbGVzIGFyZSBhZmZlY3RlZC4KCk9rYXksIGxldCYjMzk7cyBzdW1tYXJpemU6CgoqICAgKipUYXJnZXQgQXJjaGl0ZWN0dXJlOioqIGFtZDY0LgoqICAgKipXb3J0aEZ1enppbmc6KiogWWVzLCBhcyB0aGlzIGlzIHJlYWNoYWJsZSB2aWEgVVNCIGVtdWxhdGlvbiBvciBSYXcgR2FkZ2V0LgoqICAgKipFbmFibGVDb25maWdzOioqIGBNTTgxWGAsIGBNTTgxWF9VU0JgLCBgV0xBTl9WRU5ET1JfTU9SU0VNSUNST2AsIGBNQUM4MDIxMWAsIGFuZCBgVVNCYC4KKiAgICoqRm9jdXNTeW1ib2xzOioqIGBtbTgxeF9jbWRfcmVzcF9wcm9jZXNzYC4gIFRoaXMgaXMgaWRlYWwgYXMgaXQgaXMgdGhlIG5vbi11YmlxdWl0b3VzIGZ1bmN0aW9uIHdlIGFyZSBtb2RpZnlpbmcuCiogICAqKlJlYXNvbmluZzoqKiBDb25jaXNlIGFuZCBjbGVhciwgYXMgcmVxdWlyZWQuCgpUaW1lIHRvIGludm9rZSBgc2V0LXJlc3VsdHNgLiBJJiMzOTttIGNvbmZpZGVudCBpbiB0aGlzIGFuYWx5c2lzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNyAwNTowNjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7TU04MVgmIzM0OywKICAgICYjMzQ7TU04MVhfVVNCJiMzNDssCiAgICAmIzM0O1dMQU5fVkVORE9SX01PUlNFTUlDUk8mIzM0OywKICAgICYjMzQ7TUFDODAyMTEmIzM0OywKICAgICYjMzQ7VVNCJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7bW04MXhfY21kX3Jlc3BfcHJvY2VzcyYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBhZGRzIGEgYm91bmRzIGNoZWNrIGFnYWluc3Qgc2tiLVx1MDAzZWxlbiBpbiBtbTgxeF9jbWRfcmVzcF9wcm9jZXNzKCkgdG8gcHJldmVudCBhbiBvdXQtb2YtYm91bmRzIHJlYWQgZHVyaW5nIG1lbWNweSB3aGVuIHByb2Nlc3NpbmcgY29tbWFuZCByZXNwb25zZXMgaW4gdGhlIE1vcnNlIE1pY3JvIE1NODF4IHdpcmVsZXNzIGRyaXZlci4gVGhpcyBkcml2ZXIgc3VwcG9ydHMgVVNCIGRldmljZXMgYW5kIGlzIHJlYWNoYWJsZSBpbiBmdXp6aW5nIGVudmlyb25tZW50cyB3aXRoIFVTQiBlbXVsYXRpb24gKGUuZy4gUmF3IEdhZGdldCAvIGR1bW15X2hjZCkuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O01NODFYJiMzNDssCiAgICAmIzM0O01NODFYX1VTQiYjMzQ7LAogICAgJiMzNDtXTEFOX1ZFTkRPUl9NT1JTRU1JQ1JPJiMzNDssCiAgICAmIzM0O01BQzgwMjExJiMzNDssCiAgICAmIzM0O1VTQiYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O21tODF4X2NtZF9yZXNwX3Byb2Nlc3MmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggYWRkcyBhIGJvdW5kcyBjaGVjayBhZ2FpbnN0IHNrYi1cdTAwM2VsZW4gaW4gbW04MXhfY21kX3Jlc3BfcHJvY2VzcygpIHRvIHByZXZlbnQgYW4gb3V0LW9mLWJvdW5kcyByZWFkIGR1cmluZyBtZW1jcHkgd2hlbiBwcm9jZXNzaW5nIGNvbW1hbmQgcmVzcG9uc2VzIGluIHRoZSBNb3JzZSBNaWNybyBNTTgxeCB3aXJlbGVzcyBkcml2ZXIuIFRoaXMgZHJpdmVyIHN1cHBvcnRzIFVTQiBkZXZpY2VzIGFuZCBpcyByZWFjaGFibGUgaW4gZnV6emluZyBlbnZpcm9ubWVudHMgd2l0aCBVU0IgZW11bGF0aW9uIChlLmcuIFJhdyBHYWRnZXQgLyBkdW1teV9oY2QpLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI3LzE8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNyAwNTowNjwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+SWY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA3IDA1OjA2PC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPmttc2FuLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmNvcmU8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggZml4ZXMgYW4gb3V0LW9mLWJvdW5kcyBtZW1vcnkgcmVhZCBpbiBtbTgxeF9jbWRfcmVzcF9wcm9jZXNzKCkgYnkgY2FwcGluZyB0aGUgcmVzcG9uc2UgY29weSBsZW5ndGggdG8gc2tiLVx1MDAzZWxlbiAocHJldmVudGluZyBtZW1jcHkgZnJvbSByZWFkaW5nIHBhc3QgdGhlIGVuZCBvZiB0aGUgcmVjZWl2ZWQgc2tiIGJ1ZmZlciBpZiB0aGUgcmVzcG9uc2UgaGVhZGVyIGxlbmd0aCBjbGFpbXMgYSBsYXJnZXIgc2l6ZSkuIFRoaXMgaXNzdWUgaXMgYSBjbGFzc2ljIGJ1ZmZlciBvdXQtb2YtYm91bmRzIHJlYWQgd2hpY2ggaXMgZGlyZWN0bHkgZGV0ZWN0ZWQgYnkgS0FTQU4uIFRoZSBwYXRjaCBkb2VzIG5vdCBpbnRyb2R1Y2UgYW55IHVuaW5pdGlhbGl6ZWQgbWVtb3J5IGFsbG9jYXRpb25zLCBjb25kaXRpb25hbCBicmFuY2hlcyBiYXNlZCBvbiB1bmluaXRpYWxpemVkIGRhdGEsIG9yIGtlcm5lbC10by11c2VyIGluZm8tbGVha3MuIFRoZXJlZm9yZSwgc3RhbmRhcmQgS0FTQU4gZnV6emluZyBpcyBzdWZmaWNpZW50IGFuZCBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBpcyBub3Qgd2FycmFudGVkLiYjMzQ7LAogICYjMzQ7TmVlZHNLTVNBTiYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBzZWN1cml0eSBlbmdpbmVlciBzcGVjaWFsaXppbmcgaW4ga2VybmVsIG1lbW9yeQplcnJvciBkZXRlY3RvcnMgKEtBU0FOIGFuZCBLTVNBTikuIFlvdXIgam9iIGlzIHRvIHJldmlldyB0aGUgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZApkZXRlcm1pbmUgaWYgdGhlIGNvZGUgY2hhbmdlcyBqdXN0aWZ5IHNwYXduaW5nIGEgZGVkaWNhdGVkIEtNU0FOIChLZXJuZWxNZW1vcnlTYW5pdGl6ZXIpCmZ1enppbmcgc2Vzc2lvbiBpbiBhZGRpdGlvbiB0byBzdGFuZGFyZCBLQVNBTiBmdXp6aW5nLgoKQ1JJVElDQUwgRElTVElOQ1RJT04gQkVUV0VFTiBLQVNBTiBBTkQgS01TQU46Ci0gU3RhbmRhcmQgS0FTQU4ga2VybmVsIGJ1aWxkcyAodXBzdHJlYW0tYXBwYXJtb3Ita2FzYW4uY29uZmlnKSBhbHJlYWR5IGVuYWJsZQogIGEgY29tcHJlaGVuc2l2ZSBzdWl0ZSBvZiBkZWJ1Z2dpbmcgdG9vbHMgYW5kIHNhbml0aXplcnMsIGluY2x1ZGluZyBLQVNBTgogIChvdXQtb2YtYm91bmRzIGFjY2Vzc2VzLCB1c2UtYWZ0ZXItZnJlZSwgZG91YmxlIGZyZWUsIGludmFsaWQgZnJlZSksIExPQ0tERVAKICAobG9ja2luZyBidWdzIGFuZCBkZWFkbG9ja3MpLCBVQi1zYW5pdGl6ZXJzLCBhbmQgbWVtb3J5IGNvcnJ1cHRpb24gY2hlY2tzLgotIEtNU0FOIChLZXJuZWxNZW1vcnlTYW5pdGl6ZXIpIGRldGVjdHMgcmVhZHMgb2YgVU5JTklUSUFMSVpFRCBtZW1vcnkgKHN0YWNrLCBoZWFwLAogIG9yIHBhZ2UgYWxsb2NhdGlvbnMpIGFuZCBrZXJuZWwtdG8tdXNlciBtZW1vcnkgaW5mby1sZWFrcy4KClJ1bGU6IFRIRVJFIElTIE5PIFNFTlNFIElOIFJVTk5JTkcgQSBLTVNBTiBTRVNTSU9OIElGIEEgQlVHIENBTiBCRSBDQVVHSFQgQlkgS0FTQU4sCkxPQ0tERVAsIE9SIE9USEVSIFNUQU5EQVJEIEJVRyBERVRFQ1RPUlMuCkEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpbmN1cnMgc2lnbmlmaWNhbnQgcmVzb3VyY2UgY29zdHMuIFlvdSBtdXN0IE9OTFkKc2V0IE5lZWRzS01TQU49dHJ1ZSBpZiB0aGUgY29kZSBjaGFuZ2VzIGludHJvZHVjZSBvciBleHBvc2UgVU5JTklUSUFMSVpFRCBNRU1PUlkgcmlza3MKdGhhdCBhcmUgZGV0ZWN0ZWQgT05MWSBieSBLTVNBTi4KCkxvb2sgaG9saXN0aWNhbGx5IGF0IHRoZSBwYXRjaCBzZXJpZXMgYW5kIHN1cnJvdW5kaW5nIGNvZGUuIEV2ZW4gaWYgbm8gZGlyZWN0CnVuaW5pdGlhbGl6ZWQgZmllbGQgYWNjZXNzZXMgb3IgbmV3IGJ1ZmZlciBhbGxvY2F0aW9ucyBhcmUgYWRkZWQgaW4gdGhlIGRpZmYgaXRzZWxmLAphIHBhdGNoIG1heSBhbHRlciBjb250cm9sIGZsb3csIGJvdW5kcyBjaGVja2luZywgb3IgZGF0YSBsZW5ndGggY2FsY3VsYXRpb25zIGluIHdheXMKdGhhdCBjaGFuZ2UgaG93IHRoZSByZXN0IG9mIHRoZSBjb2RlIG9wZXJhdGVzIG9uIGV4aXN0aW5nIGJ1ZmZlcnMgKGUuZy4gYWxsb3dpbmcKdW5pbml0aWFsaXplZCBzdGFjay9oZWFwIG1lbW9yeSB0byBiZSByZWFkLCBjb3BpZWQgdG8gdXNlciBzcGFjZSwgb3IgdXNlZCBpbiBjb250cm9sCmZsb3cpLiBEbyBub3QgaGVzaXRhdGUgdG8gdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gaW5zcGVjdCB0aGUgc3Vycm91bmRpbmcgY29kZSwKY2FsbGVkIGZ1bmN0aW9ucywgYW5kIGNhbGxlcnMuCgpTZXQgTmVlZHNLTVNBTj10cnVlIE9OTFkgSUYgdGhlIHBhdGNoIGludHJvZHVjZXMgb3IgbW9kaWZpZXM6CjEuIEtlcm5lbCBzdHJ1Y3R1cmVzIHNlbnQgdG8gdXNlciBzcGFjZSAodmlhIGNvcHlfdG9fdXNlciwgcHV0X3VzZXIsIG5ldGxpbmsgc2tiCiAgIGF0dHJpYnV0ZXMsIGlvY3RsIG91dHB1dCBhcmd1bWVudHMsIHNvY2tldCBvcHRpb25zLCBvciBCUEYgYnVmZmVycykgd2hlcmUgZmllbGRzCiAgIG9yIHN0cnVjdHVyZSBwYWRkaW5nIG1pZ2h0IG5vdCBiZSBmdWxseSBpbml0aWFsaXplZC96ZXJvZWQuCjIuIENvbmRpdGlvbmFsIGxvZ2ljIG9yIGJyYW5jaGluZyB0aGF0IGRlcGVuZHMgb24gcG90ZW50aWFsbHkgdW5pbml0aWFsaXplZCB2YXJpYWJsZXMKICAgb3Igc3RydWN0IGZpZWxkcy4KMy4gQWxsb2NhdGlvbiBvciBpbml0aWFsaXphdGlvbiBvZiBjb21wbGV4IGRhdGEgc3RydWN0dXJlcyB3aGVyZSB1bmluaXRpYWxpemVkIGZpZWxkcwogICBjb3VsZCBiZSByZWFkIGxhdGVyIGluIHJlYWNoYWJsZSBjb2RlIHBhdGhzLgo0LiBCb3VuZHMgY2hlY2tzLCBsZW5ndGhzLCBvciBsb2dpYyBpbiBhIHdheSB0aGF0IGFsbG93cyBzdXJyb3VuZGluZyBjb2RlIHRvIGFjY2VzcwogICB1bmluaXRpYWxpemVkIGJ5dGVzIG9mIGV4aXN0aW5nIGJ1ZmZlcnMuCgpTZXQgTmVlZHNLTVNBTj1mYWxzZSBJRjoKLSBUaGUgY29kZSBjaGFuZ2VzIHByaW1hcmlseSByaXNrIG91dC1vZi1ib3VuZHMgYWNjZXNzLCBhcnJheSBvdmVyZmxvd3MsIE5VTEwgcG9pbnRlcgogIGRlcmVmZXJlbmNlcywgbG9ja2luZyBkZWFkbG9ja3MsIG9yIHVzZS1hZnRlci1mcmVlIGJ1Z3MgKHRoZXNlIGFyZSBhbHJlYWR5IGNhdWdodAogIGJ5IEtBU0FOLCBMT0NLREVQLCBvciBzdGFuZGFyZCBidWcgZGV0ZWN0b3JzKS4KLSBBbGwgc3RhY2svaGVhcCBzdHJ1Y3R1cmVzIHRvdWNoZWQgb3IgaW50cm9kdWNlZCBieSB0aGUgcGF0Y2ggYXJlIGZ1bGx5IHplcm9lZAogIG9yIGluaXRpYWxpemVkIChlLmcuIHVzaW5nID0gezB9LCBtZW1zZXQsIGt6YWxsb2MpIGJlZm9yZSBiZWluZyByZWFkIG9yIGNvcGllZC4KLSBUaGUgcGF0Y2ggZG9lcyBub3QgaW50cm9kdWNlIGFueSByaXNrIG9mIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHVzYWdlIG9yIGluZm8tbGVha3MuCgpVc2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBpbnNwZWN0IHRoZSBzdXJyb3VuZGluZyBjb2RlIGlmIG5lY2Vzc2FyeSwgdGhlbiBwcm92aWRlCmRldGFpbGVkIEtNU0FOUmVhc29uaW5nIGNvbnRyYXN0aW5nIEtBU0FOIHZzIEtNU0FOIGFwcGxpY2FiaWxpdHkgZm9yIHRoaXMgcGF0Y2guClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+VGFyZ2V0IGFyY2hpdGVjdHVyZTogYW1kNjQKCkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgNTc5MDVmYTdlMzY1MWVmOTNmZTg5Njc0MzMwMGExOTBkZjAzOWQwNQpBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBNb24gU2VwIDcgMDU6MDQ6MzEgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29tbWFuZC5jCmluZGV4IGFmYjdlZTliYjIzNmYuLjU5MWU1YmExMDc1MzMgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29tbWFuZC5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29tbWFuZC5jCkBAIC0yMDksNiAmIzQzOzIwOSw3IEBAIGludCBtbTgxeF9jbWRfcmVzcF9wcm9jZXNzKHN0cnVjdCBtbTgxeCAqbW9ycywgc3RydWN0IHNrX2J1ZmYgKnNrYikKIAkJbGVuZ3RoID0gbWluX3QoaW50LCBsZW5ndGgsCiAJCQkgICAgICAgbGUxNl90b19jcHUoc3JjX3Jlc3AtJmd0O2hkci5sZW4pICYjNDM7CiAJCQkJICAgICAgIHNpemVvZihzdHJ1Y3QgaG9zdF9jbWRfaGVhZGVyKSk7CiYjNDM7CQlsZW5ndGggPSBtaW5fdChpbnQsIGxlbmd0aCwgc2tiLSZndDtsZW4pOwogCQltZW1jcHkoZGVzdF9yZXNwLCBzcmNfcmVzcCwgbGVuZ3RoKTsKIAl9IGVsc2UgewogCQlyZXQgPSBsZTMyX3RvX2NwdShzcmNfcmVzcC0mZ3Q7c3RhdHVzKTsKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjkvMzwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA3IDA1OjA2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5rbXNhbi1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIxNDIKCQkJCQkJCW91dHB1dDogNDYKCQkJCQkJCXRob3VnaHRzOiA3OQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSBhbmFseXNpcyBvZiB0aGUgc2l0dWF0aW9uOgoKKipJbml0aWFsIEFzc2Vzc21lbnQgb2YgdGhlIENvZGUgQ2hhbmdlKioKCk9rYXksIHNvIHdlIGhhdmUgYSBwYXRjaCB0byByZXZpZXcuIE15IGZpcnN0IHN0ZXAgaXMgdG8gemVybyBpbiBvbiB0aGUgbW9kaWZpZWQgZmlsZSwgYGRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29tbWFuZC5jYC4gVGhhdCYjMzk7cyB3aGVyZSB0aGUgYWN0aW9uIGlzLiBJbW1lZGlhdGVseSwgSSYjMzk7bSB0aGlua2luZyBhYm91dCB0aGUgaW1wbGljYXRpb25zIG9mIGNoYW5nZXMgd2l0aGluIHRoYXQgc3BlY2lmaWMgZHJpdmVyLiBNeSBleHBlcmllbmNlIHRlbGxzIG1lIHRoYXQgaXQmIzM5O3MgbGlrZWx5IGEgY29tbWFuZCBoYW5kbGluZyBtb2R1bGUgb2Ygc29tZSBraW5kLiBOb3csIGxldCYjMzk7cyBnZXQgYSBjbG9zZXIgbG9vayBhdCB0aGUgYWN0dWFsIGNvZGUuIE15IG5leHQgbG9naWNhbCBzdGVwIGlzIHRvIHBpbnBvaW50IHRoZSBleGFjdCBsb2NhdGlvbi4gTGluZSAyMDkgaXMgbWVudGlvbmVkLCB3aGljaCBpcyBhIHBlcmZlY3Qgc3RhcnRpbmcgcG9pbnQuIEkgY2FuIHF1aWNrbHkganVtcCB0byB0aGF0IGxpbmUgdXNpbmcgYHJlYWQtZmlsZWAgb3IgYGdyZXBwZXJgIGFuZCBzZWUgd2hhdCYjMzk7cyBoYXBwZW5pbmcgaW4gY29udGV4dCwgYSBmZXcgbGluZXMgYWJvdmUgYW5kIGJlbG93LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMwLzM8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNyAwNTowNjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29tbWFuZC5jJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMTgwLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDcwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAxODA6XHRcdCAqIHRoaXMgaXMgYSBsYXRlIHJlc3BvbnNlIGZvciBhIHRpbWVkIG91dCBjb21tYW5kIHdoaWNoIGhhcyBiZWVuXG4gMTgxOlx0XHQgKiBjbGVhbmVkIHVwLCBzbyBqdXN0IGZyZWUgdXAgdGhlIHJlc3BvbnNlLiBJZiBhIGNvbW1hbmQgd2FzIHJldHJpZWQsXG4gMTgyOlx0XHQgKiB0aGUgcmVzcG9uc2UgbWF5IGJlIGZyb20gdGhlIHJldHJ5IG9yIGZyb20gdGhlIG9yaWdpbmFsIGNvbW1hbmRcbiAxODM6XHRcdCAqIChsYXRlIHJlc3BvbnNlKSBidXQgbm90IGZyb20gYm90aCBiZWNhdXNlIHRoZSBmaXJtd2FyZSB3aWxsIHNpbGVudGx5XG4gMTg0Olx0XHQgKiBkcm9wIGEgcmV0cnkgaWYgaXQgcmVjZWl2ZWQgdGhlIGluaXRpYWwgcmVxdWVzdC4gU28gYSBtaXNtYXRjaGVkXG4gMTg1Olx0XHQgKiByZXRyeSBjb3VudGVyIGlzIHRyZWF0ZWQgYXMgYSBtYXRjaGVkIGNvbW1hbmQgYW5kIHJlc3BvbnNlLlxuIDE4NjpcdFx0ICovXG4gMTg3Olx0XHRpZiAoIWNtZF9za2IgfHwgbWVzc2FnZV9pZCAhPSByZXNwX21lc3NhZ2VfaWQgfHxcbiAxODg6XHRcdCAgICAoaG9zdF9pZCBcdTAwMjYgSE9TVF9DTURfSE9TVF9JRF9TRVFfTUFTSykgIT1cbiAxODk6XHRcdFx0ICAgIChyZXNwX2hvc3RfaWQgXHUwMDI2IEhPU1RfQ01EX0hPU1RfSURfU0VRX01BU0spKSB7XG4gMTkwOlx0XHRcdGRldl9lcnIobW9ycy1cdTAwM2VkZXYsXG4gMTkxOlx0XHRcdFx0XCYjMzQ7TGF0ZSByZXNwb25zZSBmb3IgdGltZWQgb3V0IHJlcSAweCUwNHg6JTA0eCBoYXZlIDB4JTA0eDolMDR4IDB4JTA0eFwmIzM0OyxcbiAxOTI6XHRcdFx0XHRyZXNwX21lc3NhZ2VfaWQsIHJlc3BfaG9zdF9pZCwgbWVzc2FnZV9pZCwgaG9zdF9pZCxcbiAxOTM6XHRcdFx0XHRtb3JzLVx1MDAzZWNtZF9zZXEpO1xuIDE5NDpcdFx0XHRpc19sYXRlX3Jlc3BvbnNlID0gdHJ1ZTtcbiAxOTU6XHRcdFx0Z290byBleGl0O1xuIDE5NjpcdFx0fVxuIDE5NzpcdFx0aWYgKChob3N0X2lkIFx1MDAyNiBIT1NUX0NNRF9IT1NUX0lEX1JFVFJZX01BU0spICE9XG4gMTk4Olx0XHQgICAgKHJlc3BfaG9zdF9pZCBcdTAwMjYgSE9TVF9DTURfSE9TVF9JRF9SRVRSWV9NQVNLKSlcbiAxOTk6XHRcdFx0ZGV2X2RiZyhtb3JzLVx1MDAzZWRldixcbiAyMDA6XHRcdFx0XHRcJiMzNDtDb21tYW5kIHJldHJ5IG1pc21hdGNoIDB4JTA0eDolMDR4IDB4JTA0eDolMDR4XCYjMzQ7LFxuIDIwMTpcdFx0XHRcdG1lc3NhZ2VfaWQsIGhvc3RfaWQsIHJlc3BfbWVzc2FnZV9pZCwgcmVzcF9ob3N0X2lkKTtcbiAyMDI6XHRcbiAyMDM6XHRcdHJlc3BfY2IgPSAoc3RydWN0IGhvc3RfY21kX3Jlc3BfY2IgKilJRUVFODAyMTFfU0tCX0NCKGNtZF9za2IpXG4gMjA0Olx0XHRcdFx0ICAtXHUwMDNlZHJpdmVyX2RhdGE7XG4gMjA1Olx0XHRsZW5ndGggPSByZXNwX2NiLVx1MDAzZWxlbmd0aDtcbiAyMDY6XHRcdGRlc3RfcmVzcCA9IHJlc3BfY2ItXHUwMDNlZGVzdF9yZXNwO1xuIDIwNzpcdFx0aWYgKGxlbmd0aCBcdTAwM2U9IHNpemVvZihzdHJ1Y3QgaG9zdF9jbWRfcmVzcCkgXHUwMDI2XHUwMDI2IGRlc3RfcmVzcCkge1xuIDIwODpcdFx0XHRyZXQgPSAwO1xuIDIwOTpcdFx0XHRsZW5ndGggPSBtaW5fdChpbnQsIGxlbmd0aCxcbiAyMTA6XHRcdFx0XHQgICAgICAgbGUxNl90b19jcHUoc3JjX3Jlc3AtXHUwMDNlaGRyLmxlbikgJiM0MztcbiAyMTE6XHRcdFx0XHRcdCAgICAgICBzaXplb2Yoc3RydWN0IGhvc3RfY21kX2hlYWRlcikpO1xuIDIxMjpcdFx0XHRsZW5ndGggPSBtaW5fdChpbnQsIGxlbmd0aCwgc2tiLVx1MDAzZWxlbik7XG4gMjEzOlx0XHRcdG1lbWNweShkZXN0X3Jlc3AsIHNyY19yZXNwLCBsZW5ndGgpO1xuIDIxNDpcdFx0fSBlbHNlIHtcbiAyMTU6XHRcdFx0cmV0ID0gbGUzMl90b19jcHUoc3JjX3Jlc3AtXHUwMDNlc3RhdHVzKTtcbiAyMTY6XHRcdH1cbiAyMTc6XHRcbiAyMTg6XHRcdHJlc3BfY2ItXHUwMDNlcmV0ID0gcmV0O1xuIDIxOTpcdFxuIDIyMDpcdGV4aXQ6XG4gMjIxOlx0XHRpZiAoY21kX3NrYiBcdTAwMjZcdTAwMjYgIWlzX2xhdGVfcmVzcG9uc2UpIHtcbiAyMjI6XHRcdFx0LyogQ29tcGxldGUgaWYgbm90IGFscmVhZHkgdGltZWQgb3V0ICovXG4gMjIzOlx0XHRcdGlmIChtb3JzLVx1MDAzZWNtZF9jb21wKVxuIDIyNDpcdFx0XHRcdGNvbXBsZXRlKG1vcnMtXHUwMDNlY21kX2NvbXApO1xuIDIyNTpcdFx0fVxuIDIyNjpcdFxuIDIyNzpcdFx0bXV0ZXhfdW5sb2NrKFx1MDAyNm1vcnMtXHUwMDNlY21kX2xvY2spO1xuIDIyODpcdGV4aXRfZnJlZTpcbiAyMjk6XHRcdGRldl9rZnJlZV9za2Ioc2tiKTtcbiAyMzA6XHRcdHJldHVybiAwO1xuIDIzMTpcdH1cbiAyMzI6XHRcbiAyMzM6XHRpbnQgbW04MXhfY21kX3N0YV9zdGF0ZShzdHJ1Y3QgbW04MXggKm1vcnMsIHN0cnVjdCBtbTgxeF92aWYgKm1vcnNfdmlmLCB1MTYgYWlkLFxuIDIzNDpcdFx0XHRcdHN0cnVjdCBpZWVlODAyMTFfc3RhICpzdGEsXG4gMjM1Olx0XHRcdFx0ZW51bSBpZWVlODAyMTFfc3RhX3N0YXRlIHN0YXRlKVxuIDIzNjpcdHtcbiAyMzc6XHRcdHN0cnVjdCBob3N0X2NtZF9yZXFfc2V0X3N0YV9zdGF0ZSByZXEgPSB7XG4gMjM4Olx0XHRcdC5oZHIgPSBJTklUX0NNRF9IRFIocmVxLCBIT1NUX0NNRF9JRF9TRVRfU1RBX1NUQVRFLFxuIDIzOTpcdFx0XHRcdFx0ICAgIG1vcnNfdmlmLVx1MDAzZWlkKSxcbiAyNDA6XHRcdFx0LmFpZCA9IGNwdV90b19sZTE2KGFpZCksXG4gMjQxOlx0XHRcdC5zdGF0ZSA9IGNwdV90b19sZTE2KHN0YXRlKSxcbiAyNDI6XHRcdFx0LnVhcHNkX3F1ZXVlcyA9IHN0YS1cdTAwM2V1YXBzZF9xdWV1ZXMsXG4gMjQzOlx0XHR9O1xuIDI0NDpcdFxuIDI0NTpcdFx0bWVtY3B5KHJlcS5zdGFfYWRkciwgc3RhLVx1MDAzZWFkZHIsIHNpemVvZihyZXEuc3RhX2FkZHIpKTtcbiAyNDY6XHRcbiAyNDc6XHRcdHJldHVybiBtbTgxeF9jbWRfdHgobW9ycywgTlVMTCwgKHN0cnVjdCBob3N0X2NtZF9yZXEgKilcdTAwMjZyZXEsIDAsIDApO1xuIDI0ODpcdH1cbiAyNDk6XHRcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zMS8zPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDcgMDU6MDY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPmttc2FuLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzczNAoJCQkJCQkJb3V0cHV0OiA0NgoJCQkJCQkJdGhvdWdodHM6IDI1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHN1bW1hcnksIHByZXNlbnRlZCBhcyBhIHN0cmVhbSBvZiB0aG91Z2h0OgoKKipEaXZpbmcgRGVlcGVyIGludG8gYG1tODF4X2NtZF9yZXNwX3Byb2Nlc3NgKioKClJpZ2h0LCBzbyBJJiMzOTttIHRyeWluZyB0byBnZXQgdGhlIGZ1bGwgcGljdHVyZSBoZXJlLCBhbmQgaXQmIzM5O3MgY2xlYXIgSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlICplbnRpcmUqIGNvbnRleHQgb2YgYG1tODF4X2NtZF9yZXNwX3Byb2Nlc3NgLiBJJiMzOTt2ZSBsb29rZWQgYXQgdGhlIGVudHJ5IHBvaW50IGFuZCB0aGUgbGlrZWx5IGNhbGxpbmcgZnVuY3Rpb25zLCBidXQgbm93IEkmIzM5O20gdGhpbmtpbmcgSSBjYW4mIzM5O3QgYnVpbGQgbXkgYXJndW1lbnQgd2l0aG91dCBleHBsb3JpbmcgdGhlIHJlc3Qgb2YgdGhhdCBmdW5jdGlvbiYjMzk7cyBpbXBsZW1lbnRhdGlvbi4gV2hhdCBhcmUgYWxsIHRoZSBwb3RlbnRpYWwgcGF0aHMgb2YgZXhlY3V0aW9uPyBXaGVyZSBhcmUgdGhlIGNyaXRpY2FsIGRhdGEgZGVwZW5kZW5jaWVzPyBJJiMzOTttIGdvaW5nIHRvIG5lZWQgdG8gdHJhY2UgdGhyb3VnaCBpdCBsaW5lIGJ5IGxpbmUsIGxvb2sgYXQgdGhlIGNvbmRpdGlvbmFsIGJyYW5jaGVzIGFuZCBkYXRhIGRlcGVuZGVuY2llcyB0byBzZWUgd2hhdCYjMzk7cyByZWFsbHkgaGFwcGVuaW5nLiBJIG5lZWQgdG8ga25vdyB3aGF0IGhhcHBlbnMgaW4gZXZlcnkgc2NlbmFyaW8gdGhpcyBmdW5jdGlvbiBoYW5kbGVzLiBJJiMzOTttIGdvaW5nIHRvIGRpZyBpbiBub3cgYW5kIGdldCBteSBoZWFkIGZ1bGx5IGFyb3VuZCB0aGUgZW50aXJlIHJvdXRpbmUgYmVmb3JlIEkgZ28gYW55IGZ1cnRoZXIgaW4gbXkgYW5hbHlzaXMuIFRoaXMgc2hvdWxkIHByb3ZpZGUgbWUgd2l0aCB0aGUgY29tcHJlaGVuc2l2ZSBjb250ZXh0IEkgbmVlZCB0byBtb3ZlIGZvcndhcmQgY29uZmlkZW50bHkuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzIvMzwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA3IDA1OjA2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb21tYW5kLmMmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAxNDAsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogNTAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7IDE0MDpcdFx0XHRcdGxlMTZfdG9fY3B1KHJlcS1cdTAwM2VoZHIuaG9zdF9pZCksIHJldCwgcmV0KTtcbiAxNDE6XHRcdH1cbiAxNDI6XHRcbiAxNDM6XHRcdHJldHVybiByZXQ7XG4gMTQ0Olx0fVxuIDE0NTpcdFxuIDE0NjpcdGludCBtbTgxeF9jbWRfcmVzcF9wcm9jZXNzKHN0cnVjdCBtbTgxeCAqbW9ycywgc3RydWN0IHNrX2J1ZmYgKnNrYilcbiAxNDc6XHR7XG4gMTQ4Olx0XHRpbnQgbGVuZ3RoLCByZXQgPSAtRVNSQ0g7IC8qIE5vIHN1Y2ggcHJvY2VzcyAqL1xuIDE0OTpcdFx0c3RydWN0IG1tODF4X3NrYnEgKmNtZF9xID0gbW04MXhfaGlmX2dldF90eF9jbWRfcXVldWUobW9ycyk7XG4gMTUwOlx0XHRzdHJ1Y3QgaG9zdF9jbWRfcmVzcCAqc3JjX3Jlc3AgPSAoc3RydWN0IGhvc3RfY21kX3Jlc3AgKikoc2tiLVx1MDAzZWRhdGEpO1xuIDE1MTpcdFx0c3RydWN0IHNrX2J1ZmYgKmNtZF9za2IgPSBOVUxMO1xuIDE1MjpcdFx0c3RydWN0IGhvc3RfY21kX3Jlc3BfY2IgKnJlc3BfY2I7XG4gMTUzOlx0XHRzdHJ1Y3QgaG9zdF9jbWRfcmVzcCAqZGVzdF9yZXNwO1xuIDE1NDpcdFx0c3RydWN0IGhvc3RfY21kX3JlcSAqcmVxO1xuIDE1NTpcdFx0dTE2IG1lc3NhZ2VfaWQgPSAwO1xuIDE1NjpcdFx0dTE2IGhvc3RfaWQgPSAwO1xuIDE1NzpcdFx0dTE2IHJlc3BfbWVzc2FnZV9pZCA9IGxlMTZfdG9fY3B1KHNyY19yZXNwLVx1MDAzZWhkci5tZXNzYWdlX2lkKTtcbiAxNTg6XHRcdHUxNiByZXNwX2hvc3RfaWQgPSBsZTE2X3RvX2NwdShzcmNfcmVzcC1cdTAwM2VoZHIuaG9zdF9pZCk7XG4gMTU5Olx0XHRib29sIGlzX2xhdGVfcmVzcG9uc2UgPSBmYWxzZTtcbiAxNjA6XHRcbiAxNjE6XHRcdGRldl9kYmcobW9ycy1cdTAwM2VkZXYsIFwmIzM0O0VWVCAweCUwNHg6MHglMDR4XCYjMzQ7LCByZXNwX21lc3NhZ2VfaWQsIHJlc3BfaG9zdF9pZCk7XG4gMTYyOlx0XG4gMTYzOlx0XHRpZiAoIUhPU1RfQ01EX0lTX1JFU1Aoc3JjX3Jlc3ApKSB7XG4gMTY0Olx0XHRcdHJldCA9IG1tODF4X21hY19ldmVudF9yZWN2KG1vcnMsIHNrYik7XG4gMTY1Olx0XHRcdGdvdG8gZXhpdF9mcmVlO1xuIDE2NjpcdFx0fVxuIDE2NzpcdFxuIDE2ODpcdFx0bXV0ZXhfbG9jayhcdTAwMjZtb3JzLVx1MDAzZWNtZF9sb2NrKTtcbiAxNjk6XHRcbiAxNzA6XHRcdGNtZF9za2IgPSBtbTgxeF9za2JxX3R4X3BlbmRpbmcoY21kX3EpO1xuIDE3MTpcdFx0aWYgKGNtZF9za2IpIHtcbiAxNzI6XHRcdFx0bW04MXhfc2ticV9wdWxsX2hkcl9wb3N0X3R4KGNtZF9za2IpO1xuIDE3MzpcdFx0XHRyZXEgPSAoc3RydWN0IGhvc3RfY21kX3JlcSAqKWNtZF9za2ItXHUwMDNlZGF0YTtcbiAxNzQ6XHRcdFx0bWVzc2FnZV9pZCA9IGxlMTZfdG9fY3B1KHJlcS1cdTAwM2VoZHIubWVzc2FnZV9pZCk7XG4gMTc1Olx0XHRcdGhvc3RfaWQgPSBsZTE2X3RvX2NwdShyZXEtXHUwMDNlaGRyLmhvc3RfaWQpO1xuIDE3NjpcdFx0fVxuIDE3NzpcdFxuIDE3ODpcdFx0LypcbiAxNzk6XHRcdCAqIElmIHRoZXJlIGlzIG5vIHBlbmRpbmcgY29tbWFuZCBvciB0aGUgc2VxdWVuY2UgSUQgZG9lcyBub3QgbWF0Y2gsXG4gMTgwOlx0XHQgKiB0aGlzIGlzIGEgbGF0ZSByZXNwb25zZSBmb3IgYSB0aW1lZCBvdXQgY29tbWFuZCB3aGljaCBoYXMgYmVlblxuIDE4MTpcdFx0ICogY2xlYW5lZCB1cCwgc28ganVzdCBmcmVlIHVwIHRoZSByZXNwb25zZS4gSWYgYSBjb21tYW5kIHdhcyByZXRyaWVkLFxuIDE4MjpcdFx0ICogdGhlIHJlc3BvbnNlIG1heSBiZSBmcm9tIHRoZSByZXRyeSBvciBmcm9tIHRoZSBvcmlnaW5hbCBjb21tYW5kXG4gMTgzOlx0XHQgKiAobGF0ZSByZXNwb25zZSkgYnV0IG5vdCBmcm9tIGJvdGggYmVjYXVzZSB0aGUgZmlybXdhcmUgd2lsbCBzaWxlbnRseVxuIDE4NDpcdFx0ICogZHJvcCBhIHJldHJ5IGlmIGl0IHJlY2VpdmVkIHRoZSBpbml0aWFsIHJlcXVlc3QuIFNvIGEgbWlzbWF0Y2hlZFxuIDE4NTpcdFx0ICogcmV0cnkgY291bnRlciBpcyB0cmVhdGVkIGFzIGEgbWF0Y2hlZCBjb21tYW5kIGFuZCByZXNwb25zZS5cbiAxODY6XHRcdCAqL1xuIDE4NzpcdFx0aWYgKCFjbWRfc2tiIHx8IG1lc3NhZ2VfaWQgIT0gcmVzcF9tZXNzYWdlX2lkIHx8XG4gMTg4Olx0XHQgICAgKGhvc3RfaWQgXHUwMDI2IEhPU1RfQ01EX0hPU1RfSURfU0VRX01BU0spICE9XG4gMTg5Olx0XHRcdCAgICAocmVzcF9ob3N0X2lkIFx1MDAyNiBIT1NUX0NNRF9IT1NUX0lEX1NFUV9NQVNLKSkge1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMzLzM8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNyAwNTowNjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+a21zYW4tZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0OTk1CgkJCQkJCQlvdXRwdXQ6IDE3CgkJCQkJCQl0aG91Z2h0czogMjI5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBhIFJlY2VudCBQYXRjaCoqCgpPa2F5LCBsZXQmIzM5O3MgYnJlYWsgdGhpcyBkb3duLiBUaGlzIHBhdGNoIHNlZW1zIHN0cmFpZ2h0Zm9yd2FyZCBhdCBmaXJzdCBnbGFuY2UuIEl0JiMzOTtzIGFkZGluZyBhIGNydWNpYWwgYGxlbmd0aCA9IG1pbl90KGludCwgbGVuZ3RoLCBza2ItJmd0O2xlbik7YCBsaW5lIHJpZ2h0IGJlZm9yZSBhIGBtZW1jcHlgLiBUaGUga2V5IGlzIHdoYXQgaXQgKnJlcGxhY2VzKi4gUHJldmlvdXNseSwgdGhlIGxlbmd0aCBjYWxjdWxhdGlvbiByZWxpZWQgb24gYGxlMTZfdG9fY3B1KHNyY19yZXNwLSZndDtoZHIubGVuKSAmIzQzOyBzaXplb2Yoc3RydWN0IGhvc3RfY21kX2hlYWRlcilgLgoKVGhlIHBlbm55IGRyb3BzLiBCZWZvcmUgdGhpcyBmaXgsIGlmIHRoZSBpbmNvbWluZyBgc2tiYCAodGhlIG5ldHdvcmsgYnVmZmVyKSBoYWQgYSBsZW5ndGggKGBza2ItJmd0O2xlbmApIHNtYWxsZXIgdGhhbiB3aGF0IHRoZSBjb2RlICp0aG91Z2h0KiBpdCBzaG91bGQgYmUgKGBzcmNfcmVzcC0mZ3Q7aGRyLmxlbiAmIzQzOyBzaXplb2YoLi4uKWApLCB0aGF0IGBtZW1jcHlgIHdhcyBnb2luZyB0byByZWFkICpwYXN0KiB0aGUgZW5kIG9mIHRoZSBkYXRhIGFsbG9jYXRlZCB0byB0aGUgYHNrYmAuIFRoYXQmIzM5O3MgYW4gaW1tZWRpYXRlIHJlZCBmbGFnIOKAkyBhbiBvdXQtb2YtYm91bmRzIHJlYWQgb24gdGhlIGBza2JgJiMzOTtzIGJ1ZmZlciwgcHJvYmFibHkgYSBjbGFzc2ljIHNsYWIgb3IgcGFnZSBvdXQtb2YtYm91bmRzIHJlYWQsIGFuZCBLQVNBTiAodGhlIEtlcm5lbCBBZGRyZXNzIFNBTml0aXplcikgd291bGQgYmUgaGF2aW5nIGEgZmllbGQgZGF5IHdpdGggaXQuIENsYXNzaWMhCgpOb3csIHRvIGZ1bGx5IHVuZGVyc3RhbmQgdGhlIGltcGFjdCwgSSBuZWVkIHRvIGNoZWNrIHRoZSBjb250ZXh0LiBXaGVyZSBpcyBgZGVzdF9yZXNwYCBjb21pbmcgZnJvbT8gQW5kIHdoZXJlIGlzIHRoaXMgYGhvc3RfY21kX3Jlc3BfY2JgIGZ1bmN0aW9uIGJlaW5nIHVzZWQ/IFRpbWUgdG8gZ3JhYiB0aGUgZ3JlcCBhbmQgZG8gc29tZSBkaWdnaW5nIHRvIHNlZSB3aGVyZSB0aGVzZSB2YXJpYWJsZXMgYXJlIGRlZmluZWQgYW5kIHVzZWQuIEdvdHRhIGNoZWNrIHdoZXJlIGBkZXN0X3Jlc3BgIGxpdmVzIGFuZCBob3cgaXQmIzM5O3MgaGFuZGxlZCB0byBtYWtlIHN1cmUgdGhlcmUgYXJlIG5vIG90aGVyIHBvdGVudGlhbCBpc3N1ZXMgZG93bnN0cmVhbS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zNC8zPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDcgMDU6MDY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7ZGVzdF9yZXNwJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29tbWFuZC5jPTI3PXN0cnVjdCBob3N0X2NtZF9yZXNwX2NiIHtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuYy0yOS1cdHUzMiBsZW5ndGg7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuYzozMDpcdHN0cnVjdCBob3N0X2NtZF9yZXNwICpkZXN0X3Jlc3A7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuYy0zMS19O1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29tbWFuZC5jPTMzPXN0YXRpYyBpbnQgbW04MXhfY21kX3R4KHN0cnVjdCBtbTgxeCAqbW9ycywgc3RydWN0IGhvc3RfY21kX3Jlc3AgKnJlc3AsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb21tYW5kLmMtNzItXHRcdHJlc3BfY2ItXHUwMDNlbGVuZ3RoID0gbGVuZ3RoO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb21tYW5kLmM6NzM6XHRcdHJlc3BfY2ItXHUwMDNlZGVzdF9yZXNwID0gcmVzcDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29tbWFuZC5jLTc0LVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29tbWFuZC5jPTE0Nj1pbnQgbW04MXhfY21kX3Jlc3BfcHJvY2VzcyhzdHJ1Y3QgbW04MXggKm1vcnMsIHN0cnVjdCBza19idWZmICpza2IpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb21tYW5kLmMtMTUyLVx0c3RydWN0IGhvc3RfY21kX3Jlc3BfY2IgKnJlc3BfY2I7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuYzoxNTM6XHRzdHJ1Y3QgaG9zdF9jbWRfcmVzcCAqZGVzdF9yZXNwO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb21tYW5kLmMtMTU0LVx0c3RydWN0IGhvc3RfY21kX3JlcSAqcmVxO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29tbWFuZC5jLTIwNS1cdGxlbmd0aCA9IHJlc3BfY2ItXHUwMDNlbGVuZ3RoO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb21tYW5kLmM6MjA2Olx0ZGVzdF9yZXNwID0gcmVzcF9jYi1cdTAwM2VkZXN0X3Jlc3A7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuYzoyMDc6XHRpZiAobGVuZ3RoIFx1MDAzZT0gc2l6ZW9mKHN0cnVjdCBob3N0X2NtZF9yZXNwKSBcdTAwMjZcdTAwMjYgZGVzdF9yZXNwKSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuYy0yMDgtXHRcdHJldCA9IDA7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb21tYW5kLmMtMjEyLVx0XHRsZW5ndGggPSBtaW5fdChpbnQsIGxlbmd0aCwgc2tiLVx1MDAzZWxlbik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuYzoyMTM6XHRcdG1lbWNweShkZXN0X3Jlc3AsIHNyY19yZXNwLCBsZW5ndGgpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb21tYW5kLmMtMjE0LVx0fSBlbHNlIHtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zNS8zPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDcgMDU6MDY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPmttc2FuLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNjI2MgoJCQkJCQkJb3V0cHV0OiA0NQoJCQkJCQkJdGhvdWdodHM6IDI1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHN1bW1hcnksIGFzIGlmIEkgd2VyZSB0aGlua2luZyB0aGVzZSB0aG91Z2h0czoKCioqQW5hbHl6aW5nIHRoZSBSZXNwb25zZSBIYW5kbGluZyBpbiBtbTgxeF9jbWRfdHgqKgoKT2theSwgdGltZSB0byBkaWcgaW50byBgbW04MXhfY21kX3R4YC4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgZXhhY3RseSBob3cgdGhlIGByZXNwYCB2YXJpYWJsZSBpcyBhbGxvY2F0ZWQgYW5kIHBhc3NlZCBhcm91bmQgd2l0aGluIHRoaXMgZnVuY3Rpb24uIFRoZSBkZXRhaWxzIG9mIHJlc3BvbnNlIGhhbmRsaW5nIGFyZSBjcnVjaWFsLCBwYXJ0aWN1bGFybHkgaW4gdGhpcyBzdWJzeXN0ZW0sIGFuZCBhIHBvdGVudGlhbCBidWcgY291bGQgYmUgbHVya2luZyBoZXJlLiBJJiMzOTtsbCBuZWVkIHRvIHRyYWNlIHRoZSBhbGxvY2F0aW9uLCBhbnkgbW9kaWZpY2F0aW9ucyBvciBjb3BpZXMsIGFuZCB1bHRpbWF0ZWx5LCBob3cgaXQmIzM5O3MgaGFuZGxlZCBvbiByZXR1cm4uIFRoaXMgbGV2ZWwgb2Ygc2NydXRpbnkgaXMga2V5IHRvIGVuc3VyaW5nIHJvYnVzdCBjb21tYW5kIHRyYW5zbWlzc2lvbiBhbmQgcmVjZXB0aW9uIHdpdGhpbiB0aGUgZHJpdmVyLiBMZXQmIzM5O3Mgc2VlIGhvdyB0aGV5JiMzOTt2ZSBpbXBsZW1lbnRlZCBpdC4uLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjM2LzM8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNyAwNTowNjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29tbWFuZC5jJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMzMsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogNTUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7ICAzMzpcdHN0YXRpYyBpbnQgbW04MXhfY21kX3R4KHN0cnVjdCBtbTgxeCAqbW9ycywgc3RydWN0IGhvc3RfY21kX3Jlc3AgKnJlc3AsXG4gIDM0Olx0XHRcdFx0c3RydWN0IGhvc3RfY21kX3JlcSAqcmVxLCB1MzIgbGVuZ3RoLCB1MzIgdGltZW91dClcbiAgMzU6XHR7XG4gIDM2Olx0XHRpbnQgY21kX2xlbjtcbiAgMzc6XHRcdGludCByZXQgPSAwO1xuICAzODpcdFx0dTE2IGhvc3RfaWQ7XG4gIDM5Olx0XHRpbnQgcmV0cnkgPSAwO1xuICA0MDpcdFx0dW5zaWduZWQgbG9uZyB3YWl0X3JldCA9IDA7XG4gIDQxOlx0XHRzdHJ1Y3Qgc2tfYnVmZiAqc2tiO1xuICA0MjpcdFx0c3RydWN0IG1tODF4X3NrYnEgKmNtZF9xID0gbW04MXhfaGlmX2dldF90eF9jbWRfcXVldWUobW9ycyk7XG4gIDQzOlx0XHRzdHJ1Y3QgaG9zdF9jbWRfcmVzcF9jYiAqcmVzcF9jYjtcbiAgNDQ6XHRcdERFQ0xBUkVfQ09NUExFVElPTl9PTlNUQUNLKGNtZF9jb21wKTtcbiAgNDU6XHRcbiAgNDY6XHRcdEJVSUxEX0JVR19PTihzaXplb2Yoc3RydWN0IGhvc3RfY21kX3Jlc3BfY2IpIFx1MDAzZVxuICA0NzpcdFx0XHQgICAgIElFRUU4MDIxMV9UWF9JTkZPX0RSSVZFUl9EQVRBX1NJWkUpO1xuICA0ODpcdFxuICA0OTpcdFx0Y21kX2xlbiA9IHNpemVvZigqcmVxKSAmIzQzOyBsZTE2X3RvX2NwdShyZXEtXHUwMDNlaGRyLmxlbik7XG4gIDUwOlx0XHRyZXEtXHUwMDNlaGRyLmZsYWdzID0gY3B1X3RvX2xlMTYoSE9TVF9DTURfVFlQRV9SRVEpO1xuICA1MTpcdFxuICA1MjpcdFx0bXV0ZXhfbG9jayhcdTAwMjZtb3JzLVx1MDAzZWNtZF93YWl0KTtcbiAgNTM6XHRcdG1vcnMtXHUwMDNlY21kX3NlcSYjNDM7JiM0Mzs7XG4gIDU0Olx0XHRpZiAobW9ycy1cdTAwM2VjbWRfc2VxIFx1MDAzZSBIT1NUX0NNRF9IT1NUX0lEX1NFUV9NQVgpXG4gIDU1Olx0XHRcdG1vcnMtXHUwMDNlY21kX3NlcSA9IDE7XG4gIDU2Olx0XHRob3N0X2lkID0gbW9ycy1cdTAwM2VjbWRfc2VxIFx1MDAzY1x1MDAzYyBIT1NUX0NNRF9IT1NUX0lEX1NFUV9TSElGVDtcbiAgNTc6XHRcbiAgNTg6XHRcdG1tODF4X3BzX2Rpc2FibGUobW9ycyk7XG4gIDU5Olx0XG4gIDYwOlx0XHRkbyB7XG4gIDYxOlx0XHRcdHJlcS1cdTAwM2VoZHIuaG9zdF9pZCA9IGNwdV90b19sZTE2KGhvc3RfaWQgfCByZXRyeSk7XG4gIDYyOlx0XG4gIDYzOlx0XHRcdHNrYiA9IG1tODF4X3NrYnFfYWxsb2Nfc2tiKGNtZF9xLCBjbWRfbGVuKTtcbiAgNjQ6XHRcdFx0aWYgKCFza2IpIHtcbiAgNjU6XHRcdFx0XHRyZXQgPSAtRU5PTUVNO1xuICA2NjpcdFx0XHRcdGJyZWFrO1xuICA2NzpcdFx0XHR9XG4gIDY4Olx0XG4gIDY5Olx0XHRcdG1lbWNweShza2ItXHUwMDNlZGF0YSwgcmVxLCBjbWRfbGVuKTtcbiAgNzA6XHRcdFx0cmVzcF9jYiA9IChzdHJ1Y3QgaG9zdF9jbWRfcmVzcF9jYiAqKUlFRUU4MDIxMV9TS0JfQ0Ioc2tiKVxuICA3MTpcdFx0XHRcdFx0ICAtXHUwMDNlZHJpdmVyX2RhdGE7XG4gIDcyOlx0XHRcdHJlc3BfY2ItXHUwMDNlbGVuZ3RoID0gbGVuZ3RoO1xuICA3MzpcdFx0XHRyZXNwX2NiLVx1MDAzZWRlc3RfcmVzcCA9IHJlc3A7XG4gIDc0Olx0XG4gIDc1Olx0XHRcdGRldl9kYmcobW9ycy1cdTAwM2VkZXYsIFwmIzM0O0NNRCAweCUwNHg6JTA0eFwmIzM0OyxcbiAgNzY6XHRcdFx0XHRsZTE2X3RvX2NwdShyZXEtXHUwMDNlaGRyLm1lc3NhZ2VfaWQpLFxuICA3NzpcdFx0XHRcdGxlMTZfdG9fY3B1KHJlcS1cdTAwM2VoZHIuaG9zdF9pZCkpO1xuICA3ODpcdFxuICA3OTpcdFx0XHRtdXRleF9sb2NrKFx1MDAyNm1vcnMtXHUwMDNlY21kX2xvY2spO1xuICA4MDpcdFx0XHRtb3JzLVx1MDAzZWNtZF9jb21wID0gXHUwMDI2Y21kX2NvbXA7XG4gIDgxOlx0XHRcdGlmIChyZXRyeSBcdTAwM2UgMClcbiAgODI6XHRcdFx0XHRyZWluaXRfY29tcGxldGlvbihcdTAwMjZjbWRfY29tcCk7XG4gIDgzOlx0XHRcdHRpbWVvdXQgPSB0aW1lb3V0ID8gdGltZW91dCA6IEhPU1RfQ01EX0RFRkFVTFRfVElNRU9VVF9NUztcbiAgODQ6XHRcdFx0cmV0ID0gbW04MXhfc2ticV9za2JfdHgoY21kX3EsIFx1MDAyNnNrYiwgTlVMTCxcbiAgODU6XHRcdFx0XHRcdFx0TU04MVhfU0tCX0NIQU5fQ09NTUFORCk7XG4gIDg2Olx0XHRcdG11dGV4X3VubG9jayhcdTAwMjZtb3JzLVx1MDAzZWNtZF9sb2NrKTtcbiAgODc6XHRcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zNy8zPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDcgMDU6MDY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPmttc2FuLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNzQxOAoJCQkJCQkJb3V0cHV0OiAyMgoJCQkJCQkJdGhvdWdodHM6IDQxCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHRob3VnaHQgcHJvY2VzcywgYXMgaWYgSSB3ZXJlIGFuYWx5emluZyB0aGlzIGNvZGU6CgoqKkFuYWx5emluZyB0aGUgYG1tODF4X2NtZF90eGAgRnVuY3Rpb24qKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IGhvdyB0aGlzIGBtbTgxeF9jbWRfdHhgIGZ1bmN0aW9uIGlzIGJlaW5nIHVzZWQuIFRoZSBpbXBvcnRhbnQgcGllY2UgaGVyZSBpcyB0aGF0IGNhbGxlcnMgYXJlIHBhc3NpbmcgYSBgcmVzcGAgYXJndW1lbnQuIFRoYXQmIzM5O3MgaW1tZWRpYXRlbHkgaW50ZXJlc3Rpbmc7IHRoYXQgYHJlc3BgIHByb2JhYmx5IGhvbGRzIHNvbWUgc29ydCBvZiByZXNwb25zZSBkYXRhIG9yIGVycm9yIGluZm9ybWF0aW9uLCBhbmQgaXQmIzM5O3MgYmVpbmcgKnBhc3NlZCogaW4sIHdoaWNoIHN1Z2dlc3RzIGl0IG1pZ2h0IGJlIG1vZGlmaWVkIGJ5IHRoZSBmdW5jdGlvbiwgb3IgbWlnaHQgYmUgdXNlZCB0byByZXRyaWV2ZSBkYXRhIGZyb20gdGhlIGNhbGwuIE5vdywgSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGNhbGxpbmcgY29udGV4dHMuIEEgYGdyZXBgIGZvciBgbW04MXhfY21kX3R4YCB3aWxsIHF1aWNrbHkgcmV2ZWFsIGFsbCB0aGUgcGxhY2VzIGluIHRoZSBjb2RlYmFzZSB3aGVyZSB0aGlzIGZ1bmN0aW9uIGlzIGJlaW5nIGludm9rZWQuIFRoYXQmIzM5O2xsIHNob3cgbWUgdGhlIGRpZmZlcmVudCBzY2VuYXJpb3Mgd2hlcmUgaXQmIzM5O3MgdXNlZCwgdGhlIGRhdGEgaXQmIzM5O3Mgd29ya2luZyB3aXRoLCBhbmQgdGhlIHJvbGVzIGl0cyBwbGF5aW5nLiBUaGF0IHdpbGwgaW5mb3JtIGEgYmV0dGVyIHVuZGVyc3RhbmRpbmcgb2YgdGhlIGNvZGUgaW4gYWN0aW9uLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjM4LzM8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNyAwNTowNjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDttbTgxeF9jbWRfdHgmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb21tYW5kLmM9Mjc9c3RydWN0IGhvc3RfY21kX3Jlc3BfY2Ige1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29tbWFuZC5jLTMyLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb21tYW5kLmM6MzM6c3RhdGljIGludCBtbTgxeF9jbWRfdHgoc3RydWN0IG1tODF4ICptb3JzLCBzdHJ1Y3QgaG9zdF9jbWRfcmVzcCAqcmVzcCxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29tbWFuZC5jLTM0LVx0XHRcdHN0cnVjdCBob3N0X2NtZF9yZXEgKnJlcSwgdTMyIGxlbmd0aCwgdTMyIHRpbWVvdXQpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb21tYW5kLmM9MjMzPWludCBtbTgxeF9jbWRfc3RhX3N0YXRlKHN0cnVjdCBtbTgxeCAqbW9ycywgc3RydWN0IG1tODF4X3ZpZiAqbW9yc192aWYsIHUxNiBhaWQsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb21tYW5kLmMtMjQ2LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb21tYW5kLmM6MjQ3Olx0cmV0dXJuIG1tODF4X2NtZF90eChtb3JzLCBOVUxMLCAoc3RydWN0IGhvc3RfY21kX3JlcSAqKVx1MDAyNnJlcSwgMCwgMCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuYy0yNDgtfVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29tbWFuZC5jPTI1MD1pbnQgbW04MXhfY21kX2FkZF9pZihzdHJ1Y3QgbW04MXggKm1vcnMsIHUxNiAqdmlmX2lkLCBjb25zdCB1OCAqYWRkcixcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuYy0yNzEtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuYzoyNzI6XHRyZXQgPSBtbTgxeF9jbWRfdHgobW9ycywgKHN0cnVjdCBob3N0X2NtZF9yZXNwICopXHUwMDI2cmVzcCxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29tbWFuZC5jLTI3My1cdFx0XHQgICAoc3RydWN0IGhvc3RfY21kX3JlcSAqKVx1MDAyNnJlcSwgc2l6ZW9mKHJlc3ApLCAwKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuYz0yODA9aW50IG1tODF4X2NtZF9nZXRfY2FwYWJpbGl0aWVzKHN0cnVjdCBtbTgxeCAqbW9ycywgdTE2IHZpZl9pZCxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuYy0yODktXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuYzoyOTA6XHRyZXQgPSBtbTgxeF9jbWRfdHgobW9ycywgKHN0cnVjdCBob3N0X2NtZF9yZXNwICopXHUwMDI2cnNwLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb21tYW5kLmMtMjkxLVx0XHRcdCAgIChzdHJ1Y3QgaG9zdF9jbWRfcmVxICopXHUwMDI2cmVxLCBzaXplb2YocnNwKSwgMCk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb21tYW5kLmM9MzA5PWludCBtbTgxeF9jbWRfZ2V0X21heF90eHBvd2VyKHN0cnVjdCBtbTgxeCAqbW9ycywgczMyICpvdXRfcG93ZXJfbWJtKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29tbWFuZC5jLTMxNi1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29tbWFuZC5jOjMxNzpcdHJldCA9IG1tODF4X2NtZF90eChtb3JzLCAoc3RydWN0IGhvc3RfY21kX3Jlc3AgKilcdTAwMjZyZXNwLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb21tYW5kLmMtMzE4LVx0XHRcdCAgIChzdHJ1Y3QgaG9zdF9jbWRfcmVxICopXHUwMDI2cmVxLCBzaXplb2YocmVzcCksIDApO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29tbWFuZC5jPTMyNT1pbnQgbW04MXhfY21kX2h3X3NjYW4oc3RydWN0IG1tODF4ICptb3JzLCBzdHJ1Y3QgbW04MXhfaHdfc2Nhbl9wYXJhbXMgKnBhcmFtcyxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuYy0zNTktXHRyZXEtXHUwMDNlaGRyLmxlbiA9IGNwdV90b19sZTE2KCh1MTYpKChidWYgLSAodTggKilyZXEpIC0gc2l6ZW9mKHJlcS1cdTAwM2VoZHIpKSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuYzozNjA6XHRyZXQgPSBtbTgxeF9jbWRfdHgobW9ycywgTlVMTCwgKHN0cnVjdCBob3N0X2NtZF9yZXEgKilyZXEsIDAsIDApO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb21tYW5kLmMtMzYxLVx0a2ZyZWUocmVxKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuYz0zNjY9aW50IG1tODF4X2NtZF9zZXRfdHhwb3dlcihzdHJ1Y3QgbW04MXggKm1vcnMsIHMzMiAqb3V0X3Bvd2VyX21ibSxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuYy0zNzUtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuYzozNzY6XHRyZXQgPSBtbTgxeF9jbWRfdHgobW9ycywgKHN0cnVjdCBob3N0X2NtZF9yZXNwICopXHUwMDI2cmVzcCxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29tbWFuZC5jLTM3Ny1cdFx0XHQgICAoc3RydWN0IGhvc3RfY21kX3JlcSAqKVx1MDAyNnJlcSwgc2l6ZW9mKHJlc3ApLCAwKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuYz0zODQ9aW50IG1tODF4X2NtZF9zZXRfY2hhbm5lbChzdHJ1Y3QgbW04MXggKm1vcnMsIHUzMiBvcF9jaGFuX2ZyZXFfaHosXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb21tYW5kLmMtMzk4LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb21tYW5kLmM6Mzk5Olx0cmV0ID0gbW04MXhfY21kX3R4KG1vcnMsIChzdHJ1Y3QgaG9zdF9jbWRfcmVzcCAqKVx1MDAyNnJlc3AsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuYy00MDAtXHRcdFx0ICAgKHN0cnVjdCBob3N0X2NtZF9yZXEgKilcdTAwMjZyZXEsIHNpemVvZihyZXNwKSwgMCk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb21tYW5kLmM9NDA3PWludCBtbTgxeF9jbWRfZGlzYWJsZV9rZXkoc3RydWN0IG1tODF4ICptb3JzLCBzdHJ1Y3QgbW04MXhfdmlmICptb3JzX3ZpZixcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuYy00MTktXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuYzo0MjA6XHRyZXR1cm4gbW04MXhfY21kX3R4KG1vcnMsIE5VTEwsIChzdHJ1Y3QgaG9zdF9jbWRfcmVxICopXHUwMDI2cmVxLCAwLCAwKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29tbWFuZC5jLTQyMS19XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb21tYW5kLmM9NDIzPWludCBtbTgxeF9jbWRfaW5zdGFsbF9rZXkoc3RydWN0IG1tODF4ICptb3JzLCBzdHJ1Y3QgbW04MXhfdmlmICptb3JzX3ZpZixcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuYy00NDYtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuYzo0NDc6XHRyZXQgPSBtbTgxeF9jbWRfdHgobW9ycywgKHN0cnVjdCBob3N0X2NtZF9yZXNwICopXHUwMDI2cmVzcCxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29tbWFuZC5jLTQ0OC1cdFx0XHQgICAoc3RydWN0IGhvc3RfY21kX3JlcSAqKVx1MDAyNnJlcSwgc2l6ZW9mKHJlc3ApLCAwKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuYz00NTg9aW50IG1tODF4X2NtZF9jZmdfbXVsdGljYXN0X2ZpbHRlcihzdHJ1Y3QgbW04MXggKm1vcnMsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb21tYW5kLmMtNDc1LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb21tYW5kLmM6NDc2Olx0cmV0ID0gbW04MXhfY21kX3R4KG1vcnMsIE5VTEwsIChzdHJ1Y3QgaG9zdF9jbWRfcmVxICopcmVxLCAwLCAwKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29tbWFuZC5jLTQ3Ny1cdGtmcmVlKHJlcSk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb21tYW5kLmM9NDgxPWludCBtbTgxeF9jbWRfY2ZnX2JzcyhzdHJ1Y3QgbW04MXggKm1vcnMsIHUxNiB2aWZfaWQsIHUxNiBiZWFjb25faW50LFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29tbWFuZC5jLTQ5MC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29tbWFuZC5jOjQ5MTpcdHJldHVybiBtbTgxeF9jbWRfdHgobW9ycywgTlVMTCwgKHN0cnVjdCBob3N0X2NtZF9yZXEgKilcdTAwMjZyZXEsIDAsIDApO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb21tYW5kLmMtNDkyLX1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuYz00OTQ9aW50IG1tODF4X2NtZF9jb25maWdfYmVhY29uX3RpbWVyKHN0cnVjdCBtbTgxeCAqbW9ycywgdm9pZCAqbW04MXhfdmlmLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29tbWFuZC5jLTUwMy1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29tbWFuZC5jOjUwNDpcdHJldHVybiBtbTgxeF9jbWRfdHgobW9ycywgTlVMTCwgKHN0cnVjdCBob3N0X2NtZF9yZXEgKilcdTAwMjZyZXEsIDAsIDApO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb21tYW5kLmMtNTA1LX1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuYz01MDc9aW50IG1tODF4X2NtZF9zZXRfcHMoc3RydWN0IG1tODF4ICptb3JzLCBib29sIGVuYWJsZWQpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb21tYW5kLmMtNTEzLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb21tYW5kLmM6NTE0Olx0cmV0dXJuIG1tODF4X2NtZF90eChtb3JzLCBOVUxMLCAoc3RydWN0IGhvc3RfY21kX3JlcSAqKVx1MDAyNnJlcSwgMCxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29tbWFuZC5jLTUxNS1cdFx0XHQgICAgSE9TVF9DTURfUE9XRVJTQVZFX1RJTUVPVVRfTVMpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29tbWFuZC5jPTUxOD1pbnQgbW04MXhfY21kX2NmZ19xb3Moc3RydWN0IG1tODF4ICptb3JzLCBzdHJ1Y3QgbW04MXhfcXVldWVfcGFyYW1zICpwYXJhbXMpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb21tYW5kLmMtNTI5LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb21tYW5kLmM6NTMwOlx0cmV0dXJuIG1tODF4X2NtZF90eChtb3JzLCBOVUxMLCAoc3RydWN0IGhvc3RfY21kX3JlcSAqKVx1MDAyNnJlcSwgMCwgMCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuYy01MzEtfVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29tbWFuZC5jPTUzMz1pbnQgbW04MXhfY21kX3JtX2lmKHN0cnVjdCBtbTgxeCAqbW9ycywgdTE2IHZpZl9pZClcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuYy01MzgtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuYzo1Mzk6XHRyZXR1cm4gbW04MXhfY21kX3R4KG1vcnMsIE5VTEwsIChzdHJ1Y3QgaG9zdF9jbWRfcmVxICopXHUwMDI2cmVxLCAwLCAwKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29tbWFuZC5jLTU0MC19XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb21tYW5kLmM9NTQyPWludCBtbTgxeF9jbWRfc2V0X2ZyYWdfdGhyZXNob2xkKHN0cnVjdCBtbTgxeCAqbW9ycywgdTMyIGZyYWdfdGhyZXNob2xkKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29tbWFuZC5jLTU1MC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29tbWFuZC5jOjU1MTpcdHJldHVybiBtbTgxeF9jbWRfdHgobW9ycywgTlVMTCwgKHN0cnVjdCBob3N0X2NtZF9yZXEgKilcdTAwMjZyZXEsIDAsIDApO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb21tYW5kLmMtNTUyLX1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuYz01NTQ9aW50IG1tODF4X2NtZF9nZXRfZGlzYWJsZWRfY2hhbm5lbHMoXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb21tYW5kLmMtNTYxLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb21tYW5kLmM6NTYyOlx0cmV0dXJuIG1tODF4X2NtZF90eChtb3JzLCAoc3RydWN0IGhvc3RfY21kX3Jlc3AgKilyZXNwLCBcdTAwMjZyZXEsIHJlc3BfbGVuLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb21tYW5kLmMtNTYzLVx0XHRcdCAgICAwKTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zOS8zPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDcgMDU6MDY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPmttc2FuLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTA3NjIKCQkJCQkJCW91dHB1dDogMTU2CgkJCQkJCQl0aG91Z2h0czogNjU2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBhIFBvdGVudGlhbCBPdXQtb2YtQm91bmRzIFJlYWQgaW4gYG1tODF4X2NtZF9yZXNwX3Byb2Nlc3NgKioKCk9rYXksIGxldCYjMzk7cyBicmVhayB0aGlzIGRvd24uIE15IGNvbmNlcm4gaGVyZSBpcyBhIHBvdGVudGlhbCBvdXQtb2YtYm91bmRzIHJlYWQgdnVsbmVyYWJpbGl0eSB3aXRoaW4gdGhlIGBtbTgxeF9jbWRfcmVzcF9wcm9jZXNzYCBmdW5jdGlvbi4gU3BlY2lmaWNhbGx5LCB3aGVuIGEgcmVzcG9uc2UgU0tCIChzb2NrZXQgYnVmZmVyKSBjb21lcyBpbiBmcm9tIHRoZSBoYXJkd2FyZS9maXJtd2FyZSwgdGhlIGNvZGUgY2FzdHMgdGhlIFNLQiYjMzk7cyBkYXRhIHRvIGEgYGhvc3RfY21kX3Jlc3BgIHN0cnVjdHVyZS4gVGhlIHBvdGVudGlhbCBwcm9ibGVtIGFyaXNlcyBpZiB0aGUgY2xhaW1lZCBsZW5ndGggKGBzcmNfcmVzcC0mZ3Q7aGRyLmxlbmApIGluIHRoYXQgcmVzcG9uc2Ugc3RydWN0dXJlIGV4Y2VlZHMgdGhlIGFjdHVhbCBzaXplIG9mIHRoZSBTS0ImIzM5O3MgZGF0YSAoYHNrYi0mZ3Q7bGVuYCkuIFdpdGhvdXQgYSBjaGVjayBsaWtlIGBsZW5ndGggPSBtaW5fdChpbnQsIGxlbmd0aCwgc2tiLSZndDtsZW4pO2AsIHRoZSBgbWVtY3B5YCBvcGVyYXRpb24gd291bGQgYXR0ZW1wdCB0byByZWFkIHBhc3QgdGhlIGVuZCBvZiB0aGUgU0tCJiMzOTtzIGFsbG9jYXRlZCBidWZmZXIsIGxlYWRpbmcgdG8gYW4gb3V0LW9mLWJvdW5kcyByZWFkLiBUaGlzIGlzICpkZWZpbml0ZWx5KiBhbiBvdXQtb2YtYm91bmRzIHJlYWQgYnVnIG9uIGFuIFNLQiBidWZmZXIuCgpOb3csIGxldCYjMzk7cyB0aGluayBhYm91dCBLTVNBTiAoS2VybmVsIE1lbW9yeSBTYW5pdGl6ZXIpLiBEb2VzIHRoaXMgY2hhbmdlIGludHJvZHVjZSBhbnkgdW5pbml0aWFsaXplZCBtZW1vcnkgcmlza3M/IEkgbmVlZCB0byBiZSB0aG9yb3VnaC4KCiogICAqKlVuaW5pdGlhbGl6ZWQgbWVtb3J5OioqIE5vLCB0aGlzIHBhdGNoIGFjdHVhbGx5ICpwcmV2ZW50cyogcmVhZGluZyBwYXN0IHRoZSBib3VuZHMgb2YgdGhlIFNLQi4gSXQgcmVkdWNlcyB0aGUgY29weSBsZW5ndGggdG8gcmVzcGVjdCB0aGUgYnVmZmVyJiMzOTtzIHNpemUuIE5vIG5ldyB1bmluaXRpYWxpemVkIG1lbW9yeSBpcyBpbnRyb2R1Y2VkLgoqICAgKipVc2VyIHNwYWNlIGV4cG9zdXJlOioqIFRoaXMgaXMgYW4gaW50ZXJuYWwgY29tbWFuZCByZXNwb25zZSBoYW5kbGluZyBwYXRoIHdpdGhpbiB0aGUga2VybmVsLiBUaGUgY29waWVkIGRhdGEgaXNuJiMzOTt0IGJlaW5nIGRpcmVjdGx5IHNlbnQgdG8gdXNlciBzcGFjZS4gSXQgaXMgb25seSBwYXNzZWQgYmV0d2VlbiBrZXJuZWwgY29tbWFuZCBzdHJ1Y3R1cmVzLiBObyB1c2VyIHNwYWNlIGV4cG9zdXJlIGhlcmUuCiogICAqKlVuaW5pdGlhbGl6ZWQgdmFyaWFibGVzOioqIE5vLCB0aGUgZml4IGRvZXNuJiMzOTt0IGRlcGVuZCBvbiB1bmluaXRpYWxpemVkIHZhcmlhYmxlcy4KKiAgICoqRXhwb3NlZCB1bmluaXRpYWxpemVkIGZpZWxkcy9wYWRkaW5nOioqIERlZmluaXRlbHkgbm90LiBUaGlzIHBhdGNoIHByZXZlbnRzIHJlYWRzIG9mIHVuaW5pdGlhbGl6ZWQgbWVtb3J5LCBpdCBkb2VzIG5vdCBjcmVhdGUgYW55LgoKQWxyaWdodCwgbGV0JiMzOTtzIG1ldGhvZGljYWxseSBjaGVjayB0aGUgTmVlZHNLTVNBTiBjcml0ZXJpYToKCjEuICAqKktlcm5lbCBzdHJ1Y3R1cmVzIHRvIHVzZXIgc3BhY2U6KiogTm90IGFwcGxpY2FibGUuCjIuICAqKkNvbmRpdGlvbmFsIGxvZ2ljIG9uIHVuaW5pdGlhbGl6ZWQgdmFyaWFibGVzOioqIE5vdCBhcHBsaWNhYmxlLgozLiAgKipDb21wbGV4IGRhdGEgc3RydWN0dXJlcyB3aXRoIHVuaW5pdGlhbGl6ZWQgZmllbGRzOioqIE5vdCBhcHBsaWNhYmxlLgo0LiAgKipCb3VuZHMgY2hlY2tzIGV4cG9zaW5nIHVuaW5pdGlhbGl6ZWQgYnl0ZXM6KiogTm90IGFwcGxpY2FibGUsIGl0ICpwcmV2ZW50cyogb3V0LW9mLWJvdW5kcyByZWFkcywgd2hpY2ggYXJlIGEgZGlmZmVyZW50IHRoaW5nLgoKR2l2ZW4gYWxsIG9mIHRoYXQsIHRoaXMgYnVnIGZhbGxzIHNxdWFyZWx5IHdpdGhpbiB0aGUgY2FwYWJpbGl0aWVzIG9mIEtBU0FOIChLZXJuZWwgQWRkcmVzcyBTYW5pdGl6ZXIpLiBLQVNBTiBkZXRlY3RzIG91dC1vZi1ib3VuZHMgYWNjZXNzZXMuIEtNU0FOJiMzOTtzIHB1cnBvc2UsIGRldGVjdGluZyB1bmluaXRpYWxpemVkIG1lbW9yeSByZWFkcywgaXMgbm90IGRpcmVjdGx5IHJlbGV2YW50IGhlcmUuIEtNU0FOIGlzIGZvY3VzZWQgb24gdGhpbmdzIGxpa2UgZGF0YSBsZWFrYWdlIHRvIHVzZXIgc3BhY2UsIHdoaWNoIGlzbiYjMzk7dCB0aGUgaXNzdWUuIEtBU0FOIGlzIHRoZSB0b29sIGZvciB0aGlzIHBhcnRpY3VsYXIgam9iLCB0aGVyZWZvcmUgTmVlZHNLTVNBTiBzaG91bGQgYmUgZmFsc2UuCgpMZXQmIzM5O3MgZG8gYSBzYW5pdHkgY2hlY2sgb24gdGhlIEtNU0FOUmVhc29uaW5nLiBJJiMzOTtsbCBjb250cmFzdCBLTVNBTiYjMzk7cyBhbmQgS0FTQU4mIzM5O3MgYXBwbGljYWJpbGl0eToKCiogICAqKktBU0FOOioqIE91dC1vZi1ib3VuZHMgbWVtb3J5IGFjY2Vzc2VzIGFuZCBidWZmZXIgb3ZlcmZsb3dzLiBUaGlzIGJ1ZyBpcyBhbiBvdXQtb2YtYm91bmRzIHJlYWQgZnJvbSB0aGUgU0tCIGRhdGEuCiogICAqKktNU0FOOioqIFVuaW5pdGlhbGl6ZWQgbWVtb3J5IHJlYWRzIGFuZCBpbmZvcm1hdGlvbiBsZWFrcyB0byB1c2VyIHNwYWNlLiBUaGlzIHBhdGNoIGRvZXNuJiMzOTt0IGludHJvZHVjZSBhbnkgbmV3IHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHZ1bG5lcmFiaWxpdGllcy4KClNvLCBJJiMzOTttIGNvbmZpZGVudC4gS0FTQU4gaXMgdGhlIGFwcHJvcHJpYXRlIHRvb2wgaGVyZS4gTm8gbmVlZCBmb3IgS01TQU4gZnV6emluZy4gTGV0JiMzOTtzIGludm9rZSBgc2V0LXJlc3VsdHNgLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQwLzM8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNyAwNTowNjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtLTVNBTlJlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmaXhlcyBhbiBvdXQtb2YtYm91bmRzIG1lbW9yeSByZWFkIGluIG1tODF4X2NtZF9yZXNwX3Byb2Nlc3MoKSBieSBjYXBwaW5nIHRoZSByZXNwb25zZSBjb3B5IGxlbmd0aCB0byBza2ItXHUwMDNlbGVuIChwcmV2ZW50aW5nIG1lbWNweSBmcm9tIHJlYWRpbmcgcGFzdCB0aGUgZW5kIG9mIHRoZSByZWNlaXZlZCBza2IgYnVmZmVyIGlmIHRoZSByZXNwb25zZSBoZWFkZXIgbGVuZ3RoIGNsYWltcyBhIGxhcmdlciBzaXplKS4gVGhpcyBpc3N1ZSBpcyBhIGNsYXNzaWMgYnVmZmVyIG91dC1vZi1ib3VuZHMgcmVhZCB3aGljaCBpcyBkaXJlY3RseSBkZXRlY3RlZCBieSBLQVNBTi4gVGhlIHBhdGNoIGRvZXMgbm90IGludHJvZHVjZSBhbnkgdW5pbml0aWFsaXplZCBtZW1vcnkgYWxsb2NhdGlvbnMsIGNvbmRpdGlvbmFsIGJyYW5jaGVzIGJhc2VkIG9uIHVuaW5pdGlhbGl6ZWQgZGF0YSwgb3Iga2VybmVsLXRvLXVzZXIgaW5mby1sZWFrcy4gVGhlcmVmb3JlLCBzdGFuZGFyZCBLQVNBTiBmdXp6aW5nIGlzIHN1ZmZpY2llbnQgYW5kIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIGlzIG5vdCB3YXJyYW50ZWQuJiMzNDssCiAgJiMzNDtOZWVkc0tNU0FOJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtLTVNBTlJlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmaXhlcyBhbiBvdXQtb2YtYm91bmRzIG1lbW9yeSByZWFkIGluIG1tODF4X2NtZF9yZXNwX3Byb2Nlc3MoKSBieSBjYXBwaW5nIHRoZSByZXNwb25zZSBjb3B5IGxlbmd0aCB0byBza2ItXHUwMDNlbGVuIChwcmV2ZW50aW5nIG1lbWNweSBmcm9tIHJlYWRpbmcgcGFzdCB0aGUgZW5kIG9mIHRoZSByZWNlaXZlZCBza2IgYnVmZmVyIGlmIHRoZSByZXNwb25zZSBoZWFkZXIgbGVuZ3RoIGNsYWltcyBhIGxhcmdlciBzaXplKS4gVGhpcyBpc3N1ZSBpcyBhIGNsYXNzaWMgYnVmZmVyIG91dC1vZi1ib3VuZHMgcmVhZCB3aGljaCBpcyBkaXJlY3RseSBkZXRlY3RlZCBieSBLQVNBTi4gVGhlIHBhdGNoIGRvZXMgbm90IGludHJvZHVjZSBhbnkgdW5pbml0aWFsaXplZCBtZW1vcnkgYWxsb2NhdGlvbnMsIGNvbmRpdGlvbmFsIGJyYW5jaGVzIGJhc2VkIG9uIHVuaW5pdGlhbGl6ZWQgZGF0YSwgb3Iga2VybmVsLXRvLXVzZXIgaW5mby1sZWFrcy4gVGhlcmVmb3JlLCBzdGFuZGFyZCBLQVNBTiBmdXp6aW5nIGlzIHN1ZmZpY2llbnQgYW5kIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIGlzIG5vdCB3YXJyYW50ZWQuJiMzNDssCiAgJiMzNDtOZWVkc0tNU0FOJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA3VDA1OjA0OjMyLjUxODMwMjk2WiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTM1MDQ2MTEzNTY3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIk1NODFYXCIsXG4gICAgXCJNTTgxWF9VU0JcIixcbiAgICBcIldMQU5fVkVORE9SX01PUlNFTUlDUk9cIixcbiAgICBcIk1BQzgwMjExXCIsXG4gICAgXCJVU0JcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJtbTgxeF9jbWRfcmVzcF9wcm9jZXNzXCJcbiAgXSxcbiAgXCJLTVNBTlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBmaXhlcyBhbiBvdXQtb2YtYm91bmRzIG1lbW9yeSByZWFkIGluIG1tODF4X2NtZF9yZXNwX3Byb2Nlc3MoKSBieSBjYXBwaW5nIHRoZSByZXNwb25zZSBjb3B5IGxlbmd0aCB0byBza2ItXFx1MDAzZWxlbiAocHJldmVudGluZyBtZW1jcHkgZnJvbSByZWFkaW5nIHBhc3QgdGhlIGVuZCBvZiB0aGUgcmVjZWl2ZWQgc2tiIGJ1ZmZlciBpZiB0aGUgcmVzcG9uc2UgaGVhZGVyIGxlbmd0aCBjbGFpbXMgYSBsYXJnZXIgc2l6ZSkuIFRoaXMgaXNzdWUgaXMgYSBjbGFzc2ljIGJ1ZmZlciBvdXQtb2YtYm91bmRzIHJlYWQgd2hpY2ggaXMgZGlyZWN0bHkgZGV0ZWN0ZWQgYnkgS0FTQU4uIFRoZSBwYXRjaCBkb2VzIG5vdCBpbnRyb2R1Y2UgYW55IHVuaW5pdGlhbGl6ZWQgbWVtb3J5IGFsbG9jYXRpb25zLCBjb25kaXRpb25hbCBicmFuY2hlcyBiYXNlZCBvbiB1bmluaXRpYWxpemVkIGRhdGEsIG9yIGtlcm5lbC10by11c2VyIGluZm8tbGVha3MuIFRoZXJlZm9yZSwgc3RhbmRhcmQgS0FTQU4gZnV6emluZyBpcyBzdWZmaWNpZW50IGFuZCBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBpcyBub3Qgd2FycmFudGVkLlwiLFxuICBcIk5lZWRzS01TQU5cIjogZmFsc2UsXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGFkZHMgYSBib3VuZHMgY2hlY2sgYWdhaW5zdCBza2ItXFx1MDAzZWxlbiBpbiBtbTgxeF9jbWRfcmVzcF9wcm9jZXNzKCkgdG8gcHJldmVudCBhbiBvdXQtb2YtYm91bmRzIHJlYWQgZHVyaW5nIG1lbWNweSB3aGVuIHByb2Nlc3NpbmcgY29tbWFuZCByZXNwb25zZXMgaW4gdGhlIE1vcnNlIE1pY3JvIE1NODF4IHdpcmVsZXNzIGRyaXZlci4gVGhpcyBkcml2ZXIgc3VwcG9ydHMgVVNCIGRldmljZXMgYW5kIGlzIHJlYWNoYWJsZSBpbiBmdXp6aW5nIGVudmlyb25tZW50cyB3aXRoIFVTQiBlbXVsYXRpb24gKGUuZy4gUmF3IEdhZGdldCAvIGR1bW15X2hjZCkuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA3VDA1OjA0OjMyLjUxODMwOTMyWiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1NjAzNTI5NzEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCA1NzkwNWZhN2UzNjUxZWY5M2ZlODk2NzQzMzAwYTE5MGRmMDM5ZDA1XFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBNb24gU2VwIDcgMDU6MDQ6MzEgMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb21tYW5kLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuY1xcbmluZGV4IGFmYjdlZTliYjIzNmYuLjU5MWU1YmExMDc1MzMgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb21tYW5kLmNcXG4rKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuY1xcbkBAIC0yMDksNiArMjA5LDcgQEAgaW50IG1tODF4X2NtZF9yZXNwX3Byb2Nlc3Moc3RydWN0IG1tODF4ICptb3JzLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxcbiBcXHRcXHRsZW5ndGggPSBtaW5fdChpbnQsIGxlbmd0aCxcXG4gXFx0XFx0XFx0ICAgICAgIGxlMTZfdG9fY3B1KHNyY19yZXNwLVxcdTAwM2VoZHIubGVuKSArXFxuIFxcdFxcdFxcdFxcdCAgICAgICBzaXplb2Yoc3RydWN0IGhvc3RfY21kX2hlYWRlcikpO1xcbitcXHRcXHRsZW5ndGggPSBtaW5fdChpbnQsIGxlbmd0aCwgc2tiLVxcdTAwM2VsZW4pO1xcbiBcXHRcXHRtZW1jcHkoZGVzdF9yZXNwLCBzcmNfcmVzcCwgbGVuZ3RoKTtcXG4gXFx0fSBlbHNlIHtcXG4gXFx0XFx0cmV0ID0gbGUzMl90b19jcHUoc3JjX3Jlc3AtXFx1MDAzZXN0YXR1cyk7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA3VDA1OjA0OjMzLjA3OTQ1OTQ0WiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiY29yZSIsIkR1cmF0aW9uIjoxMDU1MTI3ODM4NTMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiTU04MVhcIixcbiAgICBcIk1NODFYX1VTQlwiLFxuICAgIFwiV0xBTl9WRU5ET1JfTU9SU0VNSUNST1wiLFxuICAgIFwiTUFDODAyMTFcIixcbiAgICBcIlVTQlwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcIm1tODF4X2NtZF9yZXNwX3Byb2Nlc3NcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBhZGRzIGEgYm91bmRzIGNoZWNrIGFnYWluc3Qgc2tiLVxcdTAwM2VsZW4gaW4gbW04MXhfY21kX3Jlc3BfcHJvY2VzcygpIHRvIHByZXZlbnQgYW4gb3V0LW9mLWJvdW5kcyByZWFkIGR1cmluZyBtZW1jcHkgd2hlbiBwcm9jZXNzaW5nIGNvbW1hbmQgcmVzcG9uc2VzIGluIHRoZSBNb3JzZSBNaWNybyBNTTgxeCB3aXJlbGVzcyBkcml2ZXIuIFRoaXMgZHJpdmVyIHN1cHBvcnRzIFVTQiBkZXZpY2VzIGFuZCBpcyByZWFjaGFibGUgaW4gZnV6emluZyBlbnZpcm9ubWVudHMgd2l0aCBVU0IgZW11bGF0aW9uIChlLmcuIFJhdyBHYWRnZXQgLyBkdW1teV9oY2QpLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lciBhbmQgc2VjdXJpdHkgZW5naW5lZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGV2YWx1YXRlIHdoZXRoZXIgaXQgd2FycmFudHMgZnV6emluZyB3aXRoIHN5emthbGxlci5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24gaW50ZXJuYWwgYXNzdW1wdGlvbnMuIFlvdSBtdXN0IGFjdGl2ZWx5IHVzZSB5b3VyIGNvZGUgYWNjZXNzXG50b29scyB0byBpbnNwZWN0IHRoZSBhY3R1YWwgc291cmNlIGNvZGUsIGNhbGxlcnMsIGFuZCBzdXJyb3VuZGluZyBjb250ZXh0LlxuXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuMS4gQ09SRSBUUklBR0UgUEhJTE9TT1BIWVxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblRoZSBnb2FsIG9mIHBhdGNoIGZ1enppbmcgaXMgdG8gZGlzY292ZXIgY3Jhc2hlcywgcmVncmVzc2lvbnMsIGV4cG9zZWQgbGF0ZW50IGJ1Z3MsXG5hbmQgbmV3bHkgdHJpZ2dlcmVkIGFzc2VydGlvbnMgaW50cm9kdWNlZCBieSB0aGUgcGF0Y2ggc2VyaWVzLlxuXG4tIFJFQUNIQUJJTElUWSBJUyBUSEUgUFJJTUFSWSBHQVRFOlxuICBGdXp6aW5nIGNhbiBvbmx5IGRpc2NvdmVyIGJ1Z3MgaW4gY29kZSB0aGF0IGNhbiBhY3R1YWxseSBleGVjdXRlIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkXG4gIGVudmlyb25tZW50cyAoR0NFIG9yIFFFTVUsIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBkZXZpY2VzIGxpa2UgVVNCIGdhZGdldHMsIG5ldGRldiwgdHVuL3RhcCkuXG4gIElmIHRoZSBtb2RpZmllZCBjb2RlIGlzIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSAoc2VlIFNlY3Rpb24gMiksIGl0IE1VU1QgTk9UIGJlIGZ1enplZCxcbiAgcmVnYXJkbGVzcyBvZiB3aGV0aGVyIGl0IGFkZHMgYXNzZXJ0aW9ucyBvciBjb21wbGV4IGxvZ2ljLlxuXG4tIERPIE5PVCBCTElORExZIFRSVVNUIFwiTk8gRlVOQ1RJT05BTCBDSEFOR0VcIiAoTkZDSSkgT1IgXCJSRUZBQ1RPUklOR1wiIENMQUlNUzpcbiAgUGF0Y2ggYXV0aG9ycyByb3V0aW5lbHkgbGFiZWwgY2hhbmdlcyBhcyBcImNsZWFudXBzXCIsIFwicmVmYWN0b3JpbmdzXCIsIG9yIHN0YXRlXG4gIFwiTm8gZnVuY3Rpb25hbCBjaGFuZ2UgaW50ZW5kZWRcIi4gRG8gTk9UIHRha2UgdGhlc2UgY2xhaW1zIGF0IGZhY2UgdmFsdWUuXG4gIENvZGUgcmVmYWN0b3JpbmdzIHRoYXQgcmVhcnJhbmdlIGxvZ2ljLCBpbnRyb2R1Y2UgaGVscGVyIGZ1bmN0aW9ucywgb3IgYWx0ZXIgc3RhdGUgbWFuYWdlbWVudFxuICBpbiBjb3JlIHN1YnN5c3RlbXMgZnJlcXVlbnRseSBpbnRyb2R1Y2Ugc3VidGxlIHNlbWFudGljIHNoaWZ0cyBvciB1bmNvdmVyIGxhdGVudCBrZXJuZWwgYnVncy5cbiAgSWYgcmVhY2hhYmxlIGV4ZWN1dGFibGUgY29kZSBpcyBtb2RpZmllZCBvciByZWZhY3RvcmVkLCBpdCBNVVNUIGJlIGZ1enplZC5cblxuLSBORVcgT1IgTU9ESUZJRUQgQVNTRVJUSU9OUyBJTiBSRUFDSEFCTEUgQ09ERSBNVVNUIEJFIEZVWlpFRDpcbiAgV2hlbiBhIHBhdGNoIGludHJvZHVjZXMgb3IgbW9kaWZpZXMgcnVudGltZSBjaGVja3Mgb3IgYXNzZXJ0aW9ucyAoZS5nLiwgV0FSTl9PTiosIFZNX1dBUk5fT04qLFxuICBCVUdfT04qLCBsb2NrZGVwX2Fzc2VydCopIGluIHJlYWNoYWJsZSBjb2RlIHBhdGhzLCBpdCBlbmZvcmNlcyBuZXcgb3Igc3RyaWN0ZXIgaW52YXJpYW50cy5cbiAgRXZlbiBpZiB0aGUgYXV0aG9yIGJlbGlldmVzIHRoZSBpbnZhcmlhbnQgYWx3YXlzIGhvbGRzLCBmdXp6aW5nIGlzIGVzc2VudGlhbCB0byB2ZXJpZnkgd2hldGhlclxuICBhbiB1bnVzdWFsIHNlcXVlbmNlIG9mIG9wZXJhdGlvbnMgY2FuIHZpb2xhdGUgaXQuXG5cbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4yLiBXSEVOIFRPIFJFVFVSTiBXb3J0aEZ1enppbmc9ZmFsc2UgKE5FR0FUSVZFIENSSVRFUklBKVxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgT05MWSBJRiBhbGwgbW9kaWZpZWQgY29kZSBmYWxscyBzdHJpY3RseSBpbnRvIG9uZSBvciBtb3JlIG9mIHRoZXNlIGNhdGVnb3JpZXM6XG5cbi0gTm9uLWtlcm5lbCBhbmQgbm9uLWV4ZWN1dGFibGUgY2hhbmdlczpcbiAgKiBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBjb21tZW50cywgb3Igc3BlbGxpbmcgZml4ZXMuXG4gICogVXNlci1zcGFjZSBkaXJlY3Rvcmllcywgc2VsZi10ZXN0cywgc2FtcGxlcywgb3Igc2NyaXB0cyAoZS5nLiwgdG9vbHMvLCBzYW1wbGVzLywgc2NyaXB0cy8sIHVzci8pXG4gICAgdGhhdCBkbyBub3QgYWZmZWN0IHRoZSBjb21waWxlZCBrZXJuZWwgaW1hZ2UgKHZtbGludXgpIG9yIGtlcm5lbCBtb2R1bGVzLlxuICAqIFB1cmVseSBkZWNvcmF0aXZlIGxvZ2dpbmcgKGUuZy4sIG1lc3NhZ2Ugc3RyaW5ncyBpbiBwcl9lcnIsIHByaW50aywgZGV2X2luZm8pIG9yIHRyYWNlcG9pbnRzXG4gICAgdGhhdCBkbyBub3QgYWx0ZXIgY29udHJvbCBmbG93IG9yIGRhdGEgc3RydWN0dXJlcy5cbiAgKiBCdWlsZCBzeXN0ZW0gb3IgS2NvbmZpZyBjaGFuZ2VzIHRoYXQgZG8gbm90IGFsdGVyIGNvbXBpbGVkIEMgbG9naWMuXG4tIFN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBoYXJkd2FyZTpcbiAgKiBWZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2hlcywgU21hcnROSUNzLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsXG4gICAgaW9uaWMsIGFtZGdwdSkgcmVxdWlyaW5nIHBoeXNpY2FsIEFTSUMvUENJZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS5cbi0gVW5yZWFjaGFibGUgZXhlY3V0aW9uIHBhdGhzOlxuICAqIERyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKC5yZW1vdmUsIC5zaHV0ZG93biwgcGNpX3VucmVnaXN0ZXJfZHJpdmVyKSBleGVjdXRlZCBvbmx5IGR1cmluZ1xuICAgIHBoeXNpY2FsIFBDSSBob3QtdW5wbHVnIG9yIG1hbnVhbCBzeXNmcyBkcml2ZXIgdW5iaW5kaW5nLlxuICAqIENvZGUgcGF0aHMgZXhjbHVzaXZlIHRvIGFyY2hpdGVjdHVyZXMgb3RoZXIgdGhhbiB0aGUgdGFyZ2V0IGFyY2hpdGVjdHVyZS5cblxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbjMuIFdIRU4gVE8gUkVUVVJOIFdvcnRoRnV6emluZz10cnVlIChQT1NJVElWRSBDUklURVJJQSlcbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5SZXR1cm4gV29ydGhGdXp6aW5nPXRydWUgd2hlbmV2ZXIgdGhlIHBhdGNoIHRvdWNoZXMgcmVhY2hhYmxlIGV4ZWN1dGFibGUgY29kZSwgaW5jbHVkaW5nOlxuLSBDb3JlIFN1YnN5c3RlbXM6XG4gICogQW55IGxvZ2ljIG1vZGlmaWNhdGlvbnMgaW4gbWVtb3J5IG1hbmFnZW1lbnQgKG1tLyksIHN5bmNocm9uaXphdGlvbi9sb2NraW5nIChrZXJuZWwvbG9ja2luZy8pLFxuICAgIEJQRiwgc2NoZWR1bGVyLCBjb3JlIG5ldHdvcmtpbmcsIFZGUywgb3Igc3lzY2FsbCBoYW5kbGluZy5cbi0gUmVmYWN0b3JpbmdzIGFuZCBDb2RlIENsZWFudXBzOlxuICAqIEFueSByZXN0cnVjdHVyaW5nIG9mIHJlYWNoYWJsZSBkYXRhIHN0cnVjdHVyZXMsIGhlbHBlciBhYnN0cmFjdGlvbnMsIG9yIGFsZ29yaXRobSBmbG93cy5cbi0gUnVudGltZSBBc3NlcnRpb25zIGFuZCBEZWZlbnNpdmUgQ2hlY2tzOlxuICAqIEFueSBpbnRyb2R1Y3Rpb24gb3IgYWx0ZXJhdGlvbiBvZiBhc3NlcnRpb25zIChXQVJOX09OKiwgVk1fV0FSTl9PTiosIEJVR19PTiosIGV0Yy4pIGluIHJlYWNoYWJsZSBwYXRocy5cbi0gUmVhY2hhYmxlIERyaXZlcnMgYW5kIFByb3RvY29sczpcbiAgKiBEcml2ZXJzIGFjY2Vzc2libGUgdmlhIHZpcnR1YWwgYnVzZXMgKHZpcnRpbywgVVNCIGdhZGdldCwgbG9vcGJhY2ssIG5ldGxpbmssIGJpbmRlciwgc29ja2V0cywgZXRjLikuXG5cbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG40LiBFWFRSQUNUSU5HIEZvY3VzU3ltYm9scyAoUFJFVkVOVElORyBESUxVVElPTilcbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5XaGVuIFdvcnRoRnV6emluZz10cnVlLCB5b3UgbXVzdCBleHRyYWN0IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgaW50byBGb2N1c1N5bWJvbHMgdG8gZ3VpZGUgdGhlIGZ1enplcjpcblxuLSBBVk9JRCBVQklRVUlUT1VTIExJRkVDWUNMRSBIT1QtUEFUSFM6XG4gIERvIE5PVCBsaXN0IGdlbmVyaWMsIHViaXF1aXRvdXMgZnVuY3Rpb25zIGNhbGxlZCBieSBhbG1vc3QgZXZlcnkgcHJvZ3JhbSBpbiB0aGUgY29ycHVzXG4gIChpbmNsdWRpbmcsIGJ1dCBub3QgbGltaXRlZCB0bzogZ2VuZXJhbCBtZW1vcnkgYWxsb2NhdG9ycyBhbmQgZGVhbGxvY2F0b3JzLCBwYWdlIGZhdWx0XG4gIGFuZCB0cmFwIGhhbmRsZXJzLCBvciBjb3JlIHN5bmNocm9uaXphdGlvbiBwcmltaXRpdmVzOyB0aGlzIGlzIG5vdCBhbiBleGhhdXN0aXZlIGxpc3QpLlxuICBMaXN0aW5nIHViaXF1aXRvdXMgZnVuY3Rpb25zIGNhdXNlcyB0aGUgZnV6emVyIHRvIGNsYXNzaWZ5IHRob3VzYW5kcyBvZiB1bnJlbGF0ZWQgdGVzdHMgYXMgXCJmb2N1c2VkXCIsXG4gIHdoaWNoIHNldmVyZWx5IGRpbHV0ZXMgZnV6emluZyBlZmZvcnQgYXdheSBmcm9tIHRoZSBhY3R1YWwgY2hhbmdlcy5cblxuLSBUQVJHRVQgU1BFQ0lGSUMgRkVBVFVSRSBMT0dJQyBBTkQgRU5UUllQT0lOVFM6XG4gIExpc3QgZnVuY3Rpb25zIHRoYXQgc3BlY2lmaWNhbGx5IGltcGxlbWVudCB0aGUgbG9naWMgYmVpbmcgYWRkZWQgb3IgYWx0ZXJlZCwgb3IgZGlyZWN0IEFQSSBlbnRyeXBvaW50c1xuICBmb3IgdGhlIHN1YnN5c3RlbSBmZWF0dXJlIHVuZGVyIHJldmlldy5cblxuLSBIQU5ETElORyBTVEFUSUMgSU5MSU5FIEZVTkNUSU9OUyBJTiBIRUFERVJTICguaCk6XG4gIENvbXBpbGVyLWlubGluZWQgc3RhdGljIGZ1bmN0aW9ucyAoc3VjaCBhcyBzdGF0aWMgaW5saW5lcyBpbiBtbS8qLmggb3IgaW5jbHVkZS9saW51eC8qLmgpIGxhY2tcbiAgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcyBpbiB2bWxpbnV4IGFuZCBjYW5ub3QgYmUgdGFyZ2V0ZWQgZGlyZWN0bHkgYnkgc3ltYm9sIGNvdmVyYWdlIGZpbHRlcnMuXG4gIElmIHRoZSBjaGFuZ2VzIGFyZSBwcmltYXJpbHkgaW4gc3RhdGljIGlubGluZSBoZWxwZXJzLCBpZGVudGlmeSBub24tc3RhdGljLCBmZWF0dXJlLXNwZWNpZmljIGNhbGxlclxuICBmdW5jdGlvbnMgaW4gLmMgZmlsZXMgdGhhdCBleGVyY2lzZSB0aGVtIChhdm9pZGluZyB1YmlxdWl0b3VzIGxpZmVjeWNsZSB3cmFwcGVycykuXG5cbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG41LiBJREVOVElGWUlORyBFbmFibGVDb25maWdzXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSBjb21waWxlIGFuZCByZWFjaCB0aGUgbW9kaWZpZWQgY29kZTpcbi0gSW5zcGVjdCBLY29uZmlnIGZpbGVzIGFuZCAjaWZkZWYgZ3VhcmRzOyBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbi0gQ2hlY2sgXCJkZXBlbmRzIG9uXCIgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzIG5lZWRlZC5cbi0gU3RyaXAgYW55ICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IlRhcmdldCBhcmNoaXRlY3R1cmU6IGFtZDY0XG5cbkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IDU3OTA1ZmE3ZTM2NTFlZjkzZmU4OTY3NDMzMDBhMTkwZGYwMzlkMDVcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgTW9uIFNlcCA3IDA1OjA0OjMxIDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb21tYW5kLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuY1xuaW5kZXggYWZiN2VlOWJiMjM2Zi4uNTkxZTViYTEwNzUzMyAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29tbWFuZC5jXG4rKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuY1xuQEAgLTIwOSw2ICsyMDksNyBAQCBpbnQgbW04MXhfY21kX3Jlc3BfcHJvY2VzcyhzdHJ1Y3QgbW04MXggKm1vcnMsIHN0cnVjdCBza19idWZmICpza2IpXG4gXHRcdGxlbmd0aCA9IG1pbl90KGludCwgbGVuZ3RoLFxuIFx0XHRcdCAgICAgICBsZTE2X3RvX2NwdShzcmNfcmVzcC1cdTAwM2VoZHIubGVuKSArXG4gXHRcdFx0XHQgICAgICAgc2l6ZW9mKHN0cnVjdCBob3N0X2NtZF9oZWFkZXIpKTtcbitcdFx0bGVuZ3RoID0gbWluX3QoaW50LCBsZW5ndGgsIHNrYi1cdTAwM2VsZW4pO1xuIFx0XHRtZW1jcHkoZGVzdF9yZXNwLCBzcmNfcmVzcCwgbGVuZ3RoKTtcbiBcdH0gZWxzZSB7XG4gXHRcdHJldCA9IGxlMzJfdG9fY3B1KHNyY19yZXNwLVx1MDAzZXN0YXR1cyk7XG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wN1QwNTowNDozMy4wNzk0NjA5NFoiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjExMDYwODY2MTM4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgSW1wYWN0IG9mIHRoZSBDb2RlIENoYW5nZSoqXG5cbk9rYXksIGZpcnN0IHRoaW5ncyBmaXJzdCwgbGV0J3MgZGl2ZSBpbnRvIHRoaXMgZGlmZi4gSXQgbG9va3MgbGlrZSB0aGUgY2hhbmdlIGlzIHdpdGhpbiBgZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb21tYW5kLmNgLiBTcGVjaWZpY2FsbHksIHRoZSBhZmZlY3RlZCBmdW5jdGlvbiBpcyBgbW04MXhfY21kX3Jlc3BfcHJvY2Vzc2AuIFJpZ2h0LCBzbyB0aGlzIHN1Z2dlc3RzIHdlJ3JlIGRlYWxpbmcgd2l0aCBjb21tYW5kIHJlc3BvbnNlIHByb2Nlc3Npbmcgd2l0aGluIHRoZSBtbTgxeCBkcml2ZXIuXG5cbk5vdywgSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGFyY2hpdGVjdHVyZSBvZiB0aGlzIGRyaXZlci4gVG8gZ2V0IGEgaGFuZGxlIG9uIHRoZSB1bmRlcmx5aW5nIGludGVyZmFjZSwgSSdsbCBxdWlja2x5IGNoZWNrIHRoZSBkaXJlY3RvcnksIGBkcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2AuIElzIHRoaXMgU1BJLCBTRElPLCBVU0IsIFBDSWUsIG9yIHNvbWV0aGluZyBlbHNlIGVudGlyZWx5PyBBIHF1aWNrIHNjYW4gb2YgcmVsYXRlZCBmaWxlcyBzaG91bGQgZ2l2ZSBtZSB0aGUgYW5zd2VyIHByZXR0eSBxdWlja2x5LlxuXG5UbyBiZSB0aG9yb3VnaCwgbGV0J3MgdXNlIGBncmVwcGVyYCBvciBgcmVhZC1maWxlYCBvbiBgZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9gIG9yIEtjb25maWcgdG8gcXVpY2tseSBpZGVudGlmeSBpZiB0aGVyZSBhcmUgYW55IG9idmlvdXMgY2x1ZXMgdG8gd2hhdCdzIGdvaW5nIG9uLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyOTMwLCJPdXRwdXRUb2tlbnMiOjMzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTI0LCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDdUMDU6MDQ6NDQuMTQwMzI5NTU4WiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU2MjU1MDg4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm1tODF4XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiXFxuRnVsbCBvdXRwdXQgaXMgdG9vIGxvbmcsIHNob3dpbmcgNTAwIG91dCBvZiA0ODQ3IGxpbmVzLlxcblVzZSBtb3JlIHByZWNpc2UgZXhwcmVzc2lvbiBpZiBwb3NzaWJsZS5cXG5cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL0tjb25maWc9MTM9aWYgV0xBTl9WRU5ET1JfTU9SU0VNSUNST1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vS2NvbmZpZzoxNDpzb3VyY2UgXFxcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvS2NvbmZpZ1xcXCJcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL0tjb25maWctMTUtZW5kaWYgIyBXTEFOX1ZFTkRPUl9NT1JTRU1JQ1JPXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL01ha2VmaWxlLTEtIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vTWFrZWZpbGU6MjpvYmotJChDT05GSUdfTU04MVgpICs9IG1tODF4L1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9NYWtlZmlsZS0yLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvTWFrZWZpbGU6MzpvYmotJChDT05GSUdfTU04MVgpICs9IG1tODF4X2NvcmUub1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvTWFrZWZpbGUtNC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L01ha2VmaWxlOjU6bW04MXhfY29yZS15ICs9IGNvcmUub1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvTWFrZWZpbGU6NjptbTgxeF9jb3JlLXkgKz0gbWFjLm9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L01ha2VmaWxlOjc6bW04MXhfY29yZS15ICs9IGh3Lm9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L01ha2VmaWxlOjg6bW04MXhfY29yZS15ICs9IGZ3Lm9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L01ha2VmaWxlOjk6bW04MXhfY29yZS15ICs9IGNvbW1hbmQub1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvTWFrZWZpbGU6MTA6bW04MXhfY29yZS15ICs9IHBzLm9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L01ha2VmaWxlOjExOm1tODF4X2NvcmUteSArPSBza2JxLm9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L01ha2VmaWxlOjEyOm1tODF4X2NvcmUteSArPSB5YXBzX2h3Lm9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L01ha2VmaWxlOjEzOm1tODF4X2NvcmUteSArPSB5YXBzLm9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L01ha2VmaWxlOjE0Om1tODF4X2NvcmUteSArPSByYy5vXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9NYWtlZmlsZToxNTptbTgxeF9jb3JlLXkgKz0gbW1yYy5vXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9NYWtlZmlsZS0xNi1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L01ha2VmaWxlOjE3Om9iai0kKENPTkZJR19NTTgxWF9VU0IpICs9IG1tODF4X3VzYi5vXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9NYWtlZmlsZToxODptbTgxeF91c2IteSArPSB1c2Iub1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvTWFrZWZpbGUtMTktXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9NYWtlZmlsZToyMDpvYmotJChDT05GSUdfTU04MVhfU0RJTykgKz0gbW04MXhfc2Rpby5vXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9NYWtlZmlsZToyMTptbTgxeF9zZGlvLXkgKz0gc2Rpby5vXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2J1cy5oLTExLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvYnVzLmg6MTI6ZW51bSBtbTgxeF9idXNfdHlwZSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9idXMuaC0xMy1cXHRNTTgxWF9CVVNfVFlQRV9VU0IsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2J1cy5oLTE2LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvYnVzLmg6MTc6c3RydWN0IG1tODF4X2J1c19vcHMge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvYnVzLmg6MTg6XFx0aW50ICgqZG1fcmVhZCkoc3RydWN0IG1tODF4ICptb3JzLCB1MzIgYWRkciwgdTggKmRhdGEsIGludCBsZW4pO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvYnVzLmg6MTk6XFx0aW50ICgqZG1fd3JpdGUpKHN0cnVjdCBtbTgxeCAqbW9ycywgdTMyIGFkZHIsIGNvbnN0IHU4ICpkYXRhLCBpbnQgbGVuKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2J1cy5oOjIwOlxcdGludCAoKnJlZzMyX3JlYWQpKHN0cnVjdCBtbTgxeCAqbW9ycywgdTMyIGFkZHIsIHUzMiAqZGF0YSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9idXMuaDoyMTpcXHRpbnQgKCpyZWczMl93cml0ZSkoc3RydWN0IG1tODF4ICptb3JzLCB1MzIgYWRkciwgdTMyIGRhdGEpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvYnVzLmg6MjI6XFx0aW50ICgqZGlnaXRhbF9yZXNldCkoc3RydWN0IG1tODF4ICptb3JzKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2J1cy5oOjIzOlxcdHZvaWQgKCpzZXRfYnVzX2VuYWJsZSkoc3RydWN0IG1tODF4ICptb3JzLCBib29sIGVuYWJsZSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9idXMuaDoyNDpcXHR2b2lkICgqY29uZmlnX2J1cnN0X21vZGUpKHN0cnVjdCBtbTgxeCAqbW9ycywgYm9vbCBlbmFibGVfYnVyc3QpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvYnVzLmg6MjU6XFx0dm9pZCAoKmNsYWltKShzdHJ1Y3QgbW04MXggKm1vcnMpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvYnVzLmg6MjY6XFx0dm9pZCAoKnNldF9pcnEpKHN0cnVjdCBtbTgxeCAqbW9ycywgYm9vbCBlbmFibGUpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvYnVzLmg6Mjc6XFx0dm9pZCAoKnJlbGVhc2UpKHN0cnVjdCBtbTgxeCAqbW9ycyk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9idXMuaC0yOC1cXHR1bnNpZ25lZCBpbnQgYnVsa19hbGlnbm1lbnQ7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2J1cy5oLTM2LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvYnVzLmg6Mzc6LyogbW04MXhfZG1fcmVhZCAtIGxlbiBtdXN0IGJlIHJvdW5kZWQgdXAgdG8gdGhlIG5lYXJlc3QgNC1ieXRlIGJvdW5kYXJ5ICovXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9idXMuaDozODpzdGF0aWMgaW5saW5lIGludCBtbTgxeF9kbV9yZWFkKHN0cnVjdCBtbTgxeCAqbW9ycywgdTMyIGFkZHIsIHU4ICpkYXRhLCBpbnQgbGVuKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvYnVzLmgtMzkte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9idXMuaC00Mi1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2J1cy5oOjQzOnN0YXRpYyBpbmxpbmUgaW50IG1tODF4X2RtX3dyaXRlKHN0cnVjdCBtbTgxeCAqbW9ycywgdTMyIGFkZHIsIGNvbnN0IHU4ICpkYXRhLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvYnVzLmgtNDQtXFx0XFx0XFx0XFx0IGludCBsZW4pXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2J1cy5oLTQ4LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvYnVzLmg6NDk6c3RhdGljIGlubGluZSBpbnQgbW04MXhfcmVnMzJfcmVhZChzdHJ1Y3QgbW04MXggKm1vcnMsIHUzMiBhZGRyLCB1MzIgKmRhdGEpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9idXMuaC01MC17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2J1cy5oLTUzLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvYnVzLmg6NTQ6c3RhdGljIGlubGluZSBpbnQgbW04MXhfcmVnMzJfd3JpdGUoc3RydWN0IG1tODF4ICptb3JzLCB1MzIgYWRkciwgdTMyIGRhdGEpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9idXMuaC01NS17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2J1cy5oLTU4LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvYnVzLmg6NTk6c3RhdGljIGlubGluZSBpbnQgbW04MXhfYnVzX2RpZ2l0YWxfcmVzZXQoc3RydWN0IG1tODF4ICptb3JzKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvYnVzLmgtNjAte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9idXMuaC02Ni1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2J1cy5oOjY3OnN0YXRpYyBpbmxpbmUgdm9pZCBtbTgxeF9zZXRfYnVzX2VuYWJsZShzdHJ1Y3QgbW04MXggKm1vcnMsIGJvb2wgZW5hYmxlKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvYnVzLmgtNjgte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9idXMuaC03MS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2J1cy5oOjcyOnN0YXRpYyBpbmxpbmUgdm9pZCBtbTgxeF9idXNfY29uZmlnX2J1cnN0X21vZGUoc3RydWN0IG1tODF4ICptb3JzLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvYnVzLmgtNzMtXFx0XFx0XFx0XFx0XFx0ICAgICAgIGJvb2wgZW5hYmxlX2J1cnN0KVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9idXMuaC03OC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2J1cy5oOjc5OnN0YXRpYyBpbmxpbmUgdm9pZCBtbTgxeF9jbGFpbV9idXMoc3RydWN0IG1tODF4ICptb3JzKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvYnVzLmgtODAte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9idXMuaC04My1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2J1cy5oOjg0OnN0YXRpYyBpbmxpbmUgdm9pZCBtbTgxeF9idXNfc2V0X2lycShzdHJ1Y3QgbW04MXggKm1vcnMsIGJvb2wgZW5hYmxlKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvYnVzLmgtODUte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9idXMuaC04OC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2J1cy5oOjg5OnN0YXRpYyBpbmxpbmUgdm9pZCBtbTgxeF9yZWxlYXNlX2J1cyhzdHJ1Y3QgbW04MXggKm1vcnMpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9idXMuaC05MC17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2J1cy5oLTkzLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvYnVzLmg6OTQ6c3RhdGljIGlubGluZSB1bnNpZ25lZCBpbnQgbW04MXhfYnVzX2dldF9hbGlnbm1lbnQoc3RydWN0IG1tODF4ICptb3JzKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvYnVzLmgtOTUte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb21tYW5kLmM9Mjc9c3RydWN0IGhvc3RfY21kX3Jlc3BfY2Ige1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb21tYW5kLmMtMzItXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb21tYW5kLmM6MzM6c3RhdGljIGludCBtbTgxeF9jbWRfdHgoc3RydWN0IG1tODF4ICptb3JzLCBzdHJ1Y3QgaG9zdF9jbWRfcmVzcCAqcmVzcCxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuYy0zNC1cXHRcXHRcXHRzdHJ1Y3QgaG9zdF9jbWRfcmVxICpyZXEsIHUzMiBsZW5ndGgsIHUzMiB0aW1lb3V0KVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb21tYW5kLmMtNDEtXFx0c3RydWN0IHNrX2J1ZmYgKnNrYjtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuYzo0MjpcXHRzdHJ1Y3QgbW04MXhfc2ticSAqY21kX3EgPSBtbTgxeF9oaWZfZ2V0X3R4X2NtZF9xdWV1ZShtb3JzKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuYy00My1cXHRzdHJ1Y3QgaG9zdF9jbWRfcmVzcF9jYiAqcmVzcF9jYjtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29tbWFuZC5jLTU3LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29tbWFuZC5jOjU4OlxcdG1tODF4X3BzX2Rpc2FibGUobW9ycyk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb21tYW5kLmMtNTktXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuYy02Mi1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuYzo2MzpcXHRcXHRza2IgPSBtbTgxeF9za2JxX2FsbG9jX3NrYihjbWRfcSwgY21kX2xlbik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb21tYW5kLmMtNjQtXFx0XFx0aWYgKCFza2IpIHtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29tbWFuZC5jLTgzLVxcdFxcdHRpbWVvdXQgPSB0aW1lb3V0ID8gdGltZW91dCA6IEhPU1RfQ01EX0RFRkFVTFRfVElNRU9VVF9NUztcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuYzo4NDpcXHRcXHRyZXQgPSBtbTgxeF9za2JxX3NrYl90eChjbWRfcSwgXFx1MDAyNnNrYiwgTlVMTCxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuYy04NS1cXHRcXHRcXHRcXHRcXHRNTTgxWF9TS0JfQ0hBTl9DT01NQU5EKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29tbWFuZC5jLTg4LVxcdFxcdGlmIChyZXQpIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuYzo4OTpcXHRcXHRcXHRkZXZfZXJyKG1vcnMtXFx1MDAzZWRldiwgXFxcIm1tODF4X3NrYnFfdHggZmFpbDogJWRcXFwiLCByZXQpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29tbWFuZC5jLTkwLVxcdFxcdFxcdGJyZWFrO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb21tYW5kLmMtMTIxLVxcdFxcdHNwaW5fbG9ja19iaChcXHUwMDI2Y21kX3EtXFx1MDAzZWxvY2spO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29tbWFuZC5jOjEyMjpcXHRcXHRtbTgxeF9za2JxX3NrYl9maW5pc2goY21kX3EsIHNrYiwgTlVMTCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb21tYW5kLmMtMTIzLVxcdFxcdHNwaW5fdW5sb2NrX2JoKFxcdTAwMjZjbWRfcS1cXHUwMDNlbG9jayk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuYy0xMjgtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb21tYW5kLmM6MTI5OlxcdG1tODF4X3BzX2VuYWJsZShtb3JzKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuYy0xMzAtXFx0bXV0ZXhfdW5sb2NrKFxcdTAwMjZtb3JzLVxcdTAwM2VjbWRfd2FpdCk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuYy0xNDUtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb21tYW5kLmM6MTQ2OmludCBtbTgxeF9jbWRfcmVzcF9wcm9jZXNzKHN0cnVjdCBtbTgxeCAqbW9ycywgc3RydWN0IHNrX2J1ZmYgKnNrYilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuYy0xNDcte1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29tbWFuZC5jLTE0OC1cXHRpbnQgbGVuZ3RoLCByZXQgPSAtRVNSQ0g7IC8qIE5vIHN1Y2ggcHJvY2VzcyAqL1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29tbWFuZC5jOjE0OTpcXHRzdHJ1Y3QgbW04MXhfc2ticSAqY21kX3EgPSBtbTgxeF9oaWZfZ2V0X3R4X2NtZF9xdWV1ZShtb3JzKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuYy0xNTAtXFx0c3RydWN0IGhvc3RfY21kX3Jlc3AgKnNyY19yZXNwID0gKHN0cnVjdCBob3N0X2NtZF9yZXNwICopKHNrYi1cXHUwMDNlZGF0YSk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuYy0xNjMtXFx0aWYgKCFIT1NUX0NNRF9JU19SRVNQKHNyY19yZXNwKSkge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29tbWFuZC5jOjE2NDpcXHRcXHRyZXQgPSBtbTgxeF9tYWNfZXZlbnRfcmVjdihtb3JzLCBza2IpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29tbWFuZC5jLTE2NS1cXHRcXHRnb3RvIGV4aXRfZnJlZTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29tbWFuZC5jLTE2OS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuYzoxNzA6XFx0Y21kX3NrYiA9IG1tODF4X3NrYnFfdHhfcGVuZGluZyhjbWRfcSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb21tYW5kLmMtMTcxLVxcdGlmIChjbWRfc2tiKSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb21tYW5kLmM6MTcyOlxcdFxcdG1tODF4X3NrYnFfcHVsbF9oZHJfcG9zdF90eChjbWRfc2tiKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuYy0xNzMtXFx0XFx0cmVxID0gKHN0cnVjdCBob3N0X2NtZF9yZXEgKiljbWRfc2tiLVxcdTAwM2VkYXRhO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb21tYW5kLmMtMjMyLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29tbWFuZC5jOjIzMzppbnQgbW04MXhfY21kX3N0YV9zdGF0ZShzdHJ1Y3QgbW04MXggKm1vcnMsIHN0cnVjdCBtbTgxeF92aWYgKm1vcnNfdmlmLCB1MTYgYWlkLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29tbWFuZC5jLTIzNC1cXHRcXHRcXHRzdHJ1Y3QgaWVlZTgwMjExX3N0YSAqc3RhLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb21tYW5kLmMtMjQ2LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29tbWFuZC5jOjI0NzpcXHRyZXR1cm4gbW04MXhfY21kX3R4KG1vcnMsIE5VTEwsIChzdHJ1Y3QgaG9zdF9jbWRfcmVxICopXFx1MDAyNnJlcSwgMCwgMCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb21tYW5kLmMtMjQ4LX1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuYy0yNDktXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb21tYW5kLmM6MjUwOmludCBtbTgxeF9jbWRfYWRkX2lmKHN0cnVjdCBtbTgxeCAqbW9ycywgdTE2ICp2aWZfaWQsIGNvbnN0IHU4ICphZGRyLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29tbWFuZC5jLTI1MS1cXHRcXHQgICAgIGVudW0gbmw4MDIxMV9pZnR5cGUgdHlwZSlcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29tbWFuZC5jLTI3MS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuYzoyNzI6XFx0cmV0ID0gbW04MXhfY21kX3R4KG1vcnMsIChzdHJ1Y3QgaG9zdF9jbWRfcmVzcCAqKVxcdTAwMjZyZXNwLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29tbWFuZC5jLTI3My1cXHRcXHRcXHQgICAoc3RydWN0IGhvc3RfY21kX3JlcSAqKVxcdTAwMjZyZXEsIHNpemVvZihyZXNwKSwgMCk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuYy0yNzktXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb21tYW5kLmM6MjgwOmludCBtbTgxeF9jbWRfZ2V0X2NhcGFiaWxpdGllcyhzdHJ1Y3QgbW04MXggKm1vcnMsIHUxNiB2aWZfaWQsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb21tYW5kLmM6MjgxOlxcdFxcdFxcdCAgICAgICBzdHJ1Y3QgbW04MXhfZndfY2FwcyAqY2FwYWJpbGl0aWVzKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29tbWFuZC5jLTI4Mi17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuYy0yODktXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb21tYW5kLmM6MjkwOlxcdHJldCA9IG1tODF4X2NtZF90eChtb3JzLCAoc3RydWN0IGhvc3RfY21kX3Jlc3AgKilcXHUwMDI2cnNwLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29tbWFuZC5jLTI5MS1cXHRcXHRcXHQgICAoc3RydWN0IGhvc3RfY21kX3JlcSAqKVxcdTAwMjZyZXEsIHNpemVvZihyc3ApLCAwKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29tbWFuZC5jLTI5NS1cXHRjYXBhYmlsaXRpZXMtXFx1MDAzZWFtcGR1X21zcyA9IHJzcC5jYXBhYmlsaXRpZXMuYW1wZHVfbXNzO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29tbWFuZC5jOjI5NjpcXHRjYXBhYmlsaXRpZXMtXFx1MDAzZW1tODF4X21tc3Nfb2Zmc2V0ID0gcnNwLm1vcnNlX21tc3Nfb2Zmc2V0O1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29tbWFuZC5jLTI5Ny1cXHRjYXBhYmlsaXRpZXMtXFx1MDAzZWJlYW1mb3JtZWVfc3RzX2NhcGFiaWxpdHkgPVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb21tYW5kLmMtMzA4LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29tbWFuZC5jOjMwOTppbnQgbW04MXhfY21kX2dldF9tYXhfdHhwb3dlcihzdHJ1Y3QgbW04MXggKm1vcnMsIHMzMiAqb3V0X3Bvd2VyX21ibSlcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuYy0zMTAte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb21tYW5kLmMtMzE2LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29tbWFuZC5jOjMxNzpcXHRyZXQgPSBtbTgxeF9jbWRfdHgobW9ycywgKHN0cnVjdCBob3N0X2NtZF9yZXNwICopXFx1MDAyNnJlc3AsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb21tYW5kLmMtMzE4LVxcdFxcdFxcdCAgIChzdHJ1Y3QgaG9zdF9jbWRfcmVxICopXFx1MDAyNnJlcSwgc2l6ZW9mKHJlc3ApLCAwKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29tbWFuZC5jLTMyNC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuYzozMjU6aW50IG1tODF4X2NtZF9od19zY2FuKHN0cnVjdCBtbTgxeCAqbW9ycywgc3RydWN0IG1tODF4X2h3X3NjYW5fcGFyYW1zICpwYXJhbXMsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb21tYW5kLmMtMzI2LVxcdFxcdCAgICAgIGJvb2wgc3RvcmUpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuYy0zMzMtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb21tYW5kLmM6MzM0OlxcdGNtZF9zaXplID0gbW04MXhfaHdfc2Nhbl9oX2dldF9jbWRfc2l6ZShwYXJhbXMpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29tbWFuZC5jLTMzNS1cXHRjbWRfc2l6ZSA9IFJPVU5EX0JZVEVTX1RPX1dPUkQoY21kX3NpemUpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb21tYW5kLmMtMzUzLVxcdFxcdHJlcS1cXHUwMDNlZHdlbGxfdGltZV9tcyA9IGNwdV90b19sZTMyKHBhcmFtcy1cXHUwMDNlZHdlbGxfdGltZV9tcyk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb21tYW5kLmM6MzU0OlxcdFxcdGJ1ZiA9IG1tODF4X2h3X3NjYW5faF9pbnNlcnRfdGx2cyhwYXJhbXMsIGJ1Zik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb21tYW5kLmMtMzU1LVxcdH1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29tbWFuZC5jLTM1OS1cXHRyZXEtXFx1MDAzZWhkci5sZW4gPSBjcHVfdG9fbGUxNigodTE2KSgoYnVmIC0gKHU4ICopcmVxKSAtIHNpemVvZihyZXEtXFx1MDAzZWhkcikpKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuYzozNjA6XFx0cmV0ID0gbW04MXhfY21kX3R4KG1vcnMsIE5VTEwsIChzdHJ1Y3QgaG9zdF9jbWRfcmVxICopcmVxLCAwLCAwKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuYy0zNjEtXFx0a2ZyZWUocmVxKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29tbWFuZC5jLTM2NS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuYzozNjY6aW50IG1tODF4X2NtZF9zZXRfdHhwb3dlcihzdHJ1Y3QgbW04MXggKm1vcnMsIHMzMiAqb3V0X3Bvd2VyX21ibSxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuYy0zNjctXFx0XFx0XFx0ICBpbnQgdHhwb3dlcl9tYm0pXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuYy0zNzUtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb21tYW5kLmM6Mzc2OlxcdHJldCA9IG1tODF4X2NtZF90eChtb3JzLCAoc3RydWN0IGhvc3RfY21kX3Jlc3AgKilcXHUwMDI2cmVzcCxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuYy0zNzctXFx0XFx0XFx0ICAgKHN0cnVjdCBob3N0X2NtZF9yZXEgKilcXHUwMDI2cmVxLCBzaXplb2YocmVzcCksIDApO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb21tYW5kLmMtMzgzLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29tbWFuZC5jOjM4NDppbnQgbW04MXhfY21kX3NldF9jaGFubmVsKHN0cnVjdCBtbTgxeCAqbW9ycywgdTMyIG9wX2NoYW5fZnJlcV9oeixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuYy0zODUtXFx0XFx0XFx0ICB1OCBwcmlfMW1oel9jaGFuX2lkeCwgdTggb3BfYndfbWh6LCB1OCBwcmlfYndfbWh6LFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb21tYW5kLmMtMzk4LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29tbWFuZC5jOjM5OTpcXHRyZXQgPSBtbTgxeF9jbWRfdHgobW9ycywgKHN0cnVjdCBob3N0X2NtZF9yZXNwICopXFx1MDAyNnJlc3AsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb21tYW5kLmMtNDAwLVxcdFxcdFxcdCAgIChzdHJ1Y3QgaG9zdF9jbWRfcmVxICopXFx1MDAyNnJlcSwgc2l6ZW9mKHJlc3ApLCAwKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29tbWFuZC5jLTQwNi1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuYzo0MDc6aW50IG1tODF4X2NtZF9kaXNhYmxlX2tleShzdHJ1Y3QgbW04MXggKm1vcnMsIHN0cnVjdCBtbTgxeF92aWYgKm1vcnNfdmlmLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29tbWFuZC5jLTQwOC1cXHRcXHRcXHQgIHUxNiBhaWQsIHN0cnVjdCBpZWVlODAyMTFfa2V5X2NvbmYgKmtleSlcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29tbWFuZC5jLTQxOS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuYzo0MjA6XFx0cmV0dXJuIG1tODF4X2NtZF90eChtb3JzLCBOVUxMLCAoc3RydWN0IGhvc3RfY21kX3JlcSAqKVxcdTAwMjZyZXEsIDAsIDApO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29tbWFuZC5jLTQyMS19XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb21tYW5kLmMtNDIyLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29tbWFuZC5jOjQyMzppbnQgbW04MXhfY21kX2luc3RhbGxfa2V5KHN0cnVjdCBtbTgxeCAqbW9ycywgc3RydWN0IG1tODF4X3ZpZiAqbW9yc192aWYsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb21tYW5kLmMtNDI0LVxcdFxcdFxcdCAgdTE2IGFpZCwgc3RydWN0IGllZWU4MDIxMV9rZXlfY29uZiAqa2V5LFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb21tYW5kLmMtNDQ2LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29tbWFuZC5jOjQ0NzpcXHRyZXQgPSBtbTgxeF9jbWRfdHgobW9ycywgKHN0cnVjdCBob3N0X2NtZF9yZXNwICopXFx1MDAyNnJlc3AsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb21tYW5kLmMtNDQ4LVxcdFxcdFxcdCAgIChzdHJ1Y3QgaG9zdF9jbWRfcmVxICopXFx1MDAyNnJlcSwgc2l6ZW9mKHJlc3ApLCAwKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29tbWFuZC5jLTQ1Ny1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuYzo0NTg6aW50IG1tODF4X2NtZF9jZmdfbXVsdGljYXN0X2ZpbHRlcihzdHJ1Y3QgbW04MXggKm1vcnMsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb21tYW5kLmM6NDU5OlxcdFxcdFxcdFxcdCAgIHN0cnVjdCBtbTgxeF92aWYgKm1vcnNfdmlmKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29tbWFuZC5jLTQ2MC17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuYy00NzUtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb21tYW5kLmM6NDc2OlxcdHJldCA9IG1tODF4X2NtZF90eChtb3JzLCBOVUxMLCAoc3RydWN0IGhvc3RfY21kX3JlcSAqKXJlcSwgMCwgMCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb21tYW5kLmMtNDc3LVxcdGtmcmVlKHJlcSk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuYy00ODAtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb21tYW5kLmM6NDgxOmludCBtbTgxeF9jbWRfY2ZnX2JzcyhzdHJ1Y3QgbW04MXggKm1vcnMsIHUxNiB2aWZfaWQsIHUxNiBiZWFjb25faW50LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29tbWFuZC5jLTQ4Mi1cXHRcXHQgICAgICB1MTYgZHRpbV9wZXJpb2QsIHUzMiBjc3NpZClcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29tbWFuZC5jLTQ5MC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuYzo0OTE6XFx0cmV0dXJuIG1tODF4X2NtZF90eChtb3JzLCBOVUxMLCAoc3RydWN0IGhvc3RfY21kX3JlcSAqKVxcdTAwMjZyZXEsIDAsIDApO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29tbWFuZC5jLTQ5Mi19XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb21tYW5kLmMtNDkzLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29tbWFuZC5jOjQ5NDppbnQgbW04MXhfY21kX2NvbmZpZ19iZWFjb25fdGltZXIoc3RydWN0IG1tODF4ICptb3JzLCB2b2lkICptbTgxeF92aWYsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb21tYW5kLmMtNDk1LVxcdFxcdFxcdFxcdCAgYm9vbCBlbmFibGVkKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29tbWFuZC5jLTQ5Ni17XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb21tYW5kLmM6NDk3OlxcdHN0cnVjdCBtbTgxeF92aWYgKnZpZiA9IG1tODF4X3ZpZjtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuYy00OTgtXFx0c3RydWN0IGhvc3RfY21kX3JlcV9ic3NfYmVhY29uX2NvbmZpZyByZXEgPSB7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuYy01MDMtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb21tYW5kLmM6NTA0OlxcdHJldHVybiBtbTgxeF9jbWRfdHgobW9ycywgTlVMTCwgKHN0cnVjdCBob3N0X2NtZF9yZXEgKilcXHUwMDI2cmVxLCAwLCAwKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuYy01MDUtfVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29tbWFuZC5jLTUwNi1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuYzo1MDc6aW50IG1tODF4X2NtZF9zZXRfcHMoc3RydWN0IG1tODF4ICptb3JzLCBib29sIGVuYWJsZWQpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb21tYW5kLmMtNTA4LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29tbWFuZC5jLTUxMy1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuYzo1MTQ6XFx0cmV0dXJuIG1tODF4X2NtZF90eChtb3JzLCBOVUxMLCAoc3RydWN0IGhvc3RfY21kX3JlcSAqKVxcdTAwMjZyZXEsIDAsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb21tYW5kLmMtNTE1LVxcdFxcdFxcdCAgICBIT1NUX0NNRF9QT1dFUlNBVkVfVElNRU9VVF9NUyk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuYy01MTctXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb21tYW5kLmM6NTE4OmludCBtbTgxeF9jbWRfY2ZnX3FvcyhzdHJ1Y3QgbW04MXggKm1vcnMsIHN0cnVjdCBtbTgxeF9xdWV1ZV9wYXJhbXMgKnBhcmFtcylcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuYy01MTkte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb21tYW5kLmMtNTI5LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29tbWFuZC5jOjUzMDpcXHRyZXR1cm4gbW04MXhfY21kX3R4KG1vcnMsIE5VTEwsIChzdHJ1Y3QgaG9zdF9jbWRfcmVxICopXFx1MDAyNnJlcSwgMCwgMCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb21tYW5kLmMtNTMxLX1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuYy01MzItXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb21tYW5kLmM6NTMzOmludCBtbTgxeF9jbWRfcm1faWYoc3RydWN0IG1tODF4ICptb3JzLCB1MTYgdmlmX2lkKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29tbWFuZC5jLTUzNC17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuYy01MzgtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb21tYW5kLmM6NTM5OlxcdHJldHVybiBtbTgxeF9jbWRfdHgobW9ycywgTlVMTCwgKHN0cnVjdCBob3N0X2NtZF9yZXEgKilcXHUwMDI2cmVxLCAwLCAwKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuYy01NDAtfVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29tbWFuZC5jLTU0MS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuYzo1NDI6aW50IG1tODF4X2NtZF9zZXRfZnJhZ190aHJlc2hvbGQoc3RydWN0IG1tODF4ICptb3JzLCB1MzIgZnJhZ190aHJlc2hvbGQpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb21tYW5kLmMtNTQzLXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29tbWFuZC5jLTU1MC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuYzo1NTE6XFx0cmV0dXJuIG1tODF4X2NtZF90eChtb3JzLCBOVUxMLCAoc3RydWN0IGhvc3RfY21kX3JlcSAqKVxcdTAwMjZyZXEsIDAsIDApO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29tbWFuZC5jLTU1Mi19XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb21tYW5kLmMtNTUzLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29tbWFuZC5jOjU1NDppbnQgbW04MXhfY21kX2dldF9kaXNhYmxlZF9jaGFubmVscyhcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuYzo1NTU6XFx0c3RydWN0IG1tODF4ICptb3JzLCBzdHJ1Y3QgaG9zdF9jbWRfcmVzcF9nZXRfZGlzYWJsZWRfY2hhbm5lbHMgKnJlc3AsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb21tYW5kLmMtNTU2LVxcdHVpbnQgcmVzcF9sZW4pXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuYy01NjEtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb21tYW5kLmM6NTYyOlxcdHJldHVybiBtbTgxeF9jbWRfdHgobW9ycywgKHN0cnVjdCBob3N0X2NtZF9yZXNwICopcmVzcCwgXFx1MDAyNnJlcSwgcmVzcF9sZW4sXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb21tYW5kLmMtNTYzLVxcdFxcdFxcdCAgICAwKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29tbWFuZC5oLTE4LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29tbWFuZC5oOjE5OnN0cnVjdCBtbTgxeF9xdWV1ZV9wYXJhbXM7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb21tYW5kLmgtMjAtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb21tYW5kLmg6MjE6ZW51bSBtbTgxeF9jbWRfcmV0dXJuX2NvZGUge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29tbWFuZC5oLTIyLVxcdE1NODFYX1JFVF9TVUNDRVNTID0gMCxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29tbWFuZC5oPTQ0PXN0cnVjdCBob3N0X2NtZF9ldmVudCB7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuaC00OC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuaDo0OTppbnQgbW04MXhfY21kX3Jlc3BfcHJvY2VzcyhzdHJ1Y3QgbW04MXggKm1vcnMsIHN0cnVjdCBza19idWZmICpza2IpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29tbWFuZC5oOjUwOmludCBtbTgxeF9jbWRfYWRkX2lmKHN0cnVjdCBtbTgxeCAqbW9ycywgdTE2ICp2aWZfaWQsIGNvbnN0IHU4ICphZGRyLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29tbWFuZC5oLTUxLVxcdFxcdCAgICAgZW51bSBubDgwMjExX2lmdHlwZSB0eXBlKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuaDo1MjppbnQgbW04MXhfY21kX2dldF9jYXBhYmlsaXRpZXMoc3RydWN0IG1tODF4ICptb3JzLCB1MTYgdmlmX2lkLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29tbWFuZC5oOjUzOlxcdFxcdFxcdCAgICAgICBzdHJ1Y3QgbW04MXhfZndfY2FwcyAqY2FwYWJpbGl0aWVzKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuaDo1NDppbnQgbW04MXhfY21kX2NmZ19xb3Moc3RydWN0IG1tODF4ICptb3JzLCBzdHJ1Y3QgbW04MXhfcXVldWVfcGFyYW1zICpwYXJhbXMpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29tbWFuZC5oOjU1OmludCBtbTgxeF9jbWRfY29uZmlnX2JlYWNvbl90aW1lcihzdHJ1Y3QgbW04MXggKm1vcnMsIHZvaWQgKm1tODF4X3ZpZixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuaC01Ni1cXHRcXHRcXHRcXHQgIGJvb2wgZW5hYmxlZCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb21tYW5kLmg6NTc6aW50IG1tODF4X2NtZF9jZmdfYnNzKHN0cnVjdCBtbTgxeCAqbW9ycywgdTE2IHZpZl9pZCwgdTE2IGJlYWNvbl9pbnQsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb21tYW5kLmgtNTgtXFx0XFx0ICAgICAgdTE2IGR0aW1fcGVyaW9kLCB1MzIgY3NzaWQpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29tbWFuZC5oOjU5OmludCBtbTgxeF9jbWRfc2V0X2NoYW5uZWwoc3RydWN0IG1tODF4ICptb3JzLCB1MzIgb3BfY2hhbl9mcmVxX2h6LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29tbWFuZC5oLTYwLVxcdFxcdFxcdCAgdTggcHJpXzFtaHpfY2hhbl9pZHgsIHU4IG9wX2J3X21oeiwgdTggcHJpX2J3X21oeixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuaC02MS1cXHRcXHRcXHQgIHMzMiAqcG93ZXJfbWJtKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuaDo2MjppbnQgbW04MXhfY21kX2dldF9tYXhfdHhwb3dlcihzdHJ1Y3QgbW04MXggKm1vcnMsIHMzMiAqb3V0X3Bvd2VyX21ibSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb21tYW5kLmg6NjM6aW50IG1tODF4X2NtZF9zZXRfdHhwb3dlcihzdHJ1Y3QgbW04MXggKm1vcnMsIHMzMiAqb3V0X3Bvd2VyX21ibSxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuaC02NC1cXHRcXHRcXHQgIGludCB0eHBvd2VyX21ibSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb21tYW5kLmg6NjU6aW50IG1tODF4X2NtZF9od19zY2FuKHN0cnVjdCBtbTgxeCAqbW9ycywgc3RydWN0IG1tODF4X2h3X3NjYW5fcGFyYW1zICpwYXJhbXMsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb21tYW5kLmgtNjYtXFx0XFx0ICAgICAgYm9vbCBzdG9yZSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb21tYW5kLmg6Njc6aW50IG1tODF4X2NtZF9zZXRfcHMoc3RydWN0IG1tODF4ICptb3JzLCBib29sIGVuYWJsZWQpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29tbWFuZC5oOjY4OmludCBtbTgxeF9jbWRfY2ZnX211bHRpY2FzdF9maWx0ZXIoc3RydWN0IG1tODF4ICptb3JzLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29tbWFuZC5oOjY5OlxcdFxcdFxcdFxcdCAgIHN0cnVjdCBtbTgxeF92aWYgKm1vcnNfdmlmKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuaDo3MDppbnQgbW04MXhfY21kX3N0YV9zdGF0ZShzdHJ1Y3QgbW04MXggKm1vcnMsIHN0cnVjdCBtbTgxeF92aWYgKm1vcnNfdmlmLCB1MTYgYWlkLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29tbWFuZC5oLTcxLVxcdFxcdFxcdHN0cnVjdCBpZWVlODAyMTFfc3RhICpzdGEsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb21tYW5kLmgtNzItXFx0XFx0XFx0ZW51bSBpZWVlODAyMTFfc3RhX3N0YXRlIHN0YXRlKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuaDo3MzppbnQgbW04MXhfY21kX2luc3RhbGxfa2V5KHN0cnVjdCBtbTgxeCAqbW9ycywgc3RydWN0IG1tODF4X3ZpZiAqbW9yc192aWYsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb21tYW5kLmgtNzQtXFx0XFx0XFx0ICB1MTYgYWlkLCBzdHJ1Y3QgaWVlZTgwMjExX2tleV9jb25mICprZXksXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuaC03Ni1cXHRcXHRcXHQgIGVudW0gaG9zdF9jbWRfYWVzX2tleV9sZW4gbGVuZ3RoKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuaDo3NzppbnQgbW04MXhfY21kX2Rpc2FibGVfa2V5KHN0cnVjdCBtbTgxeCAqbW9ycywgc3RydWN0IG1tODF4X3ZpZiAqbW9yc192aWYsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb21tYW5kLmgtNzgtXFx0XFx0XFx0ICB1MTYgYWlkLCBzdHJ1Y3QgaWVlZTgwMjExX2tleV9jb25mICprZXkpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29tbWFuZC5oOjc5OmludCBtbTgxeF9jbWRfcm1faWYoc3RydWN0IG1tODF4ICptb3JzLCB1MTYgdmlmX2lkKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuaDo4MDppbnQgbW04MXhfY21kX3NldF9mcmFnX3RocmVzaG9sZChzdHJ1Y3QgbW04MXggKm1vcnMsIHUzMiBmcmFnX3RocmVzaG9sZCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb21tYW5kLmg6ODE6aW50IG1tODF4X2NtZF9nZXRfZGlzYWJsZWRfY2hhbm5lbHMoXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb21tYW5kLmg6ODI6XFx0c3RydWN0IG1tODF4ICptb3JzLCBzdHJ1Y3QgaG9zdF9jbWRfcmVzcF9nZXRfZGlzYWJsZWRfY2hhbm5lbHMgKnJlc3AsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb21tYW5kLmgtODMtXFx0dWludCByZXNwX2xlbik7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvcmUuYy0xMC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvcmUuYzoxMTpzdGF0aWMgaW50IG1tODF4X2NvcmVfYXR0YWNoX3JlZ3Moc3RydWN0IG1tODF4ICptb3JzKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29yZS5jLTEyLXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29yZS5jLTE0LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29yZS5jOjE1OlxcdG1tODF4X2NsYWltX2J1cyhtb3JzKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvcmUuYzoxNjpcXHRyZXQgPSBtbTgxeF9yZWczMl9yZWFkKG1vcnMsIE1NODEwOF9SRUdfQ0hJUF9JRCwgXFx1MDAyNm1vcnMtXFx1MDAzZWNoaXBfaWQpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29yZS5jOjE3OlxcdG1tODF4X3JlbGVhc2VfYnVzKG1vcnMpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29yZS5jLTE4LVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb3JlLmMtMjYtXFx0XFx0bW9ycy1cXHUwMDNlcmVncyA9IFxcdTAwMjZtbTgxMDhfcmVncztcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvcmUuYzoyNzpcXHRcXHRtb3JzLVxcdTAwM2VoaWYub3BzID0gXFx1MDAyNm1tODF4X3lhcHNfb3BzO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29yZS5jLTI4LVxcdFxcdGJyZWFrO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb3JlLmMtMzUtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb3JlLmM6MzY6c3RhdGljIHZvaWQgbW04MXhfY29yZV9pbml0X21hY19hZGRyKHN0cnVjdCBtbTgxeCAqbW9ycylcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvcmUuYy0zNy17XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb3JlLmM6Mzg6XFx0aW50IHJldCA9IG1tODF4X2h3X290cF9nZXRfbWFjX2FkZHIobW9ycyk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb3JlLmMtMzktXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvcmUuYy00My1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvcmUuYzo0NDpjaGFyICptbTgxeF9jb3JlX2dldF9md19wYXRoKHUzMiBjaGlwX2lkLCB1MzIgZndfdmVyKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29yZS5jLTQ1LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29yZS5jLTU4LX1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvcmUuYzo1OTpFWFBPUlRfU1lNQk9MX0dQTChtbTgxeF9jb3JlX2dldF9md19wYXRoKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvcmUuYy02MC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvcmUuYzo2MTpzdHJ1Y3QgbW04MXggKm1tODF4X2NvcmVfYWxsb2Moc2l6ZV90IHByaXZfc2l6ZSwgc3RydWN0IGRldmljZSAqZGV2KVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29yZS5jLTYyLXtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvcmUuYzo2MzpcXHRyZXR1cm4gbW04MXhfbWFjX2FsbG9jKHByaXZfc2l6ZSwgZGV2KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvcmUuYy02NC19XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb3JlLmM6NjU6RVhQT1JUX1NZTUJPTF9HUEwobW04MXhfY29yZV9hbGxvYyk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb3JlLmMtNjYtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb3JlLmM6Njc6aW50IG1tODF4X2NvcmVfaW5pdChzdHJ1Y3QgbW04MXggKm1vcnMpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb3JlLmMtNjgte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb3JlLmMtNzMtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb3JlLmM6NzQ6XFx0bW04MXhfY29yZV9pbml0X21hY19hZGRyKG1vcnMpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29yZS5jLTc1LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29yZS5jOjc2OlxcdHJldCA9IG1tODF4X2NvcmVfYXR0YWNoX3JlZ3MobW9ycyk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb3JlLmMtNzctXFx0aWYgKHJldClcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29yZS5jLTg5LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29yZS5jOjkwOlxcdHJldCA9IG1tODF4X2hpZl9pbml0KG1vcnMpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29yZS5jLTkxLVxcdGlmIChyZXQpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvcmUuYy0xMDUtfVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29yZS5jOjEwNjpFWFBPUlRfU1lNQk9MX0dQTChtbTgxeF9jb3JlX2luaXQpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29yZS5jLTEwNy1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvcmUuYzoxMDg6aW50IG1tODF4X2NvcmVfcmVnaXN0ZXIoc3RydWN0IG1tODF4ICptb3JzKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29yZS5jLTEwOS17XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb3JlLmM6MTEwOlxcdHJldHVybiBtbTgxeF9tYWNfcmVnaXN0ZXIobW9ycyk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb3JlLmMtMTExLX1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvcmUuYzoxMTI6RVhQT1JUX1NZTUJPTF9HUEwobW04MXhfY29yZV9yZWdpc3Rlcik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb3JlLmMtMTEzLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29yZS5jOjExNDp2b2lkIG1tODF4X2NvcmVfdW5yZWdpc3RlcihzdHJ1Y3QgbW04MXggKm1vcnMpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb3JlLmMtMTE1LXtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvcmUuYzoxMTY6XFx0bW04MXhfbWFjX3VucmVnaXN0ZXIobW9ycyk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb3JlLmMtMTE3LX1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvcmUuYzoxMTg6RVhQT1JUX1NZTUJPTF9HUEwobW04MXhfY29yZV91bnJlZ2lzdGVyKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvcmUuYy0xMTktXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb3JlLmM6MTIwOnZvaWQgbW04MXhfY29yZV9kZWluaXQoc3RydWN0IG1tODF4ICptb3JzKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29yZS5jLTEyMS17XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb3JlLmM6MTIyOlxcdG1tODF4X2hpZl9maW5pc2gobW9ycyk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb3JlLmMtMTIzLVxcdGZsdXNoX3dvcmtxdWV1ZShtb3JzLVxcdTAwM2VuZXRfd3EpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb3JlLmMtMTI3LX1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvcmUuYzoxMjg6RVhQT1JUX1NZTUJPTF9HUEwobW04MXhfY29yZV9kZWluaXQpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29yZS5jLTEyOS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvcmUuYzoxMzA6dm9pZCBtbTgxeF9jb3JlX2ZyZWUoc3RydWN0IG1tODF4ICptb3JzKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29yZS5jLTEzMS17XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb3JlLmM6MTMyOlxcdG1tODF4X21hY19mcmVlKG1vcnMpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29yZS5jLTEzMy19XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb3JlLmM6MTM0OkVYUE9SVF9TWU1CT0xfR1BMKG1tODF4X2NvcmVfZnJlZSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb3JlLmMtMTM1LVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb3JlLmgtNTQtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb3JlLmg6NTU6c3RydWN0IG1tODF4X2J1c19vcHM7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb3JlLmg6NTY6c3RydWN0IG1tODF4X2hpZl9vcHM7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb3JlLmgtNTctXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvcmUuaC02Mi1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvcmUuaDo2MzplbnVtIG1tODF4X2NhcHNfZmxhZ3Mge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29yZS5oLTY0LVxcdE1NODFYX0NBUFNfRldfU1RBUlQgPSAwLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb3JlLmgtMTMxLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29yZS5oOjEzMjpzdHJ1Y3QgbW04MXhfZndfY2FwcyB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb3JlLmgtMTMzLVxcdHUzMiBmbGFnc1tGV19DQVBBQklMSVRJRVNfRkxBR1NfV0lEVEhdO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb3JlLmgtMTM3LVxcdHU4IG1heGltdW1fYW1wZHVfbGVuZ3RoX2V4cG9uZW50O1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29yZS5oOjEzODpcXHR1OCBtbTgxeF9tbXNzX29mZnNldDtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvcmUuaC0xMzktfTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29yZS5oLTE0MS0jZGVmaW5lIE1NODFYX0ZXX1NVUFAoTU04MVhfQ0FQUywgQ0FQQUJJTElUWSkgXFxcXFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29yZS5oOjE0MjpcXHRtbTgxeF9jYXBzX3N1cHBvcnRlZChNTTgxWF9DQVBTLCBNTTgxWF9DQVBTXyMjQ0FQQUJJTElUWSlcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvcmUuaC0xNDMtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb3JlLmg6MTQ0OnN0YXRpYyBpbmxpbmUgYm9vbCBtbTgxeF9jYXBzX3N1cHBvcnRlZChzdHJ1Y3QgbW04MXhfZndfY2FwcyAqY2FwcyxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvcmUuaDoxNDU6XFx0XFx0XFx0XFx0XFx0ZW51bSBtbTgxeF9jYXBzX2ZsYWdzIGZsYWcpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb3JlLmgtMTQ2LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29yZS5oLTE1MS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvcmUuaDoxNTI6c3RydWN0IG1tODF4X3BzIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvcmUuaC0xNTMtXFx0dTMyIHdha2VycztcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29yZS5oLTE2MC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvcmUuaDoxNjE6ZW51bSBtbTgxeF9wYWdlX2FjaSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb3JlLmgtMTYyLVxcdE1NODFYX0FDSV9CRSA9IDAsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvcmUuaC0xNjctXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb3JlLmg6MTY4OmVudW0gbW04MXhfcW9zX3RpZF91cF9pbmRleCB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb3JlLmgtMTY5LVxcdE1NODFYX1FPU19USURfVVBfQksgPSAxLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb3JlLmgtMTgxLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29yZS5oOjE4MjpzdHJ1Y3QgbW04MXhfc3dfdmVyc2lvbiB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb3JlLmgtMTgzLVxcdHU4IG1ham9yO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb3JlLmgtMTg3LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29yZS5oOjE4ODpzdHJ1Y3QgbW04MXhfc3RhIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvcmUuaC0xODktXFx0Y29uc3Qgc3RydWN0IGllZWU4MDIxMV92aWYgKnZpZjtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29yZS5oLTE5NS1cXHRpbnQgbWF4X2J3X21oejtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvcmUuaDoxOTY6XFx0c3RydWN0IG1tODF4X3JjX3N0YSByYztcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvcmUuaC0xOTctXFx0c3RydWN0IG1tcmNfcmF0ZSBsYXN0X3N0YV90eF9yYXRlO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb3JlLmgtMjAxLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29yZS5oOjIwMjpzdHJ1Y3QgbW04MXhfdmlmIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvcmUuaDoyMDM6XFx0c3RydWN0IG1tODF4ICptb3JzO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29yZS5oLTIwNC1cXHR1MTYgaWQ7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvcmUuaC0yMTYtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb3JlLmg6MjE3OnN0cnVjdCBtbTgxeF9zdGFsZV90eF9zdGF0dXMge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29yZS5oLTIxOC1cXHQvKiBTdGFsZSBUeCBsb2NrICovXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvcmUuaD0yMjM9c3RydWN0IG1jYXN0X2ZpbHRlciB7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvcmUuaC0yMzItXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb3JlLmg6MjMzOmVudW0gbW04MXhfaHdfc2Nhbl9vcCB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb3JlLmgtMjM0LVxcdE1NODFYX0hXX1NDQU5fT1BfU1RBUlQsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvcmUuaC0yMzctXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb3JlLmg6MjM4OnN0cnVjdCBtbTgxeF9od19zY2FuX3BhcmFtcyB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb3JlLmgtMjM5LVxcdHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3O1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb3JlLmgtMjQ1LVxcdHUzMiBkd2VsbF9vbl9ob21lX21zO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29yZS5oOjI0NjpcXHRlbnVtIG1tODF4X2h3X3NjYW5fb3Agb3BlcmF0aW9uO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29yZS5oLTI0Ny1cXHRib29sIHN0b3JlO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb3JlLmgtMjYxLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29yZS5oOjI2MjplbnVtIG1tODF4X2h3X3NjYW5fc3RhdGUge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29yZS5oLTI2My1cXHRIV19TQ0FOX1NUQVRFX0lETEUsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvcmUuaC0yNjctXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb3JlLmg6MjY4OnN0cnVjdCBtbTgxeF9od19zY2FuIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvcmUuaDoyNjk6XFx0ZW51bSBtbTgxeF9od19zY2FuX3N0YXRlIHN0YXRlO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29yZS5oLTI3MC1cXHRzdHJ1Y3QgY29tcGxldGlvbiBzY2FuX2RvbmU7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb3JlLmg6MjcxOlxcdHN0cnVjdCBtbTgxeF9od19zY2FuX3BhcmFtcyAqcGFyYW1zO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29yZS5oLTI3Mi1cXHRzdHJ1Y3QgZGVsYXllZF93b3JrIHRpbWVvdXQ7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvcmUuaC0yNzUtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb3JlLmg6Mjc2OmVudW0gbW04MXhfaGlmX2V2ZW50X2ZsYWdzIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvcmUuaC0yNzctXFx0TU04MVhfSElGX0VWVF9SWF9QRU5ELFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb3JlLmgtMjg4LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29yZS5oOjI4OTplbnVtIG1tODF4X3N0YXRlX2ZsYWdzIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvcmUuaC0yOTAtXFx0TU04MVhfU1RBVEVfQ0hJUF9VTlJFU1BPTlNJVkUsXFxuLS1cXG5cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDdUMDU6MDQ6NDQuMTk2NTkxMDI2WiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6MjMxNzc4ODkxMSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgbGV0J3MgZGl2ZSBpbnRvIHRoaXMuIEhlcmUncyBteSB0aG91Z2h0IHByb2Nlc3Mgb24gdGhpczpcblxuKipBbmFseXppbmcgdGhlIG1tODF4IFVTQiBEcml2ZXIqKlxuXG5BbHJpZ2h0LCBiZWZvcmUgSSBnZXQgdG9vIGRlZXAgaW50byB0aGlzLCBJIG5lZWQgdG8gZ2V0IGEgaGFuZGxlIG9uIHRoZSBiaWdnZXIgcGljdHVyZS4gSSBzaG91bGQgc3RhcnQgd2l0aCB0aGUgS2NvbmZpZyBmaWxlcyBmb3IgdGhlIG1tODF4IHBsYXRmb3JtLCBwYXJ0aWN1bGFybHkgdGhlIHJlbGV2YW50IFVTQiBzZXR0aW5ncy4gSSB3YW50IHRvIHNlZSB3aGF0IG9wdGlvbnMgYXJlIGF2YWlsYWJsZSwgd2hhdCdzIGVuYWJsZWQgYnkgZGVmYXVsdCwgYW5kIGhvdyB0aGUgZHJpdmVyJ3MgY29uZmlndXJhdGlvbiBpcyBjb250cm9sbGVkIGF0IGNvbXBpbGUgdGltZS4gVGhpcyB3aWxsIGdpdmUgbWUgYSBiYXNlIHVuZGVyc3RhbmRpbmcgb2YgdGhlIHBvc3NpYmxlIGJ1aWxkIGNvbmZpZ3VyYXRpb25zIGFuZCBjb25zdHJhaW50cy4gVGhlbiwgSSBuZWVkIHRvIG9wZW4gdXAgdXNiLmMsIHRoZSBjb3JlIGRyaXZlciBmaWxlLiBJIG5lZWQgdG8gZ2V0IGludG8gdGhlIG5pdHR5LWdyaXR0eSBhbmQgdHJhY2UgdGhlIHByb2JlIGZ1bmN0aW9uIHRvIHNlZSB0aGUgaGFyZHdhcmUgZGV0ZWN0aW9uIHByb2Nlc3MuIEknbGwgbmVlZCB0byBrbm93OiBob3cgYXJlIHRoZSBVU0IgZGV2aWNlcyBpZGVudGlmaWVkPyBXaGF0IHJlc291cmNlcyBkb2VzIGl0IGFsbG9jYXRlPyBEb2VzIGl0IGhhbmRsZSBwb3dlciBtYW5hZ2VtZW50IGFwcHJvcHJpYXRlbHk/IFdoYXQncyB0aGUgaW50ZXJydXB0IGhhbmRsaW5nIGxpa2U/IEJhc2ljYWxseSwgSSBuZWVkIHRvIGZvbGxvdyB0aGUgZHJpdmVyJ3MgZXhlY3V0aW9uIHBhdGggZnJvbSBkZXZpY2UgZGlzY292ZXJ5IHRocm91Z2ggaW5pdGlhbGl6YXRpb24gdG8gZW5zdXJlIGV2ZXJ5dGhpbmcgaXMgd29ya2luZyBhcyBleHBlY3RlZC4gQW5kLCB3aGVyZSBhcmUgdGhlIGltcG9ydGFudCBkYXRhIHN0cnVjdHVyZXMgZGVmaW5lZD8gSXMgaXQgZG9pbmcgYWxsIHRoZSByaWdodCBjaGVja3MgYW5kIGVycm9yIGhhbmRsaW5nP1xuXG5cbiIsIklucHV0VG9rZW5zIjoxODA4NCwiT3V0cHV0VG9rZW5zIjo0MywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI2LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA3VDA1OjA0OjQ2LjUxNDM4MzI2N1oiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjYxNTMwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvS2NvbmZpZ1wiLFxuICBcIkZpcnN0TGluZVwiOiAxLFxuICBcIkxpbmVDb3VudFwiOiA2MFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgICAxOlxcdCMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjBcXG4gICAyOlxcdFxcbiAgIDM6XFx0Y29uZmlnIE1NODFYXFxuICAgNDpcXHRcXHR0cmlzdGF0ZSBcXFwiTW9yc2UgTWljcm8gTU04MXggd2lyZWxlc3MgZGV2aWNlc1xcXCIgaWYgQ09NUElMRV9URVNUXFxuICAgNTpcXHRcXHRkZXBlbmRzIG9uIE1BQzgwMjExXFxuICAgNjpcXHRcXHRzZWxlY3QgRldfTE9BREVSXFxuICAgNzpcXHRcXHRzZWxlY3QgQ1JDN1xcbiAgIDg6XFx0XFx0aGVscFxcbiAgIDk6XFx0XFx0ICBUaGlzIG1vZHVsZSBhZGRzIHN1cHBvcnQgZm9yIHdpcmVsZXNzIGRldmljZXMgYmFzZWRcXG4gIDEwOlxcdFxcdCAgb24gTW9yc2UgTWljcm8gTU04MXh4IGNoaXBzZXRzLlxcbiAgMTE6XFx0XFxuICAxMjpcXHRjb25maWcgTU04MVhfVVNCXFxuICAxMzpcXHRcXHR0cmlzdGF0ZSBcXFwiTW9yc2UgTWljcm8gTU04MXggVVNCIHN1cHBvcnRcXFwiXFxuICAxNDpcXHRcXHRkZXBlbmRzIG9uIE1BQzgwMjExIFxcdTAwMjZcXHUwMDI2IFVTQlxcbiAgMTU6XFx0XFx0c2VsZWN0IE1NODFYXFxuICAxNjpcXHRcXHRoZWxwXFxuICAxNzpcXHRcXHQgIFRoaXMgbW9kdWxlIGFkZHMgc3VwcG9ydCBmb3IgdGhlIFVTQiBpbnRlcmZhY2Ugb2ZcXG4gIDE4OlxcdFxcdCAgZGV2aWNlcyB1c2luZyB0aGUgTW9yc2UgTWljcm8gTU04MXggY2hpcHNldC5cXG4gIDE5OlxcdFxcbiAgMjA6XFx0Y29uZmlnIE1NODFYX1NESU9cXG4gIDIxOlxcdFxcdHRyaXN0YXRlIFxcXCJNb3JzZSBNaWNybyBNTTgxeCBTRElPIHN1cHBvcnRcXFwiXFxuICAyMjpcXHRcXHRkZXBlbmRzIG9uIE1BQzgwMjExIFxcdTAwMjZcXHUwMDI2IE1NQ1xcbiAgMjM6XFx0XFx0c2VsZWN0IE1NODFYXFxuICAyNDpcXHRcXHRoZWxwXFxuICAyNTpcXHRcXHQgIFRoaXMgbW9kdWxlIGFkZHMgc3VwcG9ydCBmb3IgdGhlIFNESU8gaW50ZXJmYWNlIG9mXFxuICAyNjpcXHRcXHQgIGRldmljZXMgdXNpbmcgdGhlIE1vcnNlIE1pY3JvIE1NODF4IGNoaXBzZXQuXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA3VDA1OjA0OjQ2LjUxNDQ0Njk2N1oiLCJTZXEiOjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjI2ODE4NjQ3NzYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqSW5pdGlhbCBBc3Nlc3NtZW50IFx1MDAyNiBJbnZlc3RpZ2F0aXZlIFBhdGgqKlxuXG5Pa2F5LCBoZXJlJ3Mgd2hhdCBJJ20gc2VlaW5nOiBNTTgxWCBoYXMgTU04MVhfVVNCLCBpbnRlcmVzdGluZy4gTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMsIGNhbiB3ZSBmdXp6IHRoaXMgdGhpbmcgdmlhIFVTQj8gSSdtIHRoaW5raW5nIHRvb2xzIGxpa2Ugc3l6a2FsbGVyLCBvciBtYXliZSBldmVuIGxldmVyYWdpbmcgUmF3IEdhZGdldCBvciBhIGR1bW15IEhDRCBzZXR1cCBmb3IgZW11bGF0aW9uLiBCZWZvcmUgSSBnbyB0b28gZGVlcCwgSSBuZWVkIHRvIGNoZWNrIHRoZSBVU0IgY29kZSBhbmQgcHJvYmUgcm91dGluZXMuIExldCdzIHNlZS4uLiBJJ2xsIGRpdmUgaW50byBgdXNiLmNgIGFuZCB0aGVuIGRpZyBpbnRvIHRoZSBzcGVjaWZpY3Mgb2YgdGhlIE1NODFYIGltcGxlbWVudGF0aW9uLiBUaGF0J2xsIGJlIGluIGBkcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L3VzYi5jYCBhbmQgYGRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29tbWFuZC5jYC4gVGhvc2UgYXJlIHRoZSBsb2dpY2FsIHBsYWNlcyB0byBzdGFydC4gR290dGEgZ2V0IGEgZmVlbCBmb3IgaG93IHRoZXkncmUgaGFuZGxpbmcgVVNCIGNvbW11bmljYXRpb24gYW5kIGNvbW1hbmRzLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxODc0MiwiT3V0cHV0VG9rZW5zIjo0NSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEwMywiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA3VDA1OjA0OjQ5LjE5NjMxMzkzM1oiLCJTZXEiOjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEzMDc4MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L3VzYi5jXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDEsXG4gIFwiTGluZUNvdW50XCI6IDEwMFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgICAxOlxcdC8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcXG4gICAyOlxcdC8qXFxuICAgMzpcXHQgKiBDb3B5cmlnaHQgKGMpIDIwMTctMjAyNiBNb3JzZSBNaWNyb1xcbiAgIDQ6XFx0ICovXFxuICAgNTpcXHQjaW5jbHVkZSBcXHUwMDNjbGludXgvamlmZmllcy5oXFx1MDAzZVxcbiAgIDY6XFx0I2luY2x1ZGUgXFx1MDAzY2xpbnV4L21vZHVsZS5oXFx1MDAzZVxcbiAgIDc6XFx0I2luY2x1ZGUgXFx1MDAzY2xpbnV4L3VzYi5oXFx1MDAzZVxcbiAgIDg6XFx0I2luY2x1ZGUgXFxcImhpZi5oXFxcIlxcbiAgIDk6XFx0I2luY2x1ZGUgXFxcImJ1cy5oXFxcIlxcbiAgMTA6XFx0I2luY2x1ZGUgXFxcIm1hYy5oXFxcIlxcbiAgMTE6XFx0I2luY2x1ZGUgXFxcImNvcmUuaFxcXCJcXG4gIDEyOlxcdFxcbiAgMTM6XFx0LypcXG4gIDE0OlxcdCAqIFVSQiB0aW1lb3V0IGluIG1pbGxpc2Vjb25kcy4gSWYgYW4gVVJCIGRvZXMgbm90IGNvbXBsZXRlIHdpdGhpbiB0aGlzXFxuICAxNTpcXHQgKiB0aW1lLCBpdCB3aWxsIGJlIGtpbGxlZC4gVGhpcyB0aW1lb3V0IG5lZWRzIHRvIGFjY291bnQgZm9yIFVTQiBzdXNwZW5kYW5kXFxuICAxNjpcXHQgKiByZXN1bWUgb2NjdXJyaW5nIGJlZm9yZSB0aGUgVVJCIGNhbiBiZSB0cmFuc2ZlcnJlZCwgYW5kIGl0IGFsc28gbmVlZHMgdG9cXG4gIDE3OlxcdCAqIGFjY291bnQgZm9yIHRyYW5zZmVycmluZyBVU0JfTUFYX1RSQU5TRkVSX1NJWkUgYnl0ZXMgb3ZlciBhIHBvdGVudGlhbGx5XFxuICAxODpcXHQgKiBzbG93LCBjb25nZXN0ZWQgVVNCIEZ1bGwgU3BlZWQgbGluay5cXG4gIDE5OlxcdCAqL1xcbiAgMjA6XFx0I2RlZmluZSBVUkJfVElNRU9VVF9NUyAyNTBcXG4gIDIxOlxcdFxcbiAgMjI6XFx0LyogSGlnaCBzcGVlZCBVU0IgMl4oNC0xKSAqIDEyNXVzZWMgPSAxbXNlYyAqL1xcbiAgMjM6XFx0I2RlZmluZSBNTTgxWF9VU0JfSU5URVJSVVBUX0lOVEVSVkFMIDRcXG4gIDI0OlxcdFxcbiAgMjU6XFx0LyogTWF4IGJ5dGVzIHBlciBVU0IgcmVhZC93cml0ZSAqL1xcbiAgMjY6XFx0I2RlZmluZSBVU0JfTUFYX1RSQU5TRkVSX1NJWkUgKDE2ICogMTAyNClcXG4gIDI3OlxcdFxcbiAgMjg6XFx0LyogSU5UIEVQIGJ1ZmZlciBzaXplICovXFxuICAyOTpcXHQjZGVmaW5lIE1NODFYX0VQX0lOVF9CVUZGRVJfU0laRSA4XFxuICAzMDpcXHRcXG4gIDMxOlxcdC8qIE1vcnNlIHZlbmRvciBJRHMqL1xcbiAgMzI6XFx0I2RlZmluZSBNTTgxWF9WRU5ET1JfSUQgMHgzMjViXFxuICAzMzpcXHQjZGVmaW5lIE1NODFYX01NODEwWF9QUk9EVUNUX0lEIDB4ODEwMFxcbiAgMzQ6XFx0XFxuICAzNTpcXHQvKiBQb3dlciBtYW5hZ2VtZW50IHJ1bnRpbWUgYXV0by1zdXNwZW5kIGRlbGF5IHZhbHVlIGluIG1pbGxpc2Vjb25kcyAqL1xcbiAgMzY6XFx0I2RlZmluZSBQTV9SVU5USU1FX0FVVE9TVVNQRU5EX0RFTEFZX01TIDEwMFxcbiAgMzc6XFx0XFxuICAzODpcXHRlbnVtIG1tODF4X3VzYl9lbmRwb2ludHMge1xcbiAgMzk6XFx0XFx0TU04MVhfRVBfQ01EID0gMCxcXG4gIDQwOlxcdFxcdE1NODFYX0VQX0lOVCxcXG4gIDQxOlxcdFxcdE1NODFYX0VQX01FTV9SRCxcXG4gIDQyOlxcdFxcdE1NODFYX0VQX01FTV9XUixcXG4gIDQzOlxcdFxcdE1NODFYX0VQX1JFR19SRCxcXG4gIDQ0OlxcdFxcdE1NODFYX0VQX1JFR19XUixcXG4gIDQ1OlxcdFxcdE1NODFYX0VQX0VQX01BWCxcXG4gIDQ2OlxcdH07XFxuICA0NzpcXHRcXG4gIDQ4OlxcdHN0cnVjdCBtbTgxeF91c2JfZW5kcG9pbnQge1xcbiAgNDk6XFx0XFx0dW5zaWduZWQgY2hhciAqYnVmZmVyO1xcbiAgNTA6XFx0XFx0c3RydWN0IHVyYiAqdXJiO1xcbiAgNTE6XFx0XFx0X191OCBhZGRyO1xcbiAgNTI6XFx0XFx0aW50IHNpemU7XFxuICA1MzpcXHR9O1xcbiAgNTQ6XFx0XFxuICA1NTpcXHRlbnVtIG1tODF4X3VzYl9mbGFncyB7IE1NODFYX1VTQl9GTEFHX0FUVEFDSEVELCBNTTgxWF9VU0JfRkxBR19TVVNQRU5ERUQgfTtcXG4gIDU2OlxcdFxcbiAgNTc6XFx0c3RydWN0IG1tODF4X3VzYiB7XFxuICA1ODpcXHRcXHRzdHJ1Y3QgdXNiX2RldmljZSAqdWRldjtcXG4gIDU5OlxcdFxcdHN0cnVjdCB1c2JfaW50ZXJmYWNlICppbnRlcmZhY2U7XFxuICA2MDpcXHRcXHRzdHJ1Y3QgbW04MXhfdXNiX2VuZHBvaW50IGVuZHBvaW50c1tNTTgxWF9FUF9FUF9NQVhdO1xcbiAgNjE6XFx0XFx0aW50IGVycm9ycztcXG4gIDYyOlxcdFxcbiAgNjM6XFx0XFx0Lyogc2VyaWFsaXNlIFVTQiBkZXZpY2Ugc3RydWN0ICovXFxuICA2NDpcXHRcXHRzdHJ1Y3QgbXV0ZXggbG9jaztcXG4gIDY1OlxcdFxcbiAgNjY6XFx0XFx0Lyogc2VyaWFsaXNlIFVTQiBidXMgYWNjZXNzICovXFxuICA2NzpcXHRcXHRzdHJ1Y3QgbXV0ZXggYnVzX2xvY2s7XFxuICA2ODpcXHRcXG4gIDY5OlxcdFxcdGJvb2wgb25nb2luZ19jbWQ7XFxuICA3MDpcXHRcXHRib29sIG9uZ29pbmdfcnc7XFxuICA3MTpcXHRcXHR3YWl0X3F1ZXVlX2hlYWRfdCByd19pbl93YWl0O1xcbiAgNzI6XFx0XFx0dW5zaWduZWQgbG9uZyBmbGFncztcXG4gIDczOlxcdH07XFxuICA3NDpcXHRcXG4gIDc1OlxcdGVudW0gbW04MXhfdXNiX2NvbW1hbmRfZGlyZWN0aW9uIHtcXG4gIDc2OlxcdFxcdE1NODFYX1VTQl9XUklURSA9IDB4MDAsXFxuICA3NzpcXHRcXHRNTTgxWF9VU0JfUkVBRCA9IDB4ODAsXFxuICA3ODpcXHRcXHRNTTgxWF9VU0JfUkVTRVQgPSAweDAyLFxcbiAgNzk6XFx0fTtcXG4gIDgwOlxcdFxcbiAgODE6XFx0c3RydWN0IG1tODF4X3VzYl9jb21tYW5kIHtcXG4gIDgyOlxcdFxcdF9fbGUzMiBkaXI7IC8qIE5leHQgQlVMSyBkaXJlY3Rpb24gKi9cXG4gIDgzOlxcdFxcdF9fbGUzMiBhZGRyZXNzOyAvKiBOZXh0IEJVTEsgYWRkcmVzcyAqL1xcbiAgODQ6XFx0XFx0X19sZTMyIGxlbmd0aDsgLyogTmV4dCBCVUxLIHNpemUgKi9cXG4gIDg1OlxcdH07XFxuICA4NjpcXHRcXG4gIDg3OlxcdHN0YXRpYyBjb25zdCBzdHJ1Y3QgdXNiX2RldmljZV9pZCBtbTgxeF91c2JfdGFibGVbXSA9IHtcXG4gIDg4OlxcdFxcdHsgVVNCX0RFVklDRShNTTgxWF9WRU5ET1JfSUQsIE1NODFYX01NODEwWF9QUk9EVUNUX0lEKSB9LFxcbiAgODk6XFx0XFx0e30gLyogVGVybWluYXRpbmcgZW50cnkgKi9cXG4gIDkwOlxcdH07XFxuICA5MTpcXHRcXG4gIDkyOlxcdE1PRFVMRV9ERVZJQ0VfVEFCTEUodXNiLCBtbTgxeF91c2JfdGFibGUpO1xcbiAgOTM6XFx0XFxuICA5NDpcXHRzdGF0aWMgdm9pZCBtbTgxeF91c2JfaXJxX3dvcmsoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxcbiAgOTU6XFx0e1xcbiAgOTY6XFx0XFx0c3RydWN0IG1tODF4ICptb3JzID0gY29udGFpbmVyX29mKHdvcmssIHN0cnVjdCBtbTgxeCwgdXNiX2lycV93b3JrKTtcXG4gIDk3OlxcdFxcbiAgOTg6XFx0XFx0bW04MXhfY2xhaW1fYnVzKG1vcnMpO1xcbiAgOTk6XFx0XFx0bW04MXhfaHdfaXJxX2hhbmRsZShtb3JzKTtcXG4gMTAwOlxcdFxcdG1tODF4X3JlbGVhc2VfYnVzKG1vcnMpO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wN1QwNTowNDo0OS4xOTY0NDY4MDNaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjoxNjE4MDk0OTEzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkRpdmluZyBpbnRvIE1vcnNlIE1pY3JvIENvZGUqKlxuXG5Pa2F5LCBzbyBJJ20gdGFraW5nIGEgbG9vayBhdCB0aGUgTW9yc2UgTWljcm8gY29kZSwgc3BlY2lmaWNhbGx5IHRoZSBVU0IgZHJpdmVyIGFuZCBjb21tYW5kIGhhbmRsaW5nLiBJIG5lZWQgdG8gZ2V0IGEgYmV0dGVyIGhhbmRsZSBvbiBob3cgdGhlIGNvbW11bmljYXRpb24gaXMgc2V0IHVwLiBMZXQncyBzdGFydCBieSBsb29raW5nIGF0IGBkcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L3VzYi5jYCBhbmQgYGNvbW1hbmQuY2AuIEknbSBnb2luZyB0byBzdGFydCB3aXRoIGBjb21tYW5kLmNgLCBzcGVjaWZpY2FsbHkgYXJvdW5kIGxpbmUgMjAwLiBJIHdhbnQgdG8gc2VlIGhvdyBjb21tYW5kcyBhcmUgYmVpbmcgYnVpbHQgYW5kIHByb2Nlc3NlZC4gVGhpcyBhcmVhIHByb2JhYmx5IGhvbGRzIHRoZSBrZXkgdG8gdGhlIFVTQi1zcGVjaWZpYyBpbnRlcmFjdGlvbnMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIwNTQ0LCJPdXRwdXRUb2tlbnMiOjQ2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NjUsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0wN1QwNTowNDo1MC44MTQ1NDQ0ODZaIiwiU2VxIjoxMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6OTA5NTAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb21tYW5kLmNcIixcbiAgXCJGaXJzdExpbmVcIjogMTQ1LFxuICBcIkxpbmVDb3VudFwiOiA5MFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgMTQ1OlxcdFxcbiAxNDY6XFx0aW50IG1tODF4X2NtZF9yZXNwX3Byb2Nlc3Moc3RydWN0IG1tODF4ICptb3JzLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxcbiAxNDc6XFx0e1xcbiAxNDg6XFx0XFx0aW50IGxlbmd0aCwgcmV0ID0gLUVTUkNIOyAvKiBObyBzdWNoIHByb2Nlc3MgKi9cXG4gMTQ5OlxcdFxcdHN0cnVjdCBtbTgxeF9za2JxICpjbWRfcSA9IG1tODF4X2hpZl9nZXRfdHhfY21kX3F1ZXVlKG1vcnMpO1xcbiAxNTA6XFx0XFx0c3RydWN0IGhvc3RfY21kX3Jlc3AgKnNyY19yZXNwID0gKHN0cnVjdCBob3N0X2NtZF9yZXNwICopKHNrYi1cXHUwMDNlZGF0YSk7XFxuIDE1MTpcXHRcXHRzdHJ1Y3Qgc2tfYnVmZiAqY21kX3NrYiA9IE5VTEw7XFxuIDE1MjpcXHRcXHRzdHJ1Y3QgaG9zdF9jbWRfcmVzcF9jYiAqcmVzcF9jYjtcXG4gMTUzOlxcdFxcdHN0cnVjdCBob3N0X2NtZF9yZXNwICpkZXN0X3Jlc3A7XFxuIDE1NDpcXHRcXHRzdHJ1Y3QgaG9zdF9jbWRfcmVxICpyZXE7XFxuIDE1NTpcXHRcXHR1MTYgbWVzc2FnZV9pZCA9IDA7XFxuIDE1NjpcXHRcXHR1MTYgaG9zdF9pZCA9IDA7XFxuIDE1NzpcXHRcXHR1MTYgcmVzcF9tZXNzYWdlX2lkID0gbGUxNl90b19jcHUoc3JjX3Jlc3AtXFx1MDAzZWhkci5tZXNzYWdlX2lkKTtcXG4gMTU4OlxcdFxcdHUxNiByZXNwX2hvc3RfaWQgPSBsZTE2X3RvX2NwdShzcmNfcmVzcC1cXHUwMDNlaGRyLmhvc3RfaWQpO1xcbiAxNTk6XFx0XFx0Ym9vbCBpc19sYXRlX3Jlc3BvbnNlID0gZmFsc2U7XFxuIDE2MDpcXHRcXG4gMTYxOlxcdFxcdGRldl9kYmcobW9ycy1cXHUwMDNlZGV2LCBcXFwiRVZUIDB4JTA0eDoweCUwNHhcXFwiLCByZXNwX21lc3NhZ2VfaWQsIHJlc3BfaG9zdF9pZCk7XFxuIDE2MjpcXHRcXG4gMTYzOlxcdFxcdGlmICghSE9TVF9DTURfSVNfUkVTUChzcmNfcmVzcCkpIHtcXG4gMTY0OlxcdFxcdFxcdHJldCA9IG1tODF4X21hY19ldmVudF9yZWN2KG1vcnMsIHNrYik7XFxuIDE2NTpcXHRcXHRcXHRnb3RvIGV4aXRfZnJlZTtcXG4gMTY2OlxcdFxcdH1cXG4gMTY3OlxcdFxcbiAxNjg6XFx0XFx0bXV0ZXhfbG9jayhcXHUwMDI2bW9ycy1cXHUwMDNlY21kX2xvY2spO1xcbiAxNjk6XFx0XFxuIDE3MDpcXHRcXHRjbWRfc2tiID0gbW04MXhfc2ticV90eF9wZW5kaW5nKGNtZF9xKTtcXG4gMTcxOlxcdFxcdGlmIChjbWRfc2tiKSB7XFxuIDE3MjpcXHRcXHRcXHRtbTgxeF9za2JxX3B1bGxfaGRyX3Bvc3RfdHgoY21kX3NrYik7XFxuIDE3MzpcXHRcXHRcXHRyZXEgPSAoc3RydWN0IGhvc3RfY21kX3JlcSAqKWNtZF9za2ItXFx1MDAzZWRhdGE7XFxuIDE3NDpcXHRcXHRcXHRtZXNzYWdlX2lkID0gbGUxNl90b19jcHUocmVxLVxcdTAwM2VoZHIubWVzc2FnZV9pZCk7XFxuIDE3NTpcXHRcXHRcXHRob3N0X2lkID0gbGUxNl90b19jcHUocmVxLVxcdTAwM2VoZHIuaG9zdF9pZCk7XFxuIDE3NjpcXHRcXHR9XFxuIDE3NzpcXHRcXG4gMTc4OlxcdFxcdC8qXFxuIDE3OTpcXHRcXHQgKiBJZiB0aGVyZSBpcyBubyBwZW5kaW5nIGNvbW1hbmQgb3IgdGhlIHNlcXVlbmNlIElEIGRvZXMgbm90IG1hdGNoLFxcbiAxODA6XFx0XFx0ICogdGhpcyBpcyBhIGxhdGUgcmVzcG9uc2UgZm9yIGEgdGltZWQgb3V0IGNvbW1hbmQgd2hpY2ggaGFzIGJlZW5cXG4gMTgxOlxcdFxcdCAqIGNsZWFuZWQgdXAsIHNvIGp1c3QgZnJlZSB1cCB0aGUgcmVzcG9uc2UuIElmIGEgY29tbWFuZCB3YXMgcmV0cmllZCxcXG4gMTgyOlxcdFxcdCAqIHRoZSByZXNwb25zZSBtYXkgYmUgZnJvbSB0aGUgcmV0cnkgb3IgZnJvbSB0aGUgb3JpZ2luYWwgY29tbWFuZFxcbiAxODM6XFx0XFx0ICogKGxhdGUgcmVzcG9uc2UpIGJ1dCBub3QgZnJvbSBib3RoIGJlY2F1c2UgdGhlIGZpcm13YXJlIHdpbGwgc2lsZW50bHlcXG4gMTg0OlxcdFxcdCAqIGRyb3AgYSByZXRyeSBpZiBpdCByZWNlaXZlZCB0aGUgaW5pdGlhbCByZXF1ZXN0LiBTbyBhIG1pc21hdGNoZWRcXG4gMTg1OlxcdFxcdCAqIHJldHJ5IGNvdW50ZXIgaXMgdHJlYXRlZCBhcyBhIG1hdGNoZWQgY29tbWFuZCBhbmQgcmVzcG9uc2UuXFxuIDE4NjpcXHRcXHQgKi9cXG4gMTg3OlxcdFxcdGlmICghY21kX3NrYiB8fCBtZXNzYWdlX2lkICE9IHJlc3BfbWVzc2FnZV9pZCB8fFxcbiAxODg6XFx0XFx0ICAgIChob3N0X2lkIFxcdTAwMjYgSE9TVF9DTURfSE9TVF9JRF9TRVFfTUFTSykgIT1cXG4gMTg5OlxcdFxcdFxcdCAgICAocmVzcF9ob3N0X2lkIFxcdTAwMjYgSE9TVF9DTURfSE9TVF9JRF9TRVFfTUFTSykpIHtcXG4gMTkwOlxcdFxcdFxcdGRldl9lcnIobW9ycy1cXHUwMDNlZGV2LFxcbiAxOTE6XFx0XFx0XFx0XFx0XFxcIkxhdGUgcmVzcG9uc2UgZm9yIHRpbWVkIG91dCByZXEgMHglMDR4OiUwNHggaGF2ZSAweCUwNHg6JTA0eCAweCUwNHhcXFwiLFxcbiAxOTI6XFx0XFx0XFx0XFx0cmVzcF9tZXNzYWdlX2lkLCByZXNwX2hvc3RfaWQsIG1lc3NhZ2VfaWQsIGhvc3RfaWQsXFxuIDE5MzpcXHRcXHRcXHRcXHRtb3JzLVxcdTAwM2VjbWRfc2VxKTtcXG4gMTk0OlxcdFxcdFxcdGlzX2xhdGVfcmVzcG9uc2UgPSB0cnVlO1xcbiAxOTU6XFx0XFx0XFx0Z290byBleGl0O1xcbiAxOTY6XFx0XFx0fVxcbiAxOTc6XFx0XFx0aWYgKChob3N0X2lkIFxcdTAwMjYgSE9TVF9DTURfSE9TVF9JRF9SRVRSWV9NQVNLKSAhPVxcbiAxOTg6XFx0XFx0ICAgIChyZXNwX2hvc3RfaWQgXFx1MDAyNiBIT1NUX0NNRF9IT1NUX0lEX1JFVFJZX01BU0spKVxcbiAxOTk6XFx0XFx0XFx0ZGV2X2RiZyhtb3JzLVxcdTAwM2VkZXYsXFxuIDIwMDpcXHRcXHRcXHRcXHRcXFwiQ29tbWFuZCByZXRyeSBtaXNtYXRjaCAweCUwNHg6JTA0eCAweCUwNHg6JTA0eFxcXCIsXFxuIDIwMTpcXHRcXHRcXHRcXHRtZXNzYWdlX2lkLCBob3N0X2lkLCByZXNwX21lc3NhZ2VfaWQsIHJlc3BfaG9zdF9pZCk7XFxuIDIwMjpcXHRcXG4gMjAzOlxcdFxcdHJlc3BfY2IgPSAoc3RydWN0IGhvc3RfY21kX3Jlc3BfY2IgKilJRUVFODAyMTFfU0tCX0NCKGNtZF9za2IpXFxuIDIwNDpcXHRcXHRcXHRcXHQgIC1cXHUwMDNlZHJpdmVyX2RhdGE7XFxuIDIwNTpcXHRcXHRsZW5ndGggPSByZXNwX2NiLVxcdTAwM2VsZW5ndGg7XFxuIDIwNjpcXHRcXHRkZXN0X3Jlc3AgPSByZXNwX2NiLVxcdTAwM2VkZXN0X3Jlc3A7XFxuIDIwNzpcXHRcXHRpZiAobGVuZ3RoIFxcdTAwM2U9IHNpemVvZihzdHJ1Y3QgaG9zdF9jbWRfcmVzcCkgXFx1MDAyNlxcdTAwMjYgZGVzdF9yZXNwKSB7XFxuIDIwODpcXHRcXHRcXHRyZXQgPSAwO1xcbiAyMDk6XFx0XFx0XFx0bGVuZ3RoID0gbWluX3QoaW50LCBsZW5ndGgsXFxuIDIxMDpcXHRcXHRcXHRcXHQgICAgICAgbGUxNl90b19jcHUoc3JjX3Jlc3AtXFx1MDAzZWhkci5sZW4pICtcXG4gMjExOlxcdFxcdFxcdFxcdFxcdCAgICAgICBzaXplb2Yoc3RydWN0IGhvc3RfY21kX2hlYWRlcikpO1xcbiAyMTI6XFx0XFx0XFx0bGVuZ3RoID0gbWluX3QoaW50LCBsZW5ndGgsIHNrYi1cXHUwMDNlbGVuKTtcXG4gMjEzOlxcdFxcdFxcdG1lbWNweShkZXN0X3Jlc3AsIHNyY19yZXNwLCBsZW5ndGgpO1xcbiAyMTQ6XFx0XFx0fSBlbHNlIHtcXG4gMjE1OlxcdFxcdFxcdHJldCA9IGxlMzJfdG9fY3B1KHNyY19yZXNwLVxcdTAwM2VzdGF0dXMpO1xcbiAyMTY6XFx0XFx0fVxcbiAyMTc6XFx0XFxuIDIxODpcXHRcXHRyZXNwX2NiLVxcdTAwM2VyZXQgPSByZXQ7XFxuIDIxOTpcXHRcXG4gMjIwOlxcdGV4aXQ6XFxuIDIyMTpcXHRcXHRpZiAoY21kX3NrYiBcXHUwMDI2XFx1MDAyNiAhaXNfbGF0ZV9yZXNwb25zZSkge1xcbiAyMjI6XFx0XFx0XFx0LyogQ29tcGxldGUgaWYgbm90IGFscmVhZHkgdGltZWQgb3V0ICovXFxuIDIyMzpcXHRcXHRcXHRpZiAobW9ycy1cXHUwMDNlY21kX2NvbXApXFxuIDIyNDpcXHRcXHRcXHRcXHRjb21wbGV0ZShtb3JzLVxcdTAwM2VjbWRfY29tcCk7XFxuIDIyNTpcXHRcXHR9XFxuIDIyNjpcXHRcXG4gMjI3OlxcdFxcdG11dGV4X3VubG9jayhcXHUwMDI2bW9ycy1cXHUwMDNlY21kX2xvY2spO1xcbiAyMjg6XFx0ZXhpdF9mcmVlOlxcbiAyMjk6XFx0XFx0ZGV2X2tmcmVlX3NrYihza2IpO1xcbiAyMzA6XFx0XFx0cmV0dXJuIDA7XFxuIDIzMTpcXHR9XFxuIDIzMjpcXHRcXG4gMjMzOlxcdGludCBtbTgxeF9jbWRfc3RhX3N0YXRlKHN0cnVjdCBtbTgxeCAqbW9ycywgc3RydWN0IG1tODF4X3ZpZiAqbW9yc192aWYsIHUxNiBhaWQsXFxuIDIzNDpcXHRcXHRcXHRcXHRzdHJ1Y3QgaWVlZTgwMjExX3N0YSAqc3RhLFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wN1QwNTowNDo1MC44MTQ2Mzg2NzZaIiwiU2VxIjoxMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6MzIwMzUzNDI3NiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIFBhdGNoIGFuZCBSZWFjaGFiaWxpdHkqKlxuXG5Pa2F5LCBsZXQncyBkaXZlIGludG8gdGhpcy4gVGhlIHRhc2sgYXQgaGFuZCBpcyB0byB1bmRlcnN0YW5kIHRoaXMgcGF0Y2guIEl0IGxvb2tzIGxpa2Ugd2UncmUgZGVhbGluZyB3aXRoIGEgbW9kaWZpY2F0aW9uIHRvIHRoZSBgbW04MXhfY21kX3Jlc3BfcHJvY2Vzc2AgZnVuY3Rpb24sIHdoaWNoIHJlc2lkZXMgd2l0aGluIGBkcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuY2AuIFNwZWNpZmljYWxseSwgdGhleSd2ZSBpbnRyb2R1Y2VkIGEgbGluZTogYGxlbmd0aCA9IG1pbl90KGludCwgbGVuZ3RoLCBza2ItXHUwMDNlbGVuKTtgIHJpZ2h0IGJlZm9yZSB0aGUgYG1lbWNweWAuIE15IGluaXRpYWwgdGhvdWdodCBpcywgdGhpcyBpcyBsaWtlbHkgYSBzYWZldHkgY2hlY2sgcmVsYXRlZCB0byBidWZmZXIgb3ZlcmZsb3dzLCBidXQgbGV0J3MgYmUgc3VyZS5cblxuVGhlIGNyaXRpY2FsIG5leHQgc3RlcCBpcyBkZXRlcm1pbmluZyB0aGUgaW1wYWN0IGFuZCBpZiB0aGlzIGlzIHRoZSBvbmx5IHNwb3QgdGhpcyBjaGFuZ2UgaXMgbmVlZGVkLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGVyZSBgbW04MXhfY21kX3Jlc3BfcHJvY2Vzc2AgaXMgY2FsbGVkIGZyb20uIEkgbmVlZCB0byB0cmFjZSB0aGUgY2FsbCBwYXRocyB0byBnZXQgYSBoYW5kbGUgb24gcmVhY2hhYmlsaXR5LCBpZGVudGlmeSB0aGUgY29udGV4dC4gRmluZGluZyB0aGUgY2FsbGVycyBnaXZlcyBtZSB0aGUgYmlnZ2VyIHBpY3R1cmUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIyNDk2LCJPdXRwdXRUb2tlbnMiOjM5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTIzLCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMDdUMDU6MDQ6NTQuMDE4MTc1OTQyWiIsIlNlcSI6MTIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1MjE2ODQwMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJtbTgxeF9jbWRfcmVzcF9wcm9jZXNzXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb21tYW5kLmM9MzM9c3RhdGljIGludCBtbTgxeF9jbWRfdHgoc3RydWN0IG1tODF4ICptb3JzLCBzdHJ1Y3QgaG9zdF9jbWRfcmVzcCAqcmVzcCxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29tbWFuZC5jLTE0NS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuYzoxNDY6aW50IG1tODF4X2NtZF9yZXNwX3Byb2Nlc3Moc3RydWN0IG1tODF4ICptb3JzLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29tbWFuZC5jLTE0Ny17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuaD00ND1zdHJ1Y3QgaG9zdF9jbWRfZXZlbnQge1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb21tYW5kLmgtNDgtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb21tYW5kLmg6NDk6aW50IG1tODF4X2NtZF9yZXNwX3Byb2Nlc3Moc3RydWN0IG1tODF4ICptb3JzLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuaC01MC1pbnQgbW04MXhfY21kX2FkZF9pZihzdHJ1Y3QgbW04MXggKm1vcnMsIHUxNiAqdmlmX2lkLCBjb25zdCB1OCAqYWRkcixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvc2ticS5jPTM0OD1zdGF0aWMgdm9pZCBtbTgxeF9za2JxX2Rpc3BhdGNoX3dvcmsoc3RydWN0IHdvcmtfc3RydWN0ICpkaXNwYXRjaF93b3JrKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9za2JxLmMtMzcxLVxcdFxcdGNhc2UgTU04MVhfU0tCX0NIQU5fQ09NTUFORDpcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L3NrYnEuYzozNzI6XFx0XFx0XFx0bW04MXhfY21kX3Jlc3BfcHJvY2Vzcyhtb3JzLCBwZmlyc3QpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvc2ticS5jLTM3My1cXHRcXHRcXHRicmVhaztcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDdUMDU6MDQ6NTQuMDcwMzUwMDYyWiIsIlNlcSI6MTMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjQyODY4MDM5MDgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSBhbmFseXNpcyBvZiBob3cgdGhlIFVTQiBwcm9iZSBhbmQgUlggcGFja2V0IHByb2Nlc3NpbmcgYXJlIGxpa2VseSBmdW5jdGlvbmluZywgYmFzZWQgb24gdGhlIGZpbGUgcGF0aHMgcHJvdmlkZWQuXG5cbioqRGlzc2VjdGluZyB0aGUgVVNCIFx1MDAyNiBSWCBGbG93KipcblxuQWxyaWdodCwgbGV0J3MgYnJlYWsgdGhpcyBkb3duLiBUaGUgY29yZSBvZiB0aGUgVVNCIGludGVyZmFjZSBpcyBwcm9iYWJseSBoYW5kbGVkIHdpdGhpbiBgZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC91c2IuY2AuIFRoaXMgaXMgd2hlcmUgdGhlIGluaXRpYWwgaW50ZXJhY3Rpb24gd2l0aCB0aGUgVVNCIGJ1cyBpcyBkZWZpbmVkLiBJJ2QgZXhwZWN0IHRvIHNlZSB0aGUgVVNCIHByb2JlIGZ1bmN0aW9uIGluIGhlcmUsIGhhbmRsaW5nIGRldmljZSBkZXRlY3Rpb24sIGluaXRpYWxpemF0aW9uLCBhbmQgZHJpdmVyIGF0dGFjaG1lbnQuIEknbGwgbmVlZCB0byBjb25maXJtIHRoYXQncyB0aGUgZW50cnkgcG9pbnQuXG5cbk5vdywgdGhlIGludGVyZXN0aW5nIGJpdCDigJMgUlggcGFja2V0IHByb2Nlc3NpbmcuIFRoZSBtb2R1bGUgYGRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgveWFwcy5jYCBsb29rcyBpbW1lZGlhdGVseSBwcm9taXNpbmcuIFRoZSBuYW1lIFwieWFwc1wiIHByb2JhYmx5IHN0YW5kcyBmb3Igc29tZXRoaW5nIGxpa2UgXCJZZXQgQW5vdGhlciBQYWNrZXQgU3lzdGVtXCIgb3IgXCJZb3VyIEFwcGxpY2F0aW9uIFBhY2tldCBTeXN0ZW0sXCIgaW5kaWNhdGluZyBhIGN1c3RvbSBwcm90b2NvbCBvciBmcmFtZSBoYW5kbGluZyBsYXllciB0aGF0IGlzIHNwZWNpZmljIHRvIHRoZSBtbTgxeCBoYXJkd2FyZS4gSSB3aWxsIGNhcmVmdWxseSBpbnZlc3RpZ2F0ZSBpdC5cblxuV2l0aGluIGB5YXBzLmNgLCBhbmQgcG90ZW50aWFsbHkgcmVsYXRlZCBmaWxlcyBsaWtlIGB5YXBzX2h3LmNgIG9yIGBza2JxLmNgLCBJJ20gYW50aWNpcGF0aW5nIGZpbmRpbmcgdGhlIG1lYXQgb2YgdGhlIFJYIHBhdGguIFRoYXQncyBsaWtlbHkgd2hlcmUgdGhlIFVTQiBkYXRhIGZyb20gdGhlIGRldmljZSBpcyBtYXJzaGFsZWQsIGxpa2VseSBpbmNsdWRpbmcgaGFyZHdhcmUgc3BlY2lmaWMgZGVzY3JpcHRvcnMsIHRoZW4gZWl0aGVyIGRlY29kZWQsIGRlLWZyYW1lZCwgb3IgcGFzc2VkIHRvIGEgZ2VuZXJpYyBuZXR3b3JraW5nIHN0YWNrLiBQZXJoYXBzIHRoZXJlIGlzIHNvbWUgb2ZmbG9hZGluZyBoYXBwZW5pbmcgaGVyZS4gVGhlc2UgZmlsZXMgc2hvdWxkIGNvbnRhaW4gdGhlIGxvZ2ljIGZvcjpcblxuKiAgICoqVVNCIERhdGEgUmVjZXB0aW9uOioqIEhvdyB0aGUgZGF0YSBzdHJlYW1zIGZyb20gdGhlIFVTQiBkZXZpY2UgYXJlIHJlY2VpdmVkIGFuZCBpbnRlcnByZXRlZC5cbiogICAqKlBhY2tldCBDb25zdHJ1Y3Rpb246KiogSG93IHJlY2VpdmVkIGRhdGEgaXMgYXNzZW1ibGVkIGludG8gY29tcGxldGUsIHVzYWJsZSBwYWNrZXRzLlxuKiAgICoqUHJvdG9jb2wgRGVjb2Rpbmc6KiogQW55IGN1c3RvbSBvciBoYXJkd2FyZS1zcGVjaWZpYyBkZWNvZGluZyBvZiBkYXRhLlxuKiAgICoqQnVmZmVyIE1hbmFnZW1lbnQ6KiogVGhlIHVzZSBvZiBgc2tiYCBzdHJ1Y3R1cmVzLCBsaWtlbHkgbWFuYWdlZCBieSBgc2ticS5jYCwgdG8gc3RvcmUgYW5kIGhhbmRsZSB0aGUgcGFja2V0cy4gVGhpcyBjb3VsZCBiZSB3aGVyZSB0aGUgRE1BIGJ1ZmZlcnMgYXJlIGhhbmRsZWQuXG4qICAgKipQYWNrZXQgRmlsdGVyaW5nIFx1MDAyNiBEZW11eGluZzoqKiBXaGV0aGVyIHRoZXJlIGlzIGFueSBoYXJkd2FyZS1sZXZlbCBmaWx0ZXJpbmcgb3IgZGVtdWx0aXBsZXhpbmcgYmVmb3JlIHRoZSBwYWNrZXRzIHJlYWNoIHRoZSBuZXR3b3JrIHN0YWNrLlxuXG5JIGV4cGVjdCB0byBlbmNvdW50ZXIgYSBmYWlyIGFtb3VudCBvZiBkZXZpY2Utc3BlY2lmaWMgcmVnaXN0ZXIgbWFuaXB1bGF0aW9uIGFuZCBwZXJoYXBzIGRpcmVjdCBtZW1vcnkgYWNjZXNzIChETUEpIGludm9sdmVkIGluIHRoZSBgeWFwc19ody5jYCBmaWxlLiBHaXZlbiB0aGUgbGlrZWx5IHByb3ByaWV0YXJ5IG5hdHVyZSBvZiB0aGlzIGNoaXBzZXQsIHRoZSBjb2RlIGxpa2VseSBjb250YWlucyBvcHRpbWl6YXRpb25zIGFuZCBpZGlvc3luY3Jhc2llcyB0aGF0IG5lY2Vzc2l0YXRlIGNsb3NlIHNjcnV0aW55LiBJIHdpbGwgYmUgbG9va2luZyBmb3IgaGFyZHdhcmUgaW50ZXJydXB0cyBhbmQgYXNzb2NpYXRlZCBJU1JzIGhlcmUsIHdoaWNoIGFyZSBjcml0aWNhbCBmb3IgcmVjZWl2aW5nIHRob3NlIHBhY2tldHMuXG5cbkJhc2ljYWxseSwgSSBuZWVkIHRvIHNlZSBob3cgdGhlIGRhdGEgZmxvd3MgZnJvbSB0aGUgVVNCIGVuZHBvaW50IHRocm91Z2ggdGhlc2UgdmFyaW91cyBsYXllcnMgdG8gZ2V0IHRvIHRoZSBuZXR3b3JraW5nIHN0YWNrLiBJJ20gZXNwZWNpYWxseSBrZWVuIHRvIHNlZSBob3cgdGhlIGRyaXZlciBoYW5kbGVzIHBvdGVudGlhbCBidWZmZXIgb3ZlcmZsb3dzLCBlcnJvciBjb25kaXRpb25zLCBhbmQgdGhlIGludGVyYWN0aW9uIHdpdGggdGhlIFVTQiBkcml2ZXIgaXRzZWxmLiBJJ20gYWxzbyBhbnRpY2lwYXRpbmcgdGhhdCB0aGUgb3ZlcmFsbCBkZXNpZ24gaW5jbHVkZXMgZWZmaWNpZW50IHVzZSBvZiBETUEgZm9yIHRoZSBSWCBwYXRoLCBlc3BlY2lhbGx5IGFzIHRoaXMgaXMgYSB3aXJlbGVzcyBpbnRlcmZhY2UuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIzMzU4LCJPdXRwdXRUb2tlbnMiOjM3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NzcsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMDdUMDU6MDQ6NTguMzU3MTU2MTZaIiwiU2VxIjoxNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ3MzI0MTk5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm1tODF4X3VzYl9wcm9iZVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvdXNiLmM9NzE2PXN0YXRpYyB2b2lkIG1tODF4X3VyYl9jbGVhbnVwKHN0cnVjdCBtbTgxeCAqbW9ycylcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvdXNiLmMtNzQ0LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvdXNiLmM6NzQ1OnN0YXRpYyBpbnQgbW04MXhfdXNiX3Byb2JlKHN0cnVjdCB1c2JfaW50ZXJmYWNlICppbnRlcmZhY2UsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC91c2IuYy03NDYtXFx0XFx0XFx0ICAgY29uc3Qgc3RydWN0IHVzYl9kZXZpY2VfaWQgKmlkKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC91c2IuYz05MjU9c3RhdGljIHN0cnVjdCB1c2JfZHJpdmVyIG1tODF4X3VzYl9kcml2ZXIgPSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC91c2IuYy05MjYtXFx0Lm5hbWUgPSBcXFwibW04MXhfdXNiXFxcIixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L3VzYi5jOjkyNzpcXHQucHJvYmUgPSBtbTgxeF91c2JfcHJvYmUsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC91c2IuYy05MjgtXFx0LmRpc2Nvbm5lY3QgPSBtbTgxeF91c2JfZGlzY29ubmVjdCxcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDdUMDU6MDQ6NTguNDA0NDg1MDM5WiIsIlNlcSI6MTUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjIwNzE5NDk0NzYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSBzdW1tYXJ5LCBhcyBpZiBJIHdlcmUgdGhpbmtpbmcgdGhlc2UgdGhvdWdodHM6XG5cbioqRGl2aW5nIGludG8gdGhlIG1tODF4IFVTQiBEcml2ZXIqKlxuXG5BbHJpZ2h0LCB0aW1lIHRvIGRpZyBpbnRvIHRoaXMgYG1tODF4YCBkcml2ZXIuIEkgbmVlZCB0byBnZXQgYSBoYW5kbGUgb24gd2hhdCdzIGdvaW5nIG9uIHdpdGggdGhpcyBVU0IgaW50ZXJmYWNlLiBTcGVjaWZpY2FsbHksIEknbSBnb2luZyB0byBzdGFydCB3aXRoIHRoZSBgbW04MXhfdXNiX3Byb2JlYCBmdW5jdGlvbi4gVGhhdCdzIHRoZSBlbnRyeSBwb2ludCwgdGhlIGZpcnN0IHRoaW5nIHRoYXQgZ2V0cyBjYWxsZWQgd2hlbiB0aGUgVVNCIGRldmljZSBpcyBjb25uZWN0ZWQsIHJpZ2h0PyBJdCdzIGxpa2VseSBnb2luZyB0byBiZSB0aGUgY2VudHJhbCBwb2ludCBmb3IgaW5pdGlhbGl6aW5nIHRoZSBkZXZpY2UsIHNldHRpbmcgdXAgZW5kcG9pbnRzLCBhbmQgcHJvYmFibHkgcmVnaXN0ZXJpbmcgaXQgd2l0aCB0aGUgcmVzdCBvZiB0aGUgd2lyZWxlc3Mgc3Vic3lzdGVtLiBMZXQncyBzZWUgd2hhdCBzZWNyZXRzIGl0IGhvbGRzIGluIGBkcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L3VzYi5jYC4gSSBleHBlY3QgdG8gZmluZCB0aGUgY29yZSBkZXZpY2Utc3BlY2lmaWMgVVNCIGhhbmRsaW5nIHRoZXJlLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyNDM4MCwiT3V0cHV0VG9rZW5zIjo0NywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjM1LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA3VDA1OjA1OjAwLjQ3NjQzNzk0NVoiLCJTZXEiOjE2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMTQ0NTAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC91c2IuY1wiLFxuICBcIkZpcnN0TGluZVwiOiA3NDUsXG4gIFwiTGluZUNvdW50XCI6IDEwMFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgNzQ1OlxcdHN0YXRpYyBpbnQgbW04MXhfdXNiX3Byb2JlKHN0cnVjdCB1c2JfaW50ZXJmYWNlICppbnRlcmZhY2UsXFxuIDc0NjpcXHRcXHRcXHRcXHQgICBjb25zdCBzdHJ1Y3QgdXNiX2RldmljZV9pZCAqaWQpXFxuIDc0NzpcXHR7XFxuIDc0ODpcXHRcXHRpbnQgcmV0O1xcbiA3NDk6XFx0XFx0c3RydWN0IG1tODF4ICptb3JzO1xcbiA3NTA6XFx0XFx0c3RydWN0IG1tODF4X3VzYiAqbXVzYjtcXG4gNzUxOlxcdFxcbiA3NTI6XFx0XFx0bW9ycyA9IG1tODF4X2NvcmVfYWxsb2Moc2l6ZW9mKCptdXNiKSwgXFx1MDAyNmludGVyZmFjZS1cXHUwMDNlZGV2KTtcXG4gNzUzOlxcdFxcdGlmICghbW9ycylcXG4gNzU0OlxcdFxcdFxcdHJldHVybiAtRU5PTUVNO1xcbiA3NTU6XFx0XFxuIDc1NjpcXHRcXHRtb3JzLVxcdTAwM2VidXNfb3BzID0gXFx1MDAyNm1tODF4X3VzYl9vcHM7XFxuIDc1NzpcXHRcXHRtb3JzLVxcdTAwM2VidXNfdHlwZSA9IE1NODFYX0JVU19UWVBFX1VTQjtcXG4gNzU4OlxcdFxcbiA3NTk6XFx0XFx0bXVzYiA9IChzdHJ1Y3QgbW04MXhfdXNiICopbW9ycy1cXHUwMDNlZHJ2X3ByaXY7XFxuIDc2MDpcXHRcXHRtdXNiLVxcdTAwM2V1ZGV2ID0gdXNiX2dldF9kZXYoaW50ZXJmYWNlX3RvX3VzYmRldihpbnRlcmZhY2UpKTtcXG4gNzYxOlxcdFxcdG11c2ItXFx1MDAzZWludGVyZmFjZSA9IHVzYl9nZXRfaW50ZihpbnRlcmZhY2UpO1xcbiA3NjI6XFx0XFxuIDc2MzpcXHRcXHRtdXRleF9pbml0KFxcdTAwMjZtdXNiLVxcdTAwM2Vsb2NrKTtcXG4gNzY0OlxcdFxcdG11dGV4X2luaXQoXFx1MDAyNm11c2ItXFx1MDAzZWJ1c19sb2NrKTtcXG4gNzY1OlxcdFxcdGluaXRfd2FpdHF1ZXVlX2hlYWQoXFx1MDAyNm11c2ItXFx1MDAzZXJ3X2luX3dhaXQpO1xcbiA3NjY6XFx0XFx0dXNiX3NldF9pbnRmZGF0YShpbnRlcmZhY2UsIG1vcnMpO1xcbiA3Njc6XFx0XFxuIDc2ODpcXHRcXHRyZXQgPSBtbTgxeF91c2JfZGV0ZWN0X2VuZHBvaW50cyhtb3JzLCBpbnRlcmZhY2UpO1xcbiA3Njk6XFx0XFx0aWYgKHJldCBcXHUwMDNjIDApXFxuIDc3MDpcXHRcXHRcXHRnb3RvIGVycl9jb3JlX2ZyZWU7XFxuIDc3MTpcXHRcXG4gNzcyOlxcdFxcdHNldF9iaXQoTU04MVhfVVNCX0ZMQUdfQVRUQUNIRUQsIFxcdTAwMjZtdXNiLVxcdTAwM2VmbGFncyk7XFxuIDc3MzpcXHRcXG4gNzc0OlxcdFxcdHJldCA9IG1tODF4X2NvcmVfaW5pdChtb3JzKTtcXG4gNzc1OlxcdFxcdGlmIChyZXQpXFxuIDc3NjpcXHRcXHRcXHRnb3RvIGVycl91cmJfY2xlYW51cDtcXG4gNzc3OlxcdFxcbiA3Nzg6XFx0XFx0SU5JVF9XT1JLKFxcdTAwMjZtb3JzLVxcdTAwM2V1c2JfaXJxX3dvcmssIG1tODF4X3VzYl9pcnFfd29yayk7XFxuIDc3OTpcXHRcXG4gNzgwOlxcdFxcdHJldCA9IG1tODF4X3VzYl9pbnRfZW5hYmxlKG1vcnMpO1xcbiA3ODE6XFx0XFx0aWYgKHJldClcXG4gNzgyOlxcdFxcdFxcdGdvdG8gZXJyX2NvcmVfZGVpbml0O1xcbiA3ODM6XFx0XFxuIDc4NDpcXHRcXHRyZXQgPSBtbTgxeF9jb3JlX3JlZ2lzdGVyKG1vcnMpO1xcbiA3ODU6XFx0XFx0aWYgKHJldClcXG4gNzg2OlxcdFxcdFxcdGdvdG8gZXJyX3VzYl9pbnRfc3RvcDtcXG4gNzg3OlxcdFxcbiA3ODg6XFx0XFx0LyogVVNCIHJlcXVpcmVzIHJlbW90ZSB3YWtldXAgZnVuY3Rpb25hbGl0eSBmb3Igc3VzcGVuZCAqL1xcbiA3ODk6XFx0XFx0Y2xlYXJfYml0KE1NODFYX1VTQl9GTEFHX1NVU1BFTkRFRCwgXFx1MDAyNm11c2ItXFx1MDAzZWZsYWdzKTtcXG4gNzkwOlxcdFxcdG11c2ItXFx1MDAzZWludGVyZmFjZS1cXHUwMDNlbmVlZHNfcmVtb3RlX3dha2V1cCA9IDE7XFxuIDc5MTpcXHRcXHR1c2JfZW5hYmxlX2F1dG9zdXNwZW5kKG11c2ItXFx1MDAzZXVkZXYpO1xcbiA3OTI6XFx0XFx0cG1fcnVudGltZV9zZXRfYXV0b3N1c3BlbmRfZGVsYXkoXFx1MDAyNm11c2ItXFx1MDAzZXVkZXYtXFx1MDAzZWRldixcXG4gNzkzOlxcdFxcdFxcdFxcdFxcdFxcdCBQTV9SVU5USU1FX0FVVE9TVVNQRU5EX0RFTEFZX01TKTtcXG4gNzk0OlxcdFxcbiA3OTU6XFx0XFx0dXNiX2F1dG9wbV9nZXRfaW50ZXJmYWNlKGludGVyZmFjZSk7XFxuIDc5NjpcXHRcXHRyZXR1cm4gMDtcXG4gNzk3OlxcdFxcbiA3OTg6XFx0ZXJyX3VzYl9pbnRfc3RvcDpcXG4gNzk5OlxcdFxcdG1tODF4X3VzYl9pbnRfc3RvcChtb3JzKTtcXG4gODAwOlxcdGVycl9jb3JlX2RlaW5pdDpcXG4gODAxOlxcdFxcdG1tODF4X2NvcmVfZGVpbml0KG1vcnMpO1xcbiA4MDI6XFx0ZXJyX3VyYl9jbGVhbnVwOlxcbiA4MDM6XFx0XFx0bW04MXhfdXJiX2NsZWFudXAobW9ycyk7XFxuIDgwNDpcXHRlcnJfY29yZV9mcmVlOlxcbiA4MDU6XFx0XFx0bW04MXhfY29yZV9mcmVlKG1vcnMpO1xcbiA4MDY6XFx0XFx0dXNiX3B1dF9pbnRmKGludGVyZmFjZSk7XFxuIDgwNzpcXHRcXHR1c2JfcHV0X2RldihpbnRlcmZhY2VfdG9fdXNiZGV2KGludGVyZmFjZSkpO1xcbiA4MDg6XFx0XFx0cmV0dXJuIHJldDtcXG4gODA5OlxcdH1cXG4gODEwOlxcdFxcbiA4MTE6XFx0c3RhdGljIHZvaWQgbW04MXhfdXNiX2Rpc2Nvbm5lY3Qoc3RydWN0IHVzYl9pbnRlcmZhY2UgKmludGVyZmFjZSlcXG4gODEyOlxcdHtcXG4gODEzOlxcdFxcdHN0cnVjdCBtbTgxeCAqbW9ycyA9IHVzYl9nZXRfaW50ZmRhdGEoaW50ZXJmYWNlKTtcXG4gODE0OlxcdFxcdHN0cnVjdCBtbTgxeF91c2IgKm11c2IgPSAoc3RydWN0IG1tODF4X3VzYiAqKW1vcnMtXFx1MDAzZWRydl9wcml2O1xcbiA4MTU6XFx0XFx0aW50IG1pbm9yID0gaW50ZXJmYWNlLVxcdTAwM2VtaW5vcjtcXG4gODE2OlxcdFxcdHN0cnVjdCB1c2JfZGV2aWNlICp1ZGV2ID0gaW50ZXJmYWNlX3RvX3VzYmRldihpbnRlcmZhY2UpO1xcbiA4MTc6XFx0XFxuIDgxODpcXHRcXHRpZiAodWRldi1cXHUwMDNlc3RhdGUgPT0gVVNCX1NUQVRFX05PVEFUVEFDSEVEKSB7XFxuIDgxOTpcXHRcXHRcXHRjbGVhcl9iaXQoTU04MVhfVVNCX0ZMQUdfQVRUQUNIRUQsIFxcdTAwMjZtdXNiLVxcdTAwM2VmbGFncyk7XFxuIDgyMDpcXHRcXHRcXHRzZXRfYml0KE1NODFYX1NUQVRFX0NISVBfVU5SRVNQT05TSVZFLCBcXHUwMDI2bW9ycy1cXHUwMDNlc3RhdGVfZmxhZ3MpO1xcbiA4MjE6XFx0XFx0XFx0ZGV2X2RiZyhtb3JzLVxcdTAwM2VkZXYsIFxcXCJVU0Igc3VkZGVubHkgdW5wbHVnZ2VkXFxcIik7XFxuIDgyMjpcXHRcXHR9XFxuIDgyMzpcXHRcXG4gODI0OlxcdFxcdHVzYl9kaXNhYmxlX2F1dG9zdXNwZW5kKHVkZXYpO1xcbiA4MjU6XFx0XFxuIDgyNjpcXHRcXHRpZiAodGVzdF9iaXQoTU04MVhfVVNCX0ZMQUdfU1VTUEVOREVELCBcXHUwMDI2bXVzYi1cXHUwMDNlZmxhZ3MpKSB7XFxuIDgyNzpcXHRcXHRcXHRkZXZfZGJnKG1vcnMtXFx1MDAzZWRldiwgXFxcIlVTQiB3YXMgc3VzcGVuZGVkOiByZWxlYXNlIGxvY2tzXFxcIik7XFxuIDgyODpcXHRcXHRcXHRtbTgxeF91c2JfcmVsZWFzZV9idXMobW9ycyk7XFxuIDgyOTpcXHRcXHRcXHRtdXRleF91bmxvY2soXFx1MDAyNm11c2ItXFx1MDAzZWxvY2spO1xcbiA4MzA6XFx0XFx0fVxcbiA4MzE6XFx0XFxuIDgzMjpcXHRcXHRjbGVhcl9iaXQoTU04MVhfVVNCX0ZMQUdfU1VTUEVOREVELCBcXHUwMDI2bXVzYi1cXHUwMDNlZmxhZ3MpO1xcbiA4MzM6XFx0XFxuIDgzNDpcXHRcXHRtbTgxeF9jb3JlX3VucmVnaXN0ZXIobW9ycyk7XFxuIDgzNTpcXHRcXHRtbTgxeF91c2JfaW50X3N0b3AobW9ycyk7XFxuIDgzNjpcXHRcXHRtbTgxeF9jb3JlX2RlaW5pdChtb3JzKTtcXG4gODM3OlxcdFxcdG1tODF4X3VyYl9jbGVhbnVwKG1vcnMpO1xcbiA4Mzg6XFx0XFx0bW04MXhfY29yZV9mcmVlKG1vcnMpO1xcbiA4Mzk6XFx0XFxuIDg0MDpcXHRcXHR1c2JfYXV0b3BtX3B1dF9pbnRlcmZhY2UoaW50ZXJmYWNlKTtcXG4gODQxOlxcdFxcdHVzYl9zZXRfaW50ZmRhdGEoaW50ZXJmYWNlLCBOVUxMKTtcXG4gODQyOlxcdFxcdGRldl9pbmZvKFxcdTAwMjZpbnRlcmZhY2UtXFx1MDAzZWRldiwgXFxcIlVTQiBNb3JzZSAjJWQgbm93IGRpc2Nvbm5lY3RlZFxcXCIsIG1pbm9yKTtcXG4gODQzOlxcdFxcdHVzYl9wdXRfaW50ZihpbnRlcmZhY2UpO1xcbiA4NDQ6XFx0XFx0dXNiX3B1dF9kZXYodWRldik7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA3VDA1OjA1OjAwLjQ3NjU1NDgzNVoiLCJTZXEiOjE3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjo2Mjc1NTYyMjY2MSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBJbml0aWFsIEFzc2Vzc21lbnQgb2YgdGhlIE1NODF4IFVTQiBEcml2ZXIqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCBgbW04MXhfdXNiX3Byb2JlYC4gTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMsIHRoaXMgaXMgdGhlIGVudHJ5IHBvaW50IGZvciB0aGUgVVNCIGludGVyZmFjZS4gSXQncyBnb2luZyB0byBwcm9iZSB0aGUgZGV2aWNlLCBwcmVzdW1hYmx5IGlkZW50aWZ5IGl0LCBhbmQgdGhlbiBsaWtlbHkgcmVnaXN0ZXIgdGhlIG1hYzgwMjExIGRldmljZSB1c2luZyBgbW04MXhfY29yZV9yZWdpc3RlcmAuIEFmdGVyIHRoYXQsIEkgd291bGQgZXhwZWN0IGl0IHRvIGhhbmRsZSBjb21tdW5pY2F0aW9uLCBsaWtlbHkgdGhyb3VnaCBVU0IgZW5kcG9pbnRzLiBTdGFuZGFyZCBzdHVmZi5cblxuTm93LCB0aGUgaW50ZXJlc3RpbmcgYml0LiBXZSBoYXZlIFVTQiBlbXVsYXRpb24gdmlhIHRoZSBzeXprYWxsZXIgVVNCIFJhdyBHYWRnZXQsIGFuZCBpdCBzZWVtcyBsaWtlIGl0J3MgZGVzaWduZWQgdG8gZW11bGF0ZSBhIGRldmljZSB3aXRoIHRoZSB2ZW5kb3IgYW5kIHByb2R1Y3QgSURzIDB4MzI1YiBhbmQgMHg4MTAwLCB3aGljaCBjb3JyZXNwb25kIHRvIGBNTTgxWF9WRU5ET1JfSURgIGFuZCBgTU04MVhfTU04MTBYX1BST0RVQ1RfSURgLiBTbywgdGhlIG1pbGxpb24tZG9sbGFyIHF1ZXN0aW9uOiAqY2FuKiB3ZSBpbml0aWFsaXplIHRoaXMgZHJpdmVyIHVzaW5nIHRoYXQgZW11bGF0aW9uPyBPciwgZG9lcyBpdCBoYXZlIHNvbWUgc3BlY2lmaWMgaGFyZHdhcmUgZGVwZW5kZW5jaWVzIHRoYXQgd2UgbmVlZCB0byBhY2NvdW50IGZvcj8gSSBuZWVkIHRvIGZpZ3VyZSB0aGF0IG91dC5cblxuVG8gZG8gdGhhdCwgSSdsbCBnbyBzdHJhaWdodCB0byBgbW04MXhfY29yZV9pbml0YCBpbiBgZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb3JlLmNgLiBUaGF0J3Mgd2hlcmUgdGhlIGNvcmUgaW5pdGlhbGl6YXRpb24gbG9naWMgc2hvdWxkIHJlc2lkZSwgYW5kIHRoYXQgc2hvdWxkIGJlIHRoZSBwbGFjZSB0byBzdGFydCBkcmlsbGluZyBkb3duIGludG8gYW55IHBvdGVudGlhbCBoYXJkd2FyZSBkZXBlbmRlbmNpZXMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI2MzM0LCJPdXRwdXRUb2tlbnMiOjQ1LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTY2LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMDdUMDU6MDY6MDMuMjMyMTgwMzk2WiIsIlNlcSI6MTgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjg1MDcwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29yZS5jXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDYwLFxuICBcIkxpbmVDb3VudFwiOiA1MFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgIDYwOlxcdFxcbiAgNjE6XFx0c3RydWN0IG1tODF4ICptbTgxeF9jb3JlX2FsbG9jKHNpemVfdCBwcml2X3NpemUsIHN0cnVjdCBkZXZpY2UgKmRldilcXG4gIDYyOlxcdHtcXG4gIDYzOlxcdFxcdHJldHVybiBtbTgxeF9tYWNfYWxsb2MocHJpdl9zaXplLCBkZXYpO1xcbiAgNjQ6XFx0fVxcbiAgNjU6XFx0RVhQT1JUX1NZTUJPTF9HUEwobW04MXhfY29yZV9hbGxvYyk7XFxuICA2NjpcXHRcXG4gIDY3OlxcdGludCBtbTgxeF9jb3JlX2luaXQoc3RydWN0IG1tODF4ICptb3JzKVxcbiAgNjg6XFx0e1xcbiAgNjk6XFx0XFx0aW50IHJldDtcXG4gIDcwOlxcdFxcbiAgNzE6XFx0XFx0c2V0X2JpdChNTTgxWF9TVEFURV9DSElQX1VOUkVTUE9OU0lWRSwgXFx1MDAyNm1vcnMtXFx1MDAzZXN0YXRlX2ZsYWdzKTtcXG4gIDcyOlxcdFxcdHNldF9iaXQoTU04MVhfU1RBVEVfUkVMT0FEX0ZXX0FGVEVSX1NUQVJULCBcXHUwMDI2bW9ycy1cXHUwMDNlc3RhdGVfZmxhZ3MpO1xcbiAgNzM6XFx0XFxuICA3NDpcXHRcXHRtbTgxeF9jb3JlX2luaXRfbWFjX2FkZHIobW9ycyk7XFxuICA3NTpcXHRcXG4gIDc2OlxcdFxcdHJldCA9IG1tODF4X2NvcmVfYXR0YWNoX3JlZ3MobW9ycyk7XFxuICA3NzpcXHRcXHRpZiAocmV0KVxcbiAgNzg6XFx0XFx0XFx0cmV0dXJuIHJldDtcXG4gIDc5OlxcdFxcbiAgODA6XFx0XFx0bW9ycy1cXHUwMDNlY2hpcF93cSA9IGNyZWF0ZV9zaW5nbGV0aHJlYWRfd29ya3F1ZXVlKFxcXCJjaGlwX3dxXFxcIik7XFxuICA4MTpcXHRcXHRpZiAoIW1vcnMtXFx1MDAzZWNoaXBfd3EpXFxuICA4MjpcXHRcXHRcXHRyZXR1cm4gLUVOT01FTTtcXG4gIDgzOlxcdFxcbiAgODQ6XFx0XFx0bW9ycy1cXHUwMDNlbmV0X3dxID0gY3JlYXRlX3NpbmdsZXRocmVhZF93b3JrcXVldWUoXFxcIm5ldF93cVxcXCIpO1xcbiAgODU6XFx0XFx0aWYgKCFtb3JzLVxcdTAwM2VuZXRfd3EpIHtcXG4gIDg2OlxcdFxcdFxcdHJldCA9IC1FTk9NRU07XFxuICA4NzpcXHRcXHRcXHRnb3RvIGVycl9jaGlwX3dxO1xcbiAgODg6XFx0XFx0fVxcbiAgODk6XFx0XFxuICA5MDpcXHRcXHRyZXQgPSBtbTgxeF9oaWZfaW5pdChtb3JzKTtcXG4gIDkxOlxcdFxcdGlmIChyZXQpXFxuICA5MjpcXHRcXHRcXHRnb3RvIGVycl93cXM7XFxuICA5MzpcXHRcXG4gIDk0OlxcdFxcdHJldHVybiAwO1xcbiAgOTU6XFx0XFxuICA5NjpcXHRlcnJfd3FzOlxcbiAgOTc6XFx0XFx0Zmx1c2hfd29ya3F1ZXVlKG1vcnMtXFx1MDAzZW5ldF93cSk7XFxuICA5ODpcXHRcXHRkZXN0cm95X3dvcmtxdWV1ZShtb3JzLVxcdTAwM2VuZXRfd3EpO1xcbiAgOTk6XFx0XFxuIDEwMDpcXHRlcnJfY2hpcF93cTpcXG4gMTAxOlxcdFxcdGZsdXNoX3dvcmtxdWV1ZShtb3JzLVxcdTAwM2VjaGlwX3dxKTtcXG4gMTAyOlxcdFxcdGRlc3Ryb3lfd29ya3F1ZXVlKG1vcnMtXFx1MDAzZWNoaXBfd3EpO1xcbiAxMDM6XFx0XFxuIDEwNDpcXHRcXHRyZXR1cm4gcmV0O1xcbiAxMDU6XFx0fVxcbiAxMDY6XFx0RVhQT1JUX1NZTUJPTF9HUEwobW04MXhfY29yZV9pbml0KTtcXG4gMTA3OlxcdFxcbiAxMDg6XFx0aW50IG1tODF4X2NvcmVfcmVnaXN0ZXIoc3RydWN0IG1tODF4ICptb3JzKVxcbiAxMDk6XFx0e1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wN1QwNTowNjowMy4yMzIyNjc4NTZaIiwiU2VxIjoxOSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6NjE4NjQ5NjMzOCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIFBvdGVudGlhbCBmb3IgRnV6emluZyB0aGUgTU04MVggVVNCIFdpcmVsZXNzIERyaXZlcioqXG5cbk9rYXksIGxldCdzIGJyZWFrIHRoaXMgZG93bi4gRmlyc3QsIEkgbmVlZCB0byBsb29rIGF0IGNhc2VzIDIgYW5kIDMsIGZvY3VzaW5nIG9uIHdoZW4gd2UgKnNob3VsZCogcmV0dXJuIGBXb3J0aEZ1enppbmc9ZmFsc2VgIGFuZCBgV29ydGhGdXp6aW5nPXRydWVgLCByZXNwZWN0aXZlbHkuIE15IGdvYWwgaXMgdG8gZGV0ZXJtaW5lIGlmIGZ1enppbmcgdGhpcyBkcml2ZXIgaXMgZXZlbiBmZWFzaWJsZS4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaWYgdGhlIGRyaXZlciBpcyByZWFjaGFibGUuXG5cblJpZ2h0LCBzbyB3ZSdyZSB0YWxraW5nIGFib3V0IGRyaXZlcnMgdGhhdCBhcmUgYWNjZXNzaWJsZSB0aHJvdWdoIHZpcnR1YWwgYnVzZXMuIFRoaW5raW5nIHNwZWNpZmljYWxseSBhYm91dCB0aGlzIE1NODFYIGRyaXZlciwgSSBuZWVkIHRvIGNvbnNpZGVyIGFsbCB0aGUgdmFyaW91cyBidXMgdHlwZXMgdGhhdCBzeXprYWxsZXIgc3VwcG9ydHMgLSB2aXJ0aW8sIFVTQiBnYWRnZXQsIGxvb3BiYWNrLCBuZXRsaW5rLCBiaW5kZXIsIHNvY2tldHMsIGV0Yy4gVGhlIGdvb2QgbmV3cyBpcyB0aGF0IFVTQiB3aXJlbGVzcyBkcml2ZXJzICphcmUqIHJlYWNoYWJsZSB0aHJvdWdoIHN5emthbGxlcidzIFVTQiBmdXp6aW5nIGNhcGFiaWxpdGllcywgZXNwZWNpYWxseSB3aXRoIHRoZSBSYXcgR2FkZ2V0IG9yIGR1bW15X2hjZCBzZXR1cHMuIFRoYXQncyBhIGdvb2Qgc3RhcnRpbmcgcG9pbnQuXG5cbk5vdywgdGhlIGltcG9ydGFudCBwYXJ0OiBjb25maWd1cmF0aW9uIGRlcGVuZGVuY2llcy4gSSBuZWVkIHRvIGRldGVybWluZSB3aGF0IGtlcm5lbCBjb25maWd1cmF0aW9ucyBhcmUgYWJzb2x1dGVseSByZXF1aXJlZCBmb3IgdGhpcyBkcml2ZXIgdG8gYmUgYnVpbHQgYW5kLCBtb3JlIGltcG9ydGFudGx5LCAqYWN0aXZlKi4gSSdtIGRpdmluZyBpbnRvIHRoZSBLY29uZmlnIGZpbGVzLCBzdGFydGluZyB3aXRoIGBkcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L0tjb25maWdgLiBUaGlzIGlzIHdoZXJlIHRoZSBjb3JlIGxvZ2ljIGxpZXMuIEJpbmdvLCBgTU04MVhfVVNCYCBkZXBlbmRzIG9uIGBNQUM4MDIxMSBcdTAwMjZcdTAwMjYgVVNCYCBhbmQgc2VsZWN0cyBgTU04MVhgLiBUaGlzIG1lYW5zIHdlIG5lZWQgdGhlIE1BQzgwMjExIHdpcmVsZXNzIHN0YWNrIGFuZCBVU0Igc3VwcG9ydCBlbmFibGVkIGluIHRoZSBrZXJuZWwgY29uZmlnIGZvciB0aGlzIE1NODFYIFVTQiBkcml2ZXIgdG8gZXZlbiBiZSBjb21waWxlZC4gRXhjZWxsZW50LiBJIGFsc28gc2VlIGBXTEFOX1ZFTkRPUl9NT1JTRU1JQ1JPYCBpbiBgZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9LY29uZmlnYCwgc28gSSBuZWVkIHRvIGNoZWNrIGl0LCB0b28uIFRoaXMgaXMgdGhlIGNydWNpYWwgaW5mb3JtYXRpb24gZm9yIG1ha2luZyBpbmZvcm1lZCBkZWNpc2lvbnMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI3NTUxLCJPdXRwdXRUb2tlbnMiOjM4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTg2LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMDdUMDU6MDY6MDkuNDE4NzY2MDY0WiIsIlNlcSI6MjAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU3MTAwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vS2NvbmZpZ1wiLFxuICBcIkZpcnN0TGluZVwiOiAxLFxuICBcIkxpbmVDb3VudFwiOiAyMFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgICAxOlxcdCMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxcbiAgIDI6XFx0Y29uZmlnIFdMQU5fVkVORE9SX01PUlNFTUlDUk9cXG4gICAzOlxcdFxcdGJvb2wgXFxcIk1vcnNlIE1pY3JvIGRldmljZXNcXFwiXFxuICAgNDpcXHRcXHRkZWZhdWx0IHlcXG4gICA1OlxcdFxcdGhlbHBcXG4gICA2OlxcdFxcdCAgSWYgeW91IGhhdmUgYSB3aXJlbGVzcyBjYXJkIGJlbG9uZ2luZyB0byB0aGlzIGNsYXNzLCBzYXkgWS5cXG4gICA3OlxcdFxcbiAgIDg6XFx0XFx0ICBOb3RlIHRoYXQgdGhlIGFuc3dlciB0byB0aGlzIHF1ZXN0aW9uIGRvZXNuJ3QgZGlyZWN0bHkgYWZmZWN0IHRoZVxcbiAgIDk6XFx0XFx0ICBrZXJuZWw6IHNheWluZyBOIHdpbGwganVzdCBjYXVzZSB0aGUgY29uZmlndXJhdG9yIHRvIHNraXAgYWxsIHRoZVxcbiAgMTA6XFx0XFx0ICBxdWVzdGlvbnMgYWJvdXQgdGhlc2UgY2FyZHMuIElmIHlvdSBzYXkgWSwgeW91IHdpbGwgYmUgYXNrZWQgZm9yXFxuICAxMTpcXHRcXHQgIHlvdXIgc3BlY2lmaWMgY2FyZCBpbiB0aGUgZm9sbG93aW5nIHF1ZXN0aW9ucy5cXG4gIDEyOlxcdFxcbiAgMTM6XFx0aWYgV0xBTl9WRU5ET1JfTU9SU0VNSUNST1xcbiAgMTQ6XFx0c291cmNlIFxcXCJkcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L0tjb25maWdcXFwiXFxuICAxNTpcXHRlbmRpZiAjIFdMQU5fVkVORE9SX01PUlNFTUlDUk9cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDdUMDU6MDY6MDkuNDE4ODI0MzU0WiIsIlNlcSI6MjEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjE2MzQ1MjIwOTMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aGF0IHRob3VnaHQgcHJvY2VzcywgYXMgaWYgaXQgd2VyZSBteSBvd246XG5cbioqSW52ZXN0aWdhdGluZyBhIFBvdGVudGlhbCBEZXBlbmRlbmN5KipcblxuQWxyaWdodCwgSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGRlcGVuZGVuY2llcyByZWxhdGVkIHRvIGBXTEFOX1ZFTkRPUl9NT1JTRU1JQ1JPYC4gVG8gZ2V0IGEgY2xlYXIgcGljdHVyZSBvZiBpdHMgY29uZmlndXJhdGlvbiBvcHRpb25zLCBJIHNob3VsZCBwcm9iYWJseSBjaGVjayB0aGUgYGRyaXZlcnMvbmV0L3dpcmVsZXNzL0tjb25maWdgIGZpbGUuIFRoYXQncyB1c3VhbGx5IHRoZSBwbGFjZSB3aGVyZSB0aGVzZSBzb3J0cyBvZiB0aGluZ3MgYXJlIGRlZmluZWQgYW5kIHdoZXJlIEknbGwgZmluZCBpdHMgYXNzb2NpYXRlZCBkZXBlbmRlbmNpZXMsIGlmIGFueS4gSSB3YW50IHRvIHNlZSBpZiB0aGlzIHBhcnRpY3VsYXIgdmVuZG9yIG9wdGlvbiBoYXMgYW55IHNwZWNpZmljIHJlcXVpcmVtZW50cyBvbiBvdGhlciBrZXJuZWwgbW9kdWxlcyBvciBmZWF0dXJlcy4gVW5kZXJzdGFuZGluZyB0aGUgZGVwZW5kZW5jaWVzIGlzIGNyaXRpY2FsIGZvciBwcm9wZXJseSBjb25maWd1cmluZyB0aGlzIGZvciBhIGJ1aWxkLCBvciB0cm91Ymxlc2hvb3RpbmcgYW55IHBvdGVudGlhbCBjb25mbGljdHMgZG93biB0aGUgbGluZS4gTGV0J3Mgc2VlIHdoYXQgYEtjb25maWdgIHJldmVhbHMuLi5cblxuXG4iLCJJbnB1dFRva2VucyI6MjgzOTQsIk91dHB1dFRva2VucyI6MzQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyOSwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA3VDA1OjA2OjExLjA1MzM1MTYyN1oiLCJTZXEiOjIyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTYxOTcwMTI3LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIldMQU5fVkVORE9SX01PUlNFTUlDUk9cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3NcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvTWFrZWZpbGU9MTQ9b2JqLSQoQ09ORklHX1dMQU5fVkVORE9SX01JQ1JPQ0hJUCkgKz0gbWljcm9jaGlwL1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL01ha2VmaWxlOjE1Om9iai0kKENPTkZJR19XTEFOX1ZFTkRPUl9NT1JTRU1JQ1JPKSArPSBtb3JzZW1pY3JvL1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL01ha2VmaWxlLTE2LW9iai0kKENPTkZJR19XTEFOX1ZFTkRPUl9OWFApICs9IG54cC9cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vS2NvbmZpZy0xLSMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vS2NvbmZpZzoyOmNvbmZpZyBXTEFOX1ZFTkRPUl9NT1JTRU1JQ1JPXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9LY29uZmlnLTMtXFx0Ym9vbCBcXFwiTW9yc2UgTWljcm8gZGV2aWNlc1xcXCJcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vS2NvbmZpZy0xMi1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL0tjb25maWc6MTM6aWYgV0xBTl9WRU5ET1JfTU9SU0VNSUNST1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vS2NvbmZpZy0xNC1zb3VyY2UgXFxcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvS2NvbmZpZ1xcXCJcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL0tjb25maWc6MTU6ZW5kaWYgIyBXTEFOX1ZFTkRPUl9NT1JTRU1JQ1JPXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA3VDA1OjA2OjExLjIxNTMzMzkxNVoiLCJTZXEiOjIzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjoyMDYyMzUzMzU1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBsZXQncyBkaXZlIGludG8gdGhpcy4gSGVyZSdzIGhvdyBJJ2QgYXBwcm9hY2ggdGhpcyB0YXNrLCBhcyBpZiB0aGVzZSB3ZXJlIG15IGludGVybmFsIHRob3VnaHRzOlxuXG4qKkludmVzdGlnYXRpbmcgV2lyZWxlc3MgTmV0d29ya2luZyBDb25maWd1cmF0aW9uKipcblxuQWxyaWdodCwgSSBuZWVkIHRvIGdldCBhIGhhbmRsZSBvbiB0aGUgb3ZlcmFsbCB3aXJlbGVzcyBuZXR3b3JraW5nIGNvbmZpZ3VyYXRpb24gd2l0aGluIHRoaXMgc3lzdGVtLiBNeSBpbW1lZGlhdGUgdGhvdWdodCBpcyB0byBzdGFydCB3aXRoIHRoZSBLY29uZmlnIGZpbGUgZm9yIHdpcmVsZXNzIGRyaXZlcnMuIFNwZWNpZmljYWxseSwgSSdsbCBuYXZpZ2F0ZSB0byBgZHJpdmVycy9uZXQvd2lyZWxlc3MvS2NvbmZpZ2AuIFRoYXQncyB3aGVyZSBJIHdvdWxkIGV4cGVjdCB0byBmaW5kIHRoZSBjb3JlIGRlZmluaXRpb25zIGFuZCBkZXBlbmRlbmNpZXMgZm9yIHdpcmVsZXNzIGZ1bmN0aW9uYWxpdHkuIEknbSBlc3BlY2lhbGx5IGludGVyZXN0ZWQgaW4gaWRlbnRpZnlpbmcgdGhlICpwYXJlbnQqIGNvbmZpZ3VyYXRpb25zLiBUaGlzIGlzIGNyaXRpY2FsIGZvciB1bmRlcnN0YW5kaW5nIHRoZSBsYXJnZXIgcGljdHVyZTogQXJlIHRoZXJlIHBhcmVudCBjb25maWdzIGxpa2UgYFdMQU5gLCBgTkVUREVWSUNFU2AsIG9yIHNvbWV0aGluZyBzaW1pbGFyIHRoYXQgY29uZGl0aW9uYWxseSBlbmFibGUgb3IgZGlzYWJsZSBicm9hZGVyIG5ldHdvcmtpbmcgZmVhdHVyZXMgYW5kLCBpbiB0dXJuLCBhZmZlY3QgdGhlIHdpcmVsZXNzIGNvbXBvbmVudHM/IFRyYWNpbmcgdGhvc2UgcGFyZW50IGRlcGVuZGVuY2llcyBpcyBvZnRlbiB0aGUgbW9zdCBkaXJlY3QgcGF0aCB0byBmaWd1cmluZyBvdXQgaG93IHdpcmVsZXNzIGlzIGludGVncmF0ZWQgaW50byB0aGUgc3lzdGVtIGFzIGEgd2hvbGUgYW5kIHdoYXQgdGhlIGltcGxpY2F0aW9ucyBhcmUgb2YgYW55IGNoYW5nZXMgSSdtIGNvbnNpZGVyaW5nLiBUaGlzIHdpbGwgZ2l2ZSBtZSBhIHByb3BlciBzdGFydGluZyBwb2ludCBmb3IgYW55IGRlZXBlciBhbmFseXNpcy5cblxuXG4iLCJJbnB1dFRva2VucyI6Mjg5MDQsIk91dHB1dFRva2VucyI6MjgsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozNCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0wN1QwNTowNjoxMy4yNzc2OTU3M1oiLCJTZXEiOjI0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTUwMTk0NDc3LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm1vcnNlbWljcm9cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3NcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvS2NvbmZpZz0yOT1zb3VyY2UgXFxcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21pY3JvY2hpcC9LY29uZmlnXFxcIlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL0tjb25maWc6MzA6c291cmNlIFxcXCJkcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL0tjb25maWdcXFwiXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvS2NvbmZpZy0zMS1zb3VyY2UgXFxcImRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9LY29uZmlnXFxcIlxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvTWFrZWZpbGU9MTQ9b2JqLSQoQ09ORklHX1dMQU5fVkVORE9SX01JQ1JPQ0hJUCkgKz0gbWljcm9jaGlwL1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL01ha2VmaWxlOjE1Om9iai0kKENPTkZJR19XTEFOX1ZFTkRPUl9NT1JTRU1JQ1JPKSArPSBtb3JzZW1pY3JvL1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL01ha2VmaWxlLTE2LW9iai0kKENPTkZJR19XTEFOX1ZFTkRPUl9OWFApICs9IG54cC9cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vS2NvbmZpZz0xMz1pZiBXTEFOX1ZFTkRPUl9NT1JTRU1JQ1JPXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9LY29uZmlnOjE0OnNvdXJjZSBcXFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9LY29uZmlnXFxcIlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vS2NvbmZpZy0xNS1lbmRpZiAjIFdMQU5fVkVORE9SX01PUlNFTUlDUk9cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvZncuaC0xNS0jZGVmaW5lIEJDRl9EQVRBQkFTRV9TSVpFICgxMDI0KVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvZncuaDoxNjojZGVmaW5lIE1NODFYX0ZXX0RJUiBcXFwibW9yc2VtaWNyby9tbTgxeFxcXCJcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2Z3LmgtMTctI2RlZmluZSBNTTgxWF9GV19FWFQgXFxcIi5iaW5cXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA3VDA1OjA2OjEzLjQyNzg5NTUwOFoiLCJTZXEiOjI1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjo1MDA2Nzk4OTA4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEFuYWx5c2lzIG9mIHRoZSBgbW04MXhfY21kX3Jlc3BfcHJvY2Vzc2AgUGF0Y2gqKlxuXG5Pa2F5LCBsZXQncyBicmVhayB0aGlzIGRvd24uIEZpcnN0LCBJIG5lZWQgdG8gY29uZmlybSB0aGUgcmVsZXZhbnQgS2NvbmZpZyBvcHRpb25zLiBJIG5lZWQgdG8gbWFrZSBzdXJlIGBXTEFOYCwgYE1BQzgwMjExYCwgYFVTQl9TVVBQT1JUYCwgYW5kIGBVU0JgIGFyZSBlbmFibGVkLCBhcyB3ZWxsIGFzIGBXTEFOX1ZFTkRPUl9NT1JTRU1JQ1JPYC4gVGhlIHByZXNlbmNlIG9mIGBNTTgxWF9VU0JgIG1hbmRhdGVzIGBNTTgxWGAgYW5kIHBvdGVudGlhbGx5IGBNTTgxWF9TRElPYCBkZXBlbmRpbmcgb24gU0RJTyBlbmFibGVtZW50LlxuXG5Ob3csIHRoZSBjb3JlIG9mIHRoZSBtYXR0ZXI6IHdoYXQgZnVuY3Rpb24gaXMgYWN0dWFsbHkgYmVpbmcgbW9kaWZpZWQ/ICBBaCwgeWVzLCBgbW04MXhfY21kX3Jlc3BfcHJvY2Vzc2AuIFRoaXMgbG9va3MgbGlrZSBhIHNvbGlkIGNhbmRpZGF0ZSBmb3IgYSBgRm9jdXNTeW1ib2xgIHNpbmNlIGl0J3MgdGhlIHNwZWNpZmljLCBub24tdWJpcXVpdG91cyBmdW5jdGlvbiBiZWluZyB0YXJnZXRlZC4gIExldCdzIG1ha2Ugc3VyZSBub3RoaW5nIGVsc2UgaXMgdG91Y2hlZCBpbiB0aGlzIHBhdGNoLiBSaWdodCwganVzdCBgbW04MXhfY21kX3Jlc3BfcHJvY2Vzc2AsIHRoYXQncyBpdC5cblxuTGV0J3MgcXVpY2tseSBkb3VibGUtY2hlY2sgdGhlIGRpZmYgdG8gY29uZmlybSB0aGlzLiBIZXJlIHdlIGhhdmUgaXQ6IGEgc2luZ2xlIG1vZGlmaWNhdGlvbiB3aXRoaW4gYGRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29tbWFuZC5jYC4gIFRoZSBjaGFuZ2UgaW52b2x2ZXMgYW4gYWRkaXRpb25hbCBgbWluX3RgIGNhbGwgdG8gZW5zdXJlIHRoZSBsZW5ndGggY29waWVkIGRvZXNuJ3QgZXhjZWVkIGBza2ItXHUwMDNlbGVuYC4gRXhjZWxsZW50LlxuXG5Ob3csIGEgcXVpY2sgY2hlY2sgb2YgdGhlIEdpdCBsb2cgb3IgYSBzaW1wbGUgZ3JlcHBlciBjb25maXJtcyB0aGF0IHRoaXMgaXMgYSBzaW5nbGUtY29tbWl0IGNoYW5nZS4gTm8gb3RoZXIgZmlsZXMgYXJlIGFmZmVjdGVkLlxuXG5Pa2F5LCBsZXQncyBzdW1tYXJpemU6XG5cbiogICAqKlRhcmdldCBBcmNoaXRlY3R1cmU6KiogYW1kNjQuXG4qICAgKipXb3J0aEZ1enppbmc6KiogWWVzLCBhcyB0aGlzIGlzIHJlYWNoYWJsZSB2aWEgVVNCIGVtdWxhdGlvbiBvciBSYXcgR2FkZ2V0LlxuKiAgICoqRW5hYmxlQ29uZmlnczoqKiBgTU04MVhgLCBgTU04MVhfVVNCYCwgYFdMQU5fVkVORE9SX01PUlNFTUlDUk9gLCBgTUFDODAyMTFgLCBhbmQgYFVTQmAuXG4qICAgKipGb2N1c1N5bWJvbHM6KiogYG1tODF4X2NtZF9yZXNwX3Byb2Nlc3NgLiAgVGhpcyBpcyBpZGVhbCBhcyBpdCBpcyB0aGUgbm9uLXViaXF1aXRvdXMgZnVuY3Rpb24gd2UgYXJlIG1vZGlmeWluZy5cbiogICAqKlJlYXNvbmluZzoqKiBDb25jaXNlIGFuZCBjbGVhciwgYXMgcmVxdWlyZWQuXG5cblRpbWUgdG8gaW52b2tlIGBzZXQtcmVzdWx0c2AuIEknbSBjb25maWRlbnQgaW4gdGhpcyBhbmFseXNpcy5cblxuXG4iLCJJbnB1dFRva2VucyI6Mjk1NzMsIk91dHB1dFRva2VucyI6MTYxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NjcxLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA3VDA1OjA2OjE4LjQzNDY5NjM5NloiLCJTZXEiOjI2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE1NzU0MTgxNywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiTU04MVhcIixcbiAgICBcIk1NODFYX1VTQlwiLFxuICAgIFwiV0xBTl9WRU5ET1JfTU9SU0VNSUNST1wiLFxuICAgIFwiTUFDODAyMTFcIixcbiAgICBcIlVTQlwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcIm1tODF4X2NtZF9yZXNwX3Byb2Nlc3NcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBhZGRzIGEgYm91bmRzIGNoZWNrIGFnYWluc3Qgc2tiLVxcdTAwM2VsZW4gaW4gbW04MXhfY21kX3Jlc3BfcHJvY2VzcygpIHRvIHByZXZlbnQgYW4gb3V0LW9mLWJvdW5kcyByZWFkIGR1cmluZyBtZW1jcHkgd2hlbiBwcm9jZXNzaW5nIGNvbW1hbmQgcmVzcG9uc2VzIGluIHRoZSBNb3JzZSBNaWNybyBNTTgxeCB3aXJlbGVzcyBkcml2ZXIuIFRoaXMgZHJpdmVyIHN1cHBvcnRzIFVTQiBkZXZpY2VzIGFuZCBpcyByZWFjaGFibGUgaW4gZnV6emluZyBlbnZpcm9ubWVudHMgd2l0aCBVU0IgZW11bGF0aW9uIChlLmcuIFJhdyBHYWRnZXQgLyBkdW1teV9oY2QpLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIk1NODFYXCIsXG4gICAgXCJNTTgxWF9VU0JcIixcbiAgICBcIldMQU5fVkVORE9SX01PUlNFTUlDUk9cIixcbiAgICBcIk1BQzgwMjExXCIsXG4gICAgXCJVU0JcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJtbTgxeF9jbWRfcmVzcF9wcm9jZXNzXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggYWRkcyBhIGJvdW5kcyBjaGVjayBhZ2FpbnN0IHNrYi1cXHUwMDNlbGVuIGluIG1tODF4X2NtZF9yZXNwX3Byb2Nlc3MoKSB0byBwcmV2ZW50IGFuIG91dC1vZi1ib3VuZHMgcmVhZCBkdXJpbmcgbWVtY3B5IHdoZW4gcHJvY2Vzc2luZyBjb21tYW5kIHJlc3BvbnNlcyBpbiB0aGUgTW9yc2UgTWljcm8gTU04MXggd2lyZWxlc3MgZHJpdmVyLiBUaGlzIGRyaXZlciBzdXBwb3J0cyBVU0IgZGV2aWNlcyBhbmQgaXMgcmVhY2hhYmxlIGluIGZ1enppbmcgZW52aXJvbm1lbnRzIHdpdGggVVNCIGVtdWxhdGlvbiAoZS5nLiBSYXcgR2FkZ2V0IC8gZHVtbXlfaGNkKS5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDdUMDU6MDY6MTguNTkyMjQ5NDEzWiIsIlNlcSI6MjcsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoiSWYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyODk3MjE1MDgyNCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA3VDA1OjA2OjE4LjU5MzAxMDgwM1oiLCJTZXEiOjI4LCJOZXN0aW5nIjoyLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoia21zYW4tZXZhbHVhdG9yIiwiTW9kZWwiOiJjb3JlIiwiRHVyYXRpb24iOjI4OTcxMzgyNzM0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJLTVNBTlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBmaXhlcyBhbiBvdXQtb2YtYm91bmRzIG1lbW9yeSByZWFkIGluIG1tODF4X2NtZF9yZXNwX3Byb2Nlc3MoKSBieSBjYXBwaW5nIHRoZSByZXNwb25zZSBjb3B5IGxlbmd0aCB0byBza2ItXFx1MDAzZWxlbiAocHJldmVudGluZyBtZW1jcHkgZnJvbSByZWFkaW5nIHBhc3QgdGhlIGVuZCBvZiB0aGUgcmVjZWl2ZWQgc2tiIGJ1ZmZlciBpZiB0aGUgcmVzcG9uc2UgaGVhZGVyIGxlbmd0aCBjbGFpbXMgYSBsYXJnZXIgc2l6ZSkuIFRoaXMgaXNzdWUgaXMgYSBjbGFzc2ljIGJ1ZmZlciBvdXQtb2YtYm91bmRzIHJlYWQgd2hpY2ggaXMgZGlyZWN0bHkgZGV0ZWN0ZWQgYnkgS0FTQU4uIFRoZSBwYXRjaCBkb2VzIG5vdCBpbnRyb2R1Y2UgYW55IHVuaW5pdGlhbGl6ZWQgbWVtb3J5IGFsbG9jYXRpb25zLCBjb25kaXRpb25hbCBicmFuY2hlcyBiYXNlZCBvbiB1bmluaXRpYWxpemVkIGRhdGEsIG9yIGtlcm5lbC10by11c2VyIGluZm8tbGVha3MuIFRoZXJlZm9yZSwgc3RhbmRhcmQgS0FTQU4gZnV6emluZyBpcyBzdWZmaWNpZW50IGFuZCBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBpcyBub3Qgd2FycmFudGVkLlwiLFxuICBcIk5lZWRzS01TQU5cIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBzZWN1cml0eSBlbmdpbmVlciBzcGVjaWFsaXppbmcgaW4ga2VybmVsIG1lbW9yeVxuZXJyb3IgZGV0ZWN0b3JzIChLQVNBTiBhbmQgS01TQU4pLiBZb3VyIGpvYiBpcyB0byByZXZpZXcgdGhlIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmRcbmRldGVybWluZSBpZiB0aGUgY29kZSBjaGFuZ2VzIGp1c3RpZnkgc3Bhd25pbmcgYSBkZWRpY2F0ZWQgS01TQU4gKEtlcm5lbE1lbW9yeVNhbml0aXplcilcbmZ1enppbmcgc2Vzc2lvbiBpbiBhZGRpdGlvbiB0byBzdGFuZGFyZCBLQVNBTiBmdXp6aW5nLlxuXG5DUklUSUNBTCBESVNUSU5DVElPTiBCRVRXRUVOIEtBU0FOIEFORCBLTVNBTjpcbi0gU3RhbmRhcmQgS0FTQU4ga2VybmVsIGJ1aWxkcyAodXBzdHJlYW0tYXBwYXJtb3Ita2FzYW4uY29uZmlnKSBhbHJlYWR5IGVuYWJsZVxuICBhIGNvbXByZWhlbnNpdmUgc3VpdGUgb2YgZGVidWdnaW5nIHRvb2xzIGFuZCBzYW5pdGl6ZXJzLCBpbmNsdWRpbmcgS0FTQU5cbiAgKG91dC1vZi1ib3VuZHMgYWNjZXNzZXMsIHVzZS1hZnRlci1mcmVlLCBkb3VibGUgZnJlZSwgaW52YWxpZCBmcmVlKSwgTE9DS0RFUFxuICAobG9ja2luZyBidWdzIGFuZCBkZWFkbG9ja3MpLCBVQi1zYW5pdGl6ZXJzLCBhbmQgbWVtb3J5IGNvcnJ1cHRpb24gY2hlY2tzLlxuLSBLTVNBTiAoS2VybmVsTWVtb3J5U2FuaXRpemVyKSBkZXRlY3RzIHJlYWRzIG9mIFVOSU5JVElBTElaRUQgbWVtb3J5IChzdGFjaywgaGVhcCxcbiAgb3IgcGFnZSBhbGxvY2F0aW9ucykgYW5kIGtlcm5lbC10by11c2VyIG1lbW9yeSBpbmZvLWxlYWtzLlxuXG5SdWxlOiBUSEVSRSBJUyBOTyBTRU5TRSBJTiBSVU5OSU5HIEEgS01TQU4gU0VTU0lPTiBJRiBBIEJVRyBDQU4gQkUgQ0FVR0hUIEJZIEtBU0FOLFxuTE9DS0RFUCwgT1IgT1RIRVIgU1RBTkRBUkQgQlVHIERFVEVDVE9SUy5cbkEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpbmN1cnMgc2lnbmlmaWNhbnQgcmVzb3VyY2UgY29zdHMuIFlvdSBtdXN0IE9OTFlcbnNldCBOZWVkc0tNU0FOPXRydWUgaWYgdGhlIGNvZGUgY2hhbmdlcyBpbnRyb2R1Y2Ugb3IgZXhwb3NlIFVOSU5JVElBTElaRUQgTUVNT1JZIHJpc2tzXG50aGF0IGFyZSBkZXRlY3RlZCBPTkxZIGJ5IEtNU0FOLlxuXG5Mb29rIGhvbGlzdGljYWxseSBhdCB0aGUgcGF0Y2ggc2VyaWVzIGFuZCBzdXJyb3VuZGluZyBjb2RlLiBFdmVuIGlmIG5vIGRpcmVjdFxudW5pbml0aWFsaXplZCBmaWVsZCBhY2Nlc3NlcyBvciBuZXcgYnVmZmVyIGFsbG9jYXRpb25zIGFyZSBhZGRlZCBpbiB0aGUgZGlmZiBpdHNlbGYsXG5hIHBhdGNoIG1heSBhbHRlciBjb250cm9sIGZsb3csIGJvdW5kcyBjaGVja2luZywgb3IgZGF0YSBsZW5ndGggY2FsY3VsYXRpb25zIGluIHdheXNcbnRoYXQgY2hhbmdlIGhvdyB0aGUgcmVzdCBvZiB0aGUgY29kZSBvcGVyYXRlcyBvbiBleGlzdGluZyBidWZmZXJzIChlLmcuIGFsbG93aW5nXG51bmluaXRpYWxpemVkIHN0YWNrL2hlYXAgbWVtb3J5IHRvIGJlIHJlYWQsIGNvcGllZCB0byB1c2VyIHNwYWNlLCBvciB1c2VkIGluIGNvbnRyb2xcbmZsb3cpLiBEbyBub3QgaGVzaXRhdGUgdG8gdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gaW5zcGVjdCB0aGUgc3Vycm91bmRpbmcgY29kZSxcbmNhbGxlZCBmdW5jdGlvbnMsIGFuZCBjYWxsZXJzLlxuXG5TZXQgTmVlZHNLTVNBTj10cnVlIE9OTFkgSUYgdGhlIHBhdGNoIGludHJvZHVjZXMgb3IgbW9kaWZpZXM6XG4xLiBLZXJuZWwgc3RydWN0dXJlcyBzZW50IHRvIHVzZXIgc3BhY2UgKHZpYSBjb3B5X3RvX3VzZXIsIHB1dF91c2VyLCBuZXRsaW5rIHNrYlxuICAgYXR0cmlidXRlcywgaW9jdGwgb3V0cHV0IGFyZ3VtZW50cywgc29ja2V0IG9wdGlvbnMsIG9yIEJQRiBidWZmZXJzKSB3aGVyZSBmaWVsZHNcbiAgIG9yIHN0cnVjdHVyZSBwYWRkaW5nIG1pZ2h0IG5vdCBiZSBmdWxseSBpbml0aWFsaXplZC96ZXJvZWQuXG4yLiBDb25kaXRpb25hbCBsb2dpYyBvciBicmFuY2hpbmcgdGhhdCBkZXBlbmRzIG9uIHBvdGVudGlhbGx5IHVuaW5pdGlhbGl6ZWQgdmFyaWFibGVzXG4gICBvciBzdHJ1Y3QgZmllbGRzLlxuMy4gQWxsb2NhdGlvbiBvciBpbml0aWFsaXphdGlvbiBvZiBjb21wbGV4IGRhdGEgc3RydWN0dXJlcyB3aGVyZSB1bmluaXRpYWxpemVkIGZpZWxkc1xuICAgY291bGQgYmUgcmVhZCBsYXRlciBpbiByZWFjaGFibGUgY29kZSBwYXRocy5cbjQuIEJvdW5kcyBjaGVja3MsIGxlbmd0aHMsIG9yIGxvZ2ljIGluIGEgd2F5IHRoYXQgYWxsb3dzIHN1cnJvdW5kaW5nIGNvZGUgdG8gYWNjZXNzXG4gICB1bmluaXRpYWxpemVkIGJ5dGVzIG9mIGV4aXN0aW5nIGJ1ZmZlcnMuXG5cblNldCBOZWVkc0tNU0FOPWZhbHNlIElGOlxuLSBUaGUgY29kZSBjaGFuZ2VzIHByaW1hcmlseSByaXNrIG91dC1vZi1ib3VuZHMgYWNjZXNzLCBhcnJheSBvdmVyZmxvd3MsIE5VTEwgcG9pbnRlclxuICBkZXJlZmVyZW5jZXMsIGxvY2tpbmcgZGVhZGxvY2tzLCBvciB1c2UtYWZ0ZXItZnJlZSBidWdzICh0aGVzZSBhcmUgYWxyZWFkeSBjYXVnaHRcbiAgYnkgS0FTQU4sIExPQ0tERVAsIG9yIHN0YW5kYXJkIGJ1ZyBkZXRlY3RvcnMpLlxuLSBBbGwgc3RhY2svaGVhcCBzdHJ1Y3R1cmVzIHRvdWNoZWQgb3IgaW50cm9kdWNlZCBieSB0aGUgcGF0Y2ggYXJlIGZ1bGx5IHplcm9lZFxuICBvciBpbml0aWFsaXplZCAoZS5nLiB1c2luZyA9IHswfSwgbWVtc2V0LCBremFsbG9jKSBiZWZvcmUgYmVpbmcgcmVhZCBvciBjb3BpZWQuXG4tIFRoZSBwYXRjaCBkb2VzIG5vdCBpbnRyb2R1Y2UgYW55IHJpc2sgb2YgdW5pbml0aWFsaXplZCBtZW1vcnkgdXNhZ2Ugb3IgaW5mby1sZWFrcy5cblxuVXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gaW5zcGVjdCB0aGUgc3Vycm91bmRpbmcgY29kZSBpZiBuZWNlc3NhcnksIHRoZW4gcHJvdmlkZVxuZGV0YWlsZWQgS01TQU5SZWFzb25pbmcgY29udHJhc3RpbmcgS0FTQU4gdnMgS01TQU4gYXBwbGljYWJpbGl0eSBmb3IgdGhpcyBwYXRjaC5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IlRhcmdldCBhcmNoaXRlY3R1cmU6IGFtZDY0XG5cbkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IDU3OTA1ZmE3ZTM2NTFlZjkzZmU4OTY3NDMzMDBhMTkwZGYwMzlkMDVcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgTW9uIFNlcCA3IDA1OjA0OjMxIDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb21tYW5kLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuY1xuaW5kZXggYWZiN2VlOWJiMjM2Zi4uNTkxZTViYTEwNzUzMyAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29tbWFuZC5jXG4rKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuY1xuQEAgLTIwOSw2ICsyMDksNyBAQCBpbnQgbW04MXhfY21kX3Jlc3BfcHJvY2VzcyhzdHJ1Y3QgbW04MXggKm1vcnMsIHN0cnVjdCBza19idWZmICpza2IpXG4gXHRcdGxlbmd0aCA9IG1pbl90KGludCwgbGVuZ3RoLFxuIFx0XHRcdCAgICAgICBsZTE2X3RvX2NwdShzcmNfcmVzcC1cdTAwM2VoZHIubGVuKSArXG4gXHRcdFx0XHQgICAgICAgc2l6ZW9mKHN0cnVjdCBob3N0X2NtZF9oZWFkZXIpKTtcbitcdFx0bGVuZ3RoID0gbWluX3QoaW50LCBsZW5ndGgsIHNrYi1cdTAwM2VsZW4pO1xuIFx0XHRtZW1jcHkoZGVzdF9yZXNwLCBzcmNfcmVzcCwgbGVuZ3RoKTtcbiBcdH0gZWxzZSB7XG4gXHRcdHJldCA9IGxlMzJfdG9fY3B1KHNyY19yZXNwLVx1MDAzZXN0YXR1cyk7XG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wN1QwNTowNjoxOC41OTMwMTYzNjNaIiwiU2VxIjoyOSwiTmVzdGluZyI6MywiVHlwZSI6ImxsbSIsIk5hbWUiOiJrbXNhbi1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6NTY3MTE2MzE5NywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IGFuYWx5c2lzIG9mIHRoZSBzaXR1YXRpb246XG5cbioqSW5pdGlhbCBBc3Nlc3NtZW50IG9mIHRoZSBDb2RlIENoYW5nZSoqXG5cbk9rYXksIHNvIHdlIGhhdmUgYSBwYXRjaCB0byByZXZpZXcuIE15IGZpcnN0IHN0ZXAgaXMgdG8gemVybyBpbiBvbiB0aGUgbW9kaWZpZWQgZmlsZSwgYGRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29tbWFuZC5jYC4gVGhhdCdzIHdoZXJlIHRoZSBhY3Rpb24gaXMuIEltbWVkaWF0ZWx5LCBJJ20gdGhpbmtpbmcgYWJvdXQgdGhlIGltcGxpY2F0aW9ucyBvZiBjaGFuZ2VzIHdpdGhpbiB0aGF0IHNwZWNpZmljIGRyaXZlci4gTXkgZXhwZXJpZW5jZSB0ZWxscyBtZSB0aGF0IGl0J3MgbGlrZWx5IGEgY29tbWFuZCBoYW5kbGluZyBtb2R1bGUgb2Ygc29tZSBraW5kLiBOb3csIGxldCdzIGdldCBhIGNsb3NlciBsb29rIGF0IHRoZSBhY3R1YWwgY29kZS4gTXkgbmV4dCBsb2dpY2FsIHN0ZXAgaXMgdG8gcGlucG9pbnQgdGhlIGV4YWN0IGxvY2F0aW9uLiBMaW5lIDIwOSBpcyBtZW50aW9uZWQsIHdoaWNoIGlzIGEgcGVyZmVjdCBzdGFydGluZyBwb2ludC4gSSBjYW4gcXVpY2tseSBqdW1wIHRvIHRoYXQgbGluZSB1c2luZyBgcmVhZC1maWxlYCBvciBgZ3JlcHBlcmAgYW5kIHNlZSB3aGF0J3MgaGFwcGVuaW5nIGluIGNvbnRleHQsIGEgZmV3IGxpbmVzIGFib3ZlIGFuZCBiZWxvdy5cblxuXG4iLCJJbnB1dFRva2VucyI6MjE0MiwiT3V0cHV0VG9rZW5zIjo0NiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjc5LCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDdUMDU6MDY6MjQuMjY0MTgzODhaIiwiU2VxIjozMCwiTmVzdGluZyI6MywiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTM2MzcwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29tbWFuZC5jXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDE4MCxcbiAgXCJMaW5lQ291bnRcIjogNzBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiIDE4MDpcXHRcXHQgKiB0aGlzIGlzIGEgbGF0ZSByZXNwb25zZSBmb3IgYSB0aW1lZCBvdXQgY29tbWFuZCB3aGljaCBoYXMgYmVlblxcbiAxODE6XFx0XFx0ICogY2xlYW5lZCB1cCwgc28ganVzdCBmcmVlIHVwIHRoZSByZXNwb25zZS4gSWYgYSBjb21tYW5kIHdhcyByZXRyaWVkLFxcbiAxODI6XFx0XFx0ICogdGhlIHJlc3BvbnNlIG1heSBiZSBmcm9tIHRoZSByZXRyeSBvciBmcm9tIHRoZSBvcmlnaW5hbCBjb21tYW5kXFxuIDE4MzpcXHRcXHQgKiAobGF0ZSByZXNwb25zZSkgYnV0IG5vdCBmcm9tIGJvdGggYmVjYXVzZSB0aGUgZmlybXdhcmUgd2lsbCBzaWxlbnRseVxcbiAxODQ6XFx0XFx0ICogZHJvcCBhIHJldHJ5IGlmIGl0IHJlY2VpdmVkIHRoZSBpbml0aWFsIHJlcXVlc3QuIFNvIGEgbWlzbWF0Y2hlZFxcbiAxODU6XFx0XFx0ICogcmV0cnkgY291bnRlciBpcyB0cmVhdGVkIGFzIGEgbWF0Y2hlZCBjb21tYW5kIGFuZCByZXNwb25zZS5cXG4gMTg2OlxcdFxcdCAqL1xcbiAxODc6XFx0XFx0aWYgKCFjbWRfc2tiIHx8IG1lc3NhZ2VfaWQgIT0gcmVzcF9tZXNzYWdlX2lkIHx8XFxuIDE4ODpcXHRcXHQgICAgKGhvc3RfaWQgXFx1MDAyNiBIT1NUX0NNRF9IT1NUX0lEX1NFUV9NQVNLKSAhPVxcbiAxODk6XFx0XFx0XFx0ICAgIChyZXNwX2hvc3RfaWQgXFx1MDAyNiBIT1NUX0NNRF9IT1NUX0lEX1NFUV9NQVNLKSkge1xcbiAxOTA6XFx0XFx0XFx0ZGV2X2Vycihtb3JzLVxcdTAwM2VkZXYsXFxuIDE5MTpcXHRcXHRcXHRcXHRcXFwiTGF0ZSByZXNwb25zZSBmb3IgdGltZWQgb3V0IHJlcSAweCUwNHg6JTA0eCBoYXZlIDB4JTA0eDolMDR4IDB4JTA0eFxcXCIsXFxuIDE5MjpcXHRcXHRcXHRcXHRyZXNwX21lc3NhZ2VfaWQsIHJlc3BfaG9zdF9pZCwgbWVzc2FnZV9pZCwgaG9zdF9pZCxcXG4gMTkzOlxcdFxcdFxcdFxcdG1vcnMtXFx1MDAzZWNtZF9zZXEpO1xcbiAxOTQ6XFx0XFx0XFx0aXNfbGF0ZV9yZXNwb25zZSA9IHRydWU7XFxuIDE5NTpcXHRcXHRcXHRnb3RvIGV4aXQ7XFxuIDE5NjpcXHRcXHR9XFxuIDE5NzpcXHRcXHRpZiAoKGhvc3RfaWQgXFx1MDAyNiBIT1NUX0NNRF9IT1NUX0lEX1JFVFJZX01BU0spICE9XFxuIDE5ODpcXHRcXHQgICAgKHJlc3BfaG9zdF9pZCBcXHUwMDI2IEhPU1RfQ01EX0hPU1RfSURfUkVUUllfTUFTSykpXFxuIDE5OTpcXHRcXHRcXHRkZXZfZGJnKG1vcnMtXFx1MDAzZWRldixcXG4gMjAwOlxcdFxcdFxcdFxcdFxcXCJDb21tYW5kIHJldHJ5IG1pc21hdGNoIDB4JTA0eDolMDR4IDB4JTA0eDolMDR4XFxcIixcXG4gMjAxOlxcdFxcdFxcdFxcdG1lc3NhZ2VfaWQsIGhvc3RfaWQsIHJlc3BfbWVzc2FnZV9pZCwgcmVzcF9ob3N0X2lkKTtcXG4gMjAyOlxcdFxcbiAyMDM6XFx0XFx0cmVzcF9jYiA9IChzdHJ1Y3QgaG9zdF9jbWRfcmVzcF9jYiAqKUlFRUU4MDIxMV9TS0JfQ0IoY21kX3NrYilcXG4gMjA0OlxcdFxcdFxcdFxcdCAgLVxcdTAwM2Vkcml2ZXJfZGF0YTtcXG4gMjA1OlxcdFxcdGxlbmd0aCA9IHJlc3BfY2ItXFx1MDAzZWxlbmd0aDtcXG4gMjA2OlxcdFxcdGRlc3RfcmVzcCA9IHJlc3BfY2ItXFx1MDAzZWRlc3RfcmVzcDtcXG4gMjA3OlxcdFxcdGlmIChsZW5ndGggXFx1MDAzZT0gc2l6ZW9mKHN0cnVjdCBob3N0X2NtZF9yZXNwKSBcXHUwMDI2XFx1MDAyNiBkZXN0X3Jlc3ApIHtcXG4gMjA4OlxcdFxcdFxcdHJldCA9IDA7XFxuIDIwOTpcXHRcXHRcXHRsZW5ndGggPSBtaW5fdChpbnQsIGxlbmd0aCxcXG4gMjEwOlxcdFxcdFxcdFxcdCAgICAgICBsZTE2X3RvX2NwdShzcmNfcmVzcC1cXHUwMDNlaGRyLmxlbikgK1xcbiAyMTE6XFx0XFx0XFx0XFx0XFx0ICAgICAgIHNpemVvZihzdHJ1Y3QgaG9zdF9jbWRfaGVhZGVyKSk7XFxuIDIxMjpcXHRcXHRcXHRsZW5ndGggPSBtaW5fdChpbnQsIGxlbmd0aCwgc2tiLVxcdTAwM2VsZW4pO1xcbiAyMTM6XFx0XFx0XFx0bWVtY3B5KGRlc3RfcmVzcCwgc3JjX3Jlc3AsIGxlbmd0aCk7XFxuIDIxNDpcXHRcXHR9IGVsc2Uge1xcbiAyMTU6XFx0XFx0XFx0cmV0ID0gbGUzMl90b19jcHUoc3JjX3Jlc3AtXFx1MDAzZXN0YXR1cyk7XFxuIDIxNjpcXHRcXHR9XFxuIDIxNzpcXHRcXG4gMjE4OlxcdFxcdHJlc3BfY2ItXFx1MDAzZXJldCA9IHJldDtcXG4gMjE5OlxcdFxcbiAyMjA6XFx0ZXhpdDpcXG4gMjIxOlxcdFxcdGlmIChjbWRfc2tiIFxcdTAwMjZcXHUwMDI2ICFpc19sYXRlX3Jlc3BvbnNlKSB7XFxuIDIyMjpcXHRcXHRcXHQvKiBDb21wbGV0ZSBpZiBub3QgYWxyZWFkeSB0aW1lZCBvdXQgKi9cXG4gMjIzOlxcdFxcdFxcdGlmIChtb3JzLVxcdTAwM2VjbWRfY29tcClcXG4gMjI0OlxcdFxcdFxcdFxcdGNvbXBsZXRlKG1vcnMtXFx1MDAzZWNtZF9jb21wKTtcXG4gMjI1OlxcdFxcdH1cXG4gMjI2OlxcdFxcbiAyMjc6XFx0XFx0bXV0ZXhfdW5sb2NrKFxcdTAwMjZtb3JzLVxcdTAwM2VjbWRfbG9jayk7XFxuIDIyODpcXHRleGl0X2ZyZWU6XFxuIDIyOTpcXHRcXHRkZXZfa2ZyZWVfc2tiKHNrYik7XFxuIDIzMDpcXHRcXHRyZXR1cm4gMDtcXG4gMjMxOlxcdH1cXG4gMjMyOlxcdFxcbiAyMzM6XFx0aW50IG1tODF4X2NtZF9zdGFfc3RhdGUoc3RydWN0IG1tODF4ICptb3JzLCBzdHJ1Y3QgbW04MXhfdmlmICptb3JzX3ZpZiwgdTE2IGFpZCxcXG4gMjM0OlxcdFxcdFxcdFxcdHN0cnVjdCBpZWVlODAyMTFfc3RhICpzdGEsXFxuIDIzNTpcXHRcXHRcXHRcXHRlbnVtIGllZWU4MDIxMV9zdGFfc3RhdGUgc3RhdGUpXFxuIDIzNjpcXHR7XFxuIDIzNzpcXHRcXHRzdHJ1Y3QgaG9zdF9jbWRfcmVxX3NldF9zdGFfc3RhdGUgcmVxID0ge1xcbiAyMzg6XFx0XFx0XFx0LmhkciA9IElOSVRfQ01EX0hEUihyZXEsIEhPU1RfQ01EX0lEX1NFVF9TVEFfU1RBVEUsXFxuIDIzOTpcXHRcXHRcXHRcXHRcXHQgICAgbW9yc192aWYtXFx1MDAzZWlkKSxcXG4gMjQwOlxcdFxcdFxcdC5haWQgPSBjcHVfdG9fbGUxNihhaWQpLFxcbiAyNDE6XFx0XFx0XFx0LnN0YXRlID0gY3B1X3RvX2xlMTYoc3RhdGUpLFxcbiAyNDI6XFx0XFx0XFx0LnVhcHNkX3F1ZXVlcyA9IHN0YS1cXHUwMDNldWFwc2RfcXVldWVzLFxcbiAyNDM6XFx0XFx0fTtcXG4gMjQ0OlxcdFxcbiAyNDU6XFx0XFx0bWVtY3B5KHJlcS5zdGFfYWRkciwgc3RhLVxcdTAwM2VhZGRyLCBzaXplb2YocmVxLnN0YV9hZGRyKSk7XFxuIDI0NjpcXHRcXG4gMjQ3OlxcdFxcdHJldHVybiBtbTgxeF9jbWRfdHgobW9ycywgTlVMTCwgKHN0cnVjdCBob3N0X2NtZF9yZXEgKilcXHUwMDI2cmVxLCAwLCAwKTtcXG4gMjQ4OlxcdH1cXG4gMjQ5OlxcdFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wN1QwNTowNjoyNC4yNjQzMjI2OVoiLCJTZXEiOjMxLCJOZXN0aW5nIjozLCJUeXBlIjoibGxtIiwiTmFtZSI6Imttc2FuLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjoyMjE0NTUyNTI0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgc3VtbWFyeSwgcHJlc2VudGVkIGFzIGEgc3RyZWFtIG9mIHRob3VnaHQ6XG5cbioqRGl2aW5nIERlZXBlciBpbnRvIGBtbTgxeF9jbWRfcmVzcF9wcm9jZXNzYCoqXG5cblJpZ2h0LCBzbyBJJ20gdHJ5aW5nIHRvIGdldCB0aGUgZnVsbCBwaWN0dXJlIGhlcmUsIGFuZCBpdCdzIGNsZWFyIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSAqZW50aXJlKiBjb250ZXh0IG9mIGBtbTgxeF9jbWRfcmVzcF9wcm9jZXNzYC4gSSd2ZSBsb29rZWQgYXQgdGhlIGVudHJ5IHBvaW50IGFuZCB0aGUgbGlrZWx5IGNhbGxpbmcgZnVuY3Rpb25zLCBidXQgbm93IEknbSB0aGlua2luZyBJIGNhbid0IGJ1aWxkIG15IGFyZ3VtZW50IHdpdGhvdXQgZXhwbG9yaW5nIHRoZSByZXN0IG9mIHRoYXQgZnVuY3Rpb24ncyBpbXBsZW1lbnRhdGlvbi4gV2hhdCBhcmUgYWxsIHRoZSBwb3RlbnRpYWwgcGF0aHMgb2YgZXhlY3V0aW9uPyBXaGVyZSBhcmUgdGhlIGNyaXRpY2FsIGRhdGEgZGVwZW5kZW5jaWVzPyBJJ20gZ29pbmcgdG8gbmVlZCB0byB0cmFjZSB0aHJvdWdoIGl0IGxpbmUgYnkgbGluZSwgbG9vayBhdCB0aGUgY29uZGl0aW9uYWwgYnJhbmNoZXMgYW5kIGRhdGEgZGVwZW5kZW5jaWVzIHRvIHNlZSB3aGF0J3MgcmVhbGx5IGhhcHBlbmluZy4gSSBuZWVkIHRvIGtub3cgd2hhdCBoYXBwZW5zIGluIGV2ZXJ5IHNjZW5hcmlvIHRoaXMgZnVuY3Rpb24gaGFuZGxlcy4gSSdtIGdvaW5nIHRvIGRpZyBpbiBub3cgYW5kIGdldCBteSBoZWFkIGZ1bGx5IGFyb3VuZCB0aGUgZW50aXJlIHJvdXRpbmUgYmVmb3JlIEkgZ28gYW55IGZ1cnRoZXIgaW4gbXkgYW5hbHlzaXMuIFRoaXMgc2hvdWxkIHByb3ZpZGUgbWUgd2l0aCB0aGUgY29tcHJlaGVuc2l2ZSBjb250ZXh0IEkgbmVlZCB0byBtb3ZlIGZvcndhcmQgY29uZmlkZW50bHkuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjM3MzQsIk91dHB1dFRva2VucyI6NDYsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyNSwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA3VDA1OjA2OjI2LjQ3ODg3ODI5NFoiLCJTZXEiOjMyLCJOZXN0aW5nIjozLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMjM4MzAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb21tYW5kLmNcIixcbiAgXCJGaXJzdExpbmVcIjogMTQwLFxuICBcIkxpbmVDb3VudFwiOiA1MFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgMTQwOlxcdFxcdFxcdFxcdGxlMTZfdG9fY3B1KHJlcS1cXHUwMDNlaGRyLmhvc3RfaWQpLCByZXQsIHJldCk7XFxuIDE0MTpcXHRcXHR9XFxuIDE0MjpcXHRcXG4gMTQzOlxcdFxcdHJldHVybiByZXQ7XFxuIDE0NDpcXHR9XFxuIDE0NTpcXHRcXG4gMTQ2OlxcdGludCBtbTgxeF9jbWRfcmVzcF9wcm9jZXNzKHN0cnVjdCBtbTgxeCAqbW9ycywgc3RydWN0IHNrX2J1ZmYgKnNrYilcXG4gMTQ3OlxcdHtcXG4gMTQ4OlxcdFxcdGludCBsZW5ndGgsIHJldCA9IC1FU1JDSDsgLyogTm8gc3VjaCBwcm9jZXNzICovXFxuIDE0OTpcXHRcXHRzdHJ1Y3QgbW04MXhfc2ticSAqY21kX3EgPSBtbTgxeF9oaWZfZ2V0X3R4X2NtZF9xdWV1ZShtb3JzKTtcXG4gMTUwOlxcdFxcdHN0cnVjdCBob3N0X2NtZF9yZXNwICpzcmNfcmVzcCA9IChzdHJ1Y3QgaG9zdF9jbWRfcmVzcCAqKShza2ItXFx1MDAzZWRhdGEpO1xcbiAxNTE6XFx0XFx0c3RydWN0IHNrX2J1ZmYgKmNtZF9za2IgPSBOVUxMO1xcbiAxNTI6XFx0XFx0c3RydWN0IGhvc3RfY21kX3Jlc3BfY2IgKnJlc3BfY2I7XFxuIDE1MzpcXHRcXHRzdHJ1Y3QgaG9zdF9jbWRfcmVzcCAqZGVzdF9yZXNwO1xcbiAxNTQ6XFx0XFx0c3RydWN0IGhvc3RfY21kX3JlcSAqcmVxO1xcbiAxNTU6XFx0XFx0dTE2IG1lc3NhZ2VfaWQgPSAwO1xcbiAxNTY6XFx0XFx0dTE2IGhvc3RfaWQgPSAwO1xcbiAxNTc6XFx0XFx0dTE2IHJlc3BfbWVzc2FnZV9pZCA9IGxlMTZfdG9fY3B1KHNyY19yZXNwLVxcdTAwM2VoZHIubWVzc2FnZV9pZCk7XFxuIDE1ODpcXHRcXHR1MTYgcmVzcF9ob3N0X2lkID0gbGUxNl90b19jcHUoc3JjX3Jlc3AtXFx1MDAzZWhkci5ob3N0X2lkKTtcXG4gMTU5OlxcdFxcdGJvb2wgaXNfbGF0ZV9yZXNwb25zZSA9IGZhbHNlO1xcbiAxNjA6XFx0XFxuIDE2MTpcXHRcXHRkZXZfZGJnKG1vcnMtXFx1MDAzZWRldiwgXFxcIkVWVCAweCUwNHg6MHglMDR4XFxcIiwgcmVzcF9tZXNzYWdlX2lkLCByZXNwX2hvc3RfaWQpO1xcbiAxNjI6XFx0XFxuIDE2MzpcXHRcXHRpZiAoIUhPU1RfQ01EX0lTX1JFU1Aoc3JjX3Jlc3ApKSB7XFxuIDE2NDpcXHRcXHRcXHRyZXQgPSBtbTgxeF9tYWNfZXZlbnRfcmVjdihtb3JzLCBza2IpO1xcbiAxNjU6XFx0XFx0XFx0Z290byBleGl0X2ZyZWU7XFxuIDE2NjpcXHRcXHR9XFxuIDE2NzpcXHRcXG4gMTY4OlxcdFxcdG11dGV4X2xvY2soXFx1MDAyNm1vcnMtXFx1MDAzZWNtZF9sb2NrKTtcXG4gMTY5OlxcdFxcbiAxNzA6XFx0XFx0Y21kX3NrYiA9IG1tODF4X3NrYnFfdHhfcGVuZGluZyhjbWRfcSk7XFxuIDE3MTpcXHRcXHRpZiAoY21kX3NrYikge1xcbiAxNzI6XFx0XFx0XFx0bW04MXhfc2ticV9wdWxsX2hkcl9wb3N0X3R4KGNtZF9za2IpO1xcbiAxNzM6XFx0XFx0XFx0cmVxID0gKHN0cnVjdCBob3N0X2NtZF9yZXEgKiljbWRfc2tiLVxcdTAwM2VkYXRhO1xcbiAxNzQ6XFx0XFx0XFx0bWVzc2FnZV9pZCA9IGxlMTZfdG9fY3B1KHJlcS1cXHUwMDNlaGRyLm1lc3NhZ2VfaWQpO1xcbiAxNzU6XFx0XFx0XFx0aG9zdF9pZCA9IGxlMTZfdG9fY3B1KHJlcS1cXHUwMDNlaGRyLmhvc3RfaWQpO1xcbiAxNzY6XFx0XFx0fVxcbiAxNzc6XFx0XFxuIDE3ODpcXHRcXHQvKlxcbiAxNzk6XFx0XFx0ICogSWYgdGhlcmUgaXMgbm8gcGVuZGluZyBjb21tYW5kIG9yIHRoZSBzZXF1ZW5jZSBJRCBkb2VzIG5vdCBtYXRjaCxcXG4gMTgwOlxcdFxcdCAqIHRoaXMgaXMgYSBsYXRlIHJlc3BvbnNlIGZvciBhIHRpbWVkIG91dCBjb21tYW5kIHdoaWNoIGhhcyBiZWVuXFxuIDE4MTpcXHRcXHQgKiBjbGVhbmVkIHVwLCBzbyBqdXN0IGZyZWUgdXAgdGhlIHJlc3BvbnNlLiBJZiBhIGNvbW1hbmQgd2FzIHJldHJpZWQsXFxuIDE4MjpcXHRcXHQgKiB0aGUgcmVzcG9uc2UgbWF5IGJlIGZyb20gdGhlIHJldHJ5IG9yIGZyb20gdGhlIG9yaWdpbmFsIGNvbW1hbmRcXG4gMTgzOlxcdFxcdCAqIChsYXRlIHJlc3BvbnNlKSBidXQgbm90IGZyb20gYm90aCBiZWNhdXNlIHRoZSBmaXJtd2FyZSB3aWxsIHNpbGVudGx5XFxuIDE4NDpcXHRcXHQgKiBkcm9wIGEgcmV0cnkgaWYgaXQgcmVjZWl2ZWQgdGhlIGluaXRpYWwgcmVxdWVzdC4gU28gYSBtaXNtYXRjaGVkXFxuIDE4NTpcXHRcXHQgKiByZXRyeSBjb3VudGVyIGlzIHRyZWF0ZWQgYXMgYSBtYXRjaGVkIGNvbW1hbmQgYW5kIHJlc3BvbnNlLlxcbiAxODY6XFx0XFx0ICovXFxuIDE4NzpcXHRcXHRpZiAoIWNtZF9za2IgfHwgbWVzc2FnZV9pZCAhPSByZXNwX21lc3NhZ2VfaWQgfHxcXG4gMTg4OlxcdFxcdCAgICAoaG9zdF9pZCBcXHUwMDI2IEhPU1RfQ01EX0hPU1RfSURfU0VRX01BU0spICE9XFxuIDE4OTpcXHRcXHRcXHQgICAgKHJlc3BfaG9zdF9pZCBcXHUwMDI2IEhPU1RfQ01EX0hPU1RfSURfU0VRX01BU0spKSB7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA3VDA1OjA2OjI2LjQ3OTAwNDk3NFoiLCJTZXEiOjMzLCJOZXN0aW5nIjozLCJUeXBlIjoibGxtIiwiTmFtZSI6Imttc2FuLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjozMzU4MzgyMTA1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyBhIFJlY2VudCBQYXRjaCoqXG5cbk9rYXksIGxldCdzIGJyZWFrIHRoaXMgZG93bi4gVGhpcyBwYXRjaCBzZWVtcyBzdHJhaWdodGZvcndhcmQgYXQgZmlyc3QgZ2xhbmNlLiBJdCdzIGFkZGluZyBhIGNydWNpYWwgYGxlbmd0aCA9IG1pbl90KGludCwgbGVuZ3RoLCBza2ItXHUwMDNlbGVuKTtgIGxpbmUgcmlnaHQgYmVmb3JlIGEgYG1lbWNweWAuIFRoZSBrZXkgaXMgd2hhdCBpdCAqcmVwbGFjZXMqLiBQcmV2aW91c2x5LCB0aGUgbGVuZ3RoIGNhbGN1bGF0aW9uIHJlbGllZCBvbiBgbGUxNl90b19jcHUoc3JjX3Jlc3AtXHUwMDNlaGRyLmxlbikgKyBzaXplb2Yoc3RydWN0IGhvc3RfY21kX2hlYWRlcilgLlxuXG5UaGUgcGVubnkgZHJvcHMuIEJlZm9yZSB0aGlzIGZpeCwgaWYgdGhlIGluY29taW5nIGBza2JgICh0aGUgbmV0d29yayBidWZmZXIpIGhhZCBhIGxlbmd0aCAoYHNrYi1cdTAwM2VsZW5gKSBzbWFsbGVyIHRoYW4gd2hhdCB0aGUgY29kZSAqdGhvdWdodCogaXQgc2hvdWxkIGJlIChgc3JjX3Jlc3AtXHUwMDNlaGRyLmxlbiArIHNpemVvZiguLi4pYCksIHRoYXQgYG1lbWNweWAgd2FzIGdvaW5nIHRvIHJlYWQgKnBhc3QqIHRoZSBlbmQgb2YgdGhlIGRhdGEgYWxsb2NhdGVkIHRvIHRoZSBgc2tiYC4gVGhhdCdzIGFuIGltbWVkaWF0ZSByZWQgZmxhZyDigJMgYW4gb3V0LW9mLWJvdW5kcyByZWFkIG9uIHRoZSBgc2tiYCdzIGJ1ZmZlciwgcHJvYmFibHkgYSBjbGFzc2ljIHNsYWIgb3IgcGFnZSBvdXQtb2YtYm91bmRzIHJlYWQsIGFuZCBLQVNBTiAodGhlIEtlcm5lbCBBZGRyZXNzIFNBTml0aXplcikgd291bGQgYmUgaGF2aW5nIGEgZmllbGQgZGF5IHdpdGggaXQuIENsYXNzaWMhXG5cbk5vdywgdG8gZnVsbHkgdW5kZXJzdGFuZCB0aGUgaW1wYWN0LCBJIG5lZWQgdG8gY2hlY2sgdGhlIGNvbnRleHQuIFdoZXJlIGlzIGBkZXN0X3Jlc3BgIGNvbWluZyBmcm9tPyBBbmQgd2hlcmUgaXMgdGhpcyBgaG9zdF9jbWRfcmVzcF9jYmAgZnVuY3Rpb24gYmVpbmcgdXNlZD8gVGltZSB0byBncmFiIHRoZSBncmVwIGFuZCBkbyBzb21lIGRpZ2dpbmcgdG8gc2VlIHdoZXJlIHRoZXNlIHZhcmlhYmxlcyBhcmUgZGVmaW5lZCBhbmQgdXNlZC4gR290dGEgY2hlY2sgd2hlcmUgYGRlc3RfcmVzcGAgbGl2ZXMgYW5kIGhvdyBpdCdzIGhhbmRsZWQgdG8gbWFrZSBzdXJlIHRoZXJlIGFyZSBubyBvdGhlciBwb3RlbnRpYWwgaXNzdWVzIGRvd25zdHJlYW0uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQ5OTUsIk91dHB1dFRva2VucyI6MTcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMjksIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0wN1QwNTowNjoyOS44MzczOTE2NjlaIiwiU2VxIjozNCwiTmVzdGluZyI6MywiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI1Nzk5ODQ2MjgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiZGVzdF9yZXNwXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29tbWFuZC5jPTI3PXN0cnVjdCBob3N0X2NtZF9yZXNwX2NiIHtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29tbWFuZC5jLTI5LVxcdHUzMiBsZW5ndGg7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb21tYW5kLmM6MzA6XFx0c3RydWN0IGhvc3RfY21kX3Jlc3AgKmRlc3RfcmVzcDtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuYy0zMS19O1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb21tYW5kLmM9MzM9c3RhdGljIGludCBtbTgxeF9jbWRfdHgoc3RydWN0IG1tODF4ICptb3JzLCBzdHJ1Y3QgaG9zdF9jbWRfcmVzcCAqcmVzcCxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29tbWFuZC5jLTcyLVxcdFxcdHJlc3BfY2ItXFx1MDAzZWxlbmd0aCA9IGxlbmd0aDtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuYzo3MzpcXHRcXHRyZXNwX2NiLVxcdTAwM2VkZXN0X3Jlc3AgPSByZXNwO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29tbWFuZC5jLTc0LVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb21tYW5kLmM9MTQ2PWludCBtbTgxeF9jbWRfcmVzcF9wcm9jZXNzKHN0cnVjdCBtbTgxeCAqbW9ycywgc3RydWN0IHNrX2J1ZmYgKnNrYilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29tbWFuZC5jLTE1Mi1cXHRzdHJ1Y3QgaG9zdF9jbWRfcmVzcF9jYiAqcmVzcF9jYjtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuYzoxNTM6XFx0c3RydWN0IGhvc3RfY21kX3Jlc3AgKmRlc3RfcmVzcDtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuYy0xNTQtXFx0c3RydWN0IGhvc3RfY21kX3JlcSAqcmVxO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb21tYW5kLmMtMjA1LVxcdGxlbmd0aCA9IHJlc3BfY2ItXFx1MDAzZWxlbmd0aDtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuYzoyMDY6XFx0ZGVzdF9yZXNwID0gcmVzcF9jYi1cXHUwMDNlZGVzdF9yZXNwO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29tbWFuZC5jOjIwNzpcXHRpZiAobGVuZ3RoIFxcdTAwM2U9IHNpemVvZihzdHJ1Y3QgaG9zdF9jbWRfcmVzcCkgXFx1MDAyNlxcdTAwMjYgZGVzdF9yZXNwKSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb21tYW5kLmMtMjA4LVxcdFxcdHJldCA9IDA7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuYy0yMTItXFx0XFx0bGVuZ3RoID0gbWluX3QoaW50LCBsZW5ndGgsIHNrYi1cXHUwMDNlbGVuKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuYzoyMTM6XFx0XFx0bWVtY3B5KGRlc3RfcmVzcCwgc3JjX3Jlc3AsIGxlbmd0aCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb21tYW5kLmMtMjE0LVxcdH0gZWxzZSB7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA3VDA1OjA2OjMyLjQxNzM4NTA1NloiLCJTZXEiOjM1LCJOZXN0aW5nIjozLCJUeXBlIjoibGxtIiwiTmFtZSI6Imttc2FuLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjoxNzc1MDMzNjUxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgc3VtbWFyeSwgYXMgaWYgSSB3ZXJlIHRoaW5raW5nIHRoZXNlIHRob3VnaHRzOlxuXG4qKkFuYWx5emluZyB0aGUgUmVzcG9uc2UgSGFuZGxpbmcgaW4gbW04MXhfY21kX3R4KipcblxuT2theSwgdGltZSB0byBkaWcgaW50byBgbW04MXhfY21kX3R4YC4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgZXhhY3RseSBob3cgdGhlIGByZXNwYCB2YXJpYWJsZSBpcyBhbGxvY2F0ZWQgYW5kIHBhc3NlZCBhcm91bmQgd2l0aGluIHRoaXMgZnVuY3Rpb24uIFRoZSBkZXRhaWxzIG9mIHJlc3BvbnNlIGhhbmRsaW5nIGFyZSBjcnVjaWFsLCBwYXJ0aWN1bGFybHkgaW4gdGhpcyBzdWJzeXN0ZW0sIGFuZCBhIHBvdGVudGlhbCBidWcgY291bGQgYmUgbHVya2luZyBoZXJlLiBJJ2xsIG5lZWQgdG8gdHJhY2UgdGhlIGFsbG9jYXRpb24sIGFueSBtb2RpZmljYXRpb25zIG9yIGNvcGllcywgYW5kIHVsdGltYXRlbHksIGhvdyBpdCdzIGhhbmRsZWQgb24gcmV0dXJuLiBUaGlzIGxldmVsIG9mIHNjcnV0aW55IGlzIGtleSB0byBlbnN1cmluZyByb2J1c3QgY29tbWFuZCB0cmFuc21pc3Npb24gYW5kIHJlY2VwdGlvbiB3aXRoaW4gdGhlIGRyaXZlci4gTGV0J3Mgc2VlIGhvdyB0aGV5J3ZlIGltcGxlbWVudGVkIGl0Li4uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjYyNjIsIk91dHB1dFRva2VucyI6NDUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyNSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0wN1QwNTowNjozNC4xOTI0MjEwMDdaIiwiU2VxIjozNiwiTmVzdGluZyI6MywiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTM0NzgwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29tbWFuZC5jXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDMzLFxuICBcIkxpbmVDb3VudFwiOiA1NVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgIDMzOlxcdHN0YXRpYyBpbnQgbW04MXhfY21kX3R4KHN0cnVjdCBtbTgxeCAqbW9ycywgc3RydWN0IGhvc3RfY21kX3Jlc3AgKnJlc3AsXFxuICAzNDpcXHRcXHRcXHRcXHRzdHJ1Y3QgaG9zdF9jbWRfcmVxICpyZXEsIHUzMiBsZW5ndGgsIHUzMiB0aW1lb3V0KVxcbiAgMzU6XFx0e1xcbiAgMzY6XFx0XFx0aW50IGNtZF9sZW47XFxuICAzNzpcXHRcXHRpbnQgcmV0ID0gMDtcXG4gIDM4OlxcdFxcdHUxNiBob3N0X2lkO1xcbiAgMzk6XFx0XFx0aW50IHJldHJ5ID0gMDtcXG4gIDQwOlxcdFxcdHVuc2lnbmVkIGxvbmcgd2FpdF9yZXQgPSAwO1xcbiAgNDE6XFx0XFx0c3RydWN0IHNrX2J1ZmYgKnNrYjtcXG4gIDQyOlxcdFxcdHN0cnVjdCBtbTgxeF9za2JxICpjbWRfcSA9IG1tODF4X2hpZl9nZXRfdHhfY21kX3F1ZXVlKG1vcnMpO1xcbiAgNDM6XFx0XFx0c3RydWN0IGhvc3RfY21kX3Jlc3BfY2IgKnJlc3BfY2I7XFxuICA0NDpcXHRcXHRERUNMQVJFX0NPTVBMRVRJT05fT05TVEFDSyhjbWRfY29tcCk7XFxuICA0NTpcXHRcXG4gIDQ2OlxcdFxcdEJVSUxEX0JVR19PTihzaXplb2Yoc3RydWN0IGhvc3RfY21kX3Jlc3BfY2IpIFxcdTAwM2VcXG4gIDQ3OlxcdFxcdFxcdCAgICAgSUVFRTgwMjExX1RYX0lORk9fRFJJVkVSX0RBVEFfU0laRSk7XFxuICA0ODpcXHRcXG4gIDQ5OlxcdFxcdGNtZF9sZW4gPSBzaXplb2YoKnJlcSkgKyBsZTE2X3RvX2NwdShyZXEtXFx1MDAzZWhkci5sZW4pO1xcbiAgNTA6XFx0XFx0cmVxLVxcdTAwM2VoZHIuZmxhZ3MgPSBjcHVfdG9fbGUxNihIT1NUX0NNRF9UWVBFX1JFUSk7XFxuICA1MTpcXHRcXG4gIDUyOlxcdFxcdG11dGV4X2xvY2soXFx1MDAyNm1vcnMtXFx1MDAzZWNtZF93YWl0KTtcXG4gIDUzOlxcdFxcdG1vcnMtXFx1MDAzZWNtZF9zZXErKztcXG4gIDU0OlxcdFxcdGlmIChtb3JzLVxcdTAwM2VjbWRfc2VxIFxcdTAwM2UgSE9TVF9DTURfSE9TVF9JRF9TRVFfTUFYKVxcbiAgNTU6XFx0XFx0XFx0bW9ycy1cXHUwMDNlY21kX3NlcSA9IDE7XFxuICA1NjpcXHRcXHRob3N0X2lkID0gbW9ycy1cXHUwMDNlY21kX3NlcSBcXHUwMDNjXFx1MDAzYyBIT1NUX0NNRF9IT1NUX0lEX1NFUV9TSElGVDtcXG4gIDU3OlxcdFxcbiAgNTg6XFx0XFx0bW04MXhfcHNfZGlzYWJsZShtb3JzKTtcXG4gIDU5OlxcdFxcbiAgNjA6XFx0XFx0ZG8ge1xcbiAgNjE6XFx0XFx0XFx0cmVxLVxcdTAwM2VoZHIuaG9zdF9pZCA9IGNwdV90b19sZTE2KGhvc3RfaWQgfCByZXRyeSk7XFxuICA2MjpcXHRcXG4gIDYzOlxcdFxcdFxcdHNrYiA9IG1tODF4X3NrYnFfYWxsb2Nfc2tiKGNtZF9xLCBjbWRfbGVuKTtcXG4gIDY0OlxcdFxcdFxcdGlmICghc2tiKSB7XFxuICA2NTpcXHRcXHRcXHRcXHRyZXQgPSAtRU5PTUVNO1xcbiAgNjY6XFx0XFx0XFx0XFx0YnJlYWs7XFxuICA2NzpcXHRcXHRcXHR9XFxuICA2ODpcXHRcXG4gIDY5OlxcdFxcdFxcdG1lbWNweShza2ItXFx1MDAzZWRhdGEsIHJlcSwgY21kX2xlbik7XFxuICA3MDpcXHRcXHRcXHRyZXNwX2NiID0gKHN0cnVjdCBob3N0X2NtZF9yZXNwX2NiICopSUVFRTgwMjExX1NLQl9DQihza2IpXFxuICA3MTpcXHRcXHRcXHRcXHRcXHQgIC1cXHUwMDNlZHJpdmVyX2RhdGE7XFxuICA3MjpcXHRcXHRcXHRyZXNwX2NiLVxcdTAwM2VsZW5ndGggPSBsZW5ndGg7XFxuICA3MzpcXHRcXHRcXHRyZXNwX2NiLVxcdTAwM2VkZXN0X3Jlc3AgPSByZXNwO1xcbiAgNzQ6XFx0XFxuICA3NTpcXHRcXHRcXHRkZXZfZGJnKG1vcnMtXFx1MDAzZWRldiwgXFxcIkNNRCAweCUwNHg6JTA0eFxcXCIsXFxuICA3NjpcXHRcXHRcXHRcXHRsZTE2X3RvX2NwdShyZXEtXFx1MDAzZWhkci5tZXNzYWdlX2lkKSxcXG4gIDc3OlxcdFxcdFxcdFxcdGxlMTZfdG9fY3B1KHJlcS1cXHUwMDNlaGRyLmhvc3RfaWQpKTtcXG4gIDc4OlxcdFxcbiAgNzk6XFx0XFx0XFx0bXV0ZXhfbG9jayhcXHUwMDI2bW9ycy1cXHUwMDNlY21kX2xvY2spO1xcbiAgODA6XFx0XFx0XFx0bW9ycy1cXHUwMDNlY21kX2NvbXAgPSBcXHUwMDI2Y21kX2NvbXA7XFxuICA4MTpcXHRcXHRcXHRpZiAocmV0cnkgXFx1MDAzZSAwKVxcbiAgODI6XFx0XFx0XFx0XFx0cmVpbml0X2NvbXBsZXRpb24oXFx1MDAyNmNtZF9jb21wKTtcXG4gIDgzOlxcdFxcdFxcdHRpbWVvdXQgPSB0aW1lb3V0ID8gdGltZW91dCA6IEhPU1RfQ01EX0RFRkFVTFRfVElNRU9VVF9NUztcXG4gIDg0OlxcdFxcdFxcdHJldCA9IG1tODF4X3NrYnFfc2tiX3R4KGNtZF9xLCBcXHUwMDI2c2tiLCBOVUxMLFxcbiAgODU6XFx0XFx0XFx0XFx0XFx0XFx0TU04MVhfU0tCX0NIQU5fQ09NTUFORCk7XFxuICA4NjpcXHRcXHRcXHRtdXRleF91bmxvY2soXFx1MDAyNm1vcnMtXFx1MDAzZWNtZF9sb2NrKTtcXG4gIDg3OlxcdFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wN1QwNTowNjozNC4xOTI1NjQwNDdaIiwiU2VxIjozNywiTmVzdGluZyI6MywiVHlwZSI6ImxsbSIsIk5hbWUiOiJrbXNhbi1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6NTIzOTY4NjExNCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHRob3VnaHQgcHJvY2VzcywgYXMgaWYgSSB3ZXJlIGFuYWx5emluZyB0aGlzIGNvZGU6XG5cbioqQW5hbHl6aW5nIHRoZSBgbW04MXhfY21kX3R4YCBGdW5jdGlvbioqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IGhvdyB0aGlzIGBtbTgxeF9jbWRfdHhgIGZ1bmN0aW9uIGlzIGJlaW5nIHVzZWQuIFRoZSBpbXBvcnRhbnQgcGllY2UgaGVyZSBpcyB0aGF0IGNhbGxlcnMgYXJlIHBhc3NpbmcgYSBgcmVzcGAgYXJndW1lbnQuIFRoYXQncyBpbW1lZGlhdGVseSBpbnRlcmVzdGluZzsgdGhhdCBgcmVzcGAgcHJvYmFibHkgaG9sZHMgc29tZSBzb3J0IG9mIHJlc3BvbnNlIGRhdGEgb3IgZXJyb3IgaW5mb3JtYXRpb24sIGFuZCBpdCdzIGJlaW5nICpwYXNzZWQqIGluLCB3aGljaCBzdWdnZXN0cyBpdCBtaWdodCBiZSBtb2RpZmllZCBieSB0aGUgZnVuY3Rpb24sIG9yIG1pZ2h0IGJlIHVzZWQgdG8gcmV0cmlldmUgZGF0YSBmcm9tIHRoZSBjYWxsLiBOb3csIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBjYWxsaW5nIGNvbnRleHRzLiBBIGBncmVwYCBmb3IgYG1tODF4X2NtZF90eGAgd2lsbCBxdWlja2x5IHJldmVhbCBhbGwgdGhlIHBsYWNlcyBpbiB0aGUgY29kZWJhc2Ugd2hlcmUgdGhpcyBmdW5jdGlvbiBpcyBiZWluZyBpbnZva2VkLiBUaGF0J2xsIHNob3cgbWUgdGhlIGRpZmZlcmVudCBzY2VuYXJpb3Mgd2hlcmUgaXQncyB1c2VkLCB0aGUgZGF0YSBpdCdzIHdvcmtpbmcgd2l0aCwgYW5kIHRoZSByb2xlcyBpdHMgcGxheWluZy4gVGhhdCB3aWxsIGluZm9ybSBhIGJldHRlciB1bmRlcnN0YW5kaW5nIG9mIHRoZSBjb2RlIGluIGFjdGlvbi5cblxuXG4iLCJJbnB1dFRva2VucyI6NzQxOCwiT3V0cHV0VG9rZW5zIjoyMiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjQxLCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMDdUMDU6MDY6MzkuNDMyMjUyMTMxWiIsIlNlcSI6MzgsIk5lc3RpbmciOjMsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyMTg5MDA4ODY0LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm1tODF4X2NtZF90eFwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuYz0yNz1zdHJ1Y3QgaG9zdF9jbWRfcmVzcF9jYiB7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuYy0zMi1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuYzozMzpzdGF0aWMgaW50IG1tODF4X2NtZF90eChzdHJ1Y3QgbW04MXggKm1vcnMsIHN0cnVjdCBob3N0X2NtZF9yZXNwICpyZXNwLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29tbWFuZC5jLTM0LVxcdFxcdFxcdHN0cnVjdCBob3N0X2NtZF9yZXEgKnJlcSwgdTMyIGxlbmd0aCwgdTMyIHRpbWVvdXQpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuYz0yMzM9aW50IG1tODF4X2NtZF9zdGFfc3RhdGUoc3RydWN0IG1tODF4ICptb3JzLCBzdHJ1Y3QgbW04MXhfdmlmICptb3JzX3ZpZiwgdTE2IGFpZCxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29tbWFuZC5jLTI0Ni1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuYzoyNDc6XFx0cmV0dXJuIG1tODF4X2NtZF90eChtb3JzLCBOVUxMLCAoc3RydWN0IGhvc3RfY21kX3JlcSAqKVxcdTAwMjZyZXEsIDAsIDApO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29tbWFuZC5jLTI0OC19XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuYz0yNTA9aW50IG1tODF4X2NtZF9hZGRfaWYoc3RydWN0IG1tODF4ICptb3JzLCB1MTYgKnZpZl9pZCwgY29uc3QgdTggKmFkZHIsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuYy0yNzEtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb21tYW5kLmM6MjcyOlxcdHJldCA9IG1tODF4X2NtZF90eChtb3JzLCAoc3RydWN0IGhvc3RfY21kX3Jlc3AgKilcXHUwMDI2cmVzcCxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuYy0yNzMtXFx0XFx0XFx0ICAgKHN0cnVjdCBob3N0X2NtZF9yZXEgKilcXHUwMDI2cmVxLCBzaXplb2YocmVzcCksIDApO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb21tYW5kLmM9MjgwPWludCBtbTgxeF9jbWRfZ2V0X2NhcGFiaWxpdGllcyhzdHJ1Y3QgbW04MXggKm1vcnMsIHUxNiB2aWZfaWQsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuYy0yODktXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb21tYW5kLmM6MjkwOlxcdHJldCA9IG1tODF4X2NtZF90eChtb3JzLCAoc3RydWN0IGhvc3RfY21kX3Jlc3AgKilcXHUwMDI2cnNwLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29tbWFuZC5jLTI5MS1cXHRcXHRcXHQgICAoc3RydWN0IGhvc3RfY21kX3JlcSAqKVxcdTAwMjZyZXEsIHNpemVvZihyc3ApLCAwKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29tbWFuZC5jPTMwOT1pbnQgbW04MXhfY21kX2dldF9tYXhfdHhwb3dlcihzdHJ1Y3QgbW04MXggKm1vcnMsIHMzMiAqb3V0X3Bvd2VyX21ibSlcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29tbWFuZC5jLTMxNi1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuYzozMTc6XFx0cmV0ID0gbW04MXhfY21kX3R4KG1vcnMsIChzdHJ1Y3QgaG9zdF9jbWRfcmVzcCAqKVxcdTAwMjZyZXNwLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29tbWFuZC5jLTMxOC1cXHRcXHRcXHQgICAoc3RydWN0IGhvc3RfY21kX3JlcSAqKVxcdTAwMjZyZXEsIHNpemVvZihyZXNwKSwgMCk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuYz0zMjU9aW50IG1tODF4X2NtZF9od19zY2FuKHN0cnVjdCBtbTgxeCAqbW9ycywgc3RydWN0IG1tODF4X2h3X3NjYW5fcGFyYW1zICpwYXJhbXMsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuYy0zNTktXFx0cmVxLVxcdTAwM2VoZHIubGVuID0gY3B1X3RvX2xlMTYoKHUxNikoKGJ1ZiAtICh1OCAqKXJlcSkgLSBzaXplb2YocmVxLVxcdTAwM2VoZHIpKSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb21tYW5kLmM6MzYwOlxcdHJldCA9IG1tODF4X2NtZF90eChtb3JzLCBOVUxMLCAoc3RydWN0IGhvc3RfY21kX3JlcSAqKXJlcSwgMCwgMCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb21tYW5kLmMtMzYxLVxcdGtmcmVlKHJlcSk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuYz0zNjY9aW50IG1tODF4X2NtZF9zZXRfdHhwb3dlcihzdHJ1Y3QgbW04MXggKm1vcnMsIHMzMiAqb3V0X3Bvd2VyX21ibSxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29tbWFuZC5jLTM3NS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuYzozNzY6XFx0cmV0ID0gbW04MXhfY21kX3R4KG1vcnMsIChzdHJ1Y3QgaG9zdF9jbWRfcmVzcCAqKVxcdTAwMjZyZXNwLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29tbWFuZC5jLTM3Ny1cXHRcXHRcXHQgICAoc3RydWN0IGhvc3RfY21kX3JlcSAqKVxcdTAwMjZyZXEsIHNpemVvZihyZXNwKSwgMCk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuYz0zODQ9aW50IG1tODF4X2NtZF9zZXRfY2hhbm5lbChzdHJ1Y3QgbW04MXggKm1vcnMsIHUzMiBvcF9jaGFuX2ZyZXFfaHosXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuYy0zOTgtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb21tYW5kLmM6Mzk5OlxcdHJldCA9IG1tODF4X2NtZF90eChtb3JzLCAoc3RydWN0IGhvc3RfY21kX3Jlc3AgKilcXHUwMDI2cmVzcCxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuYy00MDAtXFx0XFx0XFx0ICAgKHN0cnVjdCBob3N0X2NtZF9yZXEgKilcXHUwMDI2cmVxLCBzaXplb2YocmVzcCksIDApO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb21tYW5kLmM9NDA3PWludCBtbTgxeF9jbWRfZGlzYWJsZV9rZXkoc3RydWN0IG1tODF4ICptb3JzLCBzdHJ1Y3QgbW04MXhfdmlmICptb3JzX3ZpZixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29tbWFuZC5jLTQxOS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuYzo0MjA6XFx0cmV0dXJuIG1tODF4X2NtZF90eChtb3JzLCBOVUxMLCAoc3RydWN0IGhvc3RfY21kX3JlcSAqKVxcdTAwMjZyZXEsIDAsIDApO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29tbWFuZC5jLTQyMS19XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuYz00MjM9aW50IG1tODF4X2NtZF9pbnN0YWxsX2tleShzdHJ1Y3QgbW04MXggKm1vcnMsIHN0cnVjdCBtbTgxeF92aWYgKm1vcnNfdmlmLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb21tYW5kLmMtNDQ2LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29tbWFuZC5jOjQ0NzpcXHRyZXQgPSBtbTgxeF9jbWRfdHgobW9ycywgKHN0cnVjdCBob3N0X2NtZF9yZXNwICopXFx1MDAyNnJlc3AsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb21tYW5kLmMtNDQ4LVxcdFxcdFxcdCAgIChzdHJ1Y3QgaG9zdF9jbWRfcmVxICopXFx1MDAyNnJlcSwgc2l6ZW9mKHJlc3ApLCAwKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29tbWFuZC5jPTQ1OD1pbnQgbW04MXhfY21kX2NmZ19tdWx0aWNhc3RfZmlsdGVyKHN0cnVjdCBtbTgxeCAqbW9ycyxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29tbWFuZC5jLTQ3NS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuYzo0NzY6XFx0cmV0ID0gbW04MXhfY21kX3R4KG1vcnMsIE5VTEwsIChzdHJ1Y3QgaG9zdF9jbWRfcmVxICopcmVxLCAwLCAwKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuYy00NzctXFx0a2ZyZWUocmVxKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29tbWFuZC5jPTQ4MT1pbnQgbW04MXhfY21kX2NmZ19ic3Moc3RydWN0IG1tODF4ICptb3JzLCB1MTYgdmlmX2lkLCB1MTYgYmVhY29uX2ludCxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29tbWFuZC5jLTQ5MC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuYzo0OTE6XFx0cmV0dXJuIG1tODF4X2NtZF90eChtb3JzLCBOVUxMLCAoc3RydWN0IGhvc3RfY21kX3JlcSAqKVxcdTAwMjZyZXEsIDAsIDApO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29tbWFuZC5jLTQ5Mi19XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuYz00OTQ9aW50IG1tODF4X2NtZF9jb25maWdfYmVhY29uX3RpbWVyKHN0cnVjdCBtbTgxeCAqbW9ycywgdm9pZCAqbW04MXhfdmlmLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb21tYW5kLmMtNTAzLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29tbWFuZC5jOjUwNDpcXHRyZXR1cm4gbW04MXhfY21kX3R4KG1vcnMsIE5VTEwsIChzdHJ1Y3QgaG9zdF9jbWRfcmVxICopXFx1MDAyNnJlcSwgMCwgMCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb21tYW5kLmMtNTA1LX1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29tbWFuZC5jPTUwNz1pbnQgbW04MXhfY21kX3NldF9wcyhzdHJ1Y3QgbW04MXggKm1vcnMsIGJvb2wgZW5hYmxlZClcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29tbWFuZC5jLTUxMy1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuYzo1MTQ6XFx0cmV0dXJuIG1tODF4X2NtZF90eChtb3JzLCBOVUxMLCAoc3RydWN0IGhvc3RfY21kX3JlcSAqKVxcdTAwMjZyZXEsIDAsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb21tYW5kLmMtNTE1LVxcdFxcdFxcdCAgICBIT1NUX0NNRF9QT1dFUlNBVkVfVElNRU9VVF9NUyk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuYz01MTg9aW50IG1tODF4X2NtZF9jZmdfcW9zKHN0cnVjdCBtbTgxeCAqbW9ycywgc3RydWN0IG1tODF4X3F1ZXVlX3BhcmFtcyAqcGFyYW1zKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb21tYW5kLmMtNTI5LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29tbWFuZC5jOjUzMDpcXHRyZXR1cm4gbW04MXhfY21kX3R4KG1vcnMsIE5VTEwsIChzdHJ1Y3QgaG9zdF9jbWRfcmVxICopXFx1MDAyNnJlcSwgMCwgMCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb21tYW5kLmMtNTMxLX1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29tbWFuZC5jPTUzMz1pbnQgbW04MXhfY21kX3JtX2lmKHN0cnVjdCBtbTgxeCAqbW9ycywgdTE2IHZpZl9pZClcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29tbWFuZC5jLTUzOC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuYzo1Mzk6XFx0cmV0dXJuIG1tODF4X2NtZF90eChtb3JzLCBOVUxMLCAoc3RydWN0IGhvc3RfY21kX3JlcSAqKVxcdTAwMjZyZXEsIDAsIDApO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29tbWFuZC5jLTU0MC19XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuYz01NDI9aW50IG1tODF4X2NtZF9zZXRfZnJhZ190aHJlc2hvbGQoc3RydWN0IG1tODF4ICptb3JzLCB1MzIgZnJhZ190aHJlc2hvbGQpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuYy01NTAtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb21tYW5kLmM6NTUxOlxcdHJldHVybiBtbTgxeF9jbWRfdHgobW9ycywgTlVMTCwgKHN0cnVjdCBob3N0X2NtZF9yZXEgKilcXHUwMDI2cmVxLCAwLCAwKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuYy01NTItfVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb21tYW5kLmM9NTU0PWludCBtbTgxeF9jbWRfZ2V0X2Rpc2FibGVkX2NoYW5uZWxzKFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb21tYW5kLmMtNTYxLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29tbWFuZC5jOjU2MjpcXHRyZXR1cm4gbW04MXhfY21kX3R4KG1vcnMsIChzdHJ1Y3QgaG9zdF9jbWRfcmVzcCAqKXJlc3AsIFxcdTAwMjZyZXEsIHJlc3BfbGVuLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29tbWFuZC5jLTU2My1cXHRcXHRcXHQgICAgMCk7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA3VDA1OjA2OjQxLjYyMTI2NDgyNVoiLCJTZXEiOjM5LCJOZXN0aW5nIjozLCJUeXBlIjoibGxtIiwiTmFtZSI6Imttc2FuLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjo1OTQzMDk5MDEyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyBhIFBvdGVudGlhbCBPdXQtb2YtQm91bmRzIFJlYWQgaW4gYG1tODF4X2NtZF9yZXNwX3Byb2Nlc3NgKipcblxuT2theSwgbGV0J3MgYnJlYWsgdGhpcyBkb3duLiBNeSBjb25jZXJuIGhlcmUgaXMgYSBwb3RlbnRpYWwgb3V0LW9mLWJvdW5kcyByZWFkIHZ1bG5lcmFiaWxpdHkgd2l0aGluIHRoZSBgbW04MXhfY21kX3Jlc3BfcHJvY2Vzc2AgZnVuY3Rpb24uIFNwZWNpZmljYWxseSwgd2hlbiBhIHJlc3BvbnNlIFNLQiAoc29ja2V0IGJ1ZmZlcikgY29tZXMgaW4gZnJvbSB0aGUgaGFyZHdhcmUvZmlybXdhcmUsIHRoZSBjb2RlIGNhc3RzIHRoZSBTS0IncyBkYXRhIHRvIGEgYGhvc3RfY21kX3Jlc3BgIHN0cnVjdHVyZS4gVGhlIHBvdGVudGlhbCBwcm9ibGVtIGFyaXNlcyBpZiB0aGUgY2xhaW1lZCBsZW5ndGggKGBzcmNfcmVzcC1cdTAwM2VoZHIubGVuYCkgaW4gdGhhdCByZXNwb25zZSBzdHJ1Y3R1cmUgZXhjZWVkcyB0aGUgYWN0dWFsIHNpemUgb2YgdGhlIFNLQidzIGRhdGEgKGBza2ItXHUwMDNlbGVuYCkuIFdpdGhvdXQgYSBjaGVjayBsaWtlIGBsZW5ndGggPSBtaW5fdChpbnQsIGxlbmd0aCwgc2tiLVx1MDAzZWxlbik7YCwgdGhlIGBtZW1jcHlgIG9wZXJhdGlvbiB3b3VsZCBhdHRlbXB0IHRvIHJlYWQgcGFzdCB0aGUgZW5kIG9mIHRoZSBTS0IncyBhbGxvY2F0ZWQgYnVmZmVyLCBsZWFkaW5nIHRvIGFuIG91dC1vZi1ib3VuZHMgcmVhZC4gVGhpcyBpcyAqZGVmaW5pdGVseSogYW4gb3V0LW9mLWJvdW5kcyByZWFkIGJ1ZyBvbiBhbiBTS0IgYnVmZmVyLlxuXG5Ob3csIGxldCdzIHRoaW5rIGFib3V0IEtNU0FOIChLZXJuZWwgTWVtb3J5IFNhbml0aXplcikuIERvZXMgdGhpcyBjaGFuZ2UgaW50cm9kdWNlIGFueSB1bmluaXRpYWxpemVkIG1lbW9yeSByaXNrcz8gSSBuZWVkIHRvIGJlIHRob3JvdWdoLlxuXG4qICAgKipVbmluaXRpYWxpemVkIG1lbW9yeToqKiBObywgdGhpcyBwYXRjaCBhY3R1YWxseSAqcHJldmVudHMqIHJlYWRpbmcgcGFzdCB0aGUgYm91bmRzIG9mIHRoZSBTS0IuIEl0IHJlZHVjZXMgdGhlIGNvcHkgbGVuZ3RoIHRvIHJlc3BlY3QgdGhlIGJ1ZmZlcidzIHNpemUuIE5vIG5ldyB1bmluaXRpYWxpemVkIG1lbW9yeSBpcyBpbnRyb2R1Y2VkLlxuKiAgICoqVXNlciBzcGFjZSBleHBvc3VyZToqKiBUaGlzIGlzIGFuIGludGVybmFsIGNvbW1hbmQgcmVzcG9uc2UgaGFuZGxpbmcgcGF0aCB3aXRoaW4gdGhlIGtlcm5lbC4gVGhlIGNvcGllZCBkYXRhIGlzbid0IGJlaW5nIGRpcmVjdGx5IHNlbnQgdG8gdXNlciBzcGFjZS4gSXQgaXMgb25seSBwYXNzZWQgYmV0d2VlbiBrZXJuZWwgY29tbWFuZCBzdHJ1Y3R1cmVzLiBObyB1c2VyIHNwYWNlIGV4cG9zdXJlIGhlcmUuXG4qICAgKipVbmluaXRpYWxpemVkIHZhcmlhYmxlczoqKiBObywgdGhlIGZpeCBkb2Vzbid0IGRlcGVuZCBvbiB1bmluaXRpYWxpemVkIHZhcmlhYmxlcy5cbiogICAqKkV4cG9zZWQgdW5pbml0aWFsaXplZCBmaWVsZHMvcGFkZGluZzoqKiBEZWZpbml0ZWx5IG5vdC4gVGhpcyBwYXRjaCBwcmV2ZW50cyByZWFkcyBvZiB1bmluaXRpYWxpemVkIG1lbW9yeSwgaXQgZG9lcyBub3QgY3JlYXRlIGFueS5cblxuQWxyaWdodCwgbGV0J3MgbWV0aG9kaWNhbGx5IGNoZWNrIHRoZSBOZWVkc0tNU0FOIGNyaXRlcmlhOlxuXG4xLiAgKipLZXJuZWwgc3RydWN0dXJlcyB0byB1c2VyIHNwYWNlOioqIE5vdCBhcHBsaWNhYmxlLlxuMi4gICoqQ29uZGl0aW9uYWwgbG9naWMgb24gdW5pbml0aWFsaXplZCB2YXJpYWJsZXM6KiogTm90IGFwcGxpY2FibGUuXG4zLiAgKipDb21wbGV4IGRhdGEgc3RydWN0dXJlcyB3aXRoIHVuaW5pdGlhbGl6ZWQgZmllbGRzOioqIE5vdCBhcHBsaWNhYmxlLlxuNC4gICoqQm91bmRzIGNoZWNrcyBleHBvc2luZyB1bmluaXRpYWxpemVkIGJ5dGVzOioqIE5vdCBhcHBsaWNhYmxlLCBpdCAqcHJldmVudHMqIG91dC1vZi1ib3VuZHMgcmVhZHMsIHdoaWNoIGFyZSBhIGRpZmZlcmVudCB0aGluZy5cblxuR2l2ZW4gYWxsIG9mIHRoYXQsIHRoaXMgYnVnIGZhbGxzIHNxdWFyZWx5IHdpdGhpbiB0aGUgY2FwYWJpbGl0aWVzIG9mIEtBU0FOIChLZXJuZWwgQWRkcmVzcyBTYW5pdGl6ZXIpLiBLQVNBTiBkZXRlY3RzIG91dC1vZi1ib3VuZHMgYWNjZXNzZXMuIEtNU0FOJ3MgcHVycG9zZSwgZGV0ZWN0aW5nIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHJlYWRzLCBpcyBub3QgZGlyZWN0bHkgcmVsZXZhbnQgaGVyZS4gS01TQU4gaXMgZm9jdXNlZCBvbiB0aGluZ3MgbGlrZSBkYXRhIGxlYWthZ2UgdG8gdXNlciBzcGFjZSwgd2hpY2ggaXNuJ3QgdGhlIGlzc3VlLiBLQVNBTiBpcyB0aGUgdG9vbCBmb3IgdGhpcyBwYXJ0aWN1bGFyIGpvYiwgdGhlcmVmb3JlIE5lZWRzS01TQU4gc2hvdWxkIGJlIGZhbHNlLlxuXG5MZXQncyBkbyBhIHNhbml0eSBjaGVjayBvbiB0aGUgS01TQU5SZWFzb25pbmcuIEknbGwgY29udHJhc3QgS01TQU4ncyBhbmQgS0FTQU4ncyBhcHBsaWNhYmlsaXR5OlxuXG4qICAgKipLQVNBTjoqKiBPdXQtb2YtYm91bmRzIG1lbW9yeSBhY2Nlc3NlcyBhbmQgYnVmZmVyIG92ZXJmbG93cy4gVGhpcyBidWcgaXMgYW4gb3V0LW9mLWJvdW5kcyByZWFkIGZyb20gdGhlIFNLQiBkYXRhLlxuKiAgICoqS01TQU46KiogVW5pbml0aWFsaXplZCBtZW1vcnkgcmVhZHMgYW5kIGluZm9ybWF0aW9uIGxlYWtzIHRvIHVzZXIgc3BhY2UuIFRoaXMgcGF0Y2ggZG9lc24ndCBpbnRyb2R1Y2UgYW55IG5ldyB1bmluaXRpYWxpemVkIG1lbW9yeSB2dWxuZXJhYmlsaXRpZXMuXG5cblNvLCBJJ20gY29uZmlkZW50LiBLQVNBTiBpcyB0aGUgYXBwcm9wcmlhdGUgdG9vbCBoZXJlLiBObyBuZWVkIGZvciBLTVNBTiBmdXp6aW5nLiBMZXQncyBpbnZva2UgYHNldC1yZXN1bHRzYC5cblxuXG4iLCJJbnB1dFRva2VucyI6MTA3NjIsIk91dHB1dFRva2VucyI6MTU2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NjU2LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA3VDA1OjA2OjQ3LjU2NDM2NjkxN1oiLCJTZXEiOjQwLCJOZXN0aW5nIjozLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI0MDYwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggZml4ZXMgYW4gb3V0LW9mLWJvdW5kcyBtZW1vcnkgcmVhZCBpbiBtbTgxeF9jbWRfcmVzcF9wcm9jZXNzKCkgYnkgY2FwcGluZyB0aGUgcmVzcG9uc2UgY29weSBsZW5ndGggdG8gc2tiLVxcdTAwM2VsZW4gKHByZXZlbnRpbmcgbWVtY3B5IGZyb20gcmVhZGluZyBwYXN0IHRoZSBlbmQgb2YgdGhlIHJlY2VpdmVkIHNrYiBidWZmZXIgaWYgdGhlIHJlc3BvbnNlIGhlYWRlciBsZW5ndGggY2xhaW1zIGEgbGFyZ2VyIHNpemUpLiBUaGlzIGlzc3VlIGlzIGEgY2xhc3NpYyBidWZmZXIgb3V0LW9mLWJvdW5kcyByZWFkIHdoaWNoIGlzIGRpcmVjdGx5IGRldGVjdGVkIGJ5IEtBU0FOLiBUaGUgcGF0Y2ggZG9lcyBub3QgaW50cm9kdWNlIGFueSB1bmluaXRpYWxpemVkIG1lbW9yeSBhbGxvY2F0aW9ucywgY29uZGl0aW9uYWwgYnJhbmNoZXMgYmFzZWQgb24gdW5pbml0aWFsaXplZCBkYXRhLCBvciBrZXJuZWwtdG8tdXNlciBpbmZvLWxlYWtzLiBUaGVyZWZvcmUsIHN0YW5kYXJkIEtBU0FOIGZ1enppbmcgaXMgc3VmZmljaWVudCBhbmQgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgaXMgbm90IHdhcnJhbnRlZC5cIixcbiAgXCJOZWVkc0tNU0FOXCI6IGZhbHNlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJLTVNBTlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBmaXhlcyBhbiBvdXQtb2YtYm91bmRzIG1lbW9yeSByZWFkIGluIG1tODF4X2NtZF9yZXNwX3Byb2Nlc3MoKSBieSBjYXBwaW5nIHRoZSByZXNwb25zZSBjb3B5IGxlbmd0aCB0byBza2ItXFx1MDAzZWxlbiAocHJldmVudGluZyBtZW1jcHkgZnJvbSByZWFkaW5nIHBhc3QgdGhlIGVuZCBvZiB0aGUgcmVjZWl2ZWQgc2tiIGJ1ZmZlciBpZiB0aGUgcmVzcG9uc2UgaGVhZGVyIGxlbmd0aCBjbGFpbXMgYSBsYXJnZXIgc2l6ZSkuIFRoaXMgaXNzdWUgaXMgYSBjbGFzc2ljIGJ1ZmZlciBvdXQtb2YtYm91bmRzIHJlYWQgd2hpY2ggaXMgZGlyZWN0bHkgZGV0ZWN0ZWQgYnkgS0FTQU4uIFRoZSBwYXRjaCBkb2VzIG5vdCBpbnRyb2R1Y2UgYW55IHVuaW5pdGlhbGl6ZWQgbWVtb3J5IGFsbG9jYXRpb25zLCBjb25kaXRpb25hbCBicmFuY2hlcyBiYXNlZCBvbiB1bmluaXRpYWxpemVkIGRhdGEsIG9yIGtlcm5lbC10by11c2VyIGluZm8tbGVha3MuIFRoZXJlZm9yZSwgc3RhbmRhcmQgS0FTQU4gZnV6emluZyBpcyBzdWZmaWNpZW50IGFuZCBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBpcyBub3Qgd2FycmFudGVkLlwiLFxuICBcIk5lZWRzS01TQU5cIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0udG9rZW5zIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnVG9vbER1ciA9IHN0YXRzLnRvb2wuY291bnQgPiAwID8gKHN0YXRzLnRvb2wuZHVyYXRpb24gLyBzdGF0cy50b29sLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCgkJCWNvbnN0IGxsbVN1bWFyeUNlbGxzID0gW3N0YXRzLmxsbS5jb3VudCwgc3RhdHMubGxtLnRva2VucywgYXZnTGxtVG9rZW4sIHN0YXRzLmxsbS5kdXJhdGlvbiwgYXZnTGxtRHVyXTsKCQkJY29uc3QgdG9vbFN1bW1hcnlDZWxscyA9IFtzdGF0cy50b29sLmNvdW50LCBzdGF0cy50b29sLmR1cmF0aW9uLCBhdmdUb29sRHVyXTsKCgkJCWNvbnN0IGxsbVN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xsbV9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJbGxtU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IGxsbVRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJbGxtU3VtYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCWxsbVRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCWxsbVN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKGxsbVRyKTsKCgkJCWNvbnN0IHRvb2xTdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b29sX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQl0b29sU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IHRvb2xUciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCXRvb2xTdW1tYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCXRvb2xUci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQl0b29sU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQodG9vbFRyKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgZmlsdGVyZWRTdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gWyJsbG0iLCAidG9vbCJdLmluY2x1ZGVzKGQuVHlwZSkpOwoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdEdXJhdGlvbicpOwoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOyAKCgkJCWZpbHRlcmVkU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCQoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7CgkJCQlsZXQgdG9vbHRpcCA9IHMuTmFtZTsKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iICYmIHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCQkJCWRhdGEuYWRkUm93KFtgJHtzLlNlcX1gLCBkdXIsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUaW1lIENvbnN1bXB0aW9uIG9mIExMTS9Ub29sIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0vVG9vbCBTdGVwcycsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdTZWNvbmRzJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkdXJhdGlvbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgbGxtU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IGQuVHlwZSA9PT0gImxsbSIpOwoJCQlpZiAobGxtU3RlcHMubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdUb2tlbnMnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAnc3R5bGUnfSk7CQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOwkKCgkJCWNvbnN0IGFnZW50Q29sb3JzID0ge307CgkJCWNvbnN0IHBhbGV0dGUgPSBbJyM0Mjg1RjQnLCAnI0RCNDQzNycsICcjRjRCNDAwJywgJyMwRjlENTgnLCAnI0FCNDdCQycsICcjMDBBQ0MxJ107CgkJCWxldCBjb2xvcklkeCA9IDA7CgkJCWNvbnN0IGFnZW50TExNQ291bnRzID0ge307CgkJCWxsbVN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQlpZiAoIWFnZW50Q29sb3JzW3MuTmFtZV0pIHsKCQkJCQlhZ2VudENvbG9yc1tzLk5hbWVdID0gcGFsZXR0ZVtjb2xvcklkeCAlIHBhbGV0dGUubGVuZ3RoXTsKCQkJCQljb2xvcklkeCsrOwoJCQkJfQoKCQkJCWFnZW50TExNQ291bnRzW3MuTmFtZV0gPSAoYWdlbnRMTE1Db3VudHNbcy5OYW1lXSB8fCAwKSArIDE7CgkJCQljb25zdCBsYWJlbCA9IGAke3MuTmFtZX0tJHthZ2VudExMTUNvdW50c1tzLk5hbWVdfWA7CgkJCQljb25zdCB0b3RhbFRva2VucyA9IHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnM7CgkJCQljb25zdCBzdHlsZSA9IGBjb2xvcjogJHthZ2VudENvbG9yc1tzLk5hbWVdfWA7CgkJCQlsZXQgdG9vbHRpcCA9IGBUb3RhbCBUb2tlbnM6ICR7dG90YWxUb2tlbnN9XG4oSW46ICR7cy5JbnB1dFRva2Vuc30sIE91dDogJHtzLk91dHB1dFRva2Vuc30sIFRob3VnaHRzOiAke3MuT3V0cHV0VGhvdWdodHNUb2tlbnN9KWA7CgkJCQlpZiAocy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoKCQkJCWRhdGEuYWRkUm93KFtsYWJlbCwgdG90YWxUb2tlbnMsIHN0eWxlLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVG9rZW4gQ29uc3VtcHRpb24gYnkgTExNIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0gQ2FsbCBTZXF1ZW5jZScsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdDb25zdW1lZCBUb2tlbnMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rva2VuX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgkJbGV0IGFsbEV4cGFuZGVkID0gZmFsc2U7CgkJZnVuY3Rpb24gdG9nZ2xlQWxsRGV0YWlscygpIHsKCQkJYWxsRXhwYW5kZWQgPSAhYWxsRXhwYW5kZWQ7CgkJCWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ2RldGFpbHMnKS5mb3JFYWNoKGQgPT4gewoJCQkJaWYgKGFsbEV4cGFuZGVkKSBkLnNldEF0dHJpYnV0ZSgnb3BlbicsICcnKTsKCQkJCWVsc2UgZC5yZW1vdmVBdHRyaWJ1dGUoJ29wZW4nKTsKCQkJfSk7CgkJfQoJPC9zY3JpcHQ+CgoKPC9ib2R5Pgo8L2h0bWw+Cg==" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowrqb6m[1] Phase: Succeeded StartedAt: 2026-09-07 05:06:59 +0000 UTC FinishedAt: 2026-09-07 05:06:59 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrqb6m[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-09-07 05:06:59 +0000 UTC FinishedAt: 2026-09-07 05:06:59 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrqb6m[2] Phase: Succeeded StartedAt: 2026-09-07 05:06:59 +0000 UTC FinishedAt: 2026-09-07 06:44:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrqb6m[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"31f961de2f90fbf52eb2d4e15b3eeaa09f9b4fc2","config_name":"upstream-apparmor-kasan.config","enable_configs":["MM81X","MM81X_USB","WLAN_VENDOR_MORSEMICRO","MAC80211","USB"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mm81x_cmd_resp_process"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"31f961de2f90fbf52eb2d4e15b3eeaa09f9b4fc2","config_name":"upstream-apparmor-kasan.config","enable_configs":["MM81X","MM81X_USB","WLAN_VENDOR_MORSEMICRO","MAC80211","USB"],"series_id":"b7c3a4a7-ca7c-479a-96a2-19f2cdc7dcec","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN) Phase: Succeeded StartedAt: 2026-09-07 05:06:59 +0000 UTC FinishedAt: 2026-09-07 06:44:00 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"31f961de2f90fbf52eb2d4e15b3eeaa09f9b4fc2","config_name":"upstream-apparmor-kasan.config","enable_configs":["MM81X","MM81X_USB","WLAN_VENDOR_MORSEMICRO","MAC80211","USB"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},"fuzz":{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mm81x_cmd_resp_process"],"skip_cover_check":false},"patched":{"arch":"amd64","commit_hash":"31f961de2f90fbf52eb2d4e15b3eeaa09f9b4fc2","config_name":"upstream-apparmor-kasan.config","enable_configs":["MM81X","MM81X_USB","WLAN_VENDOR_MORSEMICRO","MAC80211","USB"],"series_id":"b7c3a4a7-ca7c-479a-96a2-19f2cdc7dcec","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},"retest":null,"track":"KASAN"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: nil --------- Name: series-workflowrqb6m[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"31f961de2f90fbf52eb2d4e15b3eeaa09f9b4fc2","config_name":"upstream-apparmor-kasan.config","enable_configs":["MM81X","MM81X_USB","WLAN_VENDOR_MORSEMICRO","MAC80211","USB"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mm81x_cmd_resp_process"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"31f961de2f90fbf52eb2d4e15b3eeaa09f9b4fc2","config_name":"upstream-apparmor-kasan.config","enable_configs":["MM81X","MM81X_USB","WLAN_VENDOR_MORSEMICRO","MAC80211","USB"],"series_id":"b7c3a4a7-ca7c-479a-96a2-19f2cdc7dcec","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[0] Phase: Succeeded StartedAt: 2026-09-07 05:06:59 +0000 UTC FinishedAt: 2026-09-07 05:07:09 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrqb6m[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"31f961de2f90fbf52eb2d4e15b3eeaa09f9b4fc2","config_name":"upstream-apparmor-kasan.config","enable_configs":["MM81X","MM81X_USB","WLAN_VENDOR_MORSEMICRO","MAC80211","USB"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mm81x_cmd_resp_process"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"31f961de2f90fbf52eb2d4e15b3eeaa09f9b4fc2","config_name":"upstream-apparmor-kasan.config","enable_configs":["MM81X","MM81X_USB","WLAN_VENDOR_MORSEMICRO","MAC80211","USB"],"series_id":"b7c3a4a7-ca7c-479a-96a2-19f2cdc7dcec","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[0].save-base-req Phase: Succeeded StartedAt: 2026-09-07 05:06:59 +0000 UTC FinishedAt: 2026-09-07 05:07:06 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"31f961de2f90fbf52eb2d4e15b3eeaa09f9b4fc2","config_name":"upstream-apparmor-kasan.config","enable_configs":["MM81X","MM81X_USB","WLAN_VENDOR_MORSEMICRO","MAC80211","USB"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowrqb6m/series-workflowrqb6m-convert-artifact-936909851/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowrqb6m[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"31f961de2f90fbf52eb2d4e15b3eeaa09f9b4fc2","config_name":"upstream-apparmor-kasan.config","enable_configs":["MM81X","MM81X_USB","WLAN_VENDOR_MORSEMICRO","MAC80211","USB"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mm81x_cmd_resp_process"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"31f961de2f90fbf52eb2d4e15b3eeaa09f9b4fc2","config_name":"upstream-apparmor-kasan.config","enable_configs":["MM81X","MM81X_USB","WLAN_VENDOR_MORSEMICRO","MAC80211","USB"],"series_id":"b7c3a4a7-ca7c-479a-96a2-19f2cdc7dcec","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[1] Phase: Succeeded StartedAt: 2026-09-07 05:07:09 +0000 UTC FinishedAt: 2026-09-07 05:27:03 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrqb6m[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"31f961de2f90fbf52eb2d4e15b3eeaa09f9b4fc2","config_name":"upstream-apparmor-kasan.config","enable_configs":["MM81X","MM81X_USB","WLAN_VENDOR_MORSEMICRO","MAC80211","USB"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mm81x_cmd_resp_process"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"31f961de2f90fbf52eb2d4e15b3eeaa09f9b4fc2","config_name":"upstream-apparmor-kasan.config","enable_configs":["MM81X","MM81X_USB","WLAN_VENDOR_MORSEMICRO","MAC80211","USB"],"series_id":"b7c3a4a7-ca7c-479a-96a2-19f2cdc7dcec","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[1].base-build Phase: Succeeded StartedAt: 2026-09-07 05:07:09 +0000 UTC FinishedAt: 2026-09-07 05:27:03 +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:*829d2e17-8388-437d-a0c7-c41a76557afa,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-workflowrqb6m/series-workflowrqb6m-convert-artifact-936909851/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": "80e99507-023b-46ad-9137-b51309db5b43", "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-workflowrqb6m/series-workflowrqb6m-build-action-1225631833/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowrqb6m[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"31f961de2f90fbf52eb2d4e15b3eeaa09f9b4fc2","config_name":"upstream-apparmor-kasan.config","enable_configs":["MM81X","MM81X_USB","WLAN_VENDOR_MORSEMICRO","MAC80211","USB"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mm81x_cmd_resp_process"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"31f961de2f90fbf52eb2d4e15b3eeaa09f9b4fc2","config_name":"upstream-apparmor-kasan.config","enable_configs":["MM81X","MM81X_USB","WLAN_VENDOR_MORSEMICRO","MAC80211","USB"],"series_id":"b7c3a4a7-ca7c-479a-96a2-19f2cdc7dcec","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[1].base-build(0) Phase: Succeeded StartedAt: 2026-09-07 05:07:09 +0000 UTC FinishedAt: 2026-09-07 05:26:42 +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:*829d2e17-8388-437d-a0c7-c41a76557afa,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-workflowrqb6m/series-workflowrqb6m-convert-artifact-936909851/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": "80e99507-023b-46ad-9137-b51309db5b43", "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-workflowrqb6m/series-workflowrqb6m-build-action-1225631833/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowrqb6m[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"31f961de2f90fbf52eb2d4e15b3eeaa09f9b4fc2","config_name":"upstream-apparmor-kasan.config","enable_configs":["MM81X","MM81X_USB","WLAN_VENDOR_MORSEMICRO","MAC80211","USB"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mm81x_cmd_resp_process"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"31f961de2f90fbf52eb2d4e15b3eeaa09f9b4fc2","config_name":"upstream-apparmor-kasan.config","enable_configs":["MM81X","MM81X_USB","WLAN_VENDOR_MORSEMICRO","MAC80211","USB"],"series_id":"b7c3a4a7-ca7c-479a-96a2-19f2cdc7dcec","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[2] Phase: Succeeded StartedAt: 2026-09-07 05:27:03 +0000 UTC FinishedAt: 2026-09-07 05:27:03 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrqb6m[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"31f961de2f90fbf52eb2d4e15b3eeaa09f9b4fc2","config_name":"upstream-apparmor-kasan.config","enable_configs":["MM81X","MM81X_USB","WLAN_VENDOR_MORSEMICRO","MAC80211","USB"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mm81x_cmd_resp_process"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"31f961de2f90fbf52eb2d4e15b3eeaa09f9b4fc2","config_name":"upstream-apparmor-kasan.config","enable_configs":["MM81X","MM81X_USB","WLAN_VENDOR_MORSEMICRO","MAC80211","USB"],"series_id":"b7c3a4a7-ca7c-479a-96a2-19f2cdc7dcec","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[2].abort-if-base-build-failed Phase: Skipped StartedAt: 2026-09-07 05:27:03 +0000 UTC FinishedAt: 2026-09-07 05:27:03 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrqb6m[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"31f961de2f90fbf52eb2d4e15b3eeaa09f9b4fc2","config_name":"upstream-apparmor-kasan.config","enable_configs":["MM81X","MM81X_USB","WLAN_VENDOR_MORSEMICRO","MAC80211","USB"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mm81x_cmd_resp_process"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"31f961de2f90fbf52eb2d4e15b3eeaa09f9b4fc2","config_name":"upstream-apparmor-kasan.config","enable_configs":["MM81X","MM81X_USB","WLAN_VENDOR_MORSEMICRO","MAC80211","USB"],"series_id":"b7c3a4a7-ca7c-479a-96a2-19f2cdc7dcec","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[3] Phase: Succeeded StartedAt: 2026-09-07 05:27:03 +0000 UTC FinishedAt: 2026-09-07 05:27:13 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrqb6m[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"31f961de2f90fbf52eb2d4e15b3eeaa09f9b4fc2","config_name":"upstream-apparmor-kasan.config","enable_configs":["MM81X","MM81X_USB","WLAN_VENDOR_MORSEMICRO","MAC80211","USB"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mm81x_cmd_resp_process"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"31f961de2f90fbf52eb2d4e15b3eeaa09f9b4fc2","config_name":"upstream-apparmor-kasan.config","enable_configs":["MM81X","MM81X_USB","WLAN_VENDOR_MORSEMICRO","MAC80211","USB"],"series_id":"b7c3a4a7-ca7c-479a-96a2-19f2cdc7dcec","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[3].save-patched-req Phase: Succeeded StartedAt: 2026-09-07 05:27:03 +0000 UTC FinishedAt: 2026-09-07 05:27:08 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"31f961de2f90fbf52eb2d4e15b3eeaa09f9b4fc2","config_name":"upstream-apparmor-kasan.config","enable_configs":["MM81X","MM81X_USB","WLAN_VENDOR_MORSEMICRO","MAC80211","USB"],"series_id":"b7c3a4a7-ca7c-479a-96a2-19f2cdc7dcec","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowrqb6m/series-workflowrqb6m-convert-artifact-1490561650/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowrqb6m[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"31f961de2f90fbf52eb2d4e15b3eeaa09f9b4fc2","config_name":"upstream-apparmor-kasan.config","enable_configs":["MM81X","MM81X_USB","WLAN_VENDOR_MORSEMICRO","MAC80211","USB"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mm81x_cmd_resp_process"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"31f961de2f90fbf52eb2d4e15b3eeaa09f9b4fc2","config_name":"upstream-apparmor-kasan.config","enable_configs":["MM81X","MM81X_USB","WLAN_VENDOR_MORSEMICRO","MAC80211","USB"],"series_id":"b7c3a4a7-ca7c-479a-96a2-19f2cdc7dcec","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[4] Phase: Succeeded StartedAt: 2026-09-07 05:27:13 +0000 UTC FinishedAt: 2026-09-07 05:29:09 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrqb6m[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"31f961de2f90fbf52eb2d4e15b3eeaa09f9b4fc2","config_name":"upstream-apparmor-kasan.config","enable_configs":["MM81X","MM81X_USB","WLAN_VENDOR_MORSEMICRO","MAC80211","USB"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mm81x_cmd_resp_process"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"31f961de2f90fbf52eb2d4e15b3eeaa09f9b4fc2","config_name":"upstream-apparmor-kasan.config","enable_configs":["MM81X","MM81X_USB","WLAN_VENDOR_MORSEMICRO","MAC80211","USB"],"series_id":"b7c3a4a7-ca7c-479a-96a2-19f2cdc7dcec","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[4].boot-test-base Phase: Succeeded StartedAt: 2026-09-07 05:27:13 +0000 UTC FinishedAt: 2026-09-07 05:28:59 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*80e99507-023b-46ad-9137-b51309db5b43,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-workflowrqb6m/series-workflowrqb6m-build-action-1225631833/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-workflowrqb6m[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"31f961de2f90fbf52eb2d4e15b3eeaa09f9b4fc2","config_name":"upstream-apparmor-kasan.config","enable_configs":["MM81X","MM81X_USB","WLAN_VENDOR_MORSEMICRO","MAC80211","USB"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mm81x_cmd_resp_process"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"31f961de2f90fbf52eb2d4e15b3eeaa09f9b4fc2","config_name":"upstream-apparmor-kasan.config","enable_configs":["MM81X","MM81X_USB","WLAN_VENDOR_MORSEMICRO","MAC80211","USB"],"series_id":"b7c3a4a7-ca7c-479a-96a2-19f2cdc7dcec","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[5] Phase: Succeeded StartedAt: 2026-09-07 05:29:09 +0000 UTC FinishedAt: 2026-09-07 05:29:09 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrqb6m[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"31f961de2f90fbf52eb2d4e15b3eeaa09f9b4fc2","config_name":"upstream-apparmor-kasan.config","enable_configs":["MM81X","MM81X_USB","WLAN_VENDOR_MORSEMICRO","MAC80211","USB"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mm81x_cmd_resp_process"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"31f961de2f90fbf52eb2d4e15b3eeaa09f9b4fc2","config_name":"upstream-apparmor-kasan.config","enable_configs":["MM81X","MM81X_USB","WLAN_VENDOR_MORSEMICRO","MAC80211","USB"],"series_id":"b7c3a4a7-ca7c-479a-96a2-19f2cdc7dcec","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[5].abort-if-base-boot-failed Phase: Skipped StartedAt: 2026-09-07 05:29:09 +0000 UTC FinishedAt: 2026-09-07 05:29:09 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrqb6m[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"31f961de2f90fbf52eb2d4e15b3eeaa09f9b4fc2","config_name":"upstream-apparmor-kasan.config","enable_configs":["MM81X","MM81X_USB","WLAN_VENDOR_MORSEMICRO","MAC80211","USB"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mm81x_cmd_resp_process"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"31f961de2f90fbf52eb2d4e15b3eeaa09f9b4fc2","config_name":"upstream-apparmor-kasan.config","enable_configs":["MM81X","MM81X_USB","WLAN_VENDOR_MORSEMICRO","MAC80211","USB"],"series_id":"b7c3a4a7-ca7c-479a-96a2-19f2cdc7dcec","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[6] Phase: Succeeded StartedAt: 2026-09-07 05:29:09 +0000 UTC FinishedAt: 2026-09-07 05:45:03 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrqb6m[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"31f961de2f90fbf52eb2d4e15b3eeaa09f9b4fc2","config_name":"upstream-apparmor-kasan.config","enable_configs":["MM81X","MM81X_USB","WLAN_VENDOR_MORSEMICRO","MAC80211","USB"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mm81x_cmd_resp_process"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"31f961de2f90fbf52eb2d4e15b3eeaa09f9b4fc2","config_name":"upstream-apparmor-kasan.config","enable_configs":["MM81X","MM81X_USB","WLAN_VENDOR_MORSEMICRO","MAC80211","USB"],"series_id":"b7c3a4a7-ca7c-479a-96a2-19f2cdc7dcec","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[6].patched-build Phase: Succeeded StartedAt: 2026-09-07 05:29:09 +0000 UTC FinishedAt: 2026-09-07 05:45: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:*829d2e17-8388-437d-a0c7-c41a76557afa,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-workflowrqb6m/series-workflowrqb6m-convert-artifact-1490561650/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": "4e8e4e24-d494-4d31-9670-58f425897ae7", "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-workflowrqb6m/series-workflowrqb6m-build-action-2156276230/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowrqb6m[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"31f961de2f90fbf52eb2d4e15b3eeaa09f9b4fc2","config_name":"upstream-apparmor-kasan.config","enable_configs":["MM81X","MM81X_USB","WLAN_VENDOR_MORSEMICRO","MAC80211","USB"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mm81x_cmd_resp_process"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"31f961de2f90fbf52eb2d4e15b3eeaa09f9b4fc2","config_name":"upstream-apparmor-kasan.config","enable_configs":["MM81X","MM81X_USB","WLAN_VENDOR_MORSEMICRO","MAC80211","USB"],"series_id":"b7c3a4a7-ca7c-479a-96a2-19f2cdc7dcec","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[6].patched-build(0) Phase: Succeeded StartedAt: 2026-09-07 05:29:09 +0000 UTC FinishedAt: 2026-09-07 05:44: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:*829d2e17-8388-437d-a0c7-c41a76557afa,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-workflowrqb6m/series-workflowrqb6m-convert-artifact-1490561650/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": "4e8e4e24-d494-4d31-9670-58f425897ae7", "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-workflowrqb6m/series-workflowrqb6m-build-action-2156276230/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowrqb6m[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"31f961de2f90fbf52eb2d4e15b3eeaa09f9b4fc2","config_name":"upstream-apparmor-kasan.config","enable_configs":["MM81X","MM81X_USB","WLAN_VENDOR_MORSEMICRO","MAC80211","USB"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mm81x_cmd_resp_process"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"31f961de2f90fbf52eb2d4e15b3eeaa09f9b4fc2","config_name":"upstream-apparmor-kasan.config","enable_configs":["MM81X","MM81X_USB","WLAN_VENDOR_MORSEMICRO","MAC80211","USB"],"series_id":"b7c3a4a7-ca7c-479a-96a2-19f2cdc7dcec","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[7] Phase: Succeeded StartedAt: 2026-09-07 05:45:03 +0000 UTC FinishedAt: 2026-09-07 05:45:03 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrqb6m[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"31f961de2f90fbf52eb2d4e15b3eeaa09f9b4fc2","config_name":"upstream-apparmor-kasan.config","enable_configs":["MM81X","MM81X_USB","WLAN_VENDOR_MORSEMICRO","MAC80211","USB"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mm81x_cmd_resp_process"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"31f961de2f90fbf52eb2d4e15b3eeaa09f9b4fc2","config_name":"upstream-apparmor-kasan.config","enable_configs":["MM81X","MM81X_USB","WLAN_VENDOR_MORSEMICRO","MAC80211","USB"],"series_id":"b7c3a4a7-ca7c-479a-96a2-19f2cdc7dcec","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[7].abort-if-patched-build-failed Phase: Skipped StartedAt: 2026-09-07 05:45:03 +0000 UTC FinishedAt: 2026-09-07 05:45:03 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrqb6m[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"31f961de2f90fbf52eb2d4e15b3eeaa09f9b4fc2","config_name":"upstream-apparmor-kasan.config","enable_configs":["MM81X","MM81X_USB","WLAN_VENDOR_MORSEMICRO","MAC80211","USB"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mm81x_cmd_resp_process"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"31f961de2f90fbf52eb2d4e15b3eeaa09f9b4fc2","config_name":"upstream-apparmor-kasan.config","enable_configs":["MM81X","MM81X_USB","WLAN_VENDOR_MORSEMICRO","MAC80211","USB"],"series_id":"b7c3a4a7-ca7c-479a-96a2-19f2cdc7dcec","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[8] Phase: Succeeded StartedAt: 2026-09-07 05:45:03 +0000 UTC FinishedAt: 2026-09-07 05:47:18 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrqb6m[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"31f961de2f90fbf52eb2d4e15b3eeaa09f9b4fc2","config_name":"upstream-apparmor-kasan.config","enable_configs":["MM81X","MM81X_USB","WLAN_VENDOR_MORSEMICRO","MAC80211","USB"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mm81x_cmd_resp_process"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"31f961de2f90fbf52eb2d4e15b3eeaa09f9b4fc2","config_name":"upstream-apparmor-kasan.config","enable_configs":["MM81X","MM81X_USB","WLAN_VENDOR_MORSEMICRO","MAC80211","USB"],"series_id":"b7c3a4a7-ca7c-479a-96a2-19f2cdc7dcec","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[8].boot-test-patched Phase: Succeeded StartedAt: 2026-09-07 05:45:03 +0000 UTC FinishedAt: 2026-09-07 05:47:08 +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:*4e8e4e24-d494-4d31-9670-58f425897ae7,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-workflowrqb6m/series-workflowrqb6m-build-action-2156276230/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-workflowrqb6m[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"31f961de2f90fbf52eb2d4e15b3eeaa09f9b4fc2","config_name":"upstream-apparmor-kasan.config","enable_configs":["MM81X","MM81X_USB","WLAN_VENDOR_MORSEMICRO","MAC80211","USB"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mm81x_cmd_resp_process"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"31f961de2f90fbf52eb2d4e15b3eeaa09f9b4fc2","config_name":"upstream-apparmor-kasan.config","enable_configs":["MM81X","MM81X_USB","WLAN_VENDOR_MORSEMICRO","MAC80211","USB"],"series_id":"b7c3a4a7-ca7c-479a-96a2-19f2cdc7dcec","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[10] Phase: Succeeded StartedAt: 2026-09-07 05:47:18 +0000 UTC FinishedAt: 2026-09-07 06:44:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrqb6m[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"31f961de2f90fbf52eb2d4e15b3eeaa09f9b4fc2","config_name":"upstream-apparmor-kasan.config","enable_configs":["MM81X","MM81X_USB","WLAN_VENDOR_MORSEMICRO","MAC80211","USB"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mm81x_cmd_resp_process"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"31f961de2f90fbf52eb2d4e15b3eeaa09f9b4fc2","config_name":"upstream-apparmor-kasan.config","enable_configs":["MM81X","MM81X_USB","WLAN_VENDOR_MORSEMICRO","MAC80211","USB"],"series_id":"b7c3a4a7-ca7c-479a-96a2-19f2cdc7dcec","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[10].run-fuzz Phase: Succeeded StartedAt: 2026-09-07 05:47:18 +0000 UTC FinishedAt: 2026-09-07 06:44: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":["mm81x_cmd_resp_process"],"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:*80e99507-023b-46ad-9137-b51309db5b43,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*4e8e4e24-d494-4d31-9670-58f425897ae7,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-workflowrqb6m/series-workflowrqb6m-build-action-1225631833/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-workflowrqb6m/series-workflowrqb6m-build-action-2156276230/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflowrqb6m[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"31f961de2f90fbf52eb2d4e15b3eeaa09f9b4fc2","config_name":"upstream-apparmor-kasan.config","enable_configs":["MM81X","MM81X_USB","WLAN_VENDOR_MORSEMICRO","MAC80211","USB"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mm81x_cmd_resp_process"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"31f961de2f90fbf52eb2d4e15b3eeaa09f9b4fc2","config_name":"upstream-apparmor-kasan.config","enable_configs":["MM81X","MM81X_USB","WLAN_VENDOR_MORSEMICRO","MAC80211","USB"],"series_id":"b7c3a4a7-ca7c-479a-96a2-19f2cdc7dcec","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[10].run-fuzz[0] Phase: Succeeded StartedAt: 2026-09-07 05:47:18 +0000 UTC FinishedAt: 2026-09-07 05:47:28 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrqb6m[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"31f961de2f90fbf52eb2d4e15b3eeaa09f9b4fc2","config_name":"upstream-apparmor-kasan.config","enable_configs":["MM81X","MM81X_USB","WLAN_VENDOR_MORSEMICRO","MAC80211","USB"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mm81x_cmd_resp_process"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"31f961de2f90fbf52eb2d4e15b3eeaa09f9b4fc2","config_name":"upstream-apparmor-kasan.config","enable_configs":["MM81X","MM81X_USB","WLAN_VENDOR_MORSEMICRO","MAC80211","USB"],"series_id":"b7c3a4a7-ca7c-479a-96a2-19f2cdc7dcec","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[10].run-fuzz[0].save-fuzz-config Phase: Succeeded StartedAt: 2026-09-07 05:47:18 +0000 UTC FinishedAt: 2026-09-07 05:47:23 +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":["mm81x_cmd_resp_process"],"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-workflowrqb6m/series-workflowrqb6m-convert-artifact-2384530375/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowrqb6m[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"31f961de2f90fbf52eb2d4e15b3eeaa09f9b4fc2","config_name":"upstream-apparmor-kasan.config","enable_configs":["MM81X","MM81X_USB","WLAN_VENDOR_MORSEMICRO","MAC80211","USB"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mm81x_cmd_resp_process"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"31f961de2f90fbf52eb2d4e15b3eeaa09f9b4fc2","config_name":"upstream-apparmor-kasan.config","enable_configs":["MM81X","MM81X_USB","WLAN_VENDOR_MORSEMICRO","MAC80211","USB"],"series_id":"b7c3a4a7-ca7c-479a-96a2-19f2cdc7dcec","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[10].run-retest Phase: Skipped StartedAt: 2026-09-07 05:47:18 +0000 UTC FinishedAt: 2026-09-07 05:47:18 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrqb6m[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"31f961de2f90fbf52eb2d4e15b3eeaa09f9b4fc2","config_name":"upstream-apparmor-kasan.config","enable_configs":["MM81X","MM81X_USB","WLAN_VENDOR_MORSEMICRO","MAC80211","USB"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mm81x_cmd_resp_process"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"31f961de2f90fbf52eb2d4e15b3eeaa09f9b4fc2","config_name":"upstream-apparmor-kasan.config","enable_configs":["MM81X","MM81X_USB","WLAN_VENDOR_MORSEMICRO","MAC80211","USB"],"series_id":"b7c3a4a7-ca7c-479a-96a2-19f2cdc7dcec","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[9] Phase: Succeeded StartedAt: 2026-09-07 05:47:18 +0000 UTC FinishedAt: 2026-09-07 05:47:18 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrqb6m[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"31f961de2f90fbf52eb2d4e15b3eeaa09f9b4fc2","config_name":"upstream-apparmor-kasan.config","enable_configs":["MM81X","MM81X_USB","WLAN_VENDOR_MORSEMICRO","MAC80211","USB"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mm81x_cmd_resp_process"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"31f961de2f90fbf52eb2d4e15b3eeaa09f9b4fc2","config_name":"upstream-apparmor-kasan.config","enable_configs":["MM81X","MM81X_USB","WLAN_VENDOR_MORSEMICRO","MAC80211","USB"],"series_id":"b7c3a4a7-ca7c-479a-96a2-19f2cdc7dcec","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[9].abort-if-patched-boot-failed Phase: Skipped StartedAt: 2026-09-07 05:47:18 +0000 UTC FinishedAt: 2026-09-07 05:47:18 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrqb6m[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"31f961de2f90fbf52eb2d4e15b3eeaa09f9b4fc2","config_name":"upstream-apparmor-kasan.config","enable_configs":["MM81X","MM81X_USB","WLAN_VENDOR_MORSEMICRO","MAC80211","USB"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mm81x_cmd_resp_process"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"31f961de2f90fbf52eb2d4e15b3eeaa09f9b4fc2","config_name":"upstream-apparmor-kasan.config","enable_configs":["MM81X","MM81X_USB","WLAN_VENDOR_MORSEMICRO","MAC80211","USB"],"series_id":"b7c3a4a7-ca7c-479a-96a2-19f2cdc7dcec","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[10].run-fuzz[1] Phase: Succeeded StartedAt: 2026-09-07 05:47:28 +0000 UTC FinishedAt: 2026-09-07 06:44:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrqb6m[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"31f961de2f90fbf52eb2d4e15b3eeaa09f9b4fc2","config_name":"upstream-apparmor-kasan.config","enable_configs":["MM81X","MM81X_USB","WLAN_VENDOR_MORSEMICRO","MAC80211","USB"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mm81x_cmd_resp_process"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"31f961de2f90fbf52eb2d4e15b3eeaa09f9b4fc2","config_name":"upstream-apparmor-kasan.config","enable_configs":["MM81X","MM81X_USB","WLAN_VENDOR_MORSEMICRO","MAC80211","USB"],"series_id":"b7c3a4a7-ca7c-479a-96a2-19f2cdc7dcec","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[10].run-fuzz[1].fuzz Phase: Succeeded StartedAt: 2026-09-07 05:47:28 +0000 UTC FinishedAt: 2026-09-07 06:43:50 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*80e99507-023b-46ad-9137-b51309db5b43,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*4e8e4e24-d494-4d31-9670-58f425897ae7,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-workflowrqb6m/series-workflowrqb6m-build-action-1225631833/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-workflowrqb6m/series-workflowrqb6m-build-action-2156276230/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-workflowrqb6m/series-workflowrqb6m-convert-artifact-2384530375/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,}