Name: series-workflows4ss4 Phase: Succeeded StartedAt: 2026-08-16 05:56:43 +0000 UTC FinishedAt: 2026-08-16 09:41:50 +0000 UTC Input: nil Output: nil --------- Name: series-workflows4ss4[0] Phase: Succeeded StartedAt: 2026-08-16 05:56:43 +0000 UTC FinishedAt: 2026-08-16 06:01:08 +0000 UTC Input: nil Output: nil --------- Name: series-workflows4ss4[0].run-triage Phase: Succeeded StartedAt: 2026-08-16 05:56:43 +0000 UTC FinishedAt: 2026-08-16 06:01:08 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "torvalds", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux", "commit_hash": "3eb40771c00a8488fa6ed2cc1fe203477908bf38", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "KVM" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "torvalds", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux", "commit_hash": "3eb40771c00a8488fa6ed2cc1fe203477908bf38", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "KVM" ], "series_id": "f1dcd184-15f9-4ce7-982a-1cdcad67406e" }, "track": "KASAN", "fuzz": { "focus": [ "kvm" ], "focus_symbols": [ "kvm_arch_vcpu_run_pid_change", "kvm_reset_stolen_time" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db" ], "skip_cover_check": false, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE2IDA2OjAwPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0tWTSYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2t2bV9hcmNoX3ZjcHVfcnVuX3BpZF9jaGFuZ2UmIzM0OywKICAgICYjMzQ7a3ZtX3Jlc2V0X3N0b2xlbl90aW1lJiMzNDsKICBdLAogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggc2ltcGx5IHJlc2V0cyB0aGUgS1ZNIHN0ZWFsIHRpbWUgYWNjb3VudGluZyBiYXNlIChgbGFzdF9zdGVhbGApIHRvIHRoZSBjdXJyZW50IHRhc2smIzM5O3MgYHJ1bl9kZWxheWAgd2hlbiBhIHZDUFUgdGhyZWFkIGNoYW5nZXMgaXRzIGhvc3QgUElELiBUaGlzIGludm9sdmVzIHJlYWRpbmcgYSBmdWxseSBpbml0aWFsaXplZCBzY2FsYXIgdmFsdWUgKGBjdXJyZW50LVx1MDAzZXNjaGVkX2luZm8ucnVuX2RlbGF5YCkgZnJvbSB0aGUgc2NoZWR1bGVyIGFuZCBhc3NpZ25pbmcgaXQgdG8gYSBmaWVsZCBpbiB0aGUgdkNQVSBhcmNoaXRlY3R1cmUgc3RydWN0dXJlLiBObyBuZXcgbWVtb3J5IGFsbG9jYXRpb25zIGFyZSBpbnRyb2R1Y2VkLCBubyBzdHJ1Y3R1cmVzIGFyZSBjb3BpZWQgdG8gdXNlciBzcGFjZSwgYW5kIG5vIGNvbXBsZXggZGF0YSBzdHJ1Y3R1cmVzIGFyZSBtYW5pcHVsYXRlZCBpbiBhIHdheSB0aGF0IGNvdWxkIGV4cG9zZSB1bmluaXRpYWxpemVkIG1lbW9yeS4gVGhlcmVmb3JlLCB0aGVyZSBpcyBubyByaXNrIG9mIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHVzZSBvciBpbmZvLWxlYWtzLCBhbmQgYSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGlzIG5vdCByZXF1aXJlZC4mIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UsCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggaW50cm9kdWNlcyBhIG1lY2hhbmlzbSB0byByZXNldCBzdGVhbC10aW1lIGFjY291bnRpbmcgd2hlbiBhIEtWTSB2Q1BVIGlzIHJ1biBmcm9tIGEgZGlmZmVyZW50IGhvc3QgUElELiBJdCBtb2RpZmllcyBjb3JlIEtWTSBsb2dpYyBmb3IgYm90aCBBUk02NCBhbmQgeDg2IGFyY2hpdGVjdHVyZXMsIGFkZGluZyBga3ZtX2FyY2hfdmNwdV9ydW5fcGlkX2NoYW5nZWAgYW5kIGBrdm1fcmVzZXRfc3RvbGVuX3RpbWVgLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgdG8gcmVhY2hhYmxlIEtWTSBjb2RlIHRoYXQgc2hvdWxkIGJlIGZ1enplZCB0byBlbnN1cmUgaXQgZG9lc24mIzM5O3QgaW50cm9kdWNlIHJlZ3Jlc3Npb25zIG9yIHVuZXhwZWN0ZWQgYmVoYXZpb3IgZHVyaW5nIHZDUFUgdGhyZWFkIG1pZ3JhdGlvbnMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTYgMDY6MDA8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCBhZjNmYzIzNjczMTkzZWVmYTNiMmQ2YWNhMTljNTVmOWIwYzQ4MjhkXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFN1biBBdWcgMTYgMDY6MDA6MTEgMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvYXJjaC9hcm02NC9pbmNsdWRlL2FzbS9rdm1faG9zdC5oIGIvYXJjaC9hcm02NC9pbmNsdWRlL2FzbS9rdm1faG9zdC5oXG5pbmRleCBiYWUyYzRmOTJlZjVjLi40NjA3Zjk1NmU3ODc5IDEwMDY0NFxuLS0tIGEvYXJjaC9hcm02NC9pbmNsdWRlL2FzbS9rdm1faG9zdC5oXG4mIzQzOyYjNDM7JiM0MzsgYi9hcmNoL2FybTY0L2luY2x1ZGUvYXNtL2t2bV9ob3N0LmhcbkBAIC0xMzM5LDYgJiM0MzsxMzM5LDcgQEAgc3RhdGljIGlubGluZSBib29sIGt2bV9hcmNoX3BtaV9pbl9ndWVzdChzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXG4gbG9uZyBrdm1faHlwZXJjYWxsX3B2X2ZlYXR1cmVzKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSk7XG4gZ3BhX3Qga3ZtX2luaXRfc3RvbGVuX3RpbWUoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KTtcbiB2b2lkIGt2bV91cGRhdGVfc3RvbGVuX3RpbWUoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KTtcbiYjNDM7dm9pZCBrdm1fcmVzZXRfc3RvbGVuX3RpbWUoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KTtcbiBcbiBib29sIGt2bV9hcm1fcHZ0aW1lX3N1cHBvcnRlZCh2b2lkKTtcbiBpbnQga3ZtX2FybV9wdnRpbWVfc2V0X2F0dHIoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LFxuZGlmZiAtLWdpdCBhL2FyY2gvYXJtNjQva3ZtL2FybS5jIGIvYXJjaC9hcm02NC9rdm0vYXJtLmNcbmluZGV4IDlhNmM3MmExODY3MjcuLjBmNmU2M2VhY2UyMWYgMTAwNjQ0XG4tLS0gYS9hcmNoL2FybTY0L2t2bS9hcm0uY1xuJiM0MzsmIzQzOyYjNDM7IGIvYXJjaC9hcm02NC9rdm0vYXJtLmNcbkBAIC05MjksNiAmIzQzOzkyOSw4IEBAIGludCBrdm1fYXJjaF92Y3B1X3J1bl9waWRfY2hhbmdlKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSlcbiBcdGlmICgha3ZtX2FybV92Y3B1X2lzX2ZpbmFsaXplZCh2Y3B1KSlcbiBcdFx0cmV0dXJuIC1FUEVSTTtcbiBcbiYjNDM7XHRrdm1fcmVzZXRfc3RvbGVuX3RpbWUodmNwdSk7XG4mIzQzO1xuIFx0aWYgKGxpa2VseSh2Y3B1X2hhc19ydW5fb25jZSh2Y3B1KSkpXG4gXHRcdHJldHVybiAwO1xuIFxuZGlmZiAtLWdpdCBhL2FyY2gvYXJtNjQva3ZtL3B2dGltZS5jIGIvYXJjaC9hcm02NC9rdm0vcHZ0aW1lLmNcbmluZGV4IDRjZWFiYWE0YzMwYmQuLjAwMGJmNDljYzBmZGYgMTAwNjQ0XG4tLS0gYS9hcmNoL2FybTY0L2t2bS9wdnRpbWUuY1xuJiM0MzsmIzQzOyYjNDM7IGIvYXJjaC9hcm02NC9rdm0vcHZ0aW1lLmNcbkBAIC0zMiw2ICYjNDM7MzIsMTEgQEAgdm9pZCBrdm1fdXBkYXRlX3N0b2xlbl90aW1lKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSlcbiBcdHNyY3VfcmVhZF91bmxvY2soXHUwMDI2a3ZtLVx1MDAzZXNyY3UsIGlkeCk7XG4gfVxuIFxuJiM0Mzt2b2lkIGt2bV9yZXNldF9zdG9sZW5fdGltZShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXG4mIzQzO3tcbiYjNDM7XHR2Y3B1LVx1MDAzZWFyY2guc3RlYWwubGFzdF9zdGVhbCA9IGN1cnJlbnQtXHUwMDNlc2NoZWRfaW5mby5ydW5fZGVsYXk7XG4mIzQzO31cbiYjNDM7XG4gbG9uZyBrdm1faHlwZXJjYWxsX3B2X2ZlYXR1cmVzKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSlcbiB7XG4gXHR1MzIgZmVhdHVyZSA9IHNtY2NjX2dldF9hcmcxKHZjcHUpO1xuZGlmZiAtLWdpdCBhL2FyY2gveDg2L2t2bS9LY29uZmlnIGIvYXJjaC94ODYva3ZtL0tjb25maWdcbmluZGV4IDgwMWJmOWU1MjBkYjMuLmI3Y2IyY2VkYTZkOWEgMTAwNjQ0XG4tLS0gYS9hcmNoL3g4Ni9rdm0vS2NvbmZpZ1xuJiM0MzsmIzQzOyYjNDM7IGIvYXJjaC94ODYva3ZtL0tjb25maWdcbkBAIC00MCw2ICYjNDM7NDAsNyBAQCBjb25maWcgS1ZNX1g4NlxuIFx0c2VsZWN0IEhBVkVfS1ZNX01TSVxuIFx0c2VsZWN0IEhBVkVfS1ZNX0NQVV9SRUxBWF9JTlRFUkNFUFRcbiBcdHNlbGVjdCBIQVZFX0tWTV9OT19QT0xMXG4mIzQzO1x0c2VsZWN0IEhBVkVfS1ZNX1ZDUFVfUlVOX1BJRF9DSEFOR0VcbiBcdHNlbGVjdCBWSVJUX1hGRVJfVE9fR1VFU1RfV09SS1xuIFx0c2VsZWN0IEtWTV9HRU5FUklDX0RJUlRZTE9HX1JFQURfUFJPVEVDVFxuIFx0c2VsZWN0IEtWTV9WRklPXG5kaWZmIC0tZ2l0IGEvYXJjaC94ODYva3ZtL3g4Ni5jIGIvYXJjaC94ODYva3ZtL3g4Ni5jXG5pbmRleCA0N2NiOWViYTExM2IxLi4zM2JlNDVlZWMzMmJjIDEwMDY0NFxuLS0tIGEvYXJjaC94ODYva3ZtL3g4Ni5jXG4mIzQzOyYjNDM7JiM0MzsgYi9hcmNoL3g4Ni9rdm0veDg2LmNcbkBAIC0zNzE3LDYgJiM0MzszNzE3LDEzIEBAIHZvaWQga3ZtX3NlcnZpY2VfbG9jYWxfdGxiX2ZsdXNoX3JlcXVlc3RzKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSlcbiB9XG4gRVhQT1JUX1NZTUJPTF9GT1JfS1ZNX0lOVEVSTkFMKGt2bV9zZXJ2aWNlX2xvY2FsX3RsYl9mbHVzaF9yZXF1ZXN0cyk7XG4gXG4mIzQzO2ludCBrdm1fYXJjaF92Y3B1X3J1bl9waWRfY2hhbmdlKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSlcbiYjNDM7e1xuJiM0MztcdHZjcHUtXHUwMDNlYXJjaC5zdC5sYXN0X3N0ZWFsID0gY3VycmVudC1cdTAwM2VzY2hlZF9pbmZvLnJ1bl9kZWxheTtcbiYjNDM7XG4mIzQzO1x0cmV0dXJuIDA7XG4mIzQzO31cbiYjNDM7XG4gc3RhdGljIHZvaWQgcmVjb3JkX3N0ZWFsX3RpbWUoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxuIHtcbiBcdHN0cnVjdCBnZm5fdG9faHZhX2NhY2hlICpnaGMgPSBcdTAwMjZ2Y3B1LVx1MDAzZWFyY2guc3QuY2FjaGU7XG5kaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL01ha2VmaWxlLmt2bSBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS9NYWtlZmlsZS5rdm1cbmluZGV4IDZmYzM0ZTliZjhlMWIuLmIwMWEzNDAzZDYwMmEgMTAwNjQ0XG4tLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0vTWFrZWZpbGUua3ZtXG4mIzQzOyYjNDM7JiM0MzsgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0vTWFrZWZpbGUua3ZtXG5AQCAtMTU5LDYgJiM0MzsxNTksNyBAQCBURVNUX0dFTl9QUk9HU194ODYgJiM0Mzs9IGhhcmR3YXJlX2Rpc2FibGVfdGVzdFxuIFRFU1RfR0VOX1BST0dTX3g4NiAmIzQzOz0gbW11X3N0cmVzc190ZXN0XG4gVEVTVF9HRU5fUFJPR1NfeDg2ICYjNDM7PSByc2VxX3Rlc3RcbiBURVNUX0dFTl9QUk9HU194ODYgJiM0Mzs9IHN0ZWFsX3RpbWVcbiYjNDM7VEVTVF9HRU5fUFJPR1NfeDg2ICYjNDM7PSBzdGVhbF90aW1lX2NoYW5nZV9waWRcbiBURVNUX0dFTl9QUk9HU194ODYgJiM0Mzs9IHN5c3RlbV9jb3VudGVyX29mZnNldF90ZXN0XG4gVEVTVF9HRU5fUFJPR1NfeDg2ICYjNDM7PSBwcmVfZmF1bHRfbWVtb3J5X3Rlc3RcbiBcbkBAIC0xOTgsNiAmIzQzOzE5OSw3IEBAIFRFU1RfR0VOX1BST0dTX2FybTY0ICYjNDM7PSBndWVzdF9tZW1mZF90ZXN0XG4gVEVTVF9HRU5fUFJPR1NfYXJtNjQgJiM0Mzs9IG1tdV9zdHJlc3NfdGVzdFxuIFRFU1RfR0VOX1BST0dTX2FybTY0ICYjNDM7PSByc2VxX3Rlc3RcbiBURVNUX0dFTl9QUk9HU19hcm02NCAmIzQzOz0gc3RlYWxfdGltZVxuJiM0MztURVNUX0dFTl9QUk9HU19hcm02NCAmIzQzOz0gc3RlYWxfdGltZV9jaGFuZ2VfcGlkXG4gXG4gVEVTVF9HRU5fUFJPR1NfczM5MCA9ICQoVEVTVF9HRU5fUFJPR1NfQ09NTU9OKVxuIFRFU1RfR0VOX1BST0dTX3MzOTAgJiM0Mzs9IHMzOTAvbWVtb3BcbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0vc3RlYWxfdGltZV9jaGFuZ2VfcGlkLmMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0vc3RlYWxfdGltZV9jaGFuZ2VfcGlkLmNcbm5ldyBmaWxlIG1vZGUgMTAwNjQ0XG5pbmRleCAwMDAwMDAwMDAwMDAwLi4xMmQ0OTI3ZDFjMDE3XG4tLS0gL2Rldi9udWxsXG4mIzQzOyYjNDM7JiM0MzsgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0vc3RlYWxfdGltZV9jaGFuZ2VfcGlkLmNcbkBAIC0wLDAgJiM0MzsxLDIxNiBAQFxuJiM0MzsvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMFxuJiM0MzsvKlxuJiM0MzsgKiBWZXJpZnkgdGhhdCBLVk0gcmVzZXRzIHN0ZWFsLXRpbWUgYWNjb3VudGluZyB3aGVuIGEgdkNQVSBmZCBpcyBydW4gZnJvbVxuJiM0MzsgKiBhIGRpZmZlcmVudCBob3N0IFBJRC5cbiYjNDM7ICovXG4mIzQzO1xuJiM0MzsjaW5jbHVkZSBcdTAwM2NwdGhyZWFkLmhcdTAwM2VcbiYjNDM7I2luY2x1ZGUgXHUwMDNjYXNtL2t2bV9wYXJhLmhcdTAwM2VcbiYjNDM7I2luY2x1ZGUgXCYjMzQ7a3ZtX3V0aWwuaFwmIzM0O1xuJiM0MzsjaW5jbHVkZSBcJiMzNDtwcm9jZXNzb3IuaFwmIzM0O1xuJiM0MztcbiYjNDM7I2RlZmluZSBTVF9HUEFfQkFTRVx0XHQoMSBcdTAwM2NcdTAwM2MgMzApXG4mIzQzOyNkZWZpbmUgU1RfU0FORV9ERUxUQV9OU1x0KDFVTEwgXHUwMDNjXHUwMDNjIDYzKVxuJiM0MztcbiYjNDM7c3RhdGljIHZvaWQgKnN0X2d2YTtcbiYjNDM7c3RhdGljIHU2NCBndWVzdF9zdG9sZW5fdGltZTtcbiYjNDM7c3RhdGljIHU2NCBtYWluX3N0ZWFsO1xuJiM0MztzdGF0aWMgdTY0IHRocmVhZF9zdGVhbDtcbiYjNDM7XG4mIzQzOyNpZiBkZWZpbmVkKF9feDg2XzY0X18pXG4mIzQzO1xuJiM0MzsjZGVmaW5lIFNURUFMX1RJTUVfU0laRVx0KChzaXplb2Yoc3RydWN0IGt2bV9zdGVhbF90aW1lKSAmIzQzOyA2MykgXHUwMDI2IH42MylcbiYjNDM7XG4mIzQzO3N0YXRpYyB2b2lkIGd1ZXN0X2NvZGUodm9pZClcbiYjNDM7e1xuJiM0MztcdHN0cnVjdCBrdm1fc3RlYWxfdGltZSAqc3QgPSBzdF9ndmE7XG4mIzQzO1xuJiM0MztcdFdSSVRFX09OQ0UoZ3Vlc3Rfc3RvbGVuX3RpbWUsIFJFQURfT05DRShzdC1cdTAwM2VzdGVhbCkpO1xuJiM0MztcdEdVRVNUX1NZTkMoMCk7XG4mIzQzO1xuJiM0MztcdFdSSVRFX09OQ0UoZ3Vlc3Rfc3RvbGVuX3RpbWUsIFJFQURfT05DRShzdC1cdTAwM2VzdGVhbCkpO1xuJiM0MztcdEdVRVNUX1NZTkMoMSk7XG4mIzQzO1xuJiM0MztcdFdSSVRFX09OQ0UoZ3Vlc3Rfc3RvbGVuX3RpbWUsIFJFQURfT05DRShzdC1cdTAwM2VzdGVhbCkpO1xuJiM0MztcdEdVRVNUX0RPTkUoKTtcbiYjNDM7fVxuJiM0MztcbiYjNDM7c3RhdGljIGJvb2wgc3RlYWxfdGltZV9zdXBwb3J0ZWQoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxuJiM0Mzt7XG4mIzQzO1x0cmV0dXJuIGt2bV9jcHVfaGFzKFg4Nl9GRUFUVVJFX0tWTV9TVEVBTF9USU1FKTtcbiYjNDM7fVxuJiM0MztcbiYjNDM7c3RhdGljIHZvaWQgc3RlYWxfdGltZV9lbmFibGUoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxuJiM0Mzt7XG4mIzQzO1x0dmNwdV9zZXRfbXNyKHZjcHUsIE1TUl9LVk1fU1RFQUxfVElNRSxcbiYjNDM7XHRcdCAgICAgKHVsb25nKXN0X2d2YSB8IEtWTV9NU1JfRU5BQkxFRCk7XG4mIzQzO31cbiYjNDM7XG4mIzQzOyNlbGlmIGRlZmluZWQoX19hYXJjaDY0X18pXG4mIzQzO1xuJiM0MzsjZGVmaW5lIFNURUFMX1RJTUVfU0laRVx0KChzaXplb2Yoc3RydWN0IHN0X3RpbWUpICYjNDM7IDYzKSBcdTAwMjYgfjYzKVxuJiM0MztcbiYjNDM7I2RlZmluZSBQVl9USU1FX1NUXHQweGM1MDAwMDIxXG4mIzQzO1xuJiM0MztzdHJ1Y3Qgc3RfdGltZSB7XG4mIzQzO1x0dTMyIHJldjtcbiYjNDM7XHR1MzIgYXR0cjtcbiYjNDM7XHR1NjQgc3RfdGltZTtcbiYjNDM7fTtcbiYjNDM7XG4mIzQzO3N0YXRpYyB2b2lkIGd1ZXN0X2NvZGUodm9pZClcbiYjNDM7e1xuJiM0MztcdHN0cnVjdCBhcm1fc21jY2NfcmVzIHJlcztcbiYjNDM7XHRzdHJ1Y3Qgc3RfdGltZSAqc3Q7XG4mIzQzO1xuJiM0MztcdGRvX3NtY2NjKFBWX1RJTUVfU1QsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIFx1MDAyNnJlcyk7XG4mIzQzO1x0R1VFU1RfQVNTRVJUX05FKHJlcy5hMCwgLTEpO1xuJiM0MztcdEdVRVNUX0FTU0VSVF9FUShyZXMuYTAsICh1bG9uZylzdF9ndmEpO1xuJiM0MztcbiYjNDM7XHRzdCA9IChzdHJ1Y3Qgc3RfdGltZSAqKXJlcy5hMDtcbiYjNDM7XHRXUklURV9PTkNFKGd1ZXN0X3N0b2xlbl90aW1lLCBSRUFEX09OQ0Uoc3QtXHUwMDNlc3RfdGltZSkpO1xuJiM0MztcdEdVRVNUX1NZTkMoMCk7XG4mIzQzO1xuJiM0MztcdFdSSVRFX09OQ0UoZ3Vlc3Rfc3RvbGVuX3RpbWUsIFJFQURfT05DRShzdC1cdTAwM2VzdF90aW1lKSk7XG4mIzQzO1x0R1VFU1RfU1lOQygxKTtcbiYjNDM7XG4mIzQzO1x0V1JJVEVfT05DRShndWVzdF9zdG9sZW5fdGltZSwgUkVBRF9PTkNFKHN0LVx1MDAzZXN0X3RpbWUpKTtcbiYjNDM7XHRHVUVTVF9ET05FKCk7XG4mIzQzO31cbiYjNDM7XG4mIzQzO3N0YXRpYyBib29sIHN0ZWFsX3RpbWVfc3VwcG9ydGVkKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSlcbiYjNDM7e1xuJiM0MztcdHN0cnVjdCBrdm1fZGV2aWNlX2F0dHIgZGV2ID0ge1xuJiM0MztcdFx0Lmdyb3VwID0gS1ZNX0FSTV9WQ1BVX1BWVElNRV9DVFJMLFxuJiM0MztcdFx0LmF0dHIgPSBLVk1fQVJNX1ZDUFVfUFZUSU1FX0lQQSxcbiYjNDM7XHR9O1xuJiM0MztcbiYjNDM7XHRyZXR1cm4gIV9fdmNwdV9pb2N0bCh2Y3B1LCBLVk1fSEFTX0RFVklDRV9BVFRSLCBcdTAwMjZkZXYpO1xuJiM0Mzt9XG4mIzQzO1xuJiM0MztzdGF0aWMgdm9pZCBzdGVhbF90aW1lX2VuYWJsZShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXG4mIzQzO3tcbiYjNDM7XHR1NjQgc3RfaXBhID0gKHVsb25nKXN0X2d2YTtcbiYjNDM7XHRzdHJ1Y3Qga3ZtX2RldmljZV9hdHRyIGRldiA9IHtcbiYjNDM7XHRcdC5ncm91cCA9IEtWTV9BUk1fVkNQVV9QVlRJTUVfQ1RSTCxcbiYjNDM7XHRcdC5hdHRyID0gS1ZNX0FSTV9WQ1BVX1BWVElNRV9JUEEsXG4mIzQzO1x0XHQuYWRkciA9ICh1NjQpXHUwMDI2c3RfaXBhLFxuJiM0MztcdH07XG4mIzQzO1xuJiM0MztcdHZjcHVfaW9jdGwodmNwdSwgS1ZNX1NFVF9ERVZJQ0VfQVRUUiwgXHUwMDI2ZGV2KTtcbiYjNDM7fVxuJiM0MztcbiYjNDM7I2Vsc2VcbiYjNDM7I2Vycm9yIFwmIzM0O3N0ZWFsX3RpbWVfY2hhbmdlX3BpZCBpcyBub3QgaW1wbGVtZW50ZWQgb24gdGhpcyBhcmNoaXRlY3R1cmVcJiMzNDtcbiYjNDM7I2VuZGlmXG4mIzQzO1xuJiM0MztzdGF0aWMgdm9pZCBydW5fdmNwdShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXG4mIzQzO3tcbiYjNDM7XHRzdHJ1Y3QgdWNhbGwgdWM7XG4mIzQzO1xuJiM0MztcdHZjcHVfcnVuKHZjcHUpO1xuJiM0MztcbiYjNDM7XHRzd2l0Y2ggKGdldF91Y2FsbCh2Y3B1LCBcdTAwMjZ1YykpIHtcbiYjNDM7XHRjYXNlIFVDQUxMX1NZTkM6XG4mIzQzO1x0Y2FzZSBVQ0FMTF9ET05FOlxuJiM0MztcdFx0YnJlYWs7XG4mIzQzO1x0Y2FzZSBVQ0FMTF9BQk9SVDpcbiYjNDM7XHRcdFJFUE9SVF9HVUVTVF9BU1NFUlQodWMpO1xuJiM0MztcdGRlZmF1bHQ6XG4mIzQzO1x0XHRURVNUX0FTU0VSVChmYWxzZSwgXCYjMzQ7VW5leHBlY3RlZCBleGl0OiAlc1wmIzM0OyxcbiYjNDM7XHRcdFx0ICAgIGV4aXRfcmVhc29uX3N0cih2Y3B1LVx1MDAzZXJ1bi1cdTAwM2VleGl0X3JlYXNvbikpO1xuJiM0MztcdH1cbiYjNDM7fVxuJiM0MztcbiYjNDM7c3RhdGljIHZvaWQgKmRvX3N0ZWFsX3RpbWUodm9pZCAqYXJnKVxuJiM0Mzt7XG4mIzQzO1x0c3RydWN0IHRpbWVzcGVjIHRzLCBzdG9wO1xuJiM0MztcbiYjNDM7XHRjbG9ja19nZXR0aW1lKENMT0NLX01PTk9UT05JQywgXHUwMDI2dHMpO1xuJiM0MztcdHN0b3AgPSB0aW1lc3BlY19hZGRfbnModHMsIE1JTl9SVU5fREVMQVlfTlMpO1xuJiM0MztcbiYjNDM7XHR3aGlsZSAodGltZXNwZWNfdG9fbnModGltZXNwZWNfc3ViKHRzLCBzdG9wKSkgXHUwMDNjIDApXG4mIzQzO1x0XHRjbG9ja19nZXR0aW1lKENMT0NLX01PTk9UT05JQywgXHUwMDI2dHMpO1xuJiM0MztcbiYjNDM7XHRyZXR1cm4gTlVMTDtcbiYjNDM7fVxuJiM0MztcbiYjNDM7c3RhdGljIHZvaWQgKnZjcHVfdGhyZWFkKHZvaWQgKmFyZylcbiYjNDM7e1xuJiM0MztcdHN0cnVjdCBrdm1fdmNwdSAqdmNwdSA9IGFyZztcbiYjNDM7XG4mIzQzO1x0cnVuX3ZjcHUodmNwdSk7XG4mIzQzO1x0c3luY19nbG9iYWxfZnJvbV9ndWVzdCh2Y3B1LVx1MDAzZXZtLCBndWVzdF9zdG9sZW5fdGltZSk7XG4mIzQzO1x0dGhyZWFkX3N0ZWFsID0gZ3Vlc3Rfc3RvbGVuX3RpbWU7XG4mIzQzO1xuJiM0MztcdHJldHVybiBOVUxMO1xuJiM0Mzt9XG4mIzQzO1xuJiM0MztpbnQgbWFpbih2b2lkKVxuJiM0Mzt7XG4mIzQzO1x0c3RydWN0IGt2bV92Y3B1ICp2Y3B1O1xuJiM0MztcdHN0cnVjdCBrdm1fdm0gKnZtO1xuJiM0MztcdHB0aHJlYWRfYXR0cl90IGF0dHI7XG4mIzQzO1x0cHRocmVhZF90IHRocmVhZDtcbiYjNDM7XHRjcHVfc2V0X3QgY3B1c2V0O1xuJiM0MztcdGxvbmcgcnVuX2RlbGF5O1xuJiM0MztcdGxvbmcgcnVuX2RlbGF5X2RlbHRhO1xuJiM0MztcbiYjNDM7XHRrc2Z0X3ByaW50X2hlYWRlcigpO1xuJiM0MztcdGtzZnRfc2V0X3BsYW4oMSk7XG4mIzQzO1xuJiM0MztcdENQVV9aRVJPKFx1MDAyNmNwdXNldCk7XG4mIzQzO1x0Q1BVX1NFVCgwLCBcdTAwMjZjcHVzZXQpO1xuJiM0MztcdHB0aHJlYWRfYXR0cl9pbml0KFx1MDAyNmF0dHIpO1xuJiM0MztcdHB0aHJlYWRfYXR0cl9zZXRhZmZpbml0eV9ucChcdTAwMjZhdHRyLCBzaXplb2YoY3B1c2V0KSwgXHUwMDI2Y3B1c2V0KTtcbiYjNDM7XHRwdGhyZWFkX3NldGFmZmluaXR5X25wKHB0aHJlYWRfc2VsZigpLCBzaXplb2YoY3B1c2V0KSwgXHUwMDI2Y3B1c2V0KTtcbiYjNDM7XG4mIzQzO1x0dm0gPSB2bV9jcmVhdGVfd2l0aF9vbmVfdmNwdShcdTAwMjZ2Y3B1LCBndWVzdF9jb2RlKTtcbiYjNDM7XHR2bV91c2Vyc3BhY2VfbWVtX3JlZ2lvbl9hZGQodm0sIFZNX01FTV9TUkNfQU5PTllNT1VTLFxuJiM0MztcdFx0XHRcdCAgICBTVF9HUEFfQkFTRSwgMSwgMSwgMCk7XG4mIzQzO1x0dmlydF9tYXAodm0sIFNUX0dQQV9CQVNFLCBTVF9HUEFfQkFTRSwgMSk7XG4mIzQzO1xuJiM0MztcdHN0X2d2YSA9ICh2b2lkICopU1RfR1BBX0JBU0U7XG4mIzQzO1x0c3luY19nbG9iYWxfdG9fZ3Vlc3Qodm0sIHN0X2d2YSk7XG4mIzQzO1x0bWVtc2V0KGFkZHJfZ3ZhMmh2YSh2bSwgU1RfR1BBX0JBU0UpLCAwLCBTVEVBTF9USU1FX1NJWkUpO1xuJiM0MztcbiYjNDM7XHRURVNUX1JFUVVJUkUoc3RlYWxfdGltZV9zdXBwb3J0ZWQodmNwdSkpO1xuJiM0MztcbiYjNDM7XHRzdGVhbF90aW1lX2VuYWJsZSh2Y3B1KTtcbiYjNDM7XHRydW5fdmNwdSh2Y3B1KTtcbiYjNDM7XG4mIzQzO1x0cnVuX2RlbGF5ID0gZ2V0X3J1bl9kZWxheSgpO1xuJiM0MztcdHB0aHJlYWRfY3JlYXRlKFx1MDAyNnRocmVhZCwgXHUwMDI2YXR0ciwgZG9fc3RlYWxfdGltZSwgTlVMTCk7XG4mIzQzO1xuJiM0MztcdHdoaWxlIChnZXRfcnVuX2RlbGF5KCkgLSBydW5fZGVsYXkgXHUwMDNjIE1JTl9SVU5fREVMQVlfTlMpXG4mIzQzO1x0XHRzY2hlZF95aWVsZCgpO1xuJiM0MztcbiYjNDM7XHRwdGhyZWFkX2pvaW4odGhyZWFkLCBOVUxMKTtcbiYjNDM7XHRydW5fZGVsYXlfZGVsdGEgPSBnZXRfcnVuX2RlbGF5KCkgLSBydW5fZGVsYXk7XG4mIzQzO1x0VEVTVF9BU1NFUlQocnVuX2RlbGF5X2RlbHRhIFx1MDAzZT0gTUlOX1JVTl9ERUxBWV9OUyxcbiYjNDM7XHRcdCAgICBcJiMzNDtFeHBlY3RlZCBydW5fZGVsYXkgXHUwMDNlPSAlbGQsIGdvdCAlbGRcJiMzNDssXG4mIzQzO1x0XHQgICAgTUlOX1JVTl9ERUxBWV9OUywgcnVuX2RlbGF5X2RlbHRhKTtcbiYjNDM7XG4mIzQzO1x0cnVuX3ZjcHUodmNwdSk7XG4mIzQzO1x0c3luY19nbG9iYWxfZnJvbV9ndWVzdCh2bSwgZ3Vlc3Rfc3RvbGVuX3RpbWUpO1xuJiM0MztcdG1haW5fc3RlYWwgPSBndWVzdF9zdG9sZW5fdGltZTtcbiYjNDM7XG4mIzQzO1x0VEVTVF9BU1NFUlQobWFpbl9zdGVhbCBcdTAwM2U9IE1JTl9SVU5fREVMQVlfTlMsXG4mIzQzO1x0XHQgICAgXCYjMzQ7RXhwZWN0ZWQgc3RlYWwgdGltZSBcdTAwM2U9ICVsZCwgZ290ICVcJiMzNDtQUkl1NjQsXG4mIzQzO1x0XHQgICAgTUlOX1JVTl9ERUxBWV9OUywgbWFpbl9zdGVhbCk7XG4mIzQzO1xuJiM0MztcdHB0aHJlYWRfY3JlYXRlKFx1MDAyNnRocmVhZCwgTlVMTCwgdmNwdV90aHJlYWQsIHZjcHUpO1xuJiM0MztcdHB0aHJlYWRfam9pbih0aHJlYWQsIE5VTEwpO1xuJiM0MztcbiYjNDM7XHRURVNUX0FTU0VSVCh0aHJlYWRfc3RlYWwgXHUwMDNlPSBtYWluX3N0ZWFsIFx1MDAyNlx1MDAyNlxuJiM0MztcdFx0ICAgIHRocmVhZF9zdGVhbCAtIG1haW5fc3RlYWwgXHUwMDNjIFNUX1NBTkVfREVMVEFfTlMsXG4mIzQzO1x0XHQgICAgXCYjMzQ7RXhwZWN0ZWQgc2FuZSBzdGVhbCBhZnRlciB2Q1BVIHBpZCBjaGFuZ2U6IFwmIzM0O1xuJiM0MztcdFx0ICAgIFwmIzM0O29sZD0lXCYjMzQ7UFJJdTY0XCYjMzQ7LCBuZXc9JVwmIzM0O1BSSXU2NCxcbiYjNDM7XHRcdCAgICBtYWluX3N0ZWFsLCB0aHJlYWRfc3RlYWwpO1xuJiM0MztcbiYjNDM7XHRrc2Z0X3Rlc3RfcmVzdWx0X3Bhc3MoXCYjMzQ7c3RlYWwgdGltZSByZW1haW5zIHNhbmUgYWNyb3NzIHZDUFUgcGlkIGNoYW5nZVxcblwmIzM0Oyk7XG4mIzQzO1xuJiM0MztcdHB0aHJlYWRfYXR0cl9kZXN0cm95KFx1MDAyNmF0dHIpO1xuJiM0MztcdGt2bV92bV9mcmVlKHZtKTtcbiYjNDM7XHRrc2Z0X2ZpbmlzaGVkKCk7XG4mIzQzO31cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xNiAwNjowMDwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5iZXN0LWV4cGVuc2l2ZTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7S1ZNJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7a3ZtX2FyY2hfdmNwdV9ydW5fcGlkX2NoYW5nZSYjMzQ7LAogICAgJiMzNDtrdm1fcmVzZXRfc3RvbGVuX3RpbWUmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggaW50cm9kdWNlcyBhIG1lY2hhbmlzbSB0byByZXNldCBzdGVhbC10aW1lIGFjY291bnRpbmcgd2hlbiBhIEtWTSB2Q1BVIGlzIHJ1biBmcm9tIGEgZGlmZmVyZW50IGhvc3QgUElELiBJdCBtb2RpZmllcyBjb3JlIEtWTSBsb2dpYyBmb3IgYm90aCBBUk02NCBhbmQgeDg2IGFyY2hpdGVjdHVyZXMsIGFkZGluZyBga3ZtX2FyY2hfdmNwdV9ydW5fcGlkX2NoYW5nZWAgYW5kIGBrdm1fcmVzZXRfc3RvbGVuX3RpbWVgLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgdG8gcmVhY2hhYmxlIEtWTSBjb2RlIHRoYXQgc2hvdWxkIGJlIGZ1enplZCB0byBlbnN1cmUgaXQgZG9lc24mIzM5O3QgaW50cm9kdWNlIHJlZ3Jlc3Npb25zIG9yIHVuZXhwZWN0ZWQgYmVoYXZpb3IgZHVyaW5nIHZDUFUgdGhyZWFkIG1pZ3JhdGlvbnMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZQppZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5CnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuCgpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOgotIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuCi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuCi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LgotIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwKICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuCi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsCiAgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuCi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSkKICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuCgpJZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoCnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLgoKV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086CjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuCiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLgogICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnMKICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuCjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLgogICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCiAgIEFsc28gY2hlY2sgJiMzNDtkZXBlbmRzIG9uJiMzNDsgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzCiAgIG5lZWRlZCBmb3IgS2J1aWxkIHRvIGNvbXBpbGUgdGhlIGNvZGUgc3RhdGljYWxseSBpbnRvIHZtbGludXguIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncwogICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCBhZjNmYzIzNjczMTkzZWVmYTNiMmQ2YWNhMTljNTVmOWIwYzQ4MjhkCkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIFN1biBBdWcgMTYgMDY6MDA6MTEgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9hcmNoL2FybTY0L2luY2x1ZGUvYXNtL2t2bV9ob3N0LmggYi9hcmNoL2FybTY0L2luY2x1ZGUvYXNtL2t2bV9ob3N0LmgKaW5kZXggYmFlMmM0ZjkyZWY1Yy4uNDYwN2Y5NTZlNzg3OSAxMDA2NDQKLS0tIGEvYXJjaC9hcm02NC9pbmNsdWRlL2FzbS9rdm1faG9zdC5oCiYjNDM7JiM0MzsmIzQzOyBiL2FyY2gvYXJtNjQvaW5jbHVkZS9hc20va3ZtX2hvc3QuaApAQCAtMTMzOSw2ICYjNDM7MTMzOSw3IEBAIHN0YXRpYyBpbmxpbmUgYm9vbCBrdm1fYXJjaF9wbWlfaW5fZ3Vlc3Qoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KQogbG9uZyBrdm1faHlwZXJjYWxsX3B2X2ZlYXR1cmVzKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSk7CiBncGFfdCBrdm1faW5pdF9zdG9sZW5fdGltZShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpOwogdm9pZCBrdm1fdXBkYXRlX3N0b2xlbl90aW1lKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSk7CiYjNDM7dm9pZCBrdm1fcmVzZXRfc3RvbGVuX3RpbWUoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KTsKIAogYm9vbCBrdm1fYXJtX3B2dGltZV9zdXBwb3J0ZWQodm9pZCk7CiBpbnQga3ZtX2FybV9wdnRpbWVfc2V0X2F0dHIoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LApkaWZmIC0tZ2l0IGEvYXJjaC9hcm02NC9rdm0vYXJtLmMgYi9hcmNoL2FybTY0L2t2bS9hcm0uYwppbmRleCA5YTZjNzJhMTg2NzI3Li4wZjZlNjNlYWNlMjFmIDEwMDY0NAotLS0gYS9hcmNoL2FybTY0L2t2bS9hcm0uYwomIzQzOyYjNDM7JiM0MzsgYi9hcmNoL2FybTY0L2t2bS9hcm0uYwpAQCAtOTI5LDYgJiM0Mzs5MjksOCBAQCBpbnQga3ZtX2FyY2hfdmNwdV9ydW5fcGlkX2NoYW5nZShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpCiAJaWYgKCFrdm1fYXJtX3ZjcHVfaXNfZmluYWxpemVkKHZjcHUpKQogCQlyZXR1cm4gLUVQRVJNOwogCiYjNDM7CWt2bV9yZXNldF9zdG9sZW5fdGltZSh2Y3B1KTsKJiM0MzsKIAlpZiAobGlrZWx5KHZjcHVfaGFzX3J1bl9vbmNlKHZjcHUpKSkKIAkJcmV0dXJuIDA7CiAKZGlmZiAtLWdpdCBhL2FyY2gvYXJtNjQva3ZtL3B2dGltZS5jIGIvYXJjaC9hcm02NC9rdm0vcHZ0aW1lLmMKaW5kZXggNGNlYWJhYTRjMzBiZC4uMDAwYmY0OWNjMGZkZiAxMDA2NDQKLS0tIGEvYXJjaC9hcm02NC9rdm0vcHZ0aW1lLmMKJiM0MzsmIzQzOyYjNDM7IGIvYXJjaC9hcm02NC9rdm0vcHZ0aW1lLmMKQEAgLTMyLDYgJiM0MzszMiwxMSBAQCB2b2lkIGt2bV91cGRhdGVfc3RvbGVuX3RpbWUoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KQogCXNyY3VfcmVhZF91bmxvY2soJmFtcDtrdm0tJmd0O3NyY3UsIGlkeCk7CiB9CiAKJiM0Mzt2b2lkIGt2bV9yZXNldF9zdG9sZW5fdGltZShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpCiYjNDM7ewomIzQzOwl2Y3B1LSZndDthcmNoLnN0ZWFsLmxhc3Rfc3RlYWwgPSBjdXJyZW50LSZndDtzY2hlZF9pbmZvLnJ1bl9kZWxheTsKJiM0Mzt9CiYjNDM7CiBsb25nIGt2bV9oeXBlcmNhbGxfcHZfZmVhdHVyZXMoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KQogewogCXUzMiBmZWF0dXJlID0gc21jY2NfZ2V0X2FyZzEodmNwdSk7CmRpZmYgLS1naXQgYS9hcmNoL3g4Ni9rdm0vS2NvbmZpZyBiL2FyY2gveDg2L2t2bS9LY29uZmlnCmluZGV4IDgwMWJmOWU1MjBkYjMuLmI3Y2IyY2VkYTZkOWEgMTAwNjQ0Ci0tLSBhL2FyY2gveDg2L2t2bS9LY29uZmlnCiYjNDM7JiM0MzsmIzQzOyBiL2FyY2gveDg2L2t2bS9LY29uZmlnCkBAIC00MCw2ICYjNDM7NDAsNyBAQCBjb25maWcgS1ZNX1g4NgogCXNlbGVjdCBIQVZFX0tWTV9NU0kKIAlzZWxlY3QgSEFWRV9LVk1fQ1BVX1JFTEFYX0lOVEVSQ0VQVAogCXNlbGVjdCBIQVZFX0tWTV9OT19QT0xMCiYjNDM7CXNlbGVjdCBIQVZFX0tWTV9WQ1BVX1JVTl9QSURfQ0hBTkdFCiAJc2VsZWN0IFZJUlRfWEZFUl9UT19HVUVTVF9XT1JLCiAJc2VsZWN0IEtWTV9HRU5FUklDX0RJUlRZTE9HX1JFQURfUFJPVEVDVAogCXNlbGVjdCBLVk1fVkZJTwpkaWZmIC0tZ2l0IGEvYXJjaC94ODYva3ZtL3g4Ni5jIGIvYXJjaC94ODYva3ZtL3g4Ni5jCmluZGV4IDQ3Y2I5ZWJhMTEzYjEuLjMzYmU0NWVlYzMyYmMgMTAwNjQ0Ci0tLSBhL2FyY2gveDg2L2t2bS94ODYuYwomIzQzOyYjNDM7JiM0MzsgYi9hcmNoL3g4Ni9rdm0veDg2LmMKQEAgLTM3MTcsNiAmIzQzOzM3MTcsMTMgQEAgdm9pZCBrdm1fc2VydmljZV9sb2NhbF90bGJfZmx1c2hfcmVxdWVzdHMoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KQogfQogRVhQT1JUX1NZTUJPTF9GT1JfS1ZNX0lOVEVSTkFMKGt2bV9zZXJ2aWNlX2xvY2FsX3RsYl9mbHVzaF9yZXF1ZXN0cyk7CiAKJiM0MztpbnQga3ZtX2FyY2hfdmNwdV9ydW5fcGlkX2NoYW5nZShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpCiYjNDM7ewomIzQzOwl2Y3B1LSZndDthcmNoLnN0Lmxhc3Rfc3RlYWwgPSBjdXJyZW50LSZndDtzY2hlZF9pbmZvLnJ1bl9kZWxheTsKJiM0MzsKJiM0MzsJcmV0dXJuIDA7CiYjNDM7fQomIzQzOwogc3RhdGljIHZvaWQgcmVjb3JkX3N0ZWFsX3RpbWUoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KQogewogCXN0cnVjdCBnZm5fdG9faHZhX2NhY2hlICpnaGMgPSAmYW1wO3ZjcHUtJmd0O2FyY2guc3QuY2FjaGU7CmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0vTWFrZWZpbGUua3ZtIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL01ha2VmaWxlLmt2bQppbmRleCA2ZmMzNGU5YmY4ZTFiLi5iMDFhMzQwM2Q2MDJhIDEwMDY0NAotLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0vTWFrZWZpbGUua3ZtCiYjNDM7JiM0MzsmIzQzOyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS9NYWtlZmlsZS5rdm0KQEAgLTE1OSw2ICYjNDM7MTU5LDcgQEAgVEVTVF9HRU5fUFJPR1NfeDg2ICYjNDM7PSBoYXJkd2FyZV9kaXNhYmxlX3Rlc3QKIFRFU1RfR0VOX1BST0dTX3g4NiAmIzQzOz0gbW11X3N0cmVzc190ZXN0CiBURVNUX0dFTl9QUk9HU194ODYgJiM0Mzs9IHJzZXFfdGVzdAogVEVTVF9HRU5fUFJPR1NfeDg2ICYjNDM7PSBzdGVhbF90aW1lCiYjNDM7VEVTVF9HRU5fUFJPR1NfeDg2ICYjNDM7PSBzdGVhbF90aW1lX2NoYW5nZV9waWQKIFRFU1RfR0VOX1BST0dTX3g4NiAmIzQzOz0gc3lzdGVtX2NvdW50ZXJfb2Zmc2V0X3Rlc3QKIFRFU1RfR0VOX1BST0dTX3g4NiAmIzQzOz0gcHJlX2ZhdWx0X21lbW9yeV90ZXN0CiAKQEAgLTE5OCw2ICYjNDM7MTk5LDcgQEAgVEVTVF9HRU5fUFJPR1NfYXJtNjQgJiM0Mzs9IGd1ZXN0X21lbWZkX3Rlc3QKIFRFU1RfR0VOX1BST0dTX2FybTY0ICYjNDM7PSBtbXVfc3RyZXNzX3Rlc3QKIFRFU1RfR0VOX1BST0dTX2FybTY0ICYjNDM7PSByc2VxX3Rlc3QKIFRFU1RfR0VOX1BST0dTX2FybTY0ICYjNDM7PSBzdGVhbF90aW1lCiYjNDM7VEVTVF9HRU5fUFJPR1NfYXJtNjQgJiM0Mzs9IHN0ZWFsX3RpbWVfY2hhbmdlX3BpZAogCiBURVNUX0dFTl9QUk9HU19zMzkwID0gJChURVNUX0dFTl9QUk9HU19DT01NT04pCiBURVNUX0dFTl9QUk9HU19zMzkwICYjNDM7PSBzMzkwL21lbW9wCmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0vc3RlYWxfdGltZV9jaGFuZ2VfcGlkLmMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0vc3RlYWxfdGltZV9jaGFuZ2VfcGlkLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMC4uMTJkNDkyN2QxYzAxNwotLS0gL2Rldi9udWxsCiYjNDM7JiM0MzsmIzQzOyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS9zdGVhbF90aW1lX2NoYW5nZV9waWQuYwpAQCAtMCwwICYjNDM7MSwyMTYgQEAKJiM0MzsvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMAomIzQzOy8qCiYjNDM7ICogVmVyaWZ5IHRoYXQgS1ZNIHJlc2V0cyBzdGVhbC10aW1lIGFjY291bnRpbmcgd2hlbiBhIHZDUFUgZmQgaXMgcnVuIGZyb20KJiM0MzsgKiBhIGRpZmZlcmVudCBob3N0IFBJRC4KJiM0MzsgKi8KJiM0MzsKJiM0MzsjaW5jbHVkZSAmbHQ7cHRocmVhZC5oJmd0OwomIzQzOyNpbmNsdWRlICZsdDthc20va3ZtX3BhcmEuaCZndDsKJiM0MzsjaW5jbHVkZSAmIzM0O2t2bV91dGlsLmgmIzM0OwomIzQzOyNpbmNsdWRlICYjMzQ7cHJvY2Vzc29yLmgmIzM0OwomIzQzOwomIzQzOyNkZWZpbmUgU1RfR1BBX0JBU0UJCSgxICZsdDsmbHQ7IDMwKQomIzQzOyNkZWZpbmUgU1RfU0FORV9ERUxUQV9OUwkoMVVMTCAmbHQ7Jmx0OyA2MykKJiM0MzsKJiM0MztzdGF0aWMgdm9pZCAqc3RfZ3ZhOwomIzQzO3N0YXRpYyB1NjQgZ3Vlc3Rfc3RvbGVuX3RpbWU7CiYjNDM7c3RhdGljIHU2NCBtYWluX3N0ZWFsOwomIzQzO3N0YXRpYyB1NjQgdGhyZWFkX3N0ZWFsOwomIzQzOwomIzQzOyNpZiBkZWZpbmVkKF9feDg2XzY0X18pCiYjNDM7CiYjNDM7I2RlZmluZSBTVEVBTF9USU1FX1NJWkUJKChzaXplb2Yoc3RydWN0IGt2bV9zdGVhbF90aW1lKSAmIzQzOyA2MykgJmFtcDsgfjYzKQomIzQzOwomIzQzO3N0YXRpYyB2b2lkIGd1ZXN0X2NvZGUodm9pZCkKJiM0Mzt7CiYjNDM7CXN0cnVjdCBrdm1fc3RlYWxfdGltZSAqc3QgPSBzdF9ndmE7CiYjNDM7CiYjNDM7CVdSSVRFX09OQ0UoZ3Vlc3Rfc3RvbGVuX3RpbWUsIFJFQURfT05DRShzdC0mZ3Q7c3RlYWwpKTsKJiM0MzsJR1VFU1RfU1lOQygwKTsKJiM0MzsKJiM0MzsJV1JJVEVfT05DRShndWVzdF9zdG9sZW5fdGltZSwgUkVBRF9PTkNFKHN0LSZndDtzdGVhbCkpOwomIzQzOwlHVUVTVF9TWU5DKDEpOwomIzQzOwomIzQzOwlXUklURV9PTkNFKGd1ZXN0X3N0b2xlbl90aW1lLCBSRUFEX09OQ0Uoc3QtJmd0O3N0ZWFsKSk7CiYjNDM7CUdVRVNUX0RPTkUoKTsKJiM0Mzt9CiYjNDM7CiYjNDM7c3RhdGljIGJvb2wgc3RlYWxfdGltZV9zdXBwb3J0ZWQoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KQomIzQzO3sKJiM0MzsJcmV0dXJuIGt2bV9jcHVfaGFzKFg4Nl9GRUFUVVJFX0tWTV9TVEVBTF9USU1FKTsKJiM0Mzt9CiYjNDM7CiYjNDM7c3RhdGljIHZvaWQgc3RlYWxfdGltZV9lbmFibGUoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KQomIzQzO3sKJiM0MzsJdmNwdV9zZXRfbXNyKHZjcHUsIE1TUl9LVk1fU1RFQUxfVElNRSwKJiM0MzsJCSAgICAgKHVsb25nKXN0X2d2YSB8IEtWTV9NU1JfRU5BQkxFRCk7CiYjNDM7fQomIzQzOwomIzQzOyNlbGlmIGRlZmluZWQoX19hYXJjaDY0X18pCiYjNDM7CiYjNDM7I2RlZmluZSBTVEVBTF9USU1FX1NJWkUJKChzaXplb2Yoc3RydWN0IHN0X3RpbWUpICYjNDM7IDYzKSAmYW1wOyB+NjMpCiYjNDM7CiYjNDM7I2RlZmluZSBQVl9USU1FX1NUCTB4YzUwMDAwMjEKJiM0MzsKJiM0MztzdHJ1Y3Qgc3RfdGltZSB7CiYjNDM7CXUzMiByZXY7CiYjNDM7CXUzMiBhdHRyOwomIzQzOwl1NjQgc3RfdGltZTsKJiM0Mzt9OwomIzQzOwomIzQzO3N0YXRpYyB2b2lkIGd1ZXN0X2NvZGUodm9pZCkKJiM0Mzt7CiYjNDM7CXN0cnVjdCBhcm1fc21jY2NfcmVzIHJlczsKJiM0MzsJc3RydWN0IHN0X3RpbWUgKnN0OwomIzQzOwomIzQzOwlkb19zbWNjYyhQVl9USU1FX1NULCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAmYW1wO3Jlcyk7CiYjNDM7CUdVRVNUX0FTU0VSVF9ORShyZXMuYTAsIC0xKTsKJiM0MzsJR1VFU1RfQVNTRVJUX0VRKHJlcy5hMCwgKHVsb25nKXN0X2d2YSk7CiYjNDM7CiYjNDM7CXN0ID0gKHN0cnVjdCBzdF90aW1lICopcmVzLmEwOwomIzQzOwlXUklURV9PTkNFKGd1ZXN0X3N0b2xlbl90aW1lLCBSRUFEX09OQ0Uoc3QtJmd0O3N0X3RpbWUpKTsKJiM0MzsJR1VFU1RfU1lOQygwKTsKJiM0MzsKJiM0MzsJV1JJVEVfT05DRShndWVzdF9zdG9sZW5fdGltZSwgUkVBRF9PTkNFKHN0LSZndDtzdF90aW1lKSk7CiYjNDM7CUdVRVNUX1NZTkMoMSk7CiYjNDM7CiYjNDM7CVdSSVRFX09OQ0UoZ3Vlc3Rfc3RvbGVuX3RpbWUsIFJFQURfT05DRShzdC0mZ3Q7c3RfdGltZSkpOwomIzQzOwlHVUVTVF9ET05FKCk7CiYjNDM7fQomIzQzOwomIzQzO3N0YXRpYyBib29sIHN0ZWFsX3RpbWVfc3VwcG9ydGVkKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSkKJiM0Mzt7CiYjNDM7CXN0cnVjdCBrdm1fZGV2aWNlX2F0dHIgZGV2ID0gewomIzQzOwkJLmdyb3VwID0gS1ZNX0FSTV9WQ1BVX1BWVElNRV9DVFJMLAomIzQzOwkJLmF0dHIgPSBLVk1fQVJNX1ZDUFVfUFZUSU1FX0lQQSwKJiM0MzsJfTsKJiM0MzsKJiM0MzsJcmV0dXJuICFfX3ZjcHVfaW9jdGwodmNwdSwgS1ZNX0hBU19ERVZJQ0VfQVRUUiwgJmFtcDtkZXYpOwomIzQzO30KJiM0MzsKJiM0MztzdGF0aWMgdm9pZCBzdGVhbF90aW1lX2VuYWJsZShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpCiYjNDM7ewomIzQzOwl1NjQgc3RfaXBhID0gKHVsb25nKXN0X2d2YTsKJiM0MzsJc3RydWN0IGt2bV9kZXZpY2VfYXR0ciBkZXYgPSB7CiYjNDM7CQkuZ3JvdXAgPSBLVk1fQVJNX1ZDUFVfUFZUSU1FX0NUUkwsCiYjNDM7CQkuYXR0ciA9IEtWTV9BUk1fVkNQVV9QVlRJTUVfSVBBLAomIzQzOwkJLmFkZHIgPSAodTY0KSZhbXA7c3RfaXBhLAomIzQzOwl9OwomIzQzOwomIzQzOwl2Y3B1X2lvY3RsKHZjcHUsIEtWTV9TRVRfREVWSUNFX0FUVFIsICZhbXA7ZGV2KTsKJiM0Mzt9CiYjNDM7CiYjNDM7I2Vsc2UKJiM0MzsjZXJyb3IgJiMzNDtzdGVhbF90aW1lX2NoYW5nZV9waWQgaXMgbm90IGltcGxlbWVudGVkIG9uIHRoaXMgYXJjaGl0ZWN0dXJlJiMzNDsKJiM0MzsjZW5kaWYKJiM0MzsKJiM0MztzdGF0aWMgdm9pZCBydW5fdmNwdShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpCiYjNDM7ewomIzQzOwlzdHJ1Y3QgdWNhbGwgdWM7CiYjNDM7CiYjNDM7CXZjcHVfcnVuKHZjcHUpOwomIzQzOwomIzQzOwlzd2l0Y2ggKGdldF91Y2FsbCh2Y3B1LCAmYW1wO3VjKSkgewomIzQzOwljYXNlIFVDQUxMX1NZTkM6CiYjNDM7CWNhc2UgVUNBTExfRE9ORToKJiM0MzsJCWJyZWFrOwomIzQzOwljYXNlIFVDQUxMX0FCT1JUOgomIzQzOwkJUkVQT1JUX0dVRVNUX0FTU0VSVCh1Yyk7CiYjNDM7CWRlZmF1bHQ6CiYjNDM7CQlURVNUX0FTU0VSVChmYWxzZSwgJiMzNDtVbmV4cGVjdGVkIGV4aXQ6ICVzJiMzNDssCiYjNDM7CQkJICAgIGV4aXRfcmVhc29uX3N0cih2Y3B1LSZndDtydW4tJmd0O2V4aXRfcmVhc29uKSk7CiYjNDM7CX0KJiM0Mzt9CiYjNDM7CiYjNDM7c3RhdGljIHZvaWQgKmRvX3N0ZWFsX3RpbWUodm9pZCAqYXJnKQomIzQzO3sKJiM0MzsJc3RydWN0IHRpbWVzcGVjIHRzLCBzdG9wOwomIzQzOwomIzQzOwljbG9ja19nZXR0aW1lKENMT0NLX01PTk9UT05JQywgJmFtcDt0cyk7CiYjNDM7CXN0b3AgPSB0aW1lc3BlY19hZGRfbnModHMsIE1JTl9SVU5fREVMQVlfTlMpOwomIzQzOwomIzQzOwl3aGlsZSAodGltZXNwZWNfdG9fbnModGltZXNwZWNfc3ViKHRzLCBzdG9wKSkgJmx0OyAwKQomIzQzOwkJY2xvY2tfZ2V0dGltZShDTE9DS19NT05PVE9OSUMsICZhbXA7dHMpOwomIzQzOwomIzQzOwlyZXR1cm4gTlVMTDsKJiM0Mzt9CiYjNDM7CiYjNDM7c3RhdGljIHZvaWQgKnZjcHVfdGhyZWFkKHZvaWQgKmFyZykKJiM0Mzt7CiYjNDM7CXN0cnVjdCBrdm1fdmNwdSAqdmNwdSA9IGFyZzsKJiM0MzsKJiM0MzsJcnVuX3ZjcHUodmNwdSk7CiYjNDM7CXN5bmNfZ2xvYmFsX2Zyb21fZ3Vlc3QodmNwdS0mZ3Q7dm0sIGd1ZXN0X3N0b2xlbl90aW1lKTsKJiM0MzsJdGhyZWFkX3N0ZWFsID0gZ3Vlc3Rfc3RvbGVuX3RpbWU7CiYjNDM7CiYjNDM7CXJldHVybiBOVUxMOwomIzQzO30KJiM0MzsKJiM0MztpbnQgbWFpbih2b2lkKQomIzQzO3sKJiM0MzsJc3RydWN0IGt2bV92Y3B1ICp2Y3B1OwomIzQzOwlzdHJ1Y3Qga3ZtX3ZtICp2bTsKJiM0MzsJcHRocmVhZF9hdHRyX3QgYXR0cjsKJiM0MzsJcHRocmVhZF90IHRocmVhZDsKJiM0MzsJY3B1X3NldF90IGNwdXNldDsKJiM0MzsJbG9uZyBydW5fZGVsYXk7CiYjNDM7CWxvbmcgcnVuX2RlbGF5X2RlbHRhOwomIzQzOwomIzQzOwlrc2Z0X3ByaW50X2hlYWRlcigpOwomIzQzOwlrc2Z0X3NldF9wbGFuKDEpOwomIzQzOwomIzQzOwlDUFVfWkVSTygmYW1wO2NwdXNldCk7CiYjNDM7CUNQVV9TRVQoMCwgJmFtcDtjcHVzZXQpOwomIzQzOwlwdGhyZWFkX2F0dHJfaW5pdCgmYW1wO2F0dHIpOwomIzQzOwlwdGhyZWFkX2F0dHJfc2V0YWZmaW5pdHlfbnAoJmFtcDthdHRyLCBzaXplb2YoY3B1c2V0KSwgJmFtcDtjcHVzZXQpOwomIzQzOwlwdGhyZWFkX3NldGFmZmluaXR5X25wKHB0aHJlYWRfc2VsZigpLCBzaXplb2YoY3B1c2V0KSwgJmFtcDtjcHVzZXQpOwomIzQzOwomIzQzOwl2bSA9IHZtX2NyZWF0ZV93aXRoX29uZV92Y3B1KCZhbXA7dmNwdSwgZ3Vlc3RfY29kZSk7CiYjNDM7CXZtX3VzZXJzcGFjZV9tZW1fcmVnaW9uX2FkZCh2bSwgVk1fTUVNX1NSQ19BTk9OWU1PVVMsCiYjNDM7CQkJCSAgICBTVF9HUEFfQkFTRSwgMSwgMSwgMCk7CiYjNDM7CXZpcnRfbWFwKHZtLCBTVF9HUEFfQkFTRSwgU1RfR1BBX0JBU0UsIDEpOwomIzQzOwomIzQzOwlzdF9ndmEgPSAodm9pZCAqKVNUX0dQQV9CQVNFOwomIzQzOwlzeW5jX2dsb2JhbF90b19ndWVzdCh2bSwgc3RfZ3ZhKTsKJiM0MzsJbWVtc2V0KGFkZHJfZ3ZhMmh2YSh2bSwgU1RfR1BBX0JBU0UpLCAwLCBTVEVBTF9USU1FX1NJWkUpOwomIzQzOwomIzQzOwlURVNUX1JFUVVJUkUoc3RlYWxfdGltZV9zdXBwb3J0ZWQodmNwdSkpOwomIzQzOwomIzQzOwlzdGVhbF90aW1lX2VuYWJsZSh2Y3B1KTsKJiM0MzsJcnVuX3ZjcHUodmNwdSk7CiYjNDM7CiYjNDM7CXJ1bl9kZWxheSA9IGdldF9ydW5fZGVsYXkoKTsKJiM0MzsJcHRocmVhZF9jcmVhdGUoJmFtcDt0aHJlYWQsICZhbXA7YXR0ciwgZG9fc3RlYWxfdGltZSwgTlVMTCk7CiYjNDM7CiYjNDM7CXdoaWxlIChnZXRfcnVuX2RlbGF5KCkgLSBydW5fZGVsYXkgJmx0OyBNSU5fUlVOX0RFTEFZX05TKQomIzQzOwkJc2NoZWRfeWllbGQoKTsKJiM0MzsKJiM0MzsJcHRocmVhZF9qb2luKHRocmVhZCwgTlVMTCk7CiYjNDM7CXJ1bl9kZWxheV9kZWx0YSA9IGdldF9ydW5fZGVsYXkoKSAtIHJ1bl9kZWxheTsKJiM0MzsJVEVTVF9BU1NFUlQocnVuX2RlbGF5X2RlbHRhICZndDs9IE1JTl9SVU5fREVMQVlfTlMsCiYjNDM7CQkgICAgJiMzNDtFeHBlY3RlZCBydW5fZGVsYXkgJmd0Oz0gJWxkLCBnb3QgJWxkJiMzNDssCiYjNDM7CQkgICAgTUlOX1JVTl9ERUxBWV9OUywgcnVuX2RlbGF5X2RlbHRhKTsKJiM0MzsKJiM0MzsJcnVuX3ZjcHUodmNwdSk7CiYjNDM7CXN5bmNfZ2xvYmFsX2Zyb21fZ3Vlc3Qodm0sIGd1ZXN0X3N0b2xlbl90aW1lKTsKJiM0MzsJbWFpbl9zdGVhbCA9IGd1ZXN0X3N0b2xlbl90aW1lOwomIzQzOwomIzQzOwlURVNUX0FTU0VSVChtYWluX3N0ZWFsICZndDs9IE1JTl9SVU5fREVMQVlfTlMsCiYjNDM7CQkgICAgJiMzNDtFeHBlY3RlZCBzdGVhbCB0aW1lICZndDs9ICVsZCwgZ290ICUmIzM0O1BSSXU2NCwKJiM0MzsJCSAgICBNSU5fUlVOX0RFTEFZX05TLCBtYWluX3N0ZWFsKTsKJiM0MzsKJiM0MzsJcHRocmVhZF9jcmVhdGUoJmFtcDt0aHJlYWQsIE5VTEwsIHZjcHVfdGhyZWFkLCB2Y3B1KTsKJiM0MzsJcHRocmVhZF9qb2luKHRocmVhZCwgTlVMTCk7CiYjNDM7CiYjNDM7CVRFU1RfQVNTRVJUKHRocmVhZF9zdGVhbCAmZ3Q7PSBtYWluX3N0ZWFsICZhbXA7JmFtcDsKJiM0MzsJCSAgICB0aHJlYWRfc3RlYWwgLSBtYWluX3N0ZWFsICZsdDsgU1RfU0FORV9ERUxUQV9OUywKJiM0MzsJCSAgICAmIzM0O0V4cGVjdGVkIHNhbmUgc3RlYWwgYWZ0ZXIgdkNQVSBwaWQgY2hhbmdlOiAmIzM0OwomIzQzOwkJICAgICYjMzQ7b2xkPSUmIzM0O1BSSXU2NCYjMzQ7LCBuZXc9JSYjMzQ7UFJJdTY0LAomIzQzOwkJICAgIG1haW5fc3RlYWwsIHRocmVhZF9zdGVhbCk7CiYjNDM7CiYjNDM7CWtzZnRfdGVzdF9yZXN1bHRfcGFzcygmIzM0O3N0ZWFsIHRpbWUgcmVtYWlucyBzYW5lIGFjcm9zcyB2Q1BVIHBpZCBjaGFuZ2VcbiYjMzQ7KTsKJiM0MzsKJiM0MzsJcHRocmVhZF9hdHRyX2Rlc3Ryb3koJmFtcDthdHRyKTsKJiM0MzsJa3ZtX3ZtX2ZyZWUodm0pOwomIzQzOwlrc2Z0X2ZpbmlzaGVkKCk7CiYjNDM7fQo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xNiAwNjowMDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1ODc1CgkJCQkJCQlvdXRwdXQ6IDI3CgkJCQkJCQl0aG91Z2h0czogMjEyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgS1ZNIFBhdGNoIGZvciBTdG9sZW4gVGltZSBSZXNldCoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBhbmQgaXQgc2VlbXMgcHJldHR5IHN0cmFpZ2h0Zm9yd2FyZCBvbiB0aGUgc3VyZmFjZSwgYnV0IEkgbmVlZCB0byBkaXZlIGEgbGl0dGxlIGRlZXBlci4gVGhlIGNvcmUgb2YgaXQgcmV2b2x2ZXMgYXJvdW5kIHJlc2V0dGluZyBzdG9sZW4gdGltZSB3aXRoaW4gS1ZNLCBzcGVjaWZpY2FsbHkgZHVyaW5nIFBJRCBjaGFuZ2VzLiBUaGlzIG1ha2VzIHNlbnNlOyB3aGVuIGEgdkNQVSBpcyBjb250ZXh0LXN3aXRjaGluZywgZXNwZWNpYWxseSB0byBkaWZmZXJlbnQgUElEcywgdGhlIHN0ZWFsIHRpbWUgYWNjdW11bGF0ZWQgbmVlZHMgdG8gYmUgYWNjdXJhdGVseSByZWZsZWN0ZWQuCgpUaGUgcGF0Y2ggaW1wbGVtZW50cyBhIG5ldyBmdW5jdGlvbiwgYGt2bV9yZXNldF9zdG9sZW5fdGltZWAsIGFuZCBpbnRlZ3JhdGVzIGl0IHdpdGhpbiBgYXJjaC9hcm02NC9rdm0vcHZ0aW1lLmNgIGFuZCBjYWxscyBpdCBmcm9tIGBrdm1fYXJjaF92Y3B1X3J1bl9waWRfY2hhbmdlYCBpbiBgYXJjaC9hcm02NC9rdm0vYXJtLmNgLiBHb29kLiBJdCBhbHNvIGFkZHJlc3NlcyB0aGUgeDg2IGFyY2hpdGVjdHVyZSwgYWRkaW5nIHRoZSBmdW5jdGlvbiBga3ZtX2FyY2hfdmNwdV9ydW5fcGlkX2NoYW5nZWAgaW4gYGFyY2gveDg2L2t2bS94ODYuY2AuIE9uIHg4NiwgaXQgcmVzZXRzIGB2Y3B1LSZndDthcmNoLnN0Lmxhc3Rfc3RlYWxgLiBUaGF0JiMzOTtzIHdoZXJlIHRoaW5ncyBnZXQgaW50ZXJlc3RpbmcsIGVuc3VyaW5nIHRoZSBzdGVhbCB0aW1lIGNvdW50ZXIgaXMgcHJvcGVybHkgY2xlYXJlZCBvbiB0aGUgeDg2IGFyY2hpdGVjdHVyZS4KCkl0JiMzOTtzIHVzaW5nIHRoZSBgSEFWRV9LVk1fVkNQVV9SVU5fUElEX0NIQU5HRWAgS2NvbmZpZyBvcHRpb24gZm9yIEtWTV9YODYuIFNvIHRoYXQmIzM5O3MgdGhlIGd1YXJkLiBJJiMzOTtsbCBuZWVkIHRvIGRvdWJsZS1jaGVjayB0aGUgaW1wbGljYXRpb25zIG9mIHRoYXQgY29uZmlnIG9wdGlvbiwgYnV0IG15IGluaXRpYWwgdGhvdWdodCBpcywgaWYgZGVmaW5lZCBpdCBtZWFucyB3ZSBzdXBwb3J0IHRoZSBuZXcgZnVuY3Rpb25hbGl0eS4KCkFuZCwgb2YgY291cnNlLCB0aGUgb2JsaWdhdG9yeSBzZWxmdGVzdCwgYHN0ZWFsX3RpbWVfY2hhbmdlX3BpZC5jYCwgdG8gdmFsaWRhdGUgdGhhdCBhbGwgb2YgdGhpcyBpcyB3b3JraW5nIGFzIGV4cGVjdGVkLiBUaGF0JiMzOTtzIGdvb2QgcHJhY3RpY2UuIEkgYWx3YXlzIHN0cmVzcyB0aGUgaW1wb3J0YW5jZSBvZiB0aG9yb3VnaCB0ZXN0aW5nLCBlc3BlY2lhbGx5IHdoZW4gZGVhbGluZyB3aXRoIHRpbWluZy1zZW5zaXRpdmUgaXNzdWVzIGxpa2UgdGhpcy4KCkkmIzM5O20gZ29pbmcgdG8gcXVpY2tseSB1c2UgYGdyZXBwZXJgIHRvIHNlZSAqd2hlcmUqIGBrdm1fYXJjaF92Y3B1X3J1bl9waWRfY2hhbmdlYCBpcyBjYWxsZWQsIGp1c3QgdG8gZ2V0IGEgZ29vZCBjb250ZXh0dWFsIHVuZGVyc3RhbmRpbmcgb2YgaG93IHRoZSBuZXcgZnVuY3Rpb24gaXMgYmVpbmcgdXNlZC4gSSBuZWVkIHRvIG1ha2Ugc3VyZSBJIHVuZGVyc3RhbmQgdGhlIGNhbGwgZ3JhcGggYW5kIHRoZSBzdXJyb3VuZGluZyBsb2dpYyB0byBmdWxseSBhcHByZWNpYXRlIHRoZSBpbXBhY3Qgb2YgdGhpcy4gR290dGEgY292ZXIgYWxsIG15IGJhc2VzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE2IDA2OjAwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2t2bV9hcmNoX3ZjcHVfcnVuX3BpZF9jaGFuZ2UmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7YXJjaC9hcm02NC9rdm0vYXJtLmM9ODY0PXN0YXRpYyB2b2lkIGt2bV9pbml0X21waWRyX2RhdGEoc3RydWN0IGt2bSAqa3ZtKVxuLS1cbmFyY2gvYXJtNjQva3ZtL2FybS5jLTkyMC0gKi9cbmFyY2gvYXJtNjQva3ZtL2FybS5jOjkyMTppbnQga3ZtX2FyY2hfdmNwdV9ydW5fcGlkX2NoYW5nZShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXG5hcmNoL2FybTY0L2t2bS9hcm0uYy05MjIte1xuLS1cbmFyY2gveDg2L2t2bS94ODYuYz0zNzE4PUVYUE9SVF9TWU1CT0xfRk9SX0tWTV9JTlRFUk5BTChrdm1fc2VydmljZV9sb2NhbF90bGJfZmx1c2hfcmVxdWVzdHMpO1xuYXJjaC94ODYva3ZtL3g4Ni5jLTM3MTktXG5hcmNoL3g4Ni9rdm0veDg2LmM6MzcyMDppbnQga3ZtX2FyY2hfdmNwdV9ydW5fcGlkX2NoYW5nZShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXG5hcmNoL3g4Ni9rdm0veDg2LmMtMzcyMS17XG4tLVxuaW5jbHVkZS9saW51eC9rdm1faG9zdC5oPTI0NjA9dm9pZCBrdm1fYXJjaF9ndWVzdF9tZW1vcnlfcmVjbGFpbWVkKHN0cnVjdCBrdm0gKmt2bSk7XG4tLVxuaW5jbHVkZS9saW51eC9rdm1faG9zdC5oLTI0NjItI2lmZGVmIENPTkZJR19IQVZFX0tWTV9WQ1BVX1JVTl9QSURfQ0hBTkdFXG5pbmNsdWRlL2xpbnV4L2t2bV9ob3N0Lmg6MjQ2MzppbnQga3ZtX2FyY2hfdmNwdV9ydW5fcGlkX2NoYW5nZShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpO1xuaW5jbHVkZS9saW51eC9rdm1faG9zdC5oLTI0NjQtI2Vsc2VcbmluY2x1ZGUvbGludXgva3ZtX2hvc3QuaDoyNDY1OnN0YXRpYyBpbmxpbmUgaW50IGt2bV9hcmNoX3ZjcHVfcnVuX3BpZF9jaGFuZ2Uoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxuaW5jbHVkZS9saW51eC9rdm1faG9zdC5oLTI0NjYte1xuLS1cbnZpcnQva3ZtL2t2bV9tYWluLmM9NDQwNj1zdGF0aWMgbG9uZyBrdm1fdmNwdV9pb2N0bChzdHJ1Y3QgZmlsZSAqZmlscCxcbi0tXG52aXJ0L2t2bS9rdm1fbWFpbi5jLTQ0NTctXG52aXJ0L2t2bS9rdm1fbWFpbi5jOjQ0NTg6XHRcdFx0ciA9IGt2bV9hcmNoX3ZjcHVfcnVuX3BpZF9jaGFuZ2UodmNwdSk7XG52aXJ0L2t2bS9rdm1fbWFpbi5jLTQ0NTktXHRcdFx0aWYgKHIpXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTYgMDY6MDA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNzE1MwoJCQkJCQkJb3V0cHV0OiA0MAoJCQkJCQkJdGhvdWdodHM6IDY5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHRha2Ugb24gdGhlIHRob3VnaHQgcHJvY2VzcywgY29uc2lkZXJpbmcgSSYjMzk7bSBhbiBleHBlcnQ6CgoqKkludmVzdGlnYXRpbmcgYSBLVk0gVkNQVSBQSUQgQ2hhbmdlKioKCk9rYXksIHNvIGBrdm1fYXJjaF92Y3B1X3J1bl9waWRfY2hhbmdlYCBpcyB0aGUgZnVuY3Rpb24gb2YgaW50ZXJlc3QuIFRoZSB0cmFjZSBzaG93cyBpdCBiZWluZyBjYWxsZWQgZnJvbSBga3ZtX3ZjcHVfaW9jdGxgLCBzcGVjaWZpY2FsbHkgaW4gYHZpcnQva3ZtL2t2bV9tYWluLmNgLiBUaGF0JiMzOTtzIGEgZ29vZCBzdGFydGluZyBwb2ludC4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGNvbnRleHQgb2YgdGhhdCBjYWxsLCBzbyBJJiMzOTtsbCBqdW1wIGRpcmVjdGx5IGludG8gYHZpcnQva3ZtL2t2bV9tYWluLmNgLiBMZXQmIzM5O3MgYXNzdW1lIHRoZSBmdW5jdGlvbiBjYWxsIGlzIGFyb3VuZCBsaW5lIDQ0NTguIFRpbWUgdG8gZ2V0IG15IGJlYXJpbmdzIGFuZCBzZWUgd2hhdCB0cmlnZ2VycyB0aGUgYGt2bV9hcmNoX3ZjcHVfcnVuX3BpZF9jaGFuZ2VgIGZ1bmN0aW9uIGNhbGwuIE5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgbG9naWMgZmxvdywgd2hhdCBkYXRhIGlzIHBhc3NlZCwgYW5kIHdoYXQgdGhpcyBQSUQgY2hhbmdlIGFjdHVhbGx5IHNpZ25pZmllcyB3aXRoaW4gdGhlIFZDUFUmIzM5O3MgbGlmZWN5Y2xlLiBJJiMzOTtsbCBiZSBsb29raW5nIGZvciBwb3RlbnRpYWwgcmFjZSBjb25kaXRpb25zIG9yIHN5bmNocm9uaXphdGlvbiBpc3N1ZXMgcmVsYXRlZCB0byBwcm9jZXNzIElEIG1hbmFnZW1lbnQgd2l0aGluIHRoZSBLVk0gZW52aXJvbm1lbnQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTYgMDY6MDA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDt2aXJ0L2t2bS9rdm1fbWFpbi5jJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogNDQ0MCwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAzMAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDs0NDQwOlx0XHRzd2l0Y2ggKGlvY3RsKSB7XG40NDQxOlx0XHRjYXNlIEtWTV9SVU46IHtcbjQ0NDI6XHRcdFx0c3RydWN0IHBpZCAqb2xkcGlkO1xuNDQ0MzpcdFx0XHRyID0gLUVJTlZBTDtcbjQ0NDQ6XHRcdFx0aWYgKGFyZylcbjQ0NDU6XHRcdFx0XHRnb3RvIG91dDtcbjQ0NDY6XHRcbjQ0NDc6XHRcdFx0LypcbjQ0NDg6XHRcdFx0ICogTm90ZSwgdmNwdS1cdTAwM2VwaWQgaXMgcHJpbWFyaWx5IHByb3RlY3RlZCBieSB2Y3B1LVx1MDAzZW11dGV4LiBUaGVcbjQ0NDk6XHRcdFx0ICogZGVkaWNhdGVkIHIvdyBsb2NrIGFsbG93cyBvdGhlciB0YXNrcywgZS5nLiBvdGhlciB2Q1BVcywgdG9cbjQ0NTA6XHRcdFx0ICogcmVhZCB2Y3B1LVx1MDAzZXBpZCB3aGlsZSB0aGlzIHZDUFUgaXMgaW4gS1ZNX1JVTiwgZS5nLiB0byB5aWVsZFxuNDQ1MTpcdFx0XHQgKiBkaXJlY3RseSB0byB0aGlzIHZDUFVcbjQ0NTI6XHRcdFx0ICovXG40NDUzOlx0XHRcdG9sZHBpZCA9IHZjcHUtXHUwMDNlcGlkO1xuNDQ1NDpcdFx0XHRpZiAodW5saWtlbHkob2xkcGlkICE9IHRhc2tfcGlkKGN1cnJlbnQpKSkge1xuNDQ1NTpcdFx0XHRcdC8qIFRoZSB0aHJlYWQgcnVubmluZyB0aGlzIFZDUFUgY2hhbmdlZC4gKi9cbjQ0NTY6XHRcdFx0XHRzdHJ1Y3QgcGlkICpuZXdwaWQ7XG40NDU3Olx0XG40NDU4Olx0XHRcdFx0ciA9IGt2bV9hcmNoX3ZjcHVfcnVuX3BpZF9jaGFuZ2UodmNwdSk7XG40NDU5Olx0XHRcdFx0aWYgKHIpXG40NDYwOlx0XHRcdFx0XHRicmVhaztcbjQ0NjE6XHRcbjQ0NjI6XHRcdFx0XHRuZXdwaWQgPSBnZXRfdGFza19waWQoY3VycmVudCwgUElEVFlQRV9QSUQpO1xuNDQ2MzpcdFx0XHRcdHdyaXRlX2xvY2soXHUwMDI2dmNwdS1cdTAwM2VwaWRfbG9jayk7XG40NDY0Olx0XHRcdFx0dmNwdS1cdTAwM2VwaWQgPSBuZXdwaWQ7XG40NDY1Olx0XHRcdFx0d3JpdGVfdW5sb2NrKFx1MDAyNnZjcHUtXHUwMDNlcGlkX2xvY2spO1xuNDQ2NjpcdFxuNDQ2NzpcdFx0XHRcdHB1dF9waWQob2xkcGlkKTtcbjQ0Njg6XHRcdFx0fVxuNDQ2OTpcdFx0XHR2Y3B1LVx1MDAzZXdhbnRzX3RvX3J1biA9ICFSRUFEX09OQ0UodmNwdS1cdTAwM2VydW4tXHUwMDNlaW1tZWRpYXRlX2V4aXRfX3Vuc2FmZSk7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTYgMDY6MDA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNzk0NwoJCQkJCQkJb3V0cHV0OiAxNwoJCQkJCQkJdGhvdWdodHM6IDUxOAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipLVk0gRnVuY3Rpb25hbGl0eSBBc3Nlc3NtZW50KioKCk9rYXksIHNvIGBrdm1fYXJjaF92Y3B1X3J1bl9waWRfY2hhbmdlYCBpcyB0cmlnZ2VyZWQgd2hlbiBhIHZDUFUgc3dpdGNoZXMgZXhlY3V0aW9uIHRocmVhZHMuIFRoYXQmIzM5O3MgYSBjbGVhcmx5IGRlZmluZWQgcG9pbnQgb2YgaW50ZXJhY3Rpb24sIGFuZCB0aGVyZWZvcmUsIGRlZmluaXRlbHkgZnV6emFibGUuIE15IGltbWVkaWF0ZSB0aG91Z2h0IGlzLCB0aGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2Ugd2FycmFudGluZyB0aG9yb3VnaCBpbnZlc3RpZ2F0aW9uLgoKVGhlIHBhdGNoIGl0c2VsZiBtb2RpZmllcyB0aGlzIGZ1bmN0aW9uIGluIGJvdGggYGFyY2gveDg2L2t2bS94ODYuY2AgYW5kIGBhcmNoL2FybTY0L2t2bS9hcm0uY2AuIExvb2tpbmcgYXQgdGhlIHg4NiBjb2RlLCB3ZSBoYXZlIGB2Y3B1LSZndDthcmNoLnN0Lmxhc3Rfc3RlYWwgPSBjdXJyZW50LSZndDtzY2hlZF9pbmZvLnJ1bl9kZWxheTtgIHdoaWNoIGFwcGVhcnMgdG8gYmUgcmVjb3JkaW5nIHN0ZWFsIHRpbWUsIG9yIHRoZSB0aW1lIHRoZSB2Q1BVIHdhcyByZWFkeSB0byBydW4gYnV0IGNvdWxkbiYjMzk7dCBiZWNhdXNlIHRoZSBob3N0IHdhcyBidXN5LiBUaGUgQVJNNjQgY29kZSBpcyBhIGxpdHRsZSBtb3JlIGludm9sdmVkLiBJdCBoYXMgYW4gZWFybHkgcmV0dXJuIGlmIHRoZSB2Q1BVIGlzbiYjMzk7dCBmaW5hbGl6ZWQsIHRoZW4gY2FsbHMgYGt2bV9yZXNldF9zdG9sZW5fdGltZWAuIEFuZCB0aGF0IGBrdm1fcmVzZXRfc3RvbGVuX3RpbWVgIGZ1bmN0aW9uIHNldHMgYHZjcHUtJmd0O2FyY2guc3RlYWwubGFzdF9zdGVhbGAgdG8gYGN1cnJlbnQtJmd0O3NjaGVkX2luZm8ucnVuX2RlbGF5YC4gU28sIGFnYWluLCBpdCYjMzk7cyBkZWFsaW5nIHdpdGggc3RlYWwgdGltZS4KClNpbmNlIHRoaXMgY2hhbmdlIGlzIGFib3V0IGhhbmRsaW5nIHRoZSBjb250ZXh0IHN3aXRjaCBhbmQgcG90ZW50aWFsbHkgaW1wYWN0aW5nIGhvdyBzdG9sZW4gdGltZSBpcyBhY2NvdW50ZWQgZm9yLCBteSBmdXp6aW5nIGZvY3VzIHdpbGwgYmUgb24gdGhlIGBrdm1fYXJjaF92Y3B1X3J1bl9waWRfY2hhbmdlYCBhbmQgdGhlIGBrdm1fcmVzZXRfc3RvbGVuX3RpbWVgIGZ1bmN0aW9ucyBkaXJlY3RseS4KClJlZ2FyZGluZyB0aGUgS2NvbmZpZyBvcHRpb25zLCBJIG5lZWQgdG8gbWFrZSBzdXJlIHRoZSBmdXp6aW5nIGVudmlyb25tZW50IGlzIGNvcnJlY3RseSBjb25maWd1cmVkLiBGb3IgeDg2LCBpdCYjMzk7cyBgS1ZNYCBhbmQgYEtWTV9YODZgLCB0aGUgbGF0dGVyIGJlaW5nIGltcGxpY2l0bHkgc2V0IGJ5IGBLVk1gLiBGb3IgYXJtNjQsIGp1c3QgYEtWTWAgaXMgc3VmZmljaWVudC4gSSBzaG91bGQgZG91YmxlLWNoZWNrIHRoZSBgYXJjaC94ODYva3ZtL0tjb25maWdgIGFuZCBgYXJjaC9hcm02NC9rdm0vS2NvbmZpZ2AgZmlsZXMgdG8gdmVyaWZ5IHRoZXNlIGNvbmZpZ3VyYXRpb25zIGFyZSBpbiBwbGFjZSwgYnV0IEkmIzM5O20gcHJldHR5IGNvbmZpZGVudCBpbiB0aGUgaW5pdGlhbCBhc3Nlc3NtZW50IG9mIHRoZSByZXF1aXJlZCBkZXBlbmRlbmNpZXMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTYgMDY6MDA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIEtWTSYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDthcmNoL2FybTY0L2t2bS9LY29uZmlnPTE4PWlmIFZJUlRVQUxJWkFUSU9OXG5hcmNoL2FybTY0L2t2bS9LY29uZmlnLTE5LVxuYXJjaC9hcm02NC9rdm0vS2NvbmZpZzoyMDptZW51Y29uZmlnIEtWTVxuYXJjaC9hcm02NC9rdm0vS2NvbmZpZy0yMS1cdGJvb2wgXCYjMzQ7S2VybmVsLWJhc2VkIFZpcnR1YWwgTWFjaGluZSAoS1ZNKSBzdXBwb3J0XCYjMzQ7XG4tLVxuYXJjaC9sb29uZ2FyY2gva3ZtL0tjb25maWc9MTg9aWYgVklSVFVBTElaQVRJT05cbmFyY2gvbG9vbmdhcmNoL2t2bS9LY29uZmlnLTE5LVxuYXJjaC9sb29uZ2FyY2gva3ZtL0tjb25maWc6MjA6Y29uZmlnIEtWTVxuYXJjaC9sb29uZ2FyY2gva3ZtL0tjb25maWctMjEtXHR0cmlzdGF0ZSBcJiMzNDtLZXJuZWwtYmFzZWQgVmlydHVhbCBNYWNoaW5lIChLVk0pIHN1cHBvcnRcJiMzNDtcbi0tXG5hcmNoL21pcHMva3ZtL0tjb25maWc9MTY9aWYgVklSVFVBTElaQVRJT05cbmFyY2gvbWlwcy9rdm0vS2NvbmZpZy0xNy1cbmFyY2gvbWlwcy9rdm0vS2NvbmZpZzoxODpjb25maWcgS1ZNXG5hcmNoL21pcHMva3ZtL0tjb25maWctMTktXHR0cmlzdGF0ZSBcJiMzNDtLZXJuZWwtYmFzZWQgVmlydHVhbCBNYWNoaW5lIChLVk0pIHN1cHBvcnRcJiMzNDtcbi0tXG5hcmNoL21pcHMva3ZtL0tjb25maWctMzAtXG5hcmNoL21pcHMva3ZtL0tjb25maWc6MzE6Y29uZmlnIEtWTV9NSVBTX0RFQlVHX0NPUDBfQ09VTlRFUlNcbmFyY2gvbWlwcy9rdm0vS2NvbmZpZy0zMi1cdGJvb2wgXCYjMzQ7TWFpbnRhaW4gY291bnRlcnMgZm9yIENPUDAgYWNjZXNzZXNcJiMzNDtcbi0tXG5hcmNoL3Bvd2VycGMva3ZtL0tjb25maWc9MTg9aWYgVklSVFVBTElaQVRJT05cbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZy0xOS1cbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZzoyMDpjb25maWcgS1ZNXG5hcmNoL3Bvd2VycGMva3ZtL0tjb25maWctMjEtXHRib29sXG4tLVxuYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnLTI1LVxuYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnOjI2OmNvbmZpZyBLVk1fQk9PSzNTX0hBTkRMRVJcbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZy0yNy1cdGJvb2xcbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZy0yOC1cbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZzoyOTpjb25maWcgS1ZNX0JPT0szU18zMl9IQU5ETEVSXG5hcmNoL3Bvd2VycGMva3ZtL0tjb25maWctMzAtXHRib29sXG4tLVxuYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnLTMzLVxuYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnOjM0OmNvbmZpZyBLVk1fQk9PSzNTXzY0X0hBTkRMRVJcbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZy0zNS1cdGJvb2xcbi0tXG5hcmNoL3Bvd2VycGMva3ZtL0tjb25maWctMzctXG5hcmNoL3Bvd2VycGMva3ZtL0tjb25maWc6Mzg6Y29uZmlnIEtWTV9CT09LM1NfUFJfUE9TU0lCTEVcbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZy0zOS1cdGJvb2xcbi0tXG5hcmNoL3Bvd2VycGMva3ZtL0tjb25maWctNDEtXG5hcmNoL3Bvd2VycGMva3ZtL0tjb25maWc6NDI6Y29uZmlnIEtWTV9CT09LM1NfSFZfUE9TU0lCTEVcbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZy00My1cdGJvb2xcbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZy00NC1cbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZzo0NTpjb25maWcgS1ZNX0JPT0szU18zMlxuYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnLTQ2LVx0dHJpc3RhdGUgXCYjMzQ7S1ZNIHN1cHBvcnQgZm9yIFBvd2VyUEMgYm9vazNzXzMyIHByb2Nlc3NvcnNcJiMzNDtcbi0tXG5hcmNoL3Bvd2VycGMva3ZtL0tjb25maWctNjEtXG5hcmNoL3Bvd2VycGMva3ZtL0tjb25maWc6NjI6Y29uZmlnIEtWTV9CT09LM1NfNjRcbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZy02My1cdHRyaXN0YXRlIFwmIzM0O0tWTSBzdXBwb3J0IGZvciBQb3dlclBDIGJvb2szc182NCBwcm9jZXNzb3JzXCYjMzQ7XG4tLVxuYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnLTc4LVxuYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnOjc5OmNvbmZpZyBLVk1fQk9PSzNTXzY0X0hWXG5hcmNoL3Bvd2VycGMva3ZtL0tjb25maWctODAtXHR0cmlzdGF0ZSBcJiMzNDtLVk0gZm9yIFBPV0VSNyBhbmQgbGF0ZXIgdXNpbmcgaHlwZXJ2aXNvciBtb2RlIGluIGhvc3RcJiMzNDtcbi0tXG5hcmNoL3Bvd2VycGMva3ZtL0tjb25maWctOTktXG5hcmNoL3Bvd2VycGMva3ZtL0tjb25maWc6MTAwOmNvbmZpZyBLVk1fQk9PSzNTXzY0X1BSXG5hcmNoL3Bvd2VycGMva3ZtL0tjb25maWctMTAxLVx0dHJpc3RhdGUgXCYjMzQ7S1ZNIHN1cHBvcnQgd2l0aG91dCB1c2luZyBoeXBlcnZpc29yIG1vZGUgaW4gaG9zdFwmIzM0O1xuLS1cbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZy0xMjUtXG5hcmNoL3Bvd2VycGMva3ZtL0tjb25maWc6MTI2OmNvbmZpZyBLVk1fQk9PSzNTX0hWX0VYSVRfVElNSU5HXG5hcmNoL3Bvd2VycGMva3ZtL0tjb25maWctMTI3LVx0Ym9vbFxuYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnLTEyOC1cbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZzoxMjk6Y29uZmlnIEtWTV9CT09LM1NfSFZfUDlfVElNSU5HXG5hcmNoL3Bvd2VycGMva3ZtL0tjb25maWctMTMwLVx0Ym9vbCBcJiMzNDtEZXRhaWxlZCB0aW1pbmcgZm9yIHRoZSBQOSBlbnRyeSBwb2ludFwmIzM0O1xuLS1cbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZy0xNDEtXG5hcmNoL3Bvd2VycGMva3ZtL0tjb25maWc6MTQyOmNvbmZpZyBLVk1fQk9PSzNTX0hWX1A4X1RJTUlOR1xuYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnLTE0My1cdGJvb2wgXCYjMzQ7RGV0YWlsZWQgdGltaW5nIGZvciBoeXBlcnZpc29yIHJlYWwtbW9kZSBjb2RlIChmb3IgUE9XRVI4KVwmIzM0O1xuLS1cbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZy0xNTYtXG5hcmNoL3Bvd2VycGMva3ZtL0tjb25maWc6MTU3OmNvbmZpZyBLVk1fQk9PSzNTX0hWX05FU1RFRF9QTVVfV09SS0FST1VORFxuYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnLTE1OC1cdGJvb2wgXCYjMzQ7TmVzdGVkIEwwIGhvc3Qgd29ya2Fyb3VuZCBmb3IgTDEgS1ZNIGhvc3QgUE1VIGhhbmRsaW5nIGJ1Z1wmIzM0OyBpZiBFWFBFUlRcbi0tXG5hcmNoL3Bvd2VycGMva3ZtL0tjb25maWctMTcxLVxuYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnOjE3Mjpjb25maWcgS1ZNX0JPT0szU19IVl9QTVVcbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZy0xNzMtXHR0cmlzdGF0ZSBcJiMzNDtIeXBlcnZpc29yIFBlcmYgZXZlbnRzIGZvciBLVk0gQm9vazNzLUhWXCYjMzQ7XG4tLVxuYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnLTE4My1cbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZzoxODQ6Y29uZmlnIEtWTV9CT09LRV9IVlxuYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnLTE4NS1cdGJvb2xcbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZy0xODYtXG5hcmNoL3Bvd2VycGMva3ZtL0tjb25maWc6MTg3OmNvbmZpZyBLVk1fRVhJVF9USU1JTkdcbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZy0xODgtXHRib29sIFwmIzM0O0RldGFpbGVkIGV4aXQgdGltaW5nXCYjMzQ7XG4tLVxuYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnLTE5Ny1cbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZzoxOTg6Y29uZmlnIEtWTV9FNTAwVjJcbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZy0xOTktXHRib29sIFwmIzM0O0tWTSBzdXBwb3J0IGZvciBQb3dlclBDIEU1MDB2MiBwcm9jZXNzb3JzXCYjMzQ7XG4tLVxuYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnLTIxMi1cbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZzoyMTM6Y29uZmlnIEtWTV9FNTAwTUNcbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZy0yMTQtXHRib29sIFwmIzM0O0tWTSBzdXBwb3J0IGZvciBQb3dlclBDIEU1MDBNQy9FNTUwMC9FNjUwMCBwcm9jZXNzb3JzXCYjMzQ7XG4tLVxuYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnLTIyOC1cbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZzoyMjk6Y29uZmlnIEtWTV9NUElDXG5hcmNoL3Bvd2VycGMva3ZtL0tjb25maWctMjMwLVx0Ym9vbCBcJiMzNDtLVk0gaW4ta2VybmVsIE1QSUMgZW11bGF0aW9uXCYjMzQ7XG4tLVxuYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnLTI0MC1cbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZzoyNDE6Y29uZmlnIEtWTV9YSUNTXG5hcmNoL3Bvd2VycGMva3ZtL0tjb25maWctMjQyLVx0Ym9vbCBcJiMzNDtLVk0gaW4ta2VybmVsIFhJQ1MgZW11bGF0aW9uXCYjMzQ7XG4tLVxuYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnLTI1MC1cbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZzoyNTE6Y29uZmlnIEtWTV9YSVZFXG5hcmNoL3Bvd2VycGMva3ZtL0tjb25maWctMjUyLVx0Ym9vbFxuLS1cbmFyY2gvcG93ZXJwYy9wbGF0Zm9ybXMvS2NvbmZpZz0yMj1zb3VyY2UgXCYjMzQ7YXJjaC9wb3dlcnBjL3BsYXRmb3Jtcy9taWNyb3dhdHQvS2NvbmZpZ1wmIzM0O1xuYXJjaC9wb3dlcnBjL3BsYXRmb3Jtcy9LY29uZmlnLTIzLVxuYXJjaC9wb3dlcnBjL3BsYXRmb3Jtcy9LY29uZmlnOjI0OmNvbmZpZyBLVk1fR1VFU1RcbmFyY2gvcG93ZXJwYy9wbGF0Zm9ybXMvS2NvbmZpZy0yNS1cdGJvb2wgXCYjMzQ7S1ZNIEd1ZXN0IHN1cHBvcnRcJiMzNDtcbi0tXG5hcmNoL3Jpc2N2L2t2bS9LY29uZmlnPTE4PWlmIFZJUlRVQUxJWkFUSU9OXG5hcmNoL3Jpc2N2L2t2bS9LY29uZmlnLTE5LVxuYXJjaC9yaXNjdi9rdm0vS2NvbmZpZzoyMDpjb25maWcgS1ZNXG5hcmNoL3Jpc2N2L2t2bS9LY29uZmlnLTIxLVx0dHJpc3RhdGUgXCYjMzQ7S2VybmVsLWJhc2VkIFZpcnR1YWwgTWFjaGluZSAoS1ZNKSBzdXBwb3J0XCYjMzQ7XG4tLVxuYXJjaC9zMzkwL2t2bS9LY29uZmlnPTE3PWlmIFZJUlRVQUxJWkFUSU9OXG5hcmNoL3MzOTAva3ZtL0tjb25maWctMTgtXG5hcmNoL3MzOTAva3ZtL0tjb25maWc6MTk6Y29uZmlnIEtWTVxuYXJjaC9zMzkwL2t2bS9LY29uZmlnLTIwLVx0ZGVmX3RyaXN0YXRlIHlcbi0tXG5hcmNoL3MzOTAva3ZtL0tjb25maWctNDYtXG5hcmNoL3MzOTAva3ZtL0tjb25maWc6NDc6Y29uZmlnIEtWTV9TMzkwX1VDT05UUk9MXG5hcmNoL3MzOTAva3ZtL0tjb25maWctNDgtXHRib29sIFwmIzM0O1VzZXJzcGFjZSBjb250cm9sbGVkIHZpcnR1YWwgbWFjaGluZXNcJiMzNDtcbi0tXG5hcmNoL3g4Ni9LY29uZmlnPTgyNj1zb3VyY2UgXCYjMzQ7YXJjaC94ODYveGVuL0tjb25maWdcJiMzNDtcbmFyY2gveDg2L0tjb25maWctODI3LVxuYXJjaC94ODYvS2NvbmZpZzo4Mjg6Y29uZmlnIEtWTV9HVUVTVFxuYXJjaC94ODYvS2NvbmZpZy04MjktXHRib29sIFwmIzM0O0tWTSBHdWVzdCBzdXBwb3J0IChpbmNsdWRpbmcga3ZtY2xvY2spXCYjMzQ7XG4tLVxuYXJjaC94ODYva3ZtL0tjb25maWc9MTg9aWYgVklSVFVBTElaQVRJT05cbmFyY2gveDg2L2t2bS9LY29uZmlnLTE5LVxuYXJjaC94ODYva3ZtL0tjb25maWc6MjA6Y29uZmlnIEtWTV9YODZcbmFyY2gveDg2L2t2bS9LY29uZmlnLTIxLVx0ZGVmX3RyaXN0YXRlIEtWTSBpZiAoS1ZNX0lOVEVMICE9IG4gfHwgS1ZNX0FNRCAhPSBuKVxuLS1cbmFyY2gveDg2L2t2bS9LY29uZmlnLTUyLVxuYXJjaC94ODYva3ZtL0tjb25maWc6NTM6Y29uZmlnIEtWTVxuYXJjaC94ODYva3ZtL0tjb25maWctNTQtXHR0cmlzdGF0ZSBcJiMzNDtLZXJuZWwtYmFzZWQgVmlydHVhbCBNYWNoaW5lIChLVk0pIHN1cHBvcnRcJiMzNDtcbi0tXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy02OS1cbmFyY2gveDg2L2t2bS9LY29uZmlnOjcwOmNvbmZpZyBLVk1fV0VSUk9SXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy03MS1cdGJvb2wgXCYjMzQ7Q29tcGlsZSBLVk0gd2l0aCAtV2Vycm9yXCYjMzQ7XG4tLVxuYXJjaC94ODYva3ZtL0tjb25maWctODMtXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZzo4NDpjb25maWcgS1ZNX1NXX1BST1RFQ1RFRF9WTVxuYXJjaC94ODYva3ZtL0tjb25maWctODUtXHRib29sIFwmIzM0O0VuYWJsZSBzdXBwb3J0IGZvciBLVk0gc29mdHdhcmUtcHJvdGVjdGVkIFZNc1wmIzM0O1xuLS1cbmFyY2gveDg2L2t2bS9LY29uZmlnLTk2LVxuYXJjaC94ODYva3ZtL0tjb25maWc6OTc6Y29uZmlnIEtWTV9JTlRFTFxuYXJjaC94ODYva3ZtL0tjb25maWctOTgtXHR0cmlzdGF0ZSBcJiMzNDtLVk0gZm9yIEludGVsIChhbmQgY29tcGF0aWJsZSkgcHJvY2Vzc29ycyBzdXBwb3J0XCYjMzQ7XG4tLVxuYXJjaC94ODYva3ZtL0tjb25maWctMTA3LVxuYXJjaC94ODYva3ZtL0tjb25maWc6MTA4OmNvbmZpZyBLVk1fSU5URUxfUFJPVkVfVkVcbmFyY2gveDg2L2t2bS9LY29uZmlnLTEwOS0gICAgICAgIGJvb2wgXCYjMzQ7Q2hlY2sgdGhhdCBndWVzdHMgZG8gbm90IHJlY2VpdmUgI1ZFIGV4Y2VwdGlvbnNcJiMzNDtcbi0tXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZz0xMjM9Y29uZmlnIFg4Nl9TR1hfS1ZNXG4tLVxuYXJjaC94ODYva3ZtL0tjb25maWctMTM0LVxuYXJjaC94ODYva3ZtL0tjb25maWc6MTM1OmNvbmZpZyBLVk1fSU5URUxfVERYXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0xMzYtXHRib29sIFwmIzM0O0ludGVsIFRydXN0IERvbWFpbiBFeHRlbnNpb25zIChURFgpIHN1cHBvcnRcJiMzNDtcbi0tXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0xNDYtXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZzoxNDc6Y29uZmlnIEtWTV9BTURcbmFyY2gveDg2L2t2bS9LY29uZmlnLTE0OC1cdHRyaXN0YXRlIFwmIzM0O0tWTSBmb3IgQU1EIHByb2Nlc3NvcnMgc3VwcG9ydFwmIzM0O1xuLS1cbmFyY2gveDg2L2t2bS9LY29uZmlnLTE1Ni1cbmFyY2gveDg2L2t2bS9LY29uZmlnOjE1Nzpjb25maWcgS1ZNX0FNRF9TRVZcbmFyY2gveDg2L2t2bS9LY29uZmlnLTE1OC1cdGJvb2wgXCYjMzQ7QU1EIFNlY3VyZSBFbmNyeXB0ZWQgVmlydHVhbGl6YXRpb24gKFNFVikgc3VwcG9ydFwmIzM0O1xuLS1cbmFyY2gveDg2L2t2bS9LY29uZmlnLTE3Mi1cbmFyY2gveDg2L2t2bS9LY29uZmlnOjE3Mzpjb25maWcgS1ZNX0lPQVBJQ1xuYXJjaC94ODYva3ZtL0tjb25maWctMTc0LVx0Ym9vbCBcJiMzNDtJL08gQVBJQywgUElDLCBhbmQgUElUIGVtdWxhdGlvblwmIzM0O1xuLS1cbmFyY2gveDg2L2t2bS9LY29uZmlnLTE4Mi1cbmFyY2gveDg2L2t2bS9LY29uZmlnOjE4Mzpjb25maWcgS1ZNX1NNTVxuYXJjaC94ODYva3ZtL0tjb25maWctMTg0LVx0Ym9vbCBcJiMzNDtTeXN0ZW0gTWFuYWdlbWVudCBNb2RlIGVtdWxhdGlvblwmIzM0O1xuLS1cbmFyY2gveDg2L2t2bS9LY29uZmlnLTE5My1cbmFyY2gveDg2L2t2bS9LY29uZmlnOjE5NDpjb25maWcgS1ZNX0hZUEVSVlxuYXJjaC94ODYva3ZtL0tjb25maWctMTk1LVx0Ym9vbCBcJiMzNDtTdXBwb3J0IGZvciBNaWNyb3NvZnQgSHlwZXItViBlbXVsYXRpb25cJiMzNDtcbi0tXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0yMDctXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZzoyMDg6Y29uZmlnIEtWTV9YRU5cbmFyY2gveDg2L2t2bS9LY29uZmlnLTIwOS1cdGJvb2wgXCYjMzQ7U3VwcG9ydCBmb3IgWGVuIGh5cGVyY2FsbCBpbnRlcmZhY2VcJiMzNDtcbi0tXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0yMTYtXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZzoyMTc6Y29uZmlnIEtWTV9QUk9WRV9NTVVcbmFyY2gveDg2L2t2bS9LY29uZmlnLTIxOC1cdGJvb2wgXCYjMzQ7UHJvdmUgS1ZNIE1NVSBjb3JyZWN0bmVzc1wmIzM0O1xuLS1cbmFyY2gveDg2L2t2bS9LY29uZmlnLTIyOS1cbmFyY2gveDg2L2t2bS9LY29uZmlnOjIzMDpjb25maWcgS1ZNX0VYVEVSTkFMX1dSSVRFX1RSQUNLSU5HXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0yMzEtXHRib29sXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0yMzItXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZzoyMzM6Y29uZmlnIEtWTV9NQVhfTlJfVkNQVVNcbmFyY2gveDg2L2t2bS9LY29uZmlnLTIzNC1cdGludCBcJiMzNDtNYXhpbXVtIG51bWJlciBvZiB2Q1BVcyBwZXIgS1ZNIGd1ZXN0XCYjMzQ7XG4tLVxudmlydC9rdm0vS2NvbmZpZy0zLVxudmlydC9rdm0vS2NvbmZpZzo0OmNvbmZpZyBLVk1fQ09NTU9OXG52aXJ0L2t2bS9LY29uZmlnLTUtICAgICAgIGJvb2xcbi0tXG52aXJ0L2t2bS9LY29uZmlnPTM5PWNvbmZpZyBORUVEX0tWTV9ESVJUWV9SSU5HX1dJVEhfQklUTUFQXG4tLVxudmlydC9rdm0vS2NvbmZpZy00Mi1cbnZpcnQva3ZtL0tjb25maWc6NDM6Y29uZmlnIEtWTV9NTUlPXG52aXJ0L2t2bS9LY29uZmlnLTQ0LSAgICAgICBib29sXG52aXJ0L2t2bS9LY29uZmlnLTQ1LVxudmlydC9rdm0vS2NvbmZpZzo0Njpjb25maWcgS1ZNX0FTWU5DX1BGXG52aXJ0L2t2bS9LY29uZmlnLTQ3LSAgICAgICBib29sXG4tLVxudmlydC9rdm0vS2NvbmZpZy00OS0jIFRvZ2dsZSB0byBzd2l0Y2ggYmV0d2VlbiBkaXJlY3Qgbm90aWZpY2F0aW9uIGFuZCBiYXRjaCBqb2JcbnZpcnQva3ZtL0tjb25maWc6NTA6Y29uZmlnIEtWTV9BU1lOQ19QRl9TWU5DXG52aXJ0L2t2bS9LY29uZmlnLTUxLSAgICAgICBib29sXG4tLVxudmlydC9rdm0vS2NvbmZpZz01OT1jb25maWcgSEFWRV9LVk1fQ1BVX1JFTEFYX0lOVEVSQ0VQVFxuLS1cbnZpcnQva3ZtL0tjb25maWctNjEtXG52aXJ0L2t2bS9LY29uZmlnOjYyOmNvbmZpZyBLVk1fVkZJT1xudmlydC9rdm0vS2NvbmZpZy02My0gICAgICAgYm9vbFxuLS1cbnZpcnQva3ZtL0tjb25maWc9NjU9Y29uZmlnIEhBVkVfS1ZNX0lOVkFMSURfV0FLRVVQU1xuLS1cbnZpcnQva3ZtL0tjb25maWctNjctXG52aXJ0L2t2bS9LY29uZmlnOjY4OmNvbmZpZyBLVk1fR0VORVJJQ19ESVJUWUxPR19SRUFEX1BST1RFQ1RcbnZpcnQva3ZtL0tjb25maWctNjktICAgICAgIGJvb2xcbnZpcnQva3ZtL0tjb25maWctNzAtXG52aXJ0L2t2bS9LY29uZmlnOjcxOmNvbmZpZyBLVk1fR0VORVJJQ19QUkVfRkFVTFRfTUVNT1JZXG52aXJ0L2t2bS9LY29uZmlnLTcyLSAgICAgICBib29sXG52aXJ0L2t2bS9LY29uZmlnLTczLVxudmlydC9rdm0vS2NvbmZpZzo3NDpjb25maWcgS1ZNX0NPTVBBVFxudmlydC9rdm0vS2NvbmZpZy03NS0gICAgICAgZGVmX2Jvb2wgeVxuLS1cbnZpcnQva3ZtL0tjb25maWc9OTE9Y29uZmlnIEhBVkVfS1ZNX1BNX05PVElGSUVSXG4tLVxudmlydC9rdm0vS2NvbmZpZy05My1cbnZpcnQva3ZtL0tjb25maWc6OTQ6Y29uZmlnIEtWTV9HRU5FUklDX0hBUkRXQVJFX0VOQUJMSU5HXG52aXJ0L2t2bS9LY29uZmlnLTk1LSAgICAgICBib29sXG52aXJ0L2t2bS9LY29uZmlnLTk2LVxudmlydC9rdm0vS2NvbmZpZzo5Nzpjb25maWcgS1ZNX0VMSURFX1RMQl9GTFVTSF9JRl9ZT1VOR1xudmlydC9rdm0vS2NvbmZpZy05OC0gICAgICAgYm9vbFxudmlydC9rdm0vS2NvbmZpZy05OS1cbnZpcnQva3ZtL0tjb25maWc6MTAwOmNvbmZpZyBLVk1fTU1VX0xPQ0tMRVNTX0FHSU5HXG52aXJ0L2t2bS9LY29uZmlnLTEwMS0gICAgICAgYm9vbFxudmlydC9rdm0vS2NvbmZpZy0xMDItXG52aXJ0L2t2bS9LY29uZmlnOjEwMzpjb25maWcgS1ZNX0dFTkVSSUNfTUVNT1JZX0FUVFJJQlVURVNcbnZpcnQva3ZtL0tjb25maWctMTA0LSAgICAgICBib29sXG52aXJ0L2t2bS9LY29uZmlnLTEwNS1cbnZpcnQva3ZtL0tjb25maWc6MTA2OmNvbmZpZyBLVk1fR1VFU1RfTUVNRkRcbnZpcnQva3ZtL0tjb25maWctMTA3LSAgICAgICBzZWxlY3QgWEFSUkFZX01VTFRJXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTYgMDY6MDA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTMyMDkKCQkJCQkJCW91dHB1dDogMjgKCQkJCQkJCXRob3VnaHRzOiAxODkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgS1ZNIENvbmZpZ3VyYXRpb24gQW5hbHlzaXMqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoZXNlIGNvbmZpZ3VyYXRpb25zLiBUaGUgZm9jdXMgaXMgZGVmaW5pdGVseSBgS1ZNYC4gRm9yIHg4NiwgaXQmIzM5O3MgcHJldHR5IHN0YW5kYXJkIHRoYXQgYEtWTWAgcmVsaWVzIG9uIGVpdGhlciBgS1ZNX0lOVEVMYCBvciBgS1ZNX0FNRGAsIGJ1dCBgS1ZNYCBpdHNlbGYgaXMgdGhlIGNvcmUuIFJpZ2h0LCBgS1ZNYCBpcyBkZWZpbmVkIGFzIGEgdHJpc3RhdGUgb3B0aW9uIGZvciAmIzM0O0tlcm5lbC1iYXNlZCBWaXJ0dWFsIE1hY2hpbmUgKEtWTSkgc3VwcG9ydC4mIzM0OyBUaGF0IG1ha2VzIHNlbnNlOyBJJiMzOTtsbCBkZWZpbml0ZWx5IGluY2x1ZGUgYEtWTWAgaW4gdGhlIGBFbmFibGVDb25maWdzYCBsaXN0LgoKTm93LCBsZXQmIzM5O3MganVzdCBxdWlja2x5IGNvbmZpcm0gdGhhdCBgSEFWRV9LVk1fVkNQVV9SVU5fUElEX0NIQU5HRWAgaXMgc29tZXRoaW5nIHdlIG5lZWQgdG8gY29uc2lkZXIuIEFoLCB5ZXMsIGl0JiMzOTtzIHNlbGVjdGVkIGJ5IGJvdGggYEtWTV9YODZgIGFuZCBgS1ZNYCBvbiBhcm02NCBhcmNoaXRlY3R1cmVzLiBOb3cgaG9sZCBvbiBhIHNlY29uZC4uLiB0aGUgZGlmZiBkb2VzbiYjMzk7dCBzZWVtIHRvIGV4cGxpY2l0bHkgYWRkIGBIQVZFX0tWTV9WQ1BVX1JVTl9QSURfQ0hBTkdFYCB0byB0aGUgYGFyY2gvYXJtNjQva3ZtL0tjb25maWdgIGZpbGUuIEkmIzM5O2QgYmV0dGVyIGRvdWJsZS1jaGVjayB0aGUgYGFyY2gvYXJtNjQva3ZtL0tjb25maWdgIHRvIGJlIGFic29sdXRlbHkgc3VyZSB3aGF0JiMzOTtzIGdvaW5nIG9uIHRoZXJlLiBHb3R0YSBiZSB0aG9yb3VnaC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTYgMDY6MDA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7SEFWRV9LVk1fVkNQVV9SVU5fUElEX0NIQU5HRSYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDthcmNoL2FybTY0L2t2bS9LY29uZmlnPTIwPW1lbnVjb25maWcgS1ZNXG4tLVxuYXJjaC9hcm02NC9rdm0vS2NvbmZpZy0zNS1cdHNlbGVjdCBIQVZFX0tWTV9SRUFET05MWV9NRU1cbmFyY2gvYXJtNjQva3ZtL0tjb25maWc6MzY6XHRzZWxlY3QgSEFWRV9LVk1fVkNQVV9SVU5fUElEX0NIQU5HRVxuYXJjaC9hcm02NC9rdm0vS2NvbmZpZy0zNy1cdHNlbGVjdCBTQ0hFRF9JTkZPXG4tLVxuYXJjaC94ODYva3ZtL0tjb25maWc9MjA9Y29uZmlnIEtWTV9YODZcbi0tXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy00Mi1cdHNlbGVjdCBIQVZFX0tWTV9OT19QT0xMXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZzo0MzpcdHNlbGVjdCBIQVZFX0tWTV9WQ1BVX1JVTl9QSURfQ0hBTkdFXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy00NC1cdHNlbGVjdCBWSVJUX1hGRVJfVE9fR1VFU1RfV09SS1xuLS1cbmluY2x1ZGUvbGludXgva3ZtX2hvc3QuaD0yNDYwPXZvaWQga3ZtX2FyY2hfZ3Vlc3RfbWVtb3J5X3JlY2xhaW1lZChzdHJ1Y3Qga3ZtICprdm0pO1xuaW5jbHVkZS9saW51eC9rdm1faG9zdC5oLTI0NjEtXG5pbmNsdWRlL2xpbnV4L2t2bV9ob3N0Lmg6MjQ2MjojaWZkZWYgQ09ORklHX0hBVkVfS1ZNX1ZDUFVfUlVOX1BJRF9DSEFOR0VcbmluY2x1ZGUvbGludXgva3ZtX2hvc3QuaC0yNDYzLWludCBrdm1fYXJjaF92Y3B1X3J1bl9waWRfY2hhbmdlKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSk7XG4tLVxuaW5jbHVkZS9saW51eC9rdm1faG9zdC5oPTI0NjU9c3RhdGljIGlubGluZSBpbnQga3ZtX2FyY2hfdmNwdV9ydW5fcGlkX2NoYW5nZShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXG4tLVxuaW5jbHVkZS9saW51eC9rdm1faG9zdC5oLTI0NjgtfVxuaW5jbHVkZS9saW51eC9rdm1faG9zdC5oOjI0Njk6I2VuZGlmIC8qIENPTkZJR19IQVZFX0tWTV9WQ1BVX1JVTl9QSURfQ0hBTkdFICovXG5pbmNsdWRlL2xpbnV4L2t2bV9ob3N0LmgtMjQ3MC1cbi0tXG52aXJ0L2t2bS9LY29uZmlnPTc4PWNvbmZpZyBIQVZFX0tWTV9JUlFfQllQQVNTXG4tLVxudmlydC9rdm0vS2NvbmZpZy04MS1cbnZpcnQva3ZtL0tjb25maWc6ODI6Y29uZmlnIEhBVkVfS1ZNX1ZDUFVfUlVOX1BJRF9DSEFOR0VcbnZpcnQva3ZtL0tjb25maWctODMtICAgICAgIGJvb2xcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTYgMDY6MDA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTQyNDYKCQkJCQkJCW91dHB1dDogMTY1CgkJCQkJCQl0aG91Z2h0czogMjEyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFzc2Vzc21lbnQgb2YgdGhlIEtWTSBTdGVhbC1UaW1lIFJlc2V0IFBhdGNoKioKCk9rYXksIHNvIEkgc2VlIHRoaXMgcGF0Y2ggaXMgdHJpZ2dlcmVkIGJ5IGBLVk1gIG9uIGFybTY0IGFuZCBgS1ZNX1g4NmAgb24geDg2LCB3aGljaCBjb25maXJtcyBgS1ZNYCBpcyB0aGUgcHJpbWFyeSBjb25maWd1cmF0aW9uIHZhcmlhYmxlIGF0IHBsYXkgaGVyZS4gTGV0IG1lIHF1aWNrbHkgc2NhbiBmb3IgYW55IG90aGVyIHBvdGVudGlhbGx5IHJlbGV2YW50IGNvbmZpZ3VyYXRpb25zLi4uIG5vcGUsIGBLVk1gIHNlZW1zIHRvIGJlIHRoZSBvbmx5IHRoaW5nIHdlIG5lZWQgdG8gY29uc2lkZXIuCgpUaGUgY29yZSBvZiB0aGUgY2hhbmdlIHJldm9sdmVzIGFyb3VuZCByZXNldHRpbmcgc3RlYWwtdGltZSBhY2NvdW50aW5nIHdoZW4gYSBLVk0gdkNQVSB0cmFuc2l0aW9ucyB0byBhIG5ldyBob3N0IFBJRC4gVGhpcyBkaXJlY3RseSBpbXBhY3RzIGNvcmUgS1ZNIGxvZ2ljIGFjcm9zcyBib3RoIEFSTTY0IGFuZCB4ODYgYXJjaGl0ZWN0dXJlcywgYW5kIHRoZSBjb2RlIGludHJvZHVjZXMgYGt2bV9hcmNoX3ZjcHVfcnVuX3BpZF9jaGFuZ2VgIGFuZCBga3ZtX3Jlc2V0X3N0b2xlbl90aW1lYC4gVGhlc2UgYXJlIHNpZ25pZmljYW50IGZ1bmN0aW9uYWwgYWRkaXRpb25zIHdpdGhpbiB0aGUgS1ZNIGNvZGUuIEdpdmVuIHRoZWlyIGRpcmVjdCBpbXBhY3Qgb24gdkNQVSBtaWdyYXRpb24gYmVoYXZpb3IsIHRoaXMgaXMgYW4gYXJlYSB0aGF0ICphYnNvbHV0ZWx5KiB3YXJyYW50cyB0YXJnZXRlZCBmdXp6aW5nLiBXZSBuZWVkIHRvIGVuc3VyZSB0aGF0IHRoaXMgY2hhbmdlIGRvZXNuJiMzOTt0IGludHJvZHVjZSBhbnkgcGVyZm9ybWFuY2UgcmVncmVzc2lvbnMgb3IsIGV2ZW4gd29yc2UsIHVuYW50aWNpcGF0ZWQgYmVoYXZpb3JhbCBzaGlmdHMgZHVyaW5nIHZDUFUgdGhyZWFkIG1pZ3JhdGlvbnMuCgpSaWdodCwgSSYjMzk7bSBjb25maWRlbnQgaW4gdGhpcyBldmFsdWF0aW9uLCBJJiMzOTtsbCBnbyBhaGVhZCBhbmQgbG9nIHRoZSByZXN1bHRzIG5vdy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTYgMDY6MDA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0tWTSYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2t2bV9hcmNoX3ZjcHVfcnVuX3BpZF9jaGFuZ2UmIzM0OywKICAgICYjMzQ7a3ZtX3Jlc2V0X3N0b2xlbl90aW1lJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGludHJvZHVjZXMgYSBtZWNoYW5pc20gdG8gcmVzZXQgc3RlYWwtdGltZSBhY2NvdW50aW5nIHdoZW4gYSBLVk0gdkNQVSBpcyBydW4gZnJvbSBhIGRpZmZlcmVudCBob3N0IFBJRC4gSXQgbW9kaWZpZXMgY29yZSBLVk0gbG9naWMgZm9yIGJvdGggQVJNNjQgYW5kIHg4NiBhcmNoaXRlY3R1cmVzLCBhZGRpbmcgYGt2bV9hcmNoX3ZjcHVfcnVuX3BpZF9jaGFuZ2VgIGFuZCBga3ZtX3Jlc2V0X3N0b2xlbl90aW1lYC4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIHRvIHJlYWNoYWJsZSBLVk0gY29kZSB0aGF0IHNob3VsZCBiZSBmdXp6ZWQgdG8gZW5zdXJlIGl0IGRvZXNuJiMzOTt0IGludHJvZHVjZSByZWdyZXNzaW9ucyBvciB1bmV4cGVjdGVkIGJlaGF2aW9yIGR1cmluZyB2Q1BVIHRocmVhZCBtaWdyYXRpb25zLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtLVk0mIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtrdm1fYXJjaF92Y3B1X3J1bl9waWRfY2hhbmdlJiMzNDssCiAgICAmIzM0O2t2bV9yZXNldF9zdG9sZW5fdGltZSYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBpbnRyb2R1Y2VzIGEgbWVjaGFuaXNtIHRvIHJlc2V0IHN0ZWFsLXRpbWUgYWNjb3VudGluZyB3aGVuIGEgS1ZNIHZDUFUgaXMgcnVuIGZyb20gYSBkaWZmZXJlbnQgaG9zdCBQSUQuIEl0IG1vZGlmaWVzIGNvcmUgS1ZNIGxvZ2ljIGZvciBib3RoIEFSTTY0IGFuZCB4ODYgYXJjaGl0ZWN0dXJlcywgYWRkaW5nIGBrdm1fYXJjaF92Y3B1X3J1bl9waWRfY2hhbmdlYCBhbmQgYGt2bV9yZXNldF9zdG9sZW5fdGltZWAuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSB0byByZWFjaGFibGUgS1ZNIGNvZGUgdGhhdCBzaG91bGQgYmUgZnV6emVkIHRvIGVuc3VyZSBpdCBkb2VzbiYjMzk7dCBpbnRyb2R1Y2UgcmVncmVzc2lvbnMgb3IgdW5leHBlY3RlZCBiZWhhdmlvciBkdXJpbmcgdkNQVSB0aHJlYWQgbWlncmF0aW9ucy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMy8xPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTYgMDY6MDA8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPklmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xNiAwNjowMDwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5rbXNhbi1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5iZXN0LWV4cGVuc2l2ZTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtLTVNBTlJlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBzaW1wbHkgcmVzZXRzIHRoZSBLVk0gc3RlYWwgdGltZSBhY2NvdW50aW5nIGJhc2UgKGBsYXN0X3N0ZWFsYCkgdG8gdGhlIGN1cnJlbnQgdGFzayYjMzk7cyBgcnVuX2RlbGF5YCB3aGVuIGEgdkNQVSB0aHJlYWQgY2hhbmdlcyBpdHMgaG9zdCBQSUQuIFRoaXMgaW52b2x2ZXMgcmVhZGluZyBhIGZ1bGx5IGluaXRpYWxpemVkIHNjYWxhciB2YWx1ZSAoYGN1cnJlbnQtXHUwMDNlc2NoZWRfaW5mby5ydW5fZGVsYXlgKSBmcm9tIHRoZSBzY2hlZHVsZXIgYW5kIGFzc2lnbmluZyBpdCB0byBhIGZpZWxkIGluIHRoZSB2Q1BVIGFyY2hpdGVjdHVyZSBzdHJ1Y3R1cmUuIE5vIG5ldyBtZW1vcnkgYWxsb2NhdGlvbnMgYXJlIGludHJvZHVjZWQsIG5vIHN0cnVjdHVyZXMgYXJlIGNvcGllZCB0byB1c2VyIHNwYWNlLCBhbmQgbm8gY29tcGxleCBkYXRhIHN0cnVjdHVyZXMgYXJlIG1hbmlwdWxhdGVkIGluIGEgd2F5IHRoYXQgY291bGQgZXhwb3NlIHVuaW5pdGlhbGl6ZWQgbWVtb3J5LiBUaGVyZWZvcmUsIHRoZXJlIGlzIG5vIHJpc2sgb2YgdW5pbml0aWFsaXplZCBtZW1vcnkgdXNlIG9yIGluZm8tbGVha3MsIGFuZCBhIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaXMgbm90IHJlcXVpcmVkLiYjMzQ7LAogICYjMzQ7TmVlZHNLTVNBTiYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBzZWN1cml0eSBlbmdpbmVlciBzcGVjaWFsaXppbmcgaW4ga2VybmVsIG1lbW9yeQplcnJvciBkZXRlY3RvcnMgKEtBU0FOIGFuZCBLTVNBTikuIFlvdXIgam9iIGlzIHRvIHJldmlldyB0aGUgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZApkZXRlcm1pbmUgaWYgdGhlIGNvZGUgY2hhbmdlcyBqdXN0aWZ5IHNwYXduaW5nIGEgZGVkaWNhdGVkIEtNU0FOIChLZXJuZWxNZW1vcnlTYW5pdGl6ZXIpCmZ1enppbmcgc2Vzc2lvbiBpbiBhZGRpdGlvbiB0byBzdGFuZGFyZCBLQVNBTiBmdXp6aW5nLgoKQ1JJVElDQUwgRElTVElOQ1RJT04gQkVUV0VFTiBLQVNBTiBBTkQgS01TQU46Ci0gU3RhbmRhcmQgS0FTQU4ga2VybmVsIGJ1aWxkcyAodXBzdHJlYW0tYXBwYXJtb3Ita2FzYW4uY29uZmlnKSBhbHJlYWR5IGVuYWJsZQogIGEgY29tcHJlaGVuc2l2ZSBzdWl0ZSBvZiBkZWJ1Z2dpbmcgdG9vbHMgYW5kIHNhbml0aXplcnMsIGluY2x1ZGluZyBLQVNBTgogIChvdXQtb2YtYm91bmRzIGFjY2Vzc2VzLCB1c2UtYWZ0ZXItZnJlZSwgZG91YmxlIGZyZWUsIGludmFsaWQgZnJlZSksIExPQ0tERVAKICAobG9ja2luZyBidWdzIGFuZCBkZWFkbG9ja3MpLCBVQi1zYW5pdGl6ZXJzLCBhbmQgbWVtb3J5IGNvcnJ1cHRpb24gY2hlY2tzLgotIEtNU0FOIChLZXJuZWxNZW1vcnlTYW5pdGl6ZXIpIGRldGVjdHMgcmVhZHMgb2YgVU5JTklUSUFMSVpFRCBtZW1vcnkgKHN0YWNrLCBoZWFwLAogIG9yIHBhZ2UgYWxsb2NhdGlvbnMpIGFuZCBrZXJuZWwtdG8tdXNlciBtZW1vcnkgaW5mby1sZWFrcy4KClJ1bGU6IFRIRVJFIElTIE5PIFNFTlNFIElOIFJVTk5JTkcgQSBLTVNBTiBTRVNTSU9OIElGIEEgQlVHIENBTiBCRSBDQVVHSFQgQlkgS0FTQU4sCkxPQ0tERVAsIE9SIE9USEVSIFNUQU5EQVJEIEJVRyBERVRFQ1RPUlMuCkEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpbmN1cnMgc2lnbmlmaWNhbnQgcmVzb3VyY2UgY29zdHMuIFlvdSBtdXN0IE9OTFkKc2V0IE5lZWRzS01TQU49dHJ1ZSBpZiB0aGUgY29kZSBjaGFuZ2VzIGludHJvZHVjZSBvciBleHBvc2UgVU5JTklUSUFMSVpFRCBNRU1PUlkgcmlza3MKdGhhdCBhcmUgZGV0ZWN0ZWQgT05MWSBieSBLTVNBTi4KCkxvb2sgaG9saXN0aWNhbGx5IGF0IHRoZSBwYXRjaCBzZXJpZXMgYW5kIHN1cnJvdW5kaW5nIGNvZGUuIEV2ZW4gaWYgbm8gZGlyZWN0CnVuaW5pdGlhbGl6ZWQgZmllbGQgYWNjZXNzZXMgb3IgbmV3IGJ1ZmZlciBhbGxvY2F0aW9ucyBhcmUgYWRkZWQgaW4gdGhlIGRpZmYgaXRzZWxmLAphIHBhdGNoIG1heSBhbHRlciBjb250cm9sIGZsb3csIGJvdW5kcyBjaGVja2luZywgb3IgZGF0YSBsZW5ndGggY2FsY3VsYXRpb25zIGluIHdheXMKdGhhdCBjaGFuZ2UgaG93IHRoZSByZXN0IG9mIHRoZSBjb2RlIG9wZXJhdGVzIG9uIGV4aXN0aW5nIGJ1ZmZlcnMgKGUuZy4gYWxsb3dpbmcKdW5pbml0aWFsaXplZCBzdGFjay9oZWFwIG1lbW9yeSB0byBiZSByZWFkLCBjb3BpZWQgdG8gdXNlciBzcGFjZSwgb3IgdXNlZCBpbiBjb250cm9sCmZsb3cpLiBEbyBub3QgaGVzaXRhdGUgdG8gdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gaW5zcGVjdCB0aGUgc3Vycm91bmRpbmcgY29kZSwKY2FsbGVkIGZ1bmN0aW9ucywgYW5kIGNhbGxlcnMuCgpTZXQgTmVlZHNLTVNBTj10cnVlIE9OTFkgSUYgdGhlIHBhdGNoIGludHJvZHVjZXMgb3IgbW9kaWZpZXM6CjEuIEtlcm5lbCBzdHJ1Y3R1cmVzIHNlbnQgdG8gdXNlciBzcGFjZSAodmlhIGNvcHlfdG9fdXNlciwgcHV0X3VzZXIsIG5ldGxpbmsgc2tiCiAgIGF0dHJpYnV0ZXMsIGlvY3RsIG91dHB1dCBhcmd1bWVudHMsIHNvY2tldCBvcHRpb25zLCBvciBCUEYgYnVmZmVycykgd2hlcmUgZmllbGRzCiAgIG9yIHN0cnVjdHVyZSBwYWRkaW5nIG1pZ2h0IG5vdCBiZSBmdWxseSBpbml0aWFsaXplZC96ZXJvZWQuCjIuIENvbmRpdGlvbmFsIGxvZ2ljIG9yIGJyYW5jaGluZyB0aGF0IGRlcGVuZHMgb24gcG90ZW50aWFsbHkgdW5pbml0aWFsaXplZCB2YXJpYWJsZXMKICAgb3Igc3RydWN0IGZpZWxkcy4KMy4gQWxsb2NhdGlvbiBvciBpbml0aWFsaXphdGlvbiBvZiBjb21wbGV4IGRhdGEgc3RydWN0dXJlcyB3aGVyZSB1bmluaXRpYWxpemVkIGZpZWxkcwogICBjb3VsZCBiZSByZWFkIGxhdGVyIGluIHJlYWNoYWJsZSBjb2RlIHBhdGhzLgo0LiBCb3VuZHMgY2hlY2tzLCBsZW5ndGhzLCBvciBsb2dpYyBpbiBhIHdheSB0aGF0IGFsbG93cyBzdXJyb3VuZGluZyBjb2RlIHRvIGFjY2VzcwogICB1bmluaXRpYWxpemVkIGJ5dGVzIG9mIGV4aXN0aW5nIGJ1ZmZlcnMuCgpTZXQgTmVlZHNLTVNBTj1mYWxzZSBJRjoKLSBUaGUgY29kZSBjaGFuZ2VzIHByaW1hcmlseSByaXNrIG91dC1vZi1ib3VuZHMgYWNjZXNzLCBhcnJheSBvdmVyZmxvd3MsIE5VTEwgcG9pbnRlcgogIGRlcmVmZXJlbmNlcywgbG9ja2luZyBkZWFkbG9ja3MsIG9yIHVzZS1hZnRlci1mcmVlIGJ1Z3MgKHRoZXNlIGFyZSBhbHJlYWR5IGNhdWdodAogIGJ5IEtBU0FOLCBMT0NLREVQLCBvciBzdGFuZGFyZCBidWcgZGV0ZWN0b3JzKS4KLSBBbGwgc3RhY2svaGVhcCBzdHJ1Y3R1cmVzIHRvdWNoZWQgb3IgaW50cm9kdWNlZCBieSB0aGUgcGF0Y2ggYXJlIGZ1bGx5IHplcm9lZAogIG9yIGluaXRpYWxpemVkIChlLmcuIHVzaW5nID0gezB9LCBtZW1zZXQsIGt6YWxsb2MpIGJlZm9yZSBiZWluZyByZWFkIG9yIGNvcGllZC4KLSBUaGUgcGF0Y2ggZG9lcyBub3QgaW50cm9kdWNlIGFueSByaXNrIG9mIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHVzYWdlIG9yIGluZm8tbGVha3MuCgpVc2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBpbnNwZWN0IHRoZSBzdXJyb3VuZGluZyBjb2RlIGlmIG5lY2Vzc2FyeSwgdGhlbiBwcm92aWRlCmRldGFpbGVkIEtNU0FOUmVhc29uaW5nIGNvbnRyYXN0aW5nIEtBU0FOIHZzIEtNU0FOIGFwcGxpY2FiaWxpdHkgZm9yIHRoaXMgcGF0Y2guClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCBhZjNmYzIzNjczMTkzZWVmYTNiMmQ2YWNhMTljNTVmOWIwYzQ4MjhkCkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIFN1biBBdWcgMTYgMDY6MDA6MTEgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9hcmNoL2FybTY0L2luY2x1ZGUvYXNtL2t2bV9ob3N0LmggYi9hcmNoL2FybTY0L2luY2x1ZGUvYXNtL2t2bV9ob3N0LmgKaW5kZXggYmFlMmM0ZjkyZWY1Yy4uNDYwN2Y5NTZlNzg3OSAxMDA2NDQKLS0tIGEvYXJjaC9hcm02NC9pbmNsdWRlL2FzbS9rdm1faG9zdC5oCiYjNDM7JiM0MzsmIzQzOyBiL2FyY2gvYXJtNjQvaW5jbHVkZS9hc20va3ZtX2hvc3QuaApAQCAtMTMzOSw2ICYjNDM7MTMzOSw3IEBAIHN0YXRpYyBpbmxpbmUgYm9vbCBrdm1fYXJjaF9wbWlfaW5fZ3Vlc3Qoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KQogbG9uZyBrdm1faHlwZXJjYWxsX3B2X2ZlYXR1cmVzKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSk7CiBncGFfdCBrdm1faW5pdF9zdG9sZW5fdGltZShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpOwogdm9pZCBrdm1fdXBkYXRlX3N0b2xlbl90aW1lKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSk7CiYjNDM7dm9pZCBrdm1fcmVzZXRfc3RvbGVuX3RpbWUoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KTsKIAogYm9vbCBrdm1fYXJtX3B2dGltZV9zdXBwb3J0ZWQodm9pZCk7CiBpbnQga3ZtX2FybV9wdnRpbWVfc2V0X2F0dHIoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LApkaWZmIC0tZ2l0IGEvYXJjaC9hcm02NC9rdm0vYXJtLmMgYi9hcmNoL2FybTY0L2t2bS9hcm0uYwppbmRleCA5YTZjNzJhMTg2NzI3Li4wZjZlNjNlYWNlMjFmIDEwMDY0NAotLS0gYS9hcmNoL2FybTY0L2t2bS9hcm0uYwomIzQzOyYjNDM7JiM0MzsgYi9hcmNoL2FybTY0L2t2bS9hcm0uYwpAQCAtOTI5LDYgJiM0Mzs5MjksOCBAQCBpbnQga3ZtX2FyY2hfdmNwdV9ydW5fcGlkX2NoYW5nZShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpCiAJaWYgKCFrdm1fYXJtX3ZjcHVfaXNfZmluYWxpemVkKHZjcHUpKQogCQlyZXR1cm4gLUVQRVJNOwogCiYjNDM7CWt2bV9yZXNldF9zdG9sZW5fdGltZSh2Y3B1KTsKJiM0MzsKIAlpZiAobGlrZWx5KHZjcHVfaGFzX3J1bl9vbmNlKHZjcHUpKSkKIAkJcmV0dXJuIDA7CiAKZGlmZiAtLWdpdCBhL2FyY2gvYXJtNjQva3ZtL3B2dGltZS5jIGIvYXJjaC9hcm02NC9rdm0vcHZ0aW1lLmMKaW5kZXggNGNlYWJhYTRjMzBiZC4uMDAwYmY0OWNjMGZkZiAxMDA2NDQKLS0tIGEvYXJjaC9hcm02NC9rdm0vcHZ0aW1lLmMKJiM0MzsmIzQzOyYjNDM7IGIvYXJjaC9hcm02NC9rdm0vcHZ0aW1lLmMKQEAgLTMyLDYgJiM0MzszMiwxMSBAQCB2b2lkIGt2bV91cGRhdGVfc3RvbGVuX3RpbWUoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KQogCXNyY3VfcmVhZF91bmxvY2soJmFtcDtrdm0tJmd0O3NyY3UsIGlkeCk7CiB9CiAKJiM0Mzt2b2lkIGt2bV9yZXNldF9zdG9sZW5fdGltZShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpCiYjNDM7ewomIzQzOwl2Y3B1LSZndDthcmNoLnN0ZWFsLmxhc3Rfc3RlYWwgPSBjdXJyZW50LSZndDtzY2hlZF9pbmZvLnJ1bl9kZWxheTsKJiM0Mzt9CiYjNDM7CiBsb25nIGt2bV9oeXBlcmNhbGxfcHZfZmVhdHVyZXMoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KQogewogCXUzMiBmZWF0dXJlID0gc21jY2NfZ2V0X2FyZzEodmNwdSk7CmRpZmYgLS1naXQgYS9hcmNoL3g4Ni9rdm0vS2NvbmZpZyBiL2FyY2gveDg2L2t2bS9LY29uZmlnCmluZGV4IDgwMWJmOWU1MjBkYjMuLmI3Y2IyY2VkYTZkOWEgMTAwNjQ0Ci0tLSBhL2FyY2gveDg2L2t2bS9LY29uZmlnCiYjNDM7JiM0MzsmIzQzOyBiL2FyY2gveDg2L2t2bS9LY29uZmlnCkBAIC00MCw2ICYjNDM7NDAsNyBAQCBjb25maWcgS1ZNX1g4NgogCXNlbGVjdCBIQVZFX0tWTV9NU0kKIAlzZWxlY3QgSEFWRV9LVk1fQ1BVX1JFTEFYX0lOVEVSQ0VQVAogCXNlbGVjdCBIQVZFX0tWTV9OT19QT0xMCiYjNDM7CXNlbGVjdCBIQVZFX0tWTV9WQ1BVX1JVTl9QSURfQ0hBTkdFCiAJc2VsZWN0IFZJUlRfWEZFUl9UT19HVUVTVF9XT1JLCiAJc2VsZWN0IEtWTV9HRU5FUklDX0RJUlRZTE9HX1JFQURfUFJPVEVDVAogCXNlbGVjdCBLVk1fVkZJTwpkaWZmIC0tZ2l0IGEvYXJjaC94ODYva3ZtL3g4Ni5jIGIvYXJjaC94ODYva3ZtL3g4Ni5jCmluZGV4IDQ3Y2I5ZWJhMTEzYjEuLjMzYmU0NWVlYzMyYmMgMTAwNjQ0Ci0tLSBhL2FyY2gveDg2L2t2bS94ODYuYwomIzQzOyYjNDM7JiM0MzsgYi9hcmNoL3g4Ni9rdm0veDg2LmMKQEAgLTM3MTcsNiAmIzQzOzM3MTcsMTMgQEAgdm9pZCBrdm1fc2VydmljZV9sb2NhbF90bGJfZmx1c2hfcmVxdWVzdHMoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KQogfQogRVhQT1JUX1NZTUJPTF9GT1JfS1ZNX0lOVEVSTkFMKGt2bV9zZXJ2aWNlX2xvY2FsX3RsYl9mbHVzaF9yZXF1ZXN0cyk7CiAKJiM0MztpbnQga3ZtX2FyY2hfdmNwdV9ydW5fcGlkX2NoYW5nZShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpCiYjNDM7ewomIzQzOwl2Y3B1LSZndDthcmNoLnN0Lmxhc3Rfc3RlYWwgPSBjdXJyZW50LSZndDtzY2hlZF9pbmZvLnJ1bl9kZWxheTsKJiM0MzsKJiM0MzsJcmV0dXJuIDA7CiYjNDM7fQomIzQzOwogc3RhdGljIHZvaWQgcmVjb3JkX3N0ZWFsX3RpbWUoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KQogewogCXN0cnVjdCBnZm5fdG9faHZhX2NhY2hlICpnaGMgPSAmYW1wO3ZjcHUtJmd0O2FyY2guc3QuY2FjaGU7CmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0vTWFrZWZpbGUua3ZtIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL01ha2VmaWxlLmt2bQppbmRleCA2ZmMzNGU5YmY4ZTFiLi5iMDFhMzQwM2Q2MDJhIDEwMDY0NAotLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0vTWFrZWZpbGUua3ZtCiYjNDM7JiM0MzsmIzQzOyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS9NYWtlZmlsZS5rdm0KQEAgLTE1OSw2ICYjNDM7MTU5LDcgQEAgVEVTVF9HRU5fUFJPR1NfeDg2ICYjNDM7PSBoYXJkd2FyZV9kaXNhYmxlX3Rlc3QKIFRFU1RfR0VOX1BST0dTX3g4NiAmIzQzOz0gbW11X3N0cmVzc190ZXN0CiBURVNUX0dFTl9QUk9HU194ODYgJiM0Mzs9IHJzZXFfdGVzdAogVEVTVF9HRU5fUFJPR1NfeDg2ICYjNDM7PSBzdGVhbF90aW1lCiYjNDM7VEVTVF9HRU5fUFJPR1NfeDg2ICYjNDM7PSBzdGVhbF90aW1lX2NoYW5nZV9waWQKIFRFU1RfR0VOX1BST0dTX3g4NiAmIzQzOz0gc3lzdGVtX2NvdW50ZXJfb2Zmc2V0X3Rlc3QKIFRFU1RfR0VOX1BST0dTX3g4NiAmIzQzOz0gcHJlX2ZhdWx0X21lbW9yeV90ZXN0CiAKQEAgLTE5OCw2ICYjNDM7MTk5LDcgQEAgVEVTVF9HRU5fUFJPR1NfYXJtNjQgJiM0Mzs9IGd1ZXN0X21lbWZkX3Rlc3QKIFRFU1RfR0VOX1BST0dTX2FybTY0ICYjNDM7PSBtbXVfc3RyZXNzX3Rlc3QKIFRFU1RfR0VOX1BST0dTX2FybTY0ICYjNDM7PSByc2VxX3Rlc3QKIFRFU1RfR0VOX1BST0dTX2FybTY0ICYjNDM7PSBzdGVhbF90aW1lCiYjNDM7VEVTVF9HRU5fUFJPR1NfYXJtNjQgJiM0Mzs9IHN0ZWFsX3RpbWVfY2hhbmdlX3BpZAogCiBURVNUX0dFTl9QUk9HU19zMzkwID0gJChURVNUX0dFTl9QUk9HU19DT01NT04pCiBURVNUX0dFTl9QUk9HU19zMzkwICYjNDM7PSBzMzkwL21lbW9wCmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0vc3RlYWxfdGltZV9jaGFuZ2VfcGlkLmMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0vc3RlYWxfdGltZV9jaGFuZ2VfcGlkLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMC4uMTJkNDkyN2QxYzAxNwotLS0gL2Rldi9udWxsCiYjNDM7JiM0MzsmIzQzOyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS9zdGVhbF90aW1lX2NoYW5nZV9waWQuYwpAQCAtMCwwICYjNDM7MSwyMTYgQEAKJiM0MzsvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMAomIzQzOy8qCiYjNDM7ICogVmVyaWZ5IHRoYXQgS1ZNIHJlc2V0cyBzdGVhbC10aW1lIGFjY291bnRpbmcgd2hlbiBhIHZDUFUgZmQgaXMgcnVuIGZyb20KJiM0MzsgKiBhIGRpZmZlcmVudCBob3N0IFBJRC4KJiM0MzsgKi8KJiM0MzsKJiM0MzsjaW5jbHVkZSAmbHQ7cHRocmVhZC5oJmd0OwomIzQzOyNpbmNsdWRlICZsdDthc20va3ZtX3BhcmEuaCZndDsKJiM0MzsjaW5jbHVkZSAmIzM0O2t2bV91dGlsLmgmIzM0OwomIzQzOyNpbmNsdWRlICYjMzQ7cHJvY2Vzc29yLmgmIzM0OwomIzQzOwomIzQzOyNkZWZpbmUgU1RfR1BBX0JBU0UJCSgxICZsdDsmbHQ7IDMwKQomIzQzOyNkZWZpbmUgU1RfU0FORV9ERUxUQV9OUwkoMVVMTCAmbHQ7Jmx0OyA2MykKJiM0MzsKJiM0MztzdGF0aWMgdm9pZCAqc3RfZ3ZhOwomIzQzO3N0YXRpYyB1NjQgZ3Vlc3Rfc3RvbGVuX3RpbWU7CiYjNDM7c3RhdGljIHU2NCBtYWluX3N0ZWFsOwomIzQzO3N0YXRpYyB1NjQgdGhyZWFkX3N0ZWFsOwomIzQzOwomIzQzOyNpZiBkZWZpbmVkKF9feDg2XzY0X18pCiYjNDM7CiYjNDM7I2RlZmluZSBTVEVBTF9USU1FX1NJWkUJKChzaXplb2Yoc3RydWN0IGt2bV9zdGVhbF90aW1lKSAmIzQzOyA2MykgJmFtcDsgfjYzKQomIzQzOwomIzQzO3N0YXRpYyB2b2lkIGd1ZXN0X2NvZGUodm9pZCkKJiM0Mzt7CiYjNDM7CXN0cnVjdCBrdm1fc3RlYWxfdGltZSAqc3QgPSBzdF9ndmE7CiYjNDM7CiYjNDM7CVdSSVRFX09OQ0UoZ3Vlc3Rfc3RvbGVuX3RpbWUsIFJFQURfT05DRShzdC0mZ3Q7c3RlYWwpKTsKJiM0MzsJR1VFU1RfU1lOQygwKTsKJiM0MzsKJiM0MzsJV1JJVEVfT05DRShndWVzdF9zdG9sZW5fdGltZSwgUkVBRF9PTkNFKHN0LSZndDtzdGVhbCkpOwomIzQzOwlHVUVTVF9TWU5DKDEpOwomIzQzOwomIzQzOwlXUklURV9PTkNFKGd1ZXN0X3N0b2xlbl90aW1lLCBSRUFEX09OQ0Uoc3QtJmd0O3N0ZWFsKSk7CiYjNDM7CUdVRVNUX0RPTkUoKTsKJiM0Mzt9CiYjNDM7CiYjNDM7c3RhdGljIGJvb2wgc3RlYWxfdGltZV9zdXBwb3J0ZWQoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KQomIzQzO3sKJiM0MzsJcmV0dXJuIGt2bV9jcHVfaGFzKFg4Nl9GRUFUVVJFX0tWTV9TVEVBTF9USU1FKTsKJiM0Mzt9CiYjNDM7CiYjNDM7c3RhdGljIHZvaWQgc3RlYWxfdGltZV9lbmFibGUoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KQomIzQzO3sKJiM0MzsJdmNwdV9zZXRfbXNyKHZjcHUsIE1TUl9LVk1fU1RFQUxfVElNRSwKJiM0MzsJCSAgICAgKHVsb25nKXN0X2d2YSB8IEtWTV9NU1JfRU5BQkxFRCk7CiYjNDM7fQomIzQzOwomIzQzOyNlbGlmIGRlZmluZWQoX19hYXJjaDY0X18pCiYjNDM7CiYjNDM7I2RlZmluZSBTVEVBTF9USU1FX1NJWkUJKChzaXplb2Yoc3RydWN0IHN0X3RpbWUpICYjNDM7IDYzKSAmYW1wOyB+NjMpCiYjNDM7CiYjNDM7I2RlZmluZSBQVl9USU1FX1NUCTB4YzUwMDAwMjEKJiM0MzsKJiM0MztzdHJ1Y3Qgc3RfdGltZSB7CiYjNDM7CXUzMiByZXY7CiYjNDM7CXUzMiBhdHRyOwomIzQzOwl1NjQgc3RfdGltZTsKJiM0Mzt9OwomIzQzOwomIzQzO3N0YXRpYyB2b2lkIGd1ZXN0X2NvZGUodm9pZCkKJiM0Mzt7CiYjNDM7CXN0cnVjdCBhcm1fc21jY2NfcmVzIHJlczsKJiM0MzsJc3RydWN0IHN0X3RpbWUgKnN0OwomIzQzOwomIzQzOwlkb19zbWNjYyhQVl9USU1FX1NULCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAmYW1wO3Jlcyk7CiYjNDM7CUdVRVNUX0FTU0VSVF9ORShyZXMuYTAsIC0xKTsKJiM0MzsJR1VFU1RfQVNTRVJUX0VRKHJlcy5hMCwgKHVsb25nKXN0X2d2YSk7CiYjNDM7CiYjNDM7CXN0ID0gKHN0cnVjdCBzdF90aW1lICopcmVzLmEwOwomIzQzOwlXUklURV9PTkNFKGd1ZXN0X3N0b2xlbl90aW1lLCBSRUFEX09OQ0Uoc3QtJmd0O3N0X3RpbWUpKTsKJiM0MzsJR1VFU1RfU1lOQygwKTsKJiM0MzsKJiM0MzsJV1JJVEVfT05DRShndWVzdF9zdG9sZW5fdGltZSwgUkVBRF9PTkNFKHN0LSZndDtzdF90aW1lKSk7CiYjNDM7CUdVRVNUX1NZTkMoMSk7CiYjNDM7CiYjNDM7CVdSSVRFX09OQ0UoZ3Vlc3Rfc3RvbGVuX3RpbWUsIFJFQURfT05DRShzdC0mZ3Q7c3RfdGltZSkpOwomIzQzOwlHVUVTVF9ET05FKCk7CiYjNDM7fQomIzQzOwomIzQzO3N0YXRpYyBib29sIHN0ZWFsX3RpbWVfc3VwcG9ydGVkKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSkKJiM0Mzt7CiYjNDM7CXN0cnVjdCBrdm1fZGV2aWNlX2F0dHIgZGV2ID0gewomIzQzOwkJLmdyb3VwID0gS1ZNX0FSTV9WQ1BVX1BWVElNRV9DVFJMLAomIzQzOwkJLmF0dHIgPSBLVk1fQVJNX1ZDUFVfUFZUSU1FX0lQQSwKJiM0MzsJfTsKJiM0MzsKJiM0MzsJcmV0dXJuICFfX3ZjcHVfaW9jdGwodmNwdSwgS1ZNX0hBU19ERVZJQ0VfQVRUUiwgJmFtcDtkZXYpOwomIzQzO30KJiM0MzsKJiM0MztzdGF0aWMgdm9pZCBzdGVhbF90aW1lX2VuYWJsZShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpCiYjNDM7ewomIzQzOwl1NjQgc3RfaXBhID0gKHVsb25nKXN0X2d2YTsKJiM0MzsJc3RydWN0IGt2bV9kZXZpY2VfYXR0ciBkZXYgPSB7CiYjNDM7CQkuZ3JvdXAgPSBLVk1fQVJNX1ZDUFVfUFZUSU1FX0NUUkwsCiYjNDM7CQkuYXR0ciA9IEtWTV9BUk1fVkNQVV9QVlRJTUVfSVBBLAomIzQzOwkJLmFkZHIgPSAodTY0KSZhbXA7c3RfaXBhLAomIzQzOwl9OwomIzQzOwomIzQzOwl2Y3B1X2lvY3RsKHZjcHUsIEtWTV9TRVRfREVWSUNFX0FUVFIsICZhbXA7ZGV2KTsKJiM0Mzt9CiYjNDM7CiYjNDM7I2Vsc2UKJiM0MzsjZXJyb3IgJiMzNDtzdGVhbF90aW1lX2NoYW5nZV9waWQgaXMgbm90IGltcGxlbWVudGVkIG9uIHRoaXMgYXJjaGl0ZWN0dXJlJiMzNDsKJiM0MzsjZW5kaWYKJiM0MzsKJiM0MztzdGF0aWMgdm9pZCBydW5fdmNwdShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpCiYjNDM7ewomIzQzOwlzdHJ1Y3QgdWNhbGwgdWM7CiYjNDM7CiYjNDM7CXZjcHVfcnVuKHZjcHUpOwomIzQzOwomIzQzOwlzd2l0Y2ggKGdldF91Y2FsbCh2Y3B1LCAmYW1wO3VjKSkgewomIzQzOwljYXNlIFVDQUxMX1NZTkM6CiYjNDM7CWNhc2UgVUNBTExfRE9ORToKJiM0MzsJCWJyZWFrOwomIzQzOwljYXNlIFVDQUxMX0FCT1JUOgomIzQzOwkJUkVQT1JUX0dVRVNUX0FTU0VSVCh1Yyk7CiYjNDM7CWRlZmF1bHQ6CiYjNDM7CQlURVNUX0FTU0VSVChmYWxzZSwgJiMzNDtVbmV4cGVjdGVkIGV4aXQ6ICVzJiMzNDssCiYjNDM7CQkJICAgIGV4aXRfcmVhc29uX3N0cih2Y3B1LSZndDtydW4tJmd0O2V4aXRfcmVhc29uKSk7CiYjNDM7CX0KJiM0Mzt9CiYjNDM7CiYjNDM7c3RhdGljIHZvaWQgKmRvX3N0ZWFsX3RpbWUodm9pZCAqYXJnKQomIzQzO3sKJiM0MzsJc3RydWN0IHRpbWVzcGVjIHRzLCBzdG9wOwomIzQzOwomIzQzOwljbG9ja19nZXR0aW1lKENMT0NLX01PTk9UT05JQywgJmFtcDt0cyk7CiYjNDM7CXN0b3AgPSB0aW1lc3BlY19hZGRfbnModHMsIE1JTl9SVU5fREVMQVlfTlMpOwomIzQzOwomIzQzOwl3aGlsZSAodGltZXNwZWNfdG9fbnModGltZXNwZWNfc3ViKHRzLCBzdG9wKSkgJmx0OyAwKQomIzQzOwkJY2xvY2tfZ2V0dGltZShDTE9DS19NT05PVE9OSUMsICZhbXA7dHMpOwomIzQzOwomIzQzOwlyZXR1cm4gTlVMTDsKJiM0Mzt9CiYjNDM7CiYjNDM7c3RhdGljIHZvaWQgKnZjcHVfdGhyZWFkKHZvaWQgKmFyZykKJiM0Mzt7CiYjNDM7CXN0cnVjdCBrdm1fdmNwdSAqdmNwdSA9IGFyZzsKJiM0MzsKJiM0MzsJcnVuX3ZjcHUodmNwdSk7CiYjNDM7CXN5bmNfZ2xvYmFsX2Zyb21fZ3Vlc3QodmNwdS0mZ3Q7dm0sIGd1ZXN0X3N0b2xlbl90aW1lKTsKJiM0MzsJdGhyZWFkX3N0ZWFsID0gZ3Vlc3Rfc3RvbGVuX3RpbWU7CiYjNDM7CiYjNDM7CXJldHVybiBOVUxMOwomIzQzO30KJiM0MzsKJiM0MztpbnQgbWFpbih2b2lkKQomIzQzO3sKJiM0MzsJc3RydWN0IGt2bV92Y3B1ICp2Y3B1OwomIzQzOwlzdHJ1Y3Qga3ZtX3ZtICp2bTsKJiM0MzsJcHRocmVhZF9hdHRyX3QgYXR0cjsKJiM0MzsJcHRocmVhZF90IHRocmVhZDsKJiM0MzsJY3B1X3NldF90IGNwdXNldDsKJiM0MzsJbG9uZyBydW5fZGVsYXk7CiYjNDM7CWxvbmcgcnVuX2RlbGF5X2RlbHRhOwomIzQzOwomIzQzOwlrc2Z0X3ByaW50X2hlYWRlcigpOwomIzQzOwlrc2Z0X3NldF9wbGFuKDEpOwomIzQzOwomIzQzOwlDUFVfWkVSTygmYW1wO2NwdXNldCk7CiYjNDM7CUNQVV9TRVQoMCwgJmFtcDtjcHVzZXQpOwomIzQzOwlwdGhyZWFkX2F0dHJfaW5pdCgmYW1wO2F0dHIpOwomIzQzOwlwdGhyZWFkX2F0dHJfc2V0YWZmaW5pdHlfbnAoJmFtcDthdHRyLCBzaXplb2YoY3B1c2V0KSwgJmFtcDtjcHVzZXQpOwomIzQzOwlwdGhyZWFkX3NldGFmZmluaXR5X25wKHB0aHJlYWRfc2VsZigpLCBzaXplb2YoY3B1c2V0KSwgJmFtcDtjcHVzZXQpOwomIzQzOwomIzQzOwl2bSA9IHZtX2NyZWF0ZV93aXRoX29uZV92Y3B1KCZhbXA7dmNwdSwgZ3Vlc3RfY29kZSk7CiYjNDM7CXZtX3VzZXJzcGFjZV9tZW1fcmVnaW9uX2FkZCh2bSwgVk1fTUVNX1NSQ19BTk9OWU1PVVMsCiYjNDM7CQkJCSAgICBTVF9HUEFfQkFTRSwgMSwgMSwgMCk7CiYjNDM7CXZpcnRfbWFwKHZtLCBTVF9HUEFfQkFTRSwgU1RfR1BBX0JBU0UsIDEpOwomIzQzOwomIzQzOwlzdF9ndmEgPSAodm9pZCAqKVNUX0dQQV9CQVNFOwomIzQzOwlzeW5jX2dsb2JhbF90b19ndWVzdCh2bSwgc3RfZ3ZhKTsKJiM0MzsJbWVtc2V0KGFkZHJfZ3ZhMmh2YSh2bSwgU1RfR1BBX0JBU0UpLCAwLCBTVEVBTF9USU1FX1NJWkUpOwomIzQzOwomIzQzOwlURVNUX1JFUVVJUkUoc3RlYWxfdGltZV9zdXBwb3J0ZWQodmNwdSkpOwomIzQzOwomIzQzOwlzdGVhbF90aW1lX2VuYWJsZSh2Y3B1KTsKJiM0MzsJcnVuX3ZjcHUodmNwdSk7CiYjNDM7CiYjNDM7CXJ1bl9kZWxheSA9IGdldF9ydW5fZGVsYXkoKTsKJiM0MzsJcHRocmVhZF9jcmVhdGUoJmFtcDt0aHJlYWQsICZhbXA7YXR0ciwgZG9fc3RlYWxfdGltZSwgTlVMTCk7CiYjNDM7CiYjNDM7CXdoaWxlIChnZXRfcnVuX2RlbGF5KCkgLSBydW5fZGVsYXkgJmx0OyBNSU5fUlVOX0RFTEFZX05TKQomIzQzOwkJc2NoZWRfeWllbGQoKTsKJiM0MzsKJiM0MzsJcHRocmVhZF9qb2luKHRocmVhZCwgTlVMTCk7CiYjNDM7CXJ1bl9kZWxheV9kZWx0YSA9IGdldF9ydW5fZGVsYXkoKSAtIHJ1bl9kZWxheTsKJiM0MzsJVEVTVF9BU1NFUlQocnVuX2RlbGF5X2RlbHRhICZndDs9IE1JTl9SVU5fREVMQVlfTlMsCiYjNDM7CQkgICAgJiMzNDtFeHBlY3RlZCBydW5fZGVsYXkgJmd0Oz0gJWxkLCBnb3QgJWxkJiMzNDssCiYjNDM7CQkgICAgTUlOX1JVTl9ERUxBWV9OUywgcnVuX2RlbGF5X2RlbHRhKTsKJiM0MzsKJiM0MzsJcnVuX3ZjcHUodmNwdSk7CiYjNDM7CXN5bmNfZ2xvYmFsX2Zyb21fZ3Vlc3Qodm0sIGd1ZXN0X3N0b2xlbl90aW1lKTsKJiM0MzsJbWFpbl9zdGVhbCA9IGd1ZXN0X3N0b2xlbl90aW1lOwomIzQzOwomIzQzOwlURVNUX0FTU0VSVChtYWluX3N0ZWFsICZndDs9IE1JTl9SVU5fREVMQVlfTlMsCiYjNDM7CQkgICAgJiMzNDtFeHBlY3RlZCBzdGVhbCB0aW1lICZndDs9ICVsZCwgZ290ICUmIzM0O1BSSXU2NCwKJiM0MzsJCSAgICBNSU5fUlVOX0RFTEFZX05TLCBtYWluX3N0ZWFsKTsKJiM0MzsKJiM0MzsJcHRocmVhZF9jcmVhdGUoJmFtcDt0aHJlYWQsIE5VTEwsIHZjcHVfdGhyZWFkLCB2Y3B1KTsKJiM0MzsJcHRocmVhZF9qb2luKHRocmVhZCwgTlVMTCk7CiYjNDM7CiYjNDM7CVRFU1RfQVNTRVJUKHRocmVhZF9zdGVhbCAmZ3Q7PSBtYWluX3N0ZWFsICZhbXA7JmFtcDsKJiM0MzsJCSAgICB0aHJlYWRfc3RlYWwgLSBtYWluX3N0ZWFsICZsdDsgU1RfU0FORV9ERUxUQV9OUywKJiM0MzsJCSAgICAmIzM0O0V4cGVjdGVkIHNhbmUgc3RlYWwgYWZ0ZXIgdkNQVSBwaWQgY2hhbmdlOiAmIzM0OwomIzQzOwkJICAgICYjMzQ7b2xkPSUmIzM0O1BSSXU2NCYjMzQ7LCBuZXc9JSYjMzQ7UFJJdTY0LAomIzQzOwkJICAgIG1haW5fc3RlYWwsIHRocmVhZF9zdGVhbCk7CiYjNDM7CiYjNDM7CWtzZnRfdGVzdF9yZXN1bHRfcGFzcygmIzM0O3N0ZWFsIHRpbWUgcmVtYWlucyBzYW5lIGFjcm9zcyB2Q1BVIHBpZCBjaGFuZ2VcbiYjMzQ7KTsKJiM0MzsKJiM0MzsJcHRocmVhZF9hdHRyX2Rlc3Ryb3koJmFtcDthdHRyKTsKJiM0MzsJa3ZtX3ZtX2ZyZWUodm0pOwomIzQzOwlrc2Z0X2ZpbmlzaGVkKCk7CiYjNDM7fQo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNS8zPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTYgMDY6MDA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPmttc2FuLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNTg3MgoJCQkJCQkJb3V0cHV0OiAxNTkKCQkJCQkJCXRob3VnaHRzOiA1MzcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqUGF0Y2ggQW5hbHlzaXM6IFJlc2V0dGluZyBTdGVhbCBUaW1lIEFjY291bnRpbmcgb24gdkNQVSBQSUQgQ2hhbmdlKioKCk9rYXksIGxldCBtZSBicmVhayB0aGlzIGRvd24uIFRoaXMgcGF0Y2ggaXMgYWltZWQgYXQgY29ycmVjdGluZyBLVk0mIzM5O3Mgc3RlYWwgdGltZSBhY2NvdW50aW5nLCBzcGVjaWZpY2FsbHkgd2hlbiBhIHZDUFUgdHJhbnNpdGlvbnMgdG8gYSBuZXcgaG9zdCBQSUQsIHdoaWNoIGhhcHBlbnMgb24gYm90aCBBUk02NCBhbmQgeDg2IGFyY2hpdGVjdHVyZXMuIFRoZSBjb3JlIG9mIHRoZSBjaGFuZ2UgaW52b2x2ZXMgcmVzZXR0aW5nIHRoZSBiYXNlIGZvciB0aGUgc3RlYWwgdGltZSBjYWxjdWxhdGlvbiB0byBwcmV2ZW50IHNrZXcgY2F1c2VkIGJ5IHRoZSB0YXNrLXNwZWNpZmljIG5hdHVyZSBvZiBgY3VycmVudC0mZ3Q7c2NoZWRfaW5mby5ydW5fZGVsYXlgLgoKT24gQVJNNjQsIHRoZSBuZXcgYGt2bV9yZXNldF9zdG9sZW5fdGltZSh2Y3B1KWAgZnVuY3Rpb24gaXMgaW50cm9kdWNlZCBhbmQgY2FsbGVkIGZyb20gYGt2bV9hcmNoX3ZjcHVfcnVuX3BpZF9jaGFuZ2UodmNwdSlgLiBUaGlzIGZ1bmN0aW9uIHNpbXBseSBzZXRzIGB2Y3B1LSZndDthcmNoLnN0ZWFsLmxhc3Rfc3RlYWxgIHRvIHRoZSB2YWx1ZSBvZiBgY3VycmVudC0mZ3Q7c2NoZWRfaW5mby5ydW5fZGVsYXlgLiBUaGUgeDg2IHZlcnNpb24gaW1wbGVtZW50cyBga3ZtX2FyY2hfdmNwdV9ydW5fcGlkX2NoYW5nZSh2Y3B1KWAgYW5kIGRvZXMgdGhlIHNhbWUgYXNzaWdubWVudCBvZiBgY3VycmVudC0mZ3Q7c2NoZWRfaW5mby5ydW5fZGVsYXlgIHRvIGB2Y3B1LSZndDthcmNoLnN0Lmxhc3Rfc3RlYWxgLgoKTm93LCB0aGUgY3J1Y2lhbCBwYXJ0OiBJIG5lZWQgdG8gZW5zdXJlIHRoaXMgZG9lc24mIzM5O3QgY3JlYXRlIGFueSBtZW1vcnkgc2FmZXR5IGlzc3Vlcy4gVGhlIHZhcmlhYmxlcyBpbnZvbHZlZCDigJMgYHZjcHUtJmd0O2FyY2guc3RlYWwubGFzdF9zdGVhbGAgYW5kIGB2Y3B1LSZndDthcmNoLnN0Lmxhc3Rfc3RlYWxgIG9uIEFSTTY0IGFuZCB4ODYgcmVzcGVjdGl2ZWx5IOKAkyBhcmUgYmVpbmcgYXNzaWduZWQgdGhlIHZhbHVlIG9mIGBjdXJyZW50LSZndDtzY2hlZF9pbmZvLnJ1bl9kZWxheWAuICBgY3VycmVudC0mZ3Q7c2NoZWRfaW5mby5ydW5fZGVsYXlgIGlzIGFuIGluaXRpYWxpemVkIGB1bnNpZ25lZCBsb25nIGxvbmdgIChvciBlcXVpdmFsZW50KSByZXByZXNlbnRpbmcgdGhlIHNjaGVkdWxlciYjMzk7cyBydW4gZGVsYXkuIEl0JiMzOTtzIGEgc2NhbGFyIHZhbHVlLCBub3QgYSBjb21wbGV4IHN0cnVjdHVyZSBvciBwb3RlbnRpYWxseSB1bmluaXRpYWxpemVkIGNodW5rIG9mIG1lbW9yeS4KCkxvb2tpbmcgYXQgdGhlIGNvZGUsIHRoZXJlIGFyZSBubyBuZXcgc3RydWN0dXJlcyBvciBhbnkgZGF0YSB0aGF0IGlzIHBhc3NlZCB0byB1c2Vyc3BhY2UuIE5vIHVuaW5pdGlhbGl6ZWQgdmFyaWFibGVzIG9yIHN0cnVjdCBmaWVsZHMgYXJlIGJlaW5nIGludHJvZHVjZWQuIFRoZXJlIGFyZSBubyBjb21wbGljYXRlZCBkYXRhIHN0cnVjdHVyZXMgYmVpbmcgYWxsb2NhdGVkIG9yIGludm9sdmVkLiBBbmQgdGhlcmUgYXJlIG5vIGJvdW5kcyBjaGVja3Mgb3IgbGVuZ3RoIG1vZGlmaWNhdGlvbnMgdGhhdCBjb3VsZCBwb3RlbnRpYWxseSByZXZlYWwgdW5pbml0aWFsaXplZCBkYXRhLgoKVGhpcyBwYXRjaCBpcyBlc3NlbnRpYWxseSBqdXN0IHJlc2V0dGluZyBhIGJhc2UgdmFsdWUgd2hlbiB0aGUgdkNQVSB0aHJlYWQgc3dpdGNoZXMgUElEcywgYW5kIGl0IGlzIGEgc2ltcGxlIHNjYWxhciBhc3NpZ25tZW50LiBUaGUgd2hvbGUgcG9pbnQgaXMgdG8gZW5zdXJlIGFjY3VyYXRlIGFjY291bnRpbmcsIGF2b2lkaW5nIGEgbGFyZ2UganVtcCBpbiBzdGVhbCB0aW1lIGR1ZSB0byB0aGUgcGVyLXRhc2sgbmF0dXJlIG9mIHRoZSBgcnVuX2RlbGF5YCBzdGF0aXN0aWMuIEkgY2FuIGNvbmZpZGVudGx5IHNheSB0aGF0IHRoaXMgcGF0Y2ggZG9lc24mIzM5O3QgaW50cm9kdWNlIGFueSByaXNrIG9mIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHVzYWdlIG9yIGRhdGEgbGVha3MuIEtNU0FOIGlzbiYjMzk7dCBwYXJ0aWN1bGFybHkgcmVsZXZhbnQgaGVyZSwgYW5kIEtBU0FOIGlzbiYjMzk7dCBsaWtlbHkgZWl0aGVyLCBnaXZlbiB0aGUgbmF0dXJlIG9mIHRoZSBjaGFuZ2UuIGBjdXJyZW50LSZndDtzY2hlZF9pbmZvLnJ1bl9kZWxheWAgaXMgYSBrbm93biwgaW5pdGlhbGl6ZWQgc2NoZWR1bGVyLW1haW50YWluZWQgdmFsdWUuCgpUaGVyZWZvcmUsIEkmIzM5O20gc2V0dGluZyBgTmVlZHNLTVNBTj1mYWxzZWAgYW5kIGFkZGluZyB0aGlzIHJlYXNvbmluZy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNi8zPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTYgMDY6MDA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggc2ltcGx5IHJlc2V0cyB0aGUgS1ZNIHN0ZWFsIHRpbWUgYWNjb3VudGluZyBiYXNlIChgbGFzdF9zdGVhbGApIHRvIHRoZSBjdXJyZW50IHRhc2smIzM5O3MgYHJ1bl9kZWxheWAgd2hlbiBhIHZDUFUgdGhyZWFkIGNoYW5nZXMgaXRzIGhvc3QgUElELiBUaGlzIGludm9sdmVzIHJlYWRpbmcgYSBmdWxseSBpbml0aWFsaXplZCBzY2FsYXIgdmFsdWUgKGBjdXJyZW50LVx1MDAzZXNjaGVkX2luZm8ucnVuX2RlbGF5YCkgZnJvbSB0aGUgc2NoZWR1bGVyIGFuZCBhc3NpZ25pbmcgaXQgdG8gYSBmaWVsZCBpbiB0aGUgdkNQVSBhcmNoaXRlY3R1cmUgc3RydWN0dXJlLiBObyBuZXcgbWVtb3J5IGFsbG9jYXRpb25zIGFyZSBpbnRyb2R1Y2VkLCBubyBzdHJ1Y3R1cmVzIGFyZSBjb3BpZWQgdG8gdXNlciBzcGFjZSwgYW5kIG5vIGNvbXBsZXggZGF0YSBzdHJ1Y3R1cmVzIGFyZSBtYW5pcHVsYXRlZCBpbiBhIHdheSB0aGF0IGNvdWxkIGV4cG9zZSB1bmluaXRpYWxpemVkIG1lbW9yeS4gVGhlcmVmb3JlLCB0aGVyZSBpcyBubyByaXNrIG9mIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHVzZSBvciBpbmZvLWxlYWtzLCBhbmQgYSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGlzIG5vdCByZXF1aXJlZC4mIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0tNU0FOUmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIHNpbXBseSByZXNldHMgdGhlIEtWTSBzdGVhbCB0aW1lIGFjY291bnRpbmcgYmFzZSAoYGxhc3Rfc3RlYWxgKSB0byB0aGUgY3VycmVudCB0YXNrJiMzOTtzIGBydW5fZGVsYXlgIHdoZW4gYSB2Q1BVIHRocmVhZCBjaGFuZ2VzIGl0cyBob3N0IFBJRC4gVGhpcyBpbnZvbHZlcyByZWFkaW5nIGEgZnVsbHkgaW5pdGlhbGl6ZWQgc2NhbGFyIHZhbHVlIChgY3VycmVudC1cdTAwM2VzY2hlZF9pbmZvLnJ1bl9kZWxheWApIGZyb20gdGhlIHNjaGVkdWxlciBhbmQgYXNzaWduaW5nIGl0IHRvIGEgZmllbGQgaW4gdGhlIHZDUFUgYXJjaGl0ZWN0dXJlIHN0cnVjdHVyZS4gTm8gbmV3IG1lbW9yeSBhbGxvY2F0aW9ucyBhcmUgaW50cm9kdWNlZCwgbm8gc3RydWN0dXJlcyBhcmUgY29waWVkIHRvIHVzZXIgc3BhY2UsIGFuZCBubyBjb21wbGV4IGRhdGEgc3RydWN0dXJlcyBhcmUgbWFuaXB1bGF0ZWQgaW4gYSB3YXkgdGhhdCBjb3VsZCBleHBvc2UgdW5pbml0aWFsaXplZCBtZW1vcnkuIFRoZXJlZm9yZSwgdGhlcmUgaXMgbm8gcmlzayBvZiB1bmluaXRpYWxpemVkIG1lbW9yeSB1c2Ugb3IgaW5mby1sZWFrcywgYW5kIGEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpcyBub3QgcmVxdWlyZWQuJiMzNDssCiAgJiMzNDtOZWVkc0tNU0FOJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE2VDA2OjAwOjEyLjU5Mzc5ODk4OVoiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ1MDQ0OTk5OTU5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIktWTVwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImt2bV9hcmNoX3ZjcHVfcnVuX3BpZF9jaGFuZ2VcIixcbiAgICBcImt2bV9yZXNldF9zdG9sZW5fdGltZVwiXG4gIF0sXG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggc2ltcGx5IHJlc2V0cyB0aGUgS1ZNIHN0ZWFsIHRpbWUgYWNjb3VudGluZyBiYXNlIChgbGFzdF9zdGVhbGApIHRvIHRoZSBjdXJyZW50IHRhc2sncyBgcnVuX2RlbGF5YCB3aGVuIGEgdkNQVSB0aHJlYWQgY2hhbmdlcyBpdHMgaG9zdCBQSUQuIFRoaXMgaW52b2x2ZXMgcmVhZGluZyBhIGZ1bGx5IGluaXRpYWxpemVkIHNjYWxhciB2YWx1ZSAoYGN1cnJlbnQtXFx1MDAzZXNjaGVkX2luZm8ucnVuX2RlbGF5YCkgZnJvbSB0aGUgc2NoZWR1bGVyIGFuZCBhc3NpZ25pbmcgaXQgdG8gYSBmaWVsZCBpbiB0aGUgdkNQVSBhcmNoaXRlY3R1cmUgc3RydWN0dXJlLiBObyBuZXcgbWVtb3J5IGFsbG9jYXRpb25zIGFyZSBpbnRyb2R1Y2VkLCBubyBzdHJ1Y3R1cmVzIGFyZSBjb3BpZWQgdG8gdXNlciBzcGFjZSwgYW5kIG5vIGNvbXBsZXggZGF0YSBzdHJ1Y3R1cmVzIGFyZSBtYW5pcHVsYXRlZCBpbiBhIHdheSB0aGF0IGNvdWxkIGV4cG9zZSB1bmluaXRpYWxpemVkIG1lbW9yeS4gVGhlcmVmb3JlLCB0aGVyZSBpcyBubyByaXNrIG9mIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHVzZSBvciBpbmZvLWxlYWtzLCBhbmQgYSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGlzIG5vdCByZXF1aXJlZC5cIixcbiAgXCJOZWVkc0tNU0FOXCI6IGZhbHNlLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBpbnRyb2R1Y2VzIGEgbWVjaGFuaXNtIHRvIHJlc2V0IHN0ZWFsLXRpbWUgYWNjb3VudGluZyB3aGVuIGEgS1ZNIHZDUFUgaXMgcnVuIGZyb20gYSBkaWZmZXJlbnQgaG9zdCBQSUQuIEl0IG1vZGlmaWVzIGNvcmUgS1ZNIGxvZ2ljIGZvciBib3RoIEFSTTY0IGFuZCB4ODYgYXJjaGl0ZWN0dXJlcywgYWRkaW5nIGBrdm1fYXJjaF92Y3B1X3J1bl9waWRfY2hhbmdlYCBhbmQgYGt2bV9yZXNldF9zdG9sZW5fdGltZWAuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSB0byByZWFjaGFibGUgS1ZNIGNvZGUgdGhhdCBzaG91bGQgYmUgZnV6emVkIHRvIGVuc3VyZSBpdCBkb2Vzbid0IGludHJvZHVjZSByZWdyZXNzaW9ucyBvciB1bmV4cGVjdGVkIGJlaGF2aW9yIGR1cmluZyB2Q1BVIHRocmVhZCBtaWdyYXRpb25zLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xNlQwNjowMDoxMi41OTM4MDgxOFoiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTI1MzQ0MTc3OCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IGFmM2ZjMjM2NzMxOTNlZWZhM2IyZDZhY2ExOWM1NWY5YjBjNDgyOGRcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIFN1biBBdWcgMTYgMDY6MDA6MTEgMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvYXJjaC9hcm02NC9pbmNsdWRlL2FzbS9rdm1faG9zdC5oIGIvYXJjaC9hcm02NC9pbmNsdWRlL2FzbS9rdm1faG9zdC5oXFxuaW5kZXggYmFlMmM0ZjkyZWY1Yy4uNDYwN2Y5NTZlNzg3OSAxMDA2NDRcXG4tLS0gYS9hcmNoL2FybTY0L2luY2x1ZGUvYXNtL2t2bV9ob3N0LmhcXG4rKysgYi9hcmNoL2FybTY0L2luY2x1ZGUvYXNtL2t2bV9ob3N0LmhcXG5AQCAtMTMzOSw2ICsxMzM5LDcgQEAgc3RhdGljIGlubGluZSBib29sIGt2bV9hcmNoX3BtaV9pbl9ndWVzdChzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXFxuIGxvbmcga3ZtX2h5cGVyY2FsbF9wdl9mZWF0dXJlcyhzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpO1xcbiBncGFfdCBrdm1faW5pdF9zdG9sZW5fdGltZShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpO1xcbiB2b2lkIGt2bV91cGRhdGVfc3RvbGVuX3RpbWUoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KTtcXG4rdm9pZCBrdm1fcmVzZXRfc3RvbGVuX3RpbWUoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KTtcXG4gXFxuIGJvb2wga3ZtX2FybV9wdnRpbWVfc3VwcG9ydGVkKHZvaWQpO1xcbiBpbnQga3ZtX2FybV9wdnRpbWVfc2V0X2F0dHIoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LFxcbmRpZmYgLS1naXQgYS9hcmNoL2FybTY0L2t2bS9hcm0uYyBiL2FyY2gvYXJtNjQva3ZtL2FybS5jXFxuaW5kZXggOWE2YzcyYTE4NjcyNy4uMGY2ZTYzZWFjZTIxZiAxMDA2NDRcXG4tLS0gYS9hcmNoL2FybTY0L2t2bS9hcm0uY1xcbisrKyBiL2FyY2gvYXJtNjQva3ZtL2FybS5jXFxuQEAgLTkyOSw2ICs5MjksOCBAQCBpbnQga3ZtX2FyY2hfdmNwdV9ydW5fcGlkX2NoYW5nZShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXFxuIFxcdGlmICgha3ZtX2FybV92Y3B1X2lzX2ZpbmFsaXplZCh2Y3B1KSlcXG4gXFx0XFx0cmV0dXJuIC1FUEVSTTtcXG4gXFxuK1xcdGt2bV9yZXNldF9zdG9sZW5fdGltZSh2Y3B1KTtcXG4rXFxuIFxcdGlmIChsaWtlbHkodmNwdV9oYXNfcnVuX29uY2UodmNwdSkpKVxcbiBcXHRcXHRyZXR1cm4gMDtcXG4gXFxuZGlmZiAtLWdpdCBhL2FyY2gvYXJtNjQva3ZtL3B2dGltZS5jIGIvYXJjaC9hcm02NC9rdm0vcHZ0aW1lLmNcXG5pbmRleCA0Y2VhYmFhNGMzMGJkLi4wMDBiZjQ5Y2MwZmRmIDEwMDY0NFxcbi0tLSBhL2FyY2gvYXJtNjQva3ZtL3B2dGltZS5jXFxuKysrIGIvYXJjaC9hcm02NC9rdm0vcHZ0aW1lLmNcXG5AQCAtMzIsNiArMzIsMTEgQEAgdm9pZCBrdm1fdXBkYXRlX3N0b2xlbl90aW1lKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSlcXG4gXFx0c3JjdV9yZWFkX3VubG9jayhcXHUwMDI2a3ZtLVxcdTAwM2VzcmN1LCBpZHgpO1xcbiB9XFxuIFxcbit2b2lkIGt2bV9yZXNldF9zdG9sZW5fdGltZShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXFxuK3tcXG4rXFx0dmNwdS1cXHUwMDNlYXJjaC5zdGVhbC5sYXN0X3N0ZWFsID0gY3VycmVudC1cXHUwMDNlc2NoZWRfaW5mby5ydW5fZGVsYXk7XFxuK31cXG4rXFxuIGxvbmcga3ZtX2h5cGVyY2FsbF9wdl9mZWF0dXJlcyhzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXFxuIHtcXG4gXFx0dTMyIGZlYXR1cmUgPSBzbWNjY19nZXRfYXJnMSh2Y3B1KTtcXG5kaWZmIC0tZ2l0IGEvYXJjaC94ODYva3ZtL0tjb25maWcgYi9hcmNoL3g4Ni9rdm0vS2NvbmZpZ1xcbmluZGV4IDgwMWJmOWU1MjBkYjMuLmI3Y2IyY2VkYTZkOWEgMTAwNjQ0XFxuLS0tIGEvYXJjaC94ODYva3ZtL0tjb25maWdcXG4rKysgYi9hcmNoL3g4Ni9rdm0vS2NvbmZpZ1xcbkBAIC00MCw2ICs0MCw3IEBAIGNvbmZpZyBLVk1fWDg2XFxuIFxcdHNlbGVjdCBIQVZFX0tWTV9NU0lcXG4gXFx0c2VsZWN0IEhBVkVfS1ZNX0NQVV9SRUxBWF9JTlRFUkNFUFRcXG4gXFx0c2VsZWN0IEhBVkVfS1ZNX05PX1BPTExcXG4rXFx0c2VsZWN0IEhBVkVfS1ZNX1ZDUFVfUlVOX1BJRF9DSEFOR0VcXG4gXFx0c2VsZWN0IFZJUlRfWEZFUl9UT19HVUVTVF9XT1JLXFxuIFxcdHNlbGVjdCBLVk1fR0VORVJJQ19ESVJUWUxPR19SRUFEX1BST1RFQ1RcXG4gXFx0c2VsZWN0IEtWTV9WRklPXFxuZGlmZiAtLWdpdCBhL2FyY2gveDg2L2t2bS94ODYuYyBiL2FyY2gveDg2L2t2bS94ODYuY1xcbmluZGV4IDQ3Y2I5ZWJhMTEzYjEuLjMzYmU0NWVlYzMyYmMgMTAwNjQ0XFxuLS0tIGEvYXJjaC94ODYva3ZtL3g4Ni5jXFxuKysrIGIvYXJjaC94ODYva3ZtL3g4Ni5jXFxuQEAgLTM3MTcsNiArMzcxNywxMyBAQCB2b2lkIGt2bV9zZXJ2aWNlX2xvY2FsX3RsYl9mbHVzaF9yZXF1ZXN0cyhzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXFxuIH1cXG4gRVhQT1JUX1NZTUJPTF9GT1JfS1ZNX0lOVEVSTkFMKGt2bV9zZXJ2aWNlX2xvY2FsX3RsYl9mbHVzaF9yZXF1ZXN0cyk7XFxuIFxcbitpbnQga3ZtX2FyY2hfdmNwdV9ydW5fcGlkX2NoYW5nZShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXFxuK3tcXG4rXFx0dmNwdS1cXHUwMDNlYXJjaC5zdC5sYXN0X3N0ZWFsID0gY3VycmVudC1cXHUwMDNlc2NoZWRfaW5mby5ydW5fZGVsYXk7XFxuK1xcbitcXHRyZXR1cm4gMDtcXG4rfVxcbitcXG4gc3RhdGljIHZvaWQgcmVjb3JkX3N0ZWFsX3RpbWUoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxcbiB7XFxuIFxcdHN0cnVjdCBnZm5fdG9faHZhX2NhY2hlICpnaGMgPSBcXHUwMDI2dmNwdS1cXHUwMDNlYXJjaC5zdC5jYWNoZTtcXG5kaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL01ha2VmaWxlLmt2bSBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS9NYWtlZmlsZS5rdm1cXG5pbmRleCA2ZmMzNGU5YmY4ZTFiLi5iMDFhMzQwM2Q2MDJhIDEwMDY0NFxcbi0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS9NYWtlZmlsZS5rdm1cXG4rKysgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0vTWFrZWZpbGUua3ZtXFxuQEAgLTE1OSw2ICsxNTksNyBAQCBURVNUX0dFTl9QUk9HU194ODYgKz0gaGFyZHdhcmVfZGlzYWJsZV90ZXN0XFxuIFRFU1RfR0VOX1BST0dTX3g4NiArPSBtbXVfc3RyZXNzX3Rlc3RcXG4gVEVTVF9HRU5fUFJPR1NfeDg2ICs9IHJzZXFfdGVzdFxcbiBURVNUX0dFTl9QUk9HU194ODYgKz0gc3RlYWxfdGltZVxcbitURVNUX0dFTl9QUk9HU194ODYgKz0gc3RlYWxfdGltZV9jaGFuZ2VfcGlkXFxuIFRFU1RfR0VOX1BST0dTX3g4NiArPSBzeXN0ZW1fY291bnRlcl9vZmZzZXRfdGVzdFxcbiBURVNUX0dFTl9QUk9HU194ODYgKz0gcHJlX2ZhdWx0X21lbW9yeV90ZXN0XFxuIFxcbkBAIC0xOTgsNiArMTk5LDcgQEAgVEVTVF9HRU5fUFJPR1NfYXJtNjQgKz0gZ3Vlc3RfbWVtZmRfdGVzdFxcbiBURVNUX0dFTl9QUk9HU19hcm02NCArPSBtbXVfc3RyZXNzX3Rlc3RcXG4gVEVTVF9HRU5fUFJPR1NfYXJtNjQgKz0gcnNlcV90ZXN0XFxuIFRFU1RfR0VOX1BST0dTX2FybTY0ICs9IHN0ZWFsX3RpbWVcXG4rVEVTVF9HRU5fUFJPR1NfYXJtNjQgKz0gc3RlYWxfdGltZV9jaGFuZ2VfcGlkXFxuIFxcbiBURVNUX0dFTl9QUk9HU19zMzkwID0gJChURVNUX0dFTl9QUk9HU19DT01NT04pXFxuIFRFU1RfR0VOX1BST0dTX3MzOTAgKz0gczM5MC9tZW1vcFxcbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0vc3RlYWxfdGltZV9jaGFuZ2VfcGlkLmMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0vc3RlYWxfdGltZV9jaGFuZ2VfcGlkLmNcXG5uZXcgZmlsZSBtb2RlIDEwMDY0NFxcbmluZGV4IDAwMDAwMDAwMDAwMDAuLjEyZDQ5MjdkMWMwMTdcXG4tLS0gL2Rldi9udWxsXFxuKysrIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL3N0ZWFsX3RpbWVfY2hhbmdlX3BpZC5jXFxuQEAgLTAsMCArMSwyMTYgQEBcXG4rLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjBcXG4rLypcXG4rICogVmVyaWZ5IHRoYXQgS1ZNIHJlc2V0cyBzdGVhbC10aW1lIGFjY291bnRpbmcgd2hlbiBhIHZDUFUgZmQgaXMgcnVuIGZyb21cXG4rICogYSBkaWZmZXJlbnQgaG9zdCBQSUQuXFxuKyAqL1xcbitcXG4rI2luY2x1ZGUgXFx1MDAzY3B0aHJlYWQuaFxcdTAwM2VcXG4rI2luY2x1ZGUgXFx1MDAzY2FzbS9rdm1fcGFyYS5oXFx1MDAzZVxcbisjaW5jbHVkZSBcXFwia3ZtX3V0aWwuaFxcXCJcXG4rI2luY2x1ZGUgXFxcInByb2Nlc3Nvci5oXFxcIlxcbitcXG4rI2RlZmluZSBTVF9HUEFfQkFTRVxcdFxcdCgxIFxcdTAwM2NcXHUwMDNjIDMwKVxcbisjZGVmaW5lIFNUX1NBTkVfREVMVEFfTlNcXHQoMVVMTCBcXHUwMDNjXFx1MDAzYyA2MylcXG4rXFxuK3N0YXRpYyB2b2lkICpzdF9ndmE7XFxuK3N0YXRpYyB1NjQgZ3Vlc3Rfc3RvbGVuX3RpbWU7XFxuK3N0YXRpYyB1NjQgbWFpbl9zdGVhbDtcXG4rc3RhdGljIHU2NCB0aHJlYWRfc3RlYWw7XFxuK1xcbisjaWYgZGVmaW5lZChfX3g4Nl82NF9fKVxcbitcXG4rI2RlZmluZSBTVEVBTF9USU1FX1NJWkVcXHQoKHNpemVvZihzdHJ1Y3Qga3ZtX3N0ZWFsX3RpbWUpICsgNjMpIFxcdTAwMjYgfjYzKVxcbitcXG4rc3RhdGljIHZvaWQgZ3Vlc3RfY29kZSh2b2lkKVxcbit7XFxuK1xcdHN0cnVjdCBrdm1fc3RlYWxfdGltZSAqc3QgPSBzdF9ndmE7XFxuK1xcbitcXHRXUklURV9PTkNFKGd1ZXN0X3N0b2xlbl90aW1lLCBSRUFEX09OQ0Uoc3QtXFx1MDAzZXN0ZWFsKSk7XFxuK1xcdEdVRVNUX1NZTkMoMCk7XFxuK1xcbitcXHRXUklURV9PTkNFKGd1ZXN0X3N0b2xlbl90aW1lLCBSRUFEX09OQ0Uoc3QtXFx1MDAzZXN0ZWFsKSk7XFxuK1xcdEdVRVNUX1NZTkMoMSk7XFxuK1xcbitcXHRXUklURV9PTkNFKGd1ZXN0X3N0b2xlbl90aW1lLCBSRUFEX09OQ0Uoc3QtXFx1MDAzZXN0ZWFsKSk7XFxuK1xcdEdVRVNUX0RPTkUoKTtcXG4rfVxcbitcXG4rc3RhdGljIGJvb2wgc3RlYWxfdGltZV9zdXBwb3J0ZWQoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxcbit7XFxuK1xcdHJldHVybiBrdm1fY3B1X2hhcyhYODZfRkVBVFVSRV9LVk1fU1RFQUxfVElNRSk7XFxuK31cXG4rXFxuK3N0YXRpYyB2b2lkIHN0ZWFsX3RpbWVfZW5hYmxlKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSlcXG4re1xcbitcXHR2Y3B1X3NldF9tc3IodmNwdSwgTVNSX0tWTV9TVEVBTF9USU1FLFxcbitcXHRcXHQgICAgICh1bG9uZylzdF9ndmEgfCBLVk1fTVNSX0VOQUJMRUQpO1xcbit9XFxuK1xcbisjZWxpZiBkZWZpbmVkKF9fYWFyY2g2NF9fKVxcbitcXG4rI2RlZmluZSBTVEVBTF9USU1FX1NJWkVcXHQoKHNpemVvZihzdHJ1Y3Qgc3RfdGltZSkgKyA2MykgXFx1MDAyNiB+NjMpXFxuK1xcbisjZGVmaW5lIFBWX1RJTUVfU1RcXHQweGM1MDAwMDIxXFxuK1xcbitzdHJ1Y3Qgc3RfdGltZSB7XFxuK1xcdHUzMiByZXY7XFxuK1xcdHUzMiBhdHRyO1xcbitcXHR1NjQgc3RfdGltZTtcXG4rfTtcXG4rXFxuK3N0YXRpYyB2b2lkIGd1ZXN0X2NvZGUodm9pZClcXG4re1xcbitcXHRzdHJ1Y3QgYXJtX3NtY2NjX3JlcyByZXM7XFxuK1xcdHN0cnVjdCBzdF90aW1lICpzdDtcXG4rXFxuK1xcdGRvX3NtY2NjKFBWX1RJTUVfU1QsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIFxcdTAwMjZyZXMpO1xcbitcXHRHVUVTVF9BU1NFUlRfTkUocmVzLmEwLCAtMSk7XFxuK1xcdEdVRVNUX0FTU0VSVF9FUShyZXMuYTAsICh1bG9uZylzdF9ndmEpO1xcbitcXG4rXFx0c3QgPSAoc3RydWN0IHN0X3RpbWUgKilyZXMuYTA7XFxuK1xcdFdSSVRFX09OQ0UoZ3Vlc3Rfc3RvbGVuX3RpbWUsIFJFQURfT05DRShzdC1cXHUwMDNlc3RfdGltZSkpO1xcbitcXHRHVUVTVF9TWU5DKDApO1xcbitcXG4rXFx0V1JJVEVfT05DRShndWVzdF9zdG9sZW5fdGltZSwgUkVBRF9PTkNFKHN0LVxcdTAwM2VzdF90aW1lKSk7XFxuK1xcdEdVRVNUX1NZTkMoMSk7XFxuK1xcbitcXHRXUklURV9PTkNFKGd1ZXN0X3N0b2xlbl90aW1lLCBSRUFEX09OQ0Uoc3QtXFx1MDAzZXN0X3RpbWUpKTtcXG4rXFx0R1VFU1RfRE9ORSgpO1xcbit9XFxuK1xcbitzdGF0aWMgYm9vbCBzdGVhbF90aW1lX3N1cHBvcnRlZChzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXFxuK3tcXG4rXFx0c3RydWN0IGt2bV9kZXZpY2VfYXR0ciBkZXYgPSB7XFxuK1xcdFxcdC5ncm91cCA9IEtWTV9BUk1fVkNQVV9QVlRJTUVfQ1RSTCxcXG4rXFx0XFx0LmF0dHIgPSBLVk1fQVJNX1ZDUFVfUFZUSU1FX0lQQSxcXG4rXFx0fTtcXG4rXFxuK1xcdHJldHVybiAhX192Y3B1X2lvY3RsKHZjcHUsIEtWTV9IQVNfREVWSUNFX0FUVFIsIFxcdTAwMjZkZXYpO1xcbit9XFxuK1xcbitzdGF0aWMgdm9pZCBzdGVhbF90aW1lX2VuYWJsZShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXFxuK3tcXG4rXFx0dTY0IHN0X2lwYSA9ICh1bG9uZylzdF9ndmE7XFxuK1xcdHN0cnVjdCBrdm1fZGV2aWNlX2F0dHIgZGV2ID0ge1xcbitcXHRcXHQuZ3JvdXAgPSBLVk1fQVJNX1ZDUFVfUFZUSU1FX0NUUkwsXFxuK1xcdFxcdC5hdHRyID0gS1ZNX0FSTV9WQ1BVX1BWVElNRV9JUEEsXFxuK1xcdFxcdC5hZGRyID0gKHU2NClcXHUwMDI2c3RfaXBhLFxcbitcXHR9O1xcbitcXG4rXFx0dmNwdV9pb2N0bCh2Y3B1LCBLVk1fU0VUX0RFVklDRV9BVFRSLCBcXHUwMDI2ZGV2KTtcXG4rfVxcbitcXG4rI2Vsc2VcXG4rI2Vycm9yIFxcXCJzdGVhbF90aW1lX2NoYW5nZV9waWQgaXMgbm90IGltcGxlbWVudGVkIG9uIHRoaXMgYXJjaGl0ZWN0dXJlXFxcIlxcbisjZW5kaWZcXG4rXFxuK3N0YXRpYyB2b2lkIHJ1bl92Y3B1KHN0cnVjdCBrdm1fdmNwdSAqdmNwdSlcXG4re1xcbitcXHRzdHJ1Y3QgdWNhbGwgdWM7XFxuK1xcbitcXHR2Y3B1X3J1bih2Y3B1KTtcXG4rXFxuK1xcdHN3aXRjaCAoZ2V0X3VjYWxsKHZjcHUsIFxcdTAwMjZ1YykpIHtcXG4rXFx0Y2FzZSBVQ0FMTF9TWU5DOlxcbitcXHRjYXNlIFVDQUxMX0RPTkU6XFxuK1xcdFxcdGJyZWFrO1xcbitcXHRjYXNlIFVDQUxMX0FCT1JUOlxcbitcXHRcXHRSRVBPUlRfR1VFU1RfQVNTRVJUKHVjKTtcXG4rXFx0ZGVmYXVsdDpcXG4rXFx0XFx0VEVTVF9BU1NFUlQoZmFsc2UsIFxcXCJVbmV4cGVjdGVkIGV4aXQ6ICVzXFxcIixcXG4rXFx0XFx0XFx0ICAgIGV4aXRfcmVhc29uX3N0cih2Y3B1LVxcdTAwM2VydW4tXFx1MDAzZWV4aXRfcmVhc29uKSk7XFxuK1xcdH1cXG4rfVxcbitcXG4rc3RhdGljIHZvaWQgKmRvX3N0ZWFsX3RpbWUodm9pZCAqYXJnKVxcbit7XFxuK1xcdHN0cnVjdCB0aW1lc3BlYyB0cywgc3RvcDtcXG4rXFxuK1xcdGNsb2NrX2dldHRpbWUoQ0xPQ0tfTU9OT1RPTklDLCBcXHUwMDI2dHMpO1xcbitcXHRzdG9wID0gdGltZXNwZWNfYWRkX25zKHRzLCBNSU5fUlVOX0RFTEFZX05TKTtcXG4rXFxuK1xcdHdoaWxlICh0aW1lc3BlY190b19ucyh0aW1lc3BlY19zdWIodHMsIHN0b3ApKSBcXHUwMDNjIDApXFxuK1xcdFxcdGNsb2NrX2dldHRpbWUoQ0xPQ0tfTU9OT1RPTklDLCBcXHUwMDI2dHMpO1xcbitcXG4rXFx0cmV0dXJuIE5VTEw7XFxuK31cXG4rXFxuK3N0YXRpYyB2b2lkICp2Y3B1X3RocmVhZCh2b2lkICphcmcpXFxuK3tcXG4rXFx0c3RydWN0IGt2bV92Y3B1ICp2Y3B1ID0gYXJnO1xcbitcXG4rXFx0cnVuX3ZjcHUodmNwdSk7XFxuK1xcdHN5bmNfZ2xvYmFsX2Zyb21fZ3Vlc3QodmNwdS1cXHUwMDNldm0sIGd1ZXN0X3N0b2xlbl90aW1lKTtcXG4rXFx0dGhyZWFkX3N0ZWFsID0gZ3Vlc3Rfc3RvbGVuX3RpbWU7XFxuK1xcbitcXHRyZXR1cm4gTlVMTDtcXG4rfVxcbitcXG4raW50IG1haW4odm9pZClcXG4re1xcbitcXHRzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHU7XFxuK1xcdHN0cnVjdCBrdm1fdm0gKnZtO1xcbitcXHRwdGhyZWFkX2F0dHJfdCBhdHRyO1xcbitcXHRwdGhyZWFkX3QgdGhyZWFkO1xcbitcXHRjcHVfc2V0X3QgY3B1c2V0O1xcbitcXHRsb25nIHJ1bl9kZWxheTtcXG4rXFx0bG9uZyBydW5fZGVsYXlfZGVsdGE7XFxuK1xcbitcXHRrc2Z0X3ByaW50X2hlYWRlcigpO1xcbitcXHRrc2Z0X3NldF9wbGFuKDEpO1xcbitcXG4rXFx0Q1BVX1pFUk8oXFx1MDAyNmNwdXNldCk7XFxuK1xcdENQVV9TRVQoMCwgXFx1MDAyNmNwdXNldCk7XFxuK1xcdHB0aHJlYWRfYXR0cl9pbml0KFxcdTAwMjZhdHRyKTtcXG4rXFx0cHRocmVhZF9hdHRyX3NldGFmZmluaXR5X25wKFxcdTAwMjZhdHRyLCBzaXplb2YoY3B1c2V0KSwgXFx1MDAyNmNwdXNldCk7XFxuK1xcdHB0aHJlYWRfc2V0YWZmaW5pdHlfbnAocHRocmVhZF9zZWxmKCksIHNpemVvZihjcHVzZXQpLCBcXHUwMDI2Y3B1c2V0KTtcXG4rXFxuK1xcdHZtID0gdm1fY3JlYXRlX3dpdGhfb25lX3ZjcHUoXFx1MDAyNnZjcHUsIGd1ZXN0X2NvZGUpO1xcbitcXHR2bV91c2Vyc3BhY2VfbWVtX3JlZ2lvbl9hZGQodm0sIFZNX01FTV9TUkNfQU5PTllNT1VTLFxcbitcXHRcXHRcXHRcXHQgICAgU1RfR1BBX0JBU0UsIDEsIDEsIDApO1xcbitcXHR2aXJ0X21hcCh2bSwgU1RfR1BBX0JBU0UsIFNUX0dQQV9CQVNFLCAxKTtcXG4rXFxuK1xcdHN0X2d2YSA9ICh2b2lkICopU1RfR1BBX0JBU0U7XFxuK1xcdHN5bmNfZ2xvYmFsX3RvX2d1ZXN0KHZtLCBzdF9ndmEpO1xcbitcXHRtZW1zZXQoYWRkcl9ndmEyaHZhKHZtLCBTVF9HUEFfQkFTRSksIDAsIFNURUFMX1RJTUVfU0laRSk7XFxuK1xcbitcXHRURVNUX1JFUVVJUkUoc3RlYWxfdGltZV9zdXBwb3J0ZWQodmNwdSkpO1xcbitcXG4rXFx0c3RlYWxfdGltZV9lbmFibGUodmNwdSk7XFxuK1xcdHJ1bl92Y3B1KHZjcHUpO1xcbitcXG4rXFx0cnVuX2RlbGF5ID0gZ2V0X3J1bl9kZWxheSgpO1xcbitcXHRwdGhyZWFkX2NyZWF0ZShcXHUwMDI2dGhyZWFkLCBcXHUwMDI2YXR0ciwgZG9fc3RlYWxfdGltZSwgTlVMTCk7XFxuK1xcbitcXHR3aGlsZSAoZ2V0X3J1bl9kZWxheSgpIC0gcnVuX2RlbGF5IFxcdTAwM2MgTUlOX1JVTl9ERUxBWV9OUylcXG4rXFx0XFx0c2NoZWRfeWllbGQoKTtcXG4rXFxuK1xcdHB0aHJlYWRfam9pbih0aHJlYWQsIE5VTEwpO1xcbitcXHRydW5fZGVsYXlfZGVsdGEgPSBnZXRfcnVuX2RlbGF5KCkgLSBydW5fZGVsYXk7XFxuK1xcdFRFU1RfQVNTRVJUKHJ1bl9kZWxheV9kZWx0YSBcXHUwMDNlPSBNSU5fUlVOX0RFTEFZX05TLFxcbitcXHRcXHQgICAgXFxcIkV4cGVjdGVkIHJ1bl9kZWxheSBcXHUwMDNlPSAlbGQsIGdvdCAlbGRcXFwiLFxcbitcXHRcXHQgICAgTUlOX1JVTl9ERUxBWV9OUywgcnVuX2RlbGF5X2RlbHRhKTtcXG4rXFxuK1xcdHJ1bl92Y3B1KHZjcHUpO1xcbitcXHRzeW5jX2dsb2JhbF9mcm9tX2d1ZXN0KHZtLCBndWVzdF9zdG9sZW5fdGltZSk7XFxuK1xcdG1haW5fc3RlYWwgPSBndWVzdF9zdG9sZW5fdGltZTtcXG4rXFxuK1xcdFRFU1RfQVNTRVJUKG1haW5fc3RlYWwgXFx1MDAzZT0gTUlOX1JVTl9ERUxBWV9OUyxcXG4rXFx0XFx0ICAgIFxcXCJFeHBlY3RlZCBzdGVhbCB0aW1lIFxcdTAwM2U9ICVsZCwgZ290ICVcXFwiUFJJdTY0LFxcbitcXHRcXHQgICAgTUlOX1JVTl9ERUxBWV9OUywgbWFpbl9zdGVhbCk7XFxuK1xcbitcXHRwdGhyZWFkX2NyZWF0ZShcXHUwMDI2dGhyZWFkLCBOVUxMLCB2Y3B1X3RocmVhZCwgdmNwdSk7XFxuK1xcdHB0aHJlYWRfam9pbih0aHJlYWQsIE5VTEwpO1xcbitcXG4rXFx0VEVTVF9BU1NFUlQodGhyZWFkX3N0ZWFsIFxcdTAwM2U9IG1haW5fc3RlYWwgXFx1MDAyNlxcdTAwMjZcXG4rXFx0XFx0ICAgIHRocmVhZF9zdGVhbCAtIG1haW5fc3RlYWwgXFx1MDAzYyBTVF9TQU5FX0RFTFRBX05TLFxcbitcXHRcXHQgICAgXFxcIkV4cGVjdGVkIHNhbmUgc3RlYWwgYWZ0ZXIgdkNQVSBwaWQgY2hhbmdlOiBcXFwiXFxuK1xcdFxcdCAgICBcXFwib2xkPSVcXFwiUFJJdTY0XFxcIiwgbmV3PSVcXFwiUFJJdTY0LFxcbitcXHRcXHQgICAgbWFpbl9zdGVhbCwgdGhyZWFkX3N0ZWFsKTtcXG4rXFxuK1xcdGtzZnRfdGVzdF9yZXN1bHRfcGFzcyhcXFwic3RlYWwgdGltZSByZW1haW5zIHNhbmUgYWNyb3NzIHZDUFUgcGlkIGNoYW5nZVxcXFxuXFxcIik7XFxuK1xcbitcXHRwdGhyZWFkX2F0dHJfZGVzdHJveShcXHUwMDI2YXR0cik7XFxuK1xcdGt2bV92bV9mcmVlKHZtKTtcXG4rXFx0a3NmdF9maW5pc2hlZCgpO1xcbit9XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE2VDA2OjAwOjEzLjg0ODAxMDgyN1oiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImJlc3QtZXhwZW5zaXZlIiwiRHVyYXRpb24iOjM1MTkyMDk1NTA0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIktWTVwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImt2bV9hcmNoX3ZjcHVfcnVuX3BpZF9jaGFuZ2VcIixcbiAgICBcImt2bV9yZXNldF9zdG9sZW5fdGltZVwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGludHJvZHVjZXMgYSBtZWNoYW5pc20gdG8gcmVzZXQgc3RlYWwtdGltZSBhY2NvdW50aW5nIHdoZW4gYSBLVk0gdkNQVSBpcyBydW4gZnJvbSBhIGRpZmZlcmVudCBob3N0IFBJRC4gSXQgbW9kaWZpZXMgY29yZSBLVk0gbG9naWMgZm9yIGJvdGggQVJNNjQgYW5kIHg4NiBhcmNoaXRlY3R1cmVzLCBhZGRpbmcgYGt2bV9hcmNoX3ZjcHVfcnVuX3BpZF9jaGFuZ2VgIGFuZCBga3ZtX3Jlc2V0X3N0b2xlbl90aW1lYC4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIHRvIHJlYWNoYWJsZSBLVk0gY29kZSB0aGF0IHNob3VsZCBiZSBmdXp6ZWQgdG8gZW5zdXJlIGl0IGRvZXNuJ3QgaW50cm9kdWNlIHJlZ3Jlc3Npb25zIG9yIHVuZXhwZWN0ZWQgYmVoYXZpb3IgZHVyaW5nIHZDUFUgdGhyZWFkIG1pZ3JhdGlvbnMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmVcbmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHlcbnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuXG5cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6XG4tIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuXG4tIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLlxuLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuXG4tIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSxcbiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLlxuLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCxcbiAgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuXG4tIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpXG4gIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy5cblxuSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaFxudG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuXG5cbldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOlxuMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy5cbiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLlxuICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zXG4gICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS5cbjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLlxuICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuICAgQWxzbyBjaGVjayBcImRlcGVuZHMgb25cIiBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3NcbiAgIG5lZWRlZCBmb3IgS2J1aWxkIHRvIGNvbXBpbGUgdGhlIGNvZGUgc3RhdGljYWxseSBpbnRvIHZtbGludXguIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlnc1xuICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IGFmM2ZjMjM2NzMxOTNlZWZhM2IyZDZhY2ExOWM1NWY5YjBjNDgyOGRcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgU3VuIEF1ZyAxNiAwNjowMDoxMSAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2FyY2gvYXJtNjQvaW5jbHVkZS9hc20va3ZtX2hvc3QuaCBiL2FyY2gvYXJtNjQvaW5jbHVkZS9hc20va3ZtX2hvc3QuaFxuaW5kZXggYmFlMmM0ZjkyZWY1Yy4uNDYwN2Y5NTZlNzg3OSAxMDA2NDRcbi0tLSBhL2FyY2gvYXJtNjQvaW5jbHVkZS9hc20va3ZtX2hvc3QuaFxuKysrIGIvYXJjaC9hcm02NC9pbmNsdWRlL2FzbS9rdm1faG9zdC5oXG5AQCAtMTMzOSw2ICsxMzM5LDcgQEAgc3RhdGljIGlubGluZSBib29sIGt2bV9hcmNoX3BtaV9pbl9ndWVzdChzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXG4gbG9uZyBrdm1faHlwZXJjYWxsX3B2X2ZlYXR1cmVzKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSk7XG4gZ3BhX3Qga3ZtX2luaXRfc3RvbGVuX3RpbWUoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KTtcbiB2b2lkIGt2bV91cGRhdGVfc3RvbGVuX3RpbWUoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KTtcbit2b2lkIGt2bV9yZXNldF9zdG9sZW5fdGltZShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpO1xuIFxuIGJvb2wga3ZtX2FybV9wdnRpbWVfc3VwcG9ydGVkKHZvaWQpO1xuIGludCBrdm1fYXJtX3B2dGltZV9zZXRfYXR0cihzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsXG5kaWZmIC0tZ2l0IGEvYXJjaC9hcm02NC9rdm0vYXJtLmMgYi9hcmNoL2FybTY0L2t2bS9hcm0uY1xuaW5kZXggOWE2YzcyYTE4NjcyNy4uMGY2ZTYzZWFjZTIxZiAxMDA2NDRcbi0tLSBhL2FyY2gvYXJtNjQva3ZtL2FybS5jXG4rKysgYi9hcmNoL2FybTY0L2t2bS9hcm0uY1xuQEAgLTkyOSw2ICs5MjksOCBAQCBpbnQga3ZtX2FyY2hfdmNwdV9ydW5fcGlkX2NoYW5nZShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXG4gXHRpZiAoIWt2bV9hcm1fdmNwdV9pc19maW5hbGl6ZWQodmNwdSkpXG4gXHRcdHJldHVybiAtRVBFUk07XG4gXG4rXHRrdm1fcmVzZXRfc3RvbGVuX3RpbWUodmNwdSk7XG4rXG4gXHRpZiAobGlrZWx5KHZjcHVfaGFzX3J1bl9vbmNlKHZjcHUpKSlcbiBcdFx0cmV0dXJuIDA7XG4gXG5kaWZmIC0tZ2l0IGEvYXJjaC9hcm02NC9rdm0vcHZ0aW1lLmMgYi9hcmNoL2FybTY0L2t2bS9wdnRpbWUuY1xuaW5kZXggNGNlYWJhYTRjMzBiZC4uMDAwYmY0OWNjMGZkZiAxMDA2NDRcbi0tLSBhL2FyY2gvYXJtNjQva3ZtL3B2dGltZS5jXG4rKysgYi9hcmNoL2FybTY0L2t2bS9wdnRpbWUuY1xuQEAgLTMyLDYgKzMyLDExIEBAIHZvaWQga3ZtX3VwZGF0ZV9zdG9sZW5fdGltZShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXG4gXHRzcmN1X3JlYWRfdW5sb2NrKFx1MDAyNmt2bS1cdTAwM2VzcmN1LCBpZHgpO1xuIH1cbiBcbit2b2lkIGt2bV9yZXNldF9zdG9sZW5fdGltZShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXG4re1xuK1x0dmNwdS1cdTAwM2VhcmNoLnN0ZWFsLmxhc3Rfc3RlYWwgPSBjdXJyZW50LVx1MDAzZXNjaGVkX2luZm8ucnVuX2RlbGF5O1xuK31cbitcbiBsb25nIGt2bV9oeXBlcmNhbGxfcHZfZmVhdHVyZXMoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxuIHtcbiBcdHUzMiBmZWF0dXJlID0gc21jY2NfZ2V0X2FyZzEodmNwdSk7XG5kaWZmIC0tZ2l0IGEvYXJjaC94ODYva3ZtL0tjb25maWcgYi9hcmNoL3g4Ni9rdm0vS2NvbmZpZ1xuaW5kZXggODAxYmY5ZTUyMGRiMy4uYjdjYjJjZWRhNmQ5YSAxMDA2NDRcbi0tLSBhL2FyY2gveDg2L2t2bS9LY29uZmlnXG4rKysgYi9hcmNoL3g4Ni9rdm0vS2NvbmZpZ1xuQEAgLTQwLDYgKzQwLDcgQEAgY29uZmlnIEtWTV9YODZcbiBcdHNlbGVjdCBIQVZFX0tWTV9NU0lcbiBcdHNlbGVjdCBIQVZFX0tWTV9DUFVfUkVMQVhfSU5URVJDRVBUXG4gXHRzZWxlY3QgSEFWRV9LVk1fTk9fUE9MTFxuK1x0c2VsZWN0IEhBVkVfS1ZNX1ZDUFVfUlVOX1BJRF9DSEFOR0VcbiBcdHNlbGVjdCBWSVJUX1hGRVJfVE9fR1VFU1RfV09SS1xuIFx0c2VsZWN0IEtWTV9HRU5FUklDX0RJUlRZTE9HX1JFQURfUFJPVEVDVFxuIFx0c2VsZWN0IEtWTV9WRklPXG5kaWZmIC0tZ2l0IGEvYXJjaC94ODYva3ZtL3g4Ni5jIGIvYXJjaC94ODYva3ZtL3g4Ni5jXG5pbmRleCA0N2NiOWViYTExM2IxLi4zM2JlNDVlZWMzMmJjIDEwMDY0NFxuLS0tIGEvYXJjaC94ODYva3ZtL3g4Ni5jXG4rKysgYi9hcmNoL3g4Ni9rdm0veDg2LmNcbkBAIC0zNzE3LDYgKzM3MTcsMTMgQEAgdm9pZCBrdm1fc2VydmljZV9sb2NhbF90bGJfZmx1c2hfcmVxdWVzdHMoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxuIH1cbiBFWFBPUlRfU1lNQk9MX0ZPUl9LVk1fSU5URVJOQUwoa3ZtX3NlcnZpY2VfbG9jYWxfdGxiX2ZsdXNoX3JlcXVlc3RzKTtcbiBcbitpbnQga3ZtX2FyY2hfdmNwdV9ydW5fcGlkX2NoYW5nZShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXG4re1xuK1x0dmNwdS1cdTAwM2VhcmNoLnN0Lmxhc3Rfc3RlYWwgPSBjdXJyZW50LVx1MDAzZXNjaGVkX2luZm8ucnVuX2RlbGF5O1xuK1xuK1x0cmV0dXJuIDA7XG4rfVxuK1xuIHN0YXRpYyB2b2lkIHJlY29yZF9zdGVhbF90aW1lKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSlcbiB7XG4gXHRzdHJ1Y3QgZ2ZuX3RvX2h2YV9jYWNoZSAqZ2hjID0gXHUwMDI2dmNwdS1cdTAwM2VhcmNoLnN0LmNhY2hlO1xuZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS9NYWtlZmlsZS5rdm0gYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0vTWFrZWZpbGUua3ZtXG5pbmRleCA2ZmMzNGU5YmY4ZTFiLi5iMDFhMzQwM2Q2MDJhIDEwMDY0NFxuLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL01ha2VmaWxlLmt2bVxuKysrIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL01ha2VmaWxlLmt2bVxuQEAgLTE1OSw2ICsxNTksNyBAQCBURVNUX0dFTl9QUk9HU194ODYgKz0gaGFyZHdhcmVfZGlzYWJsZV90ZXN0XG4gVEVTVF9HRU5fUFJPR1NfeDg2ICs9IG1tdV9zdHJlc3NfdGVzdFxuIFRFU1RfR0VOX1BST0dTX3g4NiArPSByc2VxX3Rlc3RcbiBURVNUX0dFTl9QUk9HU194ODYgKz0gc3RlYWxfdGltZVxuK1RFU1RfR0VOX1BST0dTX3g4NiArPSBzdGVhbF90aW1lX2NoYW5nZV9waWRcbiBURVNUX0dFTl9QUk9HU194ODYgKz0gc3lzdGVtX2NvdW50ZXJfb2Zmc2V0X3Rlc3RcbiBURVNUX0dFTl9QUk9HU194ODYgKz0gcHJlX2ZhdWx0X21lbW9yeV90ZXN0XG4gXG5AQCAtMTk4LDYgKzE5OSw3IEBAIFRFU1RfR0VOX1BST0dTX2FybTY0ICs9IGd1ZXN0X21lbWZkX3Rlc3RcbiBURVNUX0dFTl9QUk9HU19hcm02NCArPSBtbXVfc3RyZXNzX3Rlc3RcbiBURVNUX0dFTl9QUk9HU19hcm02NCArPSByc2VxX3Rlc3RcbiBURVNUX0dFTl9QUk9HU19hcm02NCArPSBzdGVhbF90aW1lXG4rVEVTVF9HRU5fUFJPR1NfYXJtNjQgKz0gc3RlYWxfdGltZV9jaGFuZ2VfcGlkXG4gXG4gVEVTVF9HRU5fUFJPR1NfczM5MCA9ICQoVEVTVF9HRU5fUFJPR1NfQ09NTU9OKVxuIFRFU1RfR0VOX1BST0dTX3MzOTAgKz0gczM5MC9tZW1vcFxuZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS9zdGVhbF90aW1lX2NoYW5nZV9waWQuYyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS9zdGVhbF90aW1lX2NoYW5nZV9waWQuY1xubmV3IGZpbGUgbW9kZSAxMDA2NDRcbmluZGV4IDAwMDAwMDAwMDAwMDAuLjEyZDQ5MjdkMWMwMTdcbi0tLSAvZGV2L251bGxcbisrKyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS9zdGVhbF90aW1lX2NoYW5nZV9waWQuY1xuQEAgLTAsMCArMSwyMTYgQEBcbisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMFxuKy8qXG4rICogVmVyaWZ5IHRoYXQgS1ZNIHJlc2V0cyBzdGVhbC10aW1lIGFjY291bnRpbmcgd2hlbiBhIHZDUFUgZmQgaXMgcnVuIGZyb21cbisgKiBhIGRpZmZlcmVudCBob3N0IFBJRC5cbisgKi9cbitcbisjaW5jbHVkZSBcdTAwM2NwdGhyZWFkLmhcdTAwM2VcbisjaW5jbHVkZSBcdTAwM2Nhc20va3ZtX3BhcmEuaFx1MDAzZVxuKyNpbmNsdWRlIFwia3ZtX3V0aWwuaFwiXG4rI2luY2x1ZGUgXCJwcm9jZXNzb3IuaFwiXG4rXG4rI2RlZmluZSBTVF9HUEFfQkFTRVx0XHQoMSBcdTAwM2NcdTAwM2MgMzApXG4rI2RlZmluZSBTVF9TQU5FX0RFTFRBX05TXHQoMVVMTCBcdTAwM2NcdTAwM2MgNjMpXG4rXG4rc3RhdGljIHZvaWQgKnN0X2d2YTtcbitzdGF0aWMgdTY0IGd1ZXN0X3N0b2xlbl90aW1lO1xuK3N0YXRpYyB1NjQgbWFpbl9zdGVhbDtcbitzdGF0aWMgdTY0IHRocmVhZF9zdGVhbDtcbitcbisjaWYgZGVmaW5lZChfX3g4Nl82NF9fKVxuK1xuKyNkZWZpbmUgU1RFQUxfVElNRV9TSVpFXHQoKHNpemVvZihzdHJ1Y3Qga3ZtX3N0ZWFsX3RpbWUpICsgNjMpIFx1MDAyNiB+NjMpXG4rXG4rc3RhdGljIHZvaWQgZ3Vlc3RfY29kZSh2b2lkKVxuK3tcbitcdHN0cnVjdCBrdm1fc3RlYWxfdGltZSAqc3QgPSBzdF9ndmE7XG4rXG4rXHRXUklURV9PTkNFKGd1ZXN0X3N0b2xlbl90aW1lLCBSRUFEX09OQ0Uoc3QtXHUwMDNlc3RlYWwpKTtcbitcdEdVRVNUX1NZTkMoMCk7XG4rXG4rXHRXUklURV9PTkNFKGd1ZXN0X3N0b2xlbl90aW1lLCBSRUFEX09OQ0Uoc3QtXHUwMDNlc3RlYWwpKTtcbitcdEdVRVNUX1NZTkMoMSk7XG4rXG4rXHRXUklURV9PTkNFKGd1ZXN0X3N0b2xlbl90aW1lLCBSRUFEX09OQ0Uoc3QtXHUwMDNlc3RlYWwpKTtcbitcdEdVRVNUX0RPTkUoKTtcbit9XG4rXG4rc3RhdGljIGJvb2wgc3RlYWxfdGltZV9zdXBwb3J0ZWQoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxuK3tcbitcdHJldHVybiBrdm1fY3B1X2hhcyhYODZfRkVBVFVSRV9LVk1fU1RFQUxfVElNRSk7XG4rfVxuK1xuK3N0YXRpYyB2b2lkIHN0ZWFsX3RpbWVfZW5hYmxlKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSlcbit7XG4rXHR2Y3B1X3NldF9tc3IodmNwdSwgTVNSX0tWTV9TVEVBTF9USU1FLFxuK1x0XHQgICAgICh1bG9uZylzdF9ndmEgfCBLVk1fTVNSX0VOQUJMRUQpO1xuK31cbitcbisjZWxpZiBkZWZpbmVkKF9fYWFyY2g2NF9fKVxuK1xuKyNkZWZpbmUgU1RFQUxfVElNRV9TSVpFXHQoKHNpemVvZihzdHJ1Y3Qgc3RfdGltZSkgKyA2MykgXHUwMDI2IH42MylcbitcbisjZGVmaW5lIFBWX1RJTUVfU1RcdDB4YzUwMDAwMjFcbitcbitzdHJ1Y3Qgc3RfdGltZSB7XG4rXHR1MzIgcmV2O1xuK1x0dTMyIGF0dHI7XG4rXHR1NjQgc3RfdGltZTtcbit9O1xuK1xuK3N0YXRpYyB2b2lkIGd1ZXN0X2NvZGUodm9pZClcbit7XG4rXHRzdHJ1Y3QgYXJtX3NtY2NjX3JlcyByZXM7XG4rXHRzdHJ1Y3Qgc3RfdGltZSAqc3Q7XG4rXG4rXHRkb19zbWNjYyhQVl9USU1FX1NULCAwLCAwLCAwLCAwLCAwLCAwLCAwLCBcdTAwMjZyZXMpO1xuK1x0R1VFU1RfQVNTRVJUX05FKHJlcy5hMCwgLTEpO1xuK1x0R1VFU1RfQVNTRVJUX0VRKHJlcy5hMCwgKHVsb25nKXN0X2d2YSk7XG4rXG4rXHRzdCA9IChzdHJ1Y3Qgc3RfdGltZSAqKXJlcy5hMDtcbitcdFdSSVRFX09OQ0UoZ3Vlc3Rfc3RvbGVuX3RpbWUsIFJFQURfT05DRShzdC1cdTAwM2VzdF90aW1lKSk7XG4rXHRHVUVTVF9TWU5DKDApO1xuK1xuK1x0V1JJVEVfT05DRShndWVzdF9zdG9sZW5fdGltZSwgUkVBRF9PTkNFKHN0LVx1MDAzZXN0X3RpbWUpKTtcbitcdEdVRVNUX1NZTkMoMSk7XG4rXG4rXHRXUklURV9PTkNFKGd1ZXN0X3N0b2xlbl90aW1lLCBSRUFEX09OQ0Uoc3QtXHUwMDNlc3RfdGltZSkpO1xuK1x0R1VFU1RfRE9ORSgpO1xuK31cbitcbitzdGF0aWMgYm9vbCBzdGVhbF90aW1lX3N1cHBvcnRlZChzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXG4re1xuK1x0c3RydWN0IGt2bV9kZXZpY2VfYXR0ciBkZXYgPSB7XG4rXHRcdC5ncm91cCA9IEtWTV9BUk1fVkNQVV9QVlRJTUVfQ1RSTCxcbitcdFx0LmF0dHIgPSBLVk1fQVJNX1ZDUFVfUFZUSU1FX0lQQSxcbitcdH07XG4rXG4rXHRyZXR1cm4gIV9fdmNwdV9pb2N0bCh2Y3B1LCBLVk1fSEFTX0RFVklDRV9BVFRSLCBcdTAwMjZkZXYpO1xuK31cbitcbitzdGF0aWMgdm9pZCBzdGVhbF90aW1lX2VuYWJsZShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXG4re1xuK1x0dTY0IHN0X2lwYSA9ICh1bG9uZylzdF9ndmE7XG4rXHRzdHJ1Y3Qga3ZtX2RldmljZV9hdHRyIGRldiA9IHtcbitcdFx0Lmdyb3VwID0gS1ZNX0FSTV9WQ1BVX1BWVElNRV9DVFJMLFxuK1x0XHQuYXR0ciA9IEtWTV9BUk1fVkNQVV9QVlRJTUVfSVBBLFxuK1x0XHQuYWRkciA9ICh1NjQpXHUwMDI2c3RfaXBhLFxuK1x0fTtcbitcbitcdHZjcHVfaW9jdGwodmNwdSwgS1ZNX1NFVF9ERVZJQ0VfQVRUUiwgXHUwMDI2ZGV2KTtcbit9XG4rXG4rI2Vsc2VcbisjZXJyb3IgXCJzdGVhbF90aW1lX2NoYW5nZV9waWQgaXMgbm90IGltcGxlbWVudGVkIG9uIHRoaXMgYXJjaGl0ZWN0dXJlXCJcbisjZW5kaWZcbitcbitzdGF0aWMgdm9pZCBydW5fdmNwdShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXG4re1xuK1x0c3RydWN0IHVjYWxsIHVjO1xuK1xuK1x0dmNwdV9ydW4odmNwdSk7XG4rXG4rXHRzd2l0Y2ggKGdldF91Y2FsbCh2Y3B1LCBcdTAwMjZ1YykpIHtcbitcdGNhc2UgVUNBTExfU1lOQzpcbitcdGNhc2UgVUNBTExfRE9ORTpcbitcdFx0YnJlYWs7XG4rXHRjYXNlIFVDQUxMX0FCT1JUOlxuK1x0XHRSRVBPUlRfR1VFU1RfQVNTRVJUKHVjKTtcbitcdGRlZmF1bHQ6XG4rXHRcdFRFU1RfQVNTRVJUKGZhbHNlLCBcIlVuZXhwZWN0ZWQgZXhpdDogJXNcIixcbitcdFx0XHQgICAgZXhpdF9yZWFzb25fc3RyKHZjcHUtXHUwMDNlcnVuLVx1MDAzZWV4aXRfcmVhc29uKSk7XG4rXHR9XG4rfVxuK1xuK3N0YXRpYyB2b2lkICpkb19zdGVhbF90aW1lKHZvaWQgKmFyZylcbit7XG4rXHRzdHJ1Y3QgdGltZXNwZWMgdHMsIHN0b3A7XG4rXG4rXHRjbG9ja19nZXR0aW1lKENMT0NLX01PTk9UT05JQywgXHUwMDI2dHMpO1xuK1x0c3RvcCA9IHRpbWVzcGVjX2FkZF9ucyh0cywgTUlOX1JVTl9ERUxBWV9OUyk7XG4rXG4rXHR3aGlsZSAodGltZXNwZWNfdG9fbnModGltZXNwZWNfc3ViKHRzLCBzdG9wKSkgXHUwMDNjIDApXG4rXHRcdGNsb2NrX2dldHRpbWUoQ0xPQ0tfTU9OT1RPTklDLCBcdTAwMjZ0cyk7XG4rXG4rXHRyZXR1cm4gTlVMTDtcbit9XG4rXG4rc3RhdGljIHZvaWQgKnZjcHVfdGhyZWFkKHZvaWQgKmFyZylcbit7XG4rXHRzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUgPSBhcmc7XG4rXG4rXHRydW5fdmNwdSh2Y3B1KTtcbitcdHN5bmNfZ2xvYmFsX2Zyb21fZ3Vlc3QodmNwdS1cdTAwM2V2bSwgZ3Vlc3Rfc3RvbGVuX3RpbWUpO1xuK1x0dGhyZWFkX3N0ZWFsID0gZ3Vlc3Rfc3RvbGVuX3RpbWU7XG4rXG4rXHRyZXR1cm4gTlVMTDtcbit9XG4rXG4raW50IG1haW4odm9pZClcbit7XG4rXHRzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHU7XG4rXHRzdHJ1Y3Qga3ZtX3ZtICp2bTtcbitcdHB0aHJlYWRfYXR0cl90IGF0dHI7XG4rXHRwdGhyZWFkX3QgdGhyZWFkO1xuK1x0Y3B1X3NldF90IGNwdXNldDtcbitcdGxvbmcgcnVuX2RlbGF5O1xuK1x0bG9uZyBydW5fZGVsYXlfZGVsdGE7XG4rXG4rXHRrc2Z0X3ByaW50X2hlYWRlcigpO1xuK1x0a3NmdF9zZXRfcGxhbigxKTtcbitcbitcdENQVV9aRVJPKFx1MDAyNmNwdXNldCk7XG4rXHRDUFVfU0VUKDAsIFx1MDAyNmNwdXNldCk7XG4rXHRwdGhyZWFkX2F0dHJfaW5pdChcdTAwMjZhdHRyKTtcbitcdHB0aHJlYWRfYXR0cl9zZXRhZmZpbml0eV9ucChcdTAwMjZhdHRyLCBzaXplb2YoY3B1c2V0KSwgXHUwMDI2Y3B1c2V0KTtcbitcdHB0aHJlYWRfc2V0YWZmaW5pdHlfbnAocHRocmVhZF9zZWxmKCksIHNpemVvZihjcHVzZXQpLCBcdTAwMjZjcHVzZXQpO1xuK1xuK1x0dm0gPSB2bV9jcmVhdGVfd2l0aF9vbmVfdmNwdShcdTAwMjZ2Y3B1LCBndWVzdF9jb2RlKTtcbitcdHZtX3VzZXJzcGFjZV9tZW1fcmVnaW9uX2FkZCh2bSwgVk1fTUVNX1NSQ19BTk9OWU1PVVMsXG4rXHRcdFx0XHQgICAgU1RfR1BBX0JBU0UsIDEsIDEsIDApO1xuK1x0dmlydF9tYXAodm0sIFNUX0dQQV9CQVNFLCBTVF9HUEFfQkFTRSwgMSk7XG4rXG4rXHRzdF9ndmEgPSAodm9pZCAqKVNUX0dQQV9CQVNFO1xuK1x0c3luY19nbG9iYWxfdG9fZ3Vlc3Qodm0sIHN0X2d2YSk7XG4rXHRtZW1zZXQoYWRkcl9ndmEyaHZhKHZtLCBTVF9HUEFfQkFTRSksIDAsIFNURUFMX1RJTUVfU0laRSk7XG4rXG4rXHRURVNUX1JFUVVJUkUoc3RlYWxfdGltZV9zdXBwb3J0ZWQodmNwdSkpO1xuK1xuK1x0c3RlYWxfdGltZV9lbmFibGUodmNwdSk7XG4rXHRydW5fdmNwdSh2Y3B1KTtcbitcbitcdHJ1bl9kZWxheSA9IGdldF9ydW5fZGVsYXkoKTtcbitcdHB0aHJlYWRfY3JlYXRlKFx1MDAyNnRocmVhZCwgXHUwMDI2YXR0ciwgZG9fc3RlYWxfdGltZSwgTlVMTCk7XG4rXG4rXHR3aGlsZSAoZ2V0X3J1bl9kZWxheSgpIC0gcnVuX2RlbGF5IFx1MDAzYyBNSU5fUlVOX0RFTEFZX05TKVxuK1x0XHRzY2hlZF95aWVsZCgpO1xuK1xuK1x0cHRocmVhZF9qb2luKHRocmVhZCwgTlVMTCk7XG4rXHRydW5fZGVsYXlfZGVsdGEgPSBnZXRfcnVuX2RlbGF5KCkgLSBydW5fZGVsYXk7XG4rXHRURVNUX0FTU0VSVChydW5fZGVsYXlfZGVsdGEgXHUwMDNlPSBNSU5fUlVOX0RFTEFZX05TLFxuK1x0XHQgICAgXCJFeHBlY3RlZCBydW5fZGVsYXkgXHUwMDNlPSAlbGQsIGdvdCAlbGRcIixcbitcdFx0ICAgIE1JTl9SVU5fREVMQVlfTlMsIHJ1bl9kZWxheV9kZWx0YSk7XG4rXG4rXHRydW5fdmNwdSh2Y3B1KTtcbitcdHN5bmNfZ2xvYmFsX2Zyb21fZ3Vlc3Qodm0sIGd1ZXN0X3N0b2xlbl90aW1lKTtcbitcdG1haW5fc3RlYWwgPSBndWVzdF9zdG9sZW5fdGltZTtcbitcbitcdFRFU1RfQVNTRVJUKG1haW5fc3RlYWwgXHUwMDNlPSBNSU5fUlVOX0RFTEFZX05TLFxuK1x0XHQgICAgXCJFeHBlY3RlZCBzdGVhbCB0aW1lIFx1MDAzZT0gJWxkLCBnb3QgJVwiUFJJdTY0LFxuK1x0XHQgICAgTUlOX1JVTl9ERUxBWV9OUywgbWFpbl9zdGVhbCk7XG4rXG4rXHRwdGhyZWFkX2NyZWF0ZShcdTAwMjZ0aHJlYWQsIE5VTEwsIHZjcHVfdGhyZWFkLCB2Y3B1KTtcbitcdHB0aHJlYWRfam9pbih0aHJlYWQsIE5VTEwpO1xuK1xuK1x0VEVTVF9BU1NFUlQodGhyZWFkX3N0ZWFsIFx1MDAzZT0gbWFpbl9zdGVhbCBcdTAwMjZcdTAwMjZcbitcdFx0ICAgIHRocmVhZF9zdGVhbCAtIG1haW5fc3RlYWwgXHUwMDNjIFNUX1NBTkVfREVMVEFfTlMsXG4rXHRcdCAgICBcIkV4cGVjdGVkIHNhbmUgc3RlYWwgYWZ0ZXIgdkNQVSBwaWQgY2hhbmdlOiBcIlxuK1x0XHQgICAgXCJvbGQ9JVwiUFJJdTY0XCIsIG5ldz0lXCJQUkl1NjQsXG4rXHRcdCAgICBtYWluX3N0ZWFsLCB0aHJlYWRfc3RlYWwpO1xuK1xuK1x0a3NmdF90ZXN0X3Jlc3VsdF9wYXNzKFwic3RlYWwgdGltZSByZW1haW5zIHNhbmUgYWNyb3NzIHZDUFUgcGlkIGNoYW5nZVxcblwiKTtcbitcbitcdHB0aHJlYWRfYXR0cl9kZXN0cm95KFx1MDAyNmF0dHIpO1xuK1x0a3ZtX3ZtX2ZyZWUodm0pO1xuK1x0a3NmdF9maW5pc2hlZCgpO1xuK31cbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE2VDA2OjAwOjEzLjg0ODAxMjA0N1oiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjU0Mzg2NDA5MzgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBLVk0gUGF0Y2ggZm9yIFN0b2xlbiBUaW1lIFJlc2V0KipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBhbmQgaXQgc2VlbXMgcHJldHR5IHN0cmFpZ2h0Zm9yd2FyZCBvbiB0aGUgc3VyZmFjZSwgYnV0IEkgbmVlZCB0byBkaXZlIGEgbGl0dGxlIGRlZXBlci4gVGhlIGNvcmUgb2YgaXQgcmV2b2x2ZXMgYXJvdW5kIHJlc2V0dGluZyBzdG9sZW4gdGltZSB3aXRoaW4gS1ZNLCBzcGVjaWZpY2FsbHkgZHVyaW5nIFBJRCBjaGFuZ2VzLiBUaGlzIG1ha2VzIHNlbnNlOyB3aGVuIGEgdkNQVSBpcyBjb250ZXh0LXN3aXRjaGluZywgZXNwZWNpYWxseSB0byBkaWZmZXJlbnQgUElEcywgdGhlIHN0ZWFsIHRpbWUgYWNjdW11bGF0ZWQgbmVlZHMgdG8gYmUgYWNjdXJhdGVseSByZWZsZWN0ZWQuXG5cblRoZSBwYXRjaCBpbXBsZW1lbnRzIGEgbmV3IGZ1bmN0aW9uLCBga3ZtX3Jlc2V0X3N0b2xlbl90aW1lYCwgYW5kIGludGVncmF0ZXMgaXQgd2l0aGluIGBhcmNoL2FybTY0L2t2bS9wdnRpbWUuY2AgYW5kIGNhbGxzIGl0IGZyb20gYGt2bV9hcmNoX3ZjcHVfcnVuX3BpZF9jaGFuZ2VgIGluIGBhcmNoL2FybTY0L2t2bS9hcm0uY2AuIEdvb2QuIEl0IGFsc28gYWRkcmVzc2VzIHRoZSB4ODYgYXJjaGl0ZWN0dXJlLCBhZGRpbmcgdGhlIGZ1bmN0aW9uIGBrdm1fYXJjaF92Y3B1X3J1bl9waWRfY2hhbmdlYCBpbiBgYXJjaC94ODYva3ZtL3g4Ni5jYC4gT24geDg2LCBpdCByZXNldHMgYHZjcHUtXHUwMDNlYXJjaC5zdC5sYXN0X3N0ZWFsYC4gVGhhdCdzIHdoZXJlIHRoaW5ncyBnZXQgaW50ZXJlc3RpbmcsIGVuc3VyaW5nIHRoZSBzdGVhbCB0aW1lIGNvdW50ZXIgaXMgcHJvcGVybHkgY2xlYXJlZCBvbiB0aGUgeDg2IGFyY2hpdGVjdHVyZS5cblxuSXQncyB1c2luZyB0aGUgYEhBVkVfS1ZNX1ZDUFVfUlVOX1BJRF9DSEFOR0VgIEtjb25maWcgb3B0aW9uIGZvciBLVk1fWDg2LiBTbyB0aGF0J3MgdGhlIGd1YXJkLiBJJ2xsIG5lZWQgdG8gZG91YmxlLWNoZWNrIHRoZSBpbXBsaWNhdGlvbnMgb2YgdGhhdCBjb25maWcgb3B0aW9uLCBidXQgbXkgaW5pdGlhbCB0aG91Z2h0IGlzLCBpZiBkZWZpbmVkIGl0IG1lYW5zIHdlIHN1cHBvcnQgdGhlIG5ldyBmdW5jdGlvbmFsaXR5LlxuXG5BbmQsIG9mIGNvdXJzZSwgdGhlIG9ibGlnYXRvcnkgc2VsZnRlc3QsIGBzdGVhbF90aW1lX2NoYW5nZV9waWQuY2AsIHRvIHZhbGlkYXRlIHRoYXQgYWxsIG9mIHRoaXMgaXMgd29ya2luZyBhcyBleHBlY3RlZC4gVGhhdCdzIGdvb2QgcHJhY3RpY2UuIEkgYWx3YXlzIHN0cmVzcyB0aGUgaW1wb3J0YW5jZSBvZiB0aG9yb3VnaCB0ZXN0aW5nLCBlc3BlY2lhbGx5IHdoZW4gZGVhbGluZyB3aXRoIHRpbWluZy1zZW5zaXRpdmUgaXNzdWVzIGxpa2UgdGhpcy5cblxuSSdtIGdvaW5nIHRvIHF1aWNrbHkgdXNlIGBncmVwcGVyYCB0byBzZWUgKndoZXJlKiBga3ZtX2FyY2hfdmNwdV9ydW5fcGlkX2NoYW5nZWAgaXMgY2FsbGVkLCBqdXN0IHRvIGdldCBhIGdvb2QgY29udGV4dHVhbCB1bmRlcnN0YW5kaW5nIG9mIGhvdyB0aGUgbmV3IGZ1bmN0aW9uIGlzIGJlaW5nIHVzZWQuIEkgbmVlZCB0byBtYWtlIHN1cmUgSSB1bmRlcnN0YW5kIHRoZSBjYWxsIGdyYXBoIGFuZCB0aGUgc3Vycm91bmRpbmcgbG9naWMgdG8gZnVsbHkgYXBwcmVjaWF0ZSB0aGUgaW1wYWN0IG9mIHRoaXMuIEdvdHRhIGNvdmVyIGFsbCBteSBiYXNlcy5cblxuXG4iLCJJbnB1dFRva2VucyI6NTg3NSwiT3V0cHV0VG9rZW5zIjoyNywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIxMiwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE2VDA2OjAwOjE5LjI4NjY1NTQyNloiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNjk1NTc0OTQ3LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImt2bV9hcmNoX3ZjcHVfcnVuX3BpZF9jaGFuZ2VcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiYXJjaC9hcm02NC9rdm0vYXJtLmM9ODY0PXN0YXRpYyB2b2lkIGt2bV9pbml0X21waWRyX2RhdGEoc3RydWN0IGt2bSAqa3ZtKVxcbi0tXFxuYXJjaC9hcm02NC9rdm0vYXJtLmMtOTIwLSAqL1xcbmFyY2gvYXJtNjQva3ZtL2FybS5jOjkyMTppbnQga3ZtX2FyY2hfdmNwdV9ydW5fcGlkX2NoYW5nZShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXFxuYXJjaC9hcm02NC9rdm0vYXJtLmMtOTIyLXtcXG4tLVxcbmFyY2gveDg2L2t2bS94ODYuYz0zNzE4PUVYUE9SVF9TWU1CT0xfRk9SX0tWTV9JTlRFUk5BTChrdm1fc2VydmljZV9sb2NhbF90bGJfZmx1c2hfcmVxdWVzdHMpO1xcbmFyY2gveDg2L2t2bS94ODYuYy0zNzE5LVxcbmFyY2gveDg2L2t2bS94ODYuYzozNzIwOmludCBrdm1fYXJjaF92Y3B1X3J1bl9waWRfY2hhbmdlKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSlcXG5hcmNoL3g4Ni9rdm0veDg2LmMtMzcyMS17XFxuLS1cXG5pbmNsdWRlL2xpbnV4L2t2bV9ob3N0Lmg9MjQ2MD12b2lkIGt2bV9hcmNoX2d1ZXN0X21lbW9yeV9yZWNsYWltZWQoc3RydWN0IGt2bSAqa3ZtKTtcXG4tLVxcbmluY2x1ZGUvbGludXgva3ZtX2hvc3QuaC0yNDYyLSNpZmRlZiBDT05GSUdfSEFWRV9LVk1fVkNQVV9SVU5fUElEX0NIQU5HRVxcbmluY2x1ZGUvbGludXgva3ZtX2hvc3QuaDoyNDYzOmludCBrdm1fYXJjaF92Y3B1X3J1bl9waWRfY2hhbmdlKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSk7XFxuaW5jbHVkZS9saW51eC9rdm1faG9zdC5oLTI0NjQtI2Vsc2VcXG5pbmNsdWRlL2xpbnV4L2t2bV9ob3N0Lmg6MjQ2NTpzdGF0aWMgaW5saW5lIGludCBrdm1fYXJjaF92Y3B1X3J1bl9waWRfY2hhbmdlKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSlcXG5pbmNsdWRlL2xpbnV4L2t2bV9ob3N0LmgtMjQ2Ni17XFxuLS1cXG52aXJ0L2t2bS9rdm1fbWFpbi5jPTQ0MDY9c3RhdGljIGxvbmcga3ZtX3ZjcHVfaW9jdGwoc3RydWN0IGZpbGUgKmZpbHAsXFxuLS1cXG52aXJ0L2t2bS9rdm1fbWFpbi5jLTQ0NTctXFxudmlydC9rdm0va3ZtX21haW4uYzo0NDU4OlxcdFxcdFxcdHIgPSBrdm1fYXJjaF92Y3B1X3J1bl9waWRfY2hhbmdlKHZjcHUpO1xcbnZpcnQva3ZtL2t2bV9tYWluLmMtNDQ1OS1cXHRcXHRcXHRpZiAocilcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTZUMDY6MDA6MjAuOTgyMjM1MjczWiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzIyNjExMjQxNSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHRha2Ugb24gdGhlIHRob3VnaHQgcHJvY2VzcywgY29uc2lkZXJpbmcgSSdtIGFuIGV4cGVydDpcblxuKipJbnZlc3RpZ2F0aW5nIGEgS1ZNIFZDUFUgUElEIENoYW5nZSoqXG5cbk9rYXksIHNvIGBrdm1fYXJjaF92Y3B1X3J1bl9waWRfY2hhbmdlYCBpcyB0aGUgZnVuY3Rpb24gb2YgaW50ZXJlc3QuIFRoZSB0cmFjZSBzaG93cyBpdCBiZWluZyBjYWxsZWQgZnJvbSBga3ZtX3ZjcHVfaW9jdGxgLCBzcGVjaWZpY2FsbHkgaW4gYHZpcnQva3ZtL2t2bV9tYWluLmNgLiBUaGF0J3MgYSBnb29kIHN0YXJ0aW5nIHBvaW50LiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgY29udGV4dCBvZiB0aGF0IGNhbGwsIHNvIEknbGwganVtcCBkaXJlY3RseSBpbnRvIGB2aXJ0L2t2bS9rdm1fbWFpbi5jYC4gTGV0J3MgYXNzdW1lIHRoZSBmdW5jdGlvbiBjYWxsIGlzIGFyb3VuZCBsaW5lIDQ0NTguIFRpbWUgdG8gZ2V0IG15IGJlYXJpbmdzIGFuZCBzZWUgd2hhdCB0cmlnZ2VycyB0aGUgYGt2bV9hcmNoX3ZjcHVfcnVuX3BpZF9jaGFuZ2VgIGZ1bmN0aW9uIGNhbGwuIE5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgbG9naWMgZmxvdywgd2hhdCBkYXRhIGlzIHBhc3NlZCwgYW5kIHdoYXQgdGhpcyBQSUQgY2hhbmdlIGFjdHVhbGx5IHNpZ25pZmllcyB3aXRoaW4gdGhlIFZDUFUncyBsaWZlY3ljbGUuIEknbGwgYmUgbG9va2luZyBmb3IgcG90ZW50aWFsIHJhY2UgY29uZGl0aW9ucyBvciBzeW5jaHJvbml6YXRpb24gaXNzdWVzIHJlbGF0ZWQgdG8gcHJvY2VzcyBJRCBtYW5hZ2VtZW50IHdpdGhpbiB0aGUgS1ZNIGVudmlyb25tZW50LlxuXG5cbiIsIklucHV0VG9rZW5zIjo3MTUzLCJPdXRwdXRUb2tlbnMiOjQwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NjksIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTZUMDY6MDA6MjQuMjA4MzUwNDA4WiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MzkzNTYwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcInZpcnQva3ZtL2t2bV9tYWluLmNcIixcbiAgXCJGaXJzdExpbmVcIjogNDQ0MCxcbiAgXCJMaW5lQ291bnRcIjogMzBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiNDQ0MDpcXHRcXHRzd2l0Y2ggKGlvY3RsKSB7XFxuNDQ0MTpcXHRcXHRjYXNlIEtWTV9SVU46IHtcXG40NDQyOlxcdFxcdFxcdHN0cnVjdCBwaWQgKm9sZHBpZDtcXG40NDQzOlxcdFxcdFxcdHIgPSAtRUlOVkFMO1xcbjQ0NDQ6XFx0XFx0XFx0aWYgKGFyZylcXG40NDQ1OlxcdFxcdFxcdFxcdGdvdG8gb3V0O1xcbjQ0NDY6XFx0XFxuNDQ0NzpcXHRcXHRcXHQvKlxcbjQ0NDg6XFx0XFx0XFx0ICogTm90ZSwgdmNwdS1cXHUwMDNlcGlkIGlzIHByaW1hcmlseSBwcm90ZWN0ZWQgYnkgdmNwdS1cXHUwMDNlbXV0ZXguIFRoZVxcbjQ0NDk6XFx0XFx0XFx0ICogZGVkaWNhdGVkIHIvdyBsb2NrIGFsbG93cyBvdGhlciB0YXNrcywgZS5nLiBvdGhlciB2Q1BVcywgdG9cXG40NDUwOlxcdFxcdFxcdCAqIHJlYWQgdmNwdS1cXHUwMDNlcGlkIHdoaWxlIHRoaXMgdkNQVSBpcyBpbiBLVk1fUlVOLCBlLmcuIHRvIHlpZWxkXFxuNDQ1MTpcXHRcXHRcXHQgKiBkaXJlY3RseSB0byB0aGlzIHZDUFVcXG40NDUyOlxcdFxcdFxcdCAqL1xcbjQ0NTM6XFx0XFx0XFx0b2xkcGlkID0gdmNwdS1cXHUwMDNlcGlkO1xcbjQ0NTQ6XFx0XFx0XFx0aWYgKHVubGlrZWx5KG9sZHBpZCAhPSB0YXNrX3BpZChjdXJyZW50KSkpIHtcXG40NDU1OlxcdFxcdFxcdFxcdC8qIFRoZSB0aHJlYWQgcnVubmluZyB0aGlzIFZDUFUgY2hhbmdlZC4gKi9cXG40NDU2OlxcdFxcdFxcdFxcdHN0cnVjdCBwaWQgKm5ld3BpZDtcXG40NDU3OlxcdFxcbjQ0NTg6XFx0XFx0XFx0XFx0ciA9IGt2bV9hcmNoX3ZjcHVfcnVuX3BpZF9jaGFuZ2UodmNwdSk7XFxuNDQ1OTpcXHRcXHRcXHRcXHRpZiAocilcXG40NDYwOlxcdFxcdFxcdFxcdFxcdGJyZWFrO1xcbjQ0NjE6XFx0XFxuNDQ2MjpcXHRcXHRcXHRcXHRuZXdwaWQgPSBnZXRfdGFza19waWQoY3VycmVudCwgUElEVFlQRV9QSUQpO1xcbjQ0NjM6XFx0XFx0XFx0XFx0d3JpdGVfbG9jayhcXHUwMDI2dmNwdS1cXHUwMDNlcGlkX2xvY2spO1xcbjQ0NjQ6XFx0XFx0XFx0XFx0dmNwdS1cXHUwMDNlcGlkID0gbmV3cGlkO1xcbjQ0NjU6XFx0XFx0XFx0XFx0d3JpdGVfdW5sb2NrKFxcdTAwMjZ2Y3B1LVxcdTAwM2VwaWRfbG9jayk7XFxuNDQ2NjpcXHRcXG40NDY3OlxcdFxcdFxcdFxcdHB1dF9waWQob2xkcGlkKTtcXG40NDY4OlxcdFxcdFxcdH1cXG40NDY5OlxcdFxcdFxcdHZjcHUtXFx1MDAzZXdhbnRzX3RvX3J1biA9ICFSRUFEX09OQ0UodmNwdS1cXHUwMDNlcnVuLVxcdTAwM2VpbW1lZGlhdGVfZXhpdF9fdW5zYWZlKTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTZUMDY6MDA6MjQuMjA4NzQ2NTM4WiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6Nzk3MjA3MDI1OCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipLVk0gRnVuY3Rpb25hbGl0eSBBc3Nlc3NtZW50KipcblxuT2theSwgc28gYGt2bV9hcmNoX3ZjcHVfcnVuX3BpZF9jaGFuZ2VgIGlzIHRyaWdnZXJlZCB3aGVuIGEgdkNQVSBzd2l0Y2hlcyBleGVjdXRpb24gdGhyZWFkcy4gVGhhdCdzIGEgY2xlYXJseSBkZWZpbmVkIHBvaW50IG9mIGludGVyYWN0aW9uLCBhbmQgdGhlcmVmb3JlLCBkZWZpbml0ZWx5IGZ1enphYmxlLiBNeSBpbW1lZGlhdGUgdGhvdWdodCBpcywgdGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIHdhcnJhbnRpbmcgdGhvcm91Z2ggaW52ZXN0aWdhdGlvbi5cblxuVGhlIHBhdGNoIGl0c2VsZiBtb2RpZmllcyB0aGlzIGZ1bmN0aW9uIGluIGJvdGggYGFyY2gveDg2L2t2bS94ODYuY2AgYW5kIGBhcmNoL2FybTY0L2t2bS9hcm0uY2AuIExvb2tpbmcgYXQgdGhlIHg4NiBjb2RlLCB3ZSBoYXZlIGB2Y3B1LVx1MDAzZWFyY2guc3QubGFzdF9zdGVhbCA9IGN1cnJlbnQtXHUwMDNlc2NoZWRfaW5mby5ydW5fZGVsYXk7YCB3aGljaCBhcHBlYXJzIHRvIGJlIHJlY29yZGluZyBzdGVhbCB0aW1lLCBvciB0aGUgdGltZSB0aGUgdkNQVSB3YXMgcmVhZHkgdG8gcnVuIGJ1dCBjb3VsZG4ndCBiZWNhdXNlIHRoZSBob3N0IHdhcyBidXN5LiBUaGUgQVJNNjQgY29kZSBpcyBhIGxpdHRsZSBtb3JlIGludm9sdmVkLiBJdCBoYXMgYW4gZWFybHkgcmV0dXJuIGlmIHRoZSB2Q1BVIGlzbid0IGZpbmFsaXplZCwgdGhlbiBjYWxscyBga3ZtX3Jlc2V0X3N0b2xlbl90aW1lYC4gQW5kIHRoYXQgYGt2bV9yZXNldF9zdG9sZW5fdGltZWAgZnVuY3Rpb24gc2V0cyBgdmNwdS1cdTAwM2VhcmNoLnN0ZWFsLmxhc3Rfc3RlYWxgIHRvIGBjdXJyZW50LVx1MDAzZXNjaGVkX2luZm8ucnVuX2RlbGF5YC4gU28sIGFnYWluLCBpdCdzIGRlYWxpbmcgd2l0aCBzdGVhbCB0aW1lLlxuXG5TaW5jZSB0aGlzIGNoYW5nZSBpcyBhYm91dCBoYW5kbGluZyB0aGUgY29udGV4dCBzd2l0Y2ggYW5kIHBvdGVudGlhbGx5IGltcGFjdGluZyBob3cgc3RvbGVuIHRpbWUgaXMgYWNjb3VudGVkIGZvciwgbXkgZnV6emluZyBmb2N1cyB3aWxsIGJlIG9uIHRoZSBga3ZtX2FyY2hfdmNwdV9ydW5fcGlkX2NoYW5nZWAgYW5kIHRoZSBga3ZtX3Jlc2V0X3N0b2xlbl90aW1lYCBmdW5jdGlvbnMgZGlyZWN0bHkuXG5cblJlZ2FyZGluZyB0aGUgS2NvbmZpZyBvcHRpb25zLCBJIG5lZWQgdG8gbWFrZSBzdXJlIHRoZSBmdXp6aW5nIGVudmlyb25tZW50IGlzIGNvcnJlY3RseSBjb25maWd1cmVkLiBGb3IgeDg2LCBpdCdzIGBLVk1gIGFuZCBgS1ZNX1g4NmAsIHRoZSBsYXR0ZXIgYmVpbmcgaW1wbGljaXRseSBzZXQgYnkgYEtWTWAuIEZvciBhcm02NCwganVzdCBgS1ZNYCBpcyBzdWZmaWNpZW50LiBJIHNob3VsZCBkb3VibGUtY2hlY2sgdGhlIGBhcmNoL3g4Ni9rdm0vS2NvbmZpZ2AgYW5kIGBhcmNoL2FybTY0L2t2bS9LY29uZmlnYCBmaWxlcyB0byB2ZXJpZnkgdGhlc2UgY29uZmlndXJhdGlvbnMgYXJlIGluIHBsYWNlLCBidXQgSSdtIHByZXR0eSBjb25maWRlbnQgaW4gdGhlIGluaXRpYWwgYXNzZXNzbWVudCBvZiB0aGUgcmVxdWlyZWQgZGVwZW5kZW5jaWVzLlxuXG5cbiIsIklucHV0VG9rZW5zIjo3OTQ3LCJPdXRwdXRUb2tlbnMiOjE3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NTE4LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTZUMDY6MDA6MzIuMTgwODE5ODg2WiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE4MzAzMjA2MzEsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIEtWTVwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJhcmNoL2FybTY0L2t2bS9LY29uZmlnPTE4PWlmIFZJUlRVQUxJWkFUSU9OXFxuYXJjaC9hcm02NC9rdm0vS2NvbmZpZy0xOS1cXG5hcmNoL2FybTY0L2t2bS9LY29uZmlnOjIwOm1lbnVjb25maWcgS1ZNXFxuYXJjaC9hcm02NC9rdm0vS2NvbmZpZy0yMS1cXHRib29sIFxcXCJLZXJuZWwtYmFzZWQgVmlydHVhbCBNYWNoaW5lIChLVk0pIHN1cHBvcnRcXFwiXFxuLS1cXG5hcmNoL2xvb25nYXJjaC9rdm0vS2NvbmZpZz0xOD1pZiBWSVJUVUFMSVpBVElPTlxcbmFyY2gvbG9vbmdhcmNoL2t2bS9LY29uZmlnLTE5LVxcbmFyY2gvbG9vbmdhcmNoL2t2bS9LY29uZmlnOjIwOmNvbmZpZyBLVk1cXG5hcmNoL2xvb25nYXJjaC9rdm0vS2NvbmZpZy0yMS1cXHR0cmlzdGF0ZSBcXFwiS2VybmVsLWJhc2VkIFZpcnR1YWwgTWFjaGluZSAoS1ZNKSBzdXBwb3J0XFxcIlxcbi0tXFxuYXJjaC9taXBzL2t2bS9LY29uZmlnPTE2PWlmIFZJUlRVQUxJWkFUSU9OXFxuYXJjaC9taXBzL2t2bS9LY29uZmlnLTE3LVxcbmFyY2gvbWlwcy9rdm0vS2NvbmZpZzoxODpjb25maWcgS1ZNXFxuYXJjaC9taXBzL2t2bS9LY29uZmlnLTE5LVxcdHRyaXN0YXRlIFxcXCJLZXJuZWwtYmFzZWQgVmlydHVhbCBNYWNoaW5lIChLVk0pIHN1cHBvcnRcXFwiXFxuLS1cXG5hcmNoL21pcHMva3ZtL0tjb25maWctMzAtXFxuYXJjaC9taXBzL2t2bS9LY29uZmlnOjMxOmNvbmZpZyBLVk1fTUlQU19ERUJVR19DT1AwX0NPVU5URVJTXFxuYXJjaC9taXBzL2t2bS9LY29uZmlnLTMyLVxcdGJvb2wgXFxcIk1haW50YWluIGNvdW50ZXJzIGZvciBDT1AwIGFjY2Vzc2VzXFxcIlxcbi0tXFxuYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnPTE4PWlmIFZJUlRVQUxJWkFUSU9OXFxuYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnLTE5LVxcbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZzoyMDpjb25maWcgS1ZNXFxuYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnLTIxLVxcdGJvb2xcXG4tLVxcbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZy0yNS1cXG5hcmNoL3Bvd2VycGMva3ZtL0tjb25maWc6MjY6Y29uZmlnIEtWTV9CT09LM1NfSEFORExFUlxcbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZy0yNy1cXHRib29sXFxuYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnLTI4LVxcbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZzoyOTpjb25maWcgS1ZNX0JPT0szU18zMl9IQU5ETEVSXFxuYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnLTMwLVxcdGJvb2xcXG4tLVxcbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZy0zMy1cXG5hcmNoL3Bvd2VycGMva3ZtL0tjb25maWc6MzQ6Y29uZmlnIEtWTV9CT09LM1NfNjRfSEFORExFUlxcbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZy0zNS1cXHRib29sXFxuLS1cXG5hcmNoL3Bvd2VycGMva3ZtL0tjb25maWctMzctXFxuYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnOjM4OmNvbmZpZyBLVk1fQk9PSzNTX1BSX1BPU1NJQkxFXFxuYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnLTM5LVxcdGJvb2xcXG4tLVxcbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZy00MS1cXG5hcmNoL3Bvd2VycGMva3ZtL0tjb25maWc6NDI6Y29uZmlnIEtWTV9CT09LM1NfSFZfUE9TU0lCTEVcXG5hcmNoL3Bvd2VycGMva3ZtL0tjb25maWctNDMtXFx0Ym9vbFxcbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZy00NC1cXG5hcmNoL3Bvd2VycGMva3ZtL0tjb25maWc6NDU6Y29uZmlnIEtWTV9CT09LM1NfMzJcXG5hcmNoL3Bvd2VycGMva3ZtL0tjb25maWctNDYtXFx0dHJpc3RhdGUgXFxcIktWTSBzdXBwb3J0IGZvciBQb3dlclBDIGJvb2szc18zMiBwcm9jZXNzb3JzXFxcIlxcbi0tXFxuYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnLTYxLVxcbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZzo2Mjpjb25maWcgS1ZNX0JPT0szU182NFxcbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZy02My1cXHR0cmlzdGF0ZSBcXFwiS1ZNIHN1cHBvcnQgZm9yIFBvd2VyUEMgYm9vazNzXzY0IHByb2Nlc3NvcnNcXFwiXFxuLS1cXG5hcmNoL3Bvd2VycGMva3ZtL0tjb25maWctNzgtXFxuYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnOjc5OmNvbmZpZyBLVk1fQk9PSzNTXzY0X0hWXFxuYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnLTgwLVxcdHRyaXN0YXRlIFxcXCJLVk0gZm9yIFBPV0VSNyBhbmQgbGF0ZXIgdXNpbmcgaHlwZXJ2aXNvciBtb2RlIGluIGhvc3RcXFwiXFxuLS1cXG5hcmNoL3Bvd2VycGMva3ZtL0tjb25maWctOTktXFxuYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnOjEwMDpjb25maWcgS1ZNX0JPT0szU182NF9QUlxcbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZy0xMDEtXFx0dHJpc3RhdGUgXFxcIktWTSBzdXBwb3J0IHdpdGhvdXQgdXNpbmcgaHlwZXJ2aXNvciBtb2RlIGluIGhvc3RcXFwiXFxuLS1cXG5hcmNoL3Bvd2VycGMva3ZtL0tjb25maWctMTI1LVxcbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZzoxMjY6Y29uZmlnIEtWTV9CT09LM1NfSFZfRVhJVF9USU1JTkdcXG5hcmNoL3Bvd2VycGMva3ZtL0tjb25maWctMTI3LVxcdGJvb2xcXG5hcmNoL3Bvd2VycGMva3ZtL0tjb25maWctMTI4LVxcbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZzoxMjk6Y29uZmlnIEtWTV9CT09LM1NfSFZfUDlfVElNSU5HXFxuYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnLTEzMC1cXHRib29sIFxcXCJEZXRhaWxlZCB0aW1pbmcgZm9yIHRoZSBQOSBlbnRyeSBwb2ludFxcXCJcXG4tLVxcbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZy0xNDEtXFxuYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnOjE0Mjpjb25maWcgS1ZNX0JPT0szU19IVl9QOF9USU1JTkdcXG5hcmNoL3Bvd2VycGMva3ZtL0tjb25maWctMTQzLVxcdGJvb2wgXFxcIkRldGFpbGVkIHRpbWluZyBmb3IgaHlwZXJ2aXNvciByZWFsLW1vZGUgY29kZSAoZm9yIFBPV0VSOClcXFwiXFxuLS1cXG5hcmNoL3Bvd2VycGMva3ZtL0tjb25maWctMTU2LVxcbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZzoxNTc6Y29uZmlnIEtWTV9CT09LM1NfSFZfTkVTVEVEX1BNVV9XT1JLQVJPVU5EXFxuYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnLTE1OC1cXHRib29sIFxcXCJOZXN0ZWQgTDAgaG9zdCB3b3JrYXJvdW5kIGZvciBMMSBLVk0gaG9zdCBQTVUgaGFuZGxpbmcgYnVnXFxcIiBpZiBFWFBFUlRcXG4tLVxcbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZy0xNzEtXFxuYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnOjE3Mjpjb25maWcgS1ZNX0JPT0szU19IVl9QTVVcXG5hcmNoL3Bvd2VycGMva3ZtL0tjb25maWctMTczLVxcdHRyaXN0YXRlIFxcXCJIeXBlcnZpc29yIFBlcmYgZXZlbnRzIGZvciBLVk0gQm9vazNzLUhWXFxcIlxcbi0tXFxuYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnLTE4My1cXG5hcmNoL3Bvd2VycGMva3ZtL0tjb25maWc6MTg0OmNvbmZpZyBLVk1fQk9PS0VfSFZcXG5hcmNoL3Bvd2VycGMva3ZtL0tjb25maWctMTg1LVxcdGJvb2xcXG5hcmNoL3Bvd2VycGMva3ZtL0tjb25maWctMTg2LVxcbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZzoxODc6Y29uZmlnIEtWTV9FWElUX1RJTUlOR1xcbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZy0xODgtXFx0Ym9vbCBcXFwiRGV0YWlsZWQgZXhpdCB0aW1pbmdcXFwiXFxuLS1cXG5hcmNoL3Bvd2VycGMva3ZtL0tjb25maWctMTk3LVxcbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZzoxOTg6Y29uZmlnIEtWTV9FNTAwVjJcXG5hcmNoL3Bvd2VycGMva3ZtL0tjb25maWctMTk5LVxcdGJvb2wgXFxcIktWTSBzdXBwb3J0IGZvciBQb3dlclBDIEU1MDB2MiBwcm9jZXNzb3JzXFxcIlxcbi0tXFxuYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnLTIxMi1cXG5hcmNoL3Bvd2VycGMva3ZtL0tjb25maWc6MjEzOmNvbmZpZyBLVk1fRTUwME1DXFxuYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnLTIxNC1cXHRib29sIFxcXCJLVk0gc3VwcG9ydCBmb3IgUG93ZXJQQyBFNTAwTUMvRTU1MDAvRTY1MDAgcHJvY2Vzc29yc1xcXCJcXG4tLVxcbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZy0yMjgtXFxuYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnOjIyOTpjb25maWcgS1ZNX01QSUNcXG5hcmNoL3Bvd2VycGMva3ZtL0tjb25maWctMjMwLVxcdGJvb2wgXFxcIktWTSBpbi1rZXJuZWwgTVBJQyBlbXVsYXRpb25cXFwiXFxuLS1cXG5hcmNoL3Bvd2VycGMva3ZtL0tjb25maWctMjQwLVxcbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZzoyNDE6Y29uZmlnIEtWTV9YSUNTXFxuYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnLTI0Mi1cXHRib29sIFxcXCJLVk0gaW4ta2VybmVsIFhJQ1MgZW11bGF0aW9uXFxcIlxcbi0tXFxuYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnLTI1MC1cXG5hcmNoL3Bvd2VycGMva3ZtL0tjb25maWc6MjUxOmNvbmZpZyBLVk1fWElWRVxcbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZy0yNTItXFx0Ym9vbFxcbi0tXFxuYXJjaC9wb3dlcnBjL3BsYXRmb3Jtcy9LY29uZmlnPTIyPXNvdXJjZSBcXFwiYXJjaC9wb3dlcnBjL3BsYXRmb3Jtcy9taWNyb3dhdHQvS2NvbmZpZ1xcXCJcXG5hcmNoL3Bvd2VycGMvcGxhdGZvcm1zL0tjb25maWctMjMtXFxuYXJjaC9wb3dlcnBjL3BsYXRmb3Jtcy9LY29uZmlnOjI0OmNvbmZpZyBLVk1fR1VFU1RcXG5hcmNoL3Bvd2VycGMvcGxhdGZvcm1zL0tjb25maWctMjUtXFx0Ym9vbCBcXFwiS1ZNIEd1ZXN0IHN1cHBvcnRcXFwiXFxuLS1cXG5hcmNoL3Jpc2N2L2t2bS9LY29uZmlnPTE4PWlmIFZJUlRVQUxJWkFUSU9OXFxuYXJjaC9yaXNjdi9rdm0vS2NvbmZpZy0xOS1cXG5hcmNoL3Jpc2N2L2t2bS9LY29uZmlnOjIwOmNvbmZpZyBLVk1cXG5hcmNoL3Jpc2N2L2t2bS9LY29uZmlnLTIxLVxcdHRyaXN0YXRlIFxcXCJLZXJuZWwtYmFzZWQgVmlydHVhbCBNYWNoaW5lIChLVk0pIHN1cHBvcnRcXFwiXFxuLS1cXG5hcmNoL3MzOTAva3ZtL0tjb25maWc9MTc9aWYgVklSVFVBTElaQVRJT05cXG5hcmNoL3MzOTAva3ZtL0tjb25maWctMTgtXFxuYXJjaC9zMzkwL2t2bS9LY29uZmlnOjE5OmNvbmZpZyBLVk1cXG5hcmNoL3MzOTAva3ZtL0tjb25maWctMjAtXFx0ZGVmX3RyaXN0YXRlIHlcXG4tLVxcbmFyY2gvczM5MC9rdm0vS2NvbmZpZy00Ni1cXG5hcmNoL3MzOTAva3ZtL0tjb25maWc6NDc6Y29uZmlnIEtWTV9TMzkwX1VDT05UUk9MXFxuYXJjaC9zMzkwL2t2bS9LY29uZmlnLTQ4LVxcdGJvb2wgXFxcIlVzZXJzcGFjZSBjb250cm9sbGVkIHZpcnR1YWwgbWFjaGluZXNcXFwiXFxuLS1cXG5hcmNoL3g4Ni9LY29uZmlnPTgyNj1zb3VyY2UgXFxcImFyY2gveDg2L3hlbi9LY29uZmlnXFxcIlxcbmFyY2gveDg2L0tjb25maWctODI3LVxcbmFyY2gveDg2L0tjb25maWc6ODI4OmNvbmZpZyBLVk1fR1VFU1RcXG5hcmNoL3g4Ni9LY29uZmlnLTgyOS1cXHRib29sIFxcXCJLVk0gR3Vlc3Qgc3VwcG9ydCAoaW5jbHVkaW5nIGt2bWNsb2NrKVxcXCJcXG4tLVxcbmFyY2gveDg2L2t2bS9LY29uZmlnPTE4PWlmIFZJUlRVQUxJWkFUSU9OXFxuYXJjaC94ODYva3ZtL0tjb25maWctMTktXFxuYXJjaC94ODYva3ZtL0tjb25maWc6MjA6Y29uZmlnIEtWTV9YODZcXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0yMS1cXHRkZWZfdHJpc3RhdGUgS1ZNIGlmIChLVk1fSU5URUwgIT0gbiB8fCBLVk1fQU1EICE9IG4pXFxuLS1cXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy01Mi1cXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZzo1Mzpjb25maWcgS1ZNXFxuYXJjaC94ODYva3ZtL0tjb25maWctNTQtXFx0dHJpc3RhdGUgXFxcIktlcm5lbC1iYXNlZCBWaXJ0dWFsIE1hY2hpbmUgKEtWTSkgc3VwcG9ydFxcXCJcXG4tLVxcbmFyY2gveDg2L2t2bS9LY29uZmlnLTY5LVxcbmFyY2gveDg2L2t2bS9LY29uZmlnOjcwOmNvbmZpZyBLVk1fV0VSUk9SXFxuYXJjaC94ODYva3ZtL0tjb25maWctNzEtXFx0Ym9vbCBcXFwiQ29tcGlsZSBLVk0gd2l0aCAtV2Vycm9yXFxcIlxcbi0tXFxuYXJjaC94ODYva3ZtL0tjb25maWctODMtXFxuYXJjaC94ODYva3ZtL0tjb25maWc6ODQ6Y29uZmlnIEtWTV9TV19QUk9URUNURURfVk1cXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy04NS1cXHRib29sIFxcXCJFbmFibGUgc3VwcG9ydCBmb3IgS1ZNIHNvZnR3YXJlLXByb3RlY3RlZCBWTXNcXFwiXFxuLS1cXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy05Ni1cXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZzo5Nzpjb25maWcgS1ZNX0lOVEVMXFxuYXJjaC94ODYva3ZtL0tjb25maWctOTgtXFx0dHJpc3RhdGUgXFxcIktWTSBmb3IgSW50ZWwgKGFuZCBjb21wYXRpYmxlKSBwcm9jZXNzb3JzIHN1cHBvcnRcXFwiXFxuLS1cXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0xMDctXFxuYXJjaC94ODYva3ZtL0tjb25maWc6MTA4OmNvbmZpZyBLVk1fSU5URUxfUFJPVkVfVkVcXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0xMDktICAgICAgICBib29sIFxcXCJDaGVjayB0aGF0IGd1ZXN0cyBkbyBub3QgcmVjZWl2ZSAjVkUgZXhjZXB0aW9uc1xcXCJcXG4tLVxcbmFyY2gveDg2L2t2bS9LY29uZmlnPTEyMz1jb25maWcgWDg2X1NHWF9LVk1cXG4tLVxcbmFyY2gveDg2L2t2bS9LY29uZmlnLTEzNC1cXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZzoxMzU6Y29uZmlnIEtWTV9JTlRFTF9URFhcXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0xMzYtXFx0Ym9vbCBcXFwiSW50ZWwgVHJ1c3QgRG9tYWluIEV4dGVuc2lvbnMgKFREWCkgc3VwcG9ydFxcXCJcXG4tLVxcbmFyY2gveDg2L2t2bS9LY29uZmlnLTE0Ni1cXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZzoxNDc6Y29uZmlnIEtWTV9BTURcXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0xNDgtXFx0dHJpc3RhdGUgXFxcIktWTSBmb3IgQU1EIHByb2Nlc3NvcnMgc3VwcG9ydFxcXCJcXG4tLVxcbmFyY2gveDg2L2t2bS9LY29uZmlnLTE1Ni1cXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZzoxNTc6Y29uZmlnIEtWTV9BTURfU0VWXFxuYXJjaC94ODYva3ZtL0tjb25maWctMTU4LVxcdGJvb2wgXFxcIkFNRCBTZWN1cmUgRW5jcnlwdGVkIFZpcnR1YWxpemF0aW9uIChTRVYpIHN1cHBvcnRcXFwiXFxuLS1cXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0xNzItXFxuYXJjaC94ODYva3ZtL0tjb25maWc6MTczOmNvbmZpZyBLVk1fSU9BUElDXFxuYXJjaC94ODYva3ZtL0tjb25maWctMTc0LVxcdGJvb2wgXFxcIkkvTyBBUElDLCBQSUMsIGFuZCBQSVQgZW11bGF0aW9uXFxcIlxcbi0tXFxuYXJjaC94ODYva3ZtL0tjb25maWctMTgyLVxcbmFyY2gveDg2L2t2bS9LY29uZmlnOjE4Mzpjb25maWcgS1ZNX1NNTVxcbmFyY2gveDg2L2t2bS9LY29uZmlnLTE4NC1cXHRib29sIFxcXCJTeXN0ZW0gTWFuYWdlbWVudCBNb2RlIGVtdWxhdGlvblxcXCJcXG4tLVxcbmFyY2gveDg2L2t2bS9LY29uZmlnLTE5My1cXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZzoxOTQ6Y29uZmlnIEtWTV9IWVBFUlZcXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0xOTUtXFx0Ym9vbCBcXFwiU3VwcG9ydCBmb3IgTWljcm9zb2Z0IEh5cGVyLVYgZW11bGF0aW9uXFxcIlxcbi0tXFxuYXJjaC94ODYva3ZtL0tjb25maWctMjA3LVxcbmFyY2gveDg2L2t2bS9LY29uZmlnOjIwODpjb25maWcgS1ZNX1hFTlxcbmFyY2gveDg2L2t2bS9LY29uZmlnLTIwOS1cXHRib29sIFxcXCJTdXBwb3J0IGZvciBYZW4gaHlwZXJjYWxsIGludGVyZmFjZVxcXCJcXG4tLVxcbmFyY2gveDg2L2t2bS9LY29uZmlnLTIxNi1cXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZzoyMTc6Y29uZmlnIEtWTV9QUk9WRV9NTVVcXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0yMTgtXFx0Ym9vbCBcXFwiUHJvdmUgS1ZNIE1NVSBjb3JyZWN0bmVzc1xcXCJcXG4tLVxcbmFyY2gveDg2L2t2bS9LY29uZmlnLTIyOS1cXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZzoyMzA6Y29uZmlnIEtWTV9FWFRFUk5BTF9XUklURV9UUkFDS0lOR1xcbmFyY2gveDg2L2t2bS9LY29uZmlnLTIzMS1cXHRib29sXFxuYXJjaC94ODYva3ZtL0tjb25maWctMjMyLVxcbmFyY2gveDg2L2t2bS9LY29uZmlnOjIzMzpjb25maWcgS1ZNX01BWF9OUl9WQ1BVU1xcbmFyY2gveDg2L2t2bS9LY29uZmlnLTIzNC1cXHRpbnQgXFxcIk1heGltdW0gbnVtYmVyIG9mIHZDUFVzIHBlciBLVk0gZ3Vlc3RcXFwiXFxuLS1cXG52aXJ0L2t2bS9LY29uZmlnLTMtXFxudmlydC9rdm0vS2NvbmZpZzo0OmNvbmZpZyBLVk1fQ09NTU9OXFxudmlydC9rdm0vS2NvbmZpZy01LSAgICAgICBib29sXFxuLS1cXG52aXJ0L2t2bS9LY29uZmlnPTM5PWNvbmZpZyBORUVEX0tWTV9ESVJUWV9SSU5HX1dJVEhfQklUTUFQXFxuLS1cXG52aXJ0L2t2bS9LY29uZmlnLTQyLVxcbnZpcnQva3ZtL0tjb25maWc6NDM6Y29uZmlnIEtWTV9NTUlPXFxudmlydC9rdm0vS2NvbmZpZy00NC0gICAgICAgYm9vbFxcbnZpcnQva3ZtL0tjb25maWctNDUtXFxudmlydC9rdm0vS2NvbmZpZzo0Njpjb25maWcgS1ZNX0FTWU5DX1BGXFxudmlydC9rdm0vS2NvbmZpZy00Ny0gICAgICAgYm9vbFxcbi0tXFxudmlydC9rdm0vS2NvbmZpZy00OS0jIFRvZ2dsZSB0byBzd2l0Y2ggYmV0d2VlbiBkaXJlY3Qgbm90aWZpY2F0aW9uIGFuZCBiYXRjaCBqb2JcXG52aXJ0L2t2bS9LY29uZmlnOjUwOmNvbmZpZyBLVk1fQVNZTkNfUEZfU1lOQ1xcbnZpcnQva3ZtL0tjb25maWctNTEtICAgICAgIGJvb2xcXG4tLVxcbnZpcnQva3ZtL0tjb25maWc9NTk9Y29uZmlnIEhBVkVfS1ZNX0NQVV9SRUxBWF9JTlRFUkNFUFRcXG4tLVxcbnZpcnQva3ZtL0tjb25maWctNjEtXFxudmlydC9rdm0vS2NvbmZpZzo2Mjpjb25maWcgS1ZNX1ZGSU9cXG52aXJ0L2t2bS9LY29uZmlnLTYzLSAgICAgICBib29sXFxuLS1cXG52aXJ0L2t2bS9LY29uZmlnPTY1PWNvbmZpZyBIQVZFX0tWTV9JTlZBTElEX1dBS0VVUFNcXG4tLVxcbnZpcnQva3ZtL0tjb25maWctNjctXFxudmlydC9rdm0vS2NvbmZpZzo2ODpjb25maWcgS1ZNX0dFTkVSSUNfRElSVFlMT0dfUkVBRF9QUk9URUNUXFxudmlydC9rdm0vS2NvbmZpZy02OS0gICAgICAgYm9vbFxcbnZpcnQva3ZtL0tjb25maWctNzAtXFxudmlydC9rdm0vS2NvbmZpZzo3MTpjb25maWcgS1ZNX0dFTkVSSUNfUFJFX0ZBVUxUX01FTU9SWVxcbnZpcnQva3ZtL0tjb25maWctNzItICAgICAgIGJvb2xcXG52aXJ0L2t2bS9LY29uZmlnLTczLVxcbnZpcnQva3ZtL0tjb25maWc6NzQ6Y29uZmlnIEtWTV9DT01QQVRcXG52aXJ0L2t2bS9LY29uZmlnLTc1LSAgICAgICBkZWZfYm9vbCB5XFxuLS1cXG52aXJ0L2t2bS9LY29uZmlnPTkxPWNvbmZpZyBIQVZFX0tWTV9QTV9OT1RJRklFUlxcbi0tXFxudmlydC9rdm0vS2NvbmZpZy05My1cXG52aXJ0L2t2bS9LY29uZmlnOjk0OmNvbmZpZyBLVk1fR0VORVJJQ19IQVJEV0FSRV9FTkFCTElOR1xcbnZpcnQva3ZtL0tjb25maWctOTUtICAgICAgIGJvb2xcXG52aXJ0L2t2bS9LY29uZmlnLTk2LVxcbnZpcnQva3ZtL0tjb25maWc6OTc6Y29uZmlnIEtWTV9FTElERV9UTEJfRkxVU0hfSUZfWU9VTkdcXG52aXJ0L2t2bS9LY29uZmlnLTk4LSAgICAgICBib29sXFxudmlydC9rdm0vS2NvbmZpZy05OS1cXG52aXJ0L2t2bS9LY29uZmlnOjEwMDpjb25maWcgS1ZNX01NVV9MT0NLTEVTU19BR0lOR1xcbnZpcnQva3ZtL0tjb25maWctMTAxLSAgICAgICBib29sXFxudmlydC9rdm0vS2NvbmZpZy0xMDItXFxudmlydC9rdm0vS2NvbmZpZzoxMDM6Y29uZmlnIEtWTV9HRU5FUklDX01FTU9SWV9BVFRSSUJVVEVTXFxudmlydC9rdm0vS2NvbmZpZy0xMDQtICAgICAgIGJvb2xcXG52aXJ0L2t2bS9LY29uZmlnLTEwNS1cXG52aXJ0L2t2bS9LY29uZmlnOjEwNjpjb25maWcgS1ZNX0dVRVNUX01FTUZEXFxudmlydC9rdm0vS2NvbmZpZy0xMDctICAgICAgIHNlbGVjdCBYQVJSQVlfTVVMVElcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTZUMDY6MDA6MzQuMDExMTUyNjE3WiIsIlNlcSI6OSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDUxMTMzMTExNywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBLVk0gQ29uZmlndXJhdGlvbiBBbmFseXNpcyoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoZXNlIGNvbmZpZ3VyYXRpb25zLiBUaGUgZm9jdXMgaXMgZGVmaW5pdGVseSBgS1ZNYC4gRm9yIHg4NiwgaXQncyBwcmV0dHkgc3RhbmRhcmQgdGhhdCBgS1ZNYCByZWxpZXMgb24gZWl0aGVyIGBLVk1fSU5URUxgIG9yIGBLVk1fQU1EYCwgYnV0IGBLVk1gIGl0c2VsZiBpcyB0aGUgY29yZS4gUmlnaHQsIGBLVk1gIGlzIGRlZmluZWQgYXMgYSB0cmlzdGF0ZSBvcHRpb24gZm9yIFwiS2VybmVsLWJhc2VkIFZpcnR1YWwgTWFjaGluZSAoS1ZNKSBzdXBwb3J0LlwiIFRoYXQgbWFrZXMgc2Vuc2U7IEknbGwgZGVmaW5pdGVseSBpbmNsdWRlIGBLVk1gIGluIHRoZSBgRW5hYmxlQ29uZmlnc2AgbGlzdC5cblxuTm93LCBsZXQncyBqdXN0IHF1aWNrbHkgY29uZmlybSB0aGF0IGBIQVZFX0tWTV9WQ1BVX1JVTl9QSURfQ0hBTkdFYCBpcyBzb21ldGhpbmcgd2UgbmVlZCB0byBjb25zaWRlci4gQWgsIHllcywgaXQncyBzZWxlY3RlZCBieSBib3RoIGBLVk1fWDg2YCBhbmQgYEtWTWAgb24gYXJtNjQgYXJjaGl0ZWN0dXJlcy4gTm93IGhvbGQgb24gYSBzZWNvbmQuLi4gdGhlIGRpZmYgZG9lc24ndCBzZWVtIHRvIGV4cGxpY2l0bHkgYWRkIGBIQVZFX0tWTV9WQ1BVX1JVTl9QSURfQ0hBTkdFYCB0byB0aGUgYGFyY2gvYXJtNjQva3ZtL0tjb25maWdgIGZpbGUuIEknZCBiZXR0ZXIgZG91YmxlLWNoZWNrIHRoZSBgYXJjaC9hcm02NC9rdm0vS2NvbmZpZ2AgdG8gYmUgYWJzb2x1dGVseSBzdXJlIHdoYXQncyBnb2luZyBvbiB0aGVyZS4gR290dGEgYmUgdGhvcm91Z2guXG5cblxuIiwiSW5wdXRUb2tlbnMiOjEzMjA5LCJPdXRwdXRUb2tlbnMiOjI4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTg5LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE2VDA2OjAwOjM4LjUyMjQ4NzQyNFoiLCJTZXEiOjEwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTU1OTY4NTU2MSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJIQVZFX0tWTV9WQ1BVX1JVTl9QSURfQ0hBTkdFXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImFyY2gvYXJtNjQva3ZtL0tjb25maWc9MjA9bWVudWNvbmZpZyBLVk1cXG4tLVxcbmFyY2gvYXJtNjQva3ZtL0tjb25maWctMzUtXFx0c2VsZWN0IEhBVkVfS1ZNX1JFQURPTkxZX01FTVxcbmFyY2gvYXJtNjQva3ZtL0tjb25maWc6MzY6XFx0c2VsZWN0IEhBVkVfS1ZNX1ZDUFVfUlVOX1BJRF9DSEFOR0VcXG5hcmNoL2FybTY0L2t2bS9LY29uZmlnLTM3LVxcdHNlbGVjdCBTQ0hFRF9JTkZPXFxuLS1cXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZz0yMD1jb25maWcgS1ZNX1g4Nlxcbi0tXFxuYXJjaC94ODYva3ZtL0tjb25maWctNDItXFx0c2VsZWN0IEhBVkVfS1ZNX05PX1BPTExcXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZzo0MzpcXHRzZWxlY3QgSEFWRV9LVk1fVkNQVV9SVU5fUElEX0NIQU5HRVxcbmFyY2gveDg2L2t2bS9LY29uZmlnLTQ0LVxcdHNlbGVjdCBWSVJUX1hGRVJfVE9fR1VFU1RfV09SS1xcbi0tXFxuaW5jbHVkZS9saW51eC9rdm1faG9zdC5oPTI0NjA9dm9pZCBrdm1fYXJjaF9ndWVzdF9tZW1vcnlfcmVjbGFpbWVkKHN0cnVjdCBrdm0gKmt2bSk7XFxuaW5jbHVkZS9saW51eC9rdm1faG9zdC5oLTI0NjEtXFxuaW5jbHVkZS9saW51eC9rdm1faG9zdC5oOjI0NjI6I2lmZGVmIENPTkZJR19IQVZFX0tWTV9WQ1BVX1JVTl9QSURfQ0hBTkdFXFxuaW5jbHVkZS9saW51eC9rdm1faG9zdC5oLTI0NjMtaW50IGt2bV9hcmNoX3ZjcHVfcnVuX3BpZF9jaGFuZ2Uoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KTtcXG4tLVxcbmluY2x1ZGUvbGludXgva3ZtX2hvc3QuaD0yNDY1PXN0YXRpYyBpbmxpbmUgaW50IGt2bV9hcmNoX3ZjcHVfcnVuX3BpZF9jaGFuZ2Uoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxcbi0tXFxuaW5jbHVkZS9saW51eC9rdm1faG9zdC5oLTI0NjgtfVxcbmluY2x1ZGUvbGludXgva3ZtX2hvc3QuaDoyNDY5OiNlbmRpZiAvKiBDT05GSUdfSEFWRV9LVk1fVkNQVV9SVU5fUElEX0NIQU5HRSAqL1xcbmluY2x1ZGUvbGludXgva3ZtX2hvc3QuaC0yNDcwLVxcbi0tXFxudmlydC9rdm0vS2NvbmZpZz03OD1jb25maWcgSEFWRV9LVk1fSVJRX0JZUEFTU1xcbi0tXFxudmlydC9rdm0vS2NvbmZpZy04MS1cXG52aXJ0L2t2bS9LY29uZmlnOjgyOmNvbmZpZyBIQVZFX0tWTV9WQ1BVX1JVTl9QSURfQ0hBTkdFXFxudmlydC9rdm0vS2NvbmZpZy04My0gICAgICAgYm9vbFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xNlQwNjowMDo0MC4wODIxODA5NzVaIiwiU2VxIjoxMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6ODg3Nzk0MDE4OCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBc3Nlc3NtZW50IG9mIHRoZSBLVk0gU3RlYWwtVGltZSBSZXNldCBQYXRjaCoqXG5cbk9rYXksIHNvIEkgc2VlIHRoaXMgcGF0Y2ggaXMgdHJpZ2dlcmVkIGJ5IGBLVk1gIG9uIGFybTY0IGFuZCBgS1ZNX1g4NmAgb24geDg2LCB3aGljaCBjb25maXJtcyBgS1ZNYCBpcyB0aGUgcHJpbWFyeSBjb25maWd1cmF0aW9uIHZhcmlhYmxlIGF0IHBsYXkgaGVyZS4gTGV0IG1lIHF1aWNrbHkgc2NhbiBmb3IgYW55IG90aGVyIHBvdGVudGlhbGx5IHJlbGV2YW50IGNvbmZpZ3VyYXRpb25zLi4uIG5vcGUsIGBLVk1gIHNlZW1zIHRvIGJlIHRoZSBvbmx5IHRoaW5nIHdlIG5lZWQgdG8gY29uc2lkZXIuXG5cblRoZSBjb3JlIG9mIHRoZSBjaGFuZ2UgcmV2b2x2ZXMgYXJvdW5kIHJlc2V0dGluZyBzdGVhbC10aW1lIGFjY291bnRpbmcgd2hlbiBhIEtWTSB2Q1BVIHRyYW5zaXRpb25zIHRvIGEgbmV3IGhvc3QgUElELiBUaGlzIGRpcmVjdGx5IGltcGFjdHMgY29yZSBLVk0gbG9naWMgYWNyb3NzIGJvdGggQVJNNjQgYW5kIHg4NiBhcmNoaXRlY3R1cmVzLCBhbmQgdGhlIGNvZGUgaW50cm9kdWNlcyBga3ZtX2FyY2hfdmNwdV9ydW5fcGlkX2NoYW5nZWAgYW5kIGBrdm1fcmVzZXRfc3RvbGVuX3RpbWVgLiBUaGVzZSBhcmUgc2lnbmlmaWNhbnQgZnVuY3Rpb25hbCBhZGRpdGlvbnMgd2l0aGluIHRoZSBLVk0gY29kZS4gR2l2ZW4gdGhlaXIgZGlyZWN0IGltcGFjdCBvbiB2Q1BVIG1pZ3JhdGlvbiBiZWhhdmlvciwgdGhpcyBpcyBhbiBhcmVhIHRoYXQgKmFic29sdXRlbHkqIHdhcnJhbnRzIHRhcmdldGVkIGZ1enppbmcuIFdlIG5lZWQgdG8gZW5zdXJlIHRoYXQgdGhpcyBjaGFuZ2UgZG9lc24ndCBpbnRyb2R1Y2UgYW55IHBlcmZvcm1hbmNlIHJlZ3Jlc3Npb25zIG9yLCBldmVuIHdvcnNlLCB1bmFudGljaXBhdGVkIGJlaGF2aW9yYWwgc2hpZnRzIGR1cmluZyB2Q1BVIHRocmVhZCBtaWdyYXRpb25zLlxuXG5SaWdodCwgSSdtIGNvbmZpZGVudCBpbiB0aGlzIGV2YWx1YXRpb24sIEknbGwgZ28gYWhlYWQgYW5kIGxvZyB0aGUgcmVzdWx0cyBub3cuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE0MjQ2LCJPdXRwdXRUb2tlbnMiOjE2NSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIxMiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xNlQwNjowMDo0OC45NjAxMjQyODNaIiwiU2VxIjoxMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo3OTk3NzE5OSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiS1ZNXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwia3ZtX2FyY2hfdmNwdV9ydW5fcGlkX2NoYW5nZVwiLFxuICAgIFwia3ZtX3Jlc2V0X3N0b2xlbl90aW1lXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggaW50cm9kdWNlcyBhIG1lY2hhbmlzbSB0byByZXNldCBzdGVhbC10aW1lIGFjY291bnRpbmcgd2hlbiBhIEtWTSB2Q1BVIGlzIHJ1biBmcm9tIGEgZGlmZmVyZW50IGhvc3QgUElELiBJdCBtb2RpZmllcyBjb3JlIEtWTSBsb2dpYyBmb3IgYm90aCBBUk02NCBhbmQgeDg2IGFyY2hpdGVjdHVyZXMsIGFkZGluZyBga3ZtX2FyY2hfdmNwdV9ydW5fcGlkX2NoYW5nZWAgYW5kIGBrdm1fcmVzZXRfc3RvbGVuX3RpbWVgLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgdG8gcmVhY2hhYmxlIEtWTSBjb2RlIHRoYXQgc2hvdWxkIGJlIGZ1enplZCB0byBlbnN1cmUgaXQgZG9lc24ndCBpbnRyb2R1Y2UgcmVncmVzc2lvbnMgb3IgdW5leHBlY3RlZCBiZWhhdmlvciBkdXJpbmcgdkNQVSB0aHJlYWQgbWlncmF0aW9ucy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJLVk1cIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJrdm1fYXJjaF92Y3B1X3J1bl9waWRfY2hhbmdlXCIsXG4gICAgXCJrdm1fcmVzZXRfc3RvbGVuX3RpbWVcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBpbnRyb2R1Y2VzIGEgbWVjaGFuaXNtIHRvIHJlc2V0IHN0ZWFsLXRpbWUgYWNjb3VudGluZyB3aGVuIGEgS1ZNIHZDUFUgaXMgcnVuIGZyb20gYSBkaWZmZXJlbnQgaG9zdCBQSUQuIEl0IG1vZGlmaWVzIGNvcmUgS1ZNIGxvZ2ljIGZvciBib3RoIEFSTTY0IGFuZCB4ODYgYXJjaGl0ZWN0dXJlcywgYWRkaW5nIGBrdm1fYXJjaF92Y3B1X3J1bl9waWRfY2hhbmdlYCBhbmQgYGt2bV9yZXNldF9zdG9sZW5fdGltZWAuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSB0byByZWFjaGFibGUgS1ZNIGNvZGUgdGhhdCBzaG91bGQgYmUgZnV6emVkIHRvIGVuc3VyZSBpdCBkb2Vzbid0IGludHJvZHVjZSByZWdyZXNzaW9ucyBvciB1bmV4cGVjdGVkIGJlaGF2aW9yIGR1cmluZyB2Q1BVIHRocmVhZCBtaWdyYXRpb25zLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xNlQwNjowMDo0OS4wNDAxMTEzNTJaIiwiU2VxIjoxMywiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJJZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjg1OTg2NzY2MzYsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xNlQwNjowMDo0OS4wNDA3NTQ1NTJaIiwiU2VxIjoxNCwiTmVzdGluZyI6MiwiVHlwZSI6ImFnZW50IiwiTmFtZSI6Imttc2FuLWV2YWx1YXRvciIsIk1vZGVsIjoiYmVzdC1leHBlbnNpdmUiLCJEdXJhdGlvbiI6ODU5ODAyODU1NiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggc2ltcGx5IHJlc2V0cyB0aGUgS1ZNIHN0ZWFsIHRpbWUgYWNjb3VudGluZyBiYXNlIChgbGFzdF9zdGVhbGApIHRvIHRoZSBjdXJyZW50IHRhc2sncyBgcnVuX2RlbGF5YCB3aGVuIGEgdkNQVSB0aHJlYWQgY2hhbmdlcyBpdHMgaG9zdCBQSUQuIFRoaXMgaW52b2x2ZXMgcmVhZGluZyBhIGZ1bGx5IGluaXRpYWxpemVkIHNjYWxhciB2YWx1ZSAoYGN1cnJlbnQtXFx1MDAzZXNjaGVkX2luZm8ucnVuX2RlbGF5YCkgZnJvbSB0aGUgc2NoZWR1bGVyIGFuZCBhc3NpZ25pbmcgaXQgdG8gYSBmaWVsZCBpbiB0aGUgdkNQVSBhcmNoaXRlY3R1cmUgc3RydWN0dXJlLiBObyBuZXcgbWVtb3J5IGFsbG9jYXRpb25zIGFyZSBpbnRyb2R1Y2VkLCBubyBzdHJ1Y3R1cmVzIGFyZSBjb3BpZWQgdG8gdXNlciBzcGFjZSwgYW5kIG5vIGNvbXBsZXggZGF0YSBzdHJ1Y3R1cmVzIGFyZSBtYW5pcHVsYXRlZCBpbiBhIHdheSB0aGF0IGNvdWxkIGV4cG9zZSB1bmluaXRpYWxpemVkIG1lbW9yeS4gVGhlcmVmb3JlLCB0aGVyZSBpcyBubyByaXNrIG9mIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHVzZSBvciBpbmZvLWxlYWtzLCBhbmQgYSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGlzIG5vdCByZXF1aXJlZC5cIixcbiAgXCJOZWVkc0tNU0FOXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgc2VjdXJpdHkgZW5naW5lZXIgc3BlY2lhbGl6aW5nIGluIGtlcm5lbCBtZW1vcnlcbmVycm9yIGRldGVjdG9ycyAoS0FTQU4gYW5kIEtNU0FOKS4gWW91ciBqb2IgaXMgdG8gcmV2aWV3IHRoZSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kXG5kZXRlcm1pbmUgaWYgdGhlIGNvZGUgY2hhbmdlcyBqdXN0aWZ5IHNwYXduaW5nIGEgZGVkaWNhdGVkIEtNU0FOIChLZXJuZWxNZW1vcnlTYW5pdGl6ZXIpXG5mdXp6aW5nIHNlc3Npb24gaW4gYWRkaXRpb24gdG8gc3RhbmRhcmQgS0FTQU4gZnV6emluZy5cblxuQ1JJVElDQUwgRElTVElOQ1RJT04gQkVUV0VFTiBLQVNBTiBBTkQgS01TQU46XG4tIFN0YW5kYXJkIEtBU0FOIGtlcm5lbCBidWlsZHMgKHVwc3RyZWFtLWFwcGFybW9yLWthc2FuLmNvbmZpZykgYWxyZWFkeSBlbmFibGVcbiAgYSBjb21wcmVoZW5zaXZlIHN1aXRlIG9mIGRlYnVnZ2luZyB0b29scyBhbmQgc2FuaXRpemVycywgaW5jbHVkaW5nIEtBU0FOXG4gIChvdXQtb2YtYm91bmRzIGFjY2Vzc2VzLCB1c2UtYWZ0ZXItZnJlZSwgZG91YmxlIGZyZWUsIGludmFsaWQgZnJlZSksIExPQ0tERVBcbiAgKGxvY2tpbmcgYnVncyBhbmQgZGVhZGxvY2tzKSwgVUItc2FuaXRpemVycywgYW5kIG1lbW9yeSBjb3JydXB0aW9uIGNoZWNrcy5cbi0gS01TQU4gKEtlcm5lbE1lbW9yeVNhbml0aXplcikgZGV0ZWN0cyByZWFkcyBvZiBVTklOSVRJQUxJWkVEIG1lbW9yeSAoc3RhY2ssIGhlYXAsXG4gIG9yIHBhZ2UgYWxsb2NhdGlvbnMpIGFuZCBrZXJuZWwtdG8tdXNlciBtZW1vcnkgaW5mby1sZWFrcy5cblxuUnVsZTogVEhFUkUgSVMgTk8gU0VOU0UgSU4gUlVOTklORyBBIEtNU0FOIFNFU1NJT04gSUYgQSBCVUcgQ0FOIEJFIENBVUdIVCBCWSBLQVNBTixcbkxPQ0tERVAsIE9SIE9USEVSIFNUQU5EQVJEIEJVRyBERVRFQ1RPUlMuXG5BIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaW5jdXJzIHNpZ25pZmljYW50IHJlc291cmNlIGNvc3RzLiBZb3UgbXVzdCBPTkxZXG5zZXQgTmVlZHNLTVNBTj10cnVlIGlmIHRoZSBjb2RlIGNoYW5nZXMgaW50cm9kdWNlIG9yIGV4cG9zZSBVTklOSVRJQUxJWkVEIE1FTU9SWSByaXNrc1xudGhhdCBhcmUgZGV0ZWN0ZWQgT05MWSBieSBLTVNBTi5cblxuTG9vayBob2xpc3RpY2FsbHkgYXQgdGhlIHBhdGNoIHNlcmllcyBhbmQgc3Vycm91bmRpbmcgY29kZS4gRXZlbiBpZiBubyBkaXJlY3RcbnVuaW5pdGlhbGl6ZWQgZmllbGQgYWNjZXNzZXMgb3IgbmV3IGJ1ZmZlciBhbGxvY2F0aW9ucyBhcmUgYWRkZWQgaW4gdGhlIGRpZmYgaXRzZWxmLFxuYSBwYXRjaCBtYXkgYWx0ZXIgY29udHJvbCBmbG93LCBib3VuZHMgY2hlY2tpbmcsIG9yIGRhdGEgbGVuZ3RoIGNhbGN1bGF0aW9ucyBpbiB3YXlzXG50aGF0IGNoYW5nZSBob3cgdGhlIHJlc3Qgb2YgdGhlIGNvZGUgb3BlcmF0ZXMgb24gZXhpc3RpbmcgYnVmZmVycyAoZS5nLiBhbGxvd2luZ1xudW5pbml0aWFsaXplZCBzdGFjay9oZWFwIG1lbW9yeSB0byBiZSByZWFkLCBjb3BpZWQgdG8gdXNlciBzcGFjZSwgb3IgdXNlZCBpbiBjb250cm9sXG5mbG93KS4gRG8gbm90IGhlc2l0YXRlIHRvIHVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGluc3BlY3QgdGhlIHN1cnJvdW5kaW5nIGNvZGUsXG5jYWxsZWQgZnVuY3Rpb25zLCBhbmQgY2FsbGVycy5cblxuU2V0IE5lZWRzS01TQU49dHJ1ZSBPTkxZIElGIHRoZSBwYXRjaCBpbnRyb2R1Y2VzIG9yIG1vZGlmaWVzOlxuMS4gS2VybmVsIHN0cnVjdHVyZXMgc2VudCB0byB1c2VyIHNwYWNlICh2aWEgY29weV90b191c2VyLCBwdXRfdXNlciwgbmV0bGluayBza2JcbiAgIGF0dHJpYnV0ZXMsIGlvY3RsIG91dHB1dCBhcmd1bWVudHMsIHNvY2tldCBvcHRpb25zLCBvciBCUEYgYnVmZmVycykgd2hlcmUgZmllbGRzXG4gICBvciBzdHJ1Y3R1cmUgcGFkZGluZyBtaWdodCBub3QgYmUgZnVsbHkgaW5pdGlhbGl6ZWQvemVyb2VkLlxuMi4gQ29uZGl0aW9uYWwgbG9naWMgb3IgYnJhbmNoaW5nIHRoYXQgZGVwZW5kcyBvbiBwb3RlbnRpYWxseSB1bmluaXRpYWxpemVkIHZhcmlhYmxlc1xuICAgb3Igc3RydWN0IGZpZWxkcy5cbjMuIEFsbG9jYXRpb24gb3IgaW5pdGlhbGl6YXRpb24gb2YgY29tcGxleCBkYXRhIHN0cnVjdHVyZXMgd2hlcmUgdW5pbml0aWFsaXplZCBmaWVsZHNcbiAgIGNvdWxkIGJlIHJlYWQgbGF0ZXIgaW4gcmVhY2hhYmxlIGNvZGUgcGF0aHMuXG40LiBCb3VuZHMgY2hlY2tzLCBsZW5ndGhzLCBvciBsb2dpYyBpbiBhIHdheSB0aGF0IGFsbG93cyBzdXJyb3VuZGluZyBjb2RlIHRvIGFjY2Vzc1xuICAgdW5pbml0aWFsaXplZCBieXRlcyBvZiBleGlzdGluZyBidWZmZXJzLlxuXG5TZXQgTmVlZHNLTVNBTj1mYWxzZSBJRjpcbi0gVGhlIGNvZGUgY2hhbmdlcyBwcmltYXJpbHkgcmlzayBvdXQtb2YtYm91bmRzIGFjY2VzcywgYXJyYXkgb3ZlcmZsb3dzLCBOVUxMIHBvaW50ZXJcbiAgZGVyZWZlcmVuY2VzLCBsb2NraW5nIGRlYWRsb2Nrcywgb3IgdXNlLWFmdGVyLWZyZWUgYnVncyAodGhlc2UgYXJlIGFscmVhZHkgY2F1Z2h0XG4gIGJ5IEtBU0FOLCBMT0NLREVQLCBvciBzdGFuZGFyZCBidWcgZGV0ZWN0b3JzKS5cbi0gQWxsIHN0YWNrL2hlYXAgc3RydWN0dXJlcyB0b3VjaGVkIG9yIGludHJvZHVjZWQgYnkgdGhlIHBhdGNoIGFyZSBmdWxseSB6ZXJvZWRcbiAgb3IgaW5pdGlhbGl6ZWQgKGUuZy4gdXNpbmcgPSB7MH0sIG1lbXNldCwga3phbGxvYykgYmVmb3JlIGJlaW5nIHJlYWQgb3IgY29waWVkLlxuLSBUaGUgcGF0Y2ggZG9lcyBub3QgaW50cm9kdWNlIGFueSByaXNrIG9mIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHVzYWdlIG9yIGluZm8tbGVha3MuXG5cblVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGluc3BlY3QgdGhlIHN1cnJvdW5kaW5nIGNvZGUgaWYgbmVjZXNzYXJ5LCB0aGVuIHByb3ZpZGVcbmRldGFpbGVkIEtNU0FOUmVhc29uaW5nIGNvbnRyYXN0aW5nIEtBU0FOIHZzIEtNU0FOIGFwcGxpY2FiaWxpdHkgZm9yIHRoaXMgcGF0Y2guXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCBhZjNmYzIzNjczMTkzZWVmYTNiMmQ2YWNhMTljNTVmOWIwYzQ4MjhkXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFN1biBBdWcgMTYgMDY6MDA6MTEgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9hcmNoL2FybTY0L2luY2x1ZGUvYXNtL2t2bV9ob3N0LmggYi9hcmNoL2FybTY0L2luY2x1ZGUvYXNtL2t2bV9ob3N0LmhcbmluZGV4IGJhZTJjNGY5MmVmNWMuLjQ2MDdmOTU2ZTc4NzkgMTAwNjQ0XG4tLS0gYS9hcmNoL2FybTY0L2luY2x1ZGUvYXNtL2t2bV9ob3N0LmhcbisrKyBiL2FyY2gvYXJtNjQvaW5jbHVkZS9hc20va3ZtX2hvc3QuaFxuQEAgLTEzMzksNiArMTMzOSw3IEBAIHN0YXRpYyBpbmxpbmUgYm9vbCBrdm1fYXJjaF9wbWlfaW5fZ3Vlc3Qoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxuIGxvbmcga3ZtX2h5cGVyY2FsbF9wdl9mZWF0dXJlcyhzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpO1xuIGdwYV90IGt2bV9pbml0X3N0b2xlbl90aW1lKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSk7XG4gdm9pZCBrdm1fdXBkYXRlX3N0b2xlbl90aW1lKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSk7XG4rdm9pZCBrdm1fcmVzZXRfc3RvbGVuX3RpbWUoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KTtcbiBcbiBib29sIGt2bV9hcm1fcHZ0aW1lX3N1cHBvcnRlZCh2b2lkKTtcbiBpbnQga3ZtX2FybV9wdnRpbWVfc2V0X2F0dHIoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LFxuZGlmZiAtLWdpdCBhL2FyY2gvYXJtNjQva3ZtL2FybS5jIGIvYXJjaC9hcm02NC9rdm0vYXJtLmNcbmluZGV4IDlhNmM3MmExODY3MjcuLjBmNmU2M2VhY2UyMWYgMTAwNjQ0XG4tLS0gYS9hcmNoL2FybTY0L2t2bS9hcm0uY1xuKysrIGIvYXJjaC9hcm02NC9rdm0vYXJtLmNcbkBAIC05MjksNiArOTI5LDggQEAgaW50IGt2bV9hcmNoX3ZjcHVfcnVuX3BpZF9jaGFuZ2Uoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxuIFx0aWYgKCFrdm1fYXJtX3ZjcHVfaXNfZmluYWxpemVkKHZjcHUpKVxuIFx0XHRyZXR1cm4gLUVQRVJNO1xuIFxuK1x0a3ZtX3Jlc2V0X3N0b2xlbl90aW1lKHZjcHUpO1xuK1xuIFx0aWYgKGxpa2VseSh2Y3B1X2hhc19ydW5fb25jZSh2Y3B1KSkpXG4gXHRcdHJldHVybiAwO1xuIFxuZGlmZiAtLWdpdCBhL2FyY2gvYXJtNjQva3ZtL3B2dGltZS5jIGIvYXJjaC9hcm02NC9rdm0vcHZ0aW1lLmNcbmluZGV4IDRjZWFiYWE0YzMwYmQuLjAwMGJmNDljYzBmZGYgMTAwNjQ0XG4tLS0gYS9hcmNoL2FybTY0L2t2bS9wdnRpbWUuY1xuKysrIGIvYXJjaC9hcm02NC9rdm0vcHZ0aW1lLmNcbkBAIC0zMiw2ICszMiwxMSBAQCB2b2lkIGt2bV91cGRhdGVfc3RvbGVuX3RpbWUoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxuIFx0c3JjdV9yZWFkX3VubG9jayhcdTAwMjZrdm0tXHUwMDNlc3JjdSwgaWR4KTtcbiB9XG4gXG4rdm9pZCBrdm1fcmVzZXRfc3RvbGVuX3RpbWUoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxuK3tcbitcdHZjcHUtXHUwMDNlYXJjaC5zdGVhbC5sYXN0X3N0ZWFsID0gY3VycmVudC1cdTAwM2VzY2hlZF9pbmZvLnJ1bl9kZWxheTtcbit9XG4rXG4gbG9uZyBrdm1faHlwZXJjYWxsX3B2X2ZlYXR1cmVzKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSlcbiB7XG4gXHR1MzIgZmVhdHVyZSA9IHNtY2NjX2dldF9hcmcxKHZjcHUpO1xuZGlmZiAtLWdpdCBhL2FyY2gveDg2L2t2bS9LY29uZmlnIGIvYXJjaC94ODYva3ZtL0tjb25maWdcbmluZGV4IDgwMWJmOWU1MjBkYjMuLmI3Y2IyY2VkYTZkOWEgMTAwNjQ0XG4tLS0gYS9hcmNoL3g4Ni9rdm0vS2NvbmZpZ1xuKysrIGIvYXJjaC94ODYva3ZtL0tjb25maWdcbkBAIC00MCw2ICs0MCw3IEBAIGNvbmZpZyBLVk1fWDg2XG4gXHRzZWxlY3QgSEFWRV9LVk1fTVNJXG4gXHRzZWxlY3QgSEFWRV9LVk1fQ1BVX1JFTEFYX0lOVEVSQ0VQVFxuIFx0c2VsZWN0IEhBVkVfS1ZNX05PX1BPTExcbitcdHNlbGVjdCBIQVZFX0tWTV9WQ1BVX1JVTl9QSURfQ0hBTkdFXG4gXHRzZWxlY3QgVklSVF9YRkVSX1RPX0dVRVNUX1dPUktcbiBcdHNlbGVjdCBLVk1fR0VORVJJQ19ESVJUWUxPR19SRUFEX1BST1RFQ1RcbiBcdHNlbGVjdCBLVk1fVkZJT1xuZGlmZiAtLWdpdCBhL2FyY2gveDg2L2t2bS94ODYuYyBiL2FyY2gveDg2L2t2bS94ODYuY1xuaW5kZXggNDdjYjllYmExMTNiMS4uMzNiZTQ1ZWVjMzJiYyAxMDA2NDRcbi0tLSBhL2FyY2gveDg2L2t2bS94ODYuY1xuKysrIGIvYXJjaC94ODYva3ZtL3g4Ni5jXG5AQCAtMzcxNyw2ICszNzE3LDEzIEBAIHZvaWQga3ZtX3NlcnZpY2VfbG9jYWxfdGxiX2ZsdXNoX3JlcXVlc3RzKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSlcbiB9XG4gRVhQT1JUX1NZTUJPTF9GT1JfS1ZNX0lOVEVSTkFMKGt2bV9zZXJ2aWNlX2xvY2FsX3RsYl9mbHVzaF9yZXF1ZXN0cyk7XG4gXG4raW50IGt2bV9hcmNoX3ZjcHVfcnVuX3BpZF9jaGFuZ2Uoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxuK3tcbitcdHZjcHUtXHUwMDNlYXJjaC5zdC5sYXN0X3N0ZWFsID0gY3VycmVudC1cdTAwM2VzY2hlZF9pbmZvLnJ1bl9kZWxheTtcbitcbitcdHJldHVybiAwO1xuK31cbitcbiBzdGF0aWMgdm9pZCByZWNvcmRfc3RlYWxfdGltZShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXG4ge1xuIFx0c3RydWN0IGdmbl90b19odmFfY2FjaGUgKmdoYyA9IFx1MDAyNnZjcHUtXHUwMDNlYXJjaC5zdC5jYWNoZTtcbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0vTWFrZWZpbGUua3ZtIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL01ha2VmaWxlLmt2bVxuaW5kZXggNmZjMzRlOWJmOGUxYi4uYjAxYTM0MDNkNjAyYSAxMDA2NDRcbi0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS9NYWtlZmlsZS5rdm1cbisrKyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS9NYWtlZmlsZS5rdm1cbkBAIC0xNTksNiArMTU5LDcgQEAgVEVTVF9HRU5fUFJPR1NfeDg2ICs9IGhhcmR3YXJlX2Rpc2FibGVfdGVzdFxuIFRFU1RfR0VOX1BST0dTX3g4NiArPSBtbXVfc3RyZXNzX3Rlc3RcbiBURVNUX0dFTl9QUk9HU194ODYgKz0gcnNlcV90ZXN0XG4gVEVTVF9HRU5fUFJPR1NfeDg2ICs9IHN0ZWFsX3RpbWVcbitURVNUX0dFTl9QUk9HU194ODYgKz0gc3RlYWxfdGltZV9jaGFuZ2VfcGlkXG4gVEVTVF9HRU5fUFJPR1NfeDg2ICs9IHN5c3RlbV9jb3VudGVyX29mZnNldF90ZXN0XG4gVEVTVF9HRU5fUFJPR1NfeDg2ICs9IHByZV9mYXVsdF9tZW1vcnlfdGVzdFxuIFxuQEAgLTE5OCw2ICsxOTksNyBAQCBURVNUX0dFTl9QUk9HU19hcm02NCArPSBndWVzdF9tZW1mZF90ZXN0XG4gVEVTVF9HRU5fUFJPR1NfYXJtNjQgKz0gbW11X3N0cmVzc190ZXN0XG4gVEVTVF9HRU5fUFJPR1NfYXJtNjQgKz0gcnNlcV90ZXN0XG4gVEVTVF9HRU5fUFJPR1NfYXJtNjQgKz0gc3RlYWxfdGltZVxuK1RFU1RfR0VOX1BST0dTX2FybTY0ICs9IHN0ZWFsX3RpbWVfY2hhbmdlX3BpZFxuIFxuIFRFU1RfR0VOX1BST0dTX3MzOTAgPSAkKFRFU1RfR0VOX1BST0dTX0NPTU1PTilcbiBURVNUX0dFTl9QUk9HU19zMzkwICs9IHMzOTAvbWVtb3BcbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0vc3RlYWxfdGltZV9jaGFuZ2VfcGlkLmMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0vc3RlYWxfdGltZV9jaGFuZ2VfcGlkLmNcbm5ldyBmaWxlIG1vZGUgMTAwNjQ0XG5pbmRleCAwMDAwMDAwMDAwMDAwLi4xMmQ0OTI3ZDFjMDE3XG4tLS0gL2Rldi9udWxsXG4rKysgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0vc3RlYWxfdGltZV9jaGFuZ2VfcGlkLmNcbkBAIC0wLDAgKzEsMjE2IEBAXG4rLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjBcbisvKlxuKyAqIFZlcmlmeSB0aGF0IEtWTSByZXNldHMgc3RlYWwtdGltZSBhY2NvdW50aW5nIHdoZW4gYSB2Q1BVIGZkIGlzIHJ1biBmcm9tXG4rICogYSBkaWZmZXJlbnQgaG9zdCBQSUQuXG4rICovXG4rXG4rI2luY2x1ZGUgXHUwMDNjcHRocmVhZC5oXHUwMDNlXG4rI2luY2x1ZGUgXHUwMDNjYXNtL2t2bV9wYXJhLmhcdTAwM2VcbisjaW5jbHVkZSBcImt2bV91dGlsLmhcIlxuKyNpbmNsdWRlIFwicHJvY2Vzc29yLmhcIlxuK1xuKyNkZWZpbmUgU1RfR1BBX0JBU0VcdFx0KDEgXHUwMDNjXHUwMDNjIDMwKVxuKyNkZWZpbmUgU1RfU0FORV9ERUxUQV9OU1x0KDFVTEwgXHUwMDNjXHUwMDNjIDYzKVxuK1xuK3N0YXRpYyB2b2lkICpzdF9ndmE7XG4rc3RhdGljIHU2NCBndWVzdF9zdG9sZW5fdGltZTtcbitzdGF0aWMgdTY0IG1haW5fc3RlYWw7XG4rc3RhdGljIHU2NCB0aHJlYWRfc3RlYWw7XG4rXG4rI2lmIGRlZmluZWQoX194ODZfNjRfXylcbitcbisjZGVmaW5lIFNURUFMX1RJTUVfU0laRVx0KChzaXplb2Yoc3RydWN0IGt2bV9zdGVhbF90aW1lKSArIDYzKSBcdTAwMjYgfjYzKVxuK1xuK3N0YXRpYyB2b2lkIGd1ZXN0X2NvZGUodm9pZClcbit7XG4rXHRzdHJ1Y3Qga3ZtX3N0ZWFsX3RpbWUgKnN0ID0gc3RfZ3ZhO1xuK1xuK1x0V1JJVEVfT05DRShndWVzdF9zdG9sZW5fdGltZSwgUkVBRF9PTkNFKHN0LVx1MDAzZXN0ZWFsKSk7XG4rXHRHVUVTVF9TWU5DKDApO1xuK1xuK1x0V1JJVEVfT05DRShndWVzdF9zdG9sZW5fdGltZSwgUkVBRF9PTkNFKHN0LVx1MDAzZXN0ZWFsKSk7XG4rXHRHVUVTVF9TWU5DKDEpO1xuK1xuK1x0V1JJVEVfT05DRShndWVzdF9zdG9sZW5fdGltZSwgUkVBRF9PTkNFKHN0LVx1MDAzZXN0ZWFsKSk7XG4rXHRHVUVTVF9ET05FKCk7XG4rfVxuK1xuK3N0YXRpYyBib29sIHN0ZWFsX3RpbWVfc3VwcG9ydGVkKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSlcbit7XG4rXHRyZXR1cm4ga3ZtX2NwdV9oYXMoWDg2X0ZFQVRVUkVfS1ZNX1NURUFMX1RJTUUpO1xuK31cbitcbitzdGF0aWMgdm9pZCBzdGVhbF90aW1lX2VuYWJsZShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXG4re1xuK1x0dmNwdV9zZXRfbXNyKHZjcHUsIE1TUl9LVk1fU1RFQUxfVElNRSxcbitcdFx0ICAgICAodWxvbmcpc3RfZ3ZhIHwgS1ZNX01TUl9FTkFCTEVEKTtcbit9XG4rXG4rI2VsaWYgZGVmaW5lZChfX2FhcmNoNjRfXylcbitcbisjZGVmaW5lIFNURUFMX1RJTUVfU0laRVx0KChzaXplb2Yoc3RydWN0IHN0X3RpbWUpICsgNjMpIFx1MDAyNiB+NjMpXG4rXG4rI2RlZmluZSBQVl9USU1FX1NUXHQweGM1MDAwMDIxXG4rXG4rc3RydWN0IHN0X3RpbWUge1xuK1x0dTMyIHJldjtcbitcdHUzMiBhdHRyO1xuK1x0dTY0IHN0X3RpbWU7XG4rfTtcbitcbitzdGF0aWMgdm9pZCBndWVzdF9jb2RlKHZvaWQpXG4re1xuK1x0c3RydWN0IGFybV9zbWNjY19yZXMgcmVzO1xuK1x0c3RydWN0IHN0X3RpbWUgKnN0O1xuK1xuK1x0ZG9fc21jY2MoUFZfVElNRV9TVCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgXHUwMDI2cmVzKTtcbitcdEdVRVNUX0FTU0VSVF9ORShyZXMuYTAsIC0xKTtcbitcdEdVRVNUX0FTU0VSVF9FUShyZXMuYTAsICh1bG9uZylzdF9ndmEpO1xuK1xuK1x0c3QgPSAoc3RydWN0IHN0X3RpbWUgKilyZXMuYTA7XG4rXHRXUklURV9PTkNFKGd1ZXN0X3N0b2xlbl90aW1lLCBSRUFEX09OQ0Uoc3QtXHUwMDNlc3RfdGltZSkpO1xuK1x0R1VFU1RfU1lOQygwKTtcbitcbitcdFdSSVRFX09OQ0UoZ3Vlc3Rfc3RvbGVuX3RpbWUsIFJFQURfT05DRShzdC1cdTAwM2VzdF90aW1lKSk7XG4rXHRHVUVTVF9TWU5DKDEpO1xuK1xuK1x0V1JJVEVfT05DRShndWVzdF9zdG9sZW5fdGltZSwgUkVBRF9PTkNFKHN0LVx1MDAzZXN0X3RpbWUpKTtcbitcdEdVRVNUX0RPTkUoKTtcbit9XG4rXG4rc3RhdGljIGJvb2wgc3RlYWxfdGltZV9zdXBwb3J0ZWQoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxuK3tcbitcdHN0cnVjdCBrdm1fZGV2aWNlX2F0dHIgZGV2ID0ge1xuK1x0XHQuZ3JvdXAgPSBLVk1fQVJNX1ZDUFVfUFZUSU1FX0NUUkwsXG4rXHRcdC5hdHRyID0gS1ZNX0FSTV9WQ1BVX1BWVElNRV9JUEEsXG4rXHR9O1xuK1xuK1x0cmV0dXJuICFfX3ZjcHVfaW9jdGwodmNwdSwgS1ZNX0hBU19ERVZJQ0VfQVRUUiwgXHUwMDI2ZGV2KTtcbit9XG4rXG4rc3RhdGljIHZvaWQgc3RlYWxfdGltZV9lbmFibGUoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxuK3tcbitcdHU2NCBzdF9pcGEgPSAodWxvbmcpc3RfZ3ZhO1xuK1x0c3RydWN0IGt2bV9kZXZpY2VfYXR0ciBkZXYgPSB7XG4rXHRcdC5ncm91cCA9IEtWTV9BUk1fVkNQVV9QVlRJTUVfQ1RSTCxcbitcdFx0LmF0dHIgPSBLVk1fQVJNX1ZDUFVfUFZUSU1FX0lQQSxcbitcdFx0LmFkZHIgPSAodTY0KVx1MDAyNnN0X2lwYSxcbitcdH07XG4rXG4rXHR2Y3B1X2lvY3RsKHZjcHUsIEtWTV9TRVRfREVWSUNFX0FUVFIsIFx1MDAyNmRldik7XG4rfVxuK1xuKyNlbHNlXG4rI2Vycm9yIFwic3RlYWxfdGltZV9jaGFuZ2VfcGlkIGlzIG5vdCBpbXBsZW1lbnRlZCBvbiB0aGlzIGFyY2hpdGVjdHVyZVwiXG4rI2VuZGlmXG4rXG4rc3RhdGljIHZvaWQgcnVuX3ZjcHUoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxuK3tcbitcdHN0cnVjdCB1Y2FsbCB1YztcbitcbitcdHZjcHVfcnVuKHZjcHUpO1xuK1xuK1x0c3dpdGNoIChnZXRfdWNhbGwodmNwdSwgXHUwMDI2dWMpKSB7XG4rXHRjYXNlIFVDQUxMX1NZTkM6XG4rXHRjYXNlIFVDQUxMX0RPTkU6XG4rXHRcdGJyZWFrO1xuK1x0Y2FzZSBVQ0FMTF9BQk9SVDpcbitcdFx0UkVQT1JUX0dVRVNUX0FTU0VSVCh1Yyk7XG4rXHRkZWZhdWx0OlxuK1x0XHRURVNUX0FTU0VSVChmYWxzZSwgXCJVbmV4cGVjdGVkIGV4aXQ6ICVzXCIsXG4rXHRcdFx0ICAgIGV4aXRfcmVhc29uX3N0cih2Y3B1LVx1MDAzZXJ1bi1cdTAwM2VleGl0X3JlYXNvbikpO1xuK1x0fVxuK31cbitcbitzdGF0aWMgdm9pZCAqZG9fc3RlYWxfdGltZSh2b2lkICphcmcpXG4re1xuK1x0c3RydWN0IHRpbWVzcGVjIHRzLCBzdG9wO1xuK1xuK1x0Y2xvY2tfZ2V0dGltZShDTE9DS19NT05PVE9OSUMsIFx1MDAyNnRzKTtcbitcdHN0b3AgPSB0aW1lc3BlY19hZGRfbnModHMsIE1JTl9SVU5fREVMQVlfTlMpO1xuK1xuK1x0d2hpbGUgKHRpbWVzcGVjX3RvX25zKHRpbWVzcGVjX3N1Yih0cywgc3RvcCkpIFx1MDAzYyAwKVxuK1x0XHRjbG9ja19nZXR0aW1lKENMT0NLX01PTk9UT05JQywgXHUwMDI2dHMpO1xuK1xuK1x0cmV0dXJuIE5VTEw7XG4rfVxuK1xuK3N0YXRpYyB2b2lkICp2Y3B1X3RocmVhZCh2b2lkICphcmcpXG4re1xuK1x0c3RydWN0IGt2bV92Y3B1ICp2Y3B1ID0gYXJnO1xuK1xuK1x0cnVuX3ZjcHUodmNwdSk7XG4rXHRzeW5jX2dsb2JhbF9mcm9tX2d1ZXN0KHZjcHUtXHUwMDNldm0sIGd1ZXN0X3N0b2xlbl90aW1lKTtcbitcdHRocmVhZF9zdGVhbCA9IGd1ZXN0X3N0b2xlbl90aW1lO1xuK1xuK1x0cmV0dXJuIE5VTEw7XG4rfVxuK1xuK2ludCBtYWluKHZvaWQpXG4re1xuK1x0c3RydWN0IGt2bV92Y3B1ICp2Y3B1O1xuK1x0c3RydWN0IGt2bV92bSAqdm07XG4rXHRwdGhyZWFkX2F0dHJfdCBhdHRyO1xuK1x0cHRocmVhZF90IHRocmVhZDtcbitcdGNwdV9zZXRfdCBjcHVzZXQ7XG4rXHRsb25nIHJ1bl9kZWxheTtcbitcdGxvbmcgcnVuX2RlbGF5X2RlbHRhO1xuK1xuK1x0a3NmdF9wcmludF9oZWFkZXIoKTtcbitcdGtzZnRfc2V0X3BsYW4oMSk7XG4rXG4rXHRDUFVfWkVSTyhcdTAwMjZjcHVzZXQpO1xuK1x0Q1BVX1NFVCgwLCBcdTAwMjZjcHVzZXQpO1xuK1x0cHRocmVhZF9hdHRyX2luaXQoXHUwMDI2YXR0cik7XG4rXHRwdGhyZWFkX2F0dHJfc2V0YWZmaW5pdHlfbnAoXHUwMDI2YXR0ciwgc2l6ZW9mKGNwdXNldCksIFx1MDAyNmNwdXNldCk7XG4rXHRwdGhyZWFkX3NldGFmZmluaXR5X25wKHB0aHJlYWRfc2VsZigpLCBzaXplb2YoY3B1c2V0KSwgXHUwMDI2Y3B1c2V0KTtcbitcbitcdHZtID0gdm1fY3JlYXRlX3dpdGhfb25lX3ZjcHUoXHUwMDI2dmNwdSwgZ3Vlc3RfY29kZSk7XG4rXHR2bV91c2Vyc3BhY2VfbWVtX3JlZ2lvbl9hZGQodm0sIFZNX01FTV9TUkNfQU5PTllNT1VTLFxuK1x0XHRcdFx0ICAgIFNUX0dQQV9CQVNFLCAxLCAxLCAwKTtcbitcdHZpcnRfbWFwKHZtLCBTVF9HUEFfQkFTRSwgU1RfR1BBX0JBU0UsIDEpO1xuK1xuK1x0c3RfZ3ZhID0gKHZvaWQgKilTVF9HUEFfQkFTRTtcbitcdHN5bmNfZ2xvYmFsX3RvX2d1ZXN0KHZtLCBzdF9ndmEpO1xuK1x0bWVtc2V0KGFkZHJfZ3ZhMmh2YSh2bSwgU1RfR1BBX0JBU0UpLCAwLCBTVEVBTF9USU1FX1NJWkUpO1xuK1xuK1x0VEVTVF9SRVFVSVJFKHN0ZWFsX3RpbWVfc3VwcG9ydGVkKHZjcHUpKTtcbitcbitcdHN0ZWFsX3RpbWVfZW5hYmxlKHZjcHUpO1xuK1x0cnVuX3ZjcHUodmNwdSk7XG4rXG4rXHRydW5fZGVsYXkgPSBnZXRfcnVuX2RlbGF5KCk7XG4rXHRwdGhyZWFkX2NyZWF0ZShcdTAwMjZ0aHJlYWQsIFx1MDAyNmF0dHIsIGRvX3N0ZWFsX3RpbWUsIE5VTEwpO1xuK1xuK1x0d2hpbGUgKGdldF9ydW5fZGVsYXkoKSAtIHJ1bl9kZWxheSBcdTAwM2MgTUlOX1JVTl9ERUxBWV9OUylcbitcdFx0c2NoZWRfeWllbGQoKTtcbitcbitcdHB0aHJlYWRfam9pbih0aHJlYWQsIE5VTEwpO1xuK1x0cnVuX2RlbGF5X2RlbHRhID0gZ2V0X3J1bl9kZWxheSgpIC0gcnVuX2RlbGF5O1xuK1x0VEVTVF9BU1NFUlQocnVuX2RlbGF5X2RlbHRhIFx1MDAzZT0gTUlOX1JVTl9ERUxBWV9OUyxcbitcdFx0ICAgIFwiRXhwZWN0ZWQgcnVuX2RlbGF5IFx1MDAzZT0gJWxkLCBnb3QgJWxkXCIsXG4rXHRcdCAgICBNSU5fUlVOX0RFTEFZX05TLCBydW5fZGVsYXlfZGVsdGEpO1xuK1xuK1x0cnVuX3ZjcHUodmNwdSk7XG4rXHRzeW5jX2dsb2JhbF9mcm9tX2d1ZXN0KHZtLCBndWVzdF9zdG9sZW5fdGltZSk7XG4rXHRtYWluX3N0ZWFsID0gZ3Vlc3Rfc3RvbGVuX3RpbWU7XG4rXG4rXHRURVNUX0FTU0VSVChtYWluX3N0ZWFsIFx1MDAzZT0gTUlOX1JVTl9ERUxBWV9OUyxcbitcdFx0ICAgIFwiRXhwZWN0ZWQgc3RlYWwgdGltZSBcdTAwM2U9ICVsZCwgZ290ICVcIlBSSXU2NCxcbitcdFx0ICAgIE1JTl9SVU5fREVMQVlfTlMsIG1haW5fc3RlYWwpO1xuK1xuK1x0cHRocmVhZF9jcmVhdGUoXHUwMDI2dGhyZWFkLCBOVUxMLCB2Y3B1X3RocmVhZCwgdmNwdSk7XG4rXHRwdGhyZWFkX2pvaW4odGhyZWFkLCBOVUxMKTtcbitcbitcdFRFU1RfQVNTRVJUKHRocmVhZF9zdGVhbCBcdTAwM2U9IG1haW5fc3RlYWwgXHUwMDI2XHUwMDI2XG4rXHRcdCAgICB0aHJlYWRfc3RlYWwgLSBtYWluX3N0ZWFsIFx1MDAzYyBTVF9TQU5FX0RFTFRBX05TLFxuK1x0XHQgICAgXCJFeHBlY3RlZCBzYW5lIHN0ZWFsIGFmdGVyIHZDUFUgcGlkIGNoYW5nZTogXCJcbitcdFx0ICAgIFwib2xkPSVcIlBSSXU2NFwiLCBuZXc9JVwiUFJJdTY0LFxuK1x0XHQgICAgbWFpbl9zdGVhbCwgdGhyZWFkX3N0ZWFsKTtcbitcbitcdGtzZnRfdGVzdF9yZXN1bHRfcGFzcyhcInN0ZWFsIHRpbWUgcmVtYWlucyBzYW5lIGFjcm9zcyB2Q1BVIHBpZCBjaGFuZ2VcXG5cIik7XG4rXG4rXHRwdGhyZWFkX2F0dHJfZGVzdHJveShcdTAwMjZhdHRyKTtcbitcdGt2bV92bV9mcmVlKHZtKTtcbitcdGtzZnRfZmluaXNoZWQoKTtcbit9XG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xNlQwNjowMDo0OS4wNDA3NTc0NDJaIiwiU2VxIjoxNSwiTmVzdGluZyI6MywiVHlwZSI6ImxsbSIsIk5hbWUiOiJrbXNhbi1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6ODU5ODAwMDQyNiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipQYXRjaCBBbmFseXNpczogUmVzZXR0aW5nIFN0ZWFsIFRpbWUgQWNjb3VudGluZyBvbiB2Q1BVIFBJRCBDaGFuZ2UqKlxuXG5Pa2F5LCBsZXQgbWUgYnJlYWsgdGhpcyBkb3duLiBUaGlzIHBhdGNoIGlzIGFpbWVkIGF0IGNvcnJlY3RpbmcgS1ZNJ3Mgc3RlYWwgdGltZSBhY2NvdW50aW5nLCBzcGVjaWZpY2FsbHkgd2hlbiBhIHZDUFUgdHJhbnNpdGlvbnMgdG8gYSBuZXcgaG9zdCBQSUQsIHdoaWNoIGhhcHBlbnMgb24gYm90aCBBUk02NCBhbmQgeDg2IGFyY2hpdGVjdHVyZXMuIFRoZSBjb3JlIG9mIHRoZSBjaGFuZ2UgaW52b2x2ZXMgcmVzZXR0aW5nIHRoZSBiYXNlIGZvciB0aGUgc3RlYWwgdGltZSBjYWxjdWxhdGlvbiB0byBwcmV2ZW50IHNrZXcgY2F1c2VkIGJ5IHRoZSB0YXNrLXNwZWNpZmljIG5hdHVyZSBvZiBgY3VycmVudC1cdTAwM2VzY2hlZF9pbmZvLnJ1bl9kZWxheWAuXG5cbk9uIEFSTTY0LCB0aGUgbmV3IGBrdm1fcmVzZXRfc3RvbGVuX3RpbWUodmNwdSlgIGZ1bmN0aW9uIGlzIGludHJvZHVjZWQgYW5kIGNhbGxlZCBmcm9tIGBrdm1fYXJjaF92Y3B1X3J1bl9waWRfY2hhbmdlKHZjcHUpYC4gVGhpcyBmdW5jdGlvbiBzaW1wbHkgc2V0cyBgdmNwdS1cdTAwM2VhcmNoLnN0ZWFsLmxhc3Rfc3RlYWxgIHRvIHRoZSB2YWx1ZSBvZiBgY3VycmVudC1cdTAwM2VzY2hlZF9pbmZvLnJ1bl9kZWxheWAuIFRoZSB4ODYgdmVyc2lvbiBpbXBsZW1lbnRzIGBrdm1fYXJjaF92Y3B1X3J1bl9waWRfY2hhbmdlKHZjcHUpYCBhbmQgZG9lcyB0aGUgc2FtZSBhc3NpZ25tZW50IG9mIGBjdXJyZW50LVx1MDAzZXNjaGVkX2luZm8ucnVuX2RlbGF5YCB0byBgdmNwdS1cdTAwM2VhcmNoLnN0Lmxhc3Rfc3RlYWxgLlxuXG5Ob3csIHRoZSBjcnVjaWFsIHBhcnQ6IEkgbmVlZCB0byBlbnN1cmUgdGhpcyBkb2Vzbid0IGNyZWF0ZSBhbnkgbWVtb3J5IHNhZmV0eSBpc3N1ZXMuIFRoZSB2YXJpYWJsZXMgaW52b2x2ZWQg4oCTIGB2Y3B1LVx1MDAzZWFyY2guc3RlYWwubGFzdF9zdGVhbGAgYW5kIGB2Y3B1LVx1MDAzZWFyY2guc3QubGFzdF9zdGVhbGAgb24gQVJNNjQgYW5kIHg4NiByZXNwZWN0aXZlbHkg4oCTIGFyZSBiZWluZyBhc3NpZ25lZCB0aGUgdmFsdWUgb2YgYGN1cnJlbnQtXHUwMDNlc2NoZWRfaW5mby5ydW5fZGVsYXlgLiAgYGN1cnJlbnQtXHUwMDNlc2NoZWRfaW5mby5ydW5fZGVsYXlgIGlzIGFuIGluaXRpYWxpemVkIGB1bnNpZ25lZCBsb25nIGxvbmdgIChvciBlcXVpdmFsZW50KSByZXByZXNlbnRpbmcgdGhlIHNjaGVkdWxlcidzIHJ1biBkZWxheS4gSXQncyBhIHNjYWxhciB2YWx1ZSwgbm90IGEgY29tcGxleCBzdHJ1Y3R1cmUgb3IgcG90ZW50aWFsbHkgdW5pbml0aWFsaXplZCBjaHVuayBvZiBtZW1vcnkuXG5cbkxvb2tpbmcgYXQgdGhlIGNvZGUsIHRoZXJlIGFyZSBubyBuZXcgc3RydWN0dXJlcyBvciBhbnkgZGF0YSB0aGF0IGlzIHBhc3NlZCB0byB1c2Vyc3BhY2UuIE5vIHVuaW5pdGlhbGl6ZWQgdmFyaWFibGVzIG9yIHN0cnVjdCBmaWVsZHMgYXJlIGJlaW5nIGludHJvZHVjZWQuIFRoZXJlIGFyZSBubyBjb21wbGljYXRlZCBkYXRhIHN0cnVjdHVyZXMgYmVpbmcgYWxsb2NhdGVkIG9yIGludm9sdmVkLiBBbmQgdGhlcmUgYXJlIG5vIGJvdW5kcyBjaGVja3Mgb3IgbGVuZ3RoIG1vZGlmaWNhdGlvbnMgdGhhdCBjb3VsZCBwb3RlbnRpYWxseSByZXZlYWwgdW5pbml0aWFsaXplZCBkYXRhLlxuXG5UaGlzIHBhdGNoIGlzIGVzc2VudGlhbGx5IGp1c3QgcmVzZXR0aW5nIGEgYmFzZSB2YWx1ZSB3aGVuIHRoZSB2Q1BVIHRocmVhZCBzd2l0Y2hlcyBQSURzLCBhbmQgaXQgaXMgYSBzaW1wbGUgc2NhbGFyIGFzc2lnbm1lbnQuIFRoZSB3aG9sZSBwb2ludCBpcyB0byBlbnN1cmUgYWNjdXJhdGUgYWNjb3VudGluZywgYXZvaWRpbmcgYSBsYXJnZSBqdW1wIGluIHN0ZWFsIHRpbWUgZHVlIHRvIHRoZSBwZXItdGFzayBuYXR1cmUgb2YgdGhlIGBydW5fZGVsYXlgIHN0YXRpc3RpYy4gSSBjYW4gY29uZmlkZW50bHkgc2F5IHRoYXQgdGhpcyBwYXRjaCBkb2Vzbid0IGludHJvZHVjZSBhbnkgcmlzayBvZiB1bmluaXRpYWxpemVkIG1lbW9yeSB1c2FnZSBvciBkYXRhIGxlYWtzLiBLTVNBTiBpc24ndCBwYXJ0aWN1bGFybHkgcmVsZXZhbnQgaGVyZSwgYW5kIEtBU0FOIGlzbid0IGxpa2VseSBlaXRoZXIsIGdpdmVuIHRoZSBuYXR1cmUgb2YgdGhlIGNoYW5nZS4gYGN1cnJlbnQtXHUwMDNlc2NoZWRfaW5mby5ydW5fZGVsYXlgIGlzIGEga25vd24sIGluaXRpYWxpemVkIHNjaGVkdWxlci1tYWludGFpbmVkIHZhbHVlLlxuXG5UaGVyZWZvcmUsIEknbSBzZXR0aW5nIGBOZWVkc0tNU0FOPWZhbHNlYCBhbmQgYWRkaW5nIHRoaXMgcmVhc29uaW5nLlxuXG5cbiIsIklucHV0VG9rZW5zIjo1ODcyLCJPdXRwdXRUb2tlbnMiOjE1OSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjUzNywiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE2VDA2OjAwOjU3LjYzODc2MjE5OVoiLCJTZXEiOjE2LCJOZXN0aW5nIjozLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE5MzQ5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggc2ltcGx5IHJlc2V0cyB0aGUgS1ZNIHN0ZWFsIHRpbWUgYWNjb3VudGluZyBiYXNlIChgbGFzdF9zdGVhbGApIHRvIHRoZSBjdXJyZW50IHRhc2sncyBgcnVuX2RlbGF5YCB3aGVuIGEgdkNQVSB0aHJlYWQgY2hhbmdlcyBpdHMgaG9zdCBQSUQuIFRoaXMgaW52b2x2ZXMgcmVhZGluZyBhIGZ1bGx5IGluaXRpYWxpemVkIHNjYWxhciB2YWx1ZSAoYGN1cnJlbnQtXFx1MDAzZXNjaGVkX2luZm8ucnVuX2RlbGF5YCkgZnJvbSB0aGUgc2NoZWR1bGVyIGFuZCBhc3NpZ25pbmcgaXQgdG8gYSBmaWVsZCBpbiB0aGUgdkNQVSBhcmNoaXRlY3R1cmUgc3RydWN0dXJlLiBObyBuZXcgbWVtb3J5IGFsbG9jYXRpb25zIGFyZSBpbnRyb2R1Y2VkLCBubyBzdHJ1Y3R1cmVzIGFyZSBjb3BpZWQgdG8gdXNlciBzcGFjZSwgYW5kIG5vIGNvbXBsZXggZGF0YSBzdHJ1Y3R1cmVzIGFyZSBtYW5pcHVsYXRlZCBpbiBhIHdheSB0aGF0IGNvdWxkIGV4cG9zZSB1bmluaXRpYWxpemVkIG1lbW9yeS4gVGhlcmVmb3JlLCB0aGVyZSBpcyBubyByaXNrIG9mIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHVzZSBvciBpbmZvLWxlYWtzLCBhbmQgYSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGlzIG5vdCByZXF1aXJlZC5cIixcbiAgXCJOZWVkc0tNU0FOXCI6IGZhbHNlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJLTVNBTlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBzaW1wbHkgcmVzZXRzIHRoZSBLVk0gc3RlYWwgdGltZSBhY2NvdW50aW5nIGJhc2UgKGBsYXN0X3N0ZWFsYCkgdG8gdGhlIGN1cnJlbnQgdGFzaydzIGBydW5fZGVsYXlgIHdoZW4gYSB2Q1BVIHRocmVhZCBjaGFuZ2VzIGl0cyBob3N0IFBJRC4gVGhpcyBpbnZvbHZlcyByZWFkaW5nIGEgZnVsbHkgaW5pdGlhbGl6ZWQgc2NhbGFyIHZhbHVlIChgY3VycmVudC1cXHUwMDNlc2NoZWRfaW5mby5ydW5fZGVsYXlgKSBmcm9tIHRoZSBzY2hlZHVsZXIgYW5kIGFzc2lnbmluZyBpdCB0byBhIGZpZWxkIGluIHRoZSB2Q1BVIGFyY2hpdGVjdHVyZSBzdHJ1Y3R1cmUuIE5vIG5ldyBtZW1vcnkgYWxsb2NhdGlvbnMgYXJlIGludHJvZHVjZWQsIG5vIHN0cnVjdHVyZXMgYXJlIGNvcGllZCB0byB1c2VyIHNwYWNlLCBhbmQgbm8gY29tcGxleCBkYXRhIHN0cnVjdHVyZXMgYXJlIG1hbmlwdWxhdGVkIGluIGEgd2F5IHRoYXQgY291bGQgZXhwb3NlIHVuaW5pdGlhbGl6ZWQgbWVtb3J5LiBUaGVyZWZvcmUsIHRoZXJlIGlzIG5vIHJpc2sgb2YgdW5pbml0aWFsaXplZCBtZW1vcnkgdXNlIG9yIGluZm8tbGVha3MsIGFuZCBhIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaXMgbm90IHJlcXVpcmVkLlwiLFxuICBcIk5lZWRzS01TQU5cIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/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-workflows4ss4[0].run-triage(0) Phase: Succeeded StartedAt: 2026-08-16 05:56:43 +0000 UTC FinishedAt: 2026-08-16 06:00:58 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "torvalds", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux", "commit_hash": "3eb40771c00a8488fa6ed2cc1fe203477908bf38", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "KVM" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "torvalds", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux", "commit_hash": "3eb40771c00a8488fa6ed2cc1fe203477908bf38", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "KVM" ], "series_id": "f1dcd184-15f9-4ce7-982a-1cdcad67406e" }, "track": "KASAN", "fuzz": { "focus": [ "kvm" ], "focus_symbols": [ "kvm_arch_vcpu_run_pid_change", "kvm_reset_stolen_time" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db" ], "skip_cover_check": false, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE2IDA2OjAwPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0tWTSYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2t2bV9hcmNoX3ZjcHVfcnVuX3BpZF9jaGFuZ2UmIzM0OywKICAgICYjMzQ7a3ZtX3Jlc2V0X3N0b2xlbl90aW1lJiMzNDsKICBdLAogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggc2ltcGx5IHJlc2V0cyB0aGUgS1ZNIHN0ZWFsIHRpbWUgYWNjb3VudGluZyBiYXNlIChgbGFzdF9zdGVhbGApIHRvIHRoZSBjdXJyZW50IHRhc2smIzM5O3MgYHJ1bl9kZWxheWAgd2hlbiBhIHZDUFUgdGhyZWFkIGNoYW5nZXMgaXRzIGhvc3QgUElELiBUaGlzIGludm9sdmVzIHJlYWRpbmcgYSBmdWxseSBpbml0aWFsaXplZCBzY2FsYXIgdmFsdWUgKGBjdXJyZW50LVx1MDAzZXNjaGVkX2luZm8ucnVuX2RlbGF5YCkgZnJvbSB0aGUgc2NoZWR1bGVyIGFuZCBhc3NpZ25pbmcgaXQgdG8gYSBmaWVsZCBpbiB0aGUgdkNQVSBhcmNoaXRlY3R1cmUgc3RydWN0dXJlLiBObyBuZXcgbWVtb3J5IGFsbG9jYXRpb25zIGFyZSBpbnRyb2R1Y2VkLCBubyBzdHJ1Y3R1cmVzIGFyZSBjb3BpZWQgdG8gdXNlciBzcGFjZSwgYW5kIG5vIGNvbXBsZXggZGF0YSBzdHJ1Y3R1cmVzIGFyZSBtYW5pcHVsYXRlZCBpbiBhIHdheSB0aGF0IGNvdWxkIGV4cG9zZSB1bmluaXRpYWxpemVkIG1lbW9yeS4gVGhlcmVmb3JlLCB0aGVyZSBpcyBubyByaXNrIG9mIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHVzZSBvciBpbmZvLWxlYWtzLCBhbmQgYSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGlzIG5vdCByZXF1aXJlZC4mIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UsCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggaW50cm9kdWNlcyBhIG1lY2hhbmlzbSB0byByZXNldCBzdGVhbC10aW1lIGFjY291bnRpbmcgd2hlbiBhIEtWTSB2Q1BVIGlzIHJ1biBmcm9tIGEgZGlmZmVyZW50IGhvc3QgUElELiBJdCBtb2RpZmllcyBjb3JlIEtWTSBsb2dpYyBmb3IgYm90aCBBUk02NCBhbmQgeDg2IGFyY2hpdGVjdHVyZXMsIGFkZGluZyBga3ZtX2FyY2hfdmNwdV9ydW5fcGlkX2NoYW5nZWAgYW5kIGBrdm1fcmVzZXRfc3RvbGVuX3RpbWVgLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgdG8gcmVhY2hhYmxlIEtWTSBjb2RlIHRoYXQgc2hvdWxkIGJlIGZ1enplZCB0byBlbnN1cmUgaXQgZG9lc24mIzM5O3QgaW50cm9kdWNlIHJlZ3Jlc3Npb25zIG9yIHVuZXhwZWN0ZWQgYmVoYXZpb3IgZHVyaW5nIHZDUFUgdGhyZWFkIG1pZ3JhdGlvbnMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTYgMDY6MDA8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCBhZjNmYzIzNjczMTkzZWVmYTNiMmQ2YWNhMTljNTVmOWIwYzQ4MjhkXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFN1biBBdWcgMTYgMDY6MDA6MTEgMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvYXJjaC9hcm02NC9pbmNsdWRlL2FzbS9rdm1faG9zdC5oIGIvYXJjaC9hcm02NC9pbmNsdWRlL2FzbS9rdm1faG9zdC5oXG5pbmRleCBiYWUyYzRmOTJlZjVjLi40NjA3Zjk1NmU3ODc5IDEwMDY0NFxuLS0tIGEvYXJjaC9hcm02NC9pbmNsdWRlL2FzbS9rdm1faG9zdC5oXG4mIzQzOyYjNDM7JiM0MzsgYi9hcmNoL2FybTY0L2luY2x1ZGUvYXNtL2t2bV9ob3N0LmhcbkBAIC0xMzM5LDYgJiM0MzsxMzM5LDcgQEAgc3RhdGljIGlubGluZSBib29sIGt2bV9hcmNoX3BtaV9pbl9ndWVzdChzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXG4gbG9uZyBrdm1faHlwZXJjYWxsX3B2X2ZlYXR1cmVzKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSk7XG4gZ3BhX3Qga3ZtX2luaXRfc3RvbGVuX3RpbWUoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KTtcbiB2b2lkIGt2bV91cGRhdGVfc3RvbGVuX3RpbWUoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KTtcbiYjNDM7dm9pZCBrdm1fcmVzZXRfc3RvbGVuX3RpbWUoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KTtcbiBcbiBib29sIGt2bV9hcm1fcHZ0aW1lX3N1cHBvcnRlZCh2b2lkKTtcbiBpbnQga3ZtX2FybV9wdnRpbWVfc2V0X2F0dHIoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LFxuZGlmZiAtLWdpdCBhL2FyY2gvYXJtNjQva3ZtL2FybS5jIGIvYXJjaC9hcm02NC9rdm0vYXJtLmNcbmluZGV4IDlhNmM3MmExODY3MjcuLjBmNmU2M2VhY2UyMWYgMTAwNjQ0XG4tLS0gYS9hcmNoL2FybTY0L2t2bS9hcm0uY1xuJiM0MzsmIzQzOyYjNDM7IGIvYXJjaC9hcm02NC9rdm0vYXJtLmNcbkBAIC05MjksNiAmIzQzOzkyOSw4IEBAIGludCBrdm1fYXJjaF92Y3B1X3J1bl9waWRfY2hhbmdlKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSlcbiBcdGlmICgha3ZtX2FybV92Y3B1X2lzX2ZpbmFsaXplZCh2Y3B1KSlcbiBcdFx0cmV0dXJuIC1FUEVSTTtcbiBcbiYjNDM7XHRrdm1fcmVzZXRfc3RvbGVuX3RpbWUodmNwdSk7XG4mIzQzO1xuIFx0aWYgKGxpa2VseSh2Y3B1X2hhc19ydW5fb25jZSh2Y3B1KSkpXG4gXHRcdHJldHVybiAwO1xuIFxuZGlmZiAtLWdpdCBhL2FyY2gvYXJtNjQva3ZtL3B2dGltZS5jIGIvYXJjaC9hcm02NC9rdm0vcHZ0aW1lLmNcbmluZGV4IDRjZWFiYWE0YzMwYmQuLjAwMGJmNDljYzBmZGYgMTAwNjQ0XG4tLS0gYS9hcmNoL2FybTY0L2t2bS9wdnRpbWUuY1xuJiM0MzsmIzQzOyYjNDM7IGIvYXJjaC9hcm02NC9rdm0vcHZ0aW1lLmNcbkBAIC0zMiw2ICYjNDM7MzIsMTEgQEAgdm9pZCBrdm1fdXBkYXRlX3N0b2xlbl90aW1lKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSlcbiBcdHNyY3VfcmVhZF91bmxvY2soXHUwMDI2a3ZtLVx1MDAzZXNyY3UsIGlkeCk7XG4gfVxuIFxuJiM0Mzt2b2lkIGt2bV9yZXNldF9zdG9sZW5fdGltZShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXG4mIzQzO3tcbiYjNDM7XHR2Y3B1LVx1MDAzZWFyY2guc3RlYWwubGFzdF9zdGVhbCA9IGN1cnJlbnQtXHUwMDNlc2NoZWRfaW5mby5ydW5fZGVsYXk7XG4mIzQzO31cbiYjNDM7XG4gbG9uZyBrdm1faHlwZXJjYWxsX3B2X2ZlYXR1cmVzKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSlcbiB7XG4gXHR1MzIgZmVhdHVyZSA9IHNtY2NjX2dldF9hcmcxKHZjcHUpO1xuZGlmZiAtLWdpdCBhL2FyY2gveDg2L2t2bS9LY29uZmlnIGIvYXJjaC94ODYva3ZtL0tjb25maWdcbmluZGV4IDgwMWJmOWU1MjBkYjMuLmI3Y2IyY2VkYTZkOWEgMTAwNjQ0XG4tLS0gYS9hcmNoL3g4Ni9rdm0vS2NvbmZpZ1xuJiM0MzsmIzQzOyYjNDM7IGIvYXJjaC94ODYva3ZtL0tjb25maWdcbkBAIC00MCw2ICYjNDM7NDAsNyBAQCBjb25maWcgS1ZNX1g4NlxuIFx0c2VsZWN0IEhBVkVfS1ZNX01TSVxuIFx0c2VsZWN0IEhBVkVfS1ZNX0NQVV9SRUxBWF9JTlRFUkNFUFRcbiBcdHNlbGVjdCBIQVZFX0tWTV9OT19QT0xMXG4mIzQzO1x0c2VsZWN0IEhBVkVfS1ZNX1ZDUFVfUlVOX1BJRF9DSEFOR0VcbiBcdHNlbGVjdCBWSVJUX1hGRVJfVE9fR1VFU1RfV09SS1xuIFx0c2VsZWN0IEtWTV9HRU5FUklDX0RJUlRZTE9HX1JFQURfUFJPVEVDVFxuIFx0c2VsZWN0IEtWTV9WRklPXG5kaWZmIC0tZ2l0IGEvYXJjaC94ODYva3ZtL3g4Ni5jIGIvYXJjaC94ODYva3ZtL3g4Ni5jXG5pbmRleCA0N2NiOWViYTExM2IxLi4zM2JlNDVlZWMzMmJjIDEwMDY0NFxuLS0tIGEvYXJjaC94ODYva3ZtL3g4Ni5jXG4mIzQzOyYjNDM7JiM0MzsgYi9hcmNoL3g4Ni9rdm0veDg2LmNcbkBAIC0zNzE3LDYgJiM0MzszNzE3LDEzIEBAIHZvaWQga3ZtX3NlcnZpY2VfbG9jYWxfdGxiX2ZsdXNoX3JlcXVlc3RzKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSlcbiB9XG4gRVhQT1JUX1NZTUJPTF9GT1JfS1ZNX0lOVEVSTkFMKGt2bV9zZXJ2aWNlX2xvY2FsX3RsYl9mbHVzaF9yZXF1ZXN0cyk7XG4gXG4mIzQzO2ludCBrdm1fYXJjaF92Y3B1X3J1bl9waWRfY2hhbmdlKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSlcbiYjNDM7e1xuJiM0MztcdHZjcHUtXHUwMDNlYXJjaC5zdC5sYXN0X3N0ZWFsID0gY3VycmVudC1cdTAwM2VzY2hlZF9pbmZvLnJ1bl9kZWxheTtcbiYjNDM7XG4mIzQzO1x0cmV0dXJuIDA7XG4mIzQzO31cbiYjNDM7XG4gc3RhdGljIHZvaWQgcmVjb3JkX3N0ZWFsX3RpbWUoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxuIHtcbiBcdHN0cnVjdCBnZm5fdG9faHZhX2NhY2hlICpnaGMgPSBcdTAwMjZ2Y3B1LVx1MDAzZWFyY2guc3QuY2FjaGU7XG5kaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL01ha2VmaWxlLmt2bSBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS9NYWtlZmlsZS5rdm1cbmluZGV4IDZmYzM0ZTliZjhlMWIuLmIwMWEzNDAzZDYwMmEgMTAwNjQ0XG4tLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0vTWFrZWZpbGUua3ZtXG4mIzQzOyYjNDM7JiM0MzsgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0vTWFrZWZpbGUua3ZtXG5AQCAtMTU5LDYgJiM0MzsxNTksNyBAQCBURVNUX0dFTl9QUk9HU194ODYgJiM0Mzs9IGhhcmR3YXJlX2Rpc2FibGVfdGVzdFxuIFRFU1RfR0VOX1BST0dTX3g4NiAmIzQzOz0gbW11X3N0cmVzc190ZXN0XG4gVEVTVF9HRU5fUFJPR1NfeDg2ICYjNDM7PSByc2VxX3Rlc3RcbiBURVNUX0dFTl9QUk9HU194ODYgJiM0Mzs9IHN0ZWFsX3RpbWVcbiYjNDM7VEVTVF9HRU5fUFJPR1NfeDg2ICYjNDM7PSBzdGVhbF90aW1lX2NoYW5nZV9waWRcbiBURVNUX0dFTl9QUk9HU194ODYgJiM0Mzs9IHN5c3RlbV9jb3VudGVyX29mZnNldF90ZXN0XG4gVEVTVF9HRU5fUFJPR1NfeDg2ICYjNDM7PSBwcmVfZmF1bHRfbWVtb3J5X3Rlc3RcbiBcbkBAIC0xOTgsNiAmIzQzOzE5OSw3IEBAIFRFU1RfR0VOX1BST0dTX2FybTY0ICYjNDM7PSBndWVzdF9tZW1mZF90ZXN0XG4gVEVTVF9HRU5fUFJPR1NfYXJtNjQgJiM0Mzs9IG1tdV9zdHJlc3NfdGVzdFxuIFRFU1RfR0VOX1BST0dTX2FybTY0ICYjNDM7PSByc2VxX3Rlc3RcbiBURVNUX0dFTl9QUk9HU19hcm02NCAmIzQzOz0gc3RlYWxfdGltZVxuJiM0MztURVNUX0dFTl9QUk9HU19hcm02NCAmIzQzOz0gc3RlYWxfdGltZV9jaGFuZ2VfcGlkXG4gXG4gVEVTVF9HRU5fUFJPR1NfczM5MCA9ICQoVEVTVF9HRU5fUFJPR1NfQ09NTU9OKVxuIFRFU1RfR0VOX1BST0dTX3MzOTAgJiM0Mzs9IHMzOTAvbWVtb3BcbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0vc3RlYWxfdGltZV9jaGFuZ2VfcGlkLmMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0vc3RlYWxfdGltZV9jaGFuZ2VfcGlkLmNcbm5ldyBmaWxlIG1vZGUgMTAwNjQ0XG5pbmRleCAwMDAwMDAwMDAwMDAwLi4xMmQ0OTI3ZDFjMDE3XG4tLS0gL2Rldi9udWxsXG4mIzQzOyYjNDM7JiM0MzsgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0vc3RlYWxfdGltZV9jaGFuZ2VfcGlkLmNcbkBAIC0wLDAgJiM0MzsxLDIxNiBAQFxuJiM0MzsvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMFxuJiM0MzsvKlxuJiM0MzsgKiBWZXJpZnkgdGhhdCBLVk0gcmVzZXRzIHN0ZWFsLXRpbWUgYWNjb3VudGluZyB3aGVuIGEgdkNQVSBmZCBpcyBydW4gZnJvbVxuJiM0MzsgKiBhIGRpZmZlcmVudCBob3N0IFBJRC5cbiYjNDM7ICovXG4mIzQzO1xuJiM0MzsjaW5jbHVkZSBcdTAwM2NwdGhyZWFkLmhcdTAwM2VcbiYjNDM7I2luY2x1ZGUgXHUwMDNjYXNtL2t2bV9wYXJhLmhcdTAwM2VcbiYjNDM7I2luY2x1ZGUgXCYjMzQ7a3ZtX3V0aWwuaFwmIzM0O1xuJiM0MzsjaW5jbHVkZSBcJiMzNDtwcm9jZXNzb3IuaFwmIzM0O1xuJiM0MztcbiYjNDM7I2RlZmluZSBTVF9HUEFfQkFTRVx0XHQoMSBcdTAwM2NcdTAwM2MgMzApXG4mIzQzOyNkZWZpbmUgU1RfU0FORV9ERUxUQV9OU1x0KDFVTEwgXHUwMDNjXHUwMDNjIDYzKVxuJiM0MztcbiYjNDM7c3RhdGljIHZvaWQgKnN0X2d2YTtcbiYjNDM7c3RhdGljIHU2NCBndWVzdF9zdG9sZW5fdGltZTtcbiYjNDM7c3RhdGljIHU2NCBtYWluX3N0ZWFsO1xuJiM0MztzdGF0aWMgdTY0IHRocmVhZF9zdGVhbDtcbiYjNDM7XG4mIzQzOyNpZiBkZWZpbmVkKF9feDg2XzY0X18pXG4mIzQzO1xuJiM0MzsjZGVmaW5lIFNURUFMX1RJTUVfU0laRVx0KChzaXplb2Yoc3RydWN0IGt2bV9zdGVhbF90aW1lKSAmIzQzOyA2MykgXHUwMDI2IH42MylcbiYjNDM7XG4mIzQzO3N0YXRpYyB2b2lkIGd1ZXN0X2NvZGUodm9pZClcbiYjNDM7e1xuJiM0MztcdHN0cnVjdCBrdm1fc3RlYWxfdGltZSAqc3QgPSBzdF9ndmE7XG4mIzQzO1xuJiM0MztcdFdSSVRFX09OQ0UoZ3Vlc3Rfc3RvbGVuX3RpbWUsIFJFQURfT05DRShzdC1cdTAwM2VzdGVhbCkpO1xuJiM0MztcdEdVRVNUX1NZTkMoMCk7XG4mIzQzO1xuJiM0MztcdFdSSVRFX09OQ0UoZ3Vlc3Rfc3RvbGVuX3RpbWUsIFJFQURfT05DRShzdC1cdTAwM2VzdGVhbCkpO1xuJiM0MztcdEdVRVNUX1NZTkMoMSk7XG4mIzQzO1xuJiM0MztcdFdSSVRFX09OQ0UoZ3Vlc3Rfc3RvbGVuX3RpbWUsIFJFQURfT05DRShzdC1cdTAwM2VzdGVhbCkpO1xuJiM0MztcdEdVRVNUX0RPTkUoKTtcbiYjNDM7fVxuJiM0MztcbiYjNDM7c3RhdGljIGJvb2wgc3RlYWxfdGltZV9zdXBwb3J0ZWQoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxuJiM0Mzt7XG4mIzQzO1x0cmV0dXJuIGt2bV9jcHVfaGFzKFg4Nl9GRUFUVVJFX0tWTV9TVEVBTF9USU1FKTtcbiYjNDM7fVxuJiM0MztcbiYjNDM7c3RhdGljIHZvaWQgc3RlYWxfdGltZV9lbmFibGUoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxuJiM0Mzt7XG4mIzQzO1x0dmNwdV9zZXRfbXNyKHZjcHUsIE1TUl9LVk1fU1RFQUxfVElNRSxcbiYjNDM7XHRcdCAgICAgKHVsb25nKXN0X2d2YSB8IEtWTV9NU1JfRU5BQkxFRCk7XG4mIzQzO31cbiYjNDM7XG4mIzQzOyNlbGlmIGRlZmluZWQoX19hYXJjaDY0X18pXG4mIzQzO1xuJiM0MzsjZGVmaW5lIFNURUFMX1RJTUVfU0laRVx0KChzaXplb2Yoc3RydWN0IHN0X3RpbWUpICYjNDM7IDYzKSBcdTAwMjYgfjYzKVxuJiM0MztcbiYjNDM7I2RlZmluZSBQVl9USU1FX1NUXHQweGM1MDAwMDIxXG4mIzQzO1xuJiM0MztzdHJ1Y3Qgc3RfdGltZSB7XG4mIzQzO1x0dTMyIHJldjtcbiYjNDM7XHR1MzIgYXR0cjtcbiYjNDM7XHR1NjQgc3RfdGltZTtcbiYjNDM7fTtcbiYjNDM7XG4mIzQzO3N0YXRpYyB2b2lkIGd1ZXN0X2NvZGUodm9pZClcbiYjNDM7e1xuJiM0MztcdHN0cnVjdCBhcm1fc21jY2NfcmVzIHJlcztcbiYjNDM7XHRzdHJ1Y3Qgc3RfdGltZSAqc3Q7XG4mIzQzO1xuJiM0MztcdGRvX3NtY2NjKFBWX1RJTUVfU1QsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIFx1MDAyNnJlcyk7XG4mIzQzO1x0R1VFU1RfQVNTRVJUX05FKHJlcy5hMCwgLTEpO1xuJiM0MztcdEdVRVNUX0FTU0VSVF9FUShyZXMuYTAsICh1bG9uZylzdF9ndmEpO1xuJiM0MztcbiYjNDM7XHRzdCA9IChzdHJ1Y3Qgc3RfdGltZSAqKXJlcy5hMDtcbiYjNDM7XHRXUklURV9PTkNFKGd1ZXN0X3N0b2xlbl90aW1lLCBSRUFEX09OQ0Uoc3QtXHUwMDNlc3RfdGltZSkpO1xuJiM0MztcdEdVRVNUX1NZTkMoMCk7XG4mIzQzO1xuJiM0MztcdFdSSVRFX09OQ0UoZ3Vlc3Rfc3RvbGVuX3RpbWUsIFJFQURfT05DRShzdC1cdTAwM2VzdF90aW1lKSk7XG4mIzQzO1x0R1VFU1RfU1lOQygxKTtcbiYjNDM7XG4mIzQzO1x0V1JJVEVfT05DRShndWVzdF9zdG9sZW5fdGltZSwgUkVBRF9PTkNFKHN0LVx1MDAzZXN0X3RpbWUpKTtcbiYjNDM7XHRHVUVTVF9ET05FKCk7XG4mIzQzO31cbiYjNDM7XG4mIzQzO3N0YXRpYyBib29sIHN0ZWFsX3RpbWVfc3VwcG9ydGVkKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSlcbiYjNDM7e1xuJiM0MztcdHN0cnVjdCBrdm1fZGV2aWNlX2F0dHIgZGV2ID0ge1xuJiM0MztcdFx0Lmdyb3VwID0gS1ZNX0FSTV9WQ1BVX1BWVElNRV9DVFJMLFxuJiM0MztcdFx0LmF0dHIgPSBLVk1fQVJNX1ZDUFVfUFZUSU1FX0lQQSxcbiYjNDM7XHR9O1xuJiM0MztcbiYjNDM7XHRyZXR1cm4gIV9fdmNwdV9pb2N0bCh2Y3B1LCBLVk1fSEFTX0RFVklDRV9BVFRSLCBcdTAwMjZkZXYpO1xuJiM0Mzt9XG4mIzQzO1xuJiM0MztzdGF0aWMgdm9pZCBzdGVhbF90aW1lX2VuYWJsZShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXG4mIzQzO3tcbiYjNDM7XHR1NjQgc3RfaXBhID0gKHVsb25nKXN0X2d2YTtcbiYjNDM7XHRzdHJ1Y3Qga3ZtX2RldmljZV9hdHRyIGRldiA9IHtcbiYjNDM7XHRcdC5ncm91cCA9IEtWTV9BUk1fVkNQVV9QVlRJTUVfQ1RSTCxcbiYjNDM7XHRcdC5hdHRyID0gS1ZNX0FSTV9WQ1BVX1BWVElNRV9JUEEsXG4mIzQzO1x0XHQuYWRkciA9ICh1NjQpXHUwMDI2c3RfaXBhLFxuJiM0MztcdH07XG4mIzQzO1xuJiM0MztcdHZjcHVfaW9jdGwodmNwdSwgS1ZNX1NFVF9ERVZJQ0VfQVRUUiwgXHUwMDI2ZGV2KTtcbiYjNDM7fVxuJiM0MztcbiYjNDM7I2Vsc2VcbiYjNDM7I2Vycm9yIFwmIzM0O3N0ZWFsX3RpbWVfY2hhbmdlX3BpZCBpcyBub3QgaW1wbGVtZW50ZWQgb24gdGhpcyBhcmNoaXRlY3R1cmVcJiMzNDtcbiYjNDM7I2VuZGlmXG4mIzQzO1xuJiM0MztzdGF0aWMgdm9pZCBydW5fdmNwdShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXG4mIzQzO3tcbiYjNDM7XHRzdHJ1Y3QgdWNhbGwgdWM7XG4mIzQzO1xuJiM0MztcdHZjcHVfcnVuKHZjcHUpO1xuJiM0MztcbiYjNDM7XHRzd2l0Y2ggKGdldF91Y2FsbCh2Y3B1LCBcdTAwMjZ1YykpIHtcbiYjNDM7XHRjYXNlIFVDQUxMX1NZTkM6XG4mIzQzO1x0Y2FzZSBVQ0FMTF9ET05FOlxuJiM0MztcdFx0YnJlYWs7XG4mIzQzO1x0Y2FzZSBVQ0FMTF9BQk9SVDpcbiYjNDM7XHRcdFJFUE9SVF9HVUVTVF9BU1NFUlQodWMpO1xuJiM0MztcdGRlZmF1bHQ6XG4mIzQzO1x0XHRURVNUX0FTU0VSVChmYWxzZSwgXCYjMzQ7VW5leHBlY3RlZCBleGl0OiAlc1wmIzM0OyxcbiYjNDM7XHRcdFx0ICAgIGV4aXRfcmVhc29uX3N0cih2Y3B1LVx1MDAzZXJ1bi1cdTAwM2VleGl0X3JlYXNvbikpO1xuJiM0MztcdH1cbiYjNDM7fVxuJiM0MztcbiYjNDM7c3RhdGljIHZvaWQgKmRvX3N0ZWFsX3RpbWUodm9pZCAqYXJnKVxuJiM0Mzt7XG4mIzQzO1x0c3RydWN0IHRpbWVzcGVjIHRzLCBzdG9wO1xuJiM0MztcbiYjNDM7XHRjbG9ja19nZXR0aW1lKENMT0NLX01PTk9UT05JQywgXHUwMDI2dHMpO1xuJiM0MztcdHN0b3AgPSB0aW1lc3BlY19hZGRfbnModHMsIE1JTl9SVU5fREVMQVlfTlMpO1xuJiM0MztcbiYjNDM7XHR3aGlsZSAodGltZXNwZWNfdG9fbnModGltZXNwZWNfc3ViKHRzLCBzdG9wKSkgXHUwMDNjIDApXG4mIzQzO1x0XHRjbG9ja19nZXR0aW1lKENMT0NLX01PTk9UT05JQywgXHUwMDI2dHMpO1xuJiM0MztcbiYjNDM7XHRyZXR1cm4gTlVMTDtcbiYjNDM7fVxuJiM0MztcbiYjNDM7c3RhdGljIHZvaWQgKnZjcHVfdGhyZWFkKHZvaWQgKmFyZylcbiYjNDM7e1xuJiM0MztcdHN0cnVjdCBrdm1fdmNwdSAqdmNwdSA9IGFyZztcbiYjNDM7XG4mIzQzO1x0cnVuX3ZjcHUodmNwdSk7XG4mIzQzO1x0c3luY19nbG9iYWxfZnJvbV9ndWVzdCh2Y3B1LVx1MDAzZXZtLCBndWVzdF9zdG9sZW5fdGltZSk7XG4mIzQzO1x0dGhyZWFkX3N0ZWFsID0gZ3Vlc3Rfc3RvbGVuX3RpbWU7XG4mIzQzO1xuJiM0MztcdHJldHVybiBOVUxMO1xuJiM0Mzt9XG4mIzQzO1xuJiM0MztpbnQgbWFpbih2b2lkKVxuJiM0Mzt7XG4mIzQzO1x0c3RydWN0IGt2bV92Y3B1ICp2Y3B1O1xuJiM0MztcdHN0cnVjdCBrdm1fdm0gKnZtO1xuJiM0MztcdHB0aHJlYWRfYXR0cl90IGF0dHI7XG4mIzQzO1x0cHRocmVhZF90IHRocmVhZDtcbiYjNDM7XHRjcHVfc2V0X3QgY3B1c2V0O1xuJiM0MztcdGxvbmcgcnVuX2RlbGF5O1xuJiM0MztcdGxvbmcgcnVuX2RlbGF5X2RlbHRhO1xuJiM0MztcbiYjNDM7XHRrc2Z0X3ByaW50X2hlYWRlcigpO1xuJiM0MztcdGtzZnRfc2V0X3BsYW4oMSk7XG4mIzQzO1xuJiM0MztcdENQVV9aRVJPKFx1MDAyNmNwdXNldCk7XG4mIzQzO1x0Q1BVX1NFVCgwLCBcdTAwMjZjcHVzZXQpO1xuJiM0MztcdHB0aHJlYWRfYXR0cl9pbml0KFx1MDAyNmF0dHIpO1xuJiM0MztcdHB0aHJlYWRfYXR0cl9zZXRhZmZpbml0eV9ucChcdTAwMjZhdHRyLCBzaXplb2YoY3B1c2V0KSwgXHUwMDI2Y3B1c2V0KTtcbiYjNDM7XHRwdGhyZWFkX3NldGFmZmluaXR5X25wKHB0aHJlYWRfc2VsZigpLCBzaXplb2YoY3B1c2V0KSwgXHUwMDI2Y3B1c2V0KTtcbiYjNDM7XG4mIzQzO1x0dm0gPSB2bV9jcmVhdGVfd2l0aF9vbmVfdmNwdShcdTAwMjZ2Y3B1LCBndWVzdF9jb2RlKTtcbiYjNDM7XHR2bV91c2Vyc3BhY2VfbWVtX3JlZ2lvbl9hZGQodm0sIFZNX01FTV9TUkNfQU5PTllNT1VTLFxuJiM0MztcdFx0XHRcdCAgICBTVF9HUEFfQkFTRSwgMSwgMSwgMCk7XG4mIzQzO1x0dmlydF9tYXAodm0sIFNUX0dQQV9CQVNFLCBTVF9HUEFfQkFTRSwgMSk7XG4mIzQzO1xuJiM0MztcdHN0X2d2YSA9ICh2b2lkICopU1RfR1BBX0JBU0U7XG4mIzQzO1x0c3luY19nbG9iYWxfdG9fZ3Vlc3Qodm0sIHN0X2d2YSk7XG4mIzQzO1x0bWVtc2V0KGFkZHJfZ3ZhMmh2YSh2bSwgU1RfR1BBX0JBU0UpLCAwLCBTVEVBTF9USU1FX1NJWkUpO1xuJiM0MztcbiYjNDM7XHRURVNUX1JFUVVJUkUoc3RlYWxfdGltZV9zdXBwb3J0ZWQodmNwdSkpO1xuJiM0MztcbiYjNDM7XHRzdGVhbF90aW1lX2VuYWJsZSh2Y3B1KTtcbiYjNDM7XHRydW5fdmNwdSh2Y3B1KTtcbiYjNDM7XG4mIzQzO1x0cnVuX2RlbGF5ID0gZ2V0X3J1bl9kZWxheSgpO1xuJiM0MztcdHB0aHJlYWRfY3JlYXRlKFx1MDAyNnRocmVhZCwgXHUwMDI2YXR0ciwgZG9fc3RlYWxfdGltZSwgTlVMTCk7XG4mIzQzO1xuJiM0MztcdHdoaWxlIChnZXRfcnVuX2RlbGF5KCkgLSBydW5fZGVsYXkgXHUwMDNjIE1JTl9SVU5fREVMQVlfTlMpXG4mIzQzO1x0XHRzY2hlZF95aWVsZCgpO1xuJiM0MztcbiYjNDM7XHRwdGhyZWFkX2pvaW4odGhyZWFkLCBOVUxMKTtcbiYjNDM7XHRydW5fZGVsYXlfZGVsdGEgPSBnZXRfcnVuX2RlbGF5KCkgLSBydW5fZGVsYXk7XG4mIzQzO1x0VEVTVF9BU1NFUlQocnVuX2RlbGF5X2RlbHRhIFx1MDAzZT0gTUlOX1JVTl9ERUxBWV9OUyxcbiYjNDM7XHRcdCAgICBcJiMzNDtFeHBlY3RlZCBydW5fZGVsYXkgXHUwMDNlPSAlbGQsIGdvdCAlbGRcJiMzNDssXG4mIzQzO1x0XHQgICAgTUlOX1JVTl9ERUxBWV9OUywgcnVuX2RlbGF5X2RlbHRhKTtcbiYjNDM7XG4mIzQzO1x0cnVuX3ZjcHUodmNwdSk7XG4mIzQzO1x0c3luY19nbG9iYWxfZnJvbV9ndWVzdCh2bSwgZ3Vlc3Rfc3RvbGVuX3RpbWUpO1xuJiM0MztcdG1haW5fc3RlYWwgPSBndWVzdF9zdG9sZW5fdGltZTtcbiYjNDM7XG4mIzQzO1x0VEVTVF9BU1NFUlQobWFpbl9zdGVhbCBcdTAwM2U9IE1JTl9SVU5fREVMQVlfTlMsXG4mIzQzO1x0XHQgICAgXCYjMzQ7RXhwZWN0ZWQgc3RlYWwgdGltZSBcdTAwM2U9ICVsZCwgZ290ICVcJiMzNDtQUkl1NjQsXG4mIzQzO1x0XHQgICAgTUlOX1JVTl9ERUxBWV9OUywgbWFpbl9zdGVhbCk7XG4mIzQzO1xuJiM0MztcdHB0aHJlYWRfY3JlYXRlKFx1MDAyNnRocmVhZCwgTlVMTCwgdmNwdV90aHJlYWQsIHZjcHUpO1xuJiM0MztcdHB0aHJlYWRfam9pbih0aHJlYWQsIE5VTEwpO1xuJiM0MztcbiYjNDM7XHRURVNUX0FTU0VSVCh0aHJlYWRfc3RlYWwgXHUwMDNlPSBtYWluX3N0ZWFsIFx1MDAyNlx1MDAyNlxuJiM0MztcdFx0ICAgIHRocmVhZF9zdGVhbCAtIG1haW5fc3RlYWwgXHUwMDNjIFNUX1NBTkVfREVMVEFfTlMsXG4mIzQzO1x0XHQgICAgXCYjMzQ7RXhwZWN0ZWQgc2FuZSBzdGVhbCBhZnRlciB2Q1BVIHBpZCBjaGFuZ2U6IFwmIzM0O1xuJiM0MztcdFx0ICAgIFwmIzM0O29sZD0lXCYjMzQ7UFJJdTY0XCYjMzQ7LCBuZXc9JVwmIzM0O1BSSXU2NCxcbiYjNDM7XHRcdCAgICBtYWluX3N0ZWFsLCB0aHJlYWRfc3RlYWwpO1xuJiM0MztcbiYjNDM7XHRrc2Z0X3Rlc3RfcmVzdWx0X3Bhc3MoXCYjMzQ7c3RlYWwgdGltZSByZW1haW5zIHNhbmUgYWNyb3NzIHZDUFUgcGlkIGNoYW5nZVxcblwmIzM0Oyk7XG4mIzQzO1xuJiM0MztcdHB0aHJlYWRfYXR0cl9kZXN0cm95KFx1MDAyNmF0dHIpO1xuJiM0MztcdGt2bV92bV9mcmVlKHZtKTtcbiYjNDM7XHRrc2Z0X2ZpbmlzaGVkKCk7XG4mIzQzO31cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xNiAwNjowMDwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5iZXN0LWV4cGVuc2l2ZTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7S1ZNJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7a3ZtX2FyY2hfdmNwdV9ydW5fcGlkX2NoYW5nZSYjMzQ7LAogICAgJiMzNDtrdm1fcmVzZXRfc3RvbGVuX3RpbWUmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggaW50cm9kdWNlcyBhIG1lY2hhbmlzbSB0byByZXNldCBzdGVhbC10aW1lIGFjY291bnRpbmcgd2hlbiBhIEtWTSB2Q1BVIGlzIHJ1biBmcm9tIGEgZGlmZmVyZW50IGhvc3QgUElELiBJdCBtb2RpZmllcyBjb3JlIEtWTSBsb2dpYyBmb3IgYm90aCBBUk02NCBhbmQgeDg2IGFyY2hpdGVjdHVyZXMsIGFkZGluZyBga3ZtX2FyY2hfdmNwdV9ydW5fcGlkX2NoYW5nZWAgYW5kIGBrdm1fcmVzZXRfc3RvbGVuX3RpbWVgLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgdG8gcmVhY2hhYmxlIEtWTSBjb2RlIHRoYXQgc2hvdWxkIGJlIGZ1enplZCB0byBlbnN1cmUgaXQgZG9lc24mIzM5O3QgaW50cm9kdWNlIHJlZ3Jlc3Npb25zIG9yIHVuZXhwZWN0ZWQgYmVoYXZpb3IgZHVyaW5nIHZDUFUgdGhyZWFkIG1pZ3JhdGlvbnMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZQppZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5CnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuCgpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOgotIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuCi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuCi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LgotIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwKICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuCi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsCiAgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuCi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSkKICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuCgpJZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoCnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLgoKV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086CjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuCiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLgogICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnMKICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuCjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLgogICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCiAgIEFsc28gY2hlY2sgJiMzNDtkZXBlbmRzIG9uJiMzNDsgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzCiAgIG5lZWRlZCBmb3IgS2J1aWxkIHRvIGNvbXBpbGUgdGhlIGNvZGUgc3RhdGljYWxseSBpbnRvIHZtbGludXguIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncwogICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCBhZjNmYzIzNjczMTkzZWVmYTNiMmQ2YWNhMTljNTVmOWIwYzQ4MjhkCkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIFN1biBBdWcgMTYgMDY6MDA6MTEgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9hcmNoL2FybTY0L2luY2x1ZGUvYXNtL2t2bV9ob3N0LmggYi9hcmNoL2FybTY0L2luY2x1ZGUvYXNtL2t2bV9ob3N0LmgKaW5kZXggYmFlMmM0ZjkyZWY1Yy4uNDYwN2Y5NTZlNzg3OSAxMDA2NDQKLS0tIGEvYXJjaC9hcm02NC9pbmNsdWRlL2FzbS9rdm1faG9zdC5oCiYjNDM7JiM0MzsmIzQzOyBiL2FyY2gvYXJtNjQvaW5jbHVkZS9hc20va3ZtX2hvc3QuaApAQCAtMTMzOSw2ICYjNDM7MTMzOSw3IEBAIHN0YXRpYyBpbmxpbmUgYm9vbCBrdm1fYXJjaF9wbWlfaW5fZ3Vlc3Qoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KQogbG9uZyBrdm1faHlwZXJjYWxsX3B2X2ZlYXR1cmVzKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSk7CiBncGFfdCBrdm1faW5pdF9zdG9sZW5fdGltZShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpOwogdm9pZCBrdm1fdXBkYXRlX3N0b2xlbl90aW1lKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSk7CiYjNDM7dm9pZCBrdm1fcmVzZXRfc3RvbGVuX3RpbWUoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KTsKIAogYm9vbCBrdm1fYXJtX3B2dGltZV9zdXBwb3J0ZWQodm9pZCk7CiBpbnQga3ZtX2FybV9wdnRpbWVfc2V0X2F0dHIoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LApkaWZmIC0tZ2l0IGEvYXJjaC9hcm02NC9rdm0vYXJtLmMgYi9hcmNoL2FybTY0L2t2bS9hcm0uYwppbmRleCA5YTZjNzJhMTg2NzI3Li4wZjZlNjNlYWNlMjFmIDEwMDY0NAotLS0gYS9hcmNoL2FybTY0L2t2bS9hcm0uYwomIzQzOyYjNDM7JiM0MzsgYi9hcmNoL2FybTY0L2t2bS9hcm0uYwpAQCAtOTI5LDYgJiM0Mzs5MjksOCBAQCBpbnQga3ZtX2FyY2hfdmNwdV9ydW5fcGlkX2NoYW5nZShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpCiAJaWYgKCFrdm1fYXJtX3ZjcHVfaXNfZmluYWxpemVkKHZjcHUpKQogCQlyZXR1cm4gLUVQRVJNOwogCiYjNDM7CWt2bV9yZXNldF9zdG9sZW5fdGltZSh2Y3B1KTsKJiM0MzsKIAlpZiAobGlrZWx5KHZjcHVfaGFzX3J1bl9vbmNlKHZjcHUpKSkKIAkJcmV0dXJuIDA7CiAKZGlmZiAtLWdpdCBhL2FyY2gvYXJtNjQva3ZtL3B2dGltZS5jIGIvYXJjaC9hcm02NC9rdm0vcHZ0aW1lLmMKaW5kZXggNGNlYWJhYTRjMzBiZC4uMDAwYmY0OWNjMGZkZiAxMDA2NDQKLS0tIGEvYXJjaC9hcm02NC9rdm0vcHZ0aW1lLmMKJiM0MzsmIzQzOyYjNDM7IGIvYXJjaC9hcm02NC9rdm0vcHZ0aW1lLmMKQEAgLTMyLDYgJiM0MzszMiwxMSBAQCB2b2lkIGt2bV91cGRhdGVfc3RvbGVuX3RpbWUoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KQogCXNyY3VfcmVhZF91bmxvY2soJmFtcDtrdm0tJmd0O3NyY3UsIGlkeCk7CiB9CiAKJiM0Mzt2b2lkIGt2bV9yZXNldF9zdG9sZW5fdGltZShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpCiYjNDM7ewomIzQzOwl2Y3B1LSZndDthcmNoLnN0ZWFsLmxhc3Rfc3RlYWwgPSBjdXJyZW50LSZndDtzY2hlZF9pbmZvLnJ1bl9kZWxheTsKJiM0Mzt9CiYjNDM7CiBsb25nIGt2bV9oeXBlcmNhbGxfcHZfZmVhdHVyZXMoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KQogewogCXUzMiBmZWF0dXJlID0gc21jY2NfZ2V0X2FyZzEodmNwdSk7CmRpZmYgLS1naXQgYS9hcmNoL3g4Ni9rdm0vS2NvbmZpZyBiL2FyY2gveDg2L2t2bS9LY29uZmlnCmluZGV4IDgwMWJmOWU1MjBkYjMuLmI3Y2IyY2VkYTZkOWEgMTAwNjQ0Ci0tLSBhL2FyY2gveDg2L2t2bS9LY29uZmlnCiYjNDM7JiM0MzsmIzQzOyBiL2FyY2gveDg2L2t2bS9LY29uZmlnCkBAIC00MCw2ICYjNDM7NDAsNyBAQCBjb25maWcgS1ZNX1g4NgogCXNlbGVjdCBIQVZFX0tWTV9NU0kKIAlzZWxlY3QgSEFWRV9LVk1fQ1BVX1JFTEFYX0lOVEVSQ0VQVAogCXNlbGVjdCBIQVZFX0tWTV9OT19QT0xMCiYjNDM7CXNlbGVjdCBIQVZFX0tWTV9WQ1BVX1JVTl9QSURfQ0hBTkdFCiAJc2VsZWN0IFZJUlRfWEZFUl9UT19HVUVTVF9XT1JLCiAJc2VsZWN0IEtWTV9HRU5FUklDX0RJUlRZTE9HX1JFQURfUFJPVEVDVAogCXNlbGVjdCBLVk1fVkZJTwpkaWZmIC0tZ2l0IGEvYXJjaC94ODYva3ZtL3g4Ni5jIGIvYXJjaC94ODYva3ZtL3g4Ni5jCmluZGV4IDQ3Y2I5ZWJhMTEzYjEuLjMzYmU0NWVlYzMyYmMgMTAwNjQ0Ci0tLSBhL2FyY2gveDg2L2t2bS94ODYuYwomIzQzOyYjNDM7JiM0MzsgYi9hcmNoL3g4Ni9rdm0veDg2LmMKQEAgLTM3MTcsNiAmIzQzOzM3MTcsMTMgQEAgdm9pZCBrdm1fc2VydmljZV9sb2NhbF90bGJfZmx1c2hfcmVxdWVzdHMoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KQogfQogRVhQT1JUX1NZTUJPTF9GT1JfS1ZNX0lOVEVSTkFMKGt2bV9zZXJ2aWNlX2xvY2FsX3RsYl9mbHVzaF9yZXF1ZXN0cyk7CiAKJiM0MztpbnQga3ZtX2FyY2hfdmNwdV9ydW5fcGlkX2NoYW5nZShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpCiYjNDM7ewomIzQzOwl2Y3B1LSZndDthcmNoLnN0Lmxhc3Rfc3RlYWwgPSBjdXJyZW50LSZndDtzY2hlZF9pbmZvLnJ1bl9kZWxheTsKJiM0MzsKJiM0MzsJcmV0dXJuIDA7CiYjNDM7fQomIzQzOwogc3RhdGljIHZvaWQgcmVjb3JkX3N0ZWFsX3RpbWUoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KQogewogCXN0cnVjdCBnZm5fdG9faHZhX2NhY2hlICpnaGMgPSAmYW1wO3ZjcHUtJmd0O2FyY2guc3QuY2FjaGU7CmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0vTWFrZWZpbGUua3ZtIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL01ha2VmaWxlLmt2bQppbmRleCA2ZmMzNGU5YmY4ZTFiLi5iMDFhMzQwM2Q2MDJhIDEwMDY0NAotLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0vTWFrZWZpbGUua3ZtCiYjNDM7JiM0MzsmIzQzOyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS9NYWtlZmlsZS5rdm0KQEAgLTE1OSw2ICYjNDM7MTU5LDcgQEAgVEVTVF9HRU5fUFJPR1NfeDg2ICYjNDM7PSBoYXJkd2FyZV9kaXNhYmxlX3Rlc3QKIFRFU1RfR0VOX1BST0dTX3g4NiAmIzQzOz0gbW11X3N0cmVzc190ZXN0CiBURVNUX0dFTl9QUk9HU194ODYgJiM0Mzs9IHJzZXFfdGVzdAogVEVTVF9HRU5fUFJPR1NfeDg2ICYjNDM7PSBzdGVhbF90aW1lCiYjNDM7VEVTVF9HRU5fUFJPR1NfeDg2ICYjNDM7PSBzdGVhbF90aW1lX2NoYW5nZV9waWQKIFRFU1RfR0VOX1BST0dTX3g4NiAmIzQzOz0gc3lzdGVtX2NvdW50ZXJfb2Zmc2V0X3Rlc3QKIFRFU1RfR0VOX1BST0dTX3g4NiAmIzQzOz0gcHJlX2ZhdWx0X21lbW9yeV90ZXN0CiAKQEAgLTE5OCw2ICYjNDM7MTk5LDcgQEAgVEVTVF9HRU5fUFJPR1NfYXJtNjQgJiM0Mzs9IGd1ZXN0X21lbWZkX3Rlc3QKIFRFU1RfR0VOX1BST0dTX2FybTY0ICYjNDM7PSBtbXVfc3RyZXNzX3Rlc3QKIFRFU1RfR0VOX1BST0dTX2FybTY0ICYjNDM7PSByc2VxX3Rlc3QKIFRFU1RfR0VOX1BST0dTX2FybTY0ICYjNDM7PSBzdGVhbF90aW1lCiYjNDM7VEVTVF9HRU5fUFJPR1NfYXJtNjQgJiM0Mzs9IHN0ZWFsX3RpbWVfY2hhbmdlX3BpZAogCiBURVNUX0dFTl9QUk9HU19zMzkwID0gJChURVNUX0dFTl9QUk9HU19DT01NT04pCiBURVNUX0dFTl9QUk9HU19zMzkwICYjNDM7PSBzMzkwL21lbW9wCmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0vc3RlYWxfdGltZV9jaGFuZ2VfcGlkLmMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0vc3RlYWxfdGltZV9jaGFuZ2VfcGlkLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMC4uMTJkNDkyN2QxYzAxNwotLS0gL2Rldi9udWxsCiYjNDM7JiM0MzsmIzQzOyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS9zdGVhbF90aW1lX2NoYW5nZV9waWQuYwpAQCAtMCwwICYjNDM7MSwyMTYgQEAKJiM0MzsvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMAomIzQzOy8qCiYjNDM7ICogVmVyaWZ5IHRoYXQgS1ZNIHJlc2V0cyBzdGVhbC10aW1lIGFjY291bnRpbmcgd2hlbiBhIHZDUFUgZmQgaXMgcnVuIGZyb20KJiM0MzsgKiBhIGRpZmZlcmVudCBob3N0IFBJRC4KJiM0MzsgKi8KJiM0MzsKJiM0MzsjaW5jbHVkZSAmbHQ7cHRocmVhZC5oJmd0OwomIzQzOyNpbmNsdWRlICZsdDthc20va3ZtX3BhcmEuaCZndDsKJiM0MzsjaW5jbHVkZSAmIzM0O2t2bV91dGlsLmgmIzM0OwomIzQzOyNpbmNsdWRlICYjMzQ7cHJvY2Vzc29yLmgmIzM0OwomIzQzOwomIzQzOyNkZWZpbmUgU1RfR1BBX0JBU0UJCSgxICZsdDsmbHQ7IDMwKQomIzQzOyNkZWZpbmUgU1RfU0FORV9ERUxUQV9OUwkoMVVMTCAmbHQ7Jmx0OyA2MykKJiM0MzsKJiM0MztzdGF0aWMgdm9pZCAqc3RfZ3ZhOwomIzQzO3N0YXRpYyB1NjQgZ3Vlc3Rfc3RvbGVuX3RpbWU7CiYjNDM7c3RhdGljIHU2NCBtYWluX3N0ZWFsOwomIzQzO3N0YXRpYyB1NjQgdGhyZWFkX3N0ZWFsOwomIzQzOwomIzQzOyNpZiBkZWZpbmVkKF9feDg2XzY0X18pCiYjNDM7CiYjNDM7I2RlZmluZSBTVEVBTF9USU1FX1NJWkUJKChzaXplb2Yoc3RydWN0IGt2bV9zdGVhbF90aW1lKSAmIzQzOyA2MykgJmFtcDsgfjYzKQomIzQzOwomIzQzO3N0YXRpYyB2b2lkIGd1ZXN0X2NvZGUodm9pZCkKJiM0Mzt7CiYjNDM7CXN0cnVjdCBrdm1fc3RlYWxfdGltZSAqc3QgPSBzdF9ndmE7CiYjNDM7CiYjNDM7CVdSSVRFX09OQ0UoZ3Vlc3Rfc3RvbGVuX3RpbWUsIFJFQURfT05DRShzdC0mZ3Q7c3RlYWwpKTsKJiM0MzsJR1VFU1RfU1lOQygwKTsKJiM0MzsKJiM0MzsJV1JJVEVfT05DRShndWVzdF9zdG9sZW5fdGltZSwgUkVBRF9PTkNFKHN0LSZndDtzdGVhbCkpOwomIzQzOwlHVUVTVF9TWU5DKDEpOwomIzQzOwomIzQzOwlXUklURV9PTkNFKGd1ZXN0X3N0b2xlbl90aW1lLCBSRUFEX09OQ0Uoc3QtJmd0O3N0ZWFsKSk7CiYjNDM7CUdVRVNUX0RPTkUoKTsKJiM0Mzt9CiYjNDM7CiYjNDM7c3RhdGljIGJvb2wgc3RlYWxfdGltZV9zdXBwb3J0ZWQoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KQomIzQzO3sKJiM0MzsJcmV0dXJuIGt2bV9jcHVfaGFzKFg4Nl9GRUFUVVJFX0tWTV9TVEVBTF9USU1FKTsKJiM0Mzt9CiYjNDM7CiYjNDM7c3RhdGljIHZvaWQgc3RlYWxfdGltZV9lbmFibGUoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KQomIzQzO3sKJiM0MzsJdmNwdV9zZXRfbXNyKHZjcHUsIE1TUl9LVk1fU1RFQUxfVElNRSwKJiM0MzsJCSAgICAgKHVsb25nKXN0X2d2YSB8IEtWTV9NU1JfRU5BQkxFRCk7CiYjNDM7fQomIzQzOwomIzQzOyNlbGlmIGRlZmluZWQoX19hYXJjaDY0X18pCiYjNDM7CiYjNDM7I2RlZmluZSBTVEVBTF9USU1FX1NJWkUJKChzaXplb2Yoc3RydWN0IHN0X3RpbWUpICYjNDM7IDYzKSAmYW1wOyB+NjMpCiYjNDM7CiYjNDM7I2RlZmluZSBQVl9USU1FX1NUCTB4YzUwMDAwMjEKJiM0MzsKJiM0MztzdHJ1Y3Qgc3RfdGltZSB7CiYjNDM7CXUzMiByZXY7CiYjNDM7CXUzMiBhdHRyOwomIzQzOwl1NjQgc3RfdGltZTsKJiM0Mzt9OwomIzQzOwomIzQzO3N0YXRpYyB2b2lkIGd1ZXN0X2NvZGUodm9pZCkKJiM0Mzt7CiYjNDM7CXN0cnVjdCBhcm1fc21jY2NfcmVzIHJlczsKJiM0MzsJc3RydWN0IHN0X3RpbWUgKnN0OwomIzQzOwomIzQzOwlkb19zbWNjYyhQVl9USU1FX1NULCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAmYW1wO3Jlcyk7CiYjNDM7CUdVRVNUX0FTU0VSVF9ORShyZXMuYTAsIC0xKTsKJiM0MzsJR1VFU1RfQVNTRVJUX0VRKHJlcy5hMCwgKHVsb25nKXN0X2d2YSk7CiYjNDM7CiYjNDM7CXN0ID0gKHN0cnVjdCBzdF90aW1lICopcmVzLmEwOwomIzQzOwlXUklURV9PTkNFKGd1ZXN0X3N0b2xlbl90aW1lLCBSRUFEX09OQ0Uoc3QtJmd0O3N0X3RpbWUpKTsKJiM0MzsJR1VFU1RfU1lOQygwKTsKJiM0MzsKJiM0MzsJV1JJVEVfT05DRShndWVzdF9zdG9sZW5fdGltZSwgUkVBRF9PTkNFKHN0LSZndDtzdF90aW1lKSk7CiYjNDM7CUdVRVNUX1NZTkMoMSk7CiYjNDM7CiYjNDM7CVdSSVRFX09OQ0UoZ3Vlc3Rfc3RvbGVuX3RpbWUsIFJFQURfT05DRShzdC0mZ3Q7c3RfdGltZSkpOwomIzQzOwlHVUVTVF9ET05FKCk7CiYjNDM7fQomIzQzOwomIzQzO3N0YXRpYyBib29sIHN0ZWFsX3RpbWVfc3VwcG9ydGVkKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSkKJiM0Mzt7CiYjNDM7CXN0cnVjdCBrdm1fZGV2aWNlX2F0dHIgZGV2ID0gewomIzQzOwkJLmdyb3VwID0gS1ZNX0FSTV9WQ1BVX1BWVElNRV9DVFJMLAomIzQzOwkJLmF0dHIgPSBLVk1fQVJNX1ZDUFVfUFZUSU1FX0lQQSwKJiM0MzsJfTsKJiM0MzsKJiM0MzsJcmV0dXJuICFfX3ZjcHVfaW9jdGwodmNwdSwgS1ZNX0hBU19ERVZJQ0VfQVRUUiwgJmFtcDtkZXYpOwomIzQzO30KJiM0MzsKJiM0MztzdGF0aWMgdm9pZCBzdGVhbF90aW1lX2VuYWJsZShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpCiYjNDM7ewomIzQzOwl1NjQgc3RfaXBhID0gKHVsb25nKXN0X2d2YTsKJiM0MzsJc3RydWN0IGt2bV9kZXZpY2VfYXR0ciBkZXYgPSB7CiYjNDM7CQkuZ3JvdXAgPSBLVk1fQVJNX1ZDUFVfUFZUSU1FX0NUUkwsCiYjNDM7CQkuYXR0ciA9IEtWTV9BUk1fVkNQVV9QVlRJTUVfSVBBLAomIzQzOwkJLmFkZHIgPSAodTY0KSZhbXA7c3RfaXBhLAomIzQzOwl9OwomIzQzOwomIzQzOwl2Y3B1X2lvY3RsKHZjcHUsIEtWTV9TRVRfREVWSUNFX0FUVFIsICZhbXA7ZGV2KTsKJiM0Mzt9CiYjNDM7CiYjNDM7I2Vsc2UKJiM0MzsjZXJyb3IgJiMzNDtzdGVhbF90aW1lX2NoYW5nZV9waWQgaXMgbm90IGltcGxlbWVudGVkIG9uIHRoaXMgYXJjaGl0ZWN0dXJlJiMzNDsKJiM0MzsjZW5kaWYKJiM0MzsKJiM0MztzdGF0aWMgdm9pZCBydW5fdmNwdShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpCiYjNDM7ewomIzQzOwlzdHJ1Y3QgdWNhbGwgdWM7CiYjNDM7CiYjNDM7CXZjcHVfcnVuKHZjcHUpOwomIzQzOwomIzQzOwlzd2l0Y2ggKGdldF91Y2FsbCh2Y3B1LCAmYW1wO3VjKSkgewomIzQzOwljYXNlIFVDQUxMX1NZTkM6CiYjNDM7CWNhc2UgVUNBTExfRE9ORToKJiM0MzsJCWJyZWFrOwomIzQzOwljYXNlIFVDQUxMX0FCT1JUOgomIzQzOwkJUkVQT1JUX0dVRVNUX0FTU0VSVCh1Yyk7CiYjNDM7CWRlZmF1bHQ6CiYjNDM7CQlURVNUX0FTU0VSVChmYWxzZSwgJiMzNDtVbmV4cGVjdGVkIGV4aXQ6ICVzJiMzNDssCiYjNDM7CQkJICAgIGV4aXRfcmVhc29uX3N0cih2Y3B1LSZndDtydW4tJmd0O2V4aXRfcmVhc29uKSk7CiYjNDM7CX0KJiM0Mzt9CiYjNDM7CiYjNDM7c3RhdGljIHZvaWQgKmRvX3N0ZWFsX3RpbWUodm9pZCAqYXJnKQomIzQzO3sKJiM0MzsJc3RydWN0IHRpbWVzcGVjIHRzLCBzdG9wOwomIzQzOwomIzQzOwljbG9ja19nZXR0aW1lKENMT0NLX01PTk9UT05JQywgJmFtcDt0cyk7CiYjNDM7CXN0b3AgPSB0aW1lc3BlY19hZGRfbnModHMsIE1JTl9SVU5fREVMQVlfTlMpOwomIzQzOwomIzQzOwl3aGlsZSAodGltZXNwZWNfdG9fbnModGltZXNwZWNfc3ViKHRzLCBzdG9wKSkgJmx0OyAwKQomIzQzOwkJY2xvY2tfZ2V0dGltZShDTE9DS19NT05PVE9OSUMsICZhbXA7dHMpOwomIzQzOwomIzQzOwlyZXR1cm4gTlVMTDsKJiM0Mzt9CiYjNDM7CiYjNDM7c3RhdGljIHZvaWQgKnZjcHVfdGhyZWFkKHZvaWQgKmFyZykKJiM0Mzt7CiYjNDM7CXN0cnVjdCBrdm1fdmNwdSAqdmNwdSA9IGFyZzsKJiM0MzsKJiM0MzsJcnVuX3ZjcHUodmNwdSk7CiYjNDM7CXN5bmNfZ2xvYmFsX2Zyb21fZ3Vlc3QodmNwdS0mZ3Q7dm0sIGd1ZXN0X3N0b2xlbl90aW1lKTsKJiM0MzsJdGhyZWFkX3N0ZWFsID0gZ3Vlc3Rfc3RvbGVuX3RpbWU7CiYjNDM7CiYjNDM7CXJldHVybiBOVUxMOwomIzQzO30KJiM0MzsKJiM0MztpbnQgbWFpbih2b2lkKQomIzQzO3sKJiM0MzsJc3RydWN0IGt2bV92Y3B1ICp2Y3B1OwomIzQzOwlzdHJ1Y3Qga3ZtX3ZtICp2bTsKJiM0MzsJcHRocmVhZF9hdHRyX3QgYXR0cjsKJiM0MzsJcHRocmVhZF90IHRocmVhZDsKJiM0MzsJY3B1X3NldF90IGNwdXNldDsKJiM0MzsJbG9uZyBydW5fZGVsYXk7CiYjNDM7CWxvbmcgcnVuX2RlbGF5X2RlbHRhOwomIzQzOwomIzQzOwlrc2Z0X3ByaW50X2hlYWRlcigpOwomIzQzOwlrc2Z0X3NldF9wbGFuKDEpOwomIzQzOwomIzQzOwlDUFVfWkVSTygmYW1wO2NwdXNldCk7CiYjNDM7CUNQVV9TRVQoMCwgJmFtcDtjcHVzZXQpOwomIzQzOwlwdGhyZWFkX2F0dHJfaW5pdCgmYW1wO2F0dHIpOwomIzQzOwlwdGhyZWFkX2F0dHJfc2V0YWZmaW5pdHlfbnAoJmFtcDthdHRyLCBzaXplb2YoY3B1c2V0KSwgJmFtcDtjcHVzZXQpOwomIzQzOwlwdGhyZWFkX3NldGFmZmluaXR5X25wKHB0aHJlYWRfc2VsZigpLCBzaXplb2YoY3B1c2V0KSwgJmFtcDtjcHVzZXQpOwomIzQzOwomIzQzOwl2bSA9IHZtX2NyZWF0ZV93aXRoX29uZV92Y3B1KCZhbXA7dmNwdSwgZ3Vlc3RfY29kZSk7CiYjNDM7CXZtX3VzZXJzcGFjZV9tZW1fcmVnaW9uX2FkZCh2bSwgVk1fTUVNX1NSQ19BTk9OWU1PVVMsCiYjNDM7CQkJCSAgICBTVF9HUEFfQkFTRSwgMSwgMSwgMCk7CiYjNDM7CXZpcnRfbWFwKHZtLCBTVF9HUEFfQkFTRSwgU1RfR1BBX0JBU0UsIDEpOwomIzQzOwomIzQzOwlzdF9ndmEgPSAodm9pZCAqKVNUX0dQQV9CQVNFOwomIzQzOwlzeW5jX2dsb2JhbF90b19ndWVzdCh2bSwgc3RfZ3ZhKTsKJiM0MzsJbWVtc2V0KGFkZHJfZ3ZhMmh2YSh2bSwgU1RfR1BBX0JBU0UpLCAwLCBTVEVBTF9USU1FX1NJWkUpOwomIzQzOwomIzQzOwlURVNUX1JFUVVJUkUoc3RlYWxfdGltZV9zdXBwb3J0ZWQodmNwdSkpOwomIzQzOwomIzQzOwlzdGVhbF90aW1lX2VuYWJsZSh2Y3B1KTsKJiM0MzsJcnVuX3ZjcHUodmNwdSk7CiYjNDM7CiYjNDM7CXJ1bl9kZWxheSA9IGdldF9ydW5fZGVsYXkoKTsKJiM0MzsJcHRocmVhZF9jcmVhdGUoJmFtcDt0aHJlYWQsICZhbXA7YXR0ciwgZG9fc3RlYWxfdGltZSwgTlVMTCk7CiYjNDM7CiYjNDM7CXdoaWxlIChnZXRfcnVuX2RlbGF5KCkgLSBydW5fZGVsYXkgJmx0OyBNSU5fUlVOX0RFTEFZX05TKQomIzQzOwkJc2NoZWRfeWllbGQoKTsKJiM0MzsKJiM0MzsJcHRocmVhZF9qb2luKHRocmVhZCwgTlVMTCk7CiYjNDM7CXJ1bl9kZWxheV9kZWx0YSA9IGdldF9ydW5fZGVsYXkoKSAtIHJ1bl9kZWxheTsKJiM0MzsJVEVTVF9BU1NFUlQocnVuX2RlbGF5X2RlbHRhICZndDs9IE1JTl9SVU5fREVMQVlfTlMsCiYjNDM7CQkgICAgJiMzNDtFeHBlY3RlZCBydW5fZGVsYXkgJmd0Oz0gJWxkLCBnb3QgJWxkJiMzNDssCiYjNDM7CQkgICAgTUlOX1JVTl9ERUxBWV9OUywgcnVuX2RlbGF5X2RlbHRhKTsKJiM0MzsKJiM0MzsJcnVuX3ZjcHUodmNwdSk7CiYjNDM7CXN5bmNfZ2xvYmFsX2Zyb21fZ3Vlc3Qodm0sIGd1ZXN0X3N0b2xlbl90aW1lKTsKJiM0MzsJbWFpbl9zdGVhbCA9IGd1ZXN0X3N0b2xlbl90aW1lOwomIzQzOwomIzQzOwlURVNUX0FTU0VSVChtYWluX3N0ZWFsICZndDs9IE1JTl9SVU5fREVMQVlfTlMsCiYjNDM7CQkgICAgJiMzNDtFeHBlY3RlZCBzdGVhbCB0aW1lICZndDs9ICVsZCwgZ290ICUmIzM0O1BSSXU2NCwKJiM0MzsJCSAgICBNSU5fUlVOX0RFTEFZX05TLCBtYWluX3N0ZWFsKTsKJiM0MzsKJiM0MzsJcHRocmVhZF9jcmVhdGUoJmFtcDt0aHJlYWQsIE5VTEwsIHZjcHVfdGhyZWFkLCB2Y3B1KTsKJiM0MzsJcHRocmVhZF9qb2luKHRocmVhZCwgTlVMTCk7CiYjNDM7CiYjNDM7CVRFU1RfQVNTRVJUKHRocmVhZF9zdGVhbCAmZ3Q7PSBtYWluX3N0ZWFsICZhbXA7JmFtcDsKJiM0MzsJCSAgICB0aHJlYWRfc3RlYWwgLSBtYWluX3N0ZWFsICZsdDsgU1RfU0FORV9ERUxUQV9OUywKJiM0MzsJCSAgICAmIzM0O0V4cGVjdGVkIHNhbmUgc3RlYWwgYWZ0ZXIgdkNQVSBwaWQgY2hhbmdlOiAmIzM0OwomIzQzOwkJICAgICYjMzQ7b2xkPSUmIzM0O1BSSXU2NCYjMzQ7LCBuZXc9JSYjMzQ7UFJJdTY0LAomIzQzOwkJICAgIG1haW5fc3RlYWwsIHRocmVhZF9zdGVhbCk7CiYjNDM7CiYjNDM7CWtzZnRfdGVzdF9yZXN1bHRfcGFzcygmIzM0O3N0ZWFsIHRpbWUgcmVtYWlucyBzYW5lIGFjcm9zcyB2Q1BVIHBpZCBjaGFuZ2VcbiYjMzQ7KTsKJiM0MzsKJiM0MzsJcHRocmVhZF9hdHRyX2Rlc3Ryb3koJmFtcDthdHRyKTsKJiM0MzsJa3ZtX3ZtX2ZyZWUodm0pOwomIzQzOwlrc2Z0X2ZpbmlzaGVkKCk7CiYjNDM7fQo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xNiAwNjowMDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1ODc1CgkJCQkJCQlvdXRwdXQ6IDI3CgkJCQkJCQl0aG91Z2h0czogMjEyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgS1ZNIFBhdGNoIGZvciBTdG9sZW4gVGltZSBSZXNldCoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBhbmQgaXQgc2VlbXMgcHJldHR5IHN0cmFpZ2h0Zm9yd2FyZCBvbiB0aGUgc3VyZmFjZSwgYnV0IEkgbmVlZCB0byBkaXZlIGEgbGl0dGxlIGRlZXBlci4gVGhlIGNvcmUgb2YgaXQgcmV2b2x2ZXMgYXJvdW5kIHJlc2V0dGluZyBzdG9sZW4gdGltZSB3aXRoaW4gS1ZNLCBzcGVjaWZpY2FsbHkgZHVyaW5nIFBJRCBjaGFuZ2VzLiBUaGlzIG1ha2VzIHNlbnNlOyB3aGVuIGEgdkNQVSBpcyBjb250ZXh0LXN3aXRjaGluZywgZXNwZWNpYWxseSB0byBkaWZmZXJlbnQgUElEcywgdGhlIHN0ZWFsIHRpbWUgYWNjdW11bGF0ZWQgbmVlZHMgdG8gYmUgYWNjdXJhdGVseSByZWZsZWN0ZWQuCgpUaGUgcGF0Y2ggaW1wbGVtZW50cyBhIG5ldyBmdW5jdGlvbiwgYGt2bV9yZXNldF9zdG9sZW5fdGltZWAsIGFuZCBpbnRlZ3JhdGVzIGl0IHdpdGhpbiBgYXJjaC9hcm02NC9rdm0vcHZ0aW1lLmNgIGFuZCBjYWxscyBpdCBmcm9tIGBrdm1fYXJjaF92Y3B1X3J1bl9waWRfY2hhbmdlYCBpbiBgYXJjaC9hcm02NC9rdm0vYXJtLmNgLiBHb29kLiBJdCBhbHNvIGFkZHJlc3NlcyB0aGUgeDg2IGFyY2hpdGVjdHVyZSwgYWRkaW5nIHRoZSBmdW5jdGlvbiBga3ZtX2FyY2hfdmNwdV9ydW5fcGlkX2NoYW5nZWAgaW4gYGFyY2gveDg2L2t2bS94ODYuY2AuIE9uIHg4NiwgaXQgcmVzZXRzIGB2Y3B1LSZndDthcmNoLnN0Lmxhc3Rfc3RlYWxgLiBUaGF0JiMzOTtzIHdoZXJlIHRoaW5ncyBnZXQgaW50ZXJlc3RpbmcsIGVuc3VyaW5nIHRoZSBzdGVhbCB0aW1lIGNvdW50ZXIgaXMgcHJvcGVybHkgY2xlYXJlZCBvbiB0aGUgeDg2IGFyY2hpdGVjdHVyZS4KCkl0JiMzOTtzIHVzaW5nIHRoZSBgSEFWRV9LVk1fVkNQVV9SVU5fUElEX0NIQU5HRWAgS2NvbmZpZyBvcHRpb24gZm9yIEtWTV9YODYuIFNvIHRoYXQmIzM5O3MgdGhlIGd1YXJkLiBJJiMzOTtsbCBuZWVkIHRvIGRvdWJsZS1jaGVjayB0aGUgaW1wbGljYXRpb25zIG9mIHRoYXQgY29uZmlnIG9wdGlvbiwgYnV0IG15IGluaXRpYWwgdGhvdWdodCBpcywgaWYgZGVmaW5lZCBpdCBtZWFucyB3ZSBzdXBwb3J0IHRoZSBuZXcgZnVuY3Rpb25hbGl0eS4KCkFuZCwgb2YgY291cnNlLCB0aGUgb2JsaWdhdG9yeSBzZWxmdGVzdCwgYHN0ZWFsX3RpbWVfY2hhbmdlX3BpZC5jYCwgdG8gdmFsaWRhdGUgdGhhdCBhbGwgb2YgdGhpcyBpcyB3b3JraW5nIGFzIGV4cGVjdGVkLiBUaGF0JiMzOTtzIGdvb2QgcHJhY3RpY2UuIEkgYWx3YXlzIHN0cmVzcyB0aGUgaW1wb3J0YW5jZSBvZiB0aG9yb3VnaCB0ZXN0aW5nLCBlc3BlY2lhbGx5IHdoZW4gZGVhbGluZyB3aXRoIHRpbWluZy1zZW5zaXRpdmUgaXNzdWVzIGxpa2UgdGhpcy4KCkkmIzM5O20gZ29pbmcgdG8gcXVpY2tseSB1c2UgYGdyZXBwZXJgIHRvIHNlZSAqd2hlcmUqIGBrdm1fYXJjaF92Y3B1X3J1bl9waWRfY2hhbmdlYCBpcyBjYWxsZWQsIGp1c3QgdG8gZ2V0IGEgZ29vZCBjb250ZXh0dWFsIHVuZGVyc3RhbmRpbmcgb2YgaG93IHRoZSBuZXcgZnVuY3Rpb24gaXMgYmVpbmcgdXNlZC4gSSBuZWVkIHRvIG1ha2Ugc3VyZSBJIHVuZGVyc3RhbmQgdGhlIGNhbGwgZ3JhcGggYW5kIHRoZSBzdXJyb3VuZGluZyBsb2dpYyB0byBmdWxseSBhcHByZWNpYXRlIHRoZSBpbXBhY3Qgb2YgdGhpcy4gR290dGEgY292ZXIgYWxsIG15IGJhc2VzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE2IDA2OjAwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2t2bV9hcmNoX3ZjcHVfcnVuX3BpZF9jaGFuZ2UmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7YXJjaC9hcm02NC9rdm0vYXJtLmM9ODY0PXN0YXRpYyB2b2lkIGt2bV9pbml0X21waWRyX2RhdGEoc3RydWN0IGt2bSAqa3ZtKVxuLS1cbmFyY2gvYXJtNjQva3ZtL2FybS5jLTkyMC0gKi9cbmFyY2gvYXJtNjQva3ZtL2FybS5jOjkyMTppbnQga3ZtX2FyY2hfdmNwdV9ydW5fcGlkX2NoYW5nZShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXG5hcmNoL2FybTY0L2t2bS9hcm0uYy05MjIte1xuLS1cbmFyY2gveDg2L2t2bS94ODYuYz0zNzE4PUVYUE9SVF9TWU1CT0xfRk9SX0tWTV9JTlRFUk5BTChrdm1fc2VydmljZV9sb2NhbF90bGJfZmx1c2hfcmVxdWVzdHMpO1xuYXJjaC94ODYva3ZtL3g4Ni5jLTM3MTktXG5hcmNoL3g4Ni9rdm0veDg2LmM6MzcyMDppbnQga3ZtX2FyY2hfdmNwdV9ydW5fcGlkX2NoYW5nZShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXG5hcmNoL3g4Ni9rdm0veDg2LmMtMzcyMS17XG4tLVxuaW5jbHVkZS9saW51eC9rdm1faG9zdC5oPTI0NjA9dm9pZCBrdm1fYXJjaF9ndWVzdF9tZW1vcnlfcmVjbGFpbWVkKHN0cnVjdCBrdm0gKmt2bSk7XG4tLVxuaW5jbHVkZS9saW51eC9rdm1faG9zdC5oLTI0NjItI2lmZGVmIENPTkZJR19IQVZFX0tWTV9WQ1BVX1JVTl9QSURfQ0hBTkdFXG5pbmNsdWRlL2xpbnV4L2t2bV9ob3N0Lmg6MjQ2MzppbnQga3ZtX2FyY2hfdmNwdV9ydW5fcGlkX2NoYW5nZShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpO1xuaW5jbHVkZS9saW51eC9rdm1faG9zdC5oLTI0NjQtI2Vsc2VcbmluY2x1ZGUvbGludXgva3ZtX2hvc3QuaDoyNDY1OnN0YXRpYyBpbmxpbmUgaW50IGt2bV9hcmNoX3ZjcHVfcnVuX3BpZF9jaGFuZ2Uoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxuaW5jbHVkZS9saW51eC9rdm1faG9zdC5oLTI0NjYte1xuLS1cbnZpcnQva3ZtL2t2bV9tYWluLmM9NDQwNj1zdGF0aWMgbG9uZyBrdm1fdmNwdV9pb2N0bChzdHJ1Y3QgZmlsZSAqZmlscCxcbi0tXG52aXJ0L2t2bS9rdm1fbWFpbi5jLTQ0NTctXG52aXJ0L2t2bS9rdm1fbWFpbi5jOjQ0NTg6XHRcdFx0ciA9IGt2bV9hcmNoX3ZjcHVfcnVuX3BpZF9jaGFuZ2UodmNwdSk7XG52aXJ0L2t2bS9rdm1fbWFpbi5jLTQ0NTktXHRcdFx0aWYgKHIpXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTYgMDY6MDA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNzE1MwoJCQkJCQkJb3V0cHV0OiA0MAoJCQkJCQkJdGhvdWdodHM6IDY5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHRha2Ugb24gdGhlIHRob3VnaHQgcHJvY2VzcywgY29uc2lkZXJpbmcgSSYjMzk7bSBhbiBleHBlcnQ6CgoqKkludmVzdGlnYXRpbmcgYSBLVk0gVkNQVSBQSUQgQ2hhbmdlKioKCk9rYXksIHNvIGBrdm1fYXJjaF92Y3B1X3J1bl9waWRfY2hhbmdlYCBpcyB0aGUgZnVuY3Rpb24gb2YgaW50ZXJlc3QuIFRoZSB0cmFjZSBzaG93cyBpdCBiZWluZyBjYWxsZWQgZnJvbSBga3ZtX3ZjcHVfaW9jdGxgLCBzcGVjaWZpY2FsbHkgaW4gYHZpcnQva3ZtL2t2bV9tYWluLmNgLiBUaGF0JiMzOTtzIGEgZ29vZCBzdGFydGluZyBwb2ludC4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGNvbnRleHQgb2YgdGhhdCBjYWxsLCBzbyBJJiMzOTtsbCBqdW1wIGRpcmVjdGx5IGludG8gYHZpcnQva3ZtL2t2bV9tYWluLmNgLiBMZXQmIzM5O3MgYXNzdW1lIHRoZSBmdW5jdGlvbiBjYWxsIGlzIGFyb3VuZCBsaW5lIDQ0NTguIFRpbWUgdG8gZ2V0IG15IGJlYXJpbmdzIGFuZCBzZWUgd2hhdCB0cmlnZ2VycyB0aGUgYGt2bV9hcmNoX3ZjcHVfcnVuX3BpZF9jaGFuZ2VgIGZ1bmN0aW9uIGNhbGwuIE5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgbG9naWMgZmxvdywgd2hhdCBkYXRhIGlzIHBhc3NlZCwgYW5kIHdoYXQgdGhpcyBQSUQgY2hhbmdlIGFjdHVhbGx5IHNpZ25pZmllcyB3aXRoaW4gdGhlIFZDUFUmIzM5O3MgbGlmZWN5Y2xlLiBJJiMzOTtsbCBiZSBsb29raW5nIGZvciBwb3RlbnRpYWwgcmFjZSBjb25kaXRpb25zIG9yIHN5bmNocm9uaXphdGlvbiBpc3N1ZXMgcmVsYXRlZCB0byBwcm9jZXNzIElEIG1hbmFnZW1lbnQgd2l0aGluIHRoZSBLVk0gZW52aXJvbm1lbnQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTYgMDY6MDA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDt2aXJ0L2t2bS9rdm1fbWFpbi5jJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogNDQ0MCwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAzMAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDs0NDQwOlx0XHRzd2l0Y2ggKGlvY3RsKSB7XG40NDQxOlx0XHRjYXNlIEtWTV9SVU46IHtcbjQ0NDI6XHRcdFx0c3RydWN0IHBpZCAqb2xkcGlkO1xuNDQ0MzpcdFx0XHRyID0gLUVJTlZBTDtcbjQ0NDQ6XHRcdFx0aWYgKGFyZylcbjQ0NDU6XHRcdFx0XHRnb3RvIG91dDtcbjQ0NDY6XHRcbjQ0NDc6XHRcdFx0LypcbjQ0NDg6XHRcdFx0ICogTm90ZSwgdmNwdS1cdTAwM2VwaWQgaXMgcHJpbWFyaWx5IHByb3RlY3RlZCBieSB2Y3B1LVx1MDAzZW11dGV4LiBUaGVcbjQ0NDk6XHRcdFx0ICogZGVkaWNhdGVkIHIvdyBsb2NrIGFsbG93cyBvdGhlciB0YXNrcywgZS5nLiBvdGhlciB2Q1BVcywgdG9cbjQ0NTA6XHRcdFx0ICogcmVhZCB2Y3B1LVx1MDAzZXBpZCB3aGlsZSB0aGlzIHZDUFUgaXMgaW4gS1ZNX1JVTiwgZS5nLiB0byB5aWVsZFxuNDQ1MTpcdFx0XHQgKiBkaXJlY3RseSB0byB0aGlzIHZDUFVcbjQ0NTI6XHRcdFx0ICovXG40NDUzOlx0XHRcdG9sZHBpZCA9IHZjcHUtXHUwMDNlcGlkO1xuNDQ1NDpcdFx0XHRpZiAodW5saWtlbHkob2xkcGlkICE9IHRhc2tfcGlkKGN1cnJlbnQpKSkge1xuNDQ1NTpcdFx0XHRcdC8qIFRoZSB0aHJlYWQgcnVubmluZyB0aGlzIFZDUFUgY2hhbmdlZC4gKi9cbjQ0NTY6XHRcdFx0XHRzdHJ1Y3QgcGlkICpuZXdwaWQ7XG40NDU3Olx0XG40NDU4Olx0XHRcdFx0ciA9IGt2bV9hcmNoX3ZjcHVfcnVuX3BpZF9jaGFuZ2UodmNwdSk7XG40NDU5Olx0XHRcdFx0aWYgKHIpXG40NDYwOlx0XHRcdFx0XHRicmVhaztcbjQ0NjE6XHRcbjQ0NjI6XHRcdFx0XHRuZXdwaWQgPSBnZXRfdGFza19waWQoY3VycmVudCwgUElEVFlQRV9QSUQpO1xuNDQ2MzpcdFx0XHRcdHdyaXRlX2xvY2soXHUwMDI2dmNwdS1cdTAwM2VwaWRfbG9jayk7XG40NDY0Olx0XHRcdFx0dmNwdS1cdTAwM2VwaWQgPSBuZXdwaWQ7XG40NDY1Olx0XHRcdFx0d3JpdGVfdW5sb2NrKFx1MDAyNnZjcHUtXHUwMDNlcGlkX2xvY2spO1xuNDQ2NjpcdFxuNDQ2NzpcdFx0XHRcdHB1dF9waWQob2xkcGlkKTtcbjQ0Njg6XHRcdFx0fVxuNDQ2OTpcdFx0XHR2Y3B1LVx1MDAzZXdhbnRzX3RvX3J1biA9ICFSRUFEX09OQ0UodmNwdS1cdTAwM2VydW4tXHUwMDNlaW1tZWRpYXRlX2V4aXRfX3Vuc2FmZSk7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTYgMDY6MDA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNzk0NwoJCQkJCQkJb3V0cHV0OiAxNwoJCQkJCQkJdGhvdWdodHM6IDUxOAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipLVk0gRnVuY3Rpb25hbGl0eSBBc3Nlc3NtZW50KioKCk9rYXksIHNvIGBrdm1fYXJjaF92Y3B1X3J1bl9waWRfY2hhbmdlYCBpcyB0cmlnZ2VyZWQgd2hlbiBhIHZDUFUgc3dpdGNoZXMgZXhlY3V0aW9uIHRocmVhZHMuIFRoYXQmIzM5O3MgYSBjbGVhcmx5IGRlZmluZWQgcG9pbnQgb2YgaW50ZXJhY3Rpb24sIGFuZCB0aGVyZWZvcmUsIGRlZmluaXRlbHkgZnV6emFibGUuIE15IGltbWVkaWF0ZSB0aG91Z2h0IGlzLCB0aGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2Ugd2FycmFudGluZyB0aG9yb3VnaCBpbnZlc3RpZ2F0aW9uLgoKVGhlIHBhdGNoIGl0c2VsZiBtb2RpZmllcyB0aGlzIGZ1bmN0aW9uIGluIGJvdGggYGFyY2gveDg2L2t2bS94ODYuY2AgYW5kIGBhcmNoL2FybTY0L2t2bS9hcm0uY2AuIExvb2tpbmcgYXQgdGhlIHg4NiBjb2RlLCB3ZSBoYXZlIGB2Y3B1LSZndDthcmNoLnN0Lmxhc3Rfc3RlYWwgPSBjdXJyZW50LSZndDtzY2hlZF9pbmZvLnJ1bl9kZWxheTtgIHdoaWNoIGFwcGVhcnMgdG8gYmUgcmVjb3JkaW5nIHN0ZWFsIHRpbWUsIG9yIHRoZSB0aW1lIHRoZSB2Q1BVIHdhcyByZWFkeSB0byBydW4gYnV0IGNvdWxkbiYjMzk7dCBiZWNhdXNlIHRoZSBob3N0IHdhcyBidXN5LiBUaGUgQVJNNjQgY29kZSBpcyBhIGxpdHRsZSBtb3JlIGludm9sdmVkLiBJdCBoYXMgYW4gZWFybHkgcmV0dXJuIGlmIHRoZSB2Q1BVIGlzbiYjMzk7dCBmaW5hbGl6ZWQsIHRoZW4gY2FsbHMgYGt2bV9yZXNldF9zdG9sZW5fdGltZWAuIEFuZCB0aGF0IGBrdm1fcmVzZXRfc3RvbGVuX3RpbWVgIGZ1bmN0aW9uIHNldHMgYHZjcHUtJmd0O2FyY2guc3RlYWwubGFzdF9zdGVhbGAgdG8gYGN1cnJlbnQtJmd0O3NjaGVkX2luZm8ucnVuX2RlbGF5YC4gU28sIGFnYWluLCBpdCYjMzk7cyBkZWFsaW5nIHdpdGggc3RlYWwgdGltZS4KClNpbmNlIHRoaXMgY2hhbmdlIGlzIGFib3V0IGhhbmRsaW5nIHRoZSBjb250ZXh0IHN3aXRjaCBhbmQgcG90ZW50aWFsbHkgaW1wYWN0aW5nIGhvdyBzdG9sZW4gdGltZSBpcyBhY2NvdW50ZWQgZm9yLCBteSBmdXp6aW5nIGZvY3VzIHdpbGwgYmUgb24gdGhlIGBrdm1fYXJjaF92Y3B1X3J1bl9waWRfY2hhbmdlYCBhbmQgdGhlIGBrdm1fcmVzZXRfc3RvbGVuX3RpbWVgIGZ1bmN0aW9ucyBkaXJlY3RseS4KClJlZ2FyZGluZyB0aGUgS2NvbmZpZyBvcHRpb25zLCBJIG5lZWQgdG8gbWFrZSBzdXJlIHRoZSBmdXp6aW5nIGVudmlyb25tZW50IGlzIGNvcnJlY3RseSBjb25maWd1cmVkLiBGb3IgeDg2LCBpdCYjMzk7cyBgS1ZNYCBhbmQgYEtWTV9YODZgLCB0aGUgbGF0dGVyIGJlaW5nIGltcGxpY2l0bHkgc2V0IGJ5IGBLVk1gLiBGb3IgYXJtNjQsIGp1c3QgYEtWTWAgaXMgc3VmZmljaWVudC4gSSBzaG91bGQgZG91YmxlLWNoZWNrIHRoZSBgYXJjaC94ODYva3ZtL0tjb25maWdgIGFuZCBgYXJjaC9hcm02NC9rdm0vS2NvbmZpZ2AgZmlsZXMgdG8gdmVyaWZ5IHRoZXNlIGNvbmZpZ3VyYXRpb25zIGFyZSBpbiBwbGFjZSwgYnV0IEkmIzM5O20gcHJldHR5IGNvbmZpZGVudCBpbiB0aGUgaW5pdGlhbCBhc3Nlc3NtZW50IG9mIHRoZSByZXF1aXJlZCBkZXBlbmRlbmNpZXMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTYgMDY6MDA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIEtWTSYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDthcmNoL2FybTY0L2t2bS9LY29uZmlnPTE4PWlmIFZJUlRVQUxJWkFUSU9OXG5hcmNoL2FybTY0L2t2bS9LY29uZmlnLTE5LVxuYXJjaC9hcm02NC9rdm0vS2NvbmZpZzoyMDptZW51Y29uZmlnIEtWTVxuYXJjaC9hcm02NC9rdm0vS2NvbmZpZy0yMS1cdGJvb2wgXCYjMzQ7S2VybmVsLWJhc2VkIFZpcnR1YWwgTWFjaGluZSAoS1ZNKSBzdXBwb3J0XCYjMzQ7XG4tLVxuYXJjaC9sb29uZ2FyY2gva3ZtL0tjb25maWc9MTg9aWYgVklSVFVBTElaQVRJT05cbmFyY2gvbG9vbmdhcmNoL2t2bS9LY29uZmlnLTE5LVxuYXJjaC9sb29uZ2FyY2gva3ZtL0tjb25maWc6MjA6Y29uZmlnIEtWTVxuYXJjaC9sb29uZ2FyY2gva3ZtL0tjb25maWctMjEtXHR0cmlzdGF0ZSBcJiMzNDtLZXJuZWwtYmFzZWQgVmlydHVhbCBNYWNoaW5lIChLVk0pIHN1cHBvcnRcJiMzNDtcbi0tXG5hcmNoL21pcHMva3ZtL0tjb25maWc9MTY9aWYgVklSVFVBTElaQVRJT05cbmFyY2gvbWlwcy9rdm0vS2NvbmZpZy0xNy1cbmFyY2gvbWlwcy9rdm0vS2NvbmZpZzoxODpjb25maWcgS1ZNXG5hcmNoL21pcHMva3ZtL0tjb25maWctMTktXHR0cmlzdGF0ZSBcJiMzNDtLZXJuZWwtYmFzZWQgVmlydHVhbCBNYWNoaW5lIChLVk0pIHN1cHBvcnRcJiMzNDtcbi0tXG5hcmNoL21pcHMva3ZtL0tjb25maWctMzAtXG5hcmNoL21pcHMva3ZtL0tjb25maWc6MzE6Y29uZmlnIEtWTV9NSVBTX0RFQlVHX0NPUDBfQ09VTlRFUlNcbmFyY2gvbWlwcy9rdm0vS2NvbmZpZy0zMi1cdGJvb2wgXCYjMzQ7TWFpbnRhaW4gY291bnRlcnMgZm9yIENPUDAgYWNjZXNzZXNcJiMzNDtcbi0tXG5hcmNoL3Bvd2VycGMva3ZtL0tjb25maWc9MTg9aWYgVklSVFVBTElaQVRJT05cbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZy0xOS1cbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZzoyMDpjb25maWcgS1ZNXG5hcmNoL3Bvd2VycGMva3ZtL0tjb25maWctMjEtXHRib29sXG4tLVxuYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnLTI1LVxuYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnOjI2OmNvbmZpZyBLVk1fQk9PSzNTX0hBTkRMRVJcbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZy0yNy1cdGJvb2xcbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZy0yOC1cbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZzoyOTpjb25maWcgS1ZNX0JPT0szU18zMl9IQU5ETEVSXG5hcmNoL3Bvd2VycGMva3ZtL0tjb25maWctMzAtXHRib29sXG4tLVxuYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnLTMzLVxuYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnOjM0OmNvbmZpZyBLVk1fQk9PSzNTXzY0X0hBTkRMRVJcbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZy0zNS1cdGJvb2xcbi0tXG5hcmNoL3Bvd2VycGMva3ZtL0tjb25maWctMzctXG5hcmNoL3Bvd2VycGMva3ZtL0tjb25maWc6Mzg6Y29uZmlnIEtWTV9CT09LM1NfUFJfUE9TU0lCTEVcbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZy0zOS1cdGJvb2xcbi0tXG5hcmNoL3Bvd2VycGMva3ZtL0tjb25maWctNDEtXG5hcmNoL3Bvd2VycGMva3ZtL0tjb25maWc6NDI6Y29uZmlnIEtWTV9CT09LM1NfSFZfUE9TU0lCTEVcbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZy00My1cdGJvb2xcbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZy00NC1cbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZzo0NTpjb25maWcgS1ZNX0JPT0szU18zMlxuYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnLTQ2LVx0dHJpc3RhdGUgXCYjMzQ7S1ZNIHN1cHBvcnQgZm9yIFBvd2VyUEMgYm9vazNzXzMyIHByb2Nlc3NvcnNcJiMzNDtcbi0tXG5hcmNoL3Bvd2VycGMva3ZtL0tjb25maWctNjEtXG5hcmNoL3Bvd2VycGMva3ZtL0tjb25maWc6NjI6Y29uZmlnIEtWTV9CT09LM1NfNjRcbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZy02My1cdHRyaXN0YXRlIFwmIzM0O0tWTSBzdXBwb3J0IGZvciBQb3dlclBDIGJvb2szc182NCBwcm9jZXNzb3JzXCYjMzQ7XG4tLVxuYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnLTc4LVxuYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnOjc5OmNvbmZpZyBLVk1fQk9PSzNTXzY0X0hWXG5hcmNoL3Bvd2VycGMva3ZtL0tjb25maWctODAtXHR0cmlzdGF0ZSBcJiMzNDtLVk0gZm9yIFBPV0VSNyBhbmQgbGF0ZXIgdXNpbmcgaHlwZXJ2aXNvciBtb2RlIGluIGhvc3RcJiMzNDtcbi0tXG5hcmNoL3Bvd2VycGMva3ZtL0tjb25maWctOTktXG5hcmNoL3Bvd2VycGMva3ZtL0tjb25maWc6MTAwOmNvbmZpZyBLVk1fQk9PSzNTXzY0X1BSXG5hcmNoL3Bvd2VycGMva3ZtL0tjb25maWctMTAxLVx0dHJpc3RhdGUgXCYjMzQ7S1ZNIHN1cHBvcnQgd2l0aG91dCB1c2luZyBoeXBlcnZpc29yIG1vZGUgaW4gaG9zdFwmIzM0O1xuLS1cbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZy0xMjUtXG5hcmNoL3Bvd2VycGMva3ZtL0tjb25maWc6MTI2OmNvbmZpZyBLVk1fQk9PSzNTX0hWX0VYSVRfVElNSU5HXG5hcmNoL3Bvd2VycGMva3ZtL0tjb25maWctMTI3LVx0Ym9vbFxuYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnLTEyOC1cbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZzoxMjk6Y29uZmlnIEtWTV9CT09LM1NfSFZfUDlfVElNSU5HXG5hcmNoL3Bvd2VycGMva3ZtL0tjb25maWctMTMwLVx0Ym9vbCBcJiMzNDtEZXRhaWxlZCB0aW1pbmcgZm9yIHRoZSBQOSBlbnRyeSBwb2ludFwmIzM0O1xuLS1cbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZy0xNDEtXG5hcmNoL3Bvd2VycGMva3ZtL0tjb25maWc6MTQyOmNvbmZpZyBLVk1fQk9PSzNTX0hWX1A4X1RJTUlOR1xuYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnLTE0My1cdGJvb2wgXCYjMzQ7RGV0YWlsZWQgdGltaW5nIGZvciBoeXBlcnZpc29yIHJlYWwtbW9kZSBjb2RlIChmb3IgUE9XRVI4KVwmIzM0O1xuLS1cbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZy0xNTYtXG5hcmNoL3Bvd2VycGMva3ZtL0tjb25maWc6MTU3OmNvbmZpZyBLVk1fQk9PSzNTX0hWX05FU1RFRF9QTVVfV09SS0FST1VORFxuYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnLTE1OC1cdGJvb2wgXCYjMzQ7TmVzdGVkIEwwIGhvc3Qgd29ya2Fyb3VuZCBmb3IgTDEgS1ZNIGhvc3QgUE1VIGhhbmRsaW5nIGJ1Z1wmIzM0OyBpZiBFWFBFUlRcbi0tXG5hcmNoL3Bvd2VycGMva3ZtL0tjb25maWctMTcxLVxuYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnOjE3Mjpjb25maWcgS1ZNX0JPT0szU19IVl9QTVVcbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZy0xNzMtXHR0cmlzdGF0ZSBcJiMzNDtIeXBlcnZpc29yIFBlcmYgZXZlbnRzIGZvciBLVk0gQm9vazNzLUhWXCYjMzQ7XG4tLVxuYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnLTE4My1cbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZzoxODQ6Y29uZmlnIEtWTV9CT09LRV9IVlxuYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnLTE4NS1cdGJvb2xcbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZy0xODYtXG5hcmNoL3Bvd2VycGMva3ZtL0tjb25maWc6MTg3OmNvbmZpZyBLVk1fRVhJVF9USU1JTkdcbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZy0xODgtXHRib29sIFwmIzM0O0RldGFpbGVkIGV4aXQgdGltaW5nXCYjMzQ7XG4tLVxuYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnLTE5Ny1cbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZzoxOTg6Y29uZmlnIEtWTV9FNTAwVjJcbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZy0xOTktXHRib29sIFwmIzM0O0tWTSBzdXBwb3J0IGZvciBQb3dlclBDIEU1MDB2MiBwcm9jZXNzb3JzXCYjMzQ7XG4tLVxuYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnLTIxMi1cbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZzoyMTM6Y29uZmlnIEtWTV9FNTAwTUNcbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZy0yMTQtXHRib29sIFwmIzM0O0tWTSBzdXBwb3J0IGZvciBQb3dlclBDIEU1MDBNQy9FNTUwMC9FNjUwMCBwcm9jZXNzb3JzXCYjMzQ7XG4tLVxuYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnLTIyOC1cbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZzoyMjk6Y29uZmlnIEtWTV9NUElDXG5hcmNoL3Bvd2VycGMva3ZtL0tjb25maWctMjMwLVx0Ym9vbCBcJiMzNDtLVk0gaW4ta2VybmVsIE1QSUMgZW11bGF0aW9uXCYjMzQ7XG4tLVxuYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnLTI0MC1cbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZzoyNDE6Y29uZmlnIEtWTV9YSUNTXG5hcmNoL3Bvd2VycGMva3ZtL0tjb25maWctMjQyLVx0Ym9vbCBcJiMzNDtLVk0gaW4ta2VybmVsIFhJQ1MgZW11bGF0aW9uXCYjMzQ7XG4tLVxuYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnLTI1MC1cbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZzoyNTE6Y29uZmlnIEtWTV9YSVZFXG5hcmNoL3Bvd2VycGMva3ZtL0tjb25maWctMjUyLVx0Ym9vbFxuLS1cbmFyY2gvcG93ZXJwYy9wbGF0Zm9ybXMvS2NvbmZpZz0yMj1zb3VyY2UgXCYjMzQ7YXJjaC9wb3dlcnBjL3BsYXRmb3Jtcy9taWNyb3dhdHQvS2NvbmZpZ1wmIzM0O1xuYXJjaC9wb3dlcnBjL3BsYXRmb3Jtcy9LY29uZmlnLTIzLVxuYXJjaC9wb3dlcnBjL3BsYXRmb3Jtcy9LY29uZmlnOjI0OmNvbmZpZyBLVk1fR1VFU1RcbmFyY2gvcG93ZXJwYy9wbGF0Zm9ybXMvS2NvbmZpZy0yNS1cdGJvb2wgXCYjMzQ7S1ZNIEd1ZXN0IHN1cHBvcnRcJiMzNDtcbi0tXG5hcmNoL3Jpc2N2L2t2bS9LY29uZmlnPTE4PWlmIFZJUlRVQUxJWkFUSU9OXG5hcmNoL3Jpc2N2L2t2bS9LY29uZmlnLTE5LVxuYXJjaC9yaXNjdi9rdm0vS2NvbmZpZzoyMDpjb25maWcgS1ZNXG5hcmNoL3Jpc2N2L2t2bS9LY29uZmlnLTIxLVx0dHJpc3RhdGUgXCYjMzQ7S2VybmVsLWJhc2VkIFZpcnR1YWwgTWFjaGluZSAoS1ZNKSBzdXBwb3J0XCYjMzQ7XG4tLVxuYXJjaC9zMzkwL2t2bS9LY29uZmlnPTE3PWlmIFZJUlRVQUxJWkFUSU9OXG5hcmNoL3MzOTAva3ZtL0tjb25maWctMTgtXG5hcmNoL3MzOTAva3ZtL0tjb25maWc6MTk6Y29uZmlnIEtWTVxuYXJjaC9zMzkwL2t2bS9LY29uZmlnLTIwLVx0ZGVmX3RyaXN0YXRlIHlcbi0tXG5hcmNoL3MzOTAva3ZtL0tjb25maWctNDYtXG5hcmNoL3MzOTAva3ZtL0tjb25maWc6NDc6Y29uZmlnIEtWTV9TMzkwX1VDT05UUk9MXG5hcmNoL3MzOTAva3ZtL0tjb25maWctNDgtXHRib29sIFwmIzM0O1VzZXJzcGFjZSBjb250cm9sbGVkIHZpcnR1YWwgbWFjaGluZXNcJiMzNDtcbi0tXG5hcmNoL3g4Ni9LY29uZmlnPTgyNj1zb3VyY2UgXCYjMzQ7YXJjaC94ODYveGVuL0tjb25maWdcJiMzNDtcbmFyY2gveDg2L0tjb25maWctODI3LVxuYXJjaC94ODYvS2NvbmZpZzo4Mjg6Y29uZmlnIEtWTV9HVUVTVFxuYXJjaC94ODYvS2NvbmZpZy04MjktXHRib29sIFwmIzM0O0tWTSBHdWVzdCBzdXBwb3J0IChpbmNsdWRpbmcga3ZtY2xvY2spXCYjMzQ7XG4tLVxuYXJjaC94ODYva3ZtL0tjb25maWc9MTg9aWYgVklSVFVBTElaQVRJT05cbmFyY2gveDg2L2t2bS9LY29uZmlnLTE5LVxuYXJjaC94ODYva3ZtL0tjb25maWc6MjA6Y29uZmlnIEtWTV9YODZcbmFyY2gveDg2L2t2bS9LY29uZmlnLTIxLVx0ZGVmX3RyaXN0YXRlIEtWTSBpZiAoS1ZNX0lOVEVMICE9IG4gfHwgS1ZNX0FNRCAhPSBuKVxuLS1cbmFyY2gveDg2L2t2bS9LY29uZmlnLTUyLVxuYXJjaC94ODYva3ZtL0tjb25maWc6NTM6Y29uZmlnIEtWTVxuYXJjaC94ODYva3ZtL0tjb25maWctNTQtXHR0cmlzdGF0ZSBcJiMzNDtLZXJuZWwtYmFzZWQgVmlydHVhbCBNYWNoaW5lIChLVk0pIHN1cHBvcnRcJiMzNDtcbi0tXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy02OS1cbmFyY2gveDg2L2t2bS9LY29uZmlnOjcwOmNvbmZpZyBLVk1fV0VSUk9SXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy03MS1cdGJvb2wgXCYjMzQ7Q29tcGlsZSBLVk0gd2l0aCAtV2Vycm9yXCYjMzQ7XG4tLVxuYXJjaC94ODYva3ZtL0tjb25maWctODMtXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZzo4NDpjb25maWcgS1ZNX1NXX1BST1RFQ1RFRF9WTVxuYXJjaC94ODYva3ZtL0tjb25maWctODUtXHRib29sIFwmIzM0O0VuYWJsZSBzdXBwb3J0IGZvciBLVk0gc29mdHdhcmUtcHJvdGVjdGVkIFZNc1wmIzM0O1xuLS1cbmFyY2gveDg2L2t2bS9LY29uZmlnLTk2LVxuYXJjaC94ODYva3ZtL0tjb25maWc6OTc6Y29uZmlnIEtWTV9JTlRFTFxuYXJjaC94ODYva3ZtL0tjb25maWctOTgtXHR0cmlzdGF0ZSBcJiMzNDtLVk0gZm9yIEludGVsIChhbmQgY29tcGF0aWJsZSkgcHJvY2Vzc29ycyBzdXBwb3J0XCYjMzQ7XG4tLVxuYXJjaC94ODYva3ZtL0tjb25maWctMTA3LVxuYXJjaC94ODYva3ZtL0tjb25maWc6MTA4OmNvbmZpZyBLVk1fSU5URUxfUFJPVkVfVkVcbmFyY2gveDg2L2t2bS9LY29uZmlnLTEwOS0gICAgICAgIGJvb2wgXCYjMzQ7Q2hlY2sgdGhhdCBndWVzdHMgZG8gbm90IHJlY2VpdmUgI1ZFIGV4Y2VwdGlvbnNcJiMzNDtcbi0tXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZz0xMjM9Y29uZmlnIFg4Nl9TR1hfS1ZNXG4tLVxuYXJjaC94ODYva3ZtL0tjb25maWctMTM0LVxuYXJjaC94ODYva3ZtL0tjb25maWc6MTM1OmNvbmZpZyBLVk1fSU5URUxfVERYXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0xMzYtXHRib29sIFwmIzM0O0ludGVsIFRydXN0IERvbWFpbiBFeHRlbnNpb25zIChURFgpIHN1cHBvcnRcJiMzNDtcbi0tXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0xNDYtXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZzoxNDc6Y29uZmlnIEtWTV9BTURcbmFyY2gveDg2L2t2bS9LY29uZmlnLTE0OC1cdHRyaXN0YXRlIFwmIzM0O0tWTSBmb3IgQU1EIHByb2Nlc3NvcnMgc3VwcG9ydFwmIzM0O1xuLS1cbmFyY2gveDg2L2t2bS9LY29uZmlnLTE1Ni1cbmFyY2gveDg2L2t2bS9LY29uZmlnOjE1Nzpjb25maWcgS1ZNX0FNRF9TRVZcbmFyY2gveDg2L2t2bS9LY29uZmlnLTE1OC1cdGJvb2wgXCYjMzQ7QU1EIFNlY3VyZSBFbmNyeXB0ZWQgVmlydHVhbGl6YXRpb24gKFNFVikgc3VwcG9ydFwmIzM0O1xuLS1cbmFyY2gveDg2L2t2bS9LY29uZmlnLTE3Mi1cbmFyY2gveDg2L2t2bS9LY29uZmlnOjE3Mzpjb25maWcgS1ZNX0lPQVBJQ1xuYXJjaC94ODYva3ZtL0tjb25maWctMTc0LVx0Ym9vbCBcJiMzNDtJL08gQVBJQywgUElDLCBhbmQgUElUIGVtdWxhdGlvblwmIzM0O1xuLS1cbmFyY2gveDg2L2t2bS9LY29uZmlnLTE4Mi1cbmFyY2gveDg2L2t2bS9LY29uZmlnOjE4Mzpjb25maWcgS1ZNX1NNTVxuYXJjaC94ODYva3ZtL0tjb25maWctMTg0LVx0Ym9vbCBcJiMzNDtTeXN0ZW0gTWFuYWdlbWVudCBNb2RlIGVtdWxhdGlvblwmIzM0O1xuLS1cbmFyY2gveDg2L2t2bS9LY29uZmlnLTE5My1cbmFyY2gveDg2L2t2bS9LY29uZmlnOjE5NDpjb25maWcgS1ZNX0hZUEVSVlxuYXJjaC94ODYva3ZtL0tjb25maWctMTk1LVx0Ym9vbCBcJiMzNDtTdXBwb3J0IGZvciBNaWNyb3NvZnQgSHlwZXItViBlbXVsYXRpb25cJiMzNDtcbi0tXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0yMDctXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZzoyMDg6Y29uZmlnIEtWTV9YRU5cbmFyY2gveDg2L2t2bS9LY29uZmlnLTIwOS1cdGJvb2wgXCYjMzQ7U3VwcG9ydCBmb3IgWGVuIGh5cGVyY2FsbCBpbnRlcmZhY2VcJiMzNDtcbi0tXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0yMTYtXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZzoyMTc6Y29uZmlnIEtWTV9QUk9WRV9NTVVcbmFyY2gveDg2L2t2bS9LY29uZmlnLTIxOC1cdGJvb2wgXCYjMzQ7UHJvdmUgS1ZNIE1NVSBjb3JyZWN0bmVzc1wmIzM0O1xuLS1cbmFyY2gveDg2L2t2bS9LY29uZmlnLTIyOS1cbmFyY2gveDg2L2t2bS9LY29uZmlnOjIzMDpjb25maWcgS1ZNX0VYVEVSTkFMX1dSSVRFX1RSQUNLSU5HXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0yMzEtXHRib29sXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0yMzItXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZzoyMzM6Y29uZmlnIEtWTV9NQVhfTlJfVkNQVVNcbmFyY2gveDg2L2t2bS9LY29uZmlnLTIzNC1cdGludCBcJiMzNDtNYXhpbXVtIG51bWJlciBvZiB2Q1BVcyBwZXIgS1ZNIGd1ZXN0XCYjMzQ7XG4tLVxudmlydC9rdm0vS2NvbmZpZy0zLVxudmlydC9rdm0vS2NvbmZpZzo0OmNvbmZpZyBLVk1fQ09NTU9OXG52aXJ0L2t2bS9LY29uZmlnLTUtICAgICAgIGJvb2xcbi0tXG52aXJ0L2t2bS9LY29uZmlnPTM5PWNvbmZpZyBORUVEX0tWTV9ESVJUWV9SSU5HX1dJVEhfQklUTUFQXG4tLVxudmlydC9rdm0vS2NvbmZpZy00Mi1cbnZpcnQva3ZtL0tjb25maWc6NDM6Y29uZmlnIEtWTV9NTUlPXG52aXJ0L2t2bS9LY29uZmlnLTQ0LSAgICAgICBib29sXG52aXJ0L2t2bS9LY29uZmlnLTQ1LVxudmlydC9rdm0vS2NvbmZpZzo0Njpjb25maWcgS1ZNX0FTWU5DX1BGXG52aXJ0L2t2bS9LY29uZmlnLTQ3LSAgICAgICBib29sXG4tLVxudmlydC9rdm0vS2NvbmZpZy00OS0jIFRvZ2dsZSB0byBzd2l0Y2ggYmV0d2VlbiBkaXJlY3Qgbm90aWZpY2F0aW9uIGFuZCBiYXRjaCBqb2JcbnZpcnQva3ZtL0tjb25maWc6NTA6Y29uZmlnIEtWTV9BU1lOQ19QRl9TWU5DXG52aXJ0L2t2bS9LY29uZmlnLTUxLSAgICAgICBib29sXG4tLVxudmlydC9rdm0vS2NvbmZpZz01OT1jb25maWcgSEFWRV9LVk1fQ1BVX1JFTEFYX0lOVEVSQ0VQVFxuLS1cbnZpcnQva3ZtL0tjb25maWctNjEtXG52aXJ0L2t2bS9LY29uZmlnOjYyOmNvbmZpZyBLVk1fVkZJT1xudmlydC9rdm0vS2NvbmZpZy02My0gICAgICAgYm9vbFxuLS1cbnZpcnQva3ZtL0tjb25maWc9NjU9Y29uZmlnIEhBVkVfS1ZNX0lOVkFMSURfV0FLRVVQU1xuLS1cbnZpcnQva3ZtL0tjb25maWctNjctXG52aXJ0L2t2bS9LY29uZmlnOjY4OmNvbmZpZyBLVk1fR0VORVJJQ19ESVJUWUxPR19SRUFEX1BST1RFQ1RcbnZpcnQva3ZtL0tjb25maWctNjktICAgICAgIGJvb2xcbnZpcnQva3ZtL0tjb25maWctNzAtXG52aXJ0L2t2bS9LY29uZmlnOjcxOmNvbmZpZyBLVk1fR0VORVJJQ19QUkVfRkFVTFRfTUVNT1JZXG52aXJ0L2t2bS9LY29uZmlnLTcyLSAgICAgICBib29sXG52aXJ0L2t2bS9LY29uZmlnLTczLVxudmlydC9rdm0vS2NvbmZpZzo3NDpjb25maWcgS1ZNX0NPTVBBVFxudmlydC9rdm0vS2NvbmZpZy03NS0gICAgICAgZGVmX2Jvb2wgeVxuLS1cbnZpcnQva3ZtL0tjb25maWc9OTE9Y29uZmlnIEhBVkVfS1ZNX1BNX05PVElGSUVSXG4tLVxudmlydC9rdm0vS2NvbmZpZy05My1cbnZpcnQva3ZtL0tjb25maWc6OTQ6Y29uZmlnIEtWTV9HRU5FUklDX0hBUkRXQVJFX0VOQUJMSU5HXG52aXJ0L2t2bS9LY29uZmlnLTk1LSAgICAgICBib29sXG52aXJ0L2t2bS9LY29uZmlnLTk2LVxudmlydC9rdm0vS2NvbmZpZzo5Nzpjb25maWcgS1ZNX0VMSURFX1RMQl9GTFVTSF9JRl9ZT1VOR1xudmlydC9rdm0vS2NvbmZpZy05OC0gICAgICAgYm9vbFxudmlydC9rdm0vS2NvbmZpZy05OS1cbnZpcnQva3ZtL0tjb25maWc6MTAwOmNvbmZpZyBLVk1fTU1VX0xPQ0tMRVNTX0FHSU5HXG52aXJ0L2t2bS9LY29uZmlnLTEwMS0gICAgICAgYm9vbFxudmlydC9rdm0vS2NvbmZpZy0xMDItXG52aXJ0L2t2bS9LY29uZmlnOjEwMzpjb25maWcgS1ZNX0dFTkVSSUNfTUVNT1JZX0FUVFJJQlVURVNcbnZpcnQva3ZtL0tjb25maWctMTA0LSAgICAgICBib29sXG52aXJ0L2t2bS9LY29uZmlnLTEwNS1cbnZpcnQva3ZtL0tjb25maWc6MTA2OmNvbmZpZyBLVk1fR1VFU1RfTUVNRkRcbnZpcnQva3ZtL0tjb25maWctMTA3LSAgICAgICBzZWxlY3QgWEFSUkFZX01VTFRJXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTYgMDY6MDA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTMyMDkKCQkJCQkJCW91dHB1dDogMjgKCQkJCQkJCXRob3VnaHRzOiAxODkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgS1ZNIENvbmZpZ3VyYXRpb24gQW5hbHlzaXMqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoZXNlIGNvbmZpZ3VyYXRpb25zLiBUaGUgZm9jdXMgaXMgZGVmaW5pdGVseSBgS1ZNYC4gRm9yIHg4NiwgaXQmIzM5O3MgcHJldHR5IHN0YW5kYXJkIHRoYXQgYEtWTWAgcmVsaWVzIG9uIGVpdGhlciBgS1ZNX0lOVEVMYCBvciBgS1ZNX0FNRGAsIGJ1dCBgS1ZNYCBpdHNlbGYgaXMgdGhlIGNvcmUuIFJpZ2h0LCBgS1ZNYCBpcyBkZWZpbmVkIGFzIGEgdHJpc3RhdGUgb3B0aW9uIGZvciAmIzM0O0tlcm5lbC1iYXNlZCBWaXJ0dWFsIE1hY2hpbmUgKEtWTSkgc3VwcG9ydC4mIzM0OyBUaGF0IG1ha2VzIHNlbnNlOyBJJiMzOTtsbCBkZWZpbml0ZWx5IGluY2x1ZGUgYEtWTWAgaW4gdGhlIGBFbmFibGVDb25maWdzYCBsaXN0LgoKTm93LCBsZXQmIzM5O3MganVzdCBxdWlja2x5IGNvbmZpcm0gdGhhdCBgSEFWRV9LVk1fVkNQVV9SVU5fUElEX0NIQU5HRWAgaXMgc29tZXRoaW5nIHdlIG5lZWQgdG8gY29uc2lkZXIuIEFoLCB5ZXMsIGl0JiMzOTtzIHNlbGVjdGVkIGJ5IGJvdGggYEtWTV9YODZgIGFuZCBgS1ZNYCBvbiBhcm02NCBhcmNoaXRlY3R1cmVzLiBOb3cgaG9sZCBvbiBhIHNlY29uZC4uLiB0aGUgZGlmZiBkb2VzbiYjMzk7dCBzZWVtIHRvIGV4cGxpY2l0bHkgYWRkIGBIQVZFX0tWTV9WQ1BVX1JVTl9QSURfQ0hBTkdFYCB0byB0aGUgYGFyY2gvYXJtNjQva3ZtL0tjb25maWdgIGZpbGUuIEkmIzM5O2QgYmV0dGVyIGRvdWJsZS1jaGVjayB0aGUgYGFyY2gvYXJtNjQva3ZtL0tjb25maWdgIHRvIGJlIGFic29sdXRlbHkgc3VyZSB3aGF0JiMzOTtzIGdvaW5nIG9uIHRoZXJlLiBHb3R0YSBiZSB0aG9yb3VnaC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTYgMDY6MDA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7SEFWRV9LVk1fVkNQVV9SVU5fUElEX0NIQU5HRSYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDthcmNoL2FybTY0L2t2bS9LY29uZmlnPTIwPW1lbnVjb25maWcgS1ZNXG4tLVxuYXJjaC9hcm02NC9rdm0vS2NvbmZpZy0zNS1cdHNlbGVjdCBIQVZFX0tWTV9SRUFET05MWV9NRU1cbmFyY2gvYXJtNjQva3ZtL0tjb25maWc6MzY6XHRzZWxlY3QgSEFWRV9LVk1fVkNQVV9SVU5fUElEX0NIQU5HRVxuYXJjaC9hcm02NC9rdm0vS2NvbmZpZy0zNy1cdHNlbGVjdCBTQ0hFRF9JTkZPXG4tLVxuYXJjaC94ODYva3ZtL0tjb25maWc9MjA9Y29uZmlnIEtWTV9YODZcbi0tXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy00Mi1cdHNlbGVjdCBIQVZFX0tWTV9OT19QT0xMXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZzo0MzpcdHNlbGVjdCBIQVZFX0tWTV9WQ1BVX1JVTl9QSURfQ0hBTkdFXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy00NC1cdHNlbGVjdCBWSVJUX1hGRVJfVE9fR1VFU1RfV09SS1xuLS1cbmluY2x1ZGUvbGludXgva3ZtX2hvc3QuaD0yNDYwPXZvaWQga3ZtX2FyY2hfZ3Vlc3RfbWVtb3J5X3JlY2xhaW1lZChzdHJ1Y3Qga3ZtICprdm0pO1xuaW5jbHVkZS9saW51eC9rdm1faG9zdC5oLTI0NjEtXG5pbmNsdWRlL2xpbnV4L2t2bV9ob3N0Lmg6MjQ2MjojaWZkZWYgQ09ORklHX0hBVkVfS1ZNX1ZDUFVfUlVOX1BJRF9DSEFOR0VcbmluY2x1ZGUvbGludXgva3ZtX2hvc3QuaC0yNDYzLWludCBrdm1fYXJjaF92Y3B1X3J1bl9waWRfY2hhbmdlKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSk7XG4tLVxuaW5jbHVkZS9saW51eC9rdm1faG9zdC5oPTI0NjU9c3RhdGljIGlubGluZSBpbnQga3ZtX2FyY2hfdmNwdV9ydW5fcGlkX2NoYW5nZShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXG4tLVxuaW5jbHVkZS9saW51eC9rdm1faG9zdC5oLTI0NjgtfVxuaW5jbHVkZS9saW51eC9rdm1faG9zdC5oOjI0Njk6I2VuZGlmIC8qIENPTkZJR19IQVZFX0tWTV9WQ1BVX1JVTl9QSURfQ0hBTkdFICovXG5pbmNsdWRlL2xpbnV4L2t2bV9ob3N0LmgtMjQ3MC1cbi0tXG52aXJ0L2t2bS9LY29uZmlnPTc4PWNvbmZpZyBIQVZFX0tWTV9JUlFfQllQQVNTXG4tLVxudmlydC9rdm0vS2NvbmZpZy04MS1cbnZpcnQva3ZtL0tjb25maWc6ODI6Y29uZmlnIEhBVkVfS1ZNX1ZDUFVfUlVOX1BJRF9DSEFOR0VcbnZpcnQva3ZtL0tjb25maWctODMtICAgICAgIGJvb2xcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTYgMDY6MDA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTQyNDYKCQkJCQkJCW91dHB1dDogMTY1CgkJCQkJCQl0aG91Z2h0czogMjEyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFzc2Vzc21lbnQgb2YgdGhlIEtWTSBTdGVhbC1UaW1lIFJlc2V0IFBhdGNoKioKCk9rYXksIHNvIEkgc2VlIHRoaXMgcGF0Y2ggaXMgdHJpZ2dlcmVkIGJ5IGBLVk1gIG9uIGFybTY0IGFuZCBgS1ZNX1g4NmAgb24geDg2LCB3aGljaCBjb25maXJtcyBgS1ZNYCBpcyB0aGUgcHJpbWFyeSBjb25maWd1cmF0aW9uIHZhcmlhYmxlIGF0IHBsYXkgaGVyZS4gTGV0IG1lIHF1aWNrbHkgc2NhbiBmb3IgYW55IG90aGVyIHBvdGVudGlhbGx5IHJlbGV2YW50IGNvbmZpZ3VyYXRpb25zLi4uIG5vcGUsIGBLVk1gIHNlZW1zIHRvIGJlIHRoZSBvbmx5IHRoaW5nIHdlIG5lZWQgdG8gY29uc2lkZXIuCgpUaGUgY29yZSBvZiB0aGUgY2hhbmdlIHJldm9sdmVzIGFyb3VuZCByZXNldHRpbmcgc3RlYWwtdGltZSBhY2NvdW50aW5nIHdoZW4gYSBLVk0gdkNQVSB0cmFuc2l0aW9ucyB0byBhIG5ldyBob3N0IFBJRC4gVGhpcyBkaXJlY3RseSBpbXBhY3RzIGNvcmUgS1ZNIGxvZ2ljIGFjcm9zcyBib3RoIEFSTTY0IGFuZCB4ODYgYXJjaGl0ZWN0dXJlcywgYW5kIHRoZSBjb2RlIGludHJvZHVjZXMgYGt2bV9hcmNoX3ZjcHVfcnVuX3BpZF9jaGFuZ2VgIGFuZCBga3ZtX3Jlc2V0X3N0b2xlbl90aW1lYC4gVGhlc2UgYXJlIHNpZ25pZmljYW50IGZ1bmN0aW9uYWwgYWRkaXRpb25zIHdpdGhpbiB0aGUgS1ZNIGNvZGUuIEdpdmVuIHRoZWlyIGRpcmVjdCBpbXBhY3Qgb24gdkNQVSBtaWdyYXRpb24gYmVoYXZpb3IsIHRoaXMgaXMgYW4gYXJlYSB0aGF0ICphYnNvbHV0ZWx5KiB3YXJyYW50cyB0YXJnZXRlZCBmdXp6aW5nLiBXZSBuZWVkIHRvIGVuc3VyZSB0aGF0IHRoaXMgY2hhbmdlIGRvZXNuJiMzOTt0IGludHJvZHVjZSBhbnkgcGVyZm9ybWFuY2UgcmVncmVzc2lvbnMgb3IsIGV2ZW4gd29yc2UsIHVuYW50aWNpcGF0ZWQgYmVoYXZpb3JhbCBzaGlmdHMgZHVyaW5nIHZDUFUgdGhyZWFkIG1pZ3JhdGlvbnMuCgpSaWdodCwgSSYjMzk7bSBjb25maWRlbnQgaW4gdGhpcyBldmFsdWF0aW9uLCBJJiMzOTtsbCBnbyBhaGVhZCBhbmQgbG9nIHRoZSByZXN1bHRzIG5vdy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTYgMDY6MDA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0tWTSYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2t2bV9hcmNoX3ZjcHVfcnVuX3BpZF9jaGFuZ2UmIzM0OywKICAgICYjMzQ7a3ZtX3Jlc2V0X3N0b2xlbl90aW1lJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGludHJvZHVjZXMgYSBtZWNoYW5pc20gdG8gcmVzZXQgc3RlYWwtdGltZSBhY2NvdW50aW5nIHdoZW4gYSBLVk0gdkNQVSBpcyBydW4gZnJvbSBhIGRpZmZlcmVudCBob3N0IFBJRC4gSXQgbW9kaWZpZXMgY29yZSBLVk0gbG9naWMgZm9yIGJvdGggQVJNNjQgYW5kIHg4NiBhcmNoaXRlY3R1cmVzLCBhZGRpbmcgYGt2bV9hcmNoX3ZjcHVfcnVuX3BpZF9jaGFuZ2VgIGFuZCBga3ZtX3Jlc2V0X3N0b2xlbl90aW1lYC4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIHRvIHJlYWNoYWJsZSBLVk0gY29kZSB0aGF0IHNob3VsZCBiZSBmdXp6ZWQgdG8gZW5zdXJlIGl0IGRvZXNuJiMzOTt0IGludHJvZHVjZSByZWdyZXNzaW9ucyBvciB1bmV4cGVjdGVkIGJlaGF2aW9yIGR1cmluZyB2Q1BVIHRocmVhZCBtaWdyYXRpb25zLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtLVk0mIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtrdm1fYXJjaF92Y3B1X3J1bl9waWRfY2hhbmdlJiMzNDssCiAgICAmIzM0O2t2bV9yZXNldF9zdG9sZW5fdGltZSYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBpbnRyb2R1Y2VzIGEgbWVjaGFuaXNtIHRvIHJlc2V0IHN0ZWFsLXRpbWUgYWNjb3VudGluZyB3aGVuIGEgS1ZNIHZDUFUgaXMgcnVuIGZyb20gYSBkaWZmZXJlbnQgaG9zdCBQSUQuIEl0IG1vZGlmaWVzIGNvcmUgS1ZNIGxvZ2ljIGZvciBib3RoIEFSTTY0IGFuZCB4ODYgYXJjaGl0ZWN0dXJlcywgYWRkaW5nIGBrdm1fYXJjaF92Y3B1X3J1bl9waWRfY2hhbmdlYCBhbmQgYGt2bV9yZXNldF9zdG9sZW5fdGltZWAuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSB0byByZWFjaGFibGUgS1ZNIGNvZGUgdGhhdCBzaG91bGQgYmUgZnV6emVkIHRvIGVuc3VyZSBpdCBkb2VzbiYjMzk7dCBpbnRyb2R1Y2UgcmVncmVzc2lvbnMgb3IgdW5leHBlY3RlZCBiZWhhdmlvciBkdXJpbmcgdkNQVSB0aHJlYWQgbWlncmF0aW9ucy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMy8xPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTYgMDY6MDA8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPklmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xNiAwNjowMDwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5rbXNhbi1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5iZXN0LWV4cGVuc2l2ZTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtLTVNBTlJlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBzaW1wbHkgcmVzZXRzIHRoZSBLVk0gc3RlYWwgdGltZSBhY2NvdW50aW5nIGJhc2UgKGBsYXN0X3N0ZWFsYCkgdG8gdGhlIGN1cnJlbnQgdGFzayYjMzk7cyBgcnVuX2RlbGF5YCB3aGVuIGEgdkNQVSB0aHJlYWQgY2hhbmdlcyBpdHMgaG9zdCBQSUQuIFRoaXMgaW52b2x2ZXMgcmVhZGluZyBhIGZ1bGx5IGluaXRpYWxpemVkIHNjYWxhciB2YWx1ZSAoYGN1cnJlbnQtXHUwMDNlc2NoZWRfaW5mby5ydW5fZGVsYXlgKSBmcm9tIHRoZSBzY2hlZHVsZXIgYW5kIGFzc2lnbmluZyBpdCB0byBhIGZpZWxkIGluIHRoZSB2Q1BVIGFyY2hpdGVjdHVyZSBzdHJ1Y3R1cmUuIE5vIG5ldyBtZW1vcnkgYWxsb2NhdGlvbnMgYXJlIGludHJvZHVjZWQsIG5vIHN0cnVjdHVyZXMgYXJlIGNvcGllZCB0byB1c2VyIHNwYWNlLCBhbmQgbm8gY29tcGxleCBkYXRhIHN0cnVjdHVyZXMgYXJlIG1hbmlwdWxhdGVkIGluIGEgd2F5IHRoYXQgY291bGQgZXhwb3NlIHVuaW5pdGlhbGl6ZWQgbWVtb3J5LiBUaGVyZWZvcmUsIHRoZXJlIGlzIG5vIHJpc2sgb2YgdW5pbml0aWFsaXplZCBtZW1vcnkgdXNlIG9yIGluZm8tbGVha3MsIGFuZCBhIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaXMgbm90IHJlcXVpcmVkLiYjMzQ7LAogICYjMzQ7TmVlZHNLTVNBTiYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBzZWN1cml0eSBlbmdpbmVlciBzcGVjaWFsaXppbmcgaW4ga2VybmVsIG1lbW9yeQplcnJvciBkZXRlY3RvcnMgKEtBU0FOIGFuZCBLTVNBTikuIFlvdXIgam9iIGlzIHRvIHJldmlldyB0aGUgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZApkZXRlcm1pbmUgaWYgdGhlIGNvZGUgY2hhbmdlcyBqdXN0aWZ5IHNwYXduaW5nIGEgZGVkaWNhdGVkIEtNU0FOIChLZXJuZWxNZW1vcnlTYW5pdGl6ZXIpCmZ1enppbmcgc2Vzc2lvbiBpbiBhZGRpdGlvbiB0byBzdGFuZGFyZCBLQVNBTiBmdXp6aW5nLgoKQ1JJVElDQUwgRElTVElOQ1RJT04gQkVUV0VFTiBLQVNBTiBBTkQgS01TQU46Ci0gU3RhbmRhcmQgS0FTQU4ga2VybmVsIGJ1aWxkcyAodXBzdHJlYW0tYXBwYXJtb3Ita2FzYW4uY29uZmlnKSBhbHJlYWR5IGVuYWJsZQogIGEgY29tcHJlaGVuc2l2ZSBzdWl0ZSBvZiBkZWJ1Z2dpbmcgdG9vbHMgYW5kIHNhbml0aXplcnMsIGluY2x1ZGluZyBLQVNBTgogIChvdXQtb2YtYm91bmRzIGFjY2Vzc2VzLCB1c2UtYWZ0ZXItZnJlZSwgZG91YmxlIGZyZWUsIGludmFsaWQgZnJlZSksIExPQ0tERVAKICAobG9ja2luZyBidWdzIGFuZCBkZWFkbG9ja3MpLCBVQi1zYW5pdGl6ZXJzLCBhbmQgbWVtb3J5IGNvcnJ1cHRpb24gY2hlY2tzLgotIEtNU0FOIChLZXJuZWxNZW1vcnlTYW5pdGl6ZXIpIGRldGVjdHMgcmVhZHMgb2YgVU5JTklUSUFMSVpFRCBtZW1vcnkgKHN0YWNrLCBoZWFwLAogIG9yIHBhZ2UgYWxsb2NhdGlvbnMpIGFuZCBrZXJuZWwtdG8tdXNlciBtZW1vcnkgaW5mby1sZWFrcy4KClJ1bGU6IFRIRVJFIElTIE5PIFNFTlNFIElOIFJVTk5JTkcgQSBLTVNBTiBTRVNTSU9OIElGIEEgQlVHIENBTiBCRSBDQVVHSFQgQlkgS0FTQU4sCkxPQ0tERVAsIE9SIE9USEVSIFNUQU5EQVJEIEJVRyBERVRFQ1RPUlMuCkEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpbmN1cnMgc2lnbmlmaWNhbnQgcmVzb3VyY2UgY29zdHMuIFlvdSBtdXN0IE9OTFkKc2V0IE5lZWRzS01TQU49dHJ1ZSBpZiB0aGUgY29kZSBjaGFuZ2VzIGludHJvZHVjZSBvciBleHBvc2UgVU5JTklUSUFMSVpFRCBNRU1PUlkgcmlza3MKdGhhdCBhcmUgZGV0ZWN0ZWQgT05MWSBieSBLTVNBTi4KCkxvb2sgaG9saXN0aWNhbGx5IGF0IHRoZSBwYXRjaCBzZXJpZXMgYW5kIHN1cnJvdW5kaW5nIGNvZGUuIEV2ZW4gaWYgbm8gZGlyZWN0CnVuaW5pdGlhbGl6ZWQgZmllbGQgYWNjZXNzZXMgb3IgbmV3IGJ1ZmZlciBhbGxvY2F0aW9ucyBhcmUgYWRkZWQgaW4gdGhlIGRpZmYgaXRzZWxmLAphIHBhdGNoIG1heSBhbHRlciBjb250cm9sIGZsb3csIGJvdW5kcyBjaGVja2luZywgb3IgZGF0YSBsZW5ndGggY2FsY3VsYXRpb25zIGluIHdheXMKdGhhdCBjaGFuZ2UgaG93IHRoZSByZXN0IG9mIHRoZSBjb2RlIG9wZXJhdGVzIG9uIGV4aXN0aW5nIGJ1ZmZlcnMgKGUuZy4gYWxsb3dpbmcKdW5pbml0aWFsaXplZCBzdGFjay9oZWFwIG1lbW9yeSB0byBiZSByZWFkLCBjb3BpZWQgdG8gdXNlciBzcGFjZSwgb3IgdXNlZCBpbiBjb250cm9sCmZsb3cpLiBEbyBub3QgaGVzaXRhdGUgdG8gdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gaW5zcGVjdCB0aGUgc3Vycm91bmRpbmcgY29kZSwKY2FsbGVkIGZ1bmN0aW9ucywgYW5kIGNhbGxlcnMuCgpTZXQgTmVlZHNLTVNBTj10cnVlIE9OTFkgSUYgdGhlIHBhdGNoIGludHJvZHVjZXMgb3IgbW9kaWZpZXM6CjEuIEtlcm5lbCBzdHJ1Y3R1cmVzIHNlbnQgdG8gdXNlciBzcGFjZSAodmlhIGNvcHlfdG9fdXNlciwgcHV0X3VzZXIsIG5ldGxpbmsgc2tiCiAgIGF0dHJpYnV0ZXMsIGlvY3RsIG91dHB1dCBhcmd1bWVudHMsIHNvY2tldCBvcHRpb25zLCBvciBCUEYgYnVmZmVycykgd2hlcmUgZmllbGRzCiAgIG9yIHN0cnVjdHVyZSBwYWRkaW5nIG1pZ2h0IG5vdCBiZSBmdWxseSBpbml0aWFsaXplZC96ZXJvZWQuCjIuIENvbmRpdGlvbmFsIGxvZ2ljIG9yIGJyYW5jaGluZyB0aGF0IGRlcGVuZHMgb24gcG90ZW50aWFsbHkgdW5pbml0aWFsaXplZCB2YXJpYWJsZXMKICAgb3Igc3RydWN0IGZpZWxkcy4KMy4gQWxsb2NhdGlvbiBvciBpbml0aWFsaXphdGlvbiBvZiBjb21wbGV4IGRhdGEgc3RydWN0dXJlcyB3aGVyZSB1bmluaXRpYWxpemVkIGZpZWxkcwogICBjb3VsZCBiZSByZWFkIGxhdGVyIGluIHJlYWNoYWJsZSBjb2RlIHBhdGhzLgo0LiBCb3VuZHMgY2hlY2tzLCBsZW5ndGhzLCBvciBsb2dpYyBpbiBhIHdheSB0aGF0IGFsbG93cyBzdXJyb3VuZGluZyBjb2RlIHRvIGFjY2VzcwogICB1bmluaXRpYWxpemVkIGJ5dGVzIG9mIGV4aXN0aW5nIGJ1ZmZlcnMuCgpTZXQgTmVlZHNLTVNBTj1mYWxzZSBJRjoKLSBUaGUgY29kZSBjaGFuZ2VzIHByaW1hcmlseSByaXNrIG91dC1vZi1ib3VuZHMgYWNjZXNzLCBhcnJheSBvdmVyZmxvd3MsIE5VTEwgcG9pbnRlcgogIGRlcmVmZXJlbmNlcywgbG9ja2luZyBkZWFkbG9ja3MsIG9yIHVzZS1hZnRlci1mcmVlIGJ1Z3MgKHRoZXNlIGFyZSBhbHJlYWR5IGNhdWdodAogIGJ5IEtBU0FOLCBMT0NLREVQLCBvciBzdGFuZGFyZCBidWcgZGV0ZWN0b3JzKS4KLSBBbGwgc3RhY2svaGVhcCBzdHJ1Y3R1cmVzIHRvdWNoZWQgb3IgaW50cm9kdWNlZCBieSB0aGUgcGF0Y2ggYXJlIGZ1bGx5IHplcm9lZAogIG9yIGluaXRpYWxpemVkIChlLmcuIHVzaW5nID0gezB9LCBtZW1zZXQsIGt6YWxsb2MpIGJlZm9yZSBiZWluZyByZWFkIG9yIGNvcGllZC4KLSBUaGUgcGF0Y2ggZG9lcyBub3QgaW50cm9kdWNlIGFueSByaXNrIG9mIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHVzYWdlIG9yIGluZm8tbGVha3MuCgpVc2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBpbnNwZWN0IHRoZSBzdXJyb3VuZGluZyBjb2RlIGlmIG5lY2Vzc2FyeSwgdGhlbiBwcm92aWRlCmRldGFpbGVkIEtNU0FOUmVhc29uaW5nIGNvbnRyYXN0aW5nIEtBU0FOIHZzIEtNU0FOIGFwcGxpY2FiaWxpdHkgZm9yIHRoaXMgcGF0Y2guClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCBhZjNmYzIzNjczMTkzZWVmYTNiMmQ2YWNhMTljNTVmOWIwYzQ4MjhkCkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIFN1biBBdWcgMTYgMDY6MDA6MTEgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9hcmNoL2FybTY0L2luY2x1ZGUvYXNtL2t2bV9ob3N0LmggYi9hcmNoL2FybTY0L2luY2x1ZGUvYXNtL2t2bV9ob3N0LmgKaW5kZXggYmFlMmM0ZjkyZWY1Yy4uNDYwN2Y5NTZlNzg3OSAxMDA2NDQKLS0tIGEvYXJjaC9hcm02NC9pbmNsdWRlL2FzbS9rdm1faG9zdC5oCiYjNDM7JiM0MzsmIzQzOyBiL2FyY2gvYXJtNjQvaW5jbHVkZS9hc20va3ZtX2hvc3QuaApAQCAtMTMzOSw2ICYjNDM7MTMzOSw3IEBAIHN0YXRpYyBpbmxpbmUgYm9vbCBrdm1fYXJjaF9wbWlfaW5fZ3Vlc3Qoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KQogbG9uZyBrdm1faHlwZXJjYWxsX3B2X2ZlYXR1cmVzKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSk7CiBncGFfdCBrdm1faW5pdF9zdG9sZW5fdGltZShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpOwogdm9pZCBrdm1fdXBkYXRlX3N0b2xlbl90aW1lKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSk7CiYjNDM7dm9pZCBrdm1fcmVzZXRfc3RvbGVuX3RpbWUoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KTsKIAogYm9vbCBrdm1fYXJtX3B2dGltZV9zdXBwb3J0ZWQodm9pZCk7CiBpbnQga3ZtX2FybV9wdnRpbWVfc2V0X2F0dHIoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LApkaWZmIC0tZ2l0IGEvYXJjaC9hcm02NC9rdm0vYXJtLmMgYi9hcmNoL2FybTY0L2t2bS9hcm0uYwppbmRleCA5YTZjNzJhMTg2NzI3Li4wZjZlNjNlYWNlMjFmIDEwMDY0NAotLS0gYS9hcmNoL2FybTY0L2t2bS9hcm0uYwomIzQzOyYjNDM7JiM0MzsgYi9hcmNoL2FybTY0L2t2bS9hcm0uYwpAQCAtOTI5LDYgJiM0Mzs5MjksOCBAQCBpbnQga3ZtX2FyY2hfdmNwdV9ydW5fcGlkX2NoYW5nZShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpCiAJaWYgKCFrdm1fYXJtX3ZjcHVfaXNfZmluYWxpemVkKHZjcHUpKQogCQlyZXR1cm4gLUVQRVJNOwogCiYjNDM7CWt2bV9yZXNldF9zdG9sZW5fdGltZSh2Y3B1KTsKJiM0MzsKIAlpZiAobGlrZWx5KHZjcHVfaGFzX3J1bl9vbmNlKHZjcHUpKSkKIAkJcmV0dXJuIDA7CiAKZGlmZiAtLWdpdCBhL2FyY2gvYXJtNjQva3ZtL3B2dGltZS5jIGIvYXJjaC9hcm02NC9rdm0vcHZ0aW1lLmMKaW5kZXggNGNlYWJhYTRjMzBiZC4uMDAwYmY0OWNjMGZkZiAxMDA2NDQKLS0tIGEvYXJjaC9hcm02NC9rdm0vcHZ0aW1lLmMKJiM0MzsmIzQzOyYjNDM7IGIvYXJjaC9hcm02NC9rdm0vcHZ0aW1lLmMKQEAgLTMyLDYgJiM0MzszMiwxMSBAQCB2b2lkIGt2bV91cGRhdGVfc3RvbGVuX3RpbWUoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KQogCXNyY3VfcmVhZF91bmxvY2soJmFtcDtrdm0tJmd0O3NyY3UsIGlkeCk7CiB9CiAKJiM0Mzt2b2lkIGt2bV9yZXNldF9zdG9sZW5fdGltZShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpCiYjNDM7ewomIzQzOwl2Y3B1LSZndDthcmNoLnN0ZWFsLmxhc3Rfc3RlYWwgPSBjdXJyZW50LSZndDtzY2hlZF9pbmZvLnJ1bl9kZWxheTsKJiM0Mzt9CiYjNDM7CiBsb25nIGt2bV9oeXBlcmNhbGxfcHZfZmVhdHVyZXMoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KQogewogCXUzMiBmZWF0dXJlID0gc21jY2NfZ2V0X2FyZzEodmNwdSk7CmRpZmYgLS1naXQgYS9hcmNoL3g4Ni9rdm0vS2NvbmZpZyBiL2FyY2gveDg2L2t2bS9LY29uZmlnCmluZGV4IDgwMWJmOWU1MjBkYjMuLmI3Y2IyY2VkYTZkOWEgMTAwNjQ0Ci0tLSBhL2FyY2gveDg2L2t2bS9LY29uZmlnCiYjNDM7JiM0MzsmIzQzOyBiL2FyY2gveDg2L2t2bS9LY29uZmlnCkBAIC00MCw2ICYjNDM7NDAsNyBAQCBjb25maWcgS1ZNX1g4NgogCXNlbGVjdCBIQVZFX0tWTV9NU0kKIAlzZWxlY3QgSEFWRV9LVk1fQ1BVX1JFTEFYX0lOVEVSQ0VQVAogCXNlbGVjdCBIQVZFX0tWTV9OT19QT0xMCiYjNDM7CXNlbGVjdCBIQVZFX0tWTV9WQ1BVX1JVTl9QSURfQ0hBTkdFCiAJc2VsZWN0IFZJUlRfWEZFUl9UT19HVUVTVF9XT1JLCiAJc2VsZWN0IEtWTV9HRU5FUklDX0RJUlRZTE9HX1JFQURfUFJPVEVDVAogCXNlbGVjdCBLVk1fVkZJTwpkaWZmIC0tZ2l0IGEvYXJjaC94ODYva3ZtL3g4Ni5jIGIvYXJjaC94ODYva3ZtL3g4Ni5jCmluZGV4IDQ3Y2I5ZWJhMTEzYjEuLjMzYmU0NWVlYzMyYmMgMTAwNjQ0Ci0tLSBhL2FyY2gveDg2L2t2bS94ODYuYwomIzQzOyYjNDM7JiM0MzsgYi9hcmNoL3g4Ni9rdm0veDg2LmMKQEAgLTM3MTcsNiAmIzQzOzM3MTcsMTMgQEAgdm9pZCBrdm1fc2VydmljZV9sb2NhbF90bGJfZmx1c2hfcmVxdWVzdHMoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KQogfQogRVhQT1JUX1NZTUJPTF9GT1JfS1ZNX0lOVEVSTkFMKGt2bV9zZXJ2aWNlX2xvY2FsX3RsYl9mbHVzaF9yZXF1ZXN0cyk7CiAKJiM0MztpbnQga3ZtX2FyY2hfdmNwdV9ydW5fcGlkX2NoYW5nZShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpCiYjNDM7ewomIzQzOwl2Y3B1LSZndDthcmNoLnN0Lmxhc3Rfc3RlYWwgPSBjdXJyZW50LSZndDtzY2hlZF9pbmZvLnJ1bl9kZWxheTsKJiM0MzsKJiM0MzsJcmV0dXJuIDA7CiYjNDM7fQomIzQzOwogc3RhdGljIHZvaWQgcmVjb3JkX3N0ZWFsX3RpbWUoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KQogewogCXN0cnVjdCBnZm5fdG9faHZhX2NhY2hlICpnaGMgPSAmYW1wO3ZjcHUtJmd0O2FyY2guc3QuY2FjaGU7CmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0vTWFrZWZpbGUua3ZtIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL01ha2VmaWxlLmt2bQppbmRleCA2ZmMzNGU5YmY4ZTFiLi5iMDFhMzQwM2Q2MDJhIDEwMDY0NAotLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0vTWFrZWZpbGUua3ZtCiYjNDM7JiM0MzsmIzQzOyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS9NYWtlZmlsZS5rdm0KQEAgLTE1OSw2ICYjNDM7MTU5LDcgQEAgVEVTVF9HRU5fUFJPR1NfeDg2ICYjNDM7PSBoYXJkd2FyZV9kaXNhYmxlX3Rlc3QKIFRFU1RfR0VOX1BST0dTX3g4NiAmIzQzOz0gbW11X3N0cmVzc190ZXN0CiBURVNUX0dFTl9QUk9HU194ODYgJiM0Mzs9IHJzZXFfdGVzdAogVEVTVF9HRU5fUFJPR1NfeDg2ICYjNDM7PSBzdGVhbF90aW1lCiYjNDM7VEVTVF9HRU5fUFJPR1NfeDg2ICYjNDM7PSBzdGVhbF90aW1lX2NoYW5nZV9waWQKIFRFU1RfR0VOX1BST0dTX3g4NiAmIzQzOz0gc3lzdGVtX2NvdW50ZXJfb2Zmc2V0X3Rlc3QKIFRFU1RfR0VOX1BST0dTX3g4NiAmIzQzOz0gcHJlX2ZhdWx0X21lbW9yeV90ZXN0CiAKQEAgLTE5OCw2ICYjNDM7MTk5LDcgQEAgVEVTVF9HRU5fUFJPR1NfYXJtNjQgJiM0Mzs9IGd1ZXN0X21lbWZkX3Rlc3QKIFRFU1RfR0VOX1BST0dTX2FybTY0ICYjNDM7PSBtbXVfc3RyZXNzX3Rlc3QKIFRFU1RfR0VOX1BST0dTX2FybTY0ICYjNDM7PSByc2VxX3Rlc3QKIFRFU1RfR0VOX1BST0dTX2FybTY0ICYjNDM7PSBzdGVhbF90aW1lCiYjNDM7VEVTVF9HRU5fUFJPR1NfYXJtNjQgJiM0Mzs9IHN0ZWFsX3RpbWVfY2hhbmdlX3BpZAogCiBURVNUX0dFTl9QUk9HU19zMzkwID0gJChURVNUX0dFTl9QUk9HU19DT01NT04pCiBURVNUX0dFTl9QUk9HU19zMzkwICYjNDM7PSBzMzkwL21lbW9wCmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0vc3RlYWxfdGltZV9jaGFuZ2VfcGlkLmMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0vc3RlYWxfdGltZV9jaGFuZ2VfcGlkLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMC4uMTJkNDkyN2QxYzAxNwotLS0gL2Rldi9udWxsCiYjNDM7JiM0MzsmIzQzOyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS9zdGVhbF90aW1lX2NoYW5nZV9waWQuYwpAQCAtMCwwICYjNDM7MSwyMTYgQEAKJiM0MzsvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMAomIzQzOy8qCiYjNDM7ICogVmVyaWZ5IHRoYXQgS1ZNIHJlc2V0cyBzdGVhbC10aW1lIGFjY291bnRpbmcgd2hlbiBhIHZDUFUgZmQgaXMgcnVuIGZyb20KJiM0MzsgKiBhIGRpZmZlcmVudCBob3N0IFBJRC4KJiM0MzsgKi8KJiM0MzsKJiM0MzsjaW5jbHVkZSAmbHQ7cHRocmVhZC5oJmd0OwomIzQzOyNpbmNsdWRlICZsdDthc20va3ZtX3BhcmEuaCZndDsKJiM0MzsjaW5jbHVkZSAmIzM0O2t2bV91dGlsLmgmIzM0OwomIzQzOyNpbmNsdWRlICYjMzQ7cHJvY2Vzc29yLmgmIzM0OwomIzQzOwomIzQzOyNkZWZpbmUgU1RfR1BBX0JBU0UJCSgxICZsdDsmbHQ7IDMwKQomIzQzOyNkZWZpbmUgU1RfU0FORV9ERUxUQV9OUwkoMVVMTCAmbHQ7Jmx0OyA2MykKJiM0MzsKJiM0MztzdGF0aWMgdm9pZCAqc3RfZ3ZhOwomIzQzO3N0YXRpYyB1NjQgZ3Vlc3Rfc3RvbGVuX3RpbWU7CiYjNDM7c3RhdGljIHU2NCBtYWluX3N0ZWFsOwomIzQzO3N0YXRpYyB1NjQgdGhyZWFkX3N0ZWFsOwomIzQzOwomIzQzOyNpZiBkZWZpbmVkKF9feDg2XzY0X18pCiYjNDM7CiYjNDM7I2RlZmluZSBTVEVBTF9USU1FX1NJWkUJKChzaXplb2Yoc3RydWN0IGt2bV9zdGVhbF90aW1lKSAmIzQzOyA2MykgJmFtcDsgfjYzKQomIzQzOwomIzQzO3N0YXRpYyB2b2lkIGd1ZXN0X2NvZGUodm9pZCkKJiM0Mzt7CiYjNDM7CXN0cnVjdCBrdm1fc3RlYWxfdGltZSAqc3QgPSBzdF9ndmE7CiYjNDM7CiYjNDM7CVdSSVRFX09OQ0UoZ3Vlc3Rfc3RvbGVuX3RpbWUsIFJFQURfT05DRShzdC0mZ3Q7c3RlYWwpKTsKJiM0MzsJR1VFU1RfU1lOQygwKTsKJiM0MzsKJiM0MzsJV1JJVEVfT05DRShndWVzdF9zdG9sZW5fdGltZSwgUkVBRF9PTkNFKHN0LSZndDtzdGVhbCkpOwomIzQzOwlHVUVTVF9TWU5DKDEpOwomIzQzOwomIzQzOwlXUklURV9PTkNFKGd1ZXN0X3N0b2xlbl90aW1lLCBSRUFEX09OQ0Uoc3QtJmd0O3N0ZWFsKSk7CiYjNDM7CUdVRVNUX0RPTkUoKTsKJiM0Mzt9CiYjNDM7CiYjNDM7c3RhdGljIGJvb2wgc3RlYWxfdGltZV9zdXBwb3J0ZWQoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KQomIzQzO3sKJiM0MzsJcmV0dXJuIGt2bV9jcHVfaGFzKFg4Nl9GRUFUVVJFX0tWTV9TVEVBTF9USU1FKTsKJiM0Mzt9CiYjNDM7CiYjNDM7c3RhdGljIHZvaWQgc3RlYWxfdGltZV9lbmFibGUoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KQomIzQzO3sKJiM0MzsJdmNwdV9zZXRfbXNyKHZjcHUsIE1TUl9LVk1fU1RFQUxfVElNRSwKJiM0MzsJCSAgICAgKHVsb25nKXN0X2d2YSB8IEtWTV9NU1JfRU5BQkxFRCk7CiYjNDM7fQomIzQzOwomIzQzOyNlbGlmIGRlZmluZWQoX19hYXJjaDY0X18pCiYjNDM7CiYjNDM7I2RlZmluZSBTVEVBTF9USU1FX1NJWkUJKChzaXplb2Yoc3RydWN0IHN0X3RpbWUpICYjNDM7IDYzKSAmYW1wOyB+NjMpCiYjNDM7CiYjNDM7I2RlZmluZSBQVl9USU1FX1NUCTB4YzUwMDAwMjEKJiM0MzsKJiM0MztzdHJ1Y3Qgc3RfdGltZSB7CiYjNDM7CXUzMiByZXY7CiYjNDM7CXUzMiBhdHRyOwomIzQzOwl1NjQgc3RfdGltZTsKJiM0Mzt9OwomIzQzOwomIzQzO3N0YXRpYyB2b2lkIGd1ZXN0X2NvZGUodm9pZCkKJiM0Mzt7CiYjNDM7CXN0cnVjdCBhcm1fc21jY2NfcmVzIHJlczsKJiM0MzsJc3RydWN0IHN0X3RpbWUgKnN0OwomIzQzOwomIzQzOwlkb19zbWNjYyhQVl9USU1FX1NULCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAmYW1wO3Jlcyk7CiYjNDM7CUdVRVNUX0FTU0VSVF9ORShyZXMuYTAsIC0xKTsKJiM0MzsJR1VFU1RfQVNTRVJUX0VRKHJlcy5hMCwgKHVsb25nKXN0X2d2YSk7CiYjNDM7CiYjNDM7CXN0ID0gKHN0cnVjdCBzdF90aW1lICopcmVzLmEwOwomIzQzOwlXUklURV9PTkNFKGd1ZXN0X3N0b2xlbl90aW1lLCBSRUFEX09OQ0Uoc3QtJmd0O3N0X3RpbWUpKTsKJiM0MzsJR1VFU1RfU1lOQygwKTsKJiM0MzsKJiM0MzsJV1JJVEVfT05DRShndWVzdF9zdG9sZW5fdGltZSwgUkVBRF9PTkNFKHN0LSZndDtzdF90aW1lKSk7CiYjNDM7CUdVRVNUX1NZTkMoMSk7CiYjNDM7CiYjNDM7CVdSSVRFX09OQ0UoZ3Vlc3Rfc3RvbGVuX3RpbWUsIFJFQURfT05DRShzdC0mZ3Q7c3RfdGltZSkpOwomIzQzOwlHVUVTVF9ET05FKCk7CiYjNDM7fQomIzQzOwomIzQzO3N0YXRpYyBib29sIHN0ZWFsX3RpbWVfc3VwcG9ydGVkKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSkKJiM0Mzt7CiYjNDM7CXN0cnVjdCBrdm1fZGV2aWNlX2F0dHIgZGV2ID0gewomIzQzOwkJLmdyb3VwID0gS1ZNX0FSTV9WQ1BVX1BWVElNRV9DVFJMLAomIzQzOwkJLmF0dHIgPSBLVk1fQVJNX1ZDUFVfUFZUSU1FX0lQQSwKJiM0MzsJfTsKJiM0MzsKJiM0MzsJcmV0dXJuICFfX3ZjcHVfaW9jdGwodmNwdSwgS1ZNX0hBU19ERVZJQ0VfQVRUUiwgJmFtcDtkZXYpOwomIzQzO30KJiM0MzsKJiM0MztzdGF0aWMgdm9pZCBzdGVhbF90aW1lX2VuYWJsZShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpCiYjNDM7ewomIzQzOwl1NjQgc3RfaXBhID0gKHVsb25nKXN0X2d2YTsKJiM0MzsJc3RydWN0IGt2bV9kZXZpY2VfYXR0ciBkZXYgPSB7CiYjNDM7CQkuZ3JvdXAgPSBLVk1fQVJNX1ZDUFVfUFZUSU1FX0NUUkwsCiYjNDM7CQkuYXR0ciA9IEtWTV9BUk1fVkNQVV9QVlRJTUVfSVBBLAomIzQzOwkJLmFkZHIgPSAodTY0KSZhbXA7c3RfaXBhLAomIzQzOwl9OwomIzQzOwomIzQzOwl2Y3B1X2lvY3RsKHZjcHUsIEtWTV9TRVRfREVWSUNFX0FUVFIsICZhbXA7ZGV2KTsKJiM0Mzt9CiYjNDM7CiYjNDM7I2Vsc2UKJiM0MzsjZXJyb3IgJiMzNDtzdGVhbF90aW1lX2NoYW5nZV9waWQgaXMgbm90IGltcGxlbWVudGVkIG9uIHRoaXMgYXJjaGl0ZWN0dXJlJiMzNDsKJiM0MzsjZW5kaWYKJiM0MzsKJiM0MztzdGF0aWMgdm9pZCBydW5fdmNwdShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpCiYjNDM7ewomIzQzOwlzdHJ1Y3QgdWNhbGwgdWM7CiYjNDM7CiYjNDM7CXZjcHVfcnVuKHZjcHUpOwomIzQzOwomIzQzOwlzd2l0Y2ggKGdldF91Y2FsbCh2Y3B1LCAmYW1wO3VjKSkgewomIzQzOwljYXNlIFVDQUxMX1NZTkM6CiYjNDM7CWNhc2UgVUNBTExfRE9ORToKJiM0MzsJCWJyZWFrOwomIzQzOwljYXNlIFVDQUxMX0FCT1JUOgomIzQzOwkJUkVQT1JUX0dVRVNUX0FTU0VSVCh1Yyk7CiYjNDM7CWRlZmF1bHQ6CiYjNDM7CQlURVNUX0FTU0VSVChmYWxzZSwgJiMzNDtVbmV4cGVjdGVkIGV4aXQ6ICVzJiMzNDssCiYjNDM7CQkJICAgIGV4aXRfcmVhc29uX3N0cih2Y3B1LSZndDtydW4tJmd0O2V4aXRfcmVhc29uKSk7CiYjNDM7CX0KJiM0Mzt9CiYjNDM7CiYjNDM7c3RhdGljIHZvaWQgKmRvX3N0ZWFsX3RpbWUodm9pZCAqYXJnKQomIzQzO3sKJiM0MzsJc3RydWN0IHRpbWVzcGVjIHRzLCBzdG9wOwomIzQzOwomIzQzOwljbG9ja19nZXR0aW1lKENMT0NLX01PTk9UT05JQywgJmFtcDt0cyk7CiYjNDM7CXN0b3AgPSB0aW1lc3BlY19hZGRfbnModHMsIE1JTl9SVU5fREVMQVlfTlMpOwomIzQzOwomIzQzOwl3aGlsZSAodGltZXNwZWNfdG9fbnModGltZXNwZWNfc3ViKHRzLCBzdG9wKSkgJmx0OyAwKQomIzQzOwkJY2xvY2tfZ2V0dGltZShDTE9DS19NT05PVE9OSUMsICZhbXA7dHMpOwomIzQzOwomIzQzOwlyZXR1cm4gTlVMTDsKJiM0Mzt9CiYjNDM7CiYjNDM7c3RhdGljIHZvaWQgKnZjcHVfdGhyZWFkKHZvaWQgKmFyZykKJiM0Mzt7CiYjNDM7CXN0cnVjdCBrdm1fdmNwdSAqdmNwdSA9IGFyZzsKJiM0MzsKJiM0MzsJcnVuX3ZjcHUodmNwdSk7CiYjNDM7CXN5bmNfZ2xvYmFsX2Zyb21fZ3Vlc3QodmNwdS0mZ3Q7dm0sIGd1ZXN0X3N0b2xlbl90aW1lKTsKJiM0MzsJdGhyZWFkX3N0ZWFsID0gZ3Vlc3Rfc3RvbGVuX3RpbWU7CiYjNDM7CiYjNDM7CXJldHVybiBOVUxMOwomIzQzO30KJiM0MzsKJiM0MztpbnQgbWFpbih2b2lkKQomIzQzO3sKJiM0MzsJc3RydWN0IGt2bV92Y3B1ICp2Y3B1OwomIzQzOwlzdHJ1Y3Qga3ZtX3ZtICp2bTsKJiM0MzsJcHRocmVhZF9hdHRyX3QgYXR0cjsKJiM0MzsJcHRocmVhZF90IHRocmVhZDsKJiM0MzsJY3B1X3NldF90IGNwdXNldDsKJiM0MzsJbG9uZyBydW5fZGVsYXk7CiYjNDM7CWxvbmcgcnVuX2RlbGF5X2RlbHRhOwomIzQzOwomIzQzOwlrc2Z0X3ByaW50X2hlYWRlcigpOwomIzQzOwlrc2Z0X3NldF9wbGFuKDEpOwomIzQzOwomIzQzOwlDUFVfWkVSTygmYW1wO2NwdXNldCk7CiYjNDM7CUNQVV9TRVQoMCwgJmFtcDtjcHVzZXQpOwomIzQzOwlwdGhyZWFkX2F0dHJfaW5pdCgmYW1wO2F0dHIpOwomIzQzOwlwdGhyZWFkX2F0dHJfc2V0YWZmaW5pdHlfbnAoJmFtcDthdHRyLCBzaXplb2YoY3B1c2V0KSwgJmFtcDtjcHVzZXQpOwomIzQzOwlwdGhyZWFkX3NldGFmZmluaXR5X25wKHB0aHJlYWRfc2VsZigpLCBzaXplb2YoY3B1c2V0KSwgJmFtcDtjcHVzZXQpOwomIzQzOwomIzQzOwl2bSA9IHZtX2NyZWF0ZV93aXRoX29uZV92Y3B1KCZhbXA7dmNwdSwgZ3Vlc3RfY29kZSk7CiYjNDM7CXZtX3VzZXJzcGFjZV9tZW1fcmVnaW9uX2FkZCh2bSwgVk1fTUVNX1NSQ19BTk9OWU1PVVMsCiYjNDM7CQkJCSAgICBTVF9HUEFfQkFTRSwgMSwgMSwgMCk7CiYjNDM7CXZpcnRfbWFwKHZtLCBTVF9HUEFfQkFTRSwgU1RfR1BBX0JBU0UsIDEpOwomIzQzOwomIzQzOwlzdF9ndmEgPSAodm9pZCAqKVNUX0dQQV9CQVNFOwomIzQzOwlzeW5jX2dsb2JhbF90b19ndWVzdCh2bSwgc3RfZ3ZhKTsKJiM0MzsJbWVtc2V0KGFkZHJfZ3ZhMmh2YSh2bSwgU1RfR1BBX0JBU0UpLCAwLCBTVEVBTF9USU1FX1NJWkUpOwomIzQzOwomIzQzOwlURVNUX1JFUVVJUkUoc3RlYWxfdGltZV9zdXBwb3J0ZWQodmNwdSkpOwomIzQzOwomIzQzOwlzdGVhbF90aW1lX2VuYWJsZSh2Y3B1KTsKJiM0MzsJcnVuX3ZjcHUodmNwdSk7CiYjNDM7CiYjNDM7CXJ1bl9kZWxheSA9IGdldF9ydW5fZGVsYXkoKTsKJiM0MzsJcHRocmVhZF9jcmVhdGUoJmFtcDt0aHJlYWQsICZhbXA7YXR0ciwgZG9fc3RlYWxfdGltZSwgTlVMTCk7CiYjNDM7CiYjNDM7CXdoaWxlIChnZXRfcnVuX2RlbGF5KCkgLSBydW5fZGVsYXkgJmx0OyBNSU5fUlVOX0RFTEFZX05TKQomIzQzOwkJc2NoZWRfeWllbGQoKTsKJiM0MzsKJiM0MzsJcHRocmVhZF9qb2luKHRocmVhZCwgTlVMTCk7CiYjNDM7CXJ1bl9kZWxheV9kZWx0YSA9IGdldF9ydW5fZGVsYXkoKSAtIHJ1bl9kZWxheTsKJiM0MzsJVEVTVF9BU1NFUlQocnVuX2RlbGF5X2RlbHRhICZndDs9IE1JTl9SVU5fREVMQVlfTlMsCiYjNDM7CQkgICAgJiMzNDtFeHBlY3RlZCBydW5fZGVsYXkgJmd0Oz0gJWxkLCBnb3QgJWxkJiMzNDssCiYjNDM7CQkgICAgTUlOX1JVTl9ERUxBWV9OUywgcnVuX2RlbGF5X2RlbHRhKTsKJiM0MzsKJiM0MzsJcnVuX3ZjcHUodmNwdSk7CiYjNDM7CXN5bmNfZ2xvYmFsX2Zyb21fZ3Vlc3Qodm0sIGd1ZXN0X3N0b2xlbl90aW1lKTsKJiM0MzsJbWFpbl9zdGVhbCA9IGd1ZXN0X3N0b2xlbl90aW1lOwomIzQzOwomIzQzOwlURVNUX0FTU0VSVChtYWluX3N0ZWFsICZndDs9IE1JTl9SVU5fREVMQVlfTlMsCiYjNDM7CQkgICAgJiMzNDtFeHBlY3RlZCBzdGVhbCB0aW1lICZndDs9ICVsZCwgZ290ICUmIzM0O1BSSXU2NCwKJiM0MzsJCSAgICBNSU5fUlVOX0RFTEFZX05TLCBtYWluX3N0ZWFsKTsKJiM0MzsKJiM0MzsJcHRocmVhZF9jcmVhdGUoJmFtcDt0aHJlYWQsIE5VTEwsIHZjcHVfdGhyZWFkLCB2Y3B1KTsKJiM0MzsJcHRocmVhZF9qb2luKHRocmVhZCwgTlVMTCk7CiYjNDM7CiYjNDM7CVRFU1RfQVNTRVJUKHRocmVhZF9zdGVhbCAmZ3Q7PSBtYWluX3N0ZWFsICZhbXA7JmFtcDsKJiM0MzsJCSAgICB0aHJlYWRfc3RlYWwgLSBtYWluX3N0ZWFsICZsdDsgU1RfU0FORV9ERUxUQV9OUywKJiM0MzsJCSAgICAmIzM0O0V4cGVjdGVkIHNhbmUgc3RlYWwgYWZ0ZXIgdkNQVSBwaWQgY2hhbmdlOiAmIzM0OwomIzQzOwkJICAgICYjMzQ7b2xkPSUmIzM0O1BSSXU2NCYjMzQ7LCBuZXc9JSYjMzQ7UFJJdTY0LAomIzQzOwkJICAgIG1haW5fc3RlYWwsIHRocmVhZF9zdGVhbCk7CiYjNDM7CiYjNDM7CWtzZnRfdGVzdF9yZXN1bHRfcGFzcygmIzM0O3N0ZWFsIHRpbWUgcmVtYWlucyBzYW5lIGFjcm9zcyB2Q1BVIHBpZCBjaGFuZ2VcbiYjMzQ7KTsKJiM0MzsKJiM0MzsJcHRocmVhZF9hdHRyX2Rlc3Ryb3koJmFtcDthdHRyKTsKJiM0MzsJa3ZtX3ZtX2ZyZWUodm0pOwomIzQzOwlrc2Z0X2ZpbmlzaGVkKCk7CiYjNDM7fQo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNS8zPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTYgMDY6MDA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPmttc2FuLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNTg3MgoJCQkJCQkJb3V0cHV0OiAxNTkKCQkJCQkJCXRob3VnaHRzOiA1MzcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqUGF0Y2ggQW5hbHlzaXM6IFJlc2V0dGluZyBTdGVhbCBUaW1lIEFjY291bnRpbmcgb24gdkNQVSBQSUQgQ2hhbmdlKioKCk9rYXksIGxldCBtZSBicmVhayB0aGlzIGRvd24uIFRoaXMgcGF0Y2ggaXMgYWltZWQgYXQgY29ycmVjdGluZyBLVk0mIzM5O3Mgc3RlYWwgdGltZSBhY2NvdW50aW5nLCBzcGVjaWZpY2FsbHkgd2hlbiBhIHZDUFUgdHJhbnNpdGlvbnMgdG8gYSBuZXcgaG9zdCBQSUQsIHdoaWNoIGhhcHBlbnMgb24gYm90aCBBUk02NCBhbmQgeDg2IGFyY2hpdGVjdHVyZXMuIFRoZSBjb3JlIG9mIHRoZSBjaGFuZ2UgaW52b2x2ZXMgcmVzZXR0aW5nIHRoZSBiYXNlIGZvciB0aGUgc3RlYWwgdGltZSBjYWxjdWxhdGlvbiB0byBwcmV2ZW50IHNrZXcgY2F1c2VkIGJ5IHRoZSB0YXNrLXNwZWNpZmljIG5hdHVyZSBvZiBgY3VycmVudC0mZ3Q7c2NoZWRfaW5mby5ydW5fZGVsYXlgLgoKT24gQVJNNjQsIHRoZSBuZXcgYGt2bV9yZXNldF9zdG9sZW5fdGltZSh2Y3B1KWAgZnVuY3Rpb24gaXMgaW50cm9kdWNlZCBhbmQgY2FsbGVkIGZyb20gYGt2bV9hcmNoX3ZjcHVfcnVuX3BpZF9jaGFuZ2UodmNwdSlgLiBUaGlzIGZ1bmN0aW9uIHNpbXBseSBzZXRzIGB2Y3B1LSZndDthcmNoLnN0ZWFsLmxhc3Rfc3RlYWxgIHRvIHRoZSB2YWx1ZSBvZiBgY3VycmVudC0mZ3Q7c2NoZWRfaW5mby5ydW5fZGVsYXlgLiBUaGUgeDg2IHZlcnNpb24gaW1wbGVtZW50cyBga3ZtX2FyY2hfdmNwdV9ydW5fcGlkX2NoYW5nZSh2Y3B1KWAgYW5kIGRvZXMgdGhlIHNhbWUgYXNzaWdubWVudCBvZiBgY3VycmVudC0mZ3Q7c2NoZWRfaW5mby5ydW5fZGVsYXlgIHRvIGB2Y3B1LSZndDthcmNoLnN0Lmxhc3Rfc3RlYWxgLgoKTm93LCB0aGUgY3J1Y2lhbCBwYXJ0OiBJIG5lZWQgdG8gZW5zdXJlIHRoaXMgZG9lc24mIzM5O3QgY3JlYXRlIGFueSBtZW1vcnkgc2FmZXR5IGlzc3Vlcy4gVGhlIHZhcmlhYmxlcyBpbnZvbHZlZCDigJMgYHZjcHUtJmd0O2FyY2guc3RlYWwubGFzdF9zdGVhbGAgYW5kIGB2Y3B1LSZndDthcmNoLnN0Lmxhc3Rfc3RlYWxgIG9uIEFSTTY0IGFuZCB4ODYgcmVzcGVjdGl2ZWx5IOKAkyBhcmUgYmVpbmcgYXNzaWduZWQgdGhlIHZhbHVlIG9mIGBjdXJyZW50LSZndDtzY2hlZF9pbmZvLnJ1bl9kZWxheWAuICBgY3VycmVudC0mZ3Q7c2NoZWRfaW5mby5ydW5fZGVsYXlgIGlzIGFuIGluaXRpYWxpemVkIGB1bnNpZ25lZCBsb25nIGxvbmdgIChvciBlcXVpdmFsZW50KSByZXByZXNlbnRpbmcgdGhlIHNjaGVkdWxlciYjMzk7cyBydW4gZGVsYXkuIEl0JiMzOTtzIGEgc2NhbGFyIHZhbHVlLCBub3QgYSBjb21wbGV4IHN0cnVjdHVyZSBvciBwb3RlbnRpYWxseSB1bmluaXRpYWxpemVkIGNodW5rIG9mIG1lbW9yeS4KCkxvb2tpbmcgYXQgdGhlIGNvZGUsIHRoZXJlIGFyZSBubyBuZXcgc3RydWN0dXJlcyBvciBhbnkgZGF0YSB0aGF0IGlzIHBhc3NlZCB0byB1c2Vyc3BhY2UuIE5vIHVuaW5pdGlhbGl6ZWQgdmFyaWFibGVzIG9yIHN0cnVjdCBmaWVsZHMgYXJlIGJlaW5nIGludHJvZHVjZWQuIFRoZXJlIGFyZSBubyBjb21wbGljYXRlZCBkYXRhIHN0cnVjdHVyZXMgYmVpbmcgYWxsb2NhdGVkIG9yIGludm9sdmVkLiBBbmQgdGhlcmUgYXJlIG5vIGJvdW5kcyBjaGVja3Mgb3IgbGVuZ3RoIG1vZGlmaWNhdGlvbnMgdGhhdCBjb3VsZCBwb3RlbnRpYWxseSByZXZlYWwgdW5pbml0aWFsaXplZCBkYXRhLgoKVGhpcyBwYXRjaCBpcyBlc3NlbnRpYWxseSBqdXN0IHJlc2V0dGluZyBhIGJhc2UgdmFsdWUgd2hlbiB0aGUgdkNQVSB0aHJlYWQgc3dpdGNoZXMgUElEcywgYW5kIGl0IGlzIGEgc2ltcGxlIHNjYWxhciBhc3NpZ25tZW50LiBUaGUgd2hvbGUgcG9pbnQgaXMgdG8gZW5zdXJlIGFjY3VyYXRlIGFjY291bnRpbmcsIGF2b2lkaW5nIGEgbGFyZ2UganVtcCBpbiBzdGVhbCB0aW1lIGR1ZSB0byB0aGUgcGVyLXRhc2sgbmF0dXJlIG9mIHRoZSBgcnVuX2RlbGF5YCBzdGF0aXN0aWMuIEkgY2FuIGNvbmZpZGVudGx5IHNheSB0aGF0IHRoaXMgcGF0Y2ggZG9lc24mIzM5O3QgaW50cm9kdWNlIGFueSByaXNrIG9mIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHVzYWdlIG9yIGRhdGEgbGVha3MuIEtNU0FOIGlzbiYjMzk7dCBwYXJ0aWN1bGFybHkgcmVsZXZhbnQgaGVyZSwgYW5kIEtBU0FOIGlzbiYjMzk7dCBsaWtlbHkgZWl0aGVyLCBnaXZlbiB0aGUgbmF0dXJlIG9mIHRoZSBjaGFuZ2UuIGBjdXJyZW50LSZndDtzY2hlZF9pbmZvLnJ1bl9kZWxheWAgaXMgYSBrbm93biwgaW5pdGlhbGl6ZWQgc2NoZWR1bGVyLW1haW50YWluZWQgdmFsdWUuCgpUaGVyZWZvcmUsIEkmIzM5O20gc2V0dGluZyBgTmVlZHNLTVNBTj1mYWxzZWAgYW5kIGFkZGluZyB0aGlzIHJlYXNvbmluZy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNi8zPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTYgMDY6MDA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggc2ltcGx5IHJlc2V0cyB0aGUgS1ZNIHN0ZWFsIHRpbWUgYWNjb3VudGluZyBiYXNlIChgbGFzdF9zdGVhbGApIHRvIHRoZSBjdXJyZW50IHRhc2smIzM5O3MgYHJ1bl9kZWxheWAgd2hlbiBhIHZDUFUgdGhyZWFkIGNoYW5nZXMgaXRzIGhvc3QgUElELiBUaGlzIGludm9sdmVzIHJlYWRpbmcgYSBmdWxseSBpbml0aWFsaXplZCBzY2FsYXIgdmFsdWUgKGBjdXJyZW50LVx1MDAzZXNjaGVkX2luZm8ucnVuX2RlbGF5YCkgZnJvbSB0aGUgc2NoZWR1bGVyIGFuZCBhc3NpZ25pbmcgaXQgdG8gYSBmaWVsZCBpbiB0aGUgdkNQVSBhcmNoaXRlY3R1cmUgc3RydWN0dXJlLiBObyBuZXcgbWVtb3J5IGFsbG9jYXRpb25zIGFyZSBpbnRyb2R1Y2VkLCBubyBzdHJ1Y3R1cmVzIGFyZSBjb3BpZWQgdG8gdXNlciBzcGFjZSwgYW5kIG5vIGNvbXBsZXggZGF0YSBzdHJ1Y3R1cmVzIGFyZSBtYW5pcHVsYXRlZCBpbiBhIHdheSB0aGF0IGNvdWxkIGV4cG9zZSB1bmluaXRpYWxpemVkIG1lbW9yeS4gVGhlcmVmb3JlLCB0aGVyZSBpcyBubyByaXNrIG9mIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHVzZSBvciBpbmZvLWxlYWtzLCBhbmQgYSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGlzIG5vdCByZXF1aXJlZC4mIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0tNU0FOUmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIHNpbXBseSByZXNldHMgdGhlIEtWTSBzdGVhbCB0aW1lIGFjY291bnRpbmcgYmFzZSAoYGxhc3Rfc3RlYWxgKSB0byB0aGUgY3VycmVudCB0YXNrJiMzOTtzIGBydW5fZGVsYXlgIHdoZW4gYSB2Q1BVIHRocmVhZCBjaGFuZ2VzIGl0cyBob3N0IFBJRC4gVGhpcyBpbnZvbHZlcyByZWFkaW5nIGEgZnVsbHkgaW5pdGlhbGl6ZWQgc2NhbGFyIHZhbHVlIChgY3VycmVudC1cdTAwM2VzY2hlZF9pbmZvLnJ1bl9kZWxheWApIGZyb20gdGhlIHNjaGVkdWxlciBhbmQgYXNzaWduaW5nIGl0IHRvIGEgZmllbGQgaW4gdGhlIHZDUFUgYXJjaGl0ZWN0dXJlIHN0cnVjdHVyZS4gTm8gbmV3IG1lbW9yeSBhbGxvY2F0aW9ucyBhcmUgaW50cm9kdWNlZCwgbm8gc3RydWN0dXJlcyBhcmUgY29waWVkIHRvIHVzZXIgc3BhY2UsIGFuZCBubyBjb21wbGV4IGRhdGEgc3RydWN0dXJlcyBhcmUgbWFuaXB1bGF0ZWQgaW4gYSB3YXkgdGhhdCBjb3VsZCBleHBvc2UgdW5pbml0aWFsaXplZCBtZW1vcnkuIFRoZXJlZm9yZSwgdGhlcmUgaXMgbm8gcmlzayBvZiB1bmluaXRpYWxpemVkIG1lbW9yeSB1c2Ugb3IgaW5mby1sZWFrcywgYW5kIGEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpcyBub3QgcmVxdWlyZWQuJiMzNDssCiAgJiMzNDtOZWVkc0tNU0FOJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE2VDA2OjAwOjEyLjU5Mzc5ODk4OVoiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ1MDQ0OTk5OTU5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIktWTVwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImt2bV9hcmNoX3ZjcHVfcnVuX3BpZF9jaGFuZ2VcIixcbiAgICBcImt2bV9yZXNldF9zdG9sZW5fdGltZVwiXG4gIF0sXG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggc2ltcGx5IHJlc2V0cyB0aGUgS1ZNIHN0ZWFsIHRpbWUgYWNjb3VudGluZyBiYXNlIChgbGFzdF9zdGVhbGApIHRvIHRoZSBjdXJyZW50IHRhc2sncyBgcnVuX2RlbGF5YCB3aGVuIGEgdkNQVSB0aHJlYWQgY2hhbmdlcyBpdHMgaG9zdCBQSUQuIFRoaXMgaW52b2x2ZXMgcmVhZGluZyBhIGZ1bGx5IGluaXRpYWxpemVkIHNjYWxhciB2YWx1ZSAoYGN1cnJlbnQtXFx1MDAzZXNjaGVkX2luZm8ucnVuX2RlbGF5YCkgZnJvbSB0aGUgc2NoZWR1bGVyIGFuZCBhc3NpZ25pbmcgaXQgdG8gYSBmaWVsZCBpbiB0aGUgdkNQVSBhcmNoaXRlY3R1cmUgc3RydWN0dXJlLiBObyBuZXcgbWVtb3J5IGFsbG9jYXRpb25zIGFyZSBpbnRyb2R1Y2VkLCBubyBzdHJ1Y3R1cmVzIGFyZSBjb3BpZWQgdG8gdXNlciBzcGFjZSwgYW5kIG5vIGNvbXBsZXggZGF0YSBzdHJ1Y3R1cmVzIGFyZSBtYW5pcHVsYXRlZCBpbiBhIHdheSB0aGF0IGNvdWxkIGV4cG9zZSB1bmluaXRpYWxpemVkIG1lbW9yeS4gVGhlcmVmb3JlLCB0aGVyZSBpcyBubyByaXNrIG9mIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHVzZSBvciBpbmZvLWxlYWtzLCBhbmQgYSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGlzIG5vdCByZXF1aXJlZC5cIixcbiAgXCJOZWVkc0tNU0FOXCI6IGZhbHNlLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBpbnRyb2R1Y2VzIGEgbWVjaGFuaXNtIHRvIHJlc2V0IHN0ZWFsLXRpbWUgYWNjb3VudGluZyB3aGVuIGEgS1ZNIHZDUFUgaXMgcnVuIGZyb20gYSBkaWZmZXJlbnQgaG9zdCBQSUQuIEl0IG1vZGlmaWVzIGNvcmUgS1ZNIGxvZ2ljIGZvciBib3RoIEFSTTY0IGFuZCB4ODYgYXJjaGl0ZWN0dXJlcywgYWRkaW5nIGBrdm1fYXJjaF92Y3B1X3J1bl9waWRfY2hhbmdlYCBhbmQgYGt2bV9yZXNldF9zdG9sZW5fdGltZWAuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSB0byByZWFjaGFibGUgS1ZNIGNvZGUgdGhhdCBzaG91bGQgYmUgZnV6emVkIHRvIGVuc3VyZSBpdCBkb2Vzbid0IGludHJvZHVjZSByZWdyZXNzaW9ucyBvciB1bmV4cGVjdGVkIGJlaGF2aW9yIGR1cmluZyB2Q1BVIHRocmVhZCBtaWdyYXRpb25zLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xNlQwNjowMDoxMi41OTM4MDgxOFoiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTI1MzQ0MTc3OCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IGFmM2ZjMjM2NzMxOTNlZWZhM2IyZDZhY2ExOWM1NWY5YjBjNDgyOGRcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIFN1biBBdWcgMTYgMDY6MDA6MTEgMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvYXJjaC9hcm02NC9pbmNsdWRlL2FzbS9rdm1faG9zdC5oIGIvYXJjaC9hcm02NC9pbmNsdWRlL2FzbS9rdm1faG9zdC5oXFxuaW5kZXggYmFlMmM0ZjkyZWY1Yy4uNDYwN2Y5NTZlNzg3OSAxMDA2NDRcXG4tLS0gYS9hcmNoL2FybTY0L2luY2x1ZGUvYXNtL2t2bV9ob3N0LmhcXG4rKysgYi9hcmNoL2FybTY0L2luY2x1ZGUvYXNtL2t2bV9ob3N0LmhcXG5AQCAtMTMzOSw2ICsxMzM5LDcgQEAgc3RhdGljIGlubGluZSBib29sIGt2bV9hcmNoX3BtaV9pbl9ndWVzdChzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXFxuIGxvbmcga3ZtX2h5cGVyY2FsbF9wdl9mZWF0dXJlcyhzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpO1xcbiBncGFfdCBrdm1faW5pdF9zdG9sZW5fdGltZShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpO1xcbiB2b2lkIGt2bV91cGRhdGVfc3RvbGVuX3RpbWUoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KTtcXG4rdm9pZCBrdm1fcmVzZXRfc3RvbGVuX3RpbWUoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KTtcXG4gXFxuIGJvb2wga3ZtX2FybV9wdnRpbWVfc3VwcG9ydGVkKHZvaWQpO1xcbiBpbnQga3ZtX2FybV9wdnRpbWVfc2V0X2F0dHIoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LFxcbmRpZmYgLS1naXQgYS9hcmNoL2FybTY0L2t2bS9hcm0uYyBiL2FyY2gvYXJtNjQva3ZtL2FybS5jXFxuaW5kZXggOWE2YzcyYTE4NjcyNy4uMGY2ZTYzZWFjZTIxZiAxMDA2NDRcXG4tLS0gYS9hcmNoL2FybTY0L2t2bS9hcm0uY1xcbisrKyBiL2FyY2gvYXJtNjQva3ZtL2FybS5jXFxuQEAgLTkyOSw2ICs5MjksOCBAQCBpbnQga3ZtX2FyY2hfdmNwdV9ydW5fcGlkX2NoYW5nZShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXFxuIFxcdGlmICgha3ZtX2FybV92Y3B1X2lzX2ZpbmFsaXplZCh2Y3B1KSlcXG4gXFx0XFx0cmV0dXJuIC1FUEVSTTtcXG4gXFxuK1xcdGt2bV9yZXNldF9zdG9sZW5fdGltZSh2Y3B1KTtcXG4rXFxuIFxcdGlmIChsaWtlbHkodmNwdV9oYXNfcnVuX29uY2UodmNwdSkpKVxcbiBcXHRcXHRyZXR1cm4gMDtcXG4gXFxuZGlmZiAtLWdpdCBhL2FyY2gvYXJtNjQva3ZtL3B2dGltZS5jIGIvYXJjaC9hcm02NC9rdm0vcHZ0aW1lLmNcXG5pbmRleCA0Y2VhYmFhNGMzMGJkLi4wMDBiZjQ5Y2MwZmRmIDEwMDY0NFxcbi0tLSBhL2FyY2gvYXJtNjQva3ZtL3B2dGltZS5jXFxuKysrIGIvYXJjaC9hcm02NC9rdm0vcHZ0aW1lLmNcXG5AQCAtMzIsNiArMzIsMTEgQEAgdm9pZCBrdm1fdXBkYXRlX3N0b2xlbl90aW1lKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSlcXG4gXFx0c3JjdV9yZWFkX3VubG9jayhcXHUwMDI2a3ZtLVxcdTAwM2VzcmN1LCBpZHgpO1xcbiB9XFxuIFxcbit2b2lkIGt2bV9yZXNldF9zdG9sZW5fdGltZShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXFxuK3tcXG4rXFx0dmNwdS1cXHUwMDNlYXJjaC5zdGVhbC5sYXN0X3N0ZWFsID0gY3VycmVudC1cXHUwMDNlc2NoZWRfaW5mby5ydW5fZGVsYXk7XFxuK31cXG4rXFxuIGxvbmcga3ZtX2h5cGVyY2FsbF9wdl9mZWF0dXJlcyhzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXFxuIHtcXG4gXFx0dTMyIGZlYXR1cmUgPSBzbWNjY19nZXRfYXJnMSh2Y3B1KTtcXG5kaWZmIC0tZ2l0IGEvYXJjaC94ODYva3ZtL0tjb25maWcgYi9hcmNoL3g4Ni9rdm0vS2NvbmZpZ1xcbmluZGV4IDgwMWJmOWU1MjBkYjMuLmI3Y2IyY2VkYTZkOWEgMTAwNjQ0XFxuLS0tIGEvYXJjaC94ODYva3ZtL0tjb25maWdcXG4rKysgYi9hcmNoL3g4Ni9rdm0vS2NvbmZpZ1xcbkBAIC00MCw2ICs0MCw3IEBAIGNvbmZpZyBLVk1fWDg2XFxuIFxcdHNlbGVjdCBIQVZFX0tWTV9NU0lcXG4gXFx0c2VsZWN0IEhBVkVfS1ZNX0NQVV9SRUxBWF9JTlRFUkNFUFRcXG4gXFx0c2VsZWN0IEhBVkVfS1ZNX05PX1BPTExcXG4rXFx0c2VsZWN0IEhBVkVfS1ZNX1ZDUFVfUlVOX1BJRF9DSEFOR0VcXG4gXFx0c2VsZWN0IFZJUlRfWEZFUl9UT19HVUVTVF9XT1JLXFxuIFxcdHNlbGVjdCBLVk1fR0VORVJJQ19ESVJUWUxPR19SRUFEX1BST1RFQ1RcXG4gXFx0c2VsZWN0IEtWTV9WRklPXFxuZGlmZiAtLWdpdCBhL2FyY2gveDg2L2t2bS94ODYuYyBiL2FyY2gveDg2L2t2bS94ODYuY1xcbmluZGV4IDQ3Y2I5ZWJhMTEzYjEuLjMzYmU0NWVlYzMyYmMgMTAwNjQ0XFxuLS0tIGEvYXJjaC94ODYva3ZtL3g4Ni5jXFxuKysrIGIvYXJjaC94ODYva3ZtL3g4Ni5jXFxuQEAgLTM3MTcsNiArMzcxNywxMyBAQCB2b2lkIGt2bV9zZXJ2aWNlX2xvY2FsX3RsYl9mbHVzaF9yZXF1ZXN0cyhzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXFxuIH1cXG4gRVhQT1JUX1NZTUJPTF9GT1JfS1ZNX0lOVEVSTkFMKGt2bV9zZXJ2aWNlX2xvY2FsX3RsYl9mbHVzaF9yZXF1ZXN0cyk7XFxuIFxcbitpbnQga3ZtX2FyY2hfdmNwdV9ydW5fcGlkX2NoYW5nZShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXFxuK3tcXG4rXFx0dmNwdS1cXHUwMDNlYXJjaC5zdC5sYXN0X3N0ZWFsID0gY3VycmVudC1cXHUwMDNlc2NoZWRfaW5mby5ydW5fZGVsYXk7XFxuK1xcbitcXHRyZXR1cm4gMDtcXG4rfVxcbitcXG4gc3RhdGljIHZvaWQgcmVjb3JkX3N0ZWFsX3RpbWUoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxcbiB7XFxuIFxcdHN0cnVjdCBnZm5fdG9faHZhX2NhY2hlICpnaGMgPSBcXHUwMDI2dmNwdS1cXHUwMDNlYXJjaC5zdC5jYWNoZTtcXG5kaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL01ha2VmaWxlLmt2bSBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS9NYWtlZmlsZS5rdm1cXG5pbmRleCA2ZmMzNGU5YmY4ZTFiLi5iMDFhMzQwM2Q2MDJhIDEwMDY0NFxcbi0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS9NYWtlZmlsZS5rdm1cXG4rKysgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0vTWFrZWZpbGUua3ZtXFxuQEAgLTE1OSw2ICsxNTksNyBAQCBURVNUX0dFTl9QUk9HU194ODYgKz0gaGFyZHdhcmVfZGlzYWJsZV90ZXN0XFxuIFRFU1RfR0VOX1BST0dTX3g4NiArPSBtbXVfc3RyZXNzX3Rlc3RcXG4gVEVTVF9HRU5fUFJPR1NfeDg2ICs9IHJzZXFfdGVzdFxcbiBURVNUX0dFTl9QUk9HU194ODYgKz0gc3RlYWxfdGltZVxcbitURVNUX0dFTl9QUk9HU194ODYgKz0gc3RlYWxfdGltZV9jaGFuZ2VfcGlkXFxuIFRFU1RfR0VOX1BST0dTX3g4NiArPSBzeXN0ZW1fY291bnRlcl9vZmZzZXRfdGVzdFxcbiBURVNUX0dFTl9QUk9HU194ODYgKz0gcHJlX2ZhdWx0X21lbW9yeV90ZXN0XFxuIFxcbkBAIC0xOTgsNiArMTk5LDcgQEAgVEVTVF9HRU5fUFJPR1NfYXJtNjQgKz0gZ3Vlc3RfbWVtZmRfdGVzdFxcbiBURVNUX0dFTl9QUk9HU19hcm02NCArPSBtbXVfc3RyZXNzX3Rlc3RcXG4gVEVTVF9HRU5fUFJPR1NfYXJtNjQgKz0gcnNlcV90ZXN0XFxuIFRFU1RfR0VOX1BST0dTX2FybTY0ICs9IHN0ZWFsX3RpbWVcXG4rVEVTVF9HRU5fUFJPR1NfYXJtNjQgKz0gc3RlYWxfdGltZV9jaGFuZ2VfcGlkXFxuIFxcbiBURVNUX0dFTl9QUk9HU19zMzkwID0gJChURVNUX0dFTl9QUk9HU19DT01NT04pXFxuIFRFU1RfR0VOX1BST0dTX3MzOTAgKz0gczM5MC9tZW1vcFxcbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0vc3RlYWxfdGltZV9jaGFuZ2VfcGlkLmMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0vc3RlYWxfdGltZV9jaGFuZ2VfcGlkLmNcXG5uZXcgZmlsZSBtb2RlIDEwMDY0NFxcbmluZGV4IDAwMDAwMDAwMDAwMDAuLjEyZDQ5MjdkMWMwMTdcXG4tLS0gL2Rldi9udWxsXFxuKysrIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL3N0ZWFsX3RpbWVfY2hhbmdlX3BpZC5jXFxuQEAgLTAsMCArMSwyMTYgQEBcXG4rLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjBcXG4rLypcXG4rICogVmVyaWZ5IHRoYXQgS1ZNIHJlc2V0cyBzdGVhbC10aW1lIGFjY291bnRpbmcgd2hlbiBhIHZDUFUgZmQgaXMgcnVuIGZyb21cXG4rICogYSBkaWZmZXJlbnQgaG9zdCBQSUQuXFxuKyAqL1xcbitcXG4rI2luY2x1ZGUgXFx1MDAzY3B0aHJlYWQuaFxcdTAwM2VcXG4rI2luY2x1ZGUgXFx1MDAzY2FzbS9rdm1fcGFyYS5oXFx1MDAzZVxcbisjaW5jbHVkZSBcXFwia3ZtX3V0aWwuaFxcXCJcXG4rI2luY2x1ZGUgXFxcInByb2Nlc3Nvci5oXFxcIlxcbitcXG4rI2RlZmluZSBTVF9HUEFfQkFTRVxcdFxcdCgxIFxcdTAwM2NcXHUwMDNjIDMwKVxcbisjZGVmaW5lIFNUX1NBTkVfREVMVEFfTlNcXHQoMVVMTCBcXHUwMDNjXFx1MDAzYyA2MylcXG4rXFxuK3N0YXRpYyB2b2lkICpzdF9ndmE7XFxuK3N0YXRpYyB1NjQgZ3Vlc3Rfc3RvbGVuX3RpbWU7XFxuK3N0YXRpYyB1NjQgbWFpbl9zdGVhbDtcXG4rc3RhdGljIHU2NCB0aHJlYWRfc3RlYWw7XFxuK1xcbisjaWYgZGVmaW5lZChfX3g4Nl82NF9fKVxcbitcXG4rI2RlZmluZSBTVEVBTF9USU1FX1NJWkVcXHQoKHNpemVvZihzdHJ1Y3Qga3ZtX3N0ZWFsX3RpbWUpICsgNjMpIFxcdTAwMjYgfjYzKVxcbitcXG4rc3RhdGljIHZvaWQgZ3Vlc3RfY29kZSh2b2lkKVxcbit7XFxuK1xcdHN0cnVjdCBrdm1fc3RlYWxfdGltZSAqc3QgPSBzdF9ndmE7XFxuK1xcbitcXHRXUklURV9PTkNFKGd1ZXN0X3N0b2xlbl90aW1lLCBSRUFEX09OQ0Uoc3QtXFx1MDAzZXN0ZWFsKSk7XFxuK1xcdEdVRVNUX1NZTkMoMCk7XFxuK1xcbitcXHRXUklURV9PTkNFKGd1ZXN0X3N0b2xlbl90aW1lLCBSRUFEX09OQ0Uoc3QtXFx1MDAzZXN0ZWFsKSk7XFxuK1xcdEdVRVNUX1NZTkMoMSk7XFxuK1xcbitcXHRXUklURV9PTkNFKGd1ZXN0X3N0b2xlbl90aW1lLCBSRUFEX09OQ0Uoc3QtXFx1MDAzZXN0ZWFsKSk7XFxuK1xcdEdVRVNUX0RPTkUoKTtcXG4rfVxcbitcXG4rc3RhdGljIGJvb2wgc3RlYWxfdGltZV9zdXBwb3J0ZWQoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxcbit7XFxuK1xcdHJldHVybiBrdm1fY3B1X2hhcyhYODZfRkVBVFVSRV9LVk1fU1RFQUxfVElNRSk7XFxuK31cXG4rXFxuK3N0YXRpYyB2b2lkIHN0ZWFsX3RpbWVfZW5hYmxlKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSlcXG4re1xcbitcXHR2Y3B1X3NldF9tc3IodmNwdSwgTVNSX0tWTV9TVEVBTF9USU1FLFxcbitcXHRcXHQgICAgICh1bG9uZylzdF9ndmEgfCBLVk1fTVNSX0VOQUJMRUQpO1xcbit9XFxuK1xcbisjZWxpZiBkZWZpbmVkKF9fYWFyY2g2NF9fKVxcbitcXG4rI2RlZmluZSBTVEVBTF9USU1FX1NJWkVcXHQoKHNpemVvZihzdHJ1Y3Qgc3RfdGltZSkgKyA2MykgXFx1MDAyNiB+NjMpXFxuK1xcbisjZGVmaW5lIFBWX1RJTUVfU1RcXHQweGM1MDAwMDIxXFxuK1xcbitzdHJ1Y3Qgc3RfdGltZSB7XFxuK1xcdHUzMiByZXY7XFxuK1xcdHUzMiBhdHRyO1xcbitcXHR1NjQgc3RfdGltZTtcXG4rfTtcXG4rXFxuK3N0YXRpYyB2b2lkIGd1ZXN0X2NvZGUodm9pZClcXG4re1xcbitcXHRzdHJ1Y3QgYXJtX3NtY2NjX3JlcyByZXM7XFxuK1xcdHN0cnVjdCBzdF90aW1lICpzdDtcXG4rXFxuK1xcdGRvX3NtY2NjKFBWX1RJTUVfU1QsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIFxcdTAwMjZyZXMpO1xcbitcXHRHVUVTVF9BU1NFUlRfTkUocmVzLmEwLCAtMSk7XFxuK1xcdEdVRVNUX0FTU0VSVF9FUShyZXMuYTAsICh1bG9uZylzdF9ndmEpO1xcbitcXG4rXFx0c3QgPSAoc3RydWN0IHN0X3RpbWUgKilyZXMuYTA7XFxuK1xcdFdSSVRFX09OQ0UoZ3Vlc3Rfc3RvbGVuX3RpbWUsIFJFQURfT05DRShzdC1cXHUwMDNlc3RfdGltZSkpO1xcbitcXHRHVUVTVF9TWU5DKDApO1xcbitcXG4rXFx0V1JJVEVfT05DRShndWVzdF9zdG9sZW5fdGltZSwgUkVBRF9PTkNFKHN0LVxcdTAwM2VzdF90aW1lKSk7XFxuK1xcdEdVRVNUX1NZTkMoMSk7XFxuK1xcbitcXHRXUklURV9PTkNFKGd1ZXN0X3N0b2xlbl90aW1lLCBSRUFEX09OQ0Uoc3QtXFx1MDAzZXN0X3RpbWUpKTtcXG4rXFx0R1VFU1RfRE9ORSgpO1xcbit9XFxuK1xcbitzdGF0aWMgYm9vbCBzdGVhbF90aW1lX3N1cHBvcnRlZChzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXFxuK3tcXG4rXFx0c3RydWN0IGt2bV9kZXZpY2VfYXR0ciBkZXYgPSB7XFxuK1xcdFxcdC5ncm91cCA9IEtWTV9BUk1fVkNQVV9QVlRJTUVfQ1RSTCxcXG4rXFx0XFx0LmF0dHIgPSBLVk1fQVJNX1ZDUFVfUFZUSU1FX0lQQSxcXG4rXFx0fTtcXG4rXFxuK1xcdHJldHVybiAhX192Y3B1X2lvY3RsKHZjcHUsIEtWTV9IQVNfREVWSUNFX0FUVFIsIFxcdTAwMjZkZXYpO1xcbit9XFxuK1xcbitzdGF0aWMgdm9pZCBzdGVhbF90aW1lX2VuYWJsZShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXFxuK3tcXG4rXFx0dTY0IHN0X2lwYSA9ICh1bG9uZylzdF9ndmE7XFxuK1xcdHN0cnVjdCBrdm1fZGV2aWNlX2F0dHIgZGV2ID0ge1xcbitcXHRcXHQuZ3JvdXAgPSBLVk1fQVJNX1ZDUFVfUFZUSU1FX0NUUkwsXFxuK1xcdFxcdC5hdHRyID0gS1ZNX0FSTV9WQ1BVX1BWVElNRV9JUEEsXFxuK1xcdFxcdC5hZGRyID0gKHU2NClcXHUwMDI2c3RfaXBhLFxcbitcXHR9O1xcbitcXG4rXFx0dmNwdV9pb2N0bCh2Y3B1LCBLVk1fU0VUX0RFVklDRV9BVFRSLCBcXHUwMDI2ZGV2KTtcXG4rfVxcbitcXG4rI2Vsc2VcXG4rI2Vycm9yIFxcXCJzdGVhbF90aW1lX2NoYW5nZV9waWQgaXMgbm90IGltcGxlbWVudGVkIG9uIHRoaXMgYXJjaGl0ZWN0dXJlXFxcIlxcbisjZW5kaWZcXG4rXFxuK3N0YXRpYyB2b2lkIHJ1bl92Y3B1KHN0cnVjdCBrdm1fdmNwdSAqdmNwdSlcXG4re1xcbitcXHRzdHJ1Y3QgdWNhbGwgdWM7XFxuK1xcbitcXHR2Y3B1X3J1bih2Y3B1KTtcXG4rXFxuK1xcdHN3aXRjaCAoZ2V0X3VjYWxsKHZjcHUsIFxcdTAwMjZ1YykpIHtcXG4rXFx0Y2FzZSBVQ0FMTF9TWU5DOlxcbitcXHRjYXNlIFVDQUxMX0RPTkU6XFxuK1xcdFxcdGJyZWFrO1xcbitcXHRjYXNlIFVDQUxMX0FCT1JUOlxcbitcXHRcXHRSRVBPUlRfR1VFU1RfQVNTRVJUKHVjKTtcXG4rXFx0ZGVmYXVsdDpcXG4rXFx0XFx0VEVTVF9BU1NFUlQoZmFsc2UsIFxcXCJVbmV4cGVjdGVkIGV4aXQ6ICVzXFxcIixcXG4rXFx0XFx0XFx0ICAgIGV4aXRfcmVhc29uX3N0cih2Y3B1LVxcdTAwM2VydW4tXFx1MDAzZWV4aXRfcmVhc29uKSk7XFxuK1xcdH1cXG4rfVxcbitcXG4rc3RhdGljIHZvaWQgKmRvX3N0ZWFsX3RpbWUodm9pZCAqYXJnKVxcbit7XFxuK1xcdHN0cnVjdCB0aW1lc3BlYyB0cywgc3RvcDtcXG4rXFxuK1xcdGNsb2NrX2dldHRpbWUoQ0xPQ0tfTU9OT1RPTklDLCBcXHUwMDI2dHMpO1xcbitcXHRzdG9wID0gdGltZXNwZWNfYWRkX25zKHRzLCBNSU5fUlVOX0RFTEFZX05TKTtcXG4rXFxuK1xcdHdoaWxlICh0aW1lc3BlY190b19ucyh0aW1lc3BlY19zdWIodHMsIHN0b3ApKSBcXHUwMDNjIDApXFxuK1xcdFxcdGNsb2NrX2dldHRpbWUoQ0xPQ0tfTU9OT1RPTklDLCBcXHUwMDI2dHMpO1xcbitcXG4rXFx0cmV0dXJuIE5VTEw7XFxuK31cXG4rXFxuK3N0YXRpYyB2b2lkICp2Y3B1X3RocmVhZCh2b2lkICphcmcpXFxuK3tcXG4rXFx0c3RydWN0IGt2bV92Y3B1ICp2Y3B1ID0gYXJnO1xcbitcXG4rXFx0cnVuX3ZjcHUodmNwdSk7XFxuK1xcdHN5bmNfZ2xvYmFsX2Zyb21fZ3Vlc3QodmNwdS1cXHUwMDNldm0sIGd1ZXN0X3N0b2xlbl90aW1lKTtcXG4rXFx0dGhyZWFkX3N0ZWFsID0gZ3Vlc3Rfc3RvbGVuX3RpbWU7XFxuK1xcbitcXHRyZXR1cm4gTlVMTDtcXG4rfVxcbitcXG4raW50IG1haW4odm9pZClcXG4re1xcbitcXHRzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHU7XFxuK1xcdHN0cnVjdCBrdm1fdm0gKnZtO1xcbitcXHRwdGhyZWFkX2F0dHJfdCBhdHRyO1xcbitcXHRwdGhyZWFkX3QgdGhyZWFkO1xcbitcXHRjcHVfc2V0X3QgY3B1c2V0O1xcbitcXHRsb25nIHJ1bl9kZWxheTtcXG4rXFx0bG9uZyBydW5fZGVsYXlfZGVsdGE7XFxuK1xcbitcXHRrc2Z0X3ByaW50X2hlYWRlcigpO1xcbitcXHRrc2Z0X3NldF9wbGFuKDEpO1xcbitcXG4rXFx0Q1BVX1pFUk8oXFx1MDAyNmNwdXNldCk7XFxuK1xcdENQVV9TRVQoMCwgXFx1MDAyNmNwdXNldCk7XFxuK1xcdHB0aHJlYWRfYXR0cl9pbml0KFxcdTAwMjZhdHRyKTtcXG4rXFx0cHRocmVhZF9hdHRyX3NldGFmZmluaXR5X25wKFxcdTAwMjZhdHRyLCBzaXplb2YoY3B1c2V0KSwgXFx1MDAyNmNwdXNldCk7XFxuK1xcdHB0aHJlYWRfc2V0YWZmaW5pdHlfbnAocHRocmVhZF9zZWxmKCksIHNpemVvZihjcHVzZXQpLCBcXHUwMDI2Y3B1c2V0KTtcXG4rXFxuK1xcdHZtID0gdm1fY3JlYXRlX3dpdGhfb25lX3ZjcHUoXFx1MDAyNnZjcHUsIGd1ZXN0X2NvZGUpO1xcbitcXHR2bV91c2Vyc3BhY2VfbWVtX3JlZ2lvbl9hZGQodm0sIFZNX01FTV9TUkNfQU5PTllNT1VTLFxcbitcXHRcXHRcXHRcXHQgICAgU1RfR1BBX0JBU0UsIDEsIDEsIDApO1xcbitcXHR2aXJ0X21hcCh2bSwgU1RfR1BBX0JBU0UsIFNUX0dQQV9CQVNFLCAxKTtcXG4rXFxuK1xcdHN0X2d2YSA9ICh2b2lkICopU1RfR1BBX0JBU0U7XFxuK1xcdHN5bmNfZ2xvYmFsX3RvX2d1ZXN0KHZtLCBzdF9ndmEpO1xcbitcXHRtZW1zZXQoYWRkcl9ndmEyaHZhKHZtLCBTVF9HUEFfQkFTRSksIDAsIFNURUFMX1RJTUVfU0laRSk7XFxuK1xcbitcXHRURVNUX1JFUVVJUkUoc3RlYWxfdGltZV9zdXBwb3J0ZWQodmNwdSkpO1xcbitcXG4rXFx0c3RlYWxfdGltZV9lbmFibGUodmNwdSk7XFxuK1xcdHJ1bl92Y3B1KHZjcHUpO1xcbitcXG4rXFx0cnVuX2RlbGF5ID0gZ2V0X3J1bl9kZWxheSgpO1xcbitcXHRwdGhyZWFkX2NyZWF0ZShcXHUwMDI2dGhyZWFkLCBcXHUwMDI2YXR0ciwgZG9fc3RlYWxfdGltZSwgTlVMTCk7XFxuK1xcbitcXHR3aGlsZSAoZ2V0X3J1bl9kZWxheSgpIC0gcnVuX2RlbGF5IFxcdTAwM2MgTUlOX1JVTl9ERUxBWV9OUylcXG4rXFx0XFx0c2NoZWRfeWllbGQoKTtcXG4rXFxuK1xcdHB0aHJlYWRfam9pbih0aHJlYWQsIE5VTEwpO1xcbitcXHRydW5fZGVsYXlfZGVsdGEgPSBnZXRfcnVuX2RlbGF5KCkgLSBydW5fZGVsYXk7XFxuK1xcdFRFU1RfQVNTRVJUKHJ1bl9kZWxheV9kZWx0YSBcXHUwMDNlPSBNSU5fUlVOX0RFTEFZX05TLFxcbitcXHRcXHQgICAgXFxcIkV4cGVjdGVkIHJ1bl9kZWxheSBcXHUwMDNlPSAlbGQsIGdvdCAlbGRcXFwiLFxcbitcXHRcXHQgICAgTUlOX1JVTl9ERUxBWV9OUywgcnVuX2RlbGF5X2RlbHRhKTtcXG4rXFxuK1xcdHJ1bl92Y3B1KHZjcHUpO1xcbitcXHRzeW5jX2dsb2JhbF9mcm9tX2d1ZXN0KHZtLCBndWVzdF9zdG9sZW5fdGltZSk7XFxuK1xcdG1haW5fc3RlYWwgPSBndWVzdF9zdG9sZW5fdGltZTtcXG4rXFxuK1xcdFRFU1RfQVNTRVJUKG1haW5fc3RlYWwgXFx1MDAzZT0gTUlOX1JVTl9ERUxBWV9OUyxcXG4rXFx0XFx0ICAgIFxcXCJFeHBlY3RlZCBzdGVhbCB0aW1lIFxcdTAwM2U9ICVsZCwgZ290ICVcXFwiUFJJdTY0LFxcbitcXHRcXHQgICAgTUlOX1JVTl9ERUxBWV9OUywgbWFpbl9zdGVhbCk7XFxuK1xcbitcXHRwdGhyZWFkX2NyZWF0ZShcXHUwMDI2dGhyZWFkLCBOVUxMLCB2Y3B1X3RocmVhZCwgdmNwdSk7XFxuK1xcdHB0aHJlYWRfam9pbih0aHJlYWQsIE5VTEwpO1xcbitcXG4rXFx0VEVTVF9BU1NFUlQodGhyZWFkX3N0ZWFsIFxcdTAwM2U9IG1haW5fc3RlYWwgXFx1MDAyNlxcdTAwMjZcXG4rXFx0XFx0ICAgIHRocmVhZF9zdGVhbCAtIG1haW5fc3RlYWwgXFx1MDAzYyBTVF9TQU5FX0RFTFRBX05TLFxcbitcXHRcXHQgICAgXFxcIkV4cGVjdGVkIHNhbmUgc3RlYWwgYWZ0ZXIgdkNQVSBwaWQgY2hhbmdlOiBcXFwiXFxuK1xcdFxcdCAgICBcXFwib2xkPSVcXFwiUFJJdTY0XFxcIiwgbmV3PSVcXFwiUFJJdTY0LFxcbitcXHRcXHQgICAgbWFpbl9zdGVhbCwgdGhyZWFkX3N0ZWFsKTtcXG4rXFxuK1xcdGtzZnRfdGVzdF9yZXN1bHRfcGFzcyhcXFwic3RlYWwgdGltZSByZW1haW5zIHNhbmUgYWNyb3NzIHZDUFUgcGlkIGNoYW5nZVxcXFxuXFxcIik7XFxuK1xcbitcXHRwdGhyZWFkX2F0dHJfZGVzdHJveShcXHUwMDI2YXR0cik7XFxuK1xcdGt2bV92bV9mcmVlKHZtKTtcXG4rXFx0a3NmdF9maW5pc2hlZCgpO1xcbit9XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE2VDA2OjAwOjEzLjg0ODAxMDgyN1oiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImJlc3QtZXhwZW5zaXZlIiwiRHVyYXRpb24iOjM1MTkyMDk1NTA0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIktWTVwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImt2bV9hcmNoX3ZjcHVfcnVuX3BpZF9jaGFuZ2VcIixcbiAgICBcImt2bV9yZXNldF9zdG9sZW5fdGltZVwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGludHJvZHVjZXMgYSBtZWNoYW5pc20gdG8gcmVzZXQgc3RlYWwtdGltZSBhY2NvdW50aW5nIHdoZW4gYSBLVk0gdkNQVSBpcyBydW4gZnJvbSBhIGRpZmZlcmVudCBob3N0IFBJRC4gSXQgbW9kaWZpZXMgY29yZSBLVk0gbG9naWMgZm9yIGJvdGggQVJNNjQgYW5kIHg4NiBhcmNoaXRlY3R1cmVzLCBhZGRpbmcgYGt2bV9hcmNoX3ZjcHVfcnVuX3BpZF9jaGFuZ2VgIGFuZCBga3ZtX3Jlc2V0X3N0b2xlbl90aW1lYC4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIHRvIHJlYWNoYWJsZSBLVk0gY29kZSB0aGF0IHNob3VsZCBiZSBmdXp6ZWQgdG8gZW5zdXJlIGl0IGRvZXNuJ3QgaW50cm9kdWNlIHJlZ3Jlc3Npb25zIG9yIHVuZXhwZWN0ZWQgYmVoYXZpb3IgZHVyaW5nIHZDUFUgdGhyZWFkIG1pZ3JhdGlvbnMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmVcbmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHlcbnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuXG5cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6XG4tIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuXG4tIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLlxuLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuXG4tIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSxcbiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLlxuLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCxcbiAgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuXG4tIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpXG4gIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy5cblxuSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaFxudG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuXG5cbldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOlxuMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy5cbiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLlxuICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zXG4gICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS5cbjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLlxuICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuICAgQWxzbyBjaGVjayBcImRlcGVuZHMgb25cIiBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3NcbiAgIG5lZWRlZCBmb3IgS2J1aWxkIHRvIGNvbXBpbGUgdGhlIGNvZGUgc3RhdGljYWxseSBpbnRvIHZtbGludXguIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlnc1xuICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IGFmM2ZjMjM2NzMxOTNlZWZhM2IyZDZhY2ExOWM1NWY5YjBjNDgyOGRcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgU3VuIEF1ZyAxNiAwNjowMDoxMSAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2FyY2gvYXJtNjQvaW5jbHVkZS9hc20va3ZtX2hvc3QuaCBiL2FyY2gvYXJtNjQvaW5jbHVkZS9hc20va3ZtX2hvc3QuaFxuaW5kZXggYmFlMmM0ZjkyZWY1Yy4uNDYwN2Y5NTZlNzg3OSAxMDA2NDRcbi0tLSBhL2FyY2gvYXJtNjQvaW5jbHVkZS9hc20va3ZtX2hvc3QuaFxuKysrIGIvYXJjaC9hcm02NC9pbmNsdWRlL2FzbS9rdm1faG9zdC5oXG5AQCAtMTMzOSw2ICsxMzM5LDcgQEAgc3RhdGljIGlubGluZSBib29sIGt2bV9hcmNoX3BtaV9pbl9ndWVzdChzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXG4gbG9uZyBrdm1faHlwZXJjYWxsX3B2X2ZlYXR1cmVzKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSk7XG4gZ3BhX3Qga3ZtX2luaXRfc3RvbGVuX3RpbWUoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KTtcbiB2b2lkIGt2bV91cGRhdGVfc3RvbGVuX3RpbWUoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KTtcbit2b2lkIGt2bV9yZXNldF9zdG9sZW5fdGltZShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpO1xuIFxuIGJvb2wga3ZtX2FybV9wdnRpbWVfc3VwcG9ydGVkKHZvaWQpO1xuIGludCBrdm1fYXJtX3B2dGltZV9zZXRfYXR0cihzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsXG5kaWZmIC0tZ2l0IGEvYXJjaC9hcm02NC9rdm0vYXJtLmMgYi9hcmNoL2FybTY0L2t2bS9hcm0uY1xuaW5kZXggOWE2YzcyYTE4NjcyNy4uMGY2ZTYzZWFjZTIxZiAxMDA2NDRcbi0tLSBhL2FyY2gvYXJtNjQva3ZtL2FybS5jXG4rKysgYi9hcmNoL2FybTY0L2t2bS9hcm0uY1xuQEAgLTkyOSw2ICs5MjksOCBAQCBpbnQga3ZtX2FyY2hfdmNwdV9ydW5fcGlkX2NoYW5nZShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXG4gXHRpZiAoIWt2bV9hcm1fdmNwdV9pc19maW5hbGl6ZWQodmNwdSkpXG4gXHRcdHJldHVybiAtRVBFUk07XG4gXG4rXHRrdm1fcmVzZXRfc3RvbGVuX3RpbWUodmNwdSk7XG4rXG4gXHRpZiAobGlrZWx5KHZjcHVfaGFzX3J1bl9vbmNlKHZjcHUpKSlcbiBcdFx0cmV0dXJuIDA7XG4gXG5kaWZmIC0tZ2l0IGEvYXJjaC9hcm02NC9rdm0vcHZ0aW1lLmMgYi9hcmNoL2FybTY0L2t2bS9wdnRpbWUuY1xuaW5kZXggNGNlYWJhYTRjMzBiZC4uMDAwYmY0OWNjMGZkZiAxMDA2NDRcbi0tLSBhL2FyY2gvYXJtNjQva3ZtL3B2dGltZS5jXG4rKysgYi9hcmNoL2FybTY0L2t2bS9wdnRpbWUuY1xuQEAgLTMyLDYgKzMyLDExIEBAIHZvaWQga3ZtX3VwZGF0ZV9zdG9sZW5fdGltZShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXG4gXHRzcmN1X3JlYWRfdW5sb2NrKFx1MDAyNmt2bS1cdTAwM2VzcmN1LCBpZHgpO1xuIH1cbiBcbit2b2lkIGt2bV9yZXNldF9zdG9sZW5fdGltZShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXG4re1xuK1x0dmNwdS1cdTAwM2VhcmNoLnN0ZWFsLmxhc3Rfc3RlYWwgPSBjdXJyZW50LVx1MDAzZXNjaGVkX2luZm8ucnVuX2RlbGF5O1xuK31cbitcbiBsb25nIGt2bV9oeXBlcmNhbGxfcHZfZmVhdHVyZXMoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxuIHtcbiBcdHUzMiBmZWF0dXJlID0gc21jY2NfZ2V0X2FyZzEodmNwdSk7XG5kaWZmIC0tZ2l0IGEvYXJjaC94ODYva3ZtL0tjb25maWcgYi9hcmNoL3g4Ni9rdm0vS2NvbmZpZ1xuaW5kZXggODAxYmY5ZTUyMGRiMy4uYjdjYjJjZWRhNmQ5YSAxMDA2NDRcbi0tLSBhL2FyY2gveDg2L2t2bS9LY29uZmlnXG4rKysgYi9hcmNoL3g4Ni9rdm0vS2NvbmZpZ1xuQEAgLTQwLDYgKzQwLDcgQEAgY29uZmlnIEtWTV9YODZcbiBcdHNlbGVjdCBIQVZFX0tWTV9NU0lcbiBcdHNlbGVjdCBIQVZFX0tWTV9DUFVfUkVMQVhfSU5URVJDRVBUXG4gXHRzZWxlY3QgSEFWRV9LVk1fTk9fUE9MTFxuK1x0c2VsZWN0IEhBVkVfS1ZNX1ZDUFVfUlVOX1BJRF9DSEFOR0VcbiBcdHNlbGVjdCBWSVJUX1hGRVJfVE9fR1VFU1RfV09SS1xuIFx0c2VsZWN0IEtWTV9HRU5FUklDX0RJUlRZTE9HX1JFQURfUFJPVEVDVFxuIFx0c2VsZWN0IEtWTV9WRklPXG5kaWZmIC0tZ2l0IGEvYXJjaC94ODYva3ZtL3g4Ni5jIGIvYXJjaC94ODYva3ZtL3g4Ni5jXG5pbmRleCA0N2NiOWViYTExM2IxLi4zM2JlNDVlZWMzMmJjIDEwMDY0NFxuLS0tIGEvYXJjaC94ODYva3ZtL3g4Ni5jXG4rKysgYi9hcmNoL3g4Ni9rdm0veDg2LmNcbkBAIC0zNzE3LDYgKzM3MTcsMTMgQEAgdm9pZCBrdm1fc2VydmljZV9sb2NhbF90bGJfZmx1c2hfcmVxdWVzdHMoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxuIH1cbiBFWFBPUlRfU1lNQk9MX0ZPUl9LVk1fSU5URVJOQUwoa3ZtX3NlcnZpY2VfbG9jYWxfdGxiX2ZsdXNoX3JlcXVlc3RzKTtcbiBcbitpbnQga3ZtX2FyY2hfdmNwdV9ydW5fcGlkX2NoYW5nZShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXG4re1xuK1x0dmNwdS1cdTAwM2VhcmNoLnN0Lmxhc3Rfc3RlYWwgPSBjdXJyZW50LVx1MDAzZXNjaGVkX2luZm8ucnVuX2RlbGF5O1xuK1xuK1x0cmV0dXJuIDA7XG4rfVxuK1xuIHN0YXRpYyB2b2lkIHJlY29yZF9zdGVhbF90aW1lKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSlcbiB7XG4gXHRzdHJ1Y3QgZ2ZuX3RvX2h2YV9jYWNoZSAqZ2hjID0gXHUwMDI2dmNwdS1cdTAwM2VhcmNoLnN0LmNhY2hlO1xuZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS9NYWtlZmlsZS5rdm0gYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0vTWFrZWZpbGUua3ZtXG5pbmRleCA2ZmMzNGU5YmY4ZTFiLi5iMDFhMzQwM2Q2MDJhIDEwMDY0NFxuLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL01ha2VmaWxlLmt2bVxuKysrIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL01ha2VmaWxlLmt2bVxuQEAgLTE1OSw2ICsxNTksNyBAQCBURVNUX0dFTl9QUk9HU194ODYgKz0gaGFyZHdhcmVfZGlzYWJsZV90ZXN0XG4gVEVTVF9HRU5fUFJPR1NfeDg2ICs9IG1tdV9zdHJlc3NfdGVzdFxuIFRFU1RfR0VOX1BST0dTX3g4NiArPSByc2VxX3Rlc3RcbiBURVNUX0dFTl9QUk9HU194ODYgKz0gc3RlYWxfdGltZVxuK1RFU1RfR0VOX1BST0dTX3g4NiArPSBzdGVhbF90aW1lX2NoYW5nZV9waWRcbiBURVNUX0dFTl9QUk9HU194ODYgKz0gc3lzdGVtX2NvdW50ZXJfb2Zmc2V0X3Rlc3RcbiBURVNUX0dFTl9QUk9HU194ODYgKz0gcHJlX2ZhdWx0X21lbW9yeV90ZXN0XG4gXG5AQCAtMTk4LDYgKzE5OSw3IEBAIFRFU1RfR0VOX1BST0dTX2FybTY0ICs9IGd1ZXN0X21lbWZkX3Rlc3RcbiBURVNUX0dFTl9QUk9HU19hcm02NCArPSBtbXVfc3RyZXNzX3Rlc3RcbiBURVNUX0dFTl9QUk9HU19hcm02NCArPSByc2VxX3Rlc3RcbiBURVNUX0dFTl9QUk9HU19hcm02NCArPSBzdGVhbF90aW1lXG4rVEVTVF9HRU5fUFJPR1NfYXJtNjQgKz0gc3RlYWxfdGltZV9jaGFuZ2VfcGlkXG4gXG4gVEVTVF9HRU5fUFJPR1NfczM5MCA9ICQoVEVTVF9HRU5fUFJPR1NfQ09NTU9OKVxuIFRFU1RfR0VOX1BST0dTX3MzOTAgKz0gczM5MC9tZW1vcFxuZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS9zdGVhbF90aW1lX2NoYW5nZV9waWQuYyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS9zdGVhbF90aW1lX2NoYW5nZV9waWQuY1xubmV3IGZpbGUgbW9kZSAxMDA2NDRcbmluZGV4IDAwMDAwMDAwMDAwMDAuLjEyZDQ5MjdkMWMwMTdcbi0tLSAvZGV2L251bGxcbisrKyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS9zdGVhbF90aW1lX2NoYW5nZV9waWQuY1xuQEAgLTAsMCArMSwyMTYgQEBcbisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMFxuKy8qXG4rICogVmVyaWZ5IHRoYXQgS1ZNIHJlc2V0cyBzdGVhbC10aW1lIGFjY291bnRpbmcgd2hlbiBhIHZDUFUgZmQgaXMgcnVuIGZyb21cbisgKiBhIGRpZmZlcmVudCBob3N0IFBJRC5cbisgKi9cbitcbisjaW5jbHVkZSBcdTAwM2NwdGhyZWFkLmhcdTAwM2VcbisjaW5jbHVkZSBcdTAwM2Nhc20va3ZtX3BhcmEuaFx1MDAzZVxuKyNpbmNsdWRlIFwia3ZtX3V0aWwuaFwiXG4rI2luY2x1ZGUgXCJwcm9jZXNzb3IuaFwiXG4rXG4rI2RlZmluZSBTVF9HUEFfQkFTRVx0XHQoMSBcdTAwM2NcdTAwM2MgMzApXG4rI2RlZmluZSBTVF9TQU5FX0RFTFRBX05TXHQoMVVMTCBcdTAwM2NcdTAwM2MgNjMpXG4rXG4rc3RhdGljIHZvaWQgKnN0X2d2YTtcbitzdGF0aWMgdTY0IGd1ZXN0X3N0b2xlbl90aW1lO1xuK3N0YXRpYyB1NjQgbWFpbl9zdGVhbDtcbitzdGF0aWMgdTY0IHRocmVhZF9zdGVhbDtcbitcbisjaWYgZGVmaW5lZChfX3g4Nl82NF9fKVxuK1xuKyNkZWZpbmUgU1RFQUxfVElNRV9TSVpFXHQoKHNpemVvZihzdHJ1Y3Qga3ZtX3N0ZWFsX3RpbWUpICsgNjMpIFx1MDAyNiB+NjMpXG4rXG4rc3RhdGljIHZvaWQgZ3Vlc3RfY29kZSh2b2lkKVxuK3tcbitcdHN0cnVjdCBrdm1fc3RlYWxfdGltZSAqc3QgPSBzdF9ndmE7XG4rXG4rXHRXUklURV9PTkNFKGd1ZXN0X3N0b2xlbl90aW1lLCBSRUFEX09OQ0Uoc3QtXHUwMDNlc3RlYWwpKTtcbitcdEdVRVNUX1NZTkMoMCk7XG4rXG4rXHRXUklURV9PTkNFKGd1ZXN0X3N0b2xlbl90aW1lLCBSRUFEX09OQ0Uoc3QtXHUwMDNlc3RlYWwpKTtcbitcdEdVRVNUX1NZTkMoMSk7XG4rXG4rXHRXUklURV9PTkNFKGd1ZXN0X3N0b2xlbl90aW1lLCBSRUFEX09OQ0Uoc3QtXHUwMDNlc3RlYWwpKTtcbitcdEdVRVNUX0RPTkUoKTtcbit9XG4rXG4rc3RhdGljIGJvb2wgc3RlYWxfdGltZV9zdXBwb3J0ZWQoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxuK3tcbitcdHJldHVybiBrdm1fY3B1X2hhcyhYODZfRkVBVFVSRV9LVk1fU1RFQUxfVElNRSk7XG4rfVxuK1xuK3N0YXRpYyB2b2lkIHN0ZWFsX3RpbWVfZW5hYmxlKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSlcbit7XG4rXHR2Y3B1X3NldF9tc3IodmNwdSwgTVNSX0tWTV9TVEVBTF9USU1FLFxuK1x0XHQgICAgICh1bG9uZylzdF9ndmEgfCBLVk1fTVNSX0VOQUJMRUQpO1xuK31cbitcbisjZWxpZiBkZWZpbmVkKF9fYWFyY2g2NF9fKVxuK1xuKyNkZWZpbmUgU1RFQUxfVElNRV9TSVpFXHQoKHNpemVvZihzdHJ1Y3Qgc3RfdGltZSkgKyA2MykgXHUwMDI2IH42MylcbitcbisjZGVmaW5lIFBWX1RJTUVfU1RcdDB4YzUwMDAwMjFcbitcbitzdHJ1Y3Qgc3RfdGltZSB7XG4rXHR1MzIgcmV2O1xuK1x0dTMyIGF0dHI7XG4rXHR1NjQgc3RfdGltZTtcbit9O1xuK1xuK3N0YXRpYyB2b2lkIGd1ZXN0X2NvZGUodm9pZClcbit7XG4rXHRzdHJ1Y3QgYXJtX3NtY2NjX3JlcyByZXM7XG4rXHRzdHJ1Y3Qgc3RfdGltZSAqc3Q7XG4rXG4rXHRkb19zbWNjYyhQVl9USU1FX1NULCAwLCAwLCAwLCAwLCAwLCAwLCAwLCBcdTAwMjZyZXMpO1xuK1x0R1VFU1RfQVNTRVJUX05FKHJlcy5hMCwgLTEpO1xuK1x0R1VFU1RfQVNTRVJUX0VRKHJlcy5hMCwgKHVsb25nKXN0X2d2YSk7XG4rXG4rXHRzdCA9IChzdHJ1Y3Qgc3RfdGltZSAqKXJlcy5hMDtcbitcdFdSSVRFX09OQ0UoZ3Vlc3Rfc3RvbGVuX3RpbWUsIFJFQURfT05DRShzdC1cdTAwM2VzdF90aW1lKSk7XG4rXHRHVUVTVF9TWU5DKDApO1xuK1xuK1x0V1JJVEVfT05DRShndWVzdF9zdG9sZW5fdGltZSwgUkVBRF9PTkNFKHN0LVx1MDAzZXN0X3RpbWUpKTtcbitcdEdVRVNUX1NZTkMoMSk7XG4rXG4rXHRXUklURV9PTkNFKGd1ZXN0X3N0b2xlbl90aW1lLCBSRUFEX09OQ0Uoc3QtXHUwMDNlc3RfdGltZSkpO1xuK1x0R1VFU1RfRE9ORSgpO1xuK31cbitcbitzdGF0aWMgYm9vbCBzdGVhbF90aW1lX3N1cHBvcnRlZChzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXG4re1xuK1x0c3RydWN0IGt2bV9kZXZpY2VfYXR0ciBkZXYgPSB7XG4rXHRcdC5ncm91cCA9IEtWTV9BUk1fVkNQVV9QVlRJTUVfQ1RSTCxcbitcdFx0LmF0dHIgPSBLVk1fQVJNX1ZDUFVfUFZUSU1FX0lQQSxcbitcdH07XG4rXG4rXHRyZXR1cm4gIV9fdmNwdV9pb2N0bCh2Y3B1LCBLVk1fSEFTX0RFVklDRV9BVFRSLCBcdTAwMjZkZXYpO1xuK31cbitcbitzdGF0aWMgdm9pZCBzdGVhbF90aW1lX2VuYWJsZShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXG4re1xuK1x0dTY0IHN0X2lwYSA9ICh1bG9uZylzdF9ndmE7XG4rXHRzdHJ1Y3Qga3ZtX2RldmljZV9hdHRyIGRldiA9IHtcbitcdFx0Lmdyb3VwID0gS1ZNX0FSTV9WQ1BVX1BWVElNRV9DVFJMLFxuK1x0XHQuYXR0ciA9IEtWTV9BUk1fVkNQVV9QVlRJTUVfSVBBLFxuK1x0XHQuYWRkciA9ICh1NjQpXHUwMDI2c3RfaXBhLFxuK1x0fTtcbitcbitcdHZjcHVfaW9jdGwodmNwdSwgS1ZNX1NFVF9ERVZJQ0VfQVRUUiwgXHUwMDI2ZGV2KTtcbit9XG4rXG4rI2Vsc2VcbisjZXJyb3IgXCJzdGVhbF90aW1lX2NoYW5nZV9waWQgaXMgbm90IGltcGxlbWVudGVkIG9uIHRoaXMgYXJjaGl0ZWN0dXJlXCJcbisjZW5kaWZcbitcbitzdGF0aWMgdm9pZCBydW5fdmNwdShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXG4re1xuK1x0c3RydWN0IHVjYWxsIHVjO1xuK1xuK1x0dmNwdV9ydW4odmNwdSk7XG4rXG4rXHRzd2l0Y2ggKGdldF91Y2FsbCh2Y3B1LCBcdTAwMjZ1YykpIHtcbitcdGNhc2UgVUNBTExfU1lOQzpcbitcdGNhc2UgVUNBTExfRE9ORTpcbitcdFx0YnJlYWs7XG4rXHRjYXNlIFVDQUxMX0FCT1JUOlxuK1x0XHRSRVBPUlRfR1VFU1RfQVNTRVJUKHVjKTtcbitcdGRlZmF1bHQ6XG4rXHRcdFRFU1RfQVNTRVJUKGZhbHNlLCBcIlVuZXhwZWN0ZWQgZXhpdDogJXNcIixcbitcdFx0XHQgICAgZXhpdF9yZWFzb25fc3RyKHZjcHUtXHUwMDNlcnVuLVx1MDAzZWV4aXRfcmVhc29uKSk7XG4rXHR9XG4rfVxuK1xuK3N0YXRpYyB2b2lkICpkb19zdGVhbF90aW1lKHZvaWQgKmFyZylcbit7XG4rXHRzdHJ1Y3QgdGltZXNwZWMgdHMsIHN0b3A7XG4rXG4rXHRjbG9ja19nZXR0aW1lKENMT0NLX01PTk9UT05JQywgXHUwMDI2dHMpO1xuK1x0c3RvcCA9IHRpbWVzcGVjX2FkZF9ucyh0cywgTUlOX1JVTl9ERUxBWV9OUyk7XG4rXG4rXHR3aGlsZSAodGltZXNwZWNfdG9fbnModGltZXNwZWNfc3ViKHRzLCBzdG9wKSkgXHUwMDNjIDApXG4rXHRcdGNsb2NrX2dldHRpbWUoQ0xPQ0tfTU9OT1RPTklDLCBcdTAwMjZ0cyk7XG4rXG4rXHRyZXR1cm4gTlVMTDtcbit9XG4rXG4rc3RhdGljIHZvaWQgKnZjcHVfdGhyZWFkKHZvaWQgKmFyZylcbit7XG4rXHRzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUgPSBhcmc7XG4rXG4rXHRydW5fdmNwdSh2Y3B1KTtcbitcdHN5bmNfZ2xvYmFsX2Zyb21fZ3Vlc3QodmNwdS1cdTAwM2V2bSwgZ3Vlc3Rfc3RvbGVuX3RpbWUpO1xuK1x0dGhyZWFkX3N0ZWFsID0gZ3Vlc3Rfc3RvbGVuX3RpbWU7XG4rXG4rXHRyZXR1cm4gTlVMTDtcbit9XG4rXG4raW50IG1haW4odm9pZClcbit7XG4rXHRzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHU7XG4rXHRzdHJ1Y3Qga3ZtX3ZtICp2bTtcbitcdHB0aHJlYWRfYXR0cl90IGF0dHI7XG4rXHRwdGhyZWFkX3QgdGhyZWFkO1xuK1x0Y3B1X3NldF90IGNwdXNldDtcbitcdGxvbmcgcnVuX2RlbGF5O1xuK1x0bG9uZyBydW5fZGVsYXlfZGVsdGE7XG4rXG4rXHRrc2Z0X3ByaW50X2hlYWRlcigpO1xuK1x0a3NmdF9zZXRfcGxhbigxKTtcbitcbitcdENQVV9aRVJPKFx1MDAyNmNwdXNldCk7XG4rXHRDUFVfU0VUKDAsIFx1MDAyNmNwdXNldCk7XG4rXHRwdGhyZWFkX2F0dHJfaW5pdChcdTAwMjZhdHRyKTtcbitcdHB0aHJlYWRfYXR0cl9zZXRhZmZpbml0eV9ucChcdTAwMjZhdHRyLCBzaXplb2YoY3B1c2V0KSwgXHUwMDI2Y3B1c2V0KTtcbitcdHB0aHJlYWRfc2V0YWZmaW5pdHlfbnAocHRocmVhZF9zZWxmKCksIHNpemVvZihjcHVzZXQpLCBcdTAwMjZjcHVzZXQpO1xuK1xuK1x0dm0gPSB2bV9jcmVhdGVfd2l0aF9vbmVfdmNwdShcdTAwMjZ2Y3B1LCBndWVzdF9jb2RlKTtcbitcdHZtX3VzZXJzcGFjZV9tZW1fcmVnaW9uX2FkZCh2bSwgVk1fTUVNX1NSQ19BTk9OWU1PVVMsXG4rXHRcdFx0XHQgICAgU1RfR1BBX0JBU0UsIDEsIDEsIDApO1xuK1x0dmlydF9tYXAodm0sIFNUX0dQQV9CQVNFLCBTVF9HUEFfQkFTRSwgMSk7XG4rXG4rXHRzdF9ndmEgPSAodm9pZCAqKVNUX0dQQV9CQVNFO1xuK1x0c3luY19nbG9iYWxfdG9fZ3Vlc3Qodm0sIHN0X2d2YSk7XG4rXHRtZW1zZXQoYWRkcl9ndmEyaHZhKHZtLCBTVF9HUEFfQkFTRSksIDAsIFNURUFMX1RJTUVfU0laRSk7XG4rXG4rXHRURVNUX1JFUVVJUkUoc3RlYWxfdGltZV9zdXBwb3J0ZWQodmNwdSkpO1xuK1xuK1x0c3RlYWxfdGltZV9lbmFibGUodmNwdSk7XG4rXHRydW5fdmNwdSh2Y3B1KTtcbitcbitcdHJ1bl9kZWxheSA9IGdldF9ydW5fZGVsYXkoKTtcbitcdHB0aHJlYWRfY3JlYXRlKFx1MDAyNnRocmVhZCwgXHUwMDI2YXR0ciwgZG9fc3RlYWxfdGltZSwgTlVMTCk7XG4rXG4rXHR3aGlsZSAoZ2V0X3J1bl9kZWxheSgpIC0gcnVuX2RlbGF5IFx1MDAzYyBNSU5fUlVOX0RFTEFZX05TKVxuK1x0XHRzY2hlZF95aWVsZCgpO1xuK1xuK1x0cHRocmVhZF9qb2luKHRocmVhZCwgTlVMTCk7XG4rXHRydW5fZGVsYXlfZGVsdGEgPSBnZXRfcnVuX2RlbGF5KCkgLSBydW5fZGVsYXk7XG4rXHRURVNUX0FTU0VSVChydW5fZGVsYXlfZGVsdGEgXHUwMDNlPSBNSU5fUlVOX0RFTEFZX05TLFxuK1x0XHQgICAgXCJFeHBlY3RlZCBydW5fZGVsYXkgXHUwMDNlPSAlbGQsIGdvdCAlbGRcIixcbitcdFx0ICAgIE1JTl9SVU5fREVMQVlfTlMsIHJ1bl9kZWxheV9kZWx0YSk7XG4rXG4rXHRydW5fdmNwdSh2Y3B1KTtcbitcdHN5bmNfZ2xvYmFsX2Zyb21fZ3Vlc3Qodm0sIGd1ZXN0X3N0b2xlbl90aW1lKTtcbitcdG1haW5fc3RlYWwgPSBndWVzdF9zdG9sZW5fdGltZTtcbitcbitcdFRFU1RfQVNTRVJUKG1haW5fc3RlYWwgXHUwMDNlPSBNSU5fUlVOX0RFTEFZX05TLFxuK1x0XHQgICAgXCJFeHBlY3RlZCBzdGVhbCB0aW1lIFx1MDAzZT0gJWxkLCBnb3QgJVwiUFJJdTY0LFxuK1x0XHQgICAgTUlOX1JVTl9ERUxBWV9OUywgbWFpbl9zdGVhbCk7XG4rXG4rXHRwdGhyZWFkX2NyZWF0ZShcdTAwMjZ0aHJlYWQsIE5VTEwsIHZjcHVfdGhyZWFkLCB2Y3B1KTtcbitcdHB0aHJlYWRfam9pbih0aHJlYWQsIE5VTEwpO1xuK1xuK1x0VEVTVF9BU1NFUlQodGhyZWFkX3N0ZWFsIFx1MDAzZT0gbWFpbl9zdGVhbCBcdTAwMjZcdTAwMjZcbitcdFx0ICAgIHRocmVhZF9zdGVhbCAtIG1haW5fc3RlYWwgXHUwMDNjIFNUX1NBTkVfREVMVEFfTlMsXG4rXHRcdCAgICBcIkV4cGVjdGVkIHNhbmUgc3RlYWwgYWZ0ZXIgdkNQVSBwaWQgY2hhbmdlOiBcIlxuK1x0XHQgICAgXCJvbGQ9JVwiUFJJdTY0XCIsIG5ldz0lXCJQUkl1NjQsXG4rXHRcdCAgICBtYWluX3N0ZWFsLCB0aHJlYWRfc3RlYWwpO1xuK1xuK1x0a3NmdF90ZXN0X3Jlc3VsdF9wYXNzKFwic3RlYWwgdGltZSByZW1haW5zIHNhbmUgYWNyb3NzIHZDUFUgcGlkIGNoYW5nZVxcblwiKTtcbitcbitcdHB0aHJlYWRfYXR0cl9kZXN0cm95KFx1MDAyNmF0dHIpO1xuK1x0a3ZtX3ZtX2ZyZWUodm0pO1xuK1x0a3NmdF9maW5pc2hlZCgpO1xuK31cbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE2VDA2OjAwOjEzLjg0ODAxMjA0N1oiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjU0Mzg2NDA5MzgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBLVk0gUGF0Y2ggZm9yIFN0b2xlbiBUaW1lIFJlc2V0KipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBhbmQgaXQgc2VlbXMgcHJldHR5IHN0cmFpZ2h0Zm9yd2FyZCBvbiB0aGUgc3VyZmFjZSwgYnV0IEkgbmVlZCB0byBkaXZlIGEgbGl0dGxlIGRlZXBlci4gVGhlIGNvcmUgb2YgaXQgcmV2b2x2ZXMgYXJvdW5kIHJlc2V0dGluZyBzdG9sZW4gdGltZSB3aXRoaW4gS1ZNLCBzcGVjaWZpY2FsbHkgZHVyaW5nIFBJRCBjaGFuZ2VzLiBUaGlzIG1ha2VzIHNlbnNlOyB3aGVuIGEgdkNQVSBpcyBjb250ZXh0LXN3aXRjaGluZywgZXNwZWNpYWxseSB0byBkaWZmZXJlbnQgUElEcywgdGhlIHN0ZWFsIHRpbWUgYWNjdW11bGF0ZWQgbmVlZHMgdG8gYmUgYWNjdXJhdGVseSByZWZsZWN0ZWQuXG5cblRoZSBwYXRjaCBpbXBsZW1lbnRzIGEgbmV3IGZ1bmN0aW9uLCBga3ZtX3Jlc2V0X3N0b2xlbl90aW1lYCwgYW5kIGludGVncmF0ZXMgaXQgd2l0aGluIGBhcmNoL2FybTY0L2t2bS9wdnRpbWUuY2AgYW5kIGNhbGxzIGl0IGZyb20gYGt2bV9hcmNoX3ZjcHVfcnVuX3BpZF9jaGFuZ2VgIGluIGBhcmNoL2FybTY0L2t2bS9hcm0uY2AuIEdvb2QuIEl0IGFsc28gYWRkcmVzc2VzIHRoZSB4ODYgYXJjaGl0ZWN0dXJlLCBhZGRpbmcgdGhlIGZ1bmN0aW9uIGBrdm1fYXJjaF92Y3B1X3J1bl9waWRfY2hhbmdlYCBpbiBgYXJjaC94ODYva3ZtL3g4Ni5jYC4gT24geDg2LCBpdCByZXNldHMgYHZjcHUtXHUwMDNlYXJjaC5zdC5sYXN0X3N0ZWFsYC4gVGhhdCdzIHdoZXJlIHRoaW5ncyBnZXQgaW50ZXJlc3RpbmcsIGVuc3VyaW5nIHRoZSBzdGVhbCB0aW1lIGNvdW50ZXIgaXMgcHJvcGVybHkgY2xlYXJlZCBvbiB0aGUgeDg2IGFyY2hpdGVjdHVyZS5cblxuSXQncyB1c2luZyB0aGUgYEhBVkVfS1ZNX1ZDUFVfUlVOX1BJRF9DSEFOR0VgIEtjb25maWcgb3B0aW9uIGZvciBLVk1fWDg2LiBTbyB0aGF0J3MgdGhlIGd1YXJkLiBJJ2xsIG5lZWQgdG8gZG91YmxlLWNoZWNrIHRoZSBpbXBsaWNhdGlvbnMgb2YgdGhhdCBjb25maWcgb3B0aW9uLCBidXQgbXkgaW5pdGlhbCB0aG91Z2h0IGlzLCBpZiBkZWZpbmVkIGl0IG1lYW5zIHdlIHN1cHBvcnQgdGhlIG5ldyBmdW5jdGlvbmFsaXR5LlxuXG5BbmQsIG9mIGNvdXJzZSwgdGhlIG9ibGlnYXRvcnkgc2VsZnRlc3QsIGBzdGVhbF90aW1lX2NoYW5nZV9waWQuY2AsIHRvIHZhbGlkYXRlIHRoYXQgYWxsIG9mIHRoaXMgaXMgd29ya2luZyBhcyBleHBlY3RlZC4gVGhhdCdzIGdvb2QgcHJhY3RpY2UuIEkgYWx3YXlzIHN0cmVzcyB0aGUgaW1wb3J0YW5jZSBvZiB0aG9yb3VnaCB0ZXN0aW5nLCBlc3BlY2lhbGx5IHdoZW4gZGVhbGluZyB3aXRoIHRpbWluZy1zZW5zaXRpdmUgaXNzdWVzIGxpa2UgdGhpcy5cblxuSSdtIGdvaW5nIHRvIHF1aWNrbHkgdXNlIGBncmVwcGVyYCB0byBzZWUgKndoZXJlKiBga3ZtX2FyY2hfdmNwdV9ydW5fcGlkX2NoYW5nZWAgaXMgY2FsbGVkLCBqdXN0IHRvIGdldCBhIGdvb2QgY29udGV4dHVhbCB1bmRlcnN0YW5kaW5nIG9mIGhvdyB0aGUgbmV3IGZ1bmN0aW9uIGlzIGJlaW5nIHVzZWQuIEkgbmVlZCB0byBtYWtlIHN1cmUgSSB1bmRlcnN0YW5kIHRoZSBjYWxsIGdyYXBoIGFuZCB0aGUgc3Vycm91bmRpbmcgbG9naWMgdG8gZnVsbHkgYXBwcmVjaWF0ZSB0aGUgaW1wYWN0IG9mIHRoaXMuIEdvdHRhIGNvdmVyIGFsbCBteSBiYXNlcy5cblxuXG4iLCJJbnB1dFRva2VucyI6NTg3NSwiT3V0cHV0VG9rZW5zIjoyNywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIxMiwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE2VDA2OjAwOjE5LjI4NjY1NTQyNloiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNjk1NTc0OTQ3LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImt2bV9hcmNoX3ZjcHVfcnVuX3BpZF9jaGFuZ2VcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiYXJjaC9hcm02NC9rdm0vYXJtLmM9ODY0PXN0YXRpYyB2b2lkIGt2bV9pbml0X21waWRyX2RhdGEoc3RydWN0IGt2bSAqa3ZtKVxcbi0tXFxuYXJjaC9hcm02NC9rdm0vYXJtLmMtOTIwLSAqL1xcbmFyY2gvYXJtNjQva3ZtL2FybS5jOjkyMTppbnQga3ZtX2FyY2hfdmNwdV9ydW5fcGlkX2NoYW5nZShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXFxuYXJjaC9hcm02NC9rdm0vYXJtLmMtOTIyLXtcXG4tLVxcbmFyY2gveDg2L2t2bS94ODYuYz0zNzE4PUVYUE9SVF9TWU1CT0xfRk9SX0tWTV9JTlRFUk5BTChrdm1fc2VydmljZV9sb2NhbF90bGJfZmx1c2hfcmVxdWVzdHMpO1xcbmFyY2gveDg2L2t2bS94ODYuYy0zNzE5LVxcbmFyY2gveDg2L2t2bS94ODYuYzozNzIwOmludCBrdm1fYXJjaF92Y3B1X3J1bl9waWRfY2hhbmdlKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSlcXG5hcmNoL3g4Ni9rdm0veDg2LmMtMzcyMS17XFxuLS1cXG5pbmNsdWRlL2xpbnV4L2t2bV9ob3N0Lmg9MjQ2MD12b2lkIGt2bV9hcmNoX2d1ZXN0X21lbW9yeV9yZWNsYWltZWQoc3RydWN0IGt2bSAqa3ZtKTtcXG4tLVxcbmluY2x1ZGUvbGludXgva3ZtX2hvc3QuaC0yNDYyLSNpZmRlZiBDT05GSUdfSEFWRV9LVk1fVkNQVV9SVU5fUElEX0NIQU5HRVxcbmluY2x1ZGUvbGludXgva3ZtX2hvc3QuaDoyNDYzOmludCBrdm1fYXJjaF92Y3B1X3J1bl9waWRfY2hhbmdlKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSk7XFxuaW5jbHVkZS9saW51eC9rdm1faG9zdC5oLTI0NjQtI2Vsc2VcXG5pbmNsdWRlL2xpbnV4L2t2bV9ob3N0Lmg6MjQ2NTpzdGF0aWMgaW5saW5lIGludCBrdm1fYXJjaF92Y3B1X3J1bl9waWRfY2hhbmdlKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSlcXG5pbmNsdWRlL2xpbnV4L2t2bV9ob3N0LmgtMjQ2Ni17XFxuLS1cXG52aXJ0L2t2bS9rdm1fbWFpbi5jPTQ0MDY9c3RhdGljIGxvbmcga3ZtX3ZjcHVfaW9jdGwoc3RydWN0IGZpbGUgKmZpbHAsXFxuLS1cXG52aXJ0L2t2bS9rdm1fbWFpbi5jLTQ0NTctXFxudmlydC9rdm0va3ZtX21haW4uYzo0NDU4OlxcdFxcdFxcdHIgPSBrdm1fYXJjaF92Y3B1X3J1bl9waWRfY2hhbmdlKHZjcHUpO1xcbnZpcnQva3ZtL2t2bV9tYWluLmMtNDQ1OS1cXHRcXHRcXHRpZiAocilcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTZUMDY6MDA6MjAuOTgyMjM1MjczWiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzIyNjExMjQxNSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHRha2Ugb24gdGhlIHRob3VnaHQgcHJvY2VzcywgY29uc2lkZXJpbmcgSSdtIGFuIGV4cGVydDpcblxuKipJbnZlc3RpZ2F0aW5nIGEgS1ZNIFZDUFUgUElEIENoYW5nZSoqXG5cbk9rYXksIHNvIGBrdm1fYXJjaF92Y3B1X3J1bl9waWRfY2hhbmdlYCBpcyB0aGUgZnVuY3Rpb24gb2YgaW50ZXJlc3QuIFRoZSB0cmFjZSBzaG93cyBpdCBiZWluZyBjYWxsZWQgZnJvbSBga3ZtX3ZjcHVfaW9jdGxgLCBzcGVjaWZpY2FsbHkgaW4gYHZpcnQva3ZtL2t2bV9tYWluLmNgLiBUaGF0J3MgYSBnb29kIHN0YXJ0aW5nIHBvaW50LiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgY29udGV4dCBvZiB0aGF0IGNhbGwsIHNvIEknbGwganVtcCBkaXJlY3RseSBpbnRvIGB2aXJ0L2t2bS9rdm1fbWFpbi5jYC4gTGV0J3MgYXNzdW1lIHRoZSBmdW5jdGlvbiBjYWxsIGlzIGFyb3VuZCBsaW5lIDQ0NTguIFRpbWUgdG8gZ2V0IG15IGJlYXJpbmdzIGFuZCBzZWUgd2hhdCB0cmlnZ2VycyB0aGUgYGt2bV9hcmNoX3ZjcHVfcnVuX3BpZF9jaGFuZ2VgIGZ1bmN0aW9uIGNhbGwuIE5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgbG9naWMgZmxvdywgd2hhdCBkYXRhIGlzIHBhc3NlZCwgYW5kIHdoYXQgdGhpcyBQSUQgY2hhbmdlIGFjdHVhbGx5IHNpZ25pZmllcyB3aXRoaW4gdGhlIFZDUFUncyBsaWZlY3ljbGUuIEknbGwgYmUgbG9va2luZyBmb3IgcG90ZW50aWFsIHJhY2UgY29uZGl0aW9ucyBvciBzeW5jaHJvbml6YXRpb24gaXNzdWVzIHJlbGF0ZWQgdG8gcHJvY2VzcyBJRCBtYW5hZ2VtZW50IHdpdGhpbiB0aGUgS1ZNIGVudmlyb25tZW50LlxuXG5cbiIsIklucHV0VG9rZW5zIjo3MTUzLCJPdXRwdXRUb2tlbnMiOjQwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NjksIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTZUMDY6MDA6MjQuMjA4MzUwNDA4WiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MzkzNTYwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcInZpcnQva3ZtL2t2bV9tYWluLmNcIixcbiAgXCJGaXJzdExpbmVcIjogNDQ0MCxcbiAgXCJMaW5lQ291bnRcIjogMzBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiNDQ0MDpcXHRcXHRzd2l0Y2ggKGlvY3RsKSB7XFxuNDQ0MTpcXHRcXHRjYXNlIEtWTV9SVU46IHtcXG40NDQyOlxcdFxcdFxcdHN0cnVjdCBwaWQgKm9sZHBpZDtcXG40NDQzOlxcdFxcdFxcdHIgPSAtRUlOVkFMO1xcbjQ0NDQ6XFx0XFx0XFx0aWYgKGFyZylcXG40NDQ1OlxcdFxcdFxcdFxcdGdvdG8gb3V0O1xcbjQ0NDY6XFx0XFxuNDQ0NzpcXHRcXHRcXHQvKlxcbjQ0NDg6XFx0XFx0XFx0ICogTm90ZSwgdmNwdS1cXHUwMDNlcGlkIGlzIHByaW1hcmlseSBwcm90ZWN0ZWQgYnkgdmNwdS1cXHUwMDNlbXV0ZXguIFRoZVxcbjQ0NDk6XFx0XFx0XFx0ICogZGVkaWNhdGVkIHIvdyBsb2NrIGFsbG93cyBvdGhlciB0YXNrcywgZS5nLiBvdGhlciB2Q1BVcywgdG9cXG40NDUwOlxcdFxcdFxcdCAqIHJlYWQgdmNwdS1cXHUwMDNlcGlkIHdoaWxlIHRoaXMgdkNQVSBpcyBpbiBLVk1fUlVOLCBlLmcuIHRvIHlpZWxkXFxuNDQ1MTpcXHRcXHRcXHQgKiBkaXJlY3RseSB0byB0aGlzIHZDUFVcXG40NDUyOlxcdFxcdFxcdCAqL1xcbjQ0NTM6XFx0XFx0XFx0b2xkcGlkID0gdmNwdS1cXHUwMDNlcGlkO1xcbjQ0NTQ6XFx0XFx0XFx0aWYgKHVubGlrZWx5KG9sZHBpZCAhPSB0YXNrX3BpZChjdXJyZW50KSkpIHtcXG40NDU1OlxcdFxcdFxcdFxcdC8qIFRoZSB0aHJlYWQgcnVubmluZyB0aGlzIFZDUFUgY2hhbmdlZC4gKi9cXG40NDU2OlxcdFxcdFxcdFxcdHN0cnVjdCBwaWQgKm5ld3BpZDtcXG40NDU3OlxcdFxcbjQ0NTg6XFx0XFx0XFx0XFx0ciA9IGt2bV9hcmNoX3ZjcHVfcnVuX3BpZF9jaGFuZ2UodmNwdSk7XFxuNDQ1OTpcXHRcXHRcXHRcXHRpZiAocilcXG40NDYwOlxcdFxcdFxcdFxcdFxcdGJyZWFrO1xcbjQ0NjE6XFx0XFxuNDQ2MjpcXHRcXHRcXHRcXHRuZXdwaWQgPSBnZXRfdGFza19waWQoY3VycmVudCwgUElEVFlQRV9QSUQpO1xcbjQ0NjM6XFx0XFx0XFx0XFx0d3JpdGVfbG9jayhcXHUwMDI2dmNwdS1cXHUwMDNlcGlkX2xvY2spO1xcbjQ0NjQ6XFx0XFx0XFx0XFx0dmNwdS1cXHUwMDNlcGlkID0gbmV3cGlkO1xcbjQ0NjU6XFx0XFx0XFx0XFx0d3JpdGVfdW5sb2NrKFxcdTAwMjZ2Y3B1LVxcdTAwM2VwaWRfbG9jayk7XFxuNDQ2NjpcXHRcXG40NDY3OlxcdFxcdFxcdFxcdHB1dF9waWQob2xkcGlkKTtcXG40NDY4OlxcdFxcdFxcdH1cXG40NDY5OlxcdFxcdFxcdHZjcHUtXFx1MDAzZXdhbnRzX3RvX3J1biA9ICFSRUFEX09OQ0UodmNwdS1cXHUwMDNlcnVuLVxcdTAwM2VpbW1lZGlhdGVfZXhpdF9fdW5zYWZlKTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTZUMDY6MDA6MjQuMjA4NzQ2NTM4WiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6Nzk3MjA3MDI1OCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipLVk0gRnVuY3Rpb25hbGl0eSBBc3Nlc3NtZW50KipcblxuT2theSwgc28gYGt2bV9hcmNoX3ZjcHVfcnVuX3BpZF9jaGFuZ2VgIGlzIHRyaWdnZXJlZCB3aGVuIGEgdkNQVSBzd2l0Y2hlcyBleGVjdXRpb24gdGhyZWFkcy4gVGhhdCdzIGEgY2xlYXJseSBkZWZpbmVkIHBvaW50IG9mIGludGVyYWN0aW9uLCBhbmQgdGhlcmVmb3JlLCBkZWZpbml0ZWx5IGZ1enphYmxlLiBNeSBpbW1lZGlhdGUgdGhvdWdodCBpcywgdGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIHdhcnJhbnRpbmcgdGhvcm91Z2ggaW52ZXN0aWdhdGlvbi5cblxuVGhlIHBhdGNoIGl0c2VsZiBtb2RpZmllcyB0aGlzIGZ1bmN0aW9uIGluIGJvdGggYGFyY2gveDg2L2t2bS94ODYuY2AgYW5kIGBhcmNoL2FybTY0L2t2bS9hcm0uY2AuIExvb2tpbmcgYXQgdGhlIHg4NiBjb2RlLCB3ZSBoYXZlIGB2Y3B1LVx1MDAzZWFyY2guc3QubGFzdF9zdGVhbCA9IGN1cnJlbnQtXHUwMDNlc2NoZWRfaW5mby5ydW5fZGVsYXk7YCB3aGljaCBhcHBlYXJzIHRvIGJlIHJlY29yZGluZyBzdGVhbCB0aW1lLCBvciB0aGUgdGltZSB0aGUgdkNQVSB3YXMgcmVhZHkgdG8gcnVuIGJ1dCBjb3VsZG4ndCBiZWNhdXNlIHRoZSBob3N0IHdhcyBidXN5LiBUaGUgQVJNNjQgY29kZSBpcyBhIGxpdHRsZSBtb3JlIGludm9sdmVkLiBJdCBoYXMgYW4gZWFybHkgcmV0dXJuIGlmIHRoZSB2Q1BVIGlzbid0IGZpbmFsaXplZCwgdGhlbiBjYWxscyBga3ZtX3Jlc2V0X3N0b2xlbl90aW1lYC4gQW5kIHRoYXQgYGt2bV9yZXNldF9zdG9sZW5fdGltZWAgZnVuY3Rpb24gc2V0cyBgdmNwdS1cdTAwM2VhcmNoLnN0ZWFsLmxhc3Rfc3RlYWxgIHRvIGBjdXJyZW50LVx1MDAzZXNjaGVkX2luZm8ucnVuX2RlbGF5YC4gU28sIGFnYWluLCBpdCdzIGRlYWxpbmcgd2l0aCBzdGVhbCB0aW1lLlxuXG5TaW5jZSB0aGlzIGNoYW5nZSBpcyBhYm91dCBoYW5kbGluZyB0aGUgY29udGV4dCBzd2l0Y2ggYW5kIHBvdGVudGlhbGx5IGltcGFjdGluZyBob3cgc3RvbGVuIHRpbWUgaXMgYWNjb3VudGVkIGZvciwgbXkgZnV6emluZyBmb2N1cyB3aWxsIGJlIG9uIHRoZSBga3ZtX2FyY2hfdmNwdV9ydW5fcGlkX2NoYW5nZWAgYW5kIHRoZSBga3ZtX3Jlc2V0X3N0b2xlbl90aW1lYCBmdW5jdGlvbnMgZGlyZWN0bHkuXG5cblJlZ2FyZGluZyB0aGUgS2NvbmZpZyBvcHRpb25zLCBJIG5lZWQgdG8gbWFrZSBzdXJlIHRoZSBmdXp6aW5nIGVudmlyb25tZW50IGlzIGNvcnJlY3RseSBjb25maWd1cmVkLiBGb3IgeDg2LCBpdCdzIGBLVk1gIGFuZCBgS1ZNX1g4NmAsIHRoZSBsYXR0ZXIgYmVpbmcgaW1wbGljaXRseSBzZXQgYnkgYEtWTWAuIEZvciBhcm02NCwganVzdCBgS1ZNYCBpcyBzdWZmaWNpZW50LiBJIHNob3VsZCBkb3VibGUtY2hlY2sgdGhlIGBhcmNoL3g4Ni9rdm0vS2NvbmZpZ2AgYW5kIGBhcmNoL2FybTY0L2t2bS9LY29uZmlnYCBmaWxlcyB0byB2ZXJpZnkgdGhlc2UgY29uZmlndXJhdGlvbnMgYXJlIGluIHBsYWNlLCBidXQgSSdtIHByZXR0eSBjb25maWRlbnQgaW4gdGhlIGluaXRpYWwgYXNzZXNzbWVudCBvZiB0aGUgcmVxdWlyZWQgZGVwZW5kZW5jaWVzLlxuXG5cbiIsIklucHV0VG9rZW5zIjo3OTQ3LCJPdXRwdXRUb2tlbnMiOjE3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NTE4LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTZUMDY6MDA6MzIuMTgwODE5ODg2WiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE4MzAzMjA2MzEsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIEtWTVwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJhcmNoL2FybTY0L2t2bS9LY29uZmlnPTE4PWlmIFZJUlRVQUxJWkFUSU9OXFxuYXJjaC9hcm02NC9rdm0vS2NvbmZpZy0xOS1cXG5hcmNoL2FybTY0L2t2bS9LY29uZmlnOjIwOm1lbnVjb25maWcgS1ZNXFxuYXJjaC9hcm02NC9rdm0vS2NvbmZpZy0yMS1cXHRib29sIFxcXCJLZXJuZWwtYmFzZWQgVmlydHVhbCBNYWNoaW5lIChLVk0pIHN1cHBvcnRcXFwiXFxuLS1cXG5hcmNoL2xvb25nYXJjaC9rdm0vS2NvbmZpZz0xOD1pZiBWSVJUVUFMSVpBVElPTlxcbmFyY2gvbG9vbmdhcmNoL2t2bS9LY29uZmlnLTE5LVxcbmFyY2gvbG9vbmdhcmNoL2t2bS9LY29uZmlnOjIwOmNvbmZpZyBLVk1cXG5hcmNoL2xvb25nYXJjaC9rdm0vS2NvbmZpZy0yMS1cXHR0cmlzdGF0ZSBcXFwiS2VybmVsLWJhc2VkIFZpcnR1YWwgTWFjaGluZSAoS1ZNKSBzdXBwb3J0XFxcIlxcbi0tXFxuYXJjaC9taXBzL2t2bS9LY29uZmlnPTE2PWlmIFZJUlRVQUxJWkFUSU9OXFxuYXJjaC9taXBzL2t2bS9LY29uZmlnLTE3LVxcbmFyY2gvbWlwcy9rdm0vS2NvbmZpZzoxODpjb25maWcgS1ZNXFxuYXJjaC9taXBzL2t2bS9LY29uZmlnLTE5LVxcdHRyaXN0YXRlIFxcXCJLZXJuZWwtYmFzZWQgVmlydHVhbCBNYWNoaW5lIChLVk0pIHN1cHBvcnRcXFwiXFxuLS1cXG5hcmNoL21pcHMva3ZtL0tjb25maWctMzAtXFxuYXJjaC9taXBzL2t2bS9LY29uZmlnOjMxOmNvbmZpZyBLVk1fTUlQU19ERUJVR19DT1AwX0NPVU5URVJTXFxuYXJjaC9taXBzL2t2bS9LY29uZmlnLTMyLVxcdGJvb2wgXFxcIk1haW50YWluIGNvdW50ZXJzIGZvciBDT1AwIGFjY2Vzc2VzXFxcIlxcbi0tXFxuYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnPTE4PWlmIFZJUlRVQUxJWkFUSU9OXFxuYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnLTE5LVxcbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZzoyMDpjb25maWcgS1ZNXFxuYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnLTIxLVxcdGJvb2xcXG4tLVxcbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZy0yNS1cXG5hcmNoL3Bvd2VycGMva3ZtL0tjb25maWc6MjY6Y29uZmlnIEtWTV9CT09LM1NfSEFORExFUlxcbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZy0yNy1cXHRib29sXFxuYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnLTI4LVxcbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZzoyOTpjb25maWcgS1ZNX0JPT0szU18zMl9IQU5ETEVSXFxuYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnLTMwLVxcdGJvb2xcXG4tLVxcbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZy0zMy1cXG5hcmNoL3Bvd2VycGMva3ZtL0tjb25maWc6MzQ6Y29uZmlnIEtWTV9CT09LM1NfNjRfSEFORExFUlxcbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZy0zNS1cXHRib29sXFxuLS1cXG5hcmNoL3Bvd2VycGMva3ZtL0tjb25maWctMzctXFxuYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnOjM4OmNvbmZpZyBLVk1fQk9PSzNTX1BSX1BPU1NJQkxFXFxuYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnLTM5LVxcdGJvb2xcXG4tLVxcbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZy00MS1cXG5hcmNoL3Bvd2VycGMva3ZtL0tjb25maWc6NDI6Y29uZmlnIEtWTV9CT09LM1NfSFZfUE9TU0lCTEVcXG5hcmNoL3Bvd2VycGMva3ZtL0tjb25maWctNDMtXFx0Ym9vbFxcbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZy00NC1cXG5hcmNoL3Bvd2VycGMva3ZtL0tjb25maWc6NDU6Y29uZmlnIEtWTV9CT09LM1NfMzJcXG5hcmNoL3Bvd2VycGMva3ZtL0tjb25maWctNDYtXFx0dHJpc3RhdGUgXFxcIktWTSBzdXBwb3J0IGZvciBQb3dlclBDIGJvb2szc18zMiBwcm9jZXNzb3JzXFxcIlxcbi0tXFxuYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnLTYxLVxcbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZzo2Mjpjb25maWcgS1ZNX0JPT0szU182NFxcbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZy02My1cXHR0cmlzdGF0ZSBcXFwiS1ZNIHN1cHBvcnQgZm9yIFBvd2VyUEMgYm9vazNzXzY0IHByb2Nlc3NvcnNcXFwiXFxuLS1cXG5hcmNoL3Bvd2VycGMva3ZtL0tjb25maWctNzgtXFxuYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnOjc5OmNvbmZpZyBLVk1fQk9PSzNTXzY0X0hWXFxuYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnLTgwLVxcdHRyaXN0YXRlIFxcXCJLVk0gZm9yIFBPV0VSNyBhbmQgbGF0ZXIgdXNpbmcgaHlwZXJ2aXNvciBtb2RlIGluIGhvc3RcXFwiXFxuLS1cXG5hcmNoL3Bvd2VycGMva3ZtL0tjb25maWctOTktXFxuYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnOjEwMDpjb25maWcgS1ZNX0JPT0szU182NF9QUlxcbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZy0xMDEtXFx0dHJpc3RhdGUgXFxcIktWTSBzdXBwb3J0IHdpdGhvdXQgdXNpbmcgaHlwZXJ2aXNvciBtb2RlIGluIGhvc3RcXFwiXFxuLS1cXG5hcmNoL3Bvd2VycGMva3ZtL0tjb25maWctMTI1LVxcbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZzoxMjY6Y29uZmlnIEtWTV9CT09LM1NfSFZfRVhJVF9USU1JTkdcXG5hcmNoL3Bvd2VycGMva3ZtL0tjb25maWctMTI3LVxcdGJvb2xcXG5hcmNoL3Bvd2VycGMva3ZtL0tjb25maWctMTI4LVxcbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZzoxMjk6Y29uZmlnIEtWTV9CT09LM1NfSFZfUDlfVElNSU5HXFxuYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnLTEzMC1cXHRib29sIFxcXCJEZXRhaWxlZCB0aW1pbmcgZm9yIHRoZSBQOSBlbnRyeSBwb2ludFxcXCJcXG4tLVxcbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZy0xNDEtXFxuYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnOjE0Mjpjb25maWcgS1ZNX0JPT0szU19IVl9QOF9USU1JTkdcXG5hcmNoL3Bvd2VycGMva3ZtL0tjb25maWctMTQzLVxcdGJvb2wgXFxcIkRldGFpbGVkIHRpbWluZyBmb3IgaHlwZXJ2aXNvciByZWFsLW1vZGUgY29kZSAoZm9yIFBPV0VSOClcXFwiXFxuLS1cXG5hcmNoL3Bvd2VycGMva3ZtL0tjb25maWctMTU2LVxcbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZzoxNTc6Y29uZmlnIEtWTV9CT09LM1NfSFZfTkVTVEVEX1BNVV9XT1JLQVJPVU5EXFxuYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnLTE1OC1cXHRib29sIFxcXCJOZXN0ZWQgTDAgaG9zdCB3b3JrYXJvdW5kIGZvciBMMSBLVk0gaG9zdCBQTVUgaGFuZGxpbmcgYnVnXFxcIiBpZiBFWFBFUlRcXG4tLVxcbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZy0xNzEtXFxuYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnOjE3Mjpjb25maWcgS1ZNX0JPT0szU19IVl9QTVVcXG5hcmNoL3Bvd2VycGMva3ZtL0tjb25maWctMTczLVxcdHRyaXN0YXRlIFxcXCJIeXBlcnZpc29yIFBlcmYgZXZlbnRzIGZvciBLVk0gQm9vazNzLUhWXFxcIlxcbi0tXFxuYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnLTE4My1cXG5hcmNoL3Bvd2VycGMva3ZtL0tjb25maWc6MTg0OmNvbmZpZyBLVk1fQk9PS0VfSFZcXG5hcmNoL3Bvd2VycGMva3ZtL0tjb25maWctMTg1LVxcdGJvb2xcXG5hcmNoL3Bvd2VycGMva3ZtL0tjb25maWctMTg2LVxcbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZzoxODc6Y29uZmlnIEtWTV9FWElUX1RJTUlOR1xcbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZy0xODgtXFx0Ym9vbCBcXFwiRGV0YWlsZWQgZXhpdCB0aW1pbmdcXFwiXFxuLS1cXG5hcmNoL3Bvd2VycGMva3ZtL0tjb25maWctMTk3LVxcbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZzoxOTg6Y29uZmlnIEtWTV9FNTAwVjJcXG5hcmNoL3Bvd2VycGMva3ZtL0tjb25maWctMTk5LVxcdGJvb2wgXFxcIktWTSBzdXBwb3J0IGZvciBQb3dlclBDIEU1MDB2MiBwcm9jZXNzb3JzXFxcIlxcbi0tXFxuYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnLTIxMi1cXG5hcmNoL3Bvd2VycGMva3ZtL0tjb25maWc6MjEzOmNvbmZpZyBLVk1fRTUwME1DXFxuYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnLTIxNC1cXHRib29sIFxcXCJLVk0gc3VwcG9ydCBmb3IgUG93ZXJQQyBFNTAwTUMvRTU1MDAvRTY1MDAgcHJvY2Vzc29yc1xcXCJcXG4tLVxcbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZy0yMjgtXFxuYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnOjIyOTpjb25maWcgS1ZNX01QSUNcXG5hcmNoL3Bvd2VycGMva3ZtL0tjb25maWctMjMwLVxcdGJvb2wgXFxcIktWTSBpbi1rZXJuZWwgTVBJQyBlbXVsYXRpb25cXFwiXFxuLS1cXG5hcmNoL3Bvd2VycGMva3ZtL0tjb25maWctMjQwLVxcbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZzoyNDE6Y29uZmlnIEtWTV9YSUNTXFxuYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnLTI0Mi1cXHRib29sIFxcXCJLVk0gaW4ta2VybmVsIFhJQ1MgZW11bGF0aW9uXFxcIlxcbi0tXFxuYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnLTI1MC1cXG5hcmNoL3Bvd2VycGMva3ZtL0tjb25maWc6MjUxOmNvbmZpZyBLVk1fWElWRVxcbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZy0yNTItXFx0Ym9vbFxcbi0tXFxuYXJjaC9wb3dlcnBjL3BsYXRmb3Jtcy9LY29uZmlnPTIyPXNvdXJjZSBcXFwiYXJjaC9wb3dlcnBjL3BsYXRmb3Jtcy9taWNyb3dhdHQvS2NvbmZpZ1xcXCJcXG5hcmNoL3Bvd2VycGMvcGxhdGZvcm1zL0tjb25maWctMjMtXFxuYXJjaC9wb3dlcnBjL3BsYXRmb3Jtcy9LY29uZmlnOjI0OmNvbmZpZyBLVk1fR1VFU1RcXG5hcmNoL3Bvd2VycGMvcGxhdGZvcm1zL0tjb25maWctMjUtXFx0Ym9vbCBcXFwiS1ZNIEd1ZXN0IHN1cHBvcnRcXFwiXFxuLS1cXG5hcmNoL3Jpc2N2L2t2bS9LY29uZmlnPTE4PWlmIFZJUlRVQUxJWkFUSU9OXFxuYXJjaC9yaXNjdi9rdm0vS2NvbmZpZy0xOS1cXG5hcmNoL3Jpc2N2L2t2bS9LY29uZmlnOjIwOmNvbmZpZyBLVk1cXG5hcmNoL3Jpc2N2L2t2bS9LY29uZmlnLTIxLVxcdHRyaXN0YXRlIFxcXCJLZXJuZWwtYmFzZWQgVmlydHVhbCBNYWNoaW5lIChLVk0pIHN1cHBvcnRcXFwiXFxuLS1cXG5hcmNoL3MzOTAva3ZtL0tjb25maWc9MTc9aWYgVklSVFVBTElaQVRJT05cXG5hcmNoL3MzOTAva3ZtL0tjb25maWctMTgtXFxuYXJjaC9zMzkwL2t2bS9LY29uZmlnOjE5OmNvbmZpZyBLVk1cXG5hcmNoL3MzOTAva3ZtL0tjb25maWctMjAtXFx0ZGVmX3RyaXN0YXRlIHlcXG4tLVxcbmFyY2gvczM5MC9rdm0vS2NvbmZpZy00Ni1cXG5hcmNoL3MzOTAva3ZtL0tjb25maWc6NDc6Y29uZmlnIEtWTV9TMzkwX1VDT05UUk9MXFxuYXJjaC9zMzkwL2t2bS9LY29uZmlnLTQ4LVxcdGJvb2wgXFxcIlVzZXJzcGFjZSBjb250cm9sbGVkIHZpcnR1YWwgbWFjaGluZXNcXFwiXFxuLS1cXG5hcmNoL3g4Ni9LY29uZmlnPTgyNj1zb3VyY2UgXFxcImFyY2gveDg2L3hlbi9LY29uZmlnXFxcIlxcbmFyY2gveDg2L0tjb25maWctODI3LVxcbmFyY2gveDg2L0tjb25maWc6ODI4OmNvbmZpZyBLVk1fR1VFU1RcXG5hcmNoL3g4Ni9LY29uZmlnLTgyOS1cXHRib29sIFxcXCJLVk0gR3Vlc3Qgc3VwcG9ydCAoaW5jbHVkaW5nIGt2bWNsb2NrKVxcXCJcXG4tLVxcbmFyY2gveDg2L2t2bS9LY29uZmlnPTE4PWlmIFZJUlRVQUxJWkFUSU9OXFxuYXJjaC94ODYva3ZtL0tjb25maWctMTktXFxuYXJjaC94ODYva3ZtL0tjb25maWc6MjA6Y29uZmlnIEtWTV9YODZcXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0yMS1cXHRkZWZfdHJpc3RhdGUgS1ZNIGlmIChLVk1fSU5URUwgIT0gbiB8fCBLVk1fQU1EICE9IG4pXFxuLS1cXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy01Mi1cXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZzo1Mzpjb25maWcgS1ZNXFxuYXJjaC94ODYva3ZtL0tjb25maWctNTQtXFx0dHJpc3RhdGUgXFxcIktlcm5lbC1iYXNlZCBWaXJ0dWFsIE1hY2hpbmUgKEtWTSkgc3VwcG9ydFxcXCJcXG4tLVxcbmFyY2gveDg2L2t2bS9LY29uZmlnLTY5LVxcbmFyY2gveDg2L2t2bS9LY29uZmlnOjcwOmNvbmZpZyBLVk1fV0VSUk9SXFxuYXJjaC94ODYva3ZtL0tjb25maWctNzEtXFx0Ym9vbCBcXFwiQ29tcGlsZSBLVk0gd2l0aCAtV2Vycm9yXFxcIlxcbi0tXFxuYXJjaC94ODYva3ZtL0tjb25maWctODMtXFxuYXJjaC94ODYva3ZtL0tjb25maWc6ODQ6Y29uZmlnIEtWTV9TV19QUk9URUNURURfVk1cXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy04NS1cXHRib29sIFxcXCJFbmFibGUgc3VwcG9ydCBmb3IgS1ZNIHNvZnR3YXJlLXByb3RlY3RlZCBWTXNcXFwiXFxuLS1cXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy05Ni1cXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZzo5Nzpjb25maWcgS1ZNX0lOVEVMXFxuYXJjaC94ODYva3ZtL0tjb25maWctOTgtXFx0dHJpc3RhdGUgXFxcIktWTSBmb3IgSW50ZWwgKGFuZCBjb21wYXRpYmxlKSBwcm9jZXNzb3JzIHN1cHBvcnRcXFwiXFxuLS1cXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0xMDctXFxuYXJjaC94ODYva3ZtL0tjb25maWc6MTA4OmNvbmZpZyBLVk1fSU5URUxfUFJPVkVfVkVcXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0xMDktICAgICAgICBib29sIFxcXCJDaGVjayB0aGF0IGd1ZXN0cyBkbyBub3QgcmVjZWl2ZSAjVkUgZXhjZXB0aW9uc1xcXCJcXG4tLVxcbmFyY2gveDg2L2t2bS9LY29uZmlnPTEyMz1jb25maWcgWDg2X1NHWF9LVk1cXG4tLVxcbmFyY2gveDg2L2t2bS9LY29uZmlnLTEzNC1cXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZzoxMzU6Y29uZmlnIEtWTV9JTlRFTF9URFhcXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0xMzYtXFx0Ym9vbCBcXFwiSW50ZWwgVHJ1c3QgRG9tYWluIEV4dGVuc2lvbnMgKFREWCkgc3VwcG9ydFxcXCJcXG4tLVxcbmFyY2gveDg2L2t2bS9LY29uZmlnLTE0Ni1cXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZzoxNDc6Y29uZmlnIEtWTV9BTURcXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0xNDgtXFx0dHJpc3RhdGUgXFxcIktWTSBmb3IgQU1EIHByb2Nlc3NvcnMgc3VwcG9ydFxcXCJcXG4tLVxcbmFyY2gveDg2L2t2bS9LY29uZmlnLTE1Ni1cXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZzoxNTc6Y29uZmlnIEtWTV9BTURfU0VWXFxuYXJjaC94ODYva3ZtL0tjb25maWctMTU4LVxcdGJvb2wgXFxcIkFNRCBTZWN1cmUgRW5jcnlwdGVkIFZpcnR1YWxpemF0aW9uIChTRVYpIHN1cHBvcnRcXFwiXFxuLS1cXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0xNzItXFxuYXJjaC94ODYva3ZtL0tjb25maWc6MTczOmNvbmZpZyBLVk1fSU9BUElDXFxuYXJjaC94ODYva3ZtL0tjb25maWctMTc0LVxcdGJvb2wgXFxcIkkvTyBBUElDLCBQSUMsIGFuZCBQSVQgZW11bGF0aW9uXFxcIlxcbi0tXFxuYXJjaC94ODYva3ZtL0tjb25maWctMTgyLVxcbmFyY2gveDg2L2t2bS9LY29uZmlnOjE4Mzpjb25maWcgS1ZNX1NNTVxcbmFyY2gveDg2L2t2bS9LY29uZmlnLTE4NC1cXHRib29sIFxcXCJTeXN0ZW0gTWFuYWdlbWVudCBNb2RlIGVtdWxhdGlvblxcXCJcXG4tLVxcbmFyY2gveDg2L2t2bS9LY29uZmlnLTE5My1cXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZzoxOTQ6Y29uZmlnIEtWTV9IWVBFUlZcXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0xOTUtXFx0Ym9vbCBcXFwiU3VwcG9ydCBmb3IgTWljcm9zb2Z0IEh5cGVyLVYgZW11bGF0aW9uXFxcIlxcbi0tXFxuYXJjaC94ODYva3ZtL0tjb25maWctMjA3LVxcbmFyY2gveDg2L2t2bS9LY29uZmlnOjIwODpjb25maWcgS1ZNX1hFTlxcbmFyY2gveDg2L2t2bS9LY29uZmlnLTIwOS1cXHRib29sIFxcXCJTdXBwb3J0IGZvciBYZW4gaHlwZXJjYWxsIGludGVyZmFjZVxcXCJcXG4tLVxcbmFyY2gveDg2L2t2bS9LY29uZmlnLTIxNi1cXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZzoyMTc6Y29uZmlnIEtWTV9QUk9WRV9NTVVcXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0yMTgtXFx0Ym9vbCBcXFwiUHJvdmUgS1ZNIE1NVSBjb3JyZWN0bmVzc1xcXCJcXG4tLVxcbmFyY2gveDg2L2t2bS9LY29uZmlnLTIyOS1cXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZzoyMzA6Y29uZmlnIEtWTV9FWFRFUk5BTF9XUklURV9UUkFDS0lOR1xcbmFyY2gveDg2L2t2bS9LY29uZmlnLTIzMS1cXHRib29sXFxuYXJjaC94ODYva3ZtL0tjb25maWctMjMyLVxcbmFyY2gveDg2L2t2bS9LY29uZmlnOjIzMzpjb25maWcgS1ZNX01BWF9OUl9WQ1BVU1xcbmFyY2gveDg2L2t2bS9LY29uZmlnLTIzNC1cXHRpbnQgXFxcIk1heGltdW0gbnVtYmVyIG9mIHZDUFVzIHBlciBLVk0gZ3Vlc3RcXFwiXFxuLS1cXG52aXJ0L2t2bS9LY29uZmlnLTMtXFxudmlydC9rdm0vS2NvbmZpZzo0OmNvbmZpZyBLVk1fQ09NTU9OXFxudmlydC9rdm0vS2NvbmZpZy01LSAgICAgICBib29sXFxuLS1cXG52aXJ0L2t2bS9LY29uZmlnPTM5PWNvbmZpZyBORUVEX0tWTV9ESVJUWV9SSU5HX1dJVEhfQklUTUFQXFxuLS1cXG52aXJ0L2t2bS9LY29uZmlnLTQyLVxcbnZpcnQva3ZtL0tjb25maWc6NDM6Y29uZmlnIEtWTV9NTUlPXFxudmlydC9rdm0vS2NvbmZpZy00NC0gICAgICAgYm9vbFxcbnZpcnQva3ZtL0tjb25maWctNDUtXFxudmlydC9rdm0vS2NvbmZpZzo0Njpjb25maWcgS1ZNX0FTWU5DX1BGXFxudmlydC9rdm0vS2NvbmZpZy00Ny0gICAgICAgYm9vbFxcbi0tXFxudmlydC9rdm0vS2NvbmZpZy00OS0jIFRvZ2dsZSB0byBzd2l0Y2ggYmV0d2VlbiBkaXJlY3Qgbm90aWZpY2F0aW9uIGFuZCBiYXRjaCBqb2JcXG52aXJ0L2t2bS9LY29uZmlnOjUwOmNvbmZpZyBLVk1fQVNZTkNfUEZfU1lOQ1xcbnZpcnQva3ZtL0tjb25maWctNTEtICAgICAgIGJvb2xcXG4tLVxcbnZpcnQva3ZtL0tjb25maWc9NTk9Y29uZmlnIEhBVkVfS1ZNX0NQVV9SRUxBWF9JTlRFUkNFUFRcXG4tLVxcbnZpcnQva3ZtL0tjb25maWctNjEtXFxudmlydC9rdm0vS2NvbmZpZzo2Mjpjb25maWcgS1ZNX1ZGSU9cXG52aXJ0L2t2bS9LY29uZmlnLTYzLSAgICAgICBib29sXFxuLS1cXG52aXJ0L2t2bS9LY29uZmlnPTY1PWNvbmZpZyBIQVZFX0tWTV9JTlZBTElEX1dBS0VVUFNcXG4tLVxcbnZpcnQva3ZtL0tjb25maWctNjctXFxudmlydC9rdm0vS2NvbmZpZzo2ODpjb25maWcgS1ZNX0dFTkVSSUNfRElSVFlMT0dfUkVBRF9QUk9URUNUXFxudmlydC9rdm0vS2NvbmZpZy02OS0gICAgICAgYm9vbFxcbnZpcnQva3ZtL0tjb25maWctNzAtXFxudmlydC9rdm0vS2NvbmZpZzo3MTpjb25maWcgS1ZNX0dFTkVSSUNfUFJFX0ZBVUxUX01FTU9SWVxcbnZpcnQva3ZtL0tjb25maWctNzItICAgICAgIGJvb2xcXG52aXJ0L2t2bS9LY29uZmlnLTczLVxcbnZpcnQva3ZtL0tjb25maWc6NzQ6Y29uZmlnIEtWTV9DT01QQVRcXG52aXJ0L2t2bS9LY29uZmlnLTc1LSAgICAgICBkZWZfYm9vbCB5XFxuLS1cXG52aXJ0L2t2bS9LY29uZmlnPTkxPWNvbmZpZyBIQVZFX0tWTV9QTV9OT1RJRklFUlxcbi0tXFxudmlydC9rdm0vS2NvbmZpZy05My1cXG52aXJ0L2t2bS9LY29uZmlnOjk0OmNvbmZpZyBLVk1fR0VORVJJQ19IQVJEV0FSRV9FTkFCTElOR1xcbnZpcnQva3ZtL0tjb25maWctOTUtICAgICAgIGJvb2xcXG52aXJ0L2t2bS9LY29uZmlnLTk2LVxcbnZpcnQva3ZtL0tjb25maWc6OTc6Y29uZmlnIEtWTV9FTElERV9UTEJfRkxVU0hfSUZfWU9VTkdcXG52aXJ0L2t2bS9LY29uZmlnLTk4LSAgICAgICBib29sXFxudmlydC9rdm0vS2NvbmZpZy05OS1cXG52aXJ0L2t2bS9LY29uZmlnOjEwMDpjb25maWcgS1ZNX01NVV9MT0NLTEVTU19BR0lOR1xcbnZpcnQva3ZtL0tjb25maWctMTAxLSAgICAgICBib29sXFxudmlydC9rdm0vS2NvbmZpZy0xMDItXFxudmlydC9rdm0vS2NvbmZpZzoxMDM6Y29uZmlnIEtWTV9HRU5FUklDX01FTU9SWV9BVFRSSUJVVEVTXFxudmlydC9rdm0vS2NvbmZpZy0xMDQtICAgICAgIGJvb2xcXG52aXJ0L2t2bS9LY29uZmlnLTEwNS1cXG52aXJ0L2t2bS9LY29uZmlnOjEwNjpjb25maWcgS1ZNX0dVRVNUX01FTUZEXFxudmlydC9rdm0vS2NvbmZpZy0xMDctICAgICAgIHNlbGVjdCBYQVJSQVlfTVVMVElcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTZUMDY6MDA6MzQuMDExMTUyNjE3WiIsIlNlcSI6OSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDUxMTMzMTExNywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBLVk0gQ29uZmlndXJhdGlvbiBBbmFseXNpcyoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoZXNlIGNvbmZpZ3VyYXRpb25zLiBUaGUgZm9jdXMgaXMgZGVmaW5pdGVseSBgS1ZNYC4gRm9yIHg4NiwgaXQncyBwcmV0dHkgc3RhbmRhcmQgdGhhdCBgS1ZNYCByZWxpZXMgb24gZWl0aGVyIGBLVk1fSU5URUxgIG9yIGBLVk1fQU1EYCwgYnV0IGBLVk1gIGl0c2VsZiBpcyB0aGUgY29yZS4gUmlnaHQsIGBLVk1gIGlzIGRlZmluZWQgYXMgYSB0cmlzdGF0ZSBvcHRpb24gZm9yIFwiS2VybmVsLWJhc2VkIFZpcnR1YWwgTWFjaGluZSAoS1ZNKSBzdXBwb3J0LlwiIFRoYXQgbWFrZXMgc2Vuc2U7IEknbGwgZGVmaW5pdGVseSBpbmNsdWRlIGBLVk1gIGluIHRoZSBgRW5hYmxlQ29uZmlnc2AgbGlzdC5cblxuTm93LCBsZXQncyBqdXN0IHF1aWNrbHkgY29uZmlybSB0aGF0IGBIQVZFX0tWTV9WQ1BVX1JVTl9QSURfQ0hBTkdFYCBpcyBzb21ldGhpbmcgd2UgbmVlZCB0byBjb25zaWRlci4gQWgsIHllcywgaXQncyBzZWxlY3RlZCBieSBib3RoIGBLVk1fWDg2YCBhbmQgYEtWTWAgb24gYXJtNjQgYXJjaGl0ZWN0dXJlcy4gTm93IGhvbGQgb24gYSBzZWNvbmQuLi4gdGhlIGRpZmYgZG9lc24ndCBzZWVtIHRvIGV4cGxpY2l0bHkgYWRkIGBIQVZFX0tWTV9WQ1BVX1JVTl9QSURfQ0hBTkdFYCB0byB0aGUgYGFyY2gvYXJtNjQva3ZtL0tjb25maWdgIGZpbGUuIEknZCBiZXR0ZXIgZG91YmxlLWNoZWNrIHRoZSBgYXJjaC9hcm02NC9rdm0vS2NvbmZpZ2AgdG8gYmUgYWJzb2x1dGVseSBzdXJlIHdoYXQncyBnb2luZyBvbiB0aGVyZS4gR290dGEgYmUgdGhvcm91Z2guXG5cblxuIiwiSW5wdXRUb2tlbnMiOjEzMjA5LCJPdXRwdXRUb2tlbnMiOjI4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTg5LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE2VDA2OjAwOjM4LjUyMjQ4NzQyNFoiLCJTZXEiOjEwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTU1OTY4NTU2MSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJIQVZFX0tWTV9WQ1BVX1JVTl9QSURfQ0hBTkdFXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImFyY2gvYXJtNjQva3ZtL0tjb25maWc9MjA9bWVudWNvbmZpZyBLVk1cXG4tLVxcbmFyY2gvYXJtNjQva3ZtL0tjb25maWctMzUtXFx0c2VsZWN0IEhBVkVfS1ZNX1JFQURPTkxZX01FTVxcbmFyY2gvYXJtNjQva3ZtL0tjb25maWc6MzY6XFx0c2VsZWN0IEhBVkVfS1ZNX1ZDUFVfUlVOX1BJRF9DSEFOR0VcXG5hcmNoL2FybTY0L2t2bS9LY29uZmlnLTM3LVxcdHNlbGVjdCBTQ0hFRF9JTkZPXFxuLS1cXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZz0yMD1jb25maWcgS1ZNX1g4Nlxcbi0tXFxuYXJjaC94ODYva3ZtL0tjb25maWctNDItXFx0c2VsZWN0IEhBVkVfS1ZNX05PX1BPTExcXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZzo0MzpcXHRzZWxlY3QgSEFWRV9LVk1fVkNQVV9SVU5fUElEX0NIQU5HRVxcbmFyY2gveDg2L2t2bS9LY29uZmlnLTQ0LVxcdHNlbGVjdCBWSVJUX1hGRVJfVE9fR1VFU1RfV09SS1xcbi0tXFxuaW5jbHVkZS9saW51eC9rdm1faG9zdC5oPTI0NjA9dm9pZCBrdm1fYXJjaF9ndWVzdF9tZW1vcnlfcmVjbGFpbWVkKHN0cnVjdCBrdm0gKmt2bSk7XFxuaW5jbHVkZS9saW51eC9rdm1faG9zdC5oLTI0NjEtXFxuaW5jbHVkZS9saW51eC9rdm1faG9zdC5oOjI0NjI6I2lmZGVmIENPTkZJR19IQVZFX0tWTV9WQ1BVX1JVTl9QSURfQ0hBTkdFXFxuaW5jbHVkZS9saW51eC9rdm1faG9zdC5oLTI0NjMtaW50IGt2bV9hcmNoX3ZjcHVfcnVuX3BpZF9jaGFuZ2Uoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KTtcXG4tLVxcbmluY2x1ZGUvbGludXgva3ZtX2hvc3QuaD0yNDY1PXN0YXRpYyBpbmxpbmUgaW50IGt2bV9hcmNoX3ZjcHVfcnVuX3BpZF9jaGFuZ2Uoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxcbi0tXFxuaW5jbHVkZS9saW51eC9rdm1faG9zdC5oLTI0NjgtfVxcbmluY2x1ZGUvbGludXgva3ZtX2hvc3QuaDoyNDY5OiNlbmRpZiAvKiBDT05GSUdfSEFWRV9LVk1fVkNQVV9SVU5fUElEX0NIQU5HRSAqL1xcbmluY2x1ZGUvbGludXgva3ZtX2hvc3QuaC0yNDcwLVxcbi0tXFxudmlydC9rdm0vS2NvbmZpZz03OD1jb25maWcgSEFWRV9LVk1fSVJRX0JZUEFTU1xcbi0tXFxudmlydC9rdm0vS2NvbmZpZy04MS1cXG52aXJ0L2t2bS9LY29uZmlnOjgyOmNvbmZpZyBIQVZFX0tWTV9WQ1BVX1JVTl9QSURfQ0hBTkdFXFxudmlydC9rdm0vS2NvbmZpZy04My0gICAgICAgYm9vbFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xNlQwNjowMDo0MC4wODIxODA5NzVaIiwiU2VxIjoxMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6ODg3Nzk0MDE4OCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBc3Nlc3NtZW50IG9mIHRoZSBLVk0gU3RlYWwtVGltZSBSZXNldCBQYXRjaCoqXG5cbk9rYXksIHNvIEkgc2VlIHRoaXMgcGF0Y2ggaXMgdHJpZ2dlcmVkIGJ5IGBLVk1gIG9uIGFybTY0IGFuZCBgS1ZNX1g4NmAgb24geDg2LCB3aGljaCBjb25maXJtcyBgS1ZNYCBpcyB0aGUgcHJpbWFyeSBjb25maWd1cmF0aW9uIHZhcmlhYmxlIGF0IHBsYXkgaGVyZS4gTGV0IG1lIHF1aWNrbHkgc2NhbiBmb3IgYW55IG90aGVyIHBvdGVudGlhbGx5IHJlbGV2YW50IGNvbmZpZ3VyYXRpb25zLi4uIG5vcGUsIGBLVk1gIHNlZW1zIHRvIGJlIHRoZSBvbmx5IHRoaW5nIHdlIG5lZWQgdG8gY29uc2lkZXIuXG5cblRoZSBjb3JlIG9mIHRoZSBjaGFuZ2UgcmV2b2x2ZXMgYXJvdW5kIHJlc2V0dGluZyBzdGVhbC10aW1lIGFjY291bnRpbmcgd2hlbiBhIEtWTSB2Q1BVIHRyYW5zaXRpb25zIHRvIGEgbmV3IGhvc3QgUElELiBUaGlzIGRpcmVjdGx5IGltcGFjdHMgY29yZSBLVk0gbG9naWMgYWNyb3NzIGJvdGggQVJNNjQgYW5kIHg4NiBhcmNoaXRlY3R1cmVzLCBhbmQgdGhlIGNvZGUgaW50cm9kdWNlcyBga3ZtX2FyY2hfdmNwdV9ydW5fcGlkX2NoYW5nZWAgYW5kIGBrdm1fcmVzZXRfc3RvbGVuX3RpbWVgLiBUaGVzZSBhcmUgc2lnbmlmaWNhbnQgZnVuY3Rpb25hbCBhZGRpdGlvbnMgd2l0aGluIHRoZSBLVk0gY29kZS4gR2l2ZW4gdGhlaXIgZGlyZWN0IGltcGFjdCBvbiB2Q1BVIG1pZ3JhdGlvbiBiZWhhdmlvciwgdGhpcyBpcyBhbiBhcmVhIHRoYXQgKmFic29sdXRlbHkqIHdhcnJhbnRzIHRhcmdldGVkIGZ1enppbmcuIFdlIG5lZWQgdG8gZW5zdXJlIHRoYXQgdGhpcyBjaGFuZ2UgZG9lc24ndCBpbnRyb2R1Y2UgYW55IHBlcmZvcm1hbmNlIHJlZ3Jlc3Npb25zIG9yLCBldmVuIHdvcnNlLCB1bmFudGljaXBhdGVkIGJlaGF2aW9yYWwgc2hpZnRzIGR1cmluZyB2Q1BVIHRocmVhZCBtaWdyYXRpb25zLlxuXG5SaWdodCwgSSdtIGNvbmZpZGVudCBpbiB0aGlzIGV2YWx1YXRpb24sIEknbGwgZ28gYWhlYWQgYW5kIGxvZyB0aGUgcmVzdWx0cyBub3cuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE0MjQ2LCJPdXRwdXRUb2tlbnMiOjE2NSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIxMiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xNlQwNjowMDo0OC45NjAxMjQyODNaIiwiU2VxIjoxMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo3OTk3NzE5OSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiS1ZNXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwia3ZtX2FyY2hfdmNwdV9ydW5fcGlkX2NoYW5nZVwiLFxuICAgIFwia3ZtX3Jlc2V0X3N0b2xlbl90aW1lXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggaW50cm9kdWNlcyBhIG1lY2hhbmlzbSB0byByZXNldCBzdGVhbC10aW1lIGFjY291bnRpbmcgd2hlbiBhIEtWTSB2Q1BVIGlzIHJ1biBmcm9tIGEgZGlmZmVyZW50IGhvc3QgUElELiBJdCBtb2RpZmllcyBjb3JlIEtWTSBsb2dpYyBmb3IgYm90aCBBUk02NCBhbmQgeDg2IGFyY2hpdGVjdHVyZXMsIGFkZGluZyBga3ZtX2FyY2hfdmNwdV9ydW5fcGlkX2NoYW5nZWAgYW5kIGBrdm1fcmVzZXRfc3RvbGVuX3RpbWVgLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgdG8gcmVhY2hhYmxlIEtWTSBjb2RlIHRoYXQgc2hvdWxkIGJlIGZ1enplZCB0byBlbnN1cmUgaXQgZG9lc24ndCBpbnRyb2R1Y2UgcmVncmVzc2lvbnMgb3IgdW5leHBlY3RlZCBiZWhhdmlvciBkdXJpbmcgdkNQVSB0aHJlYWQgbWlncmF0aW9ucy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJLVk1cIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJrdm1fYXJjaF92Y3B1X3J1bl9waWRfY2hhbmdlXCIsXG4gICAgXCJrdm1fcmVzZXRfc3RvbGVuX3RpbWVcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBpbnRyb2R1Y2VzIGEgbWVjaGFuaXNtIHRvIHJlc2V0IHN0ZWFsLXRpbWUgYWNjb3VudGluZyB3aGVuIGEgS1ZNIHZDUFUgaXMgcnVuIGZyb20gYSBkaWZmZXJlbnQgaG9zdCBQSUQuIEl0IG1vZGlmaWVzIGNvcmUgS1ZNIGxvZ2ljIGZvciBib3RoIEFSTTY0IGFuZCB4ODYgYXJjaGl0ZWN0dXJlcywgYWRkaW5nIGBrdm1fYXJjaF92Y3B1X3J1bl9waWRfY2hhbmdlYCBhbmQgYGt2bV9yZXNldF9zdG9sZW5fdGltZWAuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSB0byByZWFjaGFibGUgS1ZNIGNvZGUgdGhhdCBzaG91bGQgYmUgZnV6emVkIHRvIGVuc3VyZSBpdCBkb2Vzbid0IGludHJvZHVjZSByZWdyZXNzaW9ucyBvciB1bmV4cGVjdGVkIGJlaGF2aW9yIGR1cmluZyB2Q1BVIHRocmVhZCBtaWdyYXRpb25zLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xNlQwNjowMDo0OS4wNDAxMTEzNTJaIiwiU2VxIjoxMywiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJJZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjg1OTg2NzY2MzYsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xNlQwNjowMDo0OS4wNDA3NTQ1NTJaIiwiU2VxIjoxNCwiTmVzdGluZyI6MiwiVHlwZSI6ImFnZW50IiwiTmFtZSI6Imttc2FuLWV2YWx1YXRvciIsIk1vZGVsIjoiYmVzdC1leHBlbnNpdmUiLCJEdXJhdGlvbiI6ODU5ODAyODU1NiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggc2ltcGx5IHJlc2V0cyB0aGUgS1ZNIHN0ZWFsIHRpbWUgYWNjb3VudGluZyBiYXNlIChgbGFzdF9zdGVhbGApIHRvIHRoZSBjdXJyZW50IHRhc2sncyBgcnVuX2RlbGF5YCB3aGVuIGEgdkNQVSB0aHJlYWQgY2hhbmdlcyBpdHMgaG9zdCBQSUQuIFRoaXMgaW52b2x2ZXMgcmVhZGluZyBhIGZ1bGx5IGluaXRpYWxpemVkIHNjYWxhciB2YWx1ZSAoYGN1cnJlbnQtXFx1MDAzZXNjaGVkX2luZm8ucnVuX2RlbGF5YCkgZnJvbSB0aGUgc2NoZWR1bGVyIGFuZCBhc3NpZ25pbmcgaXQgdG8gYSBmaWVsZCBpbiB0aGUgdkNQVSBhcmNoaXRlY3R1cmUgc3RydWN0dXJlLiBObyBuZXcgbWVtb3J5IGFsbG9jYXRpb25zIGFyZSBpbnRyb2R1Y2VkLCBubyBzdHJ1Y3R1cmVzIGFyZSBjb3BpZWQgdG8gdXNlciBzcGFjZSwgYW5kIG5vIGNvbXBsZXggZGF0YSBzdHJ1Y3R1cmVzIGFyZSBtYW5pcHVsYXRlZCBpbiBhIHdheSB0aGF0IGNvdWxkIGV4cG9zZSB1bmluaXRpYWxpemVkIG1lbW9yeS4gVGhlcmVmb3JlLCB0aGVyZSBpcyBubyByaXNrIG9mIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHVzZSBvciBpbmZvLWxlYWtzLCBhbmQgYSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGlzIG5vdCByZXF1aXJlZC5cIixcbiAgXCJOZWVkc0tNU0FOXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgc2VjdXJpdHkgZW5naW5lZXIgc3BlY2lhbGl6aW5nIGluIGtlcm5lbCBtZW1vcnlcbmVycm9yIGRldGVjdG9ycyAoS0FTQU4gYW5kIEtNU0FOKS4gWW91ciBqb2IgaXMgdG8gcmV2aWV3IHRoZSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kXG5kZXRlcm1pbmUgaWYgdGhlIGNvZGUgY2hhbmdlcyBqdXN0aWZ5IHNwYXduaW5nIGEgZGVkaWNhdGVkIEtNU0FOIChLZXJuZWxNZW1vcnlTYW5pdGl6ZXIpXG5mdXp6aW5nIHNlc3Npb24gaW4gYWRkaXRpb24gdG8gc3RhbmRhcmQgS0FTQU4gZnV6emluZy5cblxuQ1JJVElDQUwgRElTVElOQ1RJT04gQkVUV0VFTiBLQVNBTiBBTkQgS01TQU46XG4tIFN0YW5kYXJkIEtBU0FOIGtlcm5lbCBidWlsZHMgKHVwc3RyZWFtLWFwcGFybW9yLWthc2FuLmNvbmZpZykgYWxyZWFkeSBlbmFibGVcbiAgYSBjb21wcmVoZW5zaXZlIHN1aXRlIG9mIGRlYnVnZ2luZyB0b29scyBhbmQgc2FuaXRpemVycywgaW5jbHVkaW5nIEtBU0FOXG4gIChvdXQtb2YtYm91bmRzIGFjY2Vzc2VzLCB1c2UtYWZ0ZXItZnJlZSwgZG91YmxlIGZyZWUsIGludmFsaWQgZnJlZSksIExPQ0tERVBcbiAgKGxvY2tpbmcgYnVncyBhbmQgZGVhZGxvY2tzKSwgVUItc2FuaXRpemVycywgYW5kIG1lbW9yeSBjb3JydXB0aW9uIGNoZWNrcy5cbi0gS01TQU4gKEtlcm5lbE1lbW9yeVNhbml0aXplcikgZGV0ZWN0cyByZWFkcyBvZiBVTklOSVRJQUxJWkVEIG1lbW9yeSAoc3RhY2ssIGhlYXAsXG4gIG9yIHBhZ2UgYWxsb2NhdGlvbnMpIGFuZCBrZXJuZWwtdG8tdXNlciBtZW1vcnkgaW5mby1sZWFrcy5cblxuUnVsZTogVEhFUkUgSVMgTk8gU0VOU0UgSU4gUlVOTklORyBBIEtNU0FOIFNFU1NJT04gSUYgQSBCVUcgQ0FOIEJFIENBVUdIVCBCWSBLQVNBTixcbkxPQ0tERVAsIE9SIE9USEVSIFNUQU5EQVJEIEJVRyBERVRFQ1RPUlMuXG5BIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaW5jdXJzIHNpZ25pZmljYW50IHJlc291cmNlIGNvc3RzLiBZb3UgbXVzdCBPTkxZXG5zZXQgTmVlZHNLTVNBTj10cnVlIGlmIHRoZSBjb2RlIGNoYW5nZXMgaW50cm9kdWNlIG9yIGV4cG9zZSBVTklOSVRJQUxJWkVEIE1FTU9SWSByaXNrc1xudGhhdCBhcmUgZGV0ZWN0ZWQgT05MWSBieSBLTVNBTi5cblxuTG9vayBob2xpc3RpY2FsbHkgYXQgdGhlIHBhdGNoIHNlcmllcyBhbmQgc3Vycm91bmRpbmcgY29kZS4gRXZlbiBpZiBubyBkaXJlY3RcbnVuaW5pdGlhbGl6ZWQgZmllbGQgYWNjZXNzZXMgb3IgbmV3IGJ1ZmZlciBhbGxvY2F0aW9ucyBhcmUgYWRkZWQgaW4gdGhlIGRpZmYgaXRzZWxmLFxuYSBwYXRjaCBtYXkgYWx0ZXIgY29udHJvbCBmbG93LCBib3VuZHMgY2hlY2tpbmcsIG9yIGRhdGEgbGVuZ3RoIGNhbGN1bGF0aW9ucyBpbiB3YXlzXG50aGF0IGNoYW5nZSBob3cgdGhlIHJlc3Qgb2YgdGhlIGNvZGUgb3BlcmF0ZXMgb24gZXhpc3RpbmcgYnVmZmVycyAoZS5nLiBhbGxvd2luZ1xudW5pbml0aWFsaXplZCBzdGFjay9oZWFwIG1lbW9yeSB0byBiZSByZWFkLCBjb3BpZWQgdG8gdXNlciBzcGFjZSwgb3IgdXNlZCBpbiBjb250cm9sXG5mbG93KS4gRG8gbm90IGhlc2l0YXRlIHRvIHVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGluc3BlY3QgdGhlIHN1cnJvdW5kaW5nIGNvZGUsXG5jYWxsZWQgZnVuY3Rpb25zLCBhbmQgY2FsbGVycy5cblxuU2V0IE5lZWRzS01TQU49dHJ1ZSBPTkxZIElGIHRoZSBwYXRjaCBpbnRyb2R1Y2VzIG9yIG1vZGlmaWVzOlxuMS4gS2VybmVsIHN0cnVjdHVyZXMgc2VudCB0byB1c2VyIHNwYWNlICh2aWEgY29weV90b191c2VyLCBwdXRfdXNlciwgbmV0bGluayBza2JcbiAgIGF0dHJpYnV0ZXMsIGlvY3RsIG91dHB1dCBhcmd1bWVudHMsIHNvY2tldCBvcHRpb25zLCBvciBCUEYgYnVmZmVycykgd2hlcmUgZmllbGRzXG4gICBvciBzdHJ1Y3R1cmUgcGFkZGluZyBtaWdodCBub3QgYmUgZnVsbHkgaW5pdGlhbGl6ZWQvemVyb2VkLlxuMi4gQ29uZGl0aW9uYWwgbG9naWMgb3IgYnJhbmNoaW5nIHRoYXQgZGVwZW5kcyBvbiBwb3RlbnRpYWxseSB1bmluaXRpYWxpemVkIHZhcmlhYmxlc1xuICAgb3Igc3RydWN0IGZpZWxkcy5cbjMuIEFsbG9jYXRpb24gb3IgaW5pdGlhbGl6YXRpb24gb2YgY29tcGxleCBkYXRhIHN0cnVjdHVyZXMgd2hlcmUgdW5pbml0aWFsaXplZCBmaWVsZHNcbiAgIGNvdWxkIGJlIHJlYWQgbGF0ZXIgaW4gcmVhY2hhYmxlIGNvZGUgcGF0aHMuXG40LiBCb3VuZHMgY2hlY2tzLCBsZW5ndGhzLCBvciBsb2dpYyBpbiBhIHdheSB0aGF0IGFsbG93cyBzdXJyb3VuZGluZyBjb2RlIHRvIGFjY2Vzc1xuICAgdW5pbml0aWFsaXplZCBieXRlcyBvZiBleGlzdGluZyBidWZmZXJzLlxuXG5TZXQgTmVlZHNLTVNBTj1mYWxzZSBJRjpcbi0gVGhlIGNvZGUgY2hhbmdlcyBwcmltYXJpbHkgcmlzayBvdXQtb2YtYm91bmRzIGFjY2VzcywgYXJyYXkgb3ZlcmZsb3dzLCBOVUxMIHBvaW50ZXJcbiAgZGVyZWZlcmVuY2VzLCBsb2NraW5nIGRlYWRsb2Nrcywgb3IgdXNlLWFmdGVyLWZyZWUgYnVncyAodGhlc2UgYXJlIGFscmVhZHkgY2F1Z2h0XG4gIGJ5IEtBU0FOLCBMT0NLREVQLCBvciBzdGFuZGFyZCBidWcgZGV0ZWN0b3JzKS5cbi0gQWxsIHN0YWNrL2hlYXAgc3RydWN0dXJlcyB0b3VjaGVkIG9yIGludHJvZHVjZWQgYnkgdGhlIHBhdGNoIGFyZSBmdWxseSB6ZXJvZWRcbiAgb3IgaW5pdGlhbGl6ZWQgKGUuZy4gdXNpbmcgPSB7MH0sIG1lbXNldCwga3phbGxvYykgYmVmb3JlIGJlaW5nIHJlYWQgb3IgY29waWVkLlxuLSBUaGUgcGF0Y2ggZG9lcyBub3QgaW50cm9kdWNlIGFueSByaXNrIG9mIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHVzYWdlIG9yIGluZm8tbGVha3MuXG5cblVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGluc3BlY3QgdGhlIHN1cnJvdW5kaW5nIGNvZGUgaWYgbmVjZXNzYXJ5LCB0aGVuIHByb3ZpZGVcbmRldGFpbGVkIEtNU0FOUmVhc29uaW5nIGNvbnRyYXN0aW5nIEtBU0FOIHZzIEtNU0FOIGFwcGxpY2FiaWxpdHkgZm9yIHRoaXMgcGF0Y2guXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCBhZjNmYzIzNjczMTkzZWVmYTNiMmQ2YWNhMTljNTVmOWIwYzQ4MjhkXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFN1biBBdWcgMTYgMDY6MDA6MTEgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9hcmNoL2FybTY0L2luY2x1ZGUvYXNtL2t2bV9ob3N0LmggYi9hcmNoL2FybTY0L2luY2x1ZGUvYXNtL2t2bV9ob3N0LmhcbmluZGV4IGJhZTJjNGY5MmVmNWMuLjQ2MDdmOTU2ZTc4NzkgMTAwNjQ0XG4tLS0gYS9hcmNoL2FybTY0L2luY2x1ZGUvYXNtL2t2bV9ob3N0LmhcbisrKyBiL2FyY2gvYXJtNjQvaW5jbHVkZS9hc20va3ZtX2hvc3QuaFxuQEAgLTEzMzksNiArMTMzOSw3IEBAIHN0YXRpYyBpbmxpbmUgYm9vbCBrdm1fYXJjaF9wbWlfaW5fZ3Vlc3Qoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxuIGxvbmcga3ZtX2h5cGVyY2FsbF9wdl9mZWF0dXJlcyhzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpO1xuIGdwYV90IGt2bV9pbml0X3N0b2xlbl90aW1lKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSk7XG4gdm9pZCBrdm1fdXBkYXRlX3N0b2xlbl90aW1lKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSk7XG4rdm9pZCBrdm1fcmVzZXRfc3RvbGVuX3RpbWUoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KTtcbiBcbiBib29sIGt2bV9hcm1fcHZ0aW1lX3N1cHBvcnRlZCh2b2lkKTtcbiBpbnQga3ZtX2FybV9wdnRpbWVfc2V0X2F0dHIoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LFxuZGlmZiAtLWdpdCBhL2FyY2gvYXJtNjQva3ZtL2FybS5jIGIvYXJjaC9hcm02NC9rdm0vYXJtLmNcbmluZGV4IDlhNmM3MmExODY3MjcuLjBmNmU2M2VhY2UyMWYgMTAwNjQ0XG4tLS0gYS9hcmNoL2FybTY0L2t2bS9hcm0uY1xuKysrIGIvYXJjaC9hcm02NC9rdm0vYXJtLmNcbkBAIC05MjksNiArOTI5LDggQEAgaW50IGt2bV9hcmNoX3ZjcHVfcnVuX3BpZF9jaGFuZ2Uoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxuIFx0aWYgKCFrdm1fYXJtX3ZjcHVfaXNfZmluYWxpemVkKHZjcHUpKVxuIFx0XHRyZXR1cm4gLUVQRVJNO1xuIFxuK1x0a3ZtX3Jlc2V0X3N0b2xlbl90aW1lKHZjcHUpO1xuK1xuIFx0aWYgKGxpa2VseSh2Y3B1X2hhc19ydW5fb25jZSh2Y3B1KSkpXG4gXHRcdHJldHVybiAwO1xuIFxuZGlmZiAtLWdpdCBhL2FyY2gvYXJtNjQva3ZtL3B2dGltZS5jIGIvYXJjaC9hcm02NC9rdm0vcHZ0aW1lLmNcbmluZGV4IDRjZWFiYWE0YzMwYmQuLjAwMGJmNDljYzBmZGYgMTAwNjQ0XG4tLS0gYS9hcmNoL2FybTY0L2t2bS9wdnRpbWUuY1xuKysrIGIvYXJjaC9hcm02NC9rdm0vcHZ0aW1lLmNcbkBAIC0zMiw2ICszMiwxMSBAQCB2b2lkIGt2bV91cGRhdGVfc3RvbGVuX3RpbWUoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxuIFx0c3JjdV9yZWFkX3VubG9jayhcdTAwMjZrdm0tXHUwMDNlc3JjdSwgaWR4KTtcbiB9XG4gXG4rdm9pZCBrdm1fcmVzZXRfc3RvbGVuX3RpbWUoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxuK3tcbitcdHZjcHUtXHUwMDNlYXJjaC5zdGVhbC5sYXN0X3N0ZWFsID0gY3VycmVudC1cdTAwM2VzY2hlZF9pbmZvLnJ1bl9kZWxheTtcbit9XG4rXG4gbG9uZyBrdm1faHlwZXJjYWxsX3B2X2ZlYXR1cmVzKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSlcbiB7XG4gXHR1MzIgZmVhdHVyZSA9IHNtY2NjX2dldF9hcmcxKHZjcHUpO1xuZGlmZiAtLWdpdCBhL2FyY2gveDg2L2t2bS9LY29uZmlnIGIvYXJjaC94ODYva3ZtL0tjb25maWdcbmluZGV4IDgwMWJmOWU1MjBkYjMuLmI3Y2IyY2VkYTZkOWEgMTAwNjQ0XG4tLS0gYS9hcmNoL3g4Ni9rdm0vS2NvbmZpZ1xuKysrIGIvYXJjaC94ODYva3ZtL0tjb25maWdcbkBAIC00MCw2ICs0MCw3IEBAIGNvbmZpZyBLVk1fWDg2XG4gXHRzZWxlY3QgSEFWRV9LVk1fTVNJXG4gXHRzZWxlY3QgSEFWRV9LVk1fQ1BVX1JFTEFYX0lOVEVSQ0VQVFxuIFx0c2VsZWN0IEhBVkVfS1ZNX05PX1BPTExcbitcdHNlbGVjdCBIQVZFX0tWTV9WQ1BVX1JVTl9QSURfQ0hBTkdFXG4gXHRzZWxlY3QgVklSVF9YRkVSX1RPX0dVRVNUX1dPUktcbiBcdHNlbGVjdCBLVk1fR0VORVJJQ19ESVJUWUxPR19SRUFEX1BST1RFQ1RcbiBcdHNlbGVjdCBLVk1fVkZJT1xuZGlmZiAtLWdpdCBhL2FyY2gveDg2L2t2bS94ODYuYyBiL2FyY2gveDg2L2t2bS94ODYuY1xuaW5kZXggNDdjYjllYmExMTNiMS4uMzNiZTQ1ZWVjMzJiYyAxMDA2NDRcbi0tLSBhL2FyY2gveDg2L2t2bS94ODYuY1xuKysrIGIvYXJjaC94ODYva3ZtL3g4Ni5jXG5AQCAtMzcxNyw2ICszNzE3LDEzIEBAIHZvaWQga3ZtX3NlcnZpY2VfbG9jYWxfdGxiX2ZsdXNoX3JlcXVlc3RzKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSlcbiB9XG4gRVhQT1JUX1NZTUJPTF9GT1JfS1ZNX0lOVEVSTkFMKGt2bV9zZXJ2aWNlX2xvY2FsX3RsYl9mbHVzaF9yZXF1ZXN0cyk7XG4gXG4raW50IGt2bV9hcmNoX3ZjcHVfcnVuX3BpZF9jaGFuZ2Uoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxuK3tcbitcdHZjcHUtXHUwMDNlYXJjaC5zdC5sYXN0X3N0ZWFsID0gY3VycmVudC1cdTAwM2VzY2hlZF9pbmZvLnJ1bl9kZWxheTtcbitcbitcdHJldHVybiAwO1xuK31cbitcbiBzdGF0aWMgdm9pZCByZWNvcmRfc3RlYWxfdGltZShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXG4ge1xuIFx0c3RydWN0IGdmbl90b19odmFfY2FjaGUgKmdoYyA9IFx1MDAyNnZjcHUtXHUwMDNlYXJjaC5zdC5jYWNoZTtcbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0vTWFrZWZpbGUua3ZtIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL01ha2VmaWxlLmt2bVxuaW5kZXggNmZjMzRlOWJmOGUxYi4uYjAxYTM0MDNkNjAyYSAxMDA2NDRcbi0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS9NYWtlZmlsZS5rdm1cbisrKyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS9NYWtlZmlsZS5rdm1cbkBAIC0xNTksNiArMTU5LDcgQEAgVEVTVF9HRU5fUFJPR1NfeDg2ICs9IGhhcmR3YXJlX2Rpc2FibGVfdGVzdFxuIFRFU1RfR0VOX1BST0dTX3g4NiArPSBtbXVfc3RyZXNzX3Rlc3RcbiBURVNUX0dFTl9QUk9HU194ODYgKz0gcnNlcV90ZXN0XG4gVEVTVF9HRU5fUFJPR1NfeDg2ICs9IHN0ZWFsX3RpbWVcbitURVNUX0dFTl9QUk9HU194ODYgKz0gc3RlYWxfdGltZV9jaGFuZ2VfcGlkXG4gVEVTVF9HRU5fUFJPR1NfeDg2ICs9IHN5c3RlbV9jb3VudGVyX29mZnNldF90ZXN0XG4gVEVTVF9HRU5fUFJPR1NfeDg2ICs9IHByZV9mYXVsdF9tZW1vcnlfdGVzdFxuIFxuQEAgLTE5OCw2ICsxOTksNyBAQCBURVNUX0dFTl9QUk9HU19hcm02NCArPSBndWVzdF9tZW1mZF90ZXN0XG4gVEVTVF9HRU5fUFJPR1NfYXJtNjQgKz0gbW11X3N0cmVzc190ZXN0XG4gVEVTVF9HRU5fUFJPR1NfYXJtNjQgKz0gcnNlcV90ZXN0XG4gVEVTVF9HRU5fUFJPR1NfYXJtNjQgKz0gc3RlYWxfdGltZVxuK1RFU1RfR0VOX1BST0dTX2FybTY0ICs9IHN0ZWFsX3RpbWVfY2hhbmdlX3BpZFxuIFxuIFRFU1RfR0VOX1BST0dTX3MzOTAgPSAkKFRFU1RfR0VOX1BST0dTX0NPTU1PTilcbiBURVNUX0dFTl9QUk9HU19zMzkwICs9IHMzOTAvbWVtb3BcbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0vc3RlYWxfdGltZV9jaGFuZ2VfcGlkLmMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0vc3RlYWxfdGltZV9jaGFuZ2VfcGlkLmNcbm5ldyBmaWxlIG1vZGUgMTAwNjQ0XG5pbmRleCAwMDAwMDAwMDAwMDAwLi4xMmQ0OTI3ZDFjMDE3XG4tLS0gL2Rldi9udWxsXG4rKysgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0vc3RlYWxfdGltZV9jaGFuZ2VfcGlkLmNcbkBAIC0wLDAgKzEsMjE2IEBAXG4rLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjBcbisvKlxuKyAqIFZlcmlmeSB0aGF0IEtWTSByZXNldHMgc3RlYWwtdGltZSBhY2NvdW50aW5nIHdoZW4gYSB2Q1BVIGZkIGlzIHJ1biBmcm9tXG4rICogYSBkaWZmZXJlbnQgaG9zdCBQSUQuXG4rICovXG4rXG4rI2luY2x1ZGUgXHUwMDNjcHRocmVhZC5oXHUwMDNlXG4rI2luY2x1ZGUgXHUwMDNjYXNtL2t2bV9wYXJhLmhcdTAwM2VcbisjaW5jbHVkZSBcImt2bV91dGlsLmhcIlxuKyNpbmNsdWRlIFwicHJvY2Vzc29yLmhcIlxuK1xuKyNkZWZpbmUgU1RfR1BBX0JBU0VcdFx0KDEgXHUwMDNjXHUwMDNjIDMwKVxuKyNkZWZpbmUgU1RfU0FORV9ERUxUQV9OU1x0KDFVTEwgXHUwMDNjXHUwMDNjIDYzKVxuK1xuK3N0YXRpYyB2b2lkICpzdF9ndmE7XG4rc3RhdGljIHU2NCBndWVzdF9zdG9sZW5fdGltZTtcbitzdGF0aWMgdTY0IG1haW5fc3RlYWw7XG4rc3RhdGljIHU2NCB0aHJlYWRfc3RlYWw7XG4rXG4rI2lmIGRlZmluZWQoX194ODZfNjRfXylcbitcbisjZGVmaW5lIFNURUFMX1RJTUVfU0laRVx0KChzaXplb2Yoc3RydWN0IGt2bV9zdGVhbF90aW1lKSArIDYzKSBcdTAwMjYgfjYzKVxuK1xuK3N0YXRpYyB2b2lkIGd1ZXN0X2NvZGUodm9pZClcbit7XG4rXHRzdHJ1Y3Qga3ZtX3N0ZWFsX3RpbWUgKnN0ID0gc3RfZ3ZhO1xuK1xuK1x0V1JJVEVfT05DRShndWVzdF9zdG9sZW5fdGltZSwgUkVBRF9PTkNFKHN0LVx1MDAzZXN0ZWFsKSk7XG4rXHRHVUVTVF9TWU5DKDApO1xuK1xuK1x0V1JJVEVfT05DRShndWVzdF9zdG9sZW5fdGltZSwgUkVBRF9PTkNFKHN0LVx1MDAzZXN0ZWFsKSk7XG4rXHRHVUVTVF9TWU5DKDEpO1xuK1xuK1x0V1JJVEVfT05DRShndWVzdF9zdG9sZW5fdGltZSwgUkVBRF9PTkNFKHN0LVx1MDAzZXN0ZWFsKSk7XG4rXHRHVUVTVF9ET05FKCk7XG4rfVxuK1xuK3N0YXRpYyBib29sIHN0ZWFsX3RpbWVfc3VwcG9ydGVkKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSlcbit7XG4rXHRyZXR1cm4ga3ZtX2NwdV9oYXMoWDg2X0ZFQVRVUkVfS1ZNX1NURUFMX1RJTUUpO1xuK31cbitcbitzdGF0aWMgdm9pZCBzdGVhbF90aW1lX2VuYWJsZShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXG4re1xuK1x0dmNwdV9zZXRfbXNyKHZjcHUsIE1TUl9LVk1fU1RFQUxfVElNRSxcbitcdFx0ICAgICAodWxvbmcpc3RfZ3ZhIHwgS1ZNX01TUl9FTkFCTEVEKTtcbit9XG4rXG4rI2VsaWYgZGVmaW5lZChfX2FhcmNoNjRfXylcbitcbisjZGVmaW5lIFNURUFMX1RJTUVfU0laRVx0KChzaXplb2Yoc3RydWN0IHN0X3RpbWUpICsgNjMpIFx1MDAyNiB+NjMpXG4rXG4rI2RlZmluZSBQVl9USU1FX1NUXHQweGM1MDAwMDIxXG4rXG4rc3RydWN0IHN0X3RpbWUge1xuK1x0dTMyIHJldjtcbitcdHUzMiBhdHRyO1xuK1x0dTY0IHN0X3RpbWU7XG4rfTtcbitcbitzdGF0aWMgdm9pZCBndWVzdF9jb2RlKHZvaWQpXG4re1xuK1x0c3RydWN0IGFybV9zbWNjY19yZXMgcmVzO1xuK1x0c3RydWN0IHN0X3RpbWUgKnN0O1xuK1xuK1x0ZG9fc21jY2MoUFZfVElNRV9TVCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgXHUwMDI2cmVzKTtcbitcdEdVRVNUX0FTU0VSVF9ORShyZXMuYTAsIC0xKTtcbitcdEdVRVNUX0FTU0VSVF9FUShyZXMuYTAsICh1bG9uZylzdF9ndmEpO1xuK1xuK1x0c3QgPSAoc3RydWN0IHN0X3RpbWUgKilyZXMuYTA7XG4rXHRXUklURV9PTkNFKGd1ZXN0X3N0b2xlbl90aW1lLCBSRUFEX09OQ0Uoc3QtXHUwMDNlc3RfdGltZSkpO1xuK1x0R1VFU1RfU1lOQygwKTtcbitcbitcdFdSSVRFX09OQ0UoZ3Vlc3Rfc3RvbGVuX3RpbWUsIFJFQURfT05DRShzdC1cdTAwM2VzdF90aW1lKSk7XG4rXHRHVUVTVF9TWU5DKDEpO1xuK1xuK1x0V1JJVEVfT05DRShndWVzdF9zdG9sZW5fdGltZSwgUkVBRF9PTkNFKHN0LVx1MDAzZXN0X3RpbWUpKTtcbitcdEdVRVNUX0RPTkUoKTtcbit9XG4rXG4rc3RhdGljIGJvb2wgc3RlYWxfdGltZV9zdXBwb3J0ZWQoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxuK3tcbitcdHN0cnVjdCBrdm1fZGV2aWNlX2F0dHIgZGV2ID0ge1xuK1x0XHQuZ3JvdXAgPSBLVk1fQVJNX1ZDUFVfUFZUSU1FX0NUUkwsXG4rXHRcdC5hdHRyID0gS1ZNX0FSTV9WQ1BVX1BWVElNRV9JUEEsXG4rXHR9O1xuK1xuK1x0cmV0dXJuICFfX3ZjcHVfaW9jdGwodmNwdSwgS1ZNX0hBU19ERVZJQ0VfQVRUUiwgXHUwMDI2ZGV2KTtcbit9XG4rXG4rc3RhdGljIHZvaWQgc3RlYWxfdGltZV9lbmFibGUoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxuK3tcbitcdHU2NCBzdF9pcGEgPSAodWxvbmcpc3RfZ3ZhO1xuK1x0c3RydWN0IGt2bV9kZXZpY2VfYXR0ciBkZXYgPSB7XG4rXHRcdC5ncm91cCA9IEtWTV9BUk1fVkNQVV9QVlRJTUVfQ1RSTCxcbitcdFx0LmF0dHIgPSBLVk1fQVJNX1ZDUFVfUFZUSU1FX0lQQSxcbitcdFx0LmFkZHIgPSAodTY0KVx1MDAyNnN0X2lwYSxcbitcdH07XG4rXG4rXHR2Y3B1X2lvY3RsKHZjcHUsIEtWTV9TRVRfREVWSUNFX0FUVFIsIFx1MDAyNmRldik7XG4rfVxuK1xuKyNlbHNlXG4rI2Vycm9yIFwic3RlYWxfdGltZV9jaGFuZ2VfcGlkIGlzIG5vdCBpbXBsZW1lbnRlZCBvbiB0aGlzIGFyY2hpdGVjdHVyZVwiXG4rI2VuZGlmXG4rXG4rc3RhdGljIHZvaWQgcnVuX3ZjcHUoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxuK3tcbitcdHN0cnVjdCB1Y2FsbCB1YztcbitcbitcdHZjcHVfcnVuKHZjcHUpO1xuK1xuK1x0c3dpdGNoIChnZXRfdWNhbGwodmNwdSwgXHUwMDI2dWMpKSB7XG4rXHRjYXNlIFVDQUxMX1NZTkM6XG4rXHRjYXNlIFVDQUxMX0RPTkU6XG4rXHRcdGJyZWFrO1xuK1x0Y2FzZSBVQ0FMTF9BQk9SVDpcbitcdFx0UkVQT1JUX0dVRVNUX0FTU0VSVCh1Yyk7XG4rXHRkZWZhdWx0OlxuK1x0XHRURVNUX0FTU0VSVChmYWxzZSwgXCJVbmV4cGVjdGVkIGV4aXQ6ICVzXCIsXG4rXHRcdFx0ICAgIGV4aXRfcmVhc29uX3N0cih2Y3B1LVx1MDAzZXJ1bi1cdTAwM2VleGl0X3JlYXNvbikpO1xuK1x0fVxuK31cbitcbitzdGF0aWMgdm9pZCAqZG9fc3RlYWxfdGltZSh2b2lkICphcmcpXG4re1xuK1x0c3RydWN0IHRpbWVzcGVjIHRzLCBzdG9wO1xuK1xuK1x0Y2xvY2tfZ2V0dGltZShDTE9DS19NT05PVE9OSUMsIFx1MDAyNnRzKTtcbitcdHN0b3AgPSB0aW1lc3BlY19hZGRfbnModHMsIE1JTl9SVU5fREVMQVlfTlMpO1xuK1xuK1x0d2hpbGUgKHRpbWVzcGVjX3RvX25zKHRpbWVzcGVjX3N1Yih0cywgc3RvcCkpIFx1MDAzYyAwKVxuK1x0XHRjbG9ja19nZXR0aW1lKENMT0NLX01PTk9UT05JQywgXHUwMDI2dHMpO1xuK1xuK1x0cmV0dXJuIE5VTEw7XG4rfVxuK1xuK3N0YXRpYyB2b2lkICp2Y3B1X3RocmVhZCh2b2lkICphcmcpXG4re1xuK1x0c3RydWN0IGt2bV92Y3B1ICp2Y3B1ID0gYXJnO1xuK1xuK1x0cnVuX3ZjcHUodmNwdSk7XG4rXHRzeW5jX2dsb2JhbF9mcm9tX2d1ZXN0KHZjcHUtXHUwMDNldm0sIGd1ZXN0X3N0b2xlbl90aW1lKTtcbitcdHRocmVhZF9zdGVhbCA9IGd1ZXN0X3N0b2xlbl90aW1lO1xuK1xuK1x0cmV0dXJuIE5VTEw7XG4rfVxuK1xuK2ludCBtYWluKHZvaWQpXG4re1xuK1x0c3RydWN0IGt2bV92Y3B1ICp2Y3B1O1xuK1x0c3RydWN0IGt2bV92bSAqdm07XG4rXHRwdGhyZWFkX2F0dHJfdCBhdHRyO1xuK1x0cHRocmVhZF90IHRocmVhZDtcbitcdGNwdV9zZXRfdCBjcHVzZXQ7XG4rXHRsb25nIHJ1bl9kZWxheTtcbitcdGxvbmcgcnVuX2RlbGF5X2RlbHRhO1xuK1xuK1x0a3NmdF9wcmludF9oZWFkZXIoKTtcbitcdGtzZnRfc2V0X3BsYW4oMSk7XG4rXG4rXHRDUFVfWkVSTyhcdTAwMjZjcHVzZXQpO1xuK1x0Q1BVX1NFVCgwLCBcdTAwMjZjcHVzZXQpO1xuK1x0cHRocmVhZF9hdHRyX2luaXQoXHUwMDI2YXR0cik7XG4rXHRwdGhyZWFkX2F0dHJfc2V0YWZmaW5pdHlfbnAoXHUwMDI2YXR0ciwgc2l6ZW9mKGNwdXNldCksIFx1MDAyNmNwdXNldCk7XG4rXHRwdGhyZWFkX3NldGFmZmluaXR5X25wKHB0aHJlYWRfc2VsZigpLCBzaXplb2YoY3B1c2V0KSwgXHUwMDI2Y3B1c2V0KTtcbitcbitcdHZtID0gdm1fY3JlYXRlX3dpdGhfb25lX3ZjcHUoXHUwMDI2dmNwdSwgZ3Vlc3RfY29kZSk7XG4rXHR2bV91c2Vyc3BhY2VfbWVtX3JlZ2lvbl9hZGQodm0sIFZNX01FTV9TUkNfQU5PTllNT1VTLFxuK1x0XHRcdFx0ICAgIFNUX0dQQV9CQVNFLCAxLCAxLCAwKTtcbitcdHZpcnRfbWFwKHZtLCBTVF9HUEFfQkFTRSwgU1RfR1BBX0JBU0UsIDEpO1xuK1xuK1x0c3RfZ3ZhID0gKHZvaWQgKilTVF9HUEFfQkFTRTtcbitcdHN5bmNfZ2xvYmFsX3RvX2d1ZXN0KHZtLCBzdF9ndmEpO1xuK1x0bWVtc2V0KGFkZHJfZ3ZhMmh2YSh2bSwgU1RfR1BBX0JBU0UpLCAwLCBTVEVBTF9USU1FX1NJWkUpO1xuK1xuK1x0VEVTVF9SRVFVSVJFKHN0ZWFsX3RpbWVfc3VwcG9ydGVkKHZjcHUpKTtcbitcbitcdHN0ZWFsX3RpbWVfZW5hYmxlKHZjcHUpO1xuK1x0cnVuX3ZjcHUodmNwdSk7XG4rXG4rXHRydW5fZGVsYXkgPSBnZXRfcnVuX2RlbGF5KCk7XG4rXHRwdGhyZWFkX2NyZWF0ZShcdTAwMjZ0aHJlYWQsIFx1MDAyNmF0dHIsIGRvX3N0ZWFsX3RpbWUsIE5VTEwpO1xuK1xuK1x0d2hpbGUgKGdldF9ydW5fZGVsYXkoKSAtIHJ1bl9kZWxheSBcdTAwM2MgTUlOX1JVTl9ERUxBWV9OUylcbitcdFx0c2NoZWRfeWllbGQoKTtcbitcbitcdHB0aHJlYWRfam9pbih0aHJlYWQsIE5VTEwpO1xuK1x0cnVuX2RlbGF5X2RlbHRhID0gZ2V0X3J1bl9kZWxheSgpIC0gcnVuX2RlbGF5O1xuK1x0VEVTVF9BU1NFUlQocnVuX2RlbGF5X2RlbHRhIFx1MDAzZT0gTUlOX1JVTl9ERUxBWV9OUyxcbitcdFx0ICAgIFwiRXhwZWN0ZWQgcnVuX2RlbGF5IFx1MDAzZT0gJWxkLCBnb3QgJWxkXCIsXG4rXHRcdCAgICBNSU5fUlVOX0RFTEFZX05TLCBydW5fZGVsYXlfZGVsdGEpO1xuK1xuK1x0cnVuX3ZjcHUodmNwdSk7XG4rXHRzeW5jX2dsb2JhbF9mcm9tX2d1ZXN0KHZtLCBndWVzdF9zdG9sZW5fdGltZSk7XG4rXHRtYWluX3N0ZWFsID0gZ3Vlc3Rfc3RvbGVuX3RpbWU7XG4rXG4rXHRURVNUX0FTU0VSVChtYWluX3N0ZWFsIFx1MDAzZT0gTUlOX1JVTl9ERUxBWV9OUyxcbitcdFx0ICAgIFwiRXhwZWN0ZWQgc3RlYWwgdGltZSBcdTAwM2U9ICVsZCwgZ290ICVcIlBSSXU2NCxcbitcdFx0ICAgIE1JTl9SVU5fREVMQVlfTlMsIG1haW5fc3RlYWwpO1xuK1xuK1x0cHRocmVhZF9jcmVhdGUoXHUwMDI2dGhyZWFkLCBOVUxMLCB2Y3B1X3RocmVhZCwgdmNwdSk7XG4rXHRwdGhyZWFkX2pvaW4odGhyZWFkLCBOVUxMKTtcbitcbitcdFRFU1RfQVNTRVJUKHRocmVhZF9zdGVhbCBcdTAwM2U9IG1haW5fc3RlYWwgXHUwMDI2XHUwMDI2XG4rXHRcdCAgICB0aHJlYWRfc3RlYWwgLSBtYWluX3N0ZWFsIFx1MDAzYyBTVF9TQU5FX0RFTFRBX05TLFxuK1x0XHQgICAgXCJFeHBlY3RlZCBzYW5lIHN0ZWFsIGFmdGVyIHZDUFUgcGlkIGNoYW5nZTogXCJcbitcdFx0ICAgIFwib2xkPSVcIlBSSXU2NFwiLCBuZXc9JVwiUFJJdTY0LFxuK1x0XHQgICAgbWFpbl9zdGVhbCwgdGhyZWFkX3N0ZWFsKTtcbitcbitcdGtzZnRfdGVzdF9yZXN1bHRfcGFzcyhcInN0ZWFsIHRpbWUgcmVtYWlucyBzYW5lIGFjcm9zcyB2Q1BVIHBpZCBjaGFuZ2VcXG5cIik7XG4rXG4rXHRwdGhyZWFkX2F0dHJfZGVzdHJveShcdTAwMjZhdHRyKTtcbitcdGt2bV92bV9mcmVlKHZtKTtcbitcdGtzZnRfZmluaXNoZWQoKTtcbit9XG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xNlQwNjowMDo0OS4wNDA3NTc0NDJaIiwiU2VxIjoxNSwiTmVzdGluZyI6MywiVHlwZSI6ImxsbSIsIk5hbWUiOiJrbXNhbi1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6ODU5ODAwMDQyNiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipQYXRjaCBBbmFseXNpczogUmVzZXR0aW5nIFN0ZWFsIFRpbWUgQWNjb3VudGluZyBvbiB2Q1BVIFBJRCBDaGFuZ2UqKlxuXG5Pa2F5LCBsZXQgbWUgYnJlYWsgdGhpcyBkb3duLiBUaGlzIHBhdGNoIGlzIGFpbWVkIGF0IGNvcnJlY3RpbmcgS1ZNJ3Mgc3RlYWwgdGltZSBhY2NvdW50aW5nLCBzcGVjaWZpY2FsbHkgd2hlbiBhIHZDUFUgdHJhbnNpdGlvbnMgdG8gYSBuZXcgaG9zdCBQSUQsIHdoaWNoIGhhcHBlbnMgb24gYm90aCBBUk02NCBhbmQgeDg2IGFyY2hpdGVjdHVyZXMuIFRoZSBjb3JlIG9mIHRoZSBjaGFuZ2UgaW52b2x2ZXMgcmVzZXR0aW5nIHRoZSBiYXNlIGZvciB0aGUgc3RlYWwgdGltZSBjYWxjdWxhdGlvbiB0byBwcmV2ZW50IHNrZXcgY2F1c2VkIGJ5IHRoZSB0YXNrLXNwZWNpZmljIG5hdHVyZSBvZiBgY3VycmVudC1cdTAwM2VzY2hlZF9pbmZvLnJ1bl9kZWxheWAuXG5cbk9uIEFSTTY0LCB0aGUgbmV3IGBrdm1fcmVzZXRfc3RvbGVuX3RpbWUodmNwdSlgIGZ1bmN0aW9uIGlzIGludHJvZHVjZWQgYW5kIGNhbGxlZCBmcm9tIGBrdm1fYXJjaF92Y3B1X3J1bl9waWRfY2hhbmdlKHZjcHUpYC4gVGhpcyBmdW5jdGlvbiBzaW1wbHkgc2V0cyBgdmNwdS1cdTAwM2VhcmNoLnN0ZWFsLmxhc3Rfc3RlYWxgIHRvIHRoZSB2YWx1ZSBvZiBgY3VycmVudC1cdTAwM2VzY2hlZF9pbmZvLnJ1bl9kZWxheWAuIFRoZSB4ODYgdmVyc2lvbiBpbXBsZW1lbnRzIGBrdm1fYXJjaF92Y3B1X3J1bl9waWRfY2hhbmdlKHZjcHUpYCBhbmQgZG9lcyB0aGUgc2FtZSBhc3NpZ25tZW50IG9mIGBjdXJyZW50LVx1MDAzZXNjaGVkX2luZm8ucnVuX2RlbGF5YCB0byBgdmNwdS1cdTAwM2VhcmNoLnN0Lmxhc3Rfc3RlYWxgLlxuXG5Ob3csIHRoZSBjcnVjaWFsIHBhcnQ6IEkgbmVlZCB0byBlbnN1cmUgdGhpcyBkb2Vzbid0IGNyZWF0ZSBhbnkgbWVtb3J5IHNhZmV0eSBpc3N1ZXMuIFRoZSB2YXJpYWJsZXMgaW52b2x2ZWQg4oCTIGB2Y3B1LVx1MDAzZWFyY2guc3RlYWwubGFzdF9zdGVhbGAgYW5kIGB2Y3B1LVx1MDAzZWFyY2guc3QubGFzdF9zdGVhbGAgb24gQVJNNjQgYW5kIHg4NiByZXNwZWN0aXZlbHkg4oCTIGFyZSBiZWluZyBhc3NpZ25lZCB0aGUgdmFsdWUgb2YgYGN1cnJlbnQtXHUwMDNlc2NoZWRfaW5mby5ydW5fZGVsYXlgLiAgYGN1cnJlbnQtXHUwMDNlc2NoZWRfaW5mby5ydW5fZGVsYXlgIGlzIGFuIGluaXRpYWxpemVkIGB1bnNpZ25lZCBsb25nIGxvbmdgIChvciBlcXVpdmFsZW50KSByZXByZXNlbnRpbmcgdGhlIHNjaGVkdWxlcidzIHJ1biBkZWxheS4gSXQncyBhIHNjYWxhciB2YWx1ZSwgbm90IGEgY29tcGxleCBzdHJ1Y3R1cmUgb3IgcG90ZW50aWFsbHkgdW5pbml0aWFsaXplZCBjaHVuayBvZiBtZW1vcnkuXG5cbkxvb2tpbmcgYXQgdGhlIGNvZGUsIHRoZXJlIGFyZSBubyBuZXcgc3RydWN0dXJlcyBvciBhbnkgZGF0YSB0aGF0IGlzIHBhc3NlZCB0byB1c2Vyc3BhY2UuIE5vIHVuaW5pdGlhbGl6ZWQgdmFyaWFibGVzIG9yIHN0cnVjdCBmaWVsZHMgYXJlIGJlaW5nIGludHJvZHVjZWQuIFRoZXJlIGFyZSBubyBjb21wbGljYXRlZCBkYXRhIHN0cnVjdHVyZXMgYmVpbmcgYWxsb2NhdGVkIG9yIGludm9sdmVkLiBBbmQgdGhlcmUgYXJlIG5vIGJvdW5kcyBjaGVja3Mgb3IgbGVuZ3RoIG1vZGlmaWNhdGlvbnMgdGhhdCBjb3VsZCBwb3RlbnRpYWxseSByZXZlYWwgdW5pbml0aWFsaXplZCBkYXRhLlxuXG5UaGlzIHBhdGNoIGlzIGVzc2VudGlhbGx5IGp1c3QgcmVzZXR0aW5nIGEgYmFzZSB2YWx1ZSB3aGVuIHRoZSB2Q1BVIHRocmVhZCBzd2l0Y2hlcyBQSURzLCBhbmQgaXQgaXMgYSBzaW1wbGUgc2NhbGFyIGFzc2lnbm1lbnQuIFRoZSB3aG9sZSBwb2ludCBpcyB0byBlbnN1cmUgYWNjdXJhdGUgYWNjb3VudGluZywgYXZvaWRpbmcgYSBsYXJnZSBqdW1wIGluIHN0ZWFsIHRpbWUgZHVlIHRvIHRoZSBwZXItdGFzayBuYXR1cmUgb2YgdGhlIGBydW5fZGVsYXlgIHN0YXRpc3RpYy4gSSBjYW4gY29uZmlkZW50bHkgc2F5IHRoYXQgdGhpcyBwYXRjaCBkb2Vzbid0IGludHJvZHVjZSBhbnkgcmlzayBvZiB1bmluaXRpYWxpemVkIG1lbW9yeSB1c2FnZSBvciBkYXRhIGxlYWtzLiBLTVNBTiBpc24ndCBwYXJ0aWN1bGFybHkgcmVsZXZhbnQgaGVyZSwgYW5kIEtBU0FOIGlzbid0IGxpa2VseSBlaXRoZXIsIGdpdmVuIHRoZSBuYXR1cmUgb2YgdGhlIGNoYW5nZS4gYGN1cnJlbnQtXHUwMDNlc2NoZWRfaW5mby5ydW5fZGVsYXlgIGlzIGEga25vd24sIGluaXRpYWxpemVkIHNjaGVkdWxlci1tYWludGFpbmVkIHZhbHVlLlxuXG5UaGVyZWZvcmUsIEknbSBzZXR0aW5nIGBOZWVkc0tNU0FOPWZhbHNlYCBhbmQgYWRkaW5nIHRoaXMgcmVhc29uaW5nLlxuXG5cbiIsIklucHV0VG9rZW5zIjo1ODcyLCJPdXRwdXRUb2tlbnMiOjE1OSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjUzNywiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE2VDA2OjAwOjU3LjYzODc2MjE5OVoiLCJTZXEiOjE2LCJOZXN0aW5nIjozLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE5MzQ5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggc2ltcGx5IHJlc2V0cyB0aGUgS1ZNIHN0ZWFsIHRpbWUgYWNjb3VudGluZyBiYXNlIChgbGFzdF9zdGVhbGApIHRvIHRoZSBjdXJyZW50IHRhc2sncyBgcnVuX2RlbGF5YCB3aGVuIGEgdkNQVSB0aHJlYWQgY2hhbmdlcyBpdHMgaG9zdCBQSUQuIFRoaXMgaW52b2x2ZXMgcmVhZGluZyBhIGZ1bGx5IGluaXRpYWxpemVkIHNjYWxhciB2YWx1ZSAoYGN1cnJlbnQtXFx1MDAzZXNjaGVkX2luZm8ucnVuX2RlbGF5YCkgZnJvbSB0aGUgc2NoZWR1bGVyIGFuZCBhc3NpZ25pbmcgaXQgdG8gYSBmaWVsZCBpbiB0aGUgdkNQVSBhcmNoaXRlY3R1cmUgc3RydWN0dXJlLiBObyBuZXcgbWVtb3J5IGFsbG9jYXRpb25zIGFyZSBpbnRyb2R1Y2VkLCBubyBzdHJ1Y3R1cmVzIGFyZSBjb3BpZWQgdG8gdXNlciBzcGFjZSwgYW5kIG5vIGNvbXBsZXggZGF0YSBzdHJ1Y3R1cmVzIGFyZSBtYW5pcHVsYXRlZCBpbiBhIHdheSB0aGF0IGNvdWxkIGV4cG9zZSB1bmluaXRpYWxpemVkIG1lbW9yeS4gVGhlcmVmb3JlLCB0aGVyZSBpcyBubyByaXNrIG9mIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHVzZSBvciBpbmZvLWxlYWtzLCBhbmQgYSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGlzIG5vdCByZXF1aXJlZC5cIixcbiAgXCJOZWVkc0tNU0FOXCI6IGZhbHNlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJLTVNBTlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBzaW1wbHkgcmVzZXRzIHRoZSBLVk0gc3RlYWwgdGltZSBhY2NvdW50aW5nIGJhc2UgKGBsYXN0X3N0ZWFsYCkgdG8gdGhlIGN1cnJlbnQgdGFzaydzIGBydW5fZGVsYXlgIHdoZW4gYSB2Q1BVIHRocmVhZCBjaGFuZ2VzIGl0cyBob3N0IFBJRC4gVGhpcyBpbnZvbHZlcyByZWFkaW5nIGEgZnVsbHkgaW5pdGlhbGl6ZWQgc2NhbGFyIHZhbHVlIChgY3VycmVudC1cXHUwMDNlc2NoZWRfaW5mby5ydW5fZGVsYXlgKSBmcm9tIHRoZSBzY2hlZHVsZXIgYW5kIGFzc2lnbmluZyBpdCB0byBhIGZpZWxkIGluIHRoZSB2Q1BVIGFyY2hpdGVjdHVyZSBzdHJ1Y3R1cmUuIE5vIG5ldyBtZW1vcnkgYWxsb2NhdGlvbnMgYXJlIGludHJvZHVjZWQsIG5vIHN0cnVjdHVyZXMgYXJlIGNvcGllZCB0byB1c2VyIHNwYWNlLCBhbmQgbm8gY29tcGxleCBkYXRhIHN0cnVjdHVyZXMgYXJlIG1hbmlwdWxhdGVkIGluIGEgd2F5IHRoYXQgY291bGQgZXhwb3NlIHVuaW5pdGlhbGl6ZWQgbWVtb3J5LiBUaGVyZWZvcmUsIHRoZXJlIGlzIG5vIHJpc2sgb2YgdW5pbml0aWFsaXplZCBtZW1vcnkgdXNlIG9yIGluZm8tbGVha3MsIGFuZCBhIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaXMgbm90IHJlcXVpcmVkLlwiLFxuICBcIk5lZWRzS01TQU5cIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/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-workflows4ss4[1] Phase: Succeeded StartedAt: 2026-08-16 06:01:08 +0000 UTC FinishedAt: 2026-08-16 06:01:08 +0000 UTC Input: nil Output: nil --------- Name: series-workflows4ss4[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-08-16 06:01:08 +0000 UTC FinishedAt: 2026-08-16 06:01:08 +0000 UTC Input: nil Output: nil --------- Name: series-workflows4ss4[2] Phase: Succeeded StartedAt: 2026-08-16 06:01:08 +0000 UTC FinishedAt: 2026-08-16 09:41:50 +0000 UTC Input: nil Output: nil --------- Name: series-workflows4ss4[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3eb40771c00a8488fa6ed2cc1fe203477908bf38","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_arch_vcpu_run_pid_change","kvm_reset_stolen_time"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3eb40771c00a8488fa6ed2cc1fe203477908bf38","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"f1dcd184-15f9-4ce7-982a-1cdcad67406e","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN) Phase: Succeeded StartedAt: 2026-08-16 06:01:08 +0000 UTC FinishedAt: 2026-08-16 09:41:50 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"3eb40771c00a8488fa6ed2cc1fe203477908bf38","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},"fuzz":{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_arch_vcpu_run_pid_change","kvm_reset_stolen_time"],"skip_cover_check":false},"patched":{"arch":"amd64","commit_hash":"3eb40771c00a8488fa6ed2cc1fe203477908bf38","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"f1dcd184-15f9-4ce7-982a-1cdcad67406e","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},"retest":null,"track":"KASAN"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: nil --------- Name: series-workflows4ss4[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3eb40771c00a8488fa6ed2cc1fe203477908bf38","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_arch_vcpu_run_pid_change","kvm_reset_stolen_time"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3eb40771c00a8488fa6ed2cc1fe203477908bf38","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"f1dcd184-15f9-4ce7-982a-1cdcad67406e","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[0] Phase: Succeeded StartedAt: 2026-08-16 06:01:08 +0000 UTC FinishedAt: 2026-08-16 06:01:19 +0000 UTC Input: nil Output: nil --------- Name: series-workflows4ss4[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3eb40771c00a8488fa6ed2cc1fe203477908bf38","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_arch_vcpu_run_pid_change","kvm_reset_stolen_time"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3eb40771c00a8488fa6ed2cc1fe203477908bf38","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"f1dcd184-15f9-4ce7-982a-1cdcad67406e","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[0].save-base-req Phase: Succeeded StartedAt: 2026-08-16 06:01:08 +0000 UTC FinishedAt: 2026-08-16 06:01:13 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"3eb40771c00a8488fa6ed2cc1fe203477908bf38","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},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-workflows4ss4/series-workflows4ss4-convert-artifact-3684021904/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflows4ss4[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3eb40771c00a8488fa6ed2cc1fe203477908bf38","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_arch_vcpu_run_pid_change","kvm_reset_stolen_time"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3eb40771c00a8488fa6ed2cc1fe203477908bf38","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"f1dcd184-15f9-4ce7-982a-1cdcad67406e","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[1] Phase: Succeeded StartedAt: 2026-08-16 06:01:19 +0000 UTC FinishedAt: 2026-08-16 06:18:20 +0000 UTC Input: nil Output: nil --------- Name: series-workflows4ss4[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3eb40771c00a8488fa6ed2cc1fe203477908bf38","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_arch_vcpu_run_pid_change","kvm_reset_stolen_time"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3eb40771c00a8488fa6ed2cc1fe203477908bf38","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"f1dcd184-15f9-4ce7-982a-1cdcad67406e","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[1].base-build Phase: Succeeded StartedAt: 2026-08-16 06:01:19 +0000 UTC FinishedAt: 2026-08-16 06:18:20 +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:*83fd25ce-764d-4466-90ac-a023ea390b8a,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-workflows4ss4/series-workflows4ss4-convert-artifact-3684021904/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": "cfb7c501-93cd-4942-8651-378ae19c81ca", "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-workflows4ss4/series-workflows4ss4-build-action-3527332630/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflows4ss4[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3eb40771c00a8488fa6ed2cc1fe203477908bf38","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_arch_vcpu_run_pid_change","kvm_reset_stolen_time"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3eb40771c00a8488fa6ed2cc1fe203477908bf38","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"f1dcd184-15f9-4ce7-982a-1cdcad67406e","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[1].base-build(0) Phase: Succeeded StartedAt: 2026-08-16 06:01:19 +0000 UTC FinishedAt: 2026-08-16 06:18:10 +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:*83fd25ce-764d-4466-90ac-a023ea390b8a,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-workflows4ss4/series-workflows4ss4-convert-artifact-3684021904/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": "cfb7c501-93cd-4942-8651-378ae19c81ca", "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-workflows4ss4/series-workflows4ss4-build-action-3527332630/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflows4ss4[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3eb40771c00a8488fa6ed2cc1fe203477908bf38","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_arch_vcpu_run_pid_change","kvm_reset_stolen_time"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3eb40771c00a8488fa6ed2cc1fe203477908bf38","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"f1dcd184-15f9-4ce7-982a-1cdcad67406e","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[2] Phase: Succeeded StartedAt: 2026-08-16 06:18:20 +0000 UTC FinishedAt: 2026-08-16 06:18:20 +0000 UTC Input: nil Output: nil --------- Name: series-workflows4ss4[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3eb40771c00a8488fa6ed2cc1fe203477908bf38","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_arch_vcpu_run_pid_change","kvm_reset_stolen_time"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3eb40771c00a8488fa6ed2cc1fe203477908bf38","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"f1dcd184-15f9-4ce7-982a-1cdcad67406e","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[2].abort-if-base-build-failed Phase: Skipped StartedAt: 2026-08-16 06:18:20 +0000 UTC FinishedAt: 2026-08-16 06:18:20 +0000 UTC Input: nil Output: nil --------- Name: series-workflows4ss4[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3eb40771c00a8488fa6ed2cc1fe203477908bf38","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_arch_vcpu_run_pid_change","kvm_reset_stolen_time"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3eb40771c00a8488fa6ed2cc1fe203477908bf38","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"f1dcd184-15f9-4ce7-982a-1cdcad67406e","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[3] Phase: Succeeded StartedAt: 2026-08-16 06:18:20 +0000 UTC FinishedAt: 2026-08-16 06:18:30 +0000 UTC Input: nil Output: nil --------- Name: series-workflows4ss4[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3eb40771c00a8488fa6ed2cc1fe203477908bf38","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_arch_vcpu_run_pid_change","kvm_reset_stolen_time"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3eb40771c00a8488fa6ed2cc1fe203477908bf38","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"f1dcd184-15f9-4ce7-982a-1cdcad67406e","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[3].save-patched-req Phase: Succeeded StartedAt: 2026-08-16 06:18:20 +0000 UTC FinishedAt: 2026-08-16 06:18:25 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"3eb40771c00a8488fa6ed2cc1fe203477908bf38","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"f1dcd184-15f9-4ce7-982a-1cdcad67406e","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},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-workflows4ss4/series-workflows4ss4-convert-artifact-1561502711/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflows4ss4[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3eb40771c00a8488fa6ed2cc1fe203477908bf38","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_arch_vcpu_run_pid_change","kvm_reset_stolen_time"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3eb40771c00a8488fa6ed2cc1fe203477908bf38","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"f1dcd184-15f9-4ce7-982a-1cdcad67406e","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[4] Phase: Succeeded StartedAt: 2026-08-16 06:18:30 +0000 UTC FinishedAt: 2026-08-16 06:20:34 +0000 UTC Input: nil Output: nil --------- Name: series-workflows4ss4[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3eb40771c00a8488fa6ed2cc1fe203477908bf38","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_arch_vcpu_run_pid_change","kvm_reset_stolen_time"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3eb40771c00a8488fa6ed2cc1fe203477908bf38","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"f1dcd184-15f9-4ce7-982a-1cdcad67406e","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[4].boot-test-base Phase: Succeeded StartedAt: 2026-08-16 06:18:30 +0000 UTC FinishedAt: 2026-08-16 06:20:24 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*cfb7c501-93cd-4942-8651-378ae19c81ca,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-workflows4ss4/series-workflows4ss4-build-action-3527332630/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-workflows4ss4[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3eb40771c00a8488fa6ed2cc1fe203477908bf38","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_arch_vcpu_run_pid_change","kvm_reset_stolen_time"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3eb40771c00a8488fa6ed2cc1fe203477908bf38","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"f1dcd184-15f9-4ce7-982a-1cdcad67406e","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[5] Phase: Succeeded StartedAt: 2026-08-16 06:20:34 +0000 UTC FinishedAt: 2026-08-16 06:20:34 +0000 UTC Input: nil Output: nil --------- Name: series-workflows4ss4[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3eb40771c00a8488fa6ed2cc1fe203477908bf38","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_arch_vcpu_run_pid_change","kvm_reset_stolen_time"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3eb40771c00a8488fa6ed2cc1fe203477908bf38","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"f1dcd184-15f9-4ce7-982a-1cdcad67406e","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[5].abort-if-base-boot-failed Phase: Skipped StartedAt: 2026-08-16 06:20:34 +0000 UTC FinishedAt: 2026-08-16 06:20:34 +0000 UTC Input: nil Output: nil --------- Name: series-workflows4ss4[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3eb40771c00a8488fa6ed2cc1fe203477908bf38","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_arch_vcpu_run_pid_change","kvm_reset_stolen_time"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3eb40771c00a8488fa6ed2cc1fe203477908bf38","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"f1dcd184-15f9-4ce7-982a-1cdcad67406e","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[6] Phase: Succeeded StartedAt: 2026-08-16 06:20:34 +0000 UTC FinishedAt: 2026-08-16 06:37:33 +0000 UTC Input: nil Output: nil --------- Name: series-workflows4ss4[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3eb40771c00a8488fa6ed2cc1fe203477908bf38","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_arch_vcpu_run_pid_change","kvm_reset_stolen_time"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3eb40771c00a8488fa6ed2cc1fe203477908bf38","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"f1dcd184-15f9-4ce7-982a-1cdcad67406e","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[6].patched-build Phase: Succeeded StartedAt: 2026-08-16 06:20:34 +0000 UTC FinishedAt: 2026-08-16 06:37:33 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:findings,Default:nil,Value:*true,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Build Patched,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:smoke-build,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:session-id,Default:nil,Value:*83fd25ce-764d-4466-90ac-a023ea390b8a,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-workflows4ss4/series-workflows4ss4-convert-artifact-1561502711/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": "53807bc0-400e-4cd5-a8e2-eae03b77538f", "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-workflows4ss4/series-workflows4ss4-build-action-748385979/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflows4ss4[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3eb40771c00a8488fa6ed2cc1fe203477908bf38","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_arch_vcpu_run_pid_change","kvm_reset_stolen_time"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3eb40771c00a8488fa6ed2cc1fe203477908bf38","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"f1dcd184-15f9-4ce7-982a-1cdcad67406e","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[6].patched-build(0) Phase: Succeeded StartedAt: 2026-08-16 06:20:34 +0000 UTC FinishedAt: 2026-08-16 06:37:23 +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:*83fd25ce-764d-4466-90ac-a023ea390b8a,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-workflows4ss4/series-workflows4ss4-convert-artifact-1561502711/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": "53807bc0-400e-4cd5-a8e2-eae03b77538f", "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-workflows4ss4/series-workflows4ss4-build-action-748385979/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflows4ss4[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3eb40771c00a8488fa6ed2cc1fe203477908bf38","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_arch_vcpu_run_pid_change","kvm_reset_stolen_time"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3eb40771c00a8488fa6ed2cc1fe203477908bf38","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"f1dcd184-15f9-4ce7-982a-1cdcad67406e","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[7] Phase: Succeeded StartedAt: 2026-08-16 06:37:33 +0000 UTC FinishedAt: 2026-08-16 06:37:33 +0000 UTC Input: nil Output: nil --------- Name: series-workflows4ss4[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3eb40771c00a8488fa6ed2cc1fe203477908bf38","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_arch_vcpu_run_pid_change","kvm_reset_stolen_time"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3eb40771c00a8488fa6ed2cc1fe203477908bf38","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"f1dcd184-15f9-4ce7-982a-1cdcad67406e","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[7].abort-if-patched-build-failed Phase: Skipped StartedAt: 2026-08-16 06:37:33 +0000 UTC FinishedAt: 2026-08-16 06:37:33 +0000 UTC Input: nil Output: nil --------- Name: series-workflows4ss4[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3eb40771c00a8488fa6ed2cc1fe203477908bf38","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_arch_vcpu_run_pid_change","kvm_reset_stolen_time"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3eb40771c00a8488fa6ed2cc1fe203477908bf38","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"f1dcd184-15f9-4ce7-982a-1cdcad67406e","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[8] Phase: Succeeded StartedAt: 2026-08-16 06:37:33 +0000 UTC FinishedAt: 2026-08-16 06:39:28 +0000 UTC Input: nil Output: nil --------- Name: series-workflows4ss4[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3eb40771c00a8488fa6ed2cc1fe203477908bf38","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_arch_vcpu_run_pid_change","kvm_reset_stolen_time"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3eb40771c00a8488fa6ed2cc1fe203477908bf38","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"f1dcd184-15f9-4ce7-982a-1cdcad67406e","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[8].boot-test-patched Phase: Succeeded StartedAt: 2026-08-16 06:37:33 +0000 UTC FinishedAt: 2026-08-16 06:39:18 +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:*53807bc0-400e-4cd5-a8e2-eae03b77538f,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-workflows4ss4/series-workflows4ss4-build-action-748385979/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-workflows4ss4[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3eb40771c00a8488fa6ed2cc1fe203477908bf38","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_arch_vcpu_run_pid_change","kvm_reset_stolen_time"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3eb40771c00a8488fa6ed2cc1fe203477908bf38","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"f1dcd184-15f9-4ce7-982a-1cdcad67406e","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[10] Phase: Succeeded StartedAt: 2026-08-16 06:39:28 +0000 UTC FinishedAt: 2026-08-16 09:41:50 +0000 UTC Input: nil Output: nil --------- Name: series-workflows4ss4[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3eb40771c00a8488fa6ed2cc1fe203477908bf38","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_arch_vcpu_run_pid_change","kvm_reset_stolen_time"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3eb40771c00a8488fa6ed2cc1fe203477908bf38","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"f1dcd184-15f9-4ce7-982a-1cdcad67406e","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[10].run-fuzz Phase: Succeeded StartedAt: 2026-08-16 06:39:28 +0000 UTC FinishedAt: 2026-08-16 09:41:50 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:config,Default:nil,Value:*{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_arch_vcpu_run_pid_change","kvm_reset_stolen_time"],"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:*cfb7c501-93cd-4942-8651-378ae19c81ca,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*53807bc0-400e-4cd5-a8e2-eae03b77538f,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-workflows4ss4/series-workflows4ss4-build-action-3527332630/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-workflows4ss4/series-workflows4ss4-build-action-748385979/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflows4ss4[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3eb40771c00a8488fa6ed2cc1fe203477908bf38","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_arch_vcpu_run_pid_change","kvm_reset_stolen_time"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3eb40771c00a8488fa6ed2cc1fe203477908bf38","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"f1dcd184-15f9-4ce7-982a-1cdcad67406e","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[10].run-fuzz[0] Phase: Succeeded StartedAt: 2026-08-16 06:39:28 +0000 UTC FinishedAt: 2026-08-16 06:39:38 +0000 UTC Input: nil Output: nil --------- Name: series-workflows4ss4[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3eb40771c00a8488fa6ed2cc1fe203477908bf38","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_arch_vcpu_run_pid_change","kvm_reset_stolen_time"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3eb40771c00a8488fa6ed2cc1fe203477908bf38","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"f1dcd184-15f9-4ce7-982a-1cdcad67406e","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[10].run-fuzz[0].save-fuzz-config Phase: Succeeded StartedAt: 2026-08-16 06:39:28 +0000 UTC FinishedAt: 2026-08-16 06:39:31 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_arch_vcpu_run_pid_change","kvm_reset_stolen_time"],"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-workflows4ss4/series-workflows4ss4-convert-artifact-3937510960/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflows4ss4[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3eb40771c00a8488fa6ed2cc1fe203477908bf38","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_arch_vcpu_run_pid_change","kvm_reset_stolen_time"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3eb40771c00a8488fa6ed2cc1fe203477908bf38","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"f1dcd184-15f9-4ce7-982a-1cdcad67406e","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[10].run-retest Phase: Skipped StartedAt: 2026-08-16 06:39:28 +0000 UTC FinishedAt: 2026-08-16 06:39:28 +0000 UTC Input: nil Output: nil --------- Name: series-workflows4ss4[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3eb40771c00a8488fa6ed2cc1fe203477908bf38","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_arch_vcpu_run_pid_change","kvm_reset_stolen_time"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3eb40771c00a8488fa6ed2cc1fe203477908bf38","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"f1dcd184-15f9-4ce7-982a-1cdcad67406e","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[9] Phase: Succeeded StartedAt: 2026-08-16 06:39:28 +0000 UTC FinishedAt: 2026-08-16 06:39:28 +0000 UTC Input: nil Output: nil --------- Name: series-workflows4ss4[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3eb40771c00a8488fa6ed2cc1fe203477908bf38","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_arch_vcpu_run_pid_change","kvm_reset_stolen_time"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3eb40771c00a8488fa6ed2cc1fe203477908bf38","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"f1dcd184-15f9-4ce7-982a-1cdcad67406e","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[9].abort-if-patched-boot-failed Phase: Skipped StartedAt: 2026-08-16 06:39:28 +0000 UTC FinishedAt: 2026-08-16 06:39:28 +0000 UTC Input: nil Output: nil --------- Name: series-workflows4ss4[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3eb40771c00a8488fa6ed2cc1fe203477908bf38","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_arch_vcpu_run_pid_change","kvm_reset_stolen_time"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3eb40771c00a8488fa6ed2cc1fe203477908bf38","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"f1dcd184-15f9-4ce7-982a-1cdcad67406e","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[10].run-fuzz[1] Phase: Succeeded StartedAt: 2026-08-16 06:39:38 +0000 UTC FinishedAt: 2026-08-16 09:41:50 +0000 UTC Input: nil Output: nil --------- Name: series-workflows4ss4[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3eb40771c00a8488fa6ed2cc1fe203477908bf38","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_arch_vcpu_run_pid_change","kvm_reset_stolen_time"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3eb40771c00a8488fa6ed2cc1fe203477908bf38","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"f1dcd184-15f9-4ce7-982a-1cdcad67406e","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[10].run-fuzz[1].fuzz Phase: Succeeded StartedAt: 2026-08-16 06:39:38 +0000 UTC FinishedAt: 2026-08-16 09:41:40 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*cfb7c501-93cd-4942-8651-378ae19c81ca,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*53807bc0-400e-4cd5-a8e2-eae03b77538f,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-workflows4ss4/series-workflows4ss4-build-action-3527332630/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-workflows4ss4/series-workflows4ss4-build-action-748385979/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-workflows4ss4/series-workflows4ss4-convert-artifact-3937510960/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,}