Name: series-workflow42756 Phase: Succeeded StartedAt: 2026-07-21 19:09:09 +0000 UTC FinishedAt: 2026-07-21 23:57:16 +0000 UTC Input: nil Output: nil --------- Name: series-workflow42756[0] Phase: Succeeded StartedAt: 2026-07-21 19:09:09 +0000 UTC FinishedAt: 2026-07-21 19:26:56 +0000 UTC Input: nil Output: nil --------- Name: series-workflow42756[0].run-triage Phase: Succeeded StartedAt: 2026-07-21 19:09:09 +0000 UTC FinishedAt: 2026-07-21 19:26:56 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "bpf-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git", "commit_hash": "58717b2a1365d06c8c64b72aa948541b53fe31eb", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "KVM", "KVM_INTEL", "KVM_AMD", "KVM_SMM" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "bpf-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git", "commit_hash": "58717b2a1365d06c8c64b72aa948541b53fe31eb", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "KVM", "KVM_INTEL", "KVM_AMD", "KVM_SMM" ], "series_id": "fbbc2e03-030c-465a-ba2d-af1caa16d92f" }, "track": "KASAN", "fuzz": { "focus": [ "kvm" ], "focus_symbols": [ "svm_leave_smm", "vmx_leave_smm" ], "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+CgkJCTx0ZD4yMDI2LzA3LzIxIDE5OjI1PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0tWTSYjMzQ7LAogICAgJiMzNDtLVk1fSU5URUwmIzM0OywKICAgICYjMzQ7S1ZNX0FNRCYjMzQ7LAogICAgJiMzNDtLVk1fU01NJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7c3ZtX2xlYXZlX3NtbSYjMzQ7LAogICAgJiMzNDt2bXhfbGVhdmVfc21tJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIEtWTSYjMzk7cyBoYW5kbGluZyBvZiBuZXN0ZWQgdmlydHVhbGl6YXRpb24gc3RhdGUgZHVyaW5nIFN5c3RlbSBNYW5hZ2VtZW50IE1vZGUgKFNNTSkgdHJhbnNpdGlvbnMuIFNwZWNpZmljYWxseSwgaXQgY2hhbmdlcyB0aGUgYG5lc3RlZF9ydW5fcGVuZGluZ2Agc3RhdGUgdG8gYEtWTV9ORVNURURfUlVOX1BFTkRJTkdfVU5UUlVTVEVEYCB3aGVuIGxlYXZpbmcgU01NIGluIGJvdGggU1ZNIGFuZCBWTVgsIGFuZCB1cGRhdGVzIHRoZSBleGl0IGhhbmRsZXIgaW4gVk1YIHRvIGNoZWNrIGZvciB0aGUgZXhhY3QgYEtWTV9ORVNURURfUlVOX1BFTkRJTkdgIHN0YXRlLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIGNvcmUgS1ZNIGxvZ2ljIHRoYXQgYWZmZWN0cyBuZXN0ZWQgdmlydHVhbGl6YXRpb24gYW5kIFNNTSwgbWFraW5nIGl0IHdvcnRoIGZ1enppbmcuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjEgMTk6MjU8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCA1MDBmNjIyY2YyZmE2YjIzMjkyMTRjZTZmYTllOWYxMGIyZGZjNjA0XG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFR1ZSBKdWwgMjEgMTk6MjU6MDggMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvYXJjaC94ODYva3ZtL3N2bS9zdm0uYyBiL2FyY2gveDg2L2t2bS9zdm0vc3ZtLmNcbmluZGV4IDRkMmJhY2QwMGVjNGY1Li5mNTQ3NTdiZDgzODIxNSAxMDA2NDRcbi0tLSBhL2FyY2gveDg2L2t2bS9zdm0vc3ZtLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2FyY2gveDg2L2t2bS9zdm0vc3ZtLmNcbkBAIC01MDk2LDcgJiM0Mzs1MDk2LDcgQEAgc3RhdGljIGludCBzdm1fbGVhdmVfc21tKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgY29uc3QgdW5pb24ga3ZtX3NtcmFtICpzbXJhbSlcbiBcdFx0Z290byB1bm1hcF9zYXZlO1xuIFxuIFx0cmV0ID0gMDtcbi1cdHZjcHUtXHUwMDNlYXJjaC5uZXN0ZWRfcnVuX3BlbmRpbmcgPSBLVk1fTkVTVEVEX1JVTl9QRU5ESU5HO1xuJiM0MztcdHZjcHUtXHUwMDNlYXJjaC5uZXN0ZWRfcnVuX3BlbmRpbmcgPSBLVk1fTkVTVEVEX1JVTl9QRU5ESU5HX1VOVFJVU1RFRDtcbiBcbiB1bm1hcF9zYXZlOlxuIFx0a3ZtX3ZjcHVfdW5tYXAodmNwdSwgXHUwMDI2bWFwX3NhdmUpO1xuZGlmZiAtLWdpdCBhL2FyY2gveDg2L2t2bS92bXgvdm14LmMgYi9hcmNoL3g4Ni9rdm0vdm14L3ZteC5jXG5pbmRleCBjYzc1ZmVlYzA1ZGFhNC4uMzMzMDcyY2M5YmNlNGMgMTAwNjQ0XG4tLS0gYS9hcmNoL3g4Ni9rdm0vdm14L3ZteC5jXG4mIzQzOyYjNDM7JiM0MzsgYi9hcmNoL3g4Ni9rdm0vdm14L3ZteC5jXG5AQCAtNjcyMCw3ICYjNDM7NjcyMCw4IEBAIHN0YXRpYyBpbnQgX192bXhfaGFuZGxlX2V4aXQoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCBmYXN0cGF0aF90IGV4aXRfZmFzdHBhdGgpXG4gXHQgKiBpbnZhbGlkIGd1ZXN0IHN0YXRlIHNob3VsZCBuZXZlciBoYXBwZW4gYXMgdGhhdCBtZWFucyBLVk0ga25vd2luZ2x5XG4gXHQgKiBhbGxvd2VkIGEgbmVzdGVkIFZNLUVudGVyIHdpdGggYW4gaW52YWxpZCB2bWNzMTIuICBNb3JlIGJlbG93LlxuIFx0ICovXG4tXHRpZiAoS1ZNX0JVR19PTih2Y3B1LVx1MDAzZWFyY2gubmVzdGVkX3J1bl9wZW5kaW5nLCB2Y3B1LVx1MDAzZWt2bSkpXG4mIzQzO1x0aWYgKEtWTV9CVUdfT04odmNwdS1cdTAwM2VhcmNoLm5lc3RlZF9ydW5fcGVuZGluZyA9PSBLVk1fTkVTVEVEX1JVTl9QRU5ESU5HLFxuJiM0MztcdFx0ICAgICAgIHZjcHUtXHUwMDNla3ZtKSlcbiBcdFx0cmV0dXJuIC1FSU87XG4gXG4gXHRpZiAoaXNfZ3Vlc3RfbW9kZSh2Y3B1KSkge1xuQEAgLTg0MzYsNyAmIzQzOzg0MzcsNyBAQCBpbnQgdm14X2xlYXZlX3NtbShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIGNvbnN0IHVuaW9uIGt2bV9zbXJhbSAqc21yYW0pXG4gXHRcdGlmIChyZXQgIT0gTlZNWF9WTUVOVFJZX1NVQ0NFU1MpXG4gXHRcdFx0cmV0dXJuIDE7XG4gXG4tXHRcdHZjcHUtXHUwMDNlYXJjaC5uZXN0ZWRfcnVuX3BlbmRpbmcgPSBLVk1fTkVTVEVEX1JVTl9QRU5ESU5HO1xuJiM0MztcdFx0dmNwdS1cdTAwM2VhcmNoLm5lc3RlZF9ydW5fcGVuZGluZyA9IEtWTV9ORVNURURfUlVOX1BFTkRJTkdfVU5UUlVTVEVEO1xuIFx0XHR2bXgtXHUwMDNlbmVzdGVkLnNtbS5ndWVzdF9tb2RlID0gZmFsc2U7XG4gXHR9XG4gXHRyZXR1cm4gMDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yMSAxOToyNTwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4xbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5iZXN0LWV4cGVuc2l2ZTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7S1ZNJiMzNDssCiAgICAmIzM0O0tWTV9JTlRFTCYjMzQ7LAogICAgJiMzNDtLVk1fQU1EJiMzNDssCiAgICAmIzM0O0tWTV9TTU0mIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtzdm1fbGVhdmVfc21tJiMzNDssCiAgICAmIzM0O3ZteF9sZWF2ZV9zbW0mIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgS1ZNJiMzOTtzIGhhbmRsaW5nIG9mIG5lc3RlZCB2aXJ0dWFsaXphdGlvbiBzdGF0ZSBkdXJpbmcgU3lzdGVtIE1hbmFnZW1lbnQgTW9kZSAoU01NKSB0cmFuc2l0aW9ucy4gU3BlY2lmaWNhbGx5LCBpdCBjaGFuZ2VzIHRoZSBgbmVzdGVkX3J1bl9wZW5kaW5nYCBzdGF0ZSB0byBgS1ZNX05FU1RFRF9SVU5fUEVORElOR19VTlRSVVNURURgIHdoZW4gbGVhdmluZyBTTU0gaW4gYm90aCBTVk0gYW5kIFZNWCwgYW5kIHVwZGF0ZXMgdGhlIGV4aXQgaGFuZGxlciBpbiBWTVggdG8gY2hlY2sgZm9yIHRoZSBleGFjdCBgS1ZNX05FU1RFRF9SVU5fUEVORElOR2Agc3RhdGUuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgY29yZSBLVk0gbG9naWMgdGhhdCBhZmZlY3RzIG5lc3RlZCB2aXJ0dWFsaXphdGlvbiBhbmQgU01NLCBtYWtpbmcgaXQgd29ydGggZnV6emluZy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lCmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHkKdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy4KClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6Ci0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy4KLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy4KLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuCi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLApldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuCgpJZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoCnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLgoKV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086CjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuCiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLgoyLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS4KICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgogICBEbyBub3QgbGlzdCB0b28gZ2VuZXJpYyBjb25maWdzICh3ZSBhbHJlYWR5IGhhdmUgdGhlbSBlbmFibGVkKS4gT25seSBsaXN0IHRob3NlIHRoYXQKICAgc3BlY2lmaWNhbGx5IGNvdmVyIHRoZSBtb2RpZmllZCBjb2RlLiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3Mgb3V0cHV0IGFycmF5LAogICBhbmQgRE8gTk9UIGFkZCBhICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgNTAwZjYyMmNmMmZhNmIyMzI5MjE0Y2U2ZmE5ZTlmMTBiMmRmYzYwNApBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBUdWUgSnVsIDIxIDE5OjI1OjA4IDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvYXJjaC94ODYva3ZtL3N2bS9zdm0uYyBiL2FyY2gveDg2L2t2bS9zdm0vc3ZtLmMKaW5kZXggNGQyYmFjZDAwZWM0ZjUuLmY1NDc1N2JkODM4MjE1IDEwMDY0NAotLS0gYS9hcmNoL3g4Ni9rdm0vc3ZtL3N2bS5jCiYjNDM7JiM0MzsmIzQzOyBiL2FyY2gveDg2L2t2bS9zdm0vc3ZtLmMKQEAgLTUwOTYsNyAmIzQzOzUwOTYsNyBAQCBzdGF0aWMgaW50IHN2bV9sZWF2ZV9zbW0oc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCBjb25zdCB1bmlvbiBrdm1fc21yYW0gKnNtcmFtKQogCQlnb3RvIHVubWFwX3NhdmU7CiAKIAlyZXQgPSAwOwotCXZjcHUtJmd0O2FyY2gubmVzdGVkX3J1bl9wZW5kaW5nID0gS1ZNX05FU1RFRF9SVU5fUEVORElORzsKJiM0MzsJdmNwdS0mZ3Q7YXJjaC5uZXN0ZWRfcnVuX3BlbmRpbmcgPSBLVk1fTkVTVEVEX1JVTl9QRU5ESU5HX1VOVFJVU1RFRDsKIAogdW5tYXBfc2F2ZToKIAlrdm1fdmNwdV91bm1hcCh2Y3B1LCAmYW1wO21hcF9zYXZlKTsKZGlmZiAtLWdpdCBhL2FyY2gveDg2L2t2bS92bXgvdm14LmMgYi9hcmNoL3g4Ni9rdm0vdm14L3ZteC5jCmluZGV4IGNjNzVmZWVjMDVkYWE0Li4zMzMwNzJjYzliY2U0YyAxMDA2NDQKLS0tIGEvYXJjaC94ODYva3ZtL3ZteC92bXguYwomIzQzOyYjNDM7JiM0MzsgYi9hcmNoL3g4Ni9rdm0vdm14L3ZteC5jCkBAIC02NzIwLDcgJiM0Mzs2NzIwLDggQEAgc3RhdGljIGludCBfX3ZteF9oYW5kbGVfZXhpdChzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIGZhc3RwYXRoX3QgZXhpdF9mYXN0cGF0aCkKIAkgKiBpbnZhbGlkIGd1ZXN0IHN0YXRlIHNob3VsZCBuZXZlciBoYXBwZW4gYXMgdGhhdCBtZWFucyBLVk0ga25vd2luZ2x5CiAJICogYWxsb3dlZCBhIG5lc3RlZCBWTS1FbnRlciB3aXRoIGFuIGludmFsaWQgdm1jczEyLiAgTW9yZSBiZWxvdy4KIAkgKi8KLQlpZiAoS1ZNX0JVR19PTih2Y3B1LSZndDthcmNoLm5lc3RlZF9ydW5fcGVuZGluZywgdmNwdS0mZ3Q7a3ZtKSkKJiM0MzsJaWYgKEtWTV9CVUdfT04odmNwdS0mZ3Q7YXJjaC5uZXN0ZWRfcnVuX3BlbmRpbmcgPT0gS1ZNX05FU1RFRF9SVU5fUEVORElORywKJiM0MzsJCSAgICAgICB2Y3B1LSZndDtrdm0pKQogCQlyZXR1cm4gLUVJTzsKIAogCWlmIChpc19ndWVzdF9tb2RlKHZjcHUpKSB7CkBAIC04NDM2LDcgJiM0Mzs4NDM3LDcgQEAgaW50IHZteF9sZWF2ZV9zbW0oc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCBjb25zdCB1bmlvbiBrdm1fc21yYW0gKnNtcmFtKQogCQlpZiAocmV0ICE9IE5WTVhfVk1FTlRSWV9TVUNDRVNTKQogCQkJcmV0dXJuIDE7CiAKLQkJdmNwdS0mZ3Q7YXJjaC5uZXN0ZWRfcnVuX3BlbmRpbmcgPSBLVk1fTkVTVEVEX1JVTl9QRU5ESU5HOwomIzQzOwkJdmNwdS0mZ3Q7YXJjaC5uZXN0ZWRfcnVuX3BlbmRpbmcgPSBLVk1fTkVTVEVEX1JVTl9QRU5ESU5HX1VOVFJVU1RFRDsKIAkJdm14LSZndDtuZXN0ZWQuc21tLmd1ZXN0X21vZGUgPSBmYWxzZTsKIAl9CiAJcmV0dXJuIDA7CjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzIxIDE5OjI1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIzOTMKCQkJCQkJCW91dHB1dDogMzkKCQkJCQkJCXRob3VnaHRzOiAxNzUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIGEgS1ZNIFBhdGNoIGZvciBOZXN0ZWQgVmlydHVhbGl6YXRpb24qKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgS1ZNIHBhdGNoIHRoYXQmIzM5O3MgdHdlYWtpbmcgdGhlIHg4NiBjb2RlLCBzcGVjaWZpY2FsbHkgdGhlIGBzdm1fbGVhdmVfc21tYCBhbmQgYHZteF9sZWF2ZV9zbW1gIGZ1bmN0aW9ucy4gTXkgaW5pdGlhbCBpbXByZXNzaW9uIGlzIHRoYXQgdGhpcyBpcyBsaWtlbHkgcmVsYXRlZCB0byBpbXByb3Zpbmcgb3IgaGFyZGVuaW5nIG5lc3RlZCB2aXJ0dWFsaXphdGlvbiBzdXBwb3J0LCBzcGVjaWZpY2FsbHkgYXJvdW5kIFN5c3RlbSBNYW5hZ2VtZW50IE1vZGUgKFNNTSkuIFRoZSBjb3JlIGNoYW5nZSBzZWVtcyB0byByZXZvbHZlIGFyb3VuZCBob3cgdGhlIGBuZXN0ZWRfcnVuX3BlbmRpbmdgIGZsYWcgaXMgc2V0IGFuZCBjaGVja2VkIHdpdGhpbiB0aGUgVkNQVSBhcmNoaXRlY3R1cmUuCgpJdCBhcHBlYXJzIHRoZSBvcmlnaW5hbCBjb2RlIGluIGJvdGggZXhpdCBmdW5jdGlvbnMgc2V0IGB2Y3B1LSZndDthcmNoLm5lc3RlZF9ydW5fcGVuZGluZyA9IEtWTV9ORVNURURfUlVOX1BFTkRJTkc7YC4gVGhpcyBwYXRjaCBpcyBjaGFuZ2luZyB0aGF0IHRvIGBLVk1fTkVTVEVEX1JVTl9QRU5ESU5HX1VOVFJVU1RFRGAuIFRoZSBpbXBsaWNhdGlvbnMgb2YgdGhpcyBuZXcgZmxhZyB3YXJyYW50IGZ1cnRoZXIgaW52ZXN0aWdhdGlvbi4gSSYjMzk7bGwgbmVlZCB0byBmaWd1cmUgb3V0IHdoYXQgc2VtYW50aWMgZGlmZmVyZW5jZSBleGlzdHMgYmV0d2VlbiB0aGVzZSB0d28gZmxhZ3MuCgpGdXJ0aGVybW9yZSwgdGhlIGBfX3ZteF9oYW5kbGVfZXhpdGAgZnVuY3Rpb24gaXMgYmVpbmcgbW9kaWZpZWQgdG8gZXhwbGljaXRseSBjaGVjayBmb3IgYHZjcHUtJmd0O2FyY2gubmVzdGVkX3J1bl9wZW5kaW5nID09IEtWTV9ORVNURURfUlVOX1BFTkRJTkdgIHJhdGhlciB0aGFuIGEgc2ltcGxlIGVxdWFsaXR5LiBUaGlzIHN1Z2dlc3RzIHRoYXQgdGhlIGNvZGUgcGF0aCBmb3IgaGFuZGxpbmcgbmVzdGVkIGV4aXRzIGlzIGJlaW5nIG1vcmUgY2FyZWZ1bGx5IGNvbnRyb2xsZWQuIEEgY2hhbmdlIGluIHRoZSBjb25kaXRpb25hbCBsaWtlIHRoaXMgaXMgYW4gaW1tZWRpYXRlIGluZGljYXRvciBvZiBhIHBvdGVudGlhbCBzZWN1cml0eSBjb25jZXJuLiBJJiMzOTtkIG5lZWQgdG8gY29uc2lkZXIgdGhlIHRocmVhdCBtb2RlbCB0byB1bmRlcnN0YW5kIGlmIHRoaXMgbWl0aWdhdGVzIGFuIGF0dGFjaywgb3IgZW5hYmxlcyBmdW5jdGlvbmFsaXR5LgoKSSYjMzk7bGwgbmVlZCB0byBkaWcgaW50byB0aGUgZGVmaW5pdGlvbiBvZiBib3RoIGBLVk1fTkVTVEVEX1JVTl9QRU5ESU5HYCBhbmQgYEtWTV9ORVNURURfUlVOX1BFTkRJTkdfVU5UUlVTVEVEYCB0byBmdWxseSBncmFzcCB0aGUgaW50ZW50IG9mIHRoZXNlIGNoYW5nZXMuIEkmIzM5O2xsIGJlIGxvb2tpbmcgZm9yIHdoZXJlIHRoZXNlIGZsYWdzIGFyZSB1c2VkLCBhbmQgaG93IHRoZWlyIGRpc3RpbmN0IHZhbHVlcyBpbmZsdWVuY2UgdGhlIGNvbnRyb2wgZmxvdywgcGFydGljdWxhcmx5IHdpdGhpbiB0aGUgbmVzdGVkIHZpcnR1YWxpemF0aW9uIGNvbnRleHQuIE15IGh5cG90aGVzaXMgaXMgdGhhdCB0aGlzIHBhdGNoIG1pZ2h0IGJlIGludHJvZHVjaW5nIGEgc3RyaWN0ZXIgbGV2ZWwgb2Ygc2VjdXJpdHkgcmVnYXJkaW5nIG5lc3RlZCB2aXJ0dWFsaXphdGlvbiwgcGVyaGFwcyBieSBjbGFzc2lmeWluZyBuZXN0ZWQgVk1zIGFzIHVudHJ1c3RlZCwgcHJldmVudGluZyByZXNvdXJjZSBvdmVyLWNvbW1pdCwgb3IgcHJvdGVjdGluZyB0aGUgaHlwZXJ2aXNvciBmcm9tIG1hbGljaW91cyBjb2RlLiBIb3dldmVyLCB3aXRob3V0IGEgdGhvcm91Z2ggaW52ZXN0aWdhdGlvbiBvZiB0aGUgc3Vycm91bmRpbmcgY29kZSBhbmQgdGhlIHJlYXNvbmluZyBiZWhpbmQgdGhlc2UgY29uc3RhbnRzLCBJIGNhbiBvbmx5IG1ha2UgZWR1Y2F0ZWQgZ3Vlc3NlcyBhdCB0aGlzIHBvaW50LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzIxIDE5OjI1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O0tWTV9ORVNURURfUlVOX1BFTkRJTkcmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDthcmNoL3g4Ni9rdm0vJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2FyY2gveDg2L2t2bS9zdm0vbmVzdGVkLmM9MTExND1pbnQgbmVzdGVkX3N2bV92bXJ1bihzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXG4tLVxuYXJjaC94ODYva3ZtL3N2bS9uZXN0ZWQuYy0xMTc3LVxuYXJjaC94ODYva3ZtL3N2bS9uZXN0ZWQuYzoxMTc4Olx0dmNwdS1cdTAwM2VhcmNoLm5lc3RlZF9ydW5fcGVuZGluZyA9IEtWTV9ORVNURURfUlVOX1BFTkRJTkc7XG5hcmNoL3g4Ni9rdm0vc3ZtL25lc3RlZC5jLTExNzktXG4tLVxuYXJjaC94ODYva3ZtL3N2bS9uZXN0ZWQuYz0xOTUwPXN0YXRpYyBpbnQgc3ZtX3NldF9uZXN0ZWRfc3RhdGUoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LFxuLS1cbmFyY2gveDg2L2t2bS9zdm0vbmVzdGVkLmMtMjA2NC1cdGlmIChrdm1fc3RhdGUtXHUwMDNlZmxhZ3MgXHUwMDI2IEtWTV9TVEFURV9ORVNURURfUlVOX1BFTkRJTkcpXG5hcmNoL3g4Ni9rdm0vc3ZtL25lc3RlZC5jOjIwNjU6XHRcdHZjcHUtXHUwMDNlYXJjaC5uZXN0ZWRfcnVuX3BlbmRpbmcgPSBLVk1fTkVTVEVEX1JVTl9QRU5ESU5HX1VOVFJVU1RFRDtcbmFyY2gveDg2L2t2bS9zdm0vbmVzdGVkLmMtMjA2Ni1cdGVsc2Vcbi0tXG5hcmNoL3g4Ni9rdm0vc3ZtL3N2bS5jPTUwNDM9c3RhdGljIGludCBzdm1fbGVhdmVfc21tKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgY29uc3QgdW5pb24ga3ZtX3NtcmFtICpzbXJhbSlcbi0tXG5hcmNoL3g4Ni9rdm0vc3ZtL3N2bS5jLTUwOTgtXHRyZXQgPSAwO1xuYXJjaC94ODYva3ZtL3N2bS9zdm0uYzo1MDk5Olx0dmNwdS1cdTAwM2VhcmNoLm5lc3RlZF9ydW5fcGVuZGluZyA9IEtWTV9ORVNURURfUlVOX1BFTkRJTkdfVU5UUlVTVEVEO1xuYXJjaC94ODYva3ZtL3N2bS9zdm0uYy01MTAwLVxuLS1cbmFyY2gveDg2L2t2bS92bXgvbmVzdGVkLmM9Mzc4OD1zdGF0aWMgaW50IG5lc3RlZF92bXhfcnVuKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgYm9vbCBsYXVuY2gpXG4tLVxuYXJjaC94ODYva3ZtL3ZteC9uZXN0ZWQuYy0zODY1LVx0ICovXG5hcmNoL3g4Ni9rdm0vdm14L25lc3RlZC5jOjM4NjY6XHR2Y3B1LVx1MDAzZWFyY2gubmVzdGVkX3J1bl9wZW5kaW5nID0gS1ZNX05FU1RFRF9SVU5fUEVORElORztcbmFyY2gveDg2L2t2bS92bXgvbmVzdGVkLmMtMzg2Ny1cdHZteC1cdTAwM2VuZXN0ZWQuaGFzX3ByZWVtcHRpb25fdGltZXJfZGVhZGxpbmUgPSBmYWxzZTtcbi0tXG5hcmNoL3g4Ni9rdm0vdm14L25lc3RlZC5jPTY5MDI9c3RhdGljIGludCB2bXhfc2V0X25lc3RlZF9zdGF0ZShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsXG4tLVxuYXJjaC94ODYva3ZtL3ZteC9uZXN0ZWQuYy03MDMyLVx0aWYgKGt2bV9zdGF0ZS1cdTAwM2VmbGFncyBcdTAwMjYgS1ZNX1NUQVRFX05FU1RFRF9SVU5fUEVORElORylcbmFyY2gveDg2L2t2bS92bXgvbmVzdGVkLmM6NzAzMzpcdFx0dmNwdS1cdTAwM2VhcmNoLm5lc3RlZF9ydW5fcGVuZGluZyA9IEtWTV9ORVNURURfUlVOX1BFTkRJTkdfVU5UUlVTVEVEO1xuYXJjaC94ODYva3ZtL3ZteC9uZXN0ZWQuYy03MDM0LVx0ZWxzZVxuLS1cbmFyY2gveDg2L2t2bS92bXgvdm14LmM9NjY5Nj1zdGF0aWMgaW50IF9fdm14X2hhbmRsZV9leGl0KHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgZmFzdHBhdGhfdCBleGl0X2Zhc3RwYXRoKVxuLS1cbmFyY2gveDg2L2t2bS92bXgvdm14LmMtNjcyMi1cdCAqL1xuYXJjaC94ODYva3ZtL3ZteC92bXguYzo2NzIzOlx0aWYgKEtWTV9CVUdfT04odmNwdS1cdTAwM2VhcmNoLm5lc3RlZF9ydW5fcGVuZGluZyA9PSBLVk1fTkVTVEVEX1JVTl9QRU5ESU5HLFxuYXJjaC94ODYva3ZtL3ZteC92bXguYy02NzI0LVx0XHQgICAgICAgdmNwdS1cdTAwM2Vrdm0pKVxuLS1cbmFyY2gveDg2L2t2bS92bXgvdm14LmM9ODQyMT1pbnQgdm14X2xlYXZlX3NtbShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIGNvbnN0IHVuaW9uIGt2bV9zbXJhbSAqc21yYW0pXG4tLVxuYXJjaC94ODYva3ZtL3ZteC92bXguYy04NDM5LVxuYXJjaC94ODYva3ZtL3ZteC92bXguYzo4NDQwOlx0XHR2Y3B1LVx1MDAzZWFyY2gubmVzdGVkX3J1bl9wZW5kaW5nID0gS1ZNX05FU1RFRF9SVU5fUEVORElOR19VTlRSVVNURUQ7XG5hcmNoL3g4Ni9rdm0vdm14L3ZteC5jLTg0NDEtXHRcdHZteC1cdTAwM2VuZXN0ZWQuc21tLmd1ZXN0X21vZGUgPSBmYWxzZTtcbi0tXG5hcmNoL3g4Ni9rdm0veDg2LmM9MTE5Mjc9c3RhdGljIGludCBrdm1feDg2X3ZjcHVfcHJlX3J1bihzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXG4tLVxuYXJjaC94ODYva3ZtL3g4Ni5jLTExOTMyLVx0ICovXG5hcmNoL3g4Ni9rdm0veDg2LmM6MTE5MzM6XHRpZiAodmNwdS1cdTAwM2VhcmNoLm5lc3RlZF9ydW5fcGVuZGluZyA9PSBLVk1fTkVTVEVEX1JVTl9QRU5ESU5HKVxuYXJjaC94ODYva3ZtL3g4Ni5jOjExOTM0Olx0XHR2Y3B1LVx1MDAzZWFyY2gubmVzdGVkX3J1bl9wZW5kaW5nID0gS1ZNX05FU1RFRF9SVU5fUEVORElOR19VTlRSVVNURUQ7XG5hcmNoL3g4Ni9rdm0veDg2LmMtMTE5MzUtXG4tLVxuYXJjaC94ODYva3ZtL3g4Ni5oPTE5Nj1zdGF0aWMgaW5saW5lIHZvaWQga3ZtX3dhcm5fb25fbmVzdGVkX3J1bl9wZW5kaW5nKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSlcbmFyY2gveDg2L2t2bS94ODYuaC0xOTcte1xuYXJjaC94ODYva3ZtL3g4Ni5oOjE5ODpcdFdBUk5fT05fT05DRSh2Y3B1LVx1MDAzZWFyY2gubmVzdGVkX3J1bl9wZW5kaW5nID09IEtWTV9ORVNURURfUlVOX1BFTkRJTkcpO1xuYXJjaC94ODYva3ZtL3g4Ni5oLTE5OS19XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjEgMTk6MjU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDQ5MQoJCQkJCQkJb3V0cHV0OiAzNAoJCQkJCQkJdGhvdWdodHM6IDI0NgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgYSBLVk0gUGF0Y2ggZm9yIE5lc3RlZCBWaXJ0dWFsaXphdGlvbiBhbmQgU01NKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGFuZCBpdCYjMzk7cyBtYWtpbmcgc29tZSBwcmV0dHkgc3BlY2lmaWMgbW9kaWZpY2F0aW9ucyB3aXRoaW4gdGhlIEtWTSBzdWJzeXN0ZW0sIHNwZWNpZmljYWxseSBkZWFsaW5nIHdpdGggbmVzdGVkIHZpcnR1YWxpemF0aW9uIGFuZCBTTU0g4oCTIHRoYXQmIzM5O3MgZGVmaW5pdGVseSBpbnRlcmVzdGluZy4gRnJvbSB3aGF0IEkgY2FuIHNlZSwgaXQmIzM5O3MgY2hhbmdpbmcgaG93IGB2Y3B1LSZndDthcmNoLm5lc3RlZF9ydW5fcGVuZGluZ2AgaXMgaGFuZGxlZCwgc2hpZnRpbmcgZnJvbSBgS1ZNX05FU1RFRF9SVU5fUEVORElOR2AgdG8gYEtWTV9ORVNURURfUlVOX1BFTkRJTkdfVU5UUlVTVEVEYCB3aXRoaW4gdGhlIGBzdm1fbGVhdmVfc21tYCBhbmQgYHZteF9sZWF2ZV9zbW1gIGZ1bmN0aW9ucy4gSSBzZWUgaXQgYWxzbyB0d2Vha3MgYF9fdm14X2hhbmRsZV9leGl0YCB0byBiZSBtb3JlIHByZWNpc2UgYWJvdXQgaXRzIGNoZWNrcy4KCkZ1bmN0aW9uYWxseSwgdGhpcyBpcyBhIGNoYW5nZSB0aGF0JiMzOTtzIGxpa2VseSB0byBpbXBhY3QgaG93IG5lc3RlZCBWTXMgaW50ZXJhY3Qgd2l0aCBTTU0sIGFuZCB0aGF0IG1lYW5zIGl0JiMzOTtzIGEgcHJpbWUgdGFyZ2V0IGZvciBmdXp6aW5nLiBXZSBhYnNvbHV0ZWx5IG5lZWQgdG8gcHV0IHRoaXMgdGhyb3VnaCBpdHMgcGFjZXMuCgpOb3csIGxldCYjMzk7cyBzZWUsIHdoZXJlIGlzIHRoaXMgY29kZT8gQWgsIGl0IGxvb2tzIGxpa2UgYGFyY2gveDg2L2t2bS9zdm0vc3ZtLmNgIGFuZCBgYXJjaC94ODYva3ZtL3ZteC92bXguY2AgYXJlIHdoZXJlIHRoZSBhY3Rpb24gaXMgaGFwcGVuaW5nLiBBbHJpZ2h0LCBzbyB3ZSYjMzk7cmUgbG9va2luZyBhdCB0aGluZ3MgdGhhdCB3aWxsIGRlcGVuZCBvbiBgS1ZNYCwgYEtWTV9BTURgLCBhbmQgYEtWTV9JTlRFTGAuIE5lc3RlZCB2aXJ0dWFsaXphdGlvbiBvZnRlbiBoYXMgc29tZSB1bmRlcmx5aW5nIGNvbmZpZ3VyYXRpb24gdG8gY29udHJvbCBpdC4gTGV0IG1lIGp1c3QgY29uZmlybSBpZiB3ZSBuZWVkIHNvbWUgc3BlY2lmaWMgS2NvbmZpZyBvcHRpb25zIGVuYWJsZWQgYmV5b25kIHRoYXQuIFdlJiMzOTtsbCBuZWVkIHRvIGtub3cgd2hpY2ggb3B0aW9ucyBhcmUgaW4gcGxheSB0byB0cmlnZ2VyIHRoaXMuIFRoaXMgZGVmaW5pdGVseSBuZWVkcyBtb3JlIGludmVzdGlnYXRpb24uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjEgMTk6MjU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIEtWTSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2FyY2gveDg2L2t2bS9LY29uZmlnJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2FyY2gveDg2L2t2bS9LY29uZmlnPTE4PWlmIFZJUlRVQUxJWkFUSU9OXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0xOS1cbmFyY2gveDg2L2t2bS9LY29uZmlnOjIwOmNvbmZpZyBLVk1fWDg2XG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0yMS1cdGRlZl90cmlzdGF0ZSBLVk0gaWYgKEtWTV9JTlRFTCAhPSBuIHx8IEtWTV9BTUQgIT0gbilcbi0tXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy01MS1cbmFyY2gveDg2L2t2bS9LY29uZmlnOjUyOmNvbmZpZyBLVk1cbmFyY2gveDg2L2t2bS9LY29uZmlnLTUzLVx0dHJpc3RhdGUgXCYjMzQ7S2VybmVsLWJhc2VkIFZpcnR1YWwgTWFjaGluZSAoS1ZNKSBzdXBwb3J0XCYjMzQ7XG4tLVxuYXJjaC94ODYva3ZtL0tjb25maWctNjgtXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZzo2OTpjb25maWcgS1ZNX1dFUlJPUlxuYXJjaC94ODYva3ZtL0tjb25maWctNzAtXHRib29sIFwmIzM0O0NvbXBpbGUgS1ZNIHdpdGggLVdlcnJvclwmIzM0O1xuLS1cbmFyY2gveDg2L2t2bS9LY29uZmlnLTgyLVxuYXJjaC94ODYva3ZtL0tjb25maWc6ODM6Y29uZmlnIEtWTV9TV19QUk9URUNURURfVk1cbmFyY2gveDg2L2t2bS9LY29uZmlnLTg0LVx0Ym9vbCBcJiMzNDtFbmFibGUgc3VwcG9ydCBmb3IgS1ZNIHNvZnR3YXJlLXByb3RlY3RlZCBWTXNcJiMzNDtcbi0tXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy05NS1cbmFyY2gveDg2L2t2bS9LY29uZmlnOjk2OmNvbmZpZyBLVk1fSU5URUxcbmFyY2gveDg2L2t2bS9LY29uZmlnLTk3LVx0dHJpc3RhdGUgXCYjMzQ7S1ZNIGZvciBJbnRlbCAoYW5kIGNvbXBhdGlibGUpIHByb2Nlc3NvcnMgc3VwcG9ydFwmIzM0O1xuLS1cbmFyY2gveDg2L2t2bS9LY29uZmlnLTEwNi1cbmFyY2gveDg2L2t2bS9LY29uZmlnOjEwNzpjb25maWcgS1ZNX0lOVEVMX1BST1ZFX1ZFXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0xMDgtICAgICAgICBib29sIFwmIzM0O0NoZWNrIHRoYXQgZ3Vlc3RzIGRvIG5vdCByZWNlaXZlICNWRSBleGNlcHRpb25zXCYjMzQ7XG4tLVxuYXJjaC94ODYva3ZtL0tjb25maWc9MTIyPWNvbmZpZyBYODZfU0dYX0tWTVxuLS1cbmFyY2gveDg2L2t2bS9LY29uZmlnLTEzMy1cbmFyY2gveDg2L2t2bS9LY29uZmlnOjEzNDpjb25maWcgS1ZNX0lOVEVMX1REWFxuYXJjaC94ODYva3ZtL0tjb25maWctMTM1LVx0Ym9vbCBcJiMzNDtJbnRlbCBUcnVzdCBEb21haW4gRXh0ZW5zaW9ucyAoVERYKSBzdXBwb3J0XCYjMzQ7XG4tLVxuYXJjaC94ODYva3ZtL0tjb25maWctMTQ1LVxuYXJjaC94ODYva3ZtL0tjb25maWc6MTQ2OmNvbmZpZyBLVk1fQU1EXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0xNDctXHR0cmlzdGF0ZSBcJiMzNDtLVk0gZm9yIEFNRCBwcm9jZXNzb3JzIHN1cHBvcnRcJiMzNDtcbi0tXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0xNTUtXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZzoxNTY6Y29uZmlnIEtWTV9BTURfU0VWXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0xNTctXHRib29sIFwmIzM0O0FNRCBTZWN1cmUgRW5jcnlwdGVkIFZpcnR1YWxpemF0aW9uIChTRVYpIHN1cHBvcnRcJiMzNDtcbi0tXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0xNzEtXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZzoxNzI6Y29uZmlnIEtWTV9JT0FQSUNcbmFyY2gveDg2L2t2bS9LY29uZmlnLTE3My1cdGJvb2wgXCYjMzQ7SS9PIEFQSUMsIFBJQywgYW5kIFBJVCBlbXVsYXRpb25cJiMzNDtcbi0tXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0xODEtXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZzoxODI6Y29uZmlnIEtWTV9TTU1cbmFyY2gveDg2L2t2bS9LY29uZmlnLTE4My1cdGJvb2wgXCYjMzQ7U3lzdGVtIE1hbmFnZW1lbnQgTW9kZSBlbXVsYXRpb25cJiMzNDtcbi0tXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0xOTItXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZzoxOTM6Y29uZmlnIEtWTV9IWVBFUlZcbmFyY2gveDg2L2t2bS9LY29uZmlnLTE5NC1cdGJvb2wgXCYjMzQ7U3VwcG9ydCBmb3IgTWljcm9zb2Z0IEh5cGVyLVYgZW11bGF0aW9uXCYjMzQ7XG4tLVxuYXJjaC94ODYva3ZtL0tjb25maWctMjA2LVxuYXJjaC94ODYva3ZtL0tjb25maWc6MjA3OmNvbmZpZyBLVk1fWEVOXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0yMDgtXHRib29sIFwmIzM0O1N1cHBvcnQgZm9yIFhlbiBoeXBlcmNhbGwgaW50ZXJmYWNlXCYjMzQ7XG4tLVxuYXJjaC94ODYva3ZtL0tjb25maWctMjE1LVxuYXJjaC94ODYva3ZtL0tjb25maWc6MjE2OmNvbmZpZyBLVk1fUFJPVkVfTU1VXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0yMTctXHRib29sIFwmIzM0O1Byb3ZlIEtWTSBNTVUgY29ycmVjdG5lc3NcJiMzNDtcbi0tXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0yMjgtXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZzoyMjk6Y29uZmlnIEtWTV9FWFRFUk5BTF9XUklURV9UUkFDS0lOR1xuYXJjaC94ODYva3ZtL0tjb25maWctMjMwLVx0Ym9vbFxuYXJjaC94ODYva3ZtL0tjb25maWctMjMxLVxuYXJjaC94ODYva3ZtL0tjb25maWc6MjMyOmNvbmZpZyBLVk1fTUFYX05SX1ZDUFVTXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0yMzMtXHRpbnQgXCYjMzQ7TWF4aW11bSBudW1iZXIgb2YgdkNQVXMgcGVyIEtWTSBndWVzdFwmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzIxIDE5OjI1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDYzMjgKCQkJCQkJCW91dHB1dDogMzcKCQkJCQkJCXRob3VnaHRzOiA5OAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB0aG91Z2h0IHByb2Nlc3MsIGFzIGlmIEkgd2VyZSByZXZpZXdpbmcgdGhpcyBjb2RlOgoKKipBbmFseXppbmcgUG90ZW50aWFsIFNNTSBFbXVsYXRpb24gUGF0Y2gqKgoKT2theSwgc28gdGhpcyBwYXRjaCBpcyB0b3VjaGluZyBgc3ZtX2xlYXZlX3NtbWAgYW5kIGB2bXhfbGVhdmVfc21tYC4gVGhvc2UgYXJlIHByZXR0eSBmdW5kYW1lbnRhbCBmdW5jdGlvbnMgcmVsYXRlZCB0byBTTU0gZW11bGF0aW9uLCB3aGljaCBpbW1lZGlhdGVseSBjYXRjaGVzIG15IGF0dGVudGlvbi4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGNvbnRleHQuIFNpbmNlIHRoZXNlIGZ1bmN0aW9ucyBhcmUgbGlrZWx5IGludm9sdmVkIGluIHRyYW5zaXRpb25pbmcgaW4gb3Igb3V0IG9mIFNNTSBpbiBhIHZpcnR1YWxpemVkIGVudmlyb25tZW50LCBJIG5lZWQgdG8gY29uZmlybSB3aGV0aGVyIHRoZSBjaGFuZ2VzIGFyZSBpc29sYXRlZCB0byBhIHBhcnRpY3VsYXIgY29uZmlndXJhdGlvbi4gVGhlIG5leHQgc3RlcCBpcyB0byBleGFtaW5lIHRoZSBLY29uZmlnIGZpbGUgaW4gYGFyY2gveDg2L2t2bS9LY29uZmlnYCB0byBzZWUgd2hhdCBjb25maWd1cmF0aW9uIG9wdGlvbnMgbWlnaHQgYWZmZWN0IHRoZXNlIGZ1bmN0aW9ucy4gSeKAmW0gYmV0dGluZyB0aGlzIGludm9sdmVzIHRoZSBgS1ZNX1NNTWAgY29uZmlnLiBMZXQmIzM5O3MgdmVyaWZ5IHRoYXQgYHN2bV9sZWF2ZV9zbW1gIGFuZCBgdm14X2xlYXZlX3NtbWAgYXJlIGluZGVlZCBndWFyZGVkIGJ5IGBLVk1fU01NYC4gSWYgc28sIEkgY2FuIHJlc3RyaWN0IG15IGZvY3VzIHRvIHRoZSBjb2RlIHBhdGhzIHRha2VuIHdoZW4gS1ZNIFNNTSBpcyBlbmFibGVkLiBUaGlzIHdpbGwgaGVscCBuYXJyb3cgdGhlIHNjb3BlIG9mIHRoZSBpbXBhY3Qgb2YgdGhpcyBwYXRjaC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD44LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yMSAxOToyNTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtzdm1fbGVhdmVfc21tJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7YXJjaC94ODYva3ZtL3N2bS8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7YXJjaC94ODYva3ZtL3N2bS9zdm0uYz00OTk0PXN0YXRpYyBpbnQgc3ZtX2VudGVyX3NtbShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHVuaW9uIGt2bV9zbXJhbSAqc21yYW0pXG4tLVxuYXJjaC94ODYva3ZtL3N2bS9zdm0uYy01MDQyLVxuYXJjaC94ODYva3ZtL3N2bS9zdm0uYzo1MDQzOnN0YXRpYyBpbnQgc3ZtX2xlYXZlX3NtbShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIGNvbnN0IHVuaW9uIGt2bV9zbXJhbSAqc21yYW0pXG5hcmNoL3g4Ni9rdm0vc3ZtL3N2bS5jLTUwNDQte1xuLS1cbmFyY2gveDg2L2t2bS9zdm0vc3ZtLmM9NTMyNT1zdHJ1Y3Qga3ZtX3g4Nl9vcHMgc3ZtX3g4Nl9vcHMgX19pbml0ZGF0YSA9IHtcbi0tXG5hcmNoL3g4Ni9rdm0vc3ZtL3N2bS5jLTU0MzctXHQuZW50ZXJfc21tID0gc3ZtX2VudGVyX3NtbSxcbmFyY2gveDg2L2t2bS9zdm0vc3ZtLmM6NTQzODpcdC5sZWF2ZV9zbW0gPSBzdm1fbGVhdmVfc21tLFxuYXJjaC94ODYva3ZtL3N2bS9zdm0uYy01NDM5LVx0LmVuYWJsZV9zbWlfd2luZG93ID0gc3ZtX2VuYWJsZV9zbWlfd2luZG93LFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzIxIDE5OjI1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDcwMDMKCQkJCQkJCW91dHB1dDogMzYKCQkJCQkJCXRob3VnaHRzOiAzMgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipJbnZlc3RpZ2F0aW5nIENvbmRpdGlvbmFsIENvbXBpbGF0aW9uIGluIEtWTSoqCgpPa2F5LCBzbyBJIG5lZWQgdG8gZmlndXJlIG91dCB3aHkgdGhlc2UgZnVuY3Rpb25zIG1pZ2h0IGJlIGJlaGF2aW5nIGFzIHRoZXkgYXJlLiBNeSBpbW1lZGlhdGUgdGhvdWdodCBpcywgbGV0JiMzOTtzIGRyaWxsIGRvd24gaW50byB0aGUgS1ZNIHNvdXJjZSBjb2RlLiBNeSBpbnR1aXRpb24sIGJhc2VkIG9uIHByZXZpb3VzIGV4cGVyaWVuY2UsIHBvaW50cyBtZSB0b3dhcmRzIGNvbmRpdGlvbmFsIGNvbXBpbGF0aW9uLiBJIHN1c3BlY3QgdGhhdCB0aGUgcHJlc2VuY2Ugb3IgYWJzZW5jZSBvZiB0aGVzZSBmdW5jdGlvbnMsIG9yIHRoZWlyIHNwZWNpZmljIGltcGxlbWVudGF0aW9ucywgbWlnaHQgaGluZ2Ugb24gdGhlIGBDT05GSUdfS1ZNX1NNTWAgY29uZmlndXJhdGlvbiBvcHRpb24uIFRoZXJlZm9yZSwgbXkgZmlyc3Qgc3RlcCBpcyB0byBjYXJlZnVsbHkgZXhhbWluZSBgc3ZtLmNgIGFuZCBgdm14LmNgIOKAkyB0aGV5IGFyZSB0aGUgb2J2aW91cyBwbGFjZXMgd2hlcmUgdGhpcyBraW5kIG9mIHByb2Nlc3Nvci1zcGVjaWZpYyBjb2RlIHdvdWxkIHJlc2lkZS4gSSBuZWVkIHRvIGdyZXAgYW5kIHZlcmlmeSBpZiB0aGlzIGNvbmZpZ3VyYXRpb24gdmFyaWFibGUgaXMgdXNlZCB0byBkZWNpZGUgd2hldGhlciB0aGUgcmVsZXZhbnQgZnVuY3Rpb25zIGFyZSBpbmNsdWRlZCBpbiB0aGUgY29tcGlsYXRpb24gcHJvY2VzcyBvciBub3QuIEl0JiMzOTtzIGEgY2xhc3NpYyBjaGVjaywgYW5kIHRoZSBmaXJzdCBwbGFjZSBJJiMzOTtkIGxvb2suIFRoaXMgYXBwcm9hY2ggYWxsb3dzIG1lIHRvIHBpbnBvaW50IHdoZXJlIHRoaXMgY29uZGl0aW9uYWwgYmVoYXZpb3IgaXMgY29udHJvbGxlZC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjEgMTk6MjU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Q09ORklHX0tWTV9TTU0mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDthcmNoL3g4Ni9rdm0vJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2FyY2gveDg2L2t2bS9NYWtlZmlsZT0xND1rdm0tJChDT05GSUdfS1ZNX1hFTilcdCYjNDM7PSB4ZW4ub1xuYXJjaC94ODYva3ZtL01ha2VmaWxlOjE1Omt2bS0kKENPTkZJR19LVk1fU01NKVx0JiM0Mzs9IHNtbS5vXG5hcmNoL3g4Ni9rdm0vTWFrZWZpbGUtMTYtXG4tLVxuYXJjaC94ODYva3ZtL3NtbS5oLTYtXG5hcmNoL3g4Ni9rdm0vc21tLmg6NzojaWZkZWYgQ09ORklHX0tWTV9TTU1cbmFyY2gveDg2L2t2bS9zbW0uaC04LVxuLS1cbmFyY2gveDg2L2t2bS9zdm0vbmVzdGVkLmM9MTcyNT1zdGF0aWMgaW50IHN2bV9jaGVja19uZXN0ZWRfZXZlbnRzKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSlcbi0tXG5hcmNoL3g4Ni9rdm0vc3ZtL25lc3RlZC5jLTE3NjYtXG5hcmNoL3g4Ni9rdm0vc3ZtL25lc3RlZC5jOjE3Njc6I2lmZGVmIENPTkZJR19LVk1fU01NXG5hcmNoL3g4Ni9rdm0vc3ZtL25lc3RlZC5jLTE3NjgtXHRpZiAodmNwdS1cdTAwM2VhcmNoLnNtaV9wZW5kaW5nIFx1MDAyNlx1MDAyNiAhc3ZtX3NtaV9ibG9ja2VkKHZjcHUpKSB7XG4tLVxuYXJjaC94ODYva3ZtL3N2bS9zdm0uYz0yMTQ4PXN0YXRpYyBpbnQgc2h1dGRvd25faW50ZXJjZXB0aW9uKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSlcbi0tXG5hcmNoL3g4Ni9rdm0vc3ZtL3N2bS5jLTIxNjYtXHRcdGNsZWFyX3BhZ2Uoc3ZtLVx1MDAzZXZtY2IpO1xuYXJjaC94ODYva3ZtL3N2bS9zdm0uYzoyMTY3OiNpZmRlZiBDT05GSUdfS1ZNX1NNTVxuYXJjaC94ODYva3ZtL3N2bS9zdm0uYy0yMTY4LVx0XHRpZiAoaXNfc21tKHZjcHUpKVxuLS1cbmFyY2gveDg2L2t2bS9zdm0vc3ZtLmM9NDY4NT1zdGF0aWMgYm9vbCBzdm1faGFzX2VtdWxhdGVkX21zcihzdHJ1Y3Qga3ZtICprdm0sIHUzMiBpbmRleClcbi0tXG5hcmNoL3g4Ni9rdm0vc3ZtL3N2bS5jLTQ2OTEtXHRjYXNlIE1TUl9JQTMyX1NNQkFTRTpcbmFyY2gveDg2L2t2bS9zdm0vc3ZtLmM6NDY5MjpcdFx0aWYgKCFJU19FTkFCTEVEKENPTkZJR19LVk1fU01NKSlcbmFyY2gveDg2L2t2bS9zdm0vc3ZtLmMtNDY5My1cdFx0XHRyZXR1cm4gZmFsc2U7XG4tLVxuYXJjaC94ODYva3ZtL3N2bS9zdm0uYz00OTYwPXN0YXRpYyB2b2lkIHN2bV9zZXR1cF9tY2Uoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxuLS1cbmFyY2gveDg2L2t2bS9zdm0vc3ZtLmMtNDk2NS1cbmFyY2gveDg2L2t2bS9zdm0vc3ZtLmM6NDk2NjojaWZkZWYgQ09ORklHX0tWTV9TTU1cbmFyY2gveDg2L2t2bS9zdm0vc3ZtLmMtNDk2Ny1ib29sIHN2bV9zbWlfYmxvY2tlZChzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXG4tLVxuYXJjaC94ODYva3ZtL3N2bS9zdm0uYz01MzI1PXN0cnVjdCBrdm1feDg2X29wcyBzdm1feDg2X29wcyBfX2luaXRkYXRhID0ge1xuLS1cbmFyY2gveDg2L2t2bS9zdm0vc3ZtLmMtNTQzNC1cbmFyY2gveDg2L2t2bS9zdm0vc3ZtLmM6NTQzNTojaWZkZWYgQ09ORklHX0tWTV9TTU1cbmFyY2gveDg2L2t2bS9zdm0vc3ZtLmMtNTQzNi1cdC5zbWlfYWxsb3dlZCA9IHN2bV9zbWlfYWxsb3dlZCxcbi0tXG5hcmNoL3g4Ni9rdm0vdm14L21haW4uYz0yMTA9c3RhdGljIGludCB2dF9jb21wbGV0ZV9lbXVsYXRlZF9tc3Ioc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCBpbnQgZXJyKVxuLS1cbmFyY2gveDg2L2t2bS92bXgvbWFpbi5jLTIxNy1cbmFyY2gveDg2L2t2bS92bXgvbWFpbi5jOjIxODojaWZkZWYgQ09ORklHX0tWTV9TTU1cbmFyY2gveDg2L2t2bS92bXgvbWFpbi5jLTIxOS1zdGF0aWMgaW50IHZ0X3NtaV9hbGxvd2VkKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgYm9vbCBmb3JfaW5qZWN0aW9uKVxuLS1cbmFyY2gveDg2L2t2bS92bXgvbWFpbi5jPTg4MD1zdHJ1Y3Qga3ZtX3g4Nl9vcHMgdnRfeDg2X29wcyBfX2luaXRkYXRhID0ge1xuLS1cbmFyY2gveDg2L2t2bS92bXgvbWFpbi5jLTEwMDktXG5hcmNoL3g4Ni9rdm0vdm14L21haW4uYzoxMDEwOiNpZmRlZiBDT05GSUdfS1ZNX1NNTVxuYXJjaC94ODYva3ZtL3ZteC9tYWluLmMtMTAxMS1cdC5zbWlfYWxsb3dlZCA9IHZ0X29wKHNtaV9hbGxvd2VkKSxcbi0tXG5hcmNoL3g4Ni9rdm0vdm14L3ZteC5jPTcyMDk9Ym9vbCB2bXhfaGFzX2VtdWxhdGVkX21zcihzdHJ1Y3Qga3ZtICprdm0sIHUzMiBpbmRleClcbi0tXG5hcmNoL3g4Ni9rdm0vdm14L3ZteC5jLTcyMTItXHRjYXNlIE1TUl9JQTMyX1NNQkFTRTpcbmFyY2gveDg2L2t2bS92bXgvdm14LmM6NzIxMzpcdFx0aWYgKCFJU19FTkFCTEVEKENPTkZJR19LVk1fU01NKSlcbmFyY2gveDg2L2t2bS92bXgvdm14LmMtNzIxNC1cdFx0XHRyZXR1cm4gZmFsc2U7XG4tLVxuYXJjaC94ODYva3ZtL3ZteC92bXguYz04MzgxPXZvaWQgdm14X3NldHVwX21jZShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXG4tLVxuYXJjaC94ODYva3ZtL3ZteC92bXguYy04MzkwLVxuYXJjaC94ODYva3ZtL3ZteC92bXguYzo4MzkxOiNpZmRlZiBDT05GSUdfS1ZNX1NNTVxuYXJjaC94ODYva3ZtL3ZteC92bXguYy04MzkyLWludCB2bXhfc21pX2FsbG93ZWQoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCBib29sIGZvcl9pbmplY3Rpb24pXG4tLVxuYXJjaC94ODYva3ZtL3ZteC94ODZfb3BzLmg9MzQ9aW50IHZteF9zZXRfbXNyKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgc3RydWN0IG1zcl9kYXRhICptc3JfaW5mbyk7XG5hcmNoL3g4Ni9rdm0vdm14L3g4Nl9vcHMuaDozNTojaWZkZWYgQ09ORklHX0tWTV9TTU1cbmFyY2gveDg2L2t2bS92bXgveDg2X29wcy5oLTM2LWludCB2bXhfc21pX2FsbG93ZWQoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCBib29sIGZvcl9pbmplY3Rpb24pO1xuLS1cbmFyY2gveDg2L2t2bS94ODYuYz0zODc4PWludCBrdm1fc2V0X21zcl9jb21tb24oc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCBzdHJ1Y3QgbXNyX2RhdGEgKm1zcl9pbmZvKVxuLS1cbmFyY2gveDg2L2t2bS94ODYuYy00MDU4LVx0Y2FzZSBNU1JfSUEzMl9TTUJBU0U6XG5hcmNoL3g4Ni9rdm0veDg2LmM6NDA1OTpcdFx0aWYgKCFJU19FTkFCTEVEKENPTkZJR19LVk1fU01NKSB8fCAhbXNyX2luZm8tXHUwMDNlaG9zdF9pbml0aWF0ZWQpXG5hcmNoL3g4Ni9rdm0veDg2LmMtNDA2MC1cdFx0XHRyZXR1cm4gMTtcbi0tXG5hcmNoL3g4Ni9rdm0veDg2LmM9NDMzNT1pbnQga3ZtX2dldF9tc3JfY29tbW9uKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgc3RydWN0IG1zcl9kYXRhICptc3JfaW5mbylcbi0tXG5hcmNoL3g4Ni9rdm0veDg2LmMtNDQ1NC1cdGNhc2UgTVNSX0lBMzJfU01CQVNFOlxuYXJjaC94ODYva3ZtL3g4Ni5jOjQ0NTU6XHRcdGlmICghSVNfRU5BQkxFRChDT05GSUdfS1ZNX1NNTSkgfHwgIW1zcl9pbmZvLVx1MDAzZWhvc3RfaW5pdGlhdGVkKVxuYXJjaC94ODYva3ZtL3g4Ni5jLTQ0NTYtXHRcdFx0cmV0dXJuIDE7XG4tLVxuYXJjaC94ODYva3ZtL3g4Ni5jPTQ3Njg9aW50IGt2bV92bV9pb2N0bF9jaGVja19leHRlbnNpb24oc3RydWN0IGt2bSAqa3ZtLCBsb25nIGV4dClcbi0tXG5hcmNoL3g4Ni9rdm0veDg2LmMtNDg4Ny1cdGNhc2UgS1ZNX0NBUF9YODZfU01NOlxuYXJjaC94ODYva3ZtL3g4Ni5jOjQ4ODg6XHRcdGlmICghSVNfRU5BQkxFRChDT05GSUdfS1ZNX1NNTSkpXG5hcmNoL3g4Ni9rdm0veDg2LmMtNDg4OS1cdFx0XHRicmVhaztcbi0tXG5hcmNoL3g4Ni9rdm0veDg2LmM9NTU1Nz1zdGF0aWMgdm9pZCBrdm1fdmNwdV9pb2N0bF94ODZfZ2V0X3ZjcHVfZXZlbnRzKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSxcbi0tXG5hcmNoL3g4Ni9rdm0veDg2LmMtNTU2My1cbmFyY2gveDg2L2t2bS94ODYuYzo1NTY0OiNpZmRlZiBDT05GSUdfS1ZNX1NNTVxuYXJjaC94ODYva3ZtL3g4Ni5jLTU1NjUtXHRpZiAoa3ZtX2NoZWNrX3JlcXVlc3QoS1ZNX1JFUV9TTUksIHZjcHUpKVxuLS1cbmFyY2gveDg2L2t2bS94ODYuYy01NjA2LVxuYXJjaC94ODYva3ZtL3g4Ni5jOjU2MDc6I2lmZGVmIENPTkZJR19LVk1fU01NXG5hcmNoL3g4Ni9rdm0veDg2LmMtNTYwOC1cdGV2ZW50cy1cdTAwM2VzbWkuc21tID0gaXNfc21tKHZjcHUpO1xuLS1cbmFyY2gveDg2L2t2bS94ODYuYz01NjI2PXN0YXRpYyBpbnQga3ZtX3ZjcHVfaW9jdGxfeDg2X3NldF92Y3B1X2V2ZW50cyhzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsXG4tLVxuYXJjaC94ODYva3ZtL3g4Ni5jLTU2OTUtXHRpZiAoZXZlbnRzLVx1MDAzZWZsYWdzIFx1MDAyNiBLVk1fVkNQVUVWRU5UX1ZBTElEX1NNTSkge1xuYXJjaC94ODYva3ZtL3g4Ni5jOjU2OTY6I2lmZGVmIENPTkZJR19LVk1fU01NXG5hcmNoL3g4Ni9rdm0veDg2LmMtNTY5Ny1cdFx0aWYgKCEhKHZjcHUtXHUwMDNlYXJjaC5oZmxhZ3MgXHUwMDI2IEhGX1NNTV9NQVNLKSAhPSBldmVudHMtXHUwMDNlc21pLnNtbSkge1xuLS1cbmFyY2gveDg2L2t2bS94ODYuYz04ODQ1PXN0YXRpYyBib29sIGVtdWxhdG9yX2lzX3NtbShzdHJ1Y3QgeDg2X2VtdWxhdGVfY3R4dCAqY3R4dClcbi0tXG5hcmNoL3g4Ni9rdm0veDg2LmMtODg0OS1cbmFyY2gveDg2L2t2bS94ODYuYzo4ODUwOiNpZm5kZWYgQ09ORklHX0tWTV9TTU1cbmFyY2gveDg2L2t2bS94ODYuYy04ODUxLXN0YXRpYyBpbnQgZW11bGF0b3JfbGVhdmVfc21tKHN0cnVjdCB4ODZfZW11bGF0ZV9jdHh0ICpjdHh0KVxuLS1cbmFyY2gveDg2L2t2bS94ODYuYz0xMDYzMz1zdGF0aWMgaW50IGt2bV9jaGVja19hbmRfaW5qZWN0X2V2ZW50cyhzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsXG4tLVxuYXJjaC94ODYva3ZtL3g4Ni5jLTEwNzU5LVx0ICovXG5hcmNoL3g4Ni9rdm0veDg2LmM6MTA3NjA6I2lmZGVmIENPTkZJR19LVk1fU01NXG5hcmNoL3g4Ni9rdm0veDg2LmMtMTA3NjEtXHRpZiAodmNwdS1cdTAwM2VhcmNoLnNtaV9wZW5kaW5nKSB7XG4tLVxuYXJjaC94ODYva3ZtL3g4Ni5jPTExMTEyPXN0YXRpYyBpbnQgdmNwdV9lbnRlcl9ndWVzdChzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXG4tLVxuYXJjaC94ODYva3ZtL3g4Ni5jLTExMjA3LVx0XHRcdGt2bV9wbXVfZGVsaXZlcl9wbWkodmNwdSk7XG5hcmNoL3g4Ni9rdm0veDg2LmM6MTEyMDg6I2lmZGVmIENPTkZJR19LVk1fU01NXG5hcmNoL3g4Ni9rdm0veDg2LmMtMTEyMDktXHRcdGlmIChrdm1fY2hlY2tfcmVxdWVzdChLVk1fUkVRX1NNSSwgdmNwdSkpXG4tLVxuYXJjaC94ODYva3ZtL3g4Ni5jPTExNTY5PWJvb2wga3ZtX3ZjcHVfaGFzX2V2ZW50cyhzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXG4tLVxuYXJjaC94ODYva3ZtL3g4Ni5jLTExNTg1LVxuYXJjaC94ODYva3ZtL3g4Ni5jOjExNTg2OiNpZmRlZiBDT05GSUdfS1ZNX1NNTVxuYXJjaC94ODYva3ZtL3g4Ni5jLTExNTg3LVx0aWYgKGt2bV90ZXN0X3JlcXVlc3QoS1ZNX1JFUV9TTUksIHZjcHUpIHx8XG4tLVxuYXJjaC94ODYva3ZtL3g4Ni5jPTExODE1PWJvb2wga3ZtX2FyY2hfZHlfcnVubmFibGUoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxuLS1cbmFyY2gveDg2L2t2bS94ODYuYy0xMTgyMC1cdGlmIChrdm1fdGVzdF9yZXF1ZXN0KEtWTV9SRVFfTk1JLCB2Y3B1KSB8fFxuYXJjaC94ODYva3ZtL3g4Ni5jOjExODIxOiNpZmRlZiBDT05GSUdfS1ZNX1NNTVxuYXJjaC94ODYva3ZtL3g4Ni5jLTExODIyLVx0XHRrdm1fdGVzdF9yZXF1ZXN0KEtWTV9SRVFfU01JLCB2Y3B1KSB8fFxuLS1cbmFyY2gveDg2L2t2bS94ODYuaD02Mz1zdGF0aWNfYXNzZXJ0KFNJWkVfT0ZfTUVNU0xPVFNfSEFTSFRBQkxFID09XG5hcmNoL3g4Ni9rdm0veDg2Lmg6NjQ6XHQgICAgICAoMTAyNCAqICgxICYjNDM7IElTX0VOQUJMRUQoQ09ORklHX1g4Nl82NCkpICogKDEgJiM0MzsgSVNfRU5BQkxFRChDT05GSUdfS1ZNX1NNTSkpKSk7XG5hcmNoL3g4Ni9rdm0veDg2LmgtNjUtXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzIxIDE5OjI1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDEwNTQyCgkJCQkJCQlvdXRwdXQ6IDM5CgkJCQkJCQl0aG91Z2h0czogMTM3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgS1ZNIFNNTSBQYXRjaCBSZXF1aXJlbWVudHMqKgoKT2theSwgc28gaXQmIzM5O3MgbG9va2luZyBwcmV0dHkgc3RyYWlnaHRmb3J3YXJkLiBUaGUgY29yZSBvZiB0aGlzIHBhdGNoLCB0aGUgcGFydCB0aGF0IGFjdHVhbGx5IGRlYWxzIHdpdGggU2VjdXJlIE1vZGUgTWFuYWdlbWVudCAoU01NKSBzdXBwb3J0LCBoaW5nZXMgb24gYENPTkZJR19LVk1fU01NYC4gTWFrZXMgcGVyZmVjdCBzZW5zZTsgaWYgU01NIHN1cHBvcnQgaXNuJiMzOTt0IGNvbXBpbGVkIGluLCB0aGVuIHRoZSBmdW5jdGlvbnMgcmVsYXRlZCB0byBsZWF2aW5nIFNNTSB3b3VsZG4mIzM5O3QgZXhpc3QgYW5kIG5lZWQgbW9kaWZpY2F0aW9uLiBTcGVjaWZpY2FsbHksIGl0JiMzOTtzIHRoZSBgc3ZtX2xlYXZlX3NtbWAgYW5kIGB2bXhfbGVhdmVfc21tYCBmdW5jdGlvbnMgdGhhdCBhcmUgYmVpbmcgdG91Y2hlZC4gR2l2ZW4gdGhlIG5hbWVzLCB0aG9zZSBhcmUgY2xlYXJseSBhcmNoaXRlY3R1cmUtc3BlY2lmaWM6IEFNRCBTZWN1cmUgVmlydHVhbCBNYWNoaW5lIChTVk0pIGFuZCBJbnRlbCBWaXJ0dWFsIE1hY2hpbmUgRXh0ZW5zaW9ucyAoVk1YKSwgcmVzcGVjdGl2ZWx5LiBBbmQgdGhvc2UgYXJlIG9ubHkgY29tcGlsZWQgaWYgYENPTkZJR19LVk1fU01NYCBpcyBlbmFibGVkLgoKRnVydGhlcm1vcmUsIHRoaXMgYWxzbyBtb2RpZmllcyBgX192bXhfaGFuZGxlX2V4aXRgIHRvbywgd2hpY2ggaXMgaW50ZXJlc3RpbmcuIEkmIzM5O2xsIG5lZWQgdG8gcmVtZW1iZXIgdGhhdCB0aGlzIGNvZGUgaXMgbG9jYXRlZCBpbiBgYXJjaC94ODYva3ZtL3ZteC92bXguY2AuIE9mIGNvdXJzZSwgdGhpcyBtZWFucyB0aGUgb3ZlcmFsbCBwYXRjaCBkZXBlbmRzIG9uIGJvdGggYENPTkZJR19LVk1fSU5URUxgIChmb3IgdGhlIFZNWCBzaWRlKSBhbmQgYENPTkZJR19LVk1fQU1EYCAoZm9yIHRoZSBTVk0gc2lkZSkuIFNvLCB0aGUgYnVpbGQgY29uZmlndXJhdGlvbiBpbXBsaWNhdGlvbnMgYXJlIHByZXR0eSBicm9hZC4KCkFscmlnaHQsIGxldCYjMzk7cyB0YWtlIGEgbG9vayBhdCBgX192bXhfaGFuZGxlX2V4aXRgIGRpcmVjdGx5OyBJJiMzOTtsbCBuZWVkIGEgYmV0dGVyIHVuZGVyc3RhbmRpbmcgb2YgKmhvdyogaXQmIzM5O3MgaW50ZXJhY3Rpbmcgd2l0aCB0aGUgU01NIGV4aXQgcHJvY2VzcyB0byB1bmRlcnN0YW5kIHRoZSBmdWxsIHNjb3BlIG9mIHRoaXMgY2hhbmdlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yMSAxOToyNjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtfX3ZteF9oYW5kbGVfZXhpdCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2FyY2gveDg2L2t2bS92bXgvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2FyY2gveDg2L2t2bS92bXgvdm14LmM9NjQ5MT12b2lkIGR1bXBfdm1jcyhzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXG4tLVxuYXJjaC94ODYva3ZtL3ZteC92bXguYy02Njk1LSAqL1xuYXJjaC94ODYva3ZtL3ZteC92bXguYzo2Njk2OnN0YXRpYyBpbnQgX192bXhfaGFuZGxlX2V4aXQoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCBmYXN0cGF0aF90IGV4aXRfZmFzdHBhdGgpXG5hcmNoL3g4Ni9rdm0vdm14L3ZteC5jLTY2OTcte1xuLS1cbmFyY2gveDg2L2t2bS92bXgvdm14LmM9Njg1Nj1pbnQgdm14X2hhbmRsZV9leGl0KHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgZmFzdHBhdGhfdCBleGl0X2Zhc3RwYXRoKVxuYXJjaC94ODYva3ZtL3ZteC92bXguYy02ODU3LXtcbmFyY2gveDg2L2t2bS92bXgvdm14LmM6Njg1ODpcdGludCByZXQgPSBfX3ZteF9oYW5kbGVfZXhpdCh2Y3B1LCBleGl0X2Zhc3RwYXRoKTtcbmFyY2gveDg2L2t2bS92bXgvdm14LmMtNjg1OS1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjEgMTk6MjY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTEzMjYKCQkJCQkJCW91dHB1dDogMzkKCQkJCQkJCXRob3VnaHRzOiAxMzQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqRm9jdXNpbmcgb24gdGhlIFNNTS9OZXN0ZWQgVmlydHVhbGl6YXRpb24gQnVnKioKCk9rYXksIHNvIHRoZSBpbnZlc3RpZ2F0aW9uIGNvbnRpbnVlcy4gR2l2ZW4gdGhhdCB0aGlzIGJ1ZyBhcHBlYXJzIHRvIGJlIHJlbGF0ZWQgdG8gbmVzdGVkIHZpcnR1YWxpemF0aW9uIGFuZCBpbnRlcmFjdGlvbnMgd2l0aCBTeXN0ZW0gTWFuYWdlbWVudCBNb2RlIChTTU0pLCBJJiMzOTttIGdvaW5nIHRvIHNoaWZ0IG15IGZvY3VzIG9udG8gYSBmZXcga2V5IGZ1bmN0aW9ucy4gTXkgaW5pdGlhbCBpbnN0aW5jdCBpcyB0byBob25lIGluIG9uIGBzdm1fbGVhdmVfc21tYCwgYHZteF9sZWF2ZV9zbW1gLCBhbmQgYF9fdm14X2hhbmRsZV9leGl0YC4gSSBrbm93IHRoYXQgYF9fdm14X2hhbmRsZV9leGl0YCBpcyBhIGhpZ2gtZnJlcXVlbmN5IGZ1bmN0aW9uLCBhIGhvdCBwYXRoIGlmIHlvdSB3aWxsLCBmb3IgVk0gZXhpdHMgaW4gdGhlIFZNWCB3b3JsZCwgYnV0IGJlY2F1c2UgdGhlIGNvbnRleHQgcG9pbnRzIHNwZWNpZmljYWxseSB0byBuZXN0ZWQgdmlydHVhbGl6YXRpb24gYW5kIFNNTSBpbnRlcmFjdGlvbiwgSSBuZWVkIHRvIGxvb2sgY2xvc2VyIGF0IGBzdm1fbGVhdmVfc21tYCBhbmQgYHZteF9sZWF2ZV9zbW1gLiBJJiMzOTtsbCBhbHNvIGJyaW5nIHRoZSBuZXN0ZWQgdmlydHVhbGl6YXRpb24gY29tcG9uZW50cyBpbnRvIHBsYXk7IGxvb2tpbmcgc3BlY2lmaWNhbGx5IGF0IGNhbGxzIGxpa2UgYG5lc3RlZF92bXhfcnVuYCBhbmQgYG5lc3RlZF9zdm1fdm1ydW5gLiBJIHNob3VsZCBzdGFydCBieSBjaGVja2luZyB0aGUgaW1wbGVtZW50YXRpb25zIG9mIGBzdm1fbGVhdmVfc21tYCBhbmQgYHZteF9sZWF2ZV9zbW1gLiBMZXQmIzM5O3MgZGlnIGluLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yMSAxOToyNjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDt2bXhfbGVhdmVfc21tJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7YXJjaC94ODYva3ZtL3ZteC8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7YXJjaC94ODYva3ZtL3ZteC9tYWluLmM9MjM1PXN0YXRpYyBpbnQgdnRfbGVhdmVfc21tKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgY29uc3QgdW5pb24ga3ZtX3NtcmFtICpzbXJhbSlcbi0tXG5hcmNoL3g4Ni9rdm0vdm14L21haW4uYy0yMzktXG5hcmNoL3g4Ni9rdm0vdm14L21haW4uYzoyNDA6XHRyZXR1cm4gdm14X2xlYXZlX3NtbSh2Y3B1LCBzbXJhbSk7XG5hcmNoL3g4Ni9rdm0vdm14L21haW4uYy0yNDEtfVxuLS1cbmFyY2gveDg2L2t2bS92bXgvdm14LmM9ODQwMD1pbnQgdm14X2VudGVyX3NtbShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHVuaW9uIGt2bV9zbXJhbSAqc21yYW0pXG4tLVxuYXJjaC94ODYva3ZtL3ZteC92bXguYy04NDIwLVxuYXJjaC94ODYva3ZtL3ZteC92bXguYzo4NDIxOmludCB2bXhfbGVhdmVfc21tKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgY29uc3QgdW5pb24ga3ZtX3NtcmFtICpzbXJhbSlcbmFyY2gveDg2L2t2bS92bXgvdm14LmMtODQyMi17XG4tLVxuYXJjaC94ODYva3ZtL3ZteC94ODZfb3BzLmg9Mzc9aW50IHZteF9lbnRlcl9zbW0oc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCB1bmlvbiBrdm1fc21yYW0gKnNtcmFtKTtcbmFyY2gveDg2L2t2bS92bXgveDg2X29wcy5oOjM4OmludCB2bXhfbGVhdmVfc21tKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgY29uc3QgdW5pb24ga3ZtX3NtcmFtICpzbXJhbSk7XG5hcmNoL3g4Ni9rdm0vdm14L3g4Nl9vcHMuaC0zOS12b2lkIHZteF9lbmFibGVfc21pX3dpbmRvdyhzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yMSAxOToyNjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMjE4MwoJCQkJCQkJb3V0cHV0OiAzMgoJCQkJCQkJdGhvdWdodHM6IDI0MAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBBbmFseXNpcyBvZiB0aGUgS1ZNIFBhdGNoKioKCk9rYXksIHNvIEkmIzM5O20gZGl2aW5nIGludG8gdGhpcyBLVk0gcGF0Y2gsIGFuZCB0aGUgY29yZSBvZiBpdCBzZWVtcyB0byBiZSBjZW50ZXJlZCBhcm91bmQgYHN2bV9sZWF2ZV9zbW1gIGFuZCBgdm14X2xlYXZlX3NtbWAuIFRob3NlIGFyZSBkZWZpbml0ZWx5IHRoZSBwcmltYXJ5IGZvY3VzLCBzbyBJJiMzOTtsbCBiZSBzdXJlIHRvIGtlZXAgdGhlbSBpbiBtaW5kLiBJIGRpZCBub3RlIHRoYXQgYF9fdm14X2hhbmRsZV9leGl0YCBpcyBhbHNvIGluY2x1ZGVkLCBhbmQgd2hpbGUgdGhhdCYjMzk7cyBhIGhvdCBwYXRoLCB0aGlzIHBhdGNoICpzcGVjaWZpY2FsbHkqIG1vZGlmaWVzIHRob3NlIGZ1bmN0aW9ucywgYWxvbmcgd2l0aCBgc3ZtX2xlYXZlX3NtbWAgYW5kIGB2bXhfbGVhdmVfc21tYCwgc28gSSB3aWxsIGluY2x1ZGUgYWxsIG9mIHRoZW0uCgpOb3csIGxldCYjMzk7cyBsb29rIGF0IHRoZSBuZWNlc3NhcnkgY29uZmlndXJhdGlvbnMuIEkmIzM5O20gZ29pbmcgdG8gbmVlZCB0byBlbmFibGUgYEtWTWAsIGBLVk1fSU5URUxgLCBhbmQgYEtWTV9BTURgLCBvYnZpb3VzbHkuIEFuZCBzaW5jZSB0aGlzIHNlZW1zIHRvIGJlIHRvdWNoaW5nIFNNTSwgYEtWTV9TTU1gIGlzIGxpa2VseSBhbHNvIGNydWNpYWwuIExldCBtZSBqdXN0IGNvbmZpcm0gdGhhdOKApiBZZXAsIGBjb25maWcgS1ZNX1NNTWAgbG9va3MgcmlnaHQuIEdvb2QuCgpIbW0sIHNvbWV0aGluZyYjMzk7cyBqdW1wZWQgb3V0IGF0IG1lLiBUaGUgcGF0Y2ggaXMgYWxzbyBjaGFuZ2luZyBgdmNwdS0mZ3Q7YXJjaC5uZXN0ZWRfcnVuX3BlbmRpbmdgIHRvIGBLVk1fTkVTVEVEX1JVTl9QRU5ESU5HX1VOVFJVU1RFRGAuIFRoYXQmIzM5O3MgYW4gaW50cmlndWluZyBjaGFuZ2UsIGFuZCBpdCAqc2NyZWFtcyogbmVzdGVkIHZpcnR1YWxpemF0aW9uLiBJIG5lZWQgdG8gbWFrZSBzdXJlIEkgdW5kZXJzdGFuZCB0aGUgY29udGV4dC4gTGV0IG1lIHF1aWNrbHkgc2NhbiBgYXJjaC94ODYva3ZtL0tjb25maWdgIHRvIHNlZSBpZiB0aGVyZSBhcmUgYW55IHJlbGF0ZWQgbmVzdGVkIHZpcnR1YWxpemF0aW9uIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyB0aGF0IEkmIzM5O20gbWlzc2luZy4gR290IHRvIGhhdmUgYSBmdWxsIHVuZGVyc3RhbmRpbmcgdG8gZW5zdXJlIHRoaXMgcGF0Y2ggaXMgc291bmQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzIxIDE5OjI2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O25lc3RlZCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2FyY2gveDg2L2t2bS9LY29uZmlnJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2FyY2gveDg2L2t2bS9LY29uZmlnPTEwNz1jb25maWcgS1ZNX0lOVEVMX1BST1ZFX1ZFXG4tLVxuYXJjaC94ODYva3ZtL0tjb25maWctMTE2LSAgICAgICAgICBOb3RlOiBzb21lIENQVXMgYXBwZWFyIHRvIGdlbmVyYXRlIHNwdXJpb3VzIEVQVCBWaW9sYXRpb25zICNWRXNcbmFyY2gveDg2L2t2bS9LY29uZmlnOjExNzogICAgICAgICAgdGhhdCB0cmlnZ2VyIEtWTSYjMzk7cyBXQVJOLCBpbiBwYXJ0aWN1bGFyIHdpdGggZXB0YWQ9MCBhbmQvb3IgbmVzdGVkXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0xMTgtICAgICAgICAgIHZpcnR1YWxpemF0aW9uLlxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE3LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yMSAxOToyNjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMjkyNQoJCQkJCQkJb3V0cHV0OiAxOTEKCQkJCQkJCXRob3VnaHRzOiAyNTUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQW5hbHlzaXMgb2YgdGhpcyBLVk0gTmVzdGVkIFZpcnR1YWxpemF0aW9uIENoYW5nZSoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBhbmQgbXkgaW5pdGlhbCB0aG91Z2h0IGlzLCAmIzM0O0FoLCByaWdodCwgbmVzdGVkIHZpcnR1YWxpemF0aW9uIGluIEtWTS4mIzM0OyBJIGtub3cgdGhlIHVzdWFsIHN1c3BlY3QgZm9yIGVuYWJsaW5nIHRoYXQgaXMgc2V0dGluZyBgbmVzdGVkPTFgIGFzIGEgbW9kdWxlIHBhcmFtZXRlciBmb3IgZWl0aGVyIGBrdm0taW50ZWxgIG9yIGBrdm0tYW1kYC4gSSBkb24mIzM5O3QgcmVjYWxsIHNlZWluZyBhIHNwZWNpZmljIEtjb25maWcgb3B0aW9uIGRlZGljYXRlZCB0byBuZXN0ZWQgdmlydHVhbGl6YXRpb24gZm9yIHg4NiBLVk0uIEkgc2hvdWxkIGRvdWJsZS1jaGVjayBpZiB0aGVyZSBhcmUgYW55IG90aGVyIGNvbmZpZ3VyYXRpb24gZGVwZW5kZW5jaWVzIGJleW9uZCB0aGUgb2J2aW91cy4KClJpZ2h0LCBJIG5lZWQgYEtWTV9TTU1gIGVuYWJsZWQuIFRoYXQgc2VlbXMgY3JpdGljYWwgaGVyZS4KClNvLCBqdXN0IHRvIGJlIGV4cGxpY2l0IGFib3V0IHRoZSBjb25maWd1cmF0aW9uIHJlcXVpcmVtZW50cywgSSYjMzk7bGwgam90IGRvd24gdGhlIHJlcXVpcmVkIEVuYWJsZUNvbmZpZ3M6IGBLVk1gLCBgS1ZNX0lOVEVMYCwgYEtWTV9BTURgLCBhbmQgY3J1Y2lhbGx5LCBgS1ZNX1NNTWAuCgpUaGVuLCBmcm9tIGEgc3ltYm9sIHBlcnNwZWN0aXZlLCBJJiMzOTttIGdvaW5nIHRvIGtlZXAgYW4gZXllIG9uIGBzdm1fbGVhdmVfc21tYCBhbmQgYHZteF9sZWF2ZV9zbW1gLiBJIHN1c3BlY3QgdGhlaXIgaW50ZXJhY3Rpb24gd2l0aCBuZXN0ZWQgdmlydHVhbGl6YXRpb24gaXMgdGhlIGNydXggb2YgdGhlIGlzc3VlLgoKTm93LCBkaWdnaW5nIGludG8gdGhlIHJlYXNvbmluZyBiZWhpbmQgdGhlIGNoYW5nZXMsIGl0IHNlZW1zIHRoaXMgcGF0Y2ggaXMgYWx0ZXJpbmcgaG93IEtWTSBoYW5kbGVzIG5lc3RlZCB2aXJ0dWFsaXphdGlvbiB3aGVuIHRyYW5zaXRpb25pbmcgaW4gYW5kIG91dCBvZiBTeXN0ZW0gTWFuYWdlbWVudCBNb2RlIChTTU0pLiBTcGVjaWZpY2FsbHksIGl0JiMzOTtzIGFib3V0IGNoYW5naW5nIHRoZSBgbmVzdGVkX3J1bl9wZW5kaW5nYCBzdGF0ZSB0byBgS1ZNX05FU1RFRF9SVU5fUEVORElOR19VTlRSVVNURURgIHdoZW4gZXhpdGluZyBTTU0gaW4gYm90aCBTVk0gKEFNRCkgYW5kIFZNWCAoSW50ZWwpIGVudmlyb25tZW50cy4gUGx1cywgdGhlcmUmIzM5O3MgYSBtb2RpZmljYXRpb24gdG8gdGhlIFZNWCBleGl0IGhhbmRsZXIgdG8gc3BlY2lmaWNhbGx5IGNoZWNrIGZvciB0aGUgYEtWTV9ORVNURURfUlVOX1BFTkRJTkdgIHN0YXRlLiBUaGlzIG1ha2VzIHRoZSBjb2RlIHBvdGVudGlhbGx5IHZ1bG5lcmFibGUuIEl0JiMzOTtzIGEgZnVuY3Rpb25hbCBjaGFuZ2Ugd2l0aGluIHRoZSBjb3JlIEtWTSBsb2dpYywgaW1wYWN0aW5nIGJvdGggbmVzdGVkIHZpcnR1YWxpemF0aW9uIGFuZCBTTU0gaW50ZXJhY3Rpb24sIHNvIHRoaXMgaXMgZGVmaW5pdGVseSB3b3J0aCBzb21lIGZ1enppbmcgZWZmb3J0LgoKQWxyaWdodCwgdGltZSB0byBsb2cgdGhlc2UgcmVzdWx0cyEKCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjEgMTk6MjY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0tWTSYjMzQ7LAogICAgJiMzNDtLVk1fSU5URUwmIzM0OywKICAgICYjMzQ7S1ZNX0FNRCYjMzQ7LAogICAgJiMzNDtLVk1fU01NJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7c3ZtX2xlYXZlX3NtbSYjMzQ7LAogICAgJiMzNDt2bXhfbGVhdmVfc21tJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIEtWTSYjMzk7cyBoYW5kbGluZyBvZiBuZXN0ZWQgdmlydHVhbGl6YXRpb24gc3RhdGUgZHVyaW5nIFN5c3RlbSBNYW5hZ2VtZW50IE1vZGUgKFNNTSkgdHJhbnNpdGlvbnMuIFNwZWNpZmljYWxseSwgaXQgY2hhbmdlcyB0aGUgYG5lc3RlZF9ydW5fcGVuZGluZ2Agc3RhdGUgdG8gYEtWTV9ORVNURURfUlVOX1BFTkRJTkdfVU5UUlVTVEVEYCB3aGVuIGxlYXZpbmcgU01NIGluIGJvdGggU1ZNIGFuZCBWTVgsIGFuZCB1cGRhdGVzIHRoZSBleGl0IGhhbmRsZXIgaW4gVk1YIHRvIGNoZWNrIGZvciB0aGUgZXhhY3QgYEtWTV9ORVNURURfUlVOX1BFTkRJTkdgIHN0YXRlLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIGNvcmUgS1ZNIGxvZ2ljIHRoYXQgYWZmZWN0cyBuZXN0ZWQgdmlydHVhbGl6YXRpb24gYW5kIFNNTSwgbWFraW5nIGl0IHdvcnRoIGZ1enppbmcuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0tWTSYjMzQ7LAogICAgJiMzNDtLVk1fSU5URUwmIzM0OywKICAgICYjMzQ7S1ZNX0FNRCYjMzQ7LAogICAgJiMzNDtLVk1fU01NJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7c3ZtX2xlYXZlX3NtbSYjMzQ7LAogICAgJiMzNDt2bXhfbGVhdmVfc21tJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIEtWTSYjMzk7cyBoYW5kbGluZyBvZiBuZXN0ZWQgdmlydHVhbGl6YXRpb24gc3RhdGUgZHVyaW5nIFN5c3RlbSBNYW5hZ2VtZW50IE1vZGUgKFNNTSkgdHJhbnNpdGlvbnMuIFNwZWNpZmljYWxseSwgaXQgY2hhbmdlcyB0aGUgYG5lc3RlZF9ydW5fcGVuZGluZ2Agc3RhdGUgdG8gYEtWTV9ORVNURURfUlVOX1BFTkRJTkdfVU5UUlVTVEVEYCB3aGVuIGxlYXZpbmcgU01NIGluIGJvdGggU1ZNIGFuZCBWTVgsIGFuZCB1cGRhdGVzIHRoZSBleGl0IGhhbmRsZXIgaW4gVk1YIHRvIGNoZWNrIGZvciB0aGUgZXhhY3QgYEtWTV9ORVNURURfUlVOX1BFTkRJTkdgIHN0YXRlLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIGNvcmUgS1ZNIGxvZ2ljIHRoYXQgYWZmZWN0cyBuZXN0ZWQgdmlydHVhbGl6YXRpb24gYW5kIFNNTSwgbWFraW5nIGl0IHdvcnRoIGZ1enppbmcuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wNy0yMVQxOToyNToxMS42OTQ3NjkyMTdaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo5MDI1NjI3MDA0OSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJLVk1cIixcbiAgICBcIktWTV9JTlRFTFwiLFxuICAgIFwiS1ZNX0FNRFwiLFxuICAgIFwiS1ZNX1NNTVwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcInN2bV9sZWF2ZV9zbW1cIixcbiAgICBcInZteF9sZWF2ZV9zbW1cIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyBLVk0ncyBoYW5kbGluZyBvZiBuZXN0ZWQgdmlydHVhbGl6YXRpb24gc3RhdGUgZHVyaW5nIFN5c3RlbSBNYW5hZ2VtZW50IE1vZGUgKFNNTSkgdHJhbnNpdGlvbnMuIFNwZWNpZmljYWxseSwgaXQgY2hhbmdlcyB0aGUgYG5lc3RlZF9ydW5fcGVuZGluZ2Agc3RhdGUgdG8gYEtWTV9ORVNURURfUlVOX1BFTkRJTkdfVU5UUlVTVEVEYCB3aGVuIGxlYXZpbmcgU01NIGluIGJvdGggU1ZNIGFuZCBWTVgsIGFuZCB1cGRhdGVzIHRoZSBleGl0IGhhbmRsZXIgaW4gVk1YIHRvIGNoZWNrIGZvciB0aGUgZXhhY3QgYEtWTV9ORVNURURfUlVOX1BFTkRJTkdgIHN0YXRlLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIGNvcmUgS1ZNIGxvZ2ljIHRoYXQgYWZmZWN0cyBuZXN0ZWQgdmlydHVhbGl6YXRpb24gYW5kIFNNTSwgbWFraW5nIGl0IHdvcnRoIGZ1enppbmcuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTIxVDE5OjI1OjExLjY5NDc4MDEyN1oiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6ODkzODE4ODI5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgNTAwZjYyMmNmMmZhNmIyMzI5MjE0Y2U2ZmE5ZTlmMTBiMmRmYzYwNFxcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgVHVlIEp1bCAyMSAxOToyNTowOCAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9hcmNoL3g4Ni9rdm0vc3ZtL3N2bS5jIGIvYXJjaC94ODYva3ZtL3N2bS9zdm0uY1xcbmluZGV4IDRkMmJhY2QwMGVjNGY1Li5mNTQ3NTdiZDgzODIxNSAxMDA2NDRcXG4tLS0gYS9hcmNoL3g4Ni9rdm0vc3ZtL3N2bS5jXFxuKysrIGIvYXJjaC94ODYva3ZtL3N2bS9zdm0uY1xcbkBAIC01MDk2LDcgKzUwOTYsNyBAQCBzdGF0aWMgaW50IHN2bV9sZWF2ZV9zbW0oc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCBjb25zdCB1bmlvbiBrdm1fc21yYW0gKnNtcmFtKVxcbiBcXHRcXHRnb3RvIHVubWFwX3NhdmU7XFxuIFxcbiBcXHRyZXQgPSAwO1xcbi1cXHR2Y3B1LVxcdTAwM2VhcmNoLm5lc3RlZF9ydW5fcGVuZGluZyA9IEtWTV9ORVNURURfUlVOX1BFTkRJTkc7XFxuK1xcdHZjcHUtXFx1MDAzZWFyY2gubmVzdGVkX3J1bl9wZW5kaW5nID0gS1ZNX05FU1RFRF9SVU5fUEVORElOR19VTlRSVVNURUQ7XFxuIFxcbiB1bm1hcF9zYXZlOlxcbiBcXHRrdm1fdmNwdV91bm1hcCh2Y3B1LCBcXHUwMDI2bWFwX3NhdmUpO1xcbmRpZmYgLS1naXQgYS9hcmNoL3g4Ni9rdm0vdm14L3ZteC5jIGIvYXJjaC94ODYva3ZtL3ZteC92bXguY1xcbmluZGV4IGNjNzVmZWVjMDVkYWE0Li4zMzMwNzJjYzliY2U0YyAxMDA2NDRcXG4tLS0gYS9hcmNoL3g4Ni9rdm0vdm14L3ZteC5jXFxuKysrIGIvYXJjaC94ODYva3ZtL3ZteC92bXguY1xcbkBAIC02NzIwLDcgKzY3MjAsOCBAQCBzdGF0aWMgaW50IF9fdm14X2hhbmRsZV9leGl0KHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgZmFzdHBhdGhfdCBleGl0X2Zhc3RwYXRoKVxcbiBcXHQgKiBpbnZhbGlkIGd1ZXN0IHN0YXRlIHNob3VsZCBuZXZlciBoYXBwZW4gYXMgdGhhdCBtZWFucyBLVk0ga25vd2luZ2x5XFxuIFxcdCAqIGFsbG93ZWQgYSBuZXN0ZWQgVk0tRW50ZXIgd2l0aCBhbiBpbnZhbGlkIHZtY3MxMi4gIE1vcmUgYmVsb3cuXFxuIFxcdCAqL1xcbi1cXHRpZiAoS1ZNX0JVR19PTih2Y3B1LVxcdTAwM2VhcmNoLm5lc3RlZF9ydW5fcGVuZGluZywgdmNwdS1cXHUwMDNla3ZtKSlcXG4rXFx0aWYgKEtWTV9CVUdfT04odmNwdS1cXHUwMDNlYXJjaC5uZXN0ZWRfcnVuX3BlbmRpbmcgPT0gS1ZNX05FU1RFRF9SVU5fUEVORElORyxcXG4rXFx0XFx0ICAgICAgIHZjcHUtXFx1MDAzZWt2bSkpXFxuIFxcdFxcdHJldHVybiAtRUlPO1xcbiBcXG4gXFx0aWYgKGlzX2d1ZXN0X21vZGUodmNwdSkpIHtcXG5AQCAtODQzNiw3ICs4NDM3LDcgQEAgaW50IHZteF9sZWF2ZV9zbW0oc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCBjb25zdCB1bmlvbiBrdm1fc21yYW0gKnNtcmFtKVxcbiBcXHRcXHRpZiAocmV0ICE9IE5WTVhfVk1FTlRSWV9TVUNDRVNTKVxcbiBcXHRcXHRcXHRyZXR1cm4gMTtcXG4gXFxuLVxcdFxcdHZjcHUtXFx1MDAzZWFyY2gubmVzdGVkX3J1bl9wZW5kaW5nID0gS1ZNX05FU1RFRF9SVU5fUEVORElORztcXG4rXFx0XFx0dmNwdS1cXHUwMDNlYXJjaC5uZXN0ZWRfcnVuX3BlbmRpbmcgPSBLVk1fTkVTVEVEX1JVTl9QRU5ESU5HX1VOVFJVU1RFRDtcXG4gXFx0XFx0dm14LVxcdTAwM2VuZXN0ZWQuc21tLmd1ZXN0X21vZGUgPSBmYWxzZTtcXG4gXFx0fVxcbiBcXHRyZXR1cm4gMDtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjFUMTk6MjU6MTIuNTg5ODcyMTE1WiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiYmVzdC1leHBlbnNpdmUiLCJEdXJhdGlvbiI6ODkzNjExNTA5ODEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiS1ZNXCIsXG4gICAgXCJLVk1fSU5URUxcIixcbiAgICBcIktWTV9BTURcIixcbiAgICBcIktWTV9TTU1cIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJzdm1fbGVhdmVfc21tXCIsXG4gICAgXCJ2bXhfbGVhdmVfc21tXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgS1ZNJ3MgaGFuZGxpbmcgb2YgbmVzdGVkIHZpcnR1YWxpemF0aW9uIHN0YXRlIGR1cmluZyBTeXN0ZW0gTWFuYWdlbWVudCBNb2RlIChTTU0pIHRyYW5zaXRpb25zLiBTcGVjaWZpY2FsbHksIGl0IGNoYW5nZXMgdGhlIGBuZXN0ZWRfcnVuX3BlbmRpbmdgIHN0YXRlIHRvIGBLVk1fTkVTVEVEX1JVTl9QRU5ESU5HX1VOVFJVU1RFRGAgd2hlbiBsZWF2aW5nIFNNTSBpbiBib3RoIFNWTSBhbmQgVk1YLCBhbmQgdXBkYXRlcyB0aGUgZXhpdCBoYW5kbGVyIGluIFZNWCB0byBjaGVjayBmb3IgdGhlIGV4YWN0IGBLVk1fTkVTVEVEX1JVTl9QRU5ESU5HYCBzdGF0ZS4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBjb3JlIEtWTSBsb2dpYyB0aGF0IGFmZmVjdHMgbmVzdGVkIHZpcnR1YWxpemF0aW9uIGFuZCBTTU0sIG1ha2luZyBpdCB3b3J0aCBmdXp6aW5nLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lXG5pZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5XG51c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLlxuXG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOlxuLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLlxuLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy5cbi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LlxuLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsXG5ldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG5cbklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2hcbnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLlxuXG5XaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzpcbjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuXG4gICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy5cbjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLlxuICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuICAgRG8gbm90IGxpc3QgdG9vIGdlbmVyaWMgY29uZmlncyAod2UgYWxyZWFkeSBoYXZlIHRoZW0gZW5hYmxlZCkuIE9ubHkgbGlzdCB0aG9zZSB0aGF0XG4gICBzcGVjaWZpY2FsbHkgY292ZXIgdGhlIG1vZGlmaWVkIGNvZGUuIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncyBvdXRwdXQgYXJyYXksXG4gICBhbmQgRE8gTk9UIGFkZCBhICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IDUwMGY2MjJjZjJmYTZiMjMyOTIxNGNlNmZhOWU5ZjEwYjJkZmM2MDRcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgVHVlIEp1bCAyMSAxOToyNTowOCAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2FyY2gveDg2L2t2bS9zdm0vc3ZtLmMgYi9hcmNoL3g4Ni9rdm0vc3ZtL3N2bS5jXG5pbmRleCA0ZDJiYWNkMDBlYzRmNS4uZjU0NzU3YmQ4MzgyMTUgMTAwNjQ0XG4tLS0gYS9hcmNoL3g4Ni9rdm0vc3ZtL3N2bS5jXG4rKysgYi9hcmNoL3g4Ni9rdm0vc3ZtL3N2bS5jXG5AQCAtNTA5Niw3ICs1MDk2LDcgQEAgc3RhdGljIGludCBzdm1fbGVhdmVfc21tKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgY29uc3QgdW5pb24ga3ZtX3NtcmFtICpzbXJhbSlcbiBcdFx0Z290byB1bm1hcF9zYXZlO1xuIFxuIFx0cmV0ID0gMDtcbi1cdHZjcHUtXHUwMDNlYXJjaC5uZXN0ZWRfcnVuX3BlbmRpbmcgPSBLVk1fTkVTVEVEX1JVTl9QRU5ESU5HO1xuK1x0dmNwdS1cdTAwM2VhcmNoLm5lc3RlZF9ydW5fcGVuZGluZyA9IEtWTV9ORVNURURfUlVOX1BFTkRJTkdfVU5UUlVTVEVEO1xuIFxuIHVubWFwX3NhdmU6XG4gXHRrdm1fdmNwdV91bm1hcCh2Y3B1LCBcdTAwMjZtYXBfc2F2ZSk7XG5kaWZmIC0tZ2l0IGEvYXJjaC94ODYva3ZtL3ZteC92bXguYyBiL2FyY2gveDg2L2t2bS92bXgvdm14LmNcbmluZGV4IGNjNzVmZWVjMDVkYWE0Li4zMzMwNzJjYzliY2U0YyAxMDA2NDRcbi0tLSBhL2FyY2gveDg2L2t2bS92bXgvdm14LmNcbisrKyBiL2FyY2gveDg2L2t2bS92bXgvdm14LmNcbkBAIC02NzIwLDcgKzY3MjAsOCBAQCBzdGF0aWMgaW50IF9fdm14X2hhbmRsZV9leGl0KHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgZmFzdHBhdGhfdCBleGl0X2Zhc3RwYXRoKVxuIFx0ICogaW52YWxpZCBndWVzdCBzdGF0ZSBzaG91bGQgbmV2ZXIgaGFwcGVuIGFzIHRoYXQgbWVhbnMgS1ZNIGtub3dpbmdseVxuIFx0ICogYWxsb3dlZCBhIG5lc3RlZCBWTS1FbnRlciB3aXRoIGFuIGludmFsaWQgdm1jczEyLiAgTW9yZSBiZWxvdy5cbiBcdCAqL1xuLVx0aWYgKEtWTV9CVUdfT04odmNwdS1cdTAwM2VhcmNoLm5lc3RlZF9ydW5fcGVuZGluZywgdmNwdS1cdTAwM2Vrdm0pKVxuK1x0aWYgKEtWTV9CVUdfT04odmNwdS1cdTAwM2VhcmNoLm5lc3RlZF9ydW5fcGVuZGluZyA9PSBLVk1fTkVTVEVEX1JVTl9QRU5ESU5HLFxuK1x0XHQgICAgICAgdmNwdS1cdTAwM2Vrdm0pKVxuIFx0XHRyZXR1cm4gLUVJTztcbiBcbiBcdGlmIChpc19ndWVzdF9tb2RlKHZjcHUpKSB7XG5AQCAtODQzNiw3ICs4NDM3LDcgQEAgaW50IHZteF9sZWF2ZV9zbW0oc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCBjb25zdCB1bmlvbiBrdm1fc21yYW0gKnNtcmFtKVxuIFx0XHRpZiAocmV0ICE9IE5WTVhfVk1FTlRSWV9TVUNDRVNTKVxuIFx0XHRcdHJldHVybiAxO1xuIFxuLVx0XHR2Y3B1LVx1MDAzZWFyY2gubmVzdGVkX3J1bl9wZW5kaW5nID0gS1ZNX05FU1RFRF9SVU5fUEVORElORztcbitcdFx0dmNwdS1cdTAwM2VhcmNoLm5lc3RlZF9ydW5fcGVuZGluZyA9IEtWTV9ORVNURURfUlVOX1BFTkRJTkdfVU5UUlVTVEVEO1xuIFx0XHR2bXgtXHUwMDNlbmVzdGVkLnNtbS5ndWVzdF9tb2RlID0gZmFsc2U7XG4gXHR9XG4gXHRyZXR1cm4gMDtcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTIxVDE5OjI1OjEyLjU4OTg3NTMyNVoiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjUwOTA2NzU2NzUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIGEgS1ZNIFBhdGNoIGZvciBOZXN0ZWQgVmlydHVhbGl6YXRpb24qKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIEtWTSBwYXRjaCB0aGF0J3MgdHdlYWtpbmcgdGhlIHg4NiBjb2RlLCBzcGVjaWZpY2FsbHkgdGhlIGBzdm1fbGVhdmVfc21tYCBhbmQgYHZteF9sZWF2ZV9zbW1gIGZ1bmN0aW9ucy4gTXkgaW5pdGlhbCBpbXByZXNzaW9uIGlzIHRoYXQgdGhpcyBpcyBsaWtlbHkgcmVsYXRlZCB0byBpbXByb3Zpbmcgb3IgaGFyZGVuaW5nIG5lc3RlZCB2aXJ0dWFsaXphdGlvbiBzdXBwb3J0LCBzcGVjaWZpY2FsbHkgYXJvdW5kIFN5c3RlbSBNYW5hZ2VtZW50IE1vZGUgKFNNTSkuIFRoZSBjb3JlIGNoYW5nZSBzZWVtcyB0byByZXZvbHZlIGFyb3VuZCBob3cgdGhlIGBuZXN0ZWRfcnVuX3BlbmRpbmdgIGZsYWcgaXMgc2V0IGFuZCBjaGVja2VkIHdpdGhpbiB0aGUgVkNQVSBhcmNoaXRlY3R1cmUuXG5cbkl0IGFwcGVhcnMgdGhlIG9yaWdpbmFsIGNvZGUgaW4gYm90aCBleGl0IGZ1bmN0aW9ucyBzZXQgYHZjcHUtXHUwMDNlYXJjaC5uZXN0ZWRfcnVuX3BlbmRpbmcgPSBLVk1fTkVTVEVEX1JVTl9QRU5ESU5HO2AuIFRoaXMgcGF0Y2ggaXMgY2hhbmdpbmcgdGhhdCB0byBgS1ZNX05FU1RFRF9SVU5fUEVORElOR19VTlRSVVNURURgLiBUaGUgaW1wbGljYXRpb25zIG9mIHRoaXMgbmV3IGZsYWcgd2FycmFudCBmdXJ0aGVyIGludmVzdGlnYXRpb24uIEknbGwgbmVlZCB0byBmaWd1cmUgb3V0IHdoYXQgc2VtYW50aWMgZGlmZmVyZW5jZSBleGlzdHMgYmV0d2VlbiB0aGVzZSB0d28gZmxhZ3MuXG5cbkZ1cnRoZXJtb3JlLCB0aGUgYF9fdm14X2hhbmRsZV9leGl0YCBmdW5jdGlvbiBpcyBiZWluZyBtb2RpZmllZCB0byBleHBsaWNpdGx5IGNoZWNrIGZvciBgdmNwdS1cdTAwM2VhcmNoLm5lc3RlZF9ydW5fcGVuZGluZyA9PSBLVk1fTkVTVEVEX1JVTl9QRU5ESU5HYCByYXRoZXIgdGhhbiBhIHNpbXBsZSBlcXVhbGl0eS4gVGhpcyBzdWdnZXN0cyB0aGF0IHRoZSBjb2RlIHBhdGggZm9yIGhhbmRsaW5nIG5lc3RlZCBleGl0cyBpcyBiZWluZyBtb3JlIGNhcmVmdWxseSBjb250cm9sbGVkLiBBIGNoYW5nZSBpbiB0aGUgY29uZGl0aW9uYWwgbGlrZSB0aGlzIGlzIGFuIGltbWVkaWF0ZSBpbmRpY2F0b3Igb2YgYSBwb3RlbnRpYWwgc2VjdXJpdHkgY29uY2Vybi4gSSdkIG5lZWQgdG8gY29uc2lkZXIgdGhlIHRocmVhdCBtb2RlbCB0byB1bmRlcnN0YW5kIGlmIHRoaXMgbWl0aWdhdGVzIGFuIGF0dGFjaywgb3IgZW5hYmxlcyBmdW5jdGlvbmFsaXR5LlxuXG5JJ2xsIG5lZWQgdG8gZGlnIGludG8gdGhlIGRlZmluaXRpb24gb2YgYm90aCBgS1ZNX05FU1RFRF9SVU5fUEVORElOR2AgYW5kIGBLVk1fTkVTVEVEX1JVTl9QRU5ESU5HX1VOVFJVU1RFRGAgdG8gZnVsbHkgZ3Jhc3AgdGhlIGludGVudCBvZiB0aGVzZSBjaGFuZ2VzLiBJJ2xsIGJlIGxvb2tpbmcgZm9yIHdoZXJlIHRoZXNlIGZsYWdzIGFyZSB1c2VkLCBhbmQgaG93IHRoZWlyIGRpc3RpbmN0IHZhbHVlcyBpbmZsdWVuY2UgdGhlIGNvbnRyb2wgZmxvdywgcGFydGljdWxhcmx5IHdpdGhpbiB0aGUgbmVzdGVkIHZpcnR1YWxpemF0aW9uIGNvbnRleHQuIE15IGh5cG90aGVzaXMgaXMgdGhhdCB0aGlzIHBhdGNoIG1pZ2h0IGJlIGludHJvZHVjaW5nIGEgc3RyaWN0ZXIgbGV2ZWwgb2Ygc2VjdXJpdHkgcmVnYXJkaW5nIG5lc3RlZCB2aXJ0dWFsaXphdGlvbiwgcGVyaGFwcyBieSBjbGFzc2lmeWluZyBuZXN0ZWQgVk1zIGFzIHVudHJ1c3RlZCwgcHJldmVudGluZyByZXNvdXJjZSBvdmVyLWNvbW1pdCwgb3IgcHJvdGVjdGluZyB0aGUgaHlwZXJ2aXNvciBmcm9tIG1hbGljaW91cyBjb2RlLiBIb3dldmVyLCB3aXRob3V0IGEgdGhvcm91Z2ggaW52ZXN0aWdhdGlvbiBvZiB0aGUgc3Vycm91bmRpbmcgY29kZSBhbmQgdGhlIHJlYXNvbmluZyBiZWhpbmQgdGhlc2UgY29uc3RhbnRzLCBJIGNhbiBvbmx5IG1ha2UgZWR1Y2F0ZWQgZ3Vlc3NlcyBhdCB0aGlzIHBvaW50LlxuXG5cbiIsIklucHV0VG9rZW5zIjoyMzkzLCJPdXRwdXRUb2tlbnMiOjM5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTc1LCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjFUMTk6MjU6MTcuNjgwNTU1OTRaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTExMzQ3MzA5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIktWTV9ORVNURURfUlVOX1BFTkRJTkdcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiYXJjaC94ODYva3ZtL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJhcmNoL3g4Ni9rdm0vc3ZtL25lc3RlZC5jPTExMTQ9aW50IG5lc3RlZF9zdm1fdm1ydW4oc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxcbi0tXFxuYXJjaC94ODYva3ZtL3N2bS9uZXN0ZWQuYy0xMTc3LVxcbmFyY2gveDg2L2t2bS9zdm0vbmVzdGVkLmM6MTE3ODpcXHR2Y3B1LVxcdTAwM2VhcmNoLm5lc3RlZF9ydW5fcGVuZGluZyA9IEtWTV9ORVNURURfUlVOX1BFTkRJTkc7XFxuYXJjaC94ODYva3ZtL3N2bS9uZXN0ZWQuYy0xMTc5LVxcbi0tXFxuYXJjaC94ODYva3ZtL3N2bS9uZXN0ZWQuYz0xOTUwPXN0YXRpYyBpbnQgc3ZtX3NldF9uZXN0ZWRfc3RhdGUoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LFxcbi0tXFxuYXJjaC94ODYva3ZtL3N2bS9uZXN0ZWQuYy0yMDY0LVxcdGlmIChrdm1fc3RhdGUtXFx1MDAzZWZsYWdzIFxcdTAwMjYgS1ZNX1NUQVRFX05FU1RFRF9SVU5fUEVORElORylcXG5hcmNoL3g4Ni9rdm0vc3ZtL25lc3RlZC5jOjIwNjU6XFx0XFx0dmNwdS1cXHUwMDNlYXJjaC5uZXN0ZWRfcnVuX3BlbmRpbmcgPSBLVk1fTkVTVEVEX1JVTl9QRU5ESU5HX1VOVFJVU1RFRDtcXG5hcmNoL3g4Ni9rdm0vc3ZtL25lc3RlZC5jLTIwNjYtXFx0ZWxzZVxcbi0tXFxuYXJjaC94ODYva3ZtL3N2bS9zdm0uYz01MDQzPXN0YXRpYyBpbnQgc3ZtX2xlYXZlX3NtbShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIGNvbnN0IHVuaW9uIGt2bV9zbXJhbSAqc21yYW0pXFxuLS1cXG5hcmNoL3g4Ni9rdm0vc3ZtL3N2bS5jLTUwOTgtXFx0cmV0ID0gMDtcXG5hcmNoL3g4Ni9rdm0vc3ZtL3N2bS5jOjUwOTk6XFx0dmNwdS1cXHUwMDNlYXJjaC5uZXN0ZWRfcnVuX3BlbmRpbmcgPSBLVk1fTkVTVEVEX1JVTl9QRU5ESU5HX1VOVFJVU1RFRDtcXG5hcmNoL3g4Ni9rdm0vc3ZtL3N2bS5jLTUxMDAtXFxuLS1cXG5hcmNoL3g4Ni9rdm0vdm14L25lc3RlZC5jPTM3ODg9c3RhdGljIGludCBuZXN0ZWRfdm14X3J1bihzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIGJvb2wgbGF1bmNoKVxcbi0tXFxuYXJjaC94ODYva3ZtL3ZteC9uZXN0ZWQuYy0zODY1LVxcdCAqL1xcbmFyY2gveDg2L2t2bS92bXgvbmVzdGVkLmM6Mzg2NjpcXHR2Y3B1LVxcdTAwM2VhcmNoLm5lc3RlZF9ydW5fcGVuZGluZyA9IEtWTV9ORVNURURfUlVOX1BFTkRJTkc7XFxuYXJjaC94ODYva3ZtL3ZteC9uZXN0ZWQuYy0zODY3LVxcdHZteC1cXHUwMDNlbmVzdGVkLmhhc19wcmVlbXB0aW9uX3RpbWVyX2RlYWRsaW5lID0gZmFsc2U7XFxuLS1cXG5hcmNoL3g4Ni9rdm0vdm14L25lc3RlZC5jPTY5MDI9c3RhdGljIGludCB2bXhfc2V0X25lc3RlZF9zdGF0ZShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsXFxuLS1cXG5hcmNoL3g4Ni9rdm0vdm14L25lc3RlZC5jLTcwMzItXFx0aWYgKGt2bV9zdGF0ZS1cXHUwMDNlZmxhZ3MgXFx1MDAyNiBLVk1fU1RBVEVfTkVTVEVEX1JVTl9QRU5ESU5HKVxcbmFyY2gveDg2L2t2bS92bXgvbmVzdGVkLmM6NzAzMzpcXHRcXHR2Y3B1LVxcdTAwM2VhcmNoLm5lc3RlZF9ydW5fcGVuZGluZyA9IEtWTV9ORVNURURfUlVOX1BFTkRJTkdfVU5UUlVTVEVEO1xcbmFyY2gveDg2L2t2bS92bXgvbmVzdGVkLmMtNzAzNC1cXHRlbHNlXFxuLS1cXG5hcmNoL3g4Ni9rdm0vdm14L3ZteC5jPTY2OTY9c3RhdGljIGludCBfX3ZteF9oYW5kbGVfZXhpdChzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIGZhc3RwYXRoX3QgZXhpdF9mYXN0cGF0aClcXG4tLVxcbmFyY2gveDg2L2t2bS92bXgvdm14LmMtNjcyMi1cXHQgKi9cXG5hcmNoL3g4Ni9rdm0vdm14L3ZteC5jOjY3MjM6XFx0aWYgKEtWTV9CVUdfT04odmNwdS1cXHUwMDNlYXJjaC5uZXN0ZWRfcnVuX3BlbmRpbmcgPT0gS1ZNX05FU1RFRF9SVU5fUEVORElORyxcXG5hcmNoL3g4Ni9rdm0vdm14L3ZteC5jLTY3MjQtXFx0XFx0ICAgICAgIHZjcHUtXFx1MDAzZWt2bSkpXFxuLS1cXG5hcmNoL3g4Ni9rdm0vdm14L3ZteC5jPTg0MjE9aW50IHZteF9sZWF2ZV9zbW0oc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCBjb25zdCB1bmlvbiBrdm1fc21yYW0gKnNtcmFtKVxcbi0tXFxuYXJjaC94ODYva3ZtL3ZteC92bXguYy04NDM5LVxcbmFyY2gveDg2L2t2bS92bXgvdm14LmM6ODQ0MDpcXHRcXHR2Y3B1LVxcdTAwM2VhcmNoLm5lc3RlZF9ydW5fcGVuZGluZyA9IEtWTV9ORVNURURfUlVOX1BFTkRJTkdfVU5UUlVTVEVEO1xcbmFyY2gveDg2L2t2bS92bXgvdm14LmMtODQ0MS1cXHRcXHR2bXgtXFx1MDAzZW5lc3RlZC5zbW0uZ3Vlc3RfbW9kZSA9IGZhbHNlO1xcbi0tXFxuYXJjaC94ODYva3ZtL3g4Ni5jPTExOTI3PXN0YXRpYyBpbnQga3ZtX3g4Nl92Y3B1X3ByZV9ydW4oc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxcbi0tXFxuYXJjaC94ODYva3ZtL3g4Ni5jLTExOTMyLVxcdCAqL1xcbmFyY2gveDg2L2t2bS94ODYuYzoxMTkzMzpcXHRpZiAodmNwdS1cXHUwMDNlYXJjaC5uZXN0ZWRfcnVuX3BlbmRpbmcgPT0gS1ZNX05FU1RFRF9SVU5fUEVORElORylcXG5hcmNoL3g4Ni9rdm0veDg2LmM6MTE5MzQ6XFx0XFx0dmNwdS1cXHUwMDNlYXJjaC5uZXN0ZWRfcnVuX3BlbmRpbmcgPSBLVk1fTkVTVEVEX1JVTl9QRU5ESU5HX1VOVFJVU1RFRDtcXG5hcmNoL3g4Ni9rdm0veDg2LmMtMTE5MzUtXFxuLS1cXG5hcmNoL3g4Ni9rdm0veDg2Lmg9MTk2PXN0YXRpYyBpbmxpbmUgdm9pZCBrdm1fd2Fybl9vbl9uZXN0ZWRfcnVuX3BlbmRpbmcoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxcbmFyY2gveDg2L2t2bS94ODYuaC0xOTcte1xcbmFyY2gveDg2L2t2bS94ODYuaDoxOTg6XFx0V0FSTl9PTl9PTkNFKHZjcHUtXFx1MDAzZWFyY2gubmVzdGVkX3J1bl9wZW5kaW5nID09IEtWTV9ORVNURURfUlVOX1BFTkRJTkcpO1xcbmFyY2gveDg2L2t2bS94ODYuaC0xOTktfVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yMVQxOToyNToxNy43OTE5MTI3MjhaIiwiU2VxIjo1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoxNzE0MjE2MTg2MCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgYSBLVk0gUGF0Y2ggZm9yIE5lc3RlZCBWaXJ0dWFsaXphdGlvbiBhbmQgU01NKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBhbmQgaXQncyBtYWtpbmcgc29tZSBwcmV0dHkgc3BlY2lmaWMgbW9kaWZpY2F0aW9ucyB3aXRoaW4gdGhlIEtWTSBzdWJzeXN0ZW0sIHNwZWNpZmljYWxseSBkZWFsaW5nIHdpdGggbmVzdGVkIHZpcnR1YWxpemF0aW9uIGFuZCBTTU0g4oCTIHRoYXQncyBkZWZpbml0ZWx5IGludGVyZXN0aW5nLiBGcm9tIHdoYXQgSSBjYW4gc2VlLCBpdCdzIGNoYW5naW5nIGhvdyBgdmNwdS1cdTAwM2VhcmNoLm5lc3RlZF9ydW5fcGVuZGluZ2AgaXMgaGFuZGxlZCwgc2hpZnRpbmcgZnJvbSBgS1ZNX05FU1RFRF9SVU5fUEVORElOR2AgdG8gYEtWTV9ORVNURURfUlVOX1BFTkRJTkdfVU5UUlVTVEVEYCB3aXRoaW4gdGhlIGBzdm1fbGVhdmVfc21tYCBhbmQgYHZteF9sZWF2ZV9zbW1gIGZ1bmN0aW9ucy4gSSBzZWUgaXQgYWxzbyB0d2Vha3MgYF9fdm14X2hhbmRsZV9leGl0YCB0byBiZSBtb3JlIHByZWNpc2UgYWJvdXQgaXRzIGNoZWNrcy5cblxuRnVuY3Rpb25hbGx5LCB0aGlzIGlzIGEgY2hhbmdlIHRoYXQncyBsaWtlbHkgdG8gaW1wYWN0IGhvdyBuZXN0ZWQgVk1zIGludGVyYWN0IHdpdGggU01NLCBhbmQgdGhhdCBtZWFucyBpdCdzIGEgcHJpbWUgdGFyZ2V0IGZvciBmdXp6aW5nLiBXZSBhYnNvbHV0ZWx5IG5lZWQgdG8gcHV0IHRoaXMgdGhyb3VnaCBpdHMgcGFjZXMuXG5cbk5vdywgbGV0J3Mgc2VlLCB3aGVyZSBpcyB0aGlzIGNvZGU/IEFoLCBpdCBsb29rcyBsaWtlIGBhcmNoL3g4Ni9rdm0vc3ZtL3N2bS5jYCBhbmQgYGFyY2gveDg2L2t2bS92bXgvdm14LmNgIGFyZSB3aGVyZSB0aGUgYWN0aW9uIGlzIGhhcHBlbmluZy4gQWxyaWdodCwgc28gd2UncmUgbG9va2luZyBhdCB0aGluZ3MgdGhhdCB3aWxsIGRlcGVuZCBvbiBgS1ZNYCwgYEtWTV9BTURgLCBhbmQgYEtWTV9JTlRFTGAuIE5lc3RlZCB2aXJ0dWFsaXphdGlvbiBvZnRlbiBoYXMgc29tZSB1bmRlcmx5aW5nIGNvbmZpZ3VyYXRpb24gdG8gY29udHJvbCBpdC4gTGV0IG1lIGp1c3QgY29uZmlybSBpZiB3ZSBuZWVkIHNvbWUgc3BlY2lmaWMgS2NvbmZpZyBvcHRpb25zIGVuYWJsZWQgYmV5b25kIHRoYXQuIFdlJ2xsIG5lZWQgdG8ga25vdyB3aGljaCBvcHRpb25zIGFyZSBpbiBwbGF5IHRvIHRyaWdnZXIgdGhpcy4gVGhpcyBkZWZpbml0ZWx5IG5lZWRzIG1vcmUgaW52ZXN0aWdhdGlvbi5cblxuXG4iLCJJbnB1dFRva2VucyI6NDQ5MSwiT3V0cHV0VG9rZW5zIjozNCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI0NiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yMVQxOToyNTozNC45MzQwOTk0NDlaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTA4OTE4MjIwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBLVk1cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiYXJjaC94ODYva3ZtL0tjb25maWdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiYXJjaC94ODYva3ZtL0tjb25maWc9MTg9aWYgVklSVFVBTElaQVRJT05cXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0xOS1cXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZzoyMDpjb25maWcgS1ZNX1g4NlxcbmFyY2gveDg2L2t2bS9LY29uZmlnLTIxLVxcdGRlZl90cmlzdGF0ZSBLVk0gaWYgKEtWTV9JTlRFTCAhPSBuIHx8IEtWTV9BTUQgIT0gbilcXG4tLVxcbmFyY2gveDg2L2t2bS9LY29uZmlnLTUxLVxcbmFyY2gveDg2L2t2bS9LY29uZmlnOjUyOmNvbmZpZyBLVk1cXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy01My1cXHR0cmlzdGF0ZSBcXFwiS2VybmVsLWJhc2VkIFZpcnR1YWwgTWFjaGluZSAoS1ZNKSBzdXBwb3J0XFxcIlxcbi0tXFxuYXJjaC94ODYva3ZtL0tjb25maWctNjgtXFxuYXJjaC94ODYva3ZtL0tjb25maWc6Njk6Y29uZmlnIEtWTV9XRVJST1JcXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy03MC1cXHRib29sIFxcXCJDb21waWxlIEtWTSB3aXRoIC1XZXJyb3JcXFwiXFxuLS1cXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy04Mi1cXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZzo4Mzpjb25maWcgS1ZNX1NXX1BST1RFQ1RFRF9WTVxcbmFyY2gveDg2L2t2bS9LY29uZmlnLTg0LVxcdGJvb2wgXFxcIkVuYWJsZSBzdXBwb3J0IGZvciBLVk0gc29mdHdhcmUtcHJvdGVjdGVkIFZNc1xcXCJcXG4tLVxcbmFyY2gveDg2L2t2bS9LY29uZmlnLTk1LVxcbmFyY2gveDg2L2t2bS9LY29uZmlnOjk2OmNvbmZpZyBLVk1fSU5URUxcXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy05Ny1cXHR0cmlzdGF0ZSBcXFwiS1ZNIGZvciBJbnRlbCAoYW5kIGNvbXBhdGlibGUpIHByb2Nlc3NvcnMgc3VwcG9ydFxcXCJcXG4tLVxcbmFyY2gveDg2L2t2bS9LY29uZmlnLTEwNi1cXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZzoxMDc6Y29uZmlnIEtWTV9JTlRFTF9QUk9WRV9WRVxcbmFyY2gveDg2L2t2bS9LY29uZmlnLTEwOC0gICAgICAgIGJvb2wgXFxcIkNoZWNrIHRoYXQgZ3Vlc3RzIGRvIG5vdCByZWNlaXZlICNWRSBleGNlcHRpb25zXFxcIlxcbi0tXFxuYXJjaC94ODYva3ZtL0tjb25maWc9MTIyPWNvbmZpZyBYODZfU0dYX0tWTVxcbi0tXFxuYXJjaC94ODYva3ZtL0tjb25maWctMTMzLVxcbmFyY2gveDg2L2t2bS9LY29uZmlnOjEzNDpjb25maWcgS1ZNX0lOVEVMX1REWFxcbmFyY2gveDg2L2t2bS9LY29uZmlnLTEzNS1cXHRib29sIFxcXCJJbnRlbCBUcnVzdCBEb21haW4gRXh0ZW5zaW9ucyAoVERYKSBzdXBwb3J0XFxcIlxcbi0tXFxuYXJjaC94ODYva3ZtL0tjb25maWctMTQ1LVxcbmFyY2gveDg2L2t2bS9LY29uZmlnOjE0Njpjb25maWcgS1ZNX0FNRFxcbmFyY2gveDg2L2t2bS9LY29uZmlnLTE0Ny1cXHR0cmlzdGF0ZSBcXFwiS1ZNIGZvciBBTUQgcHJvY2Vzc29ycyBzdXBwb3J0XFxcIlxcbi0tXFxuYXJjaC94ODYva3ZtL0tjb25maWctMTU1LVxcbmFyY2gveDg2L2t2bS9LY29uZmlnOjE1Njpjb25maWcgS1ZNX0FNRF9TRVZcXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0xNTctXFx0Ym9vbCBcXFwiQU1EIFNlY3VyZSBFbmNyeXB0ZWQgVmlydHVhbGl6YXRpb24gKFNFVikgc3VwcG9ydFxcXCJcXG4tLVxcbmFyY2gveDg2L2t2bS9LY29uZmlnLTE3MS1cXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZzoxNzI6Y29uZmlnIEtWTV9JT0FQSUNcXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0xNzMtXFx0Ym9vbCBcXFwiSS9PIEFQSUMsIFBJQywgYW5kIFBJVCBlbXVsYXRpb25cXFwiXFxuLS1cXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0xODEtXFxuYXJjaC94ODYva3ZtL0tjb25maWc6MTgyOmNvbmZpZyBLVk1fU01NXFxuYXJjaC94ODYva3ZtL0tjb25maWctMTgzLVxcdGJvb2wgXFxcIlN5c3RlbSBNYW5hZ2VtZW50IE1vZGUgZW11bGF0aW9uXFxcIlxcbi0tXFxuYXJjaC94ODYva3ZtL0tjb25maWctMTkyLVxcbmFyY2gveDg2L2t2bS9LY29uZmlnOjE5Mzpjb25maWcgS1ZNX0hZUEVSVlxcbmFyY2gveDg2L2t2bS9LY29uZmlnLTE5NC1cXHRib29sIFxcXCJTdXBwb3J0IGZvciBNaWNyb3NvZnQgSHlwZXItViBlbXVsYXRpb25cXFwiXFxuLS1cXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0yMDYtXFxuYXJjaC94ODYva3ZtL0tjb25maWc6MjA3OmNvbmZpZyBLVk1fWEVOXFxuYXJjaC94ODYva3ZtL0tjb25maWctMjA4LVxcdGJvb2wgXFxcIlN1cHBvcnQgZm9yIFhlbiBoeXBlcmNhbGwgaW50ZXJmYWNlXFxcIlxcbi0tXFxuYXJjaC94ODYva3ZtL0tjb25maWctMjE1LVxcbmFyY2gveDg2L2t2bS9LY29uZmlnOjIxNjpjb25maWcgS1ZNX1BST1ZFX01NVVxcbmFyY2gveDg2L2t2bS9LY29uZmlnLTIxNy1cXHRib29sIFxcXCJQcm92ZSBLVk0gTU1VIGNvcnJlY3RuZXNzXFxcIlxcbi0tXFxuYXJjaC94ODYva3ZtL0tjb25maWctMjI4LVxcbmFyY2gveDg2L2t2bS9LY29uZmlnOjIyOTpjb25maWcgS1ZNX0VYVEVSTkFMX1dSSVRFX1RSQUNLSU5HXFxuYXJjaC94ODYva3ZtL0tjb25maWctMjMwLVxcdGJvb2xcXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0yMzEtXFxuYXJjaC94ODYva3ZtL0tjb25maWc6MjMyOmNvbmZpZyBLVk1fTUFYX05SX1ZDUFVTXFxuYXJjaC94ODYva3ZtL0tjb25maWctMjMzLVxcdGludCBcXFwiTWF4aW11bSBudW1iZXIgb2YgdkNQVXMgcGVyIEtWTSBndWVzdFxcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjFUMTk6MjU6MzUuMDQzMDM1OTY5WiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDc4MDkxMDYzOSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHRob3VnaHQgcHJvY2VzcywgYXMgaWYgSSB3ZXJlIHJldmlld2luZyB0aGlzIGNvZGU6XG5cbioqQW5hbHl6aW5nIFBvdGVudGlhbCBTTU0gRW11bGF0aW9uIFBhdGNoKipcblxuT2theSwgc28gdGhpcyBwYXRjaCBpcyB0b3VjaGluZyBgc3ZtX2xlYXZlX3NtbWAgYW5kIGB2bXhfbGVhdmVfc21tYC4gVGhvc2UgYXJlIHByZXR0eSBmdW5kYW1lbnRhbCBmdW5jdGlvbnMgcmVsYXRlZCB0byBTTU0gZW11bGF0aW9uLCB3aGljaCBpbW1lZGlhdGVseSBjYXRjaGVzIG15IGF0dGVudGlvbi4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGNvbnRleHQuIFNpbmNlIHRoZXNlIGZ1bmN0aW9ucyBhcmUgbGlrZWx5IGludm9sdmVkIGluIHRyYW5zaXRpb25pbmcgaW4gb3Igb3V0IG9mIFNNTSBpbiBhIHZpcnR1YWxpemVkIGVudmlyb25tZW50LCBJIG5lZWQgdG8gY29uZmlybSB3aGV0aGVyIHRoZSBjaGFuZ2VzIGFyZSBpc29sYXRlZCB0byBhIHBhcnRpY3VsYXIgY29uZmlndXJhdGlvbi4gVGhlIG5leHQgc3RlcCBpcyB0byBleGFtaW5lIHRoZSBLY29uZmlnIGZpbGUgaW4gYGFyY2gveDg2L2t2bS9LY29uZmlnYCB0byBzZWUgd2hhdCBjb25maWd1cmF0aW9uIG9wdGlvbnMgbWlnaHQgYWZmZWN0IHRoZXNlIGZ1bmN0aW9ucy4gSeKAmW0gYmV0dGluZyB0aGlzIGludm9sdmVzIHRoZSBgS1ZNX1NNTWAgY29uZmlnLiBMZXQncyB2ZXJpZnkgdGhhdCBgc3ZtX2xlYXZlX3NtbWAgYW5kIGB2bXhfbGVhdmVfc21tYCBhcmUgaW5kZWVkIGd1YXJkZWQgYnkgYEtWTV9TTU1gLiBJZiBzbywgSSBjYW4gcmVzdHJpY3QgbXkgZm9jdXMgdG8gdGhlIGNvZGUgcGF0aHMgdGFrZW4gd2hlbiBLVk0gU01NIGlzIGVuYWJsZWQuIFRoaXMgd2lsbCBoZWxwIG5hcnJvdyB0aGUgc2NvcGUgb2YgdGhlIGltcGFjdCBvZiB0aGlzIHBhdGNoLlxuXG5cbiIsIklucHV0VG9rZW5zIjo2MzI4LCJPdXRwdXRUb2tlbnMiOjM3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6OTgsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjFUMTk6MjU6MzkuODIzOTUzNjg4WiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjExODE4NDE2NDIsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwic3ZtX2xlYXZlX3NtbVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJhcmNoL3g4Ni9rdm0vc3ZtL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJhcmNoL3g4Ni9rdm0vc3ZtL3N2bS5jPTQ5OTQ9c3RhdGljIGludCBzdm1fZW50ZXJfc21tKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgdW5pb24ga3ZtX3NtcmFtICpzbXJhbSlcXG4tLVxcbmFyY2gveDg2L2t2bS9zdm0vc3ZtLmMtNTA0Mi1cXG5hcmNoL3g4Ni9rdm0vc3ZtL3N2bS5jOjUwNDM6c3RhdGljIGludCBzdm1fbGVhdmVfc21tKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgY29uc3QgdW5pb24ga3ZtX3NtcmFtICpzbXJhbSlcXG5hcmNoL3g4Ni9rdm0vc3ZtL3N2bS5jLTUwNDQte1xcbi0tXFxuYXJjaC94ODYva3ZtL3N2bS9zdm0uYz01MzI1PXN0cnVjdCBrdm1feDg2X29wcyBzdm1feDg2X29wcyBfX2luaXRkYXRhID0ge1xcbi0tXFxuYXJjaC94ODYva3ZtL3N2bS9zdm0uYy01NDM3LVxcdC5lbnRlcl9zbW0gPSBzdm1fZW50ZXJfc21tLFxcbmFyY2gveDg2L2t2bS9zdm0vc3ZtLmM6NTQzODpcXHQubGVhdmVfc21tID0gc3ZtX2xlYXZlX3NtbSxcXG5hcmNoL3g4Ni9rdm0vc3ZtL3N2bS5jLTU0MzktXFx0LmVuYWJsZV9zbWlfd2luZG93ID0gc3ZtX2VuYWJsZV9zbWlfd2luZG93LFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yMVQxOToyNTo0MS4wMDU4MDI4NVoiLCJTZXEiOjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQ0MTA0ODQxMTcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqSW52ZXN0aWdhdGluZyBDb25kaXRpb25hbCBDb21waWxhdGlvbiBpbiBLVk0qKlxuXG5Pa2F5LCBzbyBJIG5lZWQgdG8gZmlndXJlIG91dCB3aHkgdGhlc2UgZnVuY3Rpb25zIG1pZ2h0IGJlIGJlaGF2aW5nIGFzIHRoZXkgYXJlLiBNeSBpbW1lZGlhdGUgdGhvdWdodCBpcywgbGV0J3MgZHJpbGwgZG93biBpbnRvIHRoZSBLVk0gc291cmNlIGNvZGUuIE15IGludHVpdGlvbiwgYmFzZWQgb24gcHJldmlvdXMgZXhwZXJpZW5jZSwgcG9pbnRzIG1lIHRvd2FyZHMgY29uZGl0aW9uYWwgY29tcGlsYXRpb24uIEkgc3VzcGVjdCB0aGF0IHRoZSBwcmVzZW5jZSBvciBhYnNlbmNlIG9mIHRoZXNlIGZ1bmN0aW9ucywgb3IgdGhlaXIgc3BlY2lmaWMgaW1wbGVtZW50YXRpb25zLCBtaWdodCBoaW5nZSBvbiB0aGUgYENPTkZJR19LVk1fU01NYCBjb25maWd1cmF0aW9uIG9wdGlvbi4gVGhlcmVmb3JlLCBteSBmaXJzdCBzdGVwIGlzIHRvIGNhcmVmdWxseSBleGFtaW5lIGBzdm0uY2AgYW5kIGB2bXguY2Ag4oCTIHRoZXkgYXJlIHRoZSBvYnZpb3VzIHBsYWNlcyB3aGVyZSB0aGlzIGtpbmQgb2YgcHJvY2Vzc29yLXNwZWNpZmljIGNvZGUgd291bGQgcmVzaWRlLiBJIG5lZWQgdG8gZ3JlcCBhbmQgdmVyaWZ5IGlmIHRoaXMgY29uZmlndXJhdGlvbiB2YXJpYWJsZSBpcyB1c2VkIHRvIGRlY2lkZSB3aGV0aGVyIHRoZSByZWxldmFudCBmdW5jdGlvbnMgYXJlIGluY2x1ZGVkIGluIHRoZSBjb21waWxhdGlvbiBwcm9jZXNzIG9yIG5vdC4gSXQncyBhIGNsYXNzaWMgY2hlY2ssIGFuZCB0aGUgZmlyc3QgcGxhY2UgSSdkIGxvb2suIFRoaXMgYXBwcm9hY2ggYWxsb3dzIG1lIHRvIHBpbnBvaW50IHdoZXJlIHRoaXMgY29uZGl0aW9uYWwgYmVoYXZpb3IgaXMgY29udHJvbGxlZC5cblxuXG4iLCJJbnB1dFRva2VucyI6NzAwMywiT3V0cHV0VG9rZW5zIjozNiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjMyLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTIxVDE5OjI1OjQ1LjQxNjI5Mzc5NloiLCJTZXEiOjEwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTcyOTIyNzA1LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIkNPTkZJR19LVk1fU01NXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImFyY2gveDg2L2t2bS9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiYXJjaC94ODYva3ZtL01ha2VmaWxlPTE0PWt2bS0kKENPTkZJR19LVk1fWEVOKVxcdCs9IHhlbi5vXFxuYXJjaC94ODYva3ZtL01ha2VmaWxlOjE1Omt2bS0kKENPTkZJR19LVk1fU01NKVxcdCs9IHNtbS5vXFxuYXJjaC94ODYva3ZtL01ha2VmaWxlLTE2LVxcbi0tXFxuYXJjaC94ODYva3ZtL3NtbS5oLTYtXFxuYXJjaC94ODYva3ZtL3NtbS5oOjc6I2lmZGVmIENPTkZJR19LVk1fU01NXFxuYXJjaC94ODYva3ZtL3NtbS5oLTgtXFxuLS1cXG5hcmNoL3g4Ni9rdm0vc3ZtL25lc3RlZC5jPTE3MjU9c3RhdGljIGludCBzdm1fY2hlY2tfbmVzdGVkX2V2ZW50cyhzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXFxuLS1cXG5hcmNoL3g4Ni9rdm0vc3ZtL25lc3RlZC5jLTE3NjYtXFxuYXJjaC94ODYva3ZtL3N2bS9uZXN0ZWQuYzoxNzY3OiNpZmRlZiBDT05GSUdfS1ZNX1NNTVxcbmFyY2gveDg2L2t2bS9zdm0vbmVzdGVkLmMtMTc2OC1cXHRpZiAodmNwdS1cXHUwMDNlYXJjaC5zbWlfcGVuZGluZyBcXHUwMDI2XFx1MDAyNiAhc3ZtX3NtaV9ibG9ja2VkKHZjcHUpKSB7XFxuLS1cXG5hcmNoL3g4Ni9rdm0vc3ZtL3N2bS5jPTIxNDg9c3RhdGljIGludCBzaHV0ZG93bl9pbnRlcmNlcHRpb24oc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxcbi0tXFxuYXJjaC94ODYva3ZtL3N2bS9zdm0uYy0yMTY2LVxcdFxcdGNsZWFyX3BhZ2Uoc3ZtLVxcdTAwM2V2bWNiKTtcXG5hcmNoL3g4Ni9rdm0vc3ZtL3N2bS5jOjIxNjc6I2lmZGVmIENPTkZJR19LVk1fU01NXFxuYXJjaC94ODYva3ZtL3N2bS9zdm0uYy0yMTY4LVxcdFxcdGlmIChpc19zbW0odmNwdSkpXFxuLS1cXG5hcmNoL3g4Ni9rdm0vc3ZtL3N2bS5jPTQ2ODU9c3RhdGljIGJvb2wgc3ZtX2hhc19lbXVsYXRlZF9tc3Ioc3RydWN0IGt2bSAqa3ZtLCB1MzIgaW5kZXgpXFxuLS1cXG5hcmNoL3g4Ni9rdm0vc3ZtL3N2bS5jLTQ2OTEtXFx0Y2FzZSBNU1JfSUEzMl9TTUJBU0U6XFxuYXJjaC94ODYva3ZtL3N2bS9zdm0uYzo0NjkyOlxcdFxcdGlmICghSVNfRU5BQkxFRChDT05GSUdfS1ZNX1NNTSkpXFxuYXJjaC94ODYva3ZtL3N2bS9zdm0uYy00NjkzLVxcdFxcdFxcdHJldHVybiBmYWxzZTtcXG4tLVxcbmFyY2gveDg2L2t2bS9zdm0vc3ZtLmM9NDk2MD1zdGF0aWMgdm9pZCBzdm1fc2V0dXBfbWNlKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSlcXG4tLVxcbmFyY2gveDg2L2t2bS9zdm0vc3ZtLmMtNDk2NS1cXG5hcmNoL3g4Ni9rdm0vc3ZtL3N2bS5jOjQ5NjY6I2lmZGVmIENPTkZJR19LVk1fU01NXFxuYXJjaC94ODYva3ZtL3N2bS9zdm0uYy00OTY3LWJvb2wgc3ZtX3NtaV9ibG9ja2VkKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSlcXG4tLVxcbmFyY2gveDg2L2t2bS9zdm0vc3ZtLmM9NTMyNT1zdHJ1Y3Qga3ZtX3g4Nl9vcHMgc3ZtX3g4Nl9vcHMgX19pbml0ZGF0YSA9IHtcXG4tLVxcbmFyY2gveDg2L2t2bS9zdm0vc3ZtLmMtNTQzNC1cXG5hcmNoL3g4Ni9rdm0vc3ZtL3N2bS5jOjU0MzU6I2lmZGVmIENPTkZJR19LVk1fU01NXFxuYXJjaC94ODYva3ZtL3N2bS9zdm0uYy01NDM2LVxcdC5zbWlfYWxsb3dlZCA9IHN2bV9zbWlfYWxsb3dlZCxcXG4tLVxcbmFyY2gveDg2L2t2bS92bXgvbWFpbi5jPTIxMD1zdGF0aWMgaW50IHZ0X2NvbXBsZXRlX2VtdWxhdGVkX21zcihzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIGludCBlcnIpXFxuLS1cXG5hcmNoL3g4Ni9rdm0vdm14L21haW4uYy0yMTctXFxuYXJjaC94ODYva3ZtL3ZteC9tYWluLmM6MjE4OiNpZmRlZiBDT05GSUdfS1ZNX1NNTVxcbmFyY2gveDg2L2t2bS92bXgvbWFpbi5jLTIxOS1zdGF0aWMgaW50IHZ0X3NtaV9hbGxvd2VkKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgYm9vbCBmb3JfaW5qZWN0aW9uKVxcbi0tXFxuYXJjaC94ODYva3ZtL3ZteC9tYWluLmM9ODgwPXN0cnVjdCBrdm1feDg2X29wcyB2dF94ODZfb3BzIF9faW5pdGRhdGEgPSB7XFxuLS1cXG5hcmNoL3g4Ni9rdm0vdm14L21haW4uYy0xMDA5LVxcbmFyY2gveDg2L2t2bS92bXgvbWFpbi5jOjEwMTA6I2lmZGVmIENPTkZJR19LVk1fU01NXFxuYXJjaC94ODYva3ZtL3ZteC9tYWluLmMtMTAxMS1cXHQuc21pX2FsbG93ZWQgPSB2dF9vcChzbWlfYWxsb3dlZCksXFxuLS1cXG5hcmNoL3g4Ni9rdm0vdm14L3ZteC5jPTcyMDk9Ym9vbCB2bXhfaGFzX2VtdWxhdGVkX21zcihzdHJ1Y3Qga3ZtICprdm0sIHUzMiBpbmRleClcXG4tLVxcbmFyY2gveDg2L2t2bS92bXgvdm14LmMtNzIxMi1cXHRjYXNlIE1TUl9JQTMyX1NNQkFTRTpcXG5hcmNoL3g4Ni9rdm0vdm14L3ZteC5jOjcyMTM6XFx0XFx0aWYgKCFJU19FTkFCTEVEKENPTkZJR19LVk1fU01NKSlcXG5hcmNoL3g4Ni9rdm0vdm14L3ZteC5jLTcyMTQtXFx0XFx0XFx0cmV0dXJuIGZhbHNlO1xcbi0tXFxuYXJjaC94ODYva3ZtL3ZteC92bXguYz04MzgxPXZvaWQgdm14X3NldHVwX21jZShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXFxuLS1cXG5hcmNoL3g4Ni9rdm0vdm14L3ZteC5jLTgzOTAtXFxuYXJjaC94ODYva3ZtL3ZteC92bXguYzo4MzkxOiNpZmRlZiBDT05GSUdfS1ZNX1NNTVxcbmFyY2gveDg2L2t2bS92bXgvdm14LmMtODM5Mi1pbnQgdm14X3NtaV9hbGxvd2VkKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgYm9vbCBmb3JfaW5qZWN0aW9uKVxcbi0tXFxuYXJjaC94ODYva3ZtL3ZteC94ODZfb3BzLmg9MzQ9aW50IHZteF9zZXRfbXNyKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgc3RydWN0IG1zcl9kYXRhICptc3JfaW5mbyk7XFxuYXJjaC94ODYva3ZtL3ZteC94ODZfb3BzLmg6MzU6I2lmZGVmIENPTkZJR19LVk1fU01NXFxuYXJjaC94ODYva3ZtL3ZteC94ODZfb3BzLmgtMzYtaW50IHZteF9zbWlfYWxsb3dlZChzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIGJvb2wgZm9yX2luamVjdGlvbik7XFxuLS1cXG5hcmNoL3g4Ni9rdm0veDg2LmM9Mzg3OD1pbnQga3ZtX3NldF9tc3JfY29tbW9uKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgc3RydWN0IG1zcl9kYXRhICptc3JfaW5mbylcXG4tLVxcbmFyY2gveDg2L2t2bS94ODYuYy00MDU4LVxcdGNhc2UgTVNSX0lBMzJfU01CQVNFOlxcbmFyY2gveDg2L2t2bS94ODYuYzo0MDU5OlxcdFxcdGlmICghSVNfRU5BQkxFRChDT05GSUdfS1ZNX1NNTSkgfHwgIW1zcl9pbmZvLVxcdTAwM2Vob3N0X2luaXRpYXRlZClcXG5hcmNoL3g4Ni9rdm0veDg2LmMtNDA2MC1cXHRcXHRcXHRyZXR1cm4gMTtcXG4tLVxcbmFyY2gveDg2L2t2bS94ODYuYz00MzM1PWludCBrdm1fZ2V0X21zcl9jb21tb24oc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCBzdHJ1Y3QgbXNyX2RhdGEgKm1zcl9pbmZvKVxcbi0tXFxuYXJjaC94ODYva3ZtL3g4Ni5jLTQ0NTQtXFx0Y2FzZSBNU1JfSUEzMl9TTUJBU0U6XFxuYXJjaC94ODYva3ZtL3g4Ni5jOjQ0NTU6XFx0XFx0aWYgKCFJU19FTkFCTEVEKENPTkZJR19LVk1fU01NKSB8fCAhbXNyX2luZm8tXFx1MDAzZWhvc3RfaW5pdGlhdGVkKVxcbmFyY2gveDg2L2t2bS94ODYuYy00NDU2LVxcdFxcdFxcdHJldHVybiAxO1xcbi0tXFxuYXJjaC94ODYva3ZtL3g4Ni5jPTQ3Njg9aW50IGt2bV92bV9pb2N0bF9jaGVja19leHRlbnNpb24oc3RydWN0IGt2bSAqa3ZtLCBsb25nIGV4dClcXG4tLVxcbmFyY2gveDg2L2t2bS94ODYuYy00ODg3LVxcdGNhc2UgS1ZNX0NBUF9YODZfU01NOlxcbmFyY2gveDg2L2t2bS94ODYuYzo0ODg4OlxcdFxcdGlmICghSVNfRU5BQkxFRChDT05GSUdfS1ZNX1NNTSkpXFxuYXJjaC94ODYva3ZtL3g4Ni5jLTQ4ODktXFx0XFx0XFx0YnJlYWs7XFxuLS1cXG5hcmNoL3g4Ni9rdm0veDg2LmM9NTU1Nz1zdGF0aWMgdm9pZCBrdm1fdmNwdV9pb2N0bF94ODZfZ2V0X3ZjcHVfZXZlbnRzKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSxcXG4tLVxcbmFyY2gveDg2L2t2bS94ODYuYy01NTYzLVxcbmFyY2gveDg2L2t2bS94ODYuYzo1NTY0OiNpZmRlZiBDT05GSUdfS1ZNX1NNTVxcbmFyY2gveDg2L2t2bS94ODYuYy01NTY1LVxcdGlmIChrdm1fY2hlY2tfcmVxdWVzdChLVk1fUkVRX1NNSSwgdmNwdSkpXFxuLS1cXG5hcmNoL3g4Ni9rdm0veDg2LmMtNTYwNi1cXG5hcmNoL3g4Ni9rdm0veDg2LmM6NTYwNzojaWZkZWYgQ09ORklHX0tWTV9TTU1cXG5hcmNoL3g4Ni9rdm0veDg2LmMtNTYwOC1cXHRldmVudHMtXFx1MDAzZXNtaS5zbW0gPSBpc19zbW0odmNwdSk7XFxuLS1cXG5hcmNoL3g4Ni9rdm0veDg2LmM9NTYyNj1zdGF0aWMgaW50IGt2bV92Y3B1X2lvY3RsX3g4Nl9zZXRfdmNwdV9ldmVudHMoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LFxcbi0tXFxuYXJjaC94ODYva3ZtL3g4Ni5jLTU2OTUtXFx0aWYgKGV2ZW50cy1cXHUwMDNlZmxhZ3MgXFx1MDAyNiBLVk1fVkNQVUVWRU5UX1ZBTElEX1NNTSkge1xcbmFyY2gveDg2L2t2bS94ODYuYzo1Njk2OiNpZmRlZiBDT05GSUdfS1ZNX1NNTVxcbmFyY2gveDg2L2t2bS94ODYuYy01Njk3LVxcdFxcdGlmICghISh2Y3B1LVxcdTAwM2VhcmNoLmhmbGFncyBcXHUwMDI2IEhGX1NNTV9NQVNLKSAhPSBldmVudHMtXFx1MDAzZXNtaS5zbW0pIHtcXG4tLVxcbmFyY2gveDg2L2t2bS94ODYuYz04ODQ1PXN0YXRpYyBib29sIGVtdWxhdG9yX2lzX3NtbShzdHJ1Y3QgeDg2X2VtdWxhdGVfY3R4dCAqY3R4dClcXG4tLVxcbmFyY2gveDg2L2t2bS94ODYuYy04ODQ5LVxcbmFyY2gveDg2L2t2bS94ODYuYzo4ODUwOiNpZm5kZWYgQ09ORklHX0tWTV9TTU1cXG5hcmNoL3g4Ni9rdm0veDg2LmMtODg1MS1zdGF0aWMgaW50IGVtdWxhdG9yX2xlYXZlX3NtbShzdHJ1Y3QgeDg2X2VtdWxhdGVfY3R4dCAqY3R4dClcXG4tLVxcbmFyY2gveDg2L2t2bS94ODYuYz0xMDYzMz1zdGF0aWMgaW50IGt2bV9jaGVja19hbmRfaW5qZWN0X2V2ZW50cyhzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsXFxuLS1cXG5hcmNoL3g4Ni9rdm0veDg2LmMtMTA3NTktXFx0ICovXFxuYXJjaC94ODYva3ZtL3g4Ni5jOjEwNzYwOiNpZmRlZiBDT05GSUdfS1ZNX1NNTVxcbmFyY2gveDg2L2t2bS94ODYuYy0xMDc2MS1cXHRpZiAodmNwdS1cXHUwMDNlYXJjaC5zbWlfcGVuZGluZykge1xcbi0tXFxuYXJjaC94ODYva3ZtL3g4Ni5jPTExMTEyPXN0YXRpYyBpbnQgdmNwdV9lbnRlcl9ndWVzdChzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXFxuLS1cXG5hcmNoL3g4Ni9rdm0veDg2LmMtMTEyMDctXFx0XFx0XFx0a3ZtX3BtdV9kZWxpdmVyX3BtaSh2Y3B1KTtcXG5hcmNoL3g4Ni9rdm0veDg2LmM6MTEyMDg6I2lmZGVmIENPTkZJR19LVk1fU01NXFxuYXJjaC94ODYva3ZtL3g4Ni5jLTExMjA5LVxcdFxcdGlmIChrdm1fY2hlY2tfcmVxdWVzdChLVk1fUkVRX1NNSSwgdmNwdSkpXFxuLS1cXG5hcmNoL3g4Ni9rdm0veDg2LmM9MTE1Njk9Ym9vbCBrdm1fdmNwdV9oYXNfZXZlbnRzKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSlcXG4tLVxcbmFyY2gveDg2L2t2bS94ODYuYy0xMTU4NS1cXG5hcmNoL3g4Ni9rdm0veDg2LmM6MTE1ODY6I2lmZGVmIENPTkZJR19LVk1fU01NXFxuYXJjaC94ODYva3ZtL3g4Ni5jLTExNTg3LVxcdGlmIChrdm1fdGVzdF9yZXF1ZXN0KEtWTV9SRVFfU01JLCB2Y3B1KSB8fFxcbi0tXFxuYXJjaC94ODYva3ZtL3g4Ni5jPTExODE1PWJvb2wga3ZtX2FyY2hfZHlfcnVubmFibGUoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxcbi0tXFxuYXJjaC94ODYva3ZtL3g4Ni5jLTExODIwLVxcdGlmIChrdm1fdGVzdF9yZXF1ZXN0KEtWTV9SRVFfTk1JLCB2Y3B1KSB8fFxcbmFyY2gveDg2L2t2bS94ODYuYzoxMTgyMTojaWZkZWYgQ09ORklHX0tWTV9TTU1cXG5hcmNoL3g4Ni9rdm0veDg2LmMtMTE4MjItXFx0XFx0a3ZtX3Rlc3RfcmVxdWVzdChLVk1fUkVRX1NNSSwgdmNwdSkgfHxcXG4tLVxcbmFyY2gveDg2L2t2bS94ODYuaD02Mz1zdGF0aWNfYXNzZXJ0KFNJWkVfT0ZfTUVNU0xPVFNfSEFTSFRBQkxFID09XFxuYXJjaC94ODYva3ZtL3g4Ni5oOjY0OlxcdCAgICAgICgxMDI0ICogKDEgKyBJU19FTkFCTEVEKENPTkZJR19YODZfNjQpKSAqICgxICsgSVNfRU5BQkxFRChDT05GSUdfS1ZNX1NNTSkpKSk7XFxuYXJjaC94ODYva3ZtL3g4Ni5oLTY1LVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yMVQxOToyNTo0NS41ODkyMjYyMTJaIiwiU2VxIjoxMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MTc0ODY1ODQxNDMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBLVk0gU01NIFBhdGNoIFJlcXVpcmVtZW50cyoqXG5cbk9rYXksIHNvIGl0J3MgbG9va2luZyBwcmV0dHkgc3RyYWlnaHRmb3J3YXJkLiBUaGUgY29yZSBvZiB0aGlzIHBhdGNoLCB0aGUgcGFydCB0aGF0IGFjdHVhbGx5IGRlYWxzIHdpdGggU2VjdXJlIE1vZGUgTWFuYWdlbWVudCAoU01NKSBzdXBwb3J0LCBoaW5nZXMgb24gYENPTkZJR19LVk1fU01NYC4gTWFrZXMgcGVyZmVjdCBzZW5zZTsgaWYgU01NIHN1cHBvcnQgaXNuJ3QgY29tcGlsZWQgaW4sIHRoZW4gdGhlIGZ1bmN0aW9ucyByZWxhdGVkIHRvIGxlYXZpbmcgU01NIHdvdWxkbid0IGV4aXN0IGFuZCBuZWVkIG1vZGlmaWNhdGlvbi4gU3BlY2lmaWNhbGx5LCBpdCdzIHRoZSBgc3ZtX2xlYXZlX3NtbWAgYW5kIGB2bXhfbGVhdmVfc21tYCBmdW5jdGlvbnMgdGhhdCBhcmUgYmVpbmcgdG91Y2hlZC4gR2l2ZW4gdGhlIG5hbWVzLCB0aG9zZSBhcmUgY2xlYXJseSBhcmNoaXRlY3R1cmUtc3BlY2lmaWM6IEFNRCBTZWN1cmUgVmlydHVhbCBNYWNoaW5lIChTVk0pIGFuZCBJbnRlbCBWaXJ0dWFsIE1hY2hpbmUgRXh0ZW5zaW9ucyAoVk1YKSwgcmVzcGVjdGl2ZWx5LiBBbmQgdGhvc2UgYXJlIG9ubHkgY29tcGlsZWQgaWYgYENPTkZJR19LVk1fU01NYCBpcyBlbmFibGVkLlxuXG5GdXJ0aGVybW9yZSwgdGhpcyBhbHNvIG1vZGlmaWVzIGBfX3ZteF9oYW5kbGVfZXhpdGAgdG9vLCB3aGljaCBpcyBpbnRlcmVzdGluZy4gSSdsbCBuZWVkIHRvIHJlbWVtYmVyIHRoYXQgdGhpcyBjb2RlIGlzIGxvY2F0ZWQgaW4gYGFyY2gveDg2L2t2bS92bXgvdm14LmNgLiBPZiBjb3Vyc2UsIHRoaXMgbWVhbnMgdGhlIG92ZXJhbGwgcGF0Y2ggZGVwZW5kcyBvbiBib3RoIGBDT05GSUdfS1ZNX0lOVEVMYCAoZm9yIHRoZSBWTVggc2lkZSkgYW5kIGBDT05GSUdfS1ZNX0FNRGAgKGZvciB0aGUgU1ZNIHNpZGUpLiBTbywgdGhlIGJ1aWxkIGNvbmZpZ3VyYXRpb24gaW1wbGljYXRpb25zIGFyZSBwcmV0dHkgYnJvYWQuXG5cbkFscmlnaHQsIGxldCdzIHRha2UgYSBsb29rIGF0IGBfX3ZteF9oYW5kbGVfZXhpdGAgZGlyZWN0bHk7IEknbGwgbmVlZCBhIGJldHRlciB1bmRlcnN0YW5kaW5nIG9mICpob3cqIGl0J3MgaW50ZXJhY3Rpbmcgd2l0aCB0aGUgU01NIGV4aXQgcHJvY2VzcyB0byB1bmRlcnN0YW5kIHRoZSBmdWxsIHNjb3BlIG9mIHRoaXMgY2hhbmdlLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMDU0MiwiT3V0cHV0VG9rZW5zIjozOSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEzNywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yMVQxOToyNjowMy4wNzU4MTQ0ODZaIiwiU2VxIjoxMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE4NTI1MzQ0MiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJfX3ZteF9oYW5kbGVfZXhpdFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJhcmNoL3g4Ni9rdm0vdm14L1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJhcmNoL3g4Ni9rdm0vdm14L3ZteC5jPTY0OTE9dm9pZCBkdW1wX3ZtY3Moc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxcbi0tXFxuYXJjaC94ODYva3ZtL3ZteC92bXguYy02Njk1LSAqL1xcbmFyY2gveDg2L2t2bS92bXgvdm14LmM6NjY5NjpzdGF0aWMgaW50IF9fdm14X2hhbmRsZV9leGl0KHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgZmFzdHBhdGhfdCBleGl0X2Zhc3RwYXRoKVxcbmFyY2gveDg2L2t2bS92bXgvdm14LmMtNjY5Ny17XFxuLS1cXG5hcmNoL3g4Ni9rdm0vdm14L3ZteC5jPTY4NTY9aW50IHZteF9oYW5kbGVfZXhpdChzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIGZhc3RwYXRoX3QgZXhpdF9mYXN0cGF0aClcXG5hcmNoL3g4Ni9rdm0vdm14L3ZteC5jLTY4NTcte1xcbmFyY2gveDg2L2t2bS92bXgvdm14LmM6Njg1ODpcXHRpbnQgcmV0ID0gX192bXhfaGFuZGxlX2V4aXQodmNwdSwgZXhpdF9mYXN0cGF0aCk7XFxuYXJjaC94ODYva3ZtL3ZteC92bXguYy02ODU5LVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yMVQxOToyNjowMy4yNjEwNzc1MDdaIiwiU2VxIjoxMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MTM4MDQyNjQ5NTcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqRm9jdXNpbmcgb24gdGhlIFNNTS9OZXN0ZWQgVmlydHVhbGl6YXRpb24gQnVnKipcblxuT2theSwgc28gdGhlIGludmVzdGlnYXRpb24gY29udGludWVzLiBHaXZlbiB0aGF0IHRoaXMgYnVnIGFwcGVhcnMgdG8gYmUgcmVsYXRlZCB0byBuZXN0ZWQgdmlydHVhbGl6YXRpb24gYW5kIGludGVyYWN0aW9ucyB3aXRoIFN5c3RlbSBNYW5hZ2VtZW50IE1vZGUgKFNNTSksIEknbSBnb2luZyB0byBzaGlmdCBteSBmb2N1cyBvbnRvIGEgZmV3IGtleSBmdW5jdGlvbnMuIE15IGluaXRpYWwgaW5zdGluY3QgaXMgdG8gaG9uZSBpbiBvbiBgc3ZtX2xlYXZlX3NtbWAsIGB2bXhfbGVhdmVfc21tYCwgYW5kIGBfX3ZteF9oYW5kbGVfZXhpdGAuIEkga25vdyB0aGF0IGBfX3ZteF9oYW5kbGVfZXhpdGAgaXMgYSBoaWdoLWZyZXF1ZW5jeSBmdW5jdGlvbiwgYSBob3QgcGF0aCBpZiB5b3Ugd2lsbCwgZm9yIFZNIGV4aXRzIGluIHRoZSBWTVggd29ybGQsIGJ1dCBiZWNhdXNlIHRoZSBjb250ZXh0IHBvaW50cyBzcGVjaWZpY2FsbHkgdG8gbmVzdGVkIHZpcnR1YWxpemF0aW9uIGFuZCBTTU0gaW50ZXJhY3Rpb24sIEkgbmVlZCB0byBsb29rIGNsb3NlciBhdCBgc3ZtX2xlYXZlX3NtbWAgYW5kIGB2bXhfbGVhdmVfc21tYC4gSSdsbCBhbHNvIGJyaW5nIHRoZSBuZXN0ZWQgdmlydHVhbGl6YXRpb24gY29tcG9uZW50cyBpbnRvIHBsYXk7IGxvb2tpbmcgc3BlY2lmaWNhbGx5IGF0IGNhbGxzIGxpa2UgYG5lc3RlZF92bXhfcnVuYCBhbmQgYG5lc3RlZF9zdm1fdm1ydW5gLiBJIHNob3VsZCBzdGFydCBieSBjaGVja2luZyB0aGUgaW1wbGVtZW50YXRpb25zIG9mIGBzdm1fbGVhdmVfc21tYCBhbmQgYHZteF9sZWF2ZV9zbW1gLiBMZXQncyBkaWcgaW4uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjExMzI2LCJPdXRwdXRUb2tlbnMiOjM5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTM0LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTIxVDE5OjI2OjE3LjA2NTM1OTg3NFoiLCJTZXEiOjE0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NjY1NzIxNjkzLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInZteF9sZWF2ZV9zbW1cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiYXJjaC94ODYva3ZtL3ZteC9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiYXJjaC94ODYva3ZtL3ZteC9tYWluLmM9MjM1PXN0YXRpYyBpbnQgdnRfbGVhdmVfc21tKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgY29uc3QgdW5pb24ga3ZtX3NtcmFtICpzbXJhbSlcXG4tLVxcbmFyY2gveDg2L2t2bS92bXgvbWFpbi5jLTIzOS1cXG5hcmNoL3g4Ni9rdm0vdm14L21haW4uYzoyNDA6XFx0cmV0dXJuIHZteF9sZWF2ZV9zbW0odmNwdSwgc21yYW0pO1xcbmFyY2gveDg2L2t2bS92bXgvbWFpbi5jLTI0MS19XFxuLS1cXG5hcmNoL3g4Ni9rdm0vdm14L3ZteC5jPTg0MDA9aW50IHZteF9lbnRlcl9zbW0oc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCB1bmlvbiBrdm1fc21yYW0gKnNtcmFtKVxcbi0tXFxuYXJjaC94ODYva3ZtL3ZteC92bXguYy04NDIwLVxcbmFyY2gveDg2L2t2bS92bXgvdm14LmM6ODQyMTppbnQgdm14X2xlYXZlX3NtbShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIGNvbnN0IHVuaW9uIGt2bV9zbXJhbSAqc21yYW0pXFxuYXJjaC94ODYva3ZtL3ZteC92bXguYy04NDIyLXtcXG4tLVxcbmFyY2gveDg2L2t2bS92bXgveDg2X29wcy5oPTM3PWludCB2bXhfZW50ZXJfc21tKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgdW5pb24ga3ZtX3NtcmFtICpzbXJhbSk7XFxuYXJjaC94ODYva3ZtL3ZteC94ODZfb3BzLmg6Mzg6aW50IHZteF9sZWF2ZV9zbW0oc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCBjb25zdCB1bmlvbiBrdm1fc21yYW0gKnNtcmFtKTtcXG5hcmNoL3g4Ni9rdm0vdm14L3g4Nl9vcHMuaC0zOS12b2lkIHZteF9lbmFibGVfc21pX3dpbmRvdyhzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yMVQxOToyNjoxNy43MzEwODk5NzdaIiwiU2VxIjoxNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTQ1MjU3OTYwMCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBbmFseXNpcyBvZiB0aGUgS1ZNIFBhdGNoKipcblxuT2theSwgc28gSSdtIGRpdmluZyBpbnRvIHRoaXMgS1ZNIHBhdGNoLCBhbmQgdGhlIGNvcmUgb2YgaXQgc2VlbXMgdG8gYmUgY2VudGVyZWQgYXJvdW5kIGBzdm1fbGVhdmVfc21tYCBhbmQgYHZteF9sZWF2ZV9zbW1gLiBUaG9zZSBhcmUgZGVmaW5pdGVseSB0aGUgcHJpbWFyeSBmb2N1cywgc28gSSdsbCBiZSBzdXJlIHRvIGtlZXAgdGhlbSBpbiBtaW5kLiBJIGRpZCBub3RlIHRoYXQgYF9fdm14X2hhbmRsZV9leGl0YCBpcyBhbHNvIGluY2x1ZGVkLCBhbmQgd2hpbGUgdGhhdCdzIGEgaG90IHBhdGgsIHRoaXMgcGF0Y2ggKnNwZWNpZmljYWxseSogbW9kaWZpZXMgdGhvc2UgZnVuY3Rpb25zLCBhbG9uZyB3aXRoIGBzdm1fbGVhdmVfc21tYCBhbmQgYHZteF9sZWF2ZV9zbW1gLCBzbyBJIHdpbGwgaW5jbHVkZSBhbGwgb2YgdGhlbS5cblxuTm93LCBsZXQncyBsb29rIGF0IHRoZSBuZWNlc3NhcnkgY29uZmlndXJhdGlvbnMuIEknbSBnb2luZyB0byBuZWVkIHRvIGVuYWJsZSBgS1ZNYCwgYEtWTV9JTlRFTGAsIGFuZCBgS1ZNX0FNRGAsIG9idmlvdXNseS4gQW5kIHNpbmNlIHRoaXMgc2VlbXMgdG8gYmUgdG91Y2hpbmcgU01NLCBgS1ZNX1NNTWAgaXMgbGlrZWx5IGFsc28gY3J1Y2lhbC4gTGV0IG1lIGp1c3QgY29uZmlybSB0aGF04oCmIFllcCwgYGNvbmZpZyBLVk1fU01NYCBsb29rcyByaWdodC4gR29vZC5cblxuSG1tLCBzb21ldGhpbmcncyBqdW1wZWQgb3V0IGF0IG1lLiBUaGUgcGF0Y2ggaXMgYWxzbyBjaGFuZ2luZyBgdmNwdS1cdTAwM2VhcmNoLm5lc3RlZF9ydW5fcGVuZGluZ2AgdG8gYEtWTV9ORVNURURfUlVOX1BFTkRJTkdfVU5UUlVTVEVEYC4gVGhhdCdzIGFuIGludHJpZ3VpbmcgY2hhbmdlLCBhbmQgaXQgKnNjcmVhbXMqIG5lc3RlZCB2aXJ0dWFsaXphdGlvbi4gSSBuZWVkIHRvIG1ha2Ugc3VyZSBJIHVuZGVyc3RhbmQgdGhlIGNvbnRleHQuIExldCBtZSBxdWlja2x5IHNjYW4gYGFyY2gveDg2L2t2bS9LY29uZmlnYCB0byBzZWUgaWYgdGhlcmUgYXJlIGFueSByZWxhdGVkIG5lc3RlZCB2aXJ0dWFsaXphdGlvbiBjb25maWd1cmF0aW9uIG9wdGlvbnMgdGhhdCBJJ20gbWlzc2luZy4gR290IHRvIGhhdmUgYSBmdWxsIHVuZGVyc3RhbmRpbmcgdG8gZW5zdXJlIHRoaXMgcGF0Y2ggaXMgc291bmQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjEyMTgzLCJPdXRwdXRUb2tlbnMiOjMyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjQwLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTIxVDE5OjI2OjIzLjE4MzY3NDI1OFoiLCJTZXEiOjE2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjIwNDcwNjA5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm5lc3RlZFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJhcmNoL3g4Ni9rdm0vS2NvbmZpZ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJhcmNoL3g4Ni9rdm0vS2NvbmZpZz0xMDc9Y29uZmlnIEtWTV9JTlRFTF9QUk9WRV9WRVxcbi0tXFxuYXJjaC94ODYva3ZtL0tjb25maWctMTE2LSAgICAgICAgICBOb3RlOiBzb21lIENQVXMgYXBwZWFyIHRvIGdlbmVyYXRlIHNwdXJpb3VzIEVQVCBWaW9sYXRpb25zICNWRXNcXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZzoxMTc6ICAgICAgICAgIHRoYXQgdHJpZ2dlciBLVk0ncyBXQVJOLCBpbiBwYXJ0aWN1bGFyIHdpdGggZXB0YWQ9MCBhbmQvb3IgbmVzdGVkXFxuYXJjaC94ODYva3ZtL0tjb25maWctMTE4LSAgICAgICAgICB2aXJ0dWFsaXphdGlvbi5cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjFUMTk6MjY6MjMuNDA0MTUzNDI2WiIsIlNlcSI6MTcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjE4MzQ1MDYyMzg1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEFuYWx5c2lzIG9mIHRoaXMgS1ZNIE5lc3RlZCBWaXJ0dWFsaXphdGlvbiBDaGFuZ2UqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGFuZCBteSBpbml0aWFsIHRob3VnaHQgaXMsIFwiQWgsIHJpZ2h0LCBuZXN0ZWQgdmlydHVhbGl6YXRpb24gaW4gS1ZNLlwiIEkga25vdyB0aGUgdXN1YWwgc3VzcGVjdCBmb3IgZW5hYmxpbmcgdGhhdCBpcyBzZXR0aW5nIGBuZXN0ZWQ9MWAgYXMgYSBtb2R1bGUgcGFyYW1ldGVyIGZvciBlaXRoZXIgYGt2bS1pbnRlbGAgb3IgYGt2bS1hbWRgLiBJIGRvbid0IHJlY2FsbCBzZWVpbmcgYSBzcGVjaWZpYyBLY29uZmlnIG9wdGlvbiBkZWRpY2F0ZWQgdG8gbmVzdGVkIHZpcnR1YWxpemF0aW9uIGZvciB4ODYgS1ZNLiBJIHNob3VsZCBkb3VibGUtY2hlY2sgaWYgdGhlcmUgYXJlIGFueSBvdGhlciBjb25maWd1cmF0aW9uIGRlcGVuZGVuY2llcyBiZXlvbmQgdGhlIG9idmlvdXMuXG5cblJpZ2h0LCBJIG5lZWQgYEtWTV9TTU1gIGVuYWJsZWQuIFRoYXQgc2VlbXMgY3JpdGljYWwgaGVyZS5cblxuU28sIGp1c3QgdG8gYmUgZXhwbGljaXQgYWJvdXQgdGhlIGNvbmZpZ3VyYXRpb24gcmVxdWlyZW1lbnRzLCBJJ2xsIGpvdCBkb3duIHRoZSByZXF1aXJlZCBFbmFibGVDb25maWdzOiBgS1ZNYCwgYEtWTV9JTlRFTGAsIGBLVk1fQU1EYCwgYW5kIGNydWNpYWxseSwgYEtWTV9TTU1gLlxuXG5UaGVuLCBmcm9tIGEgc3ltYm9sIHBlcnNwZWN0aXZlLCBJJ20gZ29pbmcgdG8ga2VlcCBhbiBleWUgb24gYHN2bV9sZWF2ZV9zbW1gIGFuZCBgdm14X2xlYXZlX3NtbWAuIEkgc3VzcGVjdCB0aGVpciBpbnRlcmFjdGlvbiB3aXRoIG5lc3RlZCB2aXJ0dWFsaXphdGlvbiBpcyB0aGUgY3J1eCBvZiB0aGUgaXNzdWUuXG5cbk5vdywgZGlnZ2luZyBpbnRvIHRoZSByZWFzb25pbmcgYmVoaW5kIHRoZSBjaGFuZ2VzLCBpdCBzZWVtcyB0aGlzIHBhdGNoIGlzIGFsdGVyaW5nIGhvdyBLVk0gaGFuZGxlcyBuZXN0ZWQgdmlydHVhbGl6YXRpb24gd2hlbiB0cmFuc2l0aW9uaW5nIGluIGFuZCBvdXQgb2YgU3lzdGVtIE1hbmFnZW1lbnQgTW9kZSAoU01NKS4gU3BlY2lmaWNhbGx5LCBpdCdzIGFib3V0IGNoYW5naW5nIHRoZSBgbmVzdGVkX3J1bl9wZW5kaW5nYCBzdGF0ZSB0byBgS1ZNX05FU1RFRF9SVU5fUEVORElOR19VTlRSVVNURURgIHdoZW4gZXhpdGluZyBTTU0gaW4gYm90aCBTVk0gKEFNRCkgYW5kIFZNWCAoSW50ZWwpIGVudmlyb25tZW50cy4gUGx1cywgdGhlcmUncyBhIG1vZGlmaWNhdGlvbiB0byB0aGUgVk1YIGV4aXQgaGFuZGxlciB0byBzcGVjaWZpY2FsbHkgY2hlY2sgZm9yIHRoZSBgS1ZNX05FU1RFRF9SVU5fUEVORElOR2Agc3RhdGUuIFRoaXMgbWFrZXMgdGhlIGNvZGUgcG90ZW50aWFsbHkgdnVsbmVyYWJsZS4gSXQncyBhIGZ1bmN0aW9uYWwgY2hhbmdlIHdpdGhpbiB0aGUgY29yZSBLVk0gbG9naWMsIGltcGFjdGluZyBib3RoIG5lc3RlZCB2aXJ0dWFsaXphdGlvbiBhbmQgU01NIGludGVyYWN0aW9uLCBzbyB0aGlzIGlzIGRlZmluaXRlbHkgd29ydGggc29tZSBmdXp6aW5nIGVmZm9ydC5cblxuQWxyaWdodCwgdGltZSB0byBsb2cgdGhlc2UgcmVzdWx0cyFcblxuXG4iLCJJbnB1dFRva2VucyI6MTI5MjUsIk91dHB1dFRva2VucyI6MTkxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjU1LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTIxVDE5OjI2OjQxLjc0OTIyMDUyMVoiLCJTZXEiOjE4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIwMTc5MzUwNSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiS1ZNXCIsXG4gICAgXCJLVk1fSU5URUxcIixcbiAgICBcIktWTV9BTURcIixcbiAgICBcIktWTV9TTU1cIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJzdm1fbGVhdmVfc21tXCIsXG4gICAgXCJ2bXhfbGVhdmVfc21tXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgS1ZNJ3MgaGFuZGxpbmcgb2YgbmVzdGVkIHZpcnR1YWxpemF0aW9uIHN0YXRlIGR1cmluZyBTeXN0ZW0gTWFuYWdlbWVudCBNb2RlIChTTU0pIHRyYW5zaXRpb25zLiBTcGVjaWZpY2FsbHksIGl0IGNoYW5nZXMgdGhlIGBuZXN0ZWRfcnVuX3BlbmRpbmdgIHN0YXRlIHRvIGBLVk1fTkVTVEVEX1JVTl9QRU5ESU5HX1VOVFJVU1RFRGAgd2hlbiBsZWF2aW5nIFNNTSBpbiBib3RoIFNWTSBhbmQgVk1YLCBhbmQgdXBkYXRlcyB0aGUgZXhpdCBoYW5kbGVyIGluIFZNWCB0byBjaGVjayBmb3IgdGhlIGV4YWN0IGBLVk1fTkVTVEVEX1JVTl9QRU5ESU5HYCBzdGF0ZS4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBjb3JlIEtWTSBsb2dpYyB0aGF0IGFmZmVjdHMgbmVzdGVkIHZpcnR1YWxpemF0aW9uIGFuZCBTTU0sIG1ha2luZyBpdCB3b3J0aCBmdXp6aW5nLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIktWTVwiLFxuICAgIFwiS1ZNX0lOVEVMXCIsXG4gICAgXCJLVk1fQU1EXCIsXG4gICAgXCJLVk1fU01NXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwic3ZtX2xlYXZlX3NtbVwiLFxuICAgIFwidm14X2xlYXZlX3NtbVwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIEtWTSdzIGhhbmRsaW5nIG9mIG5lc3RlZCB2aXJ0dWFsaXphdGlvbiBzdGF0ZSBkdXJpbmcgU3lzdGVtIE1hbmFnZW1lbnQgTW9kZSAoU01NKSB0cmFuc2l0aW9ucy4gU3BlY2lmaWNhbGx5LCBpdCBjaGFuZ2VzIHRoZSBgbmVzdGVkX3J1bl9wZW5kaW5nYCBzdGF0ZSB0byBgS1ZNX05FU1RFRF9SVU5fUEVORElOR19VTlRSVVNURURgIHdoZW4gbGVhdmluZyBTTU0gaW4gYm90aCBTVk0gYW5kIFZNWCwgYW5kIHVwZGF0ZXMgdGhlIGV4aXQgaGFuZGxlciBpbiBWTVggdG8gY2hlY2sgZm9yIHRoZSBleGFjdCBgS1ZNX05FU1RFRF9SVU5fUEVORElOR2Agc3RhdGUuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgY29yZSBLVk0gbG9naWMgdGhhdCBhZmZlY3RzIG5lc3RlZCB2aXJ0dWFsaXphdGlvbiBhbmQgU01NLCBtYWtpbmcgaXQgd29ydGggZnV6emluZy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLmR1cmF0aW9uIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnTGxtVG9rZW4gPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS50b2tlbnMgLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdUb29sRHVyID0gc3RhdHMudG9vbC5jb3VudCA+IDAgPyAoc3RhdHMudG9vbC5kdXJhdGlvbiAvIHN0YXRzLnRvb2wuY291bnQpLnRvRml4ZWQoMikgOiAwOwoKCQkJY29uc3QgbGxtU3VtYXJ5Q2VsbHMgPSBbc3RhdHMubGxtLmNvdW50LCBzdGF0cy5sbG0udG9rZW5zLCBhdmdMbG1Ub2tlbiwgc3RhdHMubGxtLmR1cmF0aW9uLCBhdmdMbG1EdXJdOwoJCQljb25zdCB0b29sU3VtbWFyeUNlbGxzID0gW3N0YXRzLnRvb2wuY291bnQsIHN0YXRzLnRvb2wuZHVyYXRpb24sIGF2Z1Rvb2xEdXJdOwoKCQkJY29uc3QgbGxtU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbGxtX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQlsbG1TdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgbGxtVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQlsbG1TdW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJbGxtVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJbGxtU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQobGxtVHIpOwoKCQkJY29uc3QgdG9vbFN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rvb2xfc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgdG9vbFRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJdG9vbFN1bW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJdG9vbFRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZCh0b29sVHIpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBmaWx0ZXJlZFN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBbImxsbSIsICJ0b29sIl0uaW5jbHVkZXMoZC5UeXBlKSk7CgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ0R1cmF0aW9uJyk7CgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7IAoKCQkJZmlsdGVyZWRTdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJCgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsKCQkJCWxldCB0b29sdGlwID0gcy5OYW1lOwoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIgJiYgcy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoJCQkJZGF0YS5hZGRSb3coW2Ake3MuU2VxfWAsIGR1ciwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1RpbWUgQ29uc3VtcHRpb24gb2YgTExNL1Rvb2wgQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTS9Ub29sIFN0ZXBzJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ1NlY29uZHMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2R1cmF0aW9uX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBsbG1TdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gZC5UeXBlID09PSAibGxtIik7CgkJCWlmIChsbG1TdGVwcy5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwkJCQoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ1Rva2VucycpOwkJCQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICdzdHlsZSd9KTsJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7CQoKCQkJY29uc3QgYWdlbnRDb2xvcnMgPSB7fTsKCQkJY29uc3QgcGFsZXR0ZSA9IFsnIzQyODVGNCcsICcjREI0NDM3JywgJyNGNEI0MDAnLCAnIzBGOUQ1OCcsICcjQUI0N0JDJywgJyMwMEFDQzEnXTsKCQkJbGV0IGNvbG9ySWR4ID0gMDsKCQkJY29uc3QgYWdlbnRMTE1Db3VudHMgPSB7fTsKCQkJbGxtU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCWlmICghYWdlbnRDb2xvcnNbcy5OYW1lXSkgewoJCQkJCWFnZW50Q29sb3JzW3MuTmFtZV0gPSBwYWxldHRlW2NvbG9ySWR4ICUgcGFsZXR0ZS5sZW5ndGhdOwoJCQkJCWNvbG9ySWR4Kys7CgkJCQl9CgoJCQkJYWdlbnRMTE1Db3VudHNbcy5OYW1lXSA9IChhZ2VudExMTUNvdW50c1tzLk5hbWVdIHx8IDApICsgMTsKCQkJCWNvbnN0IGxhYmVsID0gYCR7cy5OYW1lfS0ke2FnZW50TExNQ291bnRzW3MuTmFtZV19YDsKCQkJCWNvbnN0IHRvdGFsVG9rZW5zID0gcy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2VuczsKCQkJCWNvbnN0IHN0eWxlID0gYGNvbG9yOiAke2FnZW50Q29sb3JzW3MuTmFtZV19YDsKCQkJCWxldCB0b29sdGlwID0gYFRvdGFsIFRva2VuczogJHt0b3RhbFRva2Vuc31cbihJbjogJHtzLklucHV0VG9rZW5zfSwgT3V0OiAke3MuT3V0cHV0VG9rZW5zfSwgVGhvdWdodHM6ICR7cy5PdXRwdXRUaG91Z2h0c1Rva2Vuc30pYDsKCQkJCWlmIChzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgoJCQkJZGF0YS5hZGRSb3coW2xhYmVsLCB0b3RhbFRva2Vucywgc3R5bGUsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUb2tlbiBDb25zdW1wdGlvbiBieSBMTE0gQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTSBDYWxsIFNlcXVlbmNlJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ0NvbnN1bWVkIFRva2VucycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9rZW5fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCQlsZXQgYWxsRXhwYW5kZWQgPSBmYWxzZTsKCQlmdW5jdGlvbiB0b2dnbGVBbGxEZXRhaWxzKCkgewoJCQlhbGxFeHBhbmRlZCA9ICFhbGxFeHBhbmRlZDsKCQkJZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnZGV0YWlscycpLmZvckVhY2goZCA9PiB7CgkJCQlpZiAoYWxsRXhwYW5kZWQpIGQuc2V0QXR0cmlidXRlKCdvcGVuJywgJycpOwoJCQkJZWxzZSBkLnJlbW92ZUF0dHJpYnV0ZSgnb3BlbicpOwoJCQl9KTsKCQl9Cgk8L3NjcmlwdD4KCgo8L2JvZHk+CjwvaHRtbD4K" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflow42756[0].run-triage(0) Phase: Succeeded StartedAt: 2026-07-21 19:09:09 +0000 UTC FinishedAt: 2026-07-21 19:26:44 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "bpf-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git", "commit_hash": "58717b2a1365d06c8c64b72aa948541b53fe31eb", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "KVM", "KVM_INTEL", "KVM_AMD", "KVM_SMM" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "bpf-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git", "commit_hash": "58717b2a1365d06c8c64b72aa948541b53fe31eb", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "KVM", "KVM_INTEL", "KVM_AMD", "KVM_SMM" ], "series_id": "fbbc2e03-030c-465a-ba2d-af1caa16d92f" }, "track": "KASAN", "fuzz": { "focus": [ "kvm" ], "focus_symbols": [ "svm_leave_smm", "vmx_leave_smm" ], "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+CgkJCTx0ZD4yMDI2LzA3LzIxIDE5OjI1PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0tWTSYjMzQ7LAogICAgJiMzNDtLVk1fSU5URUwmIzM0OywKICAgICYjMzQ7S1ZNX0FNRCYjMzQ7LAogICAgJiMzNDtLVk1fU01NJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7c3ZtX2xlYXZlX3NtbSYjMzQ7LAogICAgJiMzNDt2bXhfbGVhdmVfc21tJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIEtWTSYjMzk7cyBoYW5kbGluZyBvZiBuZXN0ZWQgdmlydHVhbGl6YXRpb24gc3RhdGUgZHVyaW5nIFN5c3RlbSBNYW5hZ2VtZW50IE1vZGUgKFNNTSkgdHJhbnNpdGlvbnMuIFNwZWNpZmljYWxseSwgaXQgY2hhbmdlcyB0aGUgYG5lc3RlZF9ydW5fcGVuZGluZ2Agc3RhdGUgdG8gYEtWTV9ORVNURURfUlVOX1BFTkRJTkdfVU5UUlVTVEVEYCB3aGVuIGxlYXZpbmcgU01NIGluIGJvdGggU1ZNIGFuZCBWTVgsIGFuZCB1cGRhdGVzIHRoZSBleGl0IGhhbmRsZXIgaW4gVk1YIHRvIGNoZWNrIGZvciB0aGUgZXhhY3QgYEtWTV9ORVNURURfUlVOX1BFTkRJTkdgIHN0YXRlLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIGNvcmUgS1ZNIGxvZ2ljIHRoYXQgYWZmZWN0cyBuZXN0ZWQgdmlydHVhbGl6YXRpb24gYW5kIFNNTSwgbWFraW5nIGl0IHdvcnRoIGZ1enppbmcuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjEgMTk6MjU8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCA1MDBmNjIyY2YyZmE2YjIzMjkyMTRjZTZmYTllOWYxMGIyZGZjNjA0XG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFR1ZSBKdWwgMjEgMTk6MjU6MDggMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvYXJjaC94ODYva3ZtL3N2bS9zdm0uYyBiL2FyY2gveDg2L2t2bS9zdm0vc3ZtLmNcbmluZGV4IDRkMmJhY2QwMGVjNGY1Li5mNTQ3NTdiZDgzODIxNSAxMDA2NDRcbi0tLSBhL2FyY2gveDg2L2t2bS9zdm0vc3ZtLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2FyY2gveDg2L2t2bS9zdm0vc3ZtLmNcbkBAIC01MDk2LDcgJiM0Mzs1MDk2LDcgQEAgc3RhdGljIGludCBzdm1fbGVhdmVfc21tKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgY29uc3QgdW5pb24ga3ZtX3NtcmFtICpzbXJhbSlcbiBcdFx0Z290byB1bm1hcF9zYXZlO1xuIFxuIFx0cmV0ID0gMDtcbi1cdHZjcHUtXHUwMDNlYXJjaC5uZXN0ZWRfcnVuX3BlbmRpbmcgPSBLVk1fTkVTVEVEX1JVTl9QRU5ESU5HO1xuJiM0MztcdHZjcHUtXHUwMDNlYXJjaC5uZXN0ZWRfcnVuX3BlbmRpbmcgPSBLVk1fTkVTVEVEX1JVTl9QRU5ESU5HX1VOVFJVU1RFRDtcbiBcbiB1bm1hcF9zYXZlOlxuIFx0a3ZtX3ZjcHVfdW5tYXAodmNwdSwgXHUwMDI2bWFwX3NhdmUpO1xuZGlmZiAtLWdpdCBhL2FyY2gveDg2L2t2bS92bXgvdm14LmMgYi9hcmNoL3g4Ni9rdm0vdm14L3ZteC5jXG5pbmRleCBjYzc1ZmVlYzA1ZGFhNC4uMzMzMDcyY2M5YmNlNGMgMTAwNjQ0XG4tLS0gYS9hcmNoL3g4Ni9rdm0vdm14L3ZteC5jXG4mIzQzOyYjNDM7JiM0MzsgYi9hcmNoL3g4Ni9rdm0vdm14L3ZteC5jXG5AQCAtNjcyMCw3ICYjNDM7NjcyMCw4IEBAIHN0YXRpYyBpbnQgX192bXhfaGFuZGxlX2V4aXQoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCBmYXN0cGF0aF90IGV4aXRfZmFzdHBhdGgpXG4gXHQgKiBpbnZhbGlkIGd1ZXN0IHN0YXRlIHNob3VsZCBuZXZlciBoYXBwZW4gYXMgdGhhdCBtZWFucyBLVk0ga25vd2luZ2x5XG4gXHQgKiBhbGxvd2VkIGEgbmVzdGVkIFZNLUVudGVyIHdpdGggYW4gaW52YWxpZCB2bWNzMTIuICBNb3JlIGJlbG93LlxuIFx0ICovXG4tXHRpZiAoS1ZNX0JVR19PTih2Y3B1LVx1MDAzZWFyY2gubmVzdGVkX3J1bl9wZW5kaW5nLCB2Y3B1LVx1MDAzZWt2bSkpXG4mIzQzO1x0aWYgKEtWTV9CVUdfT04odmNwdS1cdTAwM2VhcmNoLm5lc3RlZF9ydW5fcGVuZGluZyA9PSBLVk1fTkVTVEVEX1JVTl9QRU5ESU5HLFxuJiM0MztcdFx0ICAgICAgIHZjcHUtXHUwMDNla3ZtKSlcbiBcdFx0cmV0dXJuIC1FSU87XG4gXG4gXHRpZiAoaXNfZ3Vlc3RfbW9kZSh2Y3B1KSkge1xuQEAgLTg0MzYsNyAmIzQzOzg0MzcsNyBAQCBpbnQgdm14X2xlYXZlX3NtbShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIGNvbnN0IHVuaW9uIGt2bV9zbXJhbSAqc21yYW0pXG4gXHRcdGlmIChyZXQgIT0gTlZNWF9WTUVOVFJZX1NVQ0NFU1MpXG4gXHRcdFx0cmV0dXJuIDE7XG4gXG4tXHRcdHZjcHUtXHUwMDNlYXJjaC5uZXN0ZWRfcnVuX3BlbmRpbmcgPSBLVk1fTkVTVEVEX1JVTl9QRU5ESU5HO1xuJiM0MztcdFx0dmNwdS1cdTAwM2VhcmNoLm5lc3RlZF9ydW5fcGVuZGluZyA9IEtWTV9ORVNURURfUlVOX1BFTkRJTkdfVU5UUlVTVEVEO1xuIFx0XHR2bXgtXHUwMDNlbmVzdGVkLnNtbS5ndWVzdF9tb2RlID0gZmFsc2U7XG4gXHR9XG4gXHRyZXR1cm4gMDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yMSAxOToyNTwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4xbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5iZXN0LWV4cGVuc2l2ZTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7S1ZNJiMzNDssCiAgICAmIzM0O0tWTV9JTlRFTCYjMzQ7LAogICAgJiMzNDtLVk1fQU1EJiMzNDssCiAgICAmIzM0O0tWTV9TTU0mIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtzdm1fbGVhdmVfc21tJiMzNDssCiAgICAmIzM0O3ZteF9sZWF2ZV9zbW0mIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgS1ZNJiMzOTtzIGhhbmRsaW5nIG9mIG5lc3RlZCB2aXJ0dWFsaXphdGlvbiBzdGF0ZSBkdXJpbmcgU3lzdGVtIE1hbmFnZW1lbnQgTW9kZSAoU01NKSB0cmFuc2l0aW9ucy4gU3BlY2lmaWNhbGx5LCBpdCBjaGFuZ2VzIHRoZSBgbmVzdGVkX3J1bl9wZW5kaW5nYCBzdGF0ZSB0byBgS1ZNX05FU1RFRF9SVU5fUEVORElOR19VTlRSVVNURURgIHdoZW4gbGVhdmluZyBTTU0gaW4gYm90aCBTVk0gYW5kIFZNWCwgYW5kIHVwZGF0ZXMgdGhlIGV4aXQgaGFuZGxlciBpbiBWTVggdG8gY2hlY2sgZm9yIHRoZSBleGFjdCBgS1ZNX05FU1RFRF9SVU5fUEVORElOR2Agc3RhdGUuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgY29yZSBLVk0gbG9naWMgdGhhdCBhZmZlY3RzIG5lc3RlZCB2aXJ0dWFsaXphdGlvbiBhbmQgU01NLCBtYWtpbmcgaXQgd29ydGggZnV6emluZy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lCmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHkKdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy4KClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6Ci0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy4KLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy4KLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuCi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLApldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuCgpJZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoCnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLgoKV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086CjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuCiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLgoyLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS4KICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgogICBEbyBub3QgbGlzdCB0b28gZ2VuZXJpYyBjb25maWdzICh3ZSBhbHJlYWR5IGhhdmUgdGhlbSBlbmFibGVkKS4gT25seSBsaXN0IHRob3NlIHRoYXQKICAgc3BlY2lmaWNhbGx5IGNvdmVyIHRoZSBtb2RpZmllZCBjb2RlLiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3Mgb3V0cHV0IGFycmF5LAogICBhbmQgRE8gTk9UIGFkZCBhICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgNTAwZjYyMmNmMmZhNmIyMzI5MjE0Y2U2ZmE5ZTlmMTBiMmRmYzYwNApBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBUdWUgSnVsIDIxIDE5OjI1OjA4IDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvYXJjaC94ODYva3ZtL3N2bS9zdm0uYyBiL2FyY2gveDg2L2t2bS9zdm0vc3ZtLmMKaW5kZXggNGQyYmFjZDAwZWM0ZjUuLmY1NDc1N2JkODM4MjE1IDEwMDY0NAotLS0gYS9hcmNoL3g4Ni9rdm0vc3ZtL3N2bS5jCiYjNDM7JiM0MzsmIzQzOyBiL2FyY2gveDg2L2t2bS9zdm0vc3ZtLmMKQEAgLTUwOTYsNyAmIzQzOzUwOTYsNyBAQCBzdGF0aWMgaW50IHN2bV9sZWF2ZV9zbW0oc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCBjb25zdCB1bmlvbiBrdm1fc21yYW0gKnNtcmFtKQogCQlnb3RvIHVubWFwX3NhdmU7CiAKIAlyZXQgPSAwOwotCXZjcHUtJmd0O2FyY2gubmVzdGVkX3J1bl9wZW5kaW5nID0gS1ZNX05FU1RFRF9SVU5fUEVORElORzsKJiM0MzsJdmNwdS0mZ3Q7YXJjaC5uZXN0ZWRfcnVuX3BlbmRpbmcgPSBLVk1fTkVTVEVEX1JVTl9QRU5ESU5HX1VOVFJVU1RFRDsKIAogdW5tYXBfc2F2ZToKIAlrdm1fdmNwdV91bm1hcCh2Y3B1LCAmYW1wO21hcF9zYXZlKTsKZGlmZiAtLWdpdCBhL2FyY2gveDg2L2t2bS92bXgvdm14LmMgYi9hcmNoL3g4Ni9rdm0vdm14L3ZteC5jCmluZGV4IGNjNzVmZWVjMDVkYWE0Li4zMzMwNzJjYzliY2U0YyAxMDA2NDQKLS0tIGEvYXJjaC94ODYva3ZtL3ZteC92bXguYwomIzQzOyYjNDM7JiM0MzsgYi9hcmNoL3g4Ni9rdm0vdm14L3ZteC5jCkBAIC02NzIwLDcgJiM0Mzs2NzIwLDggQEAgc3RhdGljIGludCBfX3ZteF9oYW5kbGVfZXhpdChzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIGZhc3RwYXRoX3QgZXhpdF9mYXN0cGF0aCkKIAkgKiBpbnZhbGlkIGd1ZXN0IHN0YXRlIHNob3VsZCBuZXZlciBoYXBwZW4gYXMgdGhhdCBtZWFucyBLVk0ga25vd2luZ2x5CiAJICogYWxsb3dlZCBhIG5lc3RlZCBWTS1FbnRlciB3aXRoIGFuIGludmFsaWQgdm1jczEyLiAgTW9yZSBiZWxvdy4KIAkgKi8KLQlpZiAoS1ZNX0JVR19PTih2Y3B1LSZndDthcmNoLm5lc3RlZF9ydW5fcGVuZGluZywgdmNwdS0mZ3Q7a3ZtKSkKJiM0MzsJaWYgKEtWTV9CVUdfT04odmNwdS0mZ3Q7YXJjaC5uZXN0ZWRfcnVuX3BlbmRpbmcgPT0gS1ZNX05FU1RFRF9SVU5fUEVORElORywKJiM0MzsJCSAgICAgICB2Y3B1LSZndDtrdm0pKQogCQlyZXR1cm4gLUVJTzsKIAogCWlmIChpc19ndWVzdF9tb2RlKHZjcHUpKSB7CkBAIC04NDM2LDcgJiM0Mzs4NDM3LDcgQEAgaW50IHZteF9sZWF2ZV9zbW0oc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCBjb25zdCB1bmlvbiBrdm1fc21yYW0gKnNtcmFtKQogCQlpZiAocmV0ICE9IE5WTVhfVk1FTlRSWV9TVUNDRVNTKQogCQkJcmV0dXJuIDE7CiAKLQkJdmNwdS0mZ3Q7YXJjaC5uZXN0ZWRfcnVuX3BlbmRpbmcgPSBLVk1fTkVTVEVEX1JVTl9QRU5ESU5HOwomIzQzOwkJdmNwdS0mZ3Q7YXJjaC5uZXN0ZWRfcnVuX3BlbmRpbmcgPSBLVk1fTkVTVEVEX1JVTl9QRU5ESU5HX1VOVFJVU1RFRDsKIAkJdm14LSZndDtuZXN0ZWQuc21tLmd1ZXN0X21vZGUgPSBmYWxzZTsKIAl9CiAJcmV0dXJuIDA7CjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzIxIDE5OjI1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIzOTMKCQkJCQkJCW91dHB1dDogMzkKCQkJCQkJCXRob3VnaHRzOiAxNzUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIGEgS1ZNIFBhdGNoIGZvciBOZXN0ZWQgVmlydHVhbGl6YXRpb24qKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgS1ZNIHBhdGNoIHRoYXQmIzM5O3MgdHdlYWtpbmcgdGhlIHg4NiBjb2RlLCBzcGVjaWZpY2FsbHkgdGhlIGBzdm1fbGVhdmVfc21tYCBhbmQgYHZteF9sZWF2ZV9zbW1gIGZ1bmN0aW9ucy4gTXkgaW5pdGlhbCBpbXByZXNzaW9uIGlzIHRoYXQgdGhpcyBpcyBsaWtlbHkgcmVsYXRlZCB0byBpbXByb3Zpbmcgb3IgaGFyZGVuaW5nIG5lc3RlZCB2aXJ0dWFsaXphdGlvbiBzdXBwb3J0LCBzcGVjaWZpY2FsbHkgYXJvdW5kIFN5c3RlbSBNYW5hZ2VtZW50IE1vZGUgKFNNTSkuIFRoZSBjb3JlIGNoYW5nZSBzZWVtcyB0byByZXZvbHZlIGFyb3VuZCBob3cgdGhlIGBuZXN0ZWRfcnVuX3BlbmRpbmdgIGZsYWcgaXMgc2V0IGFuZCBjaGVja2VkIHdpdGhpbiB0aGUgVkNQVSBhcmNoaXRlY3R1cmUuCgpJdCBhcHBlYXJzIHRoZSBvcmlnaW5hbCBjb2RlIGluIGJvdGggZXhpdCBmdW5jdGlvbnMgc2V0IGB2Y3B1LSZndDthcmNoLm5lc3RlZF9ydW5fcGVuZGluZyA9IEtWTV9ORVNURURfUlVOX1BFTkRJTkc7YC4gVGhpcyBwYXRjaCBpcyBjaGFuZ2luZyB0aGF0IHRvIGBLVk1fTkVTVEVEX1JVTl9QRU5ESU5HX1VOVFJVU1RFRGAuIFRoZSBpbXBsaWNhdGlvbnMgb2YgdGhpcyBuZXcgZmxhZyB3YXJyYW50IGZ1cnRoZXIgaW52ZXN0aWdhdGlvbi4gSSYjMzk7bGwgbmVlZCB0byBmaWd1cmUgb3V0IHdoYXQgc2VtYW50aWMgZGlmZmVyZW5jZSBleGlzdHMgYmV0d2VlbiB0aGVzZSB0d28gZmxhZ3MuCgpGdXJ0aGVybW9yZSwgdGhlIGBfX3ZteF9oYW5kbGVfZXhpdGAgZnVuY3Rpb24gaXMgYmVpbmcgbW9kaWZpZWQgdG8gZXhwbGljaXRseSBjaGVjayBmb3IgYHZjcHUtJmd0O2FyY2gubmVzdGVkX3J1bl9wZW5kaW5nID09IEtWTV9ORVNURURfUlVOX1BFTkRJTkdgIHJhdGhlciB0aGFuIGEgc2ltcGxlIGVxdWFsaXR5LiBUaGlzIHN1Z2dlc3RzIHRoYXQgdGhlIGNvZGUgcGF0aCBmb3IgaGFuZGxpbmcgbmVzdGVkIGV4aXRzIGlzIGJlaW5nIG1vcmUgY2FyZWZ1bGx5IGNvbnRyb2xsZWQuIEEgY2hhbmdlIGluIHRoZSBjb25kaXRpb25hbCBsaWtlIHRoaXMgaXMgYW4gaW1tZWRpYXRlIGluZGljYXRvciBvZiBhIHBvdGVudGlhbCBzZWN1cml0eSBjb25jZXJuLiBJJiMzOTtkIG5lZWQgdG8gY29uc2lkZXIgdGhlIHRocmVhdCBtb2RlbCB0byB1bmRlcnN0YW5kIGlmIHRoaXMgbWl0aWdhdGVzIGFuIGF0dGFjaywgb3IgZW5hYmxlcyBmdW5jdGlvbmFsaXR5LgoKSSYjMzk7bGwgbmVlZCB0byBkaWcgaW50byB0aGUgZGVmaW5pdGlvbiBvZiBib3RoIGBLVk1fTkVTVEVEX1JVTl9QRU5ESU5HYCBhbmQgYEtWTV9ORVNURURfUlVOX1BFTkRJTkdfVU5UUlVTVEVEYCB0byBmdWxseSBncmFzcCB0aGUgaW50ZW50IG9mIHRoZXNlIGNoYW5nZXMuIEkmIzM5O2xsIGJlIGxvb2tpbmcgZm9yIHdoZXJlIHRoZXNlIGZsYWdzIGFyZSB1c2VkLCBhbmQgaG93IHRoZWlyIGRpc3RpbmN0IHZhbHVlcyBpbmZsdWVuY2UgdGhlIGNvbnRyb2wgZmxvdywgcGFydGljdWxhcmx5IHdpdGhpbiB0aGUgbmVzdGVkIHZpcnR1YWxpemF0aW9uIGNvbnRleHQuIE15IGh5cG90aGVzaXMgaXMgdGhhdCB0aGlzIHBhdGNoIG1pZ2h0IGJlIGludHJvZHVjaW5nIGEgc3RyaWN0ZXIgbGV2ZWwgb2Ygc2VjdXJpdHkgcmVnYXJkaW5nIG5lc3RlZCB2aXJ0dWFsaXphdGlvbiwgcGVyaGFwcyBieSBjbGFzc2lmeWluZyBuZXN0ZWQgVk1zIGFzIHVudHJ1c3RlZCwgcHJldmVudGluZyByZXNvdXJjZSBvdmVyLWNvbW1pdCwgb3IgcHJvdGVjdGluZyB0aGUgaHlwZXJ2aXNvciBmcm9tIG1hbGljaW91cyBjb2RlLiBIb3dldmVyLCB3aXRob3V0IGEgdGhvcm91Z2ggaW52ZXN0aWdhdGlvbiBvZiB0aGUgc3Vycm91bmRpbmcgY29kZSBhbmQgdGhlIHJlYXNvbmluZyBiZWhpbmQgdGhlc2UgY29uc3RhbnRzLCBJIGNhbiBvbmx5IG1ha2UgZWR1Y2F0ZWQgZ3Vlc3NlcyBhdCB0aGlzIHBvaW50LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzIxIDE5OjI1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O0tWTV9ORVNURURfUlVOX1BFTkRJTkcmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDthcmNoL3g4Ni9rdm0vJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2FyY2gveDg2L2t2bS9zdm0vbmVzdGVkLmM9MTExND1pbnQgbmVzdGVkX3N2bV92bXJ1bihzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXG4tLVxuYXJjaC94ODYva3ZtL3N2bS9uZXN0ZWQuYy0xMTc3LVxuYXJjaC94ODYva3ZtL3N2bS9uZXN0ZWQuYzoxMTc4Olx0dmNwdS1cdTAwM2VhcmNoLm5lc3RlZF9ydW5fcGVuZGluZyA9IEtWTV9ORVNURURfUlVOX1BFTkRJTkc7XG5hcmNoL3g4Ni9rdm0vc3ZtL25lc3RlZC5jLTExNzktXG4tLVxuYXJjaC94ODYva3ZtL3N2bS9uZXN0ZWQuYz0xOTUwPXN0YXRpYyBpbnQgc3ZtX3NldF9uZXN0ZWRfc3RhdGUoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LFxuLS1cbmFyY2gveDg2L2t2bS9zdm0vbmVzdGVkLmMtMjA2NC1cdGlmIChrdm1fc3RhdGUtXHUwMDNlZmxhZ3MgXHUwMDI2IEtWTV9TVEFURV9ORVNURURfUlVOX1BFTkRJTkcpXG5hcmNoL3g4Ni9rdm0vc3ZtL25lc3RlZC5jOjIwNjU6XHRcdHZjcHUtXHUwMDNlYXJjaC5uZXN0ZWRfcnVuX3BlbmRpbmcgPSBLVk1fTkVTVEVEX1JVTl9QRU5ESU5HX1VOVFJVU1RFRDtcbmFyY2gveDg2L2t2bS9zdm0vbmVzdGVkLmMtMjA2Ni1cdGVsc2Vcbi0tXG5hcmNoL3g4Ni9rdm0vc3ZtL3N2bS5jPTUwNDM9c3RhdGljIGludCBzdm1fbGVhdmVfc21tKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgY29uc3QgdW5pb24ga3ZtX3NtcmFtICpzbXJhbSlcbi0tXG5hcmNoL3g4Ni9rdm0vc3ZtL3N2bS5jLTUwOTgtXHRyZXQgPSAwO1xuYXJjaC94ODYva3ZtL3N2bS9zdm0uYzo1MDk5Olx0dmNwdS1cdTAwM2VhcmNoLm5lc3RlZF9ydW5fcGVuZGluZyA9IEtWTV9ORVNURURfUlVOX1BFTkRJTkdfVU5UUlVTVEVEO1xuYXJjaC94ODYva3ZtL3N2bS9zdm0uYy01MTAwLVxuLS1cbmFyY2gveDg2L2t2bS92bXgvbmVzdGVkLmM9Mzc4OD1zdGF0aWMgaW50IG5lc3RlZF92bXhfcnVuKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgYm9vbCBsYXVuY2gpXG4tLVxuYXJjaC94ODYva3ZtL3ZteC9uZXN0ZWQuYy0zODY1LVx0ICovXG5hcmNoL3g4Ni9rdm0vdm14L25lc3RlZC5jOjM4NjY6XHR2Y3B1LVx1MDAzZWFyY2gubmVzdGVkX3J1bl9wZW5kaW5nID0gS1ZNX05FU1RFRF9SVU5fUEVORElORztcbmFyY2gveDg2L2t2bS92bXgvbmVzdGVkLmMtMzg2Ny1cdHZteC1cdTAwM2VuZXN0ZWQuaGFzX3ByZWVtcHRpb25fdGltZXJfZGVhZGxpbmUgPSBmYWxzZTtcbi0tXG5hcmNoL3g4Ni9rdm0vdm14L25lc3RlZC5jPTY5MDI9c3RhdGljIGludCB2bXhfc2V0X25lc3RlZF9zdGF0ZShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsXG4tLVxuYXJjaC94ODYva3ZtL3ZteC9uZXN0ZWQuYy03MDMyLVx0aWYgKGt2bV9zdGF0ZS1cdTAwM2VmbGFncyBcdTAwMjYgS1ZNX1NUQVRFX05FU1RFRF9SVU5fUEVORElORylcbmFyY2gveDg2L2t2bS92bXgvbmVzdGVkLmM6NzAzMzpcdFx0dmNwdS1cdTAwM2VhcmNoLm5lc3RlZF9ydW5fcGVuZGluZyA9IEtWTV9ORVNURURfUlVOX1BFTkRJTkdfVU5UUlVTVEVEO1xuYXJjaC94ODYva3ZtL3ZteC9uZXN0ZWQuYy03MDM0LVx0ZWxzZVxuLS1cbmFyY2gveDg2L2t2bS92bXgvdm14LmM9NjY5Nj1zdGF0aWMgaW50IF9fdm14X2hhbmRsZV9leGl0KHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgZmFzdHBhdGhfdCBleGl0X2Zhc3RwYXRoKVxuLS1cbmFyY2gveDg2L2t2bS92bXgvdm14LmMtNjcyMi1cdCAqL1xuYXJjaC94ODYva3ZtL3ZteC92bXguYzo2NzIzOlx0aWYgKEtWTV9CVUdfT04odmNwdS1cdTAwM2VhcmNoLm5lc3RlZF9ydW5fcGVuZGluZyA9PSBLVk1fTkVTVEVEX1JVTl9QRU5ESU5HLFxuYXJjaC94ODYva3ZtL3ZteC92bXguYy02NzI0LVx0XHQgICAgICAgdmNwdS1cdTAwM2Vrdm0pKVxuLS1cbmFyY2gveDg2L2t2bS92bXgvdm14LmM9ODQyMT1pbnQgdm14X2xlYXZlX3NtbShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIGNvbnN0IHVuaW9uIGt2bV9zbXJhbSAqc21yYW0pXG4tLVxuYXJjaC94ODYva3ZtL3ZteC92bXguYy04NDM5LVxuYXJjaC94ODYva3ZtL3ZteC92bXguYzo4NDQwOlx0XHR2Y3B1LVx1MDAzZWFyY2gubmVzdGVkX3J1bl9wZW5kaW5nID0gS1ZNX05FU1RFRF9SVU5fUEVORElOR19VTlRSVVNURUQ7XG5hcmNoL3g4Ni9rdm0vdm14L3ZteC5jLTg0NDEtXHRcdHZteC1cdTAwM2VuZXN0ZWQuc21tLmd1ZXN0X21vZGUgPSBmYWxzZTtcbi0tXG5hcmNoL3g4Ni9rdm0veDg2LmM9MTE5Mjc9c3RhdGljIGludCBrdm1feDg2X3ZjcHVfcHJlX3J1bihzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXG4tLVxuYXJjaC94ODYva3ZtL3g4Ni5jLTExOTMyLVx0ICovXG5hcmNoL3g4Ni9rdm0veDg2LmM6MTE5MzM6XHRpZiAodmNwdS1cdTAwM2VhcmNoLm5lc3RlZF9ydW5fcGVuZGluZyA9PSBLVk1fTkVTVEVEX1JVTl9QRU5ESU5HKVxuYXJjaC94ODYva3ZtL3g4Ni5jOjExOTM0Olx0XHR2Y3B1LVx1MDAzZWFyY2gubmVzdGVkX3J1bl9wZW5kaW5nID0gS1ZNX05FU1RFRF9SVU5fUEVORElOR19VTlRSVVNURUQ7XG5hcmNoL3g4Ni9rdm0veDg2LmMtMTE5MzUtXG4tLVxuYXJjaC94ODYva3ZtL3g4Ni5oPTE5Nj1zdGF0aWMgaW5saW5lIHZvaWQga3ZtX3dhcm5fb25fbmVzdGVkX3J1bl9wZW5kaW5nKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSlcbmFyY2gveDg2L2t2bS94ODYuaC0xOTcte1xuYXJjaC94ODYva3ZtL3g4Ni5oOjE5ODpcdFdBUk5fT05fT05DRSh2Y3B1LVx1MDAzZWFyY2gubmVzdGVkX3J1bl9wZW5kaW5nID09IEtWTV9ORVNURURfUlVOX1BFTkRJTkcpO1xuYXJjaC94ODYva3ZtL3g4Ni5oLTE5OS19XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjEgMTk6MjU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDQ5MQoJCQkJCQkJb3V0cHV0OiAzNAoJCQkJCQkJdGhvdWdodHM6IDI0NgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgYSBLVk0gUGF0Y2ggZm9yIE5lc3RlZCBWaXJ0dWFsaXphdGlvbiBhbmQgU01NKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGFuZCBpdCYjMzk7cyBtYWtpbmcgc29tZSBwcmV0dHkgc3BlY2lmaWMgbW9kaWZpY2F0aW9ucyB3aXRoaW4gdGhlIEtWTSBzdWJzeXN0ZW0sIHNwZWNpZmljYWxseSBkZWFsaW5nIHdpdGggbmVzdGVkIHZpcnR1YWxpemF0aW9uIGFuZCBTTU0g4oCTIHRoYXQmIzM5O3MgZGVmaW5pdGVseSBpbnRlcmVzdGluZy4gRnJvbSB3aGF0IEkgY2FuIHNlZSwgaXQmIzM5O3MgY2hhbmdpbmcgaG93IGB2Y3B1LSZndDthcmNoLm5lc3RlZF9ydW5fcGVuZGluZ2AgaXMgaGFuZGxlZCwgc2hpZnRpbmcgZnJvbSBgS1ZNX05FU1RFRF9SVU5fUEVORElOR2AgdG8gYEtWTV9ORVNURURfUlVOX1BFTkRJTkdfVU5UUlVTVEVEYCB3aXRoaW4gdGhlIGBzdm1fbGVhdmVfc21tYCBhbmQgYHZteF9sZWF2ZV9zbW1gIGZ1bmN0aW9ucy4gSSBzZWUgaXQgYWxzbyB0d2Vha3MgYF9fdm14X2hhbmRsZV9leGl0YCB0byBiZSBtb3JlIHByZWNpc2UgYWJvdXQgaXRzIGNoZWNrcy4KCkZ1bmN0aW9uYWxseSwgdGhpcyBpcyBhIGNoYW5nZSB0aGF0JiMzOTtzIGxpa2VseSB0byBpbXBhY3QgaG93IG5lc3RlZCBWTXMgaW50ZXJhY3Qgd2l0aCBTTU0sIGFuZCB0aGF0IG1lYW5zIGl0JiMzOTtzIGEgcHJpbWUgdGFyZ2V0IGZvciBmdXp6aW5nLiBXZSBhYnNvbHV0ZWx5IG5lZWQgdG8gcHV0IHRoaXMgdGhyb3VnaCBpdHMgcGFjZXMuCgpOb3csIGxldCYjMzk7cyBzZWUsIHdoZXJlIGlzIHRoaXMgY29kZT8gQWgsIGl0IGxvb2tzIGxpa2UgYGFyY2gveDg2L2t2bS9zdm0vc3ZtLmNgIGFuZCBgYXJjaC94ODYva3ZtL3ZteC92bXguY2AgYXJlIHdoZXJlIHRoZSBhY3Rpb24gaXMgaGFwcGVuaW5nLiBBbHJpZ2h0LCBzbyB3ZSYjMzk7cmUgbG9va2luZyBhdCB0aGluZ3MgdGhhdCB3aWxsIGRlcGVuZCBvbiBgS1ZNYCwgYEtWTV9BTURgLCBhbmQgYEtWTV9JTlRFTGAuIE5lc3RlZCB2aXJ0dWFsaXphdGlvbiBvZnRlbiBoYXMgc29tZSB1bmRlcmx5aW5nIGNvbmZpZ3VyYXRpb24gdG8gY29udHJvbCBpdC4gTGV0IG1lIGp1c3QgY29uZmlybSBpZiB3ZSBuZWVkIHNvbWUgc3BlY2lmaWMgS2NvbmZpZyBvcHRpb25zIGVuYWJsZWQgYmV5b25kIHRoYXQuIFdlJiMzOTtsbCBuZWVkIHRvIGtub3cgd2hpY2ggb3B0aW9ucyBhcmUgaW4gcGxheSB0byB0cmlnZ2VyIHRoaXMuIFRoaXMgZGVmaW5pdGVseSBuZWVkcyBtb3JlIGludmVzdGlnYXRpb24uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjEgMTk6MjU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIEtWTSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2FyY2gveDg2L2t2bS9LY29uZmlnJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2FyY2gveDg2L2t2bS9LY29uZmlnPTE4PWlmIFZJUlRVQUxJWkFUSU9OXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0xOS1cbmFyY2gveDg2L2t2bS9LY29uZmlnOjIwOmNvbmZpZyBLVk1fWDg2XG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0yMS1cdGRlZl90cmlzdGF0ZSBLVk0gaWYgKEtWTV9JTlRFTCAhPSBuIHx8IEtWTV9BTUQgIT0gbilcbi0tXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy01MS1cbmFyY2gveDg2L2t2bS9LY29uZmlnOjUyOmNvbmZpZyBLVk1cbmFyY2gveDg2L2t2bS9LY29uZmlnLTUzLVx0dHJpc3RhdGUgXCYjMzQ7S2VybmVsLWJhc2VkIFZpcnR1YWwgTWFjaGluZSAoS1ZNKSBzdXBwb3J0XCYjMzQ7XG4tLVxuYXJjaC94ODYva3ZtL0tjb25maWctNjgtXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZzo2OTpjb25maWcgS1ZNX1dFUlJPUlxuYXJjaC94ODYva3ZtL0tjb25maWctNzAtXHRib29sIFwmIzM0O0NvbXBpbGUgS1ZNIHdpdGggLVdlcnJvclwmIzM0O1xuLS1cbmFyY2gveDg2L2t2bS9LY29uZmlnLTgyLVxuYXJjaC94ODYva3ZtL0tjb25maWc6ODM6Y29uZmlnIEtWTV9TV19QUk9URUNURURfVk1cbmFyY2gveDg2L2t2bS9LY29uZmlnLTg0LVx0Ym9vbCBcJiMzNDtFbmFibGUgc3VwcG9ydCBmb3IgS1ZNIHNvZnR3YXJlLXByb3RlY3RlZCBWTXNcJiMzNDtcbi0tXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy05NS1cbmFyY2gveDg2L2t2bS9LY29uZmlnOjk2OmNvbmZpZyBLVk1fSU5URUxcbmFyY2gveDg2L2t2bS9LY29uZmlnLTk3LVx0dHJpc3RhdGUgXCYjMzQ7S1ZNIGZvciBJbnRlbCAoYW5kIGNvbXBhdGlibGUpIHByb2Nlc3NvcnMgc3VwcG9ydFwmIzM0O1xuLS1cbmFyY2gveDg2L2t2bS9LY29uZmlnLTEwNi1cbmFyY2gveDg2L2t2bS9LY29uZmlnOjEwNzpjb25maWcgS1ZNX0lOVEVMX1BST1ZFX1ZFXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0xMDgtICAgICAgICBib29sIFwmIzM0O0NoZWNrIHRoYXQgZ3Vlc3RzIGRvIG5vdCByZWNlaXZlICNWRSBleGNlcHRpb25zXCYjMzQ7XG4tLVxuYXJjaC94ODYva3ZtL0tjb25maWc9MTIyPWNvbmZpZyBYODZfU0dYX0tWTVxuLS1cbmFyY2gveDg2L2t2bS9LY29uZmlnLTEzMy1cbmFyY2gveDg2L2t2bS9LY29uZmlnOjEzNDpjb25maWcgS1ZNX0lOVEVMX1REWFxuYXJjaC94ODYva3ZtL0tjb25maWctMTM1LVx0Ym9vbCBcJiMzNDtJbnRlbCBUcnVzdCBEb21haW4gRXh0ZW5zaW9ucyAoVERYKSBzdXBwb3J0XCYjMzQ7XG4tLVxuYXJjaC94ODYva3ZtL0tjb25maWctMTQ1LVxuYXJjaC94ODYva3ZtL0tjb25maWc6MTQ2OmNvbmZpZyBLVk1fQU1EXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0xNDctXHR0cmlzdGF0ZSBcJiMzNDtLVk0gZm9yIEFNRCBwcm9jZXNzb3JzIHN1cHBvcnRcJiMzNDtcbi0tXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0xNTUtXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZzoxNTY6Y29uZmlnIEtWTV9BTURfU0VWXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0xNTctXHRib29sIFwmIzM0O0FNRCBTZWN1cmUgRW5jcnlwdGVkIFZpcnR1YWxpemF0aW9uIChTRVYpIHN1cHBvcnRcJiMzNDtcbi0tXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0xNzEtXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZzoxNzI6Y29uZmlnIEtWTV9JT0FQSUNcbmFyY2gveDg2L2t2bS9LY29uZmlnLTE3My1cdGJvb2wgXCYjMzQ7SS9PIEFQSUMsIFBJQywgYW5kIFBJVCBlbXVsYXRpb25cJiMzNDtcbi0tXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0xODEtXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZzoxODI6Y29uZmlnIEtWTV9TTU1cbmFyY2gveDg2L2t2bS9LY29uZmlnLTE4My1cdGJvb2wgXCYjMzQ7U3lzdGVtIE1hbmFnZW1lbnQgTW9kZSBlbXVsYXRpb25cJiMzNDtcbi0tXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0xOTItXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZzoxOTM6Y29uZmlnIEtWTV9IWVBFUlZcbmFyY2gveDg2L2t2bS9LY29uZmlnLTE5NC1cdGJvb2wgXCYjMzQ7U3VwcG9ydCBmb3IgTWljcm9zb2Z0IEh5cGVyLVYgZW11bGF0aW9uXCYjMzQ7XG4tLVxuYXJjaC94ODYva3ZtL0tjb25maWctMjA2LVxuYXJjaC94ODYva3ZtL0tjb25maWc6MjA3OmNvbmZpZyBLVk1fWEVOXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0yMDgtXHRib29sIFwmIzM0O1N1cHBvcnQgZm9yIFhlbiBoeXBlcmNhbGwgaW50ZXJmYWNlXCYjMzQ7XG4tLVxuYXJjaC94ODYva3ZtL0tjb25maWctMjE1LVxuYXJjaC94ODYva3ZtL0tjb25maWc6MjE2OmNvbmZpZyBLVk1fUFJPVkVfTU1VXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0yMTctXHRib29sIFwmIzM0O1Byb3ZlIEtWTSBNTVUgY29ycmVjdG5lc3NcJiMzNDtcbi0tXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0yMjgtXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZzoyMjk6Y29uZmlnIEtWTV9FWFRFUk5BTF9XUklURV9UUkFDS0lOR1xuYXJjaC94ODYva3ZtL0tjb25maWctMjMwLVx0Ym9vbFxuYXJjaC94ODYva3ZtL0tjb25maWctMjMxLVxuYXJjaC94ODYva3ZtL0tjb25maWc6MjMyOmNvbmZpZyBLVk1fTUFYX05SX1ZDUFVTXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0yMzMtXHRpbnQgXCYjMzQ7TWF4aW11bSBudW1iZXIgb2YgdkNQVXMgcGVyIEtWTSBndWVzdFwmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzIxIDE5OjI1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDYzMjgKCQkJCQkJCW91dHB1dDogMzcKCQkJCQkJCXRob3VnaHRzOiA5OAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB0aG91Z2h0IHByb2Nlc3MsIGFzIGlmIEkgd2VyZSByZXZpZXdpbmcgdGhpcyBjb2RlOgoKKipBbmFseXppbmcgUG90ZW50aWFsIFNNTSBFbXVsYXRpb24gUGF0Y2gqKgoKT2theSwgc28gdGhpcyBwYXRjaCBpcyB0b3VjaGluZyBgc3ZtX2xlYXZlX3NtbWAgYW5kIGB2bXhfbGVhdmVfc21tYC4gVGhvc2UgYXJlIHByZXR0eSBmdW5kYW1lbnRhbCBmdW5jdGlvbnMgcmVsYXRlZCB0byBTTU0gZW11bGF0aW9uLCB3aGljaCBpbW1lZGlhdGVseSBjYXRjaGVzIG15IGF0dGVudGlvbi4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGNvbnRleHQuIFNpbmNlIHRoZXNlIGZ1bmN0aW9ucyBhcmUgbGlrZWx5IGludm9sdmVkIGluIHRyYW5zaXRpb25pbmcgaW4gb3Igb3V0IG9mIFNNTSBpbiBhIHZpcnR1YWxpemVkIGVudmlyb25tZW50LCBJIG5lZWQgdG8gY29uZmlybSB3aGV0aGVyIHRoZSBjaGFuZ2VzIGFyZSBpc29sYXRlZCB0byBhIHBhcnRpY3VsYXIgY29uZmlndXJhdGlvbi4gVGhlIG5leHQgc3RlcCBpcyB0byBleGFtaW5lIHRoZSBLY29uZmlnIGZpbGUgaW4gYGFyY2gveDg2L2t2bS9LY29uZmlnYCB0byBzZWUgd2hhdCBjb25maWd1cmF0aW9uIG9wdGlvbnMgbWlnaHQgYWZmZWN0IHRoZXNlIGZ1bmN0aW9ucy4gSeKAmW0gYmV0dGluZyB0aGlzIGludm9sdmVzIHRoZSBgS1ZNX1NNTWAgY29uZmlnLiBMZXQmIzM5O3MgdmVyaWZ5IHRoYXQgYHN2bV9sZWF2ZV9zbW1gIGFuZCBgdm14X2xlYXZlX3NtbWAgYXJlIGluZGVlZCBndWFyZGVkIGJ5IGBLVk1fU01NYC4gSWYgc28sIEkgY2FuIHJlc3RyaWN0IG15IGZvY3VzIHRvIHRoZSBjb2RlIHBhdGhzIHRha2VuIHdoZW4gS1ZNIFNNTSBpcyBlbmFibGVkLiBUaGlzIHdpbGwgaGVscCBuYXJyb3cgdGhlIHNjb3BlIG9mIHRoZSBpbXBhY3Qgb2YgdGhpcyBwYXRjaC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD44LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yMSAxOToyNTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtzdm1fbGVhdmVfc21tJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7YXJjaC94ODYva3ZtL3N2bS8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7YXJjaC94ODYva3ZtL3N2bS9zdm0uYz00OTk0PXN0YXRpYyBpbnQgc3ZtX2VudGVyX3NtbShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHVuaW9uIGt2bV9zbXJhbSAqc21yYW0pXG4tLVxuYXJjaC94ODYva3ZtL3N2bS9zdm0uYy01MDQyLVxuYXJjaC94ODYva3ZtL3N2bS9zdm0uYzo1MDQzOnN0YXRpYyBpbnQgc3ZtX2xlYXZlX3NtbShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIGNvbnN0IHVuaW9uIGt2bV9zbXJhbSAqc21yYW0pXG5hcmNoL3g4Ni9rdm0vc3ZtL3N2bS5jLTUwNDQte1xuLS1cbmFyY2gveDg2L2t2bS9zdm0vc3ZtLmM9NTMyNT1zdHJ1Y3Qga3ZtX3g4Nl9vcHMgc3ZtX3g4Nl9vcHMgX19pbml0ZGF0YSA9IHtcbi0tXG5hcmNoL3g4Ni9rdm0vc3ZtL3N2bS5jLTU0MzctXHQuZW50ZXJfc21tID0gc3ZtX2VudGVyX3NtbSxcbmFyY2gveDg2L2t2bS9zdm0vc3ZtLmM6NTQzODpcdC5sZWF2ZV9zbW0gPSBzdm1fbGVhdmVfc21tLFxuYXJjaC94ODYva3ZtL3N2bS9zdm0uYy01NDM5LVx0LmVuYWJsZV9zbWlfd2luZG93ID0gc3ZtX2VuYWJsZV9zbWlfd2luZG93LFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzIxIDE5OjI1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDcwMDMKCQkJCQkJCW91dHB1dDogMzYKCQkJCQkJCXRob3VnaHRzOiAzMgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipJbnZlc3RpZ2F0aW5nIENvbmRpdGlvbmFsIENvbXBpbGF0aW9uIGluIEtWTSoqCgpPa2F5LCBzbyBJIG5lZWQgdG8gZmlndXJlIG91dCB3aHkgdGhlc2UgZnVuY3Rpb25zIG1pZ2h0IGJlIGJlaGF2aW5nIGFzIHRoZXkgYXJlLiBNeSBpbW1lZGlhdGUgdGhvdWdodCBpcywgbGV0JiMzOTtzIGRyaWxsIGRvd24gaW50byB0aGUgS1ZNIHNvdXJjZSBjb2RlLiBNeSBpbnR1aXRpb24sIGJhc2VkIG9uIHByZXZpb3VzIGV4cGVyaWVuY2UsIHBvaW50cyBtZSB0b3dhcmRzIGNvbmRpdGlvbmFsIGNvbXBpbGF0aW9uLiBJIHN1c3BlY3QgdGhhdCB0aGUgcHJlc2VuY2Ugb3IgYWJzZW5jZSBvZiB0aGVzZSBmdW5jdGlvbnMsIG9yIHRoZWlyIHNwZWNpZmljIGltcGxlbWVudGF0aW9ucywgbWlnaHQgaGluZ2Ugb24gdGhlIGBDT05GSUdfS1ZNX1NNTWAgY29uZmlndXJhdGlvbiBvcHRpb24uIFRoZXJlZm9yZSwgbXkgZmlyc3Qgc3RlcCBpcyB0byBjYXJlZnVsbHkgZXhhbWluZSBgc3ZtLmNgIGFuZCBgdm14LmNgIOKAkyB0aGV5IGFyZSB0aGUgb2J2aW91cyBwbGFjZXMgd2hlcmUgdGhpcyBraW5kIG9mIHByb2Nlc3Nvci1zcGVjaWZpYyBjb2RlIHdvdWxkIHJlc2lkZS4gSSBuZWVkIHRvIGdyZXAgYW5kIHZlcmlmeSBpZiB0aGlzIGNvbmZpZ3VyYXRpb24gdmFyaWFibGUgaXMgdXNlZCB0byBkZWNpZGUgd2hldGhlciB0aGUgcmVsZXZhbnQgZnVuY3Rpb25zIGFyZSBpbmNsdWRlZCBpbiB0aGUgY29tcGlsYXRpb24gcHJvY2VzcyBvciBub3QuIEl0JiMzOTtzIGEgY2xhc3NpYyBjaGVjaywgYW5kIHRoZSBmaXJzdCBwbGFjZSBJJiMzOTtkIGxvb2suIFRoaXMgYXBwcm9hY2ggYWxsb3dzIG1lIHRvIHBpbnBvaW50IHdoZXJlIHRoaXMgY29uZGl0aW9uYWwgYmVoYXZpb3IgaXMgY29udHJvbGxlZC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjEgMTk6MjU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Q09ORklHX0tWTV9TTU0mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDthcmNoL3g4Ni9rdm0vJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2FyY2gveDg2L2t2bS9NYWtlZmlsZT0xND1rdm0tJChDT05GSUdfS1ZNX1hFTilcdCYjNDM7PSB4ZW4ub1xuYXJjaC94ODYva3ZtL01ha2VmaWxlOjE1Omt2bS0kKENPTkZJR19LVk1fU01NKVx0JiM0Mzs9IHNtbS5vXG5hcmNoL3g4Ni9rdm0vTWFrZWZpbGUtMTYtXG4tLVxuYXJjaC94ODYva3ZtL3NtbS5oLTYtXG5hcmNoL3g4Ni9rdm0vc21tLmg6NzojaWZkZWYgQ09ORklHX0tWTV9TTU1cbmFyY2gveDg2L2t2bS9zbW0uaC04LVxuLS1cbmFyY2gveDg2L2t2bS9zdm0vbmVzdGVkLmM9MTcyNT1zdGF0aWMgaW50IHN2bV9jaGVja19uZXN0ZWRfZXZlbnRzKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSlcbi0tXG5hcmNoL3g4Ni9rdm0vc3ZtL25lc3RlZC5jLTE3NjYtXG5hcmNoL3g4Ni9rdm0vc3ZtL25lc3RlZC5jOjE3Njc6I2lmZGVmIENPTkZJR19LVk1fU01NXG5hcmNoL3g4Ni9rdm0vc3ZtL25lc3RlZC5jLTE3NjgtXHRpZiAodmNwdS1cdTAwM2VhcmNoLnNtaV9wZW5kaW5nIFx1MDAyNlx1MDAyNiAhc3ZtX3NtaV9ibG9ja2VkKHZjcHUpKSB7XG4tLVxuYXJjaC94ODYva3ZtL3N2bS9zdm0uYz0yMTQ4PXN0YXRpYyBpbnQgc2h1dGRvd25faW50ZXJjZXB0aW9uKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSlcbi0tXG5hcmNoL3g4Ni9rdm0vc3ZtL3N2bS5jLTIxNjYtXHRcdGNsZWFyX3BhZ2Uoc3ZtLVx1MDAzZXZtY2IpO1xuYXJjaC94ODYva3ZtL3N2bS9zdm0uYzoyMTY3OiNpZmRlZiBDT05GSUdfS1ZNX1NNTVxuYXJjaC94ODYva3ZtL3N2bS9zdm0uYy0yMTY4LVx0XHRpZiAoaXNfc21tKHZjcHUpKVxuLS1cbmFyY2gveDg2L2t2bS9zdm0vc3ZtLmM9NDY4NT1zdGF0aWMgYm9vbCBzdm1faGFzX2VtdWxhdGVkX21zcihzdHJ1Y3Qga3ZtICprdm0sIHUzMiBpbmRleClcbi0tXG5hcmNoL3g4Ni9rdm0vc3ZtL3N2bS5jLTQ2OTEtXHRjYXNlIE1TUl9JQTMyX1NNQkFTRTpcbmFyY2gveDg2L2t2bS9zdm0vc3ZtLmM6NDY5MjpcdFx0aWYgKCFJU19FTkFCTEVEKENPTkZJR19LVk1fU01NKSlcbmFyY2gveDg2L2t2bS9zdm0vc3ZtLmMtNDY5My1cdFx0XHRyZXR1cm4gZmFsc2U7XG4tLVxuYXJjaC94ODYva3ZtL3N2bS9zdm0uYz00OTYwPXN0YXRpYyB2b2lkIHN2bV9zZXR1cF9tY2Uoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxuLS1cbmFyY2gveDg2L2t2bS9zdm0vc3ZtLmMtNDk2NS1cbmFyY2gveDg2L2t2bS9zdm0vc3ZtLmM6NDk2NjojaWZkZWYgQ09ORklHX0tWTV9TTU1cbmFyY2gveDg2L2t2bS9zdm0vc3ZtLmMtNDk2Ny1ib29sIHN2bV9zbWlfYmxvY2tlZChzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXG4tLVxuYXJjaC94ODYva3ZtL3N2bS9zdm0uYz01MzI1PXN0cnVjdCBrdm1feDg2X29wcyBzdm1feDg2X29wcyBfX2luaXRkYXRhID0ge1xuLS1cbmFyY2gveDg2L2t2bS9zdm0vc3ZtLmMtNTQzNC1cbmFyY2gveDg2L2t2bS9zdm0vc3ZtLmM6NTQzNTojaWZkZWYgQ09ORklHX0tWTV9TTU1cbmFyY2gveDg2L2t2bS9zdm0vc3ZtLmMtNTQzNi1cdC5zbWlfYWxsb3dlZCA9IHN2bV9zbWlfYWxsb3dlZCxcbi0tXG5hcmNoL3g4Ni9rdm0vdm14L21haW4uYz0yMTA9c3RhdGljIGludCB2dF9jb21wbGV0ZV9lbXVsYXRlZF9tc3Ioc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCBpbnQgZXJyKVxuLS1cbmFyY2gveDg2L2t2bS92bXgvbWFpbi5jLTIxNy1cbmFyY2gveDg2L2t2bS92bXgvbWFpbi5jOjIxODojaWZkZWYgQ09ORklHX0tWTV9TTU1cbmFyY2gveDg2L2t2bS92bXgvbWFpbi5jLTIxOS1zdGF0aWMgaW50IHZ0X3NtaV9hbGxvd2VkKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgYm9vbCBmb3JfaW5qZWN0aW9uKVxuLS1cbmFyY2gveDg2L2t2bS92bXgvbWFpbi5jPTg4MD1zdHJ1Y3Qga3ZtX3g4Nl9vcHMgdnRfeDg2X29wcyBfX2luaXRkYXRhID0ge1xuLS1cbmFyY2gveDg2L2t2bS92bXgvbWFpbi5jLTEwMDktXG5hcmNoL3g4Ni9rdm0vdm14L21haW4uYzoxMDEwOiNpZmRlZiBDT05GSUdfS1ZNX1NNTVxuYXJjaC94ODYva3ZtL3ZteC9tYWluLmMtMTAxMS1cdC5zbWlfYWxsb3dlZCA9IHZ0X29wKHNtaV9hbGxvd2VkKSxcbi0tXG5hcmNoL3g4Ni9rdm0vdm14L3ZteC5jPTcyMDk9Ym9vbCB2bXhfaGFzX2VtdWxhdGVkX21zcihzdHJ1Y3Qga3ZtICprdm0sIHUzMiBpbmRleClcbi0tXG5hcmNoL3g4Ni9rdm0vdm14L3ZteC5jLTcyMTItXHRjYXNlIE1TUl9JQTMyX1NNQkFTRTpcbmFyY2gveDg2L2t2bS92bXgvdm14LmM6NzIxMzpcdFx0aWYgKCFJU19FTkFCTEVEKENPTkZJR19LVk1fU01NKSlcbmFyY2gveDg2L2t2bS92bXgvdm14LmMtNzIxNC1cdFx0XHRyZXR1cm4gZmFsc2U7XG4tLVxuYXJjaC94ODYva3ZtL3ZteC92bXguYz04MzgxPXZvaWQgdm14X3NldHVwX21jZShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXG4tLVxuYXJjaC94ODYva3ZtL3ZteC92bXguYy04MzkwLVxuYXJjaC94ODYva3ZtL3ZteC92bXguYzo4MzkxOiNpZmRlZiBDT05GSUdfS1ZNX1NNTVxuYXJjaC94ODYva3ZtL3ZteC92bXguYy04MzkyLWludCB2bXhfc21pX2FsbG93ZWQoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCBib29sIGZvcl9pbmplY3Rpb24pXG4tLVxuYXJjaC94ODYva3ZtL3ZteC94ODZfb3BzLmg9MzQ9aW50IHZteF9zZXRfbXNyKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgc3RydWN0IG1zcl9kYXRhICptc3JfaW5mbyk7XG5hcmNoL3g4Ni9rdm0vdm14L3g4Nl9vcHMuaDozNTojaWZkZWYgQ09ORklHX0tWTV9TTU1cbmFyY2gveDg2L2t2bS92bXgveDg2X29wcy5oLTM2LWludCB2bXhfc21pX2FsbG93ZWQoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCBib29sIGZvcl9pbmplY3Rpb24pO1xuLS1cbmFyY2gveDg2L2t2bS94ODYuYz0zODc4PWludCBrdm1fc2V0X21zcl9jb21tb24oc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCBzdHJ1Y3QgbXNyX2RhdGEgKm1zcl9pbmZvKVxuLS1cbmFyY2gveDg2L2t2bS94ODYuYy00MDU4LVx0Y2FzZSBNU1JfSUEzMl9TTUJBU0U6XG5hcmNoL3g4Ni9rdm0veDg2LmM6NDA1OTpcdFx0aWYgKCFJU19FTkFCTEVEKENPTkZJR19LVk1fU01NKSB8fCAhbXNyX2luZm8tXHUwMDNlaG9zdF9pbml0aWF0ZWQpXG5hcmNoL3g4Ni9rdm0veDg2LmMtNDA2MC1cdFx0XHRyZXR1cm4gMTtcbi0tXG5hcmNoL3g4Ni9rdm0veDg2LmM9NDMzNT1pbnQga3ZtX2dldF9tc3JfY29tbW9uKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgc3RydWN0IG1zcl9kYXRhICptc3JfaW5mbylcbi0tXG5hcmNoL3g4Ni9rdm0veDg2LmMtNDQ1NC1cdGNhc2UgTVNSX0lBMzJfU01CQVNFOlxuYXJjaC94ODYva3ZtL3g4Ni5jOjQ0NTU6XHRcdGlmICghSVNfRU5BQkxFRChDT05GSUdfS1ZNX1NNTSkgfHwgIW1zcl9pbmZvLVx1MDAzZWhvc3RfaW5pdGlhdGVkKVxuYXJjaC94ODYva3ZtL3g4Ni5jLTQ0NTYtXHRcdFx0cmV0dXJuIDE7XG4tLVxuYXJjaC94ODYva3ZtL3g4Ni5jPTQ3Njg9aW50IGt2bV92bV9pb2N0bF9jaGVja19leHRlbnNpb24oc3RydWN0IGt2bSAqa3ZtLCBsb25nIGV4dClcbi0tXG5hcmNoL3g4Ni9rdm0veDg2LmMtNDg4Ny1cdGNhc2UgS1ZNX0NBUF9YODZfU01NOlxuYXJjaC94ODYva3ZtL3g4Ni5jOjQ4ODg6XHRcdGlmICghSVNfRU5BQkxFRChDT05GSUdfS1ZNX1NNTSkpXG5hcmNoL3g4Ni9rdm0veDg2LmMtNDg4OS1cdFx0XHRicmVhaztcbi0tXG5hcmNoL3g4Ni9rdm0veDg2LmM9NTU1Nz1zdGF0aWMgdm9pZCBrdm1fdmNwdV9pb2N0bF94ODZfZ2V0X3ZjcHVfZXZlbnRzKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSxcbi0tXG5hcmNoL3g4Ni9rdm0veDg2LmMtNTU2My1cbmFyY2gveDg2L2t2bS94ODYuYzo1NTY0OiNpZmRlZiBDT05GSUdfS1ZNX1NNTVxuYXJjaC94ODYva3ZtL3g4Ni5jLTU1NjUtXHRpZiAoa3ZtX2NoZWNrX3JlcXVlc3QoS1ZNX1JFUV9TTUksIHZjcHUpKVxuLS1cbmFyY2gveDg2L2t2bS94ODYuYy01NjA2LVxuYXJjaC94ODYva3ZtL3g4Ni5jOjU2MDc6I2lmZGVmIENPTkZJR19LVk1fU01NXG5hcmNoL3g4Ni9rdm0veDg2LmMtNTYwOC1cdGV2ZW50cy1cdTAwM2VzbWkuc21tID0gaXNfc21tKHZjcHUpO1xuLS1cbmFyY2gveDg2L2t2bS94ODYuYz01NjI2PXN0YXRpYyBpbnQga3ZtX3ZjcHVfaW9jdGxfeDg2X3NldF92Y3B1X2V2ZW50cyhzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsXG4tLVxuYXJjaC94ODYva3ZtL3g4Ni5jLTU2OTUtXHRpZiAoZXZlbnRzLVx1MDAzZWZsYWdzIFx1MDAyNiBLVk1fVkNQVUVWRU5UX1ZBTElEX1NNTSkge1xuYXJjaC94ODYva3ZtL3g4Ni5jOjU2OTY6I2lmZGVmIENPTkZJR19LVk1fU01NXG5hcmNoL3g4Ni9rdm0veDg2LmMtNTY5Ny1cdFx0aWYgKCEhKHZjcHUtXHUwMDNlYXJjaC5oZmxhZ3MgXHUwMDI2IEhGX1NNTV9NQVNLKSAhPSBldmVudHMtXHUwMDNlc21pLnNtbSkge1xuLS1cbmFyY2gveDg2L2t2bS94ODYuYz04ODQ1PXN0YXRpYyBib29sIGVtdWxhdG9yX2lzX3NtbShzdHJ1Y3QgeDg2X2VtdWxhdGVfY3R4dCAqY3R4dClcbi0tXG5hcmNoL3g4Ni9rdm0veDg2LmMtODg0OS1cbmFyY2gveDg2L2t2bS94ODYuYzo4ODUwOiNpZm5kZWYgQ09ORklHX0tWTV9TTU1cbmFyY2gveDg2L2t2bS94ODYuYy04ODUxLXN0YXRpYyBpbnQgZW11bGF0b3JfbGVhdmVfc21tKHN0cnVjdCB4ODZfZW11bGF0ZV9jdHh0ICpjdHh0KVxuLS1cbmFyY2gveDg2L2t2bS94ODYuYz0xMDYzMz1zdGF0aWMgaW50IGt2bV9jaGVja19hbmRfaW5qZWN0X2V2ZW50cyhzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsXG4tLVxuYXJjaC94ODYva3ZtL3g4Ni5jLTEwNzU5LVx0ICovXG5hcmNoL3g4Ni9rdm0veDg2LmM6MTA3NjA6I2lmZGVmIENPTkZJR19LVk1fU01NXG5hcmNoL3g4Ni9rdm0veDg2LmMtMTA3NjEtXHRpZiAodmNwdS1cdTAwM2VhcmNoLnNtaV9wZW5kaW5nKSB7XG4tLVxuYXJjaC94ODYva3ZtL3g4Ni5jPTExMTEyPXN0YXRpYyBpbnQgdmNwdV9lbnRlcl9ndWVzdChzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXG4tLVxuYXJjaC94ODYva3ZtL3g4Ni5jLTExMjA3LVx0XHRcdGt2bV9wbXVfZGVsaXZlcl9wbWkodmNwdSk7XG5hcmNoL3g4Ni9rdm0veDg2LmM6MTEyMDg6I2lmZGVmIENPTkZJR19LVk1fU01NXG5hcmNoL3g4Ni9rdm0veDg2LmMtMTEyMDktXHRcdGlmIChrdm1fY2hlY2tfcmVxdWVzdChLVk1fUkVRX1NNSSwgdmNwdSkpXG4tLVxuYXJjaC94ODYva3ZtL3g4Ni5jPTExNTY5PWJvb2wga3ZtX3ZjcHVfaGFzX2V2ZW50cyhzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXG4tLVxuYXJjaC94ODYva3ZtL3g4Ni5jLTExNTg1LVxuYXJjaC94ODYva3ZtL3g4Ni5jOjExNTg2OiNpZmRlZiBDT05GSUdfS1ZNX1NNTVxuYXJjaC94ODYva3ZtL3g4Ni5jLTExNTg3LVx0aWYgKGt2bV90ZXN0X3JlcXVlc3QoS1ZNX1JFUV9TTUksIHZjcHUpIHx8XG4tLVxuYXJjaC94ODYva3ZtL3g4Ni5jPTExODE1PWJvb2wga3ZtX2FyY2hfZHlfcnVubmFibGUoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxuLS1cbmFyY2gveDg2L2t2bS94ODYuYy0xMTgyMC1cdGlmIChrdm1fdGVzdF9yZXF1ZXN0KEtWTV9SRVFfTk1JLCB2Y3B1KSB8fFxuYXJjaC94ODYva3ZtL3g4Ni5jOjExODIxOiNpZmRlZiBDT05GSUdfS1ZNX1NNTVxuYXJjaC94ODYva3ZtL3g4Ni5jLTExODIyLVx0XHRrdm1fdGVzdF9yZXF1ZXN0KEtWTV9SRVFfU01JLCB2Y3B1KSB8fFxuLS1cbmFyY2gveDg2L2t2bS94ODYuaD02Mz1zdGF0aWNfYXNzZXJ0KFNJWkVfT0ZfTUVNU0xPVFNfSEFTSFRBQkxFID09XG5hcmNoL3g4Ni9rdm0veDg2Lmg6NjQ6XHQgICAgICAoMTAyNCAqICgxICYjNDM7IElTX0VOQUJMRUQoQ09ORklHX1g4Nl82NCkpICogKDEgJiM0MzsgSVNfRU5BQkxFRChDT05GSUdfS1ZNX1NNTSkpKSk7XG5hcmNoL3g4Ni9rdm0veDg2LmgtNjUtXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzIxIDE5OjI1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDEwNTQyCgkJCQkJCQlvdXRwdXQ6IDM5CgkJCQkJCQl0aG91Z2h0czogMTM3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgS1ZNIFNNTSBQYXRjaCBSZXF1aXJlbWVudHMqKgoKT2theSwgc28gaXQmIzM5O3MgbG9va2luZyBwcmV0dHkgc3RyYWlnaHRmb3J3YXJkLiBUaGUgY29yZSBvZiB0aGlzIHBhdGNoLCB0aGUgcGFydCB0aGF0IGFjdHVhbGx5IGRlYWxzIHdpdGggU2VjdXJlIE1vZGUgTWFuYWdlbWVudCAoU01NKSBzdXBwb3J0LCBoaW5nZXMgb24gYENPTkZJR19LVk1fU01NYC4gTWFrZXMgcGVyZmVjdCBzZW5zZTsgaWYgU01NIHN1cHBvcnQgaXNuJiMzOTt0IGNvbXBpbGVkIGluLCB0aGVuIHRoZSBmdW5jdGlvbnMgcmVsYXRlZCB0byBsZWF2aW5nIFNNTSB3b3VsZG4mIzM5O3QgZXhpc3QgYW5kIG5lZWQgbW9kaWZpY2F0aW9uLiBTcGVjaWZpY2FsbHksIGl0JiMzOTtzIHRoZSBgc3ZtX2xlYXZlX3NtbWAgYW5kIGB2bXhfbGVhdmVfc21tYCBmdW5jdGlvbnMgdGhhdCBhcmUgYmVpbmcgdG91Y2hlZC4gR2l2ZW4gdGhlIG5hbWVzLCB0aG9zZSBhcmUgY2xlYXJseSBhcmNoaXRlY3R1cmUtc3BlY2lmaWM6IEFNRCBTZWN1cmUgVmlydHVhbCBNYWNoaW5lIChTVk0pIGFuZCBJbnRlbCBWaXJ0dWFsIE1hY2hpbmUgRXh0ZW5zaW9ucyAoVk1YKSwgcmVzcGVjdGl2ZWx5LiBBbmQgdGhvc2UgYXJlIG9ubHkgY29tcGlsZWQgaWYgYENPTkZJR19LVk1fU01NYCBpcyBlbmFibGVkLgoKRnVydGhlcm1vcmUsIHRoaXMgYWxzbyBtb2RpZmllcyBgX192bXhfaGFuZGxlX2V4aXRgIHRvbywgd2hpY2ggaXMgaW50ZXJlc3RpbmcuIEkmIzM5O2xsIG5lZWQgdG8gcmVtZW1iZXIgdGhhdCB0aGlzIGNvZGUgaXMgbG9jYXRlZCBpbiBgYXJjaC94ODYva3ZtL3ZteC92bXguY2AuIE9mIGNvdXJzZSwgdGhpcyBtZWFucyB0aGUgb3ZlcmFsbCBwYXRjaCBkZXBlbmRzIG9uIGJvdGggYENPTkZJR19LVk1fSU5URUxgIChmb3IgdGhlIFZNWCBzaWRlKSBhbmQgYENPTkZJR19LVk1fQU1EYCAoZm9yIHRoZSBTVk0gc2lkZSkuIFNvLCB0aGUgYnVpbGQgY29uZmlndXJhdGlvbiBpbXBsaWNhdGlvbnMgYXJlIHByZXR0eSBicm9hZC4KCkFscmlnaHQsIGxldCYjMzk7cyB0YWtlIGEgbG9vayBhdCBgX192bXhfaGFuZGxlX2V4aXRgIGRpcmVjdGx5OyBJJiMzOTtsbCBuZWVkIGEgYmV0dGVyIHVuZGVyc3RhbmRpbmcgb2YgKmhvdyogaXQmIzM5O3MgaW50ZXJhY3Rpbmcgd2l0aCB0aGUgU01NIGV4aXQgcHJvY2VzcyB0byB1bmRlcnN0YW5kIHRoZSBmdWxsIHNjb3BlIG9mIHRoaXMgY2hhbmdlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yMSAxOToyNjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtfX3ZteF9oYW5kbGVfZXhpdCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2FyY2gveDg2L2t2bS92bXgvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2FyY2gveDg2L2t2bS92bXgvdm14LmM9NjQ5MT12b2lkIGR1bXBfdm1jcyhzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXG4tLVxuYXJjaC94ODYva3ZtL3ZteC92bXguYy02Njk1LSAqL1xuYXJjaC94ODYva3ZtL3ZteC92bXguYzo2Njk2OnN0YXRpYyBpbnQgX192bXhfaGFuZGxlX2V4aXQoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCBmYXN0cGF0aF90IGV4aXRfZmFzdHBhdGgpXG5hcmNoL3g4Ni9rdm0vdm14L3ZteC5jLTY2OTcte1xuLS1cbmFyY2gveDg2L2t2bS92bXgvdm14LmM9Njg1Nj1pbnQgdm14X2hhbmRsZV9leGl0KHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgZmFzdHBhdGhfdCBleGl0X2Zhc3RwYXRoKVxuYXJjaC94ODYva3ZtL3ZteC92bXguYy02ODU3LXtcbmFyY2gveDg2L2t2bS92bXgvdm14LmM6Njg1ODpcdGludCByZXQgPSBfX3ZteF9oYW5kbGVfZXhpdCh2Y3B1LCBleGl0X2Zhc3RwYXRoKTtcbmFyY2gveDg2L2t2bS92bXgvdm14LmMtNjg1OS1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjEgMTk6MjY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTEzMjYKCQkJCQkJCW91dHB1dDogMzkKCQkJCQkJCXRob3VnaHRzOiAxMzQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqRm9jdXNpbmcgb24gdGhlIFNNTS9OZXN0ZWQgVmlydHVhbGl6YXRpb24gQnVnKioKCk9rYXksIHNvIHRoZSBpbnZlc3RpZ2F0aW9uIGNvbnRpbnVlcy4gR2l2ZW4gdGhhdCB0aGlzIGJ1ZyBhcHBlYXJzIHRvIGJlIHJlbGF0ZWQgdG8gbmVzdGVkIHZpcnR1YWxpemF0aW9uIGFuZCBpbnRlcmFjdGlvbnMgd2l0aCBTeXN0ZW0gTWFuYWdlbWVudCBNb2RlIChTTU0pLCBJJiMzOTttIGdvaW5nIHRvIHNoaWZ0IG15IGZvY3VzIG9udG8gYSBmZXcga2V5IGZ1bmN0aW9ucy4gTXkgaW5pdGlhbCBpbnN0aW5jdCBpcyB0byBob25lIGluIG9uIGBzdm1fbGVhdmVfc21tYCwgYHZteF9sZWF2ZV9zbW1gLCBhbmQgYF9fdm14X2hhbmRsZV9leGl0YC4gSSBrbm93IHRoYXQgYF9fdm14X2hhbmRsZV9leGl0YCBpcyBhIGhpZ2gtZnJlcXVlbmN5IGZ1bmN0aW9uLCBhIGhvdCBwYXRoIGlmIHlvdSB3aWxsLCBmb3IgVk0gZXhpdHMgaW4gdGhlIFZNWCB3b3JsZCwgYnV0IGJlY2F1c2UgdGhlIGNvbnRleHQgcG9pbnRzIHNwZWNpZmljYWxseSB0byBuZXN0ZWQgdmlydHVhbGl6YXRpb24gYW5kIFNNTSBpbnRlcmFjdGlvbiwgSSBuZWVkIHRvIGxvb2sgY2xvc2VyIGF0IGBzdm1fbGVhdmVfc21tYCBhbmQgYHZteF9sZWF2ZV9zbW1gLiBJJiMzOTtsbCBhbHNvIGJyaW5nIHRoZSBuZXN0ZWQgdmlydHVhbGl6YXRpb24gY29tcG9uZW50cyBpbnRvIHBsYXk7IGxvb2tpbmcgc3BlY2lmaWNhbGx5IGF0IGNhbGxzIGxpa2UgYG5lc3RlZF92bXhfcnVuYCBhbmQgYG5lc3RlZF9zdm1fdm1ydW5gLiBJIHNob3VsZCBzdGFydCBieSBjaGVja2luZyB0aGUgaW1wbGVtZW50YXRpb25zIG9mIGBzdm1fbGVhdmVfc21tYCBhbmQgYHZteF9sZWF2ZV9zbW1gLiBMZXQmIzM5O3MgZGlnIGluLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yMSAxOToyNjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDt2bXhfbGVhdmVfc21tJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7YXJjaC94ODYva3ZtL3ZteC8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7YXJjaC94ODYva3ZtL3ZteC9tYWluLmM9MjM1PXN0YXRpYyBpbnQgdnRfbGVhdmVfc21tKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgY29uc3QgdW5pb24ga3ZtX3NtcmFtICpzbXJhbSlcbi0tXG5hcmNoL3g4Ni9rdm0vdm14L21haW4uYy0yMzktXG5hcmNoL3g4Ni9rdm0vdm14L21haW4uYzoyNDA6XHRyZXR1cm4gdm14X2xlYXZlX3NtbSh2Y3B1LCBzbXJhbSk7XG5hcmNoL3g4Ni9rdm0vdm14L21haW4uYy0yNDEtfVxuLS1cbmFyY2gveDg2L2t2bS92bXgvdm14LmM9ODQwMD1pbnQgdm14X2VudGVyX3NtbShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHVuaW9uIGt2bV9zbXJhbSAqc21yYW0pXG4tLVxuYXJjaC94ODYva3ZtL3ZteC92bXguYy04NDIwLVxuYXJjaC94ODYva3ZtL3ZteC92bXguYzo4NDIxOmludCB2bXhfbGVhdmVfc21tKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgY29uc3QgdW5pb24ga3ZtX3NtcmFtICpzbXJhbSlcbmFyY2gveDg2L2t2bS92bXgvdm14LmMtODQyMi17XG4tLVxuYXJjaC94ODYva3ZtL3ZteC94ODZfb3BzLmg9Mzc9aW50IHZteF9lbnRlcl9zbW0oc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCB1bmlvbiBrdm1fc21yYW0gKnNtcmFtKTtcbmFyY2gveDg2L2t2bS92bXgveDg2X29wcy5oOjM4OmludCB2bXhfbGVhdmVfc21tKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgY29uc3QgdW5pb24ga3ZtX3NtcmFtICpzbXJhbSk7XG5hcmNoL3g4Ni9rdm0vdm14L3g4Nl9vcHMuaC0zOS12b2lkIHZteF9lbmFibGVfc21pX3dpbmRvdyhzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yMSAxOToyNjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMjE4MwoJCQkJCQkJb3V0cHV0OiAzMgoJCQkJCQkJdGhvdWdodHM6IDI0MAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBBbmFseXNpcyBvZiB0aGUgS1ZNIFBhdGNoKioKCk9rYXksIHNvIEkmIzM5O20gZGl2aW5nIGludG8gdGhpcyBLVk0gcGF0Y2gsIGFuZCB0aGUgY29yZSBvZiBpdCBzZWVtcyB0byBiZSBjZW50ZXJlZCBhcm91bmQgYHN2bV9sZWF2ZV9zbW1gIGFuZCBgdm14X2xlYXZlX3NtbWAuIFRob3NlIGFyZSBkZWZpbml0ZWx5IHRoZSBwcmltYXJ5IGZvY3VzLCBzbyBJJiMzOTtsbCBiZSBzdXJlIHRvIGtlZXAgdGhlbSBpbiBtaW5kLiBJIGRpZCBub3RlIHRoYXQgYF9fdm14X2hhbmRsZV9leGl0YCBpcyBhbHNvIGluY2x1ZGVkLCBhbmQgd2hpbGUgdGhhdCYjMzk7cyBhIGhvdCBwYXRoLCB0aGlzIHBhdGNoICpzcGVjaWZpY2FsbHkqIG1vZGlmaWVzIHRob3NlIGZ1bmN0aW9ucywgYWxvbmcgd2l0aCBgc3ZtX2xlYXZlX3NtbWAgYW5kIGB2bXhfbGVhdmVfc21tYCwgc28gSSB3aWxsIGluY2x1ZGUgYWxsIG9mIHRoZW0uCgpOb3csIGxldCYjMzk7cyBsb29rIGF0IHRoZSBuZWNlc3NhcnkgY29uZmlndXJhdGlvbnMuIEkmIzM5O20gZ29pbmcgdG8gbmVlZCB0byBlbmFibGUgYEtWTWAsIGBLVk1fSU5URUxgLCBhbmQgYEtWTV9BTURgLCBvYnZpb3VzbHkuIEFuZCBzaW5jZSB0aGlzIHNlZW1zIHRvIGJlIHRvdWNoaW5nIFNNTSwgYEtWTV9TTU1gIGlzIGxpa2VseSBhbHNvIGNydWNpYWwuIExldCBtZSBqdXN0IGNvbmZpcm0gdGhhdOKApiBZZXAsIGBjb25maWcgS1ZNX1NNTWAgbG9va3MgcmlnaHQuIEdvb2QuCgpIbW0sIHNvbWV0aGluZyYjMzk7cyBqdW1wZWQgb3V0IGF0IG1lLiBUaGUgcGF0Y2ggaXMgYWxzbyBjaGFuZ2luZyBgdmNwdS0mZ3Q7YXJjaC5uZXN0ZWRfcnVuX3BlbmRpbmdgIHRvIGBLVk1fTkVTVEVEX1JVTl9QRU5ESU5HX1VOVFJVU1RFRGAuIFRoYXQmIzM5O3MgYW4gaW50cmlndWluZyBjaGFuZ2UsIGFuZCBpdCAqc2NyZWFtcyogbmVzdGVkIHZpcnR1YWxpemF0aW9uLiBJIG5lZWQgdG8gbWFrZSBzdXJlIEkgdW5kZXJzdGFuZCB0aGUgY29udGV4dC4gTGV0IG1lIHF1aWNrbHkgc2NhbiBgYXJjaC94ODYva3ZtL0tjb25maWdgIHRvIHNlZSBpZiB0aGVyZSBhcmUgYW55IHJlbGF0ZWQgbmVzdGVkIHZpcnR1YWxpemF0aW9uIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyB0aGF0IEkmIzM5O20gbWlzc2luZy4gR290IHRvIGhhdmUgYSBmdWxsIHVuZGVyc3RhbmRpbmcgdG8gZW5zdXJlIHRoaXMgcGF0Y2ggaXMgc291bmQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzIxIDE5OjI2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O25lc3RlZCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2FyY2gveDg2L2t2bS9LY29uZmlnJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2FyY2gveDg2L2t2bS9LY29uZmlnPTEwNz1jb25maWcgS1ZNX0lOVEVMX1BST1ZFX1ZFXG4tLVxuYXJjaC94ODYva3ZtL0tjb25maWctMTE2LSAgICAgICAgICBOb3RlOiBzb21lIENQVXMgYXBwZWFyIHRvIGdlbmVyYXRlIHNwdXJpb3VzIEVQVCBWaW9sYXRpb25zICNWRXNcbmFyY2gveDg2L2t2bS9LY29uZmlnOjExNzogICAgICAgICAgdGhhdCB0cmlnZ2VyIEtWTSYjMzk7cyBXQVJOLCBpbiBwYXJ0aWN1bGFyIHdpdGggZXB0YWQ9MCBhbmQvb3IgbmVzdGVkXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0xMTgtICAgICAgICAgIHZpcnR1YWxpemF0aW9uLlxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE3LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yMSAxOToyNjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMjkyNQoJCQkJCQkJb3V0cHV0OiAxOTEKCQkJCQkJCXRob3VnaHRzOiAyNTUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQW5hbHlzaXMgb2YgdGhpcyBLVk0gTmVzdGVkIFZpcnR1YWxpemF0aW9uIENoYW5nZSoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBhbmQgbXkgaW5pdGlhbCB0aG91Z2h0IGlzLCAmIzM0O0FoLCByaWdodCwgbmVzdGVkIHZpcnR1YWxpemF0aW9uIGluIEtWTS4mIzM0OyBJIGtub3cgdGhlIHVzdWFsIHN1c3BlY3QgZm9yIGVuYWJsaW5nIHRoYXQgaXMgc2V0dGluZyBgbmVzdGVkPTFgIGFzIGEgbW9kdWxlIHBhcmFtZXRlciBmb3IgZWl0aGVyIGBrdm0taW50ZWxgIG9yIGBrdm0tYW1kYC4gSSBkb24mIzM5O3QgcmVjYWxsIHNlZWluZyBhIHNwZWNpZmljIEtjb25maWcgb3B0aW9uIGRlZGljYXRlZCB0byBuZXN0ZWQgdmlydHVhbGl6YXRpb24gZm9yIHg4NiBLVk0uIEkgc2hvdWxkIGRvdWJsZS1jaGVjayBpZiB0aGVyZSBhcmUgYW55IG90aGVyIGNvbmZpZ3VyYXRpb24gZGVwZW5kZW5jaWVzIGJleW9uZCB0aGUgb2J2aW91cy4KClJpZ2h0LCBJIG5lZWQgYEtWTV9TTU1gIGVuYWJsZWQuIFRoYXQgc2VlbXMgY3JpdGljYWwgaGVyZS4KClNvLCBqdXN0IHRvIGJlIGV4cGxpY2l0IGFib3V0IHRoZSBjb25maWd1cmF0aW9uIHJlcXVpcmVtZW50cywgSSYjMzk7bGwgam90IGRvd24gdGhlIHJlcXVpcmVkIEVuYWJsZUNvbmZpZ3M6IGBLVk1gLCBgS1ZNX0lOVEVMYCwgYEtWTV9BTURgLCBhbmQgY3J1Y2lhbGx5LCBgS1ZNX1NNTWAuCgpUaGVuLCBmcm9tIGEgc3ltYm9sIHBlcnNwZWN0aXZlLCBJJiMzOTttIGdvaW5nIHRvIGtlZXAgYW4gZXllIG9uIGBzdm1fbGVhdmVfc21tYCBhbmQgYHZteF9sZWF2ZV9zbW1gLiBJIHN1c3BlY3QgdGhlaXIgaW50ZXJhY3Rpb24gd2l0aCBuZXN0ZWQgdmlydHVhbGl6YXRpb24gaXMgdGhlIGNydXggb2YgdGhlIGlzc3VlLgoKTm93LCBkaWdnaW5nIGludG8gdGhlIHJlYXNvbmluZyBiZWhpbmQgdGhlIGNoYW5nZXMsIGl0IHNlZW1zIHRoaXMgcGF0Y2ggaXMgYWx0ZXJpbmcgaG93IEtWTSBoYW5kbGVzIG5lc3RlZCB2aXJ0dWFsaXphdGlvbiB3aGVuIHRyYW5zaXRpb25pbmcgaW4gYW5kIG91dCBvZiBTeXN0ZW0gTWFuYWdlbWVudCBNb2RlIChTTU0pLiBTcGVjaWZpY2FsbHksIGl0JiMzOTtzIGFib3V0IGNoYW5naW5nIHRoZSBgbmVzdGVkX3J1bl9wZW5kaW5nYCBzdGF0ZSB0byBgS1ZNX05FU1RFRF9SVU5fUEVORElOR19VTlRSVVNURURgIHdoZW4gZXhpdGluZyBTTU0gaW4gYm90aCBTVk0gKEFNRCkgYW5kIFZNWCAoSW50ZWwpIGVudmlyb25tZW50cy4gUGx1cywgdGhlcmUmIzM5O3MgYSBtb2RpZmljYXRpb24gdG8gdGhlIFZNWCBleGl0IGhhbmRsZXIgdG8gc3BlY2lmaWNhbGx5IGNoZWNrIGZvciB0aGUgYEtWTV9ORVNURURfUlVOX1BFTkRJTkdgIHN0YXRlLiBUaGlzIG1ha2VzIHRoZSBjb2RlIHBvdGVudGlhbGx5IHZ1bG5lcmFibGUuIEl0JiMzOTtzIGEgZnVuY3Rpb25hbCBjaGFuZ2Ugd2l0aGluIHRoZSBjb3JlIEtWTSBsb2dpYywgaW1wYWN0aW5nIGJvdGggbmVzdGVkIHZpcnR1YWxpemF0aW9uIGFuZCBTTU0gaW50ZXJhY3Rpb24sIHNvIHRoaXMgaXMgZGVmaW5pdGVseSB3b3J0aCBzb21lIGZ1enppbmcgZWZmb3J0LgoKQWxyaWdodCwgdGltZSB0byBsb2cgdGhlc2UgcmVzdWx0cyEKCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjEgMTk6MjY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0tWTSYjMzQ7LAogICAgJiMzNDtLVk1fSU5URUwmIzM0OywKICAgICYjMzQ7S1ZNX0FNRCYjMzQ7LAogICAgJiMzNDtLVk1fU01NJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7c3ZtX2xlYXZlX3NtbSYjMzQ7LAogICAgJiMzNDt2bXhfbGVhdmVfc21tJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIEtWTSYjMzk7cyBoYW5kbGluZyBvZiBuZXN0ZWQgdmlydHVhbGl6YXRpb24gc3RhdGUgZHVyaW5nIFN5c3RlbSBNYW5hZ2VtZW50IE1vZGUgKFNNTSkgdHJhbnNpdGlvbnMuIFNwZWNpZmljYWxseSwgaXQgY2hhbmdlcyB0aGUgYG5lc3RlZF9ydW5fcGVuZGluZ2Agc3RhdGUgdG8gYEtWTV9ORVNURURfUlVOX1BFTkRJTkdfVU5UUlVTVEVEYCB3aGVuIGxlYXZpbmcgU01NIGluIGJvdGggU1ZNIGFuZCBWTVgsIGFuZCB1cGRhdGVzIHRoZSBleGl0IGhhbmRsZXIgaW4gVk1YIHRvIGNoZWNrIGZvciB0aGUgZXhhY3QgYEtWTV9ORVNURURfUlVOX1BFTkRJTkdgIHN0YXRlLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIGNvcmUgS1ZNIGxvZ2ljIHRoYXQgYWZmZWN0cyBuZXN0ZWQgdmlydHVhbGl6YXRpb24gYW5kIFNNTSwgbWFraW5nIGl0IHdvcnRoIGZ1enppbmcuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0tWTSYjMzQ7LAogICAgJiMzNDtLVk1fSU5URUwmIzM0OywKICAgICYjMzQ7S1ZNX0FNRCYjMzQ7LAogICAgJiMzNDtLVk1fU01NJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7c3ZtX2xlYXZlX3NtbSYjMzQ7LAogICAgJiMzNDt2bXhfbGVhdmVfc21tJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIEtWTSYjMzk7cyBoYW5kbGluZyBvZiBuZXN0ZWQgdmlydHVhbGl6YXRpb24gc3RhdGUgZHVyaW5nIFN5c3RlbSBNYW5hZ2VtZW50IE1vZGUgKFNNTSkgdHJhbnNpdGlvbnMuIFNwZWNpZmljYWxseSwgaXQgY2hhbmdlcyB0aGUgYG5lc3RlZF9ydW5fcGVuZGluZ2Agc3RhdGUgdG8gYEtWTV9ORVNURURfUlVOX1BFTkRJTkdfVU5UUlVTVEVEYCB3aGVuIGxlYXZpbmcgU01NIGluIGJvdGggU1ZNIGFuZCBWTVgsIGFuZCB1cGRhdGVzIHRoZSBleGl0IGhhbmRsZXIgaW4gVk1YIHRvIGNoZWNrIGZvciB0aGUgZXhhY3QgYEtWTV9ORVNURURfUlVOX1BFTkRJTkdgIHN0YXRlLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIGNvcmUgS1ZNIGxvZ2ljIHRoYXQgYWZmZWN0cyBuZXN0ZWQgdmlydHVhbGl6YXRpb24gYW5kIFNNTSwgbWFraW5nIGl0IHdvcnRoIGZ1enppbmcuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wNy0yMVQxOToyNToxMS42OTQ3NjkyMTdaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo5MDI1NjI3MDA0OSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJLVk1cIixcbiAgICBcIktWTV9JTlRFTFwiLFxuICAgIFwiS1ZNX0FNRFwiLFxuICAgIFwiS1ZNX1NNTVwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcInN2bV9sZWF2ZV9zbW1cIixcbiAgICBcInZteF9sZWF2ZV9zbW1cIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyBLVk0ncyBoYW5kbGluZyBvZiBuZXN0ZWQgdmlydHVhbGl6YXRpb24gc3RhdGUgZHVyaW5nIFN5c3RlbSBNYW5hZ2VtZW50IE1vZGUgKFNNTSkgdHJhbnNpdGlvbnMuIFNwZWNpZmljYWxseSwgaXQgY2hhbmdlcyB0aGUgYG5lc3RlZF9ydW5fcGVuZGluZ2Agc3RhdGUgdG8gYEtWTV9ORVNURURfUlVOX1BFTkRJTkdfVU5UUlVTVEVEYCB3aGVuIGxlYXZpbmcgU01NIGluIGJvdGggU1ZNIGFuZCBWTVgsIGFuZCB1cGRhdGVzIHRoZSBleGl0IGhhbmRsZXIgaW4gVk1YIHRvIGNoZWNrIGZvciB0aGUgZXhhY3QgYEtWTV9ORVNURURfUlVOX1BFTkRJTkdgIHN0YXRlLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIGNvcmUgS1ZNIGxvZ2ljIHRoYXQgYWZmZWN0cyBuZXN0ZWQgdmlydHVhbGl6YXRpb24gYW5kIFNNTSwgbWFraW5nIGl0IHdvcnRoIGZ1enppbmcuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTIxVDE5OjI1OjExLjY5NDc4MDEyN1oiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6ODkzODE4ODI5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgNTAwZjYyMmNmMmZhNmIyMzI5MjE0Y2U2ZmE5ZTlmMTBiMmRmYzYwNFxcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgVHVlIEp1bCAyMSAxOToyNTowOCAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9hcmNoL3g4Ni9rdm0vc3ZtL3N2bS5jIGIvYXJjaC94ODYva3ZtL3N2bS9zdm0uY1xcbmluZGV4IDRkMmJhY2QwMGVjNGY1Li5mNTQ3NTdiZDgzODIxNSAxMDA2NDRcXG4tLS0gYS9hcmNoL3g4Ni9rdm0vc3ZtL3N2bS5jXFxuKysrIGIvYXJjaC94ODYva3ZtL3N2bS9zdm0uY1xcbkBAIC01MDk2LDcgKzUwOTYsNyBAQCBzdGF0aWMgaW50IHN2bV9sZWF2ZV9zbW0oc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCBjb25zdCB1bmlvbiBrdm1fc21yYW0gKnNtcmFtKVxcbiBcXHRcXHRnb3RvIHVubWFwX3NhdmU7XFxuIFxcbiBcXHRyZXQgPSAwO1xcbi1cXHR2Y3B1LVxcdTAwM2VhcmNoLm5lc3RlZF9ydW5fcGVuZGluZyA9IEtWTV9ORVNURURfUlVOX1BFTkRJTkc7XFxuK1xcdHZjcHUtXFx1MDAzZWFyY2gubmVzdGVkX3J1bl9wZW5kaW5nID0gS1ZNX05FU1RFRF9SVU5fUEVORElOR19VTlRSVVNURUQ7XFxuIFxcbiB1bm1hcF9zYXZlOlxcbiBcXHRrdm1fdmNwdV91bm1hcCh2Y3B1LCBcXHUwMDI2bWFwX3NhdmUpO1xcbmRpZmYgLS1naXQgYS9hcmNoL3g4Ni9rdm0vdm14L3ZteC5jIGIvYXJjaC94ODYva3ZtL3ZteC92bXguY1xcbmluZGV4IGNjNzVmZWVjMDVkYWE0Li4zMzMwNzJjYzliY2U0YyAxMDA2NDRcXG4tLS0gYS9hcmNoL3g4Ni9rdm0vdm14L3ZteC5jXFxuKysrIGIvYXJjaC94ODYva3ZtL3ZteC92bXguY1xcbkBAIC02NzIwLDcgKzY3MjAsOCBAQCBzdGF0aWMgaW50IF9fdm14X2hhbmRsZV9leGl0KHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgZmFzdHBhdGhfdCBleGl0X2Zhc3RwYXRoKVxcbiBcXHQgKiBpbnZhbGlkIGd1ZXN0IHN0YXRlIHNob3VsZCBuZXZlciBoYXBwZW4gYXMgdGhhdCBtZWFucyBLVk0ga25vd2luZ2x5XFxuIFxcdCAqIGFsbG93ZWQgYSBuZXN0ZWQgVk0tRW50ZXIgd2l0aCBhbiBpbnZhbGlkIHZtY3MxMi4gIE1vcmUgYmVsb3cuXFxuIFxcdCAqL1xcbi1cXHRpZiAoS1ZNX0JVR19PTih2Y3B1LVxcdTAwM2VhcmNoLm5lc3RlZF9ydW5fcGVuZGluZywgdmNwdS1cXHUwMDNla3ZtKSlcXG4rXFx0aWYgKEtWTV9CVUdfT04odmNwdS1cXHUwMDNlYXJjaC5uZXN0ZWRfcnVuX3BlbmRpbmcgPT0gS1ZNX05FU1RFRF9SVU5fUEVORElORyxcXG4rXFx0XFx0ICAgICAgIHZjcHUtXFx1MDAzZWt2bSkpXFxuIFxcdFxcdHJldHVybiAtRUlPO1xcbiBcXG4gXFx0aWYgKGlzX2d1ZXN0X21vZGUodmNwdSkpIHtcXG5AQCAtODQzNiw3ICs4NDM3LDcgQEAgaW50IHZteF9sZWF2ZV9zbW0oc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCBjb25zdCB1bmlvbiBrdm1fc21yYW0gKnNtcmFtKVxcbiBcXHRcXHRpZiAocmV0ICE9IE5WTVhfVk1FTlRSWV9TVUNDRVNTKVxcbiBcXHRcXHRcXHRyZXR1cm4gMTtcXG4gXFxuLVxcdFxcdHZjcHUtXFx1MDAzZWFyY2gubmVzdGVkX3J1bl9wZW5kaW5nID0gS1ZNX05FU1RFRF9SVU5fUEVORElORztcXG4rXFx0XFx0dmNwdS1cXHUwMDNlYXJjaC5uZXN0ZWRfcnVuX3BlbmRpbmcgPSBLVk1fTkVTVEVEX1JVTl9QRU5ESU5HX1VOVFJVU1RFRDtcXG4gXFx0XFx0dm14LVxcdTAwM2VuZXN0ZWQuc21tLmd1ZXN0X21vZGUgPSBmYWxzZTtcXG4gXFx0fVxcbiBcXHRyZXR1cm4gMDtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjFUMTk6MjU6MTIuNTg5ODcyMTE1WiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiYmVzdC1leHBlbnNpdmUiLCJEdXJhdGlvbiI6ODkzNjExNTA5ODEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiS1ZNXCIsXG4gICAgXCJLVk1fSU5URUxcIixcbiAgICBcIktWTV9BTURcIixcbiAgICBcIktWTV9TTU1cIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJzdm1fbGVhdmVfc21tXCIsXG4gICAgXCJ2bXhfbGVhdmVfc21tXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgS1ZNJ3MgaGFuZGxpbmcgb2YgbmVzdGVkIHZpcnR1YWxpemF0aW9uIHN0YXRlIGR1cmluZyBTeXN0ZW0gTWFuYWdlbWVudCBNb2RlIChTTU0pIHRyYW5zaXRpb25zLiBTcGVjaWZpY2FsbHksIGl0IGNoYW5nZXMgdGhlIGBuZXN0ZWRfcnVuX3BlbmRpbmdgIHN0YXRlIHRvIGBLVk1fTkVTVEVEX1JVTl9QRU5ESU5HX1VOVFJVU1RFRGAgd2hlbiBsZWF2aW5nIFNNTSBpbiBib3RoIFNWTSBhbmQgVk1YLCBhbmQgdXBkYXRlcyB0aGUgZXhpdCBoYW5kbGVyIGluIFZNWCB0byBjaGVjayBmb3IgdGhlIGV4YWN0IGBLVk1fTkVTVEVEX1JVTl9QRU5ESU5HYCBzdGF0ZS4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBjb3JlIEtWTSBsb2dpYyB0aGF0IGFmZmVjdHMgbmVzdGVkIHZpcnR1YWxpemF0aW9uIGFuZCBTTU0sIG1ha2luZyBpdCB3b3J0aCBmdXp6aW5nLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lXG5pZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5XG51c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLlxuXG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOlxuLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLlxuLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy5cbi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LlxuLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsXG5ldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG5cbklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2hcbnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLlxuXG5XaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzpcbjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuXG4gICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy5cbjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLlxuICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuICAgRG8gbm90IGxpc3QgdG9vIGdlbmVyaWMgY29uZmlncyAod2UgYWxyZWFkeSBoYXZlIHRoZW0gZW5hYmxlZCkuIE9ubHkgbGlzdCB0aG9zZSB0aGF0XG4gICBzcGVjaWZpY2FsbHkgY292ZXIgdGhlIG1vZGlmaWVkIGNvZGUuIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncyBvdXRwdXQgYXJyYXksXG4gICBhbmQgRE8gTk9UIGFkZCBhICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IDUwMGY2MjJjZjJmYTZiMjMyOTIxNGNlNmZhOWU5ZjEwYjJkZmM2MDRcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgVHVlIEp1bCAyMSAxOToyNTowOCAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2FyY2gveDg2L2t2bS9zdm0vc3ZtLmMgYi9hcmNoL3g4Ni9rdm0vc3ZtL3N2bS5jXG5pbmRleCA0ZDJiYWNkMDBlYzRmNS4uZjU0NzU3YmQ4MzgyMTUgMTAwNjQ0XG4tLS0gYS9hcmNoL3g4Ni9rdm0vc3ZtL3N2bS5jXG4rKysgYi9hcmNoL3g4Ni9rdm0vc3ZtL3N2bS5jXG5AQCAtNTA5Niw3ICs1MDk2LDcgQEAgc3RhdGljIGludCBzdm1fbGVhdmVfc21tKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgY29uc3QgdW5pb24ga3ZtX3NtcmFtICpzbXJhbSlcbiBcdFx0Z290byB1bm1hcF9zYXZlO1xuIFxuIFx0cmV0ID0gMDtcbi1cdHZjcHUtXHUwMDNlYXJjaC5uZXN0ZWRfcnVuX3BlbmRpbmcgPSBLVk1fTkVTVEVEX1JVTl9QRU5ESU5HO1xuK1x0dmNwdS1cdTAwM2VhcmNoLm5lc3RlZF9ydW5fcGVuZGluZyA9IEtWTV9ORVNURURfUlVOX1BFTkRJTkdfVU5UUlVTVEVEO1xuIFxuIHVubWFwX3NhdmU6XG4gXHRrdm1fdmNwdV91bm1hcCh2Y3B1LCBcdTAwMjZtYXBfc2F2ZSk7XG5kaWZmIC0tZ2l0IGEvYXJjaC94ODYva3ZtL3ZteC92bXguYyBiL2FyY2gveDg2L2t2bS92bXgvdm14LmNcbmluZGV4IGNjNzVmZWVjMDVkYWE0Li4zMzMwNzJjYzliY2U0YyAxMDA2NDRcbi0tLSBhL2FyY2gveDg2L2t2bS92bXgvdm14LmNcbisrKyBiL2FyY2gveDg2L2t2bS92bXgvdm14LmNcbkBAIC02NzIwLDcgKzY3MjAsOCBAQCBzdGF0aWMgaW50IF9fdm14X2hhbmRsZV9leGl0KHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgZmFzdHBhdGhfdCBleGl0X2Zhc3RwYXRoKVxuIFx0ICogaW52YWxpZCBndWVzdCBzdGF0ZSBzaG91bGQgbmV2ZXIgaGFwcGVuIGFzIHRoYXQgbWVhbnMgS1ZNIGtub3dpbmdseVxuIFx0ICogYWxsb3dlZCBhIG5lc3RlZCBWTS1FbnRlciB3aXRoIGFuIGludmFsaWQgdm1jczEyLiAgTW9yZSBiZWxvdy5cbiBcdCAqL1xuLVx0aWYgKEtWTV9CVUdfT04odmNwdS1cdTAwM2VhcmNoLm5lc3RlZF9ydW5fcGVuZGluZywgdmNwdS1cdTAwM2Vrdm0pKVxuK1x0aWYgKEtWTV9CVUdfT04odmNwdS1cdTAwM2VhcmNoLm5lc3RlZF9ydW5fcGVuZGluZyA9PSBLVk1fTkVTVEVEX1JVTl9QRU5ESU5HLFxuK1x0XHQgICAgICAgdmNwdS1cdTAwM2Vrdm0pKVxuIFx0XHRyZXR1cm4gLUVJTztcbiBcbiBcdGlmIChpc19ndWVzdF9tb2RlKHZjcHUpKSB7XG5AQCAtODQzNiw3ICs4NDM3LDcgQEAgaW50IHZteF9sZWF2ZV9zbW0oc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCBjb25zdCB1bmlvbiBrdm1fc21yYW0gKnNtcmFtKVxuIFx0XHRpZiAocmV0ICE9IE5WTVhfVk1FTlRSWV9TVUNDRVNTKVxuIFx0XHRcdHJldHVybiAxO1xuIFxuLVx0XHR2Y3B1LVx1MDAzZWFyY2gubmVzdGVkX3J1bl9wZW5kaW5nID0gS1ZNX05FU1RFRF9SVU5fUEVORElORztcbitcdFx0dmNwdS1cdTAwM2VhcmNoLm5lc3RlZF9ydW5fcGVuZGluZyA9IEtWTV9ORVNURURfUlVOX1BFTkRJTkdfVU5UUlVTVEVEO1xuIFx0XHR2bXgtXHUwMDNlbmVzdGVkLnNtbS5ndWVzdF9tb2RlID0gZmFsc2U7XG4gXHR9XG4gXHRyZXR1cm4gMDtcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTIxVDE5OjI1OjEyLjU4OTg3NTMyNVoiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjUwOTA2NzU2NzUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIGEgS1ZNIFBhdGNoIGZvciBOZXN0ZWQgVmlydHVhbGl6YXRpb24qKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIEtWTSBwYXRjaCB0aGF0J3MgdHdlYWtpbmcgdGhlIHg4NiBjb2RlLCBzcGVjaWZpY2FsbHkgdGhlIGBzdm1fbGVhdmVfc21tYCBhbmQgYHZteF9sZWF2ZV9zbW1gIGZ1bmN0aW9ucy4gTXkgaW5pdGlhbCBpbXByZXNzaW9uIGlzIHRoYXQgdGhpcyBpcyBsaWtlbHkgcmVsYXRlZCB0byBpbXByb3Zpbmcgb3IgaGFyZGVuaW5nIG5lc3RlZCB2aXJ0dWFsaXphdGlvbiBzdXBwb3J0LCBzcGVjaWZpY2FsbHkgYXJvdW5kIFN5c3RlbSBNYW5hZ2VtZW50IE1vZGUgKFNNTSkuIFRoZSBjb3JlIGNoYW5nZSBzZWVtcyB0byByZXZvbHZlIGFyb3VuZCBob3cgdGhlIGBuZXN0ZWRfcnVuX3BlbmRpbmdgIGZsYWcgaXMgc2V0IGFuZCBjaGVja2VkIHdpdGhpbiB0aGUgVkNQVSBhcmNoaXRlY3R1cmUuXG5cbkl0IGFwcGVhcnMgdGhlIG9yaWdpbmFsIGNvZGUgaW4gYm90aCBleGl0IGZ1bmN0aW9ucyBzZXQgYHZjcHUtXHUwMDNlYXJjaC5uZXN0ZWRfcnVuX3BlbmRpbmcgPSBLVk1fTkVTVEVEX1JVTl9QRU5ESU5HO2AuIFRoaXMgcGF0Y2ggaXMgY2hhbmdpbmcgdGhhdCB0byBgS1ZNX05FU1RFRF9SVU5fUEVORElOR19VTlRSVVNURURgLiBUaGUgaW1wbGljYXRpb25zIG9mIHRoaXMgbmV3IGZsYWcgd2FycmFudCBmdXJ0aGVyIGludmVzdGlnYXRpb24uIEknbGwgbmVlZCB0byBmaWd1cmUgb3V0IHdoYXQgc2VtYW50aWMgZGlmZmVyZW5jZSBleGlzdHMgYmV0d2VlbiB0aGVzZSB0d28gZmxhZ3MuXG5cbkZ1cnRoZXJtb3JlLCB0aGUgYF9fdm14X2hhbmRsZV9leGl0YCBmdW5jdGlvbiBpcyBiZWluZyBtb2RpZmllZCB0byBleHBsaWNpdGx5IGNoZWNrIGZvciBgdmNwdS1cdTAwM2VhcmNoLm5lc3RlZF9ydW5fcGVuZGluZyA9PSBLVk1fTkVTVEVEX1JVTl9QRU5ESU5HYCByYXRoZXIgdGhhbiBhIHNpbXBsZSBlcXVhbGl0eS4gVGhpcyBzdWdnZXN0cyB0aGF0IHRoZSBjb2RlIHBhdGggZm9yIGhhbmRsaW5nIG5lc3RlZCBleGl0cyBpcyBiZWluZyBtb3JlIGNhcmVmdWxseSBjb250cm9sbGVkLiBBIGNoYW5nZSBpbiB0aGUgY29uZGl0aW9uYWwgbGlrZSB0aGlzIGlzIGFuIGltbWVkaWF0ZSBpbmRpY2F0b3Igb2YgYSBwb3RlbnRpYWwgc2VjdXJpdHkgY29uY2Vybi4gSSdkIG5lZWQgdG8gY29uc2lkZXIgdGhlIHRocmVhdCBtb2RlbCB0byB1bmRlcnN0YW5kIGlmIHRoaXMgbWl0aWdhdGVzIGFuIGF0dGFjaywgb3IgZW5hYmxlcyBmdW5jdGlvbmFsaXR5LlxuXG5JJ2xsIG5lZWQgdG8gZGlnIGludG8gdGhlIGRlZmluaXRpb24gb2YgYm90aCBgS1ZNX05FU1RFRF9SVU5fUEVORElOR2AgYW5kIGBLVk1fTkVTVEVEX1JVTl9QRU5ESU5HX1VOVFJVU1RFRGAgdG8gZnVsbHkgZ3Jhc3AgdGhlIGludGVudCBvZiB0aGVzZSBjaGFuZ2VzLiBJJ2xsIGJlIGxvb2tpbmcgZm9yIHdoZXJlIHRoZXNlIGZsYWdzIGFyZSB1c2VkLCBhbmQgaG93IHRoZWlyIGRpc3RpbmN0IHZhbHVlcyBpbmZsdWVuY2UgdGhlIGNvbnRyb2wgZmxvdywgcGFydGljdWxhcmx5IHdpdGhpbiB0aGUgbmVzdGVkIHZpcnR1YWxpemF0aW9uIGNvbnRleHQuIE15IGh5cG90aGVzaXMgaXMgdGhhdCB0aGlzIHBhdGNoIG1pZ2h0IGJlIGludHJvZHVjaW5nIGEgc3RyaWN0ZXIgbGV2ZWwgb2Ygc2VjdXJpdHkgcmVnYXJkaW5nIG5lc3RlZCB2aXJ0dWFsaXphdGlvbiwgcGVyaGFwcyBieSBjbGFzc2lmeWluZyBuZXN0ZWQgVk1zIGFzIHVudHJ1c3RlZCwgcHJldmVudGluZyByZXNvdXJjZSBvdmVyLWNvbW1pdCwgb3IgcHJvdGVjdGluZyB0aGUgaHlwZXJ2aXNvciBmcm9tIG1hbGljaW91cyBjb2RlLiBIb3dldmVyLCB3aXRob3V0IGEgdGhvcm91Z2ggaW52ZXN0aWdhdGlvbiBvZiB0aGUgc3Vycm91bmRpbmcgY29kZSBhbmQgdGhlIHJlYXNvbmluZyBiZWhpbmQgdGhlc2UgY29uc3RhbnRzLCBJIGNhbiBvbmx5IG1ha2UgZWR1Y2F0ZWQgZ3Vlc3NlcyBhdCB0aGlzIHBvaW50LlxuXG5cbiIsIklucHV0VG9rZW5zIjoyMzkzLCJPdXRwdXRUb2tlbnMiOjM5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTc1LCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjFUMTk6MjU6MTcuNjgwNTU1OTRaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTExMzQ3MzA5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIktWTV9ORVNURURfUlVOX1BFTkRJTkdcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiYXJjaC94ODYva3ZtL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJhcmNoL3g4Ni9rdm0vc3ZtL25lc3RlZC5jPTExMTQ9aW50IG5lc3RlZF9zdm1fdm1ydW4oc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxcbi0tXFxuYXJjaC94ODYva3ZtL3N2bS9uZXN0ZWQuYy0xMTc3LVxcbmFyY2gveDg2L2t2bS9zdm0vbmVzdGVkLmM6MTE3ODpcXHR2Y3B1LVxcdTAwM2VhcmNoLm5lc3RlZF9ydW5fcGVuZGluZyA9IEtWTV9ORVNURURfUlVOX1BFTkRJTkc7XFxuYXJjaC94ODYva3ZtL3N2bS9uZXN0ZWQuYy0xMTc5LVxcbi0tXFxuYXJjaC94ODYva3ZtL3N2bS9uZXN0ZWQuYz0xOTUwPXN0YXRpYyBpbnQgc3ZtX3NldF9uZXN0ZWRfc3RhdGUoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LFxcbi0tXFxuYXJjaC94ODYva3ZtL3N2bS9uZXN0ZWQuYy0yMDY0LVxcdGlmIChrdm1fc3RhdGUtXFx1MDAzZWZsYWdzIFxcdTAwMjYgS1ZNX1NUQVRFX05FU1RFRF9SVU5fUEVORElORylcXG5hcmNoL3g4Ni9rdm0vc3ZtL25lc3RlZC5jOjIwNjU6XFx0XFx0dmNwdS1cXHUwMDNlYXJjaC5uZXN0ZWRfcnVuX3BlbmRpbmcgPSBLVk1fTkVTVEVEX1JVTl9QRU5ESU5HX1VOVFJVU1RFRDtcXG5hcmNoL3g4Ni9rdm0vc3ZtL25lc3RlZC5jLTIwNjYtXFx0ZWxzZVxcbi0tXFxuYXJjaC94ODYva3ZtL3N2bS9zdm0uYz01MDQzPXN0YXRpYyBpbnQgc3ZtX2xlYXZlX3NtbShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIGNvbnN0IHVuaW9uIGt2bV9zbXJhbSAqc21yYW0pXFxuLS1cXG5hcmNoL3g4Ni9rdm0vc3ZtL3N2bS5jLTUwOTgtXFx0cmV0ID0gMDtcXG5hcmNoL3g4Ni9rdm0vc3ZtL3N2bS5jOjUwOTk6XFx0dmNwdS1cXHUwMDNlYXJjaC5uZXN0ZWRfcnVuX3BlbmRpbmcgPSBLVk1fTkVTVEVEX1JVTl9QRU5ESU5HX1VOVFJVU1RFRDtcXG5hcmNoL3g4Ni9rdm0vc3ZtL3N2bS5jLTUxMDAtXFxuLS1cXG5hcmNoL3g4Ni9rdm0vdm14L25lc3RlZC5jPTM3ODg9c3RhdGljIGludCBuZXN0ZWRfdm14X3J1bihzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIGJvb2wgbGF1bmNoKVxcbi0tXFxuYXJjaC94ODYva3ZtL3ZteC9uZXN0ZWQuYy0zODY1LVxcdCAqL1xcbmFyY2gveDg2L2t2bS92bXgvbmVzdGVkLmM6Mzg2NjpcXHR2Y3B1LVxcdTAwM2VhcmNoLm5lc3RlZF9ydW5fcGVuZGluZyA9IEtWTV9ORVNURURfUlVOX1BFTkRJTkc7XFxuYXJjaC94ODYva3ZtL3ZteC9uZXN0ZWQuYy0zODY3LVxcdHZteC1cXHUwMDNlbmVzdGVkLmhhc19wcmVlbXB0aW9uX3RpbWVyX2RlYWRsaW5lID0gZmFsc2U7XFxuLS1cXG5hcmNoL3g4Ni9rdm0vdm14L25lc3RlZC5jPTY5MDI9c3RhdGljIGludCB2bXhfc2V0X25lc3RlZF9zdGF0ZShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsXFxuLS1cXG5hcmNoL3g4Ni9rdm0vdm14L25lc3RlZC5jLTcwMzItXFx0aWYgKGt2bV9zdGF0ZS1cXHUwMDNlZmxhZ3MgXFx1MDAyNiBLVk1fU1RBVEVfTkVTVEVEX1JVTl9QRU5ESU5HKVxcbmFyY2gveDg2L2t2bS92bXgvbmVzdGVkLmM6NzAzMzpcXHRcXHR2Y3B1LVxcdTAwM2VhcmNoLm5lc3RlZF9ydW5fcGVuZGluZyA9IEtWTV9ORVNURURfUlVOX1BFTkRJTkdfVU5UUlVTVEVEO1xcbmFyY2gveDg2L2t2bS92bXgvbmVzdGVkLmMtNzAzNC1cXHRlbHNlXFxuLS1cXG5hcmNoL3g4Ni9rdm0vdm14L3ZteC5jPTY2OTY9c3RhdGljIGludCBfX3ZteF9oYW5kbGVfZXhpdChzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIGZhc3RwYXRoX3QgZXhpdF9mYXN0cGF0aClcXG4tLVxcbmFyY2gveDg2L2t2bS92bXgvdm14LmMtNjcyMi1cXHQgKi9cXG5hcmNoL3g4Ni9rdm0vdm14L3ZteC5jOjY3MjM6XFx0aWYgKEtWTV9CVUdfT04odmNwdS1cXHUwMDNlYXJjaC5uZXN0ZWRfcnVuX3BlbmRpbmcgPT0gS1ZNX05FU1RFRF9SVU5fUEVORElORyxcXG5hcmNoL3g4Ni9rdm0vdm14L3ZteC5jLTY3MjQtXFx0XFx0ICAgICAgIHZjcHUtXFx1MDAzZWt2bSkpXFxuLS1cXG5hcmNoL3g4Ni9rdm0vdm14L3ZteC5jPTg0MjE9aW50IHZteF9sZWF2ZV9zbW0oc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCBjb25zdCB1bmlvbiBrdm1fc21yYW0gKnNtcmFtKVxcbi0tXFxuYXJjaC94ODYva3ZtL3ZteC92bXguYy04NDM5LVxcbmFyY2gveDg2L2t2bS92bXgvdm14LmM6ODQ0MDpcXHRcXHR2Y3B1LVxcdTAwM2VhcmNoLm5lc3RlZF9ydW5fcGVuZGluZyA9IEtWTV9ORVNURURfUlVOX1BFTkRJTkdfVU5UUlVTVEVEO1xcbmFyY2gveDg2L2t2bS92bXgvdm14LmMtODQ0MS1cXHRcXHR2bXgtXFx1MDAzZW5lc3RlZC5zbW0uZ3Vlc3RfbW9kZSA9IGZhbHNlO1xcbi0tXFxuYXJjaC94ODYva3ZtL3g4Ni5jPTExOTI3PXN0YXRpYyBpbnQga3ZtX3g4Nl92Y3B1X3ByZV9ydW4oc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxcbi0tXFxuYXJjaC94ODYva3ZtL3g4Ni5jLTExOTMyLVxcdCAqL1xcbmFyY2gveDg2L2t2bS94ODYuYzoxMTkzMzpcXHRpZiAodmNwdS1cXHUwMDNlYXJjaC5uZXN0ZWRfcnVuX3BlbmRpbmcgPT0gS1ZNX05FU1RFRF9SVU5fUEVORElORylcXG5hcmNoL3g4Ni9rdm0veDg2LmM6MTE5MzQ6XFx0XFx0dmNwdS1cXHUwMDNlYXJjaC5uZXN0ZWRfcnVuX3BlbmRpbmcgPSBLVk1fTkVTVEVEX1JVTl9QRU5ESU5HX1VOVFJVU1RFRDtcXG5hcmNoL3g4Ni9rdm0veDg2LmMtMTE5MzUtXFxuLS1cXG5hcmNoL3g4Ni9rdm0veDg2Lmg9MTk2PXN0YXRpYyBpbmxpbmUgdm9pZCBrdm1fd2Fybl9vbl9uZXN0ZWRfcnVuX3BlbmRpbmcoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxcbmFyY2gveDg2L2t2bS94ODYuaC0xOTcte1xcbmFyY2gveDg2L2t2bS94ODYuaDoxOTg6XFx0V0FSTl9PTl9PTkNFKHZjcHUtXFx1MDAzZWFyY2gubmVzdGVkX3J1bl9wZW5kaW5nID09IEtWTV9ORVNURURfUlVOX1BFTkRJTkcpO1xcbmFyY2gveDg2L2t2bS94ODYuaC0xOTktfVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yMVQxOToyNToxNy43OTE5MTI3MjhaIiwiU2VxIjo1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoxNzE0MjE2MTg2MCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgYSBLVk0gUGF0Y2ggZm9yIE5lc3RlZCBWaXJ0dWFsaXphdGlvbiBhbmQgU01NKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBhbmQgaXQncyBtYWtpbmcgc29tZSBwcmV0dHkgc3BlY2lmaWMgbW9kaWZpY2F0aW9ucyB3aXRoaW4gdGhlIEtWTSBzdWJzeXN0ZW0sIHNwZWNpZmljYWxseSBkZWFsaW5nIHdpdGggbmVzdGVkIHZpcnR1YWxpemF0aW9uIGFuZCBTTU0g4oCTIHRoYXQncyBkZWZpbml0ZWx5IGludGVyZXN0aW5nLiBGcm9tIHdoYXQgSSBjYW4gc2VlLCBpdCdzIGNoYW5naW5nIGhvdyBgdmNwdS1cdTAwM2VhcmNoLm5lc3RlZF9ydW5fcGVuZGluZ2AgaXMgaGFuZGxlZCwgc2hpZnRpbmcgZnJvbSBgS1ZNX05FU1RFRF9SVU5fUEVORElOR2AgdG8gYEtWTV9ORVNURURfUlVOX1BFTkRJTkdfVU5UUlVTVEVEYCB3aXRoaW4gdGhlIGBzdm1fbGVhdmVfc21tYCBhbmQgYHZteF9sZWF2ZV9zbW1gIGZ1bmN0aW9ucy4gSSBzZWUgaXQgYWxzbyB0d2Vha3MgYF9fdm14X2hhbmRsZV9leGl0YCB0byBiZSBtb3JlIHByZWNpc2UgYWJvdXQgaXRzIGNoZWNrcy5cblxuRnVuY3Rpb25hbGx5LCB0aGlzIGlzIGEgY2hhbmdlIHRoYXQncyBsaWtlbHkgdG8gaW1wYWN0IGhvdyBuZXN0ZWQgVk1zIGludGVyYWN0IHdpdGggU01NLCBhbmQgdGhhdCBtZWFucyBpdCdzIGEgcHJpbWUgdGFyZ2V0IGZvciBmdXp6aW5nLiBXZSBhYnNvbHV0ZWx5IG5lZWQgdG8gcHV0IHRoaXMgdGhyb3VnaCBpdHMgcGFjZXMuXG5cbk5vdywgbGV0J3Mgc2VlLCB3aGVyZSBpcyB0aGlzIGNvZGU/IEFoLCBpdCBsb29rcyBsaWtlIGBhcmNoL3g4Ni9rdm0vc3ZtL3N2bS5jYCBhbmQgYGFyY2gveDg2L2t2bS92bXgvdm14LmNgIGFyZSB3aGVyZSB0aGUgYWN0aW9uIGlzIGhhcHBlbmluZy4gQWxyaWdodCwgc28gd2UncmUgbG9va2luZyBhdCB0aGluZ3MgdGhhdCB3aWxsIGRlcGVuZCBvbiBgS1ZNYCwgYEtWTV9BTURgLCBhbmQgYEtWTV9JTlRFTGAuIE5lc3RlZCB2aXJ0dWFsaXphdGlvbiBvZnRlbiBoYXMgc29tZSB1bmRlcmx5aW5nIGNvbmZpZ3VyYXRpb24gdG8gY29udHJvbCBpdC4gTGV0IG1lIGp1c3QgY29uZmlybSBpZiB3ZSBuZWVkIHNvbWUgc3BlY2lmaWMgS2NvbmZpZyBvcHRpb25zIGVuYWJsZWQgYmV5b25kIHRoYXQuIFdlJ2xsIG5lZWQgdG8ga25vdyB3aGljaCBvcHRpb25zIGFyZSBpbiBwbGF5IHRvIHRyaWdnZXIgdGhpcy4gVGhpcyBkZWZpbml0ZWx5IG5lZWRzIG1vcmUgaW52ZXN0aWdhdGlvbi5cblxuXG4iLCJJbnB1dFRva2VucyI6NDQ5MSwiT3V0cHV0VG9rZW5zIjozNCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI0NiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yMVQxOToyNTozNC45MzQwOTk0NDlaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTA4OTE4MjIwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBLVk1cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiYXJjaC94ODYva3ZtL0tjb25maWdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiYXJjaC94ODYva3ZtL0tjb25maWc9MTg9aWYgVklSVFVBTElaQVRJT05cXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0xOS1cXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZzoyMDpjb25maWcgS1ZNX1g4NlxcbmFyY2gveDg2L2t2bS9LY29uZmlnLTIxLVxcdGRlZl90cmlzdGF0ZSBLVk0gaWYgKEtWTV9JTlRFTCAhPSBuIHx8IEtWTV9BTUQgIT0gbilcXG4tLVxcbmFyY2gveDg2L2t2bS9LY29uZmlnLTUxLVxcbmFyY2gveDg2L2t2bS9LY29uZmlnOjUyOmNvbmZpZyBLVk1cXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy01My1cXHR0cmlzdGF0ZSBcXFwiS2VybmVsLWJhc2VkIFZpcnR1YWwgTWFjaGluZSAoS1ZNKSBzdXBwb3J0XFxcIlxcbi0tXFxuYXJjaC94ODYva3ZtL0tjb25maWctNjgtXFxuYXJjaC94ODYva3ZtL0tjb25maWc6Njk6Y29uZmlnIEtWTV9XRVJST1JcXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy03MC1cXHRib29sIFxcXCJDb21waWxlIEtWTSB3aXRoIC1XZXJyb3JcXFwiXFxuLS1cXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy04Mi1cXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZzo4Mzpjb25maWcgS1ZNX1NXX1BST1RFQ1RFRF9WTVxcbmFyY2gveDg2L2t2bS9LY29uZmlnLTg0LVxcdGJvb2wgXFxcIkVuYWJsZSBzdXBwb3J0IGZvciBLVk0gc29mdHdhcmUtcHJvdGVjdGVkIFZNc1xcXCJcXG4tLVxcbmFyY2gveDg2L2t2bS9LY29uZmlnLTk1LVxcbmFyY2gveDg2L2t2bS9LY29uZmlnOjk2OmNvbmZpZyBLVk1fSU5URUxcXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy05Ny1cXHR0cmlzdGF0ZSBcXFwiS1ZNIGZvciBJbnRlbCAoYW5kIGNvbXBhdGlibGUpIHByb2Nlc3NvcnMgc3VwcG9ydFxcXCJcXG4tLVxcbmFyY2gveDg2L2t2bS9LY29uZmlnLTEwNi1cXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZzoxMDc6Y29uZmlnIEtWTV9JTlRFTF9QUk9WRV9WRVxcbmFyY2gveDg2L2t2bS9LY29uZmlnLTEwOC0gICAgICAgIGJvb2wgXFxcIkNoZWNrIHRoYXQgZ3Vlc3RzIGRvIG5vdCByZWNlaXZlICNWRSBleGNlcHRpb25zXFxcIlxcbi0tXFxuYXJjaC94ODYva3ZtL0tjb25maWc9MTIyPWNvbmZpZyBYODZfU0dYX0tWTVxcbi0tXFxuYXJjaC94ODYva3ZtL0tjb25maWctMTMzLVxcbmFyY2gveDg2L2t2bS9LY29uZmlnOjEzNDpjb25maWcgS1ZNX0lOVEVMX1REWFxcbmFyY2gveDg2L2t2bS9LY29uZmlnLTEzNS1cXHRib29sIFxcXCJJbnRlbCBUcnVzdCBEb21haW4gRXh0ZW5zaW9ucyAoVERYKSBzdXBwb3J0XFxcIlxcbi0tXFxuYXJjaC94ODYva3ZtL0tjb25maWctMTQ1LVxcbmFyY2gveDg2L2t2bS9LY29uZmlnOjE0Njpjb25maWcgS1ZNX0FNRFxcbmFyY2gveDg2L2t2bS9LY29uZmlnLTE0Ny1cXHR0cmlzdGF0ZSBcXFwiS1ZNIGZvciBBTUQgcHJvY2Vzc29ycyBzdXBwb3J0XFxcIlxcbi0tXFxuYXJjaC94ODYva3ZtL0tjb25maWctMTU1LVxcbmFyY2gveDg2L2t2bS9LY29uZmlnOjE1Njpjb25maWcgS1ZNX0FNRF9TRVZcXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0xNTctXFx0Ym9vbCBcXFwiQU1EIFNlY3VyZSBFbmNyeXB0ZWQgVmlydHVhbGl6YXRpb24gKFNFVikgc3VwcG9ydFxcXCJcXG4tLVxcbmFyY2gveDg2L2t2bS9LY29uZmlnLTE3MS1cXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZzoxNzI6Y29uZmlnIEtWTV9JT0FQSUNcXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0xNzMtXFx0Ym9vbCBcXFwiSS9PIEFQSUMsIFBJQywgYW5kIFBJVCBlbXVsYXRpb25cXFwiXFxuLS1cXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0xODEtXFxuYXJjaC94ODYva3ZtL0tjb25maWc6MTgyOmNvbmZpZyBLVk1fU01NXFxuYXJjaC94ODYva3ZtL0tjb25maWctMTgzLVxcdGJvb2wgXFxcIlN5c3RlbSBNYW5hZ2VtZW50IE1vZGUgZW11bGF0aW9uXFxcIlxcbi0tXFxuYXJjaC94ODYva3ZtL0tjb25maWctMTkyLVxcbmFyY2gveDg2L2t2bS9LY29uZmlnOjE5Mzpjb25maWcgS1ZNX0hZUEVSVlxcbmFyY2gveDg2L2t2bS9LY29uZmlnLTE5NC1cXHRib29sIFxcXCJTdXBwb3J0IGZvciBNaWNyb3NvZnQgSHlwZXItViBlbXVsYXRpb25cXFwiXFxuLS1cXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0yMDYtXFxuYXJjaC94ODYva3ZtL0tjb25maWc6MjA3OmNvbmZpZyBLVk1fWEVOXFxuYXJjaC94ODYva3ZtL0tjb25maWctMjA4LVxcdGJvb2wgXFxcIlN1cHBvcnQgZm9yIFhlbiBoeXBlcmNhbGwgaW50ZXJmYWNlXFxcIlxcbi0tXFxuYXJjaC94ODYva3ZtL0tjb25maWctMjE1LVxcbmFyY2gveDg2L2t2bS9LY29uZmlnOjIxNjpjb25maWcgS1ZNX1BST1ZFX01NVVxcbmFyY2gveDg2L2t2bS9LY29uZmlnLTIxNy1cXHRib29sIFxcXCJQcm92ZSBLVk0gTU1VIGNvcnJlY3RuZXNzXFxcIlxcbi0tXFxuYXJjaC94ODYva3ZtL0tjb25maWctMjI4LVxcbmFyY2gveDg2L2t2bS9LY29uZmlnOjIyOTpjb25maWcgS1ZNX0VYVEVSTkFMX1dSSVRFX1RSQUNLSU5HXFxuYXJjaC94ODYva3ZtL0tjb25maWctMjMwLVxcdGJvb2xcXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0yMzEtXFxuYXJjaC94ODYva3ZtL0tjb25maWc6MjMyOmNvbmZpZyBLVk1fTUFYX05SX1ZDUFVTXFxuYXJjaC94ODYva3ZtL0tjb25maWctMjMzLVxcdGludCBcXFwiTWF4aW11bSBudW1iZXIgb2YgdkNQVXMgcGVyIEtWTSBndWVzdFxcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjFUMTk6MjU6MzUuMDQzMDM1OTY5WiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDc4MDkxMDYzOSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHRob3VnaHQgcHJvY2VzcywgYXMgaWYgSSB3ZXJlIHJldmlld2luZyB0aGlzIGNvZGU6XG5cbioqQW5hbHl6aW5nIFBvdGVudGlhbCBTTU0gRW11bGF0aW9uIFBhdGNoKipcblxuT2theSwgc28gdGhpcyBwYXRjaCBpcyB0b3VjaGluZyBgc3ZtX2xlYXZlX3NtbWAgYW5kIGB2bXhfbGVhdmVfc21tYC4gVGhvc2UgYXJlIHByZXR0eSBmdW5kYW1lbnRhbCBmdW5jdGlvbnMgcmVsYXRlZCB0byBTTU0gZW11bGF0aW9uLCB3aGljaCBpbW1lZGlhdGVseSBjYXRjaGVzIG15IGF0dGVudGlvbi4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGNvbnRleHQuIFNpbmNlIHRoZXNlIGZ1bmN0aW9ucyBhcmUgbGlrZWx5IGludm9sdmVkIGluIHRyYW5zaXRpb25pbmcgaW4gb3Igb3V0IG9mIFNNTSBpbiBhIHZpcnR1YWxpemVkIGVudmlyb25tZW50LCBJIG5lZWQgdG8gY29uZmlybSB3aGV0aGVyIHRoZSBjaGFuZ2VzIGFyZSBpc29sYXRlZCB0byBhIHBhcnRpY3VsYXIgY29uZmlndXJhdGlvbi4gVGhlIG5leHQgc3RlcCBpcyB0byBleGFtaW5lIHRoZSBLY29uZmlnIGZpbGUgaW4gYGFyY2gveDg2L2t2bS9LY29uZmlnYCB0byBzZWUgd2hhdCBjb25maWd1cmF0aW9uIG9wdGlvbnMgbWlnaHQgYWZmZWN0IHRoZXNlIGZ1bmN0aW9ucy4gSeKAmW0gYmV0dGluZyB0aGlzIGludm9sdmVzIHRoZSBgS1ZNX1NNTWAgY29uZmlnLiBMZXQncyB2ZXJpZnkgdGhhdCBgc3ZtX2xlYXZlX3NtbWAgYW5kIGB2bXhfbGVhdmVfc21tYCBhcmUgaW5kZWVkIGd1YXJkZWQgYnkgYEtWTV9TTU1gLiBJZiBzbywgSSBjYW4gcmVzdHJpY3QgbXkgZm9jdXMgdG8gdGhlIGNvZGUgcGF0aHMgdGFrZW4gd2hlbiBLVk0gU01NIGlzIGVuYWJsZWQuIFRoaXMgd2lsbCBoZWxwIG5hcnJvdyB0aGUgc2NvcGUgb2YgdGhlIGltcGFjdCBvZiB0aGlzIHBhdGNoLlxuXG5cbiIsIklucHV0VG9rZW5zIjo2MzI4LCJPdXRwdXRUb2tlbnMiOjM3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6OTgsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjFUMTk6MjU6MzkuODIzOTUzNjg4WiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjExODE4NDE2NDIsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwic3ZtX2xlYXZlX3NtbVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJhcmNoL3g4Ni9rdm0vc3ZtL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJhcmNoL3g4Ni9rdm0vc3ZtL3N2bS5jPTQ5OTQ9c3RhdGljIGludCBzdm1fZW50ZXJfc21tKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgdW5pb24ga3ZtX3NtcmFtICpzbXJhbSlcXG4tLVxcbmFyY2gveDg2L2t2bS9zdm0vc3ZtLmMtNTA0Mi1cXG5hcmNoL3g4Ni9rdm0vc3ZtL3N2bS5jOjUwNDM6c3RhdGljIGludCBzdm1fbGVhdmVfc21tKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgY29uc3QgdW5pb24ga3ZtX3NtcmFtICpzbXJhbSlcXG5hcmNoL3g4Ni9rdm0vc3ZtL3N2bS5jLTUwNDQte1xcbi0tXFxuYXJjaC94ODYva3ZtL3N2bS9zdm0uYz01MzI1PXN0cnVjdCBrdm1feDg2X29wcyBzdm1feDg2X29wcyBfX2luaXRkYXRhID0ge1xcbi0tXFxuYXJjaC94ODYva3ZtL3N2bS9zdm0uYy01NDM3LVxcdC5lbnRlcl9zbW0gPSBzdm1fZW50ZXJfc21tLFxcbmFyY2gveDg2L2t2bS9zdm0vc3ZtLmM6NTQzODpcXHQubGVhdmVfc21tID0gc3ZtX2xlYXZlX3NtbSxcXG5hcmNoL3g4Ni9rdm0vc3ZtL3N2bS5jLTU0MzktXFx0LmVuYWJsZV9zbWlfd2luZG93ID0gc3ZtX2VuYWJsZV9zbWlfd2luZG93LFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yMVQxOToyNTo0MS4wMDU4MDI4NVoiLCJTZXEiOjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQ0MTA0ODQxMTcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqSW52ZXN0aWdhdGluZyBDb25kaXRpb25hbCBDb21waWxhdGlvbiBpbiBLVk0qKlxuXG5Pa2F5LCBzbyBJIG5lZWQgdG8gZmlndXJlIG91dCB3aHkgdGhlc2UgZnVuY3Rpb25zIG1pZ2h0IGJlIGJlaGF2aW5nIGFzIHRoZXkgYXJlLiBNeSBpbW1lZGlhdGUgdGhvdWdodCBpcywgbGV0J3MgZHJpbGwgZG93biBpbnRvIHRoZSBLVk0gc291cmNlIGNvZGUuIE15IGludHVpdGlvbiwgYmFzZWQgb24gcHJldmlvdXMgZXhwZXJpZW5jZSwgcG9pbnRzIG1lIHRvd2FyZHMgY29uZGl0aW9uYWwgY29tcGlsYXRpb24uIEkgc3VzcGVjdCB0aGF0IHRoZSBwcmVzZW5jZSBvciBhYnNlbmNlIG9mIHRoZXNlIGZ1bmN0aW9ucywgb3IgdGhlaXIgc3BlY2lmaWMgaW1wbGVtZW50YXRpb25zLCBtaWdodCBoaW5nZSBvbiB0aGUgYENPTkZJR19LVk1fU01NYCBjb25maWd1cmF0aW9uIG9wdGlvbi4gVGhlcmVmb3JlLCBteSBmaXJzdCBzdGVwIGlzIHRvIGNhcmVmdWxseSBleGFtaW5lIGBzdm0uY2AgYW5kIGB2bXguY2Ag4oCTIHRoZXkgYXJlIHRoZSBvYnZpb3VzIHBsYWNlcyB3aGVyZSB0aGlzIGtpbmQgb2YgcHJvY2Vzc29yLXNwZWNpZmljIGNvZGUgd291bGQgcmVzaWRlLiBJIG5lZWQgdG8gZ3JlcCBhbmQgdmVyaWZ5IGlmIHRoaXMgY29uZmlndXJhdGlvbiB2YXJpYWJsZSBpcyB1c2VkIHRvIGRlY2lkZSB3aGV0aGVyIHRoZSByZWxldmFudCBmdW5jdGlvbnMgYXJlIGluY2x1ZGVkIGluIHRoZSBjb21waWxhdGlvbiBwcm9jZXNzIG9yIG5vdC4gSXQncyBhIGNsYXNzaWMgY2hlY2ssIGFuZCB0aGUgZmlyc3QgcGxhY2UgSSdkIGxvb2suIFRoaXMgYXBwcm9hY2ggYWxsb3dzIG1lIHRvIHBpbnBvaW50IHdoZXJlIHRoaXMgY29uZGl0aW9uYWwgYmVoYXZpb3IgaXMgY29udHJvbGxlZC5cblxuXG4iLCJJbnB1dFRva2VucyI6NzAwMywiT3V0cHV0VG9rZW5zIjozNiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjMyLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTIxVDE5OjI1OjQ1LjQxNjI5Mzc5NloiLCJTZXEiOjEwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTcyOTIyNzA1LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIkNPTkZJR19LVk1fU01NXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImFyY2gveDg2L2t2bS9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiYXJjaC94ODYva3ZtL01ha2VmaWxlPTE0PWt2bS0kKENPTkZJR19LVk1fWEVOKVxcdCs9IHhlbi5vXFxuYXJjaC94ODYva3ZtL01ha2VmaWxlOjE1Omt2bS0kKENPTkZJR19LVk1fU01NKVxcdCs9IHNtbS5vXFxuYXJjaC94ODYva3ZtL01ha2VmaWxlLTE2LVxcbi0tXFxuYXJjaC94ODYva3ZtL3NtbS5oLTYtXFxuYXJjaC94ODYva3ZtL3NtbS5oOjc6I2lmZGVmIENPTkZJR19LVk1fU01NXFxuYXJjaC94ODYva3ZtL3NtbS5oLTgtXFxuLS1cXG5hcmNoL3g4Ni9rdm0vc3ZtL25lc3RlZC5jPTE3MjU9c3RhdGljIGludCBzdm1fY2hlY2tfbmVzdGVkX2V2ZW50cyhzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXFxuLS1cXG5hcmNoL3g4Ni9rdm0vc3ZtL25lc3RlZC5jLTE3NjYtXFxuYXJjaC94ODYva3ZtL3N2bS9uZXN0ZWQuYzoxNzY3OiNpZmRlZiBDT05GSUdfS1ZNX1NNTVxcbmFyY2gveDg2L2t2bS9zdm0vbmVzdGVkLmMtMTc2OC1cXHRpZiAodmNwdS1cXHUwMDNlYXJjaC5zbWlfcGVuZGluZyBcXHUwMDI2XFx1MDAyNiAhc3ZtX3NtaV9ibG9ja2VkKHZjcHUpKSB7XFxuLS1cXG5hcmNoL3g4Ni9rdm0vc3ZtL3N2bS5jPTIxNDg9c3RhdGljIGludCBzaHV0ZG93bl9pbnRlcmNlcHRpb24oc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxcbi0tXFxuYXJjaC94ODYva3ZtL3N2bS9zdm0uYy0yMTY2LVxcdFxcdGNsZWFyX3BhZ2Uoc3ZtLVxcdTAwM2V2bWNiKTtcXG5hcmNoL3g4Ni9rdm0vc3ZtL3N2bS5jOjIxNjc6I2lmZGVmIENPTkZJR19LVk1fU01NXFxuYXJjaC94ODYva3ZtL3N2bS9zdm0uYy0yMTY4LVxcdFxcdGlmIChpc19zbW0odmNwdSkpXFxuLS1cXG5hcmNoL3g4Ni9rdm0vc3ZtL3N2bS5jPTQ2ODU9c3RhdGljIGJvb2wgc3ZtX2hhc19lbXVsYXRlZF9tc3Ioc3RydWN0IGt2bSAqa3ZtLCB1MzIgaW5kZXgpXFxuLS1cXG5hcmNoL3g4Ni9rdm0vc3ZtL3N2bS5jLTQ2OTEtXFx0Y2FzZSBNU1JfSUEzMl9TTUJBU0U6XFxuYXJjaC94ODYva3ZtL3N2bS9zdm0uYzo0NjkyOlxcdFxcdGlmICghSVNfRU5BQkxFRChDT05GSUdfS1ZNX1NNTSkpXFxuYXJjaC94ODYva3ZtL3N2bS9zdm0uYy00NjkzLVxcdFxcdFxcdHJldHVybiBmYWxzZTtcXG4tLVxcbmFyY2gveDg2L2t2bS9zdm0vc3ZtLmM9NDk2MD1zdGF0aWMgdm9pZCBzdm1fc2V0dXBfbWNlKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSlcXG4tLVxcbmFyY2gveDg2L2t2bS9zdm0vc3ZtLmMtNDk2NS1cXG5hcmNoL3g4Ni9rdm0vc3ZtL3N2bS5jOjQ5NjY6I2lmZGVmIENPTkZJR19LVk1fU01NXFxuYXJjaC94ODYva3ZtL3N2bS9zdm0uYy00OTY3LWJvb2wgc3ZtX3NtaV9ibG9ja2VkKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSlcXG4tLVxcbmFyY2gveDg2L2t2bS9zdm0vc3ZtLmM9NTMyNT1zdHJ1Y3Qga3ZtX3g4Nl9vcHMgc3ZtX3g4Nl9vcHMgX19pbml0ZGF0YSA9IHtcXG4tLVxcbmFyY2gveDg2L2t2bS9zdm0vc3ZtLmMtNTQzNC1cXG5hcmNoL3g4Ni9rdm0vc3ZtL3N2bS5jOjU0MzU6I2lmZGVmIENPTkZJR19LVk1fU01NXFxuYXJjaC94ODYva3ZtL3N2bS9zdm0uYy01NDM2LVxcdC5zbWlfYWxsb3dlZCA9IHN2bV9zbWlfYWxsb3dlZCxcXG4tLVxcbmFyY2gveDg2L2t2bS92bXgvbWFpbi5jPTIxMD1zdGF0aWMgaW50IHZ0X2NvbXBsZXRlX2VtdWxhdGVkX21zcihzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIGludCBlcnIpXFxuLS1cXG5hcmNoL3g4Ni9rdm0vdm14L21haW4uYy0yMTctXFxuYXJjaC94ODYva3ZtL3ZteC9tYWluLmM6MjE4OiNpZmRlZiBDT05GSUdfS1ZNX1NNTVxcbmFyY2gveDg2L2t2bS92bXgvbWFpbi5jLTIxOS1zdGF0aWMgaW50IHZ0X3NtaV9hbGxvd2VkKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgYm9vbCBmb3JfaW5qZWN0aW9uKVxcbi0tXFxuYXJjaC94ODYva3ZtL3ZteC9tYWluLmM9ODgwPXN0cnVjdCBrdm1feDg2X29wcyB2dF94ODZfb3BzIF9faW5pdGRhdGEgPSB7XFxuLS1cXG5hcmNoL3g4Ni9rdm0vdm14L21haW4uYy0xMDA5LVxcbmFyY2gveDg2L2t2bS92bXgvbWFpbi5jOjEwMTA6I2lmZGVmIENPTkZJR19LVk1fU01NXFxuYXJjaC94ODYva3ZtL3ZteC9tYWluLmMtMTAxMS1cXHQuc21pX2FsbG93ZWQgPSB2dF9vcChzbWlfYWxsb3dlZCksXFxuLS1cXG5hcmNoL3g4Ni9rdm0vdm14L3ZteC5jPTcyMDk9Ym9vbCB2bXhfaGFzX2VtdWxhdGVkX21zcihzdHJ1Y3Qga3ZtICprdm0sIHUzMiBpbmRleClcXG4tLVxcbmFyY2gveDg2L2t2bS92bXgvdm14LmMtNzIxMi1cXHRjYXNlIE1TUl9JQTMyX1NNQkFTRTpcXG5hcmNoL3g4Ni9rdm0vdm14L3ZteC5jOjcyMTM6XFx0XFx0aWYgKCFJU19FTkFCTEVEKENPTkZJR19LVk1fU01NKSlcXG5hcmNoL3g4Ni9rdm0vdm14L3ZteC5jLTcyMTQtXFx0XFx0XFx0cmV0dXJuIGZhbHNlO1xcbi0tXFxuYXJjaC94ODYva3ZtL3ZteC92bXguYz04MzgxPXZvaWQgdm14X3NldHVwX21jZShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXFxuLS1cXG5hcmNoL3g4Ni9rdm0vdm14L3ZteC5jLTgzOTAtXFxuYXJjaC94ODYva3ZtL3ZteC92bXguYzo4MzkxOiNpZmRlZiBDT05GSUdfS1ZNX1NNTVxcbmFyY2gveDg2L2t2bS92bXgvdm14LmMtODM5Mi1pbnQgdm14X3NtaV9hbGxvd2VkKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgYm9vbCBmb3JfaW5qZWN0aW9uKVxcbi0tXFxuYXJjaC94ODYva3ZtL3ZteC94ODZfb3BzLmg9MzQ9aW50IHZteF9zZXRfbXNyKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgc3RydWN0IG1zcl9kYXRhICptc3JfaW5mbyk7XFxuYXJjaC94ODYva3ZtL3ZteC94ODZfb3BzLmg6MzU6I2lmZGVmIENPTkZJR19LVk1fU01NXFxuYXJjaC94ODYva3ZtL3ZteC94ODZfb3BzLmgtMzYtaW50IHZteF9zbWlfYWxsb3dlZChzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIGJvb2wgZm9yX2luamVjdGlvbik7XFxuLS1cXG5hcmNoL3g4Ni9rdm0veDg2LmM9Mzg3OD1pbnQga3ZtX3NldF9tc3JfY29tbW9uKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgc3RydWN0IG1zcl9kYXRhICptc3JfaW5mbylcXG4tLVxcbmFyY2gveDg2L2t2bS94ODYuYy00MDU4LVxcdGNhc2UgTVNSX0lBMzJfU01CQVNFOlxcbmFyY2gveDg2L2t2bS94ODYuYzo0MDU5OlxcdFxcdGlmICghSVNfRU5BQkxFRChDT05GSUdfS1ZNX1NNTSkgfHwgIW1zcl9pbmZvLVxcdTAwM2Vob3N0X2luaXRpYXRlZClcXG5hcmNoL3g4Ni9rdm0veDg2LmMtNDA2MC1cXHRcXHRcXHRyZXR1cm4gMTtcXG4tLVxcbmFyY2gveDg2L2t2bS94ODYuYz00MzM1PWludCBrdm1fZ2V0X21zcl9jb21tb24oc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCBzdHJ1Y3QgbXNyX2RhdGEgKm1zcl9pbmZvKVxcbi0tXFxuYXJjaC94ODYva3ZtL3g4Ni5jLTQ0NTQtXFx0Y2FzZSBNU1JfSUEzMl9TTUJBU0U6XFxuYXJjaC94ODYva3ZtL3g4Ni5jOjQ0NTU6XFx0XFx0aWYgKCFJU19FTkFCTEVEKENPTkZJR19LVk1fU01NKSB8fCAhbXNyX2luZm8tXFx1MDAzZWhvc3RfaW5pdGlhdGVkKVxcbmFyY2gveDg2L2t2bS94ODYuYy00NDU2LVxcdFxcdFxcdHJldHVybiAxO1xcbi0tXFxuYXJjaC94ODYva3ZtL3g4Ni5jPTQ3Njg9aW50IGt2bV92bV9pb2N0bF9jaGVja19leHRlbnNpb24oc3RydWN0IGt2bSAqa3ZtLCBsb25nIGV4dClcXG4tLVxcbmFyY2gveDg2L2t2bS94ODYuYy00ODg3LVxcdGNhc2UgS1ZNX0NBUF9YODZfU01NOlxcbmFyY2gveDg2L2t2bS94ODYuYzo0ODg4OlxcdFxcdGlmICghSVNfRU5BQkxFRChDT05GSUdfS1ZNX1NNTSkpXFxuYXJjaC94ODYva3ZtL3g4Ni5jLTQ4ODktXFx0XFx0XFx0YnJlYWs7XFxuLS1cXG5hcmNoL3g4Ni9rdm0veDg2LmM9NTU1Nz1zdGF0aWMgdm9pZCBrdm1fdmNwdV9pb2N0bF94ODZfZ2V0X3ZjcHVfZXZlbnRzKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSxcXG4tLVxcbmFyY2gveDg2L2t2bS94ODYuYy01NTYzLVxcbmFyY2gveDg2L2t2bS94ODYuYzo1NTY0OiNpZmRlZiBDT05GSUdfS1ZNX1NNTVxcbmFyY2gveDg2L2t2bS94ODYuYy01NTY1LVxcdGlmIChrdm1fY2hlY2tfcmVxdWVzdChLVk1fUkVRX1NNSSwgdmNwdSkpXFxuLS1cXG5hcmNoL3g4Ni9rdm0veDg2LmMtNTYwNi1cXG5hcmNoL3g4Ni9rdm0veDg2LmM6NTYwNzojaWZkZWYgQ09ORklHX0tWTV9TTU1cXG5hcmNoL3g4Ni9rdm0veDg2LmMtNTYwOC1cXHRldmVudHMtXFx1MDAzZXNtaS5zbW0gPSBpc19zbW0odmNwdSk7XFxuLS1cXG5hcmNoL3g4Ni9rdm0veDg2LmM9NTYyNj1zdGF0aWMgaW50IGt2bV92Y3B1X2lvY3RsX3g4Nl9zZXRfdmNwdV9ldmVudHMoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LFxcbi0tXFxuYXJjaC94ODYva3ZtL3g4Ni5jLTU2OTUtXFx0aWYgKGV2ZW50cy1cXHUwMDNlZmxhZ3MgXFx1MDAyNiBLVk1fVkNQVUVWRU5UX1ZBTElEX1NNTSkge1xcbmFyY2gveDg2L2t2bS94ODYuYzo1Njk2OiNpZmRlZiBDT05GSUdfS1ZNX1NNTVxcbmFyY2gveDg2L2t2bS94ODYuYy01Njk3LVxcdFxcdGlmICghISh2Y3B1LVxcdTAwM2VhcmNoLmhmbGFncyBcXHUwMDI2IEhGX1NNTV9NQVNLKSAhPSBldmVudHMtXFx1MDAzZXNtaS5zbW0pIHtcXG4tLVxcbmFyY2gveDg2L2t2bS94ODYuYz04ODQ1PXN0YXRpYyBib29sIGVtdWxhdG9yX2lzX3NtbShzdHJ1Y3QgeDg2X2VtdWxhdGVfY3R4dCAqY3R4dClcXG4tLVxcbmFyY2gveDg2L2t2bS94ODYuYy04ODQ5LVxcbmFyY2gveDg2L2t2bS94ODYuYzo4ODUwOiNpZm5kZWYgQ09ORklHX0tWTV9TTU1cXG5hcmNoL3g4Ni9rdm0veDg2LmMtODg1MS1zdGF0aWMgaW50IGVtdWxhdG9yX2xlYXZlX3NtbShzdHJ1Y3QgeDg2X2VtdWxhdGVfY3R4dCAqY3R4dClcXG4tLVxcbmFyY2gveDg2L2t2bS94ODYuYz0xMDYzMz1zdGF0aWMgaW50IGt2bV9jaGVja19hbmRfaW5qZWN0X2V2ZW50cyhzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsXFxuLS1cXG5hcmNoL3g4Ni9rdm0veDg2LmMtMTA3NTktXFx0ICovXFxuYXJjaC94ODYva3ZtL3g4Ni5jOjEwNzYwOiNpZmRlZiBDT05GSUdfS1ZNX1NNTVxcbmFyY2gveDg2L2t2bS94ODYuYy0xMDc2MS1cXHRpZiAodmNwdS1cXHUwMDNlYXJjaC5zbWlfcGVuZGluZykge1xcbi0tXFxuYXJjaC94ODYva3ZtL3g4Ni5jPTExMTEyPXN0YXRpYyBpbnQgdmNwdV9lbnRlcl9ndWVzdChzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXFxuLS1cXG5hcmNoL3g4Ni9rdm0veDg2LmMtMTEyMDctXFx0XFx0XFx0a3ZtX3BtdV9kZWxpdmVyX3BtaSh2Y3B1KTtcXG5hcmNoL3g4Ni9rdm0veDg2LmM6MTEyMDg6I2lmZGVmIENPTkZJR19LVk1fU01NXFxuYXJjaC94ODYva3ZtL3g4Ni5jLTExMjA5LVxcdFxcdGlmIChrdm1fY2hlY2tfcmVxdWVzdChLVk1fUkVRX1NNSSwgdmNwdSkpXFxuLS1cXG5hcmNoL3g4Ni9rdm0veDg2LmM9MTE1Njk9Ym9vbCBrdm1fdmNwdV9oYXNfZXZlbnRzKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSlcXG4tLVxcbmFyY2gveDg2L2t2bS94ODYuYy0xMTU4NS1cXG5hcmNoL3g4Ni9rdm0veDg2LmM6MTE1ODY6I2lmZGVmIENPTkZJR19LVk1fU01NXFxuYXJjaC94ODYva3ZtL3g4Ni5jLTExNTg3LVxcdGlmIChrdm1fdGVzdF9yZXF1ZXN0KEtWTV9SRVFfU01JLCB2Y3B1KSB8fFxcbi0tXFxuYXJjaC94ODYva3ZtL3g4Ni5jPTExODE1PWJvb2wga3ZtX2FyY2hfZHlfcnVubmFibGUoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxcbi0tXFxuYXJjaC94ODYva3ZtL3g4Ni5jLTExODIwLVxcdGlmIChrdm1fdGVzdF9yZXF1ZXN0KEtWTV9SRVFfTk1JLCB2Y3B1KSB8fFxcbmFyY2gveDg2L2t2bS94ODYuYzoxMTgyMTojaWZkZWYgQ09ORklHX0tWTV9TTU1cXG5hcmNoL3g4Ni9rdm0veDg2LmMtMTE4MjItXFx0XFx0a3ZtX3Rlc3RfcmVxdWVzdChLVk1fUkVRX1NNSSwgdmNwdSkgfHxcXG4tLVxcbmFyY2gveDg2L2t2bS94ODYuaD02Mz1zdGF0aWNfYXNzZXJ0KFNJWkVfT0ZfTUVNU0xPVFNfSEFTSFRBQkxFID09XFxuYXJjaC94ODYva3ZtL3g4Ni5oOjY0OlxcdCAgICAgICgxMDI0ICogKDEgKyBJU19FTkFCTEVEKENPTkZJR19YODZfNjQpKSAqICgxICsgSVNfRU5BQkxFRChDT05GSUdfS1ZNX1NNTSkpKSk7XFxuYXJjaC94ODYva3ZtL3g4Ni5oLTY1LVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yMVQxOToyNTo0NS41ODkyMjYyMTJaIiwiU2VxIjoxMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MTc0ODY1ODQxNDMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBLVk0gU01NIFBhdGNoIFJlcXVpcmVtZW50cyoqXG5cbk9rYXksIHNvIGl0J3MgbG9va2luZyBwcmV0dHkgc3RyYWlnaHRmb3J3YXJkLiBUaGUgY29yZSBvZiB0aGlzIHBhdGNoLCB0aGUgcGFydCB0aGF0IGFjdHVhbGx5IGRlYWxzIHdpdGggU2VjdXJlIE1vZGUgTWFuYWdlbWVudCAoU01NKSBzdXBwb3J0LCBoaW5nZXMgb24gYENPTkZJR19LVk1fU01NYC4gTWFrZXMgcGVyZmVjdCBzZW5zZTsgaWYgU01NIHN1cHBvcnQgaXNuJ3QgY29tcGlsZWQgaW4sIHRoZW4gdGhlIGZ1bmN0aW9ucyByZWxhdGVkIHRvIGxlYXZpbmcgU01NIHdvdWxkbid0IGV4aXN0IGFuZCBuZWVkIG1vZGlmaWNhdGlvbi4gU3BlY2lmaWNhbGx5LCBpdCdzIHRoZSBgc3ZtX2xlYXZlX3NtbWAgYW5kIGB2bXhfbGVhdmVfc21tYCBmdW5jdGlvbnMgdGhhdCBhcmUgYmVpbmcgdG91Y2hlZC4gR2l2ZW4gdGhlIG5hbWVzLCB0aG9zZSBhcmUgY2xlYXJseSBhcmNoaXRlY3R1cmUtc3BlY2lmaWM6IEFNRCBTZWN1cmUgVmlydHVhbCBNYWNoaW5lIChTVk0pIGFuZCBJbnRlbCBWaXJ0dWFsIE1hY2hpbmUgRXh0ZW5zaW9ucyAoVk1YKSwgcmVzcGVjdGl2ZWx5LiBBbmQgdGhvc2UgYXJlIG9ubHkgY29tcGlsZWQgaWYgYENPTkZJR19LVk1fU01NYCBpcyBlbmFibGVkLlxuXG5GdXJ0aGVybW9yZSwgdGhpcyBhbHNvIG1vZGlmaWVzIGBfX3ZteF9oYW5kbGVfZXhpdGAgdG9vLCB3aGljaCBpcyBpbnRlcmVzdGluZy4gSSdsbCBuZWVkIHRvIHJlbWVtYmVyIHRoYXQgdGhpcyBjb2RlIGlzIGxvY2F0ZWQgaW4gYGFyY2gveDg2L2t2bS92bXgvdm14LmNgLiBPZiBjb3Vyc2UsIHRoaXMgbWVhbnMgdGhlIG92ZXJhbGwgcGF0Y2ggZGVwZW5kcyBvbiBib3RoIGBDT05GSUdfS1ZNX0lOVEVMYCAoZm9yIHRoZSBWTVggc2lkZSkgYW5kIGBDT05GSUdfS1ZNX0FNRGAgKGZvciB0aGUgU1ZNIHNpZGUpLiBTbywgdGhlIGJ1aWxkIGNvbmZpZ3VyYXRpb24gaW1wbGljYXRpb25zIGFyZSBwcmV0dHkgYnJvYWQuXG5cbkFscmlnaHQsIGxldCdzIHRha2UgYSBsb29rIGF0IGBfX3ZteF9oYW5kbGVfZXhpdGAgZGlyZWN0bHk7IEknbGwgbmVlZCBhIGJldHRlciB1bmRlcnN0YW5kaW5nIG9mICpob3cqIGl0J3MgaW50ZXJhY3Rpbmcgd2l0aCB0aGUgU01NIGV4aXQgcHJvY2VzcyB0byB1bmRlcnN0YW5kIHRoZSBmdWxsIHNjb3BlIG9mIHRoaXMgY2hhbmdlLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMDU0MiwiT3V0cHV0VG9rZW5zIjozOSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEzNywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yMVQxOToyNjowMy4wNzU4MTQ0ODZaIiwiU2VxIjoxMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE4NTI1MzQ0MiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJfX3ZteF9oYW5kbGVfZXhpdFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJhcmNoL3g4Ni9rdm0vdm14L1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJhcmNoL3g4Ni9rdm0vdm14L3ZteC5jPTY0OTE9dm9pZCBkdW1wX3ZtY3Moc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxcbi0tXFxuYXJjaC94ODYva3ZtL3ZteC92bXguYy02Njk1LSAqL1xcbmFyY2gveDg2L2t2bS92bXgvdm14LmM6NjY5NjpzdGF0aWMgaW50IF9fdm14X2hhbmRsZV9leGl0KHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgZmFzdHBhdGhfdCBleGl0X2Zhc3RwYXRoKVxcbmFyY2gveDg2L2t2bS92bXgvdm14LmMtNjY5Ny17XFxuLS1cXG5hcmNoL3g4Ni9rdm0vdm14L3ZteC5jPTY4NTY9aW50IHZteF9oYW5kbGVfZXhpdChzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIGZhc3RwYXRoX3QgZXhpdF9mYXN0cGF0aClcXG5hcmNoL3g4Ni9rdm0vdm14L3ZteC5jLTY4NTcte1xcbmFyY2gveDg2L2t2bS92bXgvdm14LmM6Njg1ODpcXHRpbnQgcmV0ID0gX192bXhfaGFuZGxlX2V4aXQodmNwdSwgZXhpdF9mYXN0cGF0aCk7XFxuYXJjaC94ODYva3ZtL3ZteC92bXguYy02ODU5LVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yMVQxOToyNjowMy4yNjEwNzc1MDdaIiwiU2VxIjoxMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MTM4MDQyNjQ5NTcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqRm9jdXNpbmcgb24gdGhlIFNNTS9OZXN0ZWQgVmlydHVhbGl6YXRpb24gQnVnKipcblxuT2theSwgc28gdGhlIGludmVzdGlnYXRpb24gY29udGludWVzLiBHaXZlbiB0aGF0IHRoaXMgYnVnIGFwcGVhcnMgdG8gYmUgcmVsYXRlZCB0byBuZXN0ZWQgdmlydHVhbGl6YXRpb24gYW5kIGludGVyYWN0aW9ucyB3aXRoIFN5c3RlbSBNYW5hZ2VtZW50IE1vZGUgKFNNTSksIEknbSBnb2luZyB0byBzaGlmdCBteSBmb2N1cyBvbnRvIGEgZmV3IGtleSBmdW5jdGlvbnMuIE15IGluaXRpYWwgaW5zdGluY3QgaXMgdG8gaG9uZSBpbiBvbiBgc3ZtX2xlYXZlX3NtbWAsIGB2bXhfbGVhdmVfc21tYCwgYW5kIGBfX3ZteF9oYW5kbGVfZXhpdGAuIEkga25vdyB0aGF0IGBfX3ZteF9oYW5kbGVfZXhpdGAgaXMgYSBoaWdoLWZyZXF1ZW5jeSBmdW5jdGlvbiwgYSBob3QgcGF0aCBpZiB5b3Ugd2lsbCwgZm9yIFZNIGV4aXRzIGluIHRoZSBWTVggd29ybGQsIGJ1dCBiZWNhdXNlIHRoZSBjb250ZXh0IHBvaW50cyBzcGVjaWZpY2FsbHkgdG8gbmVzdGVkIHZpcnR1YWxpemF0aW9uIGFuZCBTTU0gaW50ZXJhY3Rpb24sIEkgbmVlZCB0byBsb29rIGNsb3NlciBhdCBgc3ZtX2xlYXZlX3NtbWAgYW5kIGB2bXhfbGVhdmVfc21tYC4gSSdsbCBhbHNvIGJyaW5nIHRoZSBuZXN0ZWQgdmlydHVhbGl6YXRpb24gY29tcG9uZW50cyBpbnRvIHBsYXk7IGxvb2tpbmcgc3BlY2lmaWNhbGx5IGF0IGNhbGxzIGxpa2UgYG5lc3RlZF92bXhfcnVuYCBhbmQgYG5lc3RlZF9zdm1fdm1ydW5gLiBJIHNob3VsZCBzdGFydCBieSBjaGVja2luZyB0aGUgaW1wbGVtZW50YXRpb25zIG9mIGBzdm1fbGVhdmVfc21tYCBhbmQgYHZteF9sZWF2ZV9zbW1gLiBMZXQncyBkaWcgaW4uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjExMzI2LCJPdXRwdXRUb2tlbnMiOjM5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTM0LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTIxVDE5OjI2OjE3LjA2NTM1OTg3NFoiLCJTZXEiOjE0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NjY1NzIxNjkzLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInZteF9sZWF2ZV9zbW1cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiYXJjaC94ODYva3ZtL3ZteC9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiYXJjaC94ODYva3ZtL3ZteC9tYWluLmM9MjM1PXN0YXRpYyBpbnQgdnRfbGVhdmVfc21tKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgY29uc3QgdW5pb24ga3ZtX3NtcmFtICpzbXJhbSlcXG4tLVxcbmFyY2gveDg2L2t2bS92bXgvbWFpbi5jLTIzOS1cXG5hcmNoL3g4Ni9rdm0vdm14L21haW4uYzoyNDA6XFx0cmV0dXJuIHZteF9sZWF2ZV9zbW0odmNwdSwgc21yYW0pO1xcbmFyY2gveDg2L2t2bS92bXgvbWFpbi5jLTI0MS19XFxuLS1cXG5hcmNoL3g4Ni9rdm0vdm14L3ZteC5jPTg0MDA9aW50IHZteF9lbnRlcl9zbW0oc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCB1bmlvbiBrdm1fc21yYW0gKnNtcmFtKVxcbi0tXFxuYXJjaC94ODYva3ZtL3ZteC92bXguYy04NDIwLVxcbmFyY2gveDg2L2t2bS92bXgvdm14LmM6ODQyMTppbnQgdm14X2xlYXZlX3NtbShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIGNvbnN0IHVuaW9uIGt2bV9zbXJhbSAqc21yYW0pXFxuYXJjaC94ODYva3ZtL3ZteC92bXguYy04NDIyLXtcXG4tLVxcbmFyY2gveDg2L2t2bS92bXgveDg2X29wcy5oPTM3PWludCB2bXhfZW50ZXJfc21tKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgdW5pb24ga3ZtX3NtcmFtICpzbXJhbSk7XFxuYXJjaC94ODYva3ZtL3ZteC94ODZfb3BzLmg6Mzg6aW50IHZteF9sZWF2ZV9zbW0oc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCBjb25zdCB1bmlvbiBrdm1fc21yYW0gKnNtcmFtKTtcXG5hcmNoL3g4Ni9rdm0vdm14L3g4Nl9vcHMuaC0zOS12b2lkIHZteF9lbmFibGVfc21pX3dpbmRvdyhzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yMVQxOToyNjoxNy43MzEwODk5NzdaIiwiU2VxIjoxNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTQ1MjU3OTYwMCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBbmFseXNpcyBvZiB0aGUgS1ZNIFBhdGNoKipcblxuT2theSwgc28gSSdtIGRpdmluZyBpbnRvIHRoaXMgS1ZNIHBhdGNoLCBhbmQgdGhlIGNvcmUgb2YgaXQgc2VlbXMgdG8gYmUgY2VudGVyZWQgYXJvdW5kIGBzdm1fbGVhdmVfc21tYCBhbmQgYHZteF9sZWF2ZV9zbW1gLiBUaG9zZSBhcmUgZGVmaW5pdGVseSB0aGUgcHJpbWFyeSBmb2N1cywgc28gSSdsbCBiZSBzdXJlIHRvIGtlZXAgdGhlbSBpbiBtaW5kLiBJIGRpZCBub3RlIHRoYXQgYF9fdm14X2hhbmRsZV9leGl0YCBpcyBhbHNvIGluY2x1ZGVkLCBhbmQgd2hpbGUgdGhhdCdzIGEgaG90IHBhdGgsIHRoaXMgcGF0Y2ggKnNwZWNpZmljYWxseSogbW9kaWZpZXMgdGhvc2UgZnVuY3Rpb25zLCBhbG9uZyB3aXRoIGBzdm1fbGVhdmVfc21tYCBhbmQgYHZteF9sZWF2ZV9zbW1gLCBzbyBJIHdpbGwgaW5jbHVkZSBhbGwgb2YgdGhlbS5cblxuTm93LCBsZXQncyBsb29rIGF0IHRoZSBuZWNlc3NhcnkgY29uZmlndXJhdGlvbnMuIEknbSBnb2luZyB0byBuZWVkIHRvIGVuYWJsZSBgS1ZNYCwgYEtWTV9JTlRFTGAsIGFuZCBgS1ZNX0FNRGAsIG9idmlvdXNseS4gQW5kIHNpbmNlIHRoaXMgc2VlbXMgdG8gYmUgdG91Y2hpbmcgU01NLCBgS1ZNX1NNTWAgaXMgbGlrZWx5IGFsc28gY3J1Y2lhbC4gTGV0IG1lIGp1c3QgY29uZmlybSB0aGF04oCmIFllcCwgYGNvbmZpZyBLVk1fU01NYCBsb29rcyByaWdodC4gR29vZC5cblxuSG1tLCBzb21ldGhpbmcncyBqdW1wZWQgb3V0IGF0IG1lLiBUaGUgcGF0Y2ggaXMgYWxzbyBjaGFuZ2luZyBgdmNwdS1cdTAwM2VhcmNoLm5lc3RlZF9ydW5fcGVuZGluZ2AgdG8gYEtWTV9ORVNURURfUlVOX1BFTkRJTkdfVU5UUlVTVEVEYC4gVGhhdCdzIGFuIGludHJpZ3VpbmcgY2hhbmdlLCBhbmQgaXQgKnNjcmVhbXMqIG5lc3RlZCB2aXJ0dWFsaXphdGlvbi4gSSBuZWVkIHRvIG1ha2Ugc3VyZSBJIHVuZGVyc3RhbmQgdGhlIGNvbnRleHQuIExldCBtZSBxdWlja2x5IHNjYW4gYGFyY2gveDg2L2t2bS9LY29uZmlnYCB0byBzZWUgaWYgdGhlcmUgYXJlIGFueSByZWxhdGVkIG5lc3RlZCB2aXJ0dWFsaXphdGlvbiBjb25maWd1cmF0aW9uIG9wdGlvbnMgdGhhdCBJJ20gbWlzc2luZy4gR290IHRvIGhhdmUgYSBmdWxsIHVuZGVyc3RhbmRpbmcgdG8gZW5zdXJlIHRoaXMgcGF0Y2ggaXMgc291bmQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjEyMTgzLCJPdXRwdXRUb2tlbnMiOjMyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjQwLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTIxVDE5OjI2OjIzLjE4MzY3NDI1OFoiLCJTZXEiOjE2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjIwNDcwNjA5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm5lc3RlZFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJhcmNoL3g4Ni9rdm0vS2NvbmZpZ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJhcmNoL3g4Ni9rdm0vS2NvbmZpZz0xMDc9Y29uZmlnIEtWTV9JTlRFTF9QUk9WRV9WRVxcbi0tXFxuYXJjaC94ODYva3ZtL0tjb25maWctMTE2LSAgICAgICAgICBOb3RlOiBzb21lIENQVXMgYXBwZWFyIHRvIGdlbmVyYXRlIHNwdXJpb3VzIEVQVCBWaW9sYXRpb25zICNWRXNcXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZzoxMTc6ICAgICAgICAgIHRoYXQgdHJpZ2dlciBLVk0ncyBXQVJOLCBpbiBwYXJ0aWN1bGFyIHdpdGggZXB0YWQ9MCBhbmQvb3IgbmVzdGVkXFxuYXJjaC94ODYva3ZtL0tjb25maWctMTE4LSAgICAgICAgICB2aXJ0dWFsaXphdGlvbi5cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjFUMTk6MjY6MjMuNDA0MTUzNDI2WiIsIlNlcSI6MTcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjE4MzQ1MDYyMzg1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEFuYWx5c2lzIG9mIHRoaXMgS1ZNIE5lc3RlZCBWaXJ0dWFsaXphdGlvbiBDaGFuZ2UqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGFuZCBteSBpbml0aWFsIHRob3VnaHQgaXMsIFwiQWgsIHJpZ2h0LCBuZXN0ZWQgdmlydHVhbGl6YXRpb24gaW4gS1ZNLlwiIEkga25vdyB0aGUgdXN1YWwgc3VzcGVjdCBmb3IgZW5hYmxpbmcgdGhhdCBpcyBzZXR0aW5nIGBuZXN0ZWQ9MWAgYXMgYSBtb2R1bGUgcGFyYW1ldGVyIGZvciBlaXRoZXIgYGt2bS1pbnRlbGAgb3IgYGt2bS1hbWRgLiBJIGRvbid0IHJlY2FsbCBzZWVpbmcgYSBzcGVjaWZpYyBLY29uZmlnIG9wdGlvbiBkZWRpY2F0ZWQgdG8gbmVzdGVkIHZpcnR1YWxpemF0aW9uIGZvciB4ODYgS1ZNLiBJIHNob3VsZCBkb3VibGUtY2hlY2sgaWYgdGhlcmUgYXJlIGFueSBvdGhlciBjb25maWd1cmF0aW9uIGRlcGVuZGVuY2llcyBiZXlvbmQgdGhlIG9idmlvdXMuXG5cblJpZ2h0LCBJIG5lZWQgYEtWTV9TTU1gIGVuYWJsZWQuIFRoYXQgc2VlbXMgY3JpdGljYWwgaGVyZS5cblxuU28sIGp1c3QgdG8gYmUgZXhwbGljaXQgYWJvdXQgdGhlIGNvbmZpZ3VyYXRpb24gcmVxdWlyZW1lbnRzLCBJJ2xsIGpvdCBkb3duIHRoZSByZXF1aXJlZCBFbmFibGVDb25maWdzOiBgS1ZNYCwgYEtWTV9JTlRFTGAsIGBLVk1fQU1EYCwgYW5kIGNydWNpYWxseSwgYEtWTV9TTU1gLlxuXG5UaGVuLCBmcm9tIGEgc3ltYm9sIHBlcnNwZWN0aXZlLCBJJ20gZ29pbmcgdG8ga2VlcCBhbiBleWUgb24gYHN2bV9sZWF2ZV9zbW1gIGFuZCBgdm14X2xlYXZlX3NtbWAuIEkgc3VzcGVjdCB0aGVpciBpbnRlcmFjdGlvbiB3aXRoIG5lc3RlZCB2aXJ0dWFsaXphdGlvbiBpcyB0aGUgY3J1eCBvZiB0aGUgaXNzdWUuXG5cbk5vdywgZGlnZ2luZyBpbnRvIHRoZSByZWFzb25pbmcgYmVoaW5kIHRoZSBjaGFuZ2VzLCBpdCBzZWVtcyB0aGlzIHBhdGNoIGlzIGFsdGVyaW5nIGhvdyBLVk0gaGFuZGxlcyBuZXN0ZWQgdmlydHVhbGl6YXRpb24gd2hlbiB0cmFuc2l0aW9uaW5nIGluIGFuZCBvdXQgb2YgU3lzdGVtIE1hbmFnZW1lbnQgTW9kZSAoU01NKS4gU3BlY2lmaWNhbGx5LCBpdCdzIGFib3V0IGNoYW5naW5nIHRoZSBgbmVzdGVkX3J1bl9wZW5kaW5nYCBzdGF0ZSB0byBgS1ZNX05FU1RFRF9SVU5fUEVORElOR19VTlRSVVNURURgIHdoZW4gZXhpdGluZyBTTU0gaW4gYm90aCBTVk0gKEFNRCkgYW5kIFZNWCAoSW50ZWwpIGVudmlyb25tZW50cy4gUGx1cywgdGhlcmUncyBhIG1vZGlmaWNhdGlvbiB0byB0aGUgVk1YIGV4aXQgaGFuZGxlciB0byBzcGVjaWZpY2FsbHkgY2hlY2sgZm9yIHRoZSBgS1ZNX05FU1RFRF9SVU5fUEVORElOR2Agc3RhdGUuIFRoaXMgbWFrZXMgdGhlIGNvZGUgcG90ZW50aWFsbHkgdnVsbmVyYWJsZS4gSXQncyBhIGZ1bmN0aW9uYWwgY2hhbmdlIHdpdGhpbiB0aGUgY29yZSBLVk0gbG9naWMsIGltcGFjdGluZyBib3RoIG5lc3RlZCB2aXJ0dWFsaXphdGlvbiBhbmQgU01NIGludGVyYWN0aW9uLCBzbyB0aGlzIGlzIGRlZmluaXRlbHkgd29ydGggc29tZSBmdXp6aW5nIGVmZm9ydC5cblxuQWxyaWdodCwgdGltZSB0byBsb2cgdGhlc2UgcmVzdWx0cyFcblxuXG4iLCJJbnB1dFRva2VucyI6MTI5MjUsIk91dHB1dFRva2VucyI6MTkxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjU1LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTIxVDE5OjI2OjQxLjc0OTIyMDUyMVoiLCJTZXEiOjE4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIwMTc5MzUwNSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiS1ZNXCIsXG4gICAgXCJLVk1fSU5URUxcIixcbiAgICBcIktWTV9BTURcIixcbiAgICBcIktWTV9TTU1cIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJzdm1fbGVhdmVfc21tXCIsXG4gICAgXCJ2bXhfbGVhdmVfc21tXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgS1ZNJ3MgaGFuZGxpbmcgb2YgbmVzdGVkIHZpcnR1YWxpemF0aW9uIHN0YXRlIGR1cmluZyBTeXN0ZW0gTWFuYWdlbWVudCBNb2RlIChTTU0pIHRyYW5zaXRpb25zLiBTcGVjaWZpY2FsbHksIGl0IGNoYW5nZXMgdGhlIGBuZXN0ZWRfcnVuX3BlbmRpbmdgIHN0YXRlIHRvIGBLVk1fTkVTVEVEX1JVTl9QRU5ESU5HX1VOVFJVU1RFRGAgd2hlbiBsZWF2aW5nIFNNTSBpbiBib3RoIFNWTSBhbmQgVk1YLCBhbmQgdXBkYXRlcyB0aGUgZXhpdCBoYW5kbGVyIGluIFZNWCB0byBjaGVjayBmb3IgdGhlIGV4YWN0IGBLVk1fTkVTVEVEX1JVTl9QRU5ESU5HYCBzdGF0ZS4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBjb3JlIEtWTSBsb2dpYyB0aGF0IGFmZmVjdHMgbmVzdGVkIHZpcnR1YWxpemF0aW9uIGFuZCBTTU0sIG1ha2luZyBpdCB3b3J0aCBmdXp6aW5nLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIktWTVwiLFxuICAgIFwiS1ZNX0lOVEVMXCIsXG4gICAgXCJLVk1fQU1EXCIsXG4gICAgXCJLVk1fU01NXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwic3ZtX2xlYXZlX3NtbVwiLFxuICAgIFwidm14X2xlYXZlX3NtbVwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIEtWTSdzIGhhbmRsaW5nIG9mIG5lc3RlZCB2aXJ0dWFsaXphdGlvbiBzdGF0ZSBkdXJpbmcgU3lzdGVtIE1hbmFnZW1lbnQgTW9kZSAoU01NKSB0cmFuc2l0aW9ucy4gU3BlY2lmaWNhbGx5LCBpdCBjaGFuZ2VzIHRoZSBgbmVzdGVkX3J1bl9wZW5kaW5nYCBzdGF0ZSB0byBgS1ZNX05FU1RFRF9SVU5fUEVORElOR19VTlRSVVNURURgIHdoZW4gbGVhdmluZyBTTU0gaW4gYm90aCBTVk0gYW5kIFZNWCwgYW5kIHVwZGF0ZXMgdGhlIGV4aXQgaGFuZGxlciBpbiBWTVggdG8gY2hlY2sgZm9yIHRoZSBleGFjdCBgS1ZNX05FU1RFRF9SVU5fUEVORElOR2Agc3RhdGUuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgY29yZSBLVk0gbG9naWMgdGhhdCBhZmZlY3RzIG5lc3RlZCB2aXJ0dWFsaXphdGlvbiBhbmQgU01NLCBtYWtpbmcgaXQgd29ydGggZnV6emluZy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLmR1cmF0aW9uIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnTGxtVG9rZW4gPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS50b2tlbnMgLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdUb29sRHVyID0gc3RhdHMudG9vbC5jb3VudCA+IDAgPyAoc3RhdHMudG9vbC5kdXJhdGlvbiAvIHN0YXRzLnRvb2wuY291bnQpLnRvRml4ZWQoMikgOiAwOwoKCQkJY29uc3QgbGxtU3VtYXJ5Q2VsbHMgPSBbc3RhdHMubGxtLmNvdW50LCBzdGF0cy5sbG0udG9rZW5zLCBhdmdMbG1Ub2tlbiwgc3RhdHMubGxtLmR1cmF0aW9uLCBhdmdMbG1EdXJdOwoJCQljb25zdCB0b29sU3VtbWFyeUNlbGxzID0gW3N0YXRzLnRvb2wuY291bnQsIHN0YXRzLnRvb2wuZHVyYXRpb24sIGF2Z1Rvb2xEdXJdOwoKCQkJY29uc3QgbGxtU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbGxtX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQlsbG1TdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgbGxtVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQlsbG1TdW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJbGxtVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJbGxtU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQobGxtVHIpOwoKCQkJY29uc3QgdG9vbFN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rvb2xfc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgdG9vbFRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJdG9vbFN1bW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJdG9vbFRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZCh0b29sVHIpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBmaWx0ZXJlZFN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBbImxsbSIsICJ0b29sIl0uaW5jbHVkZXMoZC5UeXBlKSk7CgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ0R1cmF0aW9uJyk7CgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7IAoKCQkJZmlsdGVyZWRTdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJCgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsKCQkJCWxldCB0b29sdGlwID0gcy5OYW1lOwoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIgJiYgcy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoJCQkJZGF0YS5hZGRSb3coW2Ake3MuU2VxfWAsIGR1ciwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1RpbWUgQ29uc3VtcHRpb24gb2YgTExNL1Rvb2wgQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTS9Ub29sIFN0ZXBzJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ1NlY29uZHMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2R1cmF0aW9uX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBsbG1TdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gZC5UeXBlID09PSAibGxtIik7CgkJCWlmIChsbG1TdGVwcy5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwkJCQoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ1Rva2VucycpOwkJCQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICdzdHlsZSd9KTsJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7CQoKCQkJY29uc3QgYWdlbnRDb2xvcnMgPSB7fTsKCQkJY29uc3QgcGFsZXR0ZSA9IFsnIzQyODVGNCcsICcjREI0NDM3JywgJyNGNEI0MDAnLCAnIzBGOUQ1OCcsICcjQUI0N0JDJywgJyMwMEFDQzEnXTsKCQkJbGV0IGNvbG9ySWR4ID0gMDsKCQkJY29uc3QgYWdlbnRMTE1Db3VudHMgPSB7fTsKCQkJbGxtU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCWlmICghYWdlbnRDb2xvcnNbcy5OYW1lXSkgewoJCQkJCWFnZW50Q29sb3JzW3MuTmFtZV0gPSBwYWxldHRlW2NvbG9ySWR4ICUgcGFsZXR0ZS5sZW5ndGhdOwoJCQkJCWNvbG9ySWR4Kys7CgkJCQl9CgoJCQkJYWdlbnRMTE1Db3VudHNbcy5OYW1lXSA9IChhZ2VudExMTUNvdW50c1tzLk5hbWVdIHx8IDApICsgMTsKCQkJCWNvbnN0IGxhYmVsID0gYCR7cy5OYW1lfS0ke2FnZW50TExNQ291bnRzW3MuTmFtZV19YDsKCQkJCWNvbnN0IHRvdGFsVG9rZW5zID0gcy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2VuczsKCQkJCWNvbnN0IHN0eWxlID0gYGNvbG9yOiAke2FnZW50Q29sb3JzW3MuTmFtZV19YDsKCQkJCWxldCB0b29sdGlwID0gYFRvdGFsIFRva2VuczogJHt0b3RhbFRva2Vuc31cbihJbjogJHtzLklucHV0VG9rZW5zfSwgT3V0OiAke3MuT3V0cHV0VG9rZW5zfSwgVGhvdWdodHM6ICR7cy5PdXRwdXRUaG91Z2h0c1Rva2Vuc30pYDsKCQkJCWlmIChzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgoJCQkJZGF0YS5hZGRSb3coW2xhYmVsLCB0b3RhbFRva2Vucywgc3R5bGUsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUb2tlbiBDb25zdW1wdGlvbiBieSBMTE0gQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTSBDYWxsIFNlcXVlbmNlJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ0NvbnN1bWVkIFRva2VucycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9rZW5fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCQlsZXQgYWxsRXhwYW5kZWQgPSBmYWxzZTsKCQlmdW5jdGlvbiB0b2dnbGVBbGxEZXRhaWxzKCkgewoJCQlhbGxFeHBhbmRlZCA9ICFhbGxFeHBhbmRlZDsKCQkJZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnZGV0YWlscycpLmZvckVhY2goZCA9PiB7CgkJCQlpZiAoYWxsRXhwYW5kZWQpIGQuc2V0QXR0cmlidXRlKCdvcGVuJywgJycpOwoJCQkJZWxzZSBkLnJlbW92ZUF0dHJpYnV0ZSgnb3BlbicpOwoJCQl9KTsKCQl9Cgk8L3NjcmlwdD4KCgo8L2JvZHk+CjwvaHRtbD4K" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflow42756[1] Phase: Succeeded StartedAt: 2026-07-21 19:26:56 +0000 UTC FinishedAt: 2026-07-21 19:26:57 +0000 UTC Input: nil Output: nil --------- Name: series-workflow42756[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-07-21 19:26:57 +0000 UTC FinishedAt: 2026-07-21 19:26:57 +0000 UTC Input: nil Output: nil --------- Name: series-workflow42756[2] Phase: Succeeded StartedAt: 2026-07-21 19:26:57 +0000 UTC FinishedAt: 2026-07-21 23:57:16 +0000 UTC Input: nil Output: nil --------- Name: series-workflow42756[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"58717b2a1365d06c8c64b72aa948541b53fe31eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","KVM_INTEL","KVM_AMD","KVM_SMM"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["svm_leave_smm","vmx_leave_smm"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"58717b2a1365d06c8c64b72aa948541b53fe31eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","KVM_INTEL","KVM_AMD","KVM_SMM"],"series_id":"fbbc2e03-030c-465a-ba2d-af1caa16d92f","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN) Phase: Succeeded StartedAt: 2026-07-21 19:26:59 +0000 UTC FinishedAt: 2026-07-21 23:57:16 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"58717b2a1365d06c8c64b72aa948541b53fe31eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","KVM_INTEL","KVM_AMD","KVM_SMM"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},"fuzz":{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["svm_leave_smm","vmx_leave_smm"],"skip_cover_check":false},"patched":{"arch":"amd64","commit_hash":"58717b2a1365d06c8c64b72aa948541b53fe31eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","KVM_INTEL","KVM_AMD","KVM_SMM"],"series_id":"fbbc2e03-030c-465a-ba2d-af1caa16d92f","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},"retest":null,"track":"KASAN"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: nil --------- Name: series-workflow42756[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"58717b2a1365d06c8c64b72aa948541b53fe31eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","KVM_INTEL","KVM_AMD","KVM_SMM"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["svm_leave_smm","vmx_leave_smm"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"58717b2a1365d06c8c64b72aa948541b53fe31eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","KVM_INTEL","KVM_AMD","KVM_SMM"],"series_id":"fbbc2e03-030c-465a-ba2d-af1caa16d92f","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[0] Phase: Succeeded StartedAt: 2026-07-21 19:26:59 +0000 UTC FinishedAt: 2026-07-21 19:28:19 +0000 UTC Input: nil Output: nil --------- Name: series-workflow42756[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"58717b2a1365d06c8c64b72aa948541b53fe31eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","KVM_INTEL","KVM_AMD","KVM_SMM"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["svm_leave_smm","vmx_leave_smm"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"58717b2a1365d06c8c64b72aa948541b53fe31eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","KVM_INTEL","KVM_AMD","KVM_SMM"],"series_id":"fbbc2e03-030c-465a-ba2d-af1caa16d92f","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[0].save-base-req Phase: Succeeded StartedAt: 2026-07-21 19:26:59 +0000 UTC FinishedAt: 2026-07-21 19:28:09 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"58717b2a1365d06c8c64b72aa948541b53fe31eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","KVM_INTEL","KVM_AMD","KVM_SMM"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflow42756/series-workflow42756-convert-artifact-4128103567/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow42756[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"58717b2a1365d06c8c64b72aa948541b53fe31eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","KVM_INTEL","KVM_AMD","KVM_SMM"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["svm_leave_smm","vmx_leave_smm"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"58717b2a1365d06c8c64b72aa948541b53fe31eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","KVM_INTEL","KVM_AMD","KVM_SMM"],"series_id":"fbbc2e03-030c-465a-ba2d-af1caa16d92f","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[1] Phase: Succeeded StartedAt: 2026-07-21 19:28:19 +0000 UTC FinishedAt: 2026-07-21 20:02:13 +0000 UTC Input: nil Output: nil --------- Name: series-workflow42756[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"58717b2a1365d06c8c64b72aa948541b53fe31eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","KVM_INTEL","KVM_AMD","KVM_SMM"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["svm_leave_smm","vmx_leave_smm"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"58717b2a1365d06c8c64b72aa948541b53fe31eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","KVM_INTEL","KVM_AMD","KVM_SMM"],"series_id":"fbbc2e03-030c-465a-ba2d-af1caa16d92f","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[1].base-build Phase: Succeeded StartedAt: 2026-07-21 19:28:19 +0000 UTC FinishedAt: 2026-07-21 20:02:13 +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:*b2d9ea7e-7723-4d94-a4b7-9b2b4127c666,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-workflow42756/series-workflow42756-convert-artifact-4128103567/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": "85c73649-3e25-4e1d-8742-3f85e9c1d826", "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-workflow42756/series-workflow42756-build-action-2772158933/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow42756[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"58717b2a1365d06c8c64b72aa948541b53fe31eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","KVM_INTEL","KVM_AMD","KVM_SMM"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["svm_leave_smm","vmx_leave_smm"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"58717b2a1365d06c8c64b72aa948541b53fe31eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","KVM_INTEL","KVM_AMD","KVM_SMM"],"series_id":"fbbc2e03-030c-465a-ba2d-af1caa16d92f","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[1].base-build(0) Phase: Succeeded StartedAt: 2026-07-21 19:28:19 +0000 UTC FinishedAt: 2026-07-21 20:01:52 +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:*b2d9ea7e-7723-4d94-a4b7-9b2b4127c666,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-workflow42756/series-workflow42756-convert-artifact-4128103567/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": "85c73649-3e25-4e1d-8742-3f85e9c1d826", "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-workflow42756/series-workflow42756-build-action-2772158933/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow42756[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"58717b2a1365d06c8c64b72aa948541b53fe31eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","KVM_INTEL","KVM_AMD","KVM_SMM"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["svm_leave_smm","vmx_leave_smm"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"58717b2a1365d06c8c64b72aa948541b53fe31eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","KVM_INTEL","KVM_AMD","KVM_SMM"],"series_id":"fbbc2e03-030c-465a-ba2d-af1caa16d92f","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[2] Phase: Succeeded StartedAt: 2026-07-21 20:02:13 +0000 UTC FinishedAt: 2026-07-21 20:02:13 +0000 UTC Input: nil Output: nil --------- Name: series-workflow42756[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"58717b2a1365d06c8c64b72aa948541b53fe31eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","KVM_INTEL","KVM_AMD","KVM_SMM"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["svm_leave_smm","vmx_leave_smm"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"58717b2a1365d06c8c64b72aa948541b53fe31eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","KVM_INTEL","KVM_AMD","KVM_SMM"],"series_id":"fbbc2e03-030c-465a-ba2d-af1caa16d92f","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[2].abort-if-base-build-failed Phase: Skipped StartedAt: 2026-07-21 20:02:13 +0000 UTC FinishedAt: 2026-07-21 20:02:13 +0000 UTC Input: nil Output: nil --------- Name: series-workflow42756[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"58717b2a1365d06c8c64b72aa948541b53fe31eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","KVM_INTEL","KVM_AMD","KVM_SMM"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["svm_leave_smm","vmx_leave_smm"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"58717b2a1365d06c8c64b72aa948541b53fe31eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","KVM_INTEL","KVM_AMD","KVM_SMM"],"series_id":"fbbc2e03-030c-465a-ba2d-af1caa16d92f","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[3] Phase: Succeeded StartedAt: 2026-07-21 20:02:13 +0000 UTC FinishedAt: 2026-07-21 20:02:33 +0000 UTC Input: nil Output: nil --------- Name: series-workflow42756[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"58717b2a1365d06c8c64b72aa948541b53fe31eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","KVM_INTEL","KVM_AMD","KVM_SMM"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["svm_leave_smm","vmx_leave_smm"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"58717b2a1365d06c8c64b72aa948541b53fe31eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","KVM_INTEL","KVM_AMD","KVM_SMM"],"series_id":"fbbc2e03-030c-465a-ba2d-af1caa16d92f","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[3].save-patched-req Phase: Succeeded StartedAt: 2026-07-21 20:02:13 +0000 UTC FinishedAt: 2026-07-21 20:02:25 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"58717b2a1365d06c8c64b72aa948541b53fe31eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","KVM_INTEL","KVM_AMD","KVM_SMM"],"series_id":"fbbc2e03-030c-465a-ba2d-af1caa16d92f","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflow42756/series-workflow42756-convert-artifact-3029517790/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow42756[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"58717b2a1365d06c8c64b72aa948541b53fe31eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","KVM_INTEL","KVM_AMD","KVM_SMM"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["svm_leave_smm","vmx_leave_smm"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"58717b2a1365d06c8c64b72aa948541b53fe31eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","KVM_INTEL","KVM_AMD","KVM_SMM"],"series_id":"fbbc2e03-030c-465a-ba2d-af1caa16d92f","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[4] Phase: Succeeded StartedAt: 2026-07-21 20:02:33 +0000 UTC FinishedAt: 2026-07-21 20:05:05 +0000 UTC Input: nil Output: nil --------- Name: series-workflow42756[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"58717b2a1365d06c8c64b72aa948541b53fe31eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","KVM_INTEL","KVM_AMD","KVM_SMM"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["svm_leave_smm","vmx_leave_smm"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"58717b2a1365d06c8c64b72aa948541b53fe31eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","KVM_INTEL","KVM_AMD","KVM_SMM"],"series_id":"fbbc2e03-030c-465a-ba2d-af1caa16d92f","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[4].boot-test-base Phase: Succeeded StartedAt: 2026-07-21 20:02:33 +0000 UTC FinishedAt: 2026-07-21 20:04:58 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*85c73649-3e25-4e1d-8742-3f85e9c1d826,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-workflow42756/series-workflow42756-build-action-2772158933/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-workflow42756[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"58717b2a1365d06c8c64b72aa948541b53fe31eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","KVM_INTEL","KVM_AMD","KVM_SMM"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["svm_leave_smm","vmx_leave_smm"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"58717b2a1365d06c8c64b72aa948541b53fe31eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","KVM_INTEL","KVM_AMD","KVM_SMM"],"series_id":"fbbc2e03-030c-465a-ba2d-af1caa16d92f","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[5] Phase: Succeeded StartedAt: 2026-07-21 20:05:05 +0000 UTC FinishedAt: 2026-07-21 20:05:05 +0000 UTC Input: nil Output: nil --------- Name: series-workflow42756[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"58717b2a1365d06c8c64b72aa948541b53fe31eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","KVM_INTEL","KVM_AMD","KVM_SMM"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["svm_leave_smm","vmx_leave_smm"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"58717b2a1365d06c8c64b72aa948541b53fe31eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","KVM_INTEL","KVM_AMD","KVM_SMM"],"series_id":"fbbc2e03-030c-465a-ba2d-af1caa16d92f","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[5].abort-if-base-boot-failed Phase: Skipped StartedAt: 2026-07-21 20:05:05 +0000 UTC FinishedAt: 2026-07-21 20:05:05 +0000 UTC Input: nil Output: nil --------- Name: series-workflow42756[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"58717b2a1365d06c8c64b72aa948541b53fe31eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","KVM_INTEL","KVM_AMD","KVM_SMM"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["svm_leave_smm","vmx_leave_smm"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"58717b2a1365d06c8c64b72aa948541b53fe31eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","KVM_INTEL","KVM_AMD","KVM_SMM"],"series_id":"fbbc2e03-030c-465a-ba2d-af1caa16d92f","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[6] Phase: Succeeded StartedAt: 2026-07-21 20:05:05 +0000 UTC FinishedAt: 2026-07-21 20:49:34 +0000 UTC Input: nil Output: nil --------- Name: series-workflow42756[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"58717b2a1365d06c8c64b72aa948541b53fe31eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","KVM_INTEL","KVM_AMD","KVM_SMM"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["svm_leave_smm","vmx_leave_smm"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"58717b2a1365d06c8c64b72aa948541b53fe31eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","KVM_INTEL","KVM_AMD","KVM_SMM"],"series_id":"fbbc2e03-030c-465a-ba2d-af1caa16d92f","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[6].patched-build Phase: Succeeded StartedAt: 2026-07-21 20:05:05 +0000 UTC FinishedAt: 2026-07-21 20:49:34 +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:*b2d9ea7e-7723-4d94-a4b7-9b2b4127c666,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-workflow42756/series-workflow42756-convert-artifact-3029517790/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": "6174350a-23ce-482a-a50f-767211640e5c", "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-workflow42756/series-workflow42756-build-action-2540965554/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow42756[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"58717b2a1365d06c8c64b72aa948541b53fe31eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","KVM_INTEL","KVM_AMD","KVM_SMM"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["svm_leave_smm","vmx_leave_smm"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"58717b2a1365d06c8c64b72aa948541b53fe31eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","KVM_INTEL","KVM_AMD","KVM_SMM"],"series_id":"fbbc2e03-030c-465a-ba2d-af1caa16d92f","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[6].patched-build(0) Phase: Succeeded StartedAt: 2026-07-21 20:05:05 +0000 UTC FinishedAt: 2026-07-21 20:49:24 +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:*b2d9ea7e-7723-4d94-a4b7-9b2b4127c666,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-workflow42756/series-workflow42756-convert-artifact-3029517790/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": "6174350a-23ce-482a-a50f-767211640e5c", "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-workflow42756/series-workflow42756-build-action-2540965554/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow42756[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"58717b2a1365d06c8c64b72aa948541b53fe31eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","KVM_INTEL","KVM_AMD","KVM_SMM"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["svm_leave_smm","vmx_leave_smm"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"58717b2a1365d06c8c64b72aa948541b53fe31eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","KVM_INTEL","KVM_AMD","KVM_SMM"],"series_id":"fbbc2e03-030c-465a-ba2d-af1caa16d92f","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[7] Phase: Succeeded StartedAt: 2026-07-21 20:49:34 +0000 UTC FinishedAt: 2026-07-21 20:49:34 +0000 UTC Input: nil Output: nil --------- Name: series-workflow42756[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"58717b2a1365d06c8c64b72aa948541b53fe31eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","KVM_INTEL","KVM_AMD","KVM_SMM"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["svm_leave_smm","vmx_leave_smm"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"58717b2a1365d06c8c64b72aa948541b53fe31eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","KVM_INTEL","KVM_AMD","KVM_SMM"],"series_id":"fbbc2e03-030c-465a-ba2d-af1caa16d92f","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[7].abort-if-patched-build-failed Phase: Skipped StartedAt: 2026-07-21 20:49:34 +0000 UTC FinishedAt: 2026-07-21 20:49:34 +0000 UTC Input: nil Output: nil --------- Name: series-workflow42756[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"58717b2a1365d06c8c64b72aa948541b53fe31eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","KVM_INTEL","KVM_AMD","KVM_SMM"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["svm_leave_smm","vmx_leave_smm"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"58717b2a1365d06c8c64b72aa948541b53fe31eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","KVM_INTEL","KVM_AMD","KVM_SMM"],"series_id":"fbbc2e03-030c-465a-ba2d-af1caa16d92f","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[8] Phase: Succeeded StartedAt: 2026-07-21 20:49:34 +0000 UTC FinishedAt: 2026-07-21 20:52:39 +0000 UTC Input: nil Output: nil --------- Name: series-workflow42756[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"58717b2a1365d06c8c64b72aa948541b53fe31eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","KVM_INTEL","KVM_AMD","KVM_SMM"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["svm_leave_smm","vmx_leave_smm"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"58717b2a1365d06c8c64b72aa948541b53fe31eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","KVM_INTEL","KVM_AMD","KVM_SMM"],"series_id":"fbbc2e03-030c-465a-ba2d-af1caa16d92f","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[8].boot-test-patched Phase: Succeeded StartedAt: 2026-07-21 20:49:34 +0000 UTC FinishedAt: 2026-07-21 20:52:28 +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:*6174350a-23ce-482a-a50f-767211640e5c,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-workflow42756/series-workflow42756-build-action-2540965554/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-workflow42756[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"58717b2a1365d06c8c64b72aa948541b53fe31eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","KVM_INTEL","KVM_AMD","KVM_SMM"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["svm_leave_smm","vmx_leave_smm"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"58717b2a1365d06c8c64b72aa948541b53fe31eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","KVM_INTEL","KVM_AMD","KVM_SMM"],"series_id":"fbbc2e03-030c-465a-ba2d-af1caa16d92f","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[10] Phase: Succeeded StartedAt: 2026-07-21 20:52:39 +0000 UTC FinishedAt: 2026-07-21 23:57:16 +0000 UTC Input: nil Output: nil --------- Name: series-workflow42756[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"58717b2a1365d06c8c64b72aa948541b53fe31eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","KVM_INTEL","KVM_AMD","KVM_SMM"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["svm_leave_smm","vmx_leave_smm"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"58717b2a1365d06c8c64b72aa948541b53fe31eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","KVM_INTEL","KVM_AMD","KVM_SMM"],"series_id":"fbbc2e03-030c-465a-ba2d-af1caa16d92f","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[10].run-fuzz Phase: Succeeded StartedAt: 2026-07-21 20:52:39 +0000 UTC FinishedAt: 2026-07-21 23:57:16 +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":["svm_leave_smm","vmx_leave_smm"],"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:*85c73649-3e25-4e1d-8742-3f85e9c1d826,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*6174350a-23ce-482a-a50f-767211640e5c,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-workflow42756/series-workflow42756-build-action-2772158933/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-workflow42756/series-workflow42756-build-action-2540965554/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflow42756[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"58717b2a1365d06c8c64b72aa948541b53fe31eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","KVM_INTEL","KVM_AMD","KVM_SMM"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["svm_leave_smm","vmx_leave_smm"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"58717b2a1365d06c8c64b72aa948541b53fe31eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","KVM_INTEL","KVM_AMD","KVM_SMM"],"series_id":"fbbc2e03-030c-465a-ba2d-af1caa16d92f","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[10].run-fuzz[0] Phase: Succeeded StartedAt: 2026-07-21 20:52:39 +0000 UTC FinishedAt: 2026-07-21 20:52:49 +0000 UTC Input: nil Output: nil --------- Name: series-workflow42756[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"58717b2a1365d06c8c64b72aa948541b53fe31eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","KVM_INTEL","KVM_AMD","KVM_SMM"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["svm_leave_smm","vmx_leave_smm"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"58717b2a1365d06c8c64b72aa948541b53fe31eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","KVM_INTEL","KVM_AMD","KVM_SMM"],"series_id":"fbbc2e03-030c-465a-ba2d-af1caa16d92f","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[10].run-fuzz[0].save-fuzz-config Phase: Succeeded StartedAt: 2026-07-21 20:52:39 +0000 UTC FinishedAt: 2026-07-21 20:52:45 +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":["svm_leave_smm","vmx_leave_smm"],"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-workflow42756/series-workflow42756-convert-artifact-1674108643/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow42756[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"58717b2a1365d06c8c64b72aa948541b53fe31eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","KVM_INTEL","KVM_AMD","KVM_SMM"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["svm_leave_smm","vmx_leave_smm"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"58717b2a1365d06c8c64b72aa948541b53fe31eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","KVM_INTEL","KVM_AMD","KVM_SMM"],"series_id":"fbbc2e03-030c-465a-ba2d-af1caa16d92f","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[10].run-retest Phase: Skipped StartedAt: 2026-07-21 20:52:39 +0000 UTC FinishedAt: 2026-07-21 20:52:39 +0000 UTC Input: nil Output: nil --------- Name: series-workflow42756[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"58717b2a1365d06c8c64b72aa948541b53fe31eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","KVM_INTEL","KVM_AMD","KVM_SMM"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["svm_leave_smm","vmx_leave_smm"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"58717b2a1365d06c8c64b72aa948541b53fe31eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","KVM_INTEL","KVM_AMD","KVM_SMM"],"series_id":"fbbc2e03-030c-465a-ba2d-af1caa16d92f","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[9] Phase: Succeeded StartedAt: 2026-07-21 20:52:39 +0000 UTC FinishedAt: 2026-07-21 20:52:39 +0000 UTC Input: nil Output: nil --------- Name: series-workflow42756[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"58717b2a1365d06c8c64b72aa948541b53fe31eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","KVM_INTEL","KVM_AMD","KVM_SMM"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["svm_leave_smm","vmx_leave_smm"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"58717b2a1365d06c8c64b72aa948541b53fe31eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","KVM_INTEL","KVM_AMD","KVM_SMM"],"series_id":"fbbc2e03-030c-465a-ba2d-af1caa16d92f","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[9].abort-if-patched-boot-failed Phase: Skipped StartedAt: 2026-07-21 20:52:39 +0000 UTC FinishedAt: 2026-07-21 20:52:39 +0000 UTC Input: nil Output: nil --------- Name: series-workflow42756[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"58717b2a1365d06c8c64b72aa948541b53fe31eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","KVM_INTEL","KVM_AMD","KVM_SMM"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["svm_leave_smm","vmx_leave_smm"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"58717b2a1365d06c8c64b72aa948541b53fe31eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","KVM_INTEL","KVM_AMD","KVM_SMM"],"series_id":"fbbc2e03-030c-465a-ba2d-af1caa16d92f","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[10].run-fuzz[1] Phase: Succeeded StartedAt: 2026-07-21 20:52:49 +0000 UTC FinishedAt: 2026-07-21 23:57:16 +0000 UTC Input: nil Output: nil --------- Name: series-workflow42756[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"58717b2a1365d06c8c64b72aa948541b53fe31eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","KVM_INTEL","KVM_AMD","KVM_SMM"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["svm_leave_smm","vmx_leave_smm"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"58717b2a1365d06c8c64b72aa948541b53fe31eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","KVM_INTEL","KVM_AMD","KVM_SMM"],"series_id":"fbbc2e03-030c-465a-ba2d-af1caa16d92f","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[10].run-fuzz[1].fuzz Phase: Succeeded StartedAt: 2026-07-21 20:52:49 +0000 UTC FinishedAt: 2026-07-21 23:57:06 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*85c73649-3e25-4e1d-8742-3f85e9c1d826,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*6174350a-23ce-482a-a50f-767211640e5c,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-workflow42756/series-workflow42756-build-action-2772158933/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-workflow42756/series-workflow42756-build-action-2540965554/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-workflow42756/series-workflow42756-convert-artifact-1674108643/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,}